diff --git a/.travis.yml b/.travis.yml index 3f69eaf16..9fde9d506 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ before_install: - yarn install - ./node_modules/@angular/cli/bin/ng build --prod - cd ../.. -- go get -v golang.org/x/lint/golint +- go get -v github.com/mgechev/revive script: - make lint - make vet diff --git a/Makefile b/Makefile index a2eb5ef8b..c9c1d336b 100644 --- a/Makefile +++ b/Makefile @@ -22,4 +22,4 @@ vet: .PHONY: lint lint: - go list ./... | grep -v vendor | xargs golint -set_exit_status \ No newline at end of file + revive -config revive.toml -exclude ./vendor/... ./... diff --git a/README.md b/README.md index a0cf2aa35..080dae25d 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,10 @@ Not yet, but this will come in the future. # Development +## Install + +* [Revive](https://github.com/mgechev/revive) - Configurable linter `go get github.com/mgechev/revive` + ## Environment ### macOS @@ -53,14 +57,18 @@ TODO * `make build` - Builds the binary * `make gqlgen` - Regenerate Go GraphQL files +* `make vet` - Run `go vet` +* `make lint` - Run the linter ## Building a release -1. cd into the UI directory and run `ng build --prod` -2. cd back to the root directory and run `make build` to build the executable +1. cd into the UI directory and run `ng build --prod` to compile the frontend +2. cd back to the root directory and run `make build` to build the executable for your current platform -#### Notes for the dev +## Cross compiling -https://blog.filippo.io/easy-windows-and-linux-cross-compilers-for-macos/ +This project makes use of [this](https://github.com/bep/dockerfiles/tree/master/ci-goreleaser) docker container to create an environment +where the app can be cross compiled. This process is kicked off by CI via the `scripts/cross-compile.sh` script. Run the following +command to open a bash shell to the container to poke around: `docker run --rm --mount type=bind,source="$(pwd)",target=/stash -w /stash -i -t bepsays/ci-goreleaser:1.11-2 /bin/bash` \ No newline at end of file diff --git a/api/context_keys.go b/api/context_keys.go new file mode 100644 index 000000000..ba58e761d --- /dev/null +++ b/api/context_keys.go @@ -0,0 +1,12 @@ +package api + +// https://stackoverflow.com/questions/40891345/fix-should-not-use-basic-type-string-as-key-in-context-withvalue-golint + +type key int + +const ( + galleryKey key = 0 + performerKey key = 1 + sceneKey key = 2 + studioKey key = 3 +) diff --git a/api/resolver.go b/api/resolver.go index 2d78f5ad1..b056b30f6 100644 --- a/api/resolver.go +++ b/api/resolver.go @@ -96,11 +96,11 @@ func (r *queryResolver) Stats(ctx context.Context) (models.StatsResultType, erro tagsQB := models.NewTagQueryBuilder() tagsCount, _ := tagsQB.Count() return models.StatsResultType{ - SceneCount: scenesCount, - GalleryCount: galleryCount, + SceneCount: scenesCount, + GalleryCount: galleryCount, PerformerCount: performersCount, - StudioCount: studiosCount, - TagCount: tagsCount, + StudioCount: studiosCount, + TagCount: tagsCount, }, nil } @@ -127,7 +127,7 @@ func (r *queryResolver) SceneMarkerTags(ctx context.Context, scene_id string) ([ _, hasKey := tags[markerPrimaryTag.ID] var sceneMarkerTag *models.SceneMarkerTag if !hasKey { - sceneMarkerTag = &models.SceneMarkerTag{ Tag: *markerPrimaryTag } + sceneMarkerTag = &models.SceneMarkerTag{Tag: *markerPrimaryTag} tags[markerPrimaryTag.ID] = sceneMarkerTag keys = append(keys, markerPrimaryTag.ID) } else { diff --git a/api/resolver_model_performer.go b/api/resolver_model_performer.go index 135eb1fec..e044eeb72 100644 --- a/api/resolver_model_performer.go +++ b/api/resolver_model_performer.go @@ -19,8 +19,8 @@ func (r *performerResolver) Name(ctx context.Context, obj *models.Performer) (*s } func (r *performerResolver) URL(ctx context.Context, obj *models.Performer) (*string, error) { - if obj.Url.Valid { - return &obj.Url.String, nil + if obj.URL.Valid { + return &obj.URL.String, nil } return nil, nil } @@ -125,7 +125,7 @@ func (r *performerResolver) Favorite(ctx context.Context, obj *models.Performer) func (r *performerResolver) ImagePath(ctx context.Context, obj *models.Performer) (*string, error) { baseURL, _ := ctx.Value(BaseURLCtxKey).(string) - imagePath := urlbuilders.NewPerformerURLBuilder(baseURL, obj.ID).GetPerformerImageUrl() + imagePath := urlbuilders.NewPerformerURLBuilder(baseURL, obj.ID).GetPerformerImageURL() return &imagePath, nil } diff --git a/api/resolver_model_scene.go b/api/resolver_model_scene.go index 636a911cf..86e74102e 100644 --- a/api/resolver_model_scene.go +++ b/api/resolver_model_scene.go @@ -28,8 +28,8 @@ func (r *sceneResolver) Details(ctx context.Context, obj *models.Scene) (*string } func (r *sceneResolver) URL(ctx context.Context, obj *models.Scene) (*string, error) { - if obj.Url.Valid { - return &obj.Url.String, nil + if obj.URL.Valid { + return &obj.URL.String, nil } return nil, nil } @@ -55,34 +55,33 @@ func (r *sceneResolver) File(ctx context.Context, obj *models.Scene) (models.Sce height := int(obj.Height.Int64) bitrate := int(obj.Bitrate.Int64) return models.SceneFileType{ - Size: &obj.Size.String, - Duration: &obj.Duration.Float64, + Size: &obj.Size.String, + Duration: &obj.Duration.Float64, VideoCodec: &obj.VideoCodec.String, AudioCodec: &obj.AudioCodec.String, - Width: &width, - Height: &height, - Framerate: &obj.Framerate.Float64, - Bitrate: &bitrate, + Width: &width, + Height: &height, + Framerate: &obj.Framerate.Float64, + Bitrate: &bitrate, }, nil } func (r *sceneResolver) Paths(ctx context.Context, obj *models.Scene) (models.ScenePathsType, error) { baseURL, _ := ctx.Value(BaseURLCtxKey).(string) builder := urlbuilders.NewSceneURLBuilder(baseURL, obj.ID) - screenshotPath := builder.GetScreenshotUrl() - previewPath := builder.GetStreamPreviewUrl() - streamPath := builder.GetStreamUrl() - webpPath := builder.GetStreamPreviewImageUrl() - vttPath := builder.GetSpriteVttUrl() - chaptersVttPath := builder.GetChaptersVttUrl() + screenshotPath := builder.GetScreenshotURL() + previewPath := builder.GetStreamPreviewURL() + streamPath := builder.GetStreamURL() + webpPath := builder.GetStreamPreviewImageURL() + vttPath := builder.GetSpriteVTTURL() + chaptersVttPath := builder.GetChaptersVTTURL() return models.ScenePathsType{ - Screenshot: &screenshotPath, - Preview: &previewPath, - Stream: &streamPath, - Webp: &webpPath, - Vtt: &vttPath, + Screenshot: &screenshotPath, + Preview: &previewPath, + Stream: &streamPath, + Webp: &webpPath, + Vtt: &vttPath, ChaptersVtt: &chaptersVttPath, - }, nil } diff --git a/api/resolver_model_scene_marker.go b/api/resolver_model_scene_marker.go index e82911f9a..ac580b663 100644 --- a/api/resolver_model_scene_marker.go +++ b/api/resolver_model_scene_marker.go @@ -38,11 +38,11 @@ func (r *sceneMarkerResolver) Tags(ctx context.Context, obj *models.SceneMarker) func (r *sceneMarkerResolver) Stream(ctx context.Context, obj *models.SceneMarker) (string, error) { baseURL, _ := ctx.Value(BaseURLCtxKey).(string) sceneID := int(obj.SceneID.Int64) - return urlbuilders.NewSceneURLBuilder(baseURL, sceneID).GetSceneMarkerStreamUrl(obj.ID), nil + return urlbuilders.NewSceneURLBuilder(baseURL, sceneID).GetSceneMarkerStreamURL(obj.ID), nil } func (r *sceneMarkerResolver) Preview(ctx context.Context, obj *models.SceneMarker) (string, error) { baseURL, _ := ctx.Value(BaseURLCtxKey).(string) sceneID := int(obj.SceneID.Int64) - return urlbuilders.NewSceneURLBuilder(baseURL, sceneID).GetSceneMarkerStreamPreviewUrl(obj.ID), nil -} \ No newline at end of file + return urlbuilders.NewSceneURLBuilder(baseURL, sceneID).GetSceneMarkerStreamPreviewURL(obj.ID), nil +} diff --git a/api/resolver_model_studio.go b/api/resolver_model_studio.go index 729135dd7..706aefe0f 100644 --- a/api/resolver_model_studio.go +++ b/api/resolver_model_studio.go @@ -19,15 +19,15 @@ func (r *studioResolver) Name(ctx context.Context, obj *models.Studio) (string, } func (r *studioResolver) URL(ctx context.Context, obj *models.Studio) (*string, error) { - if obj.Url.Valid { - return &obj.Url.String, nil + if obj.URL.Valid { + return &obj.URL.String, nil } return nil, nil } func (r *studioResolver) ImagePath(ctx context.Context, obj *models.Studio) (*string, error) { baseURL, _ := ctx.Value(BaseURLCtxKey).(string) - imagePath := urlbuilders.NewStudioURLBuilder(baseURL, obj.ID).GetStudioImageUrl() + imagePath := urlbuilders.NewStudioURLBuilder(baseURL, obj.ID).GetStudioImageURL() return &imagePath, nil } diff --git a/api/resolver_mutation_performer.go b/api/resolver_mutation_performer.go index 8962051f8..9f574ad9c 100644 --- a/api/resolver_mutation_performer.go +++ b/api/resolver_mutation_performer.go @@ -20,60 +20,60 @@ func (r *mutationResolver) PerformerCreate(ctx context.Context, input models.Per // Populate a new performer from the input currentTime := time.Now() newPerformer := models.Performer{ - Image: imageData, - Checksum: checksum, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Image: imageData, + Checksum: checksum, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } if input.Name != nil { - newPerformer.Name = sql.NullString{ String: *input.Name, Valid: true } + newPerformer.Name = sql.NullString{String: *input.Name, Valid: true} } if input.URL != nil { - newPerformer.Url = sql.NullString{ String: *input.URL, Valid: true } + newPerformer.URL = sql.NullString{String: *input.URL, Valid: true} } if input.Birthdate != nil { - newPerformer.Birthdate = sql.NullString{ String: *input.Birthdate, Valid: true } + newPerformer.Birthdate = sql.NullString{String: *input.Birthdate, Valid: true} } if input.Ethnicity != nil { - newPerformer.Ethnicity = sql.NullString{ String: *input.Ethnicity, Valid: true } + newPerformer.Ethnicity = sql.NullString{String: *input.Ethnicity, Valid: true} } if input.Country != nil { - newPerformer.Country = sql.NullString{ String: *input.Country, Valid: true } + newPerformer.Country = sql.NullString{String: *input.Country, Valid: true} } if input.EyeColor != nil { - newPerformer.EyeColor = sql.NullString{ String: *input.EyeColor, Valid: true } + newPerformer.EyeColor = sql.NullString{String: *input.EyeColor, Valid: true} } if input.Height != nil { - newPerformer.Height = sql.NullString{ String: *input.Height, Valid: true } + newPerformer.Height = sql.NullString{String: *input.Height, Valid: true} } if input.Measurements != nil { - newPerformer.Measurements = sql.NullString{ String: *input.Measurements, Valid: true } + newPerformer.Measurements = sql.NullString{String: *input.Measurements, Valid: true} } if input.FakeTits != nil { - newPerformer.FakeTits = sql.NullString{ String: *input.FakeTits, Valid: true } + newPerformer.FakeTits = sql.NullString{String: *input.FakeTits, Valid: true} } if input.CareerLength != nil { - newPerformer.CareerLength = sql.NullString{ String: *input.CareerLength, Valid: true } + newPerformer.CareerLength = sql.NullString{String: *input.CareerLength, Valid: true} } if input.Tattoos != nil { - newPerformer.Tattoos = sql.NullString{ String: *input.Tattoos, Valid: true } + newPerformer.Tattoos = sql.NullString{String: *input.Tattoos, Valid: true} } if input.Piercings != nil { - newPerformer.Piercings = sql.NullString{ String: *input.Piercings, Valid: true } + newPerformer.Piercings = sql.NullString{String: *input.Piercings, Valid: true} } if input.Aliases != nil { - newPerformer.Aliases = sql.NullString{ String: *input.Aliases, Valid: true } + newPerformer.Aliases = sql.NullString{String: *input.Aliases, Valid: true} } if input.Twitter != nil { - newPerformer.Twitter = sql.NullString{ String: *input.Twitter, Valid: true } + newPerformer.Twitter = sql.NullString{String: *input.Twitter, Valid: true} } if input.Instagram != nil { - newPerformer.Instagram = sql.NullString{ String: *input.Instagram, Valid: true } + newPerformer.Instagram = sql.NullString{String: *input.Instagram, Valid: true} } if input.Favorite != nil { - newPerformer.Favorite = sql.NullBool{ Bool: *input.Favorite, Valid: true } + newPerformer.Favorite = sql.NullBool{Bool: *input.Favorite, Valid: true} } else { - newPerformer.Favorite = sql.NullBool{ Bool: false, Valid: true } + newPerformer.Favorite = sql.NullBool{Bool: false, Valid: true} } // Start the transaction and save the performer @@ -97,8 +97,8 @@ func (r *mutationResolver) PerformerUpdate(ctx context.Context, input models.Per // Populate performer from the input performerID, _ := strconv.Atoi(input.ID) updatedPerformer := models.Performer{ - ID: performerID, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: time.Now() }, + ID: performerID, + UpdatedAt: models.SQLiteTimestamp{Timestamp: time.Now()}, } if input.Image != nil { checksum, imageData, err := utils.ProcessBase64Image(*input.Image) @@ -109,54 +109,54 @@ func (r *mutationResolver) PerformerUpdate(ctx context.Context, input models.Per updatedPerformer.Checksum = checksum } if input.Name != nil { - updatedPerformer.Name = sql.NullString{ String: *input.Name, Valid: true } + updatedPerformer.Name = sql.NullString{String: *input.Name, Valid: true} } if input.URL != nil { - updatedPerformer.Url = sql.NullString{ String: *input.URL, Valid: true } + updatedPerformer.URL = sql.NullString{String: *input.URL, Valid: true} } if input.Birthdate != nil { - updatedPerformer.Birthdate = sql.NullString{ String: *input.Birthdate, Valid: true } + updatedPerformer.Birthdate = sql.NullString{String: *input.Birthdate, Valid: true} } if input.Ethnicity != nil { - updatedPerformer.Ethnicity = sql.NullString{ String: *input.Ethnicity, Valid: true } + updatedPerformer.Ethnicity = sql.NullString{String: *input.Ethnicity, Valid: true} } if input.Country != nil { - updatedPerformer.Country = sql.NullString{ String: *input.Country, Valid: true } + updatedPerformer.Country = sql.NullString{String: *input.Country, Valid: true} } if input.EyeColor != nil { - updatedPerformer.EyeColor = sql.NullString{ String: *input.EyeColor, Valid: true } + updatedPerformer.EyeColor = sql.NullString{String: *input.EyeColor, Valid: true} } if input.Height != nil { - updatedPerformer.Height = sql.NullString{ String: *input.Height, Valid: true } + updatedPerformer.Height = sql.NullString{String: *input.Height, Valid: true} } if input.Measurements != nil { - updatedPerformer.Measurements = sql.NullString{ String: *input.Measurements, Valid: true } + updatedPerformer.Measurements = sql.NullString{String: *input.Measurements, Valid: true} } if input.FakeTits != nil { - updatedPerformer.FakeTits = sql.NullString{ String: *input.FakeTits, Valid: true } + updatedPerformer.FakeTits = sql.NullString{String: *input.FakeTits, Valid: true} } if input.CareerLength != nil { - updatedPerformer.CareerLength = sql.NullString{ String: *input.CareerLength, Valid: true } + updatedPerformer.CareerLength = sql.NullString{String: *input.CareerLength, Valid: true} } if input.Tattoos != nil { - updatedPerformer.Tattoos = sql.NullString{ String: *input.Tattoos, Valid: true } + updatedPerformer.Tattoos = sql.NullString{String: *input.Tattoos, Valid: true} } if input.Piercings != nil { - updatedPerformer.Piercings = sql.NullString{ String: *input.Piercings, Valid: true } + updatedPerformer.Piercings = sql.NullString{String: *input.Piercings, Valid: true} } if input.Aliases != nil { - updatedPerformer.Aliases = sql.NullString{ String: *input.Aliases, Valid: true } + updatedPerformer.Aliases = sql.NullString{String: *input.Aliases, Valid: true} } if input.Twitter != nil { - updatedPerformer.Twitter = sql.NullString{ String: *input.Twitter, Valid: true } + updatedPerformer.Twitter = sql.NullString{String: *input.Twitter, Valid: true} } if input.Instagram != nil { - updatedPerformer.Instagram = sql.NullString{ String: *input.Instagram, Valid: true } + updatedPerformer.Instagram = sql.NullString{String: *input.Instagram, Valid: true} } if input.Favorite != nil { - updatedPerformer.Favorite = sql.NullBool{ Bool: *input.Favorite, Valid: true } + updatedPerformer.Favorite = sql.NullBool{Bool: *input.Favorite, Valid: true} } else { - updatedPerformer.Favorite = sql.NullBool{ Bool: false, Valid: true } + updatedPerformer.Favorite = sql.NullBool{Bool: false, Valid: true} } // Start the transaction and save the performer @@ -174,4 +174,4 @@ func (r *mutationResolver) PerformerUpdate(ctx context.Context, input models.Per } return performer, nil -} \ No newline at end of file +} diff --git a/api/resolver_mutation_scene.go b/api/resolver_mutation_scene.go index 051aebfb8..4cfcc0937 100644 --- a/api/resolver_mutation_scene.go +++ b/api/resolver_mutation_scene.go @@ -14,27 +14,27 @@ func (r *mutationResolver) SceneUpdate(ctx context.Context, input models.SceneUp sceneID, _ := strconv.Atoi(input.ID) updatedTime := time.Now() updatedScene := models.Scene{ - ID: sceneID, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: updatedTime }, + ID: sceneID, + UpdatedAt: models.SQLiteTimestamp{Timestamp: updatedTime}, } if input.Title != nil { - updatedScene.Title = sql.NullString{ String: *input.Title, Valid: true } + updatedScene.Title = sql.NullString{String: *input.Title, Valid: true} } if input.Details != nil { - updatedScene.Details = sql.NullString{ String: *input.Details, Valid: true } + updatedScene.Details = sql.NullString{String: *input.Details, Valid: true} } if input.URL != nil { - updatedScene.Url = sql.NullString{ String: *input.URL, Valid: true } + updatedScene.URL = sql.NullString{String: *input.URL, Valid: true} } if input.Date != nil { - updatedScene.Date = sql.NullString{ String: *input.Date, Valid: true } + updatedScene.Date = sql.NullString{String: *input.Date, Valid: true} } if input.Rating != nil { - updatedScene.Rating = sql.NullInt64{ Int64: int64(*input.Rating), Valid: true } + updatedScene.Rating = sql.NullInt64{Int64: int64(*input.Rating), Valid: true} } if input.StudioID != nil { studioID, _ := strconv.ParseInt(*input.StudioID, 10, 64) - updatedScene.StudioID = sql.NullInt64{ Int64: studioID, Valid: true } + updatedScene.StudioID = sql.NullInt64{Int64: studioID, Valid: true} } // Start the transaction and save the scene marker @@ -51,8 +51,8 @@ func (r *mutationResolver) SceneUpdate(ctx context.Context, input models.SceneUp // Save the gallery galleryID, _ := strconv.Atoi(*input.GalleryID) updatedGallery := models.Gallery{ - ID: galleryID, - SceneID: sql.NullInt64{ Int64: int64(sceneID), Valid: true }, + ID: galleryID, + SceneID: sql.NullInt64{Int64: int64(sceneID), Valid: true}, UpdatedAt: models.SQLiteTimestamp{Timestamp: updatedTime}, } gqb := models.NewGalleryQueryBuilder() @@ -69,7 +69,7 @@ func (r *mutationResolver) SceneUpdate(ctx context.Context, input models.SceneUp performerID, _ := strconv.Atoi(pid) performerJoin := models.PerformersScenes{ PerformerID: performerID, - SceneID: sceneID, + SceneID: sceneID, } performerJoins = append(performerJoins, performerJoin) } @@ -84,7 +84,7 @@ func (r *mutationResolver) SceneUpdate(ctx context.Context, input models.SceneUp tagID, _ := strconv.Atoi(tid) tagJoin := models.ScenesTags{ SceneID: sceneID, - TagID: tagID, + TagID: tagID, } tagJoins = append(tagJoins, tagJoin) } @@ -106,12 +106,12 @@ func (r *mutationResolver) SceneMarkerCreate(ctx context.Context, input models.S sceneID, _ := strconv.Atoi(input.SceneID) currentTime := time.Now() newSceneMarker := models.SceneMarker{ - Title: input.Title, - Seconds: input.Seconds, - PrimaryTagID: sql.NullInt64{ Int64: int64(primaryTagID), Valid: primaryTagID != 0 }, - SceneID: sql.NullInt64{ Int64: int64(sceneID), Valid: sceneID != 0 }, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Title: input.Title, + Seconds: input.Seconds, + PrimaryTagID: sql.NullInt64{Int64: int64(primaryTagID), Valid: primaryTagID != 0}, + SceneID: sql.NullInt64{Int64: int64(sceneID), Valid: sceneID != 0}, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } // Start the transaction and save the scene marker @@ -130,7 +130,7 @@ func (r *mutationResolver) SceneMarkerCreate(ctx context.Context, input models.S tagID, _ := strconv.Atoi(tid) markerTag := models.SceneMarkersTags{ SceneMarkerID: sceneMarker.ID, - TagID: tagID, + TagID: tagID, } markerTagJoins = append(markerTagJoins, markerTag) } @@ -153,12 +153,12 @@ func (r *mutationResolver) SceneMarkerUpdate(ctx context.Context, input models.S sceneID, _ := strconv.Atoi(input.SceneID) primaryTagID, _ := strconv.Atoi(input.PrimaryTagID) updatedSceneMarker := models.SceneMarker{ - ID: sceneMarkerID, - Title: input.Title, - Seconds: input.Seconds, - SceneID: sql.NullInt64{ Int64: int64(sceneID), Valid: sceneID != 0 }, - PrimaryTagID: sql.NullInt64{ Int64: int64(primaryTagID), Valid: primaryTagID != 0 }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: time.Now() }, + ID: sceneMarkerID, + Title: input.Title, + Seconds: input.Seconds, + SceneID: sql.NullInt64{Int64: int64(sceneID), Valid: sceneID != 0}, + PrimaryTagID: sql.NullInt64{Int64: int64(primaryTagID), Valid: primaryTagID != 0}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: time.Now()}, } // Start the transaction and save the scene marker @@ -177,7 +177,7 @@ func (r *mutationResolver) SceneMarkerUpdate(ctx context.Context, input models.S tagID, _ := strconv.Atoi(tid) markerTag := models.SceneMarkersTags{ SceneMarkerID: sceneMarkerID, - TagID: tagID, + TagID: tagID, } markerTagJoins = append(markerTagJoins, markerTag) } @@ -205,4 +205,4 @@ func (r *mutationResolver) SceneMarkerDestroy(ctx context.Context, id string) (b return false, err } return true, nil -} \ No newline at end of file +} diff --git a/api/resolver_mutation_studio.go b/api/resolver_mutation_studio.go index 50abcd369..b25d99c54 100644 --- a/api/resolver_mutation_studio.go +++ b/api/resolver_mutation_studio.go @@ -20,14 +20,14 @@ func (r *mutationResolver) StudioCreate(ctx context.Context, input models.Studio // Populate a new studio from the input currentTime := time.Now() newStudio := models.Studio{ - Image: imageData, - Checksum: checksum, - Name: sql.NullString{ String: input.Name, Valid: true }, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Image: imageData, + Checksum: checksum, + Name: sql.NullString{String: input.Name, Valid: true}, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } if input.URL != nil { - newStudio.Url = sql.NullString{ String: *input.URL, Valid: true } + newStudio.URL = sql.NullString{String: *input.URL, Valid: true} } // Start the transaction and save the studio @@ -51,8 +51,8 @@ func (r *mutationResolver) StudioUpdate(ctx context.Context, input models.Studio // Populate studio from the input studioID, _ := strconv.Atoi(input.ID) updatedStudio := models.Studio{ - ID: studioID, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: time.Now() }, + ID: studioID, + UpdatedAt: models.SQLiteTimestamp{Timestamp: time.Now()}, } if input.Image != nil { checksum, imageData, err := utils.ProcessBase64Image(*input.Image) @@ -63,10 +63,10 @@ func (r *mutationResolver) StudioUpdate(ctx context.Context, input models.Studio updatedStudio.Checksum = checksum } if input.Name != nil { - updatedStudio.Name = sql.NullString{ String: *input.Name, Valid: true } + updatedStudio.Name = sql.NullString{String: *input.Name, Valid: true} } if input.URL != nil { - updatedStudio.Url = sql.NullString{ String: *input.URL, Valid: true } + updatedStudio.URL = sql.NullString{String: *input.URL, Valid: true} } // Start the transaction and save the studio @@ -84,4 +84,4 @@ func (r *mutationResolver) StudioUpdate(ctx context.Context, input models.Studio } return studio, nil -} \ No newline at end of file +} diff --git a/api/resolver_mutation_tag.go b/api/resolver_mutation_tag.go index 9b0a3528a..40e2e70a3 100644 --- a/api/resolver_mutation_tag.go +++ b/api/resolver_mutation_tag.go @@ -12,9 +12,9 @@ func (r *mutationResolver) TagCreate(ctx context.Context, input models.TagCreate // Populate a new tag from the input currentTime := time.Now() newTag := models.Tag{ - Name: input.Name, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Name: input.Name, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } // Start the transaction and save the studio @@ -38,9 +38,9 @@ func (r *mutationResolver) TagUpdate(ctx context.Context, input models.TagUpdate // Populate tag from the input tagID, _ := strconv.Atoi(input.ID) updatedTag := models.Tag{ - ID: tagID, - Name: input.Name, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: time.Now() }, + ID: tagID, + Name: input.Name, + UpdatedAt: models.SQLiteTimestamp{Timestamp: time.Now()}, } // Start the transaction and save the tag @@ -71,4 +71,4 @@ func (r *mutationResolver) TagDestroy(ctx context.Context, input models.TagDestr return false, err } return true, nil -} \ No newline at end of file +} diff --git a/api/resolver_query_find_gallery.go b/api/resolver_query_find_gallery.go index 25164560b..f59635c26 100644 --- a/api/resolver_query_find_gallery.go +++ b/api/resolver_query_find_gallery.go @@ -16,7 +16,7 @@ func (r *queryResolver) FindGalleries(ctx context.Context, filter *models.FindFi qb := models.NewGalleryQueryBuilder() galleries, total := qb.Query(filter) return models.FindGalleriesResultType{ - Count: total, + Count: total, Galleries: galleries, }, nil -} \ No newline at end of file +} diff --git a/api/resolver_query_find_performer.go b/api/resolver_query_find_performer.go index f4ebf5572..4a2b5e206 100644 --- a/api/resolver_query_find_performer.go +++ b/api/resolver_query_find_performer.go @@ -16,7 +16,7 @@ func (r *queryResolver) FindPerformers(ctx context.Context, performer_filter *mo qb := models.NewPerformerQueryBuilder() performers, total := qb.Query(performer_filter, filter) return models.FindPerformersResultType{ - Count: total, + Count: total, Performers: performers, }, nil } @@ -24,4 +24,4 @@ func (r *queryResolver) FindPerformers(ctx context.Context, performer_filter *mo func (r *queryResolver) AllPerformers(ctx context.Context) ([]models.Performer, error) { qb := models.NewPerformerQueryBuilder() return qb.All() -} \ No newline at end of file +} diff --git a/api/resolver_query_find_scene.go b/api/resolver_query_find_scene.go index 92a287567..31fef1fa9 100644 --- a/api/resolver_query_find_scene.go +++ b/api/resolver_query_find_scene.go @@ -23,7 +23,7 @@ func (r *queryResolver) FindScenes(ctx context.Context, scene_filter *models.Sce qb := models.NewSceneQueryBuilder() scenes, total := qb.Query(scene_filter, filter) return models.FindScenesResultType{ - Count: total, + Count: total, Scenes: scenes, }, nil -} \ No newline at end of file +} diff --git a/api/resolver_query_find_scene_marker.go b/api/resolver_query_find_scene_marker.go index beac78808..beea01eed 100644 --- a/api/resolver_query_find_scene_marker.go +++ b/api/resolver_query_find_scene_marker.go @@ -9,7 +9,7 @@ func (r *queryResolver) FindSceneMarkers(ctx context.Context, scene_marker_filte qb := models.NewSceneMarkerQueryBuilder() sceneMarkers, total := qb.Query(scene_marker_filter, filter) return models.FindSceneMarkersResultType{ - Count: total, + Count: total, SceneMarkers: sceneMarkers, }, nil } diff --git a/api/resolver_query_find_studio.go b/api/resolver_query_find_studio.go index 9678fa965..0b626192d 100644 --- a/api/resolver_query_find_studio.go +++ b/api/resolver_query_find_studio.go @@ -16,7 +16,7 @@ func (r *queryResolver) FindStudios(ctx context.Context, filter *models.FindFilt qb := models.NewStudioQueryBuilder() studios, total := qb.Query(filter) return models.FindStudiosResultType{ - Count: total, + Count: total, Studios: studios, }, nil } @@ -24,4 +24,4 @@ func (r *queryResolver) FindStudios(ctx context.Context, filter *models.FindFilt func (r *queryResolver) AllStudios(ctx context.Context) ([]models.Studio, error) { qb := models.NewStudioQueryBuilder() return qb.All() -} \ No newline at end of file +} diff --git a/api/resolver_query_find_tag.go b/api/resolver_query_find_tag.go index 0ba2f8a70..bd0b92b9d 100644 --- a/api/resolver_query_find_tag.go +++ b/api/resolver_query_find_tag.go @@ -15,4 +15,4 @@ func (r *queryResolver) FindTag(ctx context.Context, id string) (*models.Tag, er func (r *queryResolver) AllTags(ctx context.Context) ([]models.Tag, error) { qb := models.NewTagQueryBuilder() return qb.All() -} \ No newline at end of file +} diff --git a/api/resolver_subscription_metadata.go b/api/resolver_subscription_metadata.go index 2b736009c..e3e9dc60d 100644 --- a/api/resolver_subscription_metadata.go +++ b/api/resolver_subscription_metadata.go @@ -2,7 +2,6 @@ package api import ( "context" - "github.com/stashapp/stash/logger" "github.com/stashapp/stash/manager" "time" ) @@ -15,8 +14,7 @@ func (r *subscriptionResolver) MetadataUpdate(ctx context.Context) (<-chan strin go func() { for { select { - case t := <-ticker.C: - logger.Trace("metadata subscription tick at %s", t) + case _ = <-ticker.C: manager.GetInstance().HandleMetadataUpdateSubscriptionTick(msg) case <-ctx.Done(): ticker.Stop() @@ -27,4 +25,4 @@ func (r *subscriptionResolver) MetadataUpdate(ctx context.Context) (<-chan strin }() return msg, nil -} \ No newline at end of file +} diff --git a/api/routes_gallery.go b/api/routes_gallery.go index 334eaf685..691cf0769 100644 --- a/api/routes_gallery.go +++ b/api/routes_gallery.go @@ -22,7 +22,7 @@ func (rs galleryRoutes) Routes() chi.Router { } func (rs galleryRoutes) File(w http.ResponseWriter, r *http.Request) { - gallery := r.Context().Value("gallery").(*models.Gallery) + gallery := r.Context().Value(galleryKey).(*models.Gallery) fileIndex, _ := strconv.Atoi(chi.URLParam(r, "fileIndex")) thumb := r.URL.Query().Get("thumb") w.Header().Add("Cache-Control", "max-age=604800000") // 1 Week @@ -48,7 +48,7 @@ func GalleryCtx(next http.Handler) http.Handler { return } - ctx := context.WithValue(r.Context(), "gallery", gallery) + ctx := context.WithValue(r.Context(), galleryKey, gallery) next.ServeHTTP(w, r.WithContext(ctx)) }) -} \ No newline at end of file +} diff --git a/api/routes_performer.go b/api/routes_performer.go index e73b954e8..c4b857351 100644 --- a/api/routes_performer.go +++ b/api/routes_performer.go @@ -22,7 +22,7 @@ func (rs performerRoutes) Routes() chi.Router { } func (rs performerRoutes) Image(w http.ResponseWriter, r *http.Request) { - performer := r.Context().Value("performer").(*models.Performer) + performer := r.Context().Value(performerKey).(*models.Performer) _, _ = w.Write(performer.Image) } @@ -41,7 +41,7 @@ func PerformerCtx(next http.Handler) http.Handler { return } - ctx := context.WithValue(r.Context(), "performer", performer) + ctx := context.WithValue(r.Context(), performerKey, performer) next.ServeHTTP(w, r.WithContext(ctx)) }) -} \ No newline at end of file +} diff --git a/api/routes_scene.go b/api/routes_scene.go index 15c58286e..0dbed4169 100644 --- a/api/routes_scene.go +++ b/api/routes_scene.go @@ -38,31 +38,31 @@ func (rs sceneRoutes) Routes() chi.Router { // region Handlers func (rs sceneRoutes) Stream(w http.ResponseWriter, r *http.Request) { - scene := r.Context().Value("scene").(*models.Scene) + scene := r.Context().Value(sceneKey).(*models.Scene) filepath := manager.GetInstance().Paths.Scene.GetStreamPath(scene.Path, scene.Checksum) http.ServeFile(w, r, filepath) } func (rs sceneRoutes) Screenshot(w http.ResponseWriter, r *http.Request) { - scene := r.Context().Value("scene").(*models.Scene) + scene := r.Context().Value(sceneKey).(*models.Scene) filepath := manager.GetInstance().Paths.Scene.GetScreenshotPath(scene.Checksum) http.ServeFile(w, r, filepath) } func (rs sceneRoutes) Preview(w http.ResponseWriter, r *http.Request) { - scene := r.Context().Value("scene").(*models.Scene) + scene := r.Context().Value(sceneKey).(*models.Scene) filepath := manager.GetInstance().Paths.Scene.GetStreamPreviewPath(scene.Checksum) http.ServeFile(w, r, filepath) } func (rs sceneRoutes) Webp(w http.ResponseWriter, r *http.Request) { - scene := r.Context().Value("scene").(*models.Scene) + scene := r.Context().Value(sceneKey).(*models.Scene) filepath := manager.GetInstance().Paths.Scene.GetStreamPreviewImagePath(scene.Checksum) http.ServeFile(w, r, filepath) } func (rs sceneRoutes) ChapterVtt(w http.ResponseWriter, r *http.Request) { - scene := r.Context().Value("scene").(*models.Scene) + scene := r.Context().Value(sceneKey).(*models.Scene) qb := models.NewSceneMarkerQueryBuilder() sceneMarkers, err := qb.FindBySceneID(scene.ID, nil) if err != nil { @@ -72,7 +72,7 @@ func (rs sceneRoutes) ChapterVtt(w http.ResponseWriter, r *http.Request) { vttLines := []string{"WEBVTT", ""} for _, marker := range sceneMarkers { time := utils.GetVTTTime(marker.Seconds) - vttLines = append(vttLines, time + " --> " + time) + vttLines = append(vttLines, time+" --> "+time) vttLines = append(vttLines, marker.Title) vttLines = append(vttLines, "") } @@ -83,21 +83,21 @@ func (rs sceneRoutes) ChapterVtt(w http.ResponseWriter, r *http.Request) { } func (rs sceneRoutes) VttThumbs(w http.ResponseWriter, r *http.Request) { - scene := r.Context().Value("scene").(*models.Scene) + scene := r.Context().Value(sceneKey).(*models.Scene) w.Header().Set("Content-Type", "text/vtt") filepath := manager.GetInstance().Paths.Scene.GetSpriteVttFilePath(scene.Checksum) http.ServeFile(w, r, filepath) } func (rs sceneRoutes) VttSprite(w http.ResponseWriter, r *http.Request) { - scene := r.Context().Value("scene").(*models.Scene) + scene := r.Context().Value(sceneKey).(*models.Scene) w.Header().Set("Content-Type", "image/jpeg") filepath := manager.GetInstance().Paths.Scene.GetSpriteImageFilePath(scene.Checksum) http.ServeFile(w, r, filepath) } func (rs sceneRoutes) SceneMarkerStream(w http.ResponseWriter, r *http.Request) { - scene := r.Context().Value("scene").(*models.Scene) + scene := r.Context().Value(sceneKey).(*models.Scene) sceneMarkerID, _ := strconv.Atoi(chi.URLParam(r, "sceneMarkerId")) qb := models.NewSceneMarkerQueryBuilder() sceneMarker, err := qb.Find(sceneMarkerID) @@ -111,7 +111,7 @@ func (rs sceneRoutes) SceneMarkerStream(w http.ResponseWriter, r *http.Request) } func (rs sceneRoutes) SceneMarkerPreview(w http.ResponseWriter, r *http.Request) { - scene := r.Context().Value("scene").(*models.Scene) + scene := r.Context().Value(sceneKey).(*models.Scene) sceneMarkerID, _ := strconv.Atoi(chi.URLParam(r, "sceneMarkerId")) qb := models.NewSceneMarkerQueryBuilder() sceneMarker, err := qb.Find(sceneMarkerID) @@ -145,7 +145,7 @@ func SceneCtx(next http.Handler) http.Handler { return } - ctx := context.WithValue(r.Context(), "scene", scene) + ctx := context.WithValue(r.Context(), sceneKey, scene) next.ServeHTTP(w, r.WithContext(ctx)) }) -} \ No newline at end of file +} diff --git a/api/routes_studio.go b/api/routes_studio.go index 6c993fad4..bc4a76629 100644 --- a/api/routes_studio.go +++ b/api/routes_studio.go @@ -22,7 +22,7 @@ func (rs studioRoutes) Routes() chi.Router { } func (rs studioRoutes) Image(w http.ResponseWriter, r *http.Request) { - studio := r.Context().Value("studio").(*models.Studio) + studio := r.Context().Value(studioKey).(*models.Studio) _, _ = w.Write(studio.Image) } @@ -41,7 +41,7 @@ func StudioCtx(next http.Handler) http.Handler { return } - ctx := context.WithValue(r.Context(), "studio", studio) + ctx := context.WithValue(r.Context(), studioKey, studio) next.ServeHTTP(w, r.WithContext(ctx)) }) -} \ No newline at end of file +} diff --git a/api/server.go b/api/server.go index 3556f3777..a8fde1c05 100644 --- a/api/server.go +++ b/api/server.go @@ -83,7 +83,7 @@ func Start() { // Serve the setup UI r.HandleFunc("/setup*", func(w http.ResponseWriter, r *http.Request) { ext := path.Ext(r.URL.Path) - if ext == ".html" || ext == "" { + if ext == ".html" || ext == "" { data := setupUIBox.Bytes("index.html") _, _ = w.Write(data) } else { @@ -126,9 +126,9 @@ func Start() { _ = os.Mkdir(downloads, 0755) config := &jsonschema.Config{ - Stash: stash, - Metadata: metadata, - Cache: cache, + Stash: stash, + Metadata: metadata, + Cache: cache, Downloads: downloads, } if err := manager.GetInstance().SaveConfig(config); err != nil { @@ -142,7 +142,7 @@ func Start() { // Serve the angular app r.HandleFunc("/*", func(w http.ResponseWriter, r *http.Request) { ext := path.Ext(r.URL.Path) - if ext == ".html" || ext == "" { + if ext == ".html" || ext == "" { data := uiBox.Bytes("index.html") _, _ = w.Write(data) } else { @@ -151,12 +151,12 @@ func Start() { }) httpsServer := &http.Server{ - Addr: ":"+httpsPort, - Handler: r, + Addr: ":" + httpsPort, + Handler: r, TLSConfig: makeTLSConfig(), } server := &http.Server{ - Addr: ":"+httpPort, + Addr: ":" + httpPort, Handler: r, } @@ -187,13 +187,14 @@ func makeTLSConfig() *tls.Config { return tlsConfig } - type contextKey struct { name string } + var ( BaseURLCtxKey = &contextKey{"BaseURL"} ) + func BaseURLMiddleware(next http.Handler) http.Handler { fn := func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -225,4 +226,4 @@ func ConfigCheckMiddleware(next http.Handler) http.Handler { } next.ServeHTTP(w, r) }) -} \ No newline at end of file +} diff --git a/api/urlbuilders/gallery.go b/api/urlbuilders/gallery.go index 4971eb948..a0e64d62c 100644 --- a/api/urlbuilders/gallery.go +++ b/api/urlbuilders/gallery.go @@ -2,18 +2,18 @@ package urlbuilders import "strconv" -type galleryURLBuilder struct { - BaseURL string +type GalleryURLBuilder struct { + BaseURL string GalleryID string } -func NewGalleryURLBuilder(baseURL string, galleryID int) galleryURLBuilder { - return galleryURLBuilder{ - BaseURL: baseURL, +func NewGalleryURLBuilder(baseURL string, galleryID int) GalleryURLBuilder { + return GalleryURLBuilder{ + BaseURL: baseURL, GalleryID: strconv.Itoa(galleryID), } } -func (b galleryURLBuilder) GetGalleryImageUrl(fileIndex int) string { +func (b GalleryURLBuilder) GetGalleryImageURL(fileIndex int) string { return b.BaseURL + "/gallery/" + b.GalleryID + "/" + strconv.Itoa(fileIndex) } diff --git a/api/urlbuilders/performer.go b/api/urlbuilders/performer.go index 35c97c84a..b7c450617 100644 --- a/api/urlbuilders/performer.go +++ b/api/urlbuilders/performer.go @@ -2,18 +2,18 @@ package urlbuilders import "strconv" -type performerURLBuilder struct { - BaseURL string +type PerformerURLBuilder struct { + BaseURL string PerformerID string } -func NewPerformerURLBuilder(baseURL string, performerID int) performerURLBuilder { - return performerURLBuilder{ - BaseURL: baseURL, +func NewPerformerURLBuilder(baseURL string, performerID int) PerformerURLBuilder { + return PerformerURLBuilder{ + BaseURL: baseURL, PerformerID: strconv.Itoa(performerID), } } -func (b performerURLBuilder) GetPerformerImageUrl() string { +func (b PerformerURLBuilder) GetPerformerImageURL() string { return b.BaseURL + "/performer/" + b.PerformerID + "/image" } diff --git a/api/urlbuilders/scene.go b/api/urlbuilders/scene.go index 87cc9b664..0c3f768b3 100644 --- a/api/urlbuilders/scene.go +++ b/api/urlbuilders/scene.go @@ -2,46 +2,46 @@ package urlbuilders import "strconv" -type sceneURLBuilder struct { +type SceneURLBuilder struct { BaseURL string SceneID string } -func NewSceneURLBuilder(baseURL string, sceneID int) sceneURLBuilder { - return sceneURLBuilder{ +func NewSceneURLBuilder(baseURL string, sceneID int) SceneURLBuilder { + return SceneURLBuilder{ BaseURL: baseURL, SceneID: strconv.Itoa(sceneID), } } -func (b sceneURLBuilder) GetStreamUrl() string { +func (b SceneURLBuilder) GetStreamURL() string { return b.BaseURL + "/scene/" + b.SceneID + "/stream.mp4" } -func (b sceneURLBuilder) GetStreamPreviewUrl() string { +func (b SceneURLBuilder) GetStreamPreviewURL() string { return b.BaseURL + "/scene/" + b.SceneID + "/preview" } -func (b sceneURLBuilder) GetStreamPreviewImageUrl() string { +func (b SceneURLBuilder) GetStreamPreviewImageURL() string { return b.BaseURL + "/scene/" + b.SceneID + "/webp" } -func (b sceneURLBuilder) GetSpriteVttUrl() string { +func (b SceneURLBuilder) GetSpriteVTTURL() string { return b.BaseURL + "/scene/" + b.SceneID + "_thumbs.vtt" } -func (b sceneURLBuilder) GetScreenshotUrl() string { +func (b SceneURLBuilder) GetScreenshotURL() string { return b.BaseURL + "/scene/" + b.SceneID + "/screenshot" } -func (b sceneURLBuilder) GetChaptersVttUrl() string { +func (b SceneURLBuilder) GetChaptersVTTURL() string { return b.BaseURL + "/scene/" + b.SceneID + "/vtt/chapter" } -func (b sceneURLBuilder) GetSceneMarkerStreamUrl(sceneMarkerId int) string { - return b.BaseURL + "/scene/" + b.SceneID + "/scene_marker/" + strconv.Itoa(sceneMarkerId) + "/stream" +func (b SceneURLBuilder) GetSceneMarkerStreamURL(sceneMarkerID int) string { + return b.BaseURL + "/scene/" + b.SceneID + "/scene_marker/" + strconv.Itoa(sceneMarkerID) + "/stream" } -func (b sceneURLBuilder) GetSceneMarkerStreamPreviewUrl(sceneMarkerId int) string { - return b.BaseURL + "/scene/" + b.SceneID + "/scene_marker/" + strconv.Itoa(sceneMarkerId) + "/preview" +func (b SceneURLBuilder) GetSceneMarkerStreamPreviewURL(sceneMarkerID int) string { + return b.BaseURL + "/scene/" + b.SceneID + "/scene_marker/" + strconv.Itoa(sceneMarkerID) + "/preview" } diff --git a/api/urlbuilders/studio.go b/api/urlbuilders/studio.go index 36c9ba903..eaa909dc4 100644 --- a/api/urlbuilders/studio.go +++ b/api/urlbuilders/studio.go @@ -2,18 +2,18 @@ package urlbuilders import "strconv" -type studioURLBuilder struct { - BaseURL string +type StudioURLBuilder struct { + BaseURL string StudioID string } -func NewStudioURLBuilder(baseURL string, studioID int) studioURLBuilder { - return studioURLBuilder{ - BaseURL: baseURL, +func NewStudioURLBuilder(baseURL string, studioID int) StudioURLBuilder { + return StudioURLBuilder{ + BaseURL: baseURL, StudioID: strconv.Itoa(studioID), } } -func (b studioURLBuilder) GetStudioImageUrl() string { +func (b StudioURLBuilder) GetStudioImageURL() string { return b.BaseURL + "/studio/" + b.StudioID + "/image" } diff --git a/database/database.go b/database/database.go index 90dda0e5f..6feeaf682 100644 --- a/database/database.go +++ b/database/database.go @@ -61,4 +61,4 @@ func runMigrations(databasePath string) { panic(err.Error()) } } -} \ No newline at end of file +} diff --git a/database/packr_source.go b/database/packr_source.go index 103a0e719..c7dac9b6c 100644 --- a/database/packr_source.go +++ b/database/packr_source.go @@ -12,7 +12,7 @@ import ( ) type Packr2Source struct { - Box *packr.Box + Box *packr.Box Migrations *source.Migrations } @@ -88,4 +88,4 @@ func (s *Packr2Source) ReadDown(version uint) (r io.ReadCloser, identifier strin migration.Identifier, nil } -} \ No newline at end of file +} diff --git a/ffmpeg/downloader.go b/ffmpeg/downloader.go index 4f48ccb45..a7984fede 100644 --- a/ffmpeg/downloader.go +++ b/ffmpeg/downloader.go @@ -49,7 +49,7 @@ func Download(configDirectory string) error { archivePath := filepath.Join(configDirectory, "ffmpeg"+urlExt) _ = os.Remove(archivePath) // remove archive if it already exists out, err := os.Create(archivePath) - if err != nil { + if err != nil { return err } defer out.Close() @@ -68,7 +68,7 @@ func Download(configDirectory string) error { // Write the response to the archive file location _, err = io.Copy(out, resp.Body) - if err != nil { + if err != nil { return err } @@ -77,7 +77,7 @@ func Download(configDirectory string) error { return err } } else { - return fmt.Errorf("FFMPeg was downloaded to %s. ") + return fmt.Errorf("ffmpeg was downloaded to %s", archivePath) } return nil @@ -101,17 +101,15 @@ func getFFMPEGURL() string { func getFFMPEGFilename() string { if runtime.GOOS == "windows" { return "ffmpeg.exe" - } else { - return "ffmpeg" } + return "ffmpeg" } func getFFProbeFilename() string { if runtime.GOOS == "windows" { return "ffprobe.exe" - } else { - return "ffprobe" } + return "ffprobe" } // Checks if FFMPEG in the path has the correct flags @@ -150,7 +148,7 @@ func unzip(src, configDirectory string) error { unzippedPath := filepath.Join(configDirectory, filename) unzippedOutput, err := os.Create(unzippedPath) - if err != nil { + if err != nil { return err } @@ -165,4 +163,4 @@ func unzip(src, configDirectory string) error { } return nil -} \ No newline at end of file +} diff --git a/ffmpeg/encoder.go b/ffmpeg/encoder.go index bea947558..4ba0fd2a9 100644 --- a/ffmpeg/encoder.go +++ b/ffmpeg/encoder.go @@ -68,4 +68,4 @@ func (e *Encoder) run(probeResult VideoFile, args []string) (string, error) { } return stdoutString, nil -} \ No newline at end of file +} diff --git a/ffmpeg/encoder_marker.go b/ffmpeg/encoder_marker.go index db23487f4..3ccd86a37 100644 --- a/ffmpeg/encoder_marker.go +++ b/ffmpeg/encoder_marker.go @@ -6,8 +6,8 @@ import ( ) type SceneMarkerOptions struct { - ScenePath string - Seconds int + ScenePath string + Seconds int Width int OutputPath string } @@ -55,4 +55,4 @@ func (e *Encoder) SceneMarkerImage(probeResult VideoFile, options SceneMarkerOpt } _, err := e.run(probeResult, args) return err -} \ No newline at end of file +} diff --git a/ffmpeg/encoder_scene_preview_chunk.go b/ffmpeg/encoder_scene_preview_chunk.go index 998608009..463645972 100644 --- a/ffmpeg/encoder_scene_preview_chunk.go +++ b/ffmpeg/encoder_scene_preview_chunk.go @@ -63,4 +63,4 @@ func (e *Encoder) ScenePreviewVideoToImage(probeResult VideoFile, width int, vid } _, err := e.run(probeResult, args) return err -} \ No newline at end of file +} diff --git a/ffmpeg/encoder_screenshot.go b/ffmpeg/encoder_screenshot.go index 36fc56032..14ced4d18 100644 --- a/ffmpeg/encoder_screenshot.go +++ b/ffmpeg/encoder_screenshot.go @@ -4,10 +4,10 @@ import "fmt" type ScreenshotOptions struct { OutputPath string - Quality int - Time float64 - Width int - Verbosity string + Quality int + Time float64 + Width int + Verbosity string } func (e *Encoder) Screenshot(probeResult VideoFile, options ScreenshotOptions) { @@ -29,4 +29,4 @@ func (e *Encoder) Screenshot(probeResult VideoFile, options ScreenshotOptions) { options.OutputPath, } _, _ = e.run(probeResult, args) -} \ No newline at end of file +} diff --git a/ffmpeg/encoder_transcode.go b/ffmpeg/encoder_transcode.go index 47e625644..579899a04 100644 --- a/ffmpeg/encoder_transcode.go +++ b/ffmpeg/encoder_transcode.go @@ -17,4 +17,4 @@ func (e *Encoder) Transcode(probeResult VideoFile, options TranscodeOptions) { options.OutputPath, } _, _ = e.run(probeResult, args) -} \ No newline at end of file +} diff --git a/ffmpeg/ffprobe.go b/ffmpeg/ffprobe.go index 6f477fc08..ebcb425dc 100644 --- a/ffmpeg/ffprobe.go +++ b/ffmpeg/ffprobe.go @@ -23,7 +23,7 @@ func IsValidCodec(codecName string) bool { } type VideoFile struct { - JSON FFProbeJSON + JSON FFProbeJSON AudioStream *FFProbeStream VideoStream *FFProbeStream @@ -86,7 +86,7 @@ func parse(filePath string, probeJSON *FFProbeJSON) (*VideoFile, error) { result.Bitrate, _ = strconv.ParseInt(probeJSON.Format.BitRate, 10, 64) result.Container = probeJSON.Format.FormatName duration, _ := strconv.ParseFloat(probeJSON.Format.Duration, 64) - result.Duration = math.Round(duration*100)/100 + result.Duration = math.Round(duration*100) / 100 fileStat, _ := os.Stat(filePath) result.Size = fileStat.Size() result.StartTime, _ = strconv.ParseFloat(probeJSON.Format.StartTime, 64) @@ -112,7 +112,7 @@ func parse(filePath string, probeJSON *FFProbeJSON) (*VideoFile, error) { } else { framerate, _ = strconv.ParseFloat(videoStream.AvgFrameRate, 64) } - result.FrameRate = math.Round(framerate*100)/100 + result.FrameRate = math.Round(framerate*100) / 100 if rotate, err := strconv.ParseInt(videoStream.Tags.Rotate, 10, 64); err == nil && rotate != 180 { result.Width = videoStream.Height result.Height = videoStream.Width @@ -141,12 +141,12 @@ func (v *VideoFile) GetVideoStream() *FFProbeStream { return nil } -func (v *VideoFile) getStreamIndex(fileType string, probeJson FFProbeJSON) int { - for i, stream := range probeJson.Streams { +func (v *VideoFile) getStreamIndex(fileType string, probeJSON FFProbeJSON) int { + for i, stream := range probeJSON.Streams { if stream.CodecType == fileType { return i } } return -1 -} \ No newline at end of file +} diff --git a/ffmpeg/types.go b/ffmpeg/types.go index 8eebea1fc..c55962ff4 100644 --- a/ffmpeg/types.go +++ b/ffmpeg/types.go @@ -25,7 +25,7 @@ type FFProbeJSON struct { } `json:"tags"` } `json:"format"` Streams []FFProbeStream `json:"streams"` - Error struct { + Error struct { Code int `json:"code"` String string `json:"string"` } `json:"error"` @@ -59,27 +59,27 @@ type FFProbeStream struct { TimedThumbnails int `json:"timed_thumbnails"` VisualImpaired int `json:"visual_impaired"` } `json:"disposition"` - Duration string `json:"duration"` - DurationTs int `json:"duration_ts"` - HasBFrames int `json:"has_b_frames,omitempty"` - Height int `json:"height,omitempty"` - Index int `json:"index"` - IsAvc string `json:"is_avc,omitempty"` - Level int `json:"level,omitempty"` - NalLengthSize string `json:"nal_length_size,omitempty"` - NbFrames string `json:"nb_frames"` - PixFmt string `json:"pix_fmt,omitempty"` - Profile string `json:"profile"` - RFrameRate string `json:"r_frame_rate"` - Refs int `json:"refs,omitempty"` - SampleAspectRatio string `json:"sample_aspect_ratio,omitempty"` - StartPts int `json:"start_pts"` - StartTime string `json:"start_time"` + Duration string `json:"duration"` + DurationTs int `json:"duration_ts"` + HasBFrames int `json:"has_b_frames,omitempty"` + Height int `json:"height,omitempty"` + Index int `json:"index"` + IsAvc string `json:"is_avc,omitempty"` + Level int `json:"level,omitempty"` + NalLengthSize string `json:"nal_length_size,omitempty"` + NbFrames string `json:"nb_frames"` + PixFmt string `json:"pix_fmt,omitempty"` + Profile string `json:"profile"` + RFrameRate string `json:"r_frame_rate"` + Refs int `json:"refs,omitempty"` + SampleAspectRatio string `json:"sample_aspect_ratio,omitempty"` + StartPts int `json:"start_pts"` + StartTime string `json:"start_time"` Tags struct { CreationTime time.Time `json:"creation_time"` HandlerName string `json:"handler_name"` Language string `json:"language"` - Rotate string `json:"rotate"` + Rotate string `json:"rotate"` } `json:"tags"` TimeBase string `json:"time_base"` Width int `json:"width,omitempty"` @@ -89,4 +89,4 @@ type FFProbeStream struct { MaxBitRate string `json:"max_bit_rate,omitempty"` SampleFmt string `json:"sample_fmt,omitempty"` SampleRate string `json:"sample_rate,omitempty"` -} \ No newline at end of file +} diff --git a/logger/logger.go b/logger/logger.go index de9a822b1..726e87b77 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -33,7 +33,7 @@ func init() { func Progressf(format string, args ...interface{}) { progressLogger.Infof(format, args...) l := &LogItem{ - Type: "progress", + Type: "progress", Message: fmt.Sprintf(format, args...), } addLogItem(l) @@ -47,8 +47,8 @@ func Trace(args ...interface{}) { func Debug(args ...interface{}) { logger.Debug(args...) l := &LogItem{ - Type: "debug", - Message: fmt.Sprint(args), + Type: "debug", + Message: fmt.Sprint(args...), } addLogItem(l) } @@ -56,7 +56,7 @@ func Debug(args ...interface{}) { func Debugf(format string, args ...interface{}) { logger.Debugf(format, args...) l := &LogItem{ - Type: "debug", + Type: "debug", Message: fmt.Sprintf(format, args...), } addLogItem(l) @@ -65,8 +65,8 @@ func Debugf(format string, args ...interface{}) { func Info(args ...interface{}) { logger.Info(args...) l := &LogItem{ - Type: "info", - Message: fmt.Sprint(args), + Type: "info", + Message: fmt.Sprint(args...), } addLogItem(l) } @@ -74,7 +74,7 @@ func Info(args ...interface{}) { func Infof(format string, args ...interface{}) { logger.Infof(format, args...) l := &LogItem{ - Type: "info", + Type: "info", Message: fmt.Sprintf(format, args...), } addLogItem(l) @@ -83,8 +83,8 @@ func Infof(format string, args ...interface{}) { func Warn(args ...interface{}) { logger.Warn(args...) l := &LogItem{ - Type: "warn", - Message: fmt.Sprint(args), + Type: "warn", + Message: fmt.Sprint(args...), } addLogItem(l) } @@ -92,7 +92,7 @@ func Warn(args ...interface{}) { func Warnf(format string, args ...interface{}) { logger.Warnf(format, args...) l := &LogItem{ - Type: "warn", + Type: "warn", Message: fmt.Sprintf(format, args...), } addLogItem(l) @@ -101,8 +101,8 @@ func Warnf(format string, args ...interface{}) { func Error(args ...interface{}) { logger.Error(args...) l := &LogItem{ - Type: "error", - Message: fmt.Sprint(args), + Type: "error", + Message: fmt.Sprint(args...), } addLogItem(l) } @@ -110,7 +110,7 @@ func Error(args ...interface{}) { func Errorf(format string, args ...interface{}) { logger.Errorf(format, args...) l := &LogItem{ - Type: "error", + Type: "error", Message: fmt.Sprintf(format, args...), } addLogItem(l) @@ -126,4 +126,4 @@ func Fatalf(format string, args ...interface{}) { //func WithRequest(req *http.Request) *logrus.Entry { // return logger.WithFields(RequestFields(req)) -//} \ No newline at end of file +//} diff --git a/logger/progress_formatter.go b/logger/progress_formatter.go index fab1f93b3..ef69d245d 100644 --- a/logger/progress_formatter.go +++ b/logger/progress_formatter.go @@ -4,9 +4,9 @@ import ( "github.com/sirupsen/logrus" ) -type ProgressFormatter struct {} +type ProgressFormatter struct{} func (f *ProgressFormatter) Format(entry *logrus.Entry) ([]byte, error) { msg := []byte("Processing --> " + entry.Message + "\r") return msg, nil -} \ No newline at end of file +} diff --git a/main_test.go b/main_test.go index 3c2556a09..eeeeb18e4 100644 --- a/main_test.go +++ b/main_test.go @@ -4,4 +4,4 @@ import "testing" func TestStub(t *testing.T) { -} \ No newline at end of file +} diff --git a/manager/generator.go b/manager/generator.go index fd4147073..4c5fca5f5 100644 --- a/manager/generator.go +++ b/manager/generator.go @@ -45,7 +45,7 @@ func (g *GeneratorInfo) configure() error { numberOfFrames, _ := strconv.Atoi(videoStream.NbFrames) if numberOfFrames == 0 { - command := `ffmpeg -nostats -i `+g.VideoFile.Path+` -vcodec copy -f rawvideo -y /dev/null 2>&1 | \ + command := `ffmpeg -nostats -i ` + g.VideoFile.Path + ` -vcodec copy -f rawvideo -y /dev/null 2>&1 | \ grep frame | \ awk '{split($0,a,"fps")}END{print a[1]}' | \ sed 's/.*= *//'` diff --git a/manager/generator_preview.go b/manager/generator_preview.go index c1af544c8..489f1a2ee 100644 --- a/manager/generator_preview.go +++ b/manager/generator_preview.go @@ -13,8 +13,8 @@ import ( type PreviewGenerator struct { Info *GeneratorInfo - VideoFilename string - ImageFilename string + VideoFilename string + ImageFilename string OutputDirectory string } @@ -67,7 +67,7 @@ func (g *PreviewGenerator) generateConcatFile() error { w := bufio.NewWriter(f) for i := 0; i < g.Info.ChunkCount; i++ { num := fmt.Sprintf("%.3d", i) - filename := "preview"+num+".mp4" + filename := "preview" + num + ".mp4" _, _ = w.WriteString(fmt.Sprintf("file '%s'\n", filename)) } return w.Flush() @@ -84,12 +84,12 @@ func (g *PreviewGenerator) generateVideo(encoder *ffmpeg.Encoder) error { for i := 0; i < g.Info.ChunkCount; i++ { time := i * stepSize num := fmt.Sprintf("%.3d", i) - filename := "preview"+num+".mp4" + filename := "preview" + num + ".mp4" chunkOutputPath := instance.Paths.Generated.GetTmpPath(filename) options := ffmpeg.ScenePreviewChunkOptions{ - Time: time, - Width: 640, + Time: time, + Width: 640, OutputPath: chunkOutputPath, } encoder.ScenePreviewVideoChunk(g.Info.VideoFile, options) @@ -112,16 +112,15 @@ func (g *PreviewGenerator) generateImage(encoder *ffmpeg.Encoder) error { tmpOutputPath := instance.Paths.Generated.GetTmpPath(g.ImageFilename) if err := encoder.ScenePreviewVideoToImage(g.Info.VideoFile, 640, videoPreviewPath, tmpOutputPath); err != nil { return err - } else { - if err := os.Rename(tmpOutputPath, outputPath); err != nil { - return err - } - logger.Debug("created video preview image: ", outputPath) } + if err := os.Rename(tmpOutputPath, outputPath); err != nil { + return err + } + logger.Debug("created video preview image: ", outputPath) return nil } func (g *PreviewGenerator) getConcatFilePath() string { return instance.Paths.Generated.GetTmpPath("files.txt") -} \ No newline at end of file +} diff --git a/manager/generator_sprite.go b/manager/generator_sprite.go index cac446718..1ce8c3e3d 100644 --- a/manager/generator_sprite.go +++ b/manager/generator_sprite.go @@ -97,7 +97,7 @@ func (g *SpriteGenerator) generateSpriteImage(encoder *ffmpeg.Encoder) error { montage := imaging.New(canvasWidth, canvasHeight, color.NRGBA{}) for index := 0; index < len(images); index++ { x := width * (index % g.Columns) - y := height * int(math.Floor(float64(index) / float64(g.Rows))) + y := height * int(math.Floor(float64(index)/float64(g.Rows))) img := images[index] montage = imaging.Paste(montage, img, image.Pt(x, y)) } @@ -121,11 +121,11 @@ func (g *SpriteGenerator) generateSpriteVTT(encoder *ffmpeg.Encoder) error { vttLines := []string{"WEBVTT", ""} for index := 0; index < g.Info.ChunkCount; index++ { x := width * (index % g.Columns) - y := height * int(math.Floor(float64(index) / float64(g.Rows))) + y := height * int(math.Floor(float64(index)/float64(g.Rows))) startTime := utils.GetVTTTime(float64(index) * stepSize) - endTime := utils.GetVTTTime(float64(index + 1) * stepSize) + endTime := utils.GetVTTTime(float64(index+1) * stepSize) - vttLines = append(vttLines, startTime + " --> " + endTime) + vttLines = append(vttLines, startTime+" --> "+endTime) vttLines = append(vttLines, fmt.Sprintf("%s#xywh=%d,%d,%d,%d", spriteImageName, x, y, width, height)) vttLines = append(vttLines, "") } diff --git a/manager/job_status.go b/manager/job_status.go index 0292c2a68..eee425512 100644 --- a/manager/job_status.go +++ b/manager/job_status.go @@ -10,4 +10,4 @@ const ( Generate JobStatus = 4 Clean JobStatus = 5 Scrape JobStatus = 6 -) \ No newline at end of file +) diff --git a/manager/json_utils.go b/manager/json_utils.go index fd42e7bf7..3299b6697 100644 --- a/manager/json_utils.go +++ b/manager/json_utils.go @@ -4,7 +4,7 @@ import ( "github.com/stashapp/stash/manager/jsonschema" ) -type jsonUtils struct {} +type jsonUtils struct{} func (jp *jsonUtils) getMappings() (*jsonschema.Mappings, error) { return jsonschema.LoadMappingsFile(instance.Paths.JSON.MappingsFile) @@ -44,4 +44,4 @@ func (jp *jsonUtils) getScene(checksum string) (*jsonschema.Scene, error) { func (jp *jsonUtils) saveScene(checksum string, scene *jsonschema.Scene) error { return jsonschema.SaveSceneFile(instance.Paths.JSON.SceneJSONPath(checksum), scene) -} \ No newline at end of file +} diff --git a/manager/jsonschema/config.go b/manager/jsonschema/config.go index 00673850c..942cd4236 100644 --- a/manager/jsonschema/config.go +++ b/manager/jsonschema/config.go @@ -35,4 +35,4 @@ func SaveConfigFile(filePath string, config *Config) error { return fmt.Errorf("config must not be nil") } return marshalToFile(filePath, config) -} \ No newline at end of file +} diff --git a/manager/jsonschema/performer.go b/manager/jsonschema/performer.go index cd3ed66e6..bd21654f6 100644 --- a/manager/jsonschema/performer.go +++ b/manager/jsonschema/performer.go @@ -8,7 +8,7 @@ import ( type Performer struct { Name string `json:"name,omitempty"` - Url string `json:"url,omitempty"` + URL string `json:"url,omitempty"` Twitter string `json:"twitter,omitempty"` Instagram string `json:"instagram,omitempty"` Birthdate string `json:"birthdate,omitempty"` diff --git a/manager/jsonschema/scene.go b/manager/jsonschema/scene.go index a76c7688f..64de6ea49 100644 --- a/manager/jsonschema/scene.go +++ b/manager/jsonschema/scene.go @@ -27,7 +27,7 @@ type SceneFile struct { type Scene struct { Title string `json:"title,omitempty"` Studio string `json:"studio,omitempty"` - Url string `json:"url,omitempty"` + URL string `json:"url,omitempty"` Date string `json:"date,omitempty"` Rating int `json:"rating,omitempty"` Details string `json:"details,omitempty"` diff --git a/manager/jsonschema/scraped.go b/manager/jsonschema/scraped.go index cc4dc72de..a48b8e77f 100644 --- a/manager/jsonschema/scraped.go +++ b/manager/jsonschema/scraped.go @@ -9,16 +9,16 @@ import ( type ScrapedItem struct { Title string `json:"title,omitempty"` Description string `json:"description,omitempty"` - Url string `json:"url,omitempty"` + URL string `json:"url,omitempty"` Date string `json:"date,omitempty"` Rating string `json:"rating,omitempty"` Tags string `json:"tags,omitempty"` Models string `json:"models,omitempty"` Episode int `json:"episode,omitempty"` GalleryFilename string `json:"gallery_filename,omitempty"` - GalleryUrl string `json:"gallery_url,omitempty"` + GalleryURL string `json:"gallery_url,omitempty"` VideoFilename string `json:"video_filename,omitempty"` - VideoUrl string `json:"video_url,omitempty"` + VideoURL string `json:"video_url,omitempty"` Studio string `json:"studio,omitempty"` UpdatedAt RailsTime `json:"updated_at,omitempty"` } @@ -43,4 +43,4 @@ func SaveScrapedFile(filePath string, scrapedItems []ScrapedItem) error { return fmt.Errorf("scraped items must not be nil") } return marshalToFile(filePath, scrapedItems) -} \ No newline at end of file +} diff --git a/manager/jsonschema/studio.go b/manager/jsonschema/studio.go index 44102ae3a..8b89f92fe 100644 --- a/manager/jsonschema/studio.go +++ b/manager/jsonschema/studio.go @@ -8,7 +8,7 @@ import ( type Studio struct { Name string `json:"name,omitempty"` - Url string `json:"url,omitempty"` + URL string `json:"url,omitempty"` Image string `json:"image,omitempty"` } @@ -32,4 +32,4 @@ func SaveStudioFile(filePath string, studio *Studio) error { return fmt.Errorf("studio must not be nil") } return marshalToFile(filePath, studio) -} \ No newline at end of file +} diff --git a/manager/jsonschema/time_rails.go b/manager/jsonschema/time_rails.go index 4ef14491d..c63526afd 100644 --- a/manager/jsonschema/time_rails.go +++ b/manager/jsonschema/time_rails.go @@ -34,4 +34,4 @@ func (ct *RailsTime) MarshalJSON() ([]byte, error) { func (ct *RailsTime) IsSet() bool { return ct.UnixNano() != nilTime -} \ No newline at end of file +} diff --git a/manager/jsonschema/utils.go b/manager/jsonschema/utils.go index 211bd0695..362023b17 100644 --- a/manager/jsonschema/utils.go +++ b/manager/jsonschema/utils.go @@ -20,10 +20,7 @@ func marshalToFile(filePath string, j interface{}) error { if err != nil { return err } - if err := ioutil.WriteFile(filePath, data, 0755); err != nil { - return err - } - return nil + return ioutil.WriteFile(filePath, data, 0755) } func encode(j interface{}) ([]byte, error) { @@ -36,4 +33,4 @@ func encode(j interface{}) ([]byte, error) { } // Strip the newline at the end of the file return bytes.TrimRight(buffer.Bytes(), "\n"), nil -} \ No newline at end of file +} diff --git a/manager/manager_tasks.go b/manager/manager_tasks.go index d111ecee8..edfdf45ed 100644 --- a/manager/manager_tasks.go +++ b/manager/manager_tasks.go @@ -10,7 +10,9 @@ import ( ) func (s *singleton) Scan() { - if s.Status != Idle { return } + if s.Status != Idle { + return + } s.Status = Scan go func() { @@ -31,7 +33,9 @@ func (s *singleton) Scan() { } func (s *singleton) Import() { - if s.Status != Idle { return } + if s.Status != Idle { + return + } s.Status = Import go func() { @@ -46,7 +50,9 @@ func (s *singleton) Import() { } func (s *singleton) Export() { - if s.Status != Idle { return } + if s.Status != Idle { + return + } s.Status = Export go func() { @@ -61,7 +67,9 @@ func (s *singleton) Export() { } func (s *singleton) Generate(sprites bool, previews bool, markers bool, transcodes bool) { - if s.Status != Idle { return } + if s.Status != Idle { + return + } s.Status = Generate qb := models.NewSceneQueryBuilder() @@ -108,7 +116,7 @@ func (s *singleton) Generate(sprites bool, previews bool, markers bool, transcod } func (s *singleton) returnToIdleState() { - if r := recover(); r!= nil { + if r := recover(); r != nil { logger.Info("recovered from ", r) } @@ -116,4 +124,4 @@ func (s *singleton) returnToIdleState() { instance.Paths.Generated.RemoveTmpDir() } s.Status = Idle -} \ No newline at end of file +} diff --git a/manager/paths/paths.go b/manager/paths/paths.go index b47c00bcb..9bb859ab6 100644 --- a/manager/paths/paths.go +++ b/manager/paths/paths.go @@ -5,12 +5,12 @@ import ( ) type Paths struct { - Config *jsonschema.Config - Generated *generatedPaths - JSON *jsonPaths + Config *jsonschema.Config + Generated *generatedPaths + JSON *jsonPaths - Gallery *galleryPaths - Scene *scenePaths + Gallery *galleryPaths + Scene *scenePaths SceneMarkers *sceneMarkerPaths } @@ -24,4 +24,4 @@ func NewPaths(config *jsonschema.Config) *Paths { p.Scene = newScenePaths(p) p.SceneMarkers = newSceneMarkerPaths(p) return &p -} \ No newline at end of file +} diff --git a/manager/paths/paths_json.go b/manager/paths/paths_json.go index e96ecba73..dcac4ccd9 100644 --- a/manager/paths/paths_json.go +++ b/manager/paths/paths_json.go @@ -26,13 +26,13 @@ func newJSONPaths(p Paths) *jsonPaths { } func (jp *jsonPaths) PerformerJSONPath(checksum string) string { - return filepath.Join(jp.Performers, checksum + ".json") + return filepath.Join(jp.Performers, checksum+".json") } func (jp *jsonPaths) SceneJSONPath(checksum string) string { - return filepath.Join(jp.Scenes, checksum + ".json") + return filepath.Join(jp.Scenes, checksum+".json") } func (jp *jsonPaths) StudioJSONPath(checksum string) string { - return filepath.Join(jp.Studios, checksum + ".json") + return filepath.Join(jp.Studios, checksum+".json") } diff --git a/manager/paths/paths_scene_markers.go b/manager/paths/paths_scene_markers.go index 1915d3155..e792c649f 100644 --- a/manager/paths/paths_scene_markers.go +++ b/manager/paths/paths_scene_markers.go @@ -16,9 +16,9 @@ func newSceneMarkerPaths(p Paths) *sceneMarkerPaths { } func (sp *sceneMarkerPaths) GetStreamPath(checksum string, seconds int) string { - return filepath.Join(sp.generated.Markers, checksum, strconv.Itoa(seconds) + ".mp4") + return filepath.Join(sp.generated.Markers, checksum, strconv.Itoa(seconds)+".mp4") } func (sp *sceneMarkerPaths) GetStreamPreviewImagePath(checksum string, seconds int) string { - return filepath.Join(sp.generated.Markers, checksum, strconv.Itoa(seconds) + ".webp") + return filepath.Join(sp.generated.Markers, checksum, strconv.Itoa(seconds)+".webp") } diff --git a/manager/paths/paths_scenes.go b/manager/paths/paths_scenes.go index d3211a832..cd898cafe 100644 --- a/manager/paths/paths_scenes.go +++ b/manager/paths/paths_scenes.go @@ -32,9 +32,8 @@ func (sp *scenePaths) GetStreamPath(scenePath string, checksum string) string { transcodeExists, _ := utils.FileExists(transcodePath) if transcodeExists { return transcodePath - } else { - return scenePath } + return scenePath } func (sp *scenePaths) GetStreamPreviewPath(checksum string) string { @@ -51,4 +50,4 @@ func (sp *scenePaths) GetSpriteImageFilePath(checksum string) string { func (sp *scenePaths) GetSpriteVttFilePath(checksum string) string { return filepath.Join(sp.generated.Vtt, checksum+"_thumbs.vtt") -} \ No newline at end of file +} diff --git a/manager/paths/paths_static.go b/manager/paths/paths_static.go index 3895c9894..9306ee18d 100644 --- a/manager/paths/paths_static.go +++ b/manager/paths/paths_static.go @@ -18,9 +18,9 @@ type StaticPathsType struct { var StaticPaths = StaticPathsType{ ExecutionDirectory: getExecutionDirectory(), - ConfigDirectory: getConfigDirectory(), - ConfigFile: filepath.Join(getConfigDirectory(), "config.json"), - DatabaseFile: filepath.Join(getConfigDirectory(), "stash-go.sqlite"), + ConfigDirectory: getConfigDirectory(), + ConfigFile: filepath.Join(getConfigDirectory(), "config.json"), + DatabaseFile: filepath.Join(getConfigDirectory(), "stash-go.sqlite"), } func getExecutionDirectory() string { @@ -41,4 +41,4 @@ func getHomeDirectory() string { func getConfigDirectory() string { return filepath.Join(getHomeDirectory(), ".stash") -} \ No newline at end of file +} diff --git a/manager/task.go b/manager/task.go index f52310de4..fa85ef16a 100644 --- a/manager/task.go +++ b/manager/task.go @@ -4,4 +4,4 @@ import "sync" type Task interface { Start(wg *sync.WaitGroup) -} \ No newline at end of file +} diff --git a/manager/task_export.go b/manager/task_export.go index 6e1bc5236..40d48a785 100644 --- a/manager/task_export.go +++ b/manager/task_export.go @@ -15,7 +15,7 @@ import ( type ExportTask struct { Mappings *jsonschema.Mappings - Scraped []jsonschema.ScrapedItem + Scraped []jsonschema.ScrapedItem } func (t *ExportTask) Start(wg *sync.WaitGroup) { @@ -59,7 +59,7 @@ func (t *ExportTask) ExportScenes(ctx context.Context) { index := i + 1 logger.Progressf("[scenes] %d of %d", index, len(scenes)) - t.Mappings.Scenes = append(t.Mappings.Scenes, jsonschema.PathMapping{ Path: scene.Path, Checksum: scene.Checksum }) + t.Mappings.Scenes = append(t.Mappings.Scenes, jsonschema.PathMapping{Path: scene.Path, Checksum: scene.Checksum}) newSceneJSON := jsonschema.Scene{} var studioName string @@ -86,8 +86,8 @@ func (t *ExportTask) ExportScenes(ctx context.Context) { if studioName != "" { newSceneJSON.Studio = studioName } - if scene.Url.Valid { - newSceneJSON.Url = scene.Url.String + if scene.URL.Valid { + newSceneJSON.URL = scene.URL.String } if scene.Date.Valid { newSceneJSON.Date = utils.GetYMDFromDatabaseDate(scene.Date.String) @@ -120,15 +120,15 @@ func (t *ExportTask) ExportScenes(ctx context.Context) { logger.Errorf("[scenes] <%s> invalid tags for scene marker: %s", scene.Checksum, err.Error()) continue } - if sceneMarker.Title == "" || sceneMarker.Seconds == 0 || primaryTag.Name == "" { + if sceneMarker.Title == "" || sceneMarker.Seconds == 0 || primaryTag.Name == "" { logger.Errorf("[scenes] invalid scene marker: %v", sceneMarker) } sceneMarkerJSON := jsonschema.SceneMarker{ - Title: sceneMarker.Title, - Seconds: t.getDecimalString(sceneMarker.Seconds), + Title: sceneMarker.Title, + Seconds: t.getDecimalString(sceneMarker.Seconds), PrimaryTag: primaryTag.Name, - Tags: t.getTagNames(sceneMarkerTags), + Tags: t.getTagNames(sceneMarkerTags), } newSceneJSON.Markers = append(newSceneJSON.Markers, sceneMarkerJSON) @@ -187,7 +187,7 @@ func (t *ExportTask) ExportGalleries(ctx context.Context) { for i, gallery := range galleries { index := i + 1 logger.Progressf("[galleries] %d of %d", index, len(galleries)) - t.Mappings.Galleries = append(t.Mappings.Galleries, jsonschema.PathMapping{ Path: gallery.Path, Checksum: gallery.Checksum }) + t.Mappings.Galleries = append(t.Mappings.Galleries, jsonschema.PathMapping{Path: gallery.Path, Checksum: gallery.Checksum}) } logger.Infof("[galleries] export complete") @@ -206,15 +206,15 @@ func (t *ExportTask) ExportPerformers(ctx context.Context) { index := i + 1 logger.Progressf("[performers] %d of %d", index, len(performers)) - t.Mappings.Performers = append(t.Mappings.Performers, jsonschema.NameMapping{ Name: performer.Name.String, Checksum: performer.Checksum }) + t.Mappings.Performers = append(t.Mappings.Performers, jsonschema.NameMapping{Name: performer.Name.String, Checksum: performer.Checksum}) newPerformerJSON := jsonschema.Performer{} if performer.Name.Valid { newPerformerJSON.Name = performer.Name.String } - if performer.Url.Valid { - newPerformerJSON.Url = performer.Url.String + if performer.URL.Valid { + newPerformerJSON.URL = performer.URL.String } if performer.Birthdate.Valid { newPerformerJSON.Birthdate = utils.GetYMDFromDatabaseDate(performer.Birthdate.String) @@ -289,15 +289,15 @@ func (t *ExportTask) ExportStudios(ctx context.Context) { index := i + 1 logger.Progressf("[studios] %d of %d", index, len(studios)) - t.Mappings.Studios = append(t.Mappings.Studios, jsonschema.NameMapping{ Name: studio.Name.String, Checksum: studio.Checksum }) + t.Mappings.Studios = append(t.Mappings.Studios, jsonschema.NameMapping{Name: studio.Name.String, Checksum: studio.Checksum}) newStudioJSON := jsonschema.Studio{} if studio.Name.Valid { newStudioJSON.Name = studio.Name.String } - if studio.Url.Valid { - newStudioJSON.Url = studio.Url.String + if studio.URL.Valid { + newStudioJSON.URL = studio.URL.String } newStudioJSON.Image = utils.GetBase64StringFromData(studio.Image) @@ -349,8 +349,8 @@ func (t *ExportTask) ExportScrapedItems(ctx context.Context) { if scrapedItem.Description.Valid { newScrapedItemJSON.Description = scrapedItem.Description.String } - if scrapedItem.Url.Valid { - newScrapedItemJSON.Url = scrapedItem.Url.String + if scrapedItem.URL.Valid { + newScrapedItemJSON.URL = scrapedItem.URL.String } if scrapedItem.Date.Valid { newScrapedItemJSON.Date = utils.GetYMDFromDatabaseDate(scrapedItem.Date.String) @@ -370,18 +370,18 @@ func (t *ExportTask) ExportScrapedItems(ctx context.Context) { if scrapedItem.GalleryFilename.Valid { newScrapedItemJSON.GalleryFilename = scrapedItem.GalleryFilename.String } - if scrapedItem.GalleryUrl.Valid { - newScrapedItemJSON.GalleryUrl = scrapedItem.GalleryUrl.String + if scrapedItem.GalleryURL.Valid { + newScrapedItemJSON.GalleryURL = scrapedItem.GalleryURL.String } if scrapedItem.VideoFilename.Valid { newScrapedItemJSON.VideoFilename = scrapedItem.VideoFilename.String } - if scrapedItem.VideoUrl.Valid { - newScrapedItemJSON.VideoUrl = scrapedItem.VideoUrl.String + if scrapedItem.VideoURL.Valid { + newScrapedItemJSON.VideoURL = scrapedItem.VideoURL.String } newScrapedItemJSON.Studio = studioName - updatedAt := jsonschema.RailsTime{ Time: scrapedItem.UpdatedAt.Timestamp } // TODO keeping ruby format + updatedAt := jsonschema.RailsTime{Time: scrapedItem.UpdatedAt.Timestamp} // TODO keeping ruby format newScrapedItemJSON.UpdatedAt = updatedAt t.Scraped = append(t.Scraped, newScrapedItemJSON) @@ -449,9 +449,9 @@ func getPrecision(num float64) int { e := 1.0 p := 0 - for (math.Round(num * e) / e) != num { + for (math.Round(num*e) / e) != num { e *= 10 - p += 1 + p++ } return p -} \ No newline at end of file +} diff --git a/manager/task_generate_markers.go b/manager/task_generate_markers.go index 26ac47335..0ec7d9238 100644 --- a/manager/task_generate_markers.go +++ b/manager/task_generate_markers.go @@ -51,8 +51,8 @@ func (t *GenerateMarkersTask) Start(wg *sync.WaitGroup) { options := ffmpeg.SceneMarkerOptions{ ScenePath: t.Scene.Path, - Seconds: seconds, - Width: 640, + Seconds: seconds, + Width: 640, } if !videoExists { options.OutputPath = instance.Paths.Generated.GetTmpPath(videoFilename) // tmp output in case the process ends abruptly diff --git a/manager/task_generate_preview.go b/manager/task_generate_preview.go index ab3468692..4e2502fa4 100644 --- a/manager/task_generate_preview.go +++ b/manager/task_generate_preview.go @@ -51,4 +51,4 @@ func (t *GeneratePreviewTask) videoFilename() string { func (t *GeneratePreviewTask) imageFilename() string { return t.Scene.Checksum + ".webp" -} \ No newline at end of file +} diff --git a/manager/task_generate_sprite.go b/manager/task_generate_sprite.go index 460188d74..80f9095d1 100644 --- a/manager/task_generate_sprite.go +++ b/manager/task_generate_sprite.go @@ -43,4 +43,4 @@ func (t *GenerateSpriteTask) doesSpriteExist(sceneChecksum string) bool { imageExists, _ := utils.FileExists(instance.Paths.Scene.GetSpriteImageFilePath(sceneChecksum)) vttExists, _ := utils.FileExists(instance.Paths.Scene.GetSpriteVttFilePath(sceneChecksum)) return imageExists && vttExists -} \ No newline at end of file +} diff --git a/manager/task_import.go b/manager/task_import.go index 640aa7289..0c55d8607 100644 --- a/manager/task_import.go +++ b/manager/task_import.go @@ -16,7 +16,7 @@ import ( type ImportTask struct { Mappings *jsonschema.Mappings - Scraped []jsonschema.ScrapedItem + Scraped []jsonschema.ScrapedItem } func (t *ImportTask) Start(wg *sync.WaitGroup) { @@ -57,7 +57,9 @@ func (t *ImportTask) ImportPerformers(ctx context.Context) { logger.Errorf("[performers] failed to read json: %s", err.Error()) continue } - if mappingJSON.Checksum == "" || mappingJSON.Name == "" || performerJSON == nil { return } + if mappingJSON.Checksum == "" || mappingJSON.Name == "" || performerJSON == nil { + return + } logger.Progressf("[performers] %d of %d", index, len(t.Mappings.Performers)) @@ -72,57 +74,57 @@ func (t *ImportTask) ImportPerformers(ctx context.Context) { // Populate a new performer from the input currentTime := time.Now() newPerformer := models.Performer{ - Image: imageData, - Checksum: checksum, - Favorite: sql.NullBool{ Bool: performerJSON.Favorite, Valid: true }, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Image: imageData, + Checksum: checksum, + Favorite: sql.NullBool{Bool: performerJSON.Favorite, Valid: true}, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } if performerJSON.Name != "" { - newPerformer.Name = sql.NullString{ String: performerJSON.Name, Valid: true } + newPerformer.Name = sql.NullString{String: performerJSON.Name, Valid: true} } - if performerJSON.Url != "" { - newPerformer.Url = sql.NullString{ String: performerJSON.Url, Valid: true } + if performerJSON.URL != "" { + newPerformer.URL = sql.NullString{String: performerJSON.URL, Valid: true} } if performerJSON.Birthdate != "" { - newPerformer.Birthdate = sql.NullString{ String: performerJSON.Birthdate, Valid: true } + newPerformer.Birthdate = sql.NullString{String: performerJSON.Birthdate, Valid: true} } if performerJSON.Ethnicity != "" { - newPerformer.Ethnicity = sql.NullString{ String: performerJSON.Ethnicity, Valid: true } + newPerformer.Ethnicity = sql.NullString{String: performerJSON.Ethnicity, Valid: true} } if performerJSON.Country != "" { - newPerformer.Country = sql.NullString{ String: performerJSON.Country, Valid: true } + newPerformer.Country = sql.NullString{String: performerJSON.Country, Valid: true} } if performerJSON.EyeColor != "" { - newPerformer.EyeColor = sql.NullString{ String: performerJSON.EyeColor, Valid: true } + newPerformer.EyeColor = sql.NullString{String: performerJSON.EyeColor, Valid: true} } if performerJSON.Height != "" { - newPerformer.Height = sql.NullString{ String: performerJSON.Height, Valid: true } + newPerformer.Height = sql.NullString{String: performerJSON.Height, Valid: true} } if performerJSON.Measurements != "" { - newPerformer.Measurements = sql.NullString{ String: performerJSON.Measurements, Valid: true } + newPerformer.Measurements = sql.NullString{String: performerJSON.Measurements, Valid: true} } if performerJSON.FakeTits != "" { - newPerformer.FakeTits = sql.NullString{ String: performerJSON.FakeTits, Valid: true } + newPerformer.FakeTits = sql.NullString{String: performerJSON.FakeTits, Valid: true} } if performerJSON.CareerLength != "" { - newPerformer.CareerLength = sql.NullString{ String: performerJSON.CareerLength, Valid: true } + newPerformer.CareerLength = sql.NullString{String: performerJSON.CareerLength, Valid: true} } if performerJSON.Tattoos != "" { - newPerformer.Tattoos = sql.NullString{ String: performerJSON.Tattoos, Valid: true } + newPerformer.Tattoos = sql.NullString{String: performerJSON.Tattoos, Valid: true} } if performerJSON.Piercings != "" { - newPerformer.Piercings = sql.NullString{ String: performerJSON.Piercings, Valid: true } + newPerformer.Piercings = sql.NullString{String: performerJSON.Piercings, Valid: true} } if performerJSON.Aliases != "" { - newPerformer.Aliases = sql.NullString{ String: performerJSON.Aliases, Valid: true } + newPerformer.Aliases = sql.NullString{String: performerJSON.Aliases, Valid: true} } if performerJSON.Twitter != "" { - newPerformer.Twitter = sql.NullString{ String: performerJSON.Twitter, Valid: true } + newPerformer.Twitter = sql.NullString{String: performerJSON.Twitter, Valid: true} } if performerJSON.Instagram != "" { - newPerformer.Instagram = sql.NullString{ String: performerJSON.Instagram, Valid: true } + newPerformer.Instagram = sql.NullString{String: performerJSON.Instagram, Valid: true} } _, err = qb.Create(newPerformer, tx) @@ -151,7 +153,9 @@ func (t *ImportTask) ImportStudios(ctx context.Context) { logger.Errorf("[studios] failed to read json: %s", err.Error()) continue } - if mappingJSON.Checksum == "" || mappingJSON.Name == "" || studioJSON == nil { return } + if mappingJSON.Checksum == "" || mappingJSON.Name == "" || studioJSON == nil { + return + } logger.Progressf("[studios] %d of %d", index, len(t.Mappings.Studios)) @@ -166,12 +170,12 @@ func (t *ImportTask) ImportStudios(ctx context.Context) { // Populate a new studio from the input currentTime := time.Now() newStudio := models.Studio{ - Image: imageData, - Checksum: checksum, - Name: sql.NullString{ String: studioJSON.Name, Valid: true }, - Url: sql.NullString{ String: studioJSON.Url, Valid: true }, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Image: imageData, + Checksum: checksum, + Name: sql.NullString{String: studioJSON.Name, Valid: true}, + URL: sql.NullString{String: studioJSON.URL, Valid: true}, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } _, err = qb.Create(newStudio, tx) @@ -195,17 +199,19 @@ func (t *ImportTask) ImportGalleries(ctx context.Context) { for i, mappingJSON := range t.Mappings.Galleries { index := i + 1 - if mappingJSON.Checksum == "" || mappingJSON.Path == "" { return } + if mappingJSON.Checksum == "" || mappingJSON.Path == "" { + return + } logger.Progressf("[galleries] %d of %d", index, len(t.Mappings.Galleries)) // Populate a new gallery from the input currentTime := time.Now() newGallery := models.Gallery{ - Checksum: mappingJSON.Checksum, - Path: mappingJSON.Path, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Checksum: mappingJSON.Checksum, + Path: mappingJSON.Path, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } _, err := qb.Create(newGallery, tx) @@ -254,7 +260,9 @@ func (t *ImportTask) ImportTags(ctx context.Context) { } // Get the tags from the markers if we have marker json - if len(sceneJSON.Markers) == 0 { continue } + if len(sceneJSON.Markers) == 0 { + continue + } for _, markerJSON := range sceneJSON.Markers { if markerJSON.PrimaryTag != "" { tagNames = append(tagNames, markerJSON.PrimaryTag) @@ -269,9 +277,9 @@ func (t *ImportTask) ImportTags(ctx context.Context) { for _, tagName := range uniqueTagNames { currentTime := time.Now() newTag := models.Tag{ - Name: tagName, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Name: tagName, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } _, err := qb.Create(newTag, tx) @@ -306,20 +314,20 @@ func (t *ImportTask) ImportScrapedItems(ctx context.Context) { updatedAt = mappingJSON.UpdatedAt.Time } newScrapedItem := models.ScrapedItem{ - Title: sql.NullString{String: mappingJSON.Title, Valid: true}, - Description: sql.NullString{String: mappingJSON.Description, Valid: true}, - Url: sql.NullString{String: mappingJSON.Url, Valid: true}, - Date: sql.NullString{String: mappingJSON.Date, Valid: true}, - Rating: sql.NullString{String: mappingJSON.Rating, Valid: true}, - Tags: sql.NullString{String: mappingJSON.Tags, Valid: true}, - Models: sql.NullString{String: mappingJSON.Models, Valid: true}, - Episode: sql.NullInt64{Int64: int64(mappingJSON.Episode), Valid: true}, + Title: sql.NullString{String: mappingJSON.Title, Valid: true}, + Description: sql.NullString{String: mappingJSON.Description, Valid: true}, + URL: sql.NullString{String: mappingJSON.URL, Valid: true}, + Date: sql.NullString{String: mappingJSON.Date, Valid: true}, + Rating: sql.NullString{String: mappingJSON.Rating, Valid: true}, + Tags: sql.NullString{String: mappingJSON.Tags, Valid: true}, + Models: sql.NullString{String: mappingJSON.Models, Valid: true}, + Episode: sql.NullInt64{Int64: int64(mappingJSON.Episode), Valid: true}, GalleryFilename: sql.NullString{String: mappingJSON.GalleryFilename, Valid: true}, - GalleryUrl: sql.NullString{String: mappingJSON.GalleryUrl, Valid: true}, - VideoFilename: sql.NullString{String: mappingJSON.VideoFilename, Valid: true}, - VideoUrl: sql.NullString{String: mappingJSON.VideoUrl, Valid: true}, - CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, - UpdatedAt: models.SQLiteTimestamp{Timestamp: updatedAt}, + GalleryURL: sql.NullString{String: mappingJSON.GalleryURL, Valid: true}, + VideoFilename: sql.NullString{String: mappingJSON.VideoFilename, Valid: true}, + VideoURL: sql.NullString{String: mappingJSON.VideoURL, Valid: true}, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: updatedAt}, } studio, err := sqb.FindByName(mappingJSON.Studio, tx) @@ -332,7 +340,7 @@ func (t *ImportTask) ImportScrapedItems(ctx context.Context) { _, err = qb.Create(newScrapedItem, tx) if err != nil { - logger.Errorf("[scraped sites] <%s> failed to create: %s", newScrapedItem.Title, err.Error()) + logger.Errorf("[scraped sites] <%s> failed to create: %s", newScrapedItem.Title.String, err.Error()) } } @@ -360,10 +368,10 @@ func (t *ImportTask) ImportScenes(ctx context.Context) { logger.Progressf("[scenes] %d of %d", index, len(t.Mappings.Scenes)) newScene := models.Scene{ - Checksum: mappingJSON.Checksum, - Path: mappingJSON.Path, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Checksum: mappingJSON.Checksum, + Path: mappingJSON.Path, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } sceneJSON, err := instance.JSON.getScene(mappingJSON.Checksum) @@ -380,8 +388,8 @@ func (t *ImportTask) ImportScenes(ctx context.Context) { if sceneJSON.Details != "" { newScene.Details = sql.NullString{String: sceneJSON.Details, Valid: true} } - if sceneJSON.Url != "" { - newScene.Url = sql.NullString{String: sceneJSON.Url, Valid: true} + if sceneJSON.URL != "" { + newScene.URL = sql.NullString{String: sceneJSON.URL, Valid: true} } if sceneJSON.Date != "" { newScene.Date = sql.NullString{String: sceneJSON.Date, Valid: true} @@ -427,9 +435,9 @@ func (t *ImportTask) ImportScenes(ctx context.Context) { sqb := models.NewStudioQueryBuilder() studio, err := sqb.FindByName(sceneJSON.Studio, tx) if err != nil { - logger.Warn("[scenes] studio <%s> does not exist: %s", sceneJSON.Studio, err) + logger.Warnf("[scenes] studio <%s> does not exist: %s", sceneJSON.Studio, err.Error()) } else { - newScene.StudioID = sql.NullInt64{ Int64: int64(studio.ID), Valid: true } + newScene.StudioID = sql.NullInt64{Int64: int64(studio.ID), Valid: true} } } @@ -451,9 +459,9 @@ func (t *ImportTask) ImportScenes(ctx context.Context) { gqb := models.NewGalleryQueryBuilder() gallery, err := gqb.FindByChecksum(sceneJSON.Gallery, tx) if err != nil { - logger.Warn("[scenes] gallery <%s> does not exist: %s", sceneJSON.Gallery, err) + logger.Warnf("[scenes] gallery <%s> does not exist: %s", sceneJSON.Gallery, err.Error()) } else { - gallery.SceneID = sql.NullInt64{ Int64: int64(scene.ID), Valid: true } + gallery.SceneID = sql.NullInt64{Int64: int64(scene.ID), Valid: true} _, err := gqb.Update(*gallery, tx) if err != nil { logger.Errorf("[scenes] <%s> failed to update gallery: %s", scene.Checksum, err.Error()) @@ -465,13 +473,13 @@ func (t *ImportTask) ImportScenes(ctx context.Context) { if len(sceneJSON.Performers) > 0 { performers, err := t.getPerformers(sceneJSON.Performers, tx) if err != nil { - logger.Warn("[scenes] <%s> failed to fetch performers: %s", scene.Checksum, err) + logger.Warnf("[scenes] <%s> failed to fetch performers: %s", scene.Checksum, err.Error()) } else { var performerJoins []models.PerformersScenes for _, performer := range performers { join := models.PerformersScenes{ PerformerID: performer.ID, - SceneID: scene.ID, + SceneID: scene.ID, } performerJoins = append(performerJoins, join) } @@ -485,13 +493,13 @@ func (t *ImportTask) ImportScenes(ctx context.Context) { if len(sceneJSON.Tags) > 0 { tags, err := t.getTags(scene.Checksum, sceneJSON.Tags, tx) if err != nil { - logger.Warn("[scenes] <%s> failed to fetch tags: %s", scene.Checksum, err) + logger.Warnf("[scenes] <%s> failed to fetch tags: %s", scene.Checksum, err.Error()) } else { var tagJoins []models.ScenesTags for _, tag := range tags { join := models.ScenesTags{ SceneID: scene.ID, - TagID: tag.ID, + TagID: tag.ID, } tagJoins = append(tagJoins, join) } @@ -508,11 +516,11 @@ func (t *ImportTask) ImportScenes(ctx context.Context) { for _, marker := range sceneJSON.Markers { seconds, _ := strconv.ParseFloat(marker.Seconds, 64) newSceneMarker := models.SceneMarker{ - Title: marker.Title, - Seconds: seconds, - SceneID: sql.NullInt64{Int64: int64(scene.ID), Valid: true}, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Title: marker.Title, + Seconds: seconds, + SceneID: sql.NullInt64{Int64: int64(scene.ID), Valid: true}, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } primaryTag, err := tqb.FindByName(marker.PrimaryTag, tx) @@ -536,13 +544,13 @@ func (t *ImportTask) ImportScenes(ctx context.Context) { // Get the scene marker tags and create the joins tags, err := t.getTags(scene.Checksum, marker.Tags, tx) if err != nil { - logger.Warn("[scenes] <%s> failed to fetch scene marker tags: %s", scene.Checksum, err) + logger.Warnf("[scenes] <%s> failed to fetch scene marker tags: %s", scene.Checksum, err.Error()) } else { var tagJoins []models.SceneMarkersTags for _, tag := range tags { join := models.SceneMarkersTags{ SceneMarkerID: sceneMarker.ID, - TagID: tag.ID, + TagID: tag.ID, } tagJoins = append(tagJoins, join) } @@ -626,4 +634,4 @@ func (t *ImportTask) getUnique(s []string) []string { j++ } return s[:j] -} \ No newline at end of file +} diff --git a/manager/task_scan.go b/manager/task_scan.go index 0b4663cad..fe53df73a 100644 --- a/manager/task_scan.go +++ b/manager/task_scan.go @@ -53,10 +53,10 @@ func (t *ScanTask) scanGallery() { logger.Infof("%s doesn't exist. Creating new item...", t.FilePath) currentTime := time.Now() newGallery := models.Gallery{ - Checksum: checksum, - Path: t.FilePath, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Checksum: checksum, + Path: t.FilePath, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } _, err = qb.Create(newGallery, tx) } @@ -102,18 +102,18 @@ func (t *ScanTask) scanScene() { logger.Infof("%s doesn't exist. Creating new item...", t.FilePath) currentTime := time.Now() newScene := models.Scene{ - Checksum: checksum, - Path: t.FilePath, - Duration: sql.NullFloat64{Float64: videoFile.Duration, Valid: true }, - VideoCodec: sql.NullString{ String: videoFile.VideoCodec, Valid: true}, - AudioCodec: sql.NullString{ String: videoFile.AudioCodec, Valid: true}, - Width: sql.NullInt64{ Int64: int64(videoFile.Width), Valid: true }, - Height: sql.NullInt64{ Int64: int64(videoFile.Height), Valid: true }, - Framerate: sql.NullFloat64{ Float64: videoFile.FrameRate, Valid: true }, - Bitrate: sql.NullInt64{ Int64: videoFile.Bitrate, Valid: true }, - Size: sql.NullString{ String: strconv.Itoa(int(videoFile.Size)), Valid: true }, - CreatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, - UpdatedAt: models.SQLiteTimestamp{ Timestamp: currentTime }, + Checksum: checksum, + Path: t.FilePath, + Duration: sql.NullFloat64{Float64: videoFile.Duration, Valid: true}, + VideoCodec: sql.NullString{String: videoFile.VideoCodec, Valid: true}, + AudioCodec: sql.NullString{String: videoFile.AudioCodec, Valid: true}, + Width: sql.NullInt64{Int64: int64(videoFile.Width), Valid: true}, + Height: sql.NullInt64{Int64: int64(videoFile.Height), Valid: true}, + Framerate: sql.NullFloat64{Float64: videoFile.FrameRate, Valid: true}, + Bitrate: sql.NullInt64{Int64: videoFile.Bitrate, Valid: true}, + Size: sql.NullString{String: strconv.Itoa(int(videoFile.Size)), Valid: true}, + CreatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, + UpdatedAt: models.SQLiteTimestamp{Timestamp: currentTime}, } _, err = qb.Create(newScene, tx) } @@ -145,9 +145,9 @@ func (t *ScanTask) makeScreenshot(probeResult ffmpeg.VideoFile, outputPath strin encoder := ffmpeg.NewEncoder(instance.StaticPaths.FFMPEG) options := ffmpeg.ScreenshotOptions{ OutputPath: outputPath, - Quality: quality, - Time: float64(probeResult.Duration) * 0.2, - Width: width, + Quality: quality, + Time: float64(probeResult.Duration) * 0.2, + Width: width, } encoder.Screenshot(probeResult, options) } diff --git a/manager/task_transcode.go b/manager/task_transcode.go index beaf6d8be..bb17f7a4f 100644 --- a/manager/task_transcode.go +++ b/manager/task_transcode.go @@ -32,7 +32,7 @@ func (t *GenerateTranscodeTask) Start(wg *sync.WaitGroup) { return } - outputPath := instance.Paths.Generated.GetTmpPath(t.Scene.Checksum+".mp4") + outputPath := instance.Paths.Generated.GetTmpPath(t.Scene.Checksum + ".mp4") options := ffmpeg.TranscodeOptions{ OutputPath: outputPath, } @@ -42,6 +42,6 @@ func (t *GenerateTranscodeTask) Start(wg *sync.WaitGroup) { logger.Errorf("[transcode] error generating transcode: %s", err.Error()) return } - logger.Debug("[transcode] <%s> created transcode: ", t.Scene.Checksum) + logger.Debugf("[transcode] <%s> created transcode: %s", t.Scene.Checksum, outputPath) return -} \ No newline at end of file +} diff --git a/manager/utils.go b/manager/utils.go index fed5ba515..599ed4309 100644 --- a/manager/utils.go +++ b/manager/utils.go @@ -10,7 +10,7 @@ func IsStreamable(scene *models.Scene) (bool, error) { if scene == nil { return false, fmt.Errorf("nil scene") } - fileType, err := utils.FileType(scene.Path) + fileType, err := utils.FileType(scene.Path) if err != nil { return false, err } @@ -29,4 +29,4 @@ func HasTranscode(scene *models.Scene) (bool, error) { } transcodePath := instance.Paths.Scene.GetTranscodePath(scene.Checksum) return utils.FileExists(transcodePath) -} \ No newline at end of file +} diff --git a/models/extension_find_filter.go b/models/extension_find_filter.go index 5218667f1..c3bb24ffb 100644 --- a/models/extension_find_filter.go +++ b/models/extension_find_filter.go @@ -22,4 +22,4 @@ func (ff FindFilterType) GetDirection() string { direction = "ASC" } return direction -} \ No newline at end of file +} diff --git a/models/model_gallery.go b/models/model_gallery.go index 13012485d..e7fad03a7 100644 --- a/models/model_gallery.go +++ b/models/model_gallery.go @@ -25,7 +25,7 @@ type Gallery struct { UpdatedAt SQLiteTimestamp `db:"updated_at" json:"updated_at"` } -func (g *Gallery) GetFiles(baseUrl string) []GalleryFilesType { +func (g *Gallery) GetFiles(baseURL string) []GalleryFilesType { var galleryFiles []GalleryFilesType filteredFiles, readCloser, err := g.listZipContents() if err != nil { @@ -33,9 +33,9 @@ func (g *Gallery) GetFiles(baseUrl string) []GalleryFilesType { } defer readCloser.Close() - builder := urlbuilders.NewGalleryURLBuilder(baseUrl, g.ID) + builder := urlbuilders.NewGalleryURLBuilder(baseURL, g.ID) for i, file := range filteredFiles { - galleryURL := builder.GetGalleryImageUrl(i) + galleryURL := builder.GetGalleryImageURL(i) galleryFile := GalleryFilesType{ Index: i, Name: &file.Name, diff --git a/models/model_performer.go b/models/model_performer.go index 5f0724784..97edb8051 100644 --- a/models/model_performer.go +++ b/models/model_performer.go @@ -9,7 +9,7 @@ type Performer struct { Image []byte `db:"image" json:"image"` Checksum string `db:"checksum" json:"checksum"` Name sql.NullString `db:"name" json:"name"` - Url sql.NullString `db:"url" json:"url"` + URL sql.NullString `db:"url" json:"url"` Twitter sql.NullString `db:"twitter" json:"twitter"` Instagram sql.NullString `db:"instagram" json:"instagram"` Birthdate sql.NullString `db:"birthdate" json:"birthdate"` // TODO dates? diff --git a/models/model_scene.go b/models/model_scene.go index 0b8ae3567..c065293c0 100644 --- a/models/model_scene.go +++ b/models/model_scene.go @@ -10,7 +10,7 @@ type Scene struct { Path string `db:"path" json:"path"` Title sql.NullString `db:"title" json:"title"` Details sql.NullString `db:"details" json:"details"` - Url sql.NullString `db:"url" json:"url"` + URL sql.NullString `db:"url" json:"url"` Date sql.NullString `db:"date" json:"date"` // TODO dates? Rating sql.NullInt64 `db:"rating" json:"rating"` Size sql.NullString `db:"size" json:"size"` diff --git a/models/model_scraped_item.go b/models/model_scraped_item.go index f8062c834..6f3984777 100644 --- a/models/model_scraped_item.go +++ b/models/model_scraped_item.go @@ -8,16 +8,16 @@ type ScrapedItem struct { ID int `db:"id" json:"id"` Title sql.NullString `db:"title" json:"title"` Description sql.NullString `db:"description" json:"description"` - Url sql.NullString `db:"url" json:"url"` + URL sql.NullString `db:"url" json:"url"` Date sql.NullString `db:"date" json:"date"` // TODO dates? Rating sql.NullString `db:"rating" json:"rating"` Tags sql.NullString `db:"tags" json:"tags"` Models sql.NullString `db:"models" json:"models"` Episode sql.NullInt64 `db:"episode" json:"episode"` GalleryFilename sql.NullString `db:"gallery_filename" json:"gallery_filename"` - GalleryUrl sql.NullString `db:"gallery_url" json:"gallery_url"` + GalleryURL sql.NullString `db:"gallery_url" json:"gallery_url"` VideoFilename sql.NullString `db:"video_filename" json:"video_filename"` - VideoUrl sql.NullString `db:"video_url" json:"video_url"` + VideoURL sql.NullString `db:"video_url" json:"video_url"` StudioID sql.NullInt64 `db:"studio_id,omitempty" json:"studio_id"` CreatedAt SQLiteTimestamp `db:"created_at" json:"created_at"` UpdatedAt SQLiteTimestamp `db:"updated_at" json:"updated_at"` diff --git a/models/model_studio.go b/models/model_studio.go index cd5c61116..2c545bd3d 100644 --- a/models/model_studio.go +++ b/models/model_studio.go @@ -9,7 +9,7 @@ type Studio struct { Image []byte `db:"image" json:"image"` Checksum string `db:"checksum" json:"checksum"` Name sql.NullString `db:"name" json:"name"` - Url sql.NullString `db:"url" json:"url"` + URL sql.NullString `db:"url" json:"url"` CreatedAt SQLiteTimestamp `db:"created_at" json:"created_at"` UpdatedAt SQLiteTimestamp `db:"updated_at" json:"updated_at"` } diff --git a/models/querybuilder_gallery.go b/models/querybuilder_gallery.go index f4168e618..bb16fe36b 100644 --- a/models/querybuilder_gallery.go +++ b/models/querybuilder_gallery.go @@ -7,13 +7,13 @@ import ( "path/filepath" ) -type galleryQueryBuilder struct {} +type GalleryQueryBuilder struct{} -func NewGalleryQueryBuilder() galleryQueryBuilder { - return galleryQueryBuilder{} +func NewGalleryQueryBuilder() GalleryQueryBuilder { + return GalleryQueryBuilder{} } -func (qb *galleryQueryBuilder) Create(newGallery Gallery, tx *sqlx.Tx) (*Gallery, error) { +func (qb *GalleryQueryBuilder) Create(newGallery Gallery, tx *sqlx.Tx) (*Gallery, error) { ensureTx(tx) result, err := tx.NamedExec( `INSERT INTO galleries (path, checksum, scene_id, created_at, updated_at) @@ -34,10 +34,10 @@ func (qb *galleryQueryBuilder) Create(newGallery Gallery, tx *sqlx.Tx) (*Gallery return &newGallery, nil } -func (qb *galleryQueryBuilder) Update(updatedGallery Gallery, tx *sqlx.Tx) (*Gallery, error) { +func (qb *GalleryQueryBuilder) Update(updatedGallery Gallery, tx *sqlx.Tx) (*Gallery, error) { ensureTx(tx) _, err := tx.NamedExec( - `UPDATE galleries SET `+SqlGenKeys(updatedGallery)+` WHERE galleries.id = :id`, + `UPDATE galleries SET `+SQLGenKeys(updatedGallery)+` WHERE galleries.id = :id`, updatedGallery, ) if err != nil { @@ -50,45 +50,45 @@ func (qb *galleryQueryBuilder) Update(updatedGallery Gallery, tx *sqlx.Tx) (*Gal return &updatedGallery, nil } -func (qb *galleryQueryBuilder) Find(id int) (*Gallery, error) { +func (qb *GalleryQueryBuilder) Find(id int) (*Gallery, error) { query := "SELECT * FROM galleries WHERE id = ? LIMIT 1" args := []interface{}{id} return qb.queryGallery(query, args, nil) } -func (qb *galleryQueryBuilder) FindByChecksum(checksum string, tx *sqlx.Tx) (*Gallery, error) { +func (qb *GalleryQueryBuilder) FindByChecksum(checksum string, tx *sqlx.Tx) (*Gallery, error) { query := "SELECT * FROM galleries WHERE checksum = ? LIMIT 1" args := []interface{}{checksum} return qb.queryGallery(query, args, tx) } -func (qb *galleryQueryBuilder) FindByPath(path string) (*Gallery, error) { +func (qb *GalleryQueryBuilder) FindByPath(path string) (*Gallery, error) { query := "SELECT * FROM galleries WHERE path = ? LIMIT 1" args := []interface{}{path} return qb.queryGallery(query, args, nil) } -func (qb *galleryQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) (*Gallery, error) { +func (qb *GalleryQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) (*Gallery, error) { query := "SELECT galleries.* FROM galleries JOIN scenes ON scenes.id = galleries.scene_id WHERE scenes.id = ? LIMIT 1" args := []interface{}{sceneID} return qb.queryGallery(query, args, tx) } -func (qb *galleryQueryBuilder) ValidGalleriesForScenePath(scenePath string) ([]Gallery, error) { +func (qb *GalleryQueryBuilder) ValidGalleriesForScenePath(scenePath string) ([]Gallery, error) { sceneDirPath := filepath.Dir(scenePath) query := "SELECT galleries.* FROM galleries WHERE galleries.scene_id IS NULL AND galleries.path LIKE '" + sceneDirPath + "%' ORDER BY path ASC" return qb.queryGalleries(query, nil, nil) } -func (qb *galleryQueryBuilder) Count() (int, error) { +func (qb *GalleryQueryBuilder) Count() (int, error) { return runCountQuery(buildCountQuery("SELECT galleries.id FROM galleries"), nil) } -func (qb *galleryQueryBuilder) All() ([]Gallery, error) { - return qb.queryGalleries(selectAll("galleries") + qb.getGallerySort(nil), nil, nil) +func (qb *GalleryQueryBuilder) All() ([]Gallery, error) { + return qb.queryGalleries(selectAll("galleries")+qb.getGallerySort(nil), nil, nil) } -func (qb *galleryQueryBuilder) Query(findFilter *FindFilterType) ([]Gallery, int) { +func (qb *GalleryQueryBuilder) Query(findFilter *FindFilterType) ([]Gallery, int) { if findFilter == nil { findFilter = &FindFilterType{} } @@ -115,12 +115,12 @@ func (qb *galleryQueryBuilder) Query(findFilter *FindFilterType) ([]Gallery, int return galleries, countResult } -func (qb *galleryQueryBuilder) getGallerySort(findFilter *FindFilterType) string { +func (qb *GalleryQueryBuilder) getGallerySort(findFilter *FindFilterType) string { var sort string var direction string //if findFilter == nil { // TODO temp until title is removed from schema and UI - sort = "path" - direction = "ASC" + sort = "path" + direction = "ASC" //} else { // sort = findFilter.getSort("path") // direction = findFilter.getDirection() @@ -128,7 +128,7 @@ func (qb *galleryQueryBuilder) getGallerySort(findFilter *FindFilterType) string return getSort(sort, direction, "galleries") } -func (qb *galleryQueryBuilder) queryGallery(query string, args []interface{}, tx *sqlx.Tx) (*Gallery, error) { +func (qb *GalleryQueryBuilder) queryGallery(query string, args []interface{}, tx *sqlx.Tx) (*Gallery, error) { results, err := qb.queryGalleries(query, args, tx) if err != nil || len(results) < 1 { return nil, err @@ -136,7 +136,7 @@ func (qb *galleryQueryBuilder) queryGallery(query string, args []interface{}, tx return &results[0], nil } -func (qb *galleryQueryBuilder) queryGalleries(query string, args []interface{}, tx *sqlx.Tx) ([]Gallery, error) { +func (qb *GalleryQueryBuilder) queryGalleries(query string, args []interface{}, tx *sqlx.Tx) ([]Gallery, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -164,4 +164,4 @@ func (qb *galleryQueryBuilder) queryGalleries(query string, args []interface{}, } return galleries, nil -} \ No newline at end of file +} diff --git a/models/querybuilder_joins.go b/models/querybuilder_joins.go index 8bc42ddb2..efcf435f2 100644 --- a/models/querybuilder_joins.go +++ b/models/querybuilder_joins.go @@ -2,13 +2,13 @@ package models import "github.com/jmoiron/sqlx" -type joinsQueryBuilder struct {} +type JoinsQueryBuilder struct{} -func NewJoinsQueryBuilder() joinsQueryBuilder { - return joinsQueryBuilder{} +func NewJoinsQueryBuilder() JoinsQueryBuilder { + return JoinsQueryBuilder{} } -func (qb *joinsQueryBuilder) CreatePerformersScenes(newJoins []PerformersScenes, tx *sqlx.Tx) error { +func (qb *JoinsQueryBuilder) CreatePerformersScenes(newJoins []PerformersScenes, tx *sqlx.Tx) error { ensureTx(tx) for _, join := range newJoins { _, err := tx.NamedExec( @@ -22,7 +22,7 @@ func (qb *joinsQueryBuilder) CreatePerformersScenes(newJoins []PerformersScenes, return nil } -func (qb *joinsQueryBuilder) UpdatePerformersScenes(sceneID int, updatedJoins []PerformersScenes, tx *sqlx.Tx) error { +func (qb *JoinsQueryBuilder) UpdatePerformersScenes(sceneID int, updatedJoins []PerformersScenes, tx *sqlx.Tx) error { ensureTx(tx) // Delete the existing joins and then create new ones @@ -33,7 +33,7 @@ func (qb *joinsQueryBuilder) UpdatePerformersScenes(sceneID int, updatedJoins [] return qb.CreatePerformersScenes(updatedJoins, tx) } -func (qb *joinsQueryBuilder) CreateScenesTags(newJoins []ScenesTags, tx *sqlx.Tx) error { +func (qb *JoinsQueryBuilder) CreateScenesTags(newJoins []ScenesTags, tx *sqlx.Tx) error { ensureTx(tx) for _, join := range newJoins { _, err := tx.NamedExec( @@ -47,7 +47,7 @@ func (qb *joinsQueryBuilder) CreateScenesTags(newJoins []ScenesTags, tx *sqlx.Tx return nil } -func (qb *joinsQueryBuilder) UpdateScenesTags(sceneID int, updatedJoins []ScenesTags, tx *sqlx.Tx) error { +func (qb *JoinsQueryBuilder) UpdateScenesTags(sceneID int, updatedJoins []ScenesTags, tx *sqlx.Tx) error { ensureTx(tx) // Delete the existing joins and then create new ones @@ -58,7 +58,7 @@ func (qb *joinsQueryBuilder) UpdateScenesTags(sceneID int, updatedJoins []Scenes return qb.CreateScenesTags(updatedJoins, tx) } -func (qb *joinsQueryBuilder) CreateSceneMarkersTags(newJoins []SceneMarkersTags, tx *sqlx.Tx) error { +func (qb *JoinsQueryBuilder) CreateSceneMarkersTags(newJoins []SceneMarkersTags, tx *sqlx.Tx) error { ensureTx(tx) for _, join := range newJoins { _, err := tx.NamedExec( @@ -72,7 +72,7 @@ func (qb *joinsQueryBuilder) CreateSceneMarkersTags(newJoins []SceneMarkersTags, return nil } -func (qb *joinsQueryBuilder) UpdateSceneMarkersTags(sceneMarkerID int, updatedJoins []SceneMarkersTags, tx *sqlx.Tx) error { +func (qb *JoinsQueryBuilder) UpdateSceneMarkersTags(sceneMarkerID int, updatedJoins []SceneMarkersTags, tx *sqlx.Tx) error { ensureTx(tx) // Delete the existing joins and then create new ones diff --git a/models/querybuilder_performer.go b/models/querybuilder_performer.go index 994cebfef..e71cb12a2 100644 --- a/models/querybuilder_performer.go +++ b/models/querybuilder_performer.go @@ -6,13 +6,13 @@ import ( "github.com/stashapp/stash/database" ) -type performerQueryBuilder struct {} +type PerformerQueryBuilder struct{} -func NewPerformerQueryBuilder() performerQueryBuilder { - return performerQueryBuilder{} +func NewPerformerQueryBuilder() PerformerQueryBuilder { + return PerformerQueryBuilder{} } -func (qb *performerQueryBuilder) Create(newPerformer Performer, tx *sqlx.Tx) (*Performer, error) { +func (qb *PerformerQueryBuilder) Create(newPerformer Performer, tx *sqlx.Tx) (*Performer, error) { ensureTx(tx) result, err := tx.NamedExec( `INSERT INTO performers (image, checksum, name, url, twitter, instagram, birthdate, ethnicity, country, @@ -38,10 +38,10 @@ func (qb *performerQueryBuilder) Create(newPerformer Performer, tx *sqlx.Tx) (*P return &newPerformer, nil } -func (qb *performerQueryBuilder) Update(updatedPerformer Performer, tx *sqlx.Tx) (*Performer, error) { +func (qb *PerformerQueryBuilder) Update(updatedPerformer Performer, tx *sqlx.Tx) (*Performer, error) { ensureTx(tx) _, err := tx.NamedExec( - `UPDATE performers SET `+SqlGenKeys(updatedPerformer)+` WHERE performers.id = :id`, + `UPDATE performers SET `+SQLGenKeys(updatedPerformer)+` WHERE performers.id = :id`, updatedPerformer, ) if err != nil { @@ -54,7 +54,7 @@ func (qb *performerQueryBuilder) Update(updatedPerformer Performer, tx *sqlx.Tx) return &updatedPerformer, nil } -func (qb *performerQueryBuilder) Find(id int) (*Performer, error) { +func (qb *PerformerQueryBuilder) Find(id int) (*Performer, error) { query := "SELECT * FROM performers WHERE id = ? LIMIT 1" args := []interface{}{id} results, err := qb.queryPerformers(query, args, nil) @@ -64,7 +64,7 @@ func (qb *performerQueryBuilder) Find(id int) (*Performer, error) { return &results[0], nil } -func (qb *performerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Performer, error) { +func (qb *PerformerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Performer, error) { query := ` SELECT performers.* FROM performers LEFT JOIN performers_scenes as scenes_join on scenes_join.performer_id = performers.id @@ -76,7 +76,7 @@ func (qb *performerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Perf return qb.queryPerformers(query, args, tx) } -func (qb *performerQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]Performer, error) { +func (qb *PerformerQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]Performer, error) { query := "SELECT * FROM performers WHERE name IN " + getInBinding(len(names)) var args []interface{} for _, name := range names { @@ -85,15 +85,15 @@ func (qb *performerQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]Per return qb.queryPerformers(query, args, tx) } -func (qb *performerQueryBuilder) Count() (int, error) { +func (qb *PerformerQueryBuilder) Count() (int, error) { return runCountQuery(buildCountQuery("SELECT performers.id FROM performers"), nil) } -func (qb *performerQueryBuilder) All() ([]Performer, error) { - return qb.queryPerformers(selectAll("performers") + qb.getPerformerSort(nil), nil, nil) +func (qb *PerformerQueryBuilder) All() ([]Performer, error) { + return qb.queryPerformers(selectAll("performers")+qb.getPerformerSort(nil), nil, nil) } -func (qb *performerQueryBuilder) Query(performerFilter *PerformerFilterType, findFilter *FindFilterType) ([]Performer, int) { +func (qb *PerformerQueryBuilder) Query(performerFilter *PerformerFilterType, findFilter *FindFilterType) ([]Performer, int) { if performerFilter == nil { performerFilter = &PerformerFilterType{} } @@ -135,7 +135,7 @@ func (qb *performerQueryBuilder) Query(performerFilter *PerformerFilterType, fin return performers, countResult } -func (qb *performerQueryBuilder) getPerformerSort(findFilter *FindFilterType) string { +func (qb *PerformerQueryBuilder) getPerformerSort(findFilter *FindFilterType) string { var sort string var direction string if findFilter == nil { @@ -148,7 +148,7 @@ func (qb *performerQueryBuilder) getPerformerSort(findFilter *FindFilterType) st return getSort(sort, direction, "performers") } -func (qb *performerQueryBuilder) queryPerformers(query string, args []interface{}, tx *sqlx.Tx) ([]Performer, error) { +func (qb *PerformerQueryBuilder) queryPerformers(query string, args []interface{}, tx *sqlx.Tx) ([]Performer, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -176,4 +176,4 @@ func (qb *performerQueryBuilder) queryPerformers(query string, args []interface{ } return performers, nil -} \ No newline at end of file +} diff --git a/models/querybuilder_scene.go b/models/querybuilder_scene.go index 21006292b..67f9ab86c 100644 --- a/models/querybuilder_scene.go +++ b/models/querybuilder_scene.go @@ -31,13 +31,13 @@ WHERE tags.id = ? GROUP BY scenes.id ` -type sceneQueryBuilder struct{} +type SceneQueryBuilder struct{} -func NewSceneQueryBuilder() sceneQueryBuilder { - return sceneQueryBuilder{} +func NewSceneQueryBuilder() SceneQueryBuilder { + return SceneQueryBuilder{} } -func (qb *sceneQueryBuilder) Create(newScene Scene, tx *sqlx.Tx) (*Scene, error) { +func (qb *SceneQueryBuilder) Create(newScene Scene, tx *sqlx.Tx) (*Scene, error) { ensureTx(tx) result, err := tx.NamedExec( `INSERT INTO scenes (checksum, path, title, details, url, date, rating, size, duration, video_codec, @@ -60,10 +60,10 @@ func (qb *sceneQueryBuilder) Create(newScene Scene, tx *sqlx.Tx) (*Scene, error) return &newScene, nil } -func (qb *sceneQueryBuilder) Update(updatedScene Scene, tx *sqlx.Tx) (*Scene, error) { +func (qb *SceneQueryBuilder) Update(updatedScene Scene, tx *sqlx.Tx) (*Scene, error) { ensureTx(tx) _, err := tx.NamedExec( - `UPDATE scenes SET `+SqlGenKeys(updatedScene)+` WHERE scenes.id = :id`, + `UPDATE scenes SET `+SQLGenKeys(updatedScene)+` WHERE scenes.id = :id`, updatedScene, ) if err != nil { @@ -76,54 +76,54 @@ func (qb *sceneQueryBuilder) Update(updatedScene Scene, tx *sqlx.Tx) (*Scene, er return &updatedScene, nil } -func (qb *sceneQueryBuilder) Find(id int) (*Scene, error) { +func (qb *SceneQueryBuilder) Find(id int) (*Scene, error) { query := "SELECT * FROM scenes WHERE id = ? LIMIT 1" args := []interface{}{id} return qb.queryScene(query, args, nil) } -func (qb *sceneQueryBuilder) FindByChecksum(checksum string) (*Scene, error) { +func (qb *SceneQueryBuilder) FindByChecksum(checksum string) (*Scene, error) { query := "SELECT * FROM scenes WHERE checksum = ? LIMIT 1" args := []interface{}{checksum} return qb.queryScene(query, args, nil) } -func (qb *sceneQueryBuilder) FindByPath(path string) (*Scene, error) { +func (qb *SceneQueryBuilder) FindByPath(path string) (*Scene, error) { query := "SELECT * FROM scenes WHERE path = ? LIMIT 1" args := []interface{}{path} return qb.queryScene(query, args, nil) } -func (qb *sceneQueryBuilder) FindByPerformerID(performerID int) ([]Scene, error) { +func (qb *SceneQueryBuilder) FindByPerformerID(performerID int) ([]Scene, error) { args := []interface{}{performerID} return qb.queryScenes(scenesForPerformerQuery, args, nil) } -func (qb *sceneQueryBuilder) CountByPerformerID(performerID int) (int, error) { +func (qb *SceneQueryBuilder) CountByPerformerID(performerID int) (int, error) { args := []interface{}{performerID} return runCountQuery(buildCountQuery(scenesForPerformerQuery), args) } -func (qb *sceneQueryBuilder) FindByStudioID(studioID int) ([]Scene, error) { +func (qb *SceneQueryBuilder) FindByStudioID(studioID int) ([]Scene, error) { args := []interface{}{studioID} return qb.queryScenes(scenesForStudioQuery, args, nil) } -func (qb *sceneQueryBuilder) Count() (int, error) { +func (qb *SceneQueryBuilder) Count() (int, error) { return runCountQuery(buildCountQuery("SELECT scenes.id FROM scenes"), nil) } -func (qb *sceneQueryBuilder) CountByStudioID(studioID int) (int, error) { +func (qb *SceneQueryBuilder) CountByStudioID(studioID int) (int, error) { args := []interface{}{studioID} return runCountQuery(buildCountQuery(scenesForStudioQuery), args) } -func (qb *sceneQueryBuilder) CountByTagID(tagID int) (int, error) { +func (qb *SceneQueryBuilder) CountByTagID(tagID int) (int, error) { args := []interface{}{tagID} return runCountQuery(buildCountQuery(scenesForTagQuery), args) } -func (qb *sceneQueryBuilder) Wall(q *string) ([]Scene, error) { +func (qb *SceneQueryBuilder) Wall(q *string) ([]Scene, error) { s := "" if q != nil { s = *q @@ -132,11 +132,11 @@ func (qb *sceneQueryBuilder) Wall(q *string) ([]Scene, error) { return qb.queryScenes(query, nil, nil) } -func (qb *sceneQueryBuilder) All() ([]Scene, error) { - return qb.queryScenes(selectAll("scenes") + qb.getSceneSort(nil), nil, nil) +func (qb *SceneQueryBuilder) All() ([]Scene, error) { + return qb.queryScenes(selectAll("scenes")+qb.getSceneSort(nil), nil, nil) } -func (qb *sceneQueryBuilder) Query(sceneFilter *SceneFilterType, findFilter *FindFilterType) ([]Scene, int) { +func (qb *SceneQueryBuilder) Query(sceneFilter *SceneFilterType, findFilter *FindFilterType) ([]Scene, int) { if sceneFilter == nil { sceneFilter = &SceneFilterType{} } @@ -209,8 +209,8 @@ func (qb *sceneQueryBuilder) Query(sceneFilter *SceneFilterType, findFilter *Fin } if tagsFilter := sceneFilter.Tags; len(tagsFilter) > 0 { - for _, tagId := range tagsFilter { - args = append(args, tagId) + for _, tagID := range tagsFilter { + args = append(args, tagID) } whereClauses = append(whereClauses, "tags.id IN "+getInBinding(len(tagsFilter))) @@ -239,17 +239,16 @@ func (qb *sceneQueryBuilder) Query(sceneFilter *SceneFilterType, findFilter *Fin return scenes, countResult } -func (qb *sceneQueryBuilder) getSceneSort(findFilter *FindFilterType) string { +func (qb *SceneQueryBuilder) getSceneSort(findFilter *FindFilterType) string { if findFilter == nil { return " ORDER BY scenes.path, scenes.date ASC " - } else { - sort := findFilter.GetSort("title") - direction := findFilter.GetDirection() - return getSort(sort, direction, "scenes") } + sort := findFilter.GetSort("title") + direction := findFilter.GetDirection() + return getSort(sort, direction, "scenes") } -func (qb *sceneQueryBuilder) queryScene(query string, args []interface{}, tx *sqlx.Tx) (*Scene, error) { +func (qb *SceneQueryBuilder) queryScene(query string, args []interface{}, tx *sqlx.Tx) (*Scene, error) { results, err := qb.queryScenes(query, args, tx) if err != nil || len(results) < 1 { return nil, err @@ -257,7 +256,7 @@ func (qb *sceneQueryBuilder) queryScene(query string, args []interface{}, tx *sq return &results[0], nil } -func (qb *sceneQueryBuilder) queryScenes(query string, args []interface{}, tx *sqlx.Tx) ([]Scene, error) { +func (qb *SceneQueryBuilder) queryScenes(query string, args []interface{}, tx *sqlx.Tx) ([]Scene, error) { var rows *sqlx.Rows var err error if tx != nil { diff --git a/models/querybuilder_scene_marker.go b/models/querybuilder_scene_marker.go index 8439dd494..55b951d73 100644 --- a/models/querybuilder_scene_marker.go +++ b/models/querybuilder_scene_marker.go @@ -15,13 +15,13 @@ WHERE tags.id = ? GROUP BY scene_markers.id ` -type sceneMarkerQueryBuilder struct {} +type SceneMarkerQueryBuilder struct{} -func NewSceneMarkerQueryBuilder() sceneMarkerQueryBuilder { - return sceneMarkerQueryBuilder{} +func NewSceneMarkerQueryBuilder() SceneMarkerQueryBuilder { + return SceneMarkerQueryBuilder{} } -func (qb *sceneMarkerQueryBuilder) Create(newSceneMarker SceneMarker, tx *sqlx.Tx) (*SceneMarker, error) { +func (qb *SceneMarkerQueryBuilder) Create(newSceneMarker SceneMarker, tx *sqlx.Tx) (*SceneMarker, error) { ensureTx(tx) result, err := tx.NamedExec( `INSERT INTO scene_markers (title, seconds, primary_tag_id, scene_id, created_at, updated_at) @@ -43,10 +43,10 @@ func (qb *sceneMarkerQueryBuilder) Create(newSceneMarker SceneMarker, tx *sqlx.T return &newSceneMarker, nil } -func (qb *sceneMarkerQueryBuilder) Update(updatedSceneMarker SceneMarker, tx *sqlx.Tx) (*SceneMarker, error) { +func (qb *SceneMarkerQueryBuilder) Update(updatedSceneMarker SceneMarker, tx *sqlx.Tx) (*SceneMarker, error) { ensureTx(tx) _, err := tx.NamedExec( - `UPDATE scene_markers SET `+SqlGenKeys(updatedSceneMarker)+` WHERE scene_markers.id = :id`, + `UPDATE scene_markers SET `+SQLGenKeys(updatedSceneMarker)+` WHERE scene_markers.id = :id`, updatedSceneMarker, ) if err != nil { @@ -59,11 +59,11 @@ func (qb *sceneMarkerQueryBuilder) Update(updatedSceneMarker SceneMarker, tx *sq return &updatedSceneMarker, nil } -func (qb *sceneMarkerQueryBuilder) Destroy(id string, tx *sqlx.Tx) error { +func (qb *SceneMarkerQueryBuilder) Destroy(id string, tx *sqlx.Tx) error { return executeDeleteQuery("scene_markers", id, tx) } -func (qb *sceneMarkerQueryBuilder) Find(id int) (*SceneMarker, error) { +func (qb *SceneMarkerQueryBuilder) Find(id int) (*SceneMarker, error) { query := "SELECT * FROM scene_markers WHERE id = ? LIMIT 1" args := []interface{}{id} results, err := qb.querySceneMarkers(query, args, nil) @@ -73,7 +73,7 @@ func (qb *sceneMarkerQueryBuilder) Find(id int) (*SceneMarker, error) { return &results[0], nil } -func (qb *sceneMarkerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]SceneMarker, error) { +func (qb *SceneMarkerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]SceneMarker, error) { query := ` SELECT scene_markers.* FROM scene_markers JOIN scenes ON scenes.id = scene_markers.scene_id @@ -85,12 +85,12 @@ func (qb *sceneMarkerQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Sc return qb.querySceneMarkers(query, args, tx) } -func (qb *sceneMarkerQueryBuilder) CountByTagID(tagID int) (int, error) { +func (qb *SceneMarkerQueryBuilder) CountByTagID(tagID int) (int, error) { args := []interface{}{tagID} return runCountQuery(buildCountQuery(sceneMarkersForTagQuery), args) } -func (qb *sceneMarkerQueryBuilder) GetMarkerStrings(q *string, sort *string) ([]*MarkerStringsResultType, error) { +func (qb *SceneMarkerQueryBuilder) GetMarkerStrings(q *string, sort *string) ([]*MarkerStringsResultType, error) { query := "SELECT count(*) as `count`, scene_markers.id as id, scene_markers.title as title FROM scene_markers" if q != nil { query = query + " WHERE title LIKE '%" + *q + "%'" @@ -105,7 +105,7 @@ func (qb *sceneMarkerQueryBuilder) GetMarkerStrings(q *string, sort *string) ([] return qb.queryMarkerStringsResultType(query, args) } -func (qb *sceneMarkerQueryBuilder) Wall(q *string) ([]SceneMarker, error) { +func (qb *SceneMarkerQueryBuilder) Wall(q *string) ([]SceneMarker, error) { s := "" if q != nil { s = *q @@ -114,7 +114,7 @@ func (qb *sceneMarkerQueryBuilder) Wall(q *string) ([]SceneMarker, error) { return qb.querySceneMarkers(query, nil, nil) } -func (qb *sceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterType, findFilter *FindFilterType) ([]SceneMarker, int) { +func (qb *SceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterType, findFilter *FindFilterType) ([]SceneMarker, int) { if sceneMarkerFilter == nil { sceneMarkerFilter = &SceneMarkerFilterType{} } @@ -147,7 +147,7 @@ func (qb *sceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterTyp length := len(tagIDs) body += " LEFT JOIN tags AS ptj ON ptj.id = scene_markers.primary_tag_id AND ptj.id IN " + getInBinding(length) body += " LEFT JOIN scene_markers_tags AS tj ON tj.scene_marker_id = scene_markers.id AND tj.tag_id IN " + getInBinding(length) - havingClauses = append(havingClauses, "((COUNT(DISTINCT ptj.id) + COUNT(DISTINCT tj.tag_id)) = " + strconv.Itoa(length) +")") + havingClauses = append(havingClauses, "((COUNT(DISTINCT ptj.id) + COUNT(DISTINCT tj.tag_id)) = "+strconv.Itoa(length)+")") for _, tagID := range tagIDs { args = append(args, tagID) } @@ -159,7 +159,7 @@ func (qb *sceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterTyp if sceneTagIDs := sceneMarkerFilter.SceneTags; sceneTagIDs != nil { length := len(sceneTagIDs) body += " LEFT JOIN scenes_tags AS scene_tags_join ON scene_tags_join.scene_id = scene.id AND scene_tags_join.tag_id IN " + getInBinding(length) - havingClauses = append(havingClauses, "COUNT(DISTINCT scene_tags_join.tag_id) = " + strconv.Itoa(length)) + havingClauses = append(havingClauses, "COUNT(DISTINCT scene_tags_join.tag_id) = "+strconv.Itoa(length)) for _, tagID := range sceneTagIDs { args = append(args, tagID) } @@ -168,7 +168,7 @@ func (qb *sceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterTyp if performerIDs := sceneMarkerFilter.Performers; performerIDs != nil { length := len(performerIDs) body += " LEFT JOIN performers_scenes as scene_performers ON scene.id = scene_performers.scene_id" - whereClauses = append(whereClauses, "scene_performers.performer_id IN " + getInBinding(length)) + whereClauses = append(whereClauses, "scene_performers.performer_id IN "+getInBinding(length)) for _, performerID := range performerIDs { args = append(args, performerID) } @@ -195,13 +195,13 @@ func (qb *sceneMarkerQueryBuilder) Query(sceneMarkerFilter *SceneMarkerFilterTyp return sceneMarkers, countResult } -func (qb *sceneMarkerQueryBuilder) getSceneMarkerSort(findFilter *FindFilterType) string { +func (qb *SceneMarkerQueryBuilder) getSceneMarkerSort(findFilter *FindFilterType) string { sort := findFilter.GetSort("title") direction := findFilter.GetDirection() return getSort(sort, direction, "scene_markers") } -func (qb *sceneMarkerQueryBuilder) querySceneMarkers(query string, args []interface{}, tx *sqlx.Tx) ([]SceneMarker, error) { +func (qb *SceneMarkerQueryBuilder) querySceneMarkers(query string, args []interface{}, tx *sqlx.Tx) ([]SceneMarker, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -231,7 +231,7 @@ func (qb *sceneMarkerQueryBuilder) querySceneMarkers(query string, args []interf return sceneMarkers, nil } -func (qb *sceneMarkerQueryBuilder) queryMarkerStringsResultType(query string, args []interface{}) ([]*MarkerStringsResultType, error) { +func (qb *SceneMarkerQueryBuilder) queryMarkerStringsResultType(query string, args []interface{}) ([]*MarkerStringsResultType, error) { rows, err := database.DB.Queryx(query, args...) if err != nil && err != sql.ErrNoRows { return nil, err @@ -252,4 +252,4 @@ func (qb *sceneMarkerQueryBuilder) queryMarkerStringsResultType(query string, ar } return markerStrings, nil -} \ No newline at end of file +} diff --git a/models/querybuilder_scraped_item.go b/models/querybuilder_scraped_item.go index 535c71f78..75a312127 100644 --- a/models/querybuilder_scraped_item.go +++ b/models/querybuilder_scraped_item.go @@ -6,13 +6,13 @@ import ( "github.com/stashapp/stash/database" ) -type scrapedItemQueryBuilder struct{} +type ScrapedItemQueryBuilder struct{} -func NewScrapedItemQueryBuilder() scrapedItemQueryBuilder { - return scrapedItemQueryBuilder{} +func NewScrapedItemQueryBuilder() ScrapedItemQueryBuilder { + return ScrapedItemQueryBuilder{} } -func (qb *scrapedItemQueryBuilder) Create(newScrapedItem ScrapedItem, tx *sqlx.Tx) (*ScrapedItem, error) { +func (qb *ScrapedItemQueryBuilder) Create(newScrapedItem ScrapedItem, tx *sqlx.Tx) (*ScrapedItem, error) { ensureTx(tx) result, err := tx.NamedExec( `INSERT INTO scraped_items (title, description, url, date, rating, tags, models, episode, gallery_filename, @@ -35,10 +35,10 @@ func (qb *scrapedItemQueryBuilder) Create(newScrapedItem ScrapedItem, tx *sqlx.T return &newScrapedItem, nil } -func (qb *scrapedItemQueryBuilder) Update(updatedScrapedItem ScrapedItem, tx *sqlx.Tx) (*ScrapedItem, error) { +func (qb *ScrapedItemQueryBuilder) Update(updatedScrapedItem ScrapedItem, tx *sqlx.Tx) (*ScrapedItem, error) { ensureTx(tx) _, err := tx.NamedExec( - `UPDATE scraped_items SET `+SqlGenKeys(updatedScrapedItem)+` WHERE scraped_items.id = :id`, + `UPDATE scraped_items SET `+SQLGenKeys(updatedScrapedItem)+` WHERE scraped_items.id = :id`, updatedScrapedItem, ) if err != nil { @@ -51,17 +51,17 @@ func (qb *scrapedItemQueryBuilder) Update(updatedScrapedItem ScrapedItem, tx *sq return &updatedScrapedItem, nil } -func (qb *scrapedItemQueryBuilder) Find(id int) (*ScrapedItem, error) { +func (qb *ScrapedItemQueryBuilder) Find(id int) (*ScrapedItem, error) { query := "SELECT * FROM scraped_items WHERE id = ? LIMIT 1" args := []interface{}{id} return qb.queryScrapedItem(query, args, nil) } -func (qb *scrapedItemQueryBuilder) All() ([]ScrapedItem, error) { - return qb.queryScrapedItems(selectAll("scraped_items") + qb.getScrapedItemsSort(nil), nil, nil) +func (qb *ScrapedItemQueryBuilder) All() ([]ScrapedItem, error) { + return qb.queryScrapedItems(selectAll("scraped_items")+qb.getScrapedItemsSort(nil), nil, nil) } -func (qb *scrapedItemQueryBuilder) getScrapedItemsSort(findFilter *FindFilterType) string { +func (qb *ScrapedItemQueryBuilder) getScrapedItemsSort(findFilter *FindFilterType) string { var sort string var direction string if findFilter == nil { @@ -74,7 +74,7 @@ func (qb *scrapedItemQueryBuilder) getScrapedItemsSort(findFilter *FindFilterTyp return getSort(sort, direction, "scraped_items") } -func (qb *scrapedItemQueryBuilder) queryScrapedItem(query string, args []interface{}, tx *sqlx.Tx) (*ScrapedItem, error) { +func (qb *ScrapedItemQueryBuilder) queryScrapedItem(query string, args []interface{}, tx *sqlx.Tx) (*ScrapedItem, error) { results, err := qb.queryScrapedItems(query, args, tx) if err != nil || len(results) < 1 { return nil, err @@ -82,7 +82,7 @@ func (qb *scrapedItemQueryBuilder) queryScrapedItem(query string, args []interfa return &results[0], nil } -func (qb *scrapedItemQueryBuilder) queryScrapedItems(query string, args []interface{}, tx *sqlx.Tx) ([]ScrapedItem, error) { +func (qb *ScrapedItemQueryBuilder) queryScrapedItems(query string, args []interface{}, tx *sqlx.Tx) ([]ScrapedItem, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -110,4 +110,4 @@ func (qb *scrapedItemQueryBuilder) queryScrapedItems(query string, args []interf } return scrapedItems, nil -} \ No newline at end of file +} diff --git a/models/querybuilder_sql.go b/models/querybuilder_sql.go index 1f1bf640c..d3f3770be 100644 --- a/models/querybuilder_sql.go +++ b/models/querybuilder_sql.go @@ -162,7 +162,7 @@ func executeDeleteQuery(tableName string, id string, tx *sqlx.Tx) error { } idColumnName := getColumn(tableName, "id") _, err := tx.Exec( - `DELETE FROM ` + tableName + ` WHERE ` + idColumnName + ` = ?`, + `DELETE FROM `+tableName+` WHERE `+idColumnName+` = ?`, id, ) return err @@ -178,7 +178,7 @@ func ensureTx(tx *sqlx.Tx) { // sqlGenKeys is used for passing a struct and returning a string // of keys for non empty key:values. These keys are formated // keyname=:keyname with a comma seperating them -func SqlGenKeys(i interface{}) string { +func SQLGenKeys(i interface{}) string { var query []string v := reflect.ValueOf(i) for i := 0; i < v.NumField(); i++ { @@ -231,4 +231,4 @@ func SqlGenKeys(i interface{}) string { } } return strings.Join(query, ", ") -} \ No newline at end of file +} diff --git a/models/querybuilder_studio.go b/models/querybuilder_studio.go index 0c6f39deb..cb7c91f3f 100644 --- a/models/querybuilder_studio.go +++ b/models/querybuilder_studio.go @@ -6,13 +6,13 @@ import ( "github.com/stashapp/stash/database" ) -type studioQueryBuilder struct {} +type StudioQueryBuilder struct{} -func NewStudioQueryBuilder() studioQueryBuilder { - return studioQueryBuilder{} +func NewStudioQueryBuilder() StudioQueryBuilder { + return StudioQueryBuilder{} } -func (qb *studioQueryBuilder) Create(newStudio Studio, tx *sqlx.Tx) (*Studio, error) { +func (qb *StudioQueryBuilder) Create(newStudio Studio, tx *sqlx.Tx) (*Studio, error) { ensureTx(tx) result, err := tx.NamedExec( `INSERT INTO studios (image, checksum, name, url, created_at, updated_at) @@ -34,10 +34,10 @@ func (qb *studioQueryBuilder) Create(newStudio Studio, tx *sqlx.Tx) (*Studio, er return &newStudio, nil } -func (qb *studioQueryBuilder) Update(updatedStudio Studio, tx *sqlx.Tx) (*Studio, error) { +func (qb *StudioQueryBuilder) Update(updatedStudio Studio, tx *sqlx.Tx) (*Studio, error) { ensureTx(tx) _, err := tx.NamedExec( - `UPDATE studios SET `+SqlGenKeys(updatedStudio)+` WHERE studios.id = :id`, + `UPDATE studios SET `+SQLGenKeys(updatedStudio)+` WHERE studios.id = :id`, updatedStudio, ) if err != nil { @@ -50,33 +50,33 @@ func (qb *studioQueryBuilder) Update(updatedStudio Studio, tx *sqlx.Tx) (*Studio return &updatedStudio, nil } -func (qb *studioQueryBuilder) Find(id int, tx *sqlx.Tx) (*Studio, error) { +func (qb *StudioQueryBuilder) Find(id int, tx *sqlx.Tx) (*Studio, error) { query := "SELECT * FROM studios WHERE id = ? LIMIT 1" args := []interface{}{id} return qb.queryStudio(query, args, tx) } -func (qb *studioQueryBuilder) FindBySceneID(sceneID int) (*Studio, error) { +func (qb *StudioQueryBuilder) FindBySceneID(sceneID int) (*Studio, error) { query := "SELECT studios.* FROM studios JOIN scenes ON studios.id = scenes.studio_id WHERE scenes.id = ? LIMIT 1" args := []interface{}{sceneID} return qb.queryStudio(query, args, nil) } -func (qb *studioQueryBuilder) FindByName(name string, tx *sqlx.Tx) (*Studio, error) { +func (qb *StudioQueryBuilder) FindByName(name string, tx *sqlx.Tx) (*Studio, error) { query := "SELECT * FROM studios WHERE name = ? LIMIT 1" args := []interface{}{name} return qb.queryStudio(query, args, tx) } -func (qb *studioQueryBuilder) Count() (int, error) { +func (qb *StudioQueryBuilder) Count() (int, error) { return runCountQuery(buildCountQuery("SELECT studios.id FROM studios"), nil) } -func (qb *studioQueryBuilder) All() ([]Studio, error) { - return qb.queryStudios(selectAll("studios") + qb.getStudioSort(nil), nil, nil) +func (qb *StudioQueryBuilder) All() ([]Studio, error) { + return qb.queryStudios(selectAll("studios")+qb.getStudioSort(nil), nil, nil) } -func (qb *studioQueryBuilder) Query(findFilter *FindFilterType) ([]Studio, int) { +func (qb *StudioQueryBuilder) Query(findFilter *FindFilterType) ([]Studio, int) { if findFilter == nil { findFilter = &FindFilterType{} } @@ -103,7 +103,7 @@ func (qb *studioQueryBuilder) Query(findFilter *FindFilterType) ([]Studio, int) return studios, countResult } -func (qb *studioQueryBuilder) getStudioSort(findFilter *FindFilterType) string { +func (qb *StudioQueryBuilder) getStudioSort(findFilter *FindFilterType) string { var sort string var direction string if findFilter == nil { @@ -116,7 +116,7 @@ func (qb *studioQueryBuilder) getStudioSort(findFilter *FindFilterType) string { return getSort(sort, direction, "studios") } -func (qb *studioQueryBuilder) queryStudio(query string, args []interface{}, tx *sqlx.Tx) (*Studio, error) { +func (qb *StudioQueryBuilder) queryStudio(query string, args []interface{}, tx *sqlx.Tx) (*Studio, error) { results, err := qb.queryStudios(query, args, tx) if err != nil || len(results) < 1 { return nil, err @@ -124,7 +124,7 @@ func (qb *studioQueryBuilder) queryStudio(query string, args []interface{}, tx * return &results[0], nil } -func (qb *studioQueryBuilder) queryStudios(query string, args []interface{}, tx *sqlx.Tx) ([]Studio, error) { +func (qb *StudioQueryBuilder) queryStudios(query string, args []interface{}, tx *sqlx.Tx) ([]Studio, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -152,4 +152,4 @@ func (qb *studioQueryBuilder) queryStudios(query string, args []interface{}, tx } return studios, nil -} \ No newline at end of file +} diff --git a/models/querybuilder_tag.go b/models/querybuilder_tag.go index a53d9eba7..87209eef1 100644 --- a/models/querybuilder_tag.go +++ b/models/querybuilder_tag.go @@ -6,13 +6,13 @@ import ( "github.com/stashapp/stash/database" ) -type tagQueryBuilder struct {} +type TagQueryBuilder struct{} -func NewTagQueryBuilder() tagQueryBuilder { - return tagQueryBuilder{} +func NewTagQueryBuilder() TagQueryBuilder { + return TagQueryBuilder{} } -func (qb *tagQueryBuilder) Create(newTag Tag, tx *sqlx.Tx) (*Tag, error) { +func (qb *TagQueryBuilder) Create(newTag Tag, tx *sqlx.Tx) (*Tag, error) { ensureTx(tx) result, err := tx.NamedExec( `INSERT INTO tags (name, created_at, updated_at) @@ -34,9 +34,9 @@ func (qb *tagQueryBuilder) Create(newTag Tag, tx *sqlx.Tx) (*Tag, error) { return &newTag, nil } -func (qb *tagQueryBuilder) Update(updatedTag Tag, tx *sqlx.Tx) (*Tag, error) { +func (qb *TagQueryBuilder) Update(updatedTag Tag, tx *sqlx.Tx) (*Tag, error) { ensureTx(tx) - query := `UPDATE tags SET `+SqlGenKeys(updatedTag)+` WHERE tags.id = :id` + query := `UPDATE tags SET ` + SQLGenKeys(updatedTag) + ` WHERE tags.id = :id` _, err := tx.NamedExec( query, updatedTag, @@ -51,17 +51,17 @@ func (qb *tagQueryBuilder) Update(updatedTag Tag, tx *sqlx.Tx) (*Tag, error) { return &updatedTag, nil } -func (qb *tagQueryBuilder) Destroy(id string, tx *sqlx.Tx) error { +func (qb *TagQueryBuilder) Destroy(id string, tx *sqlx.Tx) error { return executeDeleteQuery("tags", id, tx) } -func (qb *tagQueryBuilder) Find(id int, tx *sqlx.Tx) (*Tag, error) { +func (qb *TagQueryBuilder) Find(id int, tx *sqlx.Tx) (*Tag, error) { query := "SELECT * FROM tags WHERE id = ? LIMIT 1" args := []interface{}{id} return qb.queryTag(query, args, tx) } -func (qb *tagQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Tag, error) { +func (qb *TagQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Tag, error) { query := ` SELECT tags.* FROM tags LEFT JOIN scenes_tags as scenes_join on scenes_join.tag_id = tags.id @@ -74,7 +74,7 @@ func (qb *tagQueryBuilder) FindBySceneID(sceneID int, tx *sqlx.Tx) ([]Tag, error return qb.queryTags(query, args, tx) } -func (qb *tagQueryBuilder) FindBySceneMarkerID(sceneMarkerID int, tx *sqlx.Tx) ([]Tag, error) { +func (qb *TagQueryBuilder) FindBySceneMarkerID(sceneMarkerID int, tx *sqlx.Tx) ([]Tag, error) { query := ` SELECT tags.* FROM tags LEFT JOIN scene_markers_tags as scene_markers_join on scene_markers_join.tag_id = tags.id @@ -87,13 +87,13 @@ func (qb *tagQueryBuilder) FindBySceneMarkerID(sceneMarkerID int, tx *sqlx.Tx) ( return qb.queryTags(query, args, tx) } -func (qb *tagQueryBuilder) FindByName(name string, tx *sqlx.Tx) (*Tag, error) { +func (qb *TagQueryBuilder) FindByName(name string, tx *sqlx.Tx) (*Tag, error) { query := "SELECT * FROM tags WHERE name = ? LIMIT 1" args := []interface{}{name} return qb.queryTag(query, args, tx) } -func (qb *tagQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]Tag, error) { +func (qb *TagQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]Tag, error) { query := "SELECT * FROM tags WHERE name IN " + getInBinding(len(names)) var args []interface{} for _, name := range names { @@ -102,15 +102,15 @@ func (qb *tagQueryBuilder) FindByNames(names []string, tx *sqlx.Tx) ([]Tag, erro return qb.queryTags(query, args, tx) } -func (qb *tagQueryBuilder) Count() (int, error) { +func (qb *TagQueryBuilder) Count() (int, error) { return runCountQuery(buildCountQuery("SELECT tags.id FROM tags"), nil) } -func (qb *tagQueryBuilder) All() ([]Tag, error) { - return qb.queryTags(selectAll("tags") + qb.getTagSort(nil), nil, nil) +func (qb *TagQueryBuilder) All() ([]Tag, error) { + return qb.queryTags(selectAll("tags")+qb.getTagSort(nil), nil, nil) } -func (qb *tagQueryBuilder) getTagSort(findFilter *FindFilterType) string { +func (qb *TagQueryBuilder) getTagSort(findFilter *FindFilterType) string { var sort string var direction string if findFilter == nil { @@ -123,7 +123,7 @@ func (qb *tagQueryBuilder) getTagSort(findFilter *FindFilterType) string { return getSort(sort, direction, "tags") } -func (qb *tagQueryBuilder) queryTag(query string, args []interface{}, tx *sqlx.Tx) (*Tag, error) { +func (qb *TagQueryBuilder) queryTag(query string, args []interface{}, tx *sqlx.Tx) (*Tag, error) { results, err := qb.queryTags(query, args, tx) if err != nil || len(results) < 1 { return nil, err @@ -131,7 +131,7 @@ func (qb *tagQueryBuilder) queryTag(query string, args []interface{}, tx *sqlx.T return &results[0], nil } -func (qb *tagQueryBuilder) queryTags(query string, args []interface{}, tx *sqlx.Tx) ([]Tag, error) { +func (qb *TagQueryBuilder) queryTags(query string, args []interface{}, tx *sqlx.Tx) ([]Tag, error) { var rows *sqlx.Rows var err error if tx != nil { @@ -159,4 +159,4 @@ func (qb *tagQueryBuilder) queryTags(query string, args []interface{}, tx *sqlx. } return tags, nil -} \ No newline at end of file +} diff --git a/models/sqlite_timestamp.go b/models/sqlite_timestamp.go index af0e7b1b2..b8c84f70a 100644 --- a/models/sqlite_timestamp.go +++ b/models/sqlite_timestamp.go @@ -18,4 +18,4 @@ func (t *SQLiteTimestamp) Scan(value interface{}) error { // Value implements the driver Valuer interface. func (t SQLiteTimestamp) Value() (driver.Value, error) { return t.Timestamp.Format(time.RFC3339), nil -} \ No newline at end of file +} diff --git a/packrd/packed-packr.go b/packrd/packed-packr.go index c47ad4813..4590f4279 100644 --- a/packrd/packed-packr.go +++ b/packrd/packed-packr.go @@ -18,6 +18,7 @@ var _ = func() error { "0939e2ca0d9a9122b32ed1fc564c367c": "1f8b08000000000000ff00d02f2fd0774f46320001000000002fd0000b0000000078d000002f7d0001000000000000000000000000000000000000000000001c54065600936a0a81c224819a61013602240383540b816c000420058612078c061b5a6375861c6c1c0038f65e3aa26ad595fdffa7249531b60fd93f40b2cc823294e1c25098cee8853cf75930ea351c7ca5b5823d2f8f38c5f70e19668abc2126880962829850253e88c74af6493a450bc9d59aed376ee10e428a890a6adac1a8820ea9eebe6a7ff0d01fdd4826f5774eb37f8f171987ac4e8652f2f0fff7edf7b9b761a2286e85ad008759138846cb1f601460c2ad04121efefff8d75b5ccbe69a5e9bdee796278011093b966ac64f8a39cbc3f36efb3fb22ee3222028882808a8a02604381ba2a0906298e24e7185b69e23535b8e89eba166d34cad6d63fd34b39eb69e6daddf7c6adab6bd8480906d0f6d476364dcee302a7c1ffef19e2f72cc8114a2689b54bbf76528a7d64cfb1bb5bf91c6b1db45639c02b3465aa0c4bbeb23787ca4aff41db0a5c082c852602154003614203032e416200600a11fac652bab510ea1a6fbfcee7efffa10c2902e103681f62abcba00e87f00d0801d2000b01d5538424e777f03b8e0265f5c239bab4bda9ffc4dcd1251e1894f8e84496c620f5eb8012a34fa61705ec8230ec24c67ff098e90de8f4da7b61078010f4e23d99766bac1ee2faa350278a0bf1aef35be3750f604fe5fb6ae03a449c3833cd0c4763ccc328b2d61ccb5ff5f9d5f2d9a1033339b72fd43e7b3dd6e1b62b93df749029e8400918c90f936c1df16d8ff5838021384085fc899f99f492121f3139e8427e4d86ec8a90eb19ea2dc728b72bb6ea15cc96eda8ae06b3749ce402b788cb5fe17b33dce8c7ae8a61529ea88882678e655ff7c47505a16cc06b1fcbe9a6079c49f374c5036f7411d6ee328f797b02f7be85306b70a294f63728da1a9b8cd700036e4e37f355480c464b079696b98bb217f8ffa2c1930b0f6940bcdc21de1f942a60cc53954f6d453de1d90ce7448e69ef6fb42651f005c4b3044d5f7f67d5edfc0c8d8529c6ccb2cb75a892a355ab4e9b0db05174d7845157e7afffdfdd4070a261629a56021e68a30df02559a1d70c935f73cf6d2d70f3f3ee25b2aac8412cb6b657535d45d6f7d9dee6c371bedcd106b5cc276eec6919f50c21431f1aa64473c1832c6c2844b90ae52d3d3d0996421d1d539ad288ef7671a0e62bfc7e6518abf66ab581f6f4cb6c61de18eb15d5dfb0f1e3efa347436f937b955ff375a3ce8279e642fff2c1e60f3fea378bb37c96add6bfe79638af2febebc8abb8d9af989f1c9b1aacbdb86adb8c5b3c2eb81c47ae6e96ec15565566e4e4fd3cbf3d37e766db28eeeb6cef6e696aed6cde3c18398ead2c3a38792a5e99199e1d9a9d18b746932a4da293b799cab0f087a5f5ef9fafeb9795b2b0a098b881adafb941245d7f940c6efeafc87501836090def09821f44875ae2c231f1618c3c2007cd865d524207c5c0578a854a8a8307ca866e5a0679683934d22a98a0d5304e25504155d04435f08e5ae080daa08d3a608376c022ed8405da054bb41be6e902b4d0203cd14578a309e8a25770449f201b7d872d9a827ba64ca86678615b9864269c320bf6590ac5ac843b0e86330e812a0e83679e0bcd1c3e438cc53c04e51c01659c3083df623e821e4e872fbc003e73257ce22ab8e02628e56668e703908bcfc0109f85513e07037c1e86f9020cf2bfd0cb83d0c71761842f413f5f8343be0737fc18a6f8255cf257c8c23fa055e0a15ea8e04aa8e15acc810f220cea846e86df220ac18a8886591103ab221666441cac8978581609302712e151e44021910b05c4322822f2209f580127622534883ab8150df0511c8775d10d9da21752883e48254ec3777106b6c559d811c333445ddc4033d0e2269a8116a3085ec51b38e45b12c05e32801ac913a451c933a453c90b6450c92b6452c9074c4b3ee1fcbf7c2c8b9fc0dffdb5fc4b79cb7fe7948d2f756410e942da7a73a4059cf5c41538e5e69340f4c5223b67a25134d6f782c8211ce5cb0618d1442bb014909497350e6ba35311c5983658e74134214096d673a2a8ace9933900742128e520aa4c2794958da5db9973db3a553b92992d459118be4c4cdc1d6f26bba7b6bbfb840809e066de0c82c84bc49c29a58eed356d50254b19b4ca3566a14a2a458f0ec5fba069548d8d2f151ae17730e96a3298d2143ce3261413ba70bc13b2925be301e6998c44c385d69f432e5c5a111bf9ae5e104ca592ecce4886acb67082269d5eebb54e3a67c74bda6e745804dbe7c24d18dfd79e8e6e866952a41c2251be94faac5aa1b3724e7c8e043d6508115776e5b279d3e52cc38e5cac20f9fa09640f9778a1a4b177cfc45591523ae38ca00f3ebcf6c34209e9c1e6b1b513b467407b02a6930b789623756a2e8545a266662281fd1d4fbe2623b074bf7433ed11d71b6235e838cf154ad5387310c47e835681de9fd62404110841521434010d7794681904a22a9cb4a9a0027a91be73e2a06166d8b7dd9bd60de71605cc105ef8fc4032b2a3530aebdb78a70975f85ed2885460412ae435b905e90e03f63aeddbb41c94a37291b58063aea4658dde974eb7cbb77b76772077fa534ede3cb93bb0db3dbed59d01a84ca5dc25a6940a76edcacc80100a2f07b1056753ca6117d10c61b30fe4c091f10613f5e55a8919105bc5831dc0afcec23a131050058d1982bb66034228765a26d8012c76d9a9849a341d8f6405ffd3fdc0cab530c309e09b0aa5ccbd0de959629e2b311b35fcc961a189bc07a5ffea9c84923a2cc66af0a46a0807e798a5fe378b3f540569ffe83efd1df0507b88d7b83a963d6f4438a2f9175d3e8039f9f198abc4e9207ec167ea9fcfc11cadebe8a9b9040386feac9dbd52a8e45d544bce9f32e098ebde05297a3a5d35aa484100f7fa81d770bc42313ea624787ce457aabae89960aa5e556ee331583ff72f57708282a6d04ba670553832eb7cb632348ca6d8da44619546de0ac044d51775e6685ba22e5d759f5a1c4f8d5ba62cd543357167438b9d48dd9c504fad8c13c9c1703585fce58b3b3c2ca4ffcae5b46e72e9caff2cbe78895b3984cd1f07cea569b2c1838970109608565065f51d8fc9a635abee789a48dba8b6e332115d66d6666e2d2a4a238bf2e61a65a95991e761e160fdf22e5c655673378adde61ec6c7a468eb5e2ab0f9bc105a24b79c1bd7044964abc8a46c5f8accbe70b9c51c61cbf8a65643ab85dc73615926642e8783014a86e9ec50c394db7314d7b3d4e73879f0ec500a654fd6ab2595a5458b89d559aa5fc7827d7053823e4eafc6b0617b60a6f2900cea8292a5ccedcbc5e5add9fd421afa077ec3dc99e7ee9ca7eb66ac91e9934f0c2b71523b733bd45e5a8037e1df2c417a7abebffdf1e3b8f292fe7f10b7cf3b6a531f7466dacb55defed1d9b95c4d1a6ba9367ed2bd6018ecb95ecfece174f7b5f310bf027b4ef7cd9979a4db5fa0a69e4f2411daac3d38f3bcb43a66758663cfc823a6fcbac2b6ee2456c7cdecb47959202cb579a8f267c8549eaccb79a0e66e5939d094eb62c565a4afeec9b9d764a5507d69a4a5486f58b58e62154924d7df4aecff2ac07c77edc93e83f94119ce05a26336363021754f8f7a737beaf2e7150d92821eb2c3bed5a8331db87a8f84b92b089b08627eaf0769c16c666e6d5fc7d22febbaf9e5fefaf8bdbc549776f39aa1a55ae414591577af0462729fb511161e24626624764bbca6becc1ca49e613dc1815316c38610a420a54a3b6a9861be6eae55b5be77042ceb987598d6bf0457c0f39d04abbfdff5f753a77ff8fe85f52f12b3d45eee295659df98eeeea43cd28b4c683f0a492a90d7429714a33dcaadedf7760a1b185c2ef8deddb9eefaa0915b7a7a67aed29fa09a9534004d7be638366d5115457a576050341d3c39027dc0e5553a00109cc498b6bf0c791008015dda9c71e7f2679dc88eddd00a4c041453e428822913410c6b0a336d7f2a1b5d971ce4d1d6841fab1dabaac6c5444c5cda23a5d69cce729159ea25ee92ba14665954819db85ae23e415bda34aeeedac9985a0b7052e095d18e3503154fe7f2228f04a6d2b8462a6464ae4086b8e1f7a2919ae11f9102c04bd0d423b56add6b56c422d8eff47034cac3294d44016ead9dce2de7180f89ac93a50a0f5d69ebbfbf4e1866cc742d2c6cddffb05d624585a14e139a0c79cc942a64df04bc35d88e40a71f578da998b40542174dffc54de145f3b28f214814255b19fee8270c8d21a2e5de6c1c882ae520a722a684fbd0720804b6a656cba21c6911d2ad52f3d2cf9004705b5d2190fc632556acc4db9f39848a5d903e044923dccd41314091984766a05b0cc23c34a51d4b957f23742884af92c4713afa4da663ca4b6a9c621a60bd813a4c8d6d109c2165cf47315a28b879f261d8f3c62174a0a51a0d9dce89cef6bb47583b24d9f3a70779ec37ffe8f7b32b7fb2b575f2f75e2fc577f8f9ee6e3a7ad834f78d8f30e323fd3cbcfcb4ec0267cb27f7a78fdffbe400d59d5b7f44b979043f695729d699fa037749536a8618a1a820ed6494f0a842ffa454537953c468d27b038c33624790f3c6ce30950202d1f306c2910d0ad95e4819d9e2a76e36adb638b2ccb10d5a90d9c5a2b7b89c8be6a7811be671f0d35505d314a3ab907a4bb7723a2a759b5da73853e3b0492adc955c1dae15e10d8e412edeb327bf6c69320e8b3bebd0f582192034bb486f0d458670e019227599d19394852a8d1d9946d9de4318095f224b3623f5dead09109323ed386bb20a2c866182190e3c03e0bb8a1160bd3d907dac6730e3d957402192c4a7713d26b2a070950fb5d5f6a79494d9bcb60527fca52dcb59e0b7cae5089b5027ec90556407d9a650df35934962fcde5783a92634cf7d90be00543c6ff6153e9633645292622a5739d86b29e725c0302ba60d954aa42026c9161ce7e8ad5e8d261aa1bc429a638e62568505c50d5943f9c8929850b549277bffa19cd224b1e5f64d1df5e3781b6f2708ab5e4868307beeac900ec9df0338070602b28e957c979481cbbf0403d23b40655c0957790d720e5cf78932c86ab965f70d07e9dd76b18821d3ed77ce3005e382ba0dc61d00088a26c032e469a29c72cec974882b304c737d2edd006fb12822ac2636f52b0b5564a2bed33b122934eaf0fc984e9fc7637a57d04c1f1553a71a3db85121ce95674a9473e97d70ac1794eab2ad09d6a261234d43155535a559998c98f11cacabc168be9a294f7e3b52a2c64dd1e7a4d0e68cda9ab8bac1f1fc713b1cf2ad21a3492f5329af4340902c8bb18ecdaa8cfc21d5a1c96ba8f9355ccee98677ad184ce79ce52a99923eb8d179014e5a50ca97401964d8d003a42b76411c4c3c56cc3582c071374665b0ff8f14a3f5de35845a8c76c75dc67b51f7934e14faf9a9ebe22ed5b5aea5bac287368e7f289ea1c51a0c33cd6a051aab7c486bc9f62b0164e4c0ba917a30f9a9d65e582ad4296f99a8c8135288008f9d79e18b325421ab1d523210b48fde08f50294faae1d0f3cb63a87e500f1c494c1a9db0d478d747816ca40b14bef15eb8171c1cdadeacc31a899153228ef90ee0caa584bcbd79adaa3546b9bb33325997d519d41d007f330ca0587b23aa5a70de56891047736b93883ef70def4fbaee58dbf05e7e2fbf71e65f31fbbaf6ff9736c3577dfe8cdfef42a19bcb71b3d3ff8058045c9e88a31b7262f19ae9dcc9b544a1bf3450bfc587572ef87212dcc582b844ae1bc693958d48aecf6b7a8b1a8736ca8d6a5af8632802b6b8c277448ee0ab3a1108ef3a1db0162d9a69401fdc0ecd1f152103e88a09c89403f93b9f4ae1a75418dc91c832e6ab10eb57da8d63d098bc5f9adcbdd91f135adb56dc0b8f5f3cd8715a95869a1b2b4e3fa60c3d487fe071e14e2ff7290e5d8d0446e3c37d9c1c110351ae1008f686f8a2cc8fc6461aa3037d813ef88b7852426d3dbef276738e876f732160932b5616eb043f245ddfd972ba15bb9b4ec98ea757fdd9bf4b26fe7afcc58c6c5c8295ebeeeea975ad6d0c559bb0198e10ae11af4adcdb06f0f8e51f54ce5ae34dd9777bb23c369dcca212f2f66350f4e78d9eb330530f30abd3037d4b261bf63b4678d614a8a5bf8509bac8d077a6ded8b3eb0339aba111575d64a2a3324260d2ba6f4f9d58a3e3356e6b595b5594db5b46f4eaf7ca4adb642e67b33a07967fdeeb4b3fc9bf5fb55f7fa9ff61fd7a88550218842308999d03441ea9f820187fd752282690f0009e2b35562cc11ec368c7c53717a63d41d1cf027d3e27cbf7f0586d4e3a9d945b4981f292d77811dbf3fdd4512a26ae6c52836f666050514fd0f2497a5f335ba6a72e5eaa5a6f4ac988ac3d4b7eb41ef82405933bef25031ca9b8954799c6d97f95be47005ef398d40cbda4ba1b53ef0f41b08a78c0145e4f283a069f4260dcafb432a73ba64e45c81d4dd3929dc100ae188408036df7dd212d0a91302adf25185a0dc5cfefcd3b45d0ac6274a147067a9708472c5485cf8d24f17bf8767a9614a21b06e34e6c054ab899a57de3044001c578b23276d7ac7a8b4f3f2f974bc40f12eb55a39566498695090c84a587cbba0440e6639c6b4612148765db1ab3315bdd0d8042fbf7ec07738f20a95159bcd0c030119b75aa3eaf983db008c323d47cc663369386fac1bb7fe54d29295fcdf10616fa6dbda3c397203706f57b83497f788bc7e02706719bb8e0eb7360f0e249ba2fc3cadecc4920973ca92ca4c1c5537423828bed9f20ae5eed26e926e89f4223cdded1f13414bbdd91bac1a27a4bea49b944b5f68c7cd3d78f1164a37c3ba0e6144bf1e82b6c837e8e3e58ca914947229c2d44dc67ec7b64a8f4a9c9854f74a2dae1ed31120f746865dbe0413245b74c981ee4180707525939a0173be1491da668ac6e5b5ff190ddd344c136a8a78d6e2c7e8637fdefcbf1015a2e0544679ec6b4626629e4e8d30c7a5b4b1f27e3094445c87345bf98e0afa552d572eb43e389b85c03b5994924fa540f786d42707a4aded175e464eb852fb4464b1ba4b627e8b1cc49b36d5227b64d8c11f31aedcfd4a2dbc9759cbc4af9476523cea30f5639e04da6ec1f0461644e6ba0dfe5269d727de5ce5c46e61933dc7a3d9c2a73b83c5fcfa91d67c79f7c7ede9e2d15d7c1cef3c16cee43eda132fd4e793a1bbede281176566d7702aef4f6a93c32942ddbaa4a38727b092240abf3bee364dc815ab6750f2ef8ba07c3784ef378a58e5edc9aad842c3c81af6c270aac5c6c0141c46eff02d53f91a3e81b7296edb4a1afecd3ac63d2479699a636b5a98ddc1af7c4c5813a5b0b4a0bcc3b859c8fbba14cc8458d6d92a0ce743b29e55713462de9ab8435c6b7dac16eac7df0a6cdbd0e3bb71e0477caaed9fae39fb6bed9c6cad972da0e7f628774aa81e4274284703983e041c053ed2e2ddbd890be4ee8cf75ee9d53b2c0caa2c377b8fcb7aa3c5e87fb7c0a0d271eb25de01ee93aac51be5db500d539c7dc5f991a2433d31becdb96d78d62865aac4b969b1be7c40e62a3b6eba07b68533a0bd551e6fca9982a20b109793a29af165b692c75c6d10f352611a7806108fb1d106b400bf194d4ceba3c9b90e1210d3a81ab923f714c9105244cb8a5e255f991ddf065af2a1342a7e0c3f6ccc4625fb7ef2491e7ebfcde7932f182a8e8de3c40ac463ab0dbb0e0d21b9f7a14cb4014dc634aa84521d2527ab6db912ab61e2ea5db3b3c359bb8e3e862da12e68cbaaa625fc18987b143981813955d19e1358e58c08ecf74af0f44c58427b82e71254336a469e029ba44b4de5e1a5d5a34cc22af2b2763c00ea5784265787d31fe88548e45139e606806cf034686dc9da4fab0fbe01f0ca34513a79a92951a84a666f69fc73540824da218d8b97ac13d41c281311ab8c19cd639c49bcb35adaa0ea32b0ecc220d14ee9a5b49b96e5a9ba5276713e7214a098d13cdfb14bd520553b0bf9c153cb63f0442e934bc4c73c99ebbd6211172ffdc0c34be8b7ed1f4ef62a4ed6578ec75f7147eb2d1468e22b3404f6e485742f9f7aea0b790e4c6419ec58e3cbdf8466959f70abb1a83f1abfd483f3354b1e6bc25805b4fd1a131ceecff29b0ed3faa8fb4c918efcef5e0428761328248d2bd5618e5a5aa9d7ab342b054722ddd0f0d28955fc01fe731fda09dc1bfcbc3c20ee040d6dc882b215972f9722672b0780b5ed612a1908472dea51e38af7d5ef0fbe049b4ceba361bf58466d959538df3a625a9f68a96bb22b428ad021a4c0541c404b8b85b735056311218cbd2e363448f0bc9010295e62d0a086a7fe5acac34ba3a478b0aa006d40333077915473d55d313cdad6307e8d266a017635b30e02a679ab8104cf8d8a4aa90ff00c7ddec97f7205a2c82260f5bb7f6b1d9f92cad5c2e9e892428a93d9da444b75f15a710c90b8ffb6190c97f9230b7a7a48b9e1a1f93b44a5a4f03e6b29a9514f49cc0d024dd1a4a8d414f8cf2c252a296fdcff497425b8c956171d3a95fa196a932687a3475d5485b01e653c5acfa89d04015450dbbc5051fa99d228299edb50bfbf28bf6106095e1a1fcfc34bf77549f0c0d42e7e906a4ad601794bf77549f1bcf8789ddd767f435dc97a8495006d7138334a16c50c8fdbc9b9ca1c2d7fdecc958f36a0f7707c2d49d6edc68fd1acd27131823274b314981d68039a83ebfe1d2892e078b6bc2630d4dfe35abbe01c5778c590acb795b94ed0fa6813890712f5c7342eb693fdddb815c593f2f797da08f81eb8bb91c0c8b5225ac929fe03f73dae764ea7601037983c9ecc6f838d569b20c24d47ee3eda0ab0dbe7967b8725f9f23981ffe93747bda05c0cae0d739b3f108d09e29d14d13b72354915fba66749c7640b53943914de53dbd98e4ec76e3b6f6adee47cfb58889334b6d3fa04d6c16451d11b2181a70bcc466ad792a7876546a0fd9fa89a0c62b74ae5eca37718e4ac1dbafcf52c89401a71772c22c1ef567351a283ddf7a7d9b158d9ed50a1f701989958d47cab5d5de7e337cf9dc7977f68bb2e73a27ff0a5b4148f3ddfb1605f7d5ed4dfeaf9d45df1d5f2bd3935368a0529d58103ae8e2731be9344562a38b2463a46db7fbdd7090fd0265cbd30ed78f1ad32664228a8c109acd17fbfe9a258fc183ef6f25738a4592ec72328660a42a88757967ecd17380b3efb6bfd3f0b786fe957b8582b16af4971dc91dfa6f48ae75b87fcbb47da28f5a36201a93d69fa0788f846744b1f21356bdf3e40d74417421a9a266829e815d58fad6b047484c05c9d8ed1f5023b77df5c5e2a683298a56b314df5bf592bb4afd44c417e4c4ece456ebd82c1c4e1a6f7517171d301a683ae6c629968536f2f462ec7fcc4757171dcb79bdef6ad036f99b3d2e66eacf8d12fee7fd1b2312924dbc106aa309d18bac8a6aa343b8524ff9d2bdee5ce74df25dee0131e4041b0037838c9f02d2f42b97f54005576d0435ea3245cce60398e40d2c8ab8169fe42f7344db5b8dbffd5d22dae4e0b7313724ee626b44cf68b0f7daf589670129063979db19db3be7c505334270c4adbf5c349be88b9c8553dc735c42d8e36fd0f39ab561d705ea4e4312473254dd4d0fb4693de73fb3ce242dce6b8baaa17317f3372540ab4d903f87ae8601135a5686769a02f600fb2da2b9a4c25685c081ddad0a7496b83abb4b1c8c8b1e2191a0d52cbc9d42959664707c8493c85f33669ae9da6a115cf080dd568b59c8e7032872c660a9ab41c71664cc8651635281ddac636b64a563d933c55f389221b911de2293bcfe48fb3bfbf4633d4dad10125704ca1fd232315730b1f54c68f4369d053ac20d640336caaa9ee92f9c9baaa8dd1afbd3717862910d7820b712b1db18e95dcc3aae695e68b23905e7d484f8eed8f4ca0bb288131581709de44e83b7bc8495a591632e209d9438b3da78559f05c0c9d19ec9863dd1272df69bd41877b91409259345192d1e7f13131fb2ea94174a8452c2edcbf029d4c579dffeeb7d810c6627831228666fdba1b84d91a70f98ffdb1f9567727e907a8575433d2240d85d1cbe7f5a3b9ce3e1c1be3b1b3ddac8f5d8500c14969bafdde4a9980e7ee0c9df93518c4e2db4f2332e490086540d9a20de2043ae13afd1a81218b7ca97e37154ed83e6c26be0a9d1419de846c8277c8468a21543ab2b1110de819481d9ae87ad3a3ff6000d5809251d085d69c6a8add961f8b488a4a8075a40423d3510cb40ec9ad46676262be73409b45a26e339cf8b8ce56f897104fde00e423d6c40bbbd64346888c97444e553e17f8fe8c1583ebff07bfa7f84c7e95db459add8d97ec69ba9ba2b33a9aa30a5e34e9edef100fed07a4f15e3cd0614eb641239cb0485bfc77c4fa575955e683efdf1f570631217e76c60b84b48e5da8295e0586fc07ccad8869c26f4b7a8f20aaccd7f7d0d896ac119d1d516dd90d70a3d431ea351c586c49070dc5681b4ebb5b2e1dd732fdf33dbeaa676d9d80cc61d4ad1d048f614470985e287349f81c9dca2ad17ad6a42ff5ec6384065ba75bce9943f8af65464e85bc387792fa2264ea3da22592c80f5258a65f468c1064b17ebff6949ebc6d98533319e2a7ad0d8ea6ea7830afdcd1c18f9132d36cbd52aa6f8acfeeb333f4be526af9cb14ede4f6b3c91fb51133571970dfd2fcb0fdbd95331dd0b18e6f1dcfb373f9523e7ad02a50d3d39cd413abf9a2ac120609ba95ea7c9e5881542229064a2e293bb13825897a9bc825628f5f50cec4454d0f8f5883bcb9049b9cbf6483ef1eee5226e558173d45ddd7e77fc9dfb385f20026bada9705d12b1cee595ca68899f997733b33cba40b776646c3d7618610de04192108b3113a8ddc163e056dc4409f4c2b95d88c31c68b4e43143060b0d0dcce91c4b2bb6676b1b1895673f7172c2fd8efdd98fbee9e578ae9a1d535ba2698996f830db6292d22d7232c98f9980dd03582da2bc56b9a62a74448f3dfa9e71f49f26bf525c009bd5d37b9be9edc6d626d2b80590c6cdef953fe5cc0e51f59f701ba9fcdf7b0a61786f5143bf9619185443911013f8311e4f5538844efbf0238f7d29e9fdecb66b83ee4c39dd15cc0b6545ab6635f0ce65eb0b4aa5f454555063e17e431232d6bfbc98761bd4f498bef3cb2b5c38ff38bb177af897b132c95ab4d37bccce304dfdc2e8e9ddd0605be49f5ad55df22b613d50487e098aa6b5c3e05100d5e45239b3f2c9303c15cfbc30e5b57bbccdfe062cf5c62f94565aa4ecf893dbf2c0e0f7c29c7ce596bfdf46eed9aee9235a3c8d6cd4dab7fa0f67b463361be832be3c3e69122af0604387519fddc04767bc4b755b7aae9d61e81505b363bce8ebf1a2881e3f28456e4e89a926e4dbb43dc7770ed1c6cf99781c316bff64c7876aaca8af8b1286acf452bcbf92eabb762dbe96229538b573b2c5c12dd697af88562ef3dfd3ced1e075cd98fce5939d6cfa9b827ac10bd353ffb3ef461dd11a3e58e09bde26b77b18bcfff786a669e6f4b898f1e3e4ceeafb58c64e6099e0756ae0d56d5ef722177f0c5e6c5a9d7b500be7149ddf5dfa31096c1dbc0ea54cf414b366df9877c54715274f46d5b844bb492f9a00edc2164e26dcb80798c35556bad285e1d52cfa4a3b898259b94bacf82d264a810237f2144bca198358f361e6d6844570ac1f8de19b0311b5bdf102d8f5ee2e3844f6f6fa1fbda6ad8293a0a9a6059c5f06fbc66bc250a72724dab60e4329ffd76e8b70cbdef5a0e0d1ac533c5c9ba34075fd2962d642156b120df8590476e6da530530dc62021b9750b59e02ab3a322e6bb0bccec606c4a3e33fd3cfd9a95c3f714af86299746efcb05310597e75a25626bd94a6379881fe9cf197ab8b40c9637c682cb4a6b8a00616aead086172fbe586b3030616dabdf53bbc02f3bfd039a79f1b29b69295e15846bd08ae47ca618d0024a0a8dc4b77858c85ea4a53861d0ec0ae5331b6b499b6cd7ef7872a67579fceb9dba33686be8a9c2a15aae08a6fb8128922e4096072b08c55dc7fca374b3af445561b0d83a48f83f57a2cccdfd3c2d1f43c4e4d3847b5d957fdc9c1eabf310debd0533dbee417575a874859df0023bfde8aabc2812c8d08b0919f44f13b9741173691b8b63d3683630330862fc18fe3dbe9562ec0967ab5085942e0da1f93fb8e7ebec26703e81f549069821a3a5f5da5a87de3b7c98071d5b32317b187dd586c2787e2d5c5d0d33f6d8118d7d5c3b0eb6f428124dfb3836f2b14dadaf25aac90cb6575886b368647a74622b7b8b0111edab18b716d9226eb9880663ac09bcfe9fb93e2e04b68443e2265c47aa9906dc400d6957b5655856d7f943132513e6094d400f3b4f0a00cced1d129cd923287c9ecaaba9c92b28223cd8c9d36a6447e755be69b8736b679be11ed14ea293d8d3edf74aa59bdc19f66f171193f812145f99e52bd5129e6c156e041f2bc8279c8dcf9f200ef70ab78aba9817d60730fc0631e4bd2226b3bb2dd0ee045926d45c079749ae2c947f7eeb9b37adf9fe67478a6603896364677067b59a97fe56028dd386b056ba32a17e2b4d5a7ba39fd57049d3f3e481c6d9cfff6f4d22e3fa70ddf87c9149d6606dff8cb976f10191a9fa6150847a44d37e76fc1ceb24d957acafba5a8dc2327484792f74cd43781863c494e1a30ae387961592a1df2806ae51433c280f8f89e1e2b90542fb0818679343e0124c00812cc67f109f711e3a363e4e9be706c2f9b35859030559b17a55d9507c46c6f70154aa700e20154f0844139ea0eddff104e63806541d7aaa431bd5d5a38e5ad26a5a2c464df21e0eeac893b2b1ccb87b6507e4571378bc5d193f3f8f844fd95eb22deb894ea7fde28af5b3c1935417766e3afba3677b3b441439a378d7d14141e1af25f2d48fc3d93f768eff89377fe41ca2425b4a9ae522915c88bd64b105525cecd6fac8b22f3d8a58154fa35c215ba17c9d5d3d38415f597cb572836c83f27a76f223baff51f2491a205159d8ba545cbdc2e1388a4badc366d4644c98be32a3980d4c14121408c8b3ed5fc5eb64f2ec73433eaf7e7a35e9ead3d59f43721c78cc4e9138dcc3235c2cd85b3ce753c3b37d363dd8226c8fcdbe670d9fe614ef15883dc2c33dc0507bc7dc008dc2b6a696e53b1a4d734b58c806549437f98b4c523a58fa59f60f12f8dd5ae473d00f8531f95ff866c9a1a8279f19dddb6b4d224ea479bb700a649c0cfccec21b6fd09e9addd348eae9211961b078fbe2223749966ff195c5df6c7f11f3f4da996b4fcbf64d5b6f87610501c6c2049200c795664ba30aaa23a3b0b052742418fef6aafc386d39021172b425037225bea3c0c67f46c6f499c319df14d56ab67b80901ff6505810d8c3085aae54e6d507fc697688cadd303d52e233332e4db8f09c4e20f6d17b7b27e562210db8149f209586b901f790e980fe9ecbadb4507d277f472a31ca715427c4e848db6d441bd0c9734b40ce9da30d1784bba42d442334ad1fd50203d25be75d90220c3ef92f5f217c18580e7b9615c0747731477c3b7b1760eb9dd66298858a461fc2fe3a998a117b723e0cc8f4c6ecc677fe8d0ccddb69343e403a0e3f3d96915cf984a74a1d70307eb05d30df046783483bfb1b1c9d0a481f787df5f7543a9b5681119b08e90ec32ee3207f86033dbdedef70cd0f6d72443a9b9f65c3fbb23ccaf0f04e3f2fbf726e980ff666c0dc43b44db3eb2e07277d5e70f3c462f7f6770b967221bd033242624c934a5998a39f80c0b21b871675afb11cb65cd37d28bd9b5580bf271b01fa21ceda1f1b5b6d0ab0974fbfb932952c3b8d6453761f372fe996a64318b401ed811f061cdd6c0c254fea0c38d8c4de5539c02d95fc4f82a3bafee432be0dcafb2946ae553a0e0fa9f7bce37fea6ca319423b9916958ffe8ece47b9a00d681d4714e704b9418bb3ebb8723bfa14e73d38326bb6440b67ef0361da21fff092f01f7ac675d1041fc6f5d3c3c228081442ba6f902f555b015e7197fdd7124c773499deb89cb4f65523a6e4c3de33a6b98714321705a6d7c2ec32a497f549973726d398a07f7ba60aac80892261fbd7997ce9fc67bd954120d364ca7fbc6d5d6437e42682bd824b47a370b9deb68ec8e8dcfeef63a2825a5461dff1ba4590608982ee7729a95bdb53679fcc5913389e10e0bcb7f46fd1bd529dc33ce1b2f48ba1f41ea72d676f80739a78cde765014e2a7af1e73b2ea4389550a7f48b225da644278661fbacfab06189d194cba428a59f4e2524c5b9dcf95c4c5705382dfbbc469c16df8799d3c6f9a018451fda403999e78e1975df52897fc7017bf6aa009bdab4945aeaac354adca45a5ede443bf318322e34301a59e7f27796290089d6449397276464245cd8b1c9eefc728b3b762e3f6ff7f3b92c3418a1c71b6a6d6a570540590e4b1f0ee84f5321db02f3c6a489ea4d24ff8d89b04b65471da7f1ef3d1871115b70c85726efe1fc8f59582122dffbb07bcb000a94f5b27dde4722ac2c8ef9e3ee4d5e21732cc44923234901375200f8df4f106a11287e9e78ad8747ee62fcdec38a6c312feb8fe04f164f9cad38bc17bf24e7ece6d01bbc63d8c207336fe7d1be953bf4e862ce371e24ff2197b711765ff6b171f591bdc6e41c2310aa61f96419bfc7f7458ebb170c6d9cea92aacb4dbf58d38c9b3de9557c3e95cb6cf79811788df99333618dcd888b86c84cd8c60ef2b3f6900af55d05a1895d3c22e1244576b4f0fea75d4c27fb07e6c0eee6a2b7987dd073560cb8d17197c9a5f2f95574cfcdc669ac5fa672b5b46b6a631acf7fa7271085f0b95c9b1199c0d5c6e7f26e425b39f98f8256d4dc1d687e609c98bb3edd2f3c2aa39c2410795d89a1055d7aa1d4c3da2f88bd2d8149d4b88cd868e04c720ceb39b40f13baf06168aa083d36c6c373efdc8a6363125b9f77d209fa91f7fa669a4c4dc3b810e28bf48a84ba203f2d7c4a6039c18361ca6d0c612c4a20a613131631ced7b3ac904948ab731a4ec85f2429fcde74f6d2d351e3880d1e4ebcd2cc507b6c408c479d5e2ab2abf2be543343ffb1488cc7554fe63ea97acc20b176cae9eaa809766d0972f09b2e8a8810a52ecb369eeee710349aefc1b3e58c71d2717d5bdeb4825b66feb119ea19c7d4fbc8a7522210f09b0088b6b677f3473f157e1acdbf6b3b949d42adb98d257fd2162d191de5e1255178866b57a5786eb404cf1bb551ee6d7aed5a8110fdb2f8f2609cfdf81b3be4bee0c7d0593e341d9eeadf3b5fff14124ff5ed653d5383339b07fedff7c601e580331b4879d1773841ec24f51700779195d50238a542473ce807b43010801cfedb7872f8c938f73f2652c0cf5154210e67a2003f249a0d0a89cac98d754b27b084ac3200cf901660f1f0fa8670ef8ae867ef8a609283c8b8df38f4053f65a68a48180fc84298815869c0aaf0632d64402cec5d6411657101d2541a09b022ec53df4d68b1b708703fd20ec82ef6cb91198fae34018d07822df5635eaf781067f3a278b201457e46ff84b4385f3678908cd65bc4e46a03531b3b2b9ec61165cfd3b95b9c13279c91d50a9138ed1b9c93cd6f428780e4e8c054672051117016451bb6008dffb6776675feaaee79c6de2f0d02026c16bffe715c43a05cf02939075c88864b6250ff25af2015efa66fb62feb86bd0441bea3c17b4eff9b2d3a7c950459a35a0f08a94172bf71d91f964a694aacfc1da2176da846e5e32d33e2b1969cf71b6b7e8a8764a3680ad13affcd08d1b9e94aaf109fa6fb92283684a7d1acb28c5ac8a3e0a15e44cee9a1d59457775a2e085a096f3b55295aaf28d5de09904ebde296b55829c1a6bdcb033de03acc1221eda19ecd89553767659c89caba01e6aac89bb9264f86b9654cd1f5b7a5d98b04151c507a9c7a32831eb7cc81d89759dba560095c77b6d9c8a5e49943b3945ab3f760b1fcf5457aa9966399f6193e5dd8b5f1d337293c86efc6fc93f755d1a8e30ceb99feb2b9680f8fdb0d036d6a1f21efc20fee6c383985780d7edeefe6cc219bb660de3aae55c3303d31cdadcc39de8ec74cfb95b691b6c377ed337cbab06be327213c62e9bbb1857fa2abc7be2a1afbe48797ecbf6c2e11115bfb7603a3f23c964751b7fcc1e853c089704242bc22b99ff7bb2f61e62f31db972b800b5cada48641af77629a5b89208db7a3a19759c58d40a8b692facfcaf36efe7f2b700034201808c18203020f112480218623100011269471219536d6f9208ce224cdf2a2aceaa6edfa619ce665ddf6e3bceee7fd7e8830a18c0ba9b4b1ce879872a9ad8fb9f6b9effb050e21024102860c3b141038c13b5468d04161c00718384c58703ea4623202558a1a2fd72f01a1987f68121f843513896c0e94f411289fbcf29eff9f6f93e3cc7fd6b3acd147768ebcb29ed52fd326dae159ae997559676c3846428760587e5cb3eb5454b05d2fefd424149d8e356ad10bef30c5435b835f84824cfe51082981ca0912befc3722052f5f3eeaafd15161c9145146316879681715c4713b9db5a36ad31a594c4d356ed77ecb805f460a438429db18b29931907a8f904dae39702d61f4688fc4aa5528bdba1d99a6fe03198ccde5b3a84f9aaf4c75c660e27e878b098403a1f5c43bbe22bf136d16074e8ed11e68db69efe85dc9656cec9ec3a4e64c0fffdbe0508f343e103a3ed2bed8fbd70724451bf2cfae6731d8eba2622a4bd5a97c0c599d8188e4b81da43a5b7cac6fc2ca6b74df3bfba1603054e52d1569f40e4c10731fe60d0be24596618e177d6a7f10f9a99d3e0eb5c6f82a423a336eba5d01f6ef6455a3686fe07196bcfca0eac917be4b32756196dc16d56433bbae6891c3b16a2b89229a038d8dae095be7137bdbf768fbce2f356854d9c7d055d94126e17040b8eeb5b8b585d5f2eff86e9852e473d46c5a9ff01c21152f8ae29cbf50350588757e68c184468d9dcb60da2d9634bbbcabbfb083ef4a69540e18071685a2e0e158f33ad892b12fed81ea254dbf95bdf1613543602ac73b462f2c0878ddb537ebd0798f8fddf185dbb9993a9f2c54d0ed956338f8b4dbf5a2ae192ffe98e2adf7ed2b0cb314bfea75e43a034a88acb97490946e1aeb2973efb01c4261aa4364bc4888c4528de216d7b9357c5a6fdf6f1b4b5877ce34d61c051f000000010000ffffb8168d5dd02f0000", "0d62dca6ec70b2b9944a585d3c41d69a": "1f8b08000000000000ffcc590b6fdbba92fe2b2ef79e40dc3be6951f79d4867190267d244dd29c26e9492a180525d136639a5425ca8eebeabf2f48597e454e9aee1e6001d31ef21b0e67c8e1684676265c866a4226cc8f68303c4d948c3a25633f7f7a5d4ca23419389e77d08559ffcdc15dab97ca4073251d0112289ea134619544c73cd0a84d49ec48dc1ed3b8a23bd4410777fba708b7034193a4c2669901520344e7f20a61e086fe7838ba451894a17be3b79708436ce8b1f8f01961480ccd4f64b81014cc0225131da78156b1836799ec7f9227926b43db35fc8e2623df993119d0284905351ab7ea90e8a96049cbeb4248356dcdb20cb70b832aa123f02c663a8d65459313df71c17384831d0c9a28d3adededefefd76b7b205321f2af1aa058a59ac555956ac13402afbb02af7f612349fa4e0deab5faebd7f51c7121210abc84f8a0c90568720fde8185baa0c960451ceec2eaf6e3997024d4c0c5590e670b5b26cfdae2ae1b41a3a8daa742b098b3a4cc8810fca5fab55a73efe0a0503f58637f56497340514793a1ef6c2e1bc0046699f9785d0c7d73f2019f9c210c0343bb877e8430f40c3d38fa7187308c0cfdf5348a16de31ddf00e3de009113cd1579a6ad6916c5219917e96e5dce335eeb94fdb290bb5ae583ce601eb08b0e3f6b83b72a5137768de4bec0aa5b3971aac79ab92478207c30b362934cd251249c7bc4f35733c24d90475611633e3c66376ad5a4bc60ce70e3ffc1d873f7991933400857c8cc0f390dd3a0428e515cd1e7465c4648aba4ffafdaadcda9adcfa63b931ef0f5e2cb5bee9d27eaab5929b0acf470bb99e677f50608ec18c6ec6b73c96bd72dbf946cd193b9d8edcd97174e755ed55a72348a04691924c6ab27aa23b3b1a83ceca557eef3bd5da5c097461ce78c3a066d91d356e54763dfbc4873ea1c515dd8566b3e9ba7bcde28e0e0805af472824640809a15d98596f6d792e204ba16eb6fdfeee1a5d56acb4331e879da3df0f3bd3ada69dc0705be419833735d618ab5e1a821e1e85a04285311cad44a1731361aebe240c61b832f4fde54713850e0d7df8f07d80305cd82834f9a81086cbceba0b815e6c89641387fefce9d0ce65ac463c61183b0b6606299e2d76929b9dd4f174163b9a48f6a01d817116501d0c1c8967a92371b6dc77b5caad07b19a3cc91e1b76414225d99fcc11644c45ca70cb8446ba5448e2995c8019267ac0a4c341e12c761cddd1844691981a236da680733531ce70360fc5f79bc17535c615f134d134191431761e56439e44824e597832a27dd63187b61a36f308cbf4fbfcd81c0cf3f425096225c4b5328e86b3558ee2082e1d3319c68a8715b7f8294cfe6f07e71a574427a271c24ea476961a9344d22819284d221ad351427808351783ec4c391361e59139a4c76558a820308959920aede0f6ca2362da91c4c4e655de0c674a9eab3461930163c21eeeb66d9933a691e1723b2618e5216e6747104de33ed3152e134d65c054aff2e1fafcec988fdf0a366252efec38a8f07d6e64221bcdf26984877f6e5bb635df701531e994309188ea01a06fbea07288302e1e746f437b806693956044a8be8358c8355a701cd1d82662ab2c0297ba8531fe239b16dcba223b65aa7019b2877632e1e6326c881564c8a67816d084a1c338569333d6d3a855b6daea99911e172cf164b5d66dfb31a3c3f652c267f3f0fa7511ff2e117113a1176ef02311c76a22cb95b05e234814b33193fa98f5a8f5c93c8f785f9a47b88b3cc243ff55f8cb48855454032535e592c5de37d9371d2675f58fa34fe7977f7467131eea41abe6ba7fb407cc6c4b4e0bd6d32db7ad55d472db6acce29e5093d680872193ed1f557b5eaddaaeebb6239570ab418f3fb030db58dba7c1b01fab5486658b2fe6523f5122d56c7ddd2dba2d65b6e2be4fed13cb05b28b3717b7d7a53a896914951bff78fdea84f943aeab3aa632e9a978545531ef73d9328a55b48adacf20b9bc47622a8d4663945482d4e741d5673f388b1d62b20752af430dafcefd27e7c08b159b1f884df71607e32badd5a8e5b6e77edbe25270c9aafd9887edfb34d1bc37adce37bb1530a959dca682f7e5c660e981bdc04babaaaafc7b16e86a8febd6dccfdb2543110d432efbadba1b3d3cf29fda3ee41fb28b97be9d994cb32423fff4d2fca9c89c7988003de1a0bf9d9dbb80f8a8ffe41a46b6e71d004ae20041b37c258ce7c3a589d95a6e5912e84c4eb1d8a41fbf5bb69418b0085f2b0501ca432f023464d3d0c4d15f280bf239ad62c653f5817964d1a76b83b26378c28aa5d3fdea39f77ca7f46586fdf954a4db0da8ed350e1635c43911e0e5af283e766126fb273d5b3e18e2c9eaa1012ebc7af5ec196f56136f9f3ae8272df8b15230bcd88227aacafdffb31ab8b1e9a483c69ad801a3218b2b5cb3d13352ad9dcd553b6b70457c63e711e8f5ba083479eb3b8dc6ee6eb3d9a8bb50835930e0223c8e5564fcf69cc9b4e566eb55ea5e51a42240956ac57cdbdce551c1baff8fd4f507ffafeafa3c81fdf5c2def03fdaa8da9375b0c9cc389b2c4be1355b58f8cbd6b0f0797b6cbabd8c4687c487c3e56b845a0df61a07aff7f78a0b74412878091942cfbe4298ab6cefd09c465dd0d388b5bc1a2043986b359babd35ae8953d8a13c602da598911ede2d9f0ea15dd8817182c66405ae4d3807aa9100867bf24770f5c708c4d9dce42c29fb6b0597489e65a30fcf327ba50956b4323786686bd164430d9df78649dfe6fde8b844c532e1ebbc3685120a22eac3cb546793db8cd4dd88a9bac88987b0acb3d4593a9ef08a861b256881a4761188aa75db1d23373d3a898c832780befb7bdcdb937ae4573d77ad9bb9c8f25ef728a6dbb87d395b739c71deaa064ffec1dc2f0d9feb350db6d220cd7864e4f8fef10863b43c727971461f866e8fdbbafff4118ce0cfd30ec7f41186e0c5d678d4b84e1d6d027fef01661f86adf59df449f118637f62f90fa84210cefecdba266cf8c7f31f49bd3dd0061f86ee8ffecbd9d200c1f0cfdf751344618fe36b4be396c200c7f19faddfbd10dc2f02fcb931c72844108d39986fa0c6190b6a3a757c61a6a3b9f5efb66396d3bf757a7126160b673f0851b8352dbb9bd1b1f230cdc76be7fee7d4518548eec1f698421b61d1ebebe401812db39da53758421b09df1905f210cbec8f764f00661086de7f5d1bf8d3a13db995c1f5c230c91ed5c1e5d2cffd0e98b594649e84840ef8bf7e6e72a4c05bbe8bfa38156f1142dbd6071930622cbff6b1a888e26c27798b9234b6f59b97263dff13499f8ce6ead6eff61d184fa366bf5524281130a8a50880985081ee0a349691b86b10b9a8cbbc66127bed3dc730fe09c48382723f37c4dc0abc33979e8ae311c93c4366f6334b46d7df433a1b6799af4e77a456b0cd784dab63eed8e50dbd647bf116a9bf799d035e08c84b62dd8776b75176e880f3724d818bd2521dc1a215f2dec9b7db825e1ba896f08b56d7dfd294c97233577bfb1dfac371a7b704e7cdbcab06312d9568ef56d2bc7946d655842a46d9e578784e82ed8df61b784f51da1b69589f942a86d65d877426d2bc33e106a5b19f637a1b695617f116a5b19f62f426d2bc3842034ff2a43a501e436941a806e43b501f4369419806d435303a4db506e00be0d550650dbd0d800f136343140b20d0d0c106c437d03f8dbd0d000e136f48c50dbcab01b426d2bc36e49605b1936318b4db6ad181920da86f685f9949e1bb0d5f17a1312c21f8757cf9b99b2ac85102c72a75600b65e88996c95c1e30ce6a32d53a62e81fbac9b75bbf611dc359951d6c5edff090000ffffad378dc588200000", "0e8c2c3ca434be43c9ab1c324fe6d3dc": "1f8b08000000000000ffccbd0b741cc775207a6fffaabba7a7a767a67b7a663018cc7ff0210603cc8f5f10fc531245511225537f80c0908004121000eae3c80a65cb5a3996bdb4d69b4dbc8e43e7298ee3d8099f8fe3633b764c39b6a364ed7d8cd7f1f3497c629cc4674f9cf56601c81bcb7ef6e09deaea190c40809492977d0be076dfaaaeeebe75fb56dd7bab6e153ef334c0b5a7001038a03f1c88bc8300c225a4e7632760c30fbae71fdefdc6b31baf01e4e030ccc079588004ec8327a10ef33003e7a00e09a840020ec31cd4a10e003adc0575380b17601ac6600e0042702fd4610ee661ca7906bda3004500a8bec9a726ae7ba64bb0072e020fc52377dfb33ff1deecdb01703b009cbce3ee81a1bd5f38310b802f01c0bde3e7c6660f1da95800fce700947f383bfdf4991ffeed370e01e89700c63293f5b1095ff05d4f01c022256b72b23e26ece23e05005f0480cce4b985a7becfafbe06803f00c06f4fcf8c8f9dbae7f10f01785f01801f9d1b7b6a16df073f02c0300024ce8f9dabe7ced8df0198f90c001f989d995f38f7a1cf3f0f30f71a802451daf1eaea5500eee2ea4f567fc23dd7627ff3e782938300cfbe71f70f1ff1edfe9fe061dff23b7f9c7c47f3bcfa93d52f72cfe1d70040763f35e3cb055804ddfdf4002aa800b0da765d85220c0377f0f0b193a04f8f2d9c8728086dd7db719c9e3a3b06723305827315410604a9998b7f8f974004c05fc5330070c43dff4f88c0f3edf2b7f1e7c499431330b224fcd870f851c0afc1c13661a4e8555689eb60647515afaeaee24556e6cd42f3fe264eefdff0dc9fbbf08bf672dcc8867393868bec196f0636de8f4bab3f71de33e2c8c3cff1eaeacfd668a4f563f96bf4adae7217dd678cb875bab8a10e23cd77b0fbd6debbbadaaacf465adaca73b0099f469af86aa3951ed9f86de8f3dbded1ca5bcf5f002a2740e5611b9334e151f6bdf909e01d6c1bf05462854741e0697bbe0417410263495c224bf6526a29b354581a5e3ab874dfd2ecd2fcd285a567962e2ebdb0f49ea50f2efdc6d2e5a5df59fadad26b4b8b4bff6de9f5a537961acbfee5e8726cb9b47c70f9f0f2adcbc797ef5a7e70b9befcc2f2cbcb9f5afeb3e56f2e7f77f9ef96ff61f99f967fbaa2aedcb272fbca032b0fad2cacbc7de5bd2bef5bf9eccae757fe68e54b2b5f59f9d6caf756fefbebdcebddaf3ff0fa6fbffe173f3656570196840d14bdcda5e897d651f4cad2d796fe741d45e1368a6e5f3eb1fcc0f2c4f2bb973fb0fca9e55737507464e5f695932b0fad3cbef2b443d11fba14bdba72ad45d1a9358afeb7fa41b8042f6ff8fd55f7f7d7d6fd7e043e0297d7fdbed2f6fb31f8047c127e1faec0a7e1d3f0950dbf5f87afc3b7e1dbf057f03de7f76fdcdf45f841ebf71f9c5f8023701666210a774119143806593807217804bac10371a842052ce882337007a4e130ec856118813d908431a8431eee04198ec2c3108671a8c149380e063c04f7800da721017e30210825e88169780c1e85b7410032a0c2000c413f14a100bdd00783b00d4ec003b01d4e018114c4e03eb81f26a1036e81fdb00b0ec04e3808fb60378c820e5ef081067743273c08537008728e4a9f815be13647a12ec0049c87db21023c082082043be05e781c00a5ffbf3ffeff063f1a3d8817ddd4026daf0ce008c092c800ce022c1106300bb064338028c0528a01dc05b09461006580a502035000968619c03180a5830c200bb0f43606700e60e9140308012cddc7001e01589a6500dd004bf30cc003b0748101c401967e89015401969e61001580a58b0cc002587a810174012cbd87019c0158fa2003b80360e93718401a60e93203380cb0f40a03d80bb0f4db0c80d6e9630c600460e97718c01e80a5af318024c0d29f32803180a5d718502370699101e40196fe1b03b81360e97506d49a587a83011c05586a3080870196fd0c200cb0ec028c032c4718400d6039ca004e022cc718c07180e512033000960f32808700960f33807b00966f650036c0f2ed0ce034c0f271069000583ec100282d7732001360f92e061004587e8001d0773ec8007a00962718c034c0729d013c06b0fc6e06f028c0f20b0ce06d00cb1f60000180e59719400660f9530ca8265c7e95010c002c7f85010c012cff0903e80758fe2a036a582f7f8d01140096bfce007a0196ff9401f4012cbfc600060196ff8c01d5c8cbdf64009407df6500b4ae7fc700b6032cff03033805b0fc4f0c80002cff9401a40056540610035839c200ee035839ca00ee0758b985014c02acdcce003a00564e32007afd1e06b01f60e55e06b00b60e56d0ce000c0ca2906b01360e53e06d48e5cb99f01ec0358798001ec06587988018c02ac3cce80dacb2b730cc00bb032cf007c002b0b0c688fb2f23403b81b60e5ed0ca01360e5bd0ce0418095f731802980953f64008700563ecb0072002b9f67402d9e953f62400da4952f31801980955719c0ad002b5f6100b701ac5c63405da195bf600094de6f31a07dddcaf718c004c0ca7f6700e7015ee718c0ed00af77338008c0eba71850cbecf5fb1850ebecf5fb1950abedf5071850bbfff5df66003b005eff0b06702fc08f0d06540b393fcf22e0adf8327e8fcb719fe633fc31fec7c22744557c587c4dda2d3d2b7d8548e456f27ed2908fcabf227f4e5195bb948fa943ea673c01cf873cffa89dd03eeb0d7beff2febebe4d9fd3ffd6b7d3f7094332de6ffc93ffb0ff3b816d8167022bc154f023c1bf35c3e6fbcd7fb48ad64b213574c92edad7c2b3113df28de868f4bf76bc33763cf6a1d80f3a7f2bcec5ef8d5febca74fd6ae233c933c92fa6f6a7be9d0ea7df997e2d53cc3c950d65bf9afb60ee3bf9defc64feabddbbbb3fd4fd46cf3b7bdee8fd7aefcffa327d8ff67da8efafb65deb5f28988585c2df0f9c18f8fda2591c299e2abe4c79b57a155fc5abd00f7be0306d333854dd83e55c1f56cab9743225597e33544ad2cc52ebca1ac62753b98abf5c2d25874296df94f8727528644aa99c6d99521fa6727bb05cdd8b213b54b3e3889f110911cd98d9b86ac662268e9831d3c961c76ae31b9c207058e604e14703fb0706f60f5cd3d56baa6e1a193b9ee8c818262688d82d9222bdbd314a8f452763841d1bd7040e3f481fd298e60484247dc6c04450d57535684405c58f185404da0d3b7e2070d4d7f041170cc05e384afb5d6cab73c55fce6dac613ecd2ab50b87429d684a64433acfea5faeda79299fcb131d3bd10ced72d98ad718d578d98cc5a2944897e0ed939405eb0f3f8ca4d343e9f4c31d663814e8d07c1ef261e2f1e1c598d958741e9230638d2b0287a653e31f71c215221af46e432447d7d017e95386d2ef203e442fe14d4d271e0fd13593b69bd5d7f00dfc1c6810a13d35a67434e338348ce502f2a902968771288ea68ebc954e495d181ada8b55261d7d9892100ecc1d3830f7023d1ca83e58ad3e384d0ff71e9025699c57857151920f38df063fe7167b61ee4063c42d37fd6015772ff8c4714118177d0b2221703d4db51641291d4553c71659c41132cb94063057de8bd55027968642f2da8bf0eada8b8e12b1fd4d5737253cd52d92f5b45f4f4f9651c2a8cab618942a60ad42e5a052ae7661c8f4a194db83e9540edfd8bce68ca0099e1f976e4a90382ea8c269c9210836e191d8629019c7608ba0f230061df94ca7727bb13ad48521c6b02dbedbadd7557ffbe6cc6c7c6e3df1b4df5d5d5dfd32b70f5f8518a4e176da966aa95cad5aabd6f2964924fa6bd196608686aa95529ea47295922989f96a2eeffc56ca05cc572be55c4ab24c5b4792cfa57c28993613ba32e5b365da21e7373b8ceff22a8aadeafc802828a2c7cec71eca56b3fdb5aaaa17750c1c54a5a0475404313bd22d05a341a9ab62be9d57058317b8b0736e2c266a0922698a5fc4c68a7fb0682be1607cb047cd454c5df6d8b18e7c4736db513caaabaa8ebb83fd018fac9b915ccf91014956bdc1a05795c5aef063bc101054bed1eb9cf199442d51e88a06bd0141fa51280cc0afaeb6fad832b5f8b29bd596db844543d54ad9e5522de9b2b25a6102d7648484bfbbae96dd23d976763c14cb2f527efcbbc6d7bd8ae2573489246a236eb515e5c2f53592068ef4ac6740be23f60465c1515b0978831df142a296685552b159374af5c845bc0a2ab5ed591f5ab369f79927cdce134fd06eebead59879e912ebb4f06acc6c146767f19a196b9c3c79129fa01d19b3b557afe255bcdaea9bef8047601e9e030856d6fa5aaa60ec96324a49b4a7251bd2bb70c3f5cafa6b1befb7ada4f3067fcea19af84b43a16ca9f5d2923f7bd1e9cf9cc34b4d84fc520b7b770b3bb256f0582bf3f38d11229ae853f14ec587a6481a97669d2b8f37be8fdb5ac5c8dabda36be8dae1e466259fc96468474bb55de328910fd0ec03f8116cf1f3d575fc7c17bc0fa0b6417fd536f067637a23fff237291ff49b52dad5a14edfe8f2710d1b0af1fea4ab713fd8aad6d94d19b0397ab52d3766362eafd905179be642b17159e0f024275c5e2bab5dcf56f2c026796b0754d8c371d48c956966991d638d97b1b7f11d4e1058dfcc789d867eea0160bac592366c332b2349ed0b22a55c7536d48535a7cf36f1d286ea301262d1c62739014785dafb0595bf4d106c5e15b6cdf0aa1012f0e23a02cd35c21bb302c7a8fdb3f7f3c26d82cadb3cdf7f5e1042820aedf4fba044bde7da7a0149d7ded2177d86beff357a78e6669fe629228669c1b048befbd6f87c847aead9a635c0ecce965cb7d3f5d668c713443ce6d0738cbebe85cedeac261fbeee168afec14d2b757d9d1c696889447e835cf8d00e996fad85e176bfa0f2d52aaf0a7e9e9ef90de977dfac72b76c7e5f2b8dfc4debc9ad6b236fb185dcac31bc19c977e57c11afe265f04007f401d44a43211f3aacae66db784ad500ef5fef0dbde3ebb2249d16547e5c92f0b6f67714058ed2c158b5e413c7797e5cf45d5c2b40d970d231d83fd992e37574b41bb4b59bd08146f30d57b62402d35f67261d25f6d096845ccf8f3643166f42c7159f749ae74f4b3e34b6a4e3a1769e75bc793ab26dc6eb4df971a0adae17b624e55293dcc5adbf8bd8f20f4dc840190ec24980acdb07b69a1b750a6fa6326f96c61f53496d34fbbed1b56ef0a668d145d1711a1b5fdc7d949e8fb6fa5ce7f062ebf0f7cd832bff7f8a3f757d88c206df8fb4fb10b66389bbe67857d31cdfdc85f84a4850f9f7efa25a45101ee055e19342bbeb575cf321de1912f8f7ede179aab41e1084dfe3d5b66fef8320746fe68dfb936e1bdda821dbbea4d9b88ca3994f0a2aff00d389bbdecf74e2e5f5bd018e9eff3d41788069c03d2f310dc8adf3ad6ee0116fc180ad1c5d68e9566a275b3000db69cfe738009bf67554bcaca6015b72c7579aa30b78e244ae9c3bd11c068845a9fb2f70bd44fcb8487a39417849d57553d7f16234978b5ed7099ee4840c95850c1377fc382d6bead7fb96fd37e2402ddf6619d871f4e1965c91ef11899810c90101f900af6ec5a4c961417a8512f6fe22af0a51ea0c383ce3005f8508f4c12e2613ebd4833334b509df2ce637b58fdee0b5c65533566c8e3e51e4ed6cd4a937662e0a0fb78d4051e7a4d81caa2ab2f28d22bbb868c67a3961d42dc9d1bb58fc416b3c698f339676b3b1a410d1d1f1056bd5901da2eccb175032435526d537b86a6f3992f497bc10dcb523104cc64f4678cecf899cd91fefec333909bfc5f3a67b29ca717e949c4bdb4c4ee46e34aa74af2058de801dc914a2618cf07c9c47cec068a1930b707cc78d2e3a9359ab3f5ffd3e378297a11376c2013806f73099b2cc902d11c9871291ec38d6aab550a9296479ea0b0f63cdad3ead70c80e392e729e3580a1907d1d8289e3cf1f4fc62555f2715e5111f990f76d87b70d1c7ffef8edef3e5e2a64ec7c369ce2bb02662c5edaf9f2ce523c4691f7c4ba63b1eed8ecba135edefec88ecc810ec323a99c423cbae64592f16c7f64ee91ed8d4bbaa506c4c090198a7625b3999c1d8ddab9ccad14a15fa33b1633d79d805bc7837f49edff7955fce7d6c6e90f567fb1bac81dc08f421276c3fd00591dd3a9bc94cb571da29d73a59cafe6e368992464c711536c24c3a6551ca215a395283bc33c43362da62391e843d2a902d2c7e4f2b972b556e5f68a5163b092bf3bb3b712b5cb7d3da233582985a36941d2f5c6a776167ac321c3179606cbc3d91e27150af716761edd51de951de9ed2f6753233bfc5159f779884709ef2aef100c33ae488618e6483294f505edb06164b3762d36d423f0721c1fb4825df1784724e4ef89e4349ad81def0a5ac558e4ae6de97d43ba4f4e5989b82c4a9a377bcf5d91983366bea6377b60e8463d64d0f9c205dc8bd5bd588d2349496668a85ace6dd14d66939c7846b1bcbc7b7ed81b0c4683c12d074fb7ff0a114ecbbcdfe39e1fa0a5a34160f320ae8ddd01fdcee836607ebd6ddd542db473e2d3d7f59dd7e504d39512ed972cfc7459373f69c61cfdb3e89c3ffb6dda5ddc1a334785671df4515d3d2508232ac715397cb6ac6fe84d35b3717193cef494aaff3927208c70458edb60a3ecbfa12e9288234de5612cd1e6c2b4513e974e49a6ed4a60889a905b70bee23593b9ee914c66a43bdd15f0f2c80578558c2533bd662863595e8fa00a26875b7d89baaefab323778c647db2c62b7ca7c009a1c241bbc3431401850e41a1f6e4ea22b70f3f0a3e88401a4a70e07a0d2126a92a4d56ca554c52ff35699952b66d2a85aa5a7b439a331a09a7e3a6dd772380dfe6844642c0ef34b671022e0a8dcfb806e15167a0a4690caeb7858a02d7dbcb09d4c5fbc42738616293b10fb8ce664c0160bb99585b6740ae49fa1a93ab6dac677333f8e21a0f8b6bacfd389bfe69c9b13baedc0b03b003205babae33c3a93ef5a1d487fe64a55c4322e5f62273184c92f7612de898ae76ad5ac6971382daaa7840148404c7afe0e86f367e7abf19e35424fe417f9f7f61e717c8beffa78f57f8ae9d5dfcd98420481f68b24a15125ce3f21cff8dc64f552e66de8fc4efeff30f16777e611f41b58f776e51d6db2d83d497c7dc0055e729b7d36ffbec3cabca1ea436add3db7761c80e5924c48aa6f2b901a49dc8303a17866ab43709d9f83f32136ac4881563bea8fa48778059034536fbc5fd5bd3138c063da65abe934bf028dc19f5c58a312372a780bc8f57853bddeb770a2a8f1df13b144b350cd5526e4bfa428d9f3ad595ecc60f1d2b80c7793ff17a895feed9cf71fb0595dfcf4aefe755212020bf8f5ddec7a3eb5bb7d9427dd7cb39b1da6a96cb57fc15bb592f6b9d6563a62714530b46839aa94ca4e769153a8cc8c27a73a5d8d379bbecd2773cd6d358fcc2839662188af5e0179af31223f82a086043190e01640b5ccd4e51c54535ad33925e1aaae5b33a12db61792e8f3987c55d582d31e59b2f60de91e8ca604822f630a2bf7b4f547dfed82f6793b58e911c217db7de769f6926d01fb9a5bfc8738225a85ce3332eb27d5be1bedb6eed23c5d4dc41235948da667747cf81fb84a15bf3afdd3abc3d93efdde7897a6ee9dbc61566fbf65b870485f7f19c807fe5227768dbfa6ef144bd3b8e4a462199b4fb4e77e5023b81cd71af5ec5e7dcb1dd4128c39ee658d85a1f41d2eb47c3d78f83d19692b74a413f9b2bf263c271239c83d644c8d926cbbf61ea27f58bc7844955bffc5a8c5ea687dbd9891ebed8f84cf303ea27f5ddc71a5730a1ab938d5160b121ae0fe407139290851ee8874147431d6be9a83661c9dbe960d25fb24a9592a388f2e94a8958e98a6da52ba574a56417b00f2b698b48a1a16a9e305390aaaf4a09e74eeae6379a6272f1d8b1138dc51389a2ae4e5e4a383f2389048792184a04c5aea12eb1e40d063b82c14022810f9fd49b53cc78cc74ea70d9302655fd847b5fe257443191180be77391ac11328c90f1b1c4daf768d6af1306e8f7b8be56245de1fdac42febc290dac8d57d6aa21cba6d6d2303a465f01d757a37cecda655a039f98610ccf88be1e425425e2314d4f44d940ba71ac3181972755bdb1784c96a40c11b70b724692e4fb8849d4a8ecb1765a1e3902d206ba87603f9cba19e503581bc6015c373290abe573b411d14e8c36a21c1b3ea069a2d30e6ca83648bbe2cd2af585649243decf137e07cfefe009efe7f1aeb020610d05de3d9f74f3b9b6b25bd779beb39393f900cf573999abf27c8097df499017be2848e89e1f64d95c5bc996fd74115f75f971e8a65f314dcd5e6ae4d2425d4824dadc6897463b10daf20668ef9edbb4e2c73a096f2a8aa80ba49310a1501008e9247c50e65451e7599e272d90ad2bba246542414f4cd2a4e3c7254d4a0524cb13a529ff1e496b93cb667d7aa174b31a654b95b5919f5a4ba16f46ff2a2cda82ca9fca0baa902f32b7676b5a8b17c33c7faa9b17f25798bbd59af35ba36f0f1c82dbe02e78f0a67ccf915cbe52a5be31916c671295fa535495c671a85a26d5bd28111d6b4326c99549b546bd92929496f2b97c35be79e3ca794b114d15b980c9495ed32888a85a5e23a0e5027a97edf986600b8a2cc97789bc606b5e2d60743c851c4f54dd08885bd7fa9297f812d8ad7b15a2048b855838447c9c478f0b5e5e56f4e051cde475854857534449bcc74cdb5ede83c87112f2e226df6fc8190bb93167dc2900cb24523e6de9485542ad443f621f5a9b56fcbb443c144b2703598244888864d0f678bd9ef0d695dafd7191643bfb75050744421ef4d97a79aded34fb92da4d29dd38adb807ed108b98d98cca5d154d9e9435e75021a6b93579ffa59c75cb6972b62ccb9e598f7c7ddbbef3a6f4a51c7b65304f758d835b4dbc0be34829de8bd54a1b9e4b6f4af94181a0aa621825d12b10d4341325d12fca5c122531224818e0f90012212c4a9846226d5db36ba23038284d0aa2289406a4b3a2a8482fd2c451450e1ca1c88b92d23ee6d8aceb4d6aba29d55b53e1cefd73805f810a9ca41e1a8be648a7086d92f99c649921bbe56c566bae41e5985cc3b8c7f115a4a0e3bd39e5d329895458b138ba9e1b9ef0053c76cc88467af23c7251bf15f77a1462102511e9ea6e5e3bb047d5cc2e63dfc960a4b3d30ce9256fc84c1eb5db52f15cb20367059e28bce4533dfe3062ccf28648e351a228e46e9f24b36bddc4d296fc1185c456c1aba8226ff0a2d7f3f74dd4237b9b36ee01bc0836e4d93c8523c3f9b691c9bd582d60b664971caf8eca8de3d9d5929c518c999747981b72490b91138a146d982f8cfc3e2734fede1b92f60af852e3c5dbf197168b666c84595e9ae7a22f6dcf8e085cafe699fc21273416dd4531ccd6f6431a00d3f97543a3eda3a28c0e53c26b57dd57b70d1ebe30f29f3941c09191a699b768c61a4b6c1c7044e0becdb1399136ffaf1ff6392de7063e20196403d695412a06b4e3496f92673b5d779cda12213b348c5bb88cbcae29ba1ef492642199fc0fed897f1f3b7122266b512538540a2851ef165ee58bc41bd47545d3ed64b2905c97f8f35c47474e0b0b5ac4ef8f684218405afd8953d7cf43d08968ea8541ea7b62814ba788ced9718e0a30e7c3fc5ea45a27efc37ca516cadb1619c06a309fcbd7bab87cad64fb50c21ff88f8c96f3b991b7755a2d6cb4bc2d72248f96a8a9474606f6fcd1c0c81135a757b2983f1211427d776c0b71bbd05b3adeab59e3cf8db8e7774abb8f85b203bdea5f574203b7464d337aeb40a8526efcb554de9b0ddd76b1b8674f119df11fb2fa8bd52f73071cbf20083674401c9290717c311f4a36b5c3b03a803962a7f3e9929dce9748da2ed9f912d98b25bcd6b84cf809514293d7783425714288ec3d58fec0fde5afecde513e68960ffabf3276e26019af8a1f24a4f17b8280f710f241b1384a7f8a972fbf7ef765a76f58e446f0a3d0090700b2f902a693cd4e9efa246c7ea30bad5285f64265ea0d5225c5145795c51a32c3b89474869eb8fe7fa726028dbfb29303c9af06e632e5a4fdbc204c2c162ffaf571aff7795eb4fd73beb01426a1e05f7a83228f392f7959fb8dbf35fc495b4e0e14cb193bc9e58e3e93990dfbc2625e1479bfedd747025d41afcc8b9ebf0d58e08cd77e19afe2d720e98ce357a8305321cde9d8893989d9b12e85b48d11d387696ab1539b97521b6af3b66e94b0f042386f7a07063c562eec4bea21d97852f5ff8de6e7e36281133afe7c9e2826e920a140502144520301552244a1298928c100dee109a57c62d808d8a22f653d2b89aa510bfdae57f7bc2b643f1feff94f7eff93bfa5040535a710ed3f6b8aaafd3aedeabe44b12f52ec3f52ec43143be655148dd6fd67adb9f947a8bc2361516a76be80b4de145a6acee9bf6dd3878e7131e0b8cd8e47e00cb6dd980115a7fe8faa69b36f779f12f46cdf1ef66c0ffbf49ad215f8a69d153bb848b71f3b5025dff4883581173b049e1b9182316997e0d1243512d9c00b30fcfca9aebebeae87efe80c87b6777e20588c9c36029df693443e1c4af9dec7714f1259394d7421c4abe2c70c8bf37d5855c8670dafd7f82ce5414c53142d46318ab8baf355bc0adb610ae6006ca6c34255a6ba98aadb83ed1164b6654a64506a45f395866a96197282689c61f174aa39aaeffe965844238b1ed691fe59a6146c46527f2935a8a94652ef2ec9a226f382ecd7feabe6973ddea04e7c314f6020a3790653ba25fbbcb2570f28b222fa827220e45734ee0a4a82a20a52a29324756f46b3dec1e6f9460653194ee264152b05cb8ee86143f2c8bce21df10683de11afc28b5ecdaf08b2ae1ae1de21eeded460d1d27f539579c9ab0505899715d163fa3c86df6b287e4b0d18563c2a6a8aaca3fa806ee12536f7c86c8fef7380979bfcabd02f1fb2a590ed4810e3c02e6c8fd223e9542e3f986b5a119265dae99464d30ea19c7767449a2684f36bb9bc768cdb02d2bf742a2736674aff9754f5effe153e12b0d8d145877f3567152060ba5a717428abf3206d75ed7673adc91927ce6018f35566ee93744822ce5f5fd340cb57d644d061288b40b54a9471626b4aed53f77243bd6143d56541f16b5eb19d75b24732c27ac4b60a1554654ee232a9c1c1d4032aeab2a289d1b8650454cbaf185ebfe1f1991e51917949086a5e8997d5dfd42dabf11baca658f56899818027e6237ad0eb719927f0b226caa56e3d69a8dae0c1c127b48c574f92ce8424a88a20e1154e53fca1801cf4898aac0474afecf5c956ccbad8943e686bbf2eff82962b524c7406e3d889ed0363f966cba4c2982f20f52c69e7675bd590edfc75a21ba84bd2ae8cae17ca5285b22dd894be47ff156a86e7fe177c1367de96f12e058fc00cfc32fc5ba60d9a0aa1a508d72b03d17ed31ab0e2e06bba6318ed0dd1bdb59ba4f18cde6f79e2be7c2dcf94e73935667cdad11d1dbd8defdc406f52b5f269453a4714f38c2c4992ec1c8ec992242a8a2849f26d6bb9e80da88ac7c3df1acbe7631f652af6435e9fa3574eda69ef39aa5c97a9c6f803aa3ad2144b53cca298d55427278527892c7f48090aef1ca5795b1d984ff57d0ef1a3d00b338cebb914353e9801628628d3db585a59a78a5918dd00e69acc7e0b4609d3c9bfeedf11098d84ec721aeddea81538cd61d0fb736f10f93ea5abd825f6c9df33c7ec68542472301a550821cac6133e1ef1eab6ed55721da291b57744fa8d7b38c9a33b51e6ba204b1356782e9af75ed5b5898049d4a8ff1e33bec3e7f51a3db22011d9b360689a3f4a79d263685ea39b621dad3c5ab0c927c08f411a1e06104b43d4faa06d77800a673ea763a80bf32989564e0ad9d4c748e5aa6b21dfb96a9be6692506b08055367ae9587454da7c1cc261993c6977068cd39162f0039ddb43e1ce3b1ea6e6c629de6f105f2a443ff27a2ba26959a81ff67196f13151e543824e4e2b32795248701d62d6fe66a04ba9e9bef0764f78fb764f50e9dbdd67a655ab3b526cc9aa23c0d4d8d13cc22e29169446385ee81079a1267abe4954ec70b622e09c790e01bf063df01840cd6eb34f1d3f34ed78e33ea4dd9a8e24459b2e65506dd0992aabeee1f28ed5c69ab36bc235dbf630867c2885da139dc88cdeb2f59ce2fd47d5cf27444c502354889a1d45c91f92063a429d68257d629755c97265c92755e4609a332c3e8e8a24cb0af6f27e93efe764c92bc95c2f6f197c8e53892ac95c0767197c17cfc7bef78cb4ff69c5ab3e66f8b392f46e2b6f07e322e9ec987abea3531253a170ce7cd12fe4b7f749e210913d87845ff5e8a2f6824834f90f29f6359110f1131e51d77e4dd688f8b826ea9e173c5a5655462f483e70e7659fc38fc20ed80fe7e1dfc025aa675324cd0678488e8df8a4d7c7f095ec380ed5865c138eb1c919af6ace3f649d581566cf39469fe3da54a8885239b3898e761c9dd161a9962e0fd04f24f9504ae59da927c72d2ad9cda77193450fb113be6e7b206a47638950af918f124f51d575b5286b7ce0983954b2cc8c1e37d3c16e5e93e9955ffc3151145d51f0573dbac66bb64f88fbbd217fc0e7bd53d1c21d5e655bb023212bdbfc18300a05237a8b82b784cde33caf9b5255ed52094a3b756b20e22fe48bee9346e58c3fa8eb7e232febea92aa2be4a019f6183e254a624471b2568196d41549451488e9459f5ff22ab27e8bfc71655b902b99552ba86bc1f8a827eeefb22789a1716458f392203968042bafb19b9bf19723f81c5810814ec8396baf5c0f92895f7388239bb49362b292244daba58570b529c9d21a2b9a254d296c8abc711feac71bf7e2d71a095c4cb078895176faf67f503d1ef53f68bef798b198f91edf8bb3572e8eb0080c2f3bb96b5dfe6fae077f174250041099faa7dabf5a6243adce47b4d9621dc756f3e19a2d1b427cc5f427ee3c52ddb9b37ae86e3310ff6d6fe6d26ffd96adfbab439da94087204483a9cea1aadfd7f1d160b4583874d7d0d09d87b3b974ecb7bc7ff19b1fb123f18ea14a588f0a42d41ba90c45e31dce3ae60deb3b1e820bf0eb2c86f786ab65deec6a988d81f4d675eb62d26b91f7b57551dcecd96d918cce1b365d4573831533ba7a4a576755fd3ec5176c5b34b3cfc91cf94254e04c4e887282c0ada1dfd86c91cc0d56cefc92a275d306d5ad298d77b7d6cf3c12a679e1e28687bba863637ed919eb1e841db00fa059c3b5910e1608e58479b6496daecf7168aab56a36c9c6cf30c9c259705670c2797f8d1e85707460201a16d6c27cdd9cc63584d4aec3bb5208ab2e72692d32786f6d773cbebbb6f7fa9ca1934343271b2f3b27681fabf739311d358008aecdd4d35a88add962fb86ab5bdd585467fc104fb0e0c14b9d3d3d3b7b7ace75d99d51b34b0f68ca67152d8097dae6f8cb8d179ce8c5b79fa02577f6bc2cfb117db210f2198aa629862fb4d97a5dda5bdfcba2c3db97a7d81b83ad37468c579216ab5db6ad2ed72fd4fd606b196edb92dcd1d620f86533566c8cb290cbc6a2d5d9d9dbd9793ce4cff942aa5791de2929deab6b0b70773711f2176b410bb1c6b77ef6332aa4f4d6dece4951e3549137544d521449530d68ee69d5aa7337546e1e539a6d4ed39164dbe4dd96d1a28dcff86d3b65db8338728a57f9a7ba7995efbe5130e81bb474ca7eedc4299e96e6bb9b73de8b4e7c638713a37bb0b91e672dc660bdf00793eb9b428d11dffa50ad904e526b05795b495c8c998d8b942e43756ab0c009f7375e6aa282e0089f53e02946e651a73e93bcca1f6d2c260ca74ae084c8fc98dea5522975b01f73423166ae42b3c42c63cbe3b486933c7ff404db9b8c1b695b2f7e47cb2ffa4df803f832fc5ff0fd4dbecf7af1b3c47fe162818df7676f92fe972e4ed8a821d6459b6922df48f0a2c8e3222f365e5e8b0019bd19dab8b286e3c5b6fc8b6fe1216de869227e97a2dfa58f5b2fbd0e7d0e951f6905abdcf870fb2679bffb26ef5d3bfc7aabd503bffaf3d52f72027e158af030cc318fce310a0975a189442436fe12e7d83842ad5a1b466a41b0a1851c2bd12aecdc2715dc12adc2ce7dd538929044748ee8e894a0d742f803ab1a927daadd17e9cb0fdc63193c0a9ce8f5f46e9adba722f23cf25effe15c57c6ca27f4b0e1891bd2e6d9575055a2fb8a3c7afd2a8a9db11319d98baf581eafc809c81bd63dc55c5fa4cf567d72a8dabb696ed908eb89bc95e9ca1df67b79fa0e542523eed93cdb94bdc817f7451595f3ca999efc0e1155473fb4e6a64ce8842cf4d3fe72ddcaf87c2d3454b3a554ad153a9eaf96f3b59099a7fe75be3a446cc9b4496edde2964c255c0e5706665f6431890f5454b5d239e666fe9d936a5b257fbb93f11a8b6e7c715da9e63d4ce77e191fc7579db9c3617888f596a4654215b0a9d3f2d4b474e6cdd86c59cd59fccde4209d73664c2beebc5b6b588b7923cdb1bd4ab980682844574fa83a519ce8cf4b39c78beedeaee8ca487a574a1613b2cffbb0d727274439b52b5dbc73c0235b86e2f3709afcacac711e9f6258b267e04e33266bbc422d2285d7642ae73f89e6145dd94e1df47f93da95ee0c7ab2de506767c89bf504e2e95da9e2c09dc5eea81135753b466499c46cdd8c1ad1eee29d4e7ca7ece80e70d6fc34fbd55330068fbe89f5131ba2dc2a3749b7dc02eb3a644b05b9ad7d25d5f5879f5b716bc3dfc655466cb90d5b68f360d318230f6c82f97dce2366d69dc0dd5be17bdc3e7cc5f1849290054092cff95047cb6fc6913a91d42daff8cb05e4f37e1bfd357f96f86bf88b5ffe03bfff92d7b0ba7c2dec954b971aaf3d85934f3d851fdeb14b242352586f2cfa230a69a630e18f288d0b454c141bdfc544a5b1e8a960a2b2c9fcef6dff9fccffa6536c6861ab60e1ad677e1fbfe4d3341f3dbcf539dfcf85c3e1f0ba35675dce7e233758efbcd99ac3e9d6cabae92d171cbee22c7e720edfd87ac9a16bef3d87cf81063db0036ed910f16e9b7d98da83e55d58a911293780393652405d32ab765d6b29e7d295a16a2569864a564ac291e8b668745b991e42da018fc787bc200b92ac842459d37cda1bbfb842db357742d5f5b9c6c581647200d9b1182fef2ec79dc32b9a266bdd2a2fa020c9b2296927b51fe96ae3ffa477e21daadeb8921c706eba38c07ce52fe38f9c18e86db42faed6aa54f315a82f591bc602a69b5b96d8b4ff8a634d47378a1fed5d93199d24ac9e5bfab35d41d9da163ef4c4a1434f1c0a067b87f64cd43aef296e1fddbe7d7464a8dfdf1d16e4c4fe9ecc7040ed4ecb872ebc74e1105ee3c32787b6dfdfab667a9c752ec0f6be03e0f6e17310840e4840d15dd739010bacb7211b56e261a5e4741162b2e64f8a1b9ce35ac94a939b0c50b74b124d5b1bae73dd8da3be88d8a7ea491b97545dff45c3102511171b8f205e6e7cb8b5763379e244f75af4fed58d7b05ad3fe0c580aeab8d253ba9ab7842d51b9f7be30d5e144519c31f27e2282d352a9213dd13adae67edf0ef5bd88116e6f2ce196bfd28d46017ec850370041e81a7e11df042dbae519433c97526a37f5de871d26adf92c39f2f59e96cc94a07d3959298ae94f2e9b507f84b6b3790f4ba67b63d84de6da7d9965425b692f6a8481a57dd450f9ae6e6e04833a73b91688c3ad1bf783991e8d658695a9096d13227dddedd3d37fec7a54b4b978e8964fbda239a0f5d85eb5e03238944a271993ede7d28b0f348d90da46e9ec3b32361221e6bc6447f9fdb8797e11eb80f1e72f6ee7c073c07ff07fc0efc1e40b69dbbe94a697d721d63d631bbb431d9cefb0ae5bd55b2d2c974a55449574acc73763969ad3d8da42ba56c7aed5d950dcf6149db7d0a57763971aac992c58d3cbafeca6b945d8dc5c41ad716d9693491c0b09b3cd52c7d8a7dc444a2757f78e32b2e6f7de572623191584cbca139a534f7f462f3c5e1762a17138b09b606eee7ab7fccf1f855b021eac4d088cecc8265869c015c27482d582d2056ba304ffb381fe6b3f8b9c6a85ff505e6123d7adfaca26a1e53d8c55b99c64fb2573ef4922819e4bf4ce365fcc2929a4e91e2c95007efdf3dc04b1e1b9f0fc69546ff3e9fb5f73f119f287dbe7f89d98c6beb727b9c58a4add79d6db47c36a4b75804d5ab9022b50b8b44995d43b75c7d16be4c4bac3fb4ad1ff640985a2ad97cce11c2bd582ddb5bee9d850b57b47058bba23db5f9cbbef518d1f56bba4eea24e6d994f8757b3ab8ebabdeea9e209bee29304ac4538eea3e4545a3858e6ea9edaf5d5796a2ff716bc5cfd614be819f77beed113871c3956eee04749b8a61d1cece6e528e8f38403dbf612c0dc5b165f36eb5eecd506d4d20442c88c4502cce2791489747f1f28a1013900b1653e162e7be482a124945b61284d58ea0c74b049148b4a68a6d281a2a22513483487e9ee32d5e153a3ac2dd57fdf42911d8b086b2067b6f58dfdc00356d37c60797d804579ef687a12d7734dbae19914068a87c8720cb425e2489224ffa08793cd5611bc656f5b92b14dfa6e6c33ddb88f886a309ee97b497467c097f6baccb91313f5850801a8c3831b5e9f5e657de4a5782d7afe3b799e3d21aa46bceefe0a74fea66e3c74d01b972f1674c9c7a75f58aaa1fe7844f66cae5a3e572868d4be1b01390cb044a33474e9c68eece32490db189e31cd7f83927bc466f395abec806c39a6bd2f6e1ab9080328c3a74539e366395ecd030e673b561ac51cb9c36585271aed9ada5c8b58a4daa1bd6dfb9068d1b84d31e7c5ae5862ef9f2b15b8a9578a6bf3b90b788825ccf602cefbba45f3dda3de80f06a38699ebdadd73f8d2931e55d29a957a5e24b219e0f97b9b6d4ac4d425bdc3dac1fbfcc9ee5dfdb7453c9eb4d5e1358242d5ead02fe9ddaf4ca2ea8d27761a7667a6d469ab124e5efa012f0984f435b94a4441e165956bb6d5a820fdebc5b4569d69d65c3ec7e6f9deb267f349458b2a918307234a54535263636fddbff9ac1616b464389cd484b05648260170b5b17a15bf82afc27b68bfec58e03eccd7e877cf396b7968bae6cc4472157a4ef9d00df6c8e79c19638bf62d147127d7898e8eff49d6a78914c7ea5ecea2e7a1bde830854affd0300ea013274f11e7bdf8d9fdbb1485d7957beebaeb1e45e75579d77e22c886bcdfe26443e78da38724f4faa59c16d07292df8bd2a1a306af1b3267ed970d5920fb77c9ea9bbc9df8b58db73f9857399fa1705dbdbd5d9ce2d739352ff87551c86d970d91c8f7f79edc25191e52b85dd634f9f602f118d2ae93bdf7cb4434e4ed3941d4fd425ee574ff664f507c6fee09cd3df4d6fcd09b8e7dacdbf024baa67baedbe4a47df801d8debdab5fc2045e85104096d4f27bb192927c1cfb7a12fd789878c69e78efb0e213f7bdecf5a1f26884f3863defdabbffbda7cd670f2acaf316678695b31ff09a443ad8a4fd4bdc36fc13e8843c80a37fd63f927e6947c072c4ce3b2fed42ce78799f64dbd2ba97bccb13f672914715f4fd9afd8c43c6f07bd1b29ed7645973dffbb26649d2c1839264692f9f55c2e67bdfbbdfa1ec59135a36c0ab4effecac77c8aed7e77bb14a2aa520b36dd37e670fc2663fda5ad7b838811adb48c65dc288c6a2ae4ee2e8c6fd517a6eb41fe8c655985bed048add6b06d4e6db80beb0665f09cef7fb09fe09dc07ef855f838f02d879da6cd93603b974bee06c36c0a258f6b2500e1698ec446e7439edb31aa777844a76dc093a3069aee47396b384a8fd90937ca863ae66d7869db65e75371fcb179cc69d1b40c7cc7096cbb243dce93942b576d5ddd273df3391e7fa7d71bfa021c7550d93d37a107b34ce34aa1c879ae08ffbfa391e4d291e97d695adf869598ea365fd958d653dc1a09cf7f76962d82ce50d235f32c3a2d6e7cfcbebf2d1d7bad091de9572e64a53bbd26c8cb67b90438c294ad42873bc8091849a4601d36a228202cf958da8a2c410b9419fa6f9de7cd113030341cd131d34932824f46e3d2160d21c8c7abc81ad2e582e598777a5ae3557bff3ababab5fc6457c15aab017e601b25577bbd43e4c35a35e37c4a5c4b1b5bca65a29e79d5d44c5a69921a64d67558d6512a93d7e913eb0d20ac71db243248ef4cf314dbe450c4e51b1a3737ba8376376f965cde351341671a8e822518b1e41541423d61f892a99cc5063d48d531c9914399d17254f972870bcc04b1ed90a79825e8fdfd4c271a3239aedd40d5153651f7a882ff4fd64dc9fd1b7853b14d14b38410e7a97bc4185287b3d422463c4221d15db2ea7a2032c40d1af79494cf67aa35a50f2483e53353c722cee31bf20f28a2a109f9126699f2faf856361770f56cac721380333948f8e3d4919d48ca6d5b17d91746d2d8eb6c602699df059b2163f4bedceb6286ee70e77609ec5d0a6436d61b4dfd2873219251ae98f198a220a9ea23aeef0cfe3e735af1c889be9ded0f6ce0e5415ce3828ab9a68e89dd96887110f6ba6dfe30d7a4296ec917881e704b1cb2389bcce899346c8473cd8f80c63c847c3d154d9b62b1d91989189089ebd8ac3405d1578a2894a47789b9ef1c72d5f9aa40d1f11548517bf607ae231d963a8a64ff248412deaf5ca31e2a53cd3f28fae8fa35debf3f6dc78c713dbd932ee46db166e61ab178787d96e60c3c36c4bae0de92dfd50698b1b9a6977ede4ab6e7ccc01b80dee01d8e823d736ae916f8ed2b5fcc3b525dac348efe8c274893545bbb9bd62e5eada50dadae8da2fab3adbf77cd1d9f15c576f4d919077c21b22a9afbe14e0f88779eeab8d4577535ca1399149c8daa4e6a8ae6a22695c7114d509226aaabec3a3699e1d9d3c7f7be3b3eebeb9ed7e55370c3a3b8c5cb7ab1ba1e2ebcc0ad14bce82d95c7918d7a6dc2bce96ed43353b8e9da863eabacd6a6292ee8f069dae2a18f5eb52acfae00bee7eed015fa4eb7857c417e8d87774df868ddfce15424650eeca3a5df0d12e3968840ae71eac7e9cf5c37f1df3450462594488f862a17018dcf8f72f7388af3aeb9587a9cdda24dc326dd7096efa1af91cbf6ee3ebd6a61aadda58f83b56aa78f7e9bb8b29ab100e161238912804c37f99d99dc9ec3e4a0f3ff67b1b1ff6fae3e142f1a962211cff0d6960e7e0ddc5e2dd833b07246fbe2b1d49140a89483ade8de0de727477a6f1acd7eff74622ddc49bc9784977a46587b4e6b536d9eb65636480b399e7cd5acebabd31d8461f6ca2eab1e1615e08f1aab0678fa0f221811fde23386dc149dbfc06b3f08996bdc89ddbe28e56eb716d53b72e912d6bb207939bd18797377bf73f346dd1450e21011e003149e58fb2c29470b1e1e817bcea0d0613ad4d8d9a7baa5c7523026fb8175c2569bb0396c94db67d5b685cc591d162cc5cc491cdb77abb36bb68c68ace7f39f99bd67f77d35affe90d21089a8b7340a0cbc579e870fee7118bdfe9807d2e2e82071e7471096c38ebe22af4c1b32eee8120fc2ef08082e2fc37992fba38420ebeede21ce8f03317e7a18ab28b0b50c561171721840b2e2e41017fc5c555b8173fe7e21ec871fae199f30b897d4fd6e767ced5dbf144257178ae5ebfab7ef6c2f4d8dc26571237bf746f7d6e7e6ae67ca25228d2526ea14adb738fd4cfd7e7c616ea1389d34f27e69f383bb4b0702671666ee65c82de509f9e9e49cccecd3c5a1f5f284c2e2cccee1c1838e3e617c667ce6df98f18dfdc3f685cffef19ff79ffd4f19f77d7e6ff5ab2f9acf54faa6c41ef11a8c379e73963b000759880049c86a72101f3f0049c8521588005380309380373ceb312ad37d4611aa661061230eb5c7b14ea300e0b508049e7ae59d8090330e0584aede50b30ee3ca9f54ff1588cee263f1790431e0514514282322aa8a20735f4a28e3e34d08f010ca2891686d0c63046308a1d18c34e8c6317263089294c6306b398c33c76630ff6621f6ec37e2ce00016711087b08465ac60156bb81d77e04edc85bb710f0ee35e1cc17db81f0fe0413c8487f1081ec55bf056bc0d8fe1ed781cefc0137827de8577e349bc07efc5b7e129bc0fefc707f0417c081fc6477014c7f0348ee304d6f10c9ec5499cc247f1319cc673781e6770161fc7399cc705bc804f8036363131579f9fef3f3d33f3582b313e3637618dcdcdcd3cd93f36bdd03f3e35373e5def9f9879f2fcf5b9d3f5330ba1eb72e7a6ce4e2e04afcbbe30ab9eae4f4ff7cf4f8fcd4f0a1495e98bcf8dcd3d269fbe30353d3175feac363e365d3f3f3136476fd45b89f1c9faf8636bc97353e72fcc7b5bc9d9e90bf36b1717a6ced5e7e566d23f3e36575fe89f7ffcc2d81cabc5fa1c5a83c0ba1c877adfbaac0bb3caf8e4d8dc42ffe9b139cda1c5ad939b60c52496a78c4f4fcd9e9e199b9b10c7a767c61fa3c7f375fff8f4cc7c7da27f7c6c76616ae6fcd4f9b39ef19973e7eae717684d898bcbee799e66cc8ecdcf0be333b34f2bf4e090e5199fab4f4c2d38df489d9869b256a099defaf927ead333b3f5fe99d9fa79b99952ea4fd719cbe53353d375fa368d2173e393534fd45596b8303135a338e8f8cc849b597f6abc3ecdd0a9736367ebec01b313677c0c9979b23e373b33757e819579626aa2ee3ee3c999b9098162c299e9b1b39e3333d313f539872e89e1e299b99927cf4b672e2c9c9e99e6cfd6cf7926c7ce4ff44f4fbd9dd6ccc167c766eb732e5a1f1baffb184adfe77cc7f634fd8a465bda6196b72de3c2acb696aacf294e626e66fc3156687e7c6a7e7e666e9ebd6e7e7666fc31a7c8fce4d863757e7262429cac8fcd2dc89333f3b3530b63d3cae4cc85b9b3d363f3f3f2d444ffe9b189b3753235e17c16d16195e41ce7e5c7ea4f335198ae9f9b39af4c4f9da10276feac324d293c7d61fab43c3d35efc8007f6e6c963f579fd41ce976654a3f3773befe74ffe9a9e9695a46383733735e395f7f72dee18e36739aaa98feb373331766753771e1bc93f43825fa67a7c7ced7b5d9b10bf37557583cb3d3634fafe1ad57f91ebf509fa7b2e95e53e7ea67a7e617ea73f509617eec89ba363f49db022b2cce9f9b9aae2bf3e7679e3c333df6585d62d9cafcc2d85cffe4d8f41981629ef985a9f1c79eee3f3fb350f7cc2fccccba8fe6e72f9cf72c4c5e38777adef9948a8b5f98d59cd6eb165316e6c6e62769bd3d17e6eb734d61a7b8f6e4d4f9899927fb9d56e57313e7c69e9a3a37f5f6b5f4d47927adbbe9b9fafcc2cc5c9d76f3ff6f000000ffff2a759282b4790000", + "18b5bbd8768c777033d715258b270deb": "1f8b08000000000000ffc45a516fe3b8117ecfaf60b358783727299265c9897c59b4bd97b6d82d8a43fb74d8075aa42c622951a5a8d83941ffbd1049c5a24cc909eea108125bc399e170bee18833ccfddd9f6ec01df8462825070e0bf01c78a1e7f7b45c88aa4eeeef8b61cc3b1091377b8fb01b70d773fcc2aa174e0eb9009fd2cf60ed075bf0cb3fc0bfa06084f63ce02b49715963049a12610e448ec1b7bfff1b5045be0177f7373777ce5d023381b97397ec71c6386ef7ece4d6e477521e1252e69813d1e5a2a063fa9e7184b9bb67a75dc64ad1937112afbde863b767e8a54d19653cf910fb71ba8d154b060b425f92d5af6ccf045b3960f5374c9fb1202904ffc40d3628fdc35f388174e5801a96b55b634eb2d15c8117e3423d1f71ef8324f4fd1dc54260eed6154c7b2b3d3fc0c58e9212bbb9620abcb8db5396fef86fc344bf52b90c8a3391f85ec871016a4609021f50d0ffec0ac80fa4d40cc393f479e2ef2a88503f4dd0cb055ec47131520eee120a6be1a639a1a8d5a27b26042b12bff3f68d10ac74f40729ab46fc265e2afcb452a4d57783c8718dc5845637fb8288d5f7760fd31f07ce9a12b9daf18ffb0d4ae14ead2ff1bd60b43463cce51091a64ebc0dc7c54e4b6759b64b1b5e339e548c9402f31d227545e14b424ae94eb94c038e7e06038fadefefb4d743efa11f9da22345c6e868bec1af3e083dbf27087c122ea4e450262996e6480ac229e350105626252bb1220a0ecb3a63bc489aaac23c8535de1d7322b09c1727253b72580dfe4f329636b5333ce5ec1973c71832466c30693eebd0a594c6d122348c5cca0c385b845e87a4942510f40ed4609bc411daac113d10e7c0fc0d911aee2946df9d0b826da933c37a5133a383f5e7e156871dc2196ca8d8b13e56c44be245978699d88de863142fd867b897d7b480f1a2a68be5cfe3bea8e7d2510bb130d5742d3d98c4c1cffac3d591e1d8a9368f2cf1e8c52eb10ccb98f05cae42eef40a725c8add5b9660c6cb74701c3476c125b937f8612186aeebb4fb6d3e9aae6b9c71f3425c59752ec3b29476d4d30c5673bb7c9e6d01bf991c704dd71b907a538678cf3c76f8de923fde33cb0ca26fca2e57e6690dc8f5f171797ba614c329728ab6e4cd4b8e89232e19a64b901cef08e037271ca9d81eb86ac816ac63a17999ab2e794320cee9b339f07ac0cd69b37afb0d8135d2f7c7b0b12718a9fe5a7a9932cde27525b5d8f55cc5e65d69e5fa1c36c0de9352aecf60c5f05de9c43a476beeb294a1f13120f9906db2288bad95ccb93479883feac22df181b71e1718f209c8c2cd5623547c693a4bd1a88f55bde9196547f725c90942b8ec357d51d61ba6faaf6595aaa72c05a56157c571970f2936f1074b04ab26259eb6542f5b5551c0efc600e002123a2928cba6d8633e2156b0ae8f8ca369f189214ff30951e0a9cabe269b901ade33f5039063e8d498e254b4ee11ef7f10e1c2aac290c352c250e29d5bb0df2f88d3e737e4898987747d6f0b1dd9e6c8216247adfca21db2b3d7ab5eac709335eb9120912781ef7fb4b9ddb22306e75b86ce10d8769206c23224e1b0d24ff6725242a3e90340fa51c1a41e5a5be130aa2135a4a3bdd370fa6985a0800929e001dfd7cf879f4e05dd35227b707eae9f0fe054d0b27ebacd85a892fbfbe3f1e81d438ff1c3fddaf7fd9eff1628af3fdd069b5bf04cf0f1afecf474eb031fac1f414f932e7fba5d3fde7ef9b982220719a1f4e956637d0bd0d3edb7472fdc6ed75b107af13aa291e73f04d106c4de6318adc3afc1a3176dfc3056c3b7f75f7eee67feb2fa0c54df01a8765bc95c8e2b0cc500bd6e09a98dd699ae3a87a65cfaffd7150aaa3fe48a6e088cb620e5d0b98955f78bc23da60ec5075ca2d6cc6d46ebced62b323b644a5f463045351643c0a94d75eebc99292dcd71fa63cf4ed3d6194484adbeb7660babf3a4b1ae7a6ae7fb5bdac492f10252a321a86cf452560a484accdbd7d70c6c04db15f0a40d0e82b54a0ae7ced6406035910d2c8e2914e4198ff386c7d9f1d5b08ce2d3aeffe322c2712a8552469ba23c6b9d0af7bf6ec95ccdd09edd6619fde2297536aefe75d8cac9fb6f89eaa00d838255ad6cceb944e0a29696bab5805c9c7914aa976cb8446726b5c70c26453ab3d4826391e6068fa68d26833596a08eb906a26403c35a27314af129094030e067f67e5fd1f4fd8f534f0f0af587cbb2acc6c20dfc76ac2558e65e9bdceb2bdc91c91d2d7287a1b334ba317485a1178661b8a830328d8d968d8de3a5e9e3ada12b8ebd388ee345855b73f5dbe5d53f98c63e2c1bfb68723fce7007bedc12499f7603ffa311217689f548626d48cc61bd8e4612912131b3e219a0c3cd59d100ef48db22e29b91d91bc3eccd8cd9d148223224e6e2241e49c486443c27610fa9783b52a40369ac6d29b6b6236f6f0d6fcfc5d7c3c8ec07c3ecb9187b1c493c1a12d3381b3e4709b6c6349be6d70b7623d79e2586547bc1afd3ae5bd4ee8113e4f629d4b86c1969d2f9f8cf054604824ffd0940190f36fdfbec732bdf5993d71467472399bac611398534fdd42752f0937e2b7e3673b47930188ee0e757a9d2d675d02c17ad7744dd709c856685a97b05883a8c3a0d6d29a9855b8b17aa0b0c6d83acb45e0f7deacdd0210a107510054cfe6d7a1d406aea294c521a496924a5e929edf93ca4a2409e1c54cdd7e713f5451f28996110c229292005a4ac09c29d696d4a784af13036b96544c841c2a164e252edc0e1b0a50e4ffac0ef9c4f7b1399c975a783a8939143c3b193315ef47eac9c8a6347f4157def5353c15a2990a3c3f16eb819340e320239226f5f2f9cd5fda951cbe1a0ff3957cfaaacd7f5f3e8eeb0c7ab1328c9081fee651d918f1fdb09b4028dee707bded18dae79f4f7bbbd530bceca433b3e35ee19455dd58ec3a7cb03275f3b79e8e41b278f9c3c6eaf5c63bbeaa674ea3f7f441c348fc26aa38ed9e6edf7bacbd7239ed0ca13757938625aebdb5b8329ecf28dc1b3b6dcf0ba9e6f138dba3c6ac7f580ed76d8f5fce85236ea06778d4b8989a83f11da74a438b4e601aef364c7292327f5df0fad6a3bee99c877fd811e97225981d56b8346c669e765944121a3a3955f554c69b28c044d97dfbb9b9bfbbb0fa0660d4ff1375855a43cfce7d7af4fe77fe92848e9a575ed15b00277f7ff0b0000ffff73b4c1130e220000", "1d5506532a7b6f61be779b2c3aaebf11": "1f8b08000000000000ff001d40e2bf774f4646000100000000c55c000b000000019d3800010000000000000000000000000000000000000000000047535542000001080000003b00000054208b257a4f532f320000014400000043000000563fb850f7636d61700000018800000f2e000021ba50208628676c7966000010b800009f8100015258fed8e47a686561640000b03c00000030000000360f128383686865610000b06c0000002100000024043a042c686d74780000b090000001df000007d0ad4aff126c6f63610000b270000003ea000003ea19c6c4406d6178700000b65c0000001f00000020031e01026e616d650000b67c00000159000002fafc8f9eca706f73740000b7d800000d8100001887cae8b078789c6360646060e0623060b063607271f30961e0cb492cc963906260618000903c329b3127333d918103c603cab180690e206683880200263b054800789c6360647cc4388181958181711a631a0303833b94feca20c9d0c2c0c0c4c0cacc801504a4b9a630387c60f8328df1c0ff030c7a8c6718dc80c28c2039000a4d0d3500789cedd869bcd653bf06f0ebbaefd264c858488f12320fa50929658a522225259949940c65ae8c999a8cd51342a624b30c952153111e4292a888586bdd7f9e4c79aeb5affdf1e638afce8b735e9cfdff7cfbd5deddd3faaff51b36809a00cab2abd400eab603f537d469a9efb2eafb65d4adfa7e8d3ab50176d6376ba17328859a61c3b069d83c6c191a85c6a17de81cba85bea17f181c2e095784abc375e1c630364c0cb78729e1ee3023cc0a0bc3a2b0342c0b5f85ef4211d6c57a71c3b8716c141bc7a671f7b857dc27b68bed63e778703c3c768b7d62ff784a1c15af8de3e3c4785bbc234e8e33e2ccf8449c1ddf8c0be3e2f8695c1a57c6efe3cf715d62aa95eaa586a971da2db54a6dd361a95bea9706a50bd3883426dd98c6a589e9ce34254d4bd3d3d3e9b9343bbd98e6a585e9fdb424ad48abd2eab426a5f473faa552aeac5f695c695e6953e95be957195019581959b9aff272656ee5b5ca82caa2ca8aca9acaaf953f2a7f16f58b9645aba25db15f7140d1b1e8541c541c52742bba173d8bde45bfe2846260716a717a717631b418560c2f2e2b4616a38b31c54dc5d8624271eb9f7f0201a146a815ea6b151b54ad6293d0311c1aba6b15078473b58aa3aa5771bc567152981aee0d33c39cf05ef858abb83cac0a21ac8d881bc4fab1a15671dbd82cee195bc4d671ffd841abd825768ddd63df38208e8c57c5b1d5ab38293eac559c159f8d73e282aa555c1297c5d55ac5b509a946aa9b1aa4ad5293d422b5491d52d7d443ab38240daf5ac55baa5671729a9a1e484f55afe2dc343fbd973efb6b1563fa49ab58aad4a95ac5d695ded5ab78a556f1a5bf5dc5165ac5b67fbb8ac7ffb58a838a21ffdd2afeffd7fff08b3ad587b20b7bb3bfae8155d724dec3197c55d732aed5b5ce57297fad57aa5d6a5c6a5a6a5fea50eaa6ab7ba9776940695069646974e9ead24dbac695ee2f4d2f3d529a557ab2f482ae974a734aef9716979697be2ead2efd507d85d2cfbad696d695eb9737a9bab628372defa06bef72cb72bbf27ee5f6e583cbfdcb27974f2d5f541e511ea76b4a796ad535adeababf3ca33cb33cabfa7ab23caffc7af98dbfaeb7caefe85a58feb0eafaa8bca4fa5aaa6bd9df5ecb757dfdb7d7cabfae6fcaabffeba5555cccd63c176b38819fe3553ece27380ba7f1659ec3c1ecc52b710d222ee369f827fed0fadecb8db839dec2f75cc595fc867db00b1fe2c3e8808e3c16476321f667898f7126d6535eae859adc84fb611dbfc66ffc07ca9c83a99c8827b1238fd4dd1b87f7f0146fc5dd381f17b00777e74b3885c729578fc74ed8068df10f34e2f998819bd8937ba2191ec2c7ac85f97802b3f030bba22b4fc01836c28518c653790916e01d0c444f96712d6ee078bec0b7f8316bf3701ec68f30966762350ec3002cc797f80acbb025b6c2d668884f98f8085ec3c168caa5dc00a3f0366ec5cdecc0b3f52e77e5c6acafbdf52eefe7d67c1bbdd00fc7a237aee34dbc9e37e27e2ec28768cf915cc803b93e3fe16dfc27dae06a54509bcdf12c5a61098fc2fad8001ba21eea63636c828d7007d7e374eecd7edabfb7600447631177c207ac8137390357f1646e8a7118cd0fd997c423bc9b93f180f6fb6edc1547e1759e8e21188af3702eeaf25fe8827b702fcf6037ee8153793087e146f4c1f1e88be93c067771102b3c8b11afe0395ecd6b782dafe318dec0d97c1ecf701b4e654b6c8a43701ca6f03b6ec89b711f3fc067ac89a771282ee2419880891c8063f828dfc46d7819f3f022e6e0253c8fd9988b17580fc379007ec477ecc8513c8f437100dee73b68c7ee6ccbef71045af30ddc82edf138f7c7be381127e324cee53cb4c5e1b88217e004f4e745fc8cfbf02efcc0afb82377e6eb7c8d5f723b2ee70edc9ecdd8061f71083fe512eca3733e057ba125f6460becc95658cb76dc97b7e37234c7cff80905fe8d15588a95f81cabf035bee02b3c890bd01d47a207bae14f6ecb266c8aebd9897770042fc6b7ca29ef633fecc02e3808dba10e6ee7e5dc0adf609a3a8b1217e317fccaa7f82c9fe6337c9297620f1ecd1ff8230377e155fc4299e73dce571eba9357f0329e88df7908b7600336e496781497625b34c166d81c5ba0011ec34c3c882b3112ff621dd6e5666cccbdd882a7f0423ec007f922d76037ec8e03710e4ec7193813676110cec660bc8b4f11783cc7f23eaec0cee884ceb81897e04e4cc624bc81c4f63c82c3398dcff15beaa473bdffed84fd7fe06bfdfc47832bfc0f16b997312c56a4b1b562c9941bd5ed18d628d6344e50ac65ca9c08b50daf2ad6313eae58d7f884623d53864558df709ae206c6971537349ea358df38587163632fc54d4cd9196153539e46d8dc94b1111a182e536c68ccafb5a5299f233432fca1d8d83850b189f15ec5a6c68d14b733e6d76966aa0508db1bbe57dcc1b84a7147e34ac5e6c66f147732550f849d0dbb2856e3438abb9a6a0bc26ea62a83b0bba1a3e21ea6ca83b0a7a90621ec65aa46087b1bf6576c61ccf7b6a5f131c57d4c550ba195a97e21b4b63c618436867ccfdb5a9e42423b63be27fb9a2a1e4235ac53dcdf540511da1b7e53ec68aa8c08075a9e6a422753b544e86c98aa78a8a982221c66aaa5085d0c79bd0f371ea97884313f4757533543e866aabe08dd0d4f29f630556484a34cb519a1a7a94a231c6db840f118637e5c2f63be3fc79aaa39426fc3298a7d8cc72956cbc35ae86baafa08fd0d798f0c30750208271af23e1d68c8eb769221efe5938df97d9e62ea1d104e35dca4789a317fa6d38d79ef9c61c8fbfa4c43de8767193e561c64cc7be06c532f8230d890cff8b9867cc68718f21e1e6accf7e13c43fefb30531f8370be618ce205c6fcb92e34e47891213f6eb8317fbe11a61e08e1625337847089a92f42b8c290d76f9421afc36863de7b5799fa2784ab0d37285e67ccf7e846e30b8a638d390f8c37e6b59a60cc7971a231efcddb8d79ff4e32756608930df9f9a618f37d986aeadb10ee36e4c7de6bc87b649aa9ab43b8cfd4df21dc6feaf4101e30f57c08d30d39173e68ea03111e327584080f1b72ee7cc4f089e2a3c6a438c3987f3ed3d443223c6eea26116619721e9d635caa38d79873ff3c43be27af98fa4f84570df93cbe66b859f17563ce87f38d793fbe615567fc4dcbbf21096f19730d79db986bcb3bc67c1f1618df555c68ccebf79e31afc922637e8e8f0df9dc2f3675c5089f18720ef8d49073c06786bc8f9618f379fcdc78bde25263de5fcb0cf93d2c37e6d7ffcad46f23ac32e49cfa8d71a4e2b7c6fc39561b737efdce986b6f30e6f71b8db7292663ae8f1543cefd85219f89b586fcf35f0c799fff6accb5ee3753ef8ff0bb21d7963f0c790dd69926835cb2abe40e25d2342d20964c730362d9344120d630cd1288354d5305e27aa6f902b19669d240ac6db843b18ee58e30d635ea3cc47a46d5cbb88151f7346e68545e8ef54df30ae2c606e59dd8d034c3206e69d0fd8a5b99e61ac4ad0d1f283632e6cfd1d8a0fd1ab735cd3f884d0cca47b1a951f93d36334d4788db9be624c41d0cf93dec68d43e89cd8daa317127635ee39d0d3abf7117a3f24bdcd5346d21ee6650ee88bb1bb59fe39ec6fcf3bd8cf9712d0cf99eb634e8acc67d4c331b626bd3f486d8c634c721b6354d7488ed4cb31de2fe967fa319db9be63dc40ea6c90fb1a36906443cd0a0fc183b1955db6267a36a7f3cd8342b227631a88ec4c38df9e75d4d93246237d34c89d8dd345d22f630cd99884719f23af734e47d75b4690a45ac86bb147b195553e3b1469da9d8dba8ba1bfb98e656c4bea60916f178c3738afd8c3a9bb1bf51fd701c60542d8b271a957fe240a3ea6c3cc9a81a174f36ce563cc5341b238e343ca338caa89e245e65547d8a571bf33dbfc690f7e7b5a6b91a71ac69c2461c67509d8be38dca4d71a2319fb9db4c9338e21d06d5b638c998cfd16483726b7cd898f3c123a6d91df151d3148f38c3a01e22ce344df688b34c333ee21386fc5e9e35e6b57cce90efe1f3c6fcdcb38df9fcce31e4f73ed7a0b926ce33e4f88ae145c5570df971af19d437c6d70df975e61bf2ebbc61c8cffda6417d485c60cc396ca141bd515c6c3c40f153c38f8a4b0c79cd3f37e633b4d498eff332633e8f5f1af3395d6ec8cff995e17dc5af8daaa97185219fe395c67c6e561bf359ffcea8b9295683faf5f8b321e789b5c6fcb97f31e4dcfbab21e7bfdf0cea39e2efc69c33fe30682689eb0c3a032a6f55a0bd9e68d01948358c5adb54d3a8fb95d633e83da75a06e58854d77085623da37ad6d4c0a09e363534e84ca6ad8cda7b696ba3f66d6a64547e4cdb18951f5263c30f8a4d8c5aebd4d4a8fc9eb6332a8fa76646ed9bb4bd51fb29ed60d4fd4b3b1af3e39a1b752fd34ec6fc7f7736e6e7d8c5989f7b57a3f275dacda0de35b5302a9fa79646edb3b48f51fb2cb532e4efb5316adfa7b646e581d4c1a05a923a1af2f31d68505d4e9d0cf9353b1b5487d241c6fc3a071bb46fd22146edc374a851fb211d66542f9eba1a2e57ec66c86bd3c3a0bd988e32fca4d8d3a07e281d6df8b7e23106edfbd4cba0b3948e35e80ca4de069db7d4c7a01e2e1d67d0f9497d0d5f281e6f54be48fd8c79af0e32eacca721069daf34d4a0f9379d67c89f6398217fbef30d7f2a5e6054cf912e34e6bd36dc98f7da08837ad434c698efc38d46e5e5748b31ffdfb146cd60699c41fd689a68ccf7e14ea3f2469a6cd84f718a21efc3a946d5e674b721dfe77b0c790fdf6b503f97a619f23d7dc098efe974633e7f4f19d42ba7a70df971cf591ec8d36c83facef4a2513934cd352807a57906e5a034df989ffb0da36a467ad3985fe72da36a687adbf8a4e23bc64b151718d493a485c6bcbfde33e63cb0c8a81c9ede37aa8f4f9f19f3795d62546d4e2b8c792fad322aa7a7d5c6fcdc6b8cf97344635ee364ccf7ea2763ce753f1b2f53fcc5a8bc5a2919947f2b65a3ce5ea58e710bc5ba46e5c74a3da3f263657da3fae64a63836a6ba5b941eb53696dd05eadb43168af567a1b3653ec63d85cf138437eddbe86fcbafd0c8f290e30a80fa80c34681eae5c69c871a421c7fb0cea3f2b2f19f3e77bd9983fdf5c637e3faf19f3675a60547eab2c322a8f555618d56f55d618750e2bbf1ab58f2b7f18f37bfbd3a87d59d437ea31450b83f272d1d2a07ebd6865500e2dda1ace516c67504f5eec67509f5c1c603853b1a341bd68d1c9a0bc531c64d0dc5d1c6218acd8cda039bae86e502d287a5afe6573d1dba8bc5654a3f245d1cfa8f52d4e306a5d8a8106d5a4e254437e2fa71b54038a4106e59ce26cc3258a430cdac3c55083724d31cca03eb2186ed0b92d2eb3dc2014238d9a378ad146f527c518637edc4d46e59062ac5179a4986054de2b6e35aefe0f61f099560000789cacbd0998244775209c9157e45559995559957575771d5d557d4d5fd5d5d57375f7dca36bd49266a41108a9d13906490c9230020968710e9281c1c28b30570b730c6b6ccb2c6009b055021ffabfd5da63c37a8585cde0d56279f1aee505dbf207d4fcef4564d6d53d1a0998a98e8c8c88cc8cf3c5bb439004e16c933c419ac216615eb84810c8ecfc4e32571927f5b94aa9505413ae97ac1530b1d6cee9c4aab3494f2d56e6e67d4f1d27c50a24cf2f91a49f6cf8832441bea450aa7839afd5f472398f2c4394a5f0f074616a6af7d4d4c3b671dab03d67d81fcc67871d8fe4a932a2d0697ca4b58ae1344b58e6611e9fd93df59c61db46dcc9c8ba4b485c97338ea00af04f14c89a101552d09e9dc225c2aba0455dada8bb7315e545ebdce8246e27b3c944fd3cf7e434af235987b0f5d4c0e8e8b6d1d1f759fa57742b660f7999017fc88ead53e51836f91c015983969e616fc97bb9157cc3b6d1ffaa5b96ee4493b21625c4d5e464d4c7e21a060b9bc4b0e9c2d93f23ff411e132cc113848637486617c9dc2429dac47767078967136dcf1defbe630f0b5e983d323373a4b927b8dd73c74fc8f19923371e99c16e94e15dcf9026f90cf4e59030252c413f267a9bae14f834c0593240bc64bcefbe5ce2d7edc19422ab3a3d437516b41e21eb186dad62d8152707c2223af9d0084631789c5f30382b74e24f76a29d3a3fd15d67b73e370fe39e847aa850af8a7f9e3a37faeebbebe69ca3ca3dd5bfb55de7f76e5ee7b5cdeabca19fb1aed8cf58772511ae405eaf0dfd1c5cc33224afd3b302ab1884ad33e76a03e92ad5ddd9ef69c75a4fbc9cbe8ef7f5357d997dbd1e548555ebe4393af8739d222fbbb3158475e27d00ebaac2b4701860c3f582502ed5e7a6482fbcdb0eb5015851e321afa582100321070310eda5500ad7439d2f8a010093c944bc5db854aff9e271c7bed1f6264238e82cac2cacc1df3476f128a48ce472f72ad282224d4bca82a474451fe1b93b4e4edcb87aab076fe150115e33b2b030827f3acd53fd38161ac9bdd0ff388bb69ee6b9a78fdf08e376b675f64fc5b793af0a73c23ee1cdc20330df26099d05f0a7966693d426a52a552bd023f34be22269cc0f1295aa74be1d490290b4099d8496ab83b827341649ad582927d5a808e9ea2481b20db51da95427c92281871ac54ab5320f45f101bf012fa24515bf378baf84174d1252728ad1a171933ab6ed50733c73ed1e6a4b1392ac6e1b55468b5ad216352f521c3163926dfa096f2a61502351966346344112b61193654bd32c72e7862774affb09bdf733b96bf0338f858fcbc1fb884445259b8aa4d3113fa7176445bd9a46e4c285e317e7a8e826a91bf715d14ebaa2185154035629dd65988941cfd4a9a64f6c2c1af1bb8a2a1ae97df701f618d5f10db88dc13835c5dde409d8930f032caf6127cd628f424fc1e814a34485798a43d2b51d2fc2349c242a000c3fd186be09e8f76ad75324dcff2279b3327cecd663c31533afa9ca5ec990f62aaa56b2c7abd373b8a5cce5861b2b5b8773fc66ba3a6e973ae54836128f67e2f1d5994aa902bf9928e44046b49af1d53f627bb562cc0e5517c4ad2343b386c252fe48f533d5b020c9e3f39938dbb6cf9e3dfb02d9454ec0ce350aedad56e696c8fcec10cc4008921e54bc0893668e37a2ca5ae241c6ec074e50ea538faeae42e0537a827a599ea4beba93d4843f9aa4580a2e1e243db62105f74f580da7c8ab791df8f7f1d33eff3e7c7b8efac959c8807ab42ba37a675ec2dbff7263a5b21babde5f8706e59f5d22ed0e497a8d76f329ef03acd04ba9c3efbda4beda3016ede6b72b333f5b6d7fbadd2195e2efbfa436bea4b12067cf423f2c931186c96c361b3619f8d54dde83fd293cc7fa73f311cdbf94a1ea7dcfa6a3b2710036e9eea05dbb78bbe29bf5ec269d4836d6116b83b8fb19919087833d1831dd36d680bbb0e4f6e2f0d552077bc37cf25c6b1ad16802f8b71db38dd6717677d2b0bfd0c64fc9b26db04210b41e250e465bcf43f85701de0981c071cf27c90be451c03d8bb0ab02aa599c24738b04d0ce32c2a2609ef28d16f64e95bcd041455bdf3da0a9ea9d0058ee5455ed00559615da8598cedc1555ee94a43b95e85df0c5fe6f29ed0fc147e3b09d5702d8d0a1598870ae972d742a4186b11277c8dd95e8ff56f015fe45a906803698fb006b0380dbf72df50e49ba4365df228fbe788b858dfdd868370c3ea9d47b607f82a3d6da8bb7a079aedaf47e6bac6fcca2e1300d7403db70a1778fddc983b601b3e2204d5093d277c1ec7c178558a2ebc3958bff00a7cd1f5c8c191e7d27859f075161431d7ac672aa43727601dbb01eddfd7cae0f2c9cbf9a1bebd033c643a4bd8fd2de3ec0babc943a748ffab92bd157879e715f0a877a6737b00dfb42fb650d05c2b8b3df235f23ebc200cc862e10099f4c0e1137a0785d40e0c8c7011a7d039efc06074877da46deb0efa4dedffb3cf11b0c78117a37196210e3fb7753064201fe9dfd5f40ef7c947da30bec4153d42869930f80ed10f145de259de3fb613bfe17d026ec1bf1ae2d8361b51d200998e9e3c9ce27921a7ca2f57d060287e013e42de7f9c619e8ab87f11b8dae6d00be03d8b3cbe983ba8b08ee395ef3c917f936df2700b64f0164078a10a15a7bc411aec18c68cf0495bcf9c7b647afa4f0f3ecae28494e4e1a3646e1cf36ba6fc2363c2efc33e098f00da454663b330be10bccfcf68caffcf5395fb57ff38ff3b17e5c14e0fd7b3a638da45209c8a770e00709904cf5129be6bc0791bcaa01391576e72401322b5183e540562f854f5e0adfafdd64c7b54b29bd548bdb37d5cc08d1ce99936cdf409559298d44ccde62fd3982a042dd9bd0ffdf1462c26e86831f136e459e0a60ce58b76482e1d0d0f98da28deb132845be6601b9473a283103d3183a30599b45acbc81a8fb3c62e71413a1a72bed4879ae3e29562b305c30eb7df62ea54afda79d9433b57b0a42dbb353d397612cdfd8ddc89b74989a8349cb71ac81d9012a5bbeee4e5db6c6d1f1f7f10bf91699ba7cde4c50c35cbe8cc093ad8fac1457be8ecf14a6a60a704ddaf667a72e9b66298d7cbe5148c7cd92194b2707a134bc573314cb770746e0c3ffc4f1f4357ef9ba282ddc72714c36920939f9babd32bce173f06e3e9f9ae4ffc078d761bcab0026a680b68c02f0663bc910ec242a6e5d80b7da00580761c4a9ca00db1400b679c40ec8dfbdfffdbaa2c4154f7b4022b659316d223da07990a2e8e7cebae3d02125ae1775453dfc29d3b6cd4f1d5615b88d2be7480f79652f90c78403c211a83a0ca28754685069aa96829d0808631851950211c5d11740a780e2e1838ee42f14a8cdcce2d8023c91707634e66b4062411b83ed61cf853b75991a6a4cdb323f7b7876f6f04d8753e9a89bb124514a89b6b545d16263e5e5f2dc8437165193d6d0c523c562fef5af74bcb8ebbb315dcf067bc8889ad02d2a2903b3876f3c3c5b29956787521989686af44d964b956475dfc4ccd6a4eb53794b7569cfdccc42eb74229e4fc69323b1688cf13f02fea80cbb4c4ea8c1cc06ecbeb424e2f28289d87039e7a6ee069ca72ab697631bb3303e359f451a2166c077a5dfd233bafc9f6ddb4fa51f0e39b6c80d6dfdeb56511fd6a4ad225507644ab4394dd20754fa07f5c9ad88386e9dacffe5e0a0e35c9f9e4e5fd7617fe67e7c4ad34e01952c0f0eeac6955b6a5439a5d0b9609f3e0bf5bf4fb0a1f64897c0ca72e7708aa99e5fe8b9b59a7a3a164beb4dcb24a41dffdcba26c62264391213b57563d0e8bdc5ee51d8ba5f83393c25ec172e1056851b04a150eb70b538feec4e920e32cd664950641c9923ca34806b9c4630dd6d806f9c115baffa257ace1cb27a8a6d6e0c053f154bc96fc6c809b358299a2730fa66391523796360522f16f52d834671fbfeedc5b583271fdd98c4b00016902a1d8ab358d475a32c121fa27f40f4e4d657b996e5be6287af91e470127eeb279dcd93199d11e2260961b0bd5a3873d947c610f44152428e0fb4aa07db5eca6722a9d6d9d295573c8b314220d68d11fd6afe8a2b4b84a42299d67731da3a0b5118078e0cdf4756055d880bbe90074a7456d82e082ec3855c00ade5921ba2f705b7e0b7b9fa61a4ba21a592595dcd54c4650c2bad9b89705678043aca83bee2972b7bee48be99a9906528daac6420da6a92e5a398e1d9ab9b5db0ca4e7b8d49d006132833ac7d1676d8925015c66156d58406b463491066dcda2ff41f00434c1fd6b3b1ac8eff32b16c0cffe9b12c26c4c85a6bed17f9e3f4e54f01577b67485ff67370fbb9e9fdf72f8963bea3c3a35ddf342a48b0269f24cfc3fc1b8139b013f61600ba30f72a559556e71b93008b68d207086d631de61bbe4a19afac3225ce572bd50613eda8548522b00993d7e7dc6c662097c93903f17cf1eaebaf2ee6e3030edcc3cf1df0785221feec20400e630882a7060d42ccc1080487ed62b670e9959716b205bb325428970b8395688127e50a7695250d55f346b1541c32862ba3771af9c27051af8e564a82c6d611b6438699e1c0bc181286614e4c43cfaad49ff71bd8045a45762bb40feea222200410f391a35a4554d2c77855fdf6befaa1b1ca2796ae2003b95f9f302e697ca378e5b43cf789e227862e1a2183d9eeb4fdfbea978c93af181397ccbfe71373f2f495c543f57de2f8dbb283e48a257822931383b4b1b7e60621e9df8c89438d10c765fc8543d0e70564efcffa6ad2efa583e864c00d1ee8904a8c0119d22c85766c917428f2e75ac7e291981e911d49b22443be8e5da448c9314b5e614a4300a605208b080108c3d4e6c9483c1a9f72a1b02549d7c9ec626932a41538e4cb27ca769e3dcfde92b7cb893ccbe07b480057a85040ccba9628250af55e194aad4b062ae6f3f9569e3cdf1270831221e455cb91fcf2f2727339e7b19dcbb18d9386ed7839ce97e9fa46f9a57c85161285737e696f6b95ac9fe373ab6b3fd7f714d8f1cff9bdd64fcf9c7991cffdf2bff7b1b5b55ff2f75eb43f3f8d80fcbcfdb90bf08c18406ef85e19f7f652bd9028b921f3ac1122ef4a880c15c411c35e6dadad3256d92a976d93eb1646605f27f975d8cb9797c931acc1934d2ec25e1b59b08d635c967606e8d58785b4500438bb035a58da207e6fe0ea8196014954471913e5e847809974df90e3d3018fce407edd6589cc94ab37a6a9fe0840545bd76fe117b23ad2c138c6868d6aeabec2d45f1a72fa519d9eee886a3b01e339329a6e17e0472e50befb010b533bf2b2328a23541ff1e224ab535d012cb84a90b643560ac2b48078a28362c2f393f89f020671c8ce268e97e7cb85d659a2518bfeb66da0f4caf5c96e6453fcec275464fc8a3b62b3032ad0206a656709cb3931652b152f8f5673d97239fb3fb70c6562c6ab0d5b5115df9db0e021f2c7aaa761e4c6e480a219401c450c4dddb2b73a5bccc5ad682c35ab7aa1fc81eb418c09f330e22833a920b9569d47d25b85cada2223046cd269304c001a36b5e625c9171da89356da59e9aee3206fdaf144f60c6f93635f1eb5e2b9e26c75ef1675439d06795b72d557b25600d4429cf42cccfffb84adb0fb5d2c5c2edc8c3818ad76a1e17e29e0d7314e15a34f3c2e9eab218f1ea91544d8c449a224010d456c08803923bf6cd228c12e59f32745d480c0a19a228c845145924e1ea291659c00b5e81d3abd0aa8286366d0f38bdb4bf09bd867ce45e895d178b2b46deff69258dade7a282a8f9790c4d4b52d9a6d5fa68f3c30ac0ea7d63e3034217a5ba4881a5125698b6114a66689a0bdc5d4a943f514fc010235ad15b7efdb5e9a1f331f48c566b2f081c2b6fd3b4a173ac955582ee205563a99599dce8f3c2d4e2ca60ec07b7478df41716acf34e28bc15e85f8e200ac22ecab4b61672d0592d9442d5ca9b5b65242298e234bd9b4653c875a3ddece9320255e9bab0653011e4ec05b9a7c7d9fe1abbc0577771bf6a9a386ad2b768c9aa76ce3219eb4b6327dcaa4315bd16191030838cab8e88c93de5a67e83981e59fcfc5862aa9d13928b1de7a34485e5f6f9d991b4d55866239d8c70074047409e0624dc01c6f13ee151e107e1366699157aec85bf06277bc17ea356853f087b0a2509fe58c8959be145fecae46186d8b32e13ace8dda8bde92a6a6c99a492343116a6a0a75345937342b6f51136861205621cfca639eac69007f97f11fc0dfd6b263b107ba8bb0c7f165f9308fbdcc69ad47e2b2e448aa918cddb169745996545d56555957255916298f5351ee4e5ff17227d9bf9c777a35281a66f715e5af20cbb0625525a2ead1722571ae3883eb7f4850df4007689941cc5541e620607749b58a606f915425dc4470d9fad54a69a604d436630001bc4f50759000d55daf56e6915bb248c8bd922abe4553de2a8acf17869574ca546e8f6532c399ccefdc4db16f77c22272e6152b9d92770f49aa74338d3be292284a7f2ed1d392facd571cb54c236d917bf199e1cce71fd2f54bafc325bde2fdda6f4452ba657df9d62a34f83e4db43c86ff7f8fbc09d6d430aca76d30df9093c5665507f0b81d2d9f06cf06b832c815247c759cef55301f66d2b9e17ccc73d35f4560522860f8c723d9ea6ce58ff7fab615c9a52f79bde55d7664a0187fcaae0d0d2f585412a120655a2879aa6be69e89eac26f5235e366869aca7dc581040a64ceb6ce3e4ef6c27ee4e3ae19b09a38cb02a05b6db6119faf90913b8b926d9dd0612326b6f9c649b8b1e92300caf36f37e396febce97cc38a5964da4a099cf63cdb647ccb8c50017a6d49b848b84ab805de4f19531cda138a07a0ad8cbfbc444a1cf4e26856798f70740485d6014b75b69a0c38ac88415702eeeafc5c5541600cc54a088d20853c3697a1d48d2d5c77c7750b0bd76ddd32eac2de9799bb24857c130c76c19f41e9802b514372654d5f960d2a034e4ca523ed58eb5d950ca3a11660bb27c7e6b2f0127774cbc2ea027b71cca5f04e13df63d01dfcbd18345c59d76416c08b657cbb5c6bc73e9ba9c0db1690380bf58070dfc4feaf0265bb0b6689db8fba000c9d6bcc973b8247c61b4ff4ddfb05b62b15548f34012d7914b55bc84100ac00e75b4d59fc362cc5dee067adff899b27192047c98a612f8cb49a885239a66642bbfe2f96f2309868c77e00fb72a42284bcca35589b005c1301bf2be156390faab94c4e33459be9e3411b39ddc6f91f55d855ba3920b4adedc32fc58a1fa6bcd0e1847c9333666b9c893a1db069bb58218ff29c559ef38e8e6e84d49e8f1428f13454be3a4990498e1a7651b146db0a62a45553d2cefbfeb9f52fef73d2caacf8cfcf73561ca10f4563cd662cfa10cd3f8f0d7bbe83cb2d431fa09c7f1175a112555aef53db2bb7f1eaae4c7fb392e2f44a3ebf12628cad3731bc31483ad09db5be9a48aceab489f7102cb3b09db6dc9b2b08169385ac9175a0a0118e968409a10ef53d20ac08570bd70baf0df8f2d8e56da6ba1446fc0dfcf65f306b0d9039f82df3718a64f1a6fcaee0ae27f14f364bec2bc92f4d9ef7513ee864957fa2c96fd77f8ed4e560fa701d0101fa2ecef84f42b9d6562fac058479bd9128d4fb75d8aa40b191e52667e836992e40b325e4bc959c07130ab6cce6dadafa499c4b279936ef3b57208d69a74de776e4193efd38e0634d6159b80065cb4c690ee1274a7ed4525bba5cac521cba25c295e95835aa1526fda935700dc18608d59190e15e83c506745ca461efd4e319637ea4c600566d64dec8c4f59d7623e2c5230b532cef072c6d6a21123f3b3837786670ee939198931fd881a98dfc8fb1ca3fce37b0e88e81bc13cbc6b74fb22c9634b93d4ee2f018fc609d686d181787b95713f630bde2db84b7c07e5e6a033bb618a01f2be47c70ae4f0bc36f63a82f5bf7f84b1e00ca470c1b46803469ebcf988e555f30d7be3bb0dca5477dce204f9e6464e102d7d3261f6a672eb463b7768aaf1fc6c8d14d0a756201effe8f18acd926ec85f900bb2452b81c39ed6013aa9f1c626230c02510cf68cc03f2d360f8e750c04242494cb58e98a9b81cb3cb597d3c33365edb86ead7deb8a9ca5145a2cef6b8a51851f8b6245b6e6a6eaa3ae28fead9b21d5b9dddb2b867cfe296d933d1b47267b6ac9563834e3ce7c124af8ea5a76c5d36244d49ebd188e3aa6a6c5293e2ce805bd2cad93b95f45bc6fcbcb65fcbfb636c4f405d6bdc1338d5deab37d0e8d9204206744f2a119802f68d18cc76f6893d994a65ae52c994b617193fbfb89ddc1d948260b96bbfc0627395e5a01404e17eccd65d83adbcab43bded44afda6aaf026b97162b93613208a08400af10461af50e6f17371c51b00d8dfd80b669b250633f48db71cb9b6fd901d1d671d7f78bbe4fa2fc1a85a9759ab126a03419816dfb94613346c4080f6d036828489ee6f28769fb8bf858f85b3889853008f0344613853ac8970ad709afebdecf39a8237df556eabd12acfefb72df7da3ef3ed1770f9b2c937ab570ab5da34aeb699cf504e6fe59a1b3524857bc3b7d6db355e8307b022e4d23d36d6dac7bda85ee3985b1533d0fbeab93db8ef5c02f0ebdae106e10ee14de213cd8d118eb86fdddbb00c227a5ab275132e8f7369ee3069dfbfa2f9a4fbed40270125a7dac85c620b475053985e9d8cbf44d9b75daa63db96922da980c7b81626ba0ebea0d03f083c1fb299344ca0a7daafd44a79b8fbec4b436dec6e627f6fbc19fafb7956a9fc22bd37d7a295d442ecf4986fc9a490872b27c3900b60fc82fa9ddab39597acd9424e5e091c392f47ed908dbd299433f5f5b7a47bbf6d29a51c76a3eca56d44ba97db333ca427fbdaffa39eb3dd7515bec9572f0095c7ba9b396eca2ca0e96b503abd88ebea486fd5aff532cfa4b6be346e5ea7e15dfea4b6ba33a2dcb38f3a6a761fec0cc9beebb7f498d5d3fc7c3e17da82b89ebeb0980ff35269dec691187e29d61eb1f40dc09acee8a3fb6b1650ae623e0eed46c62b3ba3371b5dac6b5713faab1fdf715482bf6989f95945a0719c45152daa3d568e38452b71e64b5438b5498108e719c55d8c2a7db9667b053bc0609dcbb445927bfdfba18e3f70f8ad2cfa82e7f97e9f7ec664a3ec3737307e7e60e539db30622719dacf3f6f34d2c1f10ca061064b2382cca5b249d5e28caad17823740701a5f7170ee984e192f201e41196dbbed69a1c2b0a1ae91d88ee81c366d08671fe516691c0faa86849b2884ba23472d35157d6b34a55a47bddc89ce67f3fcb364baa32b52b05dd72ee43ebda18168e7021344643cf33d80175c83dc214636237788eb236f27334c07633351250354d5991ad35956c2da1702521f79c6d0b852b1cae5199e4a7edcd0ecdd236f1ed96d6b0d958a9aa80f44630ec389507c091727161dd02183b6de470bde9bbd028db69ecf23fd578aea1eb998489e1e2d21532095284f4e9613869ad2f481d8742ab6d8c18f1663a9e9d880aea554438cfb7ebc72379079a5882989a264464a48f37145cbad7031f9aa08751f87881831f4fb5447bd4f3788908628c4d2812e20fc7b825ccd9e81b10bf53e9b6129b2abd5ea3cdd79e6f3fc191ce750ff317c64a9fb7b7cbd9e81f58aeb23db3b4398b6911f6a881755d2ec9e94ad8fdf034bfe1e45d5fe4d53c9f14e466efd1e19d2a3d1fe772b5def459820d150231ce8b393dd2fb85792ee8517e47b70b81bef950c4866dfdb50ef7e38136f841ae05e72baf392f6ab7b1758eb632ff6ee7a1fe65aae56dafa57e7aca1b3c947dbe303f340c7f129c3db423d5b52e81ecad5ee79c0e934b43b9a46e95eb9e0b3f9c318ba00931a2598ebb08c902a93bae8d821c28a01acea01b3a1d23ff98fd6332a8998b6a846ddc2645e8cfd955b4a2586087122fbf7e3b4be458b883a79af654b5362e4f67146d78f778c8dd6f231334db38e5fc84fb9ce748190a18493d3c8554cae6f6a5b62e669dd58e39b62685fd4df9ec3bf707b36eefb6c42bdbcd6fdca349379a1f51fed445f5a0b1fe24a31eca9ae28f2c17f76f60f45897c1375a4ca8df90a1a2855a2c8298c72bd4b0802c54bca5430d5e41261e23ea67a09c11423bac97f9d34b4c8524cf6ec4547ca1a5bb6e839c959b43d39b614d150f1f745729b5b8c6cd7edd49441edeec29d5c9be2abba7343dd0cd49df25037a3dc51baabb775cfcb94352681cadb9430364e2b1522f5f52347e4887415597b8568ca219b8330e2a9f5d4f7b7dea110e583c7beae4872b72ea4270c0b73c25e363b36fb623ff1d77f5f3d4f7e5f25bbc8912e4c7575d3d4fe264c1cc42b0b4eb48327dbc1736120f4f6e5fc395a46b88237ed212efc20e033bbaf834f1c376c5a38b800d0f88d92340097cb1b8097dd5ea09e6df7d796e46d8f162e5890a45f858203408240f4b602b58de34c1587f19f9b621de82353480a234caf0370a44911101eaca08dd3155583999968c057c18690fcb30a95166fdea1684457a83804948afcf0c532910a576cd975fbae9dc71621e74bcf6aca8e9b1725dafa074d19b9784826f2c31f84da0ee677ddbe76eb2e992acf766ce6918f53e8b381d904254ecef6982dfdf05145492a11e53fed8720a928c764bbcbd6e24f1f956dd9573057f1217a4ce985f7c31bf7a9eaa69fecdeb0bebff1933d7bd7f58ff274fc2896838f92602ebc6d535b3a40d88bbffb394acb34a11d7f5e4b4084b6be4393fa6769920e6b98a60d43b4f5375a004f1f27cb004f478405d80b27431203e0292ae185d3882b4d274af50aca7e1649bc8f05738f15f5dd692715b586f3778ba22d2ae2eb079cc8c0a30311c775ea67ba9928e40e3911717ddf8d24e4f4d6bba1a82d8aaf5faa5512716ddb362d9eb8786ae250ebb6b6700c9b9b0f6426cdf3ea61ee110e081701867805504eaf14ae136e106e115e2bbc4eb85378a3708ff0369813d08a78298162f35203ae2e5ce197502070e15e81b81fde43211afcf9705f4dd4768aa504dc321b062c82afa270ad431154312807227964b8e31f7b0c5e879fc03811986c7c798d07ad265e09deb596837fcd76012cbcc6a36bcb6785f0312cb1c68b3559a126fc0f1e27cde089267b6b18e7459bc16b310611fe71f656fe9ffde3fa333f8179f1278c166bc0bceef3612095eaddea59fd1b2a43150ab061917518f8874228a2adcf222d32cb08111e5d4fa4e895c4b992a672edf1264bd35d255874ba18ffd18fe2c540c645d6980c7b8ee98e3259c712d345a4282886df140a1fb83527cee54112ef77a910526064b5d54c795b2376d2902ca20e28408253dd16a9f2a1b9a3735ea7eab4f535cdb21ccb3a73662a59350654df9e3515734a152d51cc4ada2780c0cac93a9d3bdafa6e47f44a56f011c70ad7d934d02fe3b8a3174a8101491b47610b8f2fbb363de9713e797fe5b5d3baa547343dcfc0783233b37f269364a03aef98ae4e73ad1758b5d19c53b7dcd4606592d5c6184d9766664ae95183dd6e9fccfba6e2746a1bf2b81e273f613cd814f2b894429f0d6a5ba256413514d44a61e30f20bd18281224c20cc4556ce2c70bf1f90a321b3abdf9582a9f9f2a14be2c1b62c2f7548550655493683a9fa692360a1da7a89e6d6986a4cb23b224fe0ac9ff8a28210a10d655140a9305f87d5492e48a6d4257685e22e169d007263c189325c99334a57596104593c276e1bca972ef1640d4152a009e3b0cacd226ac05807e5c0bafe4f7ad80cb489ee4f3648bcc790b6c1be7dc06f95e20da96cf744ffc7fbce7f6dbef199395bb316162a213deadc857a0c87bf9635dd04e0dc6e009806f7b0086dd27bc5778186a1c4e0ba668579ac7ba07d3a756f56b4c55e27cab32de4ea6dd0cdb6ac3f768ad526f7747bb0f7a3ac30ffba2baf96b9ec4059b1165f3ad26bbcaa25d3c569434b596c49b01494a029681d1644dd51e95c52f8a725292c5674559da9bb63e64a5894872b22f8a7318e4887801ccf4c1bb617bf85dd85388283e258a3fc09195f491f464b1b42553d5d9ed2dd75da71a83b2e88b720edf9f63d141a3f508bfb545690c236392f80977716e6ed125e27e51948786824084dbbaaaebeae05566146fa326114b182989fd76bcfd78053d1f5ef10f272875b538bdf966eaa9aea6bd877a5d68c597d118dca598ab3950ea44bf1d6da1cf8eb6ba99cf826e238de08dda4ded377619cefec37b341aa3416562dc8a7dc3f77a645ffe66fe09fabf87edbae9264d73297eaf5b0fa2bbf5d4d1f807fbbed7631fdbd8cc1781d6d302f619f64297fb2078b1ca7468e7af917d1d9c0935581b6808cb8d49ff22b0e7fce847b96dfe37a8b787997252826984657e436bdba396c9473b3e08d0c0da4783576e0759dae4c1bfdcf8fefe77719b4ad4aeada2612bc7e7c8c0262ffbbdcd5ed6d346ee8b00f16deefe852189ffb2f131b273d3468a6d7d1a0db50ce2a1264c03a742a9ca959ddc36e11c6a1eb83023ef1edb3106bfb346c6b8f2e62b51087f5d3ce244e20e0bafd3c9dd83983f36a0eb575d85d2f96b5bff8a30f0f871a6fc635e6b6478bf201eff25f458c1ec0f90c467d303f6c950771a5578b9c5156af656549237b46d1733c1eac5db34236ed68f4cefb9e33dafdf337da46ec5c8475ca0db9deb97989c7676e97a478c682e10f1f6fe1bb7ee7dfd6e98435b6fdc1f91ec605cc2f9d96b1fd53df1bba779c8b7c73e43ada21a722899aa71a99761dcb163a2dde6d801fa4e56562a739595b6f5dca7b9edd23b3e80c4992ca30c67f2358c774ed632954aa69b1795e2764bcfbd5f92af605222224dfe0aa3eb0299615837f497b49549937fe55cb524a1ca537543a4113620fe72f51bfadad6fa698f7d56afd1d6fd8a7412f5abcf116c6c7deba1cd8cb89afcd262cf3918ac6c12eb1bbbc97e7e3743cd508ba68dfdf47305da2edf82263683c6c8e29770e38180ac74eacaea3ec7ab768717aab3f5c1e17cdfcc93aa5d7a26fe2043aeba67a37154a1cab4429761dc7392d1e39ee253cbb2caa499f7a3fcb0228ba1bc85d154510ef37bd8a035976b1274e9fd054a74ac9985a9e9701c1973b7cdc36fad4e154e8709d342dbde83fbf1dbc27c12f67bf063531f3048a6988daea438af6e12b52ce71b2f9adbebafefdf449578921cdfbe35162f0c1e4e4ba22b2a527ccbe0c0f8b780ce8c03b210646544d125aae841d644afbfbe33a2949581428df9e9e1c94c8aa425695022a24332930362ecc532833efd9e8878664e98e578027428075a756e7f3c5fe30613e7e0ad8a6bc5eda5d6c9eaeeeafcd8f885575d98480d8c2ca813dbfe7d970e08a6becbd4e86b645b7e0dd5564bdb8b506cf2a2a8367ee1f8c4b0b3301273f5fdb1e3c8483cee413128e5bdbc3a6d7047c2b8a2e7aad30f839a98edba9da34e5b785d829a09dc97c019a60398831aa14d46092dcf8a28c0e1c60d303998feb198511746065209f8ecf8d83cbc9b1c876f6cfb5b3736b2e00c4fc057b4e84593900e559cdccf7458031af1894067e672f81cb7f948fa68cacffe33df5a4162a26df15fa9a2c67ba3c68833d865ca6d501702bf789842d6a6764fe53324918a0ee76cdf490fc1fd509a5d72bee2c5cd34194f94e209921a6c9de6263a945fbe1318ec4ca35d45764c4b655409fec9f4241dcbf234fa64104d8fea9a010b5a560d3f33a68dbd069fb4f5d61abf92657eede87fdec768f66180ef82026ba4115f64b6f9548225c3f9c88ba4dbdf48b983448696fc80bdfa3b15453c216a4a707de338d4e195af94883c0ef0e3a40c3f835cc8aebadc9db7e4c243e4af1585c420d21a53943b2661bb5a5981c72665e93db221bf470a2e72570eab7f8bcd89878538503ee8a9aac68c7218f00b994dccdb19903740d243eb182906c3d96c8e2ce4998655a975b7612f90630861f32b2dc1899886a28b0775c53023cb0b234cb1ca369e1b59207980d46bad35434f7b5e5a37d83a7982fc33799c69a20a6500b1cc3e688aa814e972142cec0428040815eab201865669600fe3441922b89660d2f8a86d9564fef0920c234c96b83d00ec117f38264bc4ad489a3c962d2a72a3212bc5ec98ac49151706784c55cf937f27b733fb785ad4e4faa8248a69df9a9129b12c42e519cb4f8ba2345a9735315d2abd8432dca40d7d63a06fbab7c3bc39205c2a7c58f88cf07f847f45ed789b30221eda89c6f1f50a93face3750b832cf30e7791f92fc24db8b98c97c02f047181d952293576598a75a4da2ee1f2cbc5f527fd27926e0a12a7ad7482abfe45a8a8226ea72cc9689a819aa03e4bc44a8e2a8862612d98ec9baa8394e7f11b9bf442656366df8bbb9a8a9b25e505d3a901eb4b44a45378752039aabe40d59d50aaa5a807c23afb81ae49b7aa5a25983e901eaaa794352b4a27a4f42142bb9c16c4224d52cd4ff975937426c7cde9274d9b6a2aa128bcb6a3462cbba64525192a3921495255165f991a82ac7638a1ab530dfa2301d6d69d136cb71db2a7fc1955d2d33a24ab29b308b1a8c3425b6563413ae2ca9d5ac06d9f9215771b46c954a8a93308a7a04668218d18ba6e72812ade434477187ead9c16c5514937821e2a7ce553b4b85da01417fdeda59c3583ba14b9781738d37e01fa4e4d6e2f0d78b4bfc747dfdccfa7a9fb4770d9d0c10bec77c4fdc05ef0cf5d7f9be5aacaa94fbbe69a0257ba07fd956bdac6d8888cb97bcebd081a59d97c954a45a4c8ba8b9a143effcd83b0fb1aa8ce472b7f65c4e6fbd6e2135adc91aa54ec41fce2e97b6a24989ce5d8276fff81e1bd6f1c56a77ce2a9ce363a17de5f7c4fdccc615dadec03723cf8fbfba526fd3f30a5bdbb0ad56aacc934e95796549faa82b72a63133bd0448185195a86a28934cc774c72d64509422aa2e17ecd1896ae51d170f5c36599b9cd80ef89b72751c6864595122a63b30be3071d1c4c445575f34f15a22598693193a74415ade393bdd10fdac5b542555e6631fca8372ccf6b79b7353651c63149a22b9dde5cba79b7bf327372b62418a24f4e0ba2350f1ef20de7baf97e9fda62b69c1f5751d5b8fd016783db0c9b802e9ad6e7df180d95bdec8af9b9d777b888c44288fac6d54b2245fbad7b019f711d5b75bffd08e2af7a2bcfa5e8c1de6e2c83035d061edc94c75c5edd6df75bf334c65c5437e2adad7ba6cfe0b854437bd848b2b5eef2129a1d50de40fa35d263a21e406cd070bfea953a165f331c37ed36e6aa8dc90991c37ecd6d37e811c3d06a5999e30d1ecd1dd7455357ae47cf37d74525cedb8fbc14d83f1417016a27cd4471bb2f980efd34d3dcd1af1f2c4e8ee7265d715c5982e8949c994a9994c1647e25e29e55b54b2a4b4d843547dc6329395dd97ed2ec70c43d2a5922ccaaa6a8deff2d3b646652217a5b64dd5197119e6800eab65143903f590a42af87dd604d5be7bc2e41b88e60004021ae567cd66475abc16488f0f2243fc674d5ec24160f5c8ad1b7464a942f64e23d1d6e6f38b04f6fc1af4df56e637b98d086ea223c186b15f51a24aeb7e23419e1bd9cabdcf6dfd11538c0af5be89d6be7dfcc12d0faefe682b734d47b78605d005e50b9df2a874fee083f06bd70f69d329e13ae118d60f36fd76bd608f69578dfbd80a3d523482bad1765978aebd6220bf5d169e6bbfc3ee28ae911f0f9a37ed673db6ff267310fbad3fe13bec6662c918c5dc516369624302870067cef5864ec297cffd8e20e1010e6f387eff27cc6e2c09b02c2f0871caf4dd929c74e43c3118c1849fa0d57abcde48fcf369dbb523a78da4713a02b1d36eb3d93cb34ebe7a484d45bf6ffbea314539a6faf6f7a329f590baf720397488b49efd8d5defe6baf8cfc0b77e8bc957b708334cba8ad68055e6f1a8c2fd1d752a80ccdab00e302f1ad506d6220eb13aadce3480b208623ef9c757478c1b23911b8dc8ab8d88a9dfe838c78e39ce8dba1979df91234fdd0cff0e1f398297e7f9e54f876f33637245512a72ccbc6d588e9bb71b317956d3e6e6346d568e19b79bf16a7e5fb95ca990d1d1d6df8d5f5a2d8f8d55abc7c388d0ed9381fb1d429b95a4c7187034f0fd8606f48daa5a6aab04facc561aa0477583cd58db5d04f9ba2ca7f6a7ee4ad38595858511aa160a2a1d59801b9abe0b3264f9b35fe9b10cbb4161969e19a07cd2e93bd348c54261522810f682980b8969a0883e1b587e9d15f8f5566ed7d9ab871efa890d38a33b4968ee11de73ab6f3fd17b4f9ac14e1b06a5c56df76f5b2c75c5c91b27bd82073f7eb9e7167e774b2a625991133d775d362ae85bef72f4c2fe4bf0abd7e8d791efbdadbe4c777adf452de3abb812fc5572ebf340b67e88ab1ec3e5e7f4a3379793e19506bc055e69b49e93e15d4cabf943f0f640e6cb6ca4504ba18d756e67b08b6f000893103a21162a15dc82e8b49031ea359d83e1a6087ba4836ee6875bcb38e6dc5bfc34671d4ef343385aeb24dfe67ba0def80e58a907844be09bf3a144b63029628cd9fea32b2552e37c10ae8b089d5e48fa810214e26b904251c848e7d155b90bc85da50a9f37685e3544b1f5a4440c354f0da224f23b33054593df569a78dd4251632574228a64411475b50045d4dcd8e1c363b9bf19ceade5aed3adef5aba6e3d13d1c9ef52535335c3b234934e4cec9d8bbb129507920bd76cdb8939ba6e40b649e76a2b8dc64aedefbc540aa084e390650c03990eb4771cfaf70226a180f5cbbd0e567bb70a262f455ad10be4d2dc6da1dfbb71d4e7181959adbc7e305d1e914d310594b23b93e650b81e7306620722712b9a4ea61209c944b69f14af0d70f1efb65834e75e104910df4de424511907a23dea495308ca678dedd5623ae1e8392d92b72286e148441e05422596466e2d55a6b45d13f9543c0a05ecb6ef1276ae81c73cfa05544adb601727915270bb314036add46079556b9d18dff84e9335e4bc9d9c9e3e892eba3ed77274ba1ae82b5e2101b120fd290baf40c5457e6cc35a3ebfc6cf6558268c6d97a77a0b9ed6349c9f9d2bcbe07bd3d7000040ffbf995e668cd9f20274f5db0e237d5a85b5ee2b4c2100ba58e27adbbcea71c8191417999f92f6a10ca492f51f5655718768a93b0b3b0b8b1027870cb8fbeb482579a3e41aac4e575fe379b232be7d6e88fc77556d3dce69a4ff4cddba68d12fc333de8dde0d1e3c757a106e0eb87142c60c8bb7e587ce547670c2f4a7720724f31d21cdd48d5726fa3de3b551842eb431c27932dd78e10b0163456ee33009619c6babc46b01ce1faa7033938eee1342b673a127d3ab0ff8468d30f2f48a611f8d18fa43aaa33ea41b91a3369905d49839227970263a169d79d0b0efe52a27cbfc82a6f7a7d2f0043c900644bb7582b9078260261a9db1afe74a2d1abfb46dd377419d23c200fa8860aed545b5b224cecff68364295170b9467d9f7f00f4d84d1e7c85243d738d1121c63392f699192b6f0e4bd22b244d1a369bade60f14694455b5d6df87a475541991c96d98ff8c4122c635cf48de8c098f68f00c3c926ffddf9bc9b234aa44437afc139aaa8e48c17ae13456947921eed3d428232339e0700ec22e158fb4d698a411c2d671f87456b41fb1c7e04fcc2e2f336d0c086ad9aadd749ca65dcdb66518e405a20536eb6801cd27436383592539c825a0c7b89cb3f5767e6df2cb18cfe43fee8b513805f32d786f9bbf5ce52f2baa6e1859dde40544dbf45b6dd9ce1340712027b84d9c35e619893ecb0d739309cafc6b32f732a8f4ceb9c01c4dc015590ded3862a3f7ea9e058888e5e9f78ec6768baa7467707fa7a48aba48c4bbfc686a2415f5ef82382342084dd9f9575047b52cd5a1afc8dba9dda2281ee1f747445413a4e2e19866db5aec304483f917ea5396b0e6fdbc1a0ad56c1f4cc3c8f762b5d11ef1aebacff7a859febf43599defa77af6909a4be59ee41468f202ea18eea06b38f4825e56cf0f1692348d6b254d930b4a2231f37ebc79bf5b572cd413b194bad0a3979b45fd4932dfe358d4efae0fe59725d2ed537128a832f93789f28ea652e14d46ca663d69fcea5f45e2a667bc755cd179ae4e27ee313c13009924cb4f615d9f9225317d548f6911e845edc84dd8d5af2ccad48a636edca24a910d41b04ea0ae0f0b3e97ba707f7f7c41872b17f0119f96aae4ffd9f6ba3d629f156c94a4921b71a33af9f0fd7bef58f95d485eb7316704b2d8fef7dfeedfb312fad0de05efbf10dece9deeb2934ab81548a5d18e32472bc15e8d54798798533b34599291eab0319306d1153f39b62b7a870cb585f7be5b141f0ca2f73b8b236e42d6448ba84a367df075c9025635299204a3b3e28dad970c0dca4a5151893a5555e49caafb71551e50f512001c45995074a2ac2c4351850286a0e480481b9bd088a6847a3fff0eb8ed7ba1cfa6c2f3a7ba9c59e338c3602b853e87de416fc2943b667b7485c2cfb35b0f1936790ee5d4610a73204752302d0188630afc01216cbfbff7963b3b94da3e8e716feae765b57957553f7403b1f1608617e2d96c259b5dd298a058eb3f51e00d9859c97ee6844ca97c42a514f6f59f011cd943be29d8cc230ceceb81f410054b495f3ad757c56d9a9a89b5f2b18caa3daf170afad8269fd69c82ef171cb2ee98a6d3faca86af07326ae11180639a90eaf20b22057ebdea71feb947f836fc6158a2bba14b6de35ac376029f7dbf0a0b3d12c1c5dfb6a339fb3d460beee1bb05325a505d94b9b308351650a39af9b208797578cc4823502965ab1c6947a41193b8c9a226fdf06b5f3bccd5e16184876fbd7518d5e837c9c11bcf3ed67377ee72dd39011ddbece627baf56e9651d09c72a2c7b2857752bcd4c760640761f59a55f28c1eae201a787671ff3ed4c55a64acc6ae3c6275f30cdff722257bde12ea2220dee1337e1ef728df7d2e0b6ba384fa864027711ff67d58c7241197b1db7ec40f5af931f6e49a617fdea1ad26d10ceac07debe910be03503bb5861dfb637eaacb8f585fb7ce3ad4384996a1b06787dbc123668408bdbafed58df66e3430bfe8525ee3faba3db66f477130f3df94e521201cbf99c76ff658c00d430b20db908664cc0e8d2b78ff48b00e4c5cf90dec07987c807d89bd073b7043003f09a4ddefdf4ff3f9854583de7fbd4be928b4f153fce25e91b9289b13c5d4bfdc4f8dc5857c9e95f0200f4ab08b7b79365b2817d28ca6443f1fdf00bc7e4a38285c8c72d1808a4262dd5751565f46e91e537f032a91a9aea1d8adc6b9af5594de16a93f9ff46738b4a8cf24d13f2eadaa4932948f3a575f74e138a5c33bb66ac34007f8fbc7c614498b689edafac320521b1d67851e2a2f9633692f3e168fa5d3c3695b8ec50b9f3a244d2c4c9189f10bcc8cb9387a79d28742c7479713db354f31e005e4cf82c805262b14817c23ab4a06bc211dcbec48672bb3afab2e220dc3fc84be49880b7926d109fded796df779733d9a98019ba331c361606906f528c4ade3175ef445d6a430d23a039f2c2f5e88c19e9d57eeb4d897fdccf8cea72f189fe0350f23bf119483e0c4f8ce9de3199f35d5dac9e016f7975ee5968581eb5276e60286b01650ba9a08420608d88afb829e8e7d813b4dff02feb1448b1bf63cf471749afe4e16b69ae83afd63ef60e18791d1dff3cdf0188c9dec5c381e423d505a5b0f425627917bc3f86d231dc3bf58daf8edf657c95d5c2dbafbb3dc637bf767039f6d84e932948549807487846b85dbb92d2b3f8a2338b5b2474f0bb7e5010213b2c635eb4bf15fd079c55ace630c195473422da1e7bd9ceffe856b4d5b76acd57c3e65d8cdd50d7cf6737aa998ee1c9c9a3b7c96f9b125a75c1fdee65ea8a4c9aa6da45a9f7ec91e29f8def813a6a359e9a21ce2cc2e1af0e252e839af9b71bfc65d53fdfab418d1cc5825666a11715ab2ad05768ec982659326f740d5fa44534397cb5ad38a313fb7c762a10f69d4db41bbc42952aad638170b5df8564b14cd6a1234e1274a09347769a063dfa044a3c68583f3cc05a7985f9b4ebd61448b44b43b9de93d45539b5e5e9ed6cce29e69e74e4c1d79436a7a6d8b1f57645989fb671ce743922a599f5e31f7399236a649ce3e73e5d316a47dc8710caac8a226cadc86410974fd5136551066845d888f6e9446f9e7d35eec3b1fb59140a317986067984325f45077c2402bb953ed81d918acaea906bd9e92851321a14e0eda7f8f99689dd175dcebb216466f53d7e0899e7624808adb21ec43bfddd00ea8477f5baad0cf713408aea32512ff635d1ffea1096c526da34f9db62ce78f75b5662d9fcfa7879478bef3cf9755129387b478360ebfefb5db93cf77b5e88e7c6bbd9a7a75d7637955be2a5da99b8e93749c1f844dea199b128c0df326b6716c2434582f75fc2824133e4e9b45cec403e4939d5e89ba222cf51c4313558673d8abb961255aa0d4d0d3a6e799697d159b626474339b35f5cc9d9b0d51aba5a9ea301ba0b2a26a47699c9a69cdf4b6270c2dbd96bbe082aca9a5cddca11ca4be36681d3b8f94f907d58092472b93c3fcac1f5635daa74e5977959ed392f82976d487c50b3834f3109aa09ebae9d974648dd7191ad96e70eb274421bb44d8bf14e2117164442479d8e3176591859fe84af75849b29fd51ba88bae86ff0b213b4559dc49484254c8f03051c4031a91c56f01ee115c8f77672658f98e7d0d8e2b6add6db6de1045800535c56cb47065313df7ed5c48eb73671974f3a1dcb163071005252a9595485c820895c3144ba77a9927ddb8d948ae5efb2a6aa9fb8c4c41b5d46b5fa546d4846379fb548bbe291837b967dc4ae8bfffc546adadbe5da837da76979b8ec8bfc40706aab9dcb36785113464ba05b0ba914d7bdde1ecc7e7a7472469e418fcb1fd8ff7a7c24e7fae089708570aab80f955e66ab3688b896a16d443804ad546ad6717449d46b46d6aa0a6147af04efa2a9d5199c614a7c11b78a002fa630b25f214ef289eacf015595451d3662896b8d5507543ce7cfc04f74a671b4fdae2800d934792a44452942591fab1012769c9112532108f4e784e296313d5b9f47a6aa86b9789aa6ec55c53939be670b5514da9961cbd8150cd8c4aa9b3dc3b321e55087df685d83049989e691bd488786e763e6f03dc50948182129574c349a8d167aea7d0c52f00d12f122a11c2c78df711151ca188768a8d403bb0d3ae4dc03e55aba53ed8fe8d881d8d64bfc5aabdde3df1ea23fe08d0aa4308462e2b8cfcbe9b75777e96d524d53dc93e5a770d716b60b93dd196d185736abe7b466dac112776faaa84281d9096c1bceaa9d42ad0080d4e2562d04046029f563d957a37921a8d4a50ca362a0d7e4e58f75abd1029c84dd66a8dbb4bc00a01f40158ec75ddf2fd31e9330ee17676a692cf447773f39b2fdfad2995920aa17245a6c43401af9392705786bbb248d5b44c3d91c475a22a03b0db00bc52a2f4b59b2de6db75f594ac28f2e4b865e8e62b317a4ad515e5baac7e7105efee8c4aa63bb84f56decd17b7d8d5d6cc662dddbcc2eb9b7d3c15c00bbdcdf36b08079827e1370aef113e2c7c4ef803d4ee698f63a1cb295f20f96b93ea852eff4d5c07ed65da5228e7c93f2f76d36f9bf19cc610cb16f757c09dfe71ac75b99dd2bafdc57d4d12a7db7f41181c3fcf436bcce1a8c7c3b603ccae14064c3bdedb367349c92c5e57dbee1456db69e77c82ebc77d9dd11831ce6706c23dc1dcca303ba60a3f4e953e66ac5899c728e0c5b0ec1efb734b5bd022b0813dc6cec463e73a3399eb026a47307bc8d23c5364f799787590e3bcb8bb25b8b2444867540143534327361dc9d7174f19db146ba03c68d0522a1691b5585c8a446d2f928f0e8d325789a34323c43ca56a5aebe94091fcb339314a6285845f8ae939afa8c7a9a6e7ed882c66b57ae1df71285f28cc69591215734453ee52b4a9506b3cf49bfc04ea7001b1c44f7c60bab64c72cfd82acc9d7e6868c5ddd0572b4f3b49b5a228ae3190d4ec4abd0c9de347ddb9a3c78ece4523e968be6425c8292b221af363c59c9b4b5af144b65cc91ec1c3fd52f9cae8dcd139f84d540607dcc17c2cd7a7271501dc10288c74db27791ccf84ea776adbc3f262d6b0757e8a14aea89c87da4e6b04addc373f8d9dac307d28ce7f21cd5ceb1ad27c72d333d75f682d73fe0c2e7dbd4d9bce08db843dccc2e0a8f06a8003b785128050d08cdc6d9a0829566672c124d134608e208b5b49cc37ead8ef3ec0d604265613f37ebd82c20374b750a52cbfac522808203751c75835918454f2ade8a0bd7d299589e65296e72ece71ef3291620a1e264aa114e64cb7fe6a2a6bdb7af2cfbd52dcf072ce8323854a258c97aac51172bc5a8ac5ada4941f2bdf5e290d93b7d058ec47ae3eaa4a862629feb50c0abe5d4bd9a9022183898869a9b20e39c3fb5df90091252d2a9b74afa41a526ebf44f79a0fca96ba17fdeb1fb6e48352f421573d285159270fecf7d483f2fbf79aca0195cf3f26a79a41696bbbcfb88e37b3ce685b1976f5193754a62ab9d6f5ac542e9a49950a0a2143c9543162b23e985b0c7396b6db83d17de4558aa4e9b26a9991c42021056886d67a2bb6e95a1f720c491dd5dd1fc562147d1dff14f68c3f863a0d308e7775a3c625f3e5cf2c54ca0d6eff08ddfde53730a8c9bca16a6fb0b56a96cc66ab5aebcfa6d565757acbd73fdc39c7edc35ff7e78aa5da6b0e69c6fabaa11d0acec2dbcb6ca486d0129471d92bb8c172192663d056d946d25824e2ce0bb441b775dcb62946c84980cd87c9c19cb7be0c53795f64e263f746dd9485c1024c7198bcadfffdabc98cd0f61db206fb217a502bf5ca6dc9e9e6f27a5b059a2c2f87865110703b22d2240f0b5b84393c61b451f34bfdbc9340b64fa5be9cf87c03a664e9a154f6fe8c8fb2fb131864df4e7480d83a797b364cdbaa48a23a7a43feb2cb989c9e05e40d8aaa2aad07ba521c17fedddbf6e5fe18939f0e307b469c3955408051c30f1613fc7c66d5838771a9e50d4786d3cd621b88aec62631f2f7b267d7e63f4eecd6a4c46311e3e93d7755464c16929aa84aa628e600a33125551c48f28894f30744d11229e448dd25a4dcc612e49d114fb6c9c7eb73adbbc3d8e7bf631c58d871210b672478011507721058a238e087af4cf6befbc54af49ec588327434858089c154a3e7aaa5de5bf2af4dc6d6d39f30adb33c6a344deb3beb1d1e62fb34c6ce2df36bd0d1ad18146685fd40d3f4f9e80985ddbe1a441a453ac349aefa0cd76b61b6621bd27c46ea304fd3493c3ab2c7b1cf5d230b23f07b98f0eb5ecbd44dd33555a4bbbed47df33b0387af1854f498e22f2df94a4cef128e49397c140935bc782a3c020f5a4ce7a4e7e6bf6fc9e7b76851512ba5d3254d8c863877d8f62da1155e47763743ab0d98b13e5c80b283cb8ce7a3ce6472b6515d22c82a87c4ee164d6796dc6275d1bee8227bb15a72963215ed487970707970b07c44abbc3078e8d06057d5f724b71d96e6e343636343f179e9f0b6e4eeb9a27949cc30629798c539f99a85856bb8fe18f3cbff6a189dadec945cc48a3a070fe18529c228fdbb6ebf7352c43fdbd6c26dcce64cab397ee138fc0adb93d724b717d84deb5fa932c75032ee7e338c3eca757976f00b591dbff0ca0bc7d3be9f66912ff51767d15b3919bd1228f39040ff06ed0005ee79afbae1e0719f6e380fbde177fb39f80f140e29af57b8e5fc5bb8b04819b94cd5b3fa9dba3ec92fea65232a66c5b57be97f24297b8049a1eed5e27851f10128988507d8051e084abc056d3455b60f2eb7fd1bb9828feb90f800a2fd42a354a3e84a28a94e9182a416614ed4a85a213f78c54dfba6f7b5fef7feb54bf7dd74d33d40991f20a9f71299ecb9e7a667e0aeb98efff23f1525c053bf218abb7f7a5694b8ce02c993158099892ebe718f37f3935c785aa8eeae56771fc280385cc6ba1cdc4310e26c784ed3b8501796909b07f82f37e754f9398209afb34bb44fb60835c8e71b81ffd32aeeed4cf7d6af850813796e577a6164300548c0c4c0c8427a173fef8d2162b8d5fe8de33b2e2aec345d881d84d8ced5c04367b63cb210b5b2b9ccc24839cbfc8f1fc76dec388be6cb8e893e5a4ca78cc720334684c07dee71195b9a694ea2787188b94d09aacd25a5e4279a66b6f2a6a67deb1acbe12ead1ceb1af219ea79f4dbffe858381b2de71f199ec86db955c1613adb4576e2e556f43f436a498f9650c932e9d7185e57837d2b494b2adcd2126c5d1500058bb8dbc0ff92ca545d3cbfc62c6c602323b7be53d3dea97d4d77e219311377f4fc5b53d72f8e990f69da43dad758fc8f9cb1c5eb539f6897f83c3ea0292c950843bb87965727cae3b9dc7879a2b975c5dc71f7f2f2f22a468e1edd61ae6c6d8699792cba9c6789210f17b0007646cc30e06d8b08291a352ff4fb1f1296152688f6545a6ac3396e639b6466407e3b56633a6e9d9bd533cc55045bdb2c4696eb137fbba5ce8eb9f9921db70cc5f423b2b3238c98767cb92b8e4e58239c7884d8df365e95cbbdea385a2edd14b74d578af8866c5853ed98774927caf52f7f06c13bc8bb00fb435f7b8a8a168b83d0301a50d5f506b408a93a34416d94e77d6590a84a69060ad2f00860f175ad7fca66ff3f43d4349d3ab23c2dcb0e222fa2390153c7245e364b3c88b57e4886873f1c99bfe6d66be623ff7144d316edb46cc7a2f23dc8cfb8478e4274201e913c4f82cc23707da3614c1d76075df81d0e755442b9746d73b9748f1b9f3ea71d1b65d4c701c15aebe05a41b4474cbd57a72bedf35f3ad1403e843a40159828352017a58eed2eee0e011b29bc07309b206bcde86fa949abf545c32ef83f300c29293bfabdd9b26d3c685bc7cdfc5d399f48860598b35f70f49a6e96b3b0fce9016af335cb7c4623d7366ce86657182a7e4af97676f6356ff647dc94962af8e15f5e2f6415e32d3461fea99395b28a4f9653ee558fb8a994f3fbff03c3a77f0fc37f9a8828f182fd05c34838af4ff8ffc949413d7e1ad8436dc173dcd4c4866a04dfa71b2bf190eb6b7ed1d760cfb2f769c365875e34044064598d99cfdb408f11ff39dfcda3c3bc3c73c070fa8b31273a1cffa3b43e1039ae9bae7d4256565c9ffb5f2468ff3dce2d1cfc3a1392045af56d561dfb8feb141062fc31423f5eef353c6a2b9d5e13b19c216f209ef6226acafe821e2192225153a2c325ade246c7ec4c29e3d906fabbc0e0db5cef34fe1bba42f5b49bb3b4eae050246aa148cff62c2fe58c5455db32622472630c96c0c719770d8362a8842ab1f31149e02b6d2f6acd5650ca13907fccbe21505ea7bcae93047f6cf7e8f7c6ed87e7b16df9b96b44867fae2e08fc5e603b2698f48e9f9a935429fb8d87d42eb3829e0bb844b55966248dc775f4f183dbeac0a2908ddd18213158106a75c44941136c6c8b158d0c0d56352be7a675aae8bf11cbb6f86ec8821cafd40b6ec61e8bba15ad344c2593423b4844ff829d52235e3a3ee00d395624130b1b627fb1a317dc9e5b415be2d8cdf3499ffd18c783fde73ce2f08c4566760d132bde3f28a1d6d8899fa73aa4f90b7400c3737f169c0d8a764d7566fd9608f9db801d2ea24ea6cb7d9dd5ea7d57bce0e9b78de00f604f5e4adaa73d6bcd50b2053d8f2bb9ebefaca06947d9eff4aa229fb05de711bb10572213c4c315fde4088623290c3178f52afe0bfd63205eb535f45e714ec0165c99195617c90de0a52e0ab9ea80d6f7e7468f3bb6f1bc616bd31a59f20672de1006f9290ca759fc049dc6cbee442572433441b10ba578ecae98d7d69f83ba7d1a615d030fd90c0f7a6a1ff834c9bd6b71d71338f281c4efe99702c8b4f3c243de3f8f33ffc8b0e3b1efd4ab7ce06ae11552d1e23fbc620fb5c778929866c1da599563f99c5c32a6d9752e3a2d0fe45d79c21c9273f9983c2cc91925ed7c276ebfcb22efb088b975e5b79d9c16733ef217ecf2fd6f38ae36e0fcee7d4e4ccb391f31cd313b7275341e79ab59407c9e9d71bcc6fc288ec03cbb48783d9e5edacb15691f35573e5746d54f94e6a790eaae30f52aeeb98c4372eebca08a5784e3a86e3b45ea4c908a240c3b6df2603f3413a7fb53ee188b93e865a2a8a83b62f3ae65ed3106dcc9584137454b3375472476c47694523c9a4e54ec6b772606cb803b3b836363d169b212f0bb2078962fb06737a4fcfbf47ff1dd1b442acad2b24712f6b07d896547bf6d950c4d1289a825a946dcb81a75edd5476b89f885b1e961cb7467db7afd0f337fae02611e0e83132113b473362422e8cc8e8996ba8e8ae4caa8b520b6c4e42cfc0d1083a76be4310ae52e8a42302a53e77ae40e8d282a89aec814d57f2ff22f95a1c4f9cb7cf106ff06628c28fae58aaeca57f2509521618d859b24bf7b8df3bb618e2cb33932c04f59e8b75d00aaa8caf1a72899afb5dd08943ade03006f630a4a68f93bed445f8d78d48fada4faeaa8431ee12687b7f1cb49e6db00831dea070dd3343ea8ae72dbc2c05c9debc53e0f782452febdb6e7a58d3c507703ef0f554efad3901b4f9ed7e93a628895a72a7861f172b91ded4f26c7dba867171ada6a76a1a45de964590f7d1da08f87056eb5c3e12147b4c27ad3f67158dd0648b381f758e6db6dff1bf6199a2deeda92c2399cf2471d26d170467d9eb06597686bc6be3790f57d6fd83fad3b32ddb2641b8f1876cc11b9444374622c61690b052c761a5e18c2ccff21ce90cfa31492206dcc35dfd1362d6035a0d963857cb254cd6632d96a69ef25c598fb351aa35f4b38f94bc8a994934e3ba98b764fce64a25f56d52f7ba9a92dbb2fe2f4ca4f61af90c9678408c33eb9556b89d9119590445199df7815a15f121d85864a0bb5455221cb338a276f1dbcf62b4a54fdca6def94d27bf7a573b9f4bebd692915b313370fcb0965db8cec29d93726ecd85337e8fadb0e7e5555bffad7523a1e4f0f0c6028a576edc95c69e86fbf5ed71b993dbb3a76548f418d9642ef13dc4d0b2205a1539fa21a2885b0193fc40c0398434d66e5114c363f398facaf3de32b055873a61aa7b3cbdc85dff0ae748d6ae607a9eed1d9e2d11928f4654315b551c664dfa531bf9003199a80a78832c21c03665235eae9f483a646670bc37b5effeb96e6a95c09ea444d0dec8902bccdc2331cdc6edf940301876427321bab957d6ff8b537eceb048d5baebffe1692cf4c64321373182cdccee299db47a2b61d0d6d95984f8e42b7f679d7ca0aef035d9f46c7929131aab87fa620931fc6f09c6ddcd5967cde65d8f2d7650dfe0e1f66e2ceabed62a42511098d8a7f08193f44cb6389bce703a8a87d1c1f398e2ad91f50e5df94a4df941bfb1ec0b40b2e34cdbf84278664e909097e1031425a93cbbe2c4e7175fb5dd8781a5dff714509b6c2820e1b6322b65516764549b3d3a1ad139875f42886cf77a29db3e25046b345d819c8e11f404fd55cb4ee6ee048ba78ec64ff36db07d538a70a6a5b69f497ec530cadd6fabd216cf4b94b9aad6526c03eca34308e32b9f6afb585dfbfd38eddc60e07d8debeef3a0dcdc830df80cc9b6e273ac18e728449cbcc840fda46eb214aaa1b4f1ae09aa8870ff79c4860b565e03fee7b6d100dc799e1fb682f2f049dd0f6f8ce3ca9257afd529798f734f42f53afc16261a62d81ded0de7a7d6fa85dc1ef4ee5a673a773d364ad2313dbf3da58ecb57bfaee2fa9eea954f654dbfa34589f29d4cd26e7af4a9ddf48257471d72855a05ae4d8b92a04d7235f8dccee988d7cd53c8d061de7aa11bf6fad0d4f4c7c77b058ecebab999757330e5a5eb4561742372d4ce75e429596a1a3aa7b42993eafcfcb18b9171fb0f38e54809313840d9770fca1d4d9e7d8e7e691edd0c50b0ed351b39e8975796d54f473d9b5a810831028105da574ba98c0d3b994a1449e5d879909c9b97208ae35454ba735856b9a68d600574639ce5d759f2b2fd4095c0b7c2c8ca0edee064bc4fe7360db8a811de8b784b2a806faae252b1d0f93b967f9e98f182c733efbc30c61f69c617f309f1d763cd20c8fcf4249ec445b4df856ce837f0e7b3eee6464dd2524aecb193488a75d7e36871954e4e7da6ea8b9b45905aba18bdff36916f5df377a51d6448f17ad674dfa316a46ad6c2c99f2b256f463a5d912fcc835dd479e6c0cf0ec38a6f4cece6beb71cfd9fa7b6a9ad4b63c8946088952c9b36e4ce33b4b976ea256dd891d6dc7fa7d92a6d0a26694f49edcd13e22402ad43b4736f67a08fb351f5dd0170e90b5a392219d5880e06030c2acc2e4207752df7ae1f85109f3a5831d7f408803a07efa18934e25faf4376bfda7aeb7ed8d69077f4b14c819f8d21a7ecf992a9047c21b0261abc9c560ab58ad9113101c6dade7b95daee0e54e17a65608b340607608cf7239dba7a18e50563a7abc8d07ed823e4a709970488974038f72cd2fd152b5242ebc26243d5ea37172a475fd4f8fdc933f9ebfe7a94f22b9f1492b7a1f7eefbee8da1a3b64420178f10cd0779f699ff77a516861d939dec62ff40230a9efbed1771f9edc85b23b9d124653b456a9fe083a35e00e0df48f7492f5cf75a54faea208675521b7f2b39820782fbf607056e8c4d73ad1d7ad6a9ad934356d55b643fb08c2fca209049d104543b4a0c7e3dc330fa4ad0702bd4cd4814d93dcd1bdb6ad1dfd63068479ba63b7f5353b769f737d5817dd04ec70564c8f93b144b7d3823d2ec0cb74fa826055580c2358669841b72383dbb15031ddc2dc14432ad8290537c212e2b627c843436fd242a3b6e183ddfcbe78b8983ccfd32c4b3bae59ecfa100487b9c57aeaa4a54d63dab7832b04e45460251fda6c8e41bf9650f324de36250e297ea94dfbf39cff565c1c557420df756d5dd5d8b5b83812a47c12aeaa68e4c93255f3d46241abd98977e3b9ccbb19e1def3a8da7ff0321e741e5095a550754114a62e9b769d1435cbccaf15aae17e4a9fba6cf5b2a947f89a24cef4655352561b099c5f1d32e8a7b239489bba8caf43a0e43abc81eeb390df267c40f8a4f07bc2e3c25f6c02b3ce7374d5cbbdef3f47f9177dfe7ce73087de6f1078e45ad76c7a9cd679a3ad477ecec268e6fa1cc69feb29d203d0ad175364dd3478e52fa55c70bed97d6455d0853c9322dfc1cf00e4e34f59ff01ec83eeecac825a1555ae00b952d064961f48b5896f37c4d182a35ad050e0ffafee4de02439ca3bd18abc22afcacaaacaaaacababebe8bafaac3eaaaba77b8e9abb359246333a4777eb1e09218d8457dcd0328786c37838762d84d71ed6f6aeb0c18cb11f97c134b26c83cd63675916b336c6b3fef91036c6c32eb6650ca5f77d11995947f768465af6f7de937a222323a32223322323bef3ff71051527c93c17fddaa20fab469a5d467b90d46b450d2a0bdb44ada089db04aab8127c5adbf39264540de0e2bed97d8ea0cc641a960d1b160f1ccaa35a42a788d8290ba2669a962408aaa0cbb1683426eb901524cb2c1806542d70b0867fd674e523aafa114597a5c28351bb5a3513ffcd470ffc4b1bdbb459f389a46e4882a802cb1a0e6b9aa04b96248a866519a20859685c2f97594d1fe3e471666b11e7b14d8bd1ca108d142f97129e3263c19fa33ebd2c84baebe4541f2570e47b8a10333b664c50be8733462860fcd975440aed0c62a3cb662402ab2c06cc65816603fd2db37b5dc2883b15663b3ac384445e241d1f16abe641a0fbfffb501e2e0bcf5541c90a026d56b9dd3179d7fe83955a2eebc88aa4194035c54c3d4ce361498547232ecc1c8ae5e3f5e5f44454878ba3a6ae4813d3ddffd87ce3758a2e68f4969f69498211ce9674d5d455391ca761cbc8586a44472a4a3322d1d5a5f994221222884a54332525ed14d2b1ebf71e1cddb7ac102dac13bae77239ac0abe8cea7382449e0d3551a34798517109517c2987e4862160af0518160c88a92b99034bb5056955b604a65a9a26ed9d02baba2ae43bd1713b9c0c17a6d293d5e9eb9d284c1e81a89a56dabab8fbc3914e930a9a2c29304ddb874aa8bf231f896a9a4aa08a1075ae9fae4ea6a70af0637bbcb475f1126d7646642a18b474a80d5b49d8087976235f20bb59bc1e4ffac6d420d17229709640e18343968fab8e7a5cb1f4ceb5b2b8a4282aecf61ddd5a3aa1aa2768dc22b6b4244760727fda8a0fb7ebc796e18257ff1b6fa17875e142ed9255afe1ee79de3059c586fbedf062d0769121fc0d611dc19ad04e065a08113ef5daa2084b02adca3574fbee27275ed189e676659e6248764b4fefca453b8ec38a48869df4d314af61253fc49a479688c5aa75ffbaef37be7fca09665fd262514b112d3ad872b9ba149f6acdd734d6aa3d50395f0f59ae21221813967bc073c4d628b3ffa11a63327e56350523a2d909d5609bb3a1266c2d825a8f9f9d292275975fc86b96e6e45453d470d1d344534587c29a4a73aee564ec4c9dedd9cd3a641dcbcd5115c86af809fc107ecfe7fd0f5ff8aca090df87351b71e8f35c0c3b2d302779d78b65e041da4d935695cb47db81b8d65b846b0b55cfec94b9d933353856ad9283238e33b26fe4f0e1153856699c100d38a30419df9ed89b48c826319392211b3f973f7c18aa411d1dcea42494cb09a8b17d9c24c2b026031b49ab709950bfe20a1cab54d5b319786c899509ac9c90553566262422aa6ff5ef9bd75491480933a6aa72026f3ab19280479cc9ea2ab478f830d76592c7617d43d44526f4660b5bcb0be30214722f170496e222fc5d24d1cb795403ec423fd59469caad55a69e90644d799ca78cdb6b637696a7543e72cfeb25ba41a5e658216aff629e50a9019fff483ec8cde316b2dff44e8d7c90fba24c4fdccdd767da871f9d621cdb72e81046021f8ef618f08c74536698f4495ce47c90d1fcf9a8eb965c373a7000de770b679b5e321802f938fea4e4ae0d1c4eb2107298dcbc450ec7aec01ac4318372a1bda187426f0abd27f40be829022c469b47168249093d469a1f3a0f6368d105b67cb71650fe0315dacc70dffb34fd5ad596db5e4499cf0257bae356d6a2e5124c03d69ac383faf2fd2f3ec4e40d33859b9844334224511315554b50602622a6b9d72461d556d1594c55554db1323128a67698d44c739f4c2559d1298dd8b22a11495180290a9be6b2a944ad88194e39b67a8a30c4bc2e631d2f90270b665d17b101557514f35a13eefdef1311cd9015519554855235ae198e1da63a3aae1a8afc3e5d53c4a82a5095aa3211a0cc807a8e143763a6056d5fd163344f6f990df1f5fc1fe01dbdd7c310e3f333140f24069b66e330d37cb1e7b9c6d99626674e1c7eb8e2521e880762fe56dec0697ef8eec50785633a0f633a35c0ff84e217910e6c9a08c3f2fd8b9caff7f7debec0a05edbc1ec85127245203cf8c89683230bbddaa7b7ccb2bd1fe92599fc1e8c3f44648b70e3d9c5767c719a90cf75d7925a267da632697c41b32be4b7bf604c56cea4335a929c8e57231ebf8cf6c45f647178993eb43c48c44e10cfa425d07140c34f8fef6f9c0b8cfc9ce6f8ca048385681c201be3071a07730e03b080e4607e623ccfa4c3471a071a9e0c1c3169d32c3e5e19215c5fe4b609722ad53870f581462ab8db1b4e01ab7f6e155a83bfd5de9d56f3e3e3f9c0ee24f40fb00ebba1503bea4b5538ec4ed283047a9aed02d3b0c95f4f1df867e9f792695cd1ba5fb3f01c8b2d26ab866483ccb0b682593380e2d57afbe65f3eb9a9793feeda17795b95205a27d21c7ef43a254196bb5f6302cde95e63cf6d6e8cc98f608c88d18658277d549e6fb79e9c3fb6e97724b3b975a66bfc1d6137792634cb10d9b86795c7ea8da20293ce2a0efaa32145976c8b30bb3855318340d98b0bb4b693d4663d70e45920d96bcc3e2de130889b1bc7eb2dc551c3aa284f34ca63294a476e6cbf316c9faed57f27e6fcc8bf347e20453f1b8fc916c3bc898d3bf154a6b2b382c037fa2a54d065475d4e8c16c78d8c317759fc13f1e85fc9128984b5ee8782abbb1b46e6be6c7a7b9641e1e8a292d3a08979b63fbd10e0c4c44393a1fda1db42af0e855ce499482f2072dc6dcfc0b0d19e9b3a0cab1a9829e02bcaf850dbde0525e9c74df72e4484adcb65fe00072ecc08d5d23db7514a1e855702c7ee7ba8f3ecec4db32f9819e04be3b22cb9ae24cb715190322651ef50638220848170126c1bf822310ca73195485fbcd005f28b17bab2ed36b825dc97e211ee4bee80fbe6531215631949124c5390a44c4ca4524a8c4680330f4745608980bf11a361228b18e863abd2bfb005b815f0b42281554d0406176e2ad8029747321927aecd079955539fecaf3f98019fbf946519c6646fb14dd21eaa526b817d7ebffc2430f291e391042537f0a30c25bf2cd37472b79b662784d4c7762cbf7e65fb580d667b0128bc482211392253d3cf50b8b030954da5b253cc2f2496d15657160bf97c617165552f183d9e7b23b4b1093bc72d73dc9c81900b81366a8d63e75cce70739c9ca5dbc072e996ad5b391f35e794aae69c93cc899c413c9ce43ea33d3ff424faf7b9dcee33e05ab8797fa9ed1bab7e34d398b35dcff6c4b5e7f6d24c982b8a16abcbabe9b1d902373629cc8ea557d7f4f35c2b146022f3fb5ce82e5b34be65abbeec7983ccb2e7c43007db09c6e0b692d1fe10a134e0b5b83bd6465232a564a1e73cd218cfa3e27e6c4156e4f77fac28cbc58f2964bee74972323f0e5716c6a092c7ff7d97f1bd15f4024624c9e2165e460c0a257847ed3242e3f8cb77e0d1f8dc2cd5bbefc3b7719a6d656fd2e9acd8fd7b963f7dfa083b15a10e7908a1188fcd7216d1f37f9f15f5ee3fbe06f3af39d56ce2a9e855f06c62bf05ebeb2f0738ec5166e8c8780264ef287ab046995d268ffc4899171dc3c9c773a1439575d365c9574f994955c1e4efd615ea9a989093dd33d4103b8a15264778a6dd91ad30949a2266a0d4dcd3110dda3d13b614cc9023e14067c031d9d1b2ec2a167504d732c60d07aedc6d1fa34eecb743c46a356683cc3dc0159a17e6877e40aebd4a55e468b33ceebfe3e46c54040afacb1ee8e25e7e7da4082b092bca17a5face4a0d2bda1254241b11393a9bf4a6406dbcdcb4252a5f25d3ee393e9bd7f17a4c2ce6991f123433c642cbf52a72fefa5f616ce7c875cc171bbdbc067c1dca38ff2d212fa0b8accf6223c1154435d923911df2ad253992e2025f6d2477e850db71da870ee546b41c8f8c12919724a9fbf729d6b52fb715454d710f937a3ecbaac20fb2f93a2f4ba98a826ab7dd2e1b0aefe70b7f4a2ae40b2cf266a85ded732ac65c5fdcbddeea83628cbcb053a852bf9bffd47f87b6a44b5b77649577f31b235a86f53e6d4177c425c5e268e699be11be25e8a2e717f638799cf7d19b31bde0bf9be78eef2f971c9c44e4a7d8cb8f5a0c0d5f8cc4fa6649cc9234292749562c2a47e877bcd982ef1aaec0050daef44d0a5628ea581d468ab3632358eb7afd65917d2e34c3b7ecdb91be2e1d1deec9d1be0e1cb137dd570ee40161e0b7708dba0cd6da62b46fda21ee99cc90ea50f0c780099866574e5cdc75728d748075079ebdb0b6be4e3a39c7b69d5cb7c334b7362930d0f602d59a1e7e3bcf16c81a8bc7d92c149aa8d0256bb9eee7b8a6f7d4a6ca980d85b6f4c73df293f3c785d7c13eb7eacbf3c47df769049fc3e4e5f8e09ef5820470bea4087bc95e865db9c07191b8392887bdae716350b4c36482423771c1fd1fbe55a0887d430952c8a66855f64c82a5a87bc08d4a844a758512b94a53d95db3dc14857d743c3bbbcb5bddce17b7394a61465615291e719c485c525479a6a038db8af3878d85be9f701757e3f0bc1fafaf873f8118d9edd0e5c019bf2af444e843a18ff7301a7d7c44b737e35af39b61335e7259056d7c87a66efb7fa30c41b77d848135498849c2f8b820c5d018ede2f96efe2554c6fc80d6e63010b48a2035254191eebc84bccd528197ac5dda4980b7c4fc900de051aee631747c62b9c688263a4a02afe404b38872151ed0c527a43158c56683eb457f1526bf32c5b4f3ab4bf554c3faf807bb2b3cd6d207b7d513f1587677bbc02e57f7d4f7e1a4fa3426fbaa858758ad5f9a62307993918fd79792f18fff80fc1e8fe7f4c1b9fa362d6a17970a13ecfaf8c119651a761ab6dd00032a271f621503faf67ea0370cb4f76dfbb2050c19cebbed47a879f101ed14189dcdd5033f821e17dabbdbc52dfa5edf53a51ba7eb4b4b754cd6a83c51582a16dac5c92d7baacc1c1c9f94e9607ce5dc707ce59e1113932ff5ab38fe8071d7cc7c682004d839cfc40892013fccd12da20c0e37df8f4fdffd74df0d06430e3edf770b4fd6b0117a01e5429521db3ef274cf78e4a72dfd0a3c5ea1f7e841d261f66c2926130a30a93c9bb0c05f7f70fd4810dbff3c736ff54218f564cc83666add8217ab888d62c9b7b51206ee7de13b6fbed3d6cd87025b37d48747424e281d2a856ac0fd5fb6d9fb159f4f225e4ecc2dcabe039d0bf79f8f96e181c92f26c616d62dfdc7cc1a52007affc7e72ad94e275b214dbe7e9fcd563a9d4ab6fb492342444985d55b4b2a9ea8d920ab3cba1d8bdfd3fd1e5425a14ee51eae204b55b2e89ffee0665171c0bf3dc7e468211903f354599c54160b950970d88425d995e363b2aaee586aef6dcf50517553fb1fdbbfffb1cedc9412118c947bf78ec5db32b22d48cc8cdaf7a9445ae98ad0cde889444ab417168d99b7f5387617c86676ca5e924babd41218e0cd1cb303c0c8aa2e0fd2ece14178d1b398af8d458a0a2aa95d5f94840efe40c80ac0ac15afc6a73265d02a94309fe13dce539144bad636a07ca9609b4ea2b85424a4b4bd3cb9dfb8568f1032920b2752a595fddb4be5e5eead18a449511ad4b28e6a75f260692e392786654b01164e554b4d41982021c4c603e64e1daf9a1ab581368aeb86e558699861a4b4ad58de515e1c8fe8637bdc446c7ea4b45c2e6ddfbf5c3e8b415c2e3753c98cd02c15dcaba1450d5a3e2acc954627f87bf91db28f3c8b880995b207768d40316ca6b924a990e907964414a95962eb06359954c988aabdfa24b5c424143f7ea3a69be4d74d4dedfea9ea06b847cf32940719f942dfab6707a924fc3c5b37bed13dab9bc90c0f14667b990cf9c29a14d5bbffac5517aad5cc5f5ef70ccf90353b1ef88417612d42ca2e44b834965137bd9047817a971418c1bb6b96d11ab3bb3cf00762331ab9060409c76c360e8f785430f5ec931e87af6f64d8d674641031d35bfa10d6a13d24299a1f3aaf5dec7a71701115ea5d1e61b0e8926f3a39abab88b22d7f87f716923f0a72ff6d8b32994351331c6cb46f56d1aec42dc26ab3a45bdd33b2f8fcf322da97a881e9a89fac5da0d037d861ebed9f33bd19da74dc84f6d003aa86e280886cd095aa3800db5f1972cc0ecc73e739610a2bf439c73767f261a71dbf84042578ed69cc3dcd21fde0b0aa5b6825dd290cffca0301ec2b7977609e7b3366162c7d952dee3cb63cfafbb7d122a99db8b0116271304ec18089e05050d3f2e0d572e2459e4f47121698eb027360802c290c976cf899e34cacd3d1ad939b2baf07b537fddc2fe8049557592b306356872b7bfce1c5ed5a87344f9bec5a87aed73c461669c47ebbd6b3e77c1486cff459b5fe4150faeccbb169bd71c0a65508e8d7387a1454101910b5b22d4f7adbce9378c9b3ba4878e6fc8b0c40d1122edbb96faca8d7125274345d3727ff2411ab6f5f8ea622adca682a5d1a5d0a8f5ea3e9dbf7cd4e1da023c6442c423263e45e7bac356fa77289ca62dc6935efcf54b33cb69d17136d29b41d1186db8146c98b8b868f491e7c8a3d714a9ffe492eb7e65df8e769744f743a184c8cfc0d9efc983dc3266392051e22ad7b8e0582de60cf9387453b37808fd1e9cbe27fdc2688fb27ff1eea71341654a9b298a422570ab94c915725dfeace5a82f500199554f1fb9104ddf5463d21ac0a69f2f9ee0f685e99fcb148a5ee9f1c31c3da950bb269903391286bfb872f7c963c0b7bc75228e44e13e6bf98177047f24e38c2996f57e2a98d7ca73176a53a91731223ff25b9b23c1989243f95ec4c90e4cfca61d995e55322a19af8a9c8483df2b5ccfc6afaa3bcf8a323571d8e8d1cb96ae48f93b63db9b292fc6d974ced4abe5f2272126abc5f32a8f4597b3c1ff946f6f256e68ccc4acfe49d841717e837608d2831ea8f234a2502dd56bf968b0362fcf5e4a1c989435cf55860299ac992d31397dd706882e3951febf2b0c1c7d865cf5fe38bcc66a8c0227c6244c0156e4f324d7888214e75f664fd01d0906f751f80c1ae17dd93967e54cd97f2ea51867d5fc0902c96f5cc71e6398fa2fd47d7149deea144758bb09046a2d108f79e21afe1c1199fe780b24d16d7b8aaac415d4e87f7f88fc9610ee42220aefd1cc9353035d9fca4da895e768039f974e055db4bbc35fb7f301c3fc6a7b8e53e6a1fa8e74aa059e5efa5e7374cbc2326a3fdd625cd5e36d72f1fb342e3f0ad1e06ca0023844f9305b456cca32a48e6961d08d557621680e5122371f172ad54e3a025f378863620082cec1991781691aec38537fc37c9eb8096734d6b86a5649f638d58b65ed122195bafe9b1c8d2b6c6c4ea4463dbbfbaf19863d9b9543c0a879d4e349ecad996138bbb7038efc6123396c9d37f634766a6ec7814d3d803695d95c430aef061519a281dcde6f3d9abbf041793d9840b8744ce49ad2666225137914dc221e51c84831db3a7e0246e8706e39a21bdb4c9764844e9ef2e81ab7937c53eed67153f7952219abcfc8420b405f9fe3c8288b1ace00e99fc4c9fdc8676ee27e1525b30f214ea610eea39b09e765ff81d169b10fb33cefcd6e8201e7d8d2b383d0d36f5accf1840229d4fd05a7b9efccf6949171f96a469ab6e6db7feb2fbc3a410335f4714497a58d47f59929e924c15937ab35330c7c8dc34bb00d5a1763dd7fde1ebcc989084ead8c80f2413aaaa981c19330b1df40ff9117cd3cf325fd304ac1d134c72cebf14fed5b4834f79c023c2276b11768472e08936593c915fc8e717b66392e756293fd8543256b02cb5fb5e6a962c4b2327e839ef32249eedcae612b29131810acd98e4ac3e2003686e2903980902e420b81777881e25bee9e2a050e0b3b22a44882c1f903569746c5bb42289425ed0e5dd32ad57f7ec1d12140081b75bd6a1822855a2dbc646250d7e289388a0ca57eddd53ad33dfa3177e00fce5dbe1991642f34099dec2b584cc606b94e164a0e5a4e2b86d1e3102b99c781243f5226806dae3b2cef3f80b6cbab0100c6c6ed0be7a0b5ec53b3ac964d2dd259b724791c482a02b4b91c892a20b0551523ab2f95e4d130d5911044155215164e3f6bce3e445439225b15211e1604c64b370ae880431b088a848c64ae7866bafbd01283fa92e9aca515951266f9d5014f9a8628a754920a7ed922d036b2da8522422a9822291ebc78e1d1b934445d4c5a99f9a82541167cbc7cac88003a397d993417331898b5710d319be8d6730c636a9f9411161950a6c2790176e7b1efb7f7f5cb5c5260c677bf6e6955925424fc05052c452dff4e0fd3b77e9e43fa504b4c28d28b3cbb764b7c353688ab67a5cd377edbcffc13761c457dcbbbe25ec83f5d80ea54255c41c8b730403cfd51ced71cbdc6cc665cb25d3672dd4da0cf292ad126db4fbee9be13134d97ab748c5a4e9b62fbb7c54149d1c1e84ff2a52c135dd1c390d95cfb11fb0c339868f77b5208e5e7e591b2a0854fcebac6b26a189af89589863340dc6e8623645953217118c9220c3a1361834a19761d130bf79e2b8a42c2b94941e2a4bca04641209a83ba148e5874a905956a4e3272676ec78fe1945533eb3ac68f2030fc89ab2fc19387da6385d1c90d9a5867dce8101e7d00149a77f779c3d63a652e61973603f3c7f0fb5acb396455f41739eace5f3e477e13dc34b98223ec469bb8266b54f774f5ba5940bcbf09a6d18df39abc969a7bb16cb28da59ad50e8c3f7a7a1726882f9bb3289a75bec531eb889f916be401fedd043ea2118d3bbc9edcaeccbda9df665880cf7cf50489a2710bbee84cda8c9c2f231e3aebb8c63cb05766af36b03cf634b1ffc8b4073f63fa72ba97c0b132dde826c5d901d786cdf1dbecab29b71e786fd632fa52bfdcbddc205fa32b0cafd68ebce90a02f65989b8321edb654e7a03ff53b9978f49d48a605d9a7369560d68b35b1c1f6a245a067ee85ed492931c3f3395cb96be899c08370393c5e1843a2ad4d0b0c3ad741336ec614c54b5e40ea2406da469b6f0f5e8207e3f6a39f07a69ac4500e85295da7f4df5836115a95ec747644102dd8d7043745487557b5beaf9e4a0a0aa196b87bc77ddbcba56da24224228e8d378fdc7eb439598113455c2a8d6dbf6f07376069b8cdfa943b39e94ed53f6e5513959640d253d9fa08d0077a44244262a950e954a1f1bdf57cdb118818d1059994e1f77bdaad2cd041e9b828a40edf82c6efb71d4e3959a08cb2adf61eb8fb696e06e3dbeb9d231d58d77672bb6fd4ccf7f9752ff6628072c166ffab1a62dbc8c2944c5fcfbcbdaf2db5f392268e88448a25460bf54e10e48772304e14c4ccbf99e320a48ad053710c288cb0162e2c8fed1988ce755cf6e961f4afdc08d5d01797edc54c5bc12852b60dd240dc89f8957cd3a6c326dba79a4b7b1f79e2d1bd4b4d2d21db92440b635357de7c786aac4025c99613b733568525e49da557ecc0aff0917d3b1e282bb296536372ea4063eaf0d4d4e1e9dac1941c53739afc4dc66a60e2fb0d6f309aadc25019d03206b605d884cbc5e1793e80b22a165bc54a8b735c3d605e72d6a6cb54effead6ed94e8ec974d0dd7f41a6b9bbd173e985107c22f526e77b48e8211d6a5bfad339e7ad32e5f1c0a8fc5627f742686dfd34b0676bab9cedf164a5ccf6f41ec442ecb931a1c31265b82940dde3d782eb2155f8e780c43d4c84d92866f192efd881db9ec37804ac087c408d112c8c3960a0015053a0918866e9f04e1d054806551d1d1b9d48e765312e2ae5c5b843455d11a4639393b962aee6e66411e84c756cb1ac40057932b3ab1c9625026c6fc230688a9a5606f8875f54244d11c56cb2962de68cb0a22a34671a4a4a35c3783963e31d2555991405bdfb9bb24288aaa71455d22dcdb2b3232369cb84b60c63541255299e8c672271af3f3187e970f97ac5f17ed17ad185b5ab867b0906f002e6b4dc86ed83c22743bc73d4bdb2f05ff32ccc5a19a37e6d6c743a1d9674d7d981ac15d60a9db54ea1007fe7a0048ad7f122e4d60b6b1b058cf135e053ec6113f669fd6beca531bb250e4ac8acf7599ce83e7d9de79436b05af5a9fabf5f1fc92644412a03b1656b562c3aa2295121adc7d8caadca56c6889716cb3c2c6c9f8effae68a400df7706beef38d5e396a1ca3ab18c7846e22a3245526d3351c8cd649fe701637b3aa6d7c19c9b87f184e2c303705f64046cb2a1facf1bc41f2e4fd40a8aa84ea87125198967d30937ac6585aa9db174e0f44d9ac88413a6954d1f6d8dd4ebcbf53ad94825a7a072117e94d1c396958c985a8424ec5c5dc70f453174c58ce8d144ba385e2935baef6a6c6bc05f4f378c581da3f04defc0e89a9e240d0f68598a0b64c40f22d21e0d7c4cca71468d32f2d46da3a2051242ae1765550f471bd395854aa3288af2ed40d66e4f8f24f2a9914422fa0fa5e9e9bdd3d3a59f75244b7eae249962fa0620c0c4d273b2f037af8c3a4e2e992de854108810719c131225c9436e14d85f819027bc50f7bbd3b2207d62023695c557a21bd1c427a470cf8f31447e2994467ac07bbe4ce209df6e9f44570e368105cff1877aefa539b766c4357a7c15b7fb75e0618f303c83d5e3548b1b6b73cd9cbd7efffe8319d1324b342c541f609572bcee0355214c4ba625660eeebf7fdd8b57f0674c0ec1fae371588c0c8157de279bee81ef399eb311769c7b7a0ef7a87b66a847e4c44be892a71740dbd9047ced8800158491466fc1b6cb8026ddcabcdbee69e4064dc971a18ff445f10516fd002740d8bf5f7834e915593ad06a152c8776efbab6d53a20c90fa366e3b5bd78d350e35b6c137d1832377af1a5ebd2e5cbdb6005a7f76d5bbe5c625f67bd2ffc745dfa2e2b93becb6c1efff585cf032df0fb305f77866e037e1c31c95139d8a7a3c0fdd1e3ff5c045367df219fc71c872c2861f0761ea815fa77b6b8809b47c5419bc3cf0831ad3e4fa598c941dec75aa633df009ef121c5246f68d459ce10d222541b8fedda158bc18a539235381ffbf3aca84b254910b3f8fb35188d2cc3a0d6a08dcfea61257d54776d4608ccec1f3d9a9113625aa0f4b23d7eee21acb3073e9a911149179282208d44fe7e52128404343b09bf6d1aaa7a44b2a423aa6a3467f6b37d8fafa9680b3a9764b1a1fd390f1cf27420fb9cf3e80a9c6e65beea92d0ecb1120ff7fc7678f8e3ee4a012881a92ba747b7b908e0214ac5eb67d822493e3d56c4d0c66f6741a2c713a9a9c3375f399548006b5c170d315f62eba8477f7d89d980b63cadbb3bd8052ed809ba005fa85b1bb4c8203f9881175fbe7389dd79efccf545582a244d72b717b9e7e3d495a97b14cfe98c6c50e5eac6f4de479f78646f095878a829265ce65a390ec4993ce3190df4302dd0f68c861cfc3a2b0e37327207e22254d11301498121e86a97535c23b9bc9bb0feb4b7e7fc0c3532b0cc66170f6a4010b8ba9599a456cab2be3fb264767a5bccaf859da65177c7dd94a53377f6d56bc229e62ff16d01e955b4850bc57960dda4efbac6c51f351e5db7ba40d1d77a070f10827b20cedb9367d478f815ad4eda2dd38826e6f2d96bc371f58cfa1a2c7f2543628433223c4985b07e8d5a9dba6572b291964553bd69a2a65fab8705fa244d8eb0cbf66df602fcf3ca7c9dc2b7994e7174ebde55fbbaa7e22ddfb1f75aaf2bc94c73e2eafebb1f11ca93f7fb773f78346a9363fead70ddfc91f046f2d6508951060372c1569943e4aef821ea701acb48cfbbbd35aa27bbe42c173042c263f7c07a720fda0b2568fd739a6a5312d67fa05b75383768f7bcaa7d8e67697f450baa84093d7e37a577738ba6894fb2d8dc96feed09667c94a49fe419da57e7dbecdb08707e104783eba8431516a026c07147db2b5161bdc4683b7c3f408abf8c78a10b95b62f89e728854c56deee49e785f63b4493ae09c07ec8a82f32c5770051f80d7420a5d211d83d75581bbfa15bdd2f8854866f4084d37185eedb070410ac669876c89ca2c6655595e3aad2fd6a3ca15b2a30268a02896ae989e70b982f408575555ec5fcaaac7afef4a8939b663c8b1f3749e961a0720288213924b8cdf90e0e3259eba1cb927f11f464329c596d4fd58e5bae32ab58e1db755510c48e684856ca35ef0c5bdb472b843ce405e2f8187282a492df619977996ed2960ca82a08d4b83d6cc9738a6b1daf4d2faea6ade4abbd281ca1be98f568ff338d736a0bb928ef102afc5bc0347b6afebce06e2a43d61a4a0725a55fe1dd7b6759a262634f4d56a8bc78cb9248efc2827d8feec582ab0feebf46a4c34253de4d45aeed6988b0d441f5a55b1665aac87b1fdde7158c8fbfeb6ad4e923c628c3a35561855882bdcff7b074b1779c5fc51e733765ee99ee1573d4757e65bdd2aa565b9533d255eb57505d53dab76e9398f2e694b4b2bc76d7abb0ecf623879b4d5e5ac860edcaa12bd6afe205d2b65bdb8aa6d357dd79c7b6ed5e51b379f8c8ed5018d061641dfad964bde4e1970739c4173171654605f87dfc43e7e8d1ce2ff9e155fc202b2b32fd30663f7cb85caf8f5db97e74fd2a2aff672a4f31d4aefa406096c29fd6f7373cec9e0e8f194d8615b473bde82041648051e2e199ec243d3d78b54658d3dd6f627a5dc3791f1e7f51ae8d024523fd8a285fa32acacf6dbb426e61f98aac11df2003ba9665d92cf4b0258b1f1423cabb84034bac2c1ac4e7e173143d682799dcb73c3849033bb5f820bc2574967ce25acbe9fec09f54e7b89465bf8727f35792244a64e7b55630f14ca77b9ecb49c8ec3d9e2002ea0cd88a46a017db18d53aa0038cf3d5780751cac136093b0077861103cd082cb9a4d933f8f8728ead8f4babdb300cc6a3b72f4dda3a9c3fdd8b354f4281df77f7db395c49757b92555dba7ddbea12aeac44e945b11fb46b2d873a0cf3ef12acdb5f5aff97588fb8f9a39fbdc4b10cfe08b3973aae9ebd438ed93b20f5b1d80aba363fd74e049ab94a300884bcfc972d5aa739da3d5b5e2995560e60226fee39d4701ef52e4312d218466c0f6f804719bc26740bca53c89005546d1326b4fb13a841ce753b286c261b1854878b800ef1c3bd2fe30a29c4c3ec1a24c7b898c8d391bfc4f20199f3ec16b14e4ab4b6586b7bae0a09c7a5dce6b3edfa6e0983914e4e25ed7d92b4cf9e42983e811da7ec7d02c2f60d843bf96ea461598d0896bb94b24ca44129c3fff36c36d197708cc9bb580fe6fbbac01eeb7c7f27d64a997b25e9de4c89d9f2093c538742012d44d7139d04fc61b66ee82c93e8e806abebcb3a981e268f9255d4db322f2dc46f52028820e423198b912846b9b26a00858e73ddb5aa222c9da271eb8afa64da911c6d3491bc72c79bac383da56e7437e66529915765edb5fe83d09568545149e424f01fabc48a1cda6b8669aada68dcd5289055e05b4e52e7bfec271d29199163fe83be51a1822212b547c3124ec312948d8f10c51701ee44ae91912b3cd01c79fee513b1be6d1a9b2b395c49e3e521d7883e843a66a48eaee4fd48cc8185f2afdee499603fdd394ae549a059ff064e6f2a03753a29d3a31d5c65c95af7dd4c3e052757753e8d90cabf51aa7760bb7a77bdf41b88b5fce9ce55fcb2dfb7df26df67f641689fe9e1d604324f183ed26ee22c8b3244ce578bede9b9586c5bb3952fd9d6462cb661d9e72f9f5910ce90ce7dd7af2e4e39aaeaceb70f5d735b242503437a444e757fb372e5750f1ef2d7339431ed60082c3d74ed411509f5bcc27bb0ac1c3ebd1d20b3966a55524c602402f2fd03a61a1d872f9485a485ef743caa9a07c2f9c224f253c7da4633bf9e6f1aed63783a5918e97e91841ed3f5c72e3f102ecbd6bbc371067c578f87df6dc9e5f08192936050b22b996231b3c2b20987b8c7aa9254e57aeb173cccaeeb42b785ee0b3dc8310618e2596b615000ee2f6b7daff102e7ec736ccdf3746e30106f313088477331e1846ddd6d39931c2e9385852576804a7d7630f7247ca7ebf00f8d72ba0d8f709ef402da9d9abc7bed41071ae3fe5ab2c89ab940b28ecb02fe630ac0139c56e57f674fdcedeb04985e2a1eca32d4d710e9412f04c44b852b27cb81f0bf1c70006b6cd3599b29924271a67baeba505d3fcd57ed3ff417ef02dbbeca85ee7934bf263652a499c2e0c2ecf5056d41ff03ec9aadd06ec66d3162c00b663ad3a308fcd81c7eac8eb9a41c4431e1b8807ebed6971760b2a919311beb7e20961533cc9873ef2bd44c52528f7cf7882a2533ea2bf602b3f53cefd3097e38c70fcfc194fa54cc75639f62b3ebfd8664678c57bed2c8000bf37eebb37e30f52d131f4f630fccbf19fe05958bb5fe2002710f636aa136cf0db799a319d62a22aee18c6899dd576b4258bd0fdb3c70208c5b48f46b514c238a6019ddffa5908a1a7eff592336a5f210b6dd8fa899086c3133b63d03fb8e9da5692356d043b62767fd70a8c2b8bf0e8b407c73e8eed02b438f85de1c3a197a6fe8a9d02f853edab3e969cf4e937695af71514fd4b3987467bd2d22e0637cd7b680b3092eb5fb6046872e6df1ab0bb7b3f9e74186bcfd17805c32294d0ba978b230dda9eeae65679decb6242b0ef398d5057e58e387d3fcd0e481b06f18281cacb93e70e61d3a0335bd0359fa050af77368feaa5173bad0fd2a99abedae3a51d588b1f2abf8cde8c0a1c60f1a6fc21e28dcb2e68b9d79076f9ff86786533c8a7c7eb127b5f6ad8307ece30301718fbbe30664a7b9ea14692a9e8345e586a7a9e3e31438f469eac5dbdbf022ef2dd537ea4b5f7e1a36b235f8d32df8834a0ef725c15867cfc0b7b012ba2b14720782fff41d514ce4c50262ddf3a200b5e7515dce02a2b9726da18afb8e1f1e6de8c82628ca996e8e8677bec98c468d373f05a9f9d41bcd18b1cd8f8cea9295d2de6045cc23b6fd0ad3be6cccb08470584dc580d3efc831374ac87daa1b17d52be5db291e6f930ee3912ee8aef6fad80e6bcc8c2ad194ad44dd28fe4bd2545c546ed2633f63c685b8647f4fd5cb46541723ae3ef9a46993a8597d9b265a29fd4ee975ecf85af12eb89ad2f62af42633196d721bb017c8f3e471d8dbdb5c7e36c40d71a1596be0fd2d0e531ee4fb43efa7fba5e1375887dcc737bda15fddfc1a19cdc1e2360ac7196fe9632a85da4350bded01e3fa92b2e9bccf736babf331df570d8318f8f9f58b653b3d40f4b1c03de3721f8d95bea2cb18598268c5efea321062f21c432823016d731da7083c7ffac187c9c51d9714af66739970bce9463fcd82269d6291933e1d75fbcece6c995f6f46ddba570c49dd8d36fbceea5be73d9efa4f850ef979e0a90f865ec179ea72f145786a16e13120e4fad18706e43ab4f822f6303eae2992ab0fb2bd874f3196251f90a9c9b35deed9f7815e95ee7759feeb98ff3aaf8e2e23e404cc3c0f4343ee653fb8b908b3a7b72e0e0df9a8e7d87eb76753cc68ba388d244615b909374f166b2fdb67bd5f7dfd7a458bc9d9d5d5ac1cd394c2adb77eff521dd7fb54d9efc128d08d5caea10a11756e6cecf397eabece6d10c93330afdf09a35d649ade364377657a5e3c6f2fa22e4d68f123190c739940334cb6aec24349b2b093c85361b4e3fe738613bb4b48f023276176001b3987fae416722098f1efbb483e2f49b67ec3be7d37e8b66ce8332de00de35a2b266af19898dcbe9b0a96a3e481d8ca2b8e25d0dddb93622cae89b116d492d5d68c6ec85bfe5c8f0dfd1c38d22d7e6ebc4f8d1b42ba5c4e0b463c2ad051391e93e5d1292da668da8de5031dea8409adeec429b4b34a49d8a19d03e51b354d896953a3b21c8bcba354886ed9861eddaa0d75eb26780cc13f27bfc6f4b893b0961e819594d35a8b5eec190ff4b5cd4184b977292a1618dc6119b6c0787b6895a2434bd16f07ca450edc60a80f13451a63a0cb6a5d65a0cb639aa04d442caaec15a8fc06b69aee17a9fcd398dbd1e20a4fc270e5ba1bcec72459579e56d5a7155dcbcdb9dd3f5c13a504d61c91e99da294f4b29cdfda34be3857f620a685cf47c36a24bffcf1c99bc6475a2f6d80e4723ec2ee0683e8eb38375fea08651c1fa3a111d5a815da8ffbc7d66f70187c920e39e4255a9bc40903e79b5fe3545fcc0138b2ce6f0c2209ae7bc9f02b24633d67a3204a9af62f41ee89207781316efd168701215fea1837bfcaff75e963dcf41673973e46dcff9f27cdd08711311f6919664dc100981bdf0372e8d540c6bf9a5aa72d3ce099c5e7f6b7c8afc2732984b6c153b99949a216f814de1cbc00f65aa54a99eb4a32e1bbad7830bd0ac6c945f11e1aa2b56be57e50c2203e57cb11a509491e956906e7df2b3149cb7a2916df95cca432e3c9a824119d6872ca1a99bc35aa2954a411933c133c4bdfca801c4e48bad880e9ff66368d59b22c93bfcb38896466723c5fa2822ae565896861a96eda09dd52d0c7dc9f3c9e0184ff7dff1f79069501772e1fd6e8e53e83ee2ffc841ec25f0693abf710b8b17f939cc4b95329977aae2f0a71fb26cfb9bec923f0f9c67e931d9e71951e46375013fdf38f685e4687c2bec978bf77b47c0c8d73c23a8bf98a723a0cb752adcd579997149afde1b75982d7329fe029d07940aece71a8f4f2227ec49067c14399787f2ea90847d3bb8addbfa0da57676aa9d54479dc767205f82fe7d8e3e5c46aaa36f355782af9e2ae74329d7e334a9d22a679de08eb8aee5adb8dd8fa7a25db49d55336fceb642bebeb3163bbe5c2d5b061a453e92b65b123caf53a8fc7c66c5339062d46cd6831e9b4cfdd07e6756d3fd30fc8c04b8a81fe21c83407a0673fc70fdd37f0d2b0275b8b79c5bfef9d9f1aac7676a08dabfaa568a41aa8a9039f7c8c0b10c2900942a80b2fa52304b6cc5cefb0597bddaf8a1ed42ffbed7e9e14a05d1badf58166e3249882141829681179f7fbc211a23d9016c229e32d6443d3de9a109c9476df7b81fc50f6056d0893e477195e00f3edf45b40ea8c1185d519012841220eb4f616231516d20f6824127edf6ec575c9af7b6dbfcf4c28cabe7d8a9230df779f967284c45b4d550d705699fe1866b81b08cb99717b94999778ec08b00b4d993eaba563b1b4f62c3b7108e3d4cefc5faa100b77d7c33141fdad8fcb1c4b7aa05d7ffbd941588872144a8dfa4c0d3aad435bbfab63c3faefb213f2011e108ab74cfa5bf6f575cf006f70397bc294e11cf09093dcc010c30271bbb30407b5631693dcf68c0101e705e66ac30cbc7be6115fc88c916824bf909fda2db42f33d45dba2d4882a18f2e5db56d54330451b0f55daa71599ba0a9fd4c245acd70d10d3952c9c4f2ea23b9666eb9611edbf6212d2c8489a1d9d080f2badaf252fdf50afcd6c620bb4258fbd0b61b8dc9cb27a7ae9c7e44cd47b395235c8cd4ef63815f550856d7feb050f0bc5ccad099120e593a19040e52ad77dd4975657d9da83e22cc49dd6adf49d715fdc53170e283fbfb80afc848cf8ff4026ea63e0ed06f00df32cef0f87c437a58a25ae561ba21c14ce4b84b72729339fd19a6229d3e3acbccfb5fc36cfc9726b3b0f88f8862bed817b9e514d3a76e9bbf7199967ba5256d2ccbc1e3f2f3773e29a9aaf4249f8862df5ac5b011e3beb8f2c5d13f5d8526dda4e35bb3f3b01c8894e8a9af3c8fb05ad583023db1054ce81e282b36a7c7569ae5faecb6b1f16611aa34472766eb7b16ee5cd8539f9d1825ebdc7ca08548a2c799f7b0a51f873f27f7796045c3d1861d5615aa86ed7ad4a45accb05385722a8e6869f154b990b27dddfc37608cff09d6ab6926891fd2f9526639c606d247a5b32d7c91e955b81a717e00219a9b18c168c9f92e23c208420c7cdb35c28df24822abd129d8aa27771e986cea4f65c3763c96cb9774659a6a53f56d7b1b13e1d33dc2ce364c2b9e1ed1cda48025f1662e531aeb8c24d74c23924c99861366e5f96ad2192dee28a6faec8b3f0c23ba1bb962ff7997fbadbd7147e6cab404621bfbec46b91650348804dc37cbdb7da023a342bb6f7e5297bc4b2a8c4532a3b9da683a6549a29c574cc98a85c3068d57ed1c219af2b48fb440776af28232296b8cdcca6c6b610c08ba5f93eaca8ca4edc3935c6ba5603aae3d32369e4e44c249252c2644418e59715db132f1e284a62b2a7b3cfc49d16bf4557e7ecd95eca0eed62fe705575ccbe2a771bd733634115a019ae14ab6aec2bae726995a7c17fbf8706d5d6182928bc45fa29bf7e18db1eda55d92a874cf2aa2b4abb47dacb252d8286c1f7b1ee6239b97baf5a55ed6db61bbdff5f6e1b51742e9a9cc9c6818e25c662a4d422c1aee7fd842c332ddbf29fb366303188b9788b0f8a2e8892f8292e8dbb3303fa0ab42b784ee8767c9308c16937ce36041e41dee14cb0c96156f5329f18d444126b88a79cf0c7291e31f55177d63e778bf794bad5f8445e2692942970d57b2055ddd17d68c794ae70d2dbc4fd5055b728d651a91d2724ebeb46aafebd9c21458f4501e42f43777aab23446edf01e354c6492d126145b99d032900fab7bc2361d93647567387c69d55e08f5cc662a39ef1eb9a68f09f372bf53faff8def74e327f79df2fd166598cc9e96f0b8d75c6ed2de29cc0f5b8ab765ce55702b6d6e6a4b2d018919ae4a585824af4aad14966fb688226f4363d303f76d1f301feffe313322bf6025b292740f2e49b2266fbba5d56f4e8ebe02e35b5d0beca2d09ebc1e3a8a5f07b726e7debed8d12d0cc8f16b15a1e3ee66fdc60c1b20f22eac181e08f90c9a9a6fbfef80018dce4a9458b7efec3730470bf2cf40c1bd725000e3daf41bf29b5737a65bb76c8311482b570c989ed3ee0d83e74a7fd5108fcfcdb1356b484bc65d9fbda3bd1cc77ef74cc0980b63ad07d84087a01b183c2ecbfd615b140d810a4b537e26133605ba57000a900a7b3ab152f893277f7095a8c045213775080a4b82f0abfc70d9540e32a640a24b7034447169bacd6b2e65c3a558670fbb2aec8534fcc92746aee28de6a62e13e0d7145a6187435339766b4f872768e44b400362441bf84aabdc37c3dd09b4584d490e8cd1456220d814cea752338d871f6e2c7d3db9efd06f7f2ba18d94efa34a4b892a378e8d348c531ce7eec99537cf344646a0d6685ebee75ba5a323e51ba14a4ba1f78de5e4cc48ec304779ecc30be15e70d92dd113cbe815d79a8f7bc7c100393f3a7d9a81f49c3e3d6cdebbd6814d0892000371a30f0371382e6e1f0662bf55d9a09bf2b31c9bf097a8ec8136aebe241c44fffe17befb5677bb101222656b6dc7c379ab31e4e63da16b60b72c05b1e2fc0071401704efb0e623cdd34d6c79b0f9d32adbe9b839035a335c61b94ab156ddb3f7e7f7eea9d68a8a6b99bc777fcf0fff951f5a562c96852ecfc0693616bb478b89d3e91290b4eeb4a8152c73e7ea61fc3d36747875a7696df0c19c1e38fc0236918df17454d4f49f152a0b954a361f3fa5c57c1b38a4e1195fd433c5f5a531c17072ce571cebeb96f515ab0e87139c3279f62b40967f1d4abe62c1e16c4f06c06d5ad7bd76273ceb4fdf28d933f9f4de938c0834b3cc8dc6c3a2ff9f5fb79c5ecb5def66e47b78ef5fcf647e6f167bf2edaf5b7d7d3ac2effd76e8c8af670f659fc5df86785c8bf36c0fe5bada25a049ee85f5e82506ee092c3be3be908a8bb83cb68bba5b179f258c4cefb2edf202f977382323d0f5cb2e8b48ba3423893630666e07b8ada828912d0bb75f2ceccfb59e4c6662d516c526fc2a2249c98e2846254d3abd0a27b03f4b7029b94b82067529f02d781e9ed37c6847e8007273156698d3afed0c98fc9ec2b30f05119f57651ebd3e8ab08705d628726096f2d5249dc81a4c436b64276832ee86e1aca95b24c40e46d8edfed637648d44bb7f1b259a99c827e08f74f8f12b37644bdcd6ad94bd81169d6624a32db27356baa865224da7783395d129e44c047f9288f083b71f9d131e271f0a39ccba34f0c5a9f5a49572ab0f03162600119e4150204a9f7a8ac2c1a1cf50f26a4bef9ef5f1a83efe0ca56853f3a10f4192a470ddf91ddf33ddf2e9b7bdf04ca71051355eec970597a39b44c3d1729f8dbacc3c65d0dbd39b5a9e290876d6e6d3a74cb5760933a73029b5598946fe82e90f069ceabc130273c4c362dbe87190a4c340afe002ca73cff9825d96e1be9fe48bb02e6e3586c466f176ff18481045a0cf19d10b196073943de8f1abfbc6f06a6f0c9fd8d4935edffb10e3d6fd9e777fed8283f6792012ac01bb60cf18eaf8a05b1cec2143d61af2902904a96fe07bc6e44090fb0b7ec0a4ef3a396de9a759d88cfea4fb7c70fa4caf94ebe907fbcae275b587bc17e850ffe243b616c3eb9b98e8592b63d9f0f57f6be9f7601f20e9cbbed1cf5807489609c0fe0a529cfcc159aaefc2733c8c1524bf1ae4c8617ec4a4dbe9e5c9d34195eef77ac5dc9f7fd3f879bce6d090c348d21de6c3879eca309f4e879ed2f053ac5c24aa596da87edfa3faa4a5df8bd97b19d09e5f5ae8957e3578964ff4ae93b704a5bde4d9de8fc8c9e029fd708bdc4d416ebaf7083fbd55e1e95ef678709dedd348a713c26478398c891e581ab69328f99de062478e439e10176adce49999393396933d104f5057289456caa4b4522a00396aeb7258825d480acbfa4c8114673a5c1cb75c6996574ae5957273ec8fd0f4aa7b2e11d52df9cf9026fb33d9d2a3894273c6eb17d22571a01e76a06c91dd54419bf6152f28054569c502baf6fba0415c18c7c680a0235e719e9c830e41e74a046e5d58238599fece8d42b7a211a0952251b2865dfaa331e86219c6d2acfc4ab330dcbde2cc111849369a57bf834664df51f303cf311aaa607f37f7e1a53e50af4b177fa8d895fbb12bf7abf97d97f474ffdfef6f03fbdbf8ff4f7f3f82fdfdc8a5f797637c49e47719b214c396d88203eee51294238bce23d85195fc59eecaecf43c673ee7a6e604e05415b12f7323b51c7ae3dddd98a5aae4a3ae929b9ee38cebfc16997b6ea48e456ffc716c211dd0e67edc8b54e87028141d5ad702436419c5f3ad20383057862e3291919b2794ffcde7b91e2be9c7cfeead35756e324eecb02e2bb2a4e8766ac491a81cddef940ae264a29c514c5d094b2a518d72fa1ec1d025251b232703b89eaf71d3f97f4a9a2e49ea513d521e4f88f237643aaa189252cd58e3f1e8645ccb586e594fc4f458ace984378faf3dbcee071ca21f4b95016296930ae57fb8cbd4a63d23c1204c78cb4340e9ada0739e65ffa222e986704fba6cc048a4b0a29b4aa69c98140b25677f54a6923392b275458267a087b3b1ec390ffb1412cfc49e3c1183de27f4b26b65b4f864343e6e65aa8a6428a314462b26c6cb11187d92b86632ecf83ac02f10b4d79c424a7d7e703b5fe9cdf5c0c58ea95f507a48c6cd71b667b33e8c9b55376de927494ad0851439a95b69f76f1f63f4384b1e8b8d8c8ec1ae21084d496a0ac2714baf8ce63c7ff0dd641d72059ce3f162a258012223e17831c6986d6000d65c526a83c4756b9d74ba1be454ce0186bc00490e73e41ce69a1c0096e32891c206f0eb1c2e15be4c2f732d5e6684f8a01e6e138e5bf0856d22f8039559bf6eae2d8a75608e76ef96102b42dcb367e87c4061f70717a8e49f7bebc00b2cb65299f93ba01ccbf7edefc9ba7a02a239b27791d23beea07411780a383a74f3f9052fe0d1978fbc0ad69e34ce0e972f88ccb86127fb4a11ef09d74ac48cf524c75c3601dff846f3ea66ccd865672c399d9122697b97116b5e7d3351896c2a8218cfc54541313b50ab56756fca4ecd598661cd4d676f742b7528fca82459514da26ad871c22a95b46828982b8fc3f7c83c417df08c153fee41e0f9095d95cb08c138ef7982ae6ff0507afcd07d77cfbd9374660bae5b98653e35649d45e163c946cf49f4d6b15b6e19e3cea0212fce15eb878ddaff8abf5bf86a9d5affc4113ac15dd9a1af555eca6e77459fbba9d7fee3e40e78ee473747730c3c7a5b7126e61885c57ed133144a78fae2560db114b8b87e4628bb303bfddf2c2cde711d4ac0fe0593eba9bc28d3efecd6c409585488a24893a2b65ba62956aec146191b15d5394dccc720af51b92dd33425235466116820f93e93a92da86f0e27e2f144f8cdaa820ee190be2d92882d5ea7aad72dc61291b7c98a8a58708a4f2bf6f4640b17d791f57feff4a2aab0663f6b7d86b984162faaf95ac45a1eb6e50639077d43ff9d20865989d67a9f9b27201f6141d0ddde47a75c42b0aa2d43a07ddd0b81766dd976447144d4a578dc0b731651ec789c6bcd1d3bb96500abe4515be9c54bdb60f1d292b6c3f5f24e1c83a9c9ec06d0102fb3cbe3f3870d1e488f63f5f1ac71787eab006b4280ad89b2cc81b86e2f77c4fd41df2e30a8fe20701b5e10b8da4be936f7af6018e4e99e075cb4e5f9bb716091f95e040079c87759ee39bab5da17c8c3e4d144933e4a4d513b814ea56814c344dee710c20f235974cf6fe5e8441ecce9565ca154895b3a0e66befb39264dc6904a9705aab1ad12cfa6c31fd78b8d48e44aad9ac847b4756f7fd121b9f83fc57340c4c8e45e2818eeda42f7b3f14c264e0ec86ae033cc6986058f666012d7be88c84837f452841b631383f9d26245f2da6b4a70ffab8bbaa51c571df538d07ac5aba9a597ae81e435764c538d5386aa45a9fe1addbaec062b4e8fc1bf1388db1bb78ec1bf1bd4b8951a89d044825a613b6dc5037a14710eb7799647e56157540e6c38ba5514028f38e3f247194363cd27dd6a85e1802eb6e785fa714eea1c07763cdfdc69c5ccb0d1cc5638c46525db34c266ccdad9cc17acee6c34d6110c97bc3361c55d03d16eb8c0d1d297b20bc9124dc5c3baba9acf983889cd4c7e55d5c3f1142d2517b24bbaf57838a3db530d75a79135c26a63cac3997c9ce161a23e61e7665f5b8e0dff32bc67bb2caab77de90eb2f8838b38c186992e8b90af308aae133a125a0b9d08ad874e854e87ce8436426743e760578387cd4808140673253dacb2411c9feae226a1ccffe6b9fc13fefd7050e54df5f7dd7ad34db7ee9304694232951be0bb5266ee9a5608956f504c28136eef9946adbd846cf7cccbac8cd1997d0faebe2ae4d8be14fcb70fd88dfdb22494055dd91e8d6e5774c84af27e25fc25bfe6252737ff44ea793a25d4fd8c22d54b82799ee0000e450ea483739de9ebd042f4c88f59ccb27f3ccd902fd6313dfd7750328696a34c6907f3d7d3d6213a7fc7c9754f9302d0245d98b37b1896eb12ec14a10ac3402c31c32b6e27c14ccca8c2b1d9e7d842a25498f522079660ae3a55c577965e14a6eab5898a18168919c9954753b0b787c5ca78ad412dc19e1c7fcd5b5e3b3e1511acee57786f506a509ac36efdd698a22c2ac0548633f1708ee5c764956e9f1a9f9e1e9fda4eb5f087b8622f8c1fe18754f295188e33260ee834e770af6e3373b22d0848d6d92dcaa922f705c5c1abe70e362647145d57de89c9487db59ec35de81dec6c62bcfb9dbe3037dbabf5cb3ed613ab7fac56afd73fda77bedaa86eef9dfafc27fa93718cbe9282eafae0135a40c0218f82476b0b66dd83c629f39cb6fe3f85d107fdf92262f40d46c71aec0a63fe7a5d410b126fe7fd3ab38468cab47cc7e2be4776ef7d64df6698be8943e93ba1d639cf6ce2706dc243e99374a924fa287db5226bc7f715f5fdeed2a12a3cad3b11bba92fe4777b30e442ff49e02aae608c7706ed586513bb566621c82d6e23d55e6c5599773047fc45fb6285847c6c9ca5dbb7f5d8dbbd3dd66581ebc6ded61aa192013c9d1516452ac9f0fc65898a62d8026ecf90e8484ba1a241e77285426e8e1a2225a7bc6621a9f798e1a51e0336c91576779ad2aeb1644ea196ac28346e22668019a78a225b54c925c77649a66084a9608a92249a020d9b017ed479f2e15026348ed189022c243eaff99b65a81e49b138480c543875c01d3419be2ffe23e76511d8a2ee6b803b1265f939517c4e4e758fe8962c92b3a26c75df3486a41f50af187388746c51e6fbbb2cdab2704c80bfee1f593a4792d0adf31b3c9ad706fe873cd10f5ff8aca090df078e720569970a8f0b342d2cf6c204f94183dc1a3ff232ce7dec84aafcf360d11e3c4acc856ba429495323870faf38cec814972c4c25c6b72730e8828de11712dbc7e104ca75a8e7382b870f433d89c45c4abb07b9e6927c863ae383d7eb7d3ffd565f93f5c1bb751f418d27fc9e693ea1bdde1a85363df39c96591c306bf5e132065f0b753c632b6600f2fcf80a8f47d43870cdfe462ab0cff879b7e4c2dfc67df989f13c867bd4edc681c6f881c67dcc0a91254f465d37dac484fb18787db9e49e5cf8ee2f7a5b1f93e30bcc4e22c1ac0876734f173621bd17cda7693bd15b820738ab24f5dd34da7e86d4611a1e0bebda938aad3ca9e9e163d657815865a2b79345f7885b3ca95b6f306d13fe3adec1d29f4e437da89e7e5ab7549f1156815f7655eb4e152b992a3f0ce0839a5cf6d2ee97b5c03a08dd99063a0e76496a9176b0f6c0e3537b1ff76afed6076ecd8b59a7d078a05170b23b7ac15bfabc7457c69bcd716754d6ca654d1e7daa174423b019faa21783e68ea1f833d4f7346ed71288c6c9100eaaad1ab03fb82d33306117a68f171685f9d7b7d0e63a91e77e084c11e0610efb6ffb5c4f62731d97b2feb0941ba34a415424518a975d3b1997449128e2a8a28ee5468be3d558b2385d74a3b1468b1321ad8d9e7ce7692eeb7d8fdc96274796140dd65809be43459a488e48622ed690143895884434657964526e5ac9fbe59138be97f8887caf487735eec0edfe8ec62e4f96823e4aa799ddd87ea0abfbf784780d118c86c6d32ef7db626ccdb99fab76aad5ce1598fcfece99a585c6cedc583a4a1e8ca6c7beb99fca5599eec7b5ad9725a7bdea9074bf659704216fd3e99142349d8e1646a61f18aaee6543419cb06742cbc0d7ec6138424cbec24c4116b8c28059f3a271af07c5cd2c475c2686181c1aad8d0ab55d42735649f4f09b4a7e66860041b1b04280ef9807e6637e2e41de9610a8b262e64b95a212360c9ad4739695d393d430c24ab152ca9bcb0a15dc5c897fdfc5bf6936534ba95493ca82a229866544a86009aa655a3a9c0b32d149bd2ac8b45a27fa07db8a9ece194a341e55dc54d2d264d8b0601393352b997259b1914b1b4acb98cd1fc125e248bef9c98d547d7dbd9e3a016c43922ab09daa494571554512149a84424d94344234497c79efbe0708bba5d0182fd75ee4dd9f81ad24038bfaec2cec0519496a0e9d5f64165c7e819ff9e781bd27ae8f38a6410a67cb1191d0c4a1898943d763f217075bbb57660e161adc2aaf4136bc0b90743f11ab0a4229a62e142bf8b02bc5050fcf80c95ad73dbbcb7986ec37785f77abfbbabec15ed1cf00c3da56827a2ba4829e2835e6bbc97bda19417bec654cde532f8fd7f2f5743e11216a24913f30d2682c371add37f2632b9c9c8e656d079664f2f5ac934a3a61589b1db2eefd1c92ffae670421a92bb5f40e20c0223bd2b530fed2ff3bb12395d0e53095327643b71ea61142f4646ab7a537ec4c20c31124f22c5aeb2129c83e979e3033c9b89c5a959ccb4c34ae2f8c2934f1c79a3aafb9ea466d7c726cb4802f3b2b4985d1b1c9f1da86ea6af3aaf6c7f0d58d15ae6f4cf87e47a7e1bb9e407945bc39cb54631e6c2f626fc3d39a45354282532f491635a90599b8272d429e0ec96ac54d9eb52b853089e81d3d42c2858a2d245d029fbe2a2493820a1998bbaf056ac95862465307e309c324bf717ba9da36bfa74722faf7cc76b574bba6aafacf88c27bd031e73d82f83370ecfef7cfa02f1039ab5bdba7669b4b1eddc8ecfc30a2c73d83917a5f5cd0590bb49d3d73a62d7042aab5450f0f9142769ec16df602fe6e210a3de7c1fc1fd9746d349330dcbd33337b5d23519b43516a5f84e085be8a1c07d6383ccfe5a9afd87c8d3a99d1145c4b15d2a3ecf7813c6d377c8bd5d05116333790fcd2a4cb070b733c393fe74b797da1d3250a86fb42c3090b4c22dc2c8fcfd58606959c8d8a3a5a8a5f48560ce57d72e2d9e4e8c050c6cb4d5ba2f25532edbcc883814be7fae5dd3c5633ce819733032ee5755ed29b62f4e90b0c2f7b943dff48bfc48faf456ef0b508b6e9587772e1332c81052777a7e520800959b7eeec30e91dbbd2b9d3e297d1aef51f81ae3b4f3e1fd2985f4f95a19b86dad59a45e025035b893938ba88664e51e3070b0503b156288a48108bb00deb631ca8af2412597f4e12fb6f8f3a95e81576b2bcff60247dfb0f95f985f9e64453983d3853dcf9be037973bc76cdaf27f5edfba7ae2e5e7968db5bc66bcad4d42dfff7d26ce1d10333e5ed773d5d2b544f1dd979d71397bf6b4eb1a65eb52b6b8f4c4ca49dc6ac4ec84a75666c346724a3e49dadb7ec2711e5c89b3db907d78fc6610ccc9bb5d48f6fc760d118220d731944b4150ccf1142f3076e2585c60deba9a491b114336219522463c493e4382a90e98dccd8f4466a7d223d1986052943b5b2863877d46a7099c10b24c4eebde59d876f33dcaac717fc117c6b9f67317d7787aeddbaa5361b005b32fc31205deb8fccbfc0dc06713e5e74c49f64e39d5d9e9fd66518f1f29ecb1373e3ac2c571cc918b2aa4575b536b976b107b38f3d95fc3ddbdb778eb207d378e3c12bdef29fe76fc8b00bd1e5d2e8524ccd189692bd76668b872879b851cf7af67ad7300fc941fe6fe8bc3674deae54290bdc1e706fbe7365f081d4c8f3dd530c2bf204a603f9f74af01f7918f2c7bbff108b75cf5bb62c1e11e5b845de64c559d6b6d664b189b521e9cb6ef4b2ef7a44551f515256f72358f03c12eacfb39bdc60a5943e5fd72f32290e8b0391f4088df6509076b19fb3612185810cf624396423936132924c06b11fc93aa47fd22384268aa269ca42c948155d97ac4fdd871295fba6aa99ee06abdec9545f08f568a3270f2bb26c2a571950bb98f2e4ae02ecdd0db471ad0442f93262462e2cba792046dd608f7399ad767b31592b7ba12b16db351e9f0bd70672de122565b7995176bedb8c09857a365d160a29f9a7510af85af9ad9a2d6dab28e62753caae7160f546d3dadc8e99a3cdd60d899d39252c1615cd7cbb6dfc55b64ac8d85c452cf2487cbafafab820e51aedfcc28ef9c89ef88dede6d199e5196fff7e13f9b88f095f09ec10b9430df31662f119939ce0ad72b12ee56124db5c2d91847eaf7363c477c8445e3a756a090e25d9941bc78f37e0f03e38bdfe550f3ffcaaeb5979585abdede69b6f5b95c272819b27de215bf25cb93c0787922495d3e9b2247d40b6a4a3188be6a884a544dee3c27f7b642205beb41788dd275e8af949bf07ce7149aa0345bd778fa44346dabbd73bdf2bf2f321b79c6f5fa09a7f3ed0bff416b1058b2ddf35a7bf176318031595a083b7e3e0871cc3011a5e430c87e1af7da09db59c53c09342e017eafb9a1459ac47e677ea21e872dce9611c6a9fe39d174239a739533ccb37c0f5fecd721f95ff52a63f22a7b0e86c7106f55d1fe85dce35b1d70bdcb61a71554f87ae0bdd18ba2b743cf468e8b100497fc277a08b90b20749dacb8df658ee1eccbee76db98bccf772415bc5795a76590bf0edcdef12e647d129acdcc2b376b9362f300cfe661c611b6485580f39449127258538af8c122a8d2b94c458c777aa0718865c8328d2368992f1f604e6e037e3cc1ee400edfedba3ea9e9a2c104204d1a81e166493de2fc242204a662dbc971e2521469e1c45efbcebaf97649e6af2511e5c80a59fc2e24ff19417171e8ba7242b6a2f7634b7f0981db5a4547cb153f0fd7bcfc35ae8305fa95005fd2a7d27dc24e315b8470cce75a02f0279d7ffa0548aef3e8c04d4e1dd7189d2fbebf53d5f8e2d56e25f329b1ff720cb4da550adee39bcb7562d28e6d2d2ad5f8a5716635f1e6dfe1c17c0f81822af045aff80475b29943de6eaf0ab7a51baaf1711015e3cb97db72ab623a6a0ea5a5b5477532a1e59c6c77bcc61de670f3278459e751880c6f2118c81411f2957dc6cf2116a2aff8e61e457b2ece007d4842cea9ae1f0ef143314fa7f009c88a3c7000000789c636064606000e2ad574d77c4f3db7c65e0666200816bfb141b60f4ff2fff773135339e01723918c0d2006bc60d98789c63606460603cf0ff00030353c3ff2fffbf33353300459001e31700bae60868000000789c9555cb75c3300ca33d8947e1681aa5a378946cd01cda4b124715297e2039c97b3df0598a2c120401878868d98956ea216b8cb548d4e7caf5b970ad71266b09b9437def393e45bf9f7956ea39e4d963ba53ecb702f7afedced5cf5f045b6ec5dbee5b0eaddbce355a3f914ff69e8ff37dc5b6f77ceff819b80adcc2555bec3d4eefb2e5d4bcf518fa65c76af5d8ebd6fb528473db970ffcb2c53ebe17bdcf77833be1c7fa2f9d9f780a2e0f9a7ae6a1f797e7ca3ddb3c512b76266bdab387e01f73733d90cf9833e2432eacb7e51f91736f332cf3ecebc3f75d876fb42ab8b6c8a5f35dbef4fc48dcb2ae0fe5db392b5af7481fc81c8c1f4e6ca69b47ee81f3b927ea9a47bec317f61beda9333d773d589de695432275576f4b7a04f4dbf9511c043ef7f950ce397d38e9fed274be89d627ed6eb02e9317d9f2f8fbe8930d66c8a017e3bd61bca156c767d380cc48f1d61fd93b7fc8f7e9bbc034f01d390b604cceee67fff7b907ff3b7cbbb087cc51d113f1dd22f0b59f01b6d0c0306ffdfd69fa3cfa7c65fea1d9e3c437416d4e1ece7cbea87d0af0c3d093d773ccdd07a7bcfa7f3206feafa0a7d56f2571bbd7968b69d3e769b5a2bede118e5ee21ff414bdfb0c0acc57f07d814e367b7ed7dfee5df02321075370f6f60759b993880000000000006600e6010c016601c0021c027602f803cc0444048604c8050a054c0570059405b805de0624065a069006c806fe0740078207c408060838086a089c08cc08fe092e098c0a260a7c0af60b560b880c120c4c0ca80d0e0d520db60e0e0e780eaa0ee20f1a0f520f8a0fc21018108410d2116411d412ae130e1360138a1420147c149214d214fe155215f0162c16921734179c17e8185e18f219ae1a141a701ae21b5e1ba61c241c6c1cea1d041d1e1d361d641d921dc01dee1e081e701ee41f461f7c1fec203e208020b820f22118216c2224227022cc2320238c23e224ac24e4251c2554258c25b225d825fe2624266426a426be270c279c27e02816284a28c0290a2954298229fe2a5e2a9e2b1a2c8a2cb42d062d342d882dc82e342e742eca2f142f642fee3024308c30f2313a31c631fe327632e2333c33a033c63420347a34ac34d83504356035b8360e363e36a836ee37283768379237f0385c38ae38ec3928399e39ee3a283a643af63b303b823be63c503cbe3d3c3d9a3de43e763ec43f123f883fb2409640b84118415e41b2425842a242dc4310432e4378441c444e44cc451e458645dc46124638469e46c6473247a247fa4840487848bc48fe496249c64a2c4a924ae44b324b744bc44c664cd64d1e4d7c4dcc4dfa4e444ea24ed04f304f745024506c50ba5102513e51a451fe529452d25326535653c053ea5434546c54a454e455ec569256da574c57ba57e65812586258c8594a59aa5a285afa5b645be45c045c3c5c6e5c945cba5ce05d065d785e325e945ecc5f005f285f625fb66004607860cc611e617661b26216628862f263ca643c649064be64f0650c654a657465e0660c66ac66d46704673467c4683868c2692a696c69c469f26a4a6a7c6ad06b126b426bcc6c146c666cc06d106da26dda6e2e6e6a6e966eb46ef26f366f7c6fac7046709a70ee714271d47214727c72d8733e738673d0743074be75067554759e75ee7622768876f4774a77ae7802784a789c78e0793679a279e27a707aba7af27b507b867bd47c0a7c6c7cf87d3e7dac7df27ee87f327fc2800e807880e0816881e482b4832483948406847884928514859685b085de863c869e86ac86ca86ec8722874e877a87e88812884088928904896e89f68a648a9e8b428bca8c2e8ca08d148d5a8d8e8dce8df88e748ea08ee48f788fe89022908490e6913c91bc927492c09318937093c89420946e94de9550959095d69624965e96a696ea971a978a97d8986298be992a996a99b69a229a7a9b9e9bd49c389c909cd89d249dbc9e149e8a9ed09f089f649fa8a030a090a12ea198a1d0a24ca27ca2d8a35ea3daa420a450a4b4a4f2a514a594a608a65aa6b8a714a764a78ea7aaa7eaa88ea8cea92c0000789c6360646060fcc2f08d418101049880980b081918fe83f90c003d08032200789ca592cd4ac3401485cff40f6c5d298aaebc0be942212d856c0a2eba491fa090b5fd99b429492624434bdf46dfc1c7f0197c0817ae5c78935c8a4a15c10c937ce7ccb9874002e0042f50a8ae63de152b9cb2aab88626ae84ebb8c4b57083f94eb8890e7ce116ce30156ee3161be10e773e72836a1cb1bac093b04217cfc2359e7815ae638077e10606ca116ee25cdd0bb770a336c26df8ea41b883ae7af34c6269b4d5b989f5672697bc4ceb8989c2c5019f7e3ff07596872621d7e9171989b8fbc6b14e7436b57a41b31de59be5c0da8082ccc454c47514194a33b3d673ebacac4d87bd5e20be3337313c1824b0208cb08546ce3ae6e74f3ec1e5ed2163d698b01b21c4e28f79fad784cf3ae35c584e163907fd7dcfd716f7c03b8e592565c794f39a1dc20c3bbee7fcd72cf9fb5b5e01eb8033450feddb357744cc84b43c5bb33367dfc1aa9c4a31448f57f02def708a9b3e00a5f58e78000000789c6d580598e4b615bef78669e12e49d3a494a6dc4e99316566e66a6ccd5837a6b3ec9d9b2b37e594999999999999999999dbff499eddd94bf7fb56feff275996f45073800ff8bfd681fffb477f22a60635a9456dea50977ad4a7010d69441bb4495bb44d07e9109d4027d249740e3a99ce49a7d0a9742e3a379d87ce4be7a3d3e8fc743a5d802e4817a20bd345e8a27431ba385d82c67449ba145d9a2e4397a5cbd1e5e90a7445ba125d99ae4257a5abd1d5e91a744dba169d41d7a6ebd075e97a747dba01dd906e4437a69bd04de9667473ba05dd926e45b7a6dbd06de976747bba03dd91ee4477a6bbd05de96e7477ba07dd93ee458a261450489aa634a3880c1da639c594504a19e574840ab25452453bb4a0a3b4a463746fba0fdd97ee47f7a707d003e94174263d981e420fa587d1c3e911f4483a8b1e458fa6c7d063e971f4787a023d919e444fa6a7d053e969f4747a063d939e45cfa6e7d073e979f47c7a01bd905e442fa697d04be965f4727a05bd925e45afa6d7d06be975f47a7a03bd91de446fa6b7d05be96df4767a07bd93de45efa6f7d07be97df47efa007d903e441fa68fd047e963f471fa047d923e459fa6cfd067e973f479fa027d91be445fa6afd057e96bf475fa067d93be45dfa6efd077e97bf47dfa01fd907e443fa69fd04fe967f473fa05fd927e45bfa6dfd06fe977f47bfa03fd115afe33fd85fe4a7fa3bfd33fe89ff42ffa37fd87fecb079898b9c14d6e719b3bdce51ef779c0431ef1066ff2166ff3413ec427f0897c129f834fe673f2297c2a9f8bcfcde7e1f3f2f9f8343e3f9fce17e00bf285f8c27c11be285f8c2fce97e0315f922fc597e6cbf065f9727c79be025f91afc457e6abf055f96a7c75be065f93afc567f0b5f93a7c5dbe1e5f9f6fc037e41bf18df9267c53be19df9c6fc1b7e45bf1adf9367c5bbe1ddf9eefc077e43bf19df92e7c57be1bdf9defc1f7e47bb1e209071cb2e629cf3862c38779ce31279c72c6391fe1822d975cf10e2ff8282ff918df9befc3f7e5fbf1fdf901fc407e109fc90fe687f043f961fc707e043f92cfe247f1a3f931fc587e1c3f9e9fc04fe427f193f929fc547e1a3f9d9fc1cfe467f1b3f939fc5c7e1e3f9f5fc02fe417f18bf925fc527e19bf9c5fc1afe457f1abf935fc5a7e1dbf9edfc06fe437f19bf92dfc567e1bbf9ddfc1efe477f1bbf93dfc5e7e1fbf9f3fc01fe40ff187f923fc51fe187f9c3fc19fe44ff1a7f933fc59fe1c7f9ebfc05fe42ff197f92bfc55fe1a7f9dbfc1dfe46ff1b7f93bfc5dfe1e7f9f7fc03fe41ff18ff927fc53fe19ff9c7fc1bfe45ff1aff937fc5bfe1dff9effc07fe43ff19f0f0c551816dadaf124cbe6bb245045d856e1e1ca9643159b593a0e745aea62e489c8cd74d9f72cd6d372e061616651d953c9a48a551ae8d355a20b13a8746cdd4095ce2a35d3632373e5852e4d3a6b63609415dbe88bf538ccaa897b2cd2fd12f9c8c17d12f7adcd7da22aefaff822ada15f9d83ee8daec755de514510991d7da22a8a6c315671390e4c11d46f9f5d2a139d7436a99bf3d0d9c455beed656b53ee97f80dad4bea0dad8b64438efb0d39e837e460bd2187ab7ce88075cb88d6c94e7f8f9caaac35d0de0e5680a74ea182b15d0225b6abf0288c9db32ab755159a6c1c6a1b14262f4d9676272a982f6018a38972da1ddb40c5ba3151d295866365c2ce04879a85ba89a7c538ab31361e4bb30936d7e52ec79032c290129f5c8e759297cbe18a4dab38de25918aa79b2b72a45205c0492b5e4685d62ba96d4c74d89c685df4271a9fb1b1b2515360676282250eb43f316916c0386575a628a3502d61ec73dd9ac426c5bb59ec9a124d32698a4f74a54954311f4eb2452ca725ab6f4cb2a32dfc6bdb9914cac4b1ee4d0aa3a701b6dc9854b3eea4327188d100710cfb4e1db07a29ddb68f93936594593194434c4355887636764910e960be4713935676b44bf3b8b27b9da549b4edae282684d7a931dcabc8da9e34e0d0f82644de923c7496e4a1b3a46d8fad1c676db2fb24ce64f749bcc9ee135579d7f32a978e72bc67c03dc765ed8340178820080da5ee07911fa655cfc3892cd6219cb7ae85b9d1437728b56fd4c47fb5e588882492191b65f9a026192cb6eff11cfaa8c7cc5359792dcfd522ad871fa9b44e6b7101c5b71c3c8476a7c8d2756f3e5e268773c271b2fa54f70be1a82b89ccb34b6482d18a14abe53956e55807ec69584f91666510b53dd90c6293bb5dae6c66978b83f776692b88b3602e6daab7d15a8d3794736d9ccb4148aad0ad28ce5428c6b8e54555be12b49c60200e3e86d5236e3705b7836c3ad5ba116433f099ed04595c2529949c2509d286bcdaa971b77ecaa024472c12412e3907afe6cb9e346eef83a0d0a1295d266a064596f7d1581b295360683581cad1d8465095dd50954a624d33d46ada41c89a9759de08533508b318beeeb2cf4830420b9c0e51a2e5583fcc5611bbbbda79533edbd2877550f611394c8e70398ef6e0ce48a73b3ace723dc67fbab9cbbc257657bc0db7b3bae8e9aac8dc0286fa282c3945fac3791c048955a2e4f4eb159cb02e2a0be3f2d4604db8ad8fe62eceee06f3b697a003d12f55b1f8cb5c3a4ede2fa95d131d0304a07188e3cc6569c02e463680465344fff12ac60f1d9b668590c6541d6d4f75820033988a7274313eaccbeed4c46ed2a1073e9df63d91ecd173504cc40bb1171d7b6812d4017e823c9c6e7a902d501564280efc981d13ea7a8e45062b10244dd24683356c4f4d21934a1551c1e775d11409de28b07664a30d287be6bd42c39a9a425b68ec7c3045a0c72e44836d8f9bd32c2d47d32cdb4b519d7affad290e1ce3aa12a9a1334344cd55d89a2928ba31d3497f86b8ab8b588c7866e0c4337cc28e9133b032d39ac5d944f766593c75936ecc0a1556b5e255de8d6aed0c22d16d6c8e49bc72385750520db50af4a6877240ce4fd7b9048fad35ee7c68b42640d4d963d0bd230502821f640363001805e7fa6d5658ff399ba3c30d81c3cd7527828d946ad688c2b013692579ad2fcf3c422cb12dc0a2ecb976a255d9891077b2623988308b5e8ef32a9837a32cc106329b9b12566997098eb2bbe2a328ab0a7f6a38ca8d3de672ff1eb5a5fbd08a77cd38a80a2cbb6b429c6d38d31d13ba88d172f6d576ad6d991499ba8dfc2e01080f54af589d49a759ed7a4dc16d5989091a587217ff2e667657256b3b46a4ccf2668c08d38a7592a51bb186fe9d229c0f785ae5427ab1994af44f6740500452ffa4299e088acc2cd1a02bc1d94546076057ee59c54d796e20547b1371cede93c8ed8cb529e81042f86cbc5773ba74749ccca5a3e3643e1d1d2744891903ee188bcfb570602668a34d75d91487df48542ea60c0f92e1fd3dda11989bb4274fd9926d000dd069eb7a7ce4300e3b9beb71b48fed0cd65853703bd1e1dc948d44471d942c50ecb29718047d44957ccb21676e3e62f5f70443571badaa024feaaac0917e924dea40d5f67003ea835d02c6226d26599662146cd61589a324abac5e794a2ba92c8e24d595b84daa17d6f9e5309b488a18cf8aacca376a52a58e76b2aa145b1be44a5c6f5254366ae7f07d2d22bc8c1a48a1b07158f23350a11017f2a8954b0d3ecc95acc06fa9e54803454a1f06506f4d6060dcf23b3209be36ac8fc7f5d7644732316610d2cab15fdb729f1ea05dae8c5f309a6a3690d2ac967aec27934edbc9b310d56dd9cfb34a420414de73117b8cecdfca61ec584175ec980472a303dd3ee26e029ba8a8ec5a96ebae78ef486542a4da20ea1fa9b2b2bea879e80cb58d0a23cc924ea19d56ba88e0995397807ea167727d01ee153a4762c7f1b61cc20be542c37c0b64f3b684385df60bbbda4c03b05fb8eba2ec0130d71e362d22fad06a4964bee01ed444f6dff6188f6247175b088c3ea3d6d3f67605438f6a13746480e4344774701fb491d1b1aba79a80f9489a5cee1592728752bae6fe9631db5c2372771aed7229a4db6038fe81bb5a1b178446fbaed943c7608bcef485a8b8630d6e7a2aefd918d9151e18b56c0297e8d9345b2035cef526e2a9bc9147ca0596d11aaff22dcfe0217512da5817549857a8bb3a389456ee17009faff649e0268e5779539e23b8955c29a3aa2c63dd415e4853d99caf5ce442d85e1d3492804b0c4d41231841be57b63856a7ed01488914839a121a284d305f4ae52c38cb6b73ec095e285821a4b84ae2b26cf402931606071ec19b6751cf56137f0b6e032dd4b26b2bd8addcf46c950e2c0ca8f0fd5dbb4c03af59808e5d4a0ad04354a7b036dcb553635b8ef45deb15e3e146a902c991a58fb30da4db26fe65bc9d5bc0a3a68b3e98a58a07258a9e71a4dd1dc1e18509cba85b46d07d812c2800dec165b45da22c4aea79dd257b6b5d22e7ba4f20e77a685d505fad4f5997edbf740fd6ba80ab6462fd6dafc6300a87b0c1795fb4e0f73d74b7d6558c73a4594aed576633f9810651a5b782980b459396bcd30232e926dad4fabacb95b56b5cc6dac8dd571c6a8a5edba5648b252428461a65b9e472a78b4515a8eb55af72f51bee9a5d201f64046c55290adac2a260514180f2ae5f0b4cb96c57a92474485c6e16457ad8f6f7a501627651efaee37012f6dcd3dd7f1db21a979cb2efb03f00812d69ec08e926b588f0a8c5b2b45b333bdcd192df7c7eed7b22d9b3e560cb95cc9b88fa310a9855193bf059c0dffc6b2ca75b43e807dea223497aed8537aa45a4751cc865abb9c0357db840d524bf4ac9ad71b326094c3231c7f6388a5de11b35c7a50e1955771799fff9afbd2890b3a2ee527b7ee0c0ff000c0b82b0000000010000ffff9133f00f5cc50000", "1fe21dfb4e7efc92434254287c86133e": "1f8b08000000000000ffccfd0b741cc775200cdfdbafead7f4f4cc744fcf0c0683790f1ec4608079f109826f4aa2284aa264ea0d10181290400202403d1c59a16c592bc7b297d67af3f03a0e9d5f711cc74ef8fb383eb663c794633b4ad6de8ff13afe7c129f1827f1d99378bd5900f2c6b23f7bf09dea9a190c408094369bfd16c3db7dabbabafbdedb5575efadba550404000d2e020f852377dfb33ffedeccdb01703b009cbce3ee81a1bd5f38310b802f01c0bde3e7c6660f1d29db00fce700941f9e9d7efacc3ffedd370e01189700c6d293b5b1096fe05d4f01c022005426276b63c22eee5300f04500484f9e5b78eafbfcea6b00f80300fcf6f4ccf8d8a97b1eff1080e71500f8d1b9b1a766f17df023000c0140fcfcd8b95af68cf31d8099cf00f0fed999f985731ffafcf30073af014812a51dafae5e05e02eaefe64f527dc732e37ed7f17dc1c0478f69f8f3efe8877f7ff008d732f7ce74f12ef689e577fb2fa45ee39fc1a00c8c035ee44f7ee4530dc14cd55410580d5b6eb2a146018b883878f9d04637a6ce13c444068bbde8ee3f4d4d931909b2910dcab08322048cd5cfc07bc042200fe2a9e0180238df3ff80303c4f891079d8f4efc499431330b224fcd874e591c7afc1c1c6339b245c654c5c0723abab787575152fb2326f169af737717aff86e7febc01bf682fc78d6c383769b8c89ef16660e3fdb8b4fa13f73d236e7df8395e5dfdd91a8d943f96bf46dfea2a77b1f18c91064f1737f030d27c07bb6fedbdabab2d7e36d2d2569e834de434d2c457ebadf4c8c66f439fdff68e56de7af902d07a02b43e6c63354d78947d6f7e027817db063cadb1c2a320f0b43d5f828b2081b9242e91256729b9945eca2f0d2f1d5cba6f6976697ee9c2d2334b17975e587acfd207977e73e9f2d2ef2e7d6de9b5a5c5a5ffbaf4fad21b4bf565df726439ba5c5c3eb87c78f9d6e5e3cb772d3fb85c5b7e61f9e5e54f2dfff9f23797bfbbfcf7cb3f5cfee7e59faea82bb7acdcbef2c0ca432b0b2b6f5f79efcafb563ebbf2f9953f5ef9d2ca5756beb5f2bd95fff63af77af7eb0fbcfe3bafffe58fcdd55580256103456f6b50f44beb287a65e96b4b7fb68ea2501b45b72f9f587e607962f9ddcb1f58fed4f2ab1b283ab272fbcac99587561e5f79daa5e88f1a14bdba72ad45d1a9358afe8ffa43b8042f6ff8fd6ae3f7ebeb7e1f818fc0e575bf57da7e1f834fc027e10fe00a7c1a3e0d5fd9f0fb3a7c1dbe0ddf86bf86efb9bfbf6dfc16e107addf0fdd1fc011380bb31081bba0040a1c830c9c83203c02dda0410c2a50061bbae00cdc0129380c7b611846600f24600c6a90833b4186a3f03084601caa70128e83090fc13de0c06988830f2c0840117a601a1e8347e16de08734a8300043d00f05c8432ff4c1206c8313f0006c875340200951b80fee8749e8805b603fec8203b0130ec23ed80da3608007bca0c3ddd0090fc2141c822c20703003b7c26d3007f3b00013701e6e8730f020800812ec807be1710094febffef8ff07fce9f4205e6ca416687b650047009644067016608930805980258701440096920ce02e80a5340328012ce5198002b034cc008e012c1d64001980a5b7318073004ba718401060e93e06f008c0d22c03e806589a67001ac0d20506100358fa25065001587a86019401962e32001b60e90506d005b0f41e06700660e9830ce00e80a5df64002980a5cb0ce030c0d22b0c602fc0d2ef3000cad3c718c008c0d2ef32803d004b5f63000980a53f630063004baf31801ac0d22203c8012cfd57067027c0d2eb0ca835b1f40603380ab05467000f032cfb18400860b901300eb01c66005580e508033809b01c6500c701968b0cc004583ec8001e02583ecc00ee0158be95013800cbb73380d300cbc719401c60f90403a0b4dcc9002c80e5bb18400060f9010640dff92003e801589e6000d300cb3506f018c0f2bb19c0a300cb2f3080b7012c7f8001f801965f66006980e54f31a09a70f955063000b0fc15063004b0fca70ca01f60f9ab0ca000b0fc3506900758fe3a03e80558fe3306d007b0fc1a03180458fe730654232f7f930150197c9701505eff9e016c0758fe21033805b0fccf0c80002cff9401240156540610055839c200ee035839ca00ee0758b985014c02acdcce003a00564e32007afd1e06b01f60e55e06b00b60e56d0ce000c0ca2906b01360e53e06d48e5cb99f01ec0358798001ec06587988018c02ac3cce80dacb2b730cc003b032cf00bc002b0b0c688fb2f23403b81b60e5ed0ca01360e5bd0ce0418095f731802980953f62008700563ecb00b2002b9f67402d9e953f66400da4952f31801980955719c0ad002b5f6100b701ac5c630094debf640094de6f31a07dddcaf718c004c0ca7f6300e7015ee718c0ed00af77338030c0eba71850cbecf5fb1850ebecf5fb1950abedf5071850bbfff5df61003b005eff4b06702fc08f4d06540bb97fcf22e0adf8327e8fcb729fe6d3fc31fec7c22744557c587c4dda2d3d2b7d8548e456f27e52978fcabf227f4e5195bb948fa943ea6734bff621ed9ff413fa673d21cf5d9e3f30b61973c6df79777a3f614ae6fbcd7ff61df67dc7bfcdff8c7f25900c7c24f07756c87abff54f76c17e29a8062f3905e75a68366c84bf11198dfc978e77468f473f14fd41e76fc7b8d8bdb16b5de9ae5f8d7f267126f1c5e4fee4b753a1d43b53afa50be9a732c1cc57b31fcc7e27d79b9bcc7db57b77f787badfe87967cf1bbd5feffd595fbaefd1be0ff5fdf5b66bfd0b792bbf90ff878113037f50b00a2385538597a9ac56afe2ab7815fa610f1ca66d06872a7bb094edc372299b4a2425db67058b099a596c5d59c3f844325bf6952ac5c450d0f659125faa0c052d2999756c4beac364760f962a7b31e804ab4e0cf1332221a215b5ea57ad68d4c2112b6ab939ec58a97f8313040e4b9c20fc6860ffc0c0fe816b867a4d352c33edc4e21d69d3c23811bb4552a0b7d747e9b1e0668cb063fd9ac0e107e943ead39c8090a0cf189808a886a106cc88a0f810038a40bb61d70f048efa1a5ee88201d80b4769bf8b6d3c977da5ec460e7329c6d42e1c0a76a225910de91ce3bf547172522e9b230676a215dcd5102b5e6354e3652b1a8d50221b046f9fa422587ff8c7702a35944a3ddc618582fe0eddab910f13cd8b17a3567dd17d48dc8ad6af081c5a2ec73fe2842b4434e9dda6488eaea12fd2a70ca5de41bc881ec25bba41348d18ba45dbcdea6bf8067e0e7408d39e1a93065a311c1ac6521ef9641e4bc3381443cb40de4e25a52e0c0eedc50aab1d7d9894100ecc1d3830f7023d1ca83c58a93c384d0ff71e9025699c57857151920fb8df063fd728f6c2dc81fa48a3dcf48315dcbde015c705615cf42e8884c0f534555b04250d142d035b6411b792d9963480d9d25eac043bb1381494d75e8457d75e749488ed6fbaba29e1c96e91aca7fd7a7a328c124655a625a0641eab655a0fcaa54a17062d2f4ad93d984a66f18dcd3967044df0fcb8745382c47141154e4b2e41b0898cc49680ac18065a04958631e0d6cf5432bb172b435d186402dbe2bbdd7a1dfbdb371766fd73eb89a7fdeeeaeaea97b97df82a442105b7d3b6544d66ab956aa59ab32d22d19f4d5b82151caa948b3992cc968b9624e62ad99cfb2b97f298ab944bd9a4645b8e8124974d7a51b21c56e94a54ceb6e504dd5f6618dfe551144735f801515044cdc9451fca5432fdd58a6a140cf41f54a580262a829819e996029180d455b6deceab82c90b5cc83dd717e3d5389174c527627dc537587094502036d8a366c396216b4eb423d791c974148e1aaa6ae0ee40bf5f930d2b9ced393220c9aa2710f0a8b2d8157a8c17fc82cad77bdd333e13afc6f35d9180c72f483f0a8600f8d5d5561f5ba2165f66336eb94d44345429971a52aa261aa2ac9459856b0a42c2df5bc765f748a65d1c0f45738b541effaefe758fa2f8145d22f1ea48836d45b9703d47d2c0919ef502c875449fa02238ea287e4fa023968f57e32d26158775a3548f5cc4aba052db9ef5a15587769f39d2ec3cf104edb6ae5e8d5a972eb14e0baf46ad7a617616af59d1fac99327f109da91315b7bf52a5ec5abadbef90e7804e6e139804079adafa50ac66929a3a4447b5ab221bd0b375c2fafbfb6f17ec74eb86ff0655daa89af3814cc145b2f2dfa3217ddfecc3dbcd444c82fb5b077b7b0236b058fb5323f5f1f21a2855e15ef54bc6889a47e69d6bdf278fdfbb8ad558cacdd3bba86ae1d4e6e56f299749a76b454dbd58f12f900cd3e801fc1963c5f5d27cf77c1fb00aa1bf45775837c36a637ca2f7793f2019f25a51a3ad4ed1b1b725cc38682bc2fd1d0b81f6cb1757653016c8e5e6dcb8d5af5cb6b76c1c5a6b950a85f16383cc90997d7caead78b953cb049deda0115f6701cb5a2259a5962c768fd65ecad7f871304d6373359a7a09f7a00986a89a40ddbccca4850fb8248c9863a1beac2aadb675b7869033b8c8468a4fe494ec051a1fa7e41e56f13048757856d33bc2a0405bcb88e406b8df0faacc0316afffcfdbc709ba0f20ecff79f1784a0a0423bfd5e2852efb9babe82a4aa6fe98b3e43dfff1a3d3c73b34ff3141143b4604824df7d6b723e423df54cd31a607667ab5eb7d3f5d668c713443ce6d2738cbebe85cede8c930f5f770b45fff0a64c5dcf935b1b5a5522b7a15e78d1095a6fad85e1769fa0f2950aaf0a3e9e9ef90de977df8cb95b36bfaf9546fea67c72ebdac85b6c21376b0c6fa6e637eaf9225ec5cba04107f401548b43412fbaa2ae64da644ad500ef5bef0dbde3ebb2249d16547e5c92f0b6f67714048ed2c144b5e415c7797e5cf45e5c2b40c570d235d83fd9aac7ebe8683768ab37a103cde61bae6c4904a6bece4c3a4aeca12d09b95e1e6d862cde848e2b5ee934cf9f96bc686e49c743ed32eb78f37464da8cd79bcae3401baf17b624e55293dcc5adbf8bd8f20f2d4843090ec249804ca30f6c3537ea14de4c65de2c8d3fa635b5deecfb46d7bac19ba285068aaed358ffe2eea3f47cb4d5e7ba87175b877f681e1af5ffcff0a70d1f22bfc1f723ed3e84e35ae20d73bcab698e6fee427c2528a8fcfb7751ad22080ff0aaf049a1ddf52bacf910ef0c0afcfbf6f03c555a0f08c2eff36adbb7f74200ba37f3c67d89461bdda821dbbea455bf8ca3e94f0a2aff00d389bbdecf74e2e5f5bd018e9eff7d41788069c03d2f310dc8adf3ad6ee0116f2180ad1c5d68e9566a27db3000db69cfe73a009bf675b47ad94d03b6d8185f698e2ee08913d952f6447318201aa1eebfc0f512f1e322e9e504e125d5302cc3c08b916c36725d27789213d2b42ea45975c78fd3b29671bd6fd97f230954736d968113432f6e2915f91e918871911c1090f7f3ea56429a1c16a4572861ef2ff0aa10a1ce802b330ef05508431fec6275629d7a7087a636919bcdfca6f6d11bbc56bf6a450bcdd1278abc9d8d3af546ad45e1e1b61128ea9c149a43550556be5e601717ad682f278c364a72f42e167fd01a4fdae38ea5dd6c2c29480c747dc16a25e804a9f8727994ac6085d5ea1b5c75b61c49fa2b5e08ecdae10f246227c33ce7e344ceea8f75f6599c84dfe279ab7129c2713e94dc4bdb2c4ee46e34aa74af20d81ebf134ee723210cf37c8c47cec448be93f3737cc78d2eba9359ab3f5ffd3e378297a11376c2013806f7b03a655b414722921725223931ac56aac162b392e5a82f3c8cd506fb94e1a013745de41c6b004341e73a04e3c79f3f9e8849aae4e53ca222f241cfdb0e6f1b38fefcf1dbdf7dbc984f3bb94c28c977f9ad68acb8f3e59dc5589422ef897647a3ddd1d97527bcbcfd911de9031da626a99c423443f720496bdb1f997b647bfd9261ab7ed13f6405235d894c3aeb44224e367d2b45e8d7e88e46ad7527e0d6c9e05fc2fdff1c8bffb3dcb8fdc1ea2f5617b903f85148c06eb81f2063602a9993b2b98a4bb47b2e9772955c0c6d8b049d1862928d643894c521ca1865a2e40ef30c39b4988144a20f4925f3481f93cd654b956a85db2b46ccc172eeeef4de72c429f5f588ee60a5148aa404c930ea9fda99ef0d054d6f481a2c0d677adc5430d49bdf797447695766a4b7bf94498eecf04564c3ab114d09ed2aed104c2ba648a618e2482298f1069c906966324e353ad423f0720c1fb4035db1584738e8eb0967759ad81deb0ad88568f8ae6da97d4386574edaf1982c4aba2773cf5de1a83b66bea6377b60e8463d64c0fdc279dc8b95bd588921494a5670a852ca6ed14d66129c7846b13d7ce3fcb027108804025b0e9e6eff15229c96799fd6383f404b4702c0e6411a367607f4bba3db80b9f5b67553b5d0ce894f5dd7775e971348958bb45fb2f1d325c3faa41575f5cfa27bfeecb76977716bd41a159e75d1470df594208ca81c57e0f0d992b1a137d5adfac54d3ad353aaf1179c8030c215386e838db2ff86ba48226e6d2a0d63913617a68d72d95452b29c460d0c5213720bc9973d5622db3d924e8f74a7bafc1e1e393faf8ad144bad70aa66ddba309aa6071b8d597a819aa2f3372c748c62bebbcc2770a9c10cc1f743a34a2082874080ab5275717b97df851f0421852508403d76b0831415569a25caa6082faaf09db92326d532954d53a1bd29c598fbb1d37edbeeb7efc3627d4e3027ea7be8d137051a87fa661101e75074a9ac6e07a5ba82070bdbd9c405dbc4f7c8213263619fb80eb6cc62400b69b89d57506e45a4d5f1372a54df46c6e065f5c9361614db41f67d33fad7adc1857ee8501d80190a956d699e1549f7a51ea435fa25caa2291b27b91390c16c979b11a704d57a75a29e1cb71416d31ee170521cef12b38fa5bf59fde6f453915896fd0d7e75bd8f905b2efffe9e315be6b67177f362e08d2079aa252853857bf3cc77fa3fe53958b5af723f1f9fa7c83859d5fd84750ede3dd5b94f576cb20f5e5313b40d579b2d1e9b77d769eb1b207a94debf6f65d1874823609b2a2c95c76006927328cee85a12aed4d820efef7f4841a36a385a837a23ed2ed67d64081cd7e71ffd6d202918066a9a53bb9388fc29d116fb41035c3770ac87b7955b8b371fd4e41e5b123768762aba6a9daca6d096fb0fe53975dc9a9ffa36b05f038ef231e0ff1c93dfb396ebfa0f2fb59e9fdbc2af805e4f7b1cbfb786cf8d66db650dff5f59cd86d9c6573655fd969f265afb36cacd48462e9814840b79489d43c65a1c30c2fac37570a3d9db7cb0dfa8e477bea8b5f78d0564c53b11ffc42735e62045f05011c28c121804c9eab3a49aab8a8a67547d28b43d55cc640e2b822cfe630eb8ab80b2b45a67c7379ccb935ba3c189488338ce8ebde13519f3ff6cb9944b563244b48dfadb7dd675971f4856fe92ff09c600b2a57ff4c03d9be2d7fdf6db7f6914272eea099c8271cabbba3e7c07dc2d0adb9d76e1dde9ecef5eed322da2d7ddbb8fc6cdf7efb90a0f05e9e13f0af1bc81dfab6be5bb48867c751c9cc27124edfe9aeac7f27b039eed5abf85c636c77104ab0a73916b6d64790d4fad1f0f5e360b4a5e4ec62c0c7e68a7c1877dd08f7a0371172b629f26f58c649e3e2316152352ebf16a597e9e17676a2872fd63fd3fc80c64963f7b1fa158c1bea647d14586c48c307f2810509c8400ff4c3a0aba18eb574545b65c939a940c257b48be5a2ab8872a97291d8a9b263a7cac554b9e8e4b10fcb299b48c1a14a8e305390aaaf7211e74e1ad6379ad5e4e2b16327ea8b27e205439dbc1477ff46e2710e2531180f885d435d62d11308740402fe781c1f3e6934a798f198e5f270d9342755e344e3bef8af88623c3e16ca65c31933689a41f363f1b5efd1e4af1306e8f7b89e2b922af33ec6902f6749036be395d54ad076a8b5348caed197c7f56c948e5dbb4c39f08a6926f0b4e8ed214455c29a6569616503e9e6b1fa045e9e548dfae2315992d244dc2ec8694992ef23165123b266efb435390cd206ba87603f9cba19e503581dc6015c373290ade6b2b411d14e8c36a22c1b3ea06962d00e6ca83a48bbe2cd98fa4222c121efe309bf83e777f084f7f178574890b08a02df389f6ce4736d65b7e679beb39393793fcf573899abf0bc9f97df499017be2848d8383fc8b2b9b6922dfbe922beda90c7a19b7ec514357ba9914b0b7521916873a35d1aed4068cb1ba0bd7b7653c68f7512de5214d110482721423e2f10d249f880cca9a2c1b33c2d2590ad195d92d2c180169574e9f8714997927ec9d62234e5db23e96df5b2c94f2f146fc651a6585e1bf9a9b614fa66f4afc2a223a8fca99ca00ab902737bb6a6b57031c4f3a7ba79217785b95bad39bf35faf6c021b80dee82076f2af72cc9e6ca15ea1b13c9712751a93f4555690c872a2552d98b1231b03a64916c8954aad42b294a292997cd55629b37aeaca718d65591f35b9ce4b1ccbc88aaed31fd7ad66f7439da370447506449be4be40547f7e87eb3e329e478a21aa65fdc9aeb4b1ee28d63b7e151881228e4a3a120f1729a11133cbcac1881a3bac51b0a91ae2689127f8f95723cbc86c87112f2e226df6fc81d0bb9b1641a5300b645a45cca3690aa846a917ec43eb43765fcbb443c144d25fc198244088b64d0d13c1e2db43553bb3f2e924c67bfa1e08048c8835ec728adb59d665f52bd29a51ba715f7a0136411339b51b9abaccb93b2ee1ecac4b2b626ef3f97328d72ba9c29c9b236abc9d7b7ed3b6f4a5fd2b557067354d7b8b8ddc4bb308694e2bd5829b7e1d9d4a6941f1408aa2a8650123d02415db750127da2cc255012c382847e9ef7231142a2842924d2d69c5d1385c14169521045a138209d1545457a91268e2ab2ff08455e9494f631c726af37e17453aab7a6a231f7cf017e05ca70927a682c9a239524b449e6b2926d059d96b359a9360c2ad7e41ac63daeaf20055cefcd2d9f4a4aa4cc8ac5b0e1b9e109af5f73a26624dc93e3918bf8ec98475388499478b8abbb79edc01e55b7bacc7d2703e1ce4e2b68143d412b71d4694bc5b2890e9c1578a2f09257d57c21c4a8ed0992faa34451c8dd5e4966d7ba89ad2ff9c20a89ae82475145dee4458ff60f4d54933d4d1bf7005e0407726c9ec2adc3b9b691c9bd58c963a6e8145daf8ed61bd7b3ab2638b310b52e8f3037e4921e2427142952b75e18f9034ea8ff832728ed15f0a5fa8bb7e32f2d16ace808b3bc74eda237e5cc8e085cafae4dfe2327d4171b8b6298aded831400a672eb8646db4745191d9684d7ae365edd3678f8c2c87fe2040147469a66dea215ad2fb171c01181fb36c7e644dafcbf7ed8e7b69c1bf88064900d5897076935a01d4f6a933cc7edba63d496083ac161dcc265e40d5d318c808724f289c4afb527fe7df4c489a8ac4794c050d1af443c5b78952f124fc03014dd7012897c625de22fb21d1d593d24e8619f2fac0b210069f5272eaf9f87801bd1d40b83d4f7c43c974a128373621cadc09c17737b916a9d9c1773e56a30e7d864002b815c3657ede272d5a2e345097fe03b325aca6547ded669b7b0d1d2b6f0911cdaa2ae1e1919d8f3c7032347d4ac51ce60ee485808f6ddb12dc8ed424ff178af6e8f3f37d238bf53da7d2c9819e855ffa61c1cb8356259915b0782e552fd6fa4d2de4cf0b68b853d7b0ae88eff90d55fac7e993be0fa050170a003629080b4eb8b795172a81d869501cc1227954b159d54ae48524ed1c915c95e2ce2b5fa65c24f88125abccea32589134278efc1d207ee2f7d65f78ed241ab74d0f795b113074b7855fc2021f5df1704bc87900f8a8551fa57b87cf9f5bb2fbb7dc32237821f854e380090c9e531956876f2d42761f31b5d6817cbb4172a516f902a29a6b82a2cd69019c6c5843bf4c4f5ff3b35eeafffb59318487cd53f972e259ce7056162b170d1678c7b3ccff3a2e39bf386a4100906feca131079cc7ac8cbfa6ffe9de94b387262a0504a3b092e7bf499f46cc81b1273a2c8fb1c9f31e2ef0a78645ed4fece6f833b5efb65bc8a5f83843b8e5fa6959956d2ac819d9895981ddba090b631627931452d766af3526a836dded68d12365e08e52ccfc080666743de841194cd2755dfdfea3e3e26e639a1e32fe68962910e12f407144224d5ef572542149a928812f0e31d5a30e91543a6df11bd49fb594954cd6af0f73c86f6aea0f37cace73ffa7c4ffeb61210d4ac42f4ffa42baafe1bb4abfb12c5be48b1ff40b10f51ec98475174cafbcf5a73f38fd0fa8e8445a939b93c52be29b4d49cdb7f3b96175de362c0759b5d8fc01d6cbbb100ca2eff8faa29ab6f779f12d0b66f0f69db435ea3aa74f9bfe964c40e2edcedc30e54c93735b12af06287c0732352202aed12345d52c3e10db200d3c79feaeaebeb7af88ece50707be7070285f069d3dfe93c49e4c3c1a4f77d1cf7249195d3c41082bc2a7eccb439ef8755857cd6f478cccf5219447545d1a314a3484377be8a57613b4cc11c80c37458b0c2541753757bb03d82ccb12d890c4aad68bee250d5b6826e108d3b2c9e4a3647f51bbf228b6864d1c306d27fb625059a91d45f4a0eeaaa9930ba8bb2a8cbbc20fbf4ffa2fb64cd13308837aaf907d2ba3698346cd9eb913d865f9115d11b90fd419fa273575012145590e29d246178d2bafd0e36cf3732984c731227ab58cedb4ed808999226f38a67c4130878463c0a2f7a749f22c8866a867a87b87b938305dbf82d55e6258f1e10245e5644cdf26aa6cf632a3e5bf59b762c22ea8a6ca0fa8061e32536f7c86c8fef7380979bf22bd32f1f74a4a0e3d62026815dd81ea54752c96c6e30dbb42224db725249c9a11d4229d79811699a10eecf6ec8da356ef348ffa59259b13953fabf85d5bfff57f848c06247175df955dd558080a94ad9d5a18ce741daeadaede66a53326e9cc130e62accdc27a9a044dc7f7d4d032d575eab82ae405904aa5da482135b536a9fba971bea0d99aa210b8a4ff788eda29335c90c1961c7ce97519539894b270707930fa868c88a2e4662b6e9576d9f627a7ca6e6b5345191794908e81e8997d5df326cbbfe9b8c53ac687a7ac0af45bdc40878b486f0045ed645b9d86d244c551f3c38f8849ef61809d2199704551124bcc2e98a2fe897035e519115bfe1913d5ed98eda179bb50fdada6f437e01bb51a558d5198c6127b60f8ce59a2d9356c65c1ea967493b3fc7ae041df75f2736027549aa5147d757ca62998a2dd0ac7d8ffe2b7086e7fe377c1377de96c92e098fc00cfc32fc5ba60d9a0aa1a508d72b03d179d31ab0ece26bba63189d0dd1bdd59ba4f18cd16f6b316fae9a63caf39c1a353fedea8e8edefa776ea037a95af9b4229d238a7546962449760fc764491215459424f9b6b55cf4f85545d3f85ba3b95cf4a34cc57ec8e375f5ca4927e5394795eb32d5187f4855478a62298ad914b39beae4a4f02491e50f2901e19da3346fab03f3a9becf217e147a6186493d9ba4c6073340ac20157a9b48cbeb54310ba31bc06c53d86fc128613af9377c3bc2c191a0534aa1d31bb1fda7390c787eee0920dfa77415bac43ef97bd698138988440e44220a2144d978c2c7c31ec3713c4ab6433433ce8e70bf790f2769861b656e08b2346187e62239cf55439ff05b448df8eeb1623bbc1e8fd9230b1291b50553d77d112a931e53f798dd14eb68e5d1824d39017e0c52f03080581ca2d6076dbb03b472e6b20606bb309794287352d0a13e46325b590bf9ce56da344f2b318079acb0d14bd7a2a3b5cdcb211c96c9934ea7df3c1d2e043ed0b93d18eabce3616a6e9ce27d26f12683f423afb7229a9685fa612f679b1f13553e2818e4b42293278538d721669c6ffabb94aae10d6dd742dbb76b01a56f779f9552edee70a15557dd0a4c8d1d5d137649d18034c2f14287c80b5551fb2651b1c3dd8a8073e73904fc1af4c0630055a7cd3e75fdd094eb8d7b91766b0692246dba5440d54177aaacb287cbb9561b6bce0d13aed9b68731e84529d89ee84466f496ece714cf3fa93e3e2e629c1aa142c4ea2848bea034d011ec443be115bbec72862b495ea92c07529c69f33154245956b097f7597c3f274b1e49e67a79dbe4b39c4a5449e63a38dbe4bb783efabd67a4fd4f2b1ef531d39791a477db392710134967c7d4f31d9d92980c86b2d68b3e21b7bd4f128788ac1d127e553344fd0591e8f21f51ec6b2221e22734d1d07f5dd689f8b82e1ada0b9a9e5195d10b92171af3b2cfe1476107ec87f3f06fe012d5b3499262033c24cb467c52eb63f88a4e0c87aa430d138e89c91daf6ace3f64dc581566cfb9469febda946915a5f5cc21063a31744787a56aaa34403f91e445299973a79e5cb7a8e8349fc64d1634e2c4bdddce40c48944e3c15e3317215a41350cb520ebbcff983554b4adb411b352816e5e97e9955ffc0951144351f0573543e775c72bc47c9ea0cfeff5dca9e8a10e8fb22dd01197956d3ef49bf9bc19b945c15b42d6719e372ca9a276a904a59d863d10f6e57385c69346e5b42f60183e33271bea926a28e4a015d24caf122151a2b859ab404b1a8aa4220ac4f2a0d7277914d9b845feb8b22dc015ad8a1d30f4406c548bf9ba9c4962ea1c19d63d24400e9a81f26bece666fce5083e073684a113b2eedaab8607c9aa5f73882393701262a29c204daba58570d529c9d6eb2bba2d4d296c8abc7e1f1ac7ebf7e2d7ea715c8cb378895176faf6afa99aa6fe9aee7d8f158d5aeff1be387be5e2088bc0f0b05363adcbffcdf5e0ef41100a002253ff54fb578a6ca8d5fd880e5bace3da6a5e5cb3658388af58bef89d472a3b77560edd6df963bfe3495ffaeddf760c5f65a833e9ef10844820d93954f1793b3e1a8814f287ee1a1abaf370269b8afeb6e72f7feb234e38d631540e1911418878c2e5a148acc35dc7bc617dc74370017e83c5f0de70b5cc9b5d0db33190debe6e5d4c6a2df2beba2e8a9b3dbb2d92d17dc3a6ab686eb062c6504f19eaac6adca778036d8b66f6b999235f88089cc509114e10b835f41b9b2d92b9c1ca995f52f46edaa0ba75a5feeed6fa994742342f54d8f0f006eada985f76c7ba076107ec036872b836d2c102a1dc30cfb65a9bed731d9a4ab59249b0f1334cb070169c15dc70de5fa74721141918888484b530df464efd1a4272d7e15d4984d50672692d32786f75772cb6bbbaf7fa9ca193434327eb2fbb27681fabf7ba311d558030aecdd4532ec4d66cb173c3d5ad8d585477fc104fb0e0c14b9d3d3d3b7b7ace75399d11abcbf0ebca6715dd8f97dae6f84bf517dce8c5b79fa02577f6bc2cfb10bdb210f49a8aae2ba637b8d97a5dda5bdfcba2c3db97a7381b83ad37468c971336e32ed3c6cbf50b753fd85a86dbb62477b435087ed98a16eaa32ce4b2be687776f676761e0ffab2dea0ea51a4774a8ae7eada02dcdd4d84fce55ad042b4fead9ffd8c56527a6b6fe7a4a873aac89baa2e298aa4ab2634f7b46af1dc0de59bc794669ad37424d13679b765b468fd333ec7493ace208e9ce255fea96e5ee5bb6f140cfa062d9d745e3b718aa7a5f9eee69cf7a21bdfd8e1c6e81e6caec7598b31585ff90389f54da1ca886f7da8564827a9b682bced042e46adfa454a97a9ba1c2c70c2fdf5979aa820b895cf2df01423f3a8cbcf24aff247eb8b71d36509dc10991fd3bb545a4b5decc79c50885aabd02c31cbc4f238e57092e78f9e607b9371236debc5ef68f945bf057f085f86ff0bbebfc9f7595ffd6cf15fb85860e3fd999ba4ffa58b13366a8875d166bac8d7e3bc28f2b8c88bf597d72240466f86d6aface178b12dffe25b78481b7a9a88dfa5e877e9e3d6d75e973e97ca8fb482556e7cb87d93bcdf7b93f7ae1d7ea3d5ea815ffdf9ea173901bf0a057818e69847e71a8584bad04422121b7f89716c1ca15aa90e23b520d8d0429695681576ef93f28d12adc2ee7d951892a0440c8e18e896a0d782f803bb1294bdaad317eecb0ddc639b3c0a9ce8d17a37cded5311791e798fef70b62b6de7e246c8d462a6b479f6155495c8be028f1e9f8a6267f4445af6e02bb6e611390179d3bea790ed0bf739aa570e567a37cd2d9921239eb3d35dd9c33e0f4fdf81aa64c6b4cdb32dd9837c615f4451398f9ceec9ed105175f5436b6eca824ec8403fed2fd7ad8ccf55834355474a565ba1e3b94a29570d5a39ea5fe72a43c4912c8764d72d6e499743a5507960f6451693f8405955cb9d638dccbf77536dabe46f77335e63d18d2fae2bd5bc87e9dc2fe3e3f8aa3b77380c0fb1de92b44ca83c36755a8e9a96eebc199b2dabba8bbf593d4865dd19d37263dead35acc5bc91e6d85eb99447341562a8275483286ef4e7a5aceb45776f570c6524b52b298b71d9eb79d8e395e3a29cdc952adc39a0c9b6a978354e979f95754ef32aa62d6b03775a5159e7156a1129bc2ed37afe9348563194edd441ff37c95da9ce8096f1043b3b839e8ce68fa576250b037716ba2366c4329c28916512750c2b6246ba0b77baf19db2ab3bc05df3d3ec574fc1183cfa26d64f6c88722bdf24dd720beceb902d15e4b6f69554d71f7e6ec7ec0dff36ae3262cb6dd8429b079bc618796013cce7751f31b3ee048dbd15bec7edc3575c4f2801190024b9ac170db47d560ca91349ddf2b2af94473ee773d057f56588af8abff8e53ff4f92e794cbbcbdbc25eb974a9feda5338f9d453f8e11dbb443222858cfaa22fac90660ae3beb052bf50c078a1fe5d8c97eb8b5a19e3e54de67f6ffb5f32ff9b4ab2a185ad8285b79ef97dfc9257d7bdf4f0d6e77c3f170a8542ebd69c75b9fb8ddc60bdf3666b0ea75b2beba6b75c70f88abbf8c93d7c63eb25870d7bef397c0e74e8811d70cb868877c7eac3e41e2cedc2729548d901ccb29102ea92d9d5eb5a4b299b2a0f55ca092b58b493128e44b64522db4af410d40f689a177941162459094ab2ae7bf5377e7185b66bee846a1873f58b0389c400b2632156da5d8ab98757745dd6bb555e404192654bd24fea3f32d4faff9fde8977a846fd4a62c0bde9e200f395bf8c3f7263a0b7d1beb852ad50cd97a7be647518f3986a6e59e2d0fe2b8655031b51fce8ec9a4c1b246ef7dcd29fe90ac8f6b6d0a1270e1d7ae25020d03bb467a2da794f61fbe8f6eda32343fdbeee9020c7f7f7a487fd6a774a3e74e1a50b87f01a1f3a39b4fdfe5e35dde3ae7301b6f71d00b70f9f830074401c0a8d759d13b0c07a1bb261251e968b6e172126aabe84b8c139ae16ed14b9c900757b4da2697bc375aebb7ed41b16fb5423e1e0926a18bfa89ba224e262fd11c4cbf50fb7d66e264e9ce85e8bdebfba71afa0f507bce8370cb5bee4240c154fa846fd736fbcc18ba22863e8e3441ca5a5464572a27ba2d5f5ac1dfe7d0b3bd0c21ab273c75a3f0a55d8057be1001c8147e0697807bcd0b66b14954c629dc9e85b177a9cb0dbb7e4f0e58a762a53b4538154b928a6cac55c6aed01bee2da0d24b5ee996d0fa1773b29b6255591ada43d2a92fad5c6a2075d6fe4e04833a73b1eaf8fbad1bf78391eefd659695a9096d1d3271bbd7be35cffef972e2d5d3a2692ed6b8f683e7415ae7b0d8cc4e3f1fa65faf8c643819d474a8d40eae639343b1222e2b1664cf4f7b97d7819ee81fbe02177efce77c073f0ff83df85df07c8b44b37552eae4fae13cc3a61173726db655fa6b2b78b762a912a17cba9729179ce0d49da6b4f23a97231935a7b5779c37358d2693c852b352471aa2992c58d32bafeca6b545cf5c5f89ad416d969341ec7502379aa59fa14fb88f178ebfed0c6575cdefacae5f8623cbe187f43774be98dd38bcd1787daa95c8c2fc6d91ab89faffe09c7e357c181881b4323ba330bb615740770dd20b540258f58eec21cede3bc98cbe0e7eaa33ed5eb9f8bf7187db38aaa6b96b08bb7d3f59f64ae7ce8255132c97f9ec6cbf885253595248593c10edeb77b809734079f0fc4947aff3eafbdf73f12af287dbe7f89d98c6beb727bdc58a4add79d6db47c36a4b75804d5ab9002b50b0b44995d43b75c7d16ba4c4bac3fb4ad1fd620442d954c2eeb56c2bd5829395bee9d850b57f45048bfa23fb5f9cbbef518318c6b86416a24aa6d4afcba3d1d1aebabdeea9e209bee29304ac453aeea3e45ab460b1ddd52db5fbbae2c45ffc3d68a9fad297c033fef7edb2370e2862bdd1a13d06d2a86453bbbbb49b93ee200f5fc86b13814c396cdbbd5ba375375748110312f1253b139af44c25d9ae2e115212a201728244385ce7de164389c0c6f5511563b029a8708229128a78a632a3a2a22517493483e9ee36d5e153a3a42dd577df42961d8b086b20a7b6fc86f76809ab61be3838b6c822b47fbc3e0963b9a6dd7cdb03f3854ba4390652127927881277d843c9eec704c732b7eee0ac6b6a9b950cf3622bee16a82fb25fda5116fdcd71aeb72eb980f6cc8431546dc98dad47af32b67a7ca81ebd7f13bcc71690dd235e777f0d3270dabfee36605b972f167ac3af51aea15d538ce099f4c974a474ba5341b97c2613720975528dd1a3971a2b93bcb2435c4268e735cfde79cf01abde568e9221b0c6bae49db87af421c4a30ead24d65da8c557282c398cb5687b14a2d73da6049d9bde6b4962257cb0ea96c587fd730681a4138edc1a7156ee8923717bda5508ea5fbbbfd399b28c8f50c4673de4bc6d5a3dd83be4020625ad9aedd3d872f3da9a992de64ea7991c8969fe7ef6db6291193978c0e7b07eff525ba77f5df16d6b494dde1310342c5ee302e19ddaf4ca2ea89c5779a4e67bad8e9a8124e5efa012f0984f435a54a4441e165956bb6d58820fdebc5b456dc69d66c2ecbe6f9deb267f349458f28e18307c34a44579263636fddbff9ac1e12f4442894d085909e4f240070b5be7a15bf82afc27b68bfec5ae05ecc55e977cfba6b7968baeace4472657a4e7ab111ec91cbba33c636ed5b28d2985c2706bafe27599f26520c2b7b399b9e87f6a22b145afb87867100dd38798ab8efc5cfeedfa528bca1dc73d75df72806afcabbf6134136e5fd36279b066f1e3d24a1c7276575bf9e957c1e940e1d3579c394397bbf6cca02d9bf4b56dfe4edc4a76fbcfdc19cca794d85ebeaedede2149fc1a939c167884276bb6c8a44bebff7e42ec9d448fe7659d7e5dbf34433a55d277bef978968cadbb38268f8849cca19becd9ea078dfdc139a7be8adf9a1371dfb58b7e149644df75cb7c949fbf003b0bd7b57bf8471bc0a41800ca9e6f66239297939f6f524faf130fe8c33f1de61c52bee7bd9e345e5d130e70969efdabbffbda7ad670f2acaf336678594b31ff058443ad8a4fd4bdc36fc53e8841c80ab7fd63f927e69b782658993735fda859cf9f23ec971a4752f799716f270e14715f4febaf38c4bc6f07bd1b69fd765596fbcf765dd96a4830725c9d65f3eab84acf7be77bf4bd9b316b46c8057ddfed95def9059afcff76285948b0166dba67cee1e84cd7eb4b5ae71710275b6914c6309239a8b863a89a31bf747e9b9d17ea01b57616eb5132876af19509b6f03fac29a7d25b8dfef27f8a7701fbc177e1d3e0ae0e468b365db0c6453b9bcbbd9008b62d9cb42395860b21bb9d1e5b6cf4a8cde112c3a3137e8c0a2b992d75dce12a4f64356f2a281d9aa531d76db7aa5b1f9582eef36eeec00ba6686bb5c961d626ecf11acb6abee969efb9e853cd7ef8df9041d39ae625a9cde83d8a3739659e138d4055fccdbcff16849b198b4ae6cd947cb721c2deb2b6f2cab050272ced7a78b21ab9833cd5cd10a897a9f2f27afcb476feb42476a57d29d2b4dee4ab131daee410e31aa2811b3c4f10286e36a0a054ca9f1300a3c5732238a1245e406bdbaee7df3454f0c0c04742d32682550881bdd465cc0843518d13cfead2ed80db20eef4a5e6bae7ee7575757bf8c8bf82a54602fcc03642a8ded52fb30d98c7add109712c3d6f29a4ab994737711159b668698b2dc5535b645a4f6f845fac0722b1c77c8099218d27fae69f22d62728a8a1d9ddb83bd69abcb27eb9aa6e82ce2503144a2163441541433da1f8e28e9f4507db411a738322972062f4a5a972870bcc04b9a6c07b58047f3597a28667644329d8629eaaaec458d7883df4fc47c69635ba843113d8413e48067c9135088b25713c269331aee283b4e29191960018a3edd43a2b2c713d1039226792dd5d4e4684cb3be20f28a2a10af992229af37a787a2a1c61eac548e43700666a81c5d7b920aa8194d6b60fb22e9ea5a1c6d9505d2bae1b3642d7e96da9d6d51dcee1d8d817916439b0ab685d17ecb184aa79548b83f6a2a8a28680575dc959fe6e3758fec8f59a9dee0f6ce0e5415ce3c28abba681a9d994887190be9964ff304b4a02d6b122ff09c20766992c81b9c386906bd44c3fa6798403e1a8a244b8e53ee0847cd7458d0f62aae000d55e0892e2a1da16d46da17b3bd299232bd4450155efc82a5c5a2b266aa9657d2a4801ef178e428f15099e9b947d7c7d1aef5797b6ebce389e36e1977a36d0bb7b0d50bc3c36c37b0e161b625d786f4967ea8b4c50dcd7463ede4ab8df89803701bdc03b0d147ae6e5c23df1ca56bf9876b4bb48791ded185a9226b8a4e737bc5f2d5b5a1b4b5d1b55f560db6eff9a2bbe3b9a1de9a2441cf842748925f7dc9cff10ff3dc57eb8b8d4d7185e64426216b939aa386aa8ba47ec555542788a8abc60e4dd7b51d9d3c7f7bfdb38d7d73dbfdaa6e18747718b96e573742abaf3b2b442fb90b66b3a5615c9b722fbb5bb60f559d1876a281c9eb36ab894a862f1270bbaa40c46748d1ca832f34f66bf77bc35dc7bbc25e7fc7bea3fb366cfc762e1f34037257c6ed828f76c90133983ff760e5e3ac1ffe9ba8372c10db2642d81b0d8642d0887fff3287f8aabb5e7998daac4dc26dcb6938c14d5f2397e5d76d7cddda54a3c58d8dbf6b270b779fbebb90b4f3a1403e8e13f17c20f457e9dde9f4eea3f4f0639fa7fe618f2f16ca179e2ae443b1df9406760ede5d28dc3db87340f2e4ba52e1783e1f0fa762dd088d5b8eee4ed79ff5f87c9e70b89b78d2690fe90eb7ec90d6bcd6267bbd6c8c0c7037f3bc59cb59b73706dbe8834d543d363ccc0b415e15f6ec11543e28f0c37b04b72db86987df60163ed1b217b9735bdcd16a3d0ddbb4c14b784b4ef6606233faf0f266effe61d3165de410e2a00188095affa8282c0917ebae7ec1ab9e4020dedad4a8b9a7cad54644e00df7822b279cc6806562936ddf16ea577164b410b5167164f3addeaecd2e5ad182fbbf9cfc6deb7f77d35bffd31b4200f406ce0181ae06ce4387fb7f1eb1f89d0ed8d7c045d0e0c1062e8103671bb80a7df06c03d72000bf073ca0a0b8ff9bcc171b384216beddc03930e0670d9c870aca0d5c800a0e37701182b8d0c025c8e3af347015eec5cf35700db29c7178e6fc427cdf93b5f99973b5763c5e8e1f9eabd5eeaa9dbd303d36b7c995f8cd2fdd5b9b9b9f9a391f2fe70bb454a350b9edb9476ae76b73630bb589f8e9a7e3f34f9c1d5a5838133f3337732e4e6fa84d4fcfc467e7661ead8d2fe427171666770e0c9c69e4e7c767cec1619881f3b00071d8074f420de66106ce416dcbfc3894210e87610e6a5083bba00667e1024cc318ccbdc97be2ff4beeba176aeeff8435e5de4dcbe6a1d07ad6fa2795b7a0f708d4e0bcfb9c3158801a4c401c4ec3d31087797802cec2102cc0029c81389c8139f759f1d61b6a300dd33003719875af3d0a35188705c8c3a47bd72cec840118702da5f6f27918779fd4fa4ff1588cee267f1790431e0514514282322aa8a2863a7ad0402f9ae8433f06d0421b83e86008c318c10e8c6227c6b00be398c024a6308d19cc620ebbb1077bb10fb7613fe671000b38884358c41296b18255dc8e3b7027eec2ddb80787712f8ee03edc8f07f0201ec2c378048fe22d782bde86c7f0763c8e77e009bc13efc2bbf124de83f7e2dbf014de87f7e303f8203e840fe323388a63781ac771026b7806cfe2244ee1a3f8184ee3393c8f33388b8fe31ccee3025ec027401f9b9898abcdcff79f9e9979ac95181f9b9bb0c7e6e6669eec1f9b5ee81f9f9a1b9faef54fcc3c79fefadce9da9985e075b9735367271702d7655f98554fd7a6a7fbe7a7c7e627058acaf4c5e7c6e61e934f5f989a9e983a7f561f1f9bae9d9f189ba3371aadc4f8646dfcb1b5e4b9a9f317e63dade4ecf485f9b58b0b53e76af37233e91b1f9bab2df4cf3f7e616c8e71b13e8772e05f97e352ef5d97756156199f1c9b5be83f3d36a7bbb434786a24583189e529e3d353b3a767c6e626c4f1e999f1c7e8f17ccd373e3d335f9be81f1f9b5d989a393f75feac363e73ee5cedfc02e5943470b9719ea719b363f3f3c2f8ccecd30a3db86469e373b589a905f71ba913334dd10a34d3533bff446d7a66b6d63f335b3b2f37534aede91a13b97c666aba46dfa633646e7c72ea899aca121726a66614171d9f996864d69e1aaf4d3374eadcd8d91a7bc0ecc4192f43669eaccdcdce4c9d5f60659e989aa8359ef1e4ccdc844031e1ccf4d859edccccf4446dcea54b62b878666ee6c9f3d2990b0ba767a6f9b3b573dae4d8f989fee9a9b753ce5c7c766cb636d7406b63e3352f43e9fbdcefd89ea65fd16c4bbbc2f2b4655c98d5d752b539c54dcccd8c3fc60acd8f4fcdcfcfcccdb3d7cdcfce8c3fe616999f1c7bacc64f4e4c8893b5b1b9057972667e766a616c5a999cb93077767a6c7e5e9e9ae83f3d3671b646a626dccf22baa292dce3bcfc58ed695615a66be766ce2bd3536768053b7f5699a6149ebe307d5a9e9e9a77eb007f6e6c963f579bd4dddadda853c6b999f3b5a7fb4f4f4d4fd332c2b99999f3caf9da93f3ae74f499d354c5f49f9d9bb9306b341217cebb49cd2dd13f3b3d76bea6cf8e5d98af352a8b363b3df6f41ade7a95f7f10bb5795a371bd7d4b9dad9a9f985da5c6d42981f7ba2a6cf4fd2b6c00a8bf3e7a6a66bcafcf99927cf4c8f3d569358b632bf3036d73f39367d46a09836bf3035fed8d3fde767166adafcc2cc6ce3d1fcfc85f3dac2e48573a7e7dd4fa934f00bb3badb7a1bc59485b9b1f949cab77661be36d7acec14d79f9c3a3f31f364bfdbaabc8dc4b9b1a7a6ce4dbd7d2d3d75de4d1b8df45c6d7e6166ae46bbf9ff370000ffff2df51b91d0780000", "3501ffe3bbe5a393d637f0b1976d918c": "1f8b08000000000000ffec7d0b73d3bab6ff5731fe9f3fd7be5b357ee5d9c9d9c36e291428f4d0c2d9ec9c0ca3c46a22eac8d9b69cb4947cf73b925ff22bcdabd033c30c2996965e4b4bfa495a4b0f658189e32db4051acee0e8fa75e09159afc2effbf7fe40d566613051fafdce00dcbdfa300eba57211951ec11c5050484ea9d1c06480aa88f47543e0c355f21eae11cfa12ea858adcfedc7a2dab872317068144ef968c80196176462e641578ecfbcdf3e99fb20a7cf67d357f712eab00b2efb9fbea83ac82807de353e2a4098dee461e09a81f8ea8e72beadd928cdf93538229fbe6790c7b489b0e953b44467016842e6425ee9a20a0b72e0abafd01702085ddbbe5523d4c18921cc555ef7c44439f48483b1d2a3ae82baea22a2a409ac79c46b3d56a99461390d075a33f06907d2fa4c83ff042ea222a83fe4020e7ffa82c2532540c601a66a76346141d049a07fa813604487b0790f615f4db9c3400489b08c9a9032056bf7ae72a0418405797117999f232be97173dcf049ccd0e66c8bff2fc29f2832a2e1c30ccca6f1876b3dd4eca3fca05bfb7944c42b31ed2ae874a29df111883bb25fbd71fa860c2643fc28bb7b20aa6ec5b7f3e9cc92ab862df93a36f9f6515dcb2efbf5ecf6669fb9817da079de0404b33798b037a4121453d8216d2ad8601a73b8842ec061723445031c8d7e5324af9289772dc03f2c90717c89fe311eab951babc75f488e0f07b61e40a7816d5d12bca9b6be61e3972f1e8fa1d5a240c46696b04cef11852a4f4658216f200dcf988b5ff39baf4ba59c0a51af594c5363de57aa3d66501d9c17319f4fb32af4519c8219628baa1d21491501eacec3062ba462e5db39cae8fc7938d53358b7d611852ea91628163df24dd7e9fff278f9818986f111823107ca21f46151507ecf57ae4e95305f59e184f7a3d571b79d3994710a19a28d1a74f910ad0b2bac82f87ca811117427ec7645c60c8aeeadc2e0e2ac169a20dc1448349d76e00dbb675bd69277d7baa41d0bfd22008b46b10687000ee78bbedf67520f32f79b0aceff70d5616814b1ea38c57a73be1552d73d76051875947a03f67fc30be3605af2f55e01517e2089c0a0076cec0e9e2538064151cb3efe9f1b7a1ac8233f6fde1f3aba6ac820bf61db4de9ec82a78c9becfdeb886ac8213f67d7aecb0c1f1927dfba7e75056c10b3e687eb57c5905efd8f7b3f0239555f0b5976f8200a5554ad04209bf7f57c2deb9ef4d7180545549035380d5bb54121e9304f56fefa08234826ea8e2aaea7204e968a210f50e2b445d6672f3c5d074e27b8b95c1210bee6a8e47d0ef5471b5397443a47619ca865981887a4752e252d5e80411c503beba848a827a4883b3997bcb98e45314352aa6aa2ed5653c02dcd4e27404c76e0ac0c124c1eb4a88763de86032ee3dd12337a213824798debe9fb1a206bdbebc98608a64200f5d38ba96810c030c890ce4090e6690e0913c0079887f07a7288d1e130304fdd1e4c4f3a7471ea1bee7f291e742cb813e0f3946f43c4949516b624775773481648c026d866748793ffc8a465479a14155b1755d05b1c73be6a1aa5a100e83918f8748717bff8cb222709a5695982d6320505c56dfac74c728a0be77cb46a57ce192d6f755614980b9871d494ffe4ba4fdbf8a1a094b727b33e807e894502593841610380b261ed566d087d340c30e3074f5105f297aaff7e489abc699b0343c1769ae3756d8c827a5f52dab3c4f252f50433d8cb225bd5b8c5c472ab508ed0a132763c755351f05a14b15f530971449be40566b4463c3663e054e4904e6a211450eabc95e1aab4e9801a29f983c9534642cf72b38f77c4c6bb24ba85158e86218a0a03a684c8c428ebc9050ffb63a644c8c420eb14f270eac2b404a2ef49dead029390e7d8bbe8c3cd7f36b4227e428f404b191bf3a68448bc24d110c421f4d11a135552186486af91a7da1b82e424a8e6b0ffa08f95f5c44c6745253876290281685947a5e4d0e313186118cfc1126e39ab029390a1dfa6e75b8d08f3b365d60ca00af3ae7881885c424a070ecc36975d8941c879ec231fa3283759590d185f0e73e9a63b4e8155258aacb2afc591b5ff09512f9f67abd04300e4b1df1492feb8a4f9f2ae58eca2700f7a24630f2e10c9df80879040569a1833280548e087165d5a4c216034b3599fd232757277c2c2e02778e03770388597ae49449201a4558da09e7ae46a13f4654bbc22e0afafa00847cb83ac12efa80a083fcc350f3084345449c5e36a07089f6c2b81a56ca7da902160e3acf836348e1c70f6fd94cc2231f5080282f573495e0035d4f96ef6f4442082ec9a5474e62848c598c6b2f45d52739e7d22317e170ca47e264c05a394e1dbabf975b472af38f33868cca1d76ba2e6015decdc681d077bb49f705298a76f3980b52c0ece6e115c418dd15d11ca480d9cdc32b88e0b12bc0281031b05bc24d90225e378f8f20076cdd321c8218c9ba22e68114b2ba798003f1a8d415c72f10435257042f90624f378f5420115e37274ac05b41576c6dc2fc8724cdb5bca27e26aa2adc81ba54bb2b447ce4232ee25fd27d44d275d7956e84c305616ad861526758c0017a83496e613d719860c87ae38800cc35d3d0274636e4bb55834836e647e3436598ade6a1c9dcb23ac9cac96575d09ad96575e094fefb3df462d72acc46ab63d74e476b8257ce47abc3d64e48ab83af9a9156c7583925ada9f9fa396975849a496975e0c2ac349973d6a45c3de9ac0e9cd21385e6fb4a85a69e2a34fbb23ca8546abed954a909f3aa47de291f5c3d589af269238f507443b57fe0e9cc652d76b5f6701d352a4f92d05d74a8c52429a62e5a37c19743c54a149c3290e581aac611cbba392b5630162b612968173f6e24da2abd32176e20511f9200f334e738c0c3f559ba1a2a95d623fedf9b44496902b3d56e98a992f25cbb06fdc828f40620edef01b823e313cf7f7fc5d5aff1f74a05ac5950c0562d3acafad8b79bd65810e28368a971e0f144b93ab6df37818c299acab13d8bb9e188e2398a7d06ebf5145ad75368d45390763b545c60a8493f5142f5e953aa02ba04c7da101c671a6e03d81da361827edf00f660000c70a64156cb470069d791c5ed8e2f2b781df3afb48601d25e0c15cb6a346cdb32756081bbd104bbceb1efcd1c6f41ce1009bbfab24e8b5cdd522bc2b2fae53c11c6d397a84a8f586b448140c0c1735e99b9d6fe6923d9e940c6d3712cad3690037f24f37aa96cd0b5dd502f34337125962bdd87cd34fdad8ade1862099339f2297224d696e541dcd2e2a950dab436b52819409ed8b55939788e59f2d284af713700b3cc5c9382b7744ad8071f9d4a061c2b5faa66a35c07576cd6b80140176c42ad9a14830d926ce493ac00fd2b2ff42942445a6007499b16b959948d0b87c8bdcfc05e6326835354aae6762e837665438b66c1d295370a37a99b4e2ee9069031998594273e73e1084d3c97352110170cf4657a3b436c9c4437346dcf647c1012ea85a30972440425e3836adf998f038a092a783bd8a7b705bf397471313a2655be334472bd2a01ec88a501889d4337f43317478268a80c28f469250511671dc08f32aa067c5dd5be4c20715c74ca422961a29b8aac477c0c888a561bdf239751652a71f052d9ebb316825eb0a015493026d74ae005712a8b4ff333b96810d381d1b4daa995f6421b654358df04171a141b2b8b75cc6299718c0b0d0bd59e0072df1d2c41ff421b0d926c4cd0b0f566cbccf2b9e2c344dc40d28f264b7110e54c070370c7c08d8f9f11402fc56298badd4e8af135eea117da559aa95de4ed1af4fb360b9ce769bdc9d5c7b4ce9af974cf35379d5cf189d56932ab3acda654f9d1a295ebd676c53477e16d0776467b8f6897e8354b886796ece8159037854180e7880d733e957c4859e77fc0754d510b7bdff2c5344a13981c0b78146dd3e8574c36ef178469de372a6c2a5ad3daa3689f47ca94b2641beb8e38690aff95830e199f790e72a3b6920d2a0f3e16012cb6da354626b3b9dbc8c4e26f3932f1ac7719998a09d48d4c0569e4d35270aa170ceb0732b3f9430632b30d9a2da3650bf990ca81ac30a20dc0dd9471c80706fec54686bb901b6fba05fe972bc7379294c52a8dddf78d6f6c4990073dab625984fe0ea1cb461f3a91369ecc5b7b873d6b9fb0f7dec7634ca4a3483f5c5e30ad8d7ec5847e81e04382a0b523085adb83a0b52b081613d81604138bc70a10b47e0c085a8f0804ed6d40d036f60d52764971bd0348fd817d3a918e214592f2f9f3e7cf07676707c7c76a797faebd2e5a65a9fc42aa87452abbb11b52b1f85b2215cf7a17a42a26b02d526506d7155865377e0856d9ad4784559d2db0aa51586a579c82d814ac1a256df50e60f522b16f97e0a95198b8e9a275a702a48494624c0ab1080f4e6c1ba9b501719fc49e267845ba57d127afe0077d03c8140e3171d08d0cf4383b1cc0a15b82bdff3e908c552c8993aba031297878228e5ea3db998f8220f34976ff4586be620e09ef1b03e90a135cc32ed9e0d2a2af8870c2829c12458ce1d581b510e53d83ea3852cafe8a486fd0ed390b9346aaaca1ea045a9cb3484b95444faa70458cc2a0700f0867fb5232107ea90dc14be18c8e0d0cd36cb7759d75c634c245dc41edc10098e024326a5e0386cd97fcdc4e64450c3834c6dff200089db9cb3a94d8b91974a60c7453664155a575abab7219db4c9bbad569755aad2630c0dd171f1107f949d0a06b2c4ba65513dc7d99421242f782e340575f26fcb7f2787ca20d41ff84b1b8ddb073a20d13a86f741ecfb0d33476d683eb8912fc6dd2769ad66e5b0cf216bafc44d6aeb053eea4946836f63ddf6feed3a8f8e21649479eebf9a521b4d95e77862fa4f16b82ff9013fc6667b7093e8bbfe5049f67bdcb04bf98c0b613fc6c13e38a097eb334db7d90097ecb783c48dbb2b698e0b7ec7d8353abb147707ac537994aca685a5640b45aebc2532e955f00f59000d56aef06502cfe9600c5b3de05a08a096c0b50f1b6e915e8d46aff10746aeb8f079ddae616e8d4b6f68d4eedd2b5023ba0d399b0a7bdbc2fabb92e3ce593f9854f0f894fedd66ef8d4ae5a0caf874f3ceb5df0a998c0b6f8943badb102a5daad1f83528f68b5dad978b5ea0d95cedeadce9d7d5a9d4fe035922e71054475d636380b69fcc2a787c4a7ce8eb6e6cef6b6e6ceaeb6e66202dbe25376306c0538757e8cb5b9f388accd86be8db9d9d0f76e6f36f47d1a9c8ff8a13de92d3fb457c228435fdbce5c48e817503d245019fa8eb6669ec0d6bbd677b5369752d87a634cee58ea0ac032f41f637336f447647436f46dacce8651303b5760d64e2a79c3d83f261afbc4c4cbe85c72190d8db5d1304de2170e3e280e1abbe2a0b1030e1a3be36031856d71303967bf0a018d1f8480c6634240632b042c9c71d9074099fbdc78739edc855086a8c2499115102524f20ba41e14a44c7b479032eded418a67be13481553d816a4b21b3e56c194593abaf740c7129b8f08a6cc9249622d98ca1f11362b4e64ef3651b3f68f83d63e71f0e387b76504b4d646401e3dc3bed0777f41df9ea1cfda15faac1da0cfda19fa8a296c0b7da1efae043deb07819ef59840cfda0af4accede31c92e1d69de65f1185d3d25bde28dbe0c4f85e322abd69085947ecdd21e14aa6c6b47a862096c0b553cf39da0aa98c2d64bc9f862b555706597363b3d0c5cd98d47045776c920bb0e5cd9f7de10b3395c75f60857a7c9e577b580553832b202b0ca69fd82ac0785ac86b92364b104b6852c9ef94e90554c615bc8ca2e785c055a8dd21ea88701ad86fd8840ab5132d4ae035a8dd6fdf7726d8a5a8d7dde4ec36fef2e435573bdf5ea466be06669c1badf2bca8c269b10f6fb32bfeeee3482562389af8b680b472334a33290b5afb331d0beced098436c61553b733de84857380fc091bb78054f8c716bdcc193eb7b9597f08857bd87f7df20da2cadd3f7771352e15449f50580c114baae84a3a6b4872b383f65b744ed7e4d54b3f5704f4add7713665eacc275f90970374db51268ab3b2b4fa0a2b396a631d51cce7c3c85fead14f09bf37fc01b5ac915fdebbfa015c528b3d82a6187c022745957bebc9d210913091209ddc01195089c220912474acf6efedcca88ef28dfa032780ce9c4f7a65272c77274fd6efeca4f5696b0275cf879c86f38656818966f0e5701a73639b5ea025a2dda04f04ffde9d32761eec98a28aad9e651e3fb84223f2bf28bafd788fcec16f74b0fb247be0d9bfb16df6e124f2ec7013bf980912fc7baf8ced586ad6a700eb10b876e7a7b2e0fc59b4b981db1897cdb3af78df6b5c75e5126e256d288d089184af770c5b5a6473ce5764bc4242322c506c4d8d38cab3951d8c7de56e41dfa8934ec4614395a32c69e7155a593b244722cf2932761e15ad7b51a455403f1c9ed9853e1765b5bd5c898df6cfb31595554d02e6b29e7f1eaa28274cc561815fe9fd87aa2c2ff345a69546512ad36e2c668c4728aaead8b3d1b194f965ecf9340bbaca514791248399e04ff1c4f827f8127311391274b28bebda2f8766df1edfae2db35c5b76b8a6fd716dfae293ebf512509d35951fc4e6df13bf5c5efd414bf5353fc4e6df13bd5c56f58c060738c1462be441058b8f0793525b90b3aeff729ba56a19004c3679e443e7074d01a93b1e84de1f09438e8261ff438be6521f16d1af5b52ed02e6b29c55a1748b95a17fc73b52ef8176a5dcc24aaf5410cecedacd5b4acfaf20bb4cb5a4ab1fc0229577ec13f577ec1bf507e3113b1d5f0537c7198b6595f7c8176594b29165f20e58a2ff8e78a2ff8178a2f6622169f9ff289c37456b49e4e6debe9d4b79e4e4debe9d4b49e4e6debe9945a4f3c86098869e82b205324168731bd1e34455a7e20d36b605324148732bd0638a33dc269a815d029124b6cd483a7482bb051039f22a1c4460d80469bfb9250c62a368c7a368c156c18756c18756c18f56c18756c98c254d330db2bd8108845360452890d8196674320e4d910084536c48c726c58221bd62a36ac7a36ac156c58756c58756c58f56c58756c706b5f3a196cad9aa8b6ea67aaad1553d556dd5cb55537596dd5cf565b356c701b4012aad15cc186402cb221904a6c08b43c1b0221cf864028b2216614b3213e1ff17cb787a2f96de4155acb0fe0bdf038bfdd6835f544ff7303fa8106c1d5764f45bfaa7c2a3a2ac60d782e3c15fdb9172af2d7f3373359057fb36fe7cdc5075905aff913d2a7cd307ddffe5bf9756380d67ddf382d44e21fe6de3dce3d38bcc5bbbc51bef947f42bf3ad7e701f54c4d7aeb04b91af8dc2807ad323b6e6f231cc9e4e5e23b0360b8389123de6ef28725a962fd89181ab51ef82fa988c155555cbcf1d2b2a5860e2780b2d18f99eeb5e7aac95a9c5c78eb7aeac954f0ee71e72ae78c52e6525791f2b9742f654e80b277b42bafcf21d72309507e0ce472e646b884baf9b855caacb5849f01693ebf4c53b7942e9acfbecd962b14894086ce5ff4cfe2d5fb084b84c950ab5c9a421aa13cadefae25debcf6d5ffafa6bd30772caef63b9e194dfc426f3cc64200fe1e87aec7b21710e02fc0d75a5913747fea124f82796b2ae344284223ffeef508adf68940c5d9f4f0e2343ab9d4b32d27327b6ce4a3df7ca9779e4d07715f9b78ad787b419a413d6897c84086ba2bfc9aa9c43dc7f6cf79c504ef379e586d891869ecf2ffdcad4f6dbbe3854af6962817b3d41cbf83bf3e98662334a9f84cdf1f9c7a6234bb1554c11851b3c0a94ea5cef7be1cca87bc12bd5878a6cfc7bd367ec4abb4e6fa8bf151f920c64e9407a3e46fc8b6bd49176c45f358bbf2c60ac2950407b487b358cd94f1e328b26090c455910435d47dcd9bb8ff2d9d933c779767b2bab2ac059fa06481e92cba76f6e96beaa1e26e2a200e784f2af8d8452614de36fa8ad96493c79116c5706f8ac0d533379c13cbed63366ab5ea5027230837983cfd05bdfd2b7ee41d69743a5916b612bfb4aa3b6afe4f5e7a2705cf7914bc7fed9d2a9ba757f6f7289ed37a244c8639748e3274ba4e6f2def565523d8036aa06d0cc1c56c6be94a451efe36c86fc23182045cd09337cecc26cfe6c61565f23b9af0e96592445a9a0c72e95d64f964aedfd79fb924b6c131685421fbb50da3f5928f5d786ed4b2a39b3bc281bfcd865d3f9c9b2a9b92c695f82c9b6458852f11ebb540cfd278ba5f23e847d0925d979228ac47ff422317eb2486a4e80ef4b28d9ce1f512c7033b1347fbc58cccdc5527afb7188c752ac6f94927720d7914fe985e4bdbc8a5fbacf1766ef6c4f7c74b542ed956b16cda459ac5215d54fe9d34d5e91e235defc90df8c97ee0313db4cf0e8dbcc168a8bca3693aa967fb59aacd51414f6d5ed26db2a28b69cd1662da7e2f07b88a5210cf0480ad078ba5905961f75b7b63ba970e18d3074ef799ebde215e0104b13cfc7df3c42a12bb93858bbf42bf7a8c3b4bb3476daa2be329320bb6a798b4cd6db27cc9ad7138514350ddfbf3fa942a4a74fcb41235544c93b8953d6542416aa58fff74f3dde43b55649b236be4959d258152688d4d0959527b11aa77d68b8591f6a474051c45ed09729a6dc4675e6f948c2849581dbca520bcc7da8b213446fa1bd2c41b48bc935bebadd0d9c2b3aea1ec0b998e40441fe72ce9e6ec4289d2429e6e7a060e4e35922cf35336d6f3f36ac69654b379ab7d70f2f8e204e55eb47da73f6ffdf1ae45b2662e7b9e6305290f9bc8e036c8ada74e2232445e65d69ec632767e3cd0cb857f806398752b4d7a02b0dddd057ecd98d7a287d3be0af9175a503e350a23e24017f093ffa7421457f29ba7a28b9e88a76a5117447ca41439f2fa4dfa486aeb5febf7a18ddf71219831787bb8d1b56f4df5fd9b0b1dbdb3fdc86d7048650f3b454cf85a76f84265b612be78ac9aee48f8750311b0d20657f74ada51e4a53e88f3139a0de8c55a9d646d3b5ebc41b2af9534a76b5d0b79e66e4f1d7aeb0a5b226b5f09206e5e0397690234db1e3b848822e1e13e44873e4df4a3e72e10d72a480c2d1351cba6855f34bb6696c5215857b1b2b67aad1ae863dcc54fe915d8eb2f361ba3c885b9d8a8247db2992fadc8c0f7ebc359f45c5d15336a30bc7282f2b36b193d828bbd999d47b8fe7aebd686a6d3924af33221bf75ed5b2f9e069debbf960e3d1d3cc6f3f288d9f66e96ed1ea838a3ed7f65fb91ea4c8f90147f3844d59eb9fce7be1140f2aaeec857fa48fec3fe07ae1df6926dbac17f2b2ca0f1de60eaa41b3b35dd7584f075580d2bdacfaad5243dde3ccf238da6b595ec916de74a900d72de697e507f9abae210eb134c504ef6f79fcaff439f5dd5ae2ca4c8447db3b0f970bc99e5b361e2e9730cb65b7617a652ea8f6e9e87de642b35c1e50fa38cbe501a5ef657a9e0794be9fe5f280d21f65b9ec267db6f66ede377dd861365fb836a5fad689bd61d530ab96dd1a9237549af71ad4d21db86c588298203fb7b0f80f9124295e92ea8791cb8fb62427ce6ced018781e78614c584f25aeeffe97a1a0b3a0e26e3ae64fa689a44f06e0e820974bc4557d26737fcd788ffe7cb40cb0692d50492d5666b405b570fffb3c9c853b8f2a57ac927d4c3fa099706e889b1dbf8dcb492f199cd5dff2790f85988a03c896d969e5e83b3d9016f8c157aed89360493ecb5e86603d8b6adebcdb4894d3508faf1791610f0a7a1030a29e2ed8c7fadafcfcdf6e90ae7215baa96aa3e14819cd80fe260ba0ac2e2f10d075256721d34e3edb42c1e4dce95c5b710a45a23e1ecfdfd5adc64b7741c693dd5afb0bb37da25bc5eb4fc6ed3386a67bda8f186c8f864bbb156a4ecca8a389ab55eb4746f581c6dbd9a8cb72e09776edc1f27b7b1268eb95e85643b3fe2d3f2eb5549b237213d62bf4ea4cc761e476315f210e687efdf1fcc90905d65723fbf219f05f07e19d9fcf2dd71cd2b3ed2fbf1efd1f192f442177ea74a5d0d94a27cff2ea7479af28753c69bd9484ae701a343685528eab8e04fc1f461d8cd76aa37fd961d099c6f732870e6569e0a4c0af30d8c5de160e0c4ed858a8c8d862dab60ca1de1ebe3cfb20aaeb8a3f5f9af67b20a6eb9e3e67afc4956c19c3b4c649dcb2a38e28ed3e1f59fb20a16dc31fa38fb20abe09a3bdae602c92a38e58ee7f615a37ce18e3f5e3746b20aceb9e359f3c54256c13177fcfb6836975570c61df4e3734b56c105779cbc9c7e9455f0320a163cc7b20a4eb8e3d6a16f65155c46716e2f183f2fb8e37d67c8327dc71d5f2f5e1359055fa3b27dc28cb91beef8f3f3fc5856c17beef8fbc3d55fb20ade4494d6119555f031aa2aa7f34e56c15bee386a7aa6ac824fdc31bfc617b20a3ec4b533f94356c173eee81cfdc68af38a3b1697ed4b59059fb9e3fce89d931ebdfcdbbd5b869aa31090b5c8e0cc734217bd1b9fc011f5fc5b396b0169d37ced2ed54326fad74cf4ee50a1acc9956f249490361f2a7da42dd8e4df0448fb0a900687dc4ed7c71a049e0681af4100350866e00b780566fcfe4b8b851d00a4cdb919643154eca6de06179ac37ffd826fc07f79df738d80736dca6d29a06f8273ed66900b30713518fde9236d1c176e960b326554fe279ff6a506f92fef7bc502f23f7d966c8e76eb6a4ef4278dd3304c1dcc5d6dc8fe8c0afe472ce8114f6b110719b26a61fe7936ae59a0eb7219e7609ef9187acb6ad9a66535c18536e3bf6a9ac77f55b4736dc87fd5f1c6fc57450b34c27ffdbe09028df23b4f19ca54043d655c9ce65811a85f18e14b1df59c11ceeba8c78c705c473d6384b33aea05235cd4515f32c2cb3aea09239cd4512f19e1b28efa82115ed451df31c2bb3aea5746f85a47bd61849b3aea7b46785f477dc3086feaa81f19e1631df52d23bcada37e62844f75d40f8cf0a18efa9c119ed7516f19e1b68e3a6784791df588f5cda35c0715a8af58b45775713f33c2e73aeadf2efb5745a1808afea60d02f1c6d7f4c2d7fedd0cd2495796413a83e98e0057f9fa8874abc8474b10fb12b410093729a18b1d91f04d243ce367ab73d106cbc1800fed033697590ed4c3ff0b0000ffff73b9357f93c10000", @@ -49,6 +50,7 @@ var _ = func() error { "da94ad6e584489fda9362222609833c7": "1f8b08000000000000ff6c95b90eb3cc15407b9e223d8a186cc0a64831c0b0997d314b071806b363cce6a78fbe3f5214e9cf2d4f717475a5abf3cf3f232045b3fe21222fd0644d8401fa8b12a6a6a18b248a701131dc3501624d8766ce5f8dec17c149332150447f567c2dbf4a2e12c43d84a6501c720003015b4f4280a629a91648626b3406ab2b86b42b1a58ca3b38ec001e66539ce64f3bcc9f90c93bf8fd8769ff65c4ffdafebf4c14e15bdb2537d11f63aad55b61411709820b258c3587807fd6c7a388b126c08761784793520ff0b35925731d0dc989dd7aa6be50aa0244cfb9fd4836952fe89ef2a1df4a364be452a70741f0a5c7acbbf4005fa7faddc405e8e6a057efb7eb5b7db0de6c40253df4ba47f08baacc29add3bc05246fa288b8eaba863febd09cdd4a3265b217791624b7be13ed03eed5be7ad5f77e4e55da8e95de144fc5648fd7f932c5afb57eeecc4c48a35a977d5e24660af32c9a9895ef579256eba9b5526a16d5dc2f93225f3635ec4d9fba7c31f407ea566d59138a4a5d118217f8315d24532a0e403fadcc4e9bcb84cd381bc16c0712e3a36797caca0d34c29eea116dccc737dff6aa63917ca8174202f42c87a079fc94e214b3b3a437aaf4356da666779915ff3bfbb357f76554216c21ea5132e437ae4234858aaf5da6856040e60cfe7b6a6dca84e46a05b7c6483d06fa4e3a1611b7cfacf53c07a6a93e355deb695dd8e8c9450dc537e07ca8b44c1897cbf59b82306fdc6c0d64775caf00678cd3b59f12756e49da7ef739259b66afd2632e64ad55f10d64bbb88a51be19337175657201bcbebda249ef780e84e1835fe2c9cf122a2117a4e6163874bb6c77b609227bf496a2aece288d61d23d732c132aef4adb418ad974eb741d2d5240951fea6e5d41a47558a1f628533f7a98b630f0f62be6f7c07dc759a0e4664031cad3237a714af0d4d2b73739a8fadcabaead9ac2cde5d4ce7ddb5f27584a4ad1cf84266da51d1313f81f57bc851bc4a600a1d210fa0f76a6682a900e5fc8750b5398c5bffdc358a06a87102605da1f5838256809b89debf6ad10fc0e04e82e3284b6083182af7b443d438f2b61b130ae10aabf48fd1db9cd8af23af359fb6c35c64379860abcd4e35d231a0ef328d1a48730380fef89e84428dd8d4995c89defbbc123a427b339d729d364cf3498abd16ecb4c760e7c7c63a9cd8987f60587a318ee3b6686d57a984dc0f792079e6a6c4dc592aad3f023bfcc27bb7070a73ee6aa7267712aef8c2b8394f95a44f5414dc5ca7805c88d7399a59cd77b2b676d0c33bb0b3fec269ab4350f6049655e94f9aaa4de17c1e8aecad143b36657227269ae5f79bf24b144b63a3f72fa39ac0f331e177cc86dff391da7dddf5cd84966cb7b431cd3bc42b35b97f0c12bdfae04d8e21167b760206b513fffdcd01c0e25c75fbba205447155dae6512cb0ad532db402b3e7d0713a13756ef0735f1fd621daeebe1eca12959509b23a455d5de84eea1b3c702b79eaa61d742454d37b9377dcaa1c7dec9b32c9e8cee2a8654f299030125e5addd1829baa26c6a6e6cf95bb0d16c9b7b9fdb05c95619cfd39f2f9fdf78b01a43bce178cf51831b5f008e7df9de035cfe9168ecba9df903497244577fe679dea3b3d86cf6f2f97ee83443e5bd8c20f8dfbfec90e1c26617af5ce5b13e32c26544aebb59bdab6e908f36bbb523359750c9e0a900a6c2766f41e6bedb779888f141c8a90e665dd834dd0155d1c485bcc094d0736aa1df5f62a9fcc3ba0e9c6d0e7bcda5e5d85a96f5f15c1661443be5624680f7b51d5f039a3f8edb91cfc17f1579b9025fdbd57ff0e0000ffff37a76896cc060000", "e4666d23fc1d13ac774a51ff199d9d72": "1f8b08000000000000ff8c565dafa42a16fd2b553c1888bb895a5f9636b9994ceecb6426f726b7df1cd351dc9ea2db0207b1cf9cd4f1bf4fd0fa38a73f92492a2904f666adc562c3ba1db574ca688aec726baf2cb5ecd21a4bbf5576a5418212b6884a68852de2122a618ba4844644d08ba2cc9b8f8a77a89fdc296fc29099420a55346519043defc7e1444d21cb222a19f88688729f5aaf945eb5ec8ffa0b4ac77b6b9c712f3df25335fcf1acffb4a647eb5eb8acba8eb6a05910502c7429da42976cced00541472dcbfbdbe2ace7c349b58e32ca728b6eb47a35ce0878d5f7dd0b1da17a7d2d4a068eb2e9ced6d10759042ba2dc7e1c6f396d183e469d180b5b8216eb08948873f5d1dde6a93064d15a0853b84279ea548b75cc721d0474e443df2989d47ef800310314924a3e08e73561d315294eb3dae2328111974d164d307a75ef38a5df15d5525dd8925d837c9be37f7b63dd902f107d97b8a8cc4297ad63b80e669769ba69823e6816d6dd62c1c1a32d1938de7992f7be4972146fbde2d7b2a228c109536099ab967afa8ea9963a66977d774552b21cbb012f0b378dcfab3fad39ab01e93d9b05cd2e4b1a5158d0e5c4f23709846633b31194688c1ccfa81d97162b87bf77e8bf2819a455bd232c575c9e2a3ba0136474ed879480e24e9dd18c4ec44904926b19048a0fe8fee69c55f5e890126db444320f32507cb0f21dd7ab6c92f7212121bd441991e67c369a4c0596afafc842c249e8fbe3a6c10477f5364de3e3213dec76494220ce489d34986e36dbdd7ed7d66d5c1f9ab82590642469abfdee58c7cd6e9b44783c6eda5d42e09091e3a64ee436c5a88936b84d37f551d604d28ca4d13e3a34c7eab0ab8f7585b26a7043e09891f470888fbb6dbcdf6fa2e818c968571d08c45146f6dbdd2e3da4d8b4715b6f25cafd764b208e3392ee8ee94662ba4fb1ddc4326e0e724f209e816d36f5264da263b2d9a65bacb1ad67c221e15f06325164303e74f2dee446a3b5c60adfea4cd5083d761dc80e2bfb69d905dab2ab4fdfdbe632fbe66a131b0494f8782284b0dcd785dfc8590d83d24f245b3afce236082c77957d42f768f9ed03395bed770f86927f9aaa51fa69254fa3feba22218664d556aac386ff5b5312ea90642b128e216184e5724e2f34486ef13f230e4e8ce08ab8a4924db349bf19d5aca2699a89b4624077277753835d467af1793272b51f81055ea62636419ce0d6bbf507c146b87bfc8455e30b17eae6ef27d53554dd6bc5f50c717f862d9b40f2b340905cceb09b37ee050b8e5d2437bec95e5faff5b6c15669bc55d979da05f578465bd51d66eb083c5437cdb9edbbd34046bd4437642d3c45d3aefe7a39d7a60b82e59f3bf397b34a3f7daa9e82e0572bfe38172edfaa6ec48cfccb3463876462f0ab60f2f9330ed769b7b075b4c075efe8cfce8a036f295f77913148037bab9fe81db8f5a3c4cc4b1171e38441e07ffcb1d2236871f015dc528ba8b73af3e924b7d4fd0aba03d2605b8d9d23df2bbeb0c0894132031a665d1e2223bb5fc9feee442679431d68a06f0fe19b1a3f315e2bddccc840b3fb9de8bc4afa27e5fc3bbebfbdb1f32d2dbfa29fb29f0cde6f188fcc02a9085806d62f67bedb94ebc4ffebfaf7013e472f882fd2e6fd4de44ed63cafa4d183e990cfc7c997265c8ea712cf4a37e6993f63dd57f2eb3f06a3fb9ff5f98701b4422def855937e54fa8ff141694507c982ff1e5f1e1735722caabc7dba70a4366a92aaa7229719d6873ffd0a045c9f2ff050000ffff0b1a4df969090000", "e6bf8cc5523d585df369a38e0dfec40d": "1f8b08000000000000ffc4bd5b9325379226f6debf024b99c924b33d41c0dd711b0d67358ddede336671b46baa51caf6b19aacee2e0dc96ab1d8b7f3eb65fe392233c3719235d28bf85044e2201088085cfcf2f9e7fff89ffef6c3f7e12f1f7efafcf1d38fdf7c95b6f855f8fcf3fb1fbf7bfffda71f3f7cf3d58f9fbefa4fff147ef58fffe172f9d56f3ffdf873f8e7bf7ef8fce9870fe1b73f7df810f216b7167ef7f7f0bffefed38f3fbf9f3f5dc21f7ffef94f9fffe1ebaf5fd56edf7efae157fbc76f3ffcf8f9175a7cfdfd6cf13ffdcbb79f7efcfc0f618cf0ebff1e648bff31e8ed3fff4378f72f7bf8afbfdd43dad27f0ce3d3771ffe21dcfee55fc3ecfa7ffed5e5f24fbffac7fff09bff3afef5bfffb7ff1c3effe50fe1bffd1fbfdeff6584af2e5f7ffd7ff2f8faebdffceb6fc2bba7ffa23d7cfdf57ffedfbe0a5fe968fee1ebaffffad7bf6e7fe5edd34f7ff8fabffcf4fe4f7ffcf8ede7afdf3dfd97afb5e16ffef5375f7ffecb1f52dabefbf9bbafc23ffdea1fb5ebbffdf0fd8f9fbf79703dc518b5fd57fff4ab7ffceec3ef3fffd3af42f8477dd8f0f1bb6fbe7af5d497dffff4e1c357e18f9f7efa78bfbcffee2f97bf7df35591b8c9577ac9bce8f2fbf7df7e08b3f4c3c7effffecd57a78f91c3af7f7affe3779fbfc22521fcf9c78f3f7fbefce9c34f970f3f7cf3554ef45578fff9db0f3ffefccd5722ed68f5dd875957e4a8c22dfefae1e31ffea84d633cd57ffef9efdf7ff8e6abfffdc31ffefcfdfb9fbe0a5fcf11fef0f1f3e78f3ffee1f287effffea73f9e9f24beb4b25ff1efe5c7f73f7cf8e6ab1ce39ffef66ac8df7efaeec3375ffd8fffc3df7e4be53fff2fc70fa7fe74f4e1bb6fbe0ab71479e3a0ffd6d1cbd6424a75eba1974d42220a29c5ad8644656b2371d1b62c68d6b43ed5ad849479eba1d6ad5c53968d9e524d5b1e29e74d0251d286bd6d14a8f05603e5b4f5f8f25fb2fac1316f6db661e95b094471a3594ea56c7dcc72e42d076a6d6b21a34b4a5b0a95b73228c5ade8605aa0d4438a79e3406497d146831a1de5c0da22d1c6562a652b434b44fa5c2469eb8172d9e83cdc485b0a94d24623d5a6bd35bc93265b0ea9f42dcd72c68838ebb3eb5d39d2d602272d8ae84be3adbeee7b70e95b0dbd6df9744b6eac1f84d3b9f9515f8aef06f514f501b4cb1288c5bd751d410954e216cfd7a6ae2f4f1fe9fcd84de7072d63d3efc96bfdbbd4085f49dc9853c6c759eeabf53950eebebd246d2feceeabd3519fab6ce975fdaef529e85bcfe7fe595f3e7174cf9508cf4b6593737d2a983872ee2576f49ece770d29ea3cc7b77e542fe95cff24d486fd26cc98a62508379d4049a726ca57cebce5c145df80fd3acb54f065adcc9b1c6d527f69139b4e6cedc1cad7c471e327aa791394756eeac4e5a6335412bb37c0296df2a05ee75b1e6bfd2525ac545d1297ccba245eb697fb0deb2b7011dd1c8a7e242e517fae09cb3c86d4acc4bad46309dc7500dc2430963cf788558497d2b31f2eda3c7a8c86d7b12c002a1b0f7dc8f384939431aa887be3015e467ebf71e7c0bcf1a0c6e152f5972ee1423a7b8b4ecbbae5a105d1a5acaf39242c76d66d43b74f1a599ffec25d3786dab49c88742e24f6b39fb63e84b417d2ad58a26e75a24b8e3b9f97108675bf5162dc336d326699ab6e07d8da7500ba7b619762ed9d0803a3aebb1de95448a453cd764194874e7839ea39ce361c48f4aa246d50d1a9a7b53550e947db4a477f83ea737f813ace156e7acf46e8a36c75a792318564a78609d4b067f7883db507aad8efa3042ae8add7adef84579d5ac438138e9b8645ca21f58e67d10308e541c44739e8714121353b2ff271c79d58b7557d7f798e4ddf19cf6fd9c2ab777cffa5c3f9fdb7df7ef8fcf9e3efbeff70f9f8eda71f1f1ed35cda978e695de33da4ae4393a47bb7ce8a58b71a2e3a6896aa9308c765c6bced5bdb7579e963d0c6bbeeea3a91e360ddd34262fd9b396fd8e97431a2ac2baebffa6f58758ec721894db4ebbf9794cff36f276c36247359f1eb8e42ab5b3f55105655ea49e74dc5ece92638f0964f2d671bb61da2d816796e51f296f7ca3a35b6367ac64cd6f9c8d8ae314bb3e82a90bcebb65e0373dceaaedf3e05ce7a7dd2432370d459a25b72c6dcaca1d8f26da1e7c059b6bea7c2d827ca4895b0098bdf24d1af10e6941e8ed89c69bc2a07669d77ccd8a8d94a69e81d08b7e3dcb085e8fad4e35a0f611da7fe5b750defba43eae185f99022649d82bb0ae6760eafa6cefdc6b90796b2d1607b6c2d0789dde484a3d4eb968695051b82b516d12175fdffd097d7ad26b6f9a034cb76fd2c978e17ed658f82a93a4773bfe9f72fe1a2db44eff87fc8ba73347df45eb006eb56f65ce772e5c190514b0aa41b53c529abd3b70c12ecad29a42aba42f4ccaee7a9a76760b8e8b8763db36b685b1bba29d67081741775e9601c2f43fbd24afff3e74fbffff98d25de1f2ff122f158e2baef849af543d6b2657df41628c7c03aad0552aa8a5443f7323d1b3b1e19f55d1733958433b2ebbe6f676a3771a0e2fcd39ef0ff2198511223fe2d3ac7f4aa20a9e0ccab1b0d49103720c716c2fad3dd2e145a56a7eee2a350dfa2abd7272adca02fa8905554f80a29653d21a9e9f74b3ad7b36e40a76b31e49c384026cf514f88a222b4745d96597b7b7963b78c29d2921341a54100f6b29a547d583def861408cae839abbcca8c898ec358cedded2a2715a83e67c9921b0e91a4bdf2f3019a9cb0015187ea59fa1c9c30a3f5a875428b295ed51ff1110712396166306405f2b26dd15e2a796135eb94aff12c938e9455cc28cd8bb0229b7d88a5bae0a39c3bc1f958a2bfa5e866ef857e0849a49f33b991e887cb6de3536bc93a632fed7c4405c1ae70e9e7f36548b5538add59a15348977974dde414d13e6de5d44f56194c7711d7be305ec059bfd1098f27756ac92842fac6cf6fa588eea2954e1f93d0730f55ce8f3f0aeb3cade23e44c1be5fbb7bb58fd7c48daade92ca79aad03bca90c5ca5951213d2fb55eeaf931872a5e3d10372f6d6f2d3437425d58c54dfc8b6e2c1776eb5ecfb8f4e192382415d8b29f17dd57619751c1d97d85c7d523b1ca7eba692ead8bb66eae5aa57fdf1a9a640f524f4f6e9d645d3e79a966fdf4d175a2ca5fcdee75ab789e432d6e4698b856dbb97a5711d74c18fee31034497663d15d4842eae286cea602f4721ee4938ad7f17cc7c7d3e7174fc6ef1ecbbda9c637e4de5ee6a148d202b5b8e59db10855fcabd7d4784bfbf36ff79b74952369e8ffb38aab7a6cf570c92568ab4b2eefa2fd10b5ddbb94a04449c4cf22f19d5ec9a42b60f6a57a9eca282a3b30eec5fa4ef7dea1d6f6a94e934a825a53d2551bc8cea5ccdfd1c12fcb0cdffde5c34f9fdf7fff86ccf0cf8f5f0f0c91cf32832a83e5aa6ad7c8b0009410838a82fab090db9e74958d182ea4a7bb36ba3005286a17a62b3a193916b7bd69a39c9213dab593f6b07ee3273d20db587fd4e148d05b140cf079dc2af8351cc075ab387f6cabe921c5a2220d84bcae32820af63c1a04f9ae8b189f58a772d3e55275f68e52a1114240c850f12864bb5a358b29164f61a2c1b6d774e74c4115cf36122c8ed4702617b35f35dc5a82ce7c952d61508475834c7d8595c4ca49f45d929892624fa087047459126c69301de020135c2e0dc287a92610d8619831ad441b4493d1b1706d86ba832ef5aad2f27927d5f79060810ca9e7909d8435126c2b7a209f2f6b2a49ebc9ebaa552ed22574ee8432146f68405065f41fd5267b5bf448937ef4a9332490a2bb5f85c1340fddab3a547c1d81ad743d0420e4aa303e528f50bca3173f4d79a70859fd7936dd6f52a0b96e7558e90211374bb8e88c10a91ba378cdb4c9906cf52c9025821dee5b1e9c03764d81aaacc3ce306943f96baa82044ed82a8aea4378b8ad0cc9b022c1ae87db530ccf23d2c1e9a784f6f394b3cadb657edb1cb44866e39112b1a8371edaf7f9a895693e540d008f44aaee48812ea8bde125ab50df039696c0d62da66436a79325bcba264efa9304534bb7c370106c8bb038a39ea6aa448d618d459b8ed9ac52d9a92b9638d56b81025c61ed6f4fccaab35b0d976456ccd33746ad64fb1d6fa2595d86fa532296507693166d4b76fbdab48eeaeb3ed7676c4f6bbd78ebbab6694b1bfb6e6bbdfb660fdb9cded3fd26a92ec668d8447b751fad147c7cc80cb08dd27265d4a381f1e593108cbaeec3571893a9cee54563da1a20f7eb1192a71428117a66ca43547b72d3a7cc29a8d20a16cce3a7b8df12f4adda7401255d115577f5a66a3614b6d6e60120a3613d4177ead8e4cd7815e17d52fd12125d820eaaabb3d9160c2b9e40e9b09deeac4724ecbcbab93875492036f5e83520aed8809257817030a4224e26ad303692538df0c4bf2c0ffcfef71fbffff8fee70f3ffff1c30f1fde900a7efd25a920652cada4c795be2933f6e94ea1fb32e4170989d226e392a0ade2171c88a9cdf352bfc1b48131b4ed54752732ab831eac3d70d58d84c8964ed683305083a5e06504f79baa55ddf6902138d612e62ba71ea0389398b751cf77a234c7abbb2e76dc023b5eaff3fc4b634a5c6cae051caf98a8fa7791ad0f3babe099ac30f3e83d740a5d9806f759322126741505ad48421bd43df8b404b5c53c52e1d553fcf227fcfe0f9fbefff8fe8d6f37be64e825324b4ed6f9d6a29542121517a64513655db3346619ce206ddd6ab00e5a7dc7c9960ed6b695718d95ad2faa281773d43edff97ea3aefb7adbda4eb6bc74468f6950af75ba543998fb739655167f22a963762587b3a00433d0133e4457f126c31f0cd14765f88e93a307ea98890966ae0ea129256dd9f5e352c4b438c676bf71eb53fed5d36c40be350198b19bc4c0590560aa2afe66b83be78480b6abe22fb73e84f4436bb540f844532beafb7b422f03c64ef46bedf54ecf23b8df7403cc81f51d8d59b6ada8e769965749b258e90aafe9503d2a1dbfd902c335b3ac7d3d71cafa6c5693b031c3c56c1a91ce485d4bbcc9a08c3b25f8694537c0e363f7a33c1d1ab33eaa8eaced754947ed65a4066374c246d8e0f64ae688b172def213c675bf25f38377d978578d8aa7672e41f660e858aae5d27319c7b6b6d9130e4c1514da806517fd78c76fb5cf8d1dab601a24b48f10d1f9f065d95e0fab2855ecf8f0f050c55e940c7a60a63b4ca96c02a76900d8aa6d7167d3ecac05edf3f9003ce882e522a68d6438c36b78f506ee73e90aface47114d2a0e333acab56ce99d361198f6cf0f6dbd2cf583fac37a382e3ab6d0a38cfec72c9b16053d48fa9c0a36b25fdec57e787ffff4e3e54feffffe7023137a63232bba5ae75616cd1e39c8ec9e214f3b670d384228ebfcc7fe95a6a3944d4008308ae9c95506dc3d6db1489200ef015f33ab2ea71317ca1ef62638f532b60cd63990a3cefca2e2345e874ceb2e5cc059257b1ef03a8743c6d497040d0c1b9c745dfe9c55a0560546df64d123308b17a67ad223443c7802fb5a96ba56ab949e9ce94e5b8f9c9dc94dfbe690171b6a13a866de3056bb33efe6eccd5e15060195a6cfd5e8501c8022d4e44c7839f9c7cc7051372f6fb177d5ab2cef3040ec0cdabac73aa9ad785b782fbe8937b072f5700f77c9e0cc5e4d816fd00fd97f684ede649fbc5b20152f5f7a584ff2af61797369b1776e74a52e381e6969afbb252ff721f39fbaf19129da7a3043804a0be007de1a1cacec3f170e753805fdbd20fb571517a22ee8b9e391ea972a91e9debda5d1b399502beca8b0e09cba8160ad0f3f68da52dce180dff5a089d00fda13769bfb4d75006e3c12d43986172d4da3204db45a455986c9c5dc0e578bce17c858c9b681aafb4a827e3dcf8f0497a6415be0852b0972b24ad95c68ea2684727f2eab529c227cbdb00e56b4865f2c423e33c01c0e09d6ed1b9099296107dbf9b5786d756b03f292fd04d7a45ed1665177a5a7a4faf040851e3325cc62b362855c8c06e61487daa5b5fe706982eb682ba3a759cca1b7d93803b754670b7b2128e34095d9f78410e296092e161bc951ee2f651df713b1be74c8e38698812c426c3635dbd2d348f03f93195e7232f50312a900c85107acdcc17cba84b1111c9294aa3956550e2580398a4cb84b0d5421bbea1cb583e270b7a63451621e44641270342d7ce82832a042692a2d5ce7991fb8a9ce95aa4e0d860934019bc726c0982edf5407511527eb34c63b6956b2897dbf25401c59f01a66d95e7a02762a1f984611bd1d1580c03afcb70998828ecfd1211d1f0806d3e152cb005c5230fba08a7afa2ab3f647e622609870fa2c934e8731cb101e533f748b04dc816a15d0db1aea0530531c9fc4984a533950c520c119afda1a01bb619687329f08f89261ab90b26d11502f20f81e65605531e9cc5931ebcd5e6ce5de8f3797784e50a61a5ebdd9fb8d937d0f1e0c4018be0c24702b5793bacfb341b798a1226e995f58e750746d30739bdf387545e7a1afcdf509f30c555ada0b2c68de2fcb9574d696051c0671d83bf812362273fcb9a3a76458fbdc680a0e8cb5970cf3e1da4bc61ebef60344918ed2d54bb7e9b2b4a641d51f970c9008358f9a6383fa2c061b48c5f83ebe9f3635273ffa6e501c7734eac26140a37c7bb3c7ad4fabe3619dcaee69db4435bb7e6080d3a776cfc53868f282a76182a57af92a30c769bd7b9fa605aeeda36e088feb1ff663e0914580d57a1a3acebcd433c6ffba1fb2f6d878eada7e30f7653c5025c93b9a792eeaeafb01585b7b5b11ae0d6a282df5096bd4434cf5bb43b174f550268b7f3fd43336a7f3db81c20a1f9013de2a4d5b89739f17ccf2e5ed6b4d1dba29ba7ac649b66030707a3dd84988e2589f9512a031bdfa512640d9f58477f5a27387bcda40f03fe8cc752224f19c0b4e0366c60c4409b33d4dcf42c57a77a36181b64b8b3e1127fa59967750b11efdbbe109bdf3fa7834cf807b2620e19627adba9a8b071a9bc4a1aa887f63569fbde06dfdd40569af776dcbac01b44aebdd180967515bde2f996cb1d6cb1bf57913d87ce4416f8c035bebdd8a9018b876a759eabec6836b75f0065e7d45953c46a198001d7d9f557cf483fbba84b3d58ddb7b751e3cb9ee3bd1b5495b1bab72a8673d4358726383caa1fb947bba86d946e2147295f380145b6bddd944260bb2055f64583066f9d101814d021bac8abe844d1582ab18d6d45cd5d85413f9690aef07b67a575f60cff39b3f71c5965a20d3d1a066e660d334fd566ba62b3dc25d7d76dbd43b6afe58a262185d188dabd3d00701aea75aacbb0ada30e441570f0b59ab7a9446b34946185aad94719caa94dbfd8403d8885a878bd3f5daa00408de41c371b67e9d66e63b2f36e813f0c3fa256ec8be7d6df35877edabf7ea3e6853ba7e65eba7f86d701509a8c4f06af6dd6fb0fdc1aed74731583d74b4b29cba168953e2ab7888ee25a9c4aa8ee406f32c03d2d10e23721ab934388928e40cb11e9319d6385c49235bf002eb5e979399877bc888884a14012a056220c1a0df011786555cba998461f2079824256d018333a47f2d57d82ab505d41c788ac49c6b780f7a274699478e64a59021271c6553d5745fcda6bb22f22723280df642b2883cdefac8fadc67dc43ca21abace06bb71a72491ed791646b2397ecbccf5a9f43ae71de4942aede63aee34a23b7057901c52937f27dc2a8911bfb31449557b4fedc7f6774e37097a19590ab4702a87a34d621160eb9f8b6a29f26c35a035c4206d81770bc5c744b4501ca6fc4cfd03175b9e62281fc3d7229e6103a636032e29da8b89beb2bcde8cd55fbc75421f6dc612deec531394cc2fa2d58a76756212e089d2f1fb9573777b287d096286e58b53a344541e45baf6eb4c56c0198ee051107298a1beedc1a623b0ffa49378bd3d4b9dfc4d05866712f70fa20b85260ce6704428978490a7ad790158c5a2808fb004e46e890c079c495371ac23c0d6fb2c62ad41684168da2368465a5698993b4eae740f1446f2337b7b9442fc9ce7ee2a263d9b8e2a2cb22de15507e579f10f1b7788a10a025d1c751eadbc843c86b119c3a80f04e3645589c78d8b74a9b438a2cb269dd7a90e538515dc17af192afeaf9b24ad6080090ecad6fe65bd5b9e162431bd0068bfe991a221a17d74642c485ce1f770a55d56984bd7092aac188bd9d22550e425e17d1d619b34596faf3a293e4013e3a020b35f2d70a6230c903eaab5fc8080b5aee9b9636ee098b3b59105ee49eb614b7473c6ae34f8107f7ca1df82f2ff7a66ccf4e4b7b8b755d1c302a586126fb00068b645a106fd2b10bb8b9009b8ce405ec033c8314981a11db2ed5dbf652d583446a7d30bfdc1b37a7032cbfd2e0ca69cb418073d4701499fd57e4e8419a39b3df6b4ad3832dafb6468ffbcce622a9c99de55aefed91ac9244f65aabee53ee087c705f406001a0447964c9730fe590d7fddbdab3774dcd6b61a59f6d16bbc383f1d0dcf14726586875a7742d18ef864326440379b4de301c906a804ed678f6cf739066f6177fad20ce9a6041156886a433dccf0ba8447508bc3624c0cc5ac492f82ffeeab4fc77f8f31f9344bc89c27f012521be06cac8a0d8a6ca95c37c4c157a514c05eea903408c5044034a57530d7433a56ac2330ca240845b2462d21db8d6aded3ac118a27b7bc762db83eaae86312c4fcca08b90640184b85010acdf10f251808b422974014e54ff97d256f7647019955046022a7b9a8a4153b19401d01194b3015aa10396f0ea95dce7fb4160e798e509b862e840b3d4800caae65dcad30e43dc8eceb86fe909bd20c81c06d7c1e63451dd536b80654b13baff0ea85f60e5fa5643e9434f4903c3eb0b68d110c80461ceb094468210395c0c8cdbcc058b707a9afe7b445a856308f71ba423d22d1a7089a4afb6861204d6d3a43fc0ae7b41c80d96c0057063906fe4adbc13bcb46ca87f44879521f094190cbaa519635b6350797d98e1dd64f35c0320bb9c116d652e7b7d5c18cf74fce6fbec98930942915e0d0e0cecefc1b659bc298bb0147d36283d560b44f1f19c5f584a1fdfc6f7fde68b4b09883dcc51130f53393cc9504181da019e790014c620c580cb0c2abb0eb4c2c14003c61c06da1eabcc805a70efb14a8ba3306c1d122a0c245604e740cfd38f56612c6f21018acf782d86994119b61b39ea3b22cb135ca628ab30989ee09a85b79f00d435f46b0712bd2272a00d5300b0f8e056030813a54aef703f9dd9499f0b28cdd42c004537c8f3a17d4969627832e01e4f97847d091597847da7ebb67221af67728ca81798b3bccfe882e810336958a88c7e876ce57742565b551740db3a0464031743ddc3577d316bc22ceb66452d0e619a5417bc1862b0711d93e27e4b16f5aca7b615935929cc25cb266158282e0d0b7e790e6bdf0a7e3563155bf0f35369430fa2f33bccf884885211c0f6f179b43812fc78a84d00d75720769f87f58b4be3c7ef7efaf4f1bb3782bddec02dbfac8d66e71d6ff90938b1d1fab3e7b762e6c41800984c310e7323c71874de24ecd2135ff6843e06660fd05bc58e20bb966a1ab51a3cd030e7d6eae5eef75b4248432b006500ce6238357d2b19605b8e285c215aee2a7812c247c65184ff2222ca5c3c04e9a8dfe8099d90d0569e70398ab8a4c3b39ed0553c5f3eeb8fcb5927fd606c74181d035783315b519fe4894ad601ebf33c69c5fdc6029f6dcd5bb9aaf8324c86412008228ce12f2d8884d2bd39ef491892b74ab9498c2a8520196363c77103d281245bdacdc93ffdda114c335d6072eef37421ec1568b1136c6d92746dc6d91bc78a7b241cd964ba03e80f00d5194c764264b8ed17e9114fb2d6e389efb784b3830d4e32cb9854d56ce5466683335fcb23597cbdd5e7e7d679f6f14e7f2fd34431af83a171f667f5761f6c35afee7fbf1170e83698a38c793b91c4e9404a9f9f1003d3e7896bbde9eae77aebf341bd3ec0837e8c7866bd2f1e0c637bd4dec66fd1762fcf75bfa930e32cdf350d60f4b01c012238ff6ec7d95aff6a9b587f9df817336aea16b1dc173b88996831d93cb4d0769407f5af3698f5571badf64bfe291f8c81ea1784f61ffff0e1fbef3f7e7e4c2941f10d4a89970dd5586188e107cca0c481f6ca9d6658473ecaadeb8b44590cf7025099c0aece533a6ac0b6c864a72a701378bf3c3456e8773a9bb26e68ba760116427c5c30609e4843f460b63a685542c646030dab1780efa2f15c85043d71920c1953180b4e49c40720e63e89cc48cc327d06288f64a8799edb3ccd400214532bc30a38e83a705b45a5d50e411e8645a3a9027818deaa040d01c506035109982fa6d55c8a71af142d0d0388699d209a5e9f1d01ddb03268a9e917c1d3519cbbf7fc6af71b9b8c261120a4e90007dcc318adf8f838888e5569d1016dad0d4258c09875942162cc7231900b8e2ca3df4b0644881bef64211efaf0fbf368eeb7f44c3c528795c5d8bf10522b8867854503432ebb912e99eb91ccb976c4a66e8691e0239213569c34514f2b1bdcb1b44b783586d76d7470315094a107101b5b54841883d0432beb7c1cb39866300485c53da9f3362fd543e5e5f2a075eaf3bc7c2e1b9e2f59d814460d07840e6a0ef37e33bf62d2cd0c589470819f8972338e1ac3565819bc8a34eb1338def4a38011483fff803b428ff9169a5172e51981c0561e29d589c0af86b90c166584a261392da2b24e70670f0805b4b039b8f0e1c23bcf34b480828878b1aedfb2ebed8a4a07c58853ce262c2060c185d65447009f0beabacd48e74648589daa178d84ee674c0d21b8dc09fb043ac90c12b4694743680088011aec2a19a41e3c66d94c2cdd6829e8288221cd4239c4dfc2e2bf0dbdd82625c4b022f429c26b4c9167944ac1a448e0332bf800094a09c33dd980ab74d31d318e9cfae24285a248ebf2889357cae267ca6036e8af851379223f6893b41a7f1ba6a27769587bfd3ace345ae4613dc586b8c9a51e225df20b1796970ca7415cebf115f8417b8423b9fe0171c98b53b993aa7e752134ac76e4f971d63e0d3ede7ebed5fb8d6cfd08ebabe2234caf40133b422e295b192b5bcf395bfb62647a7932469ae7b980b58327109de0af4e6ca179cf77fa92c0f0d3dfbffde9c3fb9f3ffee5ade8d13718615f78a80a36a5beb5bd987cdbd256f602ab4eaa7de3bdd88c2d69a3bd181b6ce12def85bd395587cffbea7e44ccee9ebb2172792f1640a8cac45e8045695d1b14df61739ec53dc33d82b8d0733d551068ed8293b5452dd634db963d4708c8316ad994187252db9ec5bb9b28f27986ec457c340ededdeb9afb4de0c7af65cbbbc0cc5edbc6bb142386935d1827454783e7b6f75b2aa046ea7b8256d8b316416c96556132e148cfdbdd54539530478ada1611fb089e027a2e173d1da26e3d88728202c9a1a6804fa9a7086c873a53556f0027673216aeb490d45a58b061daf5a389697de73562049302b23c02ea42b7c4d3cb336c3b0c61e7fe81900625a05bbed886eb1272622ca3dedbb093716535e75105874d0da9b9ed61a7d22c64f85c6b91071ec50912417b63aef76234c9e72d9b7615ad2c84249feba94e9e1972f5d91602bb6e74380ed94c3b821a838b76a29d01ef50412c9eebc139985a77dd00a4186adfb91a5fa46c65e75cb1c4cfcb0361e1ee7c4e5bda45b704575f7661ef594aa5ed12abdf324ad964673dde4ff5fad177667f4b7de07df5c634ed8440e0d378eb3b014754ea56f66351dd6f530ce2b8a51da1757a08cbb0a01789b60cbb6a1ea1644c6582a42f808e182b36e2162d0ca10feaa19b157bab00aa80d80c2137a382d820aa2c09db92befed60236a39460db4218edf390ee375d780d13aca9bc894556969765e12f82d3bea2cd7927d4e1eb023cbb1613eceb89c8bffe4a9335d316be8b5fd3b1dc6f094f598adb8b7537451c15e2450c208520628409b5e53ecd1efa3cda875ddf6f3cc3431db3d0cee4d18a49407d0acf52f29c6dfb1bfde85e6b44b0ce67b8278baf8d72f697ee93dd273abad4dd42be5273a4733b240c6c45e7e6c6de12d9776fbe268fcad98d1c47455e570f7918f0f453bd0538a95c79be2f159aa24a76f54768b96bdf2b40dffe355087fdb83a0818e80881767c5d3b7d759cfca27f00ff253733c07de2002db4c018629fe6a715726066f1f3e8252d812044be4de629049e2844412cd361e472708bb6044390571c10417c6e93b2bf6ff3919f4c7ec5e5e4c1f9aa11384988e3f454ba6bedb9d8ed0c7b6e702a329fbfe89ee588b412d7ff0a5ff7b33c476f97502989dcb35890836317dd05b908742fcfe7f78fe03a205bddbb85713f7b3a3329e626f1ef50ccf01fbd0469df5d45887aae670ffa20213f665ea54237ce7d0574e9aa7e3de7f5785c30cafebb0cee1e5c0e20ffeb7e8ce0fdbc4b3a7eae86e024af2d9d77ed063dd4c17b54253fbd675ab5bae8c12fd43c7b90aa416e67596db6ddadc15df56bdf86fdce45ecb5433f37f655e30407d0a90d0e88731b7f58dc6fc23ee49ba04a8b2c2a6de91ecb9117f49ccaa9aecdeacb204f7b5a965898ea99b1c08ae5da2ce3298b79bbb98f0484a69bc43d7ef95edd4de24778c2ee361aa002dd78ba3f48247b3c1c7595b454c33a7329e8b5e749e0bf1dd9b7bbdfd802835906e3b4b6e06006239ff1e8206891ca333481cc7d9c11444c88b4356c31835d0b6a15818994eb1ab8642eb165c71448c0b2c449086db423b410c1a06997e8835de0f0d941e8ed3e28182b97e0186a11613a6271b330b7ae110b7d026955b896c1506f66c44436a29e3548749d0a110190cbd31ad6c0788fc0f5a2efde4741241f05417979f219b9bc443b3c92387c621304792eb63770e1a24ff74e248245cd47c9c8fd96302174b2b4e92cd669217bb2143325efaf5a7cc9c683b4418f6959de8272a5bc1d94aa09196654b9ee57b0baed0466020435eeaf7ebddfec0749658fe651dc55890be5e5a20bd3ce8051a112f7994d9f2f56e1bda9fe4657a049a0081ba36db9822e603ebcc7465c6bddeaec874b81fe671dfdf21bfad39f2e9f7ffef4d387cbc74f9f1f5bc1be0c7913f30a5ea50dd81827ab1440263170694fa98c08fb710e74e057a419a36a8c132a6594526db683a7ab3c7169c62585deac215851ed9e3a5b6a28887447cf16bc0f4813f059a060cb65a381c5063821966395d049954b302c45c381b58d06a831665049e2c94f3b1d5a1df6a379c7fb0d280144bfc8b5c9a86ce55024d8572a66cf9477fa13f8d59a58e19a38ef930db246fdac6098e05846027312a7fcca050edb1284356caba010b014084dc543c358c2600f9e1e1ce46211be3b2ca56ef91a69aac38932b6c5bcd0c2d85dc03dc193d77289313642c4ea154c7060192dd4b93e963d598c12de0619806a8970b797463e6a1146d10a0fad1369f4fddf6fac2f1e9f8539ef9c27ad6c1e5ca225bf321ebe661382416f8a59c2b047e43881073964d1ddcea618017d99c0704a60bc85a5470565d873cac1e6669e7d00b4c8b27321a450dfe139431259d4062fe1822d4f6f8d8fcda6f9c6b8c8e09ae71b629d5740a8a0644188cda62107b44b46a4325fccbf6f5778c32efedb2fb12a9241f3a86e69a762e46e0db46cd3c539e310272157076426e31c359a3511588b0abcb704bf8f40df94dd2889939eb257024b1f19db25f82bd84c0a066302440706a22bd8cc60efcd56133a4fcf03cd2288afac68bcadd6b8c6250a8c0f8ac7d7f5d754323800090caf65e39d92815cc8a9e7f4fc6084cd056c28a77b58ca217b25e6ddd057751e075962a3eccd5224d55ef8fef2194e92a8a179cc8c9a603d01bb701a29939e4d3c39250b8142b4c21608b72c92b0792f6e316bba4fc5a48fd72d510c5c2314c15acd33eeb1cd445187bdfb7940f71b1b6e405ff095bb67e692b498cf0d9b3addc9401b5839c74dc62cb3710fc6f9fde37959f9bbac6daec836f7ba66377ec3ee73a7f1c290b0bc1dee5e1eaa5ef1324694e2c23686cac02071730f90bdb85a56ba0d0f40a93e63808a75eb3eeb03821fc5037941d27380c03470ba1790fde7364b3e38aa0b95567994692fbaab5c1bf0017aa8d41225b18aaea9fa9350ca12c314bd038b3282ee74bd8035bf05a61edae4d29f44fbb980683f470939870ccc0fbde3ce46b46f5ddc6f52c9b8fa2b618680ffa0870b89754132128219b546229297e8ff714d3cf2a2b0c5c435eb37b6616c385aa31d83e438cc5b7de95cf8f0589ae69abe98b3c7520521fd0dd00511ae7fc37eea088112495d36bed6b2c993be7f1ad5447d4fef50d3e4a82af0ef4de096586c00f253188c0960619edc56ed8ab8dec99651c311c8af12e311df3f1085479903412fcbd3214819d827148052d0d7990e8e24aee097a239a8067453993ef7594ebcc9135c60fa7cbc5b86379f31537f2bc3bcafb02216866bd801482cbcdb550f63065b5a4720c2baafab2e8a714498ba9c618b8e6f751ec0f3d73ccf7e739594b8b5819dcadc96e6fd4470b1155531195644d2c08a031742cf41adb5b5810f67b5865303419d152be25ada94c12cf1c8bcdbcb18eeb7c4062ca8d7a4daed6e7e220009ae16b0a803a8005b112c59f6cd55ca80f56b1079e0267e377068f6c451641871ef0d07f18c678af0af1ab6b673cda37b7b11b937bfddad6dcab2212fe3419e23f72c0b984340afcb4bc89e411c6909c8e43c698967198909eaac4f20304ff242949cb27ea7b2e5a756f493717dc2c7bbdf663ec69e87950821673457599dacd7662ac8708af3518f70556b6f65bcb131cb867b6d11dcd98c5eaa950725999cda7ce483b4842ec758ee37aa78404c30f00def130e8809b6709e0183ed3f28045cd31b727948475206db20f4f76a5a9af1aa79630bf2fe761f034a96346f914b30bd1ed4db0b7a500f1ac6b57f4b91059e963945d85c788688f51977e7e73782159b16ec73c71e6d0c086e926e0294fcaa3a25d904d1d7ff3c4554a173f7e979acb536151eb11d21dc8d177902536a35e7cff6c90b5ab3ffa57ebed5b57eb255fb256a134fc7e381654660b3444e5bfbf52d9862f4e8eddc6f0fa4690c73ad279299f8d6ed248013cb924e4d778f82b01f67acce962f6e21facafe8892e2f793a50d424ceb17fa4100ab1b9b51862cf5d1f92d9e52eb5bba8a3497d64a6bcee34f47dac7a53ebf512f335189ab2f150954563c2150f60bdd1fea87b425b8ddda2fe271027ef541bd2ed9abbe937c7e0355c6520bb00b854cde7f6becb1d951d01290063c725c9739220abb17b58ddb52168312ea87882c39bfd09e3de155e20e067a572b0d29997d08bd591797150164f41b2be57ed357e939cca078b695090dd9aa1fd433a29cd77ac068d6fa452c90b638ee0092d52514d7faa1d3cbf789f6b2b83da0abeb34f5cfc85bddc5b212e8f35ef11eeeb72ceb11a7c7636e4e55daf392864f8fcd76cd0ec84e232fc13304135dee0b355d2e205f39d3a1e9115a1c7297ac2df91474b63f1587d9a619685ed8af3fe2be4928bce07601507d509f08fdacf5091940575c70c5783c3d1c45dee45a1c650a8d123d1642956f0a8fea55b179540f68fc5a4f4645b550285a9ab32e7e845a3f725bdeb0b56f676c00cd20efdc7c7a4295b73228957c3da2f81ed47baccb8336d1a5e732cdec64d0d3997c9a4753d2f8828afcfd87b77301a4fc2535398101929aa55506ccbe458bb0111844606c339b78190d8940906ea2f569f214cbfe031ad291108264f4bc29c13768fe0d6ac004f14804e036f0b1c970ffbd4d1af139905b7a36ef5b98918d8483c5a3e0a081df11c551dbcc7a28967289a0dd81031b8eb381746193e7603281064bef96c7055cc70932829e550186449524ebb07ce5007883200f7c6021e759eca3f4198c5691590969ce7a3c8ae388eb302e336322d387ce93b5cb0e23eb216167b3b0038ba13236b564a9d4b319a12dbf97778fa6aafaa7aa181825f22e2411a077bb61d3b167f691cc36c187d261fe1799b651ca885cce471e930606b8325fe8ab8f72b394ed1cdb969f806fbe5246d913fa5d614a07a12192c02f6c4ff8a2718955b47a9fe5f71dc3ac8afb9edb471062fbfa2bc679bf519ec41857eaacc331e2f1a6e2aecc9cf8b324b2c9bbf97bc40b9ae96df2f34352e3fb4d90f1dfbe23100c5646be5bb620b4d308651abaeb15e0b4f9d6a4f3d69f2c1d14ca93765b2af2162e9c4a32cd005edd9728662af27eaf253a54fbcfbe0db6b0d3797e15b0e94ed01e791dc29e9e166badf09a3b82bd41dd62e2d76b8bcc74e9e551bd074e20ff69df852ac05065c0c80d905136e8065ce5e92867b053549e6c83aa5596e39bbd7c4bfdb0477087f703d0541fddb0cd6d23de3233ebb3370ecffae22550b16d60252198899d3c205e40ca913c16e50920edf31dada5782c9a0a5fabb4ebdaacc44cbecdfd9679a6ab2c2317a395dc4ac815e93f2d5974b184373b225872beaacc447bc6f9a2db60bfe6ca7b669c3a395f73cc5bdb739e548e7b46e6333d5df200b1626896e3852cce5375035d380d8c95e4b9c2dba13da0450e39f9f4720d840c60844402293c47269d40f6344b8096567ff96c7e8370e18df860f0221d11c24926dc8387850a502a16ad0d85b2229341858f220db654d0dd929f64e422470e5eec8ace173273bca599c8ad22936a9ad4ab87a90a7578bf7ab43b5d7ec6fdbbfa918d684937a9180c4b12271d5ac40ce4809824c2598c8c4d70f057fd3c7a0455460e30186267e22f24f18083f5624b0111c097243387c32509fce088cc046cbada55101adaec6105a35f2cfdd512278d44eb0c3f40835fdbf851128065f39bd449b632bfcf793950360c9ab9f011d70b370a2149818060828e2cbb837203254399de03eed872917b9f1bf80f4cbe2a967415e8b519fd057357048f6f924306b32dfe08f77f19cb2fcfd5cf7fffe1870f3ffff4f1dfdef0b7d01b3ef87a6097723a84963632a8f655fc68a02c2de045d2b2d16a198f669b29af335cba0c2606899619a623ad5add0edcf87cfd80aa443c671e99f4d03e1243985886e821951e2ab201eb2b047b3d61bd18df4127e3c4462aa86c962ab0d9c2c01e04b96c75b2b621cda2822d27699b39b204a9a690bc6c075d153cea654ff80819f498ba7118a9930104ba89afa6bcaa540b3f131f67473f3c02d542e92d3613650c8126b38f313e1b1f721a2af8c1f939a3db0999d8ea2153d1100b12437c008ccb181732012748e3004d364f5f8b0087bc90da220a1b81e7455fc345c5e12bac153bf278aaecdccfc803849990cf396d363cdf1a7815fdd7a1deed8971b7d70bedaa077bd95922a473b02894207526e530083d605c05084b60426dcc596817c46283f9ad4e96e004dedf02b544cf88e7097dbf3102ca72db787ef1deb6beab304c4132724fcf44cb472e48507851641ddc314d283a9b0e007a25784ec2c1a54c669bd3d6c4d8418b3723be0ceeb411fde27afff3771f7ff7c6e9c495ff5d81a8d2c089062f04218763df63485d9e481aaaa4edcf2def37507b5a68e22e10bff4f0c9c8c63cd3933c402a18a38e4ae40fea111efea87d02dbee9ada24c9923221c25b271ef99016601ac5f6200f9325b44b4b3cb3ea94824d289eeb1b76be056246d56088cfefc8a2980dbfc7201f6298068da510b904718ce8022f434f7d421d8b454a5ac6299f9c0f31ad490e3688c1dd736d81c8efb42e395ba673c66768561e2bf38cb599296321f2bd7a82fb2d6171019d3c83b2f56b93d94b2d13176434b3fdb73dd392f58c58eb8d482b43d44b202844c4bd583c150443cc97e31cc15e6bf5c9125b20757d81b523cbc6c3124b41d1e84644858df365c0f7dbabbb7e6165fdfce94f3f7df8fdc7bfbd815d90f45682c6e7e565e448c2b4cf2cb9d2aec4b2595405d2e9ca15191c7689193f4ba32defcf17de6f96e3a947f8080f9460beea91db76cb14a43f5eb59d836be99a15de0bc7a007ee2ee0cce871976631fd5bdead8d41bbbafe96d098775c9aa0703303686a0d7ef9a5fde5e3fb1f3ffced8ded48be84ff13c01d25956bb2cc5b7652a532990bc1529d815506570a04bfbad57101bc05e77db79cb3af92cf5630d622e9e8917e3659638136a23dec937354ca9c8cc7dda44f012f3c0fee7ed3e3c8c1a6da56775ea24272de6807f5c57969968c54bfdef765b423b470782408c3c6b60173d26e110f1571b72906f004242c0420e8f6944c88e23d216f426a79abfbf4a267708446f35d9b05394f289dd95253eb5bdec1369880f53312ccd4c0c3c600beb63d61fb9ad433255b463144377658e4eb919502cc9e2003b4b453afcb10cba75912d059238d63b67ddf32a5f3640da98125a3ef3cf9370072b4245170ac16c40c14b3fdc29cd42c747db7b44808938e3a6f6a51a1a3fb386a84a37c698afffce98dd8802fa29912247b557df28e7869ecb557d6b3145b207ebac6ddd211191d011d19d0f315d7df6ff66bd1370fda02dd13d2b5a5aded2f3fe9a286c540dfe29e601b45baae6b22dd72e6af2acdee4471fe465cf757d7dd01cacd76fba7d9a4a6271b0e7ebbdfa4c8a4303b7ed045c64fa8b9aa2e90e6a539c2f36ef57a95ed52d0fb86956228c01d1026466113b8789301f20b0c5842217fba5956e5424b0077a38d47499eb3db0849ca1a1d0f6ef7dc7da68384e99afb42c001ed3db78549a770c8165e5ef85dcec534de539b8c6805f42bf1b833d3768c2ecfb4e3047b064ced784a55b52c7850cbe4b31de06d656084ed2de6e529f53d3faaed1bbdcb3e7014d8e007f7c979e848ce81c0a4cf8db182ba743e032163b23d9b29cd99fb91a30fef811a14cec9a19a6d4a594e5f035f69f9ddfafe67fbe57b697febd725500facb381408cb4ce1e1bf73adbecd90a2c66fac4739ee63ce6ec951a309f914dee798eebd29599239ac62c230d4b31f22eb0c0163a12bae7519201851a066db230c157e98320f3d6e07da39940405f894f2ca0b53c73783b934f334f919e218bcf156bfb2c5ee685b96069f32e23e07ff6999798de750c4bf2668c5816c0923ddf128a62ef2023ea6f4d9f98a9cfe8ea16322d0e6ebced4c4b8a367c91bca46e20c89e0feaf1651fd5c382baf60f669c07e301e4156376f500af3ab33b4d1cdbfa4e926a68637d87a9b507c9b24ddf5abf556a482b53bc2f3c55cbd9e27a41f8d13a4350ff0e33cdd5f7392fe77d96996be3b2d9ad235fe7bf3d27d688abd7f75292c7cbd87b9c2bcde0c5b602f13d8e55fa52c2e2cd886b50912a3fc1a2b0174bb92c0da4ea4b3883aa47866a73f5f5482a7cae5fa88ed8b88105fc924bc06a12884d06093606ebbad87845453859e015c91342ecb31faf028f977a9f9f059695bce40c7fae7728c66a96d6c5ee91093e459f8ff441ed0e9c23a4266f441295c091e608e7ece95749d0960c75d2cbaebaa087baca56aeec33b7ec0f90977aefeb82e9df55344d2dbe43dc8ee52381fa9a27c1252205b41c8e1202399fcbb49ba0acdfe5d0f592f4e33a59b4790b50b11900b5476749463486857e9e255b36ef18383b5548e6491d06121d9bc0a9d409bf6c4f98e4e0e39590f88576d2e8078f326ca0f948a195277a4ca5d43e8d1c288f54cb51db6692e9076963cad1e32c1bd2b61ef7af86073e161fefb4645853c9969f123118051f45171929b727d25a228a1fb4495b1b0fea639e59da93f19d651f7c82faa1ba4c5debc3a4b28af928d97dca81bc682acc1f235f11dafaa44f6036dc2d8953a2bc9527edbbc326701acb536b57347bea3add553f6ba8eb2a96eb456d5626ca3b2308df22b078c9f094660c9a3d7a9d44d8b3bcb354500fc9ce96312e4684d0ab42d6da96ae7074ed2c25a85c7745f2bbdd98e1ed771fc7beb311985a4708f09e37c8f1b8ed3bd0d8228c97c1b283c183020b6480f3115503ccfadcf8c1de05fcb6a853f5fb68884a70e8c2f00c008cbe2962c41900e54134218416d35b9ecb09fcf5c621aad2a140d0d39e7310019f9a969143291df5d993ddcc6bd77aebff41bdf93692e38898e3943c9d06fa8de1bc252fc1ebe2226c0002adc3130b424b499e0fcc42971fd547d854967acb844769714fd429a0f5b57e643e1394b4a3bd784e8cd9ff5a6fe391f3731d1b5be6f3fb6c73f38120e6ea0904ef8b671dca380e1b7770405fe705896bca3b66f479be3fe8c116d442a2613db8917cc1bef9d7b702f7dfc09abd0ad3850a82f82f18ee69268a877f00940e66a41150f2f441e6a8ea60c237df6fb7e00aa334d5f3d4dc69da3e1fbf5aeecadec28c778fbcd5a1faef01c44e16cd055aae843c12301be14012ec46fd39b10d24184b6722d572c4805464c5601d3b1943fa786edff2e48df60435b0904a9e547f969ed4712d1a9685ea4cdcdfe1db17646d36f52f0dcbe04c4ba62cb296bc040c59380b278f944a7d10a40ebd66c941bd1958d647301cc1682eca9cdae419f0f9a0cb34e2b97a384097936280d81ab6551f4d098fef4a4c520e8eeeb38c47c5b2f7e7f9753d934f9d5fc233f3e038609002233b1468be4f6d2c7c5cdf80cfff05873f79e40527a32889aeb54c8671cf90006606f6280bc46860c4be7d9b73d3e7ed2f9375c0c9be196965e1f658df8bf9208dbc8661f0d519ea24fc82f0795e460e6ba2d6bb9180bcd000bf53aeec75cabb65f2d003d060e52b75979612f917ce3626bb0a2663578f99de164b4ecc833c0720d46c32d6fc533dc725e0e365177b5d7fbf254baa1011784e7d4697f699e856cb32e30f10f6b8273948173212caa83e594332ea0624d157150ccb7d4c8a7db3e80a6391329003c63264d0ce64d41006f83454ad189f01a8e0716fa63ec3ec59803e408c3a12710ce4c8e53c652d2b5624feb20c47c33e774ec1b81f66ee23e3c0e763b558f2569da4fafa6646b6340cdd02d00de13e04824e8033f4c786dd2d59162c4e25c002c6c8b72efc3c49ecce701966db1e79e3519ad1fb848611e2f98c16913240c9f50022c7238fca81c705be077908baed4d33933075637fb6b4d2751ca523c4968e323e1535fd8cf8de9602056c23987dc172d3b6bc9561d9179a65799f59a1b5d3c92e5246ea2ff4fba89518c8b015d8ee653a5e80e248f388337ad183d01d074a005f3f48b541f12906cb1f26e4c2956d9183b0f3263b51928081de48f760b1200bc735a6fa39b9ef379d332697f030e69ae992361c5389cff916903e6dccd79579d6e7495332933f082235c1b34106538916855d2c1780092a7db486a30f39c5781295c39caac53e906d1a51dc013017a21e90f106345c03d39a905e29770cb8858a253f8cfd04fb5db3441c16693d9ff17e1378056112022688a6534d3a3a05fb8d4c09c3da60ffc73da41ea074cbaa6ab6e18a502c171f091a7a01e8905a052cac219d9665f8f4345c2a17c842dfc87053493492d23233c0d9eaeac804a1eb47104257405c6961731db9f055d2b716c0b34c661ad5179a116a062979ae2541fc3ff6f12170fd183e40aa97c139193607728ecea921088366b2250da7b624f45880a64a53bb61f39e8277dd305e12659e4b7570b33c6b7d52c4378c9b91b5c8d20ae661d952a8632344d2769ad97c1121508efca664146dc86e54005eec2080b25401ba07e16b64bc4521b3da03f11d2d385ffb29731346623830b3c0b9289970c2b42116f210cb4cf077043a32901c44403257c86146610ce9c470143c438b8167ac86ac8ad38e67013a09c9438c8d9ba6efdaa059e2a50848a035bc9ad9f71b75e0c4f2b09d5df0593adc54197d00620bd5132205b075e60cc742104c785b25a646470b22cc408c16bcab6ca93e0677249728f3d860639c00bd9dae6acb29d04231761ae3cf86a80c841b8d4433c70bc23e1af45ddd5e00d82b7a9a01be05b6199cbc4832bf590ca00cd801c492c8e1126069b1e7e96149c6d0556133d7d31094ed2d5419097e6431b730b29c58a67d0e4c83104e69991c718179aee68bbddfc4f8cd093b00f247222b3f508766766888cc136c8279582ed20e9619a818085c175041eb693c04ca0cd27a08367f2831825090cc3a6f21f7c24022968e157601e4b8c5eeacb706af730d9631df5a45c6671d395ad21218f893890c6860d12cfa7cc8915f27e94dc6c699103193a3a10e791364e3afc63a1fa45bec36e64f3bacd0c5887bcf521cce7b81f89340d423d8851297211664cf4b9ed649c163996f664e38dd5192d930fa0c2cae40fa19950f6b7988019369c9fd4c3c93a4dafdadcc437c3ef7e36b669e6851ddf516cfb2f70afea2c2fdbbf73f7ef7edfb1ffef438d3d46fded0baa597e7b4966d12c424b0bd4488807112c424238891068218e925e41cf47f208869d90862ac0b6c10c042f3d6af961242771a7835af8835d95fb5f8e5a7faf0c7f73f7efbe1f2f9fffef3fb3788bfd2afdf7ab6672a40d0bc8694f398253614b011a5f7c32b61e5ab1ee9f4945452bb820805dc776d667a9e3d98afe1e8f77e33143354bc31cb391f0898bc00ecc420acae1eb7e627a456bfa6cc03cefb996a7df64a29bcbad759b560487c208840ea9766e5031c6c5a685dc2397473bc5a1e3add623d5a0f3468205db7de5edde57e030ba27129be62497c614e8cd1f8142709a3d61d9c8bf160523c58199f691aa51973e33309232a5ff816ed9ef71b61fba2c257968e902b334ba7ad3e51e1fbcdf209038d3966d98ef95427ab4641285085298907c2df80c9cc384ec0e8719424a1459f49ad328e4c01776a0b69c68eb5ad5d4b7bea656bd754262e5fa5d3eef4c836e9f5cba3faecb010f71b830b04940f2d42ef2b074f1d840c465c90e97854e3ac3532365304ac0c1cf698652a4049617c3cbb40d23653e7adb61cb8673a3c6f028bba20c92fe85d132f34b173f7cb48698b88c5b192c9eaeff3553226ba954bdc18b8c53a4c5a4ba0bae77640ca9e5fc6bf67ef7863d3780b2df81ca940c8d31ce12d8139820c8304acd8516aa2bfa3cc864f46f82330e716bd65e56b7cd2d3f08ad8cc418cdd0f00adee09304c2959aa13595ec9a5dee233274dd5413a15cf6b38817508104b2406b8a69cc68c7b334a21939611966b655d4565ccb240836d907d68fa1937c3f3c855bb7d620b8b434a2124ceb0ea54cb55bf9ea5fb4a864646908751e2cdb2caadc3ca963116dc8be63a7ceef17ecb08b804e7c9956b79e22c57d43da1ee7ecbd56c196de479a38a902c40a0e1b480fa341e7036373a60cb38c4ad0cd16358b99499b54e57035c296916479ea903b71c3232649b848350e25eb776cdb18f8cfc4b08f1119c1ee01b531180511c92c8ea18c97fcdf26b7980712e6595d0060265ce7202ecdf7874180b9e5fc2fdc6e0604e5540bf5367d4bea5633da815da3441b6214d2637760b394e2aad9063366eac2b7afbe525f7f1874fbffbbf3e7cfb38df25d7f645d25edde853b9320d1c7a46da0ba27d95489a3c4570f69a2c8820300a4c76c6e819c48c68b083b3b7ce8c95f1899be084b2beacddbcdb44dd66c22e5e064a71219305ef5985140480e715ce866104b8face91081d52722a71da39f414884f2d5e7bd13582bf70721fa743b12c73f0c446cba25a2647dc2c5fe1f8c0569be7af9c57e66a6fc25fdbe849579ef08cf71be2f65add322095651c717c07862dd900cc00a3e5ab1d91a95a3eb438bd22148ceb6f964b417c3792931b3c0bd609bb6a5a4fa34db3b4d115fd0fbba3d6e038b5d412e179845f98723fffeecfdffedb87c7532ebdc500f8caddc4473a77631202e91fe2c95228882c8b1b0d5829c1dc5a03c3d584bdbdd74d76d8342e49462d4772f2d0f29c87505f2fac9baef8fc64c38c381790aeae41d117937dd83b852ebaafedba2edd17ef156c36d0ec6209d9c711c15444668e72f519a1e53e544390b154ebe352df9003e541fd4e2f48f6b8e6f56d5bc5542afb0c202d79cb5746b800da5b9b2f7df46f3f7dfcf18d5de68da8d9974f3e992d87115d6e911981debdd4130f663b7e7ca6c9c45fafb830419509c768a9075fe6fd864c01c827503766240ba066064fd5a958684bb9c1be144bb7f8d8e7941a8ce88c2ee66d2c31ef2a3755b614d6dccaaee2466b66d96b850655de2a5504fb1599408fda61e163155a72df626df042f54ec89d166335bb7ca45d45c5163b6c68b9b1654bcb0511c1adabe09cb7cac6db4d524c1ca678b2dba52d57cb714ad5648cded2ae7f7382089828e17beb388836e9965b3c8be59210eaef52eb784e08d1c8aadb378ef9b574ac67624270c1c6544fbfe4ad16f3ea723a49d42a3a54429ea7de4ebda960a6e3687da37696c2d3564b012d6014ff4b062769d2b9e07ea16eb69e94baf9e9721fda9252722d63134b5022b61332dbf31e7fe74abbca8a2296108c5edf6b24fd82ddc493767a2630743498555a793d3cddf57b9d5e9fd7f283e51193f2baadf006726e1563bac10f6b3cb578eb971df8a0f39052dd72413887b381c4b65566e32e69f5f44bdd627bfdce54df4e22a73679e37c7ac4665643ac06cc2ee2061ed6243b6000a789917555319213e4faca9ba73bb694f2cf2972db28ea9d6621aaca6a58cda2e77ce357b3665769f33c44291ba7fcba89e8985f3f29f72db3bc6e92cb564ee3d4b3b1bc1adf40aa317afde435eb86f0ba5bae5b4fed7593bec9e91a04d69c56976a18af9fa8c3e72b72fa0e396fe9354006fdc4749a1c55b6524ffb03d5adc4533fad6edce2eb7be9bb397f7355af6b3bddab6db59ed670e42d9dbe9e6dbeafafc236fcda5dabe752dc4087a3ea6bb674fdb590a5582eaf874e2c5b43e604d9ca79cb493aa3cc104cb161db043eacf52dc56a76e958a136e198887a4c24e3e8308ff1ab21d859999b0db7a536b4414f05568ad8665e2d3d361028d100fdd73508980715a015ab18a0a26586893945932d2314f1b265cb98d05a7077fbd269fb98388aeb3f7fc9ac681e968684cf88b3901a914e2d83db592cfd6fad40bb357cbd3e1514d8a22074994f2783dfc27c147d32f4da55c91324da4c010f9593e119dcc51e9f512cd9e3b9b219552f2ce9174be1080cc1056e660205c105025502eee3a24d2a07f347c2039f8e5492faf1688819e08ce96a9afe39c073a3b2c1b8904c8b3412bc961067e4dc1cc0ebf1dd6f0c6fcf054ca508880a667b876b17fc1f62ec5b394f5f232310cef25475d019093c02040c92e8eb7afd9f2578810750a50bb8caf0d07031234eea02b72ec7a2cf6f2c202fa3badf2c1d853002f7e0354979ccd2cc266fc9f88f5118e8a00d32ae24ab870b3b41aa9ce59491d1a0074bd0c196a901a4773918ac08ce6e2dbeb341700e2fa3b9df206f4250a131538c90e1112cf923cc9dd240dc5191b01df0eb6990803b0e66a9a38f5966a846c02f342be9af4fa4bae3d0bfd3cc600cf70e620e71176479e0980d940d728a32db6a09d73fcdd19632fb9fcfa0a2d9cbd3fcf24afefefdb7ff76f9f9e363a318d537524bbfe8e7486ff3046d5bda936aeaf17eb39c907a20eefa5a08219de9a8c21e55454ba8e49236b9ea35b253a6f9db4b1f5f7e80df7df8e9a7b736a45f7f49f64ff3f5a9ea5d4cf6c62b371311a074d4e84a0c3288cd3267b56bb2af9c651a8190280270a81c9ebbbcdfa6ff18970086b31fcc39045a60e314b67b19178f8d6096312e96a363d5008edbbdeaf97e331612102251da23f2c7a66b8dfa547424949d711d46ac33cba0921db39cca4c3bd1adafd3f6f7728bf3ae43b072cc7bc7a4dfdafc22180265c40858302cc6c0f432062bdb186679a6137d3c8657f73a0f42b2d94e79ab6695dad95c0151b67e15810bdd7854006f362724910537a29c65e464b16c0c4d99adbff0aaeffb4df8a06d68573d9b04e9db6a28f50ace6138b07b28155ca7b0fec82ca6a4dbe42c23fd8a18f73c22c45e757cbf9161bf235d53e5dd2659e28d6c0ac1be9c5101940730417d1601aed162d113ac4cf6a00466d0d9e91716d4a73ffce1c34f97dfbdb19e7ef3458b9d9483fb0d04b86d82ce846d4f8f40afcb44d5b621337f3e3caa46e320659a5b808818dc10110ab9a1cc73a1e1385eb365e4c1f88064f9862c991dccf55a76f8d496a08bfb5c5002cdd7490496ea873cc72d129d0c24e93dd7774bd0ea4cf9d8d0c12479ae4f483c94171a35034689b7df8ba5b7ef3e9c0ee69901b60e578f959d16b239c855cd3b00759875d80e04abb3b14465482f60ea421a9ee9ade0106d43db2818c4296d342e3af191d60cb66bfdba3a2f8ac0f386a9bea550e017240bd149e1a27be1b0bc3b17cc0b154b1965680de1c2e0854432c20b2d91602d874b32ba2ce053924f3889cdd027d455093218cb18f27154deca10e9c17846267930ac682f93fb7e33be1f6a6debc35003847c6789516ffe0d48a5280fcb0a6ff5e6d7a35e8d83dfb61730acf984881df6653f7369e2df5dbd79931e8602d81ab3341396188280885671090e11488c96c5690618191a0d6cfd29f74914552d5ee3dcbfe1d7ed49609c4e099ea76c494670f75a9e3992f0ce4c4e403afcb48389f3d467738e2d248beba12dc944b2c733376f074de08d6a4b441133e08ee7ee00c4580c9f29210397cff16cfc62604938f7a27a60f2e0fa64d0655aebcbe1d419c948ecd8d04819fffa74083cb14a3c382d89ae1027ac929f0f0d2d1300bb52fb64cb82ea9eac4e28f6b91fa007f1e1ceefbc6fbfcc1c35cf95374e9537a86d5e21360c159709d621d3138c23a160af9f34e7561e70cd665b67f04be60a078a45cc238f1de6a6d1621344eea394f480b5b2652b34ee548bbcb795426d98538c6c3ba1e34e06ac35dc5d1faae81fcce4a91e2d52b1c4b2aa44b4e93f2d2049e946231b9e9ff53c8def37b21cfe19b94320674ccadf62b58c243305587081bb254193b0ac8eddc87d814b00a6db2c7dd8ae9aa5a77133033a2b38db12bdbaa7c549b6341db5cd741f422ab99a668bbe93254ed4c368580ed9b48688746cfd866807db66ca9683af3d3f9d0554ccf2cb1bb8df64898ea1bac910f187f72581e4c9394d88034f678ccac97ad239778ba15b97d8dd0bd3740a1b4764310517f1f6a69a03659ed0000032dd052f9634384f8f904a66c891a50dc02e7531f6eb1c2e50d813f884b63ab0c3e0e4ad13a6086bc7c60348e31c6200843dc2405647440eb516228c1e1c8c252b6f829e185fc2f808630f994dc81820885239c1d0ae87cc805c5fc990c4e60e8bcf11878c482811c39236c03b81a20581a720068a5b44c93b1e81ce47fc96315a2e4db00d3efec2f79baa8c3e413d22d697a05782c797735df208407bca0b313fc94cf91c97fafa20b3da44d8725bfa37dd6eddbc6d1b5ef2c311625896589e4938943cbbb15140c2afe2eacbacf7694e2a800b4b3d24648e4b9ef266d1315e6606951262a25c7dca934ddde37ec4328ffacf0b80816a003ee7eb41e7e4b3bb42aa5f1865b5be8cb4e4db33bedbb448d4cc0780d7732122922f2d5c01c07bf6e5f5f4a4a283fbb685c692e15e0faa732051cb4b9a175d47edc8eb7402738c66a1409e37ca5a930f72050156f2890586fe426751f8889f05aa05e98875d3180948748b2502b2c023cf30274a00fddd4af09b3dae8d41f065202d80519a8bef1d6c72f6d915346959a32739b2c4b82a759ddf92b100ea89955d7b9b34ae77e0cd81ea7b5dff05f9e5cf1f7efef4e9e73fbea119537f0340c6f44cc6d5cb260661e8b5ee04bf80111071da81a22380199f540a2975cf758baa8dea6eddd24e3a719ae95cb5ec7a9a96d25ffab39f6bdf726dc7b5bac5567eee1ccc6a4d2c864cc2a5c84e3ab93bc1ad24d32ff63cc8fb0dd814b1a4eeda51ab1b5eaac4adf78cbfe14c90b49171aebeb4bedf8ee67adf5e8e9f754e377a75ed56ca6bb7d8e9aafcfffa0bbdf17dde60277d9131c9c8452b841733c5b2a084e4cafbabdf6f560bea0cadceabcb619f50197df3fb4bf33b204de0601e5aba24cb239cf4634c21f552e41d93fd44d6f65d4ac887a4822a350331bdd3ebb9cb240c44bbfbcde2a1f1c76ec174543df30a25845da4b4e52762402fd85c40b2ab1e8e08b51d11d016718cda992657c51895bbd14b851d51764a0209a78073019a7fdf5f0de597bfdccfdf3e06ebe437dc49dce499f2525fbb45a971b1c4d89de5f5ee9afa9685cc63d42ce157cd649189edd452cf3ced434f792aaf4f01912d2606a2229e7f5159874d4b28a7fb72695beee949a45d11451e5f5df7c4356eb5bf6c9e0938aa1cd3eb1e7c1b733034df469a31459762f6e0545e5d63f78f694b2c4f734c0361ace4061b3305ed3f11fee49455e42cf2fc24aaf5f5c42ace023e92aa56eb35a9593c57cc8c809056110629ad3c55edb88ec25b2b60c9cc25ebae0412b3b471550564cb4cfa576f6567e03664631a9d802fd172b047d01f62cce7bf9e2e45aef602f889b758e07c691d713992e1606de9f92f7c8bf9172eb56f979fd0191871cf33a8c1adcb95366a749a2f7a2823802cf3eb5310819395860ad284cfa62fae81329cd2a9a56ebe0794269e26a34de8fb4d1538ddd791a5512a8209a2ea2ef637ac9bf53cf3286d3dcb835fa8c8d6531f0f7e419ca00515443aff52b61a0d7582e3c7fe7e9af77f1960d1332b3d2144a176242ce54937583b82572b4fef65aa2f7fab724132ecefd737ceb255edc0fab1dec3f966bfbcabfcf9a74f3f7cfadd87ef3ffced4f1f7efaf92dd2ea37b2c47b1717b5764df4ece24a20b02cd7f624517f884fd4cbfd96ca4b6b6ad63a9578bf51b3f6a9d815d4e615e0bb9e571c2e34a6a8daad5dc1645788cc2b00367b4a64e3a1fc3c9ec43a1e121b4fe2399ea3b58e475b3f8f47dbeb78f40a1d0faed0f11c574014c9afc6a357e878f40a1d0fae88a19b075087d39f477321b982ec47077321b1c1cca63a96fe6a28da5887d26c2468ae23e92fbec56ee3f8e52ffef7cf1fbefffefd778fa946287ed179017765af1bef542c00ac6ce59a5a0207eefcedffe7201746acbad0a62224f2290908f55594df912e487fbba65c7632e30d8b3e10f2dc8813e7afe8ed17dfeab7df5edefff0fefee9c7b7f385d11b2ff625782291a54942f41459446c0bb3b6f46916ad2679e0a469c36a66cc3d325cf18c0e2893da3d8fc96c67297441d2c446de65c079d30e67d208dca555e82465c6b8038483940935708c07174c5fc8b3acbe79c0eeacb7c8b16ef1e03cf309594ac10240b865cf6af07b4e31efdc7faed3be58c7a45f66cb2876d820ab85e72026d2de0612811b1029909e6c2feff87ea30ab732a709a7f6660838e31693971923692177273391c585adde381b529ec9842dd83b9edb1899202d9a31982e7949ba33695d1ed4830e6235a9c8c3d688ab5d6b917a78ad370a98b56f23027fd0be3dee07cec707cf6ac96d17cb3f5538f8d3e29aac96ebce190a2cb97e5cf2c1564120d0523b094ed67ab61400fe9e5b1ad0faddb35a849b775a523193cf9270387760cd7c264cf0c0aef5089ea025e50040c803d8b557f564518e78069fa7dc7866d7fc9649b5a25ccbb1636bd1f6e20c0244b0b753fbffbe63676ac3bad24adc09ede63def3708d0939e80016160c1e6030675864bdc028998fb6033bd21a640a2b9b2eb0c4ea654614fb6c4a6050e7386f0662d8c2487860aac341dc8def42a087431bd3223d85f54c89ace6995d52cae01921ad26b5bd65d82edb859b28895d0b2964d0623622855cbc6b324e036b2ab061b8e574a41fbc94792a4ea5750b238976ace149f1c0e54a860a0b76b6bb00488b3bdaee2f1a04fcb8ab0d29c66efe0e4661e08c1d7a908772bc8432113bfc116c0ec494b2d4335ea055fab4fbc98509fb49d05100882e89d018d70a36c7e3716d683ac0fc965627212e842b2d11905e9073b421e0297344832cc7507f61e31fa2423cc00e1111bf9c46c8d19d765125fb521c6eb03401e92f85a3db805ead1c638f5673d4da21fe314e099d74a6c1f1443bfe06b097cec35621d24d01e76639e1cc2e6d2836bc29c7662804f390ed4212c47f24384bd99ebcec2b9001a44b87fc30e63f31e6111c158f95528c843e7bb81ab084e8daaef0e09e73bc65d751558b286c01da716de90ae0723ceaa98f9693e3d3fbf15d50ed3f1b6867144ce36a51d3dbeec0ef71bc90cdb0516c00e5edd02e233d314c24c13e2230de9128dd71cc8198b93b25c240855e528d3d459418e4496108b8c670c2e64389f0fff035e327ca6c61f07acf460cbe1091e03460e4fa234cbcdfa048ecdd87532e4ae8e2dca40896c7998cd3a33b72e9b0447b91e2da4cfd6aa2e03e7962c5ffcf4e50cb6a04d642c39ca605c7b2ef7a735779dfdca89bcbf01fcbef05e2cf56232e6b91fe46b8237e2dc1eb2982e39ef6f90f971cf9937d9b2492e5c3e0c6c2d2ff9ad0d2a813772ee27b1bd1ddf4f8ab3defb6fea7c57a7feaf04f6151522ecad3ad100d039ad77876b3f8041e72448041e84755464e86f4f3d399318e9db48e77e4a3ef8c2ceed8d7dd1bfd560b92374c93a464064f5d519e7ee9b2d8c33fa5a1cc59e2e1e796e319ffd5da7bfe9512f1e8b75f4428b4b291bc6c9033a289bf6e2dac3866322ae1b7d59e60ead34f7c528ddfcfbb624539c7c9fbd4ecdca79d94074b3ac069d95b6b59e5bcfbd6771f52e596f41ce76ee71f19882b1da5db5ace20582c3a63b4627266217f47c581e423377cabeb0392ed75ac4da2ff7af6d3ccb21fa6f9eb0f5815ad27cda317d769f1ec1fbbc81c4ff77b4b17acf406963f334f8bcf088c19de56a4056e7834c871165e869e595280f4844388e6bb3a03f5bf3bb503664f5e26bcf4b06b2ea5320d1c2928990ec73ffb28c2afb39af6dfc7a5e7cfc6bc2098ff8bcdfc082a4c2527a4a483b61b448258759d0b3b9b703c933ba059d5b2c4c365edab3ff37d2c1573b8c8b30650b51af56024bebfc1db116c66d6bf686d9b731ea167eb6eaa4191a3585eee732d2f0e81a1896181d31a4214dfc94718398ec012fb4181784c1a381488c08c300a7248109d848324d3aa058669f6da6db2724f42232e909f12a530cccdb81de019fdb2032da4b635da3c97e9727e013540f838cfdd1583aa6e86cec1508cdc8a0eeac7612b22563b6b377e6d8c1797b45aa2278d8795264266448c3f93929028c2f338949341158cb32d95413f5e946af2319b39d45dae3fdb171181959858ab2f3ab5982f244c6da9327b53b2353849627532cea711a5a16729c963c92c97962ec4c7d8abe0dbc6c26d6f66b8a792ba31b37680b73a616cb763927edfd26967023f6491c96c01429862f8eaa56e8af0ddc58c9583f18c635e311c51ba9169da30f64120318864d8b8e7af4973ea163a034d30fcfa1f4c9908704663c742aa5604a22e0f9b583faa98786798ca48010a1e1d39d84e8056f806864e376876683550313d8a4bd2983cb4c690008533f1220a449e8dac173ae0f81f6f139c32a19712a3eb3ea99a067eb58184927251427cbcf98318d408d6370e488f4aa26a0abc631884dba9c3047fdf0d01d264f6a1e964e0841088404ba7c40745134331048e89e898e2d3332eccda0ed57edc8ac4ef337532f7145b74b8137eac1a04ac683c353fd2b0134d45c24180b2328c34040a9df51f7c8c9770f85470029abc095b583556308f8edc06b25306b749f1d53f5d91e80bece50f826eb7d3f5245e4f03c2fefb72c40de6e7564d826137451a4ca82d69c81a145c4f4c8bcd0b3619166dbf0a04d6733574b1d19a4f1c9f467038923a001849f4b2f32a42ea1771891149a99cf39485e203d0c8a4cdb84d83869e29c671979db3d357d4790463b51dc77c36c02f70ee4274acdb5c800f0f5670334281a5d1be3b349cbb5a24fb88e1e3c199279a1c63bea3d1d9e6c79d737e50e36a326b514a7649f9896276f48dbeb330cdbdacbd18210eb0b2de12282e524b6f19e4482196c0945395b629405d297291ed4b9e76bd754724bd6a19cd6631c6907907fb03b86f0a1836c1ee288746ba17a5d2e83ebc933d08d1cd992040ba81d73c8de829b6d044b72adc801149fd9282009bc8ec5f89709f4902e7bb4070767f09066af28e917011307fb67d5d1798f867d91e2b3ea6470cb94e51b60ff6a5ebbcfe094eede329e7154016e77ee45964c9b69bd7645dc7be381b671fd10f9ef234bee2cf260cb076d1655ee511bf749bfec257c23156bfaed1bd8ab5769e06b395287b131d112660a40e608c2cc649c63752b4fd652aac963603f2ecdc01441609a85cfcdda5dd987723f814508b15fee91bb002bec6b715e2dfa20eab52fb39bb8df2c28cadb77d2c4902d343818a9caab32733324d38e2c89513519d81f6f60511a7aad1b71eb933ade678fa8c62af2e0de29ba29faa4e20f4fecd2ab7a3098b8d147e3e7f7760310759f16b93e83bb7bf290d7f9fc91dda64d6b404df4c72725ef00b2a7402e87d3532c352ad31afda1bbde789d977a10c8d392476cc6a5778fcc4e40c28273c7d5c304bdd6c3a9aaf57e2bf187d983367866f67ae5586a00a56de614703d549fff6b6d63acd3d2166642b3167a2bdf51bfd09011b81c7cbc8b1da3e7313cbef651bdbe8191d71583c05e592227bb3f57415fec2e95ad3dcd8e85972580b8e1e2ebc18c9c17a72aa8eaa737d2fdf4e29b3cdf7ffa297deb5ff25aea6aa857c843c6de36ddfea61005e6409caf1934f7469d9f83a5d641c36c818fda479a5851c4c903133fa3992c1b0020a9096410b3bda8789fa4cd6828326a20943322c109aed9748cb195ad3e210a785816568b08360b3381fd990c6b2160a77b29cf205462d3e38f31b42b17d6fea98137d4e2b268460e1b9d6b03cd579bede1621d62b94610876029e6093631218338a4ab4886909d67861b11d814d8c4e0f47c7f083ec07257e4ad2590c766a873935411d129b3b58a5e4f9c54b9cadeb6f9ff10f72fcbd2db4a9620fc2a7c81a001ee8edb307fd65f1603c6689bc55c474795a92e9d23b5a493d6194fdfe66b81b183406cedea51ca4cdf4680200882b838fcb2d61d985838460cba41d84fd214d9ab589121640de5c13336c64b802e59364be3a057f21500b94ffd9c39b32fb246199c12d08fa34d22f6186f9df2f3db7c59e3554767940d88d1734998d0895206c7ffa94764adf75ee748977a27e3c11bfb104fb0615c37b583068c6b1feadf0433a723a9dafccd3002dee6c76b341bf75b1b65750d99288ba75c68a679f03be757810e6f6cabd4836f6fb411a5835bee4dfbc683830f9d2d8fbb3a81fbf214f613e063fcae5e011b0d0cb1388910f131903b5fd0d502370cfc7c7a62283d316074862f0658db8098406f0c1ae7e98f4144a14ab9f071d3daba02444009010f9b456b25277ce7f4c81b5250262348b09339f43b52e98412f4d4c8b00a8f2a5f984f102780f4aea0cc91028f1068c990eed667a102b1e523bd69837193f915a1092414fb7c83c74d73ebb81ebab9cc0b64fdbeda45fd5cf940e2b82bc16b22a8dcb2ae75577aae0970bf9946145e0fba51dae2da91beaa8fb4ddff1d99f050673c33e7b5dd73065540695e4f1ad893889038975cb44ecfea2e25537e068b649d589f10da44e60ba85a96975ef32ed41e6b3ac71791477f8c5322d15b9af2e11038e6b3cbeee0673ae7630ff6da3a7bd3b9b6deaa30e869be682d14592b99e2eb359574673fe3b80a8ae7e1e049c2ec38da402280a9dee4034beb4d3e74fa294fa7002049bcc9075cee9b7c5805d2a051a0a2a901507994c46d6d57a84f5ef3f734ad6c1c995ec370eccf73bc3fb8e4cb24dd4786f94e1003b1dd23a49794a7530a7683a4697c1ff052bcc94fd5fb65ce878d270d6c6accaf38c0b739ff7133a33f545a631f08f05bd93b1634bac4cbe4bd97044c91816215061eb0df262f7307103d684c056628de591e37abc4ea4a574b692d3b784259f969a07bb90ae8eb3757a95403942c522a43ac2072731a793b48d46be379b1e727b8b9318d1eb442ffe0f35a4436a129ff9a62f02e28cdbba014af2b93571a0af8649c27e7ba1203edeb869490f3098e63e07fe9698de037212e465eac1121ffd9978f1ba978101b01c46e20cc83d087c1b9f54867d27e67e8fb053129b6d085a8237d7bfa6a013e5670809e48f2ae66d5bf7c39c469b9cf6552886bde67edb7a4e00784b9bc0d447a772178b9d86eed00bd4b3dd712c8c3b17a42e8073daeec166317caf3551b43bddb91b3280dbd24a0623aeb4000d8f32b5c9bc8fed546adb6b6a35fce43c0bfc24974bae38b3c6e465e3597dcaf66796dbb29d1bdf25af797ab8f1bcd81a8fb0a205fbc71021131fbad3e6e88a9013e50021e16254c7a8b583767f5b4f16c830e0153adc29a410409055b97249c9d9a327595727433e4d3fbf4a2bb50fc98d813c13f39e61ebe026d0c703e7c0888ea85b351c1a0044b91641bb7b7e75b9ff21f37a559b7403467bac2bc1988db6f4420628aaf97ebda482fbd0152a643861d35856edeedb53e6e9d4fd62b607f5c01a2d03f0eaede815375955057bd43c4bb8aafdc77f08a1cf96c82810f8bf414a8822365a719979546b13d86c059dd1f94f32a7b875ef44d5bd2aa7bac9d52215de3aea17f193f29aeb2135748310ad8ee1856db230d7029ae758fa4aee3555f10fac3d0bcc70d41df189d3b5df1306849b48811ed05f8111a1c5ecbd6d3542014c2d368a7ebcb4c1f419fd8560094b41372cdafc63d569d7899bd2480744e63116c51e792d8bcc03a711eb5214d525e5ef32e84d5c15d525a4745eb9224dfa43c53fe7e8f1b54a6249b023ab572dfbc46cc58ee7eb10498717d4fecf96243544d2c24393a6aabe7812d06e96a17c0a983537f475e045a7e91c78d9ebcecf69eced25152cac12304c20eb6109fe01e7db5050f7bdd7a4900071eb585eec4c39affcfc9a47efcf1f2c36fbffdf2d3d72140317fa7e2f743b470c5de7a9a1c358d487d58f361e2451a2c07ed2ede0357a1e59e251308ee5883e57e3cef353f6e8ac8ed98e94b5a28ad22f492d2bfc2e15698de143c693dbfe9137da7a7fd3382f9a9ed4af09b1a813f461b03bd10f114f0ad3c9f7d041cb47b2c0c38682ff106b1c71bc417cd5d5c020b852596bbe6867083f4196e50186e504ee106a5871ba467b8417bdc22bd7561438f4f9cafc871461a2ad24de5299a09cc84c404e904466542cdc25cf7c1d536465c757e08c39adfb9b4048eed1d4b32d76e42e5315a9697163e6eb102e3df671be8b665210f40ccb09e132f91404f016572edaa4a5e1335602a67d25923909a2081091f13f04e9f6842d6007809b72174035006e072a5ddc546baeb0bc622f3e341384e82fc8a74d91a71d5bca748a905198401360899ca24b8282422ecb8e54bd54e3156b67ad0ca64426b11ab2c52fad6b245b82145a5d7093fa376a79368daa13b9147aa7d2da8990a22f289d4839203c49be0b0397f5212eba4d489c7b9ea31f45f30b499ee5fe971d3a78eb46c3d9d72070664704e828d6bf4b2339fd632f816622925a9493be7d7417b8f856d08fc98482fa6bbc81e7d6e49d0c9c7722a2383d0f7b801e1d347e1d65338f06ac7de1e148485d108a3fb2f5dc4de94a7b78e4cc03a84ca0c656d574d53dc4b9a9c1b276836edd2c8e4bc3b46d1cc6510edf24d192e95431b268af1b94c18ec1b771042bde6ecef0cb46972c89f4c5a6db4644f8ece7de578939f11c534e74f462e9d6dfc3a11b44f6e07531944257d5bcfe4121c278cb3494d0e48393febdb8a29067cdae114135c0c8ce4e28f576b70a8c9c4a3cb7edecd900e6df255677991dd082ca7c5cf3b29d3b100ce3d959a446078256a93c104db2dbe9be96433ef652648c308edae4e36be0846b130e8bbc1f9140911712a6fd3a48b93c5daa66880a9cc6619308ef3bd08688ab03f1801ec741824fbb3b7bf13b7fefef33f7ffafd8fcb8fbffceb0bbc21fb0233f195b08ec0e1c0e304061dd20b54bb0217811eabecdb1d92c0706759527b13761d28bc4ac445c81d2e6fa02c93ac816956dc69dc4957f9d90e97b01b69e213f00fe3c1bf0b9733b2bcf6b4d7f9c132384b9ebf0a15e82daf76f7ca8e8067dfb1eec8de94b191d3ad0825629352ec8f61d9d889ee8e8a5e6f7bdc5c6643807e97d9484546d34238824b0ff3ebd31e6b0c2cfd14da60c6fd0c41852e0a768d97c0d1cf60523ed3775c40e95e0524c411fe9c6181c721d880e920dc028c781dd1ad2e2ca7d5f0c2e6a92b6a022b75c195a4a133fdd59e66354cb372140e3d84feaf31183074fff8f1d7fffc02eb33fe4ff96edc5698a5d7b655e0d12e859a9e40c98adb8b6c190622f882016a5fe0c30eed179257ab77c94aeb364b645d08209e41b340ed8c0f153e21b9ece6cff4f3fe72b4e2714b14f8b25dad353f92685b23acbb195e67ad8760d2b14f8cde4a48a7b8b6ed4837ea35d1005b9eb5fe3707279b54df56afe647ac7bef3ab3bbf8f1a488e7412581bcac47b952ae26f51e5bf22317140da5ec244d87f3d655eb106eb29bcc8117e56a61900d761d61162875ec9a46d385df8fa79fa7aa2482d5234a92e948fabcdabdbe2b2ce4b3cf5645645e98f3119d76ce67d8f59b7c3cf74d7e0e88071be2c46a78d316a9019eec15d7fb3b64027e3edfcd57d3d07fb4ada7e18d099c78483954031272b3dc01deb309115f1b202742e911e4ed48a3b69ea6d6547d554cbd26ffb7ddfd80d73662320347a277139dcc5fdaf5b8756ed0e0bb7e647c672807341aa23994e4ea8ceadcfb212c608f30fac29169f9f0d9d79e86e7c4d6d3c008ef441d5a3b4b2c23796c8b5da55cbb818dd35d9f69e0a6339d89c18b331c94cce4769631281cba2cc4db6d31537d160f7d5899104ff5f814a5433c03c9a3c777b84430da8c18c03cf844c1ed5fe1c7c243f1b32f3ffbf8714338333f239339807edfdbb59095d6e78df8ecbd2620c392953e2d2c1f0b21dcd2f31352195d0adc041b6e449e2f04dd713e870db6127c4b013c583e221aea12ae49da96b460e3f21b328d564b4c77e00021ddd29e10260855253621f16e80effd18360513dd9c0f76e737f9beaac00579c4da28a0c699c23a3ddfdf14a2f1105479f7636cbb8215f53428d214d8c91a92fd3553ea8f3f5efeaf1fbf12f5be2231796e99066f7f00f6dd45f3e60bb74f09d0c8776496676ab3c2798e5d818a64a99f694caa231d975e1a477bd4116cb35cfb5a9317cbd0a7032cf0a51d8f9b410f028d2fec6f640c96c50a4ee9bd70ac768fd60e0b9dd16e9770e4aa4bafc3006540c8e9146121eb30d0473a6794289d5bd405af488ef6e5a51dffcd7b6d046d575acb354ada00c859e139c7d82dcb4b857accf2464c24cb0b02d123c2c55418778718a2ba65e970fa318431057ae576e45681ee479667031e37450c35a291b7ce490064f548a563c66ad652a735274612e1dab87716f88eeac27abc45e51ef311f303787a80f0446dfcdbe443c9724564683e5f6066f4561ccb0808943d55c39208ecd4306fe9087e879bf796e848d80a5600c220d4238d1ee8e9a73876363b08bf53a3df4e0252c6330d8e63a84a61616d4cddfd60a2b4809ecc63de96763640002421d91cc513dfe7fb5b7fb73efce3873ffefce9f71f7ff8fdef5f48d65f51db7e2e132083d1e2070026433fabfa5e87895716c9b07037e430d01e101d4ce2decc7822e4823fac759c8f82e4c61a998be7b0ecf3e98f1b5591281c736251464012d48ac190feb09e44f056f681d9d59892018598915395af8204eefa7c2c4bf109cfa7d2c082ec427cac8588af156dc84fe7338b57690d7304ef84b5ae81ac86e58f5a1e3790fff29db485e3990a2c04c2431016810e63f9e85896954cf260743f69d733584c72ff484ca2fb030160112dd75b6ecbe7d3fdc442eb205ca0b9be0f032e61e9863bec3339f85a307b8cdeeaf50d53e0333b0c958c0f96d189e96d913415f1dd66f012f3ec2184ac4daf09ed7d9b9e39b67f2c8270411d8bd8544bfcaec814153714d9bc887c5f4bf8eb22be784d7d717e239b7cdca77eb156e76f11a622792c22c383ea18b931f68217190343deb46528328e2eb8f18f45c607bd2952bf2b32ce85b745f2f7b5b4efdec867e8dbec8ad2e72f0a779237fd8f70caf9cb1956e3f19b3fb3a7ba3942864a1244e671843eb3c73d15817d23987b2f3dcea767f6f43a9cda53bbf332cff86776453f7cbc594db4af715c107d712450d0ca498e35ae2f090be2ff11168a24da219e4ccb33598ea41e97158c713d998efb158e6ea8954d803b0a5cf8c8eb6ffd60717ad1bb84355fa72f7117b982946eeff578293c73ff7c9f43ba2df798ba741b5fa45bedd2adbe48b70ae93652ba4d77cde00f21eb21a5db44e9369da4db2ed332308fcf7cdcfc108cf8d96c7035681da9933ed3b0ef832b0b96b59e8bb0134a9fa52d31ca260cbe056c163955e9f4031e7143f07a224a110961a85b26b51f02cde1b2dd314261c6cc46ccc4e568a06ffe952c029b920fa700868a4c7f35101b134aecb809cc0f3d1771b6b19015b2d7f1b811b193566324939f6402826297a8714965eb7c0b056611ff28f0808498185c5ea7dba39109cdab284b0c19776268a5b20012103742f79ee29aef295f2bbc31dbaa57cfde700daca54d289ba5aed9c6292a82538eb908de517246c08cec95202060c3bf0bd05563acbdbcc0e591b8ab8dc25e82f1a780b8ba27598ba5b5dde9551d21e1a47c75a9acdcbddd1ba47b68fb11c5e96f5bd84fb0aef86f1891a8b14192825d228c078cfbd036d02e1d91d8581bf3aa9f5571f2e361d825f861b65dd1b47bca8f1ba29116d0cb3109ef70e28e504983a4f9e86292965cd8e4714803ab1324c45d3430cc5980a292d0c53059d0ff0149f3531a829042c727f191fc990c1b13042821b49bd13d669106ff228657415d475f17ac727475c51a74bcd3e32699a8266bdc85caade2f7f55320946024c4eabc6d7151b95b5df315982927e547ca20f63c87d0f8e9f10af0d6a9ac0e3669afb7bc29abb24d990b5d2f465f9585a1536304375e90c6a0baa88d6ef6a11c6c8dfec9868d67d4f12c6410abefb23781228e25ca8803045c84391b80857376847e65e29889305187d1214074cda0cb1b82791aa2e226251696cedabf6c85716b30cddbe476a95310fd70bedd48449bcac4f652985de1503170c3f4e54ae3f04a5cbba61bee16b6f7b500836d08950f1db2eddc5970687ef33edd4f2c8d9f6788fa988a587b43253304f673a91aad8e96cf77ee5a46378524a3db6d1e7d1bf2282da98d5173a35fdf9b225ac6074d456279136b32320a8e45a63792e18df6b95f64e8d14da77890b19665fe2ebeb77e5364fcba20621947d130ceaf162ab72b05bc113c69b420a4173208923cd02309d64b23e296fa99fdb9edc8158fc3566313bce334c1e035712e5226d2d269588f0eed30dc9e8bf4496832a8c73909a71b7c12beab659959f608d33ab59b3105f31b7b3fb44064a3c1ddbe0e5198fe09ce03d6ca886a92c79301006686478e67b6a9c8b404cc45a0f4f4e78f069ef1a03cbec51712083ae13e768277ce18a30e91eaf5bf7bb4e15075c5f1f0fc5d2de3e490c6dcb55eadb990e625f0349aba0743e4ac177a53645406cde8dcc309d28bc4b1c8a881995cf2c6f0bb3443a1dba43b1a71566470c7c683c2b9489ad000464f2e19a390fa01308dbae1409fe5a98b70681bf5c6fea1f294bd753af2b1b4d10966ac9be856534b8c71a653f4144e15d31b432b31f7958f933cf732b1a5a7efd3b3c72f6ba03d1e460432df6855de6a63de6a71100efceef9617e3eb3471d5ae119a8bde989d8de74a7e1ac339546256377369e4bc6ee2429c534684704a2b745f294bd715cbd291ddf3f47deb56a1eedd3fbcc7366ea8979e64d7d38cfdf371adcd97977528f4e6bc9f8c5dfac48e358795b64d47d7fb73afa0a3a86cd63a97d2d744d61103cf6347ac3cee18cfb9b2e7f53f3189def5b840d65648443b2814712ed199f25432c730a69b47d4fb6f5a9e6b7ed29f39635ee86298ee83040263f7fe4a98c8631da681644a02f3a95d13222914d65c011778ec27d53cf804524d0590dfacb11b38d3aaef3b3068a0da1466c68f3e42159263decf4ac186594bea736b7893dd3c6af5c47ddf3dc8363916dfe1075945ee7ef1953f8b6cc342ebe33abfef6c37ffdf6c32f5f9854bf20f57c2136a2eb4ca52352ee0c16b97360d04587ce4448f7109b9e0fba646a137bba2a748895ee3880ca81f6b1737304a60e3720e676e71db86d7fb6e67123cc8dd655af25ad75eb61295e3722fb49a552a473f7e4bdfb13d5b5ed649308231a602defb29796e90c77ceacb0eedb466824991c725aec11120395fcb3d9afd98f9b667bbe8fe6b0756d2dde4741f00e00d2ce89e1efa349badeaeed9a21594d6fa4d0fcceafc4c0308913a131f365622fa97030d35168d7a26fdef1e55dce2ff9dfeb9e2218002a50a0134117914a04b2410f32443ac3fca070807d5e3292f157260d4e136d5786dad54d218220265589aeda0879db93d764c4a16afd5282c99ec091d46ea635edd9e8c7b2c60d58ce11e18c608d8980afaf9469c02006af4f66f717022ed2cb8b3e6ee00126b3fc151e265b24c20ab9e62b3de26a9f57a4b8c8a0374c9d122396d489fe890592990670cf331f50cb1208f64b77c6f08460a69303a249b11208a2371877229d94b9e7d399093026113167e0f9df225975d0fbb1b41e5f66cfb4ae6d3bd2b1072fe61e08188995eae9ab84b04910381f214830a4ae7e97903a934dee81ab20dbd824f6e8a2037a9b8ac6cf5e7ddce0ff23180d110a6e9744417b255ec9f24cc127026941f4784fc7ced1c18f52168dc6d415ae1807625847f28edd43b280c74dc99cb24be6e71c24b65dd2810036a010263e7930ead2475446305a31b2a50cf95720a36d324172bea96146e79f9ffea6ccc8a7fda64c6c045338e502877c7887dce33ecf32c11b95fc88d873a0c1c96457eef9837e6e3bf26dea056c9ed3e950489734e6236a306da4080222e3f9ae4417b93197a37154b8006e9eab5f4f63f5d3969f4b9c96f25cfe406673de0374a49bef77e9081dda01c27402fe4fc72419836e7dfe7a7e18f2393526f761cc5d17e66ccebfaab6b1e5360557b18619e7105112fa6648e81a77b529c40a2bb5dad412aca59a63975aeaa2790a08c322aef0b66299fe5db088bf7cafc7cd88078845bca3b4147d2ee246836d57ddc1248245dcc08fc945dc6099e3626d306c72113749476ea0a3214a070a5abe84f734bdd7a001e6526d5afb026e581d7a2e0dce58c00d62001770e3c6c6ed33eb2769584ffb0038d288abe3bdf84c74c1e5c7b56a9bd5e7efc56a7b9a52db7301a7e2810b780aa12fe0d60d8adaf16a9e0b7832823c006f185101443f4e7d8427e2cf532c10817fe63307a8d58c2530a447f790b2fa897304d1c12b233f4df9b6bdcb8ff005199550ec063f9bbec9476b07158a8c685ebd0629d313e13f277446f66e65efe4b50228243e6e963a37f9660c92a11bb54a17f0f39186e0dfd310498d7679c8e48608731e20e87cd9f301681201d0dfd338881898c1782430f04df4e71eadf9ee4cf4c79fbffffcdb7bc6e4f83fd3b7480f40dd8f0d30364c930f8e8083894693c4d4a61cbccccda4c580d91af23d0099764df5a0ff4209214545ce9df5004c7f4c6d0af82421792c9e2e00f37a69d57fbb9c0d11356797c984116bbef864341c2e434ce28d9904aa7091be2ce95203131b236d901703e52fe9f41c028b938b2c798b81867d971e79f04af0cd094c6c44644d2480207d0a123181e8b49f672b7d6dfd4fce5b253f8c2d84ce4afd38694c6e9904320503ef09c6a0da876fbec7d1b0b419796edbb0cde503833f7bfdda21fe23fcac882bd1bbd410d3f3d9bd8f5b24726282749f6d8d80eac9083262a08e203decb7e0d079934f34089b4007d8883cc1fc0a8e21a54c10c9b9ef6923845eed6374a89fb881390c2a2faf61069b1b56a93ce9f2928c2bdc5ca6e8dd075dba4eadb9a3371f3790e39e6ec205f8948c00988829307d1e10fd803ed3feea0e44a3b9ceabcc4a4b9708af320a6177f2088a4dd4bc9d6b7ac404f4934206d06718f2814ecc57d5d09ea3488abe6d0aca9c6f0050d53edd0082e574f7fecb7bafbac82a77947f209aa71e41d54a2d09b684c0333926699d2a4d6454996ce32c3fbf38841c853f9958da3511c8c3df517d57bc572ebccd8fddca606d05b2569e42f455a082ac9dc6c95b37827fe7a7eb3a47bf4d1c0411605c6ff21bdcc81820160f2104a121095e75fe8a029a0fc20311c9b81df94ac018ec924aab4d44d732e61c367b12abb06160bbe3d44dd18e349ed548da739a3c89902d9aef3e8df2d6cb41679126280c403a1d0619c03b75bc3fe45b27af858457a85ca8ab5c9341d96288bba9014124463684e5d92f2e064b7f55410457627a398461c46d30ed7b05c00d0d617bd6af76c324effaaced3b81e13f7ffee3872fc485f06d540ae1f8625ecb0709653bb66261cc465ccbd52c4365ac5d7161997b937ca636cb8712c225e2d40381747129bfe3f1ec2fcffaef160208111bf35a0f754a912ba88df748eaa8cc6d8a6c1669272380af9f0d18ec0a64a50a2c79ba9b0143c850911f3977dfc0c1540e7c649299e7d861dfe20238e18e151703db7245bb1e37226b01d27d1706dc14b9ca08c2b14b18d5bab8071079a7928f9b520f9749a35c10c31b0160294b84d954712a92116e71536df866836a55270e409990b2df94a9d3b13df41d6984de19b76d80419dcb4cac35531908b8a397c284813de16c894e1e4cf3923f62a8ec2efc86a1cc2064ed00a23e97c9756c731d0d923ebe466799c9f632b9c5689ac36d272edce9cbcef520c4fc9c934607242f33e4b800b3cd4c9b42f2e79125b873aea84cca8deafb85eaa4c4c052aa36b14ce4fa45be6c9e3b8a6cb12b83ba4917489999693038f734c02e7b047d9df8425282ac51bad08d690b597860b1ad202d878bb49030121ee1f80a043adbb433416a0f598b9362eb652e1319852b85e148eb2b05d4139bc1c5db1b6246cd19d8b98d6791b6fa80855a166b8649fe3086f13362193cdf51a9d6c8d828055a725b8c5cf4a09c7849fbbafbd77bd54ffffcf3a7df7d7f7abb5d69fd6abb8a729c6e05ae1c05717e923a6c8d40a8ab9d508542ae777e0646c2c118185b75091d0390c446b209634d017a23888f174a62384a490a4f6857b2ba2bf5ec2711e4a54dbe74fb032fc03400d0f0c5ea72f1c3346c54380c4357be01f58654d10564e74fa38000d9a76c7e918200b5430d3e8fba90162cb606663de0aef8a07031ff9249dff16cc4e3660891812616cc1963680f1479593ab336ad3754002418a27287788cd16523982c120f6220f07489e5c200691fdb3639f67c3efeafc7c67ffcfeeb3fde8f0bc9f5fdb8b0f6b40433f65dc39a761879c18e89e88db274386d487486d809f03f2c6601f09e06e429c52a901743a0859688c04f5f058c7c9b95885a30791ab58350a3067529221b188f3386545b345658ccf32204f5fb6ce0e3160973d164eb29a007f67109f206b19efa50859616257abac9874cf45252789698804f3cff83cfa1bdf6f9f4c7cd68caae7195dd57585f3e6cd3f212dd43d75a0019ea0c5e48090a30793edc323899f272a14209c0069727157f5b2ebe226e7c2a546c490877054ec5cfc63c6e118c323eb96d378024216482083e085f0a18bbd1a5c1265b58725db0145d08e617fc2b5e92ac6d27b0a9376083ea79c90cd2084b9b68c53e1ffbd7a3f5975ffff5f73f7efce197af56b22f48d7cceab1921169a3d93e6f8552f36a20041f893d46fa6b305a9ccb487863aa52091b2cc1b8de72c7026d146f7da9c23e1b1790d0fb54e9e22cf59e086ba2404f80113fb28f846c61cedd24dadbd2d2a15173678a257ae769e4ee0817c3c9286f12715087a02f11d38a6b7d805f4514a02e10bf16001648c74aff02ebf89b09dfbfe31c1065fd48db4b194cdb48002080d382d00eed342a8e77950388d5b637a4f420d9056dfca270c0787eedc74dd47a5c54dac08fb4c4426bc091c2c993d70374cf50ddf634e3f5228129652d1fac43a89e40dd3d5f695eaecbcb131f3711f353d1466aea8ea306f0384ca40fe6fb71cb4b5e543eccea92714eb74a2409a00a1a4ccf4688344f28f97b7d882dd93a2f5d36d6ca0b89b56a920f00a3e130eda903a04296fe60fde6d48bf9f78f9ffffc8f2fe6df17be43aa4f4902ccb80225389297587b28505b2e297764d94be2e2795c67da6ffbf06e8e877f068d049efe6075c061fd7c884b06c4f4958dcf70c18c2b2418f18f74ca1fbc6e167ab566e12312f661e24262bedfd5f17e6b582a9b183e0e679ef32d81a81e1f1d0f52583e46f9889906b4d4bda7588eefe9cd7dbec2f7dfe63f7ffafd8f9fffd77bbc6aad5f5831727ceee7f06789665b844f512118b34f3920f94368f6bd44b1315eb024988ea7a44b84a5afba78b4ea9600990c312f016109401519de1280d1dcb2d03b197c728d917a481346ae899fe7b11a282a6dd02c1882a21a2cd40df4cd8458c9d0f365ac04a59394f9714f608227c311c1f34855402f974cbe88cd5732ed3c1242c03a38ecf4b480c72018a4587b52754658cc23f1c7297a78fa0aa4f20db8a4c7d5276ee191f627da5d42bdfad9646b68db526b0718aa95b5df3b7a72ede7a1a6c4435edb42976a4f5ef1091f372db97373c3720299024c0759fb270358896c4a779ed4e1fa0af07470e8ca61a3801aa94ccc2e7e92a11346a88c9840e043173a0c6907d00a5062594690667e7a2909a74a573e4389690353f0268dea4ce07aaf743ed1c5bc4d216c2e6d374869a4679727ab85e0005d8963db99d189024c6a0603eebac209c72a29ef1b548a698ce8073091d1b728d72dc5c9365a1109d83905054cbfa39d14ce277bd23a5a7e61c04ad646371744eb27ee7b5008261b1d6709dfee75be3a84d47e6c05d1f0a93c1618d8fb4fd9e096301d5d77c92e8f215ae1615126841fcd7098f3cf76ad3e9f283a5a588a7477a042f142eed2e07f2980d92c0b654f5ff548a72ed728846a6fc8e67992658fb365824d3903bbdcd6e309bc4740da8fa63c6e3cded5b0f515d885d44a8c529709e25da3af10016a8eb4608bf0f33b09e1eb156b90010f5fea42c199254b7735697754b4218375e3b00724c31e2b7ff5fafc9451090a7e571909a2718d960ed28368c6d7f64350bec656fd808a0ddcaff82ac0d2488db5ddf1940dd7c2647e9a63087c4e331ea6e52b9ebab1159cedbd96e5d9fec72dd11b3475f2e0446915d1fb08625f8cec12de7440b4e2bc9797dacb556a71ef14146b171e231dd7104802f1f66ac0aee2e2604b3aa4cce3f17fbdedfdfaf79f7efbe99fef15f1db5728724fcd06c2416a226d71cb3bf6899a5efacd7cecb54c135fab70949148c29152ec54b2ad021146d7126dae636f9e7f3c6bd3fecbaf95574981387c49910a6b88f1ee733c443f70459fe7b92dbcdb577ec98b570c78e22279e7f3d372418bf3869606592e39b1e59e2f99bf53df1b6b3ecaefec93dcab036d397efaa352773f8fcf763c7fb385f7dee22d4579bec751c5fcae43ff3f6e522a56a19adbcba1c45c84f00a58f9ae45579346afca2abbdf25beacbf567e9feac13160aefe3edd0af69a54e2f30139f263f5e7bfade671838daeae35d7bdb5150c054d7083916c2026bbf7126ccb25acd5ca513dfbf0f3e92e3dd88b6cc507c710fd4bdc79efe3e6df301a1b06d3594dcfe7723cb25697964a7c1ddbafa57a0dfc02acfade9ff4eceeb93dc787e92d7f6de9b39ac70d54e57cfddd77e29aca67cfe47a74dabd97f96ec2fffcd36f3f7fa1b3faea0462e598f126844575b9cc12f92e202124e87816a32b4593ab4597cba295b55cf1b1ef2879450d8f9b150128c96620ce0537254031fa31c6ff6e3146fc0e4b7a1ef5623c4e19d08575ad9685c5e040a60868b09c3bed53de796003c4f07e3cf57133b89590a805aa961815e4d42e89761d19749813ae500a6fb2b7ee5f35968e70ce89610c55e9f96d44a8623eb83acfe533557833b012a18647482d40d0bd29afc4318f798ad62f07c7d56bfe6eb0eb821eec54ff814c37f15b627cd8589e9f6baaa59bcfe7d23855fa563767035cf2f5bf0fd67211eabc7b6a5378ff30979654e2d83cbffb37f3e49ffffce9c73ffffed37ffef4cbafbfbd9f2de1ffff9da1dacf6e2ed1973d85b05aa42347a91961975629a735a9cbb16b003450dbf3b70fe110eb8b14f479a5ad21d962cd65707abb77a4d3940c9f38c4b69bca1a434127b7282f15f9956cba58d435c5869e8905d04d2bd8059fbff35a54b7e76f17c2832d26799568f047c436ed925e3c7e82f124d4f679d9db5b2254d53555a8a9a3b01a2d19a08929561075576dbd5cc1f9b54a7c95075480a5642a1f60b4caf1b374c9e857d69ac0bd65d165c7b25ab667b99875352ba80b2eb4e232a980a0484598ef426d2acf177efe4687b85c7dfcf60e4bb85e1b3b143f0dcb3e7b3eeeb5ae66990af752b7aa6b68a476ce2fdf17b2beb64543416f3f7ffa3828dbf367c06b96b6e650884463f95ccb71c1e2ee9d1188fc2cb96c915f024a7f81485922bd3f4b2e9f3f8585fbcf9ad6a009b1bf811899b5200c1cf714d4bcd7e0edc01128b4ad7adfc3d72f88ff89264ba96bcbfafc55d650ebd67f65ff362febde52d32a0afe89dc5e5688a5f9329b173f53a7bc1ffdee735d4b7e7e978bd4b555253d85c872d18091f7f95b30b09fbf016a6250101497e86097883dc0e1f8b9c52cfe3d3f2fe7bc36f1eb89d567effbba5c0cf3ebb3d9570e4edd8e41cb3b4852e883f1628411bb58fd38a6c1b30ca7c7cb27eef55f7d22e51c5f6776c02839954d6bf2c918d135a72b7d62c4e2b5cd57b63ecfdfdda3e889d31568fce67c30b3e6eddd95c09661353a3d45fc40b070013bbdb8144c28ab7e4a7b95c83020ca662dace555b6e408ca582b6b6a1c68e5f993a3f0655f7a5ea8cfdb527b6d35c7f4cb88f42221bdb6c5e740dc93b5b5e5d799c9a952b794f2da5e7c283aee6c284bcabec2bfbe31745fb9bebb82595a375ec9afb53532c815eff8973b603dce71c1def4f9785c298f5b4cba264dcbc5e786ec31b4b596b414f525e3daafde79f5b3748dbec95c7be9cdfffa9b54c11a16fbd25f75156b908692e6a5daaa12f7a38ea8712d1aefacebb36e9fce29d63d06ee3f2dac12f5558a081153c5bffaab1cb1c400c3eed2e29a92beae1f3effe0d52c71374e3e7097a5cd746d956ef11c96fcd902e6f8f3277afde3f9134bfac2932bac2d25ed2dadb93498524bda7c5f4f1556b2d37e4e5a2025d3acaf42fe9ade1e38a148ebdd93e9ba935da246777cf68f8bd5d5f6188a7f134818c24f8045bea5559b2ec7877401c3f38fdfc7c6f2fa1b47a0fe09fd7795f8f25b7c5b7f7e358dc517df3b5bf1d92a17bf2ca7e700d2187cd87dde57f31a5bb9f7728f9bd50079466af149bcfbef9aca49fc43df81753ad16fa224707f94440f8050762b5cbcbd9a2c691faa7ddcc009997c0ba94d770d3aecbf7d28fba921eda7c2bcd7aa9cbe9ef94975873ebcb463dcecfeb8a2af25c17f910d8856259f67376495fdabda5fd6196f02f6859742cdc72d8854a29c8ea71532c26ea6de13a76adb2a2abba93752e797576cfab61f9b101ef1b859a4106b40e1281b04f75383fd4a2827612d8a4f3e5881fcbb8308afe9e91e081a3be0c0390053d2fb31307b761fb7aff715d6dc47f8e90a05024e05740da64093ddb3300f0bbfd3f04a8f9b050a01163089df7cc79ad0ada2c127fdcb153f8afa806cc51b7e7a43bf70ed557f5e78dca414cc2e968023822f58ec46c236b4ea97a34f92532bea9cfb21400078dedd7c4cd6d75d8a0df103efe9c20e5f773f54245fb1db1e7b0ff61b7a335f5b0e137411609745493b38824d8faff96faa6b555bfa9fe0a77732b1bb703d8e925d222423a0b089c6fda85dc5e5d77b7fc8e753c10cadde6ef1a9d3c9f5740770a1cbbdfdf302e1357149f68f76dc0ffe144df75ecf67c522d545b31d7e572df8b879de842888daeebdcce74d110cfbbe0860a6f5edbaecbe60f9c06b752d35edf065fbdc2b79f3bddf0cd53716fa8bf880df9e62a504eac272c2427681f42ecbd1e197587d057bb6f2125d1c7c3995dffbde0dbe6cf40157643ee7da1feb2b4ba514cae78313fbb44ef9939506c510db72892e0512d6b6a73fa06b517d162d0553f47894bfba18dc838bc643a8d0e83b60da7de86493a3746f8f2f3bbd610d0ba845a3f41cbb7c1abbf81eb901faaae42761768c1fcf0236e20b8e2ebac3e7ab2a9f2e575388ed2f93e1fc3c4657f8f1894735b01bfaf37beb2d63e1ddcfa51eb79e7f7c6edfb44edd09e59f9e0eb69173e7b50c8fadaf2bb4ad21bd2c769bf571e2c2d58b3c17a103f3d107218c219fe70de210b4929e6547bab5bac86565da6c200d6c5646dfe716a1954008423e5d08be7cfb627d3ec5573fb21650f79f05d4d8cfcb88493dbd91948459ef0d4eaf9d00136f4ababd799596a0a5482e5d9e6a8b4d310fde5de942f59b2b9403fd3983185779a6f8b233bf5337fdf9c3af5f3812fe8fefcc30469f52ddc01807c7cc02339951ab89a004b50d2e814750425eeb1216b96b952d6019071cb0c04746e1227375e9672b65e58e640ba02a1456ec045a9722ab6da44787ef69e9a1857939daf4b819754857ad3014c270ac708630614826bc45e07912d706918c15667862a7ee42287c7a82119bba5ecb70a182ae1744299130be505ac2310aaacb06408c4279e0346a231c1818aee0f21240a5e10fe9fd57009c0e386172dfc3d7d480f84c2a32dc9dc9bcb5d23605d799b2a9ea02671585f535a3932cad54fdb69d7449f0b07c6d1122b1cfcad03c128c5af6ce1bc3d54cbc723f689f51b7acd4cde8d53b5e5b52e47e3141242d71045aae029b940189deebab0c5ee1c7fdebc1fddb0ffffce93d5e92d62fbc64b38543872aa4ec5ef5da646d7b251e4858cb56ad7bd3092de404c766406903400ca20b6b773cae8b90fe5ef84149f866573899e48331df165061212cf2d4c124994ab6c63d7706d26b928df1fb52974be9c1ad08d482a73607aa2c1aba3fdbe7cbdc0aecbde2e75aba7f479ec110759310902b8be406a77030cb5d315ab74ed2971b5ebd1cae8891c825408c8e0c5c267761ea2f9a0eb0174f5f1111bb47ed70505bd49118da57c1d4659b733e3c93adbccbbf2292e034a263991872594399a32c6a67e31a5c13635bcb0699f49ccf4f9b47900b10950df37c04d99bca5ce308c5b4479f085a3b2e10821661cc3152d4ad7169a58303c5fdf89e37a8f84996b849830b3fdcb00ec60122cef4f4157ec81be917fb5550064824d304dc788847c325466dcd573f1ce9a68092a78b96d2512b16c8cc246bacbb8224205ade342a82240e6a03124e0902f690864774e7d2dd629327ab6eeedcba42902ca6af520d96b5e46b2e9827c9b35471d065448bc0518998047215335049b6eea12bcb910edd65ac307d05a12e4996ce5f912527bef608240ca9a97b7d671cf34657dfb21a8006ea340ece914c2ec88d915523d4baa53170dbbfdd79149a95892cbcfaca3f817b4592ece9549e444e3ac67ef96a6333eba8d4ab853156cd26084adc1dc8a1293c970f4fcdabee7e4e1f5ae3c7e8cde20cba420161829469f49b9b42df3dffaa65881042c07098fa6588eb4b53f020fa4867d46581f7914de09aa06154a963cd32ad19ac4146bc763096c3d079c673f47e1bdec8c63dc447d2a9cc751c9172b3469745dbad854e306f953b173c431b3722f26960cc7bfa9a725d6d4f7984c4f515ac6c2923e409bebd29c1c5525c8a1b3983308a6a1c0170f390c35134df6d65b1a4636eb6b5ecc0ab39e563ffda2c4f002fd8f1acdac4cc639d38a7cef9d7944664ab94273223d6c01d14a160a94cefd0ca9af6e4e3f325bbc20296b65464a4f982d7b4f77b3a97070e471aa0137afe75a465aafb486154219112f3b60cf90514226700dd0ad3785952cc131159f4f1a1754b168e5244be4004bca71bb4d8654f465e970247cb090a3b04de39e452a2a24fbf8b54290c51ec07ac354a222e6cac172eb533937246bc20b60b1796f2ec9997a38b6f61826340f84f0e1303746e4bee111eed9a55fd6eedb1864b1e7d6abd9e2533cc2887b5ec998e7afeb9b71c2a2044ea92c868ec53ea68eb5f8ac4bffff4c39f3fffe74f971f7ffdc73f7efde71fef4f7ee92b0783e7c90f38193ee72c6cda64ad95be3029d0bd3bbdda05914bf789bc2558f0d72011416231647ade788559e87de3d33032b0a0bac06ca64b7dd6c0b8d758120e99e6877f0bcb4b8be05b459bb71fc27386c76a0ce9f8ede270898daef1ad1e3ff1805ab7feb3a6d58aa29f4b50b8cd5bc8cb5177ffbd692a6b2bf6bc0e78aefc32c5fc0c16f4dd053e306efdcaa221af25199c62acbd1a8e8e86f3e169be02e8c25595081cb1e80ec0bd4814c8da2aa28b4aac10d563e85ef2992cda55286ae564c76f88cf493e2ffb1143096824313d7ff31d647bfece758d14b46a259458fcac9c3fc1d91de5d58ed9cbb90caae1d44789b678f0af0aa3df0086a86b294473ab80fe0b6b4bbed10406e0d7d7ee8bd1d6e62f51ebfafa059e57c086954279770ffa2d9cda4a37803757bc334adee62b62714db1e0f862f1f50505c323617155b3f9ca26b1aee15553c82b063fea359c8683a402ef178e8693158be3e2015954ab3c078a66a5cf461f284ab703c013934d5eeae73051c846e5394c34fa6c4f9fd77da5adf21c27c7ef639c3c7fe7ba8692a927a9c7c87856df078afade9ae3f3aa0be2499e83427386c74b1f14da0a7ef6318188ed5a20aa055d348145f2f96111c79eed390410952fe9799d3cea090b408bf2f9bb7fe4e3b710289c816c419f1f5435ac55e3f3336a8e6bd272de12f019df41e4f0330edfeaafd51d7ffca1971f7ef9f30b85c7174ed55aadafe961b198771cc62480b40bae2abb1a59ee57d9b5523f171e3778c92daa1921994a4c833d36e5e96ae70eef69bd6a303fe7b5b8da1445ba33fa708475da112934eacdf64a31c60fcd796d7b34e26dd5b5f607c698d6b48b211cd345f45d00fc0ba5c25e7be8cfdd1f1afd27b89af74a140b45631052ba13930e6f752d792d7b81bcaf1946caf8ed9778efdaaedbb73ad5caef408496fe56fe19027f22d24bd67a85c7e60e9463e8ef7789018c56bb220a8a999a27f8850638aab6a61df66ca9d13f5169f8be383aa95d939fc580b8eddfdb6af8eb17fed79f7ffef2d3fffaf98faf220cbf786d7b6adbd40cef45ff499f840cd003965b857b65ad5bc410422c9575ad02524d3e78491a9d78e1408f9b3d8755523fe00fc2628c8dbb744d84d6c41727dc13d60add988bb32d2c7fe9e4017c78048745a5bd7809bf3a12f32ecf615d1741b4a282b0a41c0f80661aad8182e6d9177fd9e77fbffcf0cfbf5fde336c6bfd4a77ff741105c202a6f6c6c021684c1023a388f473b902d1678868f6dce6b96093020c73836ab9a4b56c91a08d81feccbe5c9870e174812cae021a46ef5a86f7035e14b876382402f7206dd81b17233f3629f37958a8387e1a628aa0f9326b0832e1519060a8b298a55536c9e4f74f7dfc080c71ad07ab6a91b56d8c9951422443418688f93ede5c0c4b1d7ec4ef22cc4b3ed8e9326a2e71353cab616001160286a21957d7ef2f60e754baad6039d70e15d139140167025820b8d4e6033912874546df69ac1ba3f1b40324209a92317550116a1670421292811efa0ab00c2af31446145297567caf44dcdbe3db6530e2d5b266c492f2fb52ca2ad87d05f05fcdc7e8e6df68645ca00a1b6fca6fd74b03f93bc1db9ef82280c550469322ce521a4034804425401f610a2b794f0387f299cecf3b732f43a78cba51dda021779c135d7ac064045aa455805d74108ff3ea18c2d12a6254365ddb864316f1ef40f1aaf20429c1147adc12392925f9c1d94247d84f88318c404451d837244967f0176cf265f1038c8f1283ad92b1ad79b3dcd3e0fe4a10fc13f0680828249b191998a0b270b99f60bb3a816aa7b8f99c9a31f5a8cc8bc0da8c9877335e4285fbf5706886b5c20064e1a31e26e6f1aceb77ced086807eb511710bf9198acb31dff726affff44e9b192c30a0de4594d6741779df4640a7b8994ca511810063fef0f6a97bf08f905811b060533d9cd3753ac7e38c0f3686a99e867ac2909ffa8634f405a2bc7d6e8e5f89f54cb8189cb36d3482089470da2665732a9b4e789ec0cc402df3d850e48f188e8881c853df2be342ce5a1402e24588e2e7fce8fd0bb48838e423765cc7fa895ee1f9633d0a402cfba21e1b95a9dc012722c15813427e06952c0c4a20783ebf2d561e5f8375785b443bd709f912e84c2e680cbda3da6766187a3381ec70a81d0291e9341234f5f910a7f21170cf633dc0add29160074ae4c5067315f2378b6daa05eb5118d5d52274c21c7b264124cbe37702d5990e489b024033c5e151cef9881053dff187fcf18b7a993a9591a94c1aca802144ce5a3f9aeb386e86f2103d7d8f3ef72508b511f555a77c45f936e51bcc0a61cacf50f80ffd2030d4e533a8a0f0207ddeb30799450e8ef166631bb0b75a8ce3b8e8014e329427de95a532d13ca09e3c29792343dfebb8824680659569250e6db332ed25917be9199a51202f0e5477f39a1c7522cf9b56c458c16937e4ca04b63a6b8047d6c02dc94c440b76759d560260e8a434ad9f6277114462279d669a7543409e9ea1c88f537ef3933d715f5d1e45943bad162e082d447728b6d4bc11290ac64fe600ce41202321eefafc5d282a83b9c34866002f95e48fe9c4f5304e673ab5f8c1dc90d888c9cebc44682f38021810fb11c2eec26f21338dcb040d7e350ab130da364fec089cd198c9ce4e48ba04cf0085e03b721a328cef001727d21ba0c136c273e34e58b9da4212f908202e19e9afb718013902b06f460796012160013819e8b44e77169c9df2484458891239b09845d2af0f4e3e15c786301e522a19a74646a8523be0fbd9b29b0c26a961a5d4031a7f1852d0cf0c10da9b90837f1441b4e0a30d14e5c019b6d15f49712e8823ee39d85a26594869291ea548211cee797522d9d3d0c959964b1c486e36a0d45ee208458288d94bac2380079079278ed01257babeb6b17443f6d9e288e9e5d9e775a404af248e1c3598ad9711e404b276586583d7c445c62703bfc9a719a8d52e75b50d56e00b7c45fca82fcb051055113c46173f0adad8e517da7acbe8dd7349040d8a40be83af1d8e3617838b52f3e3ccc5704ece0b8efc1a49d4051c1819bf556450f129dbd7aec7cd7c182c0db82905006e0703494284cef9b52d072f30acfee8c136f1d6021db14d44ca4041ab13333334539057ac02bd66ec722bbec28ebc95347efbcc1a4a4fd67d8d2379e4e488a432d21aeab8fdeaf43e3a71ca8dbc4536fa1182356178d0e8c4a26564d4d5898b3b4c6fd4862969035b1250b7c379d68e009e36f1214c5e8f503f9d8af468aed727c928a2c44034cc69e70823a793cd98bd218f6f2213db6c18e18cbcccd886d1cfc126f1228e3ca3781719bba49dab89e359b48c1dab6d5c88cbe8cae167cbf34b95d12dd40fbd6711a68c8bab96711cd41182c085def32ed446c704b5f1dc1ae3e85ef1c601474612638de33e18757442d150c78fa923bf3b628e8632654256981ca046127838f88d189d65745aa9b3bb571da9d9eab835e37c73aea74cee64362eaa32c936d1f2d08770ae3f7d74b018bdfc57dfe85581aa353c6b76be1cd02620b20efd9c6dec9f01629c36e7329499496ccfef5e374913a14239efdbd4d9e9546678f7495b0679f8fcac4947c740aa533d327df7d2a632e35a0dfbd3b90fe378ae89a3db1675da53ff0cdf4bc7f520e6c1c16a139d786ad2e4b465d3829d2674b851834828f3f3b3d2e42e6cd3dc49939ecac6cd5ca67398cff7e1bd064878c1d161c47b99745623613074796399e97ba532b6278e0e5f32b3ea4c1b178e76a77ada79f9a9b0a09f55035587d1ac616cf130302a16de732de9bc665400dc0f02431cbce074624990d19d0daecba70785e939e377ba4cee97b30ee76253995c87b7bea4707ef61bf2ec4b8a83b6474b7853468632716c731a72a0673bd77c1934aa42c6c3739932b2841719d44b530716191b33d6ea4586fe1b3b5dcb38a52ec39e0156e3e10032f0760b280f8732438800490fcfabdb250fafb0b9f83f94496d78079b68202e93ee26857197c521e835074e986399512e496124a1b8e828a0a630aefe9791920358ad757a5638bf5719772cafe73c722c8d58dc1719dd32bd4c9bca0c737ad2abbf2b33aa1ca63238fd0d50b7320691589bc6868cfab11447fdff6578f8967454528e5ebec9c6e9a936ac4b08333c3f79d888a0383c4ffb52867d288d2ef94b0b9302747ce9769698eae3062bbfcb4465eba6f0b2b6aeec03a22a5484d2c2d688e59d70c87039b375ae0bdad51561468d76de8edcafb1875d2e2a698b91985fda754619c8a2e4d86020fe99c91c5e600b40230af45d0c06014eace4bac50a3b7a9e6d39b5f3818e9e31a41b2c6bdc62a3257690f21a947a79928e89449c15fcd6d691d44609089acd3a49e899981b718b99efd33a74b6a03f33757e508de48da128d845119692a12999c85b60db0a637f65dabc2634fa0ce71723d07fe93e056963b08cda388e200f2f4abf2ac42a820e698b45ba3742cf2545728b0495eac18db0d043d36e089d19f47742b8ef217884122e7d2fcee54d0f4bfa391f987e62652592265949c250463a7eb442da1290249cd75f315aeae7e74e1600ff8eb3a56e3c016d4274ec3ab58648fd08ac90305a917d264478bf24f6265cd4676bd5184a377e6b3fb19e9ebbc536eb8a266979ae47195636beafdaf045372f33d43f5163f8c888439991abc1cb0c944da3226c9bc81711053b070d8ceda1fe7b5688e571348471b7f1d56a0c0e1c67be86305a60669bcc48bd0814efa1cc24a54b19fb04e37828332a78c4e288df5dc773b14c7b90cfd599907278f73af98a4419c7439d7a2c8e274170450c65264f833a455ec471c593d9cb214c019953a0d83c12a44d7b484b2339d84c37d026456d9847f5d8631ac7b9008be6f959712425f59d69e43f190303e3a4189bbf574ca3c10abbfc50669abf93b41be1372679b4fd928d0a6cdbe7fc3a7b988ca2d49b323345591d0d4558c1cf65de78ad4c346e61b28e4ebae3e9db616d1fc333c7318030d6e95961788b719cc06bf7f42c40cb0c65e6f0a6c94fa68de71b84b40f6586bd09ebde28434d3e2c61d2f5d5398c6bece75886730990d487de28d3fa1946f240c4450def3587f196716cc4a90f73ed217a43bf01480121d253db8635274e81af69246384c7c45066daa7e2b4e6a483956978771b654a99bcdc22993126924958d13791d1f32e2a42aac32423c38b354e6b2f50d136a0439ff3453b11cfc82bddba9c333e37af0532c9a8eb4e24e87913aadb359043beadba7bfe5c8f6c046d3be7f3ec301127020d7cd2545a0586ff04518051f2a69595e1e823bd26b0ffe0473bae628c881aa43970a9449be66b15efb3594fdc6a673b1f5785d6c9fbc71157d09ad9888fc0df3cefc9204d9a4cbf24b38cb37f0fc6542cd32aa5b903468c1e953815cd1e8cf42c9ec2dc05fee65166b900efa5632484749082693788d6e99687f644dda24cbd1008cd30aed7baea52671340596dabd397c299b54e5b85175c6a9bbc0ee35ab6dade2cdb0278a3a17d81958c9b4e5a759bbd4923a844c681cd43cbccd82d71cd5b9ec4378071a7491624f5f0243c4800dbe29b47ca326df0226199c38351451a3b8a8e8f65f2c3325926631a19e1e324c449c2249ad47092e1503014ce752d8f9b108f080ebea2f1700cc7a1919b8b75776d1f9a79139bb87081303233eb8a964e7addebffeb10911ffef88f1ffff5b72f40f7e31704a22fb47b803257b36b24fd36e0e91170037019e016f17c1c4018b2e1d705ee3d287c417c1de0f5b35d55fd6d6757e50b00b22bbc51c0a74d929e7837abfbb311c4f86cf0764044af200957470cabdc93d956bd03737a6306950abc4500441f3bae525bcb1551c09b46a0dd10a65e1874818011a6bdb67bd5b5ec5ac639a3713520d47ef3357efae5e71f7ffef55fef83aee3bf7dc1f3f5f939cce04b5a033ceb193f9de0d39017ad8a5404c145da66af78ada5c70f28344c86f87158e5114b309c9b1b3d892b42100d2e1a9e0b26264d8b110f7df4d5021f924d511586c5c6b0e71b48c06718110b050e146dcc5deb6684f60a8c1502557ae04019d774f333e066f43c8d11d13f78db28809a1e7cbd222836e3a8dd3068a7fcdfb176c33d61cc5d6df3d60d6f1de9d56dc3b2047f0a205a8df524f0076f4f8af683b33d1cecef6181b634ac698103a397db141c846b59caaa9ddd2d92a48f004b48527458333cd3d212c90407bc1b3aa6195d300df0e579511f61170d3e35e04646776e23a4f66275ede8da57806402ad3b1f1779953c7348fb9b8185de8ce86d84a9499d54fd39b21f377fed9837ff03667f403301276e095711bbc726571554a682fb7d8c766a4404d3dab39cc57cff0624ecef3ffdf6cbaffff5f75ffffd8b40ba6fa11094bc6451ae8894b91759ed8acc7bd3356e8a6819d268c05734d74153afd085970a1a53afac21662c336209a18b4ca780f836525e0668765a67c4d340fecfb875b64d054d16a3cff0e9d84e94be6b94c74d81f7c44a7bda3b14fb55840fb026acf09ede144c633d1fc11351b998206d0d2bbb765cac0253a540b0a9473d9ede7afdcce753412af7d99a938de271a3b6defbd7b74f61ff2293fd4b0af34cffdbc4e4b97f118dcffe455de8de12e03feabdcb24fa81c91ac000d0bb364660f8f9eea6071a5fecad66d77683c267d7faa9a7f62a7b5a05be38d6bb30a6a36363c9dd4e52a8c5e91ddbd3e8d89e46c746b865b203510bbad5ebd623974f44033f5b32742b266292cd40aba84916ab61c10ecd94847bb60de1c8083d230aa280d854e5ead73069c1426af884b264bbab044c4c84bf313f81e354935ccd2a9f5ccd6bc03eeff336005f5196e773c3421980b33fdb12fcdecd107e17184a0738c8f87ca827590b4b613de0b3be5901fef8dfbffdfe1e0453ebfffc6257ae47e43229ac2fd976d102eb63dec87f7841540ff4b8585f85fc3abeec42dc008f9411016181fbab27abcbbc75f364e9cec831324678e6d2f7397dd52c0017f0ef02977a209a69b7d1d425af69531b05db0bad6d613c1d5e3acf3096f32c2ec24e71792eb00946d6259371b3f7c1e3e6db3be5e5022164f47544706e461c3e54093ec0fcb09e7745c0a5a70963ced2797fa9f171f3d5b4d0b274072ce155fc68b3d3891834ba5749019692d2697501d8d041dc08421447b02accb004ade5c097c415a190f118933d87c1181b811233f34de24e09638dadf2655e73af31147ae74f977c6b07aec9e0d31470783815bd9b2fae5b2004dc02a02ec45ac4c4e0ca6b2b5bc3b60a4ac4860f805088c670eb8233507c0656fb213b8322af1d691aa290567088f7a06152a322ddcb300d4cad9819a69ac988cf275d416cbda991c117c6467e5e28e15e3ef5e34608542920d66a87ad4e371fbf093e8d7591e4fbb02d2f65bf99f8fff9f30ffffcf387dfdf4366c4ffdf1741f42a4fd40209986e75f7b32d2124cb2ed2fa6aed924ab86b5d133034e3dea963013511e0e2ef93b5b36f214d82d84b5686b11424db35dc715367edae6bd92bcda80517d5129e9181b29db806ec1215017b20a8841c68c4ca127e6158ee4185cad181c6faebfc75b7fdfcefef85a5f86ff93b61a9028ccb7be91ac053a7d7e8a788bb6f0e7ef18e8b0f168cfe89af29aced4ef8499440eee3a6947ebc78afc972588bcb07f58a8b77956b02b76102f05f5d7ddfcbe1593328e07ad5bcb9d72d609f65adb0d9b056647bad9aea6abd5e66a2ece326257766f18c1b236b04038ff2493cc62ab64309b6e6bb06129ca8f7c271b9578e02bda35084fdf3cdf7f9f9cf1f7eb9fcfae34f3fbc67d8d416bf07f8022ed71d81fb9a38ab118b0a69c56227261603293843c4266d9226e219b403109911ba9d83590b614d155e01b35b3cd76e3f62d4ad6248d32fa281e7172e7e8b49f18d06e0ce809c44fc60861d5a015998190fbe25c48c47e20823a484b863f84bc8b08e547a8d180bdab097f88743f6e386fc05f9b5dc2f43b0717cb9ef71ab05e3c7ae2e04dc8f7b90f5cdd7fbe3c75f7fff02d6a3c9773a02f1e53d92c7bf6ec7af58db1a2bfd2df219f4dc07a65ff13e0a76fc46504ec9f5f3ba2fd24d3e6beabff19c0fecbe91f1ca787aafadffdefa733faf1fad94b0daeb6fafed718ba5ac397fde1e732796e8b7c714d7047a7cdefefc8dc640f12c9f4d3f6a3b5e0d06b8943f5fcd77dcf2d249fd77efc2606bd09767f5bb9f6d39b7b50bd60065b3fb251be6460a79b9943584be7faad025ae334d783d8687ee40d0a87eca5e53b56b92d5ea268ad7631e9066d696712a6e6b4c72ef8ff38d5f6cf506f43b3c892a3c75f562e94545413404e355fefff2bb57ea0b6d5a03113b52c95bff299ad670a2c752ad6b2caf838b1c3ef6f5950d78c2afec803c231722f8faad004cb5e1e70ea13a912c3e87ba69c8fe04068477c49fce1831feda40245f1bdd5c24017f3226528e9b9e781134ad315772a0f949ae8fe2c66c97ed42fe7cccf0fb231a5e0e78227efcab65d526784e56d963b5b5aa1ceff401fab7fcec801865ad2d3fbb6af8bd94cc71c9ef70fc3cbed2f927c43bcd40c702636ab21520d3517df0be8c882fafc00bcd879ff742c4b48a3e3e28b047d980e49318459fedb492836ac9e0671665f8b9b9642b1d02ddabd5bc1ae10643663ca8776daa6b91cd65ea58f0c82427721c8b6bb2ca70fbf6da6c69190388bdfb3af8158464065d70a895b03b5669304be7319957e04cf9b9c5a7f4f9379c8008daa498d352da5a43453bfd905b56abde365b33e8717a8ba62efef2caa649575fd2faf73b4fc9e1e7f7dbcbbf7effe3bd4d409b7ebbc1c09261be2a53d94b3525b437816e311bb0b096400de1f177974e1410fd740b3013a4b1d814826bf5fd9e5a429e6051107bc4f16017cf6cc986a5392ffe052bc873a102ca6dcd3e19c07b99169788011f103576313b226a14ece944b4f2876e3eafb374d3802e2ed90b169cf0a1beb5f03092c0c1f6017fa00587606fc95ff7f8af3ffec7bffef645777fc57b1c0f982e97b2da221592c8dda4aeb63ff31e37f5a531e57b94bc793a414d9071264a3d16bd20796df9ae5957b9226f23e63b72e08c59172a2a79ac57483246e4f428389fc19137008ac13f1442597d5b09becd5df17bf3c5abd09e13c202fd6f0830f6b7bb249789bfedacfffdd3ef5f74d6170692fc02220707e3185d72aebad63b04912bf2efc87ff44216732fa229b9948f22185d1d14c997b7ab66c17df58a5cd4272ee643db62eaa27df01388d72557e4df917f3ca817626b50888fea85b28056c27f6c394e7e22499754e02901fd464af0044e712d5b4a9391d68f064bc2219bf85829928a2401d41b7a540124363e9e82ccc24a5849c3dea0e4abddc868155ed721af44d9a8f05312c0d81ef40eb40ac1f07c95d5b60b64680018559263585701da1ab70ae517bcc2b51de6037caeca34626086c8816e6d2010df6a4bb2d03956e29632e673199d3ff20465108b2c99a069b17857abc27da12e196429a2018643f265d8fef2591eb7483c360c086b6bee23c2b3cb312222c8175826423bd50b79fe79d8b0501f3628c46173aa89c3a6d754396dbd260e9bbf9c42bffff0bffe947e08fc62267d714eff546a2a813e64cdf752768bd444ee9fd98f5b8559a3acb6c5006512b48e15ba7102990110cb07936d9227ce0d703808a16622f94762b739c44d70d8d38c233e886cb486a336c40957d84a688b287088b7be82294032d50044f599f6ab90e494921ee18c10b3669de69c0034959a789f45be905efd451fb7a8e47ac86bde7aba1800b709e98d348632d25b8f9b30ba64582fcd242a6192a4a0b66868fd760d6d63a5c8e3a31a50be3f9b705397e67c6edcfd131c1c17050495c03aef309a93138e622191113301e1d9e4af1b83f5012c88c3bf0f3e5a76c2f95e45af7690c47830f10e3390306b710c4ac0515cdbe8ec546130cb132609389a6c74bc6454848c9e8384309c0cb08c1b19fde737971011c43144b2e3b564f2c2813e63ca070bf4dbf2999e1213dd0df3ebe071b8315fc1a3e5224bc2318a3e0e44521bfc41453179327cd9daa293bf56ecd3a08e110095c872b3074ee2b49910eda87db1d19b12abba4c9ec87d6db4f133c40cd798307ad9136d87ce6515b889dd32b4c6ddc7bdca2a779728619c6a6bdb9fb3e19b95f1e7bffded6fbffc74f9e3fffed70fbf7f250197ef2460d8e2b079f824271ce2f0c234c1365a37d34a96fcb475dd2c2df48dd0a1649522e811826e3aab92976c5026461f969f0f7ddcc0e4be48f3a345c4a8af38062aa232e061cc83317c84873812540cb42a320463930be7ef4b9f50eace184b14653da2bb9e4f7fdc08bf5c0de732a0ea530f620b55cbc517eb9cb12ed9522afdc1f16901e9bb32b6dedba9ddbe5d3ba6a71f81460f563eec711325b396f8f2cdd8b010608a2d70d429878394cb3d00a6f7ee4e4bd3d5bae0424fca96b79ef057aab0a042c3de937e526132614f0874ad98fc72a142074cc846542a9f814a1fe90e0df5d2669703f4e09b4237179c5b6b5fe62b3c1a404c51aaef611a97468860e9542abe8ca3be42f5eca7758a78b1b403bf3c86f400f484d28d3e6ddced0486439f8409e15574d6f59d93eee3821d835cd3742820c95804cec610228e7dd58f6c63d87ceaec500846c1f999415ebae004636979695fd7a1d1e3c5939788e32176b40bb88302a8050f5799835a30f00c9ae11c72f8ce3c9d698c748016c2c6aa90094d97f5d3a7669f5e1588d21b748335d0b983ddcf2361928f7c5cca1d7d1a7848da0bc807ea8002bbd7f67fb430bdb7aa946f791825e58e48dd5681da2f2c957a25ab60ce908fe3da8bd2fb23f98931219b141df2a14d7013293532e934ccd7e2725a46a0c33260ee5851042da65a17cb65d51371a72f2fb9145ca940cff7df6db31cc8efdd12b56f7e2aad2774fcd056cd11c8db1a148eacd6cae60b504a1d2e502b7179c5bb3eaf95582ab966d807638c9b0b8e01d4bc06358ff9521c2826a6a60b5fee7823d22398440aa20a76931c19485682720680e720aed5a85237cab131024422d70aef07ad85e14f91e0d9a534cc33dfc15a5973241e49d24c72ea288c56934cd87f23fcff675b1e376c2646a71bad9b4ff924d4ff14e93d561ab604c954d21b96ddb0d6124172a1ad73d0a5baa4bac658f1b36959acaed9ba6637cb9605fc0f21aca525a014e552e16161529673537cca4233e79b4629dbf14bd76abab8001f95ca21a030ad522adcd363da7cde1b997fa0e8cb6bec4454590b96a7e61351ea2aaf960b1c29c08111bd8f5e15d158f78cd1265ae3e94a5b63a296498d4a9094b88e967262407701d62777a86b7dd5992fadae59808f18eca5ee2ddb5a9af9d6919aaf2654549655ca72ea9bc72d4a5a5bf19d774d99d86931c0bbbab44237a294c8eee7e3b8e99ad2c96693caaa273d3e3ef8c9aee3835e0b5130da89833d9da97e2155167b2d72d11550e325acf9c4d2ee8771df8d5c602cfada29175fb70bc3b65b39cd62bce4e3e6a7034d3e6ed650128021f076756d27ae209f5f2d2258bd1581bd10a41bb9acf1d5dcb069f32527f160a106b480869261d593fed9b22f310225f2c0619cd25ab0bbc69311c224aeb5b4052100afabd9f92dbe59d47ffded6fbffe3fefd7f4fc051b4792a79e155c9fea42cdee8391c1ccb6331f8c6c3dbfd4b5ee01590d594ad96a0f2fb74351bbbf54ea27da48a14d7752c902976a57e0e1bf64bba4fd59f671fb6c41dbe91cccc77d565e5149c12393d4de0ce6f12d3cd76b909e5beada5e5eed1b47eadffff5db17aa8df86fed5ba7765aa3555d106a44aaa7b49abb8425e418ce79ad9bd04bba10911ff8f58dbab08a3e4d886b4ffdfcc475ab02b0a4f5a81fcd0971fba9ebb261acc4f9cd7a9415db1241a109873ac9ddb32e124d5b7c206af7e5bba87494d88b0abc3dbb50e4d20cffc46470a0250b261881bde2cf177fdc5464296b8101ae2d9728dd9911a0930c0e59744d8cde5e202e06c292768ed08ae4f699c4125d17822f40f3e3e2790b4c6197d6051ad148ec550882538c088e96028993b81068a78f3a7f519fdb9bc0679878b22dd3e19f11f2baa4b6c19df654290458172306efefd095a069f1d3132278e1cd1f7b6b13229197e49bcdf11b24b9963a50842e16b0e9fb28c2d8e607a427be57ca43b12945ed2591f0ed7897c74d73584ce104e552178e5769691d296169e29d9c3bdea491087c61a703733585356da0b628d0c5827d23127c131a5c4f173f27316e77e1abf8765e16d0c422500211c548276cf17589466c68a460294eccc3a197711268fb5fcfd5fffae197af7cabdb5773f569fd0015cedd3f72bd66839310cc8e084ac674a5544e753c8d333810f9e8e1d609b754e283a85cc3ddcf0dac4339dcfbd40109f761e08f9c3e388f2a0eea1ae8264bdd6c5e0dc3cc7b835fbbdf5b187190af7fcd97f3d30fbffff25f7ffbf9f7bfbf8f05d1f66fdf2a68e9dae5b3130231a3153a0239221252e737816fcc4617ec4e65e32b5d6b5d1784f3cfa6138a9ac1d4033fd5533ec7c4cbf31fb7c8f3510358331c590dac8b113a4f858e9780eda07b07508837917ee38d5d47a8fb1810b2204c23b0ced0d8babc3ce581551cbce71bd529e24277a01712be1ad3453efaf5443533cc651faaf4ccc5f196692f496a6298827bed8f1bf94efd41319192a8c2ce5bfa837abac847bf0ef33aee49f9030e81fd413ded2533e9daebf2ac1d74f55d9d5c37a32d93be4a70a48e30d179a7f93e9037f2a1935c85e773ebbd105702b1e9d2199496480dce126078f555fc02e0187e487cad068b0da909f242b6995617f0c62b98b00c76201f17e5d91083b335f591693504f8d405aea57e30ccbe38c9620936c3019c75b3a4bd68829ff71023635c6f569e317d2bc40361a11da153acbb868db84fe89e38413d1559d0f0045b02a8547cec91f3d810178341e9abfa05116b932af5f224953144d1d0e9232f17df64c0020db90902c670672221d0a824ed6ed73903bc4b36dfbbc121b5c6ae3cbae4d0c9442e7eacd869a6bb80344b80757ec9a1078414a4ad339b5f188908eee54b4a0c71007273ed7119060038db49a37191c87062025343f06890f123d4cf95e90d28ca473ed2a5c7e3554f753346e1c6e13b1e2242d2029757d48918cf1ab171bb18483a37f1a1064d26e9cfbd671b60d357d2d2c7ed02510afb2de8c941f5bbe483793e6d8cd7c78e5e2083a027804b243e96b65478f0f5271fec39d8366146ddc0e74066279a29c11d471d63c35411100c01f1f8d35b010204a84b409f050d13132ba2242a92e01825b7625ac070a429e0b4489f7d454cb861e964b00c761ae834692e41e05677c06878230146324d3b50010156df6762e8365d033b50816604da2fc8b730cb48ea3cb3e404a2bf43847765da66938851818765cc22f98946c40adf023226c08081d210af2463ecac162e66e3b37ce76a589806c394c1ba3c457bab2544200ea523d62f1d75dd9ecf58c811852577ce94b1bcad8a0563ac1febf3c410e34364e897098b146adf37c11252e9b09d7bdc084ea5189e75a307ab247e019821b8f1023d0ddc0a886b4c3ddcd822028721237b7a463e3b9b037d496528d7b078d6daa39286b7fadcbd5ef31f3761601a00ce786802efe6d26d211ac808be525f49637284d7bf2196bd1b322be95e6c4d1ba0f1b9c4c28d81a469911aecc8a354ee333e0370a6e1f04216da4a4f4e5f0d61a4ab243e2065d5f2d2dac74d12d6102f04345ff6b140556d4087a3719a26a0b441e3e89b7d0f3c674a3faf8b767eafd2a9c63f03c23b2b47676f234307f97c84de07e0cf437aebcf64bef1de8905e5b3ed8f9b02548cbda70ca7635075a1d9b474ad7deedf800189fc36820018ff66d209b7fab7a4db087b8d5eefec4d58ef18904f0b9874db7c1c817b035ac27a5c9cdc948c8d38035a20ae208e649fedff6bb1faeffffe45ac7bfdc271fa5587be161010b7b56ad9fc802d891017b060accd0c4dc3b97a0d890d55f1ad1a7caf2f17633cddd9e251ef958f79dcace6d56533cc4869dbf3b79ff433e75352210169a376cb2a3f5c01df525ecd25b410d62834cdb7c83d808fad6b6d7afc8699bd81ab2dac52b29f7d7324e365a9c31bc52d573c4c6a5cb32a64dc280d1081b9150c3ab064ba0058cb36fc86441a5af9fcede7e584d1ae7a85db5d63e0a3e60c3361893d8ad28fd8adadda9dc161ee85e5228369c5055c0052655d5c6ca9d4caf8f94dd7d43ae7abc1866c027f386bcaa37274c14ed7da52afba10df54135c3473b3e55264adf5e4fad90a58b45d54f233b4afd2961b84be12e3ddcfa14d37722827c8b1881af3d6c00d9b4ef4b24aa483a6e474e5c72ef7fef1ff7a4cfff2d33f7efae79fbfbe778a33fd16c4a1c7cec77c15c1fada5d362d30be5cd77cbfb83811968bc81243d7304126942b6edf4ca97882354efadfb6e63b0f7df0190f193c84d443f567de5c2e432053bafae690eed2a2a781d1e0d98f9b82d90745bc43e21dfaca2bb24f45e056d4cb488c0858f232c83f0ab920578f422daeb91742fe5ff7f43ffef685eba1c9176eb19fae871941f2b1e96a5b066e029ab0646923ae37b847bfc8ffc8712068c0b4884b6a7487686bda52cdc3bd11817809f679a2acbca43f5283f68927329aab80249508dd8ac35382655ec8a9f499fe48292de41c4da4818e7e4c4814bca3aced23410e1368b83cbfa3816c89a16ec996a4132722f4284926a730aff72345385335fa7e8cd4d87e74d1ed8bfcc5da8cc904cd471991d9a05bfd9825369779da1b490ef91fd6467c1d62f7581bf12cc44fe96dc499e2866969c2408467e74c61222940321cfb2977b96f00de2148c3a4b3f1f1a19b8d588c185b0d4e5933a254fd2aff63667d8c8cb92a134a5c4628f3fbfc37f5136648cb88da050d1b9ce0e9095bba2f944b57f935fda124f06e702da8647bf5054cc19ea525c0e5996e6d3c6b0d723f908e7d5b1cf319a8319c59d217b91f2ef70fb91260345620e9a70fecec1d6ff725fd2194a4c1bbc91316bc4f3e802e0c9d2e35573dfd41ee54d100518d1041e94372c38c8f6fb82ae83f3c734f08d974673439b2cebecfffc079f39c0fa59dc48953a0d535edbe6accc0557127cb1fe2b63f643a1d763cdf6904fb5b08fc9cc2904f8ecf9109139e3aeff33f7c548e485bade32f8f689b696d7bcce4a74c1fb1f73ca8ca8820081e4a5f33c6790ebd5682073f5cbd5ed21f1128469208a931b5d27c1cc40963d84f6f67479c28d38c2b2e40bdc985e2267562bd3a4e07cfce5b9ed65a284af244ca82c1fc3efb23eae4d1c590f1090b51144eb661620f36efd93682e809a897276804ee7193437957f4cc6cbcd4a54c849015fabf09c7129a9cc9959354e21331532d6bdcde67c33d69c88623f504b0d8c2c79bbce55db9cb241fb8c43f39e40e0c281f937224e6897ee9db22db84800fb3fbb9960991d5f25064fa40f0b03a3da88c7ea951468c0484fe0cd594b16fbe2fb3c7892f205afef0dca1053acd449d1025a541bf37313ec9d4b29941087ceef0e81bbee570ef166764bf3032ccc4097050e0ecf3ffb1ccee52e9b0ca85e1b0ff3163f792af3d4e3cda889a9cdfa5936e4af0d35c38fe7ef8aea187c36dacb0aecb2662ddfc54bbca1c08e3afe92b18a93f2841c4a45db71319ae404fd4ae6fc35e4b25f067fad8bf959c0600350222c54b1a66e47c70007377f09d6dd3461ccf06434aedebe94bfac380c785d3ec6209a15cfefe9d4c106e364b8a84327049e125fd9100b8d7cdc3424420bf37691a4780506a07462bcc342fe93d918320d4355f53ce6bfcf09301ada9baa40a74ffec324856ebaab6b8bca43fb25166cccbcbf9e871cbb163b9c60d6175d09c2c08e4101da50618bc415eb53568a651b8a5ae5902d7692542fd9681d7544781e4f3792fc9c70dca0fe212bc16ff7039b392ff067eb60a773e3b978101c865a21183ff6d3e482ce932304885efdbf055fee306b2712a183a720a004c6975580e84c4671ae6cf72503c083dcfab0bf144408c54b923f5a1146340c1fbf29cc7cda0d944b77d181c1abc92bc589a64cbe8f2b365f071c06c65795a1de09dfd45fe07b93aa5f37fceab8ff8ecb0119d9b5ff78bfc6f8efdbffdfc453040fc1f5fe064583b3c14a0398216a5c22f057889dd911aba23f278216d7783fe56275ecd8e37f8ff32f73fcdcee3469638fc55f805c40012ff976e7822b490563742fb6abbdc53d1d5b6a36cf7bca34fff469e9394ae12ba759fcd44ff6a510f2e048224480289cc93e78485c31d98ee55d13d857159b90f45f7a6f00c769b79b267c4c7fbe9391bbd3d9ea45d525ff5d22314da976b816e4892252252c528ab5c06421d46f0f4bac0630cef57f8d691697f69d5a6b1345ba062db46523368e9b238e403722434ed1bbce125eced624efabe6784fa904d538f1ca7b6417565e82c172dc14abf27aa78e4474620439b433e12c9f81a935174e375a90d02ce139d469057011114318d3fefe37e154ada642859eb74b791ae0dfbaa08964afd81ec3ea5ee632233032f1134659182d4d2d6f39e2ea5e9df63620a446c543728e44ee5f68d59d6ed76d2d76aea9d54b83ee986a6943181a619f99897e302efd7912c221091374d89fd6af472faa8997bd9f07813fdf6baadbe98379f1f022837f121e0dcf6216479f90c2847c3577f006880b79d81cf302e9017e73bdd8621c82a289537cea6cf6bbd5ff11663ecf8ea6240f9b67298f182ead00b39f2325e41e6a34ea6e1d8b0d4e26c381bba9251ca370c2ebee2579b15e4b5eedb2207987dc41057e697dbf12c27c37278bcf856f5993b3ddac78dddafd972d5f5df52b6d40be1fc1940818fa095c1d0fe91107e42f93f325830c6663ddcafb91bbbce642941a93bb56e51dfce43312313776352debbd80974d77acac95aa2f4c1beb0c63e4ea0ab47b6e4967ac94265a8425d6052256c390dc3a5e90c6e71cd0b90f9af339cda65c8de485428d9b200b0c2211666faa87596a5ae5a16f49851a3f5c233e917ea229fcb6c1b0155e2f5ea77eefa14e6be7eaebcf0963b5ce755307164c42d23d25cac3ce4437fd539e7d318ddafccc9d1edcc9882476259a683262a92ba83005791f77c212c0d9800a04d993db5a54614f940f26cc72e2b5f2c43a8764b8fa517404d8342cfc851d6598f9165328c32492d96bd5ce85913d239b7c2049fca2c69a0afcae2bbe8b8d0457b47adf03a21fbed9e34e2a06de1a227a3698dde76a8fa4ca52df177466fabd773484472bcb1c7a809e5bdb9a89f6ad1d477ed972f1f3068d8aa63bd9e0b528fd7eb2762e3ddfd86d55f0cb2c0e1f53d309e979897f1d4f107d78af3abb563a7135cffc4df2c98047de697b828ea09131cdb12870ecc405bf790e94d3d6696a50fec77b7f59c78872f71d560063e73bda728635b4780dfca3a620303b90c30be38406fbce08418bb80bb787eb9cb03c7d77d595f9082a4f4e57d2ae87d79fdb0675bdf56ad9eebcbcdd6cbb7c0be974f47afe4b27e69b8f0dfb7a8fffadfbffcf6d3fb40fc9798df47bc12f1c9995b33de975475de191d36078829c6de2e0840223c2917639903cc150b0182f1a0b9dc2d07470d4399993b64dd151b3b4120a10c2cc2d4c24c8c88165d920b7251faa72212ec1abee16adb2e232a05fa0c4ac493320c04d809c0a131002109ec6d03ce01e901404f261827e495c332d3e19b27074110204caa79951b62dd243819a431a302d827c5bfb21df7f2fb8fe8b75f7ffaeb57b0ec2ff20d9fc14ea1f918491e5e0f8b177136312c60663ee639dc905e79ee4d1f008506b1f093998f89a84777f76bcdccdbcce752f42b2e60f6d427dcb68aedbe90990182fbc8f99d3524c3cf681b96c3d122b4bd9ec108aa86f046ea9c3a68cb34434047515b8c14cab02490838b2c86a27b66e730ec6afdc7e6ccbfa6e7283a6dbc54831ba1f4c535a9db95527c1418a4e9e79a396cf97e2d85167b4030f62897ed53fdb99471c6dfda1c90c4e7085e0a80a57808287b572cceb24afea915ad86f1b2b0f5e355f7bc12086da54594509feb3987bac79943b17634f5d9d717e7fefdf7f79ffffbe7df7efed77f7d11aeff82b4fd13716ba41fa8ed728935a801972ffd530594279e8dc0fdb8d5bcd70b09c2325a9daada53f2a9469b7c73e5fff8bfefa7c63f7ec13c907a7e50cd23cd1c62c752807e23804a8abe0978990b71c725ec552874db4cb0a88682bfa5b40d208fdba9aa1d5ef6ac1b6410ffd580e4c6b89738b6aa66c3de0a9c7423611e0b4df41e8b0032bff7f1393fb012add9ca2c631f4df7136397f8f9d1e6be779d9eda5e22740d74a62b3784a6cb6c69efbd028fde87c96ea6045989aa2f6b152690c63a13a03d035d35e6ac48b6bdc5eb5fe7843ca9b08fdc60afa55498bf80f4d5000092407ee0ac93ba14b593f04b841c4922e3ba95b5c10df9f2704c832209ae6709e3f897b0da8684dc5118bf2ed5e4c304db1bb59a5bdea5c4332073537ad8838e72c3ac8f09031b9b6c9b56b5e611538d67290da7e8b9c08f1e3a13eb46228775c83c5946ec47adac38dddf8f6cdca8cfc2e212f9f937588b412b62d5c256baa2e5b1e92844b8071f7f9da526a4f6d754ed775d294bcd9be8e36870a9b6c2f5416fe33b66f69fff7f7ffff9cfbffcf3e73fffe31fefd3fd247df1a57f72d065f2515718bfe4dfac4857804321b3c81cfe60087edb526be9234364973bf44af7a97ce85e275b578f13dcaf11f42bba24b7c932998622e1089530ddced247024f5632ce0426a1800119a163ab31de1d6c86287993ea513ec30d32093db65fc3b265660f6fea8bf199b5b9fe4a1778ecc520d947f9f3155a0dfa8f5dec0aa2bef6b83ad0b37fee75be11b9e33126d61b8c04247fbebafb15c9f35b65764adbe89107413413ef9aa0708e60c9049a29588a5bda4cbe498bb5dff4836c0c2dc31796371e20c0c0469dd5b4744e4d264fc15f78661e6165ede956fbfd0af93da64c429c62b202545911b0dddacde157fb3912e58c000e3844b3b594bce9d1370a73e152004c66539c0ebbf9ccf2193d4e9ec07ecd07034adf3e5dd4fd2aa0678ea5aac1c632498a9048191777b4d4629c242ff5370825f14713bc8ef47278e5cefaa61a01b738059ed4f51870b6b357140788affd254cb2e10021f87a7ca43b249937a81cb7cbb20194bdf66544f6de8a86970f0cd36b6d5b554f575c4485ff865eb77978e1027c6f4fcfdc67a79df9f2cc31f7917af9ecb8635fa7d4f14a50d85f97087887f92f3a956844fbf4da214602db3ac5b1b184de5bb12e1eddfeee04fc979ffef4f3bfffed6fff79facb175b852fa65fa987c942c76acdb758752f20a59eb5ea96c0db8d5f33138b29eb040a50a65274c852424d08964003280f623884e1de524d6788f8cdd874564d2472400a889562d7f9aad4b3947aa1d4b75e097ebd9df4327fe0eeffebe77ffce3e7bffec797c4945f69847c224dcda44c350ad3edd4185d0b1b125973835b19a627a6ab49f7de890975d83661966011195e336772cec0d5970f421b3b95be3898d252dbc7258e40a4d2a50d4bf4cf1704f291d03c2e6a9158daf78556a454b47976f2632fcaef506b85af40f89f15ce7e88f74777caed1675037d06b0ef02ae9e08e67ffc26a5222d966203746f9a4c31321d08ac1f6a81dc521e7b9a6a4752a9881c79965d9c2cb3781a1350110063bb394959061bf50dc0b673ec195716c1c9376effcf788a7ee471bc7f0e5f6617bf3e8711f7743b61db6ed6d030058f53a2620d942a1280d86140eb20aab95d9b3e1130a88f3dea6f372914eb18e6b060caf22aff9f909ab6d443bc2141e5c2b1168269926f3f12c55c6f0b3453b03df6f553e8e459da337b1fc9636feaa58c1bef11ee1ebb7ffc86e72e48748c070fb28d61d84e4d6f46c77706d88ec8e88ffc7e3373c9cf3abc3239e0c71bc0b68fa7f3fbefc02fbffdfc972ff847a47ee5867b249867c41d8402792072838cea968db18e99be8ff2476e19ae2984f69b97c893984023bb489b0b0d6b84fc9134952b480a74a69f7915752e6a00e50292b746700c0c9d8e9cd1652917a047725edce420c3cd69793f42d1fb4df8fe111fcde95d209ce2874cfbac3393999e344eb0d019b7a31d5d273fdc449db34589358109151be1d7fa519013e5af3d9156a47bf7b6ce60822db70fc4b77d4cfdff7a5ece752e400f60937e4d8b242474329976c9a061b2b8e6a3f42170852650cf0913f8429d086ca9c16489b2462b4886584a889483b86fc0ffc3770fe9a28cf7233bac5b0e9feea01cc75ce4cacf8cc03441ebfcda82d987a57b4fdc005f2a522921ae36ad8cf4497d0b5ecf542b6dc6add69da4978025107d9f012c404a72ed50eb4e3b5c831e8c87183543a4756bddb3a2f6e41c75dd27bdc706155b9fec903cc4cb0bd05fa2da49c1f1ad5ea2da93a17b32d33afc6885451abde5e59c9e4a34b6412e87d7de47f3bed5b004a82838be80548430b318bd547d619c7a19719d4b9c0776992d40dfb10848839ff91592080c89eb6d0db9d5050cba484d77cfa1a81b3a774700bfacbac4e2650ecb923c62bbeb45ce3f763fee65992183f8367909a8ada350927f83f4dd5eda7c1e77c157e744d2caebac4bf68cecda94d768d88cfa41b936cbdbba8ef8e295d06bf6fd14efcb7873ae050e5c871785ab0b0cb6667f5fd58dcf4462826bf31a4f1480ecddfbb010f76a9bb29ccb7ff1d13ff7ea85d631aaaf6d9a7ffb2146e1da743f866a6fbdb6591c03dac68da1475b9052eba58d781defa96f5d756dfc865eef6bb8367e355de4ff108ef363e8df0dedc7e1d96b59ae67d17fffbe0d9256d2723dc1f5e3930ac54b0d181a4bd6d4b19a7ddef622538077986e17d767c3d578478ad81ed6af23c598685f6dfcd89a65f0bb11c45e16fa4caff59db35778ede55d2dfd960b28258291443cd40734c7428e0077250fb7dc72477c1e2fe375d6f9ee654ca7f5109724c5256e88bdbfbf87e52d698b3d919737c0e7ba902e0c74114bfdeb0c2eb2b0b8773f3b434764e9c7bd49b2cece7ea613f1eba1da46ee8d4f61b997ecc72479a876ec3e18bac02e0e1fb74b6095230d2fadef1376413ed5e906b4c1e79a8f48f2edb490b4af57e5f38c1077f26d965491defd4826bfc320413512065ffb1fd58f5e5e7674a012d17d9ab3a1a24f33411ae24bff6a7fb8b77149c4c4fbe3daf82f5da4a0f6f52b152af697c5c54c5d97b2ece511d8d39da57335a7c3b7e32d4ffac7566b6b98bf69b87e0e8e0c4fa3bfec61da92b49329f3fd527b832f6a39071dd2fe5a0187e86b02dbb2627a821d93c4453acbcbb13a3bba63c702cd6adef249d159f637adf13695b74b535852c59a7faf7587165c1b278c0b1a9ebe9cebfb7efc7b0a3fd70fdc695aee749d57dc513ed4c100ed961257b9619ecbd7bb78ee7abdf55e1fe2594252c7ec9f2f569bd76b60fc127a4f908e7eed337a6b0474a9ae4f3f33a5e28324b0855c9b3585d8ef7f753fef67a965e4bd958e31f46d166b1f29557a2f6eb51f09ad836bed6de8b4a6e98d7ad068baa7be6442960517d803c69e76923b535edfe2b54d33aa0c37c679097eb5658c17923ed8fecb35782bd503e1e1c57d6db3e680aeab4e59bec8c53fa76dc4b5592cf4b54df6f3a5eee77c666b5f7603cbf8a425f1b204b763487ea5bf40d66269e3ae2725673fe97db973456fc30117f0d266d465789c93e33216085872f3ded9f73287f8ab43d24ff7e83592e47fbea0ee778afa1ebe5ed0e22659a6b94b2f7e949737b5673fe517cf3ad2fd2e6899bfa0a7ef9a147f229fe28b68d16b2fc10f57f12f72f37eb5e4691ae6db26c9f7929726cb89d2ef3799adfbd15d7be9cbe8fa6d48f37bf954dc5a79d31a778f7e6b91aae70b6c5e0f3f35bf43697e8b9aba83145e166fcd227734eb728fdd2f8135fb5e9ab7a981957b6de2dec359a3efa5fac1acd17f59cbb854bf334c9eacef963cfdc4ac1ecc8ae0c037a75ea873162a37e4f4f9138da58957e95b86c13b49aa4f47d726afab86be52cb1dbd3eb5d29613f915bb780764aace949e65998316687cf1f9d5fac2bb26cb1ceebd86b37887205271bfeb052451efaa5f3aff287e5f0c60fb379d5767be5ed46af9fd1b9d793193167ecbecf7f1c9eff5b7bc7c2a9e3d66e6e8876b41b3e5e82f1724939e680014f26e8f12b24fe4f60b9a6e7e5e2f3a89f74f0c4f7d227ea3833c821997ceab9f5ffcb082a6eba5851f32f11423b3f8160b5d6af4f384ac59719e6444b25b0727fd49c39481756f1120fa9627f2db5ad890a70edf5783e7a34dd0d01739f8ff632439e79ed594c8139817309db6be21013882ed380221051134a461c27acbe452a625bd9d32388b9b96281b52b5048877d8653ba9753d91668432a5bb2acadc5376b4ef1045c8db894a6d920f966658de28835b3e593da5ba4e9474d4bb07ab7244aa5ed94e11f842285d9eb8f302bdc2a981394b2b4e60440542e1841032607ba7b2b70b63bea7b2cb252d1bd153de93e93a228d3c78fb07ca04d1fb8f75c4674e00070d004ebc5144b0516eaeba16f0360757dd3c678c36793d656794de4703c11091b3df84775e95376c18ea5ffa56db9584eaaf77293aca79d9e1939624b7e1a329dded9f6ed17b46e69ba38637fcf26290ad9e6dbdaad5e7fef2f97d07fdf8c73f4f7ffbedcf5f20d6e4dfbe658dc49b28c017c784c2d81e19e4718bc9e408653e8a8fda4f6dfbdecfda1535bb13f3d26235ff027de699a63a238eb0ecdb4588d0edb227e8e427ec3bd3d43923317197182d602d22707dd09efe3c4617c0d341a2962ea48f0197e8cb338b40b5c06783d8f680e255dc4607442c5d229d283ae75c88f7d7bdf5ec802903ae478150f0a503922249f67a89600097182e204d919867252d31f297281633c897458936e33668d4d5154018d305fafa08b2a70bba475af36cd419044d323994a93d453e23bbeaa8dbb4cb687bdb0619b52af2ceb70892080c0f07a6969de3a51dd44bcc59ed803a23b287403113c1b300287aec3a0b3d9e530c2e2274014dc796b27739f171f335c1582f3c5c80d2b87584c08ab52d78ff165a31b12c337f49391e3975aff560284dde0a9346e179ef041bc2d130b999ac83d088e0aa170a19d7622b40d95ac65619d9fe2bad79de46bd08c52df0a4207e8527e8606e448a2f801fe04728894c4069716efa4b822a08de9ed77a4cb978c35ecfd485afe0eb99f4436450e55dfd7067fd4808ab79473bcfb9f0025e92cd1bc1d76371138ff546fa6459cd0d2ca2cc98f60028a665b8f707234f36fcd73722217d40fc843ff5497ab898e7e2d3c72eab0b18134f5ba71fbc3b9553d4eb3584bc72e49b58a84e7aeead24d67b71bb49cd9c385fcf990d3277393e950185207c4d1431e107c729fa98b8efd79ca9a7136e355f60f8d47cd1ebaff99624a02ae77e79b4bb5fc9d5a02679e3cfa01641c6272a6f7affec2ba73d5ed85e2b6ff8fd6ed8e9b08f0bf8429150586e5d8ec3049c1f7a94d6ddf4675e1c0eb285a7861991f19f6ad0fd2013e2078b71c84401d331db09b342320a33119899a052792876538969c864891d26642c87cdcefafd320db9f6f7b8f23f7cc13ef49a1028a59ef59144e9e738e41600b3dfeb39ea7a7203eee12c23eff9063e6f609ea5d4fb155e29322dddfab034d97c539b399f6bbe9d6a3e4ba9b79a798c363ce3a0bb9df9d1b336d58b08d6fb5eef572451eac151fa2d0e415f49d824e7fe8d46d25f7efde54ffff9de7e89f5abb4af27823904a2680d7a4dce6b0231c381313fb0d80f70f69154fe805e3f38af8944cffd406d7fc2633f31dac1d2c923c56b64cc88052fcad83a1987330a43f6f2c1dfa01784f652ea87840e0c64257102db11b32f637bf47bbfa690ec1490d6c7cf92839d03251ccc5fa17e8423a07e549b9d444b6c77688b8fedd1f3774fe7effffeb79f7efbf3fb0cdcfc450eb94bf3273a3ef71b25b3ae269194c39e6ea5ece3dcdbde6f49fa1ecffa5bbde137a8a601251cf674d6893ddd16bad433300f37082abcd4b3fd92c16ced9397223ae35c6bfb6f86e77d926f8edf26f9c6811d2f12d611dd43b419d6841111a5b89d5280ea4f04fe3e1945f7892485564ea09188d8a77643d39e2a09ada0e15333096ab713b03f6a57eaa6b119775cdc4ed2d5c00781d9290a224615d763d27243b7f2ddfbdbde509a92b8cf4ead97e8e34c4c8158d84547d1c3daf61c94fb95ba6d6a4c34c8d6e98707154af04165eceb0484d4c0684fd217674af045ac502431428e5134b92af2ed7453808a91d90e7a0e93f913fa210e560821bc394f4a7d8446e428e8444831dc3790e772a84ae60e7263686f0408f7815f04e98a191cc6f9f859fb2c5c5ff40115ca8b608f156802c0dc1b44342f08850a95ede23dae29506a681185cf8822a7858450c7f87e8d005e8fba3346d74933f9faa048e7001573dd51318723221df320c921155186360bbb84a0cd4d3bbe5fa156ad570e0e8f047c92001702aa4cec14fba65b994916cf083e7b69f8383669e473ab66b827eac2631f9530b222434f38293f495aad84093509dc2ec705fcfe87fdb7bffef3f4d3fff9f91f7ffbaf9f4f3ffdfac5ca5de6b72aa478a175806566d30f85581a41eff8d0ac5ccb3e6ef06fb122fae852a636a1774ff30cafb5e7821302f0eedbc31316981c3db688841bdd9bce4472365c12a8a79038006d3714cf3895dd92cee43809bedb63d925d70abad35b115d7a072cacbd6191456fc8ed1a703f4100e7b1fa8e2335b0ef6217c505985f3cc953ebf6b8029d2406355df5fa9966d00e5e440747a814b5412a8b96a7743161fc74309480d20cf9fa606a728023707a4b8b06a6120079a8dc1359c604d7ad9e5288c6bc540e3e77073e801e80f1bc976840a4b2598ab95ecf0ddc69f824994a45495db2df7b5f2d28f002389aea41879701aea55839b966adfc31a811a433268b38124519140ac52df0a491c2dafd569bbf8b18a95118256c0b4b51848fd15723a579ad06ab53df563c463e881d3f57df6a9a11f297501ab0623d0a6a55c4a84b5bdc22f83be870a66309fc801024a2e398939b4eca1d2c09748c9111624cea6a587d8d0fad4601730dca33d14dc2f420388223950e000d8b50594b39931b7a4bb9611712ad54d45ca9ba4743649cfae68cb51f6ff5f36dfff1d9eb2fbffef49e01284bf93e4130efa9a5adf7bdb43a1f7fea06b9231348a75bfd76922ec3710f356eadec52f3d4a937f5b155d947aba482a94357be1605688441aeaa1605cc705d8e3fa940151b5c5e9dca5941a2fd09fab1d0cbf16b4c798f216eb542283e06b5e0c646897e900957b049d50a567989e9f157de632d14c4bf9dd48aea795ae54917eefe5914bcf53de4a4f614347d1b8a33877dc44ffe6cfc2e652fe5a512e77853cf93dea85e1165976c88a21769f3b40735d99becd870f2af11f65aeae45f194a3ed2f72a3473ec1273ee20716cb1599be3afe3f8c7dfd6bbee578abcbb0a3557faa0d2c60d7414a54ea838a54d2d34494cfa288d3e0a2163416f8fbf27e8c7f2f37735554aa1e45b674e5d7ffc09358f56cbf16b8e7d6f2d3d0ece32f610d38b85c3d3649d9e43597fd9ec15fefc4baa788ddefc226397586f7cfb7ff88bfbc2179f7fcc56f8ffcac2ba642245d2a1aef5d22ca796241634b72ad544215ceef14dc02cc600eb5b90bb494b5c2041e95b87a77d48394ac620b43c8fc99a02b0a088e7945da81538e0da06396bf0e817ae28efea3b6a331717f09c0a6aa1b517912a5f74204b9b3173fa20fddccb956731af7b5aaaf1cd8537ad43c70c88424d74e4407ed58795d5321e0b6923f877976afdc6c65cab116dd531f2bb048e35b40133a2b88879587d8d0fb1462ba37b967905d13c6f34dfbbdf36ea4ddd60f2903de7f5d78a6045c16c06977d5cb093a0dd26c9f26b3d0c2e9860aefe1055f4ed411abaa00fad7d59d0d4cc766dc09d332bb4531d31d34a5a0d3c6c56fcaecd1b81abf8f6dacf82a3b4ab4c6bce33ee6ac5815afbb2388f17c293776de486efffdb49f0973ffdedafff38fde5972f5c9d5f50437c728b903140f219e22b9738a2e15cfb1914a0b758260a5b832597371aa7503d0363a940f7fa764ae51c6e61978b80567a423b192695bedaa051824b2de99c5ac1aa8bbf1b357b9fc57014cfe1a657a6cd4075d0794412e38fecc73498b3496df6a93720568f84113cca6a651dfc7c515b1dd181196b36cd53fd882a50278cef91235b97eb472d4601cadf2c55b9490a363ac7263d986fff31b074eaeae8484ebbdc74b02e4c894dd8557390f0996ed8b5a014d32d567de3f107c83aa511838c19ba8931b6f70b243780b6a8178af988447a946f314dfaa30b40d17d235c023b55d07b1ccf4e9720ead2cb8529f5fac9d54b2a959e4e2d47d21b0d700207fb68eb850ac76c2fe017673fb861c2e52f20e82a7daf67e9f592023d08ed9c245c4880ce5fc16d872b0355d7e571553ff6297ca153fa6d60febddf942a6212ce485ab9882413f66ee758fbad62a3584169e916b55a376e32f1a0ab03fa5e04242ac5a1276efa8ebef8157abe957141e2f75675e317f6b25592830a993451e8f06540e45ff75dd006d1a5263eca644f95bd6a9f7a4b31ca4d72c40102145144064e8acc600247fd64cebdd6893e08baeb0a1500e442a96ce48683bbf720aa8ea363630fb2e3ceec9d38296767b5b5635d119672db9b7eebbafae9df22c87e84faebf6780cf76baa8873a733dc08377db32f0242b1ba64ac77000216e929dcda9a7dc4ea058c02825bfe482544edd6a796915910e3dcf31e41fbb32a05968bde305854cffa6ea79b9e0e8c7469794360403772be9359c7433f2f09eee56fdfa1fb355140b9f7bd5f980321a5e8e77cd0ccefe942865f632deaab50a0b691961fc74a4f8f3ee9d2493121e84fd2fb7ad62d66b9a440f69f7a4e11fc35e4f7400b00202f78a4315d3e5de5379ffa6f3fe02afcc317d2a29f94894dada1eaa7530ae202b005298748897cd2a5070a209573ec60c5eab49908d980efb01c82f214711330598ec91a09c328e0058e40f4c2f2594267c690fd765cd5d83e5ddffd8a34263b24853c5380f947bf62a010ff78949eb7c41a5e1e8e797d2b710b2964bb3d9c6526aa61f137f85fec782b3f6f2f99d037bdbc725ccff35aef575aa8c0f44d1904d8214f19ce632d0f38d6ca762a690a48a24f25192bbf138c28986d16593ead2f53905777a283af7b90ffa97091f5b834ad1f102af6f5199ffa520b13c067b9687d9ab264039f28fdb864489c1630329848515f2727342db78d16efa9d0cd39ac4cfd022d1766376a69a76dc9b260eb8f1670617984fd890ed296599a649df52de87e6d8f32983c117ea1e02aca888bb03d51619165c803b04d37e99ea39cf11e00f359d3a77ab1f60365f63326c9faadbeb07f4fdb22c0842ef51fe42d79d73e3cfb87d4aef59fbbddef302e415c653ec6b50307958fbb8564bcdd2da40e8f7ab13615ca318f51cbc1eed63d7d381adfd5771ba98cf04c3a9e276ceba37c8cac20b7b61cef424a6c631a3ef6de008262ef53e2d5e03d0326d5de3fe956f6b9e7eda8df980d6cef3d64a9b5ec73ccf3518fbce37a7c6df4a2f08b84189c7db512ac5c2699b04e541b221699b342e4db9e8077ecc70c12eb31af2038c0f92666dc136039430039d6059374587b9f05ac5f9e9b825672230a8d1c829f7f9fb86cf8200a1d9baf470b038f7d1641d4f1f557b0abc2d0879a747c3df7046013932d5e4f8c1c5e4e9f023111b42c3e7314bb9e858c3cebe3f4dc2233376debb1c159a7ebe261f4402617c74a3373a559e250cca060f54077a856fb1c9809a1b5bae0a0757b5f7d160338483dabcb04246ac91f22fbbf4f8202bedd737f4c7c9275c99dd53570cd91d249a6b9bc9799c034e5335081a55f125774e3ea2cb60944eb9a73a69fe5c253419a57c7250311d43749763ab5f625714aa729cff530d3a19df4da56dfe6858302e48d6a06bff6a06f745ff25aa1ebb5e68def80a1bb1e74efdc977108dbf0a1594c5623fa4d957e94c3adb51396c958783a00def5ebb8e8673ffc97226d1b1e942fba208c054faed3f270096f17c1362744f7f908e0adc1671a63d28c21f9131e3249af0c2750aed0fda127ae50db34ac9c17b892e63b1174e2998e843b474fda2408ea05c7b2704856f8b42101f2227afe346a21c5ecc7242060e8e7b53888045e28e6704a67bb4dc8a4414ec2b78e705cb98c856ea250afb9b9168af4337804c84556cd57f8df3dfb0c3cd28b6f001813f1735634a88b1b91c8386ff58c60502f9185e8ad9a2fb9fa4e844cfbafad814848feeb8aa0a9f69abb3382737dc9c282f70b7282ae1a8142d705d557fdc41cb3b1e7065f9d513d7c27025f856b9d8c183cfaea06511927e48b0f24fb744aa28c72f4a37d6819b9174d4c50dc3d49c416f27297f0d8653fbb009613f3a2528caf6cc9dd215425bb54fc0b503d08067efaaf9324352e9987d176a9af95c17677fdb50be89c96d7cbeb5ba4baf9eb3786ea0cc6bce63b49a0f82abeb520aa21be7aa53fd04e00b8786d8b40bfb30ab4b62d2c5f7d0ef3a4fab6051ea6d7d1606d77978080541dcb359021dbf74b49dfe27a200345726dc91bf13ac60375e3e5782401b5e25a620a6bd5f5cadae64681b5fec14174b98da55fd6fa6ba860ab11d7b62e9c59dd508deb5d94854baa3f1090bedf4c9504d7438684cc706d137c976f6a475c7a20cfd2eb3860ad96915d17149b4dc53d4df8c6537a5df0fb06345fcaee8c0c6ca65cdc4b5599cde8c713e1d5549a7ba804a6d4e43a695051a9c5df3af285aabfc00e8dacf6ba56f709b1dfe47847fb36227223fb6b650627ee6b07443539e3b2c39a895b72f45a9d260781112fdd0012012ee6d77346cc676924df0f35a786bbf0197330f2e00837461652ded52da7826d6804a8261d9aca3900d39d73f8904e054d4041ed889403e2f71de218192b4e426c48cf9d660e8b6ef50048166ef334044cd39efe17da9b0b21938e961cd4c71dea96d0c0d641afc823a5f4896c391f6f4a036d73c43b263363534db72ab5ce13efb27444c540c90c9d3519652b81f2202c217703ff06feddfb560256d85ee7512ad8ebb28c7846a0a4499e4749acd62d62200244fd167b9856422c51cbce1c69d8bfbea96f7bc3b13ed1b65a7b5f7f5caf4ed73c322e47f20a7c3d30c481019dbceb082c34b12da10d4c82e6a53f0ade007d0b238e75e3d102ae8ca2c303572fa626ead812828f13c485c1a22049307ada0ad40b9645f64382499c776344b48443f5aecf02407404f24ecb05ebb7a09cb1f20fb4492827d48b4551b54c58c28bd3ed520216fce2881b670987444d73571c50eb801e03bb81ec582d661e546b591020cc3fca3e6f4eeb23ec34df4fb7e4d7eeda1fb1e6b0d4579881b2f4936135c6a57d7c43fb9b21a2a7366970fd601f913c459ad61718c2fe7e41edecb5f5d14fa448856b5fcd2a5feb2b8c78dfcf21205e96f614ec7469d783db0c9f7da9f59568d5a53d319b7efc1138144fd6960736d20ef8249bd657d4fb71c6565aaa4f331fcb4e4d8aa303d636de20f794c1dac67da35ec51de7f2f6fe2b2845fb59e698250544dbf8eb09cbfbbc6cd9e27034d0dac66da7a2071265a4b78039c2f51f2df5d97fa7abc4635eae1f5f7e1447cd9cb1fa6a7d78bdcec53d143d4d30da10c8e69e2f08f8e34235a8f5792569df725fa89f435bfa5ca9d6fdbcab6ddcf8afd404d43b0d6eceb9e4cef481e8c7bce3db09ebbd1346eef364732f50de759d644ac0fa6bd10df6684b35d4b05d76f02543f77db8073bb53a6f8bcc6feebac20c8f77d2eabc0d4fa892a1873d3c934e464c6c2ceb42f734f0ddb31a6993f0dac4d325e7459ab3fbb46d6de27aa97e8e6cfaae759f119401f7f11459a896ad7bc6558af5f6b4d058e8bbd297316c9e41d087f1a736c95a2dcb91c91f199726023e11d7a15f0c173ad6dc7caeff8223cc7550d7c1dd3eac5b0fc9d832a28d0bbf568692af3786c050f27a857559ff002fa9cb43a9553bf4444519d8a8052f98b18bab69e9c4bf029e3d7e6a938507cc77ee770d0bdf7dae9e17ba2c9f7bf55fa36792432fb2390e3ad972152fa7fdcaea28d0947126afa7b7cfd5af5ea52e4d16d6ac579e403d91ffcacb2b7d82a017d9cab22e57fff197d731d32d13b620e2efbff859a2447f4e6cbfcaebb56987ab75fef28af048dd38f895ae60ff37fc15c2e77dca6e679c1640d3293bd7d3f68462bcd4dfaf198ed644c91dbd985c91e5090213ef21cd193e889745f816733388bb9ae5da082622829c99ea70009864dd72cf2ce1f82d2e40a9ecd99bdfb541a291c83975c77a79935ae7526ba804dd5227304c37f0147a94f3d8db3901279d6a3cda9535b10d7dbda9671a753c0328b35e95af3d7a92febcaa85add8aeea09f9613b027d78bc958fb3038187331a44b37dc24ce3684bc1d3f24d8fce536adf5210c3e6a580483bb04b28035be341eec4e82c233d787dc8551d48ae8a0798b6198448cf591fe5bacb2d0177603505f90a72a80a250314a13c93c8511bb3415ac142cdf25caf886da099e4ea31ee548942dfd2f2515b91c6cfa47fa2db4a05cfe630a1ce5405e3df4c48dfca2d7234f18601120554c84b996d58e6b119641e44f443ee1d67b2e43460238f274760329f28cbcfe71ea121abcf9dc831d2b6105bc6a343b7f7e9338e8dbf19520dc71ce5a3e758a0c357eb8ce46663ab72f4ab5bee71f42c0b97b2f8b4493b4ad2f38c56aef8aad56ab42965304ca3efc588964c0f85ee039157dbde6685318c9f6ab6e635db3c01e92938676a3459481df4d148725467644c2f71abbe9d12e1a97bdf4e11805442b304318cd14039d70c9e7792b6d75bee4ff4a06744b7eff3ab7a3df4865e668ac5fa4ec8573c21189a80a1e695800f94179806498ab6e7e4fda3a0c92f20d2f53bc0a4eeab045ea078d6b5bcdb72891a5baf4036fd28177d8e9230f1072391e9136592426272aff8803333a2b484695da7f1e317a0c1d19ea588096eecfd9c72f3f0579c63a93f8ecf5ebeccce90179804af24160f94886f5b829bc8d7e72fea9fd72f5ee4cbae7fa9c7944a8cbdaf27567fc10f6bfd2de50c70df720d58a065e542062a4816910bd44f59a9e1d13e85b53e014abef69ff632932c77c7f60bf72153dbded4ebc77ecb110276cbaf99f4084b043647ca54fa2015ea27527ed6fa2dc95a0ff95227f765f5332d296e6caff6577b733de2a4498eeb11072a3aae479fa6af2f780392abf57229fab5c5a98bdb6b3828afb26ecde338b2f87dd39b36c9cb43bd694378755eee81f0beb57eed736db35e5b4edfdf63f6e14e8ccf0d5fcef4a1c1c79796da528f6fe64dfda7ef3cbcb232f7e33bf7f5366bc4d1977a98d42b133de629ac579fdb8382e64d4b4a9cb9fafc45fdf3faa31c571ce5718d72cccf914922b8925175d1b6bf366a40a0b915234c775d13d42e034cbd4c98685c3b4813501f54185c6f048c338fbf0d8653fab3a86b0d98b542d4672853188408984022b2523e9593a0751e696f76115a7682135ccd86f760d88af75c0fef573b5b057ed6ca02264a3437ed8a58c339d6815c18fbdbf25cd0da4a59ad2dd125d0726000a2e3114c63431f2c9fd1f3e4992cc92d4493cd7c94b5b71b7abe5f75beb4d3cca3ccb8342f280127a997aaab5fc18a37f80b3122551ea5e7a5b2468ca74f0eb92624aadb659fd1f3e499ec579cdf8e62f9d3a57e63d1fcebbffefde72fac99f805c7db33e10b598c1080e7db93b66084c601108236f57ed3061ac91c1310cc514b938a44a82b345ca2e5e365ddf7cc988ddc1b005f9d99b7c7d9eed734b03b2039452f50554fd5940a8c283035beefd879008d0dc395c455b0fb2b20c609416daa980bb10b9deccdf8520962490f126524226c9f2e807bff825cca99456f0bc1b59c1062c39973ce0cebcd54a90dbad8f3c00ddb609c92e8a6059771e2262e22379e84cc396e27ddffa45661d4162c8e633b0995e8fb764a65e604573d68e060a7839af871a97710650800e3696600ec290795c1582845d72b2442b6a62b1e259740e9153b59420a22647a351db225824ba8945d25111824f3db764ad802e7403ee5c49fc8dbf3bc8c6f5ed67ffdf63b12eef1abfcc4541f64057cfb7239ebee66024b96b3beac1950c080c73a6ea794f73103f30136232763669ade622d5374323ed58611dd4e75108d1eb7534162790f70c4631728dbc88fc264c07f3403e4600f855c411440009727b7fef8453f1fe8b742e9bb21f4d82fa9168331f449aad50c44293c2fb8a7c7bddeafb6b56f1169c53e429960ffc95848600389b2bc6ba21bf3d02a5a9dcefaedebb48cedf2786640c9389c55d274352cd3fe2ac9d601c947eeb295cfe0143adc2ff8552ded88540db2182524503049a798182fd36562632afe2289531b5c0b6511a15cc5bc87a5a45124ceb5d77ab0fe958945a790a46e9131a2e06fa6402d687f582298d298790a803a69166ce3f408f8419170c252dad30d72f2937f37630f2a2688ddb2f947da194c732fa61e48495f1f2d55b4c3e2e5e9715523e38bf3fb5fe66f3fff7cd22ff1f4a79ffeebefef1793f9056f4f69d5bece8a74d980c415c289f42db6687ed900ef801f6290e80bf1e7b049a6a6f216c3d47fb0b4479d43116a94ed946647be4bdafa86c5a9936f61d2204c5b27c359474c91d4727d1a4e8af5da6fabfcd78b85f0aca56d24c085fad0f35eee5726ac6235144c141d00aa85c8b893a9cb578f804cb5a53a591ab0f86a92308153a34cc172035084bdd200b0ac7a8531d04fb6e88521b748b702ee534afc3496fa0c7360ad272979a7b589e4c6de8d873d4d2b27646ff645673b316370ad6fc8f45beb8791013ccbc87a4ce0ce18f1282317db1d4b1ec5802c3509ba11453e54c6f702aef4a3a4dfcf3cca07ab48a106f051ee58f35906d5734ac4bf36a3c6ca18993e8f3229b38c761d4ea962b9e0329fe5f1a8276939ece001cac745b9d1da64afac11ed7d051f421f7b9ad0c3b32795900ba85ba27294b1b459598a9f5390cb06669a473922bd9565acfa4c3959561a1a2a9eaf7a26b2c7461fda4bc450641f5cb7faeee55e588f24fcd7f6fdb0eadcad148a65fa3d7362eae212224e9984735eec2d916f6f11af4cf246d2125e9a0cbf447b575fbcfcfd51bf041528cab87cc88904acbe7e26d8716fda4758bb6d4163220f026bf16b3f80ada7e8a39c3a0b668c85a376a9a476f1882f598242c9cb9f62df9380d40defea4bf1de0eabf71cae922abc60eeca1210b5c5f3cf0bf2fa561d3929209392258cc3fa285e6216f56aa9bc5e4dc43649dfd3f1a63e2ee2ad918c2ac9e36004085dd020bed63f16a2cfd5f76b6e78723d4ec4c86106e4524dd60525fd12274af836328366c894cc8d08d9340bcc65bdbbb115b21682b734834da6c824288694b7c0d2c2a265b1ef651ac016c1536c2004b9a5c38a00a915d696aa6781fa368b6a60f75918833b1c0ebc95e3f6eed70c995dbdc073ac6d1ad0b23d622264ddb2a8ea7e58a989f04c7d641b64c3eb191d81b10db53907260a6a2143d4250792e466cccd38c7f3ecdf5a53fffe8ff7e4d5e90fdf33b28584e017bca8c8154a15e3188173163c3378277228406254a8c9a52d8760f3dbd8526790131cab60ad8598f166fa03353fa6795dba1d351491dad85e098db5bccc6acfabbc5f2315649b6ecab8250c9893f4720108361ee5314f9160efc4fc20520d63e4d5ca955904029679a3e800fc079f7abf5f33c467a5e59963a080f2968dec1cbc72407063a163608f5be708b711b43484cb7bec934401872203be8246ff1cd0ecb51a0974824c5dda92c0486887208c6c3ab20911816cc128a9bc59ca37e15b0b48c3062b04ebe9980f588733c961260a95dc49153e83e378943f320952c8270d785b6f932511b56e32b75595ef3e699cf48bca71650783ce950e1f1226b257c5d781fadd37fc3f7efee7e9ef7ffbd37ffefc9e7744eaf71c9f018fa5e7730ee0b1c68e201bdd2068f473daf34d6d349901f29a1ba2e7a7085d2c8403eb242b8cd6e5dcd94a0b38ec862ec839081d1ccb17e87451e1f4f7ab20293bc2c9677ec540961264d8c16b2b2159466699943587ff009cdb82405e3ff227da64b1109a281677563388d1e13c63aa471df9bdf1caf09ed4768bf6d94b6df808bbb5860691f59132e3eda8afb0cc71462be342ac2cb0dcb86409b37dec7e7fff19ffc7e94fbffcf6a75fbff02dd62f7c8b9fa8654ad3e914bb2b9d4d613e6e50b5f8d0ba53d139a9e9bf1f2594ade8f45df0731ad9d250d0c5fd4a99e95a76b974d888baa9ba98f87404e3163c80ba65900b1974a534b4c80caf5f6282e7fc716446426ebb48020938c4a0c88a9e40ea844f4b3fa40b399bb54dbe3cafe4750dd6cfb9e8f799416b46dda2fac65d13a55dd0f8b5363aebfe9216bdf5e8527ec69b7ed4fc7c4d8a9405ede9c342e3a253ae531e1fc15f4f5845faea5e2e8b0602fb7f736d29f6bd5d72826131d2e53964dfbc885fbc815fb80b9f6f2073698e67180ff63ae3ebd32feb02290bab30071b44a2409087d485a48bead142c2a54412fc5b55cd1701d534bea80ba9b59f3fe3e4f7ab113ef10429d83bd98d080ae9989755c757bbd1ebf65660df0b8f7c1d5e0997153aa87dac6d6b268ddd4b65c77bdf3d54546dac375d60f84a94e7197ec0d1f41fbffcf3f47b2ee03f7e41d5f8493b0e7eb73160dcc1254bfffea097245b911ca628d66a7c540db053005c2a8a336241602d802b24f4465137f51f1148409ee271e2fb35c29f2008505b99494042ed879890ac320454eb5607a546098f5244c4aa10ed3436eba7308de0d1fffdcaf50b9a329fd4629e0a32215057c6c468b4eed09e0987a2cca14ef390abc9e4fc7d8ad1645b424d7786e7c4c40bb3294d7a45048959b1c3f95bb905e8b6860d045b60506ee4a8afc50ab1ee79929f1e1f5567aa98da768dc95b37a8854cb25042a9ac0fcbcb6ff00336246cf49bfe3f4e40c9a2172edc90a206e03f8badab450af348f683d717121ffa383b8a336217825ac8256eb4aa50ecd5ef6e43b134fdcaec1fe488bc7e31569fbd08b4d5174f8a1be93f5954af235d3b1eeb8b0b6628d49d97c4c4dd039a592fab3c21eb85b1f6830069998310c5f408f0887c2c491e302e01bb86b42c4cfa2225e703b989d78ebb5fa5d2032a7b39c32602b392971ec3c30285b491e3d37a8aed8ce327370691d46c95783dda628fdef554045692820be5c410a2499f206e215a82dccd601dc0c709d1382bb307964159a0733c61a0c3fa40199e83152a3a363b3b775ccfabba5f531393972be794fccbb8d450d592be45771ae05817274e0a7296e1d18a327c1a10374d3296cb47dad09b7a3ebfee96a31b84e040bcef6128d8300eef7c2227d89bfeb59ebd9df5d797f7e30657cb5cea99ce08ff4278ad0711a96e7265ad9f6971d159fbead52141ce82b8b5fb90250260810d65f5a9781485f072da82a4cfce2df65a3f21aaf5ae7daa0e5b1fc16efda6bee55d6e3a92197a3e6119e1fce65eb0b7f8aafec62feb1b13e08bb5ff0bb2ca4f6b3fe88c055aad28c2b7c8245f480fc0c5dd31d0baf1c5248c9d6535f029c43cd236e26d8499a897068e5a5d85b694c0648b28bdd902ba9a4698fca7a4abf9b01516fe7c6866252be73c59407e1fb8929057c51210c193c51c8cc428638d80282a56a46e2248990c24c827a7b453b432c4b4e7516e4636c139a61c219a82482573da092462ac094c6e822c63d111baa5d0d0520c8e4e3c4c062d25d7afcaf2a42f8efceb18f9c1cdeaf13ceed748635ed4a601ef12156500db2ee3514c848660392f46550f356efd5f40610e4cddc0773060be0f96925a11880f172496e9e9799ac7c9f542f84c64c227a6a657135dcdf10f66ea7660fc63222b6465896f56027928f5b6866c8ffeeed79c8cffe636d25e26942160216c19b9e17038a55ead38534a5627242a2ae6746bb052f34d9783784ed2f43b2cfaf893045b8028ebc9a85f3b320db43d74e32b8f82d281a0cf41300be67e2e498d31a373ea8024302a94c4a45213891458468f3941f847cff191c984cbeba0b4aa966fb1b669f2aeb0be53270f11fcc290bd42196a52e5a897ac16f1f618befb557a85432f4d944c4315be5a7897859d6b7992b8d1eaf165267ceb56662f2c23075db0c1547b96bde458a734abd1b3417dd9ce7fbf1a437d40de44eb6081766b2a12136328c63dda1b0c13523e0e8b39ebcb138193108a796a87671cf0dd74f8bffff5ef5f52f8c6f8d5acd8c36356ac07a5d7649929f7ad607b8a1967901f503e4812c2066468d2e33ea22443fd646b8df287f5bd2e8ccf73deafb907bccf7da284e04b06438b4e721189730f7415c830399be8fb1818b8da02d4b703f2f5b6135c39fa21e0a06254707d3b7a3fce172c01015304b74e98f5a527240ac0745838454026120bd64afc4f109ab560967ec178c7b00fea84dbcfc11f32a03cfad615ac35e0759f0c872730698aae238504a94baa0d0866975a13054fe0e4d44fd9c715bb2ef7abf2305033698d43f60ca1c1e86b675e82fa7697d9ef3c38106fea31566fea319c39fb54461994d3f72c0fd2299bef313b51775fabc30a0f79adc74b70bf66ae24f800ac8c0cced4c711d7cf72c4f86712047b2dde0f7c18b5c7f010754b34a679f06cd924e4582cf3885ba2767cfcac8fd15ac751ad8f088013fbc62e3fd8b6d3ae63a407ecc050b0892b5eb15b4131d188817dd04dd73cf6b3980cf8e25c040c7e79388067fa6afb7ae1fbe3e70e9c43b2694077053ee3709919d736984ed80fe61e768fb92721604ca75a1da69f913ed4f075e6756336cfe3c27e6406fd1db75218dfba95fe47257d89854ba24b4a5d305dc1a24a7d43dc001f5a405314c9375d37eafed5ba0d32539386d2e751120c45f6fb0c9ba42280c5599416023c2ee053b6b2e15202de74044e249bd847db4c0e23756d8360195df149783ee826401a40e7641914aff3b9708024d46261752b4f29ccd014db75e877198d511965b0c617ab475a80b58f3d1d8a3d47097161e1d9b18e24bb26daa0c25863a21a801819cc71676a0d8a5971c1460198358c0d4ac4f314d2ce0473a9241be188b011fc83a01d8b647b24877ec8137bb1cdb87b06d92112e968403632665c1606bdd666d1d198cab3c4d50a0c93642e25d1e6e7f28c461b7a6804baf51dc9a95fd44fb0516e0d5660f72085fe75f55cabd7cdb0c5f04ce7b6f05d673181280bb1626244f9cdc45037d0719761d42c2e077f58c4a8ce422cd9aa3216a03f148d891be58fd4adeda6257690b8195bce410851417af1e36bbe5b0462e02d43f5585488b18a338f11d45c032221d89e907a087415644542507c740c889a475c5c3a784ada0151ae96ad59365205f5c84be8dbf36aeed788f45310b65931c1952b96628aaf70c03d5a91b6e2633f3801a317425098f664a7ad5ba4ee6183088c166644f07a6005e319a92a7a5cc7fd1a0b66af0c283aa4c688d4ad2b850af5a4b5c58c25002a890df4eb550e8a72461d9f644ce8e4a9022e640ce30bc5481e08786ee28bced2bc01bbaafb1532e0f806fa8c9822ec8335dd7e32af6600e7f2a4a91ac3e20ca2bc72c80fb119dd41380faff5e378660eec31f38d384985accf0814fc910c7214c20bd1f8b8ec8aef57dd8d511067cce7dca1b38c3ce60e4622a29afe0bf594cd59e98856e85e594879c4b9c8b52eb60344b6c4d4e988e259653bcac1f68b7655f76b946efb8a3a31fbc0bbee9d6987b9e765a2c97415bca79a34d0ab70380cc1b8ea829b86eaa29a2b64dee259f0691a74f960388e584aba416e21aacf7ce9e75de92d52e9aecd285414e44f877f20c67e9c008a7de9dd346cc4c78050c766407477dbc6b0bc3ec56e4f91e71d68a3c31d0df0351e37d0ec6670bd3f60847d617dfddb17d6d73890e31191a482b50545aa1b828e2f374440da9689f702314783872c6abb64451ecda298945906ff098ec7e42c102846d1bd0bbc00a6781dd7c22f064aebfa45eab3a6c20d08f0e16c051f1d52f426f89237ca3b66f240a208ba45d1ad77ced01ff01ff456a0e10c5137e6f2c1f62ae4a93b2e006bc906c7a6ae08a48db13c1dde248ce6c28056e6a5901e32d97042b9290f5b4e652bc18c11cca5b14317226199d677dc5c90fa1bafc5ce7fbf0adce8c07600c494b36edd13b8fa91e437c3d60b51f4d001ed46e878ca103e468ce244d727f0d2277365b2ac769d95c90e0f8fda306577acfef474b0685ef748ce2f7d716bd01e1e4530e76fddcf178d0bd4cb47f3a6ce54f3119a6984cec81ee7b388e9b5906a0d7324d2cfd2e46b42572724fd286f0fbf6cc52ad70789a832b78c2b2398806c73205532373aa1d4020826fe9c5914488eb288742eecb15664b1a9f1e9be1bd9111d0af774702227552713040a5ed1b75cc990b7f8da1fb8099688e1bbda29a16e2916934f497109e8502ddcd77f08a418f548dd46bcebf98b7a225d5f6b321d9ef5cd3d82bb16a3e08ea14c5523a3afdf4ee948a6c5c3a423eff8bfc21a5e591819d73678ae6b3d8404805b7471de00d8c082cfc70b0418f76bf58a0cf735ab4ae7d2a4c8416ff37a2dfea2911afb5273124fdbf8a68d5a1bf35d3d1229a38f0c9f30df4288cbd5a799b1cfc3749447e50c95e1afa953ffe5046634c3396c8f69ee7e45e00696393fd44ceb1c1672a771ded5ac82bb0b00404e3f54a3c557dcbbceac88fa10d900dfe8f0846111f1731ab680f30eefb781d13f6c53c0abba5f99f01a3c16bfc3548293a957b304ddbeac33ddf515a90084eef0d970d8932e4c8923bd49fde00e3478ec12433ba0071e0476e87a6394947e517eb041be8ed0fb5bbd5fc1d5a91b4ada4df0a5d13ceaa611293a4357d8e61025673e1550049c9b61d5d580068dba89def634c7d66a92263d5f9d24f1a9b4a202d7406fbc1dd779bf46e0103b77b13ad13066154c2187c8970caab119c3d8b0dc139f8414b11813ea266d73c25f58c40ab1991aa6ce90871c26b814b7e799bfb3ebfef3b79ffef3e7bf7e8166ff8a2f671c18bc42a228d1afa3d4258327a99de19d88895655f1696148939a05d655a23d96bd9a5f02de5bdb38ffb7a86554ca927132988db078a8f53d79578f3cffb57e6450eb39fa39d8e6290517c13fe9c5df3ad47fd3b2692579b98fd60fbffa244fdc870df5edd4f777fc80089095e4296f2342276bbddde6528fa8cd4bc779e199cb61691393a725f60f6ee6d03d5561c60c1dc2722c89e4bb270b4c8edc7aa6513ccf60f2aa9e69344f39bc7075e5b090210a489c9a5712473cf4a5a644bf89d7c5b27fd306e3ff722f6b9bb880aff2425a5996343fc74d2a9043ba01718844bbf07a0eec10f36216c5444affa53eeb32f7a6be7acc4d5ab4e163234b9ca7f98c0dfee71533b4040ef29ac2953c38ef4d1b4f587a93d6e7da2ec58aec60d71ff3538767d6cbd0dc97b1f0e6e643ed736d3fa8f7f9ae1fec42721acfe856ac56624a7eb2ddad58fa5b842d22863a6da6619200dc5b755606fc9b87d2be954d4a3c90e81c701b3a8c857247bae5bad1ef81fc3c1088700d4262038ad051240693963a1d0a88a54251583fa566f0527c7a70e4377caa10d6c7874d4d731b0e8aa980262136b0d364707d84641346a20461924791978162a41806436b9eb9dac426bd04f2f082790c5b2f04e64c42d2cfe8b51aaa279eb61b3c153223d52861b3246480ab256c579ce2c1bdd898d0a33bca81e5ac4fe82372c58356634a79030f08f6379348903436641325848f2c75a94fa094c8f1708891763b67dfc014185330b54a046ca1bb39f674eb15103e7d1a1e1e8bef206d400724bc74daf8a6c7e9a244d54d283bf6cc9368c19e8d96701da5b5c7b57db21feed744c471131d98d68f3282e095943c2c3164de8ff44ac044363af0ac0f4100951e1fd62346cc988f95d90bcbd4a0269c8ae77c5ecbfd4af40798f2a7c4a35331346c840ea2957582fcb0360477f2d80671608ad8b33ed37122470953ab95d923c09176a6e7157c67d0fdfad37b479d8c6fd90f65ecad0b36eb52fb454ac58eabc57ce97b68d98418e28cbbc40ef773ce693bc5bda64ec8d0685bd847226f888c7c79ed536de2b2c7de903a189adabdb2875c301f0ce9f88a5a7ffe59777db3adb5ebedaccfade574719ddeaff6c3db5bd19db59476fcf67cbd8feeeed712e31e6a7bdc44ee823b7ed71dc461a43ec6a6c4b0b71e1fa35362da6b6a8fe1717ddfaf59ca5e6b7a8c4816d98bc4c710e430f651f2a7bfebdea33cc6c4ddcfd92ef6e2fafdeebdf9e7cfbfbd7d6fb27cf1dea49e0f6a1012a495bd9c63bde5dccf5a73438d3e0bc0d75adcc719ce3cb092a1f686dafb5540d5c326a2563569ce9039604d5285221124d6ab767d4eb5df52fbe67bf8f5973fff7cfa22c5e8abedcd6b1e23d2d0215f7444c2654b80504a86b369899ea17e260232f3c103ec7c7f8248f45852e743dde345ed0a0fbc6f3385ec6b4bb675d0e3c117eb666993b2174f411b10041e52ff48b6341e26e05b936591608396b4a033569d69600e6d1b937f63a2289b96e008adaceb9de1a2a31474e1a06ed5094192d1e017d6351245ddec4e942049cca0585b80d908cfb6023de4b4756d3f080af64d89b95d3c298599c89480579322b8d1533b7acc24db49ba61872b63f7454b307006ea849af9cc16d6a1ece042eed45c1ce049891644100e431e36f6b142b42c73c9a81bb09d5a9a99b242ad6ef9b1b82493c58af08a90a70b654253da03a4d28e44d9d80916c29b993c5cecd3dbfeb9fe7e9544485ff4d9323a539171639348e3143c6581542903f46e0d41ee06b3d304f8c850d6e8f94ecfda942ca115259d3009d8b5506e048134295c3a7cb72422ec473e3c33bbe1c81272b10dc06ed2a3968ec5368e524d5897615e652423d04dc8d4dde77d7f3fcb7c31c77c9b2b4d103792cce7510660d6f02cebec8274f846161f52897057d071d302882c38cba0a81ecca03ee69c4822a34875c10c5e45a255b231e28c8db81b2ba730ad546090908511024f22a405269017acde91a81ad859a4fc42ee07cad8e78ca39e7911616c9f46e07f381f8edb9638f92fcc5ceeb980054f649990a0f66901fc949b1d4053f563e880730e9627927c8e7ae4a6098450051f02720a2fc023a3dc41f2f6208a0cc8112fe328f900d7647d22a2a9535dd1ef8ef15afb7a0461eb9bf61194dce465b2b2741f2c122a812e78804ada346ad9170327e4494649ab17260d786eaba39e882ff23e0258b210cb6865171f0aaf95580aec26df200a865f36dfa00886f728223cee4e4e3e45a38a641971c047bdc95de747b9636b8b62c947d62049e42270e75a9cb270fb920ca846e6ba5a4a1b50087d4a2784877c7de3012ed54d1c9790612f87cebbc1f51b2cab64899d0156279e2b0406c69bf6558cce8012990c45bfa25c52e7dcdf0e7f405bf51ff1b9bd5ee3efcfb47ffbcbdfbe8081a63fb42fa6da101e0493148e562b32ec9d791ea25b8cad31b7263334df6c19d2a2e5b3a016193f00ec597108b3550f60a3a5c1608e316a062d4f29d512390a3e65f20ee9fff1c9f7b6c74ba2ec6909806316ac580d4fb831bb41c88c5a2769b2b780d93623282f336c08c28f8639918d4f49a6c099a275200bdf4ec09a02125a309361e96c9445ed8667d16bb5b1ba5f0de199c3dece4890bdc512f7764e92279927f0377c7bc59267759e06eae7067a40b55f90734bdd07dac56dfbd4f3378ffd6f7ffeede79ffefc8f2f4cf9f487f1dd1e25d39edddb39973d4fb21eeb520fa0234a9d74a77b9dc04d006885b85ace8eec9cbaa58e8e7e22c6dc4cae5db6936796420a5fdc4e120918dc4eb2c684417d22c36ca90c63588006d61e97c4cf0e188c65a3eab7e834c0130241a5bf09c512b5b954d33c7e7587a57830f5e4a57dc36daddd1bcaee92884203b62505e2e5310982a485d49ca440d51d322ce507768d62adbd6081ccfa80d204faa181c0f1c8b61312040d5253128c8c447039840b9a79996422f9974ec418694333713dd26e860d06092004dbe9721c76bdba05d52941ef23c1d94e6802d335b2ddb796fb2deb9270d609b4601a654a09b55a2a8280f2b96c6d08ba168f9f3825729e44b8ecdaa47cc9a925e24aea76aa9150a2ba855d2653cb91e541fb0046947d01f7ab6ebf48d95fb080e99e00d267195c48d8629103b3cd4a97b0a5e4119ac5858c029671c6f64e1a51887a03f3919464a8ec0ebe53b5204855976170f78d6f868c68fa36072d96101c16491df8b8ea1f9b2dbe982bfab72639b3b6ed95651e7841aea4603d834715af749c026058c4365f98e998852c33f830f28c46d5e861f1dcf94818c80021af559d91e238fc507ab374ef0253d3f6254823a82827bca205098469fb74dd87211d6ec2addfa982e24c8eb56008ece85227fca3664757a45f49bea51a6046333710a4e0752b1566741a32d9d3d38ce6248a33deaf290562db3e287744a59943fa48f6784e21ece3964c4b027eee180f3925ac8dc99ccd29a62958a252a2940ff80a0bcd53f2060ef810286c540dc0970cdef8e00d82064ec63a9d2c27570cfcc54d53319d9c810fb521a875200c04d4176a37ea26ad1f8853d85cd1ac3f21f6b862576aa4f8a071228c982e2e4e3c4416594e6e5fd45a30a9beade758267c4407997e22153f4076c982771cd54e5aaa419b94ef0a4425999809165ce66562e2106c80917e0eda9f0d8949c269a47a9d5028e19657fd778213ab011db1d037bfc6c44240fc8c4851a1102ee60702da8b58f10cc42c32231afc36afdde8d4830c42caf76ea42829e4c2c32e849130538ea99b055c845907f63ebe7c919d5498f6f27e37c7fcc7af3f9ffefcdb2ffffd9539fa87efdced290d465a2f14dfc6b7a5d6d32122adbf9d531a945ee0025c2e11762536c16a2190a5477f812e44b95f2395fc7bd8eb25d841c0c59d925c24354416e4f2a9d98fdceadf7ffde9ff7e71a75f20803fdda9906e2beded42687c4ee5927aa12763ef974f2deed78ce4c499321c5c20fd4f468dc86294bdddc09c37517122682483df3d6eb96da79af67149c1f89af67861a7da39b20545f67cc9c8f017da295c338758ad6e00cb253356a63b31880033f3766c2c4b8019f9ecf17ee5ed9d4ab4db03298ddd1e34d02f8f163f36eafffacae80d7ffcc2b754f363c3d3eb1e2ad7e212f24cbded7d1438ca7a643c4d42266dc0f34f5d774a66884dff563b6014e2f10616086c2f83da620d1b11f0d8f5b28f58588e433eec57dde5f180d4337642b57247a83363efe9655f59f69823592223ff6da183274b7a79b17cd35e5b87d24fcc2f86c7805612d2bca4b4cfbdc7b44b6bc7d5f02f646320f86fbff6b277b85ef650aafd05c2019674339ff3761cd5c2de245997fc0394d7adc6e33758c091a1bc5c79e2560b66bd3cea19c7def88ccad99ed9a70df1b5e8ea561b3e8f50db0dec62e7a29bbf5a6f567bce65ec2da51b34e96b7dfc0e9c5e4a67ebe5f17b2531811d6dbffef03efcf976fe5e6ae61fbfe543fd1f4dcd441a93cc1800931408ea254ae292c8103fc8c052abffce38002ac3a328889260a3c6cccd8b846481db36a98623193b9bce5ce362fa3991e51953386ac9fb2e5ec09ff591a95a2c9725a94e572c59f9fbb249c9bfba7404fc976b7bd22a22edfdb59e0e792f717c8e35df2438abffacc651264934366d4b862a0d87b5b67b295fd4a605330f33782c143f7890ce914477ae2e2fe754ca0df4406738656fac0535d24d42b25a498296a8e999ad7ef43b78efffffb7af081e1ed931922dd922c667b205b6b181ef60a47089da671d749a79207de38037cb4742720741cd0669666648ed78b7cb561140633e54b1a2bddf855823a635c63a754d03a5ee1122d10d503d4874db8579b2309da77d0595290ea44717eb0be549dbccea494e93b24195996b1f3f226289080b32ab3ee629cc588b99d3b821d2847bf5da2066d2f67443bbf3028a9f20b6797d7310dd1398ad71903ca25a9c44a695b94540424deddb31887704828b512a81cfed9c9adcf0374cb6820b612d0232671c61b54035596bd4ffc83bf57f7efaf5d72f1878e3fffa5fdf9229957a84aee0dcce788655bf1fb35a8ceda0f4bd8184c59636d83109c8759a09869866b66a3ce059c9e2bd1171596a2d30114bc85f5c28fb07b7f5f35a48260d5cc619fc8af405f6ad984fb06cc3e24769166efaa3c1a699f106ef41ee5c34e71151e67ead5a426c33491e214b787cba9262cc3cfbc3c1d4d55e268eb782f541c78859ec1167e3c63fd97a33661a5040059f18a2a847fa7eaa67f4a46f0b1c1521c3f1098b341e0cdef4e52620e861f0074033f139c0cb3b1e725b906fcda12003836461a0290568d35c4dc2c50422c408099378318350e511ed6ddb49679199a1eb8400a2ce16c4c9a3840506330892e9b3ee9e5f779fa96d7a5f4eb85aeff107dee6f7aff11fbee078cdfd611da8c5d5eb2e534bb4f2879b0f41be8dd21636a8ec1d13676082c7312b1af132d8e05b04670615b7125c76f192b05863646d979f30ad317908ee5826fd0fa1b317a9bd08bfe40dc9fc7aa6548cc1595897fa81f94fe0b48a59f67496dc6f602f3fe79ef5d120f141226672b53f41b7f4b8ffdf1fe3df7efae72f7fff627b16fb5736d8ffe3252871d71d13f89b8709ad5f482f806a7233b8f5bd5888c539bae170830d88b07f6c14d5a50b0d0ef04e47e5c08e52e7348fc1150a84908f1b73120cf5d7363c161171f698c0a76184f8b92f0ef802de80254aaf5b9ce6d1e89c5f3030aff53a1adf3de2ff7e6f61fcf15b585f32adc43a53281661ae9b95856cf5681187aeef63b9ea18a6ce87c1ada7d8b1b705d964f5885ac77031557644cd75a21acb88c8f6a63e912c331b68235ea4655ad3108dcd0f7c4431479e1cb8890c05b6e39eef57353ed617a14d7dd4be9e34244b7d8599b3f653a16f6614b988d92c393047fd2282c4631149a64fd3cabc86b53dafb97aaa04862bf41a7c9622eadfdf3b937cfd0f706e2e293726abf8a6fea026f4f5983ef3c20243b99db2283a59bd273bb27e5671999cb677b588daaebdf0aed6b3424be9cd555afddbd1b95f53f4807f7d22ed0d19a920a26aba13a11a1d95cbd648f07f4bf3d94c0551a0bca4674274d3a785a414676a0b6509c22fbaf375e929c8e94e7dd95841a025b5859d0b9ef69496fbcec3203e6fc68358ee48252e6065fcc521c49c01afa20228ba038fed4ca561e0a078b7a85be0b69ebddfaf2560b33ef5dfa24b7632f1818aa5aa6b65b775cc96a8024d980f3d22c9d8ac87fb3527820e07256260e59687e246ac44df55f800e34ca6de459e44f7be4422caf1120448cc7a613af3212450d70bd39c9f65ac29becf7eb4004d851a7c5e78a9023b0fdb3b5363d54f177dffb21efc37eef1336ce153484db12d87b8bc5efa04d568f5b47cc95e3b874265f643f13953a966e02d9724efda4cebcd7f32984596cf1094cf7321a2dee48162f3533aa99a97f5a83076b9ec2a6192c30ac054df8c45926fb22e25828fa41ba2361906947832e24f1e65cbc3b0e0564720b03226fe2863e1184719bb2cbd770405376e01202a00eba37c2ecfa3dc0c854a36530ac8366c4922280c21b363515b6fee637da5c6cf14e05413856733724f886c433853cb1deb49de98cdc19d614ad865d664128c7592b72c3d940fed3962ce65d04a7766581681650158cbc4c43e958d5cc4d064c6a52726dd4d6f2b13783b110b075c2b235845f6db0cce7f81872c2772a5109906df80580c3b4297320a69364903542d6d03cc0d93889848b815f9c9124938997b8200d8b38ccd6b634e0a22ecbc2e99f41c468a878f60febf8aed0135ff1258d248a594372b8f6852ca56b63682eb96d06c9cd476a788759cc2002cbc7d229cb7a830d32c270772aeb816c11cc599b27c2e4f319658b15065b57c646e451318db8ee246e43729911b188161dac3a580fd5364c2181e34247122e10646ce4c976a5e34d30097b3fc1422605e7e850cfceb2c419ee2b1c860c1192c01ec7730cc22a4b5c0758bdcda4f2bc637f6fb2f7fffcb2f5f42d7e677f025f85fa178dce751a646b30ecb2927e312ab90722ed3ca600126d30e28053abd7f7132230c34bcb231833c310f2acf24c07447436527261ca29c539847094f051f76c63069b9701f49241522d24629889c3f2b23638065817a1c69a30494b1462195499024c697e913f207895348b11d3728601bf49ddf3d66507c2e289e8631b2886517900fe78454f44f634b0baf53fb79a648b0eb625b09286aed5f244e3097c1b620dc2e14728ac2888d5053c0fc66718c0e0b8a45a41b0eab8d79e37620e6ad95c97f6cef4abd0c2bb708c901f2f8e05ce42f22af69aeb6334e930871a07406e10e757b3ace2a34afc751dfc8da359e653897ac5c8f8f36023019811332a1e58639b15327b650b8f3280fd161b032766fd01a4d814c93f0bf85b1a70bf1c210749ba6011b034ce7c6bdc3f6e901fdfe07f7afbfbef79ea63ffcf1db842600bae11a8562bd64fdf641d92ac95467ac382b0c0f684fd6feb84a245f00f5390130e4136e70572421d8909871d07140b8d6d446066865a9a5aff515114a869cea817823f08ed17113e447b8871cf4a93fc4cd3f953f0ef92202f2c4fc4ded482c8ef69a98ca65345fa2308df559c612508f748204f9e149ba322edfc841965e36722693e619b780ce1f221d79abfd9da8ea191817c6c9aa8f5301e8269cd21e8fe9738bfb15094760fc9c11e83c7e6a519aa1cd62cad44b039f3d79ee8349ce740c3408600add13937ac8f091f723f88155c7ce72bf12e124e4efd2f3616ae693320123fd1a279744f2be710ade09246b80edc592498f6d48d14344a0a10812b26cb5a969cb6e42cf27706231f986e4761b66479b02e105a72c11be743c8b6cd9da3ac8b08cf042b447ca2cbe5066096bf11cab5e7f7efc521b338f9ff7ce4ca1666f153ef7d7797bf0c4c530e87e0bffb6fe43f2c20c3d9620e5c25e85afe2730dd2659cf32e2eeebf75e31f178fcbc2fd2dd1e1ec89d775d7bc045cc7e2678a9e240758b0d736e2f56a53f4ac3f98615efb898bb6eeca60bedea9dfb89302d8b5f1ae159dbc571792dbaec5c55f927c00f807da6c6951e39595bd5cde514bb83c0739e483fcb87982c575424a0bf7b64e682f577e465a14e51f5c4b4f0891c0e52b4b824d82cd03390ba42c74e67bb8fbe232b924d8649f07020ae49711d005d93d59f1127246c79c96fedfd763d3b1f679400a74bd618e9dcd18f72be6e9e5803291debcfaf3dbea7b5c8e1f9e6f84ebc2cadc8149dd1d8b7dfba28d07d0bdbb4ac072c95f1da90fbaa228de5e1fef2f7b7a3bc8a17fd5feab7ac86b7136a704b064530956230bafb75abef023abf9b6bcdb057638f655ba7004ed0896cd498c35fbf4a00347f1835258270703854997b7a0062aa295dd9e77de68f693aa100e5e66caf225608c1f0d1044400a69c43a83949c8d0a74e4271f7b3d0b36f55206d724414c1a6bd8311200f9a012fa3b2d9be0d6c1452d0d312eea9d4fa1b2710b887d676b298c20a3874f65037dadbe7ac01a089a381b7467c97d3242f2856c8c3d7f517fbf265290a6e02730e28ce2e25f4b95acd103334bdd7c1c672639a0a57ec201ee277b4fe1510fd61e966114a4f4dc111ce4fe9ef898ea35baa10aee2a61a4362f199160f04035f7b51fe08be2b2ef4f4c967b43f318cda875e2faac5f0c0cf847b16cb97a301d200de3b51f8b297a9326f12b2c6bfa1cdee0e2988966a28add426346a56c5d8edd625108f86f4bda1eb9f6176f28b356c742ab56b0d5185ed210aa65a877ed21b59d969c8fd44814eb9e7aedf47bba7bc24e2ffb486fa2ca7c89be17f8ec52597c3739e398d5739371bfe1b517c8c6e87db9114e3cabf7fb32f922559f434b2f2604565c7b885bd4c56590e8b1f74c8a48f46bfe635fa53f525b183753a582be7f66d8edbf09fc30eb776586207ac5d75f12a9973cc9e3459f718ec17f4975586e8ebb4a7841b278b2c9843dca523f4d6a666d0fbaa12c4b147ae88a90257b42da0351ef4d1886d656d31b0b5eeac5cd345cfe525f308bf00ea7352a4ebe8fdebc79c52cabb0985499d7efbfec2fea3f0464388ba9168b8dbebb7ab84e11bd7a6d8f5cb69c7cf44690ad95b37f2aa48ccee60864f2a3e8fc4ea975b8de74b499da9220c5ce94974ee57ac3866522fd926e1b0d650f774a025984a5b0900194bc4ebdd816976531daf83432e42e908fc4ec908497a04ce829646014792942049b1626b57204bc22096f71a346bf16cba5e2758f176aa7e986cda4eb47a770d4c077958d8eab035245bd44b84199089809b12a94c1999901cb663f03d10080a14e2a6d42e13e41b92223c1b034161b66b53e73d8389d435e3695bc313f173a80c2195437e13b974bbb21f0b3cc61beb4c8bc09a1222c7c8d83162ba677184d489ca9646c3031ba32e5d0488a30202d0cb193092d4e3a1248c8ce04452115258ce909b73211d024df8017c412b7ea14536a2ab45329a24202b836f631e1f8a02a46eee6ebee5ba1619126730a9bcb55dde0cb8a307559d4717fc951b26aa138747d93d70a4943e4ee6753b570f9adcdd2475d753695853a9fc5ad18d1ab4b83d2f7a080aa6d1c54e7948e586e286acb3dce4653dbefbe10733b6546b43aa2017e058e193171c602c85c038027889806228c84d6d74cd0a4b526cf55c67e096e26ce6e70559e62dea8b685587826a13d12371fb7138e7b4c8d4a180cfbbf3561bfaabf5fe9fdd54f34818a9a0940d1784474d649d82de59826d75fd465ce7d01a82d5dc9baae8da0cfaaf6a964e3d0e8989b4175adf32b7980e0efd37261ea30cb133af7477d603998927ce1ba8b982e5793611858e40d5b6c1871fb2920484a74ab421b067600b61c90a033a532927a529bbba21f90bc63ce89886c47ac37d43e2224b36e9fc6ec7ea5286522b8823295a4a12535de08d81b4008074177fc66d296c12e1e3453082447c4450aa6b20628c7b0cc4b92bfa88946de76cfd89e2c8dbac02cc870ff93b8244f32d45b1234e25450cc67f89790b929a3180080e1fb0412e514b844e3355c34c31368f819c9490fa153d74647e67e85ff91af413ea2e03a547865743ac6e8ea8ccca1ddb84647a8d3a23011c5d51a70fcf135e50486b717207360664d922511661c2bee452639fc131812e98c262b04c4beb46cb92a89898f08e726935ac75836924dc7c72b37083cad96dc38f2de663b9877cb06df00a9cde0d44771024ec7573c77fb1e9ea373bf82e58bcf04496e7c54fd4868e75b8ec7da6886eb709257112f014116784f6a315e1de6b2563d9ed8c989301a904d1b72c113c28a850643dffb2496057ceb94321d90dbd0072db31e60e1b641ef8f2f0239367a99204be10b84b472be57cf1bbb5f99c4daf52b439479dd6ec25d1217a27dacf8941144b44198d00b0745185600ad038b892047d37740b63ea7e17c219d4166563c16537e3758a5d396e070cafac81282485ef860332609a66f185f6b9bcfe24665ee4c41487818d304545ec0e691f9c582ea2dc53a1311e89821c8db20a6a819085ac2272ee45c18266c6b7924484b866a20cc4f626105319c4ef701e91b522247eafed8c691920b5832cc0c196879bc1ec066803513c5891d346b1b4cc8644ce847f27c248f8370bdc26b1328a30a3b6580d427530d9d842ec4a3c4cfe54b34ceaab4cb2592386c8c49392a26ae473c117a4506ad33682de38c6097885c4318947b48df32dc1739d55a94283553a964c99c6aac45c8c25a33b99dbd08b5d460250125eb165bbc02dd134df022d5baf3fb606041d24ab07e90a67906c27191e40502385ee299bc39a61f5437e1b8cba265cf27b3bab22d86dc16df08770a615986f016e8caedebb9c82ddc7f391ef6b4bd62ccfcb0fa4c465950182c5e5c7b67cb220b6bde092cbfa64d5b0f1fdab4c554888c0b07f3485e962dfba2162f0c3fbaecc962f4bb2ca87757c94f371353892f7a0983d927cf363a0ff0ee03c618fb39ce1729074c21c9b8e992ed639a4d379fcad32475692b16664e725cd231a9f1edcde9300c38fd41c80db3e2c5facb3021987f44b2974a8e433cb57a84ab655a390c33373937d36ab4299bccd1030b2eae99049649aaad06b43bc9a997029118d940bee0b39929542608dbb38b81dc30696b1da1074001c4e0c10ddba4165814a3f768f480ab41010a2888c262a70be77e0635ee91d6c4e4134cc43a8f952964830ced80216c80440978bb0afceac03341460bfbbad70d50b32000e8b0ea39125424c3315f93080d187e4a6302c382fea92f462056a2244a7b30a0f1220d9b001e132a5652a5172625ee9412698d4c32851a4dc9c491305611b6374610c7625801b3685d8d0fc1d8b765f78575ac35c3cd0d6b0a43a11e19bb717b9a00f72b9672e3b4db9b61742ad5070b57aba81fd8ccb2212300765f31717193fc420e6f3729b2608a5d85b82cdd415db0d0e8c677764ef107d51866b39120863db1b15a368284fc304fc5aef57ec52a00780024b54e908bd41b384190346e2788fa03c078329a2736a48a3839a80a68588da4b5b7ed848775747dbfead274a2501a59ab0ae5b2924117f0f07505c5b998ed80f54fb718d81fab31b633974bad6c0324412bb4034f08eea27ea6674100c0c947a8547884b4ca5ea43339ce527cf413c00a31780582f13b6563a1acc7e51e3771bf0aec77deb7c01ae77848f7cb898ed9abf3401630f8c93385c9d0176d8d9a2df0e553740cf43ab7bb26fa6cf5c8d797014f68cddae113c4edb94b2c6af362527c7da980a14c0be0223dc481c9f0344842835c080443564fede2b95f92bc7ad377dfc1367a25accf75077aceec15f788c4f6811b90e075263e12055d96a02e12ca7c6e3d10df7d25a24c5988f77abd285db920f1a46bb84e0c195ebe4c8522ae38f82c7f17b9f6af5ffffe0570ed8bb45f298f4c3e64eceafc7b8983d4fa7bba505be19421347ca44f9ab6ab11190bfefd40bc8a3fb2a8c75c0afd887bb96055c1f4ce7ddf011374ef4c3892875faaf5b8fb953e22b0a220481c7bc6aabb9344a36df0881216c0bdbeae1e93d03970987586d285733e6021131f942468b936a00b1b25bc4427ce8947414ec4918dd0155a3c8d458a54b19698784cf29d09d165cfb307c302b4ad197df25629a920b346a3d71566450a124d4b30718e3221270108d006f75aec83fe64aa76903d14b7982a83bf5ba2f825c55150f4df20588c2200a0a4efa4bfb81fc58d4c6d956258c60c5a9341d332f99fc8cfd97851711f97ff3f7b7fb32c4b6e2487e3af922f506940e07b29c224ab45d5ea9ad5be356c493d24bb69cda6fea37afabf857be43995813af772f15bcc6268c6be3828e417120904223cdc8dab598ded36eca52c125d6a422516d894c5ee6fb18bc945f70d8064bd19a7c9180ca97d3eb08e8d89a24761c267409d4e44b22258ff2a560f2d4e5243b33658039388a44f96826049b6324c0b029ede641780d337c292e705d0be1eb70dcc346bc756c5b8321c363158df974957790954343dd8decc424bb07e8d3057cd4f6304af5b8a4c42b8c1a6d6556e62b7818703f55c26b0af5a711e7c444073264aa0014081a36f3a7a1da5480575c3824562dac18132a5b7621125cf1094271359ce46c90790c0512e328f1236d083c90d1d040cee6c0de097b008ae35aa6b50d33ab3d491c6103e08ac83d8c00299833b1eb4842379fe4ddb462fca8ab452bb0f93c54ad8f872df30fe16e65a9029c87a27ae0d3458dba2b69916947bf39b6db39d971c3db5b906d25f5c7d3c18e91c9331c0483acd78f160ac10d56ffea3c737e283707d05cf65ac5e66e04887f161674aaec605d200ccbfebb1657cc445bdb9786c27981edc797c6e6e2451f59b7a3881ded4734e5ee4ca57b5eab210640b20ba0b304cbf644f72bd6859a795087ba1fb294008378fb88bdcc32cc9876f6884aa07950198fc5a438165d7c6c771c0c177ae59401e5072766d3cd6146e35d78673d3c2ab9b0f647c5deecd05b2f382495eefff4d9bb85c71c17c2d8095e845de18733cd7440f2cd07960fd5afdb53c56362eccc0718133c2f1e9eec77f59c35bb44b93b94027de9c659126cefe31fba22b9cdd73cfee41c3e00df6175a49afdcbdf85d3222c6e727f2e021a88e9dcfb2f44b5f2681b00c92ee1f29061f9e8a8bf02344a05d9b65d2083f24b947e6833fcf4272bfd8e8717dbd0b88171946e76bc565391b3ea337c6456fa02f8b635c3ee17e8e6808722fdd995b771a9271d9254303c5b5f1de6950b79e9f6bd1ba0429eca966498dd659d33d44f0bbcda50d0462fd1ab29ec7fb072083ef1e6b9de91d746cbe591bab47f1eb5a175c9be5ea8ba850f489e5482bf16d96394f9667efcb99178d84e8f1efa08a5d34cc977b5e9ea2fbaf7da5a559e9e9e202c202eaf75c9396a7188b2d93162bc3b70189dafab9fbf32c2bc0e2700135bf6be395902863766eb3d8b9c9878db40f9df4eca280aeefc24d514b38292e843c312d6b665be6ebb458f4757d5f9eba077c61e71a5953853d44ee4d9b72ee0d82d47c9b33244760b3ff6879d3f7bece09ed7cadf59d96e63460d5a608aecdf0f7b3489feab3cbf95a79d1335ffb7001fafa7d0945aa7cbac3f0d3fc62e1faac26faeb1d2c339d9738e633fa2c22d7065901fe5aeb79962c9f9496fbf1213a6d13dcb5e0474e7139f688c9bba5ac2d1435e2347ee70aa817c96fcee3fa4a8a1f038bb29a4427548df7e2aee51c44e425f7f3cc72adbaec629d34b060d7e877ea8bc15296f9a12ed72aeb52efb3e8deed6386efc3b2dcf3ba7f5defc7b799abe3e8cd79da32f3d4e1d7fae643b910593e5fab157f1e6f0093d27a69e36de2f50e939ff7dab2feb66555f23a41540a74358bedd196f9a12d3b889efc385c5793d5c7b37a77dcae42007f76e3702cdf6f5fd63227f62c58017fd006be33bf8e2fe7198bef6e2cabc9daa6777fad376ddad2878b57e04d3f2f867c173fc78e6557ddcfe350f0a4c1b5297e1ef69b0ff4eae93ca4b03db5415ed7e93cc8e33a9f67f82dc29b36cb76e44d1b97aa21c88fcc8bcf46480c056f6270f79f4ce1ebf5d9139ea2920066a92fcb7e21cda3fe6c572453d301a98cab67eeb9aba787f66dfb6114b2eefcf1208e28aeaf8a099cbb7e2665cf32bf893463343d3dd74d32e1bfe7cd599a24d19291dcfd64824acfc3366d9f91a8d7eae75d882c63a224ca3240304b55928f225bb0a8bb8aad1ec8fb0a33912aa975329061f5b918dea418938e96e5461779eab28f1bd977a04b34c99391c10b04c54ed4230573cb39ede39b64e666106dc31c8b7a134484b45c6ee4f7482ddf182b48604b9248d65a323611e54c5ccdc7d33fef91f0e2982d7792e5414bc1f0be58a9980c7633284c2cf045b29c4d090542911b1341524cdf62269610bf5b19c77d94cb4b3d631289d9d637c627202064fa6c4c1c02ae44cb1f25dcb995c5d4454ce60ad11a9491c0320ca2733ca76c2f4fffdd88edfff9e9dffef2f3ef975f7ffeff7d970d3ffdb7fff19f9a0d5fa24546fb55e22433c4c11ac1c9502bc0690152b5a3f851fbd2b6930d62984acd78d47c45d6d1034c57b7287d4b12ae6aac25900175e37627110ace603c77e0af9e6f508350df94b45065f2d8be70d049b82609b797dbfa575feb7b66dd1fab1ba0671f7839b93ff4cd86ffeae7a59f7ff9fbfb0ece457ea4701200dc86e42bf22320b948f21dc0e4c35eae80120227c75f484f87e656d4fe02ce6432784a25bffea1734b24c1e893842a44f0210640c9324add6dd2c3b4d825f04916a924c11ccb92f7f6e81dac4b994946de424d3b5547106084aa4abfc27f3029ba663971b8aff401628e41f6f8c0f9276b48361c811220031525900bd2ce92656941daa918efb2153fee117f2fb708c86b37d801f552aeb2b7a97d8fea409a9cb0e9491ee8dee73d73e14400b9005646a1ae029165e6f5154aa501b2511a03dda8674019989002bd3b3cd62c838fd8598fd730b6d239bdcbad4835aea8324b00881f3add7988875e05acb3e4f481aa5d06d7a0002253c0702760132c340340975ad06b32509f29b1e55d87050887a57e16f2552fed6be80ef325b8e7cabcbd0e6a2469be0d44cf2b13fa7afb2839a7c543729cf61bf027954f80cccb6a3908fae64bcf0eea4922d892972b03e652c0d525d4d64cc9b7419641a15631b8010b90bc201db9556883e659233e1a901554e1475340a70693a38e7dcc8a8f0ebc875b259406fd5e13d9d1faac486e40ba5ac1f7d10bb2d0f47add0979ce022d5dfdceceb056501a752f6bc9e1e9aba73e7b79d31a541dbabd3c5707c3749e2e39b30e04c82e9c5a67356601d47c530d69afd7fa47cc79da6f409d64fb40903cfdf9013eefa9d994b6cb4cf948ba924d9a1ce4164de8667e448092f5cf60941875232415aaa97b39e86d00d8ec663de68d89578491eef2882158da3c650d61fdf660890c54239d19eab1a8cdd43306a0c7cafa79ce4c54561ec63c58edd65f1ee9783e9d3dd24c65b0045c7ba2cb1df97d027bbc90c04fb755a74e4e5024a1a5cff49f32b5249281feaf3681da8539afc6f039b126baf4fc97c47a9e2fa74311d5bde0186d264cdbcbb33cefd400ed943e8b8742ad40351293af60afc0495987da24e9277f83ea685f3e6156eb642d036938a8e0d2669ca14b9cd258447dfd15d79fbca1374795683ccfe9a31cf68ce5e62ed24d8be100b0a38c5c64415a563fcae087b472c2048b419c987dccf368f95ba42e6e22fb58b623b55cb643a180e94aa4c3ffb883ef5b2cbfff7cf9e9f27f7efeebdf7ffefdbdadffa72fb42d3e69f975fb8664fb2b981cb103e1f061be1430cc016f3f3d329268f70cb8ef56eb7691c67c81812cde9c212261643d20c224e00eab976c65ef0f9c69e6868c159003e64c6dd5ba7ddcccf39ec110ae7f83d501ab3c534cd3c6fc8f021b80640d627529b01d172b1c2d7d1c7561a3463e7e2cb28fc93755bd5388ec8ea40641765c2d0b55d7e094edd37db0bcbf61ff22ebd0caf8550c7c1adc0d0c78d3fc6d4518c8aefe0a8adc19477a734c344ce4024060fd724756bf3c01b57e97078e43de750fa27ec87c77adb14afaeea648265e8888d84b0247175f1c7ec6cb8c5d58a7eb73e74b8fd50602797a5907b926b60ce5180aa31f5501261fd21f80bf041a0e14054c2089fa919666a65fddbc6cee64ba08f42c632a96271b8fb2977d7ac8a8b0888b2d4b03f48849c705321d0699d52c2f2f41692820db94490898e55006c5663eea21a99c88e1ad569a114bacd5f668a98a037b2db1b3085649ab17e6258a515e713233e234641f510418d9477bb6b28059dbcae476ed044a17e37515917994987b4a2832339ea85c394c06bf5ac2377f4526fd7988e00cefea6592524aaf9b3c038bddd99b7adcfd5acf274c2b77935019ba9ab70af30a78c4c5b66a1fbd399827a7bd9cc035cbfa44891ff277647b3f3381fecb6a6bb32cbe61dce73c4b0ec738c831dbe8c8509be1a049fdcd7483199b83ad5b1983f0342c3150277fe500a69a78277d0c046da1348edd4e69a645d4f995708ac6b7932134802f2a1b233592bb8f39fcfb3befdf7efbeb2fefb7ded27eb4f52e01465ebd96aa2b14725a6eac949a1f0329d462ace3e531eab5e600c9c072c50fcf3b3495dc8404f5a4b8d80d604f970572abbb89f255fd3759f57a789ee47146bcaebc514584ff7701961c6ce90b1d662064b8312f010ec795a4919390a7820c7b412fca2daeb49f3a30743fee6991e0b1873f87aae9c870093ab68ed27691e85394b021a84013d7a1665f40e231c62ab32b61f42df1ec14c86131cd2dee53dfa116c1bde84abce823d9371213424732ec6d22612e76cbe18810ce89b11b1d6ebaa1cfb081698fd89040c81a501b189bff20633c77faed1b51f5b193a51de536f4f8146724fb0bbe53e43e005737100649c087657ca769b246e20178671e0815f050866b661847704cf0cd910498acdf31ecfd810c4ec0b449344bea66fad1ea418d19a0704455018af0214c01bdabf33b647d4da6c3c8e7cb66ce1aab31086880aa9bdc17601b2c1dae239fb6b6567e4b2069526bfdbc3342921fcf4be5165e8f4c2bc73a49e031ec487381c583fe1d592387a61abebde75d869ffa230403ded4239f5497018fa18f6fa6027dd5e0715cdbae68699e79add73b79e8401bf3cdaf98a4658d630f2428ae77a4f553baff42acfdfabc48d87c53aff7f3c0bd3def99cc3098c732d9b631d7bde14cc39cf945fdb7b440cb781eac4fe77aced5c567d293841c9c56ee766111adf515d2436b7d263dcc727eda5ecbfd4432040d9fd60036cef5710722646fabbf6907a63727411ff33ae65ac1bde44106095089b18c67ca5027e1b8cf8b2229bf8197f74601a26ae3deca897e0e3a7d23e236cba89f79456b26e8492e0840d2f42df52fe3fbcdaf18df5916502dc6eb9b3bc2f8ce48ecb736c9c4d5e116a100c1cbd8ad9141109dd3ab3496b69a0381612ce5b2e76ff07c820b696c7614fc8265702d21170ce64df266b18c63b54d3ccefd79c5e73dc27730ea4db75a5d971f995817b731ccb9dfb15fc91b9bc628b06fa29029fea18b4fc53ee6980a23c557a89241c9659fc5312d79ca7869e4c82d8345ef1336d47ec2e59ef797bb241bada93f206391eb6cd97a3771b94e672ffcffc194630cfdfc383df20f2cc53ffefda7af5c1df187614d048da5439d0ad9a1390e239f4774f2287dd31d91808ba36e2351026882f30b2878b565b0a6ea47b2c1db8cf8c605c12c64e25fb8fb2a6442eb930e4466facbd6b2211fcac684326cec2fd4831f560bae8564ba16640c8d950c1fd45ec266c323a62f394083d5e57e437ed5a2ad6009ccde68d29155670633a5e9cbac34f4c97f7ce8d3731beddf1fbcc57f3e9fef6524db57123472d8fb914ae4728b3570eb7c8b34506027c95deb2f35df8cdec7aa3f9b3f2e353fd12ae7ce63e181fb68a523373fe084faf8d3ce16873cd0f8b3e1f79ff48fbffdb5bc8fdaa63ffd48fe0351db1b75aa829ae3c322edb744821fad4c1dfca2d7f0bc43880ea19978d59920dfb82c0895a275437913c8640dd8b1984e6bdad3a3ba3814e8a2cb6de09bd4b6bd9a3854bc468239927e2eddee29eaf6e4664e00e9370a6102d775ed794f3724f6265d3dae296af7e15eddb0e93fda26fef37ffee3efbf7da1a6f2a72f62b49f8e4eb1346e3017655ad298b1a49a3d1e8f3299aee4d09a2e380aceeb62540d3599cebe2e5a9329d584878cbc3180d4814ac2fe805b0ad456e4458b7dcb7543a0b4a4ed2226b6d5a129158fb2a47d7c43035250e0a04b11a0453ac81317342830bcc8a7c73d5c6a86a779905831061c43b75ab373610b69d720d8e792b205210befc2404046dd008aac4b649a7b036b47d42e219d20d4f7c1892b8b0f53b0535c19a17dbe8fcbe0c82b72de9f2577a66abb76acd6977a76e1b15ee07dcbe91d33baa79b5e70d5cd81111e29094c3f4fbb8ce85158e88c9835bfd6b70cb78fafcf60125c0857448cb175acf5df52248b1ebdc762e7b632ae9f20c7c27b3cfe2b0f7d363ac8e49dda04181ec4745818fb695efcbe522ba29b869780afc2bd66048153175d2049baeb7e07a7daf82c417a0ce54cb8080243ba7cc382cd19dc0315354092b199908eba202884291faf1d1457f022e0681467676c27c11a43bc0e5e4f307ca512751afd9c4b9e770c5e500c4d7adbc871041a4cda5c56d669e51b9b8829a953843aecfd5b46601d94b39b95d97e149ef0f332df9d257ff9db9fffe71712cdfd470652a2985b01198495418257c436d4e3085e668c22d2e45a3dcca3bc50a023e81e3342a0c626211f234dd78fcfb2cca3548c10f560e3e055519e89013bd6f32ec971626579e0099e77a9c578355022de004c0a48ac00e114153de22352a1b7923d0bd3632d46be8052ed7b7fe06ccf3bf06b44c1bde0db3e316f21100967f039ad3bd072e1c0c01d78ba0f805deec4dc7dc0e750f98994e33581db7ac164bd20b53ef15b1fb0ae3d3dd0f2791ffa85d66bcd0fa4955d477b4801da2e9061f71a6b5323a3d02f02054a1b9e40c3506f317183003fb71e13baf61dce1853dbe3036baa71115abdee866edc754bcc6a68a15eaf2c7613a39a50649b479994ff2b080caebd25155540a7274bcaefa7b2b5777f9212da8785eb55c4653cf07621e0e873e9bbcd7ebadb820dfaf91ccf3bc48d09e79e2c13900c3561535031ae38a8afa455f9856d16a63c114c1e69516b89595f78a9d7e566adcf7547735a336feb59a2da3ac6c317a98f87801cb54979c728cf040a1cabe7d382cfd8caa5c1f4fe11d1d02fbffee38f9ffef7ef3ffdedbd9d5cbf90c9fb9cb50ef1f8067af7a2a54307b190f57a70cbb0c76f6c0132571ea6c56f297d86d286b5d4391bacbe1fe2f4ed69973262869e58b2bd33bf0a2bf3629da2e8d5b08d64c6ecdfe823a7722ccb7649eeb96333bc865de979276050d7ec360d56c84014286bc1f485f5aab13c13ddaefd90c718fc92ac8cf37c4b46724a26d36401c3f2cdaec597fa795d9df4eac1af38d79d61826c262438cff50581d8e8519ba941cdb47b53c978a31739af4c1ae2c88911ecd66d7092c47ef593859ffa736c837524c38d5d698001d640aafcf28d1158ac1ad68f755ea8de0f9396d15d9c546d81a1ddcfb076df801d4cc2d395bd7f43b8e0422d3adcc22505b3d2b5bc485d375ad98bb04de432420a4e01ef1d79ff331c0f3e768eaedd40b9041452f2746e19463dee99af50edf2d716ba86a1df3cbf3ceba9a0f9f2f69ff784415bc354c30c50b8b4e46e614301cdf50d9f0bd9bfa90c06b1848f41def7fc2d02dc5b101a60fb4665e983d2311b4b61c665b5cfc9d34f1cde67111f12f98be9f2833d0bfdd3729875b0d028bf32f47a6a0baa5149baea6ebc9b050f757cb9287f4b407262ecdab3f158b64c65406f9a1fe3d8d84dbc7826561e71a14ccf847c9679db6c43a670ebe11fcc9c7ffcfcfbaf3fff71f9f93ffefed7df7eff020324f50b4fc30b06a8a73d64c23a6510bb3740162a7bafe3e5ad9690f7dc12c22a2dc9bb5f5add632df3f81b4923bdc10cef6a1cb5bc97548fd713f3deb2305459d5a68ffb90b4f5b49746a332340c8116e26b984897b3fef925c08b594ac6521f733bad67651f7a63dabb3dbdfed2c65e1ba11739bffc32a3e89a4b96be58b636f6281d96d620866418cc571ad42924338297f2d802e8fbaa5a7a71979266d82ebded4980abec256f97567639df630fbb9488cfbe154b216a79bbe4baeb3a03f58a883f9330003d727d3981fd3221d0d3c2facb966bdde378e9b1aded437b7cf4bdd9a450af906597465c52c42c1703f474f7183ab93d8f3fd4a68f49ae25c0f58d1c5d823c5a4c5b097d974cb2dc9edbe6c6d8f35ef35eca206189a4d96517a893e8bb82ca7995adecd0f2a879ef52b68bc81e7b9cadeea16b37ea91f1f559fb9eb36c971277696d3b5de105d0fabc6b7f6310eaad8f3a75a5c6dfb5ec60dd4e61ef51c0eadc2b97d512ebf137982847caafd3b6b5c41676b48f33a5def937af74b52b3fefa9160ced34da5e469dc78198103a0425f69a748103ba96f18a74fc39731d7b28f2f933d4b4324ed7bb7cfe5dcbde5b9b1f7f67fd9b50d6dc1a961bfd3a5bdb5322fc36c4994bdc43c9afb1569d808300a7a7a35c075a193cffcb637c7fbefaed3ffecf6fff78efc093f0c5eef413e951a38efc7e2d3af700bc2fa6099145e0ae0e508730ed6ffcad7726ba6bc6eeb23159b96e2d19875ed9483498f355f234259eacdf6e4ac03d4609938e63352441e7b809f02623eec9647b0f5571305ae21e2ea5ce5c1afe2eb56fa5e01fbd09fd175aee5ba18e1b22f405dc9c92c3b5c63aab0cfec598530960c20c9bd43cf12f1edb5af5be59d73cef45022f2261c38e2b038174e9bcab0e406bd2bfe9254c472c69d46b968c685fd267443c24006387c848c04e97812436d27eca82e3af3a5fea0acae011147f9916ced290a9ff92f99b390e49d75dadd34d3f3942876c19892fa904c629f1ba2556d3f3d72785486223a51f501b13ff12e7cb56da3fda1f395c4bc4c21f8fdc22ed16a4e56ed651ba01d61ddbebd38bedbb215bcec71fc2c76fdda2889098e2e3d7d75b8c7cc9c455b2a40f3fc4d0cd768bbca6fefffb1fcc1ffffcf5e77f5c7efded8f2f52f9fe547e144448409498fa0dd087e42e073ea56d346862d49f812e4107e018a0c92b759226b53691f02a48ebc1cb15380b063ceaedf09657d3a08991599ef09de9f618eea27c001fa9172574e208769a95517c58a2f477e543750b65198cd013a14787cf388457e8b80c000403f99218ee24777b3b9c59569e91d021d27952cc9cd136964bd2f19c193adec927a23780fc1fa278f4eb0724e1021c2974ab2f54af0fcd689b650ec405bd1821b5c02e5420835d9fca5e2741d31035c20615b6ed1eb7126702d32fb2902a65dd75428790c82493fbe16e8c1b0853c973de219a8ebb1ac75e386132a74c67c350c813111c80222a5e1ca8eb0183ed8025ea4c97b11fecb6bb49edd0fd169649cfac0bc44601c9cc01001653946702d539b76954f6c9a63f83973cfa9e00880492b063cb73d8ea1fc3f85ff860bef8567e9826093d303c6ea33bba626f27c4981d3a2b752fdff457a6299b34d92e40ac74181bd467232568261204274820f6e5595faef5bc2735b1a4c1fb85503fc9acb1c3210fba34be3dc461a03aaf176a18a885160e52a63bc16353d241602f4c6c035c99c205f0d14e2e2af64990bfb6a00dd3d64adf0bf8aab1bddaa473bd6c8cd301582246200e664f006a0f39799625a77994bad18093ce3fda142379403c0a291c14231961c3bdf3df197b813146fade64408ca39c208d976cb4d7838995b035803ec16736630f4c9e8c90c5c30e0beeceade3b3c346b087451b0d5bc5be90f617666565d349ea649687e7985404d8cc629eb3504524a29bc278c83cb37532c1cf0a6e64ecbf81e28eb6c0501b06e26c940aa6ca42ede653323d7fd0d746c8b2e92c7ccef2890d3e624620a9f60055bb486107b5115c7bd30af3b5fb9b7a30dc0fa0a5cfed917183391a625921cf44858b908fb99b3633d55e273444ce57d4f5fa54a3c726f72612c57d08d27ffded79a700698ef50adebb99a94d894476f4550071bc3c10e70a1b51cbdae8a2e32f50665aae38cfcc80ab1c09ed6c9bbb4ec4fd81d330a71d27d6b698e5b68f7b78dadc924d4a2253a96130f5dfd219ca37fe98fa38a6873ebe656a2ae27e58665b26a0646bf97d17ebbffffceb5f7ef9f5ab79b1fed83d401cf1ccbd50d6412db54ee2fbb8657c3e05214bccdb85312c8f8b6c54543d2f841d182df1ac50080be59570d6827d2bab635a7c5a4b4459fcf8c965e179d42fcfb559e89b33f3973cc11811afb9f950037570d6fb4990b67ce3316ddd67ea054f8697b128a485cc264b00cad5d596e851bbcd074a3227ff85e4154ec5b95270679dd1ce5fe3f064ccd9f29e3d50157b56106678df2fe53a16eda3def0417af183b68fb9703425c837b545d611a908eb4bd32f762eb05c7891d4b83a9f5b0a32f23dad1870ecb32d62be0020d7254a436e77ff9224e9e32c380844c9b65a3dd71104cedb5848f7b25319ed4bd42a1fb0f205898cb5b37bd63e1953ed40c76516bb7ffdb2609b038380cdf1100df00e2c64896430f0280d3c23becb33294f432a542aae5f4878101d3d12446f88853c57eb0add07250ca87b9036043ae39848ad8dba9754e300399fdb250af56ad55287fbb740d282e62bd0340dc80d88cf10e40a048e1fd23a836d979af671cd55f71a3a9fb6ed42e802a4142f8eb42f6e99c01e359f67062bc3c5277e64a45b01556ab3b683763defc27c386c60847ad691fa806337b793c11390d4832cb06ae29302f4690ed5f4ed07f39026962418f0cc4d609a50b27c86d49b591c11f9a434be184b149a9a84afcc58e857ef067f4aa57f020c746f081252b66ec6cac0200941afd8114ed3bc835646848e2935345f9efc79a7cd9c24a80d1911744a0070714743b41545e099abcbe4ac482c51b3741fb58a8bdab19364009288fafadc1b44e0c584c620149798701c4982427c6f340da03161f34b33652d8a93d6ede5669f77db800ab6b1d82a472261301899566e7988dc55a666e88d6477132d41828834605b13e1be78394c2ba1181137a1794c6e1f8184a11628ccded6913d92a79a8da27d43d91d907344ec77c001352999018534d8b420f8c06454e191293316e679f7cd72534237be85420c024269c3f200f4569b65104560ac11e4872dcd0cdf68ee9a446bbc5613797544b350f54acc1083f817d756a14a8ef8f6628c23f06111692f2b7c0b68fce0e2f63391206064d30e1ed8383b56134698bcd8c0cc94bf64801b5acb84bba4910ee5b8737b280e0ff3d61dbc5f6a85a8c5a9e67036b3d2adc12563b7e0b9568a85d3cfbd9149ebbfb08764d3cbf2e90b346047dff58120d6da68306f9c1c2077a773c34c94841dcc91c56bc42653a00f0a417c883a031242ed54817b5147ec00779d10b275ba01308982f682ac1fba983ba1270a9df8099b4b3f74b8a58ecd93ff4f0635f3224c89cecf4b70144f93dcc001c39d6c6965166fb6be9cab81be2b63a110059ccd7b9c22b15a61e13ffc9c4d5eeb9f77aac15f2080b8687120349e162bf242de009d96c34c0d1fb4c920ca46471e7a10729448b13721c5b18dc32909dd2a4b0ac4e7120e61359dc51394da668e7183eb3d23e7ec40057828bc1aea58dc2e317d2c6e17a1acb2df9f5c745d9fd4a4be18fe21a38ccb168f10bd404b2355d343c702e55af4377946daa3ba3d15eae5e7c9f14dd16aa66e60a5c1c382832841aa59bac9690b8129851abd752612e6500df48000a0cffb965c2add5c91b6e22d399d5880a73fefc83fee38b98d36230c117170c28281c69366090dbc5f8333a80d8151403d3fa69adbe1ba4baedb80b22c7d2a3b07bf4efa96775e20533449cf23d5348604c877a25e00f114c31eebfeb8b26feddccf3b6c870b5c4f25c10d5bc1ed02a0339cdc03869e50ed8b9c0bd48cf7088998e99ed5151473036d1178950dcf494530b73bb54cd045792fe040bf59a34fb8fa890ab0904b5c727f297d289461d44fe892c50bd12179e4923d013f19982e26e1086b53d7c16b819b5286dedea54000713424453658a199f43728e5edb35d7aa035c5f3bb757a0a1ea97c31ee447c4919905be465008f3e99fd79b1a52be3a69ae9bcf306e315e77fded542f21f754626374e8df4a31428bb2806ccad38459d34e72e34d108b3a75d810dc10521142984df936f8acf588cebe682242101b3e625f3b5e30dc12c926493d014b8c9a9336b0199a617d990cb2fb471107c81b42a98288ceacdd9f23385b241142f8ccd3b37127df7fef3277adf784ddae6d9a2124ca08b130cc02bc0e7dc6c5eba2c7b608e04f7662755bb2fde7f916c52f6fe17aa0d6b3fb9eb03e97a89e839e1d4ebbc2cfae6f9b65feb9f779dc3d3314a60eb72db7181af0f4e186ce00e2a2894bfa58c21cc36b096ed0c49f70b09b4aa3a3a1ba8162e9998396cc9e030d139d90d4488fb72aebf70860620f9228095c18ebf90122a53f5d32790a6cc5c0c2f4d79cca64b567ec54be3706bd0514cd5c33f3f7bc7755b4fc7e7da93755744a026dbe8a60efe054aa7692c8b23d22e33e281cc85cb4812b46eece979cf087f734b9d2b575aacd2fcf8127d8b40c3e92484d4343b01eae347195e5b9c384b47a60892eee08314cc1ce68fc463d0df98b60b76ec99032731323578e333c32b7b018311b8e9c80544cc12e0c050adc5e7bf821b1128c9587560ccf28e0a596c7c8a03e4dc49ad8b68803e8e2eff70afd250d58b36ec95e178dc00c8c37ef4821ded6747ea128a8cb688e919993909215f2112ae30299550b80115da6c633c9144d390fcd28cb14aa73df2df26c25661cb45e06b8588913685c85238f905ba6e8964859f77434a27cea7196659d9a4d027dcb0b788483026c79fdbfd60e696e6731633c82581d2c2cea9529ffd7cac1c7aeeaedfa5bd6baff783dae4ee8049f4e4a7c263d203ae5b94f3725d9047990fa5d0889d603bb749346aabe3d943df9c3fc4cc857c10080cec0439de48ba21240f435a9f7406dfc0143d1195c12ba50fba1a671e407dd82db769e0608c579dc89811a1332cf89767128a9c026f1e113d423e620ad4dbd71d37d9b4981c26951cad58439b1825dc00c9808b10c1c80452e05c4f9aafcfe75403b31a354633d17b732525e4d255a2118da91c6461541f01a40432a3094eab4689a699234966e9461730b25538af0ee294c46405e117333e8c00dafafa307a1d38c13ac3c49e6304116e9a810d0648c31a8f39a45bfe9c10a40c67db40ee3cb52eeb1b9702f7b61cee1140641dbe9e9f01809f5551130907191922b1559bbcde084a01e49a88eb03a0c2ab4380686355c281e72bc972ce26807facf40b706291280bfe3af1ac224cd787ebf83c3a403314a3178097286a8207cf9d2891f494cd9d1d1b8bb51e680a44f0cff53d9950ba1babf027c6f52b8eba911cc3e6c2b48deabf7fc02d06495922958107bc661063854fe3a5879ef74cdf1e0460b314ece60f9ebe28d1d24a187a8e48cc28076d630f8661b7166aabcc1c48d5e2f71a1939a14b18617bb9beee03c88003c3258a8f3883835577a2e4076ef072157afd666a4ba49751dc861b82adfca60db7da3a0f9deb2185a9339d6f5f0fae7ddee7794e4dbdf8e84520f2a46d8360fbe09e8a6eb656dc1018711f708f9c596c7ac3f730ce9524ab4f46b03a0987e39ba77795ac9d7d582046a674bede8ed994dcc3048630c920da2a3088e523f808d63d84b14121f7fabfef47897ffbdf3f7f955dfd050d571e1f92dfdca4c29d2e98ca2e587689cba09737311fbf215f3a6e89948895565202815b076b6727da925494c04c18148f0097aaf6034619f2fe7232ded0f22ee80ce4dbaa1e02974e1cc64b454fb2df3946282fd01d142d53302d6ddc0e7a1176439fdce97e0ed001906e692ec4cf9155856b8b0efd0163c3a7d7407499de849cb64cf848f5eee9bc20cd400f75bec5fe5e771784d37494cf48842cc234ba1e64f0450ea8fe56269a41d9b8c3a5df0e32f75210017191cd0a26d5f266953c92a306ac49e0c590db373b71884657519111aa1303032e939e9e239d87d4ac6dfbece33bb52e44a7cb4b2a87c48929ee53611899ec710a024a97416e51c196bea17fa161dd6749474a7d46f686a10b91d69c75da48dc253019101435e089c1029fc38cb5a006d8245a199f777757db3561116830b33b9671013c342256f651ba251010c42eb79c0828cddf328256026613c61474c919936e538664e86055d3860c8e94af61aa65391c6c60a589a438f82c7f4b048ec1710aecb89e1f5ec484b367b87bf16dd0458ab077d516c85ae096a36c74d8272a885832703c6ae12410e966cb5b7f7c7faefaed6f7ffde97dc6e07ffb6f3fd44340a8b0ec6392e710b78da92456423373ac735801703c62fa28b25c89aa47384ff0c9f2f3681ba316cc9805dd05a44848a6c50857a2a40736a6c62912896d2d9353b77e9ecda671b1c0355a64d9fb8d1f49cc694f38f7d8c698b0fbf50ec41251c9454fd018f66799e80e6cef485da406087a5fb71675227d4fb70979439fc076f8e827b5d702b904f7728ba4af214111c280066e261d0089b11ba901f45bc5e244e069a4078e619d8adf6d5b0986a4a4b64f0df8363895d45b624c9f38b1d18cb103f135ec7e0663cd67fb6a40b25efcae2341ba28eb96fb5c2fbafebea92f75bea9ed8c0d06b7ea1b54abb777f570d378766d8e136f41a591ec159c0d8854337caede384b781f52bc1d9a2a093c9c8b2fd1c3eef13b09a62aa2f1e7be0425b4be7f6773eb5878ded3a88ce3a5c9450d487fa0f723e925008a53b3ffbc54a5024ce248963ec8cd894f92c472d39d57f72624864c55c787304973c03e4cf802c8a20ac67a0e342f8b466e4ffd425c7c70009a13dedc4577889d1b096272563b8da011cfcca1afaa6e057ebf61012d90cf77d0a5b8b758c6e118ec2076d1f2ccf47ca21e5c03c5c8aa9094ae8542647e21cbbfc3480d17aec18b7a6df2bc271217675d61e8d3d06fda934247c66d9db1c3ddc26216c5da4de660622bb13566d20266432ec84a70fa9811730e220683148ecbfe159e6a80f16f84412351976058041c900f4ace6644097a8579423984b4850d290341fb2ccea07d086a51003c370b73cac43c05f027f8792e649aa27200697ab413c8ed439a08e310aa5b86d90b7f30bd1ea2efb8903ffca37bbf6f7d7f5fb4e94fe33fb768134cf30aac60a6be06381c6403971161c2d0c06a471dc2824cbe8e4421edf5168b6c157b7930a721dc021d4f74b1b134a1b7e3c00e98793f262013ad58db2e0f305b5c71370fbdb1e73d65cc35d835c1fe07621a22460d96284f724b216e15f90a118cf162ae7d4c29290b938da1e8c05b485b6a70410e2bd0138522936ebc47d3189617fdfe3ef4facb2e461704e40678b177e6062c9e17b88cdfd4eb1234dfd4af04d28b7439c9b2d2a2cf8bfa09759d77edfb42ef19e88d5b35bbc72dd5ae0b1022341d7b0d9d16932e0c07e179ab083257d68108833c5856d6a359ca9c77bbc9f490c687f0fb7c4b4806873cde4c2359e2528ec96ffbab315a9fab2b45367cb5244b6671eb3038fbbc02cb8f58b1fffd2bbcf60f697cdecb7dfdd717fa5f5fe87f7da1ffdf7ea1ffeb973ffff9afef57ec38bfa0b22cedf0999518f69a40c9b797d4a10d3642c36e3b96014a85411a5ae9157f4a49f0b5a4986709711fe135ff5d92be63d94a087b8bafe9e96aa08e9490561bcb2b730039ec06c99aebebd9d470d72d848ea8585f8fd17e6d83c087145e890c52953d9432e18448a75f72dd7b28885ea4f47a36dd7cd55e4fa35df67ebeffd1f7585ef82600dcace9346ed57eace711dbf6747a5add00f6ca44b031c2e997b8f7d421afd17b7ffd256abf0f26b4e6530fc5b88ff2ca8fd1c75e4f15f008b59783a66e92a59fde4072640225ed72ea3c88f749523b769c282c30366a9aa5ed299d4eaafb9bd4b752f6104fef3bf4bd660152e944ed21a1ee2df6d72e96bd95134d45ab7b9313ef44da4b7d25e6402c472784b097fa7a2ca4985f3936908e73eae7ba975337e846ac9fc6b71b6d506c69af9c1661afafec17d05ccda7b17bd1411d5eefb8d5bd47399d24ca69f085b6c7d39d853da6d7772a232e37721aaed8e1cae9ac7a23a7e9065f60395fa6c6d7cb141d6fafaf688bbbe4d7cb9652f654cf17de733f0daeda5c97f4b68f905faf03ede8d3170912957eba52dd93bc5e294282f374294e70af5dc9a9eeb3e6792f29ee2d63d0d7d26789692f51bfad5da4420b318dbee9362c14604372d56bed217484b14a57ab631769843f8eac7fb6d6194909af639c3fccb73f84c6f853ebf8b346869182fd2919142560271aa5029a9ce14d4b634b611fa16e0d874d243065e6d2d4bc81985cb8293e7d12b5ec61983356ca6c79979619de1da0b32c8329173260a5c4def1c1f71a671d7b1d9de07a1164c9e4080f5c8f0df90235d0c0e859a08c54063dbba5be0e9898c71e127e18bd53e53a0bdc71430ab26b47249b776e14f6913c00c548fa1e46d97b06ca201741ae48380fbf18f75e22100f699c1684243bb24d4be50bd7c53fd7994ada4703d9e91ea35074af33201d5b079d6b2b64bb0b7980c6b5b7848eeafa19a98556292f5e454dbe0a8614049d4a99a5645d5d4f2f3f8222a7b4a88bd7eb2f41f690d26663f4756863b43e219f368ac009125f274b68ea451d0661c9e309ba04ea3b0b35122edd2bff14585629bdcef1f821319954a0a95743837cb68486d8726d3385b217cbd7e8f08b864a51ec063e9bb60bb97962c9107f9248b76dc842576e07c820e36baae0398abdeea9e9e8511351983a76323822188dc8b4a36335673c12d2a07b86d8470d03e9993167003a06e6edbe372113186c02913d489f3a7c47a74c62498d1cf28d4f35a211eb831e28ee39d4092ee658b44ba208221f35a7ad69cf503f2ddac253901822316d43cdda4181b0863b097ac6ac8f9e911f233d831ea269b396f7560755e7c10452f694332c8b3e48e4227940e33e372650f64e079054c6c5122c251dc4840cb456a67e6f6a4ad7661474b936a4f18444b6d55e90bd5012d4995a4ec85a4fc4ace434b6d1f65809eb08a1b30b539d390f356398f79d0bf98862455c321452f04240a6ec79bc387ae1868fc5f019e575494f49075ea27bb6a6d32f616fcc2b6fed74b238f6560a8289a39e7884a25ad98d1dd8fbe997b60fa1f7314a77b756e5f5c2f0ba75793dbaf63d75ca0697fa7a5ecc23438811c92fc7cc9c64aff26a0b4080484e479760b9f8a3d5d7fad377fff2cb77770c7ff9f9fffddb9f7ffd625fff45d8ea330fbb9214037adaba3b1e20aa806fb35075081baa78c0ae364019a51b7549fd608086e64d6334f40c4c27454bf659d04614ed057591f1a057712701d27e9c9a4af77185cb22e48d8c33175441ea71df22a91110ae7437a1db45674865a76aab4d1ccea5b818cd1254f15da08bf4a9a23a30b6cef3e75de545bcead6a2ce7b2985fd9dd7ea09c9bb0b12b303b0c14dffadfb9881e1ca0434e2d8dbf631349ef70cad2a58a42034ea801980c7e920cd40a48bf9141199f2c9d28233558b0f3c1cfc45d1b0ae60f9c862eeee71906e41108c523e8c51107e42066ec006f73233c00df0c8ab957bee832324d7e073d6cf924c9a240e859bde9c3be0a807a06300e22bc608ae6febbcc43250187dce04496bb24fe9579323691f7aeed277d5338daa9f9e239967e64e4e4bc61b6e0419b079499a8635e7dac33d4fb4352d97d7f62decf1f6f2869ff708d23744528c5e18e1bac8b01ac239c860d109b2de2235fc983b5a0e4a55a6d88a6560e894d688c998cce1d6cbb68dba3580b1ab8d3dea9e26459ec1864e51cdc804585d6262dac76d00ec043a4f2c70045253c7a432d35a0721e3e68092902ab923178ce1e2d877b9311b16d802e49fc25db3d50f19de8da99125ed6d12ae5c11d31da6645837728b81d91a09d64ca984ba19c0a147473eefd9e44fc2cca0f3cc3940be3623334b4b69c4bd7dcb46f699371e9172464a643502d0cc59383366c752bfe9924c99940863d70b500e0b91bbfa22f890651da26f040353c9307899bd4c0cacfb4274cf728bc5332224a421631106b481368c1a1299a1f94ef72c32263a33a52b68500f2808788431483b6ae2ccc66b128dc3a4c22c694779449d438cdab72365b55baf7fbc89e79d1996c8639d6adf8ae5b40a13b3014b97064f5e3af8b4a924da8e9c5e12cf0f029900cb45fe2949fe23b982e944835f7b92f18849d160ae01f5d5e98b8c912aa67d92d78c3806ebbe74c4e5edbe9f774ab342641528b86402baa08734a4b224e2b3d28dd4eefa15a42bc8cf6e823e8c3501deed084ec009a10696d7c162de94d87553246eab6f84661c406d8084402624cc28e4378ba9564811fc79f7781f7a82ef9a3bbffcdb5ffef1c74fbffff1f3ef97bf7c61f57c25f8f3c1601789114a495f4836821c23c9c270da1a6547755870c900c78fb609ecf747d11116b6ccb4bc84787adf2c2726eacb833e12ab79914bf57606538ea311d8c79b0083a76b964c4102f98592d909c1558abe029ecf3689b04daa6a4321cc13a0a416b62e3769242caf3a5914afdb9e7c5233c21867fb017998eed49ea32971ef61dc15543b75769424d32fb33c0b0ccce4911c37f68cd4f4c05bfabe05fc3924be18105fb0159f03dd9ff20af5455e217b7985bc09c9c01779857c9257c8db1b4987bcb1e18ba4837ec0c82cad60b0a1a1149099d3f99155934f43d9580fac3e82438bc8f678083cc6478c05e262d0131fee459261b07a9389440dbe7a926e636d8dfbece96d352eff40dce926c88cd3fd02a42a0be95488ce44882fc5ca9f13243dc9fa91c2815706a32788646e6018028ebfde12b8d2054b15433f847d32678f3aad4c104d016244a4c0c652a0e34f2c5991843aba75ce377b0fba017de06d7c7fd4fdf6fbfffde7fb384d96fff1d580ab1f1c9a965f7e2dc898aa24aed6d90590d180d4c1f2509bfc1dbca49048ac572c73c3866c4638148d5994b69707cea436b99d3b23d10abacfc75d3cef58b592b45dae5197e30792086e429e14d463c77693960d3c2b573de8811f9f7741c24c297bbc45c0d2c152ff3a3a1ea59ce71d3d5e1eb1977d5c411071e304a227b9e27cdf7d037ffde9f79ffeefcf7ffde29bff42e3e185fb97305f40bf2b8513b0972d2d9bea41d94ae5f0d00d52317a0bb55e4b3e4842cb92ef9082d3009905525f8980f32a6e11c02a0c52304f78a75f056411cef57d98ba946bcf97e977aa70d8463871bce18f1dd6e83ed504b1da127c420cfcb437b5695c9e43d68f33f2a31a03617c58a760e388a06fcbcc7807c03e4726e8142ba70da492395079173c0ac8888591c5fc6dac27485a0364bbefed5b4c44aa9a427eda8887457608936bc0a80399b8080c1a859501b4342d44b13d46e32c01b34890680b8124c01d29a2d88088acc88def3321a911ccea1b75cc2f4cbe02bfcc4540de0780c10519aa35744263c756911e87f4fe0abba1504a41771a084f57e0bc74a331abf8f420a0730b20fb1134208590357d95b3547c768d6721ad9f7644a5763384aa6af6ee82882ceb9aa3f12fd5ede5c378dea5238148cdce293d596a0d492f994e1141331503198d90521248b5719407b93dd97eea4829f0e78ecda85eb90e98b53f261d4b1d98f561bcaedd1a68f19be5f70cd2c5c2fa1969c61c81731584fe2b7ecf189ed45090f95266ca1d36a9dd3e1da6310945f612d3e529544b8dcf8f8e78de0be8955a9b6580ef256d6518b16cd90a54fc9b5afb0523914a2241ed1db2f86867b4c9b43d204546dd0a362d8e23331a2ba31c69499fe55b8974f6e659c478a2c116914d6455cbc03be8467816db0140d9035623588af02027abaeb5e7bd620ad0e930cea29fd87982007f5c210be9489fa55b6e44d784bd83cdd0e970e357661d0bd20273cb56eedf0a799b7ab731ad1b893a0b285c053d5aa811854cbb429684eed9830ad8830418cdfaa1412e5b0d039b8c3e2b78c8982d57914a248053be3cf30f569d7ffcf1bffef63d60a584f49f1a5869390201faea99ac28786f24e64a4b720f5302ab17e38b660d2f8c9a4c7e285e4b31c221b7d4632948efda078c88e4b5aa581f87e3809c56af8bcfb9bd042361f3ac9b989a7cfdb4c96d6d3fd2010ffe57ea6fcc6088e2e478be454ba45befe74ded1c622ccde7c6c88b00b1dc4bb558753f6fd564328b225747c448f57507851750b2ad107999ccc25fdb8b50bad0333a0a5dc288fcbf3e9250c2a72c48f9462bc1bbb853e8efea279c32efda1be66ba10861bdf34fc9b4fae629609364f3a0b8e71d07096939f74f5db4267b735d4ed22fb5b1eabb7a4766cb3480046200d7b7fded3bb204c4f5dd992ee4dabe0d7378a5733d7da60e872fb723616b2c7d88fb745a8d74a875b8c9dcf941bcb2d4c30715dfb417a6b03936b48f7aa779451e71a19fd1b5b7d436773724eb3bbb21f854cc0a8cae776005398a928ffa72f6efcb4c3d03f07abef754c828b7c40e3e27e8d7fa7f6159fa623dfab190b11801f9b849a0ded9f886e02c93899967a1c509f6f54153f69856ada87bec59695a43dd8c92a5c914175046585bac1e2c8dc8f393948dd8324f0185d6f83002b64c99d680c2cc6096475d89c28c342dc42568a8b5faa59d8d2ad06bf05d9fead36858024f213938c2c803d6c07e5331cfc9512ea02863990c0d0bce161ed1f31d84456bd2b79939792ffe9bf390031fb88153bd8969cade6eba8f7398de32f6062d2d37db41963a23cf86aeef8c7917e579846b3349d8bd9791c9cf2b372208acded4478f544b6436ed654944f3ab44843f39431b47f715fed93dcd625ca2836fda48039ffb520f8ae79c3c05d8809f737858f4b02454d7b3e3c848a5c067068b003142676665fd6ca24ef6a0d671227ee87a522af39580168cd501bbfcb6055d7166e0f799cbf19d00f2ccafc7584a20b5fcf1d1bf14bf3fc9fcfcd3af7fffe7175ac0f1ab59a69d9c5e89022e25969b6ef96b2a5b6f7ba937dd96d552f5af9eca848888e44d67804216b11009692a9c3ff45516405360518c9e3e7ed569bf153b154655caaf1032bb464c636f2708e2714448bbb4d7235adb6342f6b6202e18a3dcf42d46061333b4fe6a4df05d4a48b0072bde1b1ed66e221d7f430b1efa5ff6bb7e96b1bd62c8f49378413a720ac0d8192dce14cbde2421af55b280aa21c444cae1219bebece7bdd4b187b6855972da4b3e8142b7a23dd6cb567689740a152181642e60d292881db80c12eea757489beeb6f54ef002dbf203d5957b7873049fe1f509dbde4430d79d3fad30e1496ecd374ec0e7bce8067e9edeba7cbd21d00fd4378f80e8703f830df59901553c0153d933a5ec92c656f6563358f79276a6da9d690bd7baeb9e7800e598f2d86386a660938ad8496a54e8c81de164c2a41ac2a2e0bbe88911528ced0c15c404624a92f98e50e6f1551cbf212118c29ed8fe89f06c7016c2df9bc1e12d2d7fdc41d17128af7d61b77a3b06ccf35e44cd3af0e4b61c6f79e850afb48f7b0314634846947674720de548c2165d556d601c7f83b453647cfe1eab7e6d98cb92f001c1bb5326162be91f3f49da5b938f233f3e2a3bb3daf6a5bffc1ecb1e5afdb8b39ef794f271e3b7127619dd1e6b8eb69730002110ca10c5215bebc0011f57e29f530d8591dbf1abbea358e1e8117ea6b9efa527bca09e8f1fd4e0d3f9c98e3afac5ce99b36e64faf12ba8d9473ceee7fc0e7e304dffe37da2578e3ff68a47269b8e69253004d6b8d00dc3ce7b53dfd35ee75a9fc04d5e8307b35057b834bfc947fdb514c75af20079f9b5d408f5d5e528a48b179065cb6040947ac67090b25c2bbcfcd5d482c6514e715a09f8b0d229b8d420101b4c78bb3d20ac3a0bd1248876f3a8d88e3301d969e702caddee828e082b6b4fd81dc11f505ae612dc363c1d8a8f1e7679d30ba55c97879f1504d5e5dddbaaef5e55544bfccdab6222195f3ffc9d47198f656540b72a369bb1a18b7220a7c90380d4f39d71531aeac7b924fa09fe63e09deb9ff742c3695070927be7b46590fce866c54a6027b4b2000147a96cb21e52175fcbdf4afc6c5348b112dbad80f71198da09d94ef8e50be9e6411d0d055b9681c891a33e2d39fad835bea98762d95a1fc9475daa97de68fa746561df0157db58046b2ae3366d11f0d06778539fdb5ee79b7a705896e01dc394498004c45a3f735b9e8aedeb92f3c728505e9eb684bddf000b38d70bd833b397b28f6121bfa8beaf46f74dfa8f9acc02daa9e5c862e205c13cd1cc7338b5f956c0ff0848fcf9d863083fef312fee52d09d423273ad676fb9f7168c08bf2ffd7716e80764e30af73fe50f41a52dd9e833ada833769b2c72ff016f1ec8ab59248b7033676f242fb800ff048760287b79e8b72f93ae56d2f7b40f8d04164b394e1301c764a48222f62886e881ba99dcfd0904f61b18826ac60cb9a76b2fbbe804793ae60a3ec67ae8a99d5e0396acce890bb466698fdf183403df178b6ab74f0ba5616da2ea087516f07ae33e1e70fa4e406d7589b083c9b5c8620a3a5ba2483c2d1d23c50a5df6f40d130815cc1a90755abc8ef4883e1c3c47a208dce989980ce29f1312706b3d32d7ded4eb23332dc5d58223233814f38dfc18f0ae9ecf5e8eb0a40b62710bfaa61e5c9bbefe794f5086d309df1c2b0406660a32b4a38409dfca98cc131525882822095802c71f98b60ea4d167fb1cc885d56e99b4ee98fc3309d331fd27f035719a4fb51e53fe24c1bcd593811653be95294c1948b50d4ed2053ba553bbeed84c716f263aee2b21b63e139c53f89b7a4ce16fea31852712ae99bacd92fe8d693b11a9cd3670e519d7625cee18d3b38cbea49dc3c513bd8b679d9ed5084febc44ad29e651acee0545f277040c4390d5bd94fc33323b364953ca39abf9f9c3f86dbf32e70f80b99b8101346d986b0a46422369d7291d3ca5462447a4d38461dcb53f2386a5b30494923618f7d6f375391cd1574767de1b11c078f203eea027ea2c4f294588ef216f141b1942d8dbe5d6584491e5ff26bc9a09f361ad6dbd6aa296309c59042be5a6f6c2f3df3bcc791cdfb5d8d7751b824906c12382e7e62289b40b4d59768cad646c6cbf35c71ceefef6a7ef9f50b229b197e28c30a2f316921a217c899fc95cc03b2c8bc412ee8dc3975f9387c9bab94e6c515ca121d5acf5c966067f3a266e277036873b2056eba3df5bc4acedf8b7ea8e73b5c8e5ace4c2ac0e5299ca73a0e6f23fa3657c8849daf1e968dc87ae6b05849eb1dbe69e39ef421d96760ac4749f6a6e27a87b248302ecfb5b6b94a1c5324bc3b5aa2056af3525fd73bba91244c820b9dbf7b3eb65c9fa9505c6bb993422b70b9f70a3a5592a8e585e7c3beb3e52a9fdfdf6bbd4e2564036f57c89bcf68dbf20642ee72a87e59f9fde7cb5ff9f9f2f8f5c332f1f4e533e5fc0793eedd51cc4531dc29cbeeea8fe5a1265bae9dc0abac9df6d1077ee71b81f48ebdedf9aa8b4ce1c526ca47d7243b18a105f7cd6bb7c68a3c9e72b48a2491a7981acb1fdd3a5943824924dc80cd865a769122e711a0065dcc481b598791aff9dd2866f52a1eec515766b76199786ede6df16dade8dd52847cfdb5f39e966b746e46bc9c28ea9f77e48da3bb746d3e7b55c433d7a11b65e1c56397beabff62d1595a6a6787f3b148327ab34cf8bb7c33b2f14c8048fc60a9dac8c76ac43b56f6a33c92a09ebf76aaf02f67eeccaac062aae56bd223c7d0d25777433a4532c212896965d1e11ef33cd862197e5c0451a9dfc2f7178152d66f528696beb8a6902995e78551729465cff689214199df30ae0a86d9ed639c3cef4058a5bca7471ee0f31c5ba6543d459d6d0f9280d8ea7152350998d50b3c52fbd810d06e8f94ca0c66df7712f992c69324fbb15e53853c1900b385ac8dd69ef82fdcc813f1b56cc4bf56869792c4949416846a24cb339a364c06fccd3091cd8a380bd534f361af0a40b6482301683fc2066d5b6b06a86b016947f052a7c9f07ec6e90003354d2d2ae3a8050b26afcc9c417d9103aa100517494870218b2700437ca40860cacba3fec868fccbcf7ffee5d7cb2fef53a4c37f8f3fb21d23c59d925c9b0e8fdaf67845dd03d91bc037437f6a0a01e20daf36218135205d47903bc2d9df74bc0d165d674f86cfe3e680cdac8c43ad8cd3a131aff0795d0e46e40314245e4408ecd16f810cdd5488d9171ec212f61b5686299ee8a239ca3a04c1f806fe567b705da5ea035ca944e84f66f390679a7b0a6608506203e5995338ca36764914c632b2add199ffca9b7cff1afb17395f2f90cb58f92d455d0fa99759f51384a6099310db43f7b201aa508584ee972414bf03f232560033ea0bf2b219f2520704ce01f025cfcab67665822f632243d9b58e874e2ffd0a5186071281000c96562683f20d1a410d19024c1ac6a75cbe9159af50531e72b54815ccaccbc17001ed2847c8f993360fc9a9111077bdc0c73575faa016e215cec1474c75d24d186bb02f3463b870f9b3f2a45499d56720f26af92ca7b6f7878ea2d6f6688f0cf59787c4bad72b32744d054d56d04b13c3861ec11d940f2148d67742eae0e24459f7eba7b5f5f1e3c1f5db9fbf40f3fe981c3127ba49c10f472e6ce6b473cb2e89224d8c5ede40a10cbac344515a124e83d5472cbf6fb0c52d05a80d024343886eb164858a2d79fd28e3ccc14377f5ada49bb4654f12bacecfcd5b6d14c89525ae76d46793d64d37c981c9fe3741663e5499e651c6bd26ba0d845431a4d1b8e95e45286ff77a851b4580a4fadc1949c6e87fbe9f540db5e84550aba5d2e919c39156e2cec8fa65879c74325806208c851c5c74e3168d8f007c19200b06fc9aabb79592966ec6e63bf63c611ce480ef050eacc02c774b0f68b7c414d93a1325fb0608a56187c8c6d8967e2eb73c4cf0a74fa3608001f2c2644e784fbe21f7204ad9c1ef7490b98f43b07d9cfc4d900c197defb7d6a9697b76ac21d0d7bd2317f7d57d6e2b3662dd657c4d9cb7791672dcce1b768cbe9573cb9bae45032ae75ea11639718e5881f2d3e96d3decb4ea5e2b9253fa5a6f6246fe3cd1925cb4de61bfa99abac433b05a780249bcb7256d0bb54ee5eb462dc8127d35b3ea9dcb13426c3aa27c02475b49209626edcd096f6a2b9e8fec3e6693161e94be90d1e321ba87ee59b52345b9a54c758d7314824a5808e19c2f5f87a9d438742737f16fea653dcb8dc26f6af89e595f32336af2127904af2df45adfd6f7e53cdd52155c7ab44e0071c12b7eac2fa7fae75d772c158c1fe3c6a90f2c3eb7981184d2594a56fce3edf3b0eece2754a5e0f982d1748c5b04e381dafae5064e8b127409f86cad26289687718b6afc841bd2fab55dbde1e591d8fd76347bde9946aa03ef560a1101b788e50d81a75b4cfa22750b75fb6cfabc838062ecf9d66d4a2cfab4a44eaf37dd28d4ed52e2de6f47cbe79d61950b7353a9d65296e547b72acda5b8dc74b6ad5bdbe5f6728ee75d40335bc3b442325759da883900e570d7cb19dd4240994af512c0967c886c49a6c4787929f79bb468c973f9c644cd84b516d72b8e09e97987b21a7024376926fbd851143b09d943f4e9d3edb3f5f39e48b412e31e6f546c04b1df2d950fe98699c8c85cbc2c612a01132cd16d9c54e32d858e70a95a2fb00690ad96daeaee6896f1eb5c1948c1ba6711c45ac62d9966b2ecf50678350e3d0fe9cc885ccce7cffb769ce53cd07f600afef33fded3efb61f6e327467ccbc913c4d5f884adca34326a71d0e0f21141e38a78dcaf249b0928743e03a4f261021bf1a1be86ae7804c0fca7a8e826b80631925d2140edc85f77107ab772e2a64d9264907bf8ba41901214e228bc3a61a058a4f82fa78f2d77a9d53b079d09b9902d2a544a3909a1a42fea88e8bda8c22d401aabc0cca0d471135cb4e1da6889090162fd8d058b7d955b8cfa442512778012d0ac80a0f411af320f12c64d290ba93d0b01d5d1b4dcd72373a3e3e0f35f4b0512c33a7b2c1e493b1051347d47d2242cad5990d17086672b372e12d2e71a74baa58e52278bafaed6d0be4f5387130c84deb371ecef5951d2e5ed2be2684ab7d6ce3523d165f86e757bb9466588648769287feb74fe91112bd4e3ab17b1d0eeaa44b238141de239c125a4f879c8fff5ca8d225d0d7f26a78938a9697e4655056a6735cf7dca6d537f756676cd1d4c139bf0da879715271c26dc54932ce55c5e45217ecc512385fceb30d0a94d73ddf46859a74be7dd6cd564c87b9522bfe82fc6da82beac819f3a01c815f16dc67d036a54e5d9d9102d9d838cb76c1bf785c8446d8143e7f6ced005980fa12a458409bc5155536c82ea194114d406909771426c0cb1601ae8913ca4c847a8cbd6f3ed1142ccea02099990a3b60cadd006f2889ebf698c532ff334fc53d45a0c64c9c949d43c4bc054b492a6a3f242404e609604844a2b136730e77aaa4927c29ebf9f4fd974d5a8415e7b379560e7e4c5bfad5cf58ba315c81951e4e308ae082508fc0fed3d1742fa7086707bf62ec19c1b30621fa64f9804996381e602b2913ded2a609aac991abc4d93f03eac2205a02391fb9f49d1d8a14e9082946c0cbb7e13358d2d08e1a8b06fc685bf7fc8d096455dda33712544ebbe7b5cbcccef095fa96a1cd03ee85d3a32fcc8839463028b84aa05da19108c6a6528c52cc6938770a74519d8962de48c6318169f8333f96838f752fc1472a90144a4c9c6cccc9a0d6311c75650a283699882a893edb6e312508ca2380ebe2368529940306981c4acbf09b4b0143024d8a4273002b5ce1ea55f60af9c4c22c1320ff3a142f0a84dc3c181b6244e09dc0f961c4bb8f1456b854ef6a4a90c5d06b3940b825987ac98944135a16e6c48a7b90b0f4025c99d1c3213f94057dbdbe91e73dd2492d9ce3e443473f42a739c1b44086af7556a4119e0ef567d3a8e8de8b948a8fbcebea535d9b052c35961cd09c2c609cb02ec651306cfc71ccd05bfd7b626ad6de02c4902b9d577c975dd7d35a8ba8eddbd685f7e763b41f7dab9b2f44d2bc9aff8c9522e45c6e10435896e9086896f404fa40824a31413396d2c05700983f20396600e818ec6630833099cadfb5aa610247992c8163731c82dc929e17e97181508cdd78c98f6b0cf1e769400cea043a050b54229e10ee8a640af564f3ea24b3a6918d4d232d5e3a4c3f36094262eeb1510337919904fc5728aba96eb5865215c6c96811cbc42bc5971d5bb165c3c0355854cae43bd23b85f839a244c4237ebcbbe71dc4101bac908874e92e934c2f48b5a6dc9ace31803c8e3ef18183e84bb76b1b8286f88ac023ab13c5d62bc31a04daeae55bdae32c815bffba01de59b1787643d69ede49426464899b83450a9b4f3811a38e0d68f5608ec2544b0f2a5ec411ba9305b05fccb1b0617be152161ecd033fa0515c3c880fb5d1eb4f83a8ec121d8531656861b69d5a574a2167b7a22139454d6e07f4e5594af5b7d2024c7607c40529e3453706e7b334aa0a7ae9f21c4946e6e1eac7f078ad268150858f1bb29d9df479321692507cd2c3ef4ed2800892771e009eab93c7f985511e1fa3b00def7c1d8bc01226c9405034cd2a3a4c90d42d87e0397328c7512e4059c6a1865203fe1b8c325ccf22b1ca98a5c6e29b042d8daf06d311aa138290e5dd81ddb4bc9d23d55cfaabee23cc74e98802230c68e8e858f0ccc577b37ef59eb67b25b3182020ea987d0a43f6e7ef4516f2efe8c18a4b8a3db240092cf4f57e4d870aeef9fcc9a7855097197417ee091b98297df24a049edb93e022260d5c881fe5d8b8a76521f474e07335c5195bd01e59414bce131ebcc9801c03379c7d228eae0f6ec3dd3c1053aa2caeffa507470295894fec5b8206c5bb1874cdf4b18de50e5a27eb90abada6cebbc67f6925ba915675461f3e84572935e6db02c53216a068032798ee1e5c3d34e1bba79501d10290847ebb07605cf3094d64c95763d1f500e8cc74d6f5bde7822b53b763ae4d06f54c5ec610dc8a3a0a17109d27aef72e3ace09a7b7a6b3db3abbbbf4903543c0933acc6588c68484c1e899a3d179e7d3cb4207353c37076eeadc3d0baf4474cc30ccc213d7c6fba5806672dd16974fd2332ac6b0e476b566512af7bc25fbec99e0fd49319bfde4d3e796475c926af5fd4577fa05a0197cb02a463f32465bde8adfc675103ebeadc6c03a0fc7e6c92ca30ff86f60548166d0a99ae3be2d69c500102dad09f2697181cec3c05dccbc44078dab4430d87f4e2b0fda16033730e73b80ffde7f226a6425d0d63a9f2de481612abdd4c305579ff71c8bda4165e650366ce03318821a6c1638ea01c64b032e92031183049604a2bdee6115090ce788e727667857c36c81ec57972f356d9a1cb940cb29501d757ce6c9e46ebfc533c410283a136280a39bbee6289e3a3e400d3b9a5ebcceb433215c412af610361261613f919090382c43516bd3c6f4618cbb4b048f6381f59a0daea4e633769ca684ad5700ef2f1ce6e46769db85f22342476f037e949cba155653822b38410980aee60ac677b5fb11eda5c10c920cb5bb20b7adc6fec1770d9c86bdcfe75d472e1f2a01c64ee97c5d34fa41eb0ce37049d0c1761844c7543bc062436c4e6519ae1239eae1ae12dca82cfaa38bd58db8a65b1407f3757cedb2602fded0143c6f1ba84e569e5c4b3f4d015ec9b2b0b779fd82a9d72a4b9bb6dc8f57395dd04465f1e204e7b90774c34d3d642acb1e530eb6e0734df24973fa6ee9f40baedeaf02b22cb36a26b836a12f00717fffc8d3fac179625f0c6e92a1763fbfcac8d3f3dff1c94907e0ee189bcc65ea0e2e93081b4ecfe7b06624f9d91b32659881eb52eff6e7cdaff36bd42bd6c59118c4d69875ec9f75efbf1b56fe7fffeb8f2fb2d7be600bfd64670b80928fabce8a8f589c9131699622504946dc407e4970b79d9b0e739747c287db62fa62ca09ceea9ccdd24102e09c49ff2de3819b7ade33732e46daf3436dab7c2dfa153e30675d33f840724b5e4e00808b8c084822d772e7d659766e9e9ad50b5593a57e9461b83f862e01809e819b2dd66d44cb3f5093ab4c5dd874773e488b437db6a35cf383399210fb79009975c56f0ff2d7b25d0acc141e46e07d94d10649e06db22602f8990b1d621b74354f4f3ce2436d8732f3f0da4ca8073781f7d7007cb8d66b673fef91706b9dbd1fda344fd6c49a71cafe5ad2dff14ef255ef042470c35438b741ac49db62aa1b88a263d381826c527a44f26b1942dc50a80eeeeb1c0cc291762dd12e8910076f30fde1685b526a22a28fbdefe3a19bd849f00f025e641a21c41898184434137497cf1717105103a8c762f45b6d3cffb8a297d817dffd66fff6d3fffef9d73f7efbe2b3cd3f840593a04dc21e1f35df52c79db5bd3cd41e4937c33d003545472baaabd909f906df667ea438f671239436e77e7b39eff36ef97b6d2fda621b7bbcc54148f79eec42d1781f2a64dec67619bbe0ea0348c7784b91950f6c2f6f76ce8e2fda8dd51f74d87f7ca5451753fdd13497b1fc973d5d93c759de32bdb0b983f8cfa72a7693f5a2efbf300be7dca6f14b5d4c0ee6dc8cb62ca074c72d098e5a7f5d022e845a9d5aea73e812e970667959e07146ec3f6eb0fdf4c0702ba471c5ebcb07e9fd35f5665223f81b6a020931e18c6982a2367d163237023f5408bf839a52218e5badd0db47777fff95fefce79ffefef7f77452697ef14e931c7452a42d97805471e07244b09c0af3ab92711a32bb5326d9070c2997a3616f3ae016d493ae3322ce6959f660e090814472887fc940667e431c65300e3210f0a6faa8180f38014bc82002c774b4cca597f294d40c4c055e70e3c78f542d0b11f320bcc408beabf9d4a85c89abb29c676c241196238f152917917c1292005aec90e9a7805a867fa7e0f9d3167b30067aa8f7c0e951511e8ca6a865075436c163f5f6d2e7cfbb48dfc214e0f3c2c67f41a4d6b724d721b33120bce1dfb00dd9c255a43fef12b24e0f53f0aa2e356f56d2c3030025d718ebc436452b59d0152756fdf72a213fef6afc220254265feb00e427134a807763cc3a80b395aecf6db005528d48632c0ad1b0e1638448b8864a0cd1932821bf494bc6fdc1e03df8d183fefbedf8e568cba3eb26649802209ba9a47a55184bbc194080f40ec1b0cf9b06003e4202abf543c306aa5abac19ef82e21a919a3f1e6aeab5f8648dd6bf5645c212ee4a9910904e2fd9cd4c2c8cee93129b8837ca49410e86c28b08f1203ebdb084c42abf8f79b6e2cf98396d816251c2e8cb9e39c20046050e874598aa9ac77c9af2c86b4a49e401f4174e78a0fa48ab10223f9ef7318fd68bafae59f7fbbbc27424eb3fd680d825c88ce9b6d22653d41b8a40ecb7f2a5b25f432229505f6aa9a8fa9e72b90b03704a29932794b9890f43735f9c6036d6fb930e5b5ef63aab9389c5d0c2129383b106640d9b591bec747a97b9c6c58645bcf0476195e4c77f3b73c9cbce8d6f7f4084899555b0128dd25e8932bc87ffdc6a984ed4d252460d6eaf640a61100d0650bfbb8623abe4512f0e86f0fb5ed269cd8d4e5c0ac4b78169264d45647f687a88df308e747b9c6bccba3bb64915a70d8444c1ee7c286a2eb5bc18b069313def6bf30a8de6787a52f24763fcd407c5048a4ccb93f72acd7f0bc034a017705121c7612ba33ea164d6b84228fd2bd1335993e86ebe74784b00e8f8a401d24237c82bd48ba259d4d6ea9411533eef268758f57fd9edba3c38c41933af5f4ba89a43e004a7ee2657d8c6a67eac96f02285543565f4830360be7de07940a263586c9811ca55a1a6294415cfc2d56263d3f708ea6f7a77fde62603c33c08f7da42fe2968eb3856a5a0ef2c0da81b4d944796f13a18110e1a175d1eaad15be80478a054c056a920f4a5ddca453706d5cf1aa1e68f9a351f2fb575bfc2f52084bfe502424f1c210a36068c1744c2b648698e92bdb25c3f3d9093448cc7583735232fe9dd031474dd84ad19dfa906faccc396c54e9ca394c3d10359d1b71ba59b1874d0980235ad2d4963b724f8f721c72cfb08906b2cd99490ef62b5873d07ec5061baf26213c2654468d006962a58c90e801df92944c0c0276441d30d70203d7cb50a97d9b7d2e428731db3cb993e06dabd9fb465cebb45ee5259cb33801b7dc874f1f5ac19a0bf114016425fabc28afc7a1e7ef2e068e5423ec67cee71cce86b863d377be6cf2349c0881ba366b307ae986446676af13a6ab13f5f25dfbe2fdcb04fc27e43c25c8eb820f66e6e053c0d4c23c7b29f3027a880bcbe33be1a40ccd337fcfc0b7625174c3a4f88d615e003bc913a5829eceb5e94b30bd1e4472ce8ff9e3f775875685e46969f59249002ecd849224c9439a4c94dbc1f7a0ff0dc7ffaf92641e47049e832d5192077fcfc759251cbf41e03f5f6323069ed78fb55b1b94627dc4daa7960120a1171646646cf8f72a9191888c5a9ca31cd78f451e31f2fa468d4602cd90f5d9f4dfabf430f954a8edfd83444da72279c4c2e7b7b38ee3fada777afd94ea4cf9b87ecad9ee942524a14fa0a3718f6c29e0b2e6f3cbf8bef8e8df7efef98f7ffefdbd6df0dfbfe025fb3437f1daf73629742d7da3c89dee44866e4eb97ba81b4ccd8e36581d7402dbf36c0024813798ba79baefa00af2de265c74592d1e48bcc1a566177cde251feab26dea965727dc35233a23f415778b612024d6a6e404c7916b5d983a5be190d1bd23443fc1d709289af9202ed953ff127c7cc9685f9ae5820c5308be8096f0e57e9f777dd91134e3949c83ac2a76d4192ee5a49304249ff57748f966a29f1a92b6b10301cb852570e7b21d9af511ab227dc5992f07c8cc2ccd385ffb9625192b89ddc5f3ced4005000088b9db03764646f6090d1b5625e9251a6b6ed425269b5c5e01bed197e098ba134aae3c50e72608add0730ed6e4ce4a27429b8993eaffebc27386b214b38536c80d90fba0b0176afb06b22d91327b56632b22184b2b5899ef66cca17f51b41ad39860f95931c02f4891b64871b223f11a42c24c4b4eb3fefccb8a0c27614b548037cc0961b0aa4422505e437b5cca821dc4c06b6ea33003448ac3b83db48ad1e54ebd64d14e53510e18c789a4483f2f3d2cf7ba6929f1a1d33a347c914961ba50a07f419dbb684fc2768d809d8382f100c7b20c690c90d06668a0216a358a004883dad4e3c05cf163d3a7e16ea4e82e5262f51717df7c15df5e3399ef7226df9623d29788180b5c095562498e4ed79fd54d3c4c781923f4f183e06b8cc172570a7eea1a125acf7e91ca3f0587ae605cf4251161d720c79d766181b853bbf6e45c4bfc482303dac7e57ffc39e7dde73a6a87e9c199323293a723a1622b5b8c576701d1c51e4c0111820054690407087d8b201faf24cbc3be9ffa14c5cb70c842e647466aede279da240edc5bf44e22af39280857bd6db0f4689d7f4a4f065559ca66f5a09db3f431963421b093b4a009a889b46fa8840171f3bd20b247c04308e4b3e64bcf276c19ea530cb2c1855d085328c9ce1d50608cc011c36b166e4f7656c0e13d83226e70aa1f075c62cb45b021da453278868d89dd9667802cae92e9d14f362302a5987263c7781a3a783c3b86ea9755bfb40db619293a9d6c9674ebd23d1d3fb4a129208b2d0ea1b50aa3274c196092a84dac447bf3fef48eadc46d9b3417262ac06b28d212005a05242702201161351a1780792646851573851cba4c7492060686e05e456522548cbe390cb5e723153c4aba54d819d3c443a2776bee76fc1121bf0b5636d302c44435ad1a0a42a6393e190faf2e914dc78ea3674c146905c794169919077917744c2fbe95b07afac6bb332772eb0ccbab449cbb5eaf04921ab5ce60aa88d0b2aa5f9ac770418dcf322763abc4e17004ca79a3740b7b6c0f33d1323d13653173037afa7e5fcb230aa2e365c5c12ad62aa9e5c252eb0697c5fabe428e91a8b7739f50efd60f7beb7beb27d56afcce51177103977f7023fc5aa6f40964c59de43e4aec98ba532e16f79e344fea505244c5cc36a7bebbe6fb594296fefe9adcc0ad4f62b3288b4333e6f8c59a0cbaed4f847f84e640a78e9104eca1e2b128d8e6b1d093a17cb1ae548d488f3897d0cf0a91dbaaeff65eabcec53b50e187d3f522841b28154c209392cd7fe831ac0d58be14ade243160b6f5ef9b2145d8998539b7de4a40a06eae2e5be21b20dd75aa87726c5a3e8b9e75dec5ec0e37596ade4d53fb5bce80414e0f9811698f33417e0129dda90203092c27571d5d60cf11a70428d1257bcae93498e0efa16e392073c86749cc1cd51ebe88879ce5484ca6ff18738019a0fb911ca0ac8d9d452335d6c7e37c7f23fecbbffdfedb3f7efb1265f5aff9e9aff8921e08ee5ec303947d60a5a35c73eef613eaf87340aac071e425c9353c50731cc99ff558fd9147b2c1f79fe73d0b499a7ffaf193a49e1fba78cd801c7f9d39d53cdb201d0688936e6c8da004d1cb46392fcc9d4051084332f801aea28d49884d183691d0a7d01a842067aa01991685a500a9241a1c55f77c81f157641ba3d48605cec28ffae1dffefadb3ffffcdec5d2c78f04ad204646655d693a34eb1e259313b519136a529b2e50692d0e2d4fdd8cd792500fdda64122d8dc5f85f346db5ba442c410d013c43ac09ddd47dbe21eba498a876c7f612399f3e45f43f6902bf8bc8a6c39ee6a7a62b290667f5eb36e1df38b0f74e652777905e61f4766ddeabf7a4bc1a695dfd46371d6ee587fe97197a0fb92bab7115f9da43acda64c793739bb6dd1b9cf3bef35be4e657a03f16acf345bd9a537abdd7497992b77eaa17cfc892e2adfac2d4861f2f8e816fb1becb5b1e4cfdf4bd87b2b247169197090580bd57b7bc21b8dd2e1661131aea08e7f7304b82d65533cae69eaf0ac8d1b94cadcadda1296bba627c9b2cb10e4cab728f042215337f43d4076b6eda10b52b3ab2eaa3ab43efe04be31c7faf17322191a6dbe523eff8e711fa9cee3ef38fa9eaab60f7b3d8dc4d8cb1edac06459c8e09cb26053517422d5bd8f144aba56d25fe4000ed4bd36726e852233ebe2afefa0b63d954e161b7d7e35a0f58d49c288d54e2c92a159975fc7225c572177c85995dc5e7f297d1789ef7ec168f443dcb5096d97565e077d4adad77eb487d726fedb599a3cef358dfd30575b9cf627beccb655350f5adad44aee2fe19bad86b88fd0b798f61cf32c3a1394b2b53d896c458d84b86568c8c5deb73c4b6d7b6fa82b6d0f35824a45ea56f43bcb05bccf79ccd2757eaa5bad189d65d4bd6662726b8a9f7ff36ebfb1f949143394bde7fc715e106bc6fab23a9712f7c059aae5b6e114c1587c4a7d3532ec19e1cf2daf0b3cbb25c356caa56d471ff6b087f13a2ccf9dfbbc17dd9ea78fce3efe84f842dd4ae9fb18af6fb4e53d94ade4c8b7a0775c67496d8f982e6b295b49810a9b7daf712b92f682797baf7116b5e98bd86f79e8b71137ddc4f797c00d1c57e40629e565cccda2339e24f099d4d7a910628c151188bd9f86e0c72fcb90fef8059fdae96c76199d7a737b736312c25ebabc7e1f23ec299327a3d4ee6e2046f095eb97fdfa8bf5a24e98319e9e93fdfe3a9d8cbe87d3ec7fbcaaff3f71ffb2243d8e6409c2afc217300aa050dc9625c8fac517662b17f17d7466f45f31951d911511d93d654f3fa2e728cd8d80f9e729328bd97c1f1c068224888b5ecf29b663e98b1fe617fee654bffff3d75fbe1070be8259eb0791b028cc2823465aeb83539bc1db3de0f8b69fe8174722fcbb769b5e3605d0c6fee735a9e5c3336effdf6fb134a4228d08734e05701082960083dce049e91f29ca68846f891e6000f46531114bdead17ffcd4a513eaccffb4d5adbba494e8cd208eefc889e4cd29c072d0e49747aa15ebc6db08b716b2bb27f91e3def60a766f793c174a513e7ab3b3b96d0a789f56488116490bb5d1d92078ed84de931c3d243d7ac7b993e55d1f774629ca87f5fae3affddbdf5e0bb3d2f277c26ccae49a936b02c434f0df4d92be821b7603d6e3a311cc9a5baa092146e9eadc6129dbf57442a5061c4ab4badf52a6355aaec88fd748e13f5f23808a01fb727d34badf4caccb696f575bfc6fb03f5f1db627da65c7efdf8cc7af3ffffe455cf95fbe22337acc7efb1845dfb4845d87c6ba5d8851d0f6f394afdd7fc97bb10ba2ea47ec1181586d6bf58af9dae5a3e8fde6eed424e16a3b07dca57bb9e2134bf88851de9476ec1e3fb31d3a930dceab6a5953ef01b5c7eac41580bf82470d4eae286fedc763f6eb4ffff8e3cf9f7fff62d0bee01e7fda32804f5275d741d71616b394ba5195278303720bb02db016d1c168c9581cbbfe0d5ddd6f4919cfaf2331e7a0076e274b9e537262880edc2ef988da07ffbec07ada18896f2a3d8ad184ce8f44a377a075048aa47be91686aa0c98c48aa78f209c63602d893a10b6f378dafb8ddd00cae88079ecc8b27737b138f580a24d75268144d60cd042323934e9811925603389606ea8c0f62f28173c5a479b08d6ed295404494b40a7a099fff3c9ee37255491eeedc35e248f8b1bb9fac69209f8ba11d714362704775c1864cb74cb4b8cf0c99051c20ee0abc24d1d811499233cb080a0c9f4d5820656c1309ff7f281fb83b2b5e2594c6226430531fe3b58fc143ccf80ef750e22f5323caad6240d600b71844099e0dd3ddef27e1360b3f5f22e3da38061b747ece03a4cf015340c7cc1d190b7a48897180940f948fc867740b788e07a061a12e24eb8816671587de00f6fc75def37c2fcc2318e50bd8c3e229476b86ae1ee64c27947183e41c4153139d08699e8a700a6192474e9653fc28e6170f82c0ea276fa6304268c87f3d4fe7ca4fb4d485501aa8d46b7c62ec72ccfa7e278509976e7ed23145a0cfeb317a0a8c58d2d02fd578840a6776aced302d6546c7312fbcbea21d2b73885a9d986b3d4c179be5e8e4d7547ea2df226a6bb3e46e35fc7b6fdf5975ffffcf9d7bffd76f9e3fffcf2e75fffe30b8ef06ff90ef01915a8a70ca200156cc49e80184b080ee0de0c30d4ea76099e40275bf010c03210966b154077d40db18061af8314d3f494c23f88a5246eb36ca31324297a3a5a41396f4ca4b07245ee7d75d04b41bc03f21622d3b68146148b6dbbd8d6c44e51e0605a09f961c34a890edcc8989a190b177034188839f49da2c4e24f8a071d48c49a5b5a8c18b31b496d5d5594f3f639def75b44c2123968f51a5536fb0c508ec129646b336f588d40cddcdb28c43267542680a4a12c815937939808b1102825b2cd60af8a057bdfce7140e242db525146194598a5a7fcd2e6e847700fa0341d55ecce5ee21ae99a841d102f74bf790888a41d7dc5cdb4e9d69db0386f0804b3034d47c5961c3283f3a503d793106e7d54bae1ca869d50c03046064cdbeb07e0c6089788486b407a6e80a2033437e2b198295f000d15514e80383139db548fea803515f641b4d818f01c1952e4027d86230b3989140de9221fdc4be177e6f9051f45db9ec6e07e13b8906d1ae80b978a1239a9108d09a763891e5344669e0c47bb3a5dff05d417521217cc104731e0595fbdcc101b2590ee4890962ec89f52003a5c109e401e9b80e807e80ff366a9e0a9868c002bd1a680e9848a33a34d39131070019c14a88b49b7240bc27a3f5050e1f927bd0202e4888e9f18b280ef86343fc03544dfa6128034994498d2519e4197609a9eeb11090f462e18ba152deaf6f9614e9bf9fd96ca927b18936385cd994b40ee6c73ee61ec04585d30ba6cf6036175f67622bebf2fd4a1a49321d747d6bd43f32b20051224ae30f6be03a353100811474acd2774821727520dc4361b8988110ee98b400995de83509d1537bdc0ba2b443f856b9177c3a8fcf8b4faed6f3f5ffeaf2f520ffff245d6fc13e7abe876290140dec94a4007ca0ef1815439603937db451d8b2fc1aa5ce1a2823774173f17887a77a14c8ef4a78b8d8775e1608ad1ce2f600ce42db9ea98363014939de34a76cf0b8619114adb45aa6bf0f228e30cb3365705cc1ad0a5146a12b04995b9d2e9b398f7fc81c4b8c18a14b8f220ffc145673dcdc80aa6c48a2feb00a0c9eca1e689f1538f329013adcd151611b8704722e1b5304eb1e2a65eb467291f90d9f13791283d4c1596ce0270de6babc84f05330eb6732474e02c67ca1d8a35ecf1c341b6982adac82c75e83807ef0ecac8c34a08fb94e357f251b5276e2aebeda30652486e74d341d688c2a4161488cac43a269f434401ee8c5eb148802d89bdcbf6281b02e4d6041e2dc5bf0b59b8c0e086438d69a0909264b79ec08c963a84928468d5e28e6e2f235f5253bf2a70ed817230548377a7d81eb3df84e5a7cfc00a3c19afc1d3b2ab4c8b00e92d4cdb119e045c26483eb978e8f6a5207529b9073c0e2ff7e0a94626379717f8d7268dc52169813ce35ebafae03d8a6fa94f53d2ff78d1863c8769057f5a905410c7b4d423e620bf68efdf2dcffa774a5c2719dbe791e40c0e368fd870c0672bbfa5c2482d397e237d887069309057f6f29e4a76aa7a01dc50236a37ac0d04af23102169f7d2f136561e1e2742534d23fc2d915c504e8875433922509160d50c3526ccb31d2ae26f63bb5bf277b0d5a54759c10ec232c131639fa12aa8c2340725c31c88472d68f76d4d83861f39b673ce0a2919e282064419db9e669e39e24f79aa7f8b6d465a8db632cecfbaf46607da944192eb1ce7f4a28d02b078a907e003d8364ef56da687587114e72680acd4b9c9045c53d39c3a1370daaff5b698bf3d8bbf5017bff5c027ec69170518a86c17c52e650a1984f980b3cf76c11eb73e183f1a8f7d246fc82376167b08ad848ce6c4cfb4204607068b6015ed2014ce7e2809117c532089cdaed70455b5203eded618ec2cd0f158b253a9806cc664c94149491fd9be8c3bf562dccb0722a4062b62e04f05836dea0dbd07fdca7e619599761bf0c2e802846e7ae28bda7cd8769eebafcc9bc09d86e4ea77978cbe89faf028a70f85829ba9d6c2131837a6be304322ec119c62f67d8634c0fd568fe4e406c762d9db87e94733b5f1817ae8793a8159499da537e948f5efd51352d58e2ab49f96016a672ae254e670cf6ecadc82ce849d6b0e15b4837f81679ebaab0b40f2d24b9dd9dad62665ee65265eb92230f8d4643eb306e3a3d3023d855c95b4c4a8a35a27202c4ecfa95b32fa2ed065c0238f71d98f96278df30b5fb990639e81ea566d60cda54811703d6bbd88c3489e277b422ad4f20c23115935ce419609b81febfb7afd3c3e1ff3100e365c063cc15cbf80d3f2f1e68f79e5db5ca6bc3fc4638328689e0b48f29d81c07d334d0b0358010e7a1b56a8fa20fdadf5c1c5dbc248e07f21dd4184605e5800de62ac0ea1855b333a0cab1dc6da04d30d6b692f2193f41c1dde10340e4c8f067bd3222f3525c7f354f996664061b095cccde0b49c6e89fcd2e5f46e50fdcb0c53d780a75396a78297a3d8c730ad01f79ee05099ab0495001a2d3db73c46bc0e6074b02658a1c1378022ed5524a0898f8425645fa41c36807491f91ab6742f9a6ec462c65363e166e63e29527a4c4ac357656d5c926698ef05fee0e2477039cc68d98af30413b80b2780057b09aafee7315eaf5f2854cb11f73b5527a7b59d9ef7204d984d5d0b50c69c2030371929cf31ef6b2f654611d33937786d62ebec7e539244c708e6184609903a8640f0c46905ec8b95df53e724016512cbb8f628cf51f7b465c505e6ccfb9ceb8752759539aefd78cea5ffcfe707c42c00d3f8322c1f99e71960ccf3c3e10499eb11be2b2fdaa77ef4c8125f9ce000d387660f61f974bce35c3ffc09c3129bccb758c03e9fdef47e235d3f00329e1bbd214c0e9442997901d3a350449df7a6cf7abb16ceb007cd2fe1fbe75705f0d35cffa6412155ae4f25bb7c2c5ff20dfe177bda975f9949525fd5234fc9cb0fa2e28d041ffefec88c521eef915e89c3165e3c2b3406f63219fb036d4b13c266a094324f11bc2fc254f0003a7f67af5f12f5e1fa78555f5c9699070b831b65195c1f4448167300bfd5cf12d08c60f4aacdf416f71b01342593359aded7ea288cb429c7445c8fb4eb952644989098f105841cb09a51cb01da9015eb5b3125a454ffa96ea578f3825c6aebe40aeb5c0128d9ae7ebf806728f8bf5e21581519fc3fc094c598b5bcc102969b9d8df83f6eeaba79dca0f1d86f5715c2400e859e06600e9ad668b364b1ecf143124c9b300121c91b601742fb3c1c82a9ecfdcae7d74c5716c5dc6c076672387c444ea03800f7c2da4aa2716bcb61b41eae0d5998d6efe8e171b71e9d65201ec5b0e70f3ce540059fbdc39adb9067e16f79753c360c0bf0f77d4062620e22cbd9c9541ba2ca1403aa47040c86f928cbf53145ee3725eb9435f888c80a618d8d6addb422178520a105a06015c87e013bbb2e5b25fcaf0b5417d238f4657d70d8d4533fd7941ef73aac3f75c1fe068c5e5cb2fe8e7addd30772f9066b6449f6729bd922d5f1ee706e5df9840be2329045e6acc2f57c5d78fb5eb4a12175eaffaab08fd38fa7889410e4a6eb03627c42d1627d0f7bfa48fc8e44b8f5ab400ad7667ba302ff0b0ea2ab02d134d9fa1e5a232c82536b9f2bb340f534879eebef3795f230061e65588fa5783a553c50cb936d46ca842fcd38de14258658a74779e1c3b2d6d7b4267f5a8f23b5f8b8539ab132fd695ed5c7bd7d4880f77afd15876a6a8b178e4ec1f5490240d996278f9dd4ad0bb70272b66c2cc217f5b3372f61535c2825edbe18f7f8e239d7e462bed7ab7a20ca26c8a4c5219864cfa3a405f408d972450336c0e4a5b6f70fc965e0af4c96ade6ae6493d28ba7f8e83557826d9ab298eb617523ec523acaa5b1c53587e27e521d99561e228e86e4f761a97cc4967719f617823b37b68ed0a2d94bac76b2646648abee71e405a7dbf6a9b66590221c65444458fb6b8971e6b228ba9751a2cee427a56caf6a71dcaebdd478cd39e0f3e8c84841674c51a6ef1ad99347b9ef859f6a780da63eae9aa63860fdacdf94af19344f7694c581b13eb7c569976b9cfbf0fa256ac5fab9e62ef3c44b79e489684b8e275998b6fcc95fd4637146b5d1587f059c625ea98b10e598fb928b6c52e21573707a2a8408e6dc3711c6af17642155e41030dd2b3dcad51f4986d720a5d7cad30281cb14bdc674cd70b1603d0e1bde19590c3cb6353ad760c750cf6dca2ed78c24b03432c199e055b7723d9ec3cbbacb079e75780ddfa12d5c4942b63cb577bf6604f801c267bc980460afc89485bcbceea72618f958de6f299077025ee50ccb0f6a6ccd668f6695f202bf1f6b3d5d252d2c02085f9495a5b2037d232d99b640acb16f3c9fe17612ae5c2bb8ef40e65d2150acfa0e73943380c533a80eaba7641283616640084e47a99069e29559c29191c16901689965235037323dac2066686e9ff67e4d8e941e4722b021ed85a45c046eac8758b4041a9415a38d16157e27d8853ebfd9fd06e1158e157540434038bcc1977b7dfa955841957ebfe73b5c1395ed16306ed35b5cbfb8eac70ea47f7c81c9fa972f70d4737d846eb74628b15c3e00c9d5da472ce17ecb15fe858f5e505780c16a7f850f69ed2dd772bf010b2c97b7241f51da5b6717511afeb4f692cbfd06d4e05cde62177467a792b4b724fe7b56653799fd204f401459bdf8bb05fc9d237fcfaab8f08743f247fb6248be488af874a901a580f2e73566c698e8ae574041a3fa4dfb356c7834ddfbd5462aa9ad1ea6fbdabb9b4a63f3db2f409f4c8783eb6d14420587ba153ad360bfc99dacc1614f23936a1e6104dae965d32d874ef1fc4360bf5482db673224ab2ff9e2d892d87361c5018bbfdb7f04102890ee587e5b382011733ec30175873699c17bc429726629b47aecfa7ca48a078cd82276ced7a9454726c1821b0ff89c95af52c01af902bddaeadf74e613bcaacefc98d21ab68b997b8ee296ceb5504996d3a08103b7cc862bc4d7bfa0dc81e72faf58fa26c0bce0f00336b6ccfe39d408048619fa42c1e8bcf0e90592ff2fe412446c2f0b2fa5d5bfadc4cba9ac1472c529d457199d71690be3a57b10e6638226fa85a5111c172fb8272ba2ef16842602a4a6d9bfe57c202fd82aadfe0d31428819aae4f824993c12cfb0e491bf41c27ae47badb4cd2902fffca0a0678c6744643cb9c3186865e5728476c03f02f6c0913a02fb11078a586d606513ed8ac847689021c2ce602dd17ea930da25d9fbc8fd15074f4412ed8c66426d63810e4f6dd737ab3f5b014a98bde7029b54013aad209205dbddb94debf75b46ae054d2e79810289a09fd5ce512bc0a925f83a52b256001d9d4d0d00d6737e6bcd19737eb2a453669339642a23a4c176ba09651bb914d8e94efd64f2b5c719a625a74730ca54ff78f3e77a13b60f726dea398c38d22dfb660911d834963e2fc49c8bc76274889f741299084b5927ee4ca09ea8437b430672f6ed29b79923526a1da693f6a916f72973900b91d9ed2d26185e7ba31f1fd4fffcf3f75ffefce5b75fbf82e4f8cb173c181a8e03bbb54d53dffb3b639ef4d00749313b1e2508f7b4ce234c06f9fc713c4a4e984e4e2ae09482c1fe51c25a70c09803b7ac16db663fcb8860835d0909a589093547c949c455c4cdf00ae8cb329ecad8180b0cdec8203c78f45942e023dc8bc01dc17bdf6f1a88fc9886956a3e50713799d3695269dba5cd9e60b0f35f90548500f63c433c49086beda059756d0d1c3e769764bd1d412d377fd0e3c98373654710c4c7bec16452469303c0ddcdb894dfed8912d1d44bf23a52253abd022e765e20f476dce03158f75b34c9340cfb0f13240672456d5d366def45595d7493f00e16dd0b7ebbb47780aec07d675db0ab066c74099e60c2de88a1d78505eb93bf16457b764bec7dc1ffe89ae8dede277b077d09bb2f984bec1e48f19d58a6faee9c54ddbac705ec1f470b5a59017788cebbed1ddf6f36c36c306ca265b73b63309053dade632afe43b2e17f4784a20d88fd6e23d28523827ed81f47a4cb3122e4a9c288803e0b4362fdf9efa97050d8776ede8ec3d2c587c53be62d7c58acc461e13d08a05fd4c705f7e0ef56c2c8f0261c1ab4e4d8584f1c9ba3f7fb4d3005861c33421036a0f076d8d8608533f0d8f6fd774166e185bf5fdabb202d17c87b181bf1af8f1ef9eeec92636357716cac3fff3d348e0dfbf608e2c2b1b16e303647c7bc05c7461e93c2ef81b1c13d3036b8077fb712c6469ca15d8f96181bf4c470f0a3f7fb0d68ce61a4637a241c966a874fc3d8345f5d00c90eef8284d80b7fbfb477bb10b12ce887fd616cd2635eb04b8e4d0aed189b76ac342b716cd037794643e3d858379405bd63de8263931ef3c2efd108b9d88eb169c772438963839b706cd01263839e30368fdeef37c033751924881766106471835a0752b6681bccde13ff48e93158c0197f27e8237ecc4ed405a07769cc3b6b9e85a7bc19764ccf9b4cb002c1bc8ddeacf4ce7d922dfc097f7846fff6b75f7ffbcfbffff4c71fbffef29fbf5cfef8af7ffef4fbeb805529df12b701218872c4f0724fa06d8a309c749ebc567a97923cfdcc4bb8cacbdadc73d90f06565196debd5f9d29d49fee7d16bfd4666b691fb10c2b5e90cb42b7cd25094e0c708cb4814872ab0bdecaa6c7472a6d842d752c71e691d8b6405cb310dc03844abb5367be20ee79bf3143c64784658185a8226dbb3bb27b0fef881362e4fee6655cc572f2dca946b587e3986d2f852181998f9ff7badf48210c53d32028696cdd535cc08aef4c6d34953d9521de17670f24747ddedb3b8cfe67033e63065fd723677de65ea4bb7e720f90f03a852574141cf3222f9c0f64559fea3353693d507830f43e3268bea7f9aed248fe3ad5965dafb1e7b9ef98c0535f19dcc728f97387d586bf9190c35ec60e55f7624fa277f034f754c1250856c76c922870060af6df0cac7438f26126776b0b2a824b424cea031190ddf54a33111ef57a645716e0c2c3776d2f8ceccd98181a4110ee84e9811989014c0fa66fd99ea6d0bfbe837cb1757c9174f6c977e7b82e5101ba89e4f782ac7372c3c16ed0ea1eaf1280f194af02f1efd21180195c2855e78db8005601a8a1db254353884cd32c8f6c8e4bf318021322f7786d8aa63a608aba34580703f236116368fac1a5ef75e4b675a6291d9957601a2c652fd7983c7c71629dc6eeb7d004c3e7d6973029dd0f260ed09b63d56c1701a98932c43f5670cdd8b25efcff64b10b5b61b045dbdbf82c3afc81031294e0d8fcfddd26cab4a57abaefcbfa216db6b4f9a143dadf56dd7e7e3c6b92e305d24289c4377ccc81fb2d050fa74d83c51eb6d6f672e2a213cc8d04a86494d09e65d1e287874231eb24d7b0d27b0a1e01630f7bdce77e236c04fa20f4429b8d91260c74e43f3b578695de45921b3d673cd4f4f9502ccfa636a744a426039e0d2bbdf34996c69f0ff8e3f5f88f9f7ffdeb4f5f502a49facbf7c08f0948a269b074896dd390b0be08645e597e4f2932ff7363a95a1d01fc119980a656443840642d3b8577e871a7fb2d02c8006de177665b26fe24f178ce863bf0773e0d2fe3d330b3c99e8625b4edea8fb07ddee1ee8ca94c97b73ddad3c6b7066012c4940568f269004d2a21453ea787ed86f97bb6a3c651c3125ad0489ec41c3fd95467837b9bac50a3c0ae0587db7987281c2d8cdce7537f3b017e798dfb19fbb720a80286b758000195b74b049344de2eb6dd85cd3653e8f59dec8f809d6de21147cd6939403d098fbded618721ad6ce0a88840746111dda0c8cd89f20f991791de57f606c2ec76053eb8c96b1fb150ac8bb95e3d0ba865c04d915e910a0673e36c050697ab98c92a297e007d082e3e41566aa2d11018f10a1b9b24ddeb55d3817890af7ec7ef86fef79fbe3803bf02d2fdc4a78a340ce73d0de23da04cd49bc8703a50b514938d4cacb6239c5bf476218c08ba4099e483477d6306190248c9b93112c83b2ee49822fb9936826029dd14d16b02ff4fc44406f10bb3c081a71328b540a5314939214a183b3571acda9b09f40de9a153e815ce7a3e880adf7e4d0a6106fe1c40af810a5738e004f8f2e73656ff08d2ae7b19ce915699febb5d48d75c37415855ea0e664542aa2dc6ec257b372f2d24dc89b800392f5e2385e1b0b8114e19c25e017212665f870256c5ee5146f630b9390425bb7131fb3ce14b7d3323fffce5d7cbfffaedd72f41c0247d811bf8e949ce39eca59a0cb2a790c6e34f1b70495b4ebaf7de00995ccb9663db73b483a3eeb11407934c8fe66a825ca95bd853ef9bda9117c4c49a280d541ec5a4d5b8579b3dcdaeb5a382a09f21ee82f368ef49478e656f5db6d4f714e934b1e78a79cfe9f34f3ef5e7309245b215603cd55ab11242ad9b9ae4054959f6507453d8bc33658564b729bbb427d050308c65397d46097b01d25fdd63ebc42f2ba7e972baf9fd5675af3d3f5ea9ef511e6f24794f9a8e17f2bffc2b1c7f1da31af710cbe31b40daf50f50fa5ecaa3a1ede6b5f8e8f7b4ab1e63dffb9e5a3986bef5bd00c916237f7acafb2d57d973b1edb94441505b51906c85de113fa6c0c8db732b9f7fda0249f03c48e1ced4ecaba50024e98ba94c2a70d474ede06c4c22435bda4b36e1dcda116039e50eb8f5ae79d3dc76b1e9658b2c0adc7af584c70af0a3c2904dc9fdf9173b766b419c7f489f7d20172197c73dbaeca9443c522bb2d5bc071bd1e309cb1e73f417885bdc83a4c7ebc53d9774bc7bdc5b4ac7b8c89eaa1e639676b8b3389e17d96d0b0532a87dc63d2163b675dd1ae64edb25997abcc70028b45490a2db5a31c5b0f4e7f916fbde75cbb287a823d63d81ebbf27f0a449b4dd3b0290720f1158451264a4bc97881078b521b6dfaa1dd9a5d5cd564341347deac3ff68658fc0c4dd5b20de86c0a52919c4a6a1e451cb5e256fb5ee4d8148945ab591b4e5dded06915d7ef4b0c758466d7b10ddf81770052b51d33ae2e24375ee6bdb34c21e7a857a1132e06e4ba56dc204d71a7680a4d5b4b7d646b57bd104631fa3b63d515fb1d1b50f9ba120b624a3cb5e9250a61182b3f502614352036f7474c37749a058cd1ec48f4f6e9b5355883ba13b384ccf8c92ca65448408db5fbd13bd43d05af61688cc519c003d691b088bd767c062200d1006206b8659a195083f76aec23073b54992764de4706f998a65a5e125001e35edbdb94e5c6ce6fbdfdd065c3e7fef718f8d90c3929d87b1e8209e35fe6c214334b1b1ee75ef3669fb9eba0240260012680f95210a35113e2477383e4b3d0128c73d67cfb4ebcffb6de998b829f65dea33eeae49dc55089a161a121b3393e7dad36a88a3154c0d686b15298d05b07e750fe9f9094c6157db326c14a50edb206c54c5b4fe929e5b4a052c7a973d474272776570499727486718b3426372899c5e3706db7d14f1f22924db946385c7323e63c20fa0e5dae110ec8c8ca7c7ad40424ed85a4e8f67ca3d34b4b2e7d29e7b334d469894aab99d760cbb2682a92a9d9ed4e468dc27f7bd853a24d45d2be3eb8b9e71d5cb1e1304ebd24f9d230e856e59e9cfaf2776d458673694213f5d631256af11947c27406da6517526375479fed22a6dafc0554d7b9202252c4642efe4f8fc446a8a5d7bc66237c5aea6e789a7f64d5a3eb5b1ed44c16ddb72855c98cefd76d9c3ab4988ce6c7ca3ee313d5ff2c0dd5e2678b6652bcf80d580997a86301f59fa9e9f59098833d44e7748656fed19dedac4cc7c9a4d19d247073d83c809025de3ae2d02f635f5f99a3338b898c6de4e6d4c9b6bfdd80e9efb8d650fedd836a631cc05feba3da7e709a6a682472a46bdeb4704c7f0f37c0207724ac75677fae28243e8d8134d0f3131a8dac171ea4275d7d2b0b9a29d0957857149e5f4ad53df43e121136a9dbaa8b6ff9ac494eaa639ec1a192c5b9f07971472b19196aa95a199e72d76f6d37ad0d22051fb51731a159388f3fa0bf818732403412f26599b58c58d5dedd0ec26ead4e3ecfbbcf23d07e42afb89a9a7e96a4ffc3859ed2b96c898ff5c146c80dd3e5e89207f3049af2b59b024969193d811fcd46104854edfec975c04397da1998c68a2cae7819f25efda32e40193c4b4d7bde54356503ba0abf89fe3f8b3999cf4f8d106aa9e06d50eff20875cd3419200fafb5e4eef1cf7543af0cdf5b4b262dc6b5617774e93bb8203a3c5bd371b15acaea72b5bdef5f4286b133e14152d7541ecf9020d7b394d484a6ea72626762717f09e1f2fe71d280805672630ed9358bbaa71cbd9845071f9f1f9b2624a43a6bc795ae545f758a147877e7ac8522127537a7deeaad65d4e1bb009bbf9b4fdd5b6c7fa8cab9f4ce83e4dc66795e4b3fe7ed3def67adedf5b3025f3f48d6c038af3fe8e178772fbfc4b6ebb3e6fe8f85e676a023155329fee0035474efde45d7bc5b6f8cc0c4012598da7418d79a2ae316121a4e7cd2a87baf79a4edb3f8e08579b3f377d068fc5925ffc020c65b1dea06a3fff62fb68c89b76d3824ed7d85e82ddfadb91bedfb4853d9eb845a4b43df6769c8ba721b2b329637dc7a2a7d3a598a48303a29d7b0b269ee7918329a5a7210b766a55f0a1a613c58344db04412811f2e91b99c2d4f3c8625bd7e9014cd4ca153699964e928188a999882cecf1341a36974a1c2fae014ddc694e457bfcd343dab2cf1e3fd9d7b97adaedb19b9f5ebe86bd24dfe54e2f52ecb3f6edcbef72bf51c58ed3b3a45611a3de629bdea4d9b610f6d2647a7913d59057799aa6124c7910d87ec279faf09757cf1612f6256d361869faa5c4842188e92c9198787112221a6c22cf6db24dffe76dcbde24eafcf231dacb9bb4d6d65f368a1efaea97af86f27989d40ac6135f3ca6399b1c70ac32d39953792cc7e34f5fb7fe27173812dd53f48d00e415d2f4d83b86e906498fedc6147b90b0fabea475cf418ead6c6453ca18edae00f7d79a8e99b79d9ff87e6b69574dbe16755453958f452bd4d6d26375f7b247559f6e7574d3848f79d9802f9332e7aff4adc91eba1cdbf328a6a2675f1b70f5d4588fe564a7562ac5d7dd387ec4fa6c9b9d7b0eae9a334c66927cc1abf5db43260959edf0d4a6e43b08e8069e5eef7e03357723537b0a9594bb590f09fa50baa5a43d2525dc9830555455aebd42ac946c57b70f2437d436ba8d31922ab294ad59a3fad85ddc2475ccf65ef69ef36359403042bc1a1790a98e204ff2a5164d71ebe9d8911875a55cbd99614f4fef73bf4994bdb54468392de3f13715818d54998e4eab9193b3b5e36f803222d8c7db3ffef6fe8ebf538abb26010a7aaf8a765038bc3ffffbfdb8ffd17e7abefbede890760aa2cc4961167fc9794ba5ed19419375cfa65ab6b8d75a09db5b7424fb26c24c35a97437682d6e8fa9f8bb6a3dec222375bbbeb83a92902690ed531f7f9f9fe77e83d5a3895b4ef4239ac0597558bdc613a7106d5360c1841955a10c4b6f7b08273b42064c0f9887437b16fea27dd64eb06a3d5940e1920f197854a112d2b0c73652d65d1b0301f3691705ac527c3c1660aa8eb700f065b5cbf836c455ededf1f7f4d6f71b7896a5afc360e2654d473d72027bab9f7f0b40a4fcebda1a06ab58b3ab0b56b104e61f325e2aedc5beb6c9c9da0722430a419a6d9ad93a45b85fca7b8e190600a9f6b7a98e0dcca4a70316f3480b36bc1a1d635aea36bdcefd66efd30b439f4475c4de69574b60c0c2822c519ffe4ee04cb43be7d2866d3124a2339d89decd28540a6dde8766422f2d9469c40e900c57e96c34a07f993010058a256c8b7632da2600534c423a0df016abec01a14c362a699b9eddb6b9b6279f4e4974f082bed93b05c76ced76349402f7d72ecf16b02df5bde5a7c316085db59de4fcbe87672c982d99b079b26859c54912a3f69ea6e9de9e65bfa1c964ec8625f24ce1d5a1b9573959a8ec24907aba83890027e3ab9d82ed7c87b88b9c9656eebbf4d3938aece9bcb68b0dfd59f5497b2927535a813de0f95e801343eed24946ef8cb9380d7a0c600f7c6e53cadee3a98df43d9f48d740887e7ed2a47b3d098e84cc88d3a288670354913d9d1c643e774eb3c0b6cad3e826db5a9ebf00b7a7d3574a78776c69f53ceeb6c985e7f14a629bd9f96a7b8a67093c81328ef1e1219f6473ec59e7f7b4aff634ee83e442a7a70071f26c682b417edcc6becdf96dc49ee7f96d4c6c6af5345e327f1b890d24a0303a87b34623941092ad91fcdc6fb4e51b7f38776cdbe94accfb561aacb97d5a7b696f5d00243e7358d89656319f733aafb80cd79fad981ed9424fef0c869b16a69553f4c4a0a926c31023a879c4b606620cd59c87cd98a67dbaef99ad0f332fe7e9a9eb69047d175ce7f4fd1601997bc97bd63c0e292fd6bd74dd20a1e9a6bac75a0f3156db9e4d75ef388e6c187205302f642bfb1cf4ebe5ed62ba511ed2e03bbc4886b329e7bdd58e480cd0681e8e49d97329a39b101bb78b9d82f0729a5048d6176d0fa9f4623b4e96013a59e900ee17d9fc5dda9e63db9e5fecf3c5ed4490bd75f7268f980b8489681b3da8cde0c0841f93f00b02b542631f38841a6c593d1782394907425476a796a76da43c6c834a263608ed81886d8d3ebb13d98e025d6c5d18370cff602c30e2215b5348989bcf7c8dd269450e6dd71e8775dc3349daf5bc27093d4231d83d14a1b6bdf1e87bd6bc01fb163b2258c3bc989a16505b9d6cdc3150ff319121b637201d5685b7a704ddaadda16ec79f25efb5ebe3a22cbbb4846f670363db5aec0012b489d478fe3f7fa4fb4dd54e98e7b5748962337a302aa56d1d1caea9f4bdc493fbc77e5024ae87d3bbc1fce840d527bb65d25d9581ca1108377b8a4c4cb4a11093c999907e66e5b5cf4ebe82d7f571cf228fcbed394d16e2d399822a500df6544e7bab52e84bb6e6649824957a4388d9c9f287d8f15a377b562a04a2f518a337d027d4fa617fe71ac7f3efa648fce86f1b6349a459bec4b2275344d44e8e231c42377e9da3f9fd46434a02d7b5ead5fed4f8bce1e668fd0dfba19f0ca2a671e402b43311cca390eae34fccb69357aac03281f9a9cfb3438b2d7bcce8b30cac25ed313e2f926e72c4b3ed5b73b16f739aedb67ece7e0f93aece0e519d4e5390d8b459aed17eb27969b13df5b98d7d8353cfaa7d4fe9b4bfdb1e913bbc80d3c91bdb5e8b9cdec676ca739b69fdbb37f174ba49d853fbae8d494e7aba977de8d3a860b7cbcba89cbdd1b6419edf38efedec2c96696f1ba4e27aeeb9ebde4f82796a6157796e0227c4f33b802a51cedea8b36f00217472da564968fc7c8d492e933bda34a0d3f0e91e4f4ee5b03f2d090c9e0914a74e746ff2fc426a32c6e97b279ca5a7c7c7d27baae122fcacb8dfb4c382f87c55dbf350dbb5d371d86bb1c3fb346f2813808b342a0fd6321e7f0a95446dd1d4d6a7eb2e4acb1383a49a9ff40df6e998d40581ba653b65a5b99ca01bbd359d52441dd9562e6c7b3b7894cb5e4e83e38288bf1c5ee97e731997c49885a9d1d5c3345a61da74edcdff3e6ddb3dec4dd3fa0bfa68ad7f714d4fe9d47b3f7d1effe56d91bd3f1f551017419ac994f5f81b5335f744525b95cfbf4bdeb5e771fc9d4284f69d02633790485815c648b5eb42df5b4cc3d4fe99bdb4ec4d091d02535f6f7b84c1cbff6ef6b7c973fe77d1bd83f03ed1a099cb2e347ba89d94d5ba7bde590124068b9decb536660dc5cf579c86e07e2bcd546b5024859646697b36e12fd1c1de90d28450fada94c17f75bb249b3ecf2bb81778af2f70dd9e1618028330e1c259c931a122db01d7a778050ac8f938eb88f15c6d3597baf58a63ea62a7daf31edc1ac4a10b9c08b609a93d76ac7b3dd9c2ce6f7b5ab1d55eb17bcf8307aad84d4bf7e0c2f67824355920c5e3e1812e514b3a5e735370f1f968205ab54839866d68670ce031aa19992ffa18747aecf4f14d72b076f9781d44cad6cf973d3ff98fc37eff789d8aa5f1cb30f4bc1f29004c946943907aa07b41e4dba672f08fb54d8104cb7457454e809683a32c6e0a1209c756232558ac38adda8618689dc1496d84044cade76574b145267364f50581da49667c960b807153981176901f2920712b801c283370a04913e4f59b74d68844b4b290d708d31ce6278b0214ffb000982526efe419992613debecff50d1c822bfa25d14abacee02bc8194442d2b91e68f162dadb543fe387c7260b3c0cb3b756d0c1b49781c0c5730fc892010cc6f4ee00178e4bcaae64a78d2ecbd8cee07033174104391d68d8cef561429602a1e9f9390b50bb7b5c30e61694a11947088c8fa4aa9bea916d5a66bc1b9cc6b02796a97ddb3b14bcf3235c90249317662e8096ccafda001d029c07dcdd61fb80ba61cbf77e13be68d8eb10325a81e10b892448421564931730f782ba62468a214a23d2f272423609585333682e23890d0b54178769c6c629c399fb8ac3a210541b7935117c081248e38f8c4da296826249c88a0ce4f40882d298a2539c1cc99a11f9991168aa64ae253d22b994857961952c3e8a7b11980d2d3396735f00d03a1310e30c8525152772da081625e0c84ee4346dd1963ac0de229c2049dca4c7058af7c8c8119891dcbbb38c710c0aa247c97160db57ddf35648628dc42a322d33a21fbc15c8fce7a83367c5be0560affc0b11a4eac0a247e680edd9332259ae26aa9619e30588f2f0b94f0b02e0db5a1774a80891175b10a122805890902f17912a6fb306cced8aac32d2bc99b4f298a23f3ccefef1d3ffff67fd0243a87e4b614f5e7f7b00f0fc872d6792eabf3351e941b83f8875841a24a63b472a3891d50eed2bd2b47379136d1f975ceee8bdd5bd7c98ac28d70e36fabaa3c5fd96207b7f5c1218e8909a7a4126b20a196e717a5a9bb7a47abf291740d75dc0d62388366f57afaf75cf1ff8f57e2308b46dae15694dcab2e726c6f499a70863ed07b8e3deec19d207cc5e781ea41703d308579fbeebd31d9eeb4de981716fe07f9c600a7c7868c33641380249f543c5b61fce85d4c0e8df0bd647dfbc1b4069609875d7371b98f291b2bc99565a3fec6cd4370d616f1f49fb5b6a53e694b7584895d1c78241f781bbdc6f3efe18130df21149c91b04a06319b93eea14eb3e0e1947fb2a22e4830067123a1447fb5a2f7dd70f1397a3bf2c9ee27824b1ddfe9ab8d575b1a62d5c8fe90278fd5241728a2db18a7ddadef7e46d1093f0815eeec8e5a5ea54de92691c1f5214ef6b0a850d711a26d6154775230faa90a80d1cfc288f540151c8fa72c0090abcdc0c972ed7446681d66d87caf1d84f911847aed674f40921c91ed7cb70c2110851b6a767fe764ff8fb2fbffefc9ae836b62fb2da52d323dfb2291906460260cb854bcf0eadc694cba3789c7861cf1bb1033c3d794f28eab8d8d98622b32c2fd2fd67e9c87cd92e4059869b77037c31a264b7c614d9461c87697b06205b422e73df2244b9883441218258a9f0cf33da5e2014b541b046c42de0cce5095f11bbc273338fa7b2694a4c2601de10b1210ae02e14674a46bc365d4afdb93cc81949260821b81192878fb240f47c94219c818b09e247c4ee9a212c4ffb0ec156d202125a79c2bfac1f76f287a99ef9be4b3dd8f75ff40306f22feae1be9b991682efb7b3348135501612f732c39facccae081cf8aa7e0851e44a3eb847cf6d122042227d3736f65eb26feae8ea8f49ffcddafafbfffcf9750a79fa4bfb2e5d1429bb2e7d25c759062c2633ae41764f8e4a40d182ba927166e083f0596b125b26e00b0063056e415e49273dfba514da2115cd6a9f037002ae713edb74fe6af6bcf79b09230ae18e3eaac2b2ef06b111a00eb76d80a8132c45d693774f81afc54756d02f832dd9eb91b11c09b3cd7203be0cca02aa5c188a6a9f811833a86b631836811ba44385780a425b6c9f0999303284e415c4926a5c76d1b75502164630de25c5892d654b60afb012e945e02f33ddeff40c494986290e2fd9a121db27340913103994b4952d0826bef78f0830c546089ae39cd8d4b3f291d4aa43ea41223e2d58a5908bf755e2b7d94dc156507864390938c0a39c786190a65b089bd2a0214771001866c465fbc6f6f520848a13293ccd81fb8d5170fd1df85d825475ea4e7dcf6fa6465d3ba10bf6f48ed2251185281358ca74c677ad805304e70dcbd6feaa7d66a365b7c8e479cfc40c239c3dcbf624e3a90cde888454785cc3f21bfa1dda81bc05aa7a051702f582d4024b80e546a4dbbb4f8408a0dfe4ccfd7b7c13cd7b7c1751ff0dc85376c5077b883deffdbd93d9d50e77705df853945ddfdb41e9c707fe66dbf9f3f79f7ffbf58b7de70bc2dc1ce548538f82e520c34a888603474cd9689bc24a2ddd2746662de215d0b879995db09c8058cbe638aebc171e5dec9cf5764bb67e3cc6fd162013e4b71e3ed0ea2d7ca0e29b51f8ef7ffcf4f7d752cdbf7f01dff229d5444039402c183c700117bc75ddc055de00fcd3f63880450af02702e4d8314e2cce6c1f1644e9d06d4dc527a0f82e1bc03cfa9eafa44207082d84558d91b45a1a6dc202cf43897e93c8848f8509780515c1794aa6bf0e7bfb643f27c7a6367c38c8225ccc05800a84ba0e8a5d3b71a3c282f6c8387cbee4624d24833041ce3e87e77e4b99b45f8518d348da3c084041c6e2aaaca92b15d6cee8db55d20ea146b6a4b8b2c05e1766bcf3a8a0f405ca1fe2ca700a7819bee37ad4133f3827b7e8745cdbf00dd346e0271bb08be034fa2c8f1822cadd29e22e09778b1046adfc86a81d12771fbf76b1af6a72e769fb8980c9bd607b8d3dd39c804040d92eb6bb4215aef6d149c8d149c29eb61eddfa72deba3bc7a5f377f0b49f0728c294db164e8c40a2a305a27d01894e6d3192d6d910f7f8d03f5e783ffffecb1f7ffded1faf0110d35fbe329d3fb073520d102c1807ab608152c4881213504022a0da0e6388826a3923a6d68bc07b1f91ea9efd6bd379abc9a1bb04100c80e7058e493e3e6551effe5214760c415d4a3c153053617888003607922f29b4320c3bc9cbbcbf97017e4c0641d2d83edef07ef3bb6976b4c7c8f296489410e10d7012ac3c50441e2ffce119777b8c086080b8cc59af11b20cd60acbec46b97c85347c00bb214ce4e7c3dc6f88ead7484b198ef4f84019867e225c70d18e7ff23aa0be92cb8bc482ea8832e92345c18843ce686053cca4656a0ea51b591e3471b25e8067c3f62cb31f2f13d612c88c2e53750284154841c40731b9ae390dede3a57e3c85ffe3a7fff1fb2f7ffde9cfdf5e83bda4bf7c0500f50943240946a70ee265db12009ae6f64f20502ab58f784d0932bb06f0d1e18515927e606df92c5da15752947bb7321109692b9dd678ed57a9c77053985d481dfca0a673469ecb57bbdfb423944ae0dbe34a18dad1fb35c264070fee88e056b7b2e2bded1ef1b3748d0e2e17f7fe1e4bc0bb43a12f816f7ea5d4213201540eab9f50f9259c19ad61cce9d05566aeac97f557c4c7b7bab7f7b5f7589a4b4091c084050b47edf48c85562e6164386ae373f96af79afa4b656fef2bec7d0c3391b1106030e8f968b9624c90eb731a189c1d7926948299155934ff4afd15294ba8cfef526d4358503c05d409f3edaf079b7e9abe9760564448d6e2d0a5edb3042e1fdaf8fa7b224da52ab0e31ac656af69417d3335500eda0937f02f641d50aabea8bfdf00398753daf689834e323381618b2541ff992e2d628b88f205a68100412a12ec3ece66a7d8c1533273b0e2eca73a12a6890c194067960ea09b0ed3c43c030bdf605aea20367b7aabfb0da133642abb12193141de4cc03eb6b2c24742fe4d72a2369449554f79b18d82adbe82c19d021d212f81f6257b1e17daad8092961da7b2b181ad9c0cb0900da74781b90f7a0c80393720c211b4daa4c5411cdb0bb747389c2e10775353f8f3862642d0931aba6f3830f9aa71e67447eead3fcf69b4588f473ed53f0dd973fdfd06620da0a10c500211568eec40402d630310df0ec7ef842c20307f5bd9b49ae22d3466dfee05f863c53bb4160d1f1b97c901e22fea660f3ec3e9d97e7c8afdf6f3afbffcdf97fff9fb4fffebe7fff3dbeffff9c559f68589f713cbd20ed88ed55d87f0cb3aba1f49ae0f8f2139c89917e4c100988e14a93b5cdb1996fe8cac193980881df2211e7f37404a1640badbf07492d5d94487f66c1f1001fce04c3b4e1af04227083ef00b0c201e92375f411f81f8c00d383eda4d0e8263cacad43f8571ea56662d325e0a5b235a832d4c0924f46f07a30448da707d02985f84cf3f914b9ca6b79260eb82d999f41b44a773a6e166439b238961dcd0eb8c4660be013bd220b5b264e2aaf310a5cb9498f87032244a84e059cb0bad0994b85449f6114c09ec61e28d16008a6ae813f6b44003d648bebf08caedb90550f9b019783974376ea7e15cad18b9d4eb7ef00322f33155847fb503dcbdd0ed0acb21a696f51a4757dc20c1b7c4cd6b137fa3085ae9544d987a9894b780ffd32001894d222f4107877c381c4e6e234c34c404c88e69345a644c7de7e5c0d44bc49d1b8ada02b703b36bca8603d2563060e6b37f450ac576a26d8d40f7883b08e0794809eab61c16c1cfe576bfd5ec2ebf3860182259d2a398b6aad0dd00ca1441d75bb70e787fd806c9936ee58e48b1ecd08990a813b8ab3f6f6127238f07986461ee89077cf5862d2daa6dce5d1d60b6531be80765450a0c53daf50a38f2c39b427ae9985e008e0b20c0ced598f33dd8018a6726a63a9cb14d675b5f2e30ccd82a43c04224e669afacb685184c7116a02d03575a29a96e0c67a848454e83dc3dee8cb3f7ae38281a503da07fdb2860ab56273fa777d916219854002a473265a0f376679949612694e96e019a34ec1e36a7639e432165a24d1b89346073004e5a020b529d9be8eaa33e3f0862a6ce17e9ec274961e67a4e4b48c3c2fd6533eb7480dd5489fa5486167c375895b5d189d680e04082eb33bd561606a4ccac693911907661a852082a7962db1b59a1792e62664630caca1be7f532c58801ce33aff568bf4a746b1bd6e7e5d91cef627a17bca3cc76b28c1d48e648bf91a976ea1c7f97e33156e7e75130ef4d2e7ae4663638fcceca4bcad119f0c3b99ea40b6161c65b220b414e34d52c6ec2c52a481aaf3463c00eab9fc388498b34e342836874a9a1adbd20df715e83cb7cc61100f4db737dc1f96682c9f9d97a85a43e733eaa2cec9076649cdb1c2be57ee304400803809166ad153e8db830db217c94b299cc1f57a60566bb7238df3fcc7a47075b589803a27a3b3ff9476f3bd36dcf1dc6c06889e539c31cbaa84b482b92d0ce6f90e8409a0330ed8de750ca304f78ecea2668e8d09a0ed209d08a9297b76c39650fe4541039d7c3dd5f20e1ae1b0ee2364cfc9bf8e82a85c23cb516977fe75e661ee258d2bcbcd720d2b9cde369e6896af5f9bbfe97a7b519363d7fae13773766e7b9cd74eebc6873bfe534cf32d3a4cf38efd666e6c59fcfc1576de6232c53e6ef2607e730f38fc69e814b28305d65e0c551512e43737427c9793875bd2b027d342c91c265da4b46a2f492e7a8ea54e89e5f840525874598fb616065453498068f284e1e871ce693deeb173962096403a2debfd0e67cbea6a21e533b4b25d888cabc38535f2c2973ecf4d038f766dff0fcfca6a1cd049ef3e4d7651a9bc239ddab9739723bcea7806dc153d4779863c5ff85797dbf09047280810c290d476b82dd95de0dfaabad6cd2aa8206966606ba4d8979d91967eb9f36d16990c5690f0a881822d0ea2b73c91834b8a50ebd2a0818028af3ad172a7a2057d6989ded5b238990a0d845d27c67381e82732f259471988ea396c4cb548e61ba89cec6f94a99ecdd2d527429663cdfa4aa764484963ad98081fa0a67cb59fd25d50fc6e85c1f0502fe6c334ee27c07e75a4025cdc447f86af75bb11507b76f01034384d65010696f075e058735c2b8466e7923a94dae082583573297853b09141039aff533a37306d9594c1df36d62664a7dcf23a7366b5bd82fac5e97fa8afa86721f39cf43c1789b4c9e2884f3e556a6410738cec87d618a523b680ba60af281b712cbfc0c92761945ce1fb86184db56529ddbc39d5aec4da77ad3d741b7bbd437b4679f15e5beb449f79b4948647aa870ec55a42f31362222f948ac8c52c57c661e57c296c6e427b2d4804382ccce88dd166ce519f4095b4a70c164b26f981089501030a800eb3a91c41c122a7281acc1e98153a16912b60bf48695de3d3e21c11759b6cb418e21042f181a1b32121ad631380885d11f8f37ffc6e0f88fd7e952f98be8f24f136392c030c9a13d3e42268b240f874c5e8e5ddead85bd0389e037c68629c435581ccae35bb2d8c99659bdd3c7ad78d3121e710e0c170e9bb44764bbd264051b5b40e1dd1678ef5b2197e0bb9d0fd52f7d7478bf013a04c740062448da2220d1413d8128a2a8cd0975047ea506a7698301d9cb50e58a477b3cf578bf2195acd7bdbe016aeb1ae94053b1b168887e60ec58e81ed20e9f343c17654846f01f9872a5e447781470c56093640027039a81c548e673b8cf183ea26f30f65c1f4f72bf91b1c7ce95f4667b6cb982a5f07c30daf985489599bebd38834c616219ac5a335d7db693222c7e4944e9dae930f5290a83de72f0eaa4fdbcd9fa9b143552e98b2ccaee42a22f734dcae44d9b257f5baed3b58b8f35a585ec3ff545495d46666e739539c0ffc55b4b9edefafaf4059febefb71cb24f66ed546a94f8c93e99353d94a0ab622d72322b2d6c98ccd9230f6d76e6170e4f4c6c72ec6066abc42b375ace6badf298d7b6ea702ac186d17d5e672d3eab7386759d417fb642cef7c20ccfb2981231db4d13984411cc7d6d75f686621d68acd7cfc73e8ddb0f77cb5f7efedbe51fbffce3e7df2f3ffdfd35cf58fcb76fa3844511b23a3c6013666cb2154a3d2851112336006d89acad885c1ca67e278f0843dc81e74421611221b00d6e868459ef9ca31f881cbe9a585f1907000708cd31821c04485880c848d86975d8479aa4259a9465fe3458c5f87ce7f66afd5c73d6a5be402c394f26854d9a3cf10a77625699ee64126e1c39ce24980060002ac774aa9278a8e759066df0a5b6e4b1d6a9749404ee973ab5456a6d9e0dde42fadd1ae64551c489d3a67ae49cbdaa87dc5b6689c0567a22d4d8b95e9b27204ff233cea30498c9737d7369657aafcac895f9adf4701e4ff5b0c06b5cde16ac4208b485fb2eb0e4d4ac17c6c406e4ec55c40ef4ed62b20ece93b25d60f74ab56e176e5070a45c721c8af97ed108c3bab2d3e346f79ba89d6c3204915208880425a504f8db19926365a40ea4a31e9e2021bf723c22dae52aa402ed654f57eff97e73124553d6116701c5e02ace3d2e7bbb0a63496adaebf5a9f5fd969919ae0dd31f537eef28172b5f3396bbd5b28cb6482f33b129ef1d18fecadb6c2ac4594c88986202a65e914ed24c4e4f20ceb473be23bcb9392930d3b74c08d16b5af29e2522504ce74387ce19db3e22248d4cafe8b94d8190d4165d1ced3189a67ac617cff610ecde8894980f59f158f670aea7d754e7cc6613d7cad5a6fa741033e9767df740c57c0ea0f480a717f5482b59eb11ac95263b14513ef5557d8158bfd653685d0d7b8c7bc8b39814e94ed725ea96f1137db1f1d0debf66e7dbf3bc0a7a2a5809f9ecfa21b74ec3384cf5645f2f67ebbbe08e9967f75a3f66ffc3a37d2873667ce7ba5d9e934ed2fec20eb87bead0a9def689b8cedaa090c067db937b51a7dae0b14761ae1f71454be8d583cfc252cf04ca793ef5bd5fe311a8900778782382c1ab6bdf15710b75d423459c2ca1e588a3457148f9ac55a8cae44386ea10731f91419ccc29f7280f286048458926678ed81118943c96752b381c603fb022ec59e7e1410b8a2a089c48323bfb6228b66509f3c4190a01a134323c34790877822e3d392fe6a49184e02704a2267c98d26d5df43e7bd9ba07fbb48dbca69c6793f90481b83609a72394d4aea0d44e9552d5b9051cc915a0dbe70b5bdf6a9a0eea84a4afaee713f69a90ac84b8bba96b7cc9b4d8ae2a85ec363d2a63729249081e9b9332756c582294880175d00568b3607e59b6460a0031124ecfa310e6977a047b2484cd4ff48e38122ec50e1b456ce1450b9cf26dbba479d1e5d2d1c769b98c0c039de908b170f8a77b3fcecdfbed207adffbc7a5dac1b7906f5ea6eeaf808d9ed6e7deded21cf36992cee298aae3452526095c4db415d5c5b01d610b6a0ba000ac454b3e1f3232e282b992f7744dab21dbe4c305358374bef393f61726fef905cf63f3af2a48ff786d588afff6156cc127112f735caa69215ecee24cb0918149d8a58a0729c1b375d4d38e46332e729725f50f20d397351a821e59680031ba2457581ebc1bebfd299022f2f474f79b09f573fa06c9e7e79ba11ee144f19045754ecd14dbcd3e809bf85c8f737e0a3e4e8bef79b9635cb063d6a75dda0ca9b4ed2ed732690a19855e2ed3a93bbcbecdbb2ffb94952efaf5e83dd790ef3895f611cbb0e2253287a230cb7053532e92bc691bc077b1bae0adc216cb472a6d8423b33a222aad6c0a6c8e370d61b02b54da9dd0ceef79bfc5c63413d32208ebda21c50aec14f92857b1c39031a31193510ef78df590989356d351072dc9563fadf1b49da637a03f7ec454af367533463b7e98ac5007415e22e1552afec5d33c9ef07e83de0eb79d6d2d08ccc1a69918dcc79458e4dea30cb1383dea61ffd245acc90867d1324f134481499ae30344bbdbe08e4047448122ef90191574d8916a321d14f5adede9233181a16ea6f77ff439dc4190a8d9e61d4b4063de96d86ce438ced58363b1b4f6a1933972e86948ffc57def35d3f0bffdfb77d6f4a20100107164ce237c2830f9222db56c59b939b5bd8e9c48e25f40390f5d06e69e2c4be412e23e7398b1a66c6a647853a79d05b34ae1988c0852c4817f6e532b5c854b10885628f0932c2e88710db3a808c43092ac9cea11770ec7d4f981272ffd40c6f2f96bcdb317ac00a71a5d025abe6d02a8c6f3e0b5598f4a69c54f9bc741ebec01ef13e537a8eaca0f9b20e27d128a0145b7601699063a74610fef4b087d9bddde4b5aa1b659ff6c712f30f43e37244a96202e294cf5488f9d02a604be2ae657eb541f4cdd6e7d523393ef1bd35de1f6e875a9065407f3f3821d0a7957fb2f81c0ff625b54402ea8cd37f806118fccc2a6c17f0974cf02dc8b3970886ea495082b12b98e561e4f65c4f5462f038d1d21a72ab4cf208c0a9975d0619fcb4319dfd1919b083f2d4894b0ba2b32e8d2c88cfaede4c98f9e5e21db631ff966bffaf5cf9f7ffff98f3f2fafa53449f1bb746b538f559149088826943d743b6ec18108e070dbf83e593686d467190028b19a0abf1ac2685884458b45b8e9601d139caa2c9a1e3b32cddd4c7286370fcb0049f92c0f29eab520c7856ad4bd4cf3ba971d9c83e0514754a797e1da7b044957a8687402b25cd3de07cbb6a3cef21c111a66eb84d7b779471367f69f6372c1c98b3c8557f552f0115806f452243c0d702da20458c71a689a090ea05b6da0c2b6ffe35e476da44c3f2955cd26db05795d888abf649d5441646c5df21c8400dba3559f630a60c5bde4390d2ed2913f5b6a620240f96c9682f1254ee6a1c14c9465afa49cdde6dd5bf031e76a00daa5b53570639ace3ec5a66b52d7b0da04d023413c3fd7c463a5fc8b4bf28ffffae74fbfbf4ec50e7f49df694fffa2bc8c4cde81e04518e7094dd4b606eb72c3718bece6b6319a0416ab9699b0eb45873344d81a04e2d31865e4e72db64bfa41109f8016a92d9a0b8326967ae47f8d17f5b00eda6a9e3e1d0890e6f33265e7065fda963a4fa06682fa5a8d14fda5dac444ddda2c4f4411876208e7fad06c889728e2c8044b99a71c93e86c6ca6db9a908f74eea9ff98b16fcd81b4cbfd56c8a5d46d6ecc81ff60b921aac6b42c57a92a2d965a35bdd864c1e97916e7bced5e536f44255beaed6cd5f1a21e6097764e9feb532047e51c51de41c4204bdb1728b465d6585fb409fd2582ede2cc476cfaf909fbe2a8d0d955303719f0897cd34b58ac3a84f75d6c6320321a121798e01a3cd1f21c312c213a6ad7542f509ad7faba280d7979da4288a825fcb6d79d542b7300ebf276452709d4b3c05fd7bf98ea82479802ecc5815d27bbb400dee89c5d1dd3ecc2b036cf4dfa93c962f6aad280a1535d9c56f8ff2bd3c6bf74147d7106c977480acf3099390388ec928150053c52017ed705443940f3a05504568d8be9833878881ca81b83ab80512881e2f54e746358822bf1e0e804f82c029eac6f4bf03ca83737a8d5767e1714e14e9f4ea940b1ddb3eed5cb74297bb9cd36d6c4480a268b021311e581cdcfeb09ff066c1314636f8305c68c23d73cd21f4dd12800eb062071ab634f2b4354a7dae669db67fd32d2e4c40c5d47725cb6a99c11da3929db1922425a4dd0b3653b2e4838714ee06266f4f464f3061cf3bc51c79491bf311f5f19d3289cfb0393c072d401fc794d5d5aed5e4b1b64decf07c72a70605e95d976e1f56b5a5566b2ecbc57a438ef717d869f906a52c55ced31456beb399b11bac324d5a4656b4e936d06c07373daca0262921709a82fc0de4b1b99f303c68b3669f1dc2e8942b2ac6491bcd60e007abc686d9a39f0f41694f8e01ee56949b17ecee8801e4bf7eadcffcbfaf758c07434095cc0414acb3d6181888bd80ca518840da793c3b1ca533b9f3203609a1741c2359cb550d6ed4411db814e00d1efb6955bfd015dfcc3f3e3ef3ffdf71f7ffef4e72f5f22dafdffbe8b91cbcceb351d236700d945983aeda08006fb59bc26b1a34276f9b0baab421b6f08a2e9795b642ced757fb5696a4b0e8d908612821d70e54ad8126c9a0cab8e2677e2b605088f026f750e8ead1491d04ee4987e6075002908145710970b28668a87f966e41d9bc85f4626a21b72c0336ca1b00f7d0ec8fd96b4b80b563e6c5b62144f2649cb11329dda03b32f29ad1d68a3482d418603ac9647d90eb90f3b71f35560c58a7bfad05886e4cff8f3046cb544d7185ec3b4b132543cb1c55ae688de58024cd0b012fc451b58f2346c4feff0fc15ee37c438a4bab771915d780e5f3a3136d386cc0b98775280a6044306d5abfc54bc7a8445c97bfab0c16c57fbe269abc8f2471cc56105d8201b423aca0586129ad299e78f3442872f9d1237fa5e799f53752d7bf900100b00b5a7d53f49757d090b9ee5bec778fc78c9fdfedbdffef9d73f2ffff1cf5f5f4b6dd2be8a4b7da04826815423c0f065397cc2bac42e07026d973768081f0ca645ed602b86ddfad5c8787deaf57ecb41b1c7d8ff19d941140c73b1ffdf9b557af87f7438fa5cb0ffd815b6ff780ff75baad971496578b93a5f809d9ffeac29963784387f94e60f6d7ad8e3a1138328e8adefae693e75fde341ffe71ffff11558f0bf7f6140d5740cb7868a44af784d7088212ff94ae60390688f44f48e204cfc42582c59591b9240f2d51b9bce561d1c42b70bd67f263a4644f249bed2fa7789c9e625322d2e293b5c36d88f1c81f122582bc8a12ce16a0b5b696019aacc0d43063140bdd3ecaade1e2f75bf09f2a6017c3e5ee486f7bc3ff2cd7bdc19cbd3b6d4ea555a41206bbc72d74510ecf5a9bffb8d3c0a4a0b2de25a10294d4c1e9ce08884d6becb552ae14b8b0d03167ccf7bbb7e7671bfc504c24fd304011e19197c89085438ca889677a9bb5c890c6e9bd935d6c88de42cd6d1aa96612bf38e1f85fbcd7652e6c0c72b3045180675f5f0241bf0ab2e0a7b8aea294a737d4282deacc8a740a565c94cb5fbfe7856fff79ffff1d5c1fdef5fa97e0ff3239958d46d52f47de0a0a30d9e60846e8f2f1f29e63dbd212a173412e76487aa36ebb0ffcdbf6d91281fd5bdd9d94e0bc61834ba7610248bdf23496748bc029c53eb121a262094adf41643fc88405a8c0491730a96bc4587cf22707cdffb9b54a46ac25aefd851d2e0355096b2dac99c8140224c8b61b03d55ca8608597eb50af8761bb1ea3e9f8e72da9e46f27e0315367924403eee65bca510ee86a5227b7b8f0ed02aae5692a21050db47ad1e2010281540eae893ec622d17a3d8d3539c0f6dc625db576a1f00a61dac81544ff627c65d025f21b3fc1681c843c468fe4a1e0df0241fe504c10ed188ac4040a442d2a5d91a9b99004f3dd0cc4de8998e2daef82dd9220567f0c1c688ad0fbe1502bf845d3f6c337d33f95f3e30316cca2ad3973967d4f166158913cda797e639b0df1e4cc1f13905f033a596c96298ba0a5996a090bc11e63b568bb2fc86f1bcdf98a5a03a88d8ab4a408c2da9c70330f56db0c8ec1d62fbbac14236c2e66496706047c690b288cb9de4226f6ca8ba1d37fee1d6f15ffff53ae6eb2fe55baf454aa05434f93ae7a126ce0b3c40b10842265b5793d6c4f490d39fe3f8531b188c81f394dbd6f6a01df4414d135dcd7d00e2b865647c962674109e68432f1ac000081c6635b924ef3d4644f9a567aecded02de58f2ee627b2f69af262589ee01dc967defda0091d7ba3c7eaf712fbd3d2eb73da8c9e33e266da7cac728706a253e6daf382862c9fe3265d8c7d18c374d268e4650e7ed5dfbf11787e8e96cfaa27e93bcd72ac7804752f7f26b3c5dddf656ab9dad6262fcde246d197ec3e79ed29ebbc2782acf94b1c39665ce70e2c9c40abbe7d6a11ad71347aa0d58228a5478e65c1c85d4c076be7713e142db7b13d2c2f61399a628608741969fea8b1670d3e74224e25201d12545fda615995260e06e9534c551f758c9db1d9b6d07ba2b28b8f1be20e38df579683942a47a11e5e895ed3ce37fbcacfef9cbaf7ffcf5a72fe099357f810faf26e21eb23d121e308f10d75a1cc5fa42146026e821e687c7839d7ceff2202c0020d74ea1ba0c93ddb2d72b4e4a6ebc0a43438ca63fd3965901c08f1073207cb13502dab4cdd95d511ac03be8e78d47b96704b274c7e7cf1b4137689ca0493b384e9a22ce83ad02af7ce72f17ed0fa60d94419e9d8e7ab0905d94a1021db476d468aa9f21002202cde2c1e9612377c6797d1a63dba811c99600611600f0065f517ce81bdd33237528d1d051afb063f7e60574c0e205c17c6c6b4a137bb8e432d82f14293aed892dfa78821fcfaddf7effe9b5c638f47b5fb38d74897b7a43f4c9500c1952dc15c009fec16085601e5d7dd442f3205794902acfe406668c223e5f316722783e5896d81d953043cd688efea4260e06f83ac02e0842878db21e50c4218bd8b5566a8b0b3535060225582601fe66872412eeed2f81efdcb60878d19dd60bfe74a61ec2f0f1180d283fa0d16e83da47d4e67c7ab1322d295b69c48aff1196016f14ac4668bfcb9539f011924b442259a407aa30f183ec484cfaa8907fd46b0594058ed85839b805a97095413812eb8614331b3684eac4145803e08e081b108a36707110ce0316266b99ec1c08f66d2b30fa04352932ef1edf07658e3a188b1db117d94fc44f3d7d84c790fd702ffcfda7fffdf3df7fffefd733f67ba60c006241b0ca80aa2f0c634428328470e4fbf72d3501d167413c4773df7eaaf422222f73305f269146433119e580868d88baa57bbf03026c75f2131614588a44ffd401b51b6e6d621ac60a1c4a409b8ea3b05548edd686e8a611046ed84e667352c0fc78fc3fbac756c2e8951cdcb9160ff93e9b995f576fb5c122ed7c0e9749ec1d91c0fa78325a4bfba9f80e4a88da1d4a8cc6d3184034071453f8bb5026e8596119110e7983c95290d77b210042a774df403f9bdd6d98603221d1837d0ba26120323a71f7c67982707c6f432b39a567a4315de053c5373f0dc005ea5902fccb05d0f6a038807c5cb19159df202a870ba58d4c691c34463974f7a667643fc556916bad1b4f248543213938c663b6de6f117aa24da5f61e89f450c5d55b665e46e7d520f27484265a9d6842b4cd2e379c1aa09e9b3643a43c3042eff39ecf6dee373bda0b00b1fa88510ef708582d250852d46cbb268e284ab075c355e29caad8a9aee03cf5718ab434aa3238869ec3ede95ef71b40e470237b5b807480188e78bf80c19e9c1fcd13cda6694ab8f10566a0cce9b097b824067edf66ac812230bd4dfde0d499b39d08ee88fac907dba1dd0acd4a403d983d3d8fc13985dedd6fa9952d399d6126a74d42a4fe05f97ac88a466cd55182c71006b5b4791660684392b809058e377c2582bd348421f5e17934306624cc775ad1526326a25a9b7e508025800aaf0ec54416ca737d0515cdc29940875a02fc2c11d1539d81506345beffeb7a1854a77a8411c4554e302d69ac487a11524d4408fe917bf428131de6fc8581ec27009e16b016aef95ad290e72f4b4606427ed38a431b0b84a129ac2dd216b0d412b2f85c2bcd65efc9814a9ab6b2064e05260a4f7dc3f0bca4322746042d382809388e921754952a47cee65a3f5e1848696e59537e3133d67a04ed82296cf2b90612d4cc2981c4c06e0b62ea37cc5ebffffcd35f5f7b64347ec148f224ad103fa806a0ad0127a4cae35c2053881e5155d054fb4640651391ab533669707ec1a14057a20b50e9db81db2b35c6e107f83133ecfb406e88e280e0f540f8a91109fbb80ac81242182592d15178b61934c84b924a3ae8fb0a7191107e84001ee89ccc0502e48092025066dc11bbbf89f533921c3955170a0d12ba998035516b208f0b87c9b9bed1b1b820c8346e6b335989cce16678b4192e435d7a9eaa215fcfe9abf681d348e4ab8e20321798ce0381044680c40fd0eae61c599d9149a044624a3a61a308cd46fa33b8af6d208afb3423c1d91148dad5bddd489e2aa313b30c4257c2f9139c90cb24ade28ce317ee5948bbbe38d215f88291e4a54e34211efd44b1061f57806743a1b3396f879dda98c781e10c3ad2c328a1a0cf2db82189882b01db0627ee050e72b7969a600c6c187b2bd30fb389d5e0ae265c3b716e42721740f308ae487e6b1f39a8aecca68f48d5a861b1501014698ed7b33db3beaac7d75beb991fa758cbe444785ae9f79b5005c976d8248138d828a2aa2bd60d0033059eb30ab2305bc4624b82de7e982f0fc71db3d39d0db30911890f741092b923894e5a718d99399e7da3de0622f7c104fb1483535d164fdc1738c19266589527f04628b0e06b39d7c3bb8e2c8ca91e010e88fd227fcf8899013370bf14713a07465b3f6846c9b20bb06b2a99ae3eb404675319d4df3cac8eec40912e1e927621f5473fb56f9ee107639e3fcbf160606440505f41e82bc36629141db29900e4263a18a8b20392f839d726c43fe48e1c9b68ace21b40241635ac3f7c697930e691eeec7c0a3d3dd7fd46092ae2a3c54a897c899a03f18c29e773d8523e6862ce5b1cecd0a273fc1f398f64455883635366dd6908950e282e420a16e46e4826c4761c423c39d6b6ea6d695b5bfb4b4c7b590178b9c9e8021f2ecc5b9d934b9dc32b2ef9f0f08949588e7dc50edb6586ce55e691cfb9102931fab87b3cc44a7d83c44e285cb383177bb6cc719609085e48f5398f30e977411747399370a536c23c2f8460c3aca54992ad0936022054422445210522144112f2e3c9d3e0fc89040aaec77c7a9a79f71b5189e29ce53e520ed4d6ceaf93c914d99c7d27d3e402daf9eef39bdacb8b21425827ad0444a08a4f4101d40f419f0405290258a4a17d46c82e731a18d1f4e289ef37a7068a75866d2661e6b21ca95bd9929de19f41aaaa699ec578085bfa7d9e3580239a932912490ab18124922460634985504b532f75c13f2b087aae0b26986697d4a6f669b6818020e9dc869b0f13c341784ddc252cc504a9a91c1eca464a31b86c4b01b042c3ee198f328386d8828c33f49b43ed4c91b4748f3b91efc98ebf68e7851f91a4f44c0e679888a87c74e75f08e1257a609bf93126f9814a2358193cf422f9bb7d5fc53e494ed97c3857d5e3ff405a32282df0a88cb070dbb5f414816675c4d89c485511fda738943905f136b477d0d4abe0cecce88a429c1e7ca960e989c80b6d82b5cae3f240584d3839f3804e4ffa7d00d7c686ac8ee8649aca7c048904117640cc48494a7200f98dedb6e4a811a7e08e91d4d97910ae4c88e19308bb9d0ffa6f7bf7e71903f34de7eec114295d22571f2f7faabfdf6c03b74f814726f39ce3b7d54d9cfeb66f17307416859d0efb721694188fc9789e1149d6b5200843e2826a20c87783810af19424c9c686d2f37c5d0a1eb37f8616a2c9ab9785e1d09e7e01c98e18f2595118c8d7d9aa2ce2640100e34c1c8574ad442262287b2b0b7f7660a3a9fa185daee706061dc075958d209290116b7102d2bcf5e00b0b4e41d1c2744f3b7480b548ac09d6d532bd2daf697375479e07e423a20f2e98e125bbd279dec63268982815d39ecb35183ddbb0389f54b409505ce3bd50379648ac675a3d27f50d3e94b6c0436129c0164ff4e71a67b1b63da8fcf30ca20a70bd530d3c6029eaf43929ea9b7079aee6c6d6a73180eb07c8d5a7ea689adb4004cfb9398d74b339b493b26aba6318a9cd4c63883c4c7d466327316e9b31bf055f480343e4e8399c75015a776d2b9fb0c9497245fa4a69ce872607928a6dbde7f61082124521ec7209519ece41dbe64d87db57ea5463c98216e736ee939ca7ac40af6126be20b348b113db3e5a36ed4b2c1060fad77a501b8f17f5356dca541cad505d1f2388a50a675f83432eb1cca02c9cce1ea085005c2fe18066eba87ce1c2d2419bc9dac88303ad59ee325862cf6ccd3b3e9ee3c776b1fff1f31754ef7f09dfd9c504f038975c0619ce2fb96c7d2b0cc077f28f382253bcd296694ec03948aaaedeecb44a81250ca029d3ddd3fe1b99fe87c9bfa943e7a4c0553d37ab9235c3a1a7a2448f81a81e39f8541e040915c6ee8643c65913345fd4c3e4cf687a069ca88b844f658fd54d74f046ee060ce43a2841fb737908c21f13b3b321d8600d3c9701778afc0f44a5aa93d1097c9209418047502d3efe6779782e368dfb12f95c9fa56b829f064f3e9290e0027b4438f8e64fe52164152392397dce3b092de678503af798239df0d9660702c6ec75fd206d909439b71902d9b9a62fac56dfb781f381b69b99ee7f8d8c5e89debf6d8318c2958366ca70e933d30ded3b4a9a810ed867b82d11c1917a3fa2f3b9dabe3174ffedf2fb2ffffb0b04a4f4efdf02172448481acb9ba90083d130b138a408feb7c3f903b1aa01f6c20d8d2e89708ac035402fb000168fcf68de54912ad23ed00b5cb6ec976ded4e8f27307d82106d04e0822987ca21806c6d823119bed315df3fe0c619bd38fa36fdfb49c2c1f32f0161c3d13960a4273f2c4c5a4092da517eb36d8379cee5d0e055671f2455e4cfa7bcdff05ed3ccce7b7c9b5159236858cb8b544a1806ce3d94e4869a39693beef103df69fd1171cb12fdf08f5d50f840c6dd401a09e3ca90182572b0328be81b686e06c96ec00baff35ac03b6d5fbceb7713f46fbffc79f9e9efbffcfc3aba5dda17391b4f0e19285308231bfac0afca301b9350170e9925031152ca8a420cc53191921d98fc60b33eb7a961ef579b2eb6a7d4ab93ffc0e1e3e54c8729dc3334850b4f07909a30da8cf508ab732b32cbb5ecfa4e484f455034af45d95691d7c2ceecb1eb1ecdde758f570177a946608134f1101aa9cd095fa5d234dff672154684571a13d51d4a112607a19135068c950ce66a713c21bb7398691ac4e8c7a30e5962a6d3f68dd152aab69d33511f51890c7046d60a8a118cce78adecca36b15190718af82e72cb62ff8099190d593c2e3fc44f5252a523db8f6cc88aa88fa87ee8d8e1523ea3158f6973bf51964560c4f0324e57a47513c9bb3068a28166042259a584d13c525e8e327af17264b80d020fbbd33c003fb70fa00a32e8c86fb952737d3e166105a773044436613e4c18bb34e74423fa674ef363172b759e5bf617463d427bce9de40e4be47ccc15713740f722bc9b682c61367853da0b8b7d0bf24b9a5de1e804b6e2f58e48253a8a481b44e38540042fb3566b77faab75aced1bccce77fb7e1eaec1bca185290d94beafea531f2f6a0b77d569ffaf24e159b2bead1e61522fea37d2ea1ec92264da264672f699b95ee9d8ccaf5ef35fd9d57f809914ffeddba425612e4d008c2702831893c762764fbac04e33e0ecd8b879c1a0418e419899d02082081b9779116b0d0d780ff75d019e0a8ac4a3cc1464b401843c1cf89275af5ba3775f3f9f142655e2d30959eebdfc789bfb0dc67838d8d3f032fc75b10592b62347560f0277823fb31ec651b49ee6cf01cf928697353a64787617a9f7292047b23bb196f767ebcfe7a2c3b3f8234869fe000235667d00afc70378195de24ab7b93200ae8343a53e1e8b49716ced65f4e2650c8cb7e7137c3ed7ffc740b4895c313003a7045fb160790b5437106d25a2ae9a7a3aa493d087076df1d8f77884756906d14573c748460aaa0277220e2fc3b397247ca60020c9c85300683f677de178827f84e509d1310eaf4f87e53d2d781fec7da907527c7ed53e9259ad22d293d14be94abef6651f017045f4585d132b3a3c7b33bc4443da7cbc326d0da3341c0ecda37cbb134c1f206536dacc4c8bfe156260382f38b6c8f96c1f8d4e5cd4324aa25602e5c56c87724b5bccf6a2641bc397f162222d3d90c5689001b33749a641aad6077367519b6092686438fb7f687bb71dc971245bf457f4032e9034e3edb146b307f1207f0a20deb36b6a4f27babaaa4e5577cf6efffa035bcbe4ee223d32fb1ccc460219748aa2484a248d76598bc66cabe148f3049f475d1b644238f19cf30bbc023bf753d2d60f3a517e8626a7cff9ffc2cafdc992fd5d499c86e7833dad1e8c53807829eee2ec69502e7b1a806e5ebe27375f5399e58c11076e620baedc8e5e83a789fe19f39dadedde8effe1f0f6e89f9abd3be8e35d6f43c44a7113343e3aa28d2dd4f2d34130d1f382247536e5f604504d38f9ed88093fbd2f4ca7ed457ea0810ac62b9afd2cb54915e6b4514f2da0ff7c916fa7bc7799ac17c2b072a21e2ba981a023623ecd729211c937d498ea9eeaf82d83637703add6901fddc9faac2917e1c9abe39494767a3161cc369bde83af16b838a21b15a13c2c4411952de6e65007fab4542467ebe4bb8c84b0427e674582b5c4bdc29f1f06d31437d3615a8206075152aff2b38e96b674480d8335004e427964d8a46575ccdeb8d74ca5a535c74491233d35c0f3a7064babe34a3431a9baf1a686918822421bdbc637a444dae76c79cca2db958b648c7654d5b52ce4fa4985672402f7255e0f749b4fc06c8af7345d0b2a0867149e45b40aabe3b57809db3fb7043002f23582f10349ee552cc1d07dde79a4d5b90820be63271e39d43bb97aef29efd3ed7a18a9d3967a71c50b25585fcb98e65ac634d7b27eac9d5e03d654c1e6e2f9923d0eab1c69d4e269d40edc0282fd1eedf8ceeaffcb7f7ee6192bffebb3c8b3fee0d06b8cfb73982282163903688c67b839a8a0191ec7e03971b8092b0723233deb35b98d5e10f55719f47c1aff4b624cd7e8cbcfc8405b6ec3909f1c57bfcff998970c234b3846d8b2cd2e706b8fec84c6f2ae35610585db20c1f5ec6f8a8b4aa7b99f06cf487ae578205b0b16ac0bc2ec822e24dc4a078706ad3551e8f0efd490381ed2135c16cd98265c86a1284648f5265117ad74da7122eb4c7127ae652bc91191db423c011370e89bda64630c01f33889c55d1a0458bb758bf065a6a2880e4d90879104c3e7c6a447ba20a890867dfa429ab877b820c31717f846701217dfcfa81f63bc61c224162cb72efc718870cc4e02b7062c0f76249025d58c594de7f80637b4064d9e7a3b04f7f0231395cd3d2649a700c74fa225253819daf855a8528bfbbd82e309af283b926bf500192ab370d66458ed79f943762b6bdf9082d775e7b35115a137e0ac913d0f708c44fc47b2f0db44145a3ee8a3e87b42abeba8c9dc12d12bc0539010a8980f8393625ef5f3d20deff2cb684356a077b7d190c1ec3802796d072499b4fc0c55f6bd65e7f74fd4bfb17dd71f3f4585336bdf2c753068c982b7549c9a286f12164c8ce6366c9e7c756bb0ea47dae6157e2b568fda5bf840bdb76bca346ca6983ca697f6eb8b66d767c2ed1a3ad4bad01917de63e007b1bb63ea1b5daa91253457320e57e0cc0dbf62c88a566b825b13e5549a79aeaadcab487cc9ee253b04c0ca6f29b4f6032ddf1431d3ec0fe4587492926c8449490f637e4b1c99c703bef3b67efbf99f9f012c7d17534292435da7b639049e1dc9716e0b4b2f1fa9e1444ee68cea462044a1c7f22629c0b1401f47721444ac5f6b1f9d6a004255a31c4284f9ccdb954b57acf01a62840103495bbc6b27ed0cc8309448bc39e6c2e662a5cf5b49ccc49d4feb117a1a0994ab94ade003a658b532d0555411421cd88ab718d387e4b5bf011df423f233529896852ec41901a1d48a10d8a46d87427a8ad6a72b33a8816365402fa1f0efb9ed20b826c30b2910dafe34342694d9851a0112351a560be9ff07652bec017d5420dad915d6e2217bf2bd07a61e69a2269e4a386dcf4660969e90cc496aa923de691905e73431a8d4e9182da3436c1bcfe256e4fca03ed0f6bf499afc91d384e113c278304aa33e1b8794a1cc14771706d27d888ca3b43a76025005439989d96e2e93d2c4d43753628d5cb608433f9799be6249a38a7ff242dc64f4fbe5043bd71347ccd7582636c0094116ee23e7674d406976f019828bfa182b08496e283342c0c2dc7b7a569a685d103b71aea74e549c757c5fe094fa76996d0a3f7e55cf0c445fcfef9d61f23327c4e954fb9ec214eb97c643ff8b32219fea69db5ca64dcd09d3e49f9c06e3d8f31cc7c14953f8421b1fa4632cea001a4ee2f01146f85c040e3ca303c8584b9b4317c6b6f4893e6bfe8c4793a24c6a8338ce609d02fcd248c6a16776ee06bdf5b9488d93b3b0c71e036cad1f88cb8280c0e8eed476ea1bbecfd8d6f2668bee484336360a81f6a34f3f76d2f2e2e467ed48db0be0612048a43cd255b822a94c9a0010e213f332ba367e8a6386a9f7a9ffb7ebec851085109a337f200c95155a4f18126412cd914f6fd039ff85a794d7d9a705c3daf00e4f9ca1038e193b0123ebdade812c78cea7103ed75fa9c79eda53ddb76dc8a5d7ea1c320caf8b3a71a6b1fc3c8256fb3cde6c0b4fae6c6f096e2f95238dfe7919c289bc7e6faf5ea8c0363bb5068e837c9d925ef64fc01c3abd4c969ebdde943e62e3446f6b7df1261d1368cccebaca8bf75848e334d65d3a2000c696e07c32bfc69a5f7eb396fde225b2f4346aac7b1a63b604ef876dc56b2b0c74265bdf2a1b93f0d4655970debf7e63df3908fdf1ebcffff8facb7f7d7216fa8c53f5a12f6bd1dd649ab31cd3c2290c5740749fd0072dca9a76894aaa04e2de93ef14a605024b15003b93425d76d8a7c127bfc3601d635acb8e679efa89e7dfae092716a8ef84d4616171e3460758139da7f39e88d212151104e26ac6e271ed92181844d50d30a1892645a06bbaa9123416c72bdb2075978633738215b3c148424b678382a3f6457235090fcea4c5cddd36360720284701b12e7b0a626278da150135a5af7157d80745d7be4b83adb7ecbd0d82676e6bdf631a784380390343c27221253cb1c6327712aa06a4a9e7e9147e92b3bb1b9db311a8b869675853a11def509a3075bbc2dbcaf69f3de0e49eb640d21a46d774ea18bdccb73fd75f7ffccb4f7ffbf1cf5f3ed3ef7e82457d66b142c4100fd9b5bb1e93883d291d7153112e3d477eecc16dc819b2238d4182336c3bf04860181306dcd2e65c065f9ccd83ed05a1f88253b6ff7dcf07ab79b679cdc9201bd4ab29014f855e0d236b23f49b23ff032a03e6565862beff79c7f32fb13b300e63ea37b61c6605ef90b8420028e16563f71955cb51a1850383d5605803d034c81895ee22546d60a86fd78498b78210025c23e86d03c63176285b260b38dbea02a18324b4429f615b33d64c5b37a8cf9ada59bb91dc4fc1eb1e37b2bd8812cda91d9dc9ee21523624530936c72027e62539a6535ef3bb029dc5ae33c59b3c0dc41a917be31f5dba5d1314ff567c10e9983ff17326f84e92329ff520bda5a8772a7d7ab1d23aeee9b97e7aba026b81f74e6c175eff0b160cb4e14579b41975bec89fda4017b2f6a2719e3f755ea6984f7618a7611f88c34e808e75403e7220989e07a2133d820eff2fbaebb5cfc300d2cb57e595aaf929cefb756f191cffea1bf0fc69189c6b8351c8d2efdf0078d88e7c20ddb1eb9e9eeb271a1ebaeec85bb3dba5f497dfc0e1733095479be7ce7fd2c7ef2ed9bffff58f4fd6ebcf1046ffffd8e3de9d15ca9944de47f53dc2c2c0f294dfc0a7ba27c7818cd0a5665fdc13ac33794914502430f52601ce4de44a0d754d20e3527ac9be695975674c3b880437de2ea0f94c2ed3c2b0a38d25760fb2ea19f4ad0816e59a1baa47ec13e2922fb06c42040a216caaf887a3cfe9fdd1c76fbe953fbefcef2fbf7f7dedad5e3e11fa9ecc1552fc3b60d87387815a7058cd180f46b2d183b843f1198ffc1a1ce8257bda6488b6791a5c296972d4a5777ecaa35e15f988847a918f68d2e10ba6d3d59cdfe3ff308d8472d6c29e0a4f26c83af63a053eec8c6145ea1dbb8a177006f6773be956c009b22452efacab100cd51f601fb6d29f54374f46477e075f4d0243725a00f22ecef280b05de09044f7f295e512d6b82706edc0d580ce7eb0407713c4e1a34399dc5e7dc71ac95cda487d8db6056f4f8012ba44c40d8a4930c569e22f8cebeecba56c09316817befabed0cf042700fa8d4e6a2f3a1b8c31c980d378914dbfd9299b6b2c91831df7140efd9db030e7c2070c20e15b0f85cac40c16f282f30a0c51381e143ae994b5ecb0ee02a87183944d0c18443cc42c47226f9e28b457da2d8d84b900aad94be2c6b1399205fc6968bee99eb0cf17eb0cce3885312076b060c05b870597479809868e61f80d9a99503c783a02e4291ff90ccea44b80a7c1eac9340e7c9da17423af0d021e2508d83a15a015c9ed4b520993921816bc27803dd98156e12b451f42463b2a783b0a914d997e4f382509a3f9e8b45ada9e22bd7c644bc09ea4b75022df7d2334068e7a8c429c787e594666a657089d52e8b75637fb3f223ab22fa46b1218aa8e3402ac99063a3f0912e0124a5666a60162ac473edcba05c633eb5783fdbe6db6393487d453a11a0e118010c1931d2deda0882d4736151a720588cdc1216ae2914e640567ba2db80f40c02af43dab76eccc076e63dd34d315b881c93f121b1929ac744c81a044e1161c535818cfd400b00c5e19448f281997bae3c575921f9e671eae0e2e5f0bf909e6ecbceae1dd880336b0a72a0ed88a71c9504174c79eb0dd28ee11f9768a828b3a5c4d86486a06ca397810dc526ab113f8141e82a77e67d7fde3b520a4f17fbdde738b1dba0eeab21c7d6db0a30e6203725932c302492b49ae71458c37bd5be0fbab2dae87f4a6ce2b3702152971816d7f3cf54a69786da3a94a2bd1244e8be0bbc23f384d1cc3ca60ab9163785372774c84dcda48bb33b7861eab435ceca619fbe464e851bd7b4e0ef97586d7d994fea86497013f4ca20b02c30042710e7d85d0368c473c3cdf14917a85c1df0025a5a76674dffba8e41b823c9f056548a83247e3460f728a070fbdbda577a5b465732f606e0646d5011a2b5477a86a4022a8d0c974a212d0bb36268fb6264ec0a11b66ff1c928848e899605458ce192bd5e0a2452f01020aa7e86e8a44e64e0ba1104287bc0180fbb3f50501cbf42fac616def82d1aa23248100adba7447884bf438a274828df591fc2808f0800f111da1e0aa9c47488b0460c7317b23f1d58bd289be2e325552975a064f54c6b3c71027efe4e0d852a3990a602f1ae0e325048e194a24ff5a06d3320fc779f45b4dddce320a136d75ef0d0712b2f4e6246b9edfee70744fe9774a7cb14d98958c161cf3b79409353d9527fc57197bedc03d23c0b06b85ac0d032607e50c199158883514d3f816623970bd877a7276e69fc1d9442742ea081f361d0d9a31121b83380d7c2f4aa75d0082db13ce752b1e39b1517045022314644a466be7ece182c418a2eda6c3217458b9002709529161ad2044ea04e75600493f01c54b5238320ca12a0cfc4e236128db1b279b07b8ecb072cdf524c8ac43d431bcdf4dc00fe77c929ae517215910bdc75c70394f207c89d4c393e34ce27b9beb4138adb56664ace5a16042d348c93dc387fa632649c284be01f3409e187103f997c63d04340a9b940aefcd8c3d85aaabb628e44e1082622f55008e24ecf8b6cba583ff2916c787ecae7020f4058209e9a00cd22becaf4dc96a56e00710176c0309182634ea94a58bb38f26a254c321bfc1c338de21f531e91c6a1f2503b4e33c8b42690be53e4e4d79a18358007239e83b74b928ccf40d34dd6d834bfb251727cb53b84d8ff8eb11845be7d9f54e41adce0e31401b1b70cf01e9d747433f4157fbb4306093ec7d20463ec22f278a5dae98619484220c5e385d9deb6984541ce1ad41f28435e7fccd45fae2c7c13889f04e42f40ecfed61e99381194b7fade3c0408a9b19b83bf5e713542724c4c102bb1106298e8740907e58f6b0c0249932a15b6a2fcaaa8974d31cc7596d6a453e3857cfa5a15f9db0c45f67bf13a824f671316b8ee03340f4bb927ac2d58457cc180e9ec9c27a6af5870c1ad977b8305ab9ee8c41b4c50712016316210210018bf7e487c2fd11a85158020570430c2597b434447d62f1881362ab1dac893ddf9fd3ef52b27b868ce5097809b04c70e7d9365ca0f20279d374b8260703cb5bbb3a9a085c36ae59f7e4fb3dd9902bcb846824002defe3e726c0a925df1da07adb487a4daccd3211b543ce57c6a76240c1cd2830735584ab9445a8b2e30b304115aa059a94702b409204baae84d09c423386436d00236f782e750b70fe67644f81ecdf16303a4b274715a803c1544d9ace4e2a9e6649c47f9efaa88002e963708992d6810c5a8c7288c96b6e70b20c4379229dd6a99641da8ad5d9a786182c2075509f602799a1f6d7f9ef3afab591f179b877444c9b76f54d731ba548e828b4c8b8b7c874ba2b75bc370d640d9bea245d02e453654486efd074ca1861d130f6a98c6084110a9b340cf208f40bc6a87e2aa2d0b9e8180a47dfa731968e8cd85a4658bc0c9eedd1a11486963a7ae182565edb88435f048c08230820a098496133895479f214b6cff43ce056e6d580e7300e449c56e31cc82b6347de4ca44f19bd7ab394b17e28dc72997cd645d7b815060e0285b530942681477c8c24ac6d95ada451b58d45b6e0740e71b884367a6198fc57c238dfb2ad7165220bc86129611c745bed37cb9ef014cb52421949c2d98e0e601f7b36c27ce0fd57c435ce45c74fa6e5ade8f811c4d85ff42866428c8ec766a8b96e5722e0d95bddb84c5d6cf1854aea02cc75449f5fbabd454524c642fd8589c82d2dda36082d2562072a4b65502c383e7523ce0ea06d41dc0b3ae5b5d9c6281bb9905a65c4822586a6bfc8047005890f6090030669c4e19e70a4e7c22009448323e3e02696a1a3ffa3eb692e1e78dbc08e8096f0e0227c3d891ae26149daec6817978953963af61647e527825831abceb50851bc8bfb6b0996525862210ac6b5389c4964c01ec3500a897ae9fc9000ebef6f1ac8d189fe5dcb53e76e5701a4098e8d64cfa2bb4e814433688ce026a7834714345ae7d3804eca983202ede5303ae27fb7c83ba1f8ca14e20018cc3ac448bbb7551d577b614ceff8828816d9cad837664fa1cde09d6ce3f2e8d93a3a55a39232ae525261d01a87c15fc7c95dfa7655d0c2176c3870871ac3aa1785fa1aba0d6297b631ce43013ed9c7ce28ac3acebec858a7089cb43acdc8383db48eaf9a2425aff2658c039f0209dae855a7659cb0c0f77a0cc6b7cd013ffef9e7afffe713cf881fbe0f6b08d34e0fabb8a915041bbbc9e1a30c9c57dd75528b889dea7799189250e7ed8a98eb94d7be93e9d104e5b873fae220b1a7585138eff7b2b664173f69c81e7373a805dd634534faeece28bced51f676253d8c2d2d7127587b19143c3bb1ccd328dfba1907b833e7fc4795b76b4b6e866f7b24b7b524f0c4e108663bd34efb600f34d87ae9db3513f33aeff082b4c5acefb5228edb46b679b8f379d8f7e3aedb152a8c9474ed3b69616d3cf74c980fc5fb733f08d91f656fd7c828f83dd14d22ac694f08a8db03d157762f71bb96e0046d752789a209f2bbd0e7bbaf69a7820d4d7f94bd5da163b52121046d8d3032afa4f12a7b874921d5fd2867ef57d6b4d4b89b988750d09dc1c4a9ad6527f30d7d518e92b7abed0844f8ed3b7d5c40be8af74fccf4b4c72844d6df9f4adfae0987af4bec5639777bdbf8f7a8d64d3b37eeb1e36007809d476992aa64ec2c718f745b6809debfc9a1c6cb6e3dee50e0d973efe5196749ffacd394df13f924da206ced022d48af7011c2f236f8caee9fd478bbbad2d596cd9dcc5860963f57cfef2dead89ce68af91db59ce7b1d5f89d15e8f7af7f7a1d079bda272b90b4c320c98dbfe75536b29f102c1fdeab4e57b23ad3fb496e27525b450039f88ae802e924f8809527bf581a376ed1e83ccdb2488147f530e99c9fc576c4dde963e3a07e456c0ff10b9ab3c2109631a5e6e63201270941680ac82f0951a40bb477b4d33309c40d3ab1b771e16df4291f11f96220337483b39fc090153db6d5f2c79840b89b12a811c84e70835a628b748d478908b574df9cbb970d24125a677c80bf2a93a80201e6e0d64e7fad4135032131c551058a0041906f52b84b292c24b5883d38b7067d5c12096b451df33f42879d94dc6065cda801072482690f03470666b88c90c106a467632ba19f9ee2d7905d61f56032399d475c0a3d27ce3714022d4cba400aae2301d1e53095b629dba9942f07629e2e38584e665d2d6bdd271e4a93ed6c691ecd51b2e63dc0616b872b37b0b6b15a5f00fd4daadd0be56fc07d5b5ab604206ea4e18b93970b01e8e1637d61dc12381888c02134912cf7cfe3db2bc74f5f7efff1cf3ffdf25f5f5f831ec8fffa04f4404b38bc0813016a2a7a76cca0fc01df8e9ddc2026e81d17a5adf5030837fbd3adb72b8960d54ea6f0c8741bd94ed258c9656d1b224b04645a99e036c91250ec6e99b61388d7e27afe235e3d7ed8e6b2912b0c1e9d0106ba8280ff020e3d21696a7736f1b23cb508f07e847c5ddb065590bd1338c50026c1a17113e332807940363cb81f0ea7e20bdd9cf0a8683303d07e4e2b438f29c085e0b5c2520f5df024ec3aa74c20c75577d6a6616761047f1a2197209b702c4e75468081f4291bf0337d38b8ecc4afc5196f77acaa0c7e28c09bc432f3e756777490238d77c7b4441e7889a530d3340cc7a022e7321f0e349cd5d92a0bf0161c222c1d6f1aa944f89576788103ac2c96b20be0be234bc6292090d06a84916764516e8b1d1ac13101a07cbefb5ce863322e460dc7a6bc401b887776418c5b0908ee41bcc5f1a1ddae0a3dc4252a5c56981ee57c45d0e485fe5e01ee986b7f572c7c2f4a7bbea20c0143d2e3564bbf1f4f426f1e2df8ce4af2f3cf3f7ef9e375444ffaf77fe11c44f535e0ddeb8648b807bcbb3abcbb7e8ccb30a1de3d74cea1deeb1dea5d01f59e0fa877375979b2a4b500ee5d3766f049bce3007c5702be0bd456bd033aceae6752a2c1bf06db61b1f30799f2b14dd39a0aa710d22061986dcdd91d169516586cde887c39580ce3410e119d6992863c076a26e76823b2994d7e8f37412c4dca61e9f4bd2ed03a09c83eba233b2612214244e32e9e823d80de8289946f04020d849d87522746a77c23ee517682ca54466350422c63a24806d8eb240db9542af5036c947e92119b1da80019c011492c701febdb95418710cf4e6f5d9c5a7a0c7b16f74eefce2646e69d01ec93b89b752632ee2e2b0cbdaa2c3f937893cc8ba43eb48b4f234204eea61b29c6ecd9a3cf3a64aa3e0117d0c77dfcdedf233ebfd80fff2e8067e1fddcd3f4fca07720d20c492045139c91fd4d1e54d6896a74c96b82051b7e44c84dc8656b0af063fac6e86d0723c6c79a04b4ec10d915a0db4495c7418c62b71ee85895e1713b7d8f25d1338c215eea824d5e84019f8fb7ffddc5e78f7fbe5e7ae227cc12450f09269b28454ecad2d39635adb52add44b42f59954c585198d6b6865a364b034c32b6454be35f5b356ab1eb9686eb7dcb5cc9c092a7e9f9632d69edad611909d9810063dfec93a8428c5de999ec8989035195e782061732fca6eb526af7eb55d62e153eaf213f7e265d6b6bdbf133d65545e1e79e2b9c5c6a95a5d635d8c126a45563df44573be7d0ff4997b2a6c89896d2e2534f98dfe31a5bdeec4781e37fae4b896b21543e50e3896df79623b4ae5bae6d95d871bd88acb5c9fd46ff894a75e34fc512914b5b72d7b5954ac8b1d097f34bb4837f5f1bcc1daa65f35fb6ec101e6f6d62f2c60a0acba66bcedd7fbec19933c22f49a4dc0b495b5323575795fb4fd6ff0117a9aadb910d984aadcfd319d57122969e9fafe079f385376fd7c6e6caab5bd9ad174ff30b6cd6075b79bbda0a27b91ea372fcf46101765d38c6016ed241f2312c49650dad6c08828af7c183b353c9c7b81c3f8f71810b8f6e47b66d5ab13af7253445b2a64467fed0caf1fbcd9fbd1d4dba97f316b39efaf8cde7dc3b2a76ce163d3a7afcf48ec2e9bb956759929d814819d374e10d4b5979b2de00cd28b5fea28e58d7a4f1f9028766bee08364532f966dbe7e4cd1f9593697b5c5656ad771e56deaca36f7fa5e8b0f0f9f278fdf68d87d50b5e4b5953075609b2ff840031cf2c578c249204b9b07dac4d3f03c089b46596ba92fea0865ad697aaabcb8700c3417c46d2e008141dad30c9a1f0b88c65697a989c795b7a957db3c00f75aa631631bfacb2b68f7a375c72bf9f69ef8fb3fbefef8d31f7ffbf2e35f3e39db6fdf0bdbb4bd4912e0e728481c08ee074f5a5ac25bd8106709719541515217de79bb463b80358577a678907e2cb04350e660ac4f0eabc2022a04a887284ed324e85a97f0a6bd6c0aeff504ce193fc21164914ff9f678fcf9ebef7ffbe3eb2f7ffafbcfafc723c5cf60651f8714a8a99e3f13706bc6faa6a17c609daef96d2af5e1a56eaf2a90b2064da80061754d5f55c052af2a00d04fe86c419335bd6a8017ba5d114d93e1946e2d452447fb802625bff1e2072fde9f454d9f37316a5843d3a75deac5c358fe7615526af259c996e8fc78965dbb3f0aa1a28fa2128f62bcf02817eb510831a6f95e2ed6a9dd40340f0ded3e3a6c82e9532358f2c34bdeaeb07844044ba6d0a0de086ae24ded718f5571d13e50bba862d98b8435a627f3e17eaee4768db5afa1c9223b601762c5b1dcaa30c1cfaab884b5f6b4036f3bdb51712de71abd86c121e6d1d522abd48c9ef6b2f6585fbc1696818d49ea53ed4b46c9bd47a8277bda7b5e61358ed68dbda87d3125dba2bbe3e6ecb7dcae31d8009dd6e06a1fda0eacd762a7be3559cf246320454d58dba1568df97985ae6b4979ffac3e52fadad8f850c1a754e43192a5ae6a32dc6ea7d2608262428de7fb6eb0b7b67be71ec3b38bf5291f43202dafadea3136447ff131385771ffccd935891917bde382d80c1f14c00ea77274f6f9bedb15b4b026e5f1eb0261acbd59fb409e9b19d871ff42115e931b3fc2bc9f2b399aa6c15afa241f3e26630ff6b53c4f67cccbe90e67630dfd45653ea99e3eb5b95abffb55c536a7e74a8fe93dd56433fd452dbeb0bd68ddb1c6cd5de572f7aa495c8e5e8c9bbcea9c2f52af060da005f8143eec68605fae9dcd4b592e00264cbbed5cb8eee5de54dbedaad125d65457117d4b2689958f5c577bcb29dadb03da78de5954165cfbf01b1e3520fac05648d620007ff57b3efce2ed5ab32dd92f7aac694dfd55a779c7ab4e73d57c5519108a5fd4e577bcac2c252c917365ada3bf7365b8e37565c2e50bdefe1514aff89d62468b63858e2b973596e7e314df599daf804702c7a0e91edb717aeef7ba8fdfc7b3efbfa3ae64c5e3e25065cd4dee8fe4cf8d2dc30f474baef97eebd0addb35653fb42a968fedfe5b84ab72aadcd9a9a1890d6b277e6d29141ca8792db686590f2d50622054f663b860178e5cefed6c0a9d63079eb17d4c31768e5af045c956a58cd0816edb287e6ec976cbdcee576bc0b76d6f11e370fc565bb1085d8ddfbd7099f7a04bcc9de317166f7264415546d4b2404557a5fed25e1a7e4133679bd37191eb3a340bd68d942b9bdf6cd92e6f309a3e6d3929a895036663ea644346b795d3c0c4d5ccd8087e2afcbda520f76b007257de8b5ef96fa86a43dfeebfd53fd8e385d6b43effe4fb7ecc1a177b7caa50e839e6c7212e65fc5cfcaa4f6bbf51d3211bbd65bf0bc5ee771d22ab157449d60bfa95c77270c86d5c03bc2d3ef187b6dca5ea7417aa8f5a0f49da4b521e159484d8f9243b1cf77899c73d9492ed1688c5f7bef1c2bd9c4b529a5c743a8a31ffdb878daf7ffdede77ffee9ef5f7ffec42012f377b944e9f660c7819a810809c49a4636253a3ba4239deb6af26f033dacacf2819ced4065802b518ee4dd611c266b867581d809bae8bd2c52a833955536f88390107c8d4b4090849dc85a046a1c3333a91a2250de01b953eeedc880c2f1ba3b035f74b9f7f0768d07585802125262b819e867a26d769ecc6d2d1b933ddfcd2624c77590d3441d36e3d7095858eee53d8d6a3c8ddaddc032f96cdc5bf59c7dbb4a194ba2e52669c8947dc7038c1ed15cd080b679ba2324881e2454774fb5b35332c5b2b1bc02b28f1df434eaf7743a4208d193d184faa22367b7a66f7fe57ffcedf74f5d1f3fc1423883f85d4ca285f78b5667ac4cc4a28609000add23a57513c74e843f1bf1f619b00fd477a4b70a07249a0e11d3134881fc8e0bb53943454672a32d1ab909a060e0554cd86e6d4b8abbc2d1e9226967836f57a7758f754d1bc927004b26506e301e08ee7f782a3ff75afda152eb7bea440a221d973a0e707c4f4206d97a6f22d2df7e077ff9e797bffdfce53520458a9fb0203c8c1f4503b08ceb662978bc665866144e1689a94d4037ad0e03da9794e1fc0d8f49dde23d0b98215c2af876c09205dcc1e8f8c5e48842cc2b38ee040639591ad95102ad9a18200c81a5df49158219c36403620b93f8c2e1b506f4299841803300bf82b6a43efac9c3744fd71efcdd70a3d51096427333a082de4b25b7058aa2bbbd39c7623c68612a500a4617e21ced731bb3117a51e6d22574b2228d38a0d1d180068ff11c0eccad312e449c9d6e403f3a583d07a7712d138af17cef1c42dac638aa17654667916d2e93c2544f99c244e3c403339719232eb617657a1fe1a3c2e4623da3344c8cbb5319070d9fef4d65ba37869107318fee9e531980e37fb79eb99d317fbf4c9a42425e941979f56cb11a500b248e00fa535c9b481e5d90eae87e27e500e81d9c0147475ab29a7fbbcca632f565aa47fb889dc02d68ce4f3af4717b51668a950496cfb94c6ae37738091e6904feddf214819ea0617aae27c7117fc7048421982cb5a99ef1bde4761634d28b7a102d76aa675e375e9489830bdbf7b6b6df3ee16caedf172e88c4883839452c5f24ee2ce917818befe96e25ba43399048322f02802a4020314d7270cf8f80a0114a700de03b3d81b23c02d60a65a4ba20126382370022635d322999e8c141b7003f1659200e102b1b4e1c366136a0a3d1f412db01efc3a4351c89da1cc52d038c8184bf9de92d01e5d7f311667c01d2498215e6025118e2ef85806bf058ba08f654f0da23bd59bfabe72b8138107f8a640b6bdc08190c018040a8f0957bbc87d15d5e0282307102d1352309c483b2907e3074975febe669929eb1f330288183de7d0ec18f79e45772ed56873ff334cee8fdc827f84c04c412d3e382b1793ed8ca12a15ee74d2c91576f868ccdfe9d4580bd40a3799e0ec89fe25d36e6d3bf9d8e9722818edc96029cccb06948708f69f78a4fdd81ce8abb4fa7d1c71ef2e7e8be4509076638259ce73db742e6aec56785300daecbe2f991e477a53fd259e0ef4eb82f7587a524c989ed52829bb92350c6839acfe6d7919a199f914fafabc6cfe6dc8bfb87f59cfded95e6e72f3ffee5f2e72f7ffcf993b3cc7f7cff2c8360c75ad7b2a989d4bd7840bf60cad63bc65758f32e1e7d9257dd49609deae06aba13880101569b34d2fa8cb862845b1ef64120872088ec3c6ce47cce134f4329588d6ce8897c380459ef4ef5ad63b816110b816e767a12bdef740cd8c0816d88e09ce87a129015352a1895813038d122d979a282ce72b8d71126dbd84e6832b1af9ff2b978d80887733eddb3658206e5292f8f41eebd38b8635c88113b46aa6e20fe953cce7fe5d41e2584ac1eb3766e1627e08870b19394728462da0081a7798c6fd043cd70cac6d12c0cb0325b39c0d3891d0b1fb0c5395de3889a908ee3c5b98740d76a630f09703822f9f8c0c730e657b059a62df7a5d5057ea4702e05780142e917f89b5752d8f32c599694d6ba41bd4217c8405e0ac77e152071ecb1a4e552d7bc45066390a7961b22f8145368a06fa513534409c6fec5e5e2718976eecd3bc2cf96929c2f9f5c9b3b2929b4ac6d13c27802e106be0e08a71142298b93ab54d8f280105217e0b249b7c7946e95d503baac81524280e9d437656410906514bb15945ccbd3b2844850787986557782ea2300634ff4aac8436434e6779937b6fda99eefafaaafe5b7fe5d8607428fd95a9e61d2a5ae1b8c1ac0b061c401e24823ca3ccadfae6c3980a9c02152960b90254b86946332db4af64d7da7133f09d914e25dda04ba4155b21a51a0235657a20cb52922a089e242246f599e9e4ade1da89a9d9e1d5093f6da610e2958a01b6c0c1541878dd17f0e6d9b2d977177197c348409cbdde383e341128b285100806d428a806e07a8ec4ed4c467b41d3def897cbe0d64efe0269408c0dc29b05e9c95b838bceddd89574c9e80f104f06315c6ad864d487150af844202334bc5a616f7c88d2ce73d12d5b165404217b0af90447ad8d8f88e7db6006a2eb26f54b64193dae85f9f5d36d13d82832569586567849b84b56c8cde832311b57c40ed6ec99ddcd3c64041c05d77f5984167cee516bd1d2cc4ea44b7820502b08f50da14eb659e49ae1a4299a658b0d44ca2a5144b06f738699ee35dff681f996c33f4490fa8e99cd908210fc40b40fd6924047577ee4f3a6855fbbf83ff1319c5b6db08c802b20e87715fd6110e8120bcdab12e16221809143103275371303a1c53da9ed86fc469dbb1678aafc11c38e776a0cf63d501a9b28411589e47302ca74d6d024bf0a2a31c048cb7c3371d6022bb2422748a4d3a20f621546d3be0b280f35a89b78b58b4636a7f67f5fbfa9f3ffdf1e72fbf7f7284fd8c94e9099fdf463775b888e542ff38fc0eba366df4ec8f0af7f0a6e4b6ae311dbfc10b51637c5c4f79edbddcefbffff6faefbf4b5b73e128d8fdc9be9476af9e3f373e5d8eabf7c6f9cd43e36fd76c933a71eae49236b5a92515c8e1bd75ba84d60eeb54aa5c8955f43429e80fadd6ae64db765d631150bd5c6c8e56c950ba4595e5d2e9e27cfc8c718d05e1142ddb0975556bbbffb469d38875922b42699a2acee2a9f134da0a7a6455b5ba8243d97fda0e8b53524355c7838e9fde8c9c1e4dcc6d4db5dd9b8f6e9572ef5e89aba6781f8764c325f761b27bcb7d102f014ef088d4a865e92b6275a3b5bfc305a9560645d68ae06efc4cbc6aef29610d54e09ed9afd8fbda7bfa00dc71d30dd9c230c7284b8e6b940c4aa05af09a55db9b4ab6f7b169896bccc0b1846daf26bddf79fcf68a3ff8a0b8ab7d5449bd9165cbd6ba52ef7dc8319d7a387c45b7abe68a874ab507a5edf8adc1de250420fbaa34593711a0b1a6fe1c84e157deba8d47d94a595bbe17cf75ed5d7096c9f57915f10bfe54588e3592f6a59258d15e168efc5180df9ddccfc4aa8db6a9c746664fd089e5b506e29bdba4b19907d27d4df820adbe1a64839053480619ec2bcb69cddd831372f5efb973eb7c527fc72d15455c47c4e74af89ec63847fcb4334ccd47c39e6e34a9a2395f41efa75ddaf68b2e47e34e9b85bd83c4e8fbe729fce1e375bb8ac4153146be98f4ba469b72be9894beaa3cd612ff79ac83fef35806716fbe2f7347d5c73268875b45f8845fef093d3aeebffff6eaefbffde97eff53ffbc95e73e7c7b33f8e5cb6f3ffef9cbdf2efff5e75f3f8b91fce11377ecc7869063589b16407aa60ae0b462d351d65861f929a1c29f501a85d70614c310ec80601fb449af6b4a0299155b83ac829f65ed364bd69065434069062a6bb6a92b71955cececd8628142afe5e83f77fb99adb0fd8c1b1cca72f79f88a534e1fa12566dedf4f1d8179fa60b246168afeec8610dba5cca9ae539f408bc0eda103d1b6a79aecaa4f658788e8bcf3b099cf06b5d2edad72767664730b6d5f7a26dd59a9f675092b5d6bc5cb20974fd795f3231b6172847f3c9070cde52d99bf6d46832ce49b1de683a7973e7c4bdcdba7f7a08c0f5fb7401c2a96a9eefe879cd55968b1df69ff35b5dd576a6217fab7d95a673f95ad6a40aa881f6dcb99a191eb43679b2676c35ad22c9beacf0acf18569566c80d7d09f03566c96995451d7fe1cf4b029bdae6c8e3d9b0c96b8a690ecec2ee1d98939ac21ea52c21ae3532d3fc4b0965417ff13f0afadad8308383edb733613462b4e06459e6b8ea1af2d662ce2a13dfb269b941e23c3ac627c8e0ec2954e4c8f73e48e5d495588ed91eb704572a6c0f97cd366a79c5018e7154b3edd03c30c1c17b59e6b93b545d25c487b0ea801b64fc179d30482a77b5a59bbd2aa9cf5f931d5a3b73aa2ae9eeab221c9a018cbfafc52333de960907aae28a73566da27caa9514028e312fcfc56163bb356428ee8f3770054b49ca12f8ccfaf6bebba06139b44d79ee5f41ee30a7e6a496b93d358d98884345f212d5bd257f7c4b2f6c8e79ca38170b2c37e92d710ceefb1ac25923cabebe91bb3f35e89e0294dfd392eca4e88a224a1e9a7b18f9951a10a60caf2bc88d9e93b64a08d662297b754fc279c416b7d5cec6b2ffc594a076e529772fcde24d29dfeb86e87a2d8b1b0378443d6b5e40e24fb900ad82b540a3a22b5382f7083434d12852ecbf6160c4eac9b74c5e3c0e6a234bbe1cc21b206f7e7ee9907cb56db66629d900a27167affd8b76cd525eb45d235d83687cf22831427860ae36d6f1168068ad34a5c732ff0cdce81e543ad3b7e0bd5d0a15450e104bb5ff25a5a026243af04a9c8099e08b676c15c5be1742026c6c5b86a5e8878db60f40892c0c69334f934ea9b0d694cf44d138089f435836d53d70cd9b9ac2d907eb764dd34d63544d2985a390d895ebc2d4356064ebc2d3a98f2025c18c0716171e8e016e8f2fca16041a909b68992b95c151bb610d62a0e405468bb68bed099c887df9d8005267387e4ab9dae8190b83914aca494d863e27adb4cc06727ed3c6d027634d94911c0124cdc7f96701e2dfdd784ab3ffe9fbf7f76dc4e3ffcfb774d3821007f42db46fe561a6a41f6027ad78f58b640488d0525802a81e0e6370d6173380d424d78391845cb871432d5b23616b4fafd99b7ab10552c000ea687c5cf164a405001b56b03ffb6d6559616471040287a2bbde374d509091ba0d6c2713edf1800573b68e80510a463f61b748fd046f617f740215d46b8695a94c76ce873ea5c1aa299ede34336e0e672182118e8033895061601d80e20b62d36d3ce37827355467b05f1c2741ca458f39ae6a79b14a7735b71889a7b16a5ae6d1e078287cda5a15305b5418c09898d646ecc0baeb71ba9df8408e25638aed83f877a6deacedf0f686ff0814189ddf208e4ac6b597a5895e413f678d932f463508e12eb350295b6bb9ab4a2c191b0cd0469865b6303b8325d04dbf648137419ac308bad0de05ed8a8068eb0ed44a1368bce0585a8145b4cd4c7d19c0f530f105223a17c3aa828e01c4ce9b7102bcd8d44e01ceee44e8ba461267bdaf03a480b2ee0c82b6eba76f704a8be8717e1507a7d04cd4be0249dcb038ad7ea1c3f9a74d869cef580191ddff9f05c382612ac5fa07bed237d7524cf9d36b74c4b4e8bf3a1e604bd9e785e71ee3a3a3928d3ce03eaf9745f26827e2490121d7983e3b38c4e07c53166ea9dba39ac1516177201d23181e604756f2c4b0bfcab397699ec27287fb8a9d8bbc99b00ad39011b5a34df714e44bbbfbfbc81810f6f3b390897c71cd33c11c1f75502c4da084fb3834b564877def3461032770312e27e9295a51e84f94e4a0c4e527ada9ddf14f5d3b444b508f0ba3a9681678f408ca7efed8859130b47665ac84a27e8d58bfc88fc62e98d54e5b154f44d305733543b858696cd19cbe0c36bd2dce8c2024e86c7eef52fedd49f6cd19f61cdfddfa1118ef5bee36a54ecb85c05b1e3023b873b6e8d2f77dc1aee3b2e7c9de71db7d4973b2e9c1ce7dd1394f3f38e6b22e6265875e77b200ccc3b2ea6e3b4d308bef297fbf3ab1d17cc34f38e0b44dd79c72dedbee302046ade7161829b765c604cbcd87141b83cefb840ef9c775cb06dcc7b288cdcf38e0bdbfb5c5ae37dc795e23bae84fb8e9bdacb1d37d5fb8e0bcff879c7858d6ffa7ee8ec802feceef4762e81451c7b2eadfed8730120cb3db785fb9e0bec62df73e13ee07b2e28057ccfcdf1b1e7ded36460f23d37a763cfcdfad873733ef6dc2c8f3d972c1fdc73253ff65cc74006235714df74c9adc65dd7c1e1b1ed46b2dd73df4df5d5be2bfad877353cf65d723ccefb28594ee77dd739d2e7f2f9f5be9bcbeb7d97d8d1f3becbdd90fb2e7918e77db7c9b1ef4a38f65dee84b6efc23e8b3c20affbfe0a3739df77c1dccb7ce1eec87d17e3effb2edd20e67d57c363df95fed877353cf65d4d8f7d57f363dfd5fed877b33ef65dee97dc538b3cf6ddd21ffb2e40a5bd0c31d2b8ef126d9bfb6e93c7bedbf4d87719a9c37db79463df2df9b1ef823fd8f75d4c75df77737eecbb3a413872df8553a3efbb3aedcddc7711114c6e207dbdefcedf01f7dd97f93c9af9be4b5a41db77e1cac47d5763baefbb0a89287aeccc18a9c07df7690ffbf6befbebdf7ff9cf1f7ffef5efaf41a2e3bf7dce5beb3b2f29590095b97b8092ade7bb53b53488c590fe0fd7ddb464b5856ac9fa0ea8c3e312438c56ddfb5335c845f5db913ece19e4d687d72e531bab8f776f9078947e34f27675c959c80112983ae46362dae1e40164e33d024dc61b837cf609c5335190c3023c48560c0f8108e84dcfb557e1259184f7070edd5e2dd1ed253929493e9a814abc798f46dfae116e83a9803625633ee2c0090d6aee4eb1ee51e93bb82ef1a8b833df6eb7856f99382d595b9ef875f0c0311bc7dcf8a234a6df5c37b39b0daa1fead024927d83f6f848937412208adeb17b876f5706c1d93e921d4ab62d19b5d7459d9244f6e0836b39f87ac04b2d4b2633455a2a6159d3bbad6ab8d4bde80e773ddede8f0a374404e0215ccaedb1f7a6dcae72406fd68dc1038c346dee3754963b087ada195a8afa915b037ced4df6004865a7d008f08e86d4bbc87115689135acb26bf02ff31439b10b37631da944c49b32c4cbd03f732207b923893e67dfae207389bdad71c3828fe49205bacbca30416cf2bb3a4ad34eb20c139a40df99b902d844a8a4e58dc432e64ffce7b43943c49be55a3d3b3c6abd724e787c0d4ca2193c6b35ba7b7b836fd786a331b82b414887a4c9502cdc8fa4555c8f15a8fa9cef5bf5f656d0124015094a1da4dee9713e307e6115686bdffb41a85377772bb32fa5657f70bb3b572d8f46deae4228ab1811440ceaf348c462c18620f099429aae89e7adddcb8c5b9420165ba240c2afc0468f0b00fe025c5003fc963dd6403f24c89a802fa3a4457384fdaebb803a0af34300d74a9fa8086d50f548564b224e53fc329298a5e2c4a3a814d91214b0d7d68ceae1cf7ccad360dcae09c1e5f0fbdbd2481648977804928afb12a63ed2b923ff3d51d7c3f2b3e338eb6f790c8dea84341dfdb681f230e7da32b35bfe082b5b01774a755159ebfb23ad2feab105f1a3202e62ba06cd0d3056cfd9d5d912ce4fc6629b709e8512036889368b6d986c0b03d9347e9705a4ff365a431d79cd08d04575fd05802d1800e66cebc60ecaef73765ddb6e9fda70de4b20bd09d3b9b28d923cd07bc7d7319d5d47c748bcca2167a451c567f09c73bb3a5472c5660f08dc44e2d74a98e17090b9c3315f767a56fa7e8ffcdcd7bcd9f934b98e1404b1d49ca2724b6eb135cfeb81a15009492c92792765ab578b6c3c6e8b883cf566346afed0bc47b36d2d8fee255db60c7640a497aca49f07b3aa10065881a30f111f51cd5a7464b0122a82922be13a283beb919f09ea8bf9afc9155f79131929c1c116c403cc900ff5cb8bfcb4ca47c112385de47a031ca553b69d63289fbdd9280818f30602441baf428eb7764f421d7bfaec10275fc7d8af99812f4d3cb74fe37ffeb85251c7a1ee5b029b0fd208d54a78c3149818491c7746ef71a6309fab048a233e9fb5d013b7f8c7255b8240c15c4070b02c925603b0c68e29c8ec442a7eb2eab021e5f8e2fbf2d4f0db35615bc189734be12039a1db215dc0cb3d9df614c2fd4b666eee8872c4473fc44fa336b246f06c61d33045ef18f14a7db2a4e81245dbe99f3e0b4c2c926adad29dd1260fef8ecd2467c5bd5b642f6a9c12400bea3e3d123e7a1f32a60b892d0e2980b925e0c6c8b187d380f7408e2ebef36c0e8a62260b28c1f410a187ce10bdbdb491815f7da411c217fd0dc8f2d4836f9f147ffbe9cb5fbefcf63a0cee3f3e81d27e46f14fc4f02f9bca23d815bc3cc1249a8fa25b5848656c0580d85f1caf3f6d200db99b50594cdb52f44352a00595d46c28478cfe440b6a4a11007d58a77521bd3122bce8fece48d1d8d6f611b5bcc5da3fec74976c713ef0f77b7322ddea2a0ea437b2aa7b7e212f17764ba645d6b4793ac3578086757cc019ab46dbc836421ffb080b6d0af79492081f69127f379a538e584b2104ff445ee8653a142b13b58ee797beea47b2d5f16d8af5f848992c33e3f69d08ccaac9634d1a5b722e5311236aef62ce77e8b0739da304f7a28c96b56c2ff2192619e3d847c69ec8689800b484f342c1c102f2ee0ba88b57f952c698d3302a2669472c632c20df7b1a95bd96fd9d79f7ebdfbefeefd710f6f1dfbe0bd4fb6418591fa691b63e1947d657e611708b1e06124568f79389846e07d5261539a62a4d69302cc3ee236d19558d1b97fc38831104124871772567f8681cadce2633ead869ce859803f524d21e27edf98cd709cd6b660bc837eb72f7b94ede8be0305768c9d49ecee8f2f88231be39f0ee73be9b0ac36c080a0747fab93c94a6bd0f02836787913c1e2ae93a1e521e2fe939fb7625335bd43031ac070f5d1a1a5f609fd7d17c21c0108b58a284bb3700771262e2ec803b8637413b53d5a396fa02bcfc08f5563dd8c91bd350f645cfef145dc11e2aaec88bef8c2f473c6524b9879d6b378298a5087383cf3aa8e6c3783a473e56823ce7bb0a3d0548a30d22780525058e48915f7ccf6e2c618aa45b332d3a14e70da045f0aa797a05b7abc27923c5b2f60dd0944c332202c1fd03e6493fb6a1767e7f89f486b3c50c1ac23ad25f73b4d3480fea4ad4a47d2c4f594dc7a86bd0cf4cd91bf55f53e98acee6b153ccb657b131097f9b9649a4777e9ed2b9e0dc6872ee87c90c5da821e1e986a8d3d4b6e9915ea4c4b946048474064e6cc4aa48d0426aea1e571d8fb4869548210d86aab228b12350c3d3ebfdf642ffb72f3ffee5f2d3fff9f1cf5f7ef9af4f42c3da777dd5228130f25adf54c2aa1ff6b1c0db51975ce035199d508c73c34a8a169c22403a55f403994d36ad2c8a4a73e15fabf0034fb8f9d3a4afe24f8328f066d91fc8f622002af222326269b0388adcaee2a1437c3a643d82a5d4a31dd202e003db519ffd460fc58b6960a891d7f52f8cfaaffff8e9f7fffdf3affffd7ad4cb27bbec832993906551db6e938abafcbcf39b4ca5ef0227213b7ccb7e2f6bdb287d7b74a7f827191687f2e0c201e211492ef67be9db9594d329673b4814c8b976a0b0d3f7ce00723078ef4fe56ed7d403de56dd9d394676f03046e93b885397def67b212a1f65696f9aec6da6f6667f218f9b448b1c78257fb4db95f7b7f6667f3fb4adf286ac8ff6dde1ffe7cf5f7ff9cb4fafed4ff21f9fa061eaddfee441d309933a90294f1c34a4235d185d85327127cd27c3c405ac4331e735ef6a27b3917e159f557dc53b2dc1fdc80694357264c2a1fc742a8376ff328ae91b1076974b19d7da14e3729988255fe6ee0cf0b713f005ca54b0155ed06ed86de181a3792d3ba1054cb6dd0859d3064e6c3b27138f262f4508dc00f4823851d76f449d4923e13fadbbe0ea4be4c44b36ea8ca40dc5490d0bc42cbbc8516f78538a6398ec40fe8585b76c003b3ae061e82317c4b12aa8278f7b224866081b6dc8d1794c4164d87964174758016c0c0e1c262af4e3ac8ccd985ab20699469654ebfef8ba4e22c29518a1054a1498c8f3b1f8670731c48753d2daa1e06590413d94bd212198d9be1482dcd03f311d873c7267c14c151368a185d210c3ec7118adcdb92eceea337a64248ad308b3a77a23d6bca50891b712d5e390bbcec24aa2585cf3597fb0c7e0248d9b7df50a254fc50ce88bab896270be33dd5300ab4786068b9e605423d3249169d707a3650eabee824ddfe43addb0a023a8b843682a0c305ea48f9269ec61edbb4a99a85d8b6d7a3a21fdc13dd9f287232db04b54a663b220189d5c230a7d3781559522a6c9d79a893ba30819d01deb4d4bab6c6492ad7652c0c4b46fab2cc9c72eee54c8a421a6fddbabe54f5ffefa2d67f6f86f9fc48e3f0908cd7ad04dd08afeb1059a2571e649e48c42e06877ba553be7c40dfc5aeec21cc1e41f69d4aef87c33ce5d8d985e24a2a3636e7197ad08201312b1d21997e98e798003552b80e835890dc6df88e508047174f7b1df1bf9120bd911ed1915e710b88b3541ab2b69810126b1262b2bc03ac9967b5eafeee3715add6eff82d33f66d01ee98d91bb359dc0ba0587553dce320ce9126004e4dd664085d45d3f52260a2a3dce830995f0c121a1af30fd2e9c09212c4cf12e4f8744844998a6ddbe0193b4ec899e5e2391eb460556e9036e03f8e71719adaef4ed1ab3b748ce9fb174b7c5bf8c6b0a38ccfb90bb13a6e2ff6ef0048611c4ec5076d31f2433eac7cf889eb6417d67195a32fd1558fa5d4887dd267435e6e35e078e40fd4fcf652306c35f00cb65523fc0d2ffc739d28e74868fad1e806a11645f15071572240d757650dcd6112193e541a67bce479d2ff2f1dc17f968db8bfad9fed77dfc8eec87d5ec9f7ffdd3af3f7f22fd7d02527ce65da275246f9e2686796938ba671ce333d3d05254cf4ff43f03d88ea7ad96776a3244e2fd5ea437abd173f11c0950bf3e9e4f4e0f4b0a3e4a6eb0d22b5c06b3eb13903681c54ebcd5e495450e931f4275a383c758728b21300fa090a0af871dad94d5e64f0f1f08317687a9dc363b7e085620a7553c56202ea205703fee811fd7e4486a7624cbc8711c7951e2af6fd67c20b2db2c1359ee5dbc5d5390a5e58dca3b888d353b5c773e007014f859e00045ae9041b4c2a7336ad96316b839e58d9e758c7989ddb1d34c56ad4b8d8070cc0bf71572678335625160d9041b1d3ca13b036f73d78b4ca02f3b0b42aaca8b43ba044f6e6c35552741e058bcb06bb7abc6c3f6261bd3303682c8332dcee0434f4b0559753f72410de1a59313fc07276d6fd8f4699d8ebe4dfac761e98db5c74eaaea4c5cd8d3dc7a6ad7f767d82782c26753ebae3976f5efe6eef20290232a8a41729e0bf85e9927f6bd03a994d045bac7207c0b7133c1f095539970513d486891dc9283383911b14b024993bb08a69dd8de40e582e768765731054c294f079ece79ed1bd302938b9059800ab9c4c88dbeea3b4f196453f71387dd0b2348dd23a5d37278bc11b80a9cb777718934cd9c97e8c3865e7b08086cd754a103304cc3c601b53c1b6149fd50b8dfaef43d2e029743fb3c6b59e507904c2cfc3f2c61890e3f9a833b1200b84e208d62b8696f003d7cdf18b303302b923a47922033cc239af842fabc48e4b050fcf8181dc9a36d361bc94a4a147a387e23b63302c755777aba815b1f8771852be5689701b25598dc2ee075d474f48d8616b48c9624a2e9dbc9fd9c7d1fb9e7ecdb95ef1af1b2a057a02040ac5b67f139d2f6dedf590640a8c77762e977e100baa844c1c1ca4b51aff1e9497c6cc18693e07ccc8d286101c93823ded3b96c9e226a7de626039727c76f4d26a1b44929403ae8393f17c4640c16383ed326e730faddbbeaedfdcec2f2f5c7bffcf4fbe5af7ffff9f54144fee33310ab5a9e78dd2354220db1abe7afe442c0ef64a9bc3008ec024f0d8186ed42e4ccc9b7edc2a90d95c5450bca57c72d16f788bb80844102d8f1050879b6b02c17b8489275e2920e31bc02d8b14178484009a45db582139fe904240f015a4d868c0a92f185bb85830d83d8dc32946b4da18f833835791934291b1bdb46159344b1538c4e99bd0d70dd12a32fc775288cb92b79ca1792740e70e676a8a8733e4c0409337c80810ff155fdeeaa1c75f48c21169d1d5aeab041dc193ccef5a4ec6a8ce1a8828394951ff243f323da504f80c89147e8779cd3db480a50fa322a4b36f05ce438381d1542350eaf080161f95ce986ccb327555b2af6d7b34ad0396f2ee307bfb58c2f2e8f56e886ecd1380db7b04b1c71a56155b34ff8ac2f81f82923be7c34591ff92338b54da73ea1eae972b1ddfbdc0efbe22f6308c60673fc454757c366abd265322551649e0d4f11758f58814d964b1ee339e01172c943f336c8a2977c3626c127aa0230349cb2810c7819f1933738e85cf2b84261f6db23a76c0184d05009242c1d5d7b019f7b99c253705abcc83822804ebe481eda0d758f650fda30ac97298faa6a2ca943dc685a7028b52f6ab0843b5afdf31c685ba243e0697e3662ae9634e68289279ce656db227c0ddab964b6f7d8e6bb5b19ef3619a8d5933720245784d3f517b97daca13b0bcdf8382b3a36cb496a4ed91b848f76d637b505d5d6b10abaa39f952c6d03d27accc3785d488524a715a62d0ca29041794f7967e46ea053f3b870b90b761a1cca329092d3b84c829e19c163e766347a2bc9b082326ed3f2c78732542e8d7b4ecf74043fd542fb9a1da2ce634253d08b7c61f969c74454a7e5f7d353057c5d327c23ddc3ac340cf56f0ae9057027e7f2cde6ada6f1f35184526b4a633df05db703ccb9fd3914122c9c6acf88169df2b70c69e84579bad1a5715fcf205ad3d1b4b0597e45ebc3507e74f50020cd5066dc18a6325b4684c38b7bd318de6c6546fa12a88ae736838fc9fa389030e16c0984e6f3c88e91c52833d45946b77295a97e197d83005bfadd32e317f0aa4c18bf06992875fa2893e469999796ce7dc7580df5d43a3e4bc7386d297d2a93267fa6e959e34e07e0dd3ebca33ad0cd888e1439793a024a1ae5ce5cc78d1c9e68e736d7c9e97fa2ad7951a68e2bd18b32254f4ee95358c2a432cf65a44448b94c2bf02828a52ce3b3cae49ba96d7a56741f8da1fe4cbf9e32b5ac42f61f6ad1590698088494ca9cd1432a8fc224d6fff10b9ee267721e5b2c713cd796306c8859a0f728236e759ec4df5487b881cd56ccd1e36f8a2d081392419bc8a55a1fbfc83e90726d5a27f4f530ed3f759c21801c1dcac4f1598304e4c0c9e732650ca550a963191ddfd1188e4cf7fbb30c38d2762418b1ced210d4eaa732b18dbb82b4b32922c1c0765ea96d8d93739922c3f8482d439b711e3db7a7e6a1cd7017383fab8c7d8f693aa6d7f3aa477ff1219e25f7a1cc74ec945c866e4debc7c82902c88ca131390c4564b0096eb6de9edf83a431507440e84876721dc8db7218ded4258e4428707d3a97491301db40139348ca712e53e2d0e24b9a8e43e53cd313f8d2c3b99e7a9639120e61c3ae56c330fbe6c3e88b3279c259297178e3973c3a6bda5791a77a06229facc30bbde48904683ad45eca28f14033379419d6d56f2b077ffff28f2f2fd5829a3ea1f7b0c97380190b7c6e622efb4c4d85204140849cb2632e6ff03a78ce7d71fba528e89346a88ff28687deae11a81aaa6d0fc846e4263341c3ce673feed8ef377c475ffafbd7df7ebabce662d5f4c36783925639dc366808ee843be1596af67505c113896c3a9d0811c32187f998019e833b71a4f9a9605f281f9a60006e387920c43cc1350a3677f071a9b68d34798ae01d443c0402f46db4ea57e75c8a190fe5b9bbb88da139121ca019403e1d011c664920bf782ebc842a42e0975ed6f6711104f253ab92dd81f952607f2889a98d2e56ccc5089ebf80282ff31becc35376a2439c4e42145c3b5fe4db0bfafe97f0c977d0ff254ede565645d46102e75e890cfa3419367b00687b77a66d9470026e6013785a048c1eed85a6342f195a31a4b7020713e697d89c1a4396228c540e1fa4c4f06b849d0a003351c23d54a6b65c3894c486c0fb5330196558646b58f35bb11d682bb4992156883db6afe3e8fb69b7bc66dab9828cb4986eff921144a020960ad11db9d261205aeb5a79e4f7f6ea4e076c3de5bee139b7ab1d12073397bd86cd26d328905604a80507ba1804c3306e6820ca7b2eb30354951e8ca7a648918f41dab5c2408b1c367664d3ec7756896b245cca18dcab7702aeb30ca172845f0c2cbbee1d3895eff7e09a57f96d38de6dca40b5e1986e422d109fcac4122cdd23644ff957a73cd749c88e0cbb1b19713592377ee40586177a1ebc667d90d38bd14c084f1bda4814c3348d4d6ace88338ca5aafb0c0ce5731e7d6f27f6dfb9cc24486f4a888c327ef0cae0c6796c5e8fe555147e9e493f6cf368600764ccaf7c48d435eff712d8e3192edc107d903f8004864db57f2442aa24ba8c665bf45351777968880d4908b1ebdccf58d1474a0aac06424c1dab22dd65135cf010c7eb8f4a51f8a0374069ed4f4fbb7adc10aec6de50777d43ee870d54dba2879156079ae2401147a491d5f403b2fdddcb128e030db1a088ac8f889e461a6c4c72e4d3229ff2239d27a235828b76057e0e39bd06c6bc470f9ef36f5755f77cab9bd23fbadf23af6804f628ac0c124fa6213ab47aec0a7039f00d42b2f7282fbe3d589313c1ce3f4036b7210e26e2269af410d09a09d7a6b6e2d35bc8e189e92e143d6987fc8d49d8c783739f3265e7cbba21a580c050e7421c3027c2abecadaa7f267d1206a02128f0534858a84fe3f89162db102a41df73073303704f6062cbbc0cae5b75b78bb23cc6ffdb62c2dffff3ebaffff8facb97dfbf7e6260ff44927e908228fca813a2c515b632404c7da4a09693bb3bf2a65d61d568d1262d19f5e03f0a123d3b860d623530d72eda46be4913cc4604c61d744f268ebdfb7d5cb8413d0ceec43a7a63b34473bfe9f894dc09d02a756a113c80318bb1145f6cf680c2ace02ca57bac0d5263db7d869e99ace3ced891319219cedf8aaa4fd9123d26bf9cb36bf48911cff90d16f75aa686233420cb484c4a87fa3a3e36029c1a5bca399f5c769247225304bfe57373d21ee1ef271a76f8fad87187f17600a3753809e82176a9586ff7244ae7405c250c6001e762432068dd89d1657549e639a4ec12035caedaae91ebb6ee2a012b97ec1a3a11887685c501da865db39ff4776df4a052fb4401a02412f0297b90cfae9dccd478420bce00a7bb16880d6d24a67d9a12df39affdfdaf7ffaf9a7bffff6eb2f971fbffefee3275e2ef187cf700f1ef1d7b978fc3543a8e1cdb3348fbdee74a8cb70a77bcf41976c8bab32eeba0b5dc658c50d75a592d6bc25a50e93b1660813cdfa482b763931019439406cc5bc5f10421c8b43bed391bb33173027dde60f5251e09dddf22a385c33a42f6f44d8245e7524364d1ae5b9c86564cc7f8f0848c3bd8354129db43b7f206674634ea2973b4ca992381692c246c0260061916e9211224c6b4524a27d94a917c7142da0b9e4e4910f022b38f125878e2eb61cd263a06f57252ba889b91bd39d24f0f0ca5506599f96afa2e0171ac80e95a145a74c78edced9e0ecb271df676667444fef325347da5a8d572edb8bab202287b9f39c4f624e6da3df87e5bf4b99181209df33e7db73fd4bb1413a7bf061d886f21d66d039df4e139fe4ffab13f69399aadfe5d00ac4d7481f70a2def89bccfc196e6364dfbd3b670bf41c97e0683071d1ee2031c4b5b57768cba9c4d1d7c38433e5563bbcc56032530cdb7c8d481575b4762154cf1a95a6ec778d95b75922c6f0115b7a43b76ed744ca53b5ed9f1e753631d24ee85404e07da44af8d60220593a3fc3111852f2a09f6c0ad0a93ae6facb1638d5329d6ab68525122813f08bf4fdc6d2535c1cad48beb7c2abad40f3a0e844f07714e8af8dff02eed2256cb1ea12d09fb638ba3bc9548309f23582415cfd20d18e18808ec3027c79907ef7216219a6edde0f0cdab7bfc6bffff6d3efbffdfadf3ffdfe5ae397fefdfb9c230a149b8d98e01ae8179a16e9c05c5ca4c91603e9476d2bc771008e2108e1db18b70d9f7845cc36bc61da0211282c17491b30072f29c2630e5e8bb4ea2d11c0b7b6ea219ec60e378d4a8be63ef96d03651ca84034908d17d13225d05f75f7f6dfaec2e8ca266b4567e2215283525789dd625f9722824a8aabfdf0c610a9008834d03c6e80614084e142dc66472c96e48202c10c0140e648ed09909d4fadf8de9bfbed5397d67f513d97d74c5030385f678950bf8064272309e0f8eab9b6d92d954c0076e4ab761e02f5fb52d5d199b14dd932dd90dc14af0eb999e0da32062833df46ad6f9e46c872aee3319f27e3ac71f4e284db7809533e4218808676ce87afcd9c8f01b95d81fd8e58d90d2ef0fc603c3406ee6ca913b7bec2e1b4330d3f5944b8610162ac455dd346a442448fda71e240c506ac2e51b14d0c6fe09f3a5669404607867be2cc183b30e5faa1ff80bf17fcdee356aa23d62abdb0c6b5edd1a1dbf5e0810eab49757ebac7b6982c05cfd7c83c9e2a19ecc274476391662c31cffec9c194b3eb25db76a4894943512738ad73677aa37ed5f375524a4a3b8281867c084512567db34e13154a80c7abb0c5eb12954111d88e99daa89ff05c8655e968c9f77c8923d83ef303506427c49c448a96291fd02fdb8b7cf2572ba4db4691442d8551cbcc8b040b8726e691de9fdede739db76ba225238b6d579d8cd6cdf59447d480833f028d9b08f858aa3cdf5543ed083d247f817ca0ceb75821377520ef57c68822b284200c5470452ed01d3071f1c885ae84a53d4d3515ea452b6f5760f54157a26f98cd8816eb6fb6f42a7ce61433a0e3dc47bf7f3dd2a9bcb304aac472ede937f85d601bd4373ce303cfa05041181ec5e5fc86590ad7f98c8f32c3ed9eb4f1ed4827a002308d8f1ee193e7c50500de561ba1bed8a193fefb7615f717b7fe62da7b7f0561ebd210b7c2feb237ec2fd3d6df264ee36f67da7aa4df4cd08bde5f3ce3e8af3da49cfa6b3b5cdea48a0b57d9d1eabdbf4cb3bfce398ffeb23cfa6835781a9dc8e73e6a60bc5459cb76a403f6e678bc6b47aee138a81d6ec83f775c05bc88dfe5e9626267eb6b79536d90b1ec0b411a3acb0aef41252c3e14c30e91ffa6a902fbc6e7985d4d239266042ad6ab7cc5c065ebcb7435c106a8c06ce43bb17e0d9f05de8f86e3ed6828d69a70ac870ab6671a101ee96ad3d9fa6cbb127115309c9ec6c0d4d10bd607afdd07f22dc70e48d4ead772c2c28cfb8ff46360731c9ccc7d90a77c1ff01c47483f0e6f8ea3b9de5f441f1929b48d2e64fe82dae8ece02fe8453e5e50d0b5bee598d7fa91625be39bb6e6df7b0ef6fa33e1b7f0bde770586c1ee9baf60f93d1ea5b4e7ce1d546ce392cb26f22b40633f64ed6fea6654063f1676a1dd0558e97097e463baa7d242df63041da72deb20c08adbe54e6d4a67c961ff62babbedc7783e3017652b71b74cf0c2965bec6b5ed5975129d123e78961940468f069904b3c351ee7cafb6b5ee797446f529606d3b23b57f4bcafddb4f3ffff45fbf7ff9ebe5b79fbffcf299b4fb09f3c3f311053a18a59a102c16612d9b545d10125e468909a747057a1a506ba5018b7f8f50f06a04f803558f445b5be4b1a809766a3b399e3f51293b48404eb942d3441d8973246650828c320a14497954c420000ba416a019d81d8b29af6dbb64075fa8cba5dcf1565238ec4d3b0d8b02814041b72608c951103008b0289e06f05f7a5dafcf92db772379ff27c9b1849a55009848b2f7561b78c60af461a373586c0b408e11ed761a5c7af2e884fb6987ce1d31a2a7fc3654bd11ccad8d7ece298cfa3813b58722a397c758644f5373a3c691668172126061086964a7e74eb0204e75c4350c7eaddaf608f4e498c7a7c608b1af0e1eb75bbf6fbda77ee0ec12bb8f99938d9f5a08b5d5e47d0a9dce08943e462a984832a2d597d1c7f0fe2d84ff0f4bcf2f3ffef4cbdf2efffdd3d73ffdfa5a55f7ef9f607e3de0d600627c414c3274ba9702d8374422d5b028b47599d406541f5471b11de04eae458f098678220d20aaf920ec53e8bc003f95149c1bdddf2fc8093d050cc1cdd35cfe0349a6c459435cf2d8f8aa002e4266d04e801aefc5ed1a7b6280c6066e0b24970bc347197501cd871d8a367c59048cab0cb68c4b0d4b8a76444003edc3ec7171e706abda525b02308daf4cc080257228d3a921ba166982cd8392d883ed810ca4404506f26fccc9633c0b907de8ea4514d6b8c1e77d010d8fe4e6a14dd1d3f620dd981660f724204ce010768cc3b73fa23ffff4d79fbefef189a226fd5bfa9eae378506fb568dba215d90867f406a05eb36d8a0535e6bccc76f78d2b55c1fd755564dfd71fff1fba8fbf86d6b7c228d39ee97a7baa56df7e70247a13dca3fda79bbe648d62bab18699bc651e8705e614eb03669cd684b0d9b6d362d9745f31a356107b2a734b6212bfe5eeceeb4c3613882cdbfe5f67111b47cbb67db571eb97f5b5d9702470e7bf0d31a712976ae7c918ba35ed4f49c9bd91a1044f4ee4f50b079e49a1ed79bdd29437da9bec8c577f7a26cc688bc7a760e6b6af9f9cad10a9d6a3aee91a9367b06dfe6d89e98f11e51c2ce26ad3cea0981e3ef4f34c10223edd763f3f2457190f0f406ea6daf336af13afc9ee3b7494b2aa4c8add62b7b9bedb4cffa7bccfef1046f1c7e6ea53dff5cee8f49fc4c03bcaa4fa3b029861217ce8ff23a60933f5d28c71d698445eef8922f11bd7ede837cc8c47ab734dc8ea9939f2583be969c97be1605bd89765d4c928b4fee4a4bcd9cc0783f5b169f3a18d9c809d238270ba6101c6172dd30ae24f16dc56428d52365fb798d5b209d61b3dd80a315db3021fccd4e17b6eecbc374079026d5378348b4332c2c41ceafe1076b4605e53aff066285a4c8f2b63c3f4fc30d6c93892aa0f3676d4b3f9e394d73305ed6043a0f5b16a314bc62a1f217c111e8a05ab9f07c67f62b850baa9d3cf18185841a13d8f0f9967de21fbfa1f17dfa0d2bcdf11bad09784500e5b509c5b1b29dc5fb0e6efe27ee78a21a29971bd5b6d9527b9ef42416e02b562ca15e5a229fd1f0013ddf81d6d91652d012fbae98c694da98662d52b90568e4526cbbe1f0fc98363b2c0ccf88617823b6b40f7d0b8f457fbc12b63957389aa73a0b9463dcf07c83ea9c061a7df39a165c1519164204e4e13df03d99d8843ad4feb625f5b0683ede29bf46cd15f5fbef4db9203d2f0547c9dabcd68249a76d5a342ade025c9fed7b4985cfca91ba38ebd7d3de7abbc6d620aae40a344218618e151b9fb94fa6744c70fede9286c7b5cc0ffb7eeff1dbebbdffae85cdb77b7b3ed7cbdfdbfdb97e1d6dc27da749f968357949209064ddeee92a2ea4b8f0d2c7af0d6e258d865efb564d104e5a605fab39f95f82fae0edc7f1edfb15d0fa8c6b86df93ebb8ce08bb25d3961ed56babe3b709838a2a34aae7efd8c46eceade94ab561addb8b2b98d5028be1d0ea1ebdd56d1014fcca5d40ba97d46185255d53e64ad37219ae903a39ae399efa57eb2a42769661b45a59459eeb9fcba431c4c80e18fcce28de6dc7cfc82d1800abe804d76f1737f87303c361aef7abd9afdabd7aff899a9f3c9def22e4bd80afb4477508e2a8f121dcf0f77634e67efd683ac7eff19bf57f8c0fbe5da1618cf9e8ecf1d33b6be3854d9cdd39e470efec218a1f5783cf3976f6f8f96967ef05bcb3477547678ea71d9d3d1a73bf7e345d87df9f77b65394393aeb3f8fceb669227ac738dbeedd2ef2fc05243f1c1cdd7e9c153ee9f651e0e8b65777ef963fedde6d36eb71fde884bfe3fbef4fbb2db380ce01982ff850d89a74de19bcb326e00c0b020705b014a79df7b8234c2211076abef0e990bd28ea83373ff618a6b9a5c7807ae71e25e7e1d14faf7c3ac84aa1d016d54d7af04f22713913ee7499320e0c81a76a79618377494d47b9e8929eaddef12ef595ed9ecec91f737c49dd27e0b1cf439ad89affcc30062c58d31bd9c3351d3f2344b7bc1d3fa3700583d49c17db839f556d2e9ed6052fa091d3db1661d409977ad585e2a52f5bd57f6e3caed5fbd5ce799bd40f7ac083810e217841b6e53822fa7d5c1fce820e0fa4f2fac2c293ea69f9573fd89e3e697f7a9eaaf1769c7bc7099b5fb4a3bdbe4022c57a162716f236a6b91dd407e4b91d541fc85c3f8f213ab7484c7e90f8e20e9d2ef04d2220b99d8ec3c2aafa28bce640328ff3f2105ca29dcf4c25ddae2a3c26a7c243c2f15bd87788da83885ca8bbb103145acedf9b1cc73cbf6e82c220a4e7c475de855a91e1686052e9da0a63644c464c36db813b8a1313f73a1bc5b886eef9dd0ecfa77790d29aa591c4a682ce0c0a068d87482a7e16f3ae273f8b9d87e251e3b7f57bbffff4f3cf9f68875bfc3e2630a9e6722166d581dc1d407a25257c24ddc272811f0540ad242dd9a9e67ada14f8e277c06970b8685b927e4871aa39d4c572a09aeb4e3567023318b0283bf785e4f3e099535249c325b1be0118b582b3a493911b41fc03a96b23f667f920a1267e0bdcaf2b5ce3e18a45cf7d4bbec5c22375f34b6c8478641235d961ed1fb4974aebcec666c752a4e969461ae4a939522653f558e62db5002d5c7a717f02e2a33de365beb5c33bca1cf6140b93f727b5e03d455b7030a87e8d3d605f3d8dbea2deef7c6e5f7ffbf29ffff8fac7afbfbf562897cf14ca7730cb08523c20bfd7bef9af6ca727214c3e235f73a477998a1ebfe92f56daa3f8f19b95bdc7d4d7d8c981af9a1ff7f3f7bb3fac055bd79753436c298aab94c4c29211ef18e5fe1b118d1a8adffef8e91db9ff46db18ba1825b2ed49967bf5fc8d237deee9713de755e2d1b7f6f87dd48fdff5fef8e3f6a375e7d6dfae3985b502e0b96bde34b7353459d2dad4d7d0aab69437a1724d2a88a572d01df1ec3d2d12d6583b58526bc0548db13daf96a1ad6a0394d77a5698a6b88656175d53c27c6d09216ca1c876c96b12844ea47412e8625bbbf0782515a8c62911da5de56943f901b1d9e5c9e05f97175904fd0db46e37dd5d676b3f8be80f764655ea0010971f10935f57c90ec054ac4c58a57107b4bf2ca5b5af591278b6e57963da019d442ef0a4d64edbf89e8ca7697991c57666b5117797ea9eb6dc7585b5b2b5b5695e724bf6729f87388435a5b49cdef2d39671054355e1479ea4839c527247905ded85bcb042485c31214c754d55f93bd40d5f59e5cf85e44c76a789917d05e2b1551cf3663fa1654d6bc96db1fb14f80447a5bdf19733db465cb4b65b93524bbcb531c4fb6872ecfdc39b7ebb22b225bbf355d70d64e5c4bd8ba2f046d052095b5d1b10cc42ad64658fe5079314a2d24a697f39e67cdd8b485d736a3f0027262efec731a3b5aeb191122dd50cc69c4c0cdad20538c26af2041472acf1a999b76b96be96223c0997b8e558d7520973157a5e14a1013cd195d09ecdc53daead3ccf2930a2c4b689490972d660c4b5a40230de9a4e5b4ecbabe6fc5c6f32a1edac6bca6b4bf2110105167124acfa7ca0b2b7d1145e733d3c5f80eb89561b93930dc33a4934b69865a97d2d2d0138abe4d3936dfbd16518a4db151148c917e6676bc587e5480dcff68b286bb60d23b535e8b3d1023ea5d2965ed614eaf3054df6862dbf3cb9ade150d51be2bf24014888e0fb6d4df9e991f03f0f6c5dae7db39f8588dc3d54f25376380f573b07695a736cf85d5a46a456adcff2b15dc9a52fec09eaa99a974f07e176850b106c9aafc6e77448dbac6c28f4a7952ccfc3509a2de754ba446e952234ebc622cf75c4b2e67c1242ac4c84d1bab44e67ddd3d9d00e746cbb34900ad4ee6e216040286bb54dd996aefb189dce0c76a5cb666d4c83ce34ac1d7b705f433e9d2634da1eb0f8e83c5f998730db011a0cc3af8650e5e97b416c53b6014a6d8dcfce1b005628b1e253d2e7b1b5bd38b5367d63ef02cc09655dedf973b52b31b2453926b09d46c9f81e9ac29610a0e36c6b0de5bedb1fdf159a92fd77ec8b355a6dbbb7cfa996e5d30edfae5adb1ac487a93fbf785c494ea9579fe790da9126122320d634745d527ff11969c86bc697ad6b749284f2ff32f7363bb6e3c8d5e8fc7b0abdc096c908fe0286019bf6c51e284709ec7955d771fb5c779f53a81f773b9ffe22d60aeddca2f2a7eee0835d833a4c4a5ba2288a0c46ac588becef920e73140e7436e87155870c403173cf46924df476c95a395edafc06b4ec23e9f11a68ba808e656d7a78a85a5758133692e2f1453f74514bf37079ecb48f8de7dffffae35f7ef95094aabe937bf70025fc546ce9ffa64810e52d0954ef603e05b807992902dec5b6a87846aad281dd9706061514a1667b93d0d77e8d9a91c7149d4fa12f11434798330b2ea47813f222882bf88311e5cc1343c1e98874f9326205754013aaa381c6ddcd29c22a3133aaebfe927642b338258566b94a82787f9ab57dec2c49fcedaefdaadc4add909f0a5e0e81cbb2b8469eb3dad7b8974a5dcbcd9e2e0faf21d5127f13c39d5a1fe52be81a6e51ea20714344c28750e1186c0a3d3aff420126a42cd47939ab99472aac7652339741e29118a8a0a0a7b375a50777ae07c3409c41d0c536a41afb547de2165309f32950d189f38936d2fec027f5ceb7f44ec6b94ab8d3a791ed5ba047505632d73572581089823cc94b49035d6c55059945696d2cc1e72012d6728d48c6866a1d18b1817385db840453c1ceec363ea952065703b18f27b56e484c447ba1cc65d4532231f416b4efbadddc024e8220818983b3de458c819f7c240b72bb02c536622ff4df044e0aea383dbb76bb814bfa2a0d0a61ad935b9a78486c21d3bd2c00b1433489e3132996f61b8a4ee21a2c5f214b796b0da1dbb83083865cd4c9e92fe292c5ae55679f0a6968c0af06ad3d6981799b09a2c5a045635ca72cd9094817fba4a1322bcb25569bc9a20058d35cd5e122d4bcb88f8d8f47e0dfbefef6a7ff787b04fedb3bc4238fb339bd6e5b0cdc9fdc04443a91f2b1b156285a72c05d55e296940b60bb6115404e9df699962596b8f64dcdd0cd57a8e622490720fc9eafb5acfd06a6ce2b7e7bc3f92f4ff603b175adc91aafd283bdc8deafaa48f14a0f0763533f28f20926fb6f5f7ffbedcb87eb5ef8dc55f93fbbee656a4123392a53283841a933bafe5cdecbb6a2f839b13006a360eca76a078a832c03a8ed9028e94b49549a2cb69ec0695aed0e486fab3614ad047da8bcb8f030d6ae40dc3f40a7d1ee1d15a057573404ac95c416dd95436440c792f94c91099df24a5361b3da40fa6704458b1958c804aba4e869487e2ca365a7f4a944af8ae0225c604456fd67bb52aa8bff43ff49e55258d63e58444243a30a0c64b10aa5040758910099e65e8764c8bb0c139019d083641f77c2cb6d525a486ca5c25538a10e6013cca8111a6e092bac82b655b0c4d1f3c30fbf2c5a33d623d292c6852c5c4aed5ab459492cd222b05089ee00e02288b0614a3f48b7905eb1531f28d66d4122f9c3b8fa239fd0dbdf4e7f27d9fa81de28f75599f52e2d8d0479179a0d55cb72ffbbd5d5aca5d7bf652ddaefe723653476ead3daa41933fe86d297d6fdef6163b2b47c3f9eca9a725d22980734da3d46c398d040e7515973b1a5646d0d40434dfec7a869553415876cb8e6acbc2209af4a4422781564c9a6260b08cb1f434635accdf63121af3d34c80206aaefa52ec3b1a1b64daf614d9da2acad405c4665ff0b22fd29de0ff6621b1cfa880a45baba323d37a538cc1286e257672409fb1020d093c4fb9f59d62405e94c55f2d0b456e6497481d72c048ef490f3629b6161aa6432cbadaf3dd3549164b6b2dd16af34c5b8ffa9102c78d85b8ffd40aa2bd6e3022f09b069478c5b5eab6628c8d71c075cc2f820422d982382ed4e6bb6ed8f2bfc839e2aa5811ce87a849535f49d99af391ca28cad30e2763ed2d3dadb236af67c8e66595b141fd88a605c8f0d0334e9216ac823dc42a6763e42ff961ebaa0557ae26dc886630cb2acb5c591725adbc1e5a695fb5fdb4ce672841d863586b8a46e466e3ab440d62871a4d6d71ecae13e75ad392fa9eaaa07271bdf5fa30bb13eba3bc001d51352344b3bf8ebb4c05996baaef100aed224abad7748a4eca40ac88f7d31d8eac36fa4af351538c49b3295428ed04bcc3ae1f04e31017d3cd5fdf7cfdff51dd2d77f79c74850bd93ff82d16789a10e0a9ad8775981e5957b19bb422b8f3d1d1f99a9d4f40c487d66b974ec2551eebb303210b80be5fb52a07f2c3ab507583e6ce9e0a650d632b083d2c4802a94800393b9817e162c98305200ad43841552a309754800599c93c89fec4968a680f204b42250f7849623d63b96c18b3358a6aebac23c8edc509056b671af5a3c3bdf31253084752fd78e9e92572ed672126a8a65b9b7eaa3b7fbfb8fefac6229bc13387cb000b1789b0da860e382bc38acc00421da009d8e78139881a454866a936d9f18a6be26c718543704993b5490a98da41ab38bed2ab007795d3bbfb193f71610355a966c768c2d0360eeeb882752cc13a941b5ad0986b2dea0380b2e12f23c47d2dc656af007970e97abe4368000f063a0a56450f05e6e3733bbfae0df42214284cf813a5d247b09dbba08bc4df2636c036239f732d43b6d485eadd983d61c3c286cab52cf58124bd8d455af752e119c0d4c381cf91923b32c51e31b9b5be715de3bf0c3e9e0f7affff9f5b77746cc7b8c720f69b7ca2cc35b499b446ce9b7b0947403d5ea06366e515de5665ff1442c28504a0d6bdd348325603ee50691ffe38fc8ba28534ee6a60926679df669dbbd852f4f082b2ddaa9a3af240fdfe0235bb4abed03253aa8a16f0f677fdc7fdfbefef2e5cf5f7ffded97ff7ea717dff138bea61002490351eb7ed5966e926c68a1f686da97fd9492798259f6fb0925ef8701eee509a1d9f61227a0f6e5293a6b725ae3b5ad7980a3a193d88484aaf6cdacc851d46bcc0554b0e06acad06155bac21eaef324a53b7d49be02c93cb4857b129eb6136b0054de149c0260f403738652291c34321d1ebde87779b8fe9380efadf6355db5546c1a2a696015e4dc7814709291d4e92a25ac798043d79d782061687979bdd413f4a463f1ae4a5157f6b0236884ab85eebb5d311b11c2730279fbb68455aeb6031d116c013c1441238e258797f017048c13aeaf51fc9ea8dbdf2044f6790212f3fd14abbd9f528b75819dd2e2aafb2956fbf28418dbc2e1116c685c51c301f3f28424f724768b0475e70c770e78b2f29c659c91405ce67758fa9aafa243ac27788e6dc87891fdfade10ec5b6eb15aaf06b840e260721293946c5ddf657c8fd01d9be4052a8e3ccbafc7fccdd76bef031f57f6f29ed7e9bf14c8769fefa04d315e41d29367257990c5312bb4a5c373f84765352f4fd86fe6355ee16b84bc2ba8ca98c79a17e6c02a5c6ded0a9e47e7c65cdb42d5622bed97f16ee38b0d7ca9fe0651b7bf601bb1c1472b0f73bcf2ed63f6089c39f6f76f75f7133039044e0cfb0950c8dfef1fc5ee1ee085e2dda3dc0f6260060ecafdb0d5d909f9fe614381161f353e799f38da023416260c10bbc3dfd2ef930a28cd310d3c5cebe3d9f7b71f7efef9a77766de7792b75f49d212d4616d928f43e9f6b09715e76f01bc30c44283c08fcb83385f969977bac4b6bb310a82bfbbc186e4b7c39a1471b54bea663a68838a675da8ae7d2979a654810be65274ad03c9fa17bb209db79793da1ae876d2da06f4f420554c0f38eccab0cc5c1e9b3595f2b971c40a90086c6f4514e5c8ef113bbe289b6f37210158c3fc8d45d626c4890f4401974322ba164adfc9d02266f22dfc37c1aaa7005ec6d1eae529c1bfce622109e2597ae26c4edad7b6818cf0589f2679232c2293c05ee206638e8031f76e060b224fafb6b95d2761386db3f66d4218c4b6c6b3c05f1bb6513e728ea693b2653a09ae24d82e102c3cd6c7892a61d839d3f5633e5dffa4f24a21c6984ebf15902687932ce2c41735d289c82281642285537b42b57b853abf055bd84fa25d563f536f20723d9d334be8e1578773741ec1b60d610001646a4a124ab0dd295432d1508143988d23fda35d9ac4621937ae0b0966ec0682a06785194437b7fb216c8b816da3f80685dcd52414d74c02496c176c311b025b470b233f33bd92828e4d03a8be3ab4c7035ca67d2732140cbf8673cedd2988d7cdf5dd3ff9796880820eaafff6899b4107fe6db398bcc4602d004d9a710698bc3ca40cce1deced9162814fd8b65fd0d14c20242315566a70ec228a066e07a1f48ff37281ba6191840f09d4aa6d65122ec52f0a3e1345fc0b54b4809c4162031bbde2e5b43cbcf797a7c28953b704724c688d8f9449d75f31b1144c8bdcc1369f1653505f0504a3a0b83ebbbafeecce04a7048892c9e1f816d1b3f01172551acaa09d20c0a9eadbab8e0c980ad73d946341da267069243845ed8cfb7aa5ea1c831144ccfb7a458c33d6ab2d21ca7dc193662ad2cfba034b3e31e3d8ea757c828c4dec05f4deb9b49362755c0a56fa0bf5834e3a6b33d54e9113717499beebc27df3fcb997534cdc5ee9c77bbb5f7f7c1b84ddeae7f4ab60df87fb1b25382c8a12e59e51ae4cf6dc323d231a474ee07f515b3033254fe07cc8d8dda23c329850581b9cc0bc433fa99389f3f11947c617c69055c6d8893333ffbd7e525cbdc53ac9ad5fa5671b8362574c337003cbf1bc61c704a5a7eaab76b9f534b4cb023826d81269dc86b097afa987917ade8f808ab5df0be9661624ff00a9aa9d7a494bea61b9a42b2e3478e90b205e3b6db62c0946ed5aae68de9086d912244a33513f12b722768f85e56bb48e471cd0e1e5d872127157964a5a79f08f091152d8ed08ffedf2ace2b33a4e4571f00aae1e81ed36697c702fa077da88601b4619438754c484897546f20e2f5f7286cf486d578d254477196a2b23cf469df1517d078789a5022d62654c62d5eb13bfac92f6920d9ce704879c7b40f14b947d77e9f54a98f36cb5786bb021909ee071ebfc7b2736a2948aec2499e56ac33583b94f06ca8809e75d4cd5e5dac046079157b2ea577c50c9e3cafce4c4dec9860fd126e6e19f670737927fc0f9a1fc710cf1f75f7ffdfddbb71fde862aa4f0ce94f11a448c007741386f43e638488ef2153ec21133bd99bbdf127b5617b281ef1391f6e494ba694fbee0f1d246245553bdef86216ac6cc1026c2c8d8cb11b54408e6e5a15d2f4f89a7c07d90329d3650da98d133912b375153694bc088b4b825bc11b33cc045072a70b253b40583079a7fc71542d6b25119cae63148c428d21e86196393915217dfd51597492f8b14b0e099bd7469ab6c0abf91281802d14de43ad505db3c8ca04b5cf3a6c556265b0f49007d511062cff4a017805d145ffa85fa10a14c16f5c51a0d7afba302d725d799cccd96dbe339123049cda2e91799d4bfe03d9bee2bc0b2e5599d0cf587fb42faa3ece253383e68b65e84dcb870f24378025f22dbb5c5fd295cb7c69e340d521b5b6f548fea5c22f94a6ddbba962d424a8cbd1b0be23171ad0351e3253ba1970db059ce4330c5e89a3690cce38d46313372d2dd8b04facd3bc908532c4d24950b64f5f3246cb6e50c4ffcaa5bb3272e32dda3d917091062cd8456804fadcf2277d8dcb7b0b60d426031a4511caabd50fd080627f8cf0103d8e81d4a6bdf7271fae93832fc9b199e7d7ea105a602822179786156a86310aecdeabe807401cfbd615dda32f9e6daa04019a86b09c8c0c2061d15dbe058e392cdcc1b167780a289ab110869552e6542e049b651b9c15da04137e7cd6f6b1a3d00b346ed114a2105484b84b6d1cf9fa16b1aba8715ed9d22bfce75c928bcc2eec3c6dd66140e0b047d37c82783f8240fcaa36aaaee312c0c6f631e64fe62c5a0643665d962859f056e64eb252159e7421c9d8209d479926bb0391b3a75d660813881dafc3a04a01f5b17e981a68033495828a2d136aaead8bf8e8c59db80bec37e6e9b553b945ddc4fb2c45530cba8b74431d6d13ea8114c9b4428111066a88875d9d660b6df02f441109745bf2031f8784eae505f3b8bf70a345a4ef2faf47e9493a878823ed8c9b7c177c9be809909ae2386c823642894de0fa851922ad5d60bc500ca5b226f7fa86b19f06060b4652c35dcac557022b9cc3a16ab066f7ddf122d17dbae8ea42791fb4212eaf9fd90a63ea5d98b629f4adab2eb7bb5b56dd8bc4ee788b53343951081ea9469fd60b38919c93ed3ba9129483640751a37a5744562ab0b3d03f2b2efe58c651b65d807d064c484d2701712f52b5a586c06de1e167c6693eb7e191aa9d8f56a56efecb2c8eb97fb5cfbfd1414f1cb67aa735d1078c7c9567ce6f52abd7ff7db9065fc7e4f943bbea214161167fcaf283e2339888759f4fb557ca432839fc527f7a9fe99779149fb3c2e0f2d79798a3ddb1b19fc97ea85706010dfd0e1000e902fa6be640838af911c958927c8cea883ab2958fd31a344bfca5e863e949781d38b012bf03e47db31d2bd30df28e137154cc0fc7da122e8a06d2b545244cb89cfc7b3bc3cb944b294b197181ec90e3964b23d87651f11fca112897a8c482750661732c960b873992a149449e555bc0c98819729fc898712f43359ef957702bc0fb0423320a8221d09f4c3ea0326426a53ec42cf4281547fa29727b327fce1bc8487d3f2fa70d844fbc325e00cede1b011f7874bf5f5e140b1eb0f47596eefa2f8fa705e4673210de40f4797151f2e95d7874b797f388a33f2e1b4b96c455bf6b6335492f78703b7d761b44678c0f494cc614b62c4866c8a1ca4e41bb5a97e0e9ddda414807f66796a62d367957748a011f97dae4732c3946ca2dca48663ade0eae7fa88d48d6c56cbf968e402242711b2d476afdbb9fe0a9cec63fd903e8ba8c5ccfc8fd9ed6db30301b2534bc06c20edd4c2561c623fb5905bfd3a8b7a23f10601f3598c0d50937ada87d1c550fb294ec4f6c8dcfe82c9aae539744f184a9b1740eb310a604cae8773cb33140f0a2978e132388bb7cded1c6728946d268e7d0888e674ce6c8a60ae9f9e74e26f1f929ba3c8e574fdd9e738436ea09e393deff95966168a98e77125273e6cebf9f95eb3072fceb2795701e308e38f73768a6be894d9d4934465db59bc81d14f24b44ee707e7639e8d9ce241f5a3c22d952f20a23b5d870e8dd38ce2eccee7f6c03cc8b33f5740b6fd86a21092e8ac8ffab18f243b1210fcd8c7df447595dff256fdfc1d8fbd7e7e334211f376ea3b88b6da2679fa6e4276dffcd4a7817ceca7be0bbb3ccf7c9db0fbf2a7fb46d78aee6fd6cbfccebc7e0ebe4a24d0a7cffd1318cb6e73ff60d314d3acc3005a47bc9bb99eaa516d0686d406f75875ad98291f8b8aa2b60f3f5ead30f631cf009450c8d33548bf79ba0272b54e197c8564e8f5d412c4ebc269862b015709c75ab0e9581f1d47ba5b35e1d472ece8cd789be7583867e234abc30cc974da1ccfa7e9716e4f1297719afa069266b1cf70199761edf3a8357349cfef63d0f773fa8a3c91c6d6b869b55275699ba97f08b32cf3cc11111f3bcf34e48b29d3bc4f09621b9b71be2b4dc2875ac65ee6abca3c4a7b24ade5f918e09b64d699eb717e9c2338d0e7a6afe3783e2297f0bf4ef5f710c2a14d6a67c27929e7a3a4e980bf69dafea7e086f1a16f5e9e6c573f7f22e96c28da2df31c677759ab342fed42953d3d4d2a50e203cae8584f1cf6c9efe0e98de7fad8d774b38f24bee1ada08000e49ea7faf915ead9b899cf197af2d9bc719d564e1232b399ac67252448066a3b190a3a1b467a5a4628cfa7755e8e90eb766c7f9d9757f7a59ddf3b26913f301e3e8c9efcd70f3ffcf4f56dc1dc143e4df314018e28007c200500e1ee22f86a536e4d9404bd6a055957577aa62067aaf0c9a2d4e25a6e7614840a4b02682201220b80fa9ebaf84cf83a05321af0c3fda6365d33d131be263a823f14571696afc0240efa4a7994231ff5873ef4fa429415cbd50d355789861aa599c905c092e69e45e1bef6ec99124633a7fa67644ee1b7d3424ff80aaf4f1003ef4b1d3d6b8d97d046968902863a359f8f91243e7d29aba798f258f0de229d5af2de0fdebb9d22720b146ed0f10ad4387a1e49fdec7a573772300d9294335e303664f6e6b1e918421d7a1b13026fa18f14750fa15e3196988d7b69e0bacccba5010398964bf4b8249e36d3d5b4ee2e4ddb9b74d751b5bdccf449658617e7f543a11663b79d3e5f04944ef540f2b437ce975e5dab739a3e614bd92a7fc421da13b6b2813f91878719d5f41b157cef80cd6039552b8d1898d1005976719755a46d873496085a8548d63e38f623c54d6dc3cd1102459c78dac70ba373611eada7ca8fa791af3ffce9fb3bf388e83b31d85728fe8e0757099b6d57f0ac57982b5be1a1b02580a6aee126b95c4b5bf3462897585dac05a8d8b639f67ba358b2d5039a2f090c167553440aed1a40738774552d9bb780e8f318658b25e3c712fbe6759ff5c04f5fbe7f940c2efffccfffab93c109d9e634019158449f62c1d00c9e87ad3c013eb5888d285cfa52000e477a35ca83ce4ed6d311077e52bad6c0a832ed9c141e4328ed0a9dff3c13a81c5b5222768d99892d74c602e8ea7755a8d1f243627da47b180e3e96d37c57af3fef2f80fc2927f7534b567df25325db3db6d93aa1ac729c9363bc5e6639c2e1f5b69d7eebfc3c1bca6030c4d1746a8ecb711fcf47ac5367ad159f04cc5e3c3b0e0ae16ed37d9367b8cfd197bd3d07ebeaf6460b3d556a8640da6a4675d7d9f542d9f1f37550af671706600fb3578eda5cb3db6a8bd07d9f11728363319fe6c6069ac772aa3c8f2ef1748659450d3b8813509a841f714edf19e4f9b05ddbe42b611a519b07a9066ac14da6c6d088506f9ef5139d4428e47978dde783c7ea97270de4c15210cd5796c17d421e14fa4ff9e5a6416d35183e58f4e7174baff88c79b5aba5a17aeebb8260f2691deb82da74eaa1443db3e9aed525fe678f1509882a3312cc58a4825bb2da80812f2c151df897fedf42ef7375987e07fa949c452e910109148af590d556617f9441a65de9e066c90c6ec368de7bf90fac3aef2c37eff0273c98ef48008397fd66efa9c1174b0aa8847916cb037c241981d536400442426c3cabbd8db63c5c89197f00462037a7dca1131a41d5a10c02a01c91bd867262aa9d000483804e6339ac652376d30139054aeec04274eb7818392cda044d010481a1d93dcc2c5cc52a42857c52886d83ca7cf13252e0bc5c40c341416e404be0ed5e224cc942c4515bcbe879b900356f3d9603ffe563b1086969264373b0a3892c234659bc9ee805e6b8e253ca7176642b8767717977b29a9ef7f28ae1d78640b84f83c0c9115d6b9bf767aa367c16acbe407c3786be635c2e50fa0348e1d266f8944db01df511db88e3f6093f0565c0a19a8cce9521ee93c7233397526c409cbe7b6fb419c51018c7103b9e61c3ede589a07880da87e283a444a54d312485663ea022f54e08413d36846c2c401829a5a7590ed9260494494c06bd21047fcac2dc61814abb7228735362135364f6189956888660ae3a60f4882d2be0f68999fcf6f8a074203f7b853bc83380ac1d0cfa318807794902caabc727b9cbaa404e74af4b647b29821df5bd8f3e995cdecf6aff9c9b2525cff0229423013ecbfc88c4702e504c562ee3a1ec386c022e60276867eac24a66e3bac068b37e88ea33751e91caddd8f8a48552e50a14a6aee56ac5b2b1e2a2ed991ecc4bc6440528f1a5a8d98f985b2ee5e4e12d1d2960d4dd047802f9141133fc45a8050cdb1b0d9198b9dd2a0862da27c47df134d82adc230d1bee82573e6bce4ed8c3c4d156e6ea4efd4dbb61c6376cabb7500a8b526bcbfd8dbc3c25c009628923a5bce48a36f405012ac5d76f162d4884ec6d11f1b4b825ae4c83abe3b5e8c41217a17d41ed1a85352ec866288873534392316fbc87b58cbd0c882d6160f51e87b7a27badefb5ed7402dc0f3593489f161478b98521b141022bb38748c6aff0c675c2af307600644e91593f535a194486dfa9279fa92befa77022556ccc729963f35ac1c490673fbc02f0ecd92e0089e1454d23d14cb0c8ecc1e8aba7faa648c3ce8850accc101fd8a2de7a34522adab237994715099780fe381703f17085a838ac5344e7b736b0be902933c270aac189f3bc852f4faadd611779d0b34d2b89bab6cc90b2e6393b1d22a81df4d43b5409b8873d0f4b4e4e5f11c7156460a2f649d9491c6cdc0e105cc29ba59814a9f4ebad7abcdacb93725e274b5623ba88c842f572dacbb10e454a15916da00b9c5ea938e23d638e4f43ec332405a195801cf3e3b9b88eb6ad0d143120aa19ddf1daaa9727ad4e3a7a73130a48202696212bb436efb5b8d835368531d46092811bb3631d4307c5483f13429709a49181216c02581108215f19d2ca6c3106c808aea6e2d69d60958bf48bda943f209189d4b206ee7c3071bd96b0f9268b28f135b6de1246d4b09eb56bcc19d263471d7c25c0bd828a6637081469cdaf65047915ce3cd70f3b5e239aa161f6d7546f5f4d6813125c3ab1487136835a1ff6468e4867f2a199f13ee5e5c26b7bcad62db2a6cd5a38abfa5b0b630fb0e928c83cdd1d28f177ea9f31660ff5e4bdb36f79ca2fce10b17ebb9e99399ebb60d6d27c4e5fdb66a39f8b800d2f75af07fdf147f033f8cbb11922a40f138283ce7c7127370b70b8915443e8cf087803587b485f3e4da9fe417c62d1fcf5631f5decffcb898adb1dc1f346a80b2e25581990ee5f5d5f963966f68297462e6d59f83a4323356905d23a2d9ea0a25497e9d8e9383a7cb8d037bf787aef9917038e4194e186aecb9dfc4317e6dc56ca5e970d4acc6544e49a21a3d5e98d1589461148209b00d3884d29d7ea4e6c8da45326352a0c42649622063ef5827ae4d6b9dbf65d21f23fc53ef08e0f41c4ad02fb45c4aeb161919bbd05dcbc9d346b129092196d819fd323045d81e7a3a1a1cc0645604f1c35afe098d46013fcfd7dfe8181fb5f6f6ff4ebbf7e4e18442743429c0c8f89180ab49b8ee605f2476c25b26d6c76270f18c04054b95c489e1b61029bed549947ea02fac5bdc608df145b9a2272e562874a1177d975c9dc39d9c84332006bdd0580fd2d5904cb1680a26b23eff3062982fb4e3ac38e069f4d2c4cf03ec1bd5abbcb070144c117e5c2fe51984c61e31a7ca0e29a48011c13cd111c9464a6102a928ef6f038289305814d4e9542e57c3a43eb1ce015a63730ed4f822ff20d79e99de36124e44f5b4d812c6e621efae1a11e5ee9e723e79d4ddc1f8847907da05c13bea0f0a0a59549fd66c6ea0d8ba9cd79845cbba096671ad9aca7ab8c0474c8ebbc175d55cb7e7cc3757ceecb9ef3d87deef33698d58340ac138fba0e3b2c3ece77668031d8de862db6888792138c1a818f0b514736db543d00017be3ec621372e9f36a069c31e8a847c426d0e7c7983d1edc19dc55f26cb3aec1cf84d98384255ad7b8218f1ea3668007d78621936dd49d87801b02386f968ebabc952ecef90eae75664ec21d07e9f9466cb3648cf378b23c980c5d9c0b0a93a3935823b6d692075cf290c6890a3c6c3b5b1edda49804a9000a2da2855a9b702e214ddaa6c33eb4608fa211df6b87b10ff230bed44f86f1b77756ecf1ce283e4617a114728bdc0f15baa0ea9e9544be1425b027732958e6044140c8e116ab9e45709168db536c242fe2a1672bb92a407487253864cde8672e1ad862535ef55acdeeea485c68a4e2ea64bbf7579ad0efd1060a722924212924ecdd4fb5ca84174d0f58dddd8bf0b978b997e1fe33a45f41c8cff7ac6690a3345288eea4626c9f6ce6821d323fa2321eca748d1dd743603aa1eac860d53e7b96e848f43b6123cba08c67d98749200d1c05c267b75c0643c70c46f2f3c9e7c16422d2a7779c4f8f7d2cce811e2b36aafb80f878c8fde73bf283eff9beee52703991d652474e240d124023326416b2d0d8956b9afd4cf0099c92b9de48680291d81b0cf80aafd43bf5248d996c1b71329f19b205647f3ee17003cd8313e8a897fd39cff5030cf06f9daf73229d5fff5c1fd59501759c8f7a3c456604b2f59dc619ec05198c391205d1e7d37958f967645e7eab9616f6b95e6073ea29154f3ce1ecf8942dde80cc1de7639ee1707a467ade444e468fd56383fb463d4cb519554ede8b39888d643f9096e7539f27b0649d7bad9f8431b25c6d533a44a84742de13cc6628d299da3c4864b68fa3a86489110d563031206119be58910e6996ce243346f91670a2822e0873118a39819c856468f0e4230e1ea52d747046b1a1ce7d4d83738e5c8a241a2a4beb6b1ff44d2766f581a741965491e028d76ce6eec8cef4b0646c9bd0848c4cbf5c474e69ce7cc6845bba839953d9e1fe19b982fb7a9298a7dcd2eb393dad75a4b26724b6256b9df6fad2cb729f863e9ee6bebdbdad48e11d5ae257b61590832fbd0cb004d91d9b9b2ce9a1b889db38fdf9029b35dbe20b048e6d4506f702b92cb97bf8aaa4fd175b0c541cd0353d474275893d11719e057d762e90c24cae7b798b8d3e60d84b6d47ed252605b119f0b3942b72bcc005cc7a8e3cfcf2b1bc9171164ff50c61697be898c2d2cb159df1f294a047d00bde0f3a2565bdf7ca4379d35eef1d034e6edc3a85c6ae49c1760224cbb5fa9cbc77405bef0d4abddcbb2783fd8add9363bd774f461a1bbbe7a10c6147f5eec95897d93db99de80df0724eeeac5cae45ea28697fab45ab33e0f6c7f296db9e379e9e338520ca926175f572458fbd3c297660920b228773ea0c192105ac0af7d206c22a807be273c28377925a64bbb072f18107b717ecadf24e968de01c7eb829f3606c503cab327db4bae3106538d0c5eba5f77d00eda54d1056c3d506f77db8cbf4089035b2b1a56c9ec4892b094e98a32b0f8a9661b2db71a3f7eaa16b3abd28ebab6790a89e5eab06395226101937cf271fcf20bf7ff97f7f7d7b0e89ffcfa752cd98ea00abbe4a0b1bd558f21ab758f9ce8e187f9e11366c15f12b5ce1e58959c539aef51a435f33ceb3752e6f08a8fa31ed02cae1045e85edf5571f3ee2dfbe7cfdf13d35ea77f61f0fa1d050e1884af72c784635817d85750f4676f8a4e3502c34c0c422eedb967392a916c6132623799881573c7690f2ab771d71e0123c7d9c3ec099642edc55bfeeed7d3ce3e50916d202c73eec7aea5eecfc4af6f58e40f8d222043184c32d08be68b8005e2dc9eb321c1dbc77475c80703ac4a5dc4075b9d6bd8c087ba58e14d807eac228ab7217cbcd4a45ea10908b4a5047a45b057b5aa89465e21a4980436519e775c283be3c299731c4a815f80509be8f4170abec1b6e05995464aa31976a78b8e162a80cb13c33b2cd501641410c10c3a8205b2726090205ee777e7922b439818a43851c8d743212df204433c00b5ee03eca2e809d7a747afe54c8bd14ec8c02171597a45e3dbd2e87575a11b328a6a80b3ea284b8aaf387beb6eae5890c8291a9f730840abb8bf47cee4cd625e7b50ce89d2c85423fe2823efd389949806f17dbe795fad013230dfd2804ca93c9b663370cfd32d0b178603232e6f8dac29727fe38c22fe1b12d386b63deeb8b67a0c7d847047a2486e2c9746de99ea1bdb40cbf635b2afdcc7969c9b5f71afc8900e737336317cf4d4258eca101f669c196c3e37a8a5faa70762b02ddd3728c9c8108b246248b014e83dc00a64901ae35c569a4e2cad38a21fc12ea7c2e46e8cc67033abb41f741e46a2d73ec89a96a803f4cf5f9133bf46f5fbefefd1d0479fcd7f758bcee5b6e6dd919d0d25047e7600bd05d341e01fa44bacc41262a70cf2c8c5721d7814c1f91010a465ea23a34273acbce88ea087b4f8775ee0b049fb66a7706754b0478b6a71511cca5edc20469a15306f332e31271af030e8e8834442f1ab8a0902f4194b583e64e9e17d6236e22e7ccfe784a04eba7bcdb53ca929e736ae77376c8383c7d0eba73af1f23d69edd9176c0d68e44e8e98edd9313e485d73cd5e3b3ee6f9d4fae075e935c43b897ab979137ab146fd9438b5f9eecd3d2376e1585725827344ecc7e232bf1362889bace58f3dbf0caec186825edf598f3d8282ff32a280bc5582837f10616e8cdd6be3ce5a2888896918b3a0c2971189db97eb8e998ebc7998ef6fc5b863e787d9671d7670d843d55bf3aca23c519d4cb73483f77a94e9523cb45d6b611b4745159234850dbc2055a13a0488b3d193e92fbc3daaa489a14e415ea1ea5a6d3a530b97c2fd73364846e560058917a60337638f615af3fd70f8f539fcf2f44479c923c597f6e03ebcbc95947be7d3ecbeb33be3ca51cfd71538af7c927113b85c7f5f2e9565e8fc7b5dfa6379a8fab9f1ed6b6b1f9adb32b69cce687f5fa730b18ae3b3dac5f9f4fb23fdfc70bc57ffcf0dbaf3ffcfcf34771fc14c61fc85d445c4590a6cd188b908e4ec0a5d3818de9baa6c122920dfa0e60434a103c11baea166376e0af6e117c58655a3eb7986569c850cab417607ad4857619ecef12ef847f56bc8a10405f784499508208ab97bb22d5b73ac54d860f96b8fa7d73011b68089e4c89660396990f7cef869727a50341111bed4834834213150029a92815df666c83d63855a284c048f21e091b49af4b7db5a3d0a4887929c2856147eb207ac84c37f5b41bb851f7b2b4b53e7b649911dc7ca2ba29d17d83ddb324e389aa8341fcc8be460a131230f6fa7ac2c6797df673ea609221a3d3ae2905ce7ce6045997f279e7d58964070c1c6798804c8dc8cf043608cdc15ef67c486a381faf02cc19ee3ad5bb6ac0542be3446ae0e121b3ccc85f58801c9e9cc9f0954a3aa54391123dcdecee9160bb74a2d1f178e029b53f13e33ef792e7a99e73992b60f86516c88d986480479cea91d259ce4e7220efea293c51f1b1f4791273da897e26b4b0f70686bae9b9aa0b4dcff5d9ad9eb97fd2f2466d2a10b29849180a80edffa3a98198921402179d8e097c1dd43e70ca5cea166fc5e6938dfbae985619f4a70375049477c48ccf62d7358fb26b1c93168c5132bf6566cc4f19cb611a03b025aaf79486a1852cf78cec392a608ff10d94c0ef62b39fb7fdf589fed05af34e62eba7da6eca78670611a4221d0046ac431abc19dc72ec6f353a15734229f634a24b96998defca4c75813a52d32d20db3542c1fe123d0732223da521ae5ca0fcbcd333a07c254d1aa55e79d4de3ff0811813ccc44f0d6e4b010365a3a9ba3c3cd23e303a90f06658c385025695d84e7bcdce1eefc755519402cec76aa221a62dff5665698d64ae65e9994936d1355c9ce688dc944cbd1928304d2d0a439d98816cd1ab04c561bf5289de85170eccdd4a1d644900da01280c3c862b05325b03df90f715058cc533bdcad2ef5477509172e452aa9eb751765eba2eeec09ff6f80808e053215d18e6c823fa04b463304b14eb328dc02371bf54ce4e33e614f44b67cf42aebb87e3781526079d7c42e4520097dfb19e2bbe76e017c4b1c4cdd165943df0b42a7cc04e29187754287d70137a956ac86a6f1deb2cd6af8c21de76b2a94656075cd3a682b45bde9d13c4f18aecb986d5bd0088d7c9bc8df7ddcb9d6eaec04a4474c8d684e35510437cab3ef32a93fa4d4c715f5b8ee72bb376e78c8f48318936511b0fc7ad359d799623618fe95c9bc0361e999ed24e77e9809d309f96965a83e72b792a1e8cfa1d5809317938d38e23c546f2c25702216c7b23c7b1d1b37dc4b6e5b4cf128e1115b233c7e95c75cdef645f8d56b74751d23d6e5cde18afbea34b3af5b16af05494a3d7eae1ebfc6439f8eb9fde8974843f00c26cf659df6c1a55b0a9bb14f7860c117442dece64b73a53d56e492ae836caa6bd01ef1b37253deb5e0b2ae60c41a6eea23e6953a4fd6843f4315138bfdbf9f08f828021e2f7a457c631014e8ebf11f854792d9b42041a37566e9ec754f77a33e53651cacd560857c1f192704eba33c36ec8de227fe5263100149637222e6d126c7e86d907ba49a291df10c3019f807de2b8131dff6ddb790670c5d2b88500c9335da70dcf41e0bc6cd48681d375d318dc35573726b344ebbd8de977e44023e3889f9377326a413f3359c2fabf3b48b6e2bd5060bee2bd64b4ac6dc9c93d3ade78a1e0c296b0b4dbc6a26f8929348db12e69d55611a4dd22ef8773955069a1723732ed0e2af9bdcb33294a34cf685f5eef54ffac8d9ccf6161c9a15a6d4f8f26efd09c3c1d5d80afed793f29506133af89cf10c3da6fb1da681527402e9b36582ae05ca7c045b74e4c0832cddc8d1b057e6de50323f671169b539ca0703a4dfa103e8d732c1470d4c7ff3048a6f576c2c06cd8c898b1dd37ae78f45f21e671bcba8250bd875364f6e855812c1c7491cbb15a0516fb61d6dafa69899cd20b49e17eeca12961783be59dd4894f604b27499f097fb5c934ff2e7d9eb1729be3043aedddcce2ebc75366e684ed12bf5c22d7f36313e7d54ee2dcc44c5742dc32d54d30b15028a5aeb225f7156f9dd279603ba48e81a4b578752d4822c5b9b60dda6841605add62b7af226d7bc4ab5c256544e3c9041f3751b33acbe659ba15d31f121fb4ca8636537c6c132737e2a4981c5a37d10801af8a4c1a94c9bea51ba6a6436fd854664f7bca758a05a315cf13fa7cfd10efc9f231536b8659010d8900f62f3758286986b50a49dbe259a20da9bd88ae361200103ea3c8f1200746bacfae61fe7613d3ceacd49c15b4e1fb276763c3d74d8c46da28a7139bda8c4274c78cbddf8017a031b3256492006db7a5d01dba5db7446aefc0fafbfcf5b159f0f53fbffefce5a7af3f5cfef6f646b194cf85ab0216d3b615ed1ea52ea344bc572489e48e71501a4849664f8322e1369f58f418004dede40d426c31c944edb85c625af59a62de54d517bd36a86710e319418e7c5c4cf93a3709977aac196494b89cc40c052bdde9fc87fa70b84eacb2dcf774cd99d66bf684b33298359e881980256327845d036e0497594abb3295f5851721fd53e2da6e7c054841bb63872888491ec98c4d701aa441528f4373831e982db346641c0fc1aeb49fccdb70926aae11dbd019150ba69093b82244419c5749692581f846491b77625541c61856e11d03cdfc93b4ea0d1a899b87ef7a05b71b30c0f134d43ccb251358f186db0b0192e10217045d9c74cba407cfd00dc7fa9c08c63cd65226a39dd0df88fba7303b1a15cce4f65d1fafae701cea8949551199d5323bdff0acc3ea27946bab8ea79fce27e3cbf9fc5ed19ed37d210c90eaec50f4fa330abeb735f99b49e5244fd2a8e138f54515f8f4669caedacc5a4e3d4d8c753db1dc458064746630686685269d2f5f6d1ecef90e4d1939531205593772420d23372f477ea119a3316d1406e3527b9f203f9989bffdf4fd6f6f6fd162fd34df2960e0e88665048d2d37817a78b8e1c8cb535860caf38cb4a61b8026d770b3ea9727812a9b19fe89be573f8efa5b7c3d053aa47ef194da2dc5b23d1cf9f829bffff2d3cfbf7cf9f5d7cbaf5ffffaf35fde0981c5f819308d023801701cb5d2b21bf00d1a8a6dc924cdb5c3974c6cec2597e71c120f59c1ceb47f7d33d111e44d61f1abbf3c2982ab43098db2e90540a4bc9031b389f52762aa179b3798a6c98d3ea8d9dac22bbca0c11725599c59db480c582ef41e7445464ef7ad1eacc44de1a7b820939110f10b8c1026625e0093b57dce2582732580d64666220769021b7efa24d89a8926f1090e25184e190b2719224903e31bb2c73242d162ebc72e0904572ef7a21aebb897dcc9a7f8121dea000fbb8b1da11e7cdb38fb5e42525bf5eb468ac36057cf1479b6e2a14ce66b6f35cd4f3ccd26e48532c370232969ce9b8d8ee48f1b55dc8b26bb92062ef8501e9180cf109c2ac49b955cc662dc4b1026f7475c5a72a6211994d8456de55343fd8b1d9307298cb466d82e5059e6508c79684cf85b4b2137cf4a36d982492a8f14b2970bb978a629b34037794e0446fdd0769af471beddeb4cfa5cdeaa27e3c4a99ed9f5b6fb3893a409988ae7d82516ee7ee26dcec19f160a287b392844738bc73229504c5c42a413e84c448f8563929c2df6e99d56680c8c972792dc5c6cf30d01f1c33948ca1d69560ac08eedf071013fef9ac36fd5d7e2bc2a0416e992a8dfdc673b2b65c7728f0415e4b3f324d5d976b04e6b6fd4dbdcf646edbca1026872960d03b3b3f7ccc165f0c7e6ff77380c3e452443e71a1c291bf42896b0964180802de6006412374c60cc20aa4f2807eb8426b06dfd322f4f36687ce6185e960e2148f15c576d3b3221911c0c3fedb0960419d4cdcb88d30d2f2b93bd0b58e9226c80cef220b86faf67a65dc7f0a5a7b1d372837557167a3513c4a0986981782608bd581b2136a44872ad0d93b25d849f19249ba8d38a044ca27403a63400f259ed49ba88343e949d594aa32caedfd40984087cf2712f2d2e3b847ce628d9c76fdb284e653fc6446cfb9eb8091d861dbb8cc088037106bb525d7b2c8fd8767a4232c1299b84dd9437f4b5ec439e0f4656073ef0993388e7d8ff6729ed4865c1b7eac9fc37d50b55e58e9f9ebb65baa7dadb8ef45ec6fca8fedcd21845b10ed302ca27d8b9180151217d8ce013ecfdde7dd2cbcbc3f8353ba33b1146daac3f8ede2d507c2161b04ff5d5c967672d50389a723ee98806d052cc185a9eaf214ddbc50bb814556697e685bbadd3e529d938c75f2ec5aba7465211f1fedc2f4fc822c5508923d9a27cdcfa37e422a5535610a1b6e7fa2a98e3cf594490054d67d728c0e93293ebc45ef0628fb513a90ec00eb2a4bc2482cc91fceb659bce08b7948e642a6a41534fd01ff8e5e9d1b2cd0c2f0b28e3ee5630cc66418d1bcabbd5ecbc2538fc60098f57dbf8d55ef6fbbc3c250e4c6b1da95b80b346e0e5b88cc89ebd8612e280d96b618af187912170798e08475f28969fbd84aca8ecb5bc1f1066f7467cbcfefcfce3973f7ffdf6ed1d7640e99f8a2edbdeb51280be162923c7be062c281adb92cc3c2b2491808826784784c2d9491e3ae3a29cf0a2d07d1415b1cf1600400809f1c81ecd165c8b0784e3eb1f7195783f33f6b5011993566d110907b9610f074ef650405e31525e73258fc5a5ae52fb52c2da3b724325a6fb235da4af5d88764a156414a992d202295a014e6220338b36d44336bb12e8a6352d532fbd3c45d135222db9adb9b76b2c692d8d8a1fa5ead58fdffc38f5e91472e8b26629b798caaa250f44c0a4e0ca291dbebb50d75e2b83fda552c72a29ba43b56c808235aabc24eda00a0b240e0dd5f1dc9a975ed75cd232ddffe50911e6daef4fa039af45ebeb13f0f8fd093e1e865ffefef35fbefff2de30fcd77ffb6c18ba92e7b07fc9c80274d3853c45f6af9394598d7db5772df9886d11113250917d86f302ee33bfeacb536a811f740b600116a7aff23140dc8f8ae37e6cb053c55a780b1cc108c746539eed3a00a1fa855f9e087a84176c73eef45618495d29af9e80b0692060cadbc3f92f4f4e8e048f07c39d2540870f210840fe22e3b881a4e7d7d80382b744a31c770442c011622422c903ac652377a4193d7983901de2ecb23ddc9d0b2e610b65435c981fe7c6a51d008e4d34d8fabc3d9c4b6ac1448ed34d3b1538cb669386236c368d9e89e511c35997a3feff504bf9dbcffffefd97bfbe6d764bff542e0518bb2a6bbb917203b30df1559db143374451be12ae01df8bca1270ae0dc31857b9e13a23b83d8cbe0764ef4ed803f9d20497070e248e6ec2fff0eb97a7c461f27a3d56400a19baaba46aa1ad4c019b72d59eedb5364a4627e4526a5697cf87e1b291cfb0b6b5f22952e05f0bb282edfa7d2fcadaad3b64e0ef06b0c202b6697b94bca6fd514856865c9d002590b8bcb6ffe58964a352e42692afb5ac36a9c815d5fb51e0916f18173c0315f7730a6cd599957e232e890f8f10cd3b27be3cf9b6c6db0024131a81fafdf06323780a5be127d17d746e8522159cad1015b3d6de3ef37e9fa8b79ad77a951ad1c7eab7f86884fffdc7ef7f7fc79df80ed8f1753685b234d36090e92a0b3099b6efb55dd092e0fde3d08713ee920858592e606750c0452ea09ab24968365093d3842a887ba393dc58fdc1f01db19fd4f833d3256636c28b92f5214e71ad4b9c8ce941363b043217e8d0d80cb596d12a256f2253b002c39a4074cf543503bc9267b9396ca62b19bda7faea28ed298c562a40243331c929987492d43c6b7fe36d1d470fb3db91f33e626e4edf149d4e59a9d619e02cb097675d400ed4c6afda365d15ef33f7350f664241325c9ccc6dc1a407daab8135cb569ca57aba852eecc23290dfeb783324f1cffbc2d4d76ca6771dd909e499f7d04840d196348b8d82a22acfd10ac0d2db4cbdc3f49c3075d068e2dbfc09bd4daef0999c7679e8ce633f674fb90e6b1da9a9939556c8705b97da07037764b5efa59114734961a67c577093d151a7f9ee420464a02ceaa461a457f5391bde954aaa46ecb14858053e36680799999b17645d932b1a7643822275ead6e04ce03276590fc5133135f4c3910a0ca2bf54cbb475abd8e735993e4d08f7a6132142c4fa98fa8c858dbe990a338824d55507339b239868b35de1708e800f3d9ff814f06a5e9e62227f791eb175a0df32fa4d9940823e41023fb81f14e5cc9443eaedd6ea969f3a357c02b3b1123e0fbe2c46a86da1cb03a3e038cc933aa7d7ecc54ccef8019b127cfd956d052abab8674b97fb337c3cf97ffdf6e70fd951cba79212ffa3690a8cc45b1fb42bbc44ad792a52635a6d04a6a155f7b2c50dbb1c84a51af2cc6571d3f55e76d8f32292b708c4aad43e222324786bcc2d10480b90ac08e52bf4f6012ccefbd1b25be8e2c913c8a985678f38134a42344c236d4f96a2019d9514b81040cf988de7fcd07c7fda879ea066a4af0f9b6b1215b03696b831e4946410b54e8e5d3985a3f79c8486e2d58c6f013778e53101a100332b328720006f24ef81dc7a67ce6b260e0b4f4bfeca99cfcdec45b3fbc3540f7eb8954a111dc4166705897e5533135cf30d3923a7e42147bebe76caa7dfc43b1fc33bf6fe2bf1a0abd1ea3d398d5cf9d4fc447fd0dd82b81520ed664088cdbbcd26e185a4c641ae6045e7babb5cc4972552704433a5b61a9ccba70e4e4b204db817dbe227b48d8898a8482d5fc90e9116cc15dc792973b72b8854c288610727d38fa67bfa726cdcaf6ef7c77c7972ced280a1a6bb3fbcdfe009df14fc1797d800d08ed04d88e4c7f5ed8f82a08bdb1f41484e00afe7510199ba67b3c04b7e31b36ba31426ee81af23c1d44b4ec6299e04c29097ba3e4cde05390073c3fe1b49764041578c21c42b7004c0b7148884be3fe187e3e6bf2f7ffafed71fbf7efbe1b7efefb827f41d7eade37e31c572b3b931dc48c3da5e9e4429cb9637921a6a28d0b66c9ba84daa7900c481dc8aba8814a7db1397d501783a063b738b04d684728d044f9363abc82a37b310aea2e5869b7dfcb43ffcc7f777f871fa3b5e98874cdc2c4bcc65db5d2e8268d305a11b664d5e28f9035021ca837b32af075b3dcf8fe083bb14faed6d2014076891f1b821bb0c640b2e6804974da29a44a24c0653d90a8b03190dacadd9cf84a890fd3a8a479be1fba0df7e4ffd618fe72185e9fc0c603704988a6779a305e5142a4c340ac2fdceda999b05677c50af4dee85b2b37d3db4eb757a12083d40e41d06bcf7f3272ff2db4f5ffe7ef9faedb72fbf7cfbe1b7afdfbffdf09777f683ef30a5abdce9e1004bb894744346f406cc5c0ae15a81b10178d3fa4c3721ab4c6ad068cc606e6be07996dba5248ccdcf06a0b5fb9d96eadb2d95bcb387ecac2fb2ca065a3dbba96c1decb96b1bee0b63d06025905dbcd86c4d16b21f98a9054c1d2c16302dda43494e7c8c8eb9d06e73f5947e54613ac957b34f33fcf934f3f3427d2524a932788a9bb1489e589850043ae0e72cfb9d70918fbbedcb5fdece6d8cfff68ea9f7b0bac1588812400d0ffe135847b6130484c7c61cf09699b426b260b503b70a28d76cf51817d2f9813a173e1a9a313e0be950cf7c8e0b05dfed4b760a5e1dd892a2483d17d237476dee72ec83201397b2c87bfad2bded3378877c8a00b30ee66a331e1a415bc7fcb2481de0882c057882007476b01ab9a456374b8924c903c9f2896f2bf1a36e185191883df0a89725c1ee24716152753a2d7cda237ad6281560d593cee3f2d0646bbf9221330e2fa6bbb171a12c3c943f2065e4acff97dcee0c9397c24c2f80630bb2d10b5de279ca9860fee2051800921bda35cd34a6d08f350ab09c8bda540b714333e713013c648c076501c903b062379d053a4ba1c628a5d490ff3999bdf7277e79b20d574146601f5a28753f6363304cf249063e9f73dbe1483fc92502bf34605f4df56f13227baebaca7cfd7ed6772313c089bba09f6510cff17766034e292a008f114c40a1c7f246b6bb73e434402a123725b360d1a9bfa49c54cf7d253ede9fc492214e3e2f72bec51311d1c31ba4dac5f1b680926a9b917894903fd1195ce289c4ec0438b8c88e720e533dc5f36671f78b601714e6977d11f1a4acb90d30074ecebd93963d12d68ea7f47980c81c0cee27f10bb30b0e35406f1ecf39f329ccc4d06f712e9cc8a3ed5d4d0f7592c2af3655d6c9b306d31ab3c38cc2c6a471d6e27f6b187cbcae7dffe1d7dfde36bbffe51d58ecab3d4ae1a02a57e83f2250a5c44b5fed904b51d06460c03dee0177b107bbd9ec39f077820a82d2b7196ca2aa6bbc5da2f04a709a5da22c61119bd603b2af6eb8ca08487f355300ee4059f676bd3c29669624edaa343fa8cede5d724b1677b70a2e0f540f44d12ecab43b6ca312b96bac946e105a830026c90f21f265cb250a8d8b05a8e6c26922836fa3e71300ae381d7cb946a68072e94a7dbbb7ffc5b362cb9ad12ba266fe07701638e17d5d920bc9c4a5aee90aa4c38da436443d68ec2ed3e6449f673233db146ebb1e64c5ef1a5e6162388c340c7b533e195abffff6fb8f5f3e641fd24fc7d89eb59e019a14ac066d632d080f6f38c6fe71b7d98343ecd54916025d67ee6fdb238501fe36779aed0eb8bb478efbca077fdb6b8430b9bf4d0b12380bed85672b0979923a5314bbadb17d4f05a92e76a70c1a96e280671d54db83600aa886eeff3e334dc66ae0f0e0e9a538940ec2448d173fbc4cc809f2fe69c7412771bb662f3c5b819f0f305e41c126663bc04a55e3c88c21dcba46a0f8ac3925a17df77f9ed9fe92fca140abce676514b37b7a5bf39eb15b95819ef3cf977d78cc087db3f68f8cbb777c519f122466eb874caeba1eebc3649c6dbb5d13fc62b9d425db8a58eae3aa69ddd575c921ae5ab923c9318d64665463de89b4f6f8ef738c7515a473d85257a4df7f95e31a55fca2b2a8ac45cafdee52564d6f3533a6b52b0964435efc2f746194e9cfe7fd4fdb76d6b45f33db4258c77ec3bc960c61186b4dac6b0b756f6a8c6b6a3622f00c010fe5ff7fe643030dc2def093cfdde6d7bcf7afdfd05f84b72697b88652ef6dbdffed4f36fdfdbcffedfdf0ee6b7d79329333a68c6cb414fa0df447316f5ad3da90fd6557dca6d3f631f88ffff0efdfbffdf64fffe71fffe1a72ffffeabfdfbeb7ffdf99ffecfff170000ffff16434f5eecbe0700", + "ed538a0a92b0b6c10683f77f1509ba52": "1f8b08000000000000ff94944d6f23370c86effe15ac4e1bc06b19d8022d821907c5767b28da7a51274d0be4424bf40c617d0c248e1de7d717f395d44111670fc658d22bf2e50352c5773faf3fdffef3f50bd4e2dd6a56741f7018aa525150dd06a15dcd00000a4f82606a4c99a45477b7bf7cfc518d47c2e268b511cc75a187c56c38711cf690c8952acbc951ae8944419d68572aad7731485e5431568eb0e1bc30d16b93f3cd0e3dbb53f967dc4689d79f96cbf9a7e592051d9bf90fcb65f71b569383b7f3181b16098f154b9f2190890eb30e317974fc440b93b3f69885d2f9e6bbc26792b6d19e9de32aa15f780ee3dd420ffc8a6db4a7d56c56583e80719873a94c0c821c284d3976317940231c43a9340716059ea48eb6545fd79bdb513768999ccd242f5b834ddc92835d4c9d4fccb55addd7940838c329b6099a9802b86850c8c207df7c3f87a33fcce1899b399098ab9b42f7315ec5e5d0b402013d4d81414e0d954ae85114340e0dd5d1594aa5faf2f7357cbe7e38b0a598e1c33d071b8ff90a62027d9729e9be4d7e6a1afdd728f168d61bd0f01b87f6f14a811e9be7ffcaea9ad0a2e054d931b6ce76c581e33d8144c8782098643700bf8f7f818371ada50c15054a3d82d1a406f65851060c16b668f66d03bf6ed67fc08e1de5c56526cfae2e62e9e93d4cfa37f1f452fd22fd164c064d4d13231b7b40470cd201ea133c93ea95a041c83731613a0d45030b78ae6a8140643bb5498442ef689021f73b490ce92f63187517190c466ab696c2e8c7c66370116d567040d752a9d4eb5b960fe705fd27d638aedb562406183e1fb70ecd7eaa31b75bdf0deb187d332c5f11d267390a7d3ec185eea6bf7b307ad9acd0c38b51e8fe61fe370000ffffd7fcb928a8050000", "ed95b47491a69be94e391d9aa75b1d04": "1f8b08000000000000ffecbd797c1bd5b9c7fd7b66d7481e6b971759d6624bce663b962c399be32c241042302484b025264d42a02184844280d03aac295b03054a0ba486b2a42de5522e6d03a5a0504a294db981cbede5b694a69402a5db4876b99482fc7ece1c6d761ca0b7fd7cdef78fd7ca77e6cc9c99739eb33f679b78f7107aee221004b03f01b2681940d84decbcb41fe3fea878dedeffea77c6db01712cc279d88c0b10c63c5c84f5d886f3702ed6238c6e84b1085bb11eeb01e8588ef3b00967631d003f56623db6621bceb6de674fb7a31340d72774313cc6bda2a0760c4244e7e2e527cd0f5fd77a09403d00561cbfbca36beebefeff05e87a002b3f75ee995bfac357b701b64781c8e3676dba7843e195372e013a4e079db86ae3fa33d7d5baafb802c02100e98d1bd79f29cd94a602780240cbc6732fd8fead25a36e80de00d4839bcefbd499f5cf3ed3074cd90288ef9c7be6f62d62880480ea0084379f79eefa0fbeb0e779d0ce4701e1fd2de76dbbe0f9b71fde0ebaf261a0ee1a263b6547b38030383a32fabfc215e5682fa5c288758780efbcdabf7d4dedecbfc2ced3f0e74f46064be7d191d1c7852be80000ad98c4d63b348277112e26394b0a1dc0685502ebe8442f84858b96ae80b1e9cc0b36a30152957db599369d7dd699d04a57902c5b82068252ba4bafd36ec800dd461b002c2e9eff8a7a5c599defc6fff56f386a1dfa4c8cdc66c5473b1dc0a2aa4cc88c591e08a168ae4618b462b020f48d16a86f74b46cc7cc8c92787da3a325373e0afe7ec51d01dc0d76e68c7b67b0786fb0ea7d737494cc92fd04f415ddb6e41d1d2db961f93b0858f48d16caeeb1eb927b7d95e72dd9b2dcbd23c5cf98b82acbcde20a409673d8b37d45372d77473f1c13debe92ac45fffa4afe8efe9d06599c17af073f227efb8a64c73e570efbf877cb71c7e2a718fe411e3fe53393ab04c685b96f4cd827b4b7e2beaf989ed579a5686715ad6c250ce5f8ef1b13371f56c767399dabe5ab8e8b62d8e81fa092eea3051a1c9ff6a31f087dd5f9f0087995c9152ebb65a52f0d59f61f56e466e6d10facf82ec5d9a0e5ef879572c0d2a1183f7d55f1cbf3cd0795ebaa381f1f26f03c5f1ddfe57251bc876c259f59f655e588f9437da31f322af96ef47daa9491aafccbe3c7920355e5bc9caf2be95c2987e3f2fda1d1bf5398e5f57179373c361f8f298bc5fc5eaa2384ea7212ae4ac3eafc528c77ca8ebe5f9d57c79e470b561a59f28e8eb0eb52fc55c7f761f542dfd8f82ebb3958256325cefe7e78f9e7e95e8eff6c55ddd537beaea9d45395baaa586fa1aa5c67abeb9c727e1e1d53fe2b754da1983f3fe4e9cbd2bf9c673f3c2cbe51e577dfd8b23ffe7c98df8751551ec684a9e45f49665e0e0e73d76a4fc652ddae549769abbc0d56c54bb1acd1a162de2ca567d1afb2ffd63b2c8e2694fffdf1ed016f478b69305895be4cbea1aa7c52ccabf497d1bff2b25b551eabebeaf17e56b50900d311c07481a95ccbd067f2b6de96826899a64264da8a3e13924d036821012a169a82299b86e9317d66bd19344366afb9d05c669e66ae36379b3bcc41f36af3f3e60de64de6ade6ede61ef36ef321f311f305f345f335f390f95bf30fe68859c8d97346ce950be642b968ae3d373dd79d9b99ebcd2dcc2dca1d9b5b963b25b73ab73e77456e57ee8bb95b735fca7d397757eea1dcc3b97fcf7d3ff793dc0bb95772bfc8bd967b33f7c7dcbbb9429ef26ade9eafcb87f2d3f2e9fc8cfc31f965f933f29bf217e52fc95f97bf217f73fed6fc57f27bf2f7e6f7e6bf9b7f2cfffdfc0ff24fe75fc8bf947f35ffbbfc5bf977f27fcae7f3efe6ff362c0e3b8643c36dc33dc3a70d9f313c30bc76f8f2e1fb869f1ade3ffca3e19f0dbf38fcbbe13f0dbf3ffce1f0e888732435921e9939327b64eec8bc910523478d2c1e5936d23fb27c64d5c819236b46d68e6c18d93872eec8d6910b462e1ef9ecc8e523578e5c3772e3c84d23b78cdc363a0a98302553359da6cf0c58b11831e799479bfde66a73c0dc620e9a571463f18be6ede69de690f935f361336b1e34ffdb3c64be6ebe659ae67b39e46a72ce5c5d2e940be75a729db9642e939b93ebcb2dca2dc91d97ebcf9d961bc85d9ebb2a77533116efcc7d33f770ee91dcbe5c36f7332b165fcd1dcabd937b37f75e1e7929afe703f9867c249fccf7e4fbf2c7e54fc86fca9f9fbfd88ac5dd562cde951fca3f90ff4e3116f7e77f9c3f98ff65391673f9bfe6ff362c0cdbac58cc0caf2ac6e2cee1fb869f9c30169323e9911913c6e2e9e558dc3472fe9162f1fffffb27ff8816d2d1b48456d16a5a4d6baddf9d740f3d44cfd0337488dea3f7a8c07f02fb53044d080951a157e8139609cb847e619530206c122e17ae14ae166e146e146e16ee17f60a0f0a8f088f0a4f084f084f0a59e125e115e175e10de11de1cfc59f29bc2bbc2bbc271444a7e8b67e7e312ac6c5b8d825a6c499e26cb1575c24ae16d7891bc4ede225e2cde2cde21e71c8fadd6bfdee171f121f161f29fe1e159f169f159f2bff9e170f8807c417c497addfcfc5578bbfd7c4d7c44313fe5e175f17df98f0f766f9f7b6f8cee13f00af5086b6e04f740bfd0acfd0b7e9dfe9119c454fd179b49956d24e5c831c3e4b67e1abf890d6d2d7a8967c781e7fa4b7e84d7a9b4ec114fa067d137d98472763055ec01c12e8dfe8612890a0422637cd4681dec0dfa91922653144b7e25124e8785a4837e320be43b7e16e7c0617d209d44e4f623d9d4ac01731094d08a11941fa0c1ec28db49c3ad1826fe0bf49c58ff1ef7804dfa4e3701cadc17514c445b88036d00efc0c07b016cb49c42e5c4f5fa427e879fa6fd2e8583a867e8e9be81cbc83633080d7f11bfc1687508f0634a20eff43797a103fc22244e935aac115f8296ec317a88fcea59b31955ce4a43be93fe87e6aa49f6225cec0c95885cfd38d742ddd80fbe945bc8c5eba9c5ea0f9e4a0ffa12fd157d183ab310c8ddab00f69bc4a27c2811a18b0c30917dca8c59749a1bdd44567d06ada8d4be84abc4893f09f24e127f410aea275e4c1cdb8925ea6d388f020dd4d77e1015a45d3682a4ec4b3b411e75b83215ba0d37f6109eec1d7e86c5a461dd8408be802dc8053703a4ec35e3a0977d0261aa64f530e3fc46374355d43bbe8f3741d5d4fdfa7c7f13d6aa2214ac183c538157be80f64d017701ffd277e4932be8ba3b19d8ec22db8950670127d8b7e822fe1293c8d1f208b27f138be8ffd7882ecb898e6e22ff803cda32b681b6dc55cbc44073093fa6906fd114b91a1e7b01badf836cdc12c9c8975f814eda7a73103c762902ec41aaca6edf44beaa63bf067fa2d2568323d4b3fa2df508c5ea738b5520bf5e0e7743efd825e45373d437b301d297421894e4ae33d9a49b3e8767c0e6d78177fc508fe17bfc36b7813bfc25b7803bfa61fd2a7e867e8c7f13801cb304a618a5014d7d202fa325d4297e2f77434bd84d988d3121c85186cb89d3e470d781bf78220d02bf81bdea7efd03efa2e7d8f1ea5cbd0412be8cff41732690a5d45bfa64374907e4cf7d05768903e4b67e2035a4c7e0a501dd5e35bb80c6144e0850f7e04f06f78185fc74e5c8eff221be9e4a5104da724ada78be801fa3afd80fe846968c77c9c878d381be7e0d3d88473b119ff815fc0a4d3e926ba8f7e87c9588085b8143bf015dc853bf11cf2d44b4be962ba971ea3dfd33b0029ff6f57d8ff1ff873b04380eb90a011a6cb70f00a60128732802970680b604a1cfc0930650edd02982a877e05981a07cf00a68d43df064c9d43ff0e98760e3d02980e0ece02cc1a0e3d05980687ce034c27873603a68b432b01d3cda19d80e9e1e01ac0f4719003cc00079f05cc3a0e31bfea39f82a600639f81030431c5a0b98110e7d0d30a31caa05cc1887983f2d1c3c0f98ad1cfc1130e31c7a0b30131c7a1330db38f436604ee2d0298039998329805984be01985339f44dc09cc6411f60b673300f303b387432607672b00230a773f002607671300730931c62699be2d0bf016637871e06cc34070a606638ac8761f670c0d27c0687f542cc991c6269328b43b301b3080a803987436f00662f077f07cc791c6a06ccf91cd6ab311770585fca5cc8c110601ecda15b01f3180e1e05cc251cb0f83e9643c703e6520e31378ee3d0cd80b98c838380d9cfc17700f3040edd069827727037602ee7e03380b982830b01f3240eb1f7567288a5cfc91c7a12305771b01e304fe1d0a980598475d6ccd338f82260aee680e591010e9a00f34c0e583e5dcb018bb74f71c0f2f23a0e3139d773f010606ee0e046c03c8b432c4c1b39c4f2ced91cb07c7d0e072c1f7e9a83ff06cc4d1c6279e05c0e7e0c989b3960657c0b07ac8c9fcf01cbc35b39c4d2611b07cc7c0187d600e66738b80e302fe4100bd7451cb0f3760ed87b17738885ef120eed00cc4b39f81960eee0e000600e72c0e2ef0a0e583c5cc92196f7aee26017605ecdc1f580f9790eb134ba81434f00e64d1c62f5c01739c4e2ea160eb17af1560eb1bc793b8758febd93433f07ccbb3860eeede1104b87210ede01ccbb3960ef7e8d039647eee5e075c0bc8f83df00e6fd1cfc16301fe0e01060eee580d5855fe7a00130bfc14123607e930356773ec8c1ff00e6b7389407cc8738c4ec1fe6e04780f96d0e1601e6231cb07a34cba1d700733f8758ddff34072c4d7ec8c14f01f3190e5879fc11075f00cc6739c4eac31f7388e5c7e7385619ff0907ac1e7d9e43ac0df9298758db7280432c1d7ec6a1ff00cc1738c4e2ef2087589cbcc821e6c67f73c0cafd2b1c9c0198ffc301ab037ec101ab037ec901cb47af728895c75f71e85ac07c8d432c7f1de280c9f03a8798ffbfe5e065c07c8b0356a7becda1cb01f3f71c62e1788743ac7efd038758db6b7288c99be3d0970033cf21d63e0e73c0eafe110e5899788f0366ff370e583e7f9f43acadfb3b07fb00f3030e58dbf221072c0e0a1c3ad16ab22d988692230e6a809cc08101e4440eec404ee2c009e4640e5c404ee1c00de4540e6a819cc6c197819c8dc334c29ccea1bd40cecea12e2057c3a133809cc1a1d540cec9a1dd40cec5c12540ae8e435702b97a0e5e04720d1c9a04e41a39f84f2017e4100b4788839f00b930871e0272110eae0272510ead03722d1cf200b9560e6e0672710e980c090ebd0ce4da38741a909bc42116c793397810c84de1d0dd406e2a87ee0272d3387800c8b573681590ebe410b39fce21f65e920396a6290e9e0572dd1cda08e4321c9c0fe47a38d80ae46670b00dc8cde4600b909bc3014bab5e0efd1790ebe36009909bc7c13d406e3e075f03720b387436905bc8a165406e11873a80dc120e3600b96339c4ec8fe3d005406e19073700b97e0e4e01722770703a903b910316cfcb3960f96a05874e0272457007905bc9a14d40ee640e0d03b9551cfa34903b85433920771a073f0472a773f018903b83435703b9d51cba06c80d706817903b93439f07726b39741d90fb1487ae0772eb38f47d20b79e438f03b9cb39f81e90bb82434d40ee2a0e0d01b9ab39c4d2fc1a0e58fedcc5c16220771307a702b99b39d803e4bec8a13f00b95b39c4cadc9738f40520f7650eee037277728895a3bb38f82590fb2687587df02007df0572dfe2e06820f71007db81dcc31c3a0ac83dc2c12d40eedf3960b2ece3108bcbc7386069f8388798dbdfe7102bbf590e98ecfb39780ac83dcd013bff90831f00b9673860effd88832781dcb31c307f7ecc01f3e7390e98db3fe1e00920f7330eb13aec050e2e0672af70682e90fb05077f0172af72c0e2fc571c6265e8350eb1743ec421561e7fc321564e5fe780b9f95b0e5e02726f70e80090fb1d07ac1cbfc921566edee1102beb7fe0d01f815c112c0572ef72c0ea89f738c4c2fd370e58ddfb3e07acfefb3b07df06721f7088d5191f72300bc815383813c8838375409e38f814909738b41fc8cb1c7a1ac82b1ccc00f22a07c702799d8341206fe7d085403ec0c11a205fc7c16a20dfc0a1ed40be9143bf04f2410e7503f9260edd01e4431cfc19c84738f45b201fe55002c8c7383419c8b770e85920dfcaa11f01f938877e03e4131c62efb571e875203f8943ecd9c91c626e4ce110737b2a877a80fc340e7e0ee4931c3a1fc8a738f40b20dfcda157817c9a0376af8743cf00f9191cda03e4fb38980ee4e771c0dc9bcf4117905fc001f37321079d40fe280e317f1671f01e905fcca19940fe680ecd02f2c770e876207f1c079f03f2cb386071730207ef02f91339f82b905fcec108905fc1c1ff02f99338f81d905fc9c16b40fe640ede04f2ab38f815903f8583b780fca91cbc01e44fe3e0d740fe740efd10c89fc12196573771e86740fe7c0efa81fc560e8e07f2db3860e1b8800316becf70300ae42fe45018c85fc42196d72ee610cb6b9770702d90bf8e432c1d6ee0d09781fc6e0eb1676fe2d0a540fe660e7e0fe46fe5104b87af70e825207f1707b381fc1e0e583e1ce2d012207f37072c9defe180e5e1af716003f2f772c0d2f4010eb134ddcb2156febec3c1db40febb1cb0f71ee3b00e79fefb1c0840fe071c7a05c8efe7e06f40fe690ede07f23fe61073fb390eed03f23fe110f3e7790e7d0fc8ff94438f02f9031cba0cc8ff8c830e20ff028758fe3ac821560fbcc8a1bf00f997386402f95f728895d75739741590ff1d87585e7a8b438780fc3b1c626eff89432c1c390eb138ce7388a5d55f39c4eaba7739f45920ff370e9d090c0b1c7c000c8b1c5a0c0cdb38e40786750e0580613b87ea80610787ea81e11007df0286db38b80c18ce701006867b388800c3ab38f002c3a770e003864fe580f97b1a07ccdf3338f837607880838781e1b51c7c1d18dec9013b5fce013bdfc7c17f01c34f728885ef290eb1f0ede71093e7471c6261fa1987a603c32f7228090cff8e43eb81e13f71e82260f87d0e3d000c7fc82126db28877e008c3839f4276024c9c1346024c5413b3092e6603e30328383f38091991c6c04466673703630329783738091791c7c1a1859c0c12660e4280ece05461673b0191859c6c17f0023fd1cfc021859ce81098cace2d0e9c04811ba0918398343f701236b38f43b60642d079381910d1c30593672b01018d9c4c1a5c0c8b91cec0046cee7e02bc0c8560eee02462ee0e04e60e4620e9e03463ecb610ac2c8e51cea0546aee4d05260e43a0eb1f76ee4d0bdc0c84d1c7a0c18b98543bf07466ee3d03bc551f80d78931cb481b24250b850784f3c202d94ae969e937579a9bc45be45de27bfa6b428a72abb95e79482daa75eae3ea3295a8f768e76a776402bd8da6dd7eb717d87feae7da57d97c3ed58ead85b63d49c58f35dc330b61bdf305eaf6da83db1f6dadaa79d75ce2b9d2fb9d6b95e763fe4313c039e6bbd61ef0eefcdde97bc05df893ed33fd57f732015b833f076ddeaba7cfd430dde862d0daf37ae6ebc3fd812dc147ca7496a0a35a59bd635dddc946dfa73480b6d09bdd1bca87947f31fc3bde1c1f0be703e5217d9146d896e891e888563d7c75e6f79b0e58dd660eb8ad6eb5b1f697da5b5106f89af8bdf1b7f32e148dc9938d4e66f5bd2969da44f5a31e9f24985c9ab27ef99d230f5daa98f4e53a6a5a6ed9af65c7baafd82f6e73bbc1deb3afedcd9d2797d677efacce9cf4e2f745dd8f57a72767228f96c2a9cba24f560ea956ea97ba07b5fda48f7a6f7a6ff9c69cb6cccdc9c317b4eef79a8e78f33da66ec99f1e7996d33d7cd7c7756e7accb67bd39bb7ff6937366cff9ca9c377a2fec7d66ae7beeaeb98ff4ddd6b76f5eddbcd5f31e99bf6afe3df35f5de05cd0be60fbc2e0c2650b0f1c153aeaeaa35e5de45ed4b368cfa26717772dbe67f1fb47f71dbdfde8278e2e1cb3f69867974c5d72f392378eed3af682639f59ba61e9cf8f0b1db7e3b803c7bdbf6ce1b27b961d3cbef3f80bfa5bfa37f53f7e827042ef09f79e5038f196135f5a1e5fbe727976f93b2b522b36adb877c51b27fd71e5cd2b7f71f2d2931f3ff9cd55ee556b573d77ca9253be716adba9ef9fb6eeb4374e974e9f7dfae6d36f39fdf1d30f9da19cb17d75d7ea5b561f5883356d6bd6aef9ee8034b07de0c099a1332f3cf391b5feb5bbd6e63ff5fcbad9eb76af7b729db9deb17ec9fa0bd61fdae0d8f0e08697cf92ce4a9df5ccc69e8d4f9f3df9ec4d673f7376fe9c25e7ec38e7e0a7dd9f9effe9039bbc9b366cca9eeb3cf79e737fb1b97df3399b6fdbfce8e6fc79e9f3769cf7e096455bbeb2e5cfe7cf3fffe5addead3bb6beb2ad77dbd5db0e5ed079c1939f513eb3e2337b3ef3e70ba317eeba70e4a225173db45dd8be64fb9ddb0f5d9cbef89e8b5fbf64cb258f5f92bfb4ffd2ab2f7d7987be63d38ef72eebbdecc1cbf29f7dfb735d9f7b7ad018dc3e7868e7c69d6f5cfee8152d57dc72a572e5f62b6fbeca7bd56d573d7cd56b57cfbe7acfd50f5efdfcd57fbc267acdb26b2eb9e6ed5dee5d7dbb6efebcf4f9cd9f7ff7da75d7eeb96efe75cf5fdf7efdd00dde1b4ebde1c61b5eb8e1bd1b2fb871e8c637beb0fd0b6fef8eeebe72f79b37cdbee9899b2fb839fbc5ba2f6ef9e273b7846fd97ccb6bb7f6dfbafbd69fdfd672dbeadbeebfed9d2f357ce9da2fbd72fbdadb9ffcf2e42f9ff3e5ef7e25fa954beed873c7cb77f6dcb9fbce57ee6ab9eb893dde3dd7ee39f855edabebbeba77a87368f7dded77df7ef7c17b96deb3e39e57beb6fa6bbfb8377c6fffbd8fde9bbfcf7bdf2df76bf79f7affbe07bc0fac7be0c607bef1c03b7b6fdcfbc2d7a7f2b98cd12ceda72ca621cd7a0cd4959e43a9f814ea4ec56391a8e27379fdc908bb992cdb544c892ebf5789c653e980579942d1f81c4aa5e7923fe0cf0442e4a347655595bd416f21eb0d06bdd4e70d7aad3bfc7830d2d131bfa3e36e433fa81b5e674b20146e6c717a29acca6db2dac95e290cb063a775a38f1fc3ec9df91d6feb86a17b9c0d92cd45e4b1490d4e6b8d3a04d6fed7a20ed33007c781d5d555a1e876a5e2f247ca9ca9dc9c455d7e5ff7c75cd3412e230d7983c1c281a64993664e9a7483c3f65d9bc36d347b1b9a02cd867b489537b2201fe14083416fe190e54ad81bec672ecc9cf4539bc36173d6fa25ad96c8a549feda007b5c63879e094c962e38fa63fa1b3d0607d33332de1075f552aa9da206055c5d21f21aa42dd87af5d605d6e1bdae93a64f3f29bba078b960ebdf69cbf493d69d341d7c3e6df49794a5fb508b6674b07e34f9c6065d8ef06cc072491379fd9e71d7ad317e9e55cc523460530fa936eb5078988698b130c08e55665a5c7ac446b7b431233b3cc54fec308a8af9b98ab122f3fe6a995ddda97432d2e56f22af128b44e3818f913933eeba5a36e711441e23fea6b2cc9f9f58e6c189643e2c9e99ac2c9e99ecb2af5402b95c87c573f15c7a86c23675149660506d8543470a03553d551dd9d7944d85fdff485c7bc6c5b5fa0fc6f55051144bacdd4788e0072a8ffcc3912db3ba4ed8495924d0891538036b81d65877aa83c6d677b3c8ebef4a7727f9914b29b31a83d51c5605512e0ab15279e8e685a289925d7e9fa7fc70ac3b1910b6388d7586776aa91e74f6f4f70cf6f4f774b2289ee40d06db82c11db2d8238b9da2dc23ca55c687b9edecdd53d70d6cf21aeb0c5e2b66bdc1b69e9e36864d0dabb62deca1b6e07be35fb78c8557b8edc12deb0069b430faac70393d8e148ec225603a623ba95dfe805f8975f955836209558977503c3d57e8a54c3a448aaaa8e9b2c11f0891416a3bc5a24a88b509995e4a46e3ad7ea556304855da299d496794b2219e68a75e0a8428138d27e2e96434ce5e0864d2fe801a55987f5dccc96457ba9d28e68cd6364fb1ab4ec370aaf6290dab17a886385594949993e44951cd6f089ab726da66778b863de0f376f87455f7b54a6ebdd6473e43774b9243d31cb4edb0376cdeea376c63bd099ecebc79acf4ba54748f4455901beb6aeaeb6b02415b44929553d41a29b264cad2a02ab8fcaacb139005c3ef12841a59d1659f579da7db7d21afdda66ab6a9873f5a13a87a54d668acdb8badd7541b73813563a385d1ac309ff6e358ac00324916495d2c46935de90e8a476b49f1cfb292a4aa39eea5ee543b293eaf3fe02bd7bebe78229ea87a8b4aed5f4dd81e6fd9b869634bdc1ed61479a1a88b0b65458b1953129d29d6a4a4822d99fe192d417ed1999862c42acf51638dc7d3e0f10c4c8fc7e2f1587c7aadbc501417cab5898680f2a4d556cb7a5773a24798d1d6dca5cbd69d27954043a2f42085d9fb0d1eabd91e1d1d7d8fe6d12e783109c824e2a9b994ee6aa60c3bf8bdb5a4440399748a07226185c4db4cfeae2fec52d580ea55070654af1a50d55daab791df52ceacdccaee52bdaa5f654fa97ed5abee521f3bec0edf84427be94c2e03f79f791de0fe77503ca506fc5d7389c9511646f11efa04aebf78b8508d878b3e5e868ccabd9d4be508f17b33e5e0ab3c0e98409f44867ffb447175585a94835f1626dd95287b5d8e9078f4db9f288c9f282d687414a03e6ab334998972c304093f30813b566ff66d2b3e274ed1f02749aab1ee4c982a8727c004d15d0cd73c1e2ecf44313b4124d2e132a2a8bb1f1288ee2eb6c14cd32d6b0dac15165d6375f844aca2bd317b7abbd0c9d4683aa81b86dbd00b5bacabddbaf160593fa53e43b71eead48dc23e723263c1d40de3a5a2dea9c92a1f871c7d8edea37d70200ab47a0d8ab653aa97ba42d4caeaa2623ee50ded148a2af45e45152dbcba5853946da22e6e53146db12af7c96a95623afd825a799b286e936b2f905575bc5f72d923af419e58772a5eac1b2a7d16c2911ceba908412d4c88ad52b510e3fd2afac27d14933eafbf98f795262a56b8e3fc52b68ae256c5f28bf67d748871783c66ca018bb693dc3da6eef771d55afbe810648f24cd58bf268f4bb3da5232355557b6a5825e9d76bb8f3674a76e1cadfa54bbaa5ea57ad5ab54d5aefaaa3c8e2ffd1ecb36df5bca2cbcea95aa7aa5ea55ede3f3cde47169d951e9725655b62539aae3f9481ef47cbc9887cb30268d9ba9dc8eaa63e380c9f24964a84ef5230b314e8631e93eb794d473aa2bdb525c68ffaaa46075dce8afe9fb348426a0b5aa8a9c4b697f33b98a3d5e57a697e82ebfaa3ead7ad5a77985b4cdd0c3bab14df5be1ee0379fb62a2f52b753b35563fc66bb6a55a1343a3afa3bcad21d961f55d55e33f9955a2a771f022122e123dc128fe07f291cbfa3fddc0f4f55936169b5954a32d14e4ff92b5ef83552b7177e635581cddb55a2cb3ec68f43f47dba9bf991a96a066a8969cf2ede3fe8763105f708ce7cf523fce6ed8440d48166d62364b55a39c559bde6f356728242978c185e75a5aaae54bd469591fcededbac18cea4ad5d0ab2f4a61780a7fa1fdcc0fd653e9aae42c56bfc4a2951c1ffff9119d5a34b1e73cad9f1240fbb1a092d6acab14f379cb091fa2264a76c7ac6cce639075af92dda97274b6d31c8af9925d21a281e355af7abc6ae8c9f586473b5e558fd73cc6faa4bd86b423daf8cb17baa15a4f6954631ffbd8781b40191d1dcd0a443f841bf32d1d7c23360119a63933d9fc3e4b878e47954cd460e5b32bddcdcbaccfabb27e906fba576111e84f7631ad3cc354f734d3ce5576b32b9d8a970dada9ee7621113788e9f801cb2d39a1065e71d6393be67738eb9c86d7a8eb3c8199c299f999b05d6d51ed21bfc3e974347535a992236073759c30c8d5f11bf889fe933a4e4cdb7daa6eef3b819c75cec297fba3fd4fb077221d1d1187d3e9378cfb3b4ee8b4ee64c2e14ca4de638fd9ddf5fe90b3ced9d4d5a4e9b223e06a6aeb3ca1e38f5c4f1fe4a72704b1e7aca56e49f7fb24ff790b2587d3f9407fb49fe7a72cfd89f6a31b684d647aa983daa9963269ab2569a6445c614d5733a906355388e692aa58155b0705fc69a61dd06b37de6893658fecd5ae13c9b0c7ed0689d7695ed923cbb6235b6d5db64cf6d8a2365959718fdd30ecf7ac50645bd4e6918f70bf3456f61e3d86c53809a0a8415ed60b2d0aad2ab1624be40ff87d5e5551e38938575fa28a6f7a3cc6139d757ffd017f727a174bdb443b892c7764d2c92e3fcb05c5e661c192393649d515b7362dddb5a2ab6bc5fa1575f5b5ae068728887582e198266beec9ad7dada9a9dec9358adfd1bcb42d1a0d9f7f9ad3eb71055c6e9badb1d886b4293e9b4315e5a6ae15eb5674c563ad5dcd750d22694aedc50e972afb13474d9d3ec3ef0aa8d2b4c4dc05a9e93d85833e4fd8eff1b7b96bdd7c472e1f1f95e0401049cc67da7d6caec08a573a15cfb8f8c84db7ab38f29460e1e5da46577a2e2503962153d20c78abf4355b834dfa866104eaeaef2e8dd8d2903758f8eb0cc1d6a289330455699254d2529a686b52d4ef75b7cf608ae38cf6ee174321a7736d7d67fd9acaf0677064afa6ed5574590a856cfaca694955de2baba9623b3d2a8076c240d0ea97f452b72bc5b298e20d44c65c3ab2b67ab7bbde9675d889cae6078634c15d437d356e411bd243fad84b163db255ee07693f3ab0c8da87f6292092ac8c6a71fdd9d54e1565daca25c547a69041aadcd99d8ab36ca4d492414dc40762bb1381987a441b1ad86b356e960abed75d275dc20cbbecd178d4be8b192f91eadc14d69bda6dd1a86d5a488fce5a342b3a78f4ee7d87dfb2b400eb4009b5d963996a5dae5acbe06956bf4736ff8c335c0e87ebd4d9018dfc2d7e7f8b7f68b773e2db563fa3a49bf8102a97163eb81c0891a2522ff9c5764a67c8a031daf6dc70434d5d6134b672f91bcc44145bb9bc5a23ba30bc7c658ca8aea6a1f02a331646eb6a1af81e0e40d84903b0c18300c298842ecc025c962ee48a4595d698aba4de475c91407954bf64481c7627de3030d01017fad8315ed84018c5c3ba61780d43e7a79563ae289c6d88535f3c5ec8c61bb20df14296fa56310baf3130d1097cad6fb18c89506147ad257d239a11430253d08124329885b9c07457f29ffab96d36b7adc5d6e86eb4b1bf0677a39bfdd9dc8dec869b060b83ff0cbc7ff90165e9ca52ff72fc08eef8d1f4f1d79f68c47c76658c76684223c4d1d1d1e7c8a47d684317e600ad197fa09752f184a226d299768a2aaa3fa0c6130693219d0928aa355616ef10d2897822634ded28aa1250e3997486ce0fba1a1b9a820d416793271c3d65ed29d1b0a7c9196c08061b82ae262fbf15f1bc11b213e9cd76a203219dc81eaa21b2af30a28d91e3571e1f698c18f1e6486b6b2414af8df05bc18891b06e3527c27a34166dd65be293b6e9e1484bd49698148f41b3ca110b8764ed300da0192d98824ec0a3a8817420c382a02614359d09f452269ea81542c44c81744651134c950c30734279f9a8ee6593e37be62ea7a6e0cd53f5e3324f4757764aa93dd13dcdc7b651a8b1fadea2a3ba8f9b42dfd5a71e97be664f4aea5c195dd67d9430e5738d215a3e774f744f435028de9bfcd96068f9dc3defea5397654a3aae35beb00c688d74a7d2c9ae80e20f8ced07a9edc5d1e0a64a57c91a802cf5592265532f557ae46f17367a6adcb61ac9298a0e5197d65827b126e6b4c7bc910e8d55605ab1ca2214ab307637bbbbc653ebe97089bae810c5359275726852ada723c26bbeb0afd5085bef5bae848d565fd8b2287d68c6aa57544498669df4c57c91eeb17328c9aa3950211c0e17c26416c01a2801de20172d48e1bebebe6c5fd06bb55c4e43dfad1b4e6fb0f8d58b8a1fad9fc41735e28b1cd1a78585011a3a82770383ff27ffe4982f7944ff0a1f1c3af411defdebfdbb7370f05fecdf47c6e7bdac22ffd8f89c473be14623f3af95b5edb1ee882fe62a0d9e654acabb5c528622429b6e0c140607aca1b2013eb74d6b7adaf6ea0685870c7d575f1f6d64123c97e553d8836d3d86be91cfa51da2fd7437ea1145076603143b6cfa3dc34a4f2aae7a6ba93bd9e5f7a95cfd286a26d517b4a5b33846a79353374ef03574b86c994ed5f6b06ab31936db59fc44036d158d63728b9ea8db19e9785197eaf7d9d48395a9dacac11a73b4fa74f3683f5c68c22220a354e6cb5a159555b34c2ff65b3275cbaa4109627dbb5e6a2656a7153b4f6a48f079037ef65303215a6634fab6b4a65b238551d25487fa4d43176559740568be5df5aa1ffe5d15acf18aadeeae26c5d3e051e27362ec39a75b9ea10a27d626828dadad8dbf9dd6dce0d6cfd40d599103aea90e5550e919c5ab31c33a7f93ace9351e4f8dae29d31626baa2418fa3d65dd7a5784bf30f7c1dc464a481d678229e88b3ee5a22cdbade8acf1b3004ab23605025c05de9945a0a6ad2eba7479caa43d56273e2d5328678d0b6f81a0ff130398d136b1d9e60b42bb1709a72984c211e9660e2342b14ba61e9a4a3c24eda89199883a538111b980ea626aad4f040ac385e678d5459fd132f9f9e4b76cda500ebad30854d6827d91f88a94c1b4a7605acee974199583c914906da854c2064255507595d1845a07aff32b5a68f658064ed569b7ab2dd30f4e9216f203a2b169d159b7a943d55a3aeacf5f8633317ce8a09b15985db6ba52931d6c5b469d334c338c1d6765d8bd25237f885e6a982779a58a3d428a2384dd7231d5d04ed32bb4d75aab63aa76a33bc46a7169d75d4ac587ab2fdba3af7f4c6e8ac5864e6a2d9b1254eff40c7fc0ee11847bdbf61a033dcf68a30b5b76eb1228a36b146395ae858d0c9f4c5625bc5f4c526745871753ce0891567667dc952494d961725c43c2c65552bdb5a630ec96e4fd94ef425bb3dc954a29815e253c8d7e5f76579f93ec44b7961c0d0b7ebc6de55ba61930db76adf6be8b7f35b83fd9d7bedaadb906d86be51376895358a6e8da417862cf59c7a0c3d1c7437c7eb26a536eac650615ff1f6d050e1506a525dbcd91d0cebc690a117fb2594a52ce6e25cecc075f80ad01ae5c24579083eea8ac74277d2972cc1ea8a4877171f98e8e245f1a3ae9264f56d7b2993ee667923f9919794d53449b3ab35cd35aa5d9355a726d974cd1176a8769ba4ba5459b3ab8e30b393342de875f6b13fa73758e8733aac17aa1fb15e678e854b769663cec2508d47129da2a2fbdd5b2734f649a262931445b229a224092a37ab82547dbfdf1bdc6dfd05bd07078a8f96acc73dca9da03e4f8daec8358aadb635ee3b92d9aad77f403b290b1b5c68609aabacc43b289d09f89504abf67a2921b2468415db40221e9b1e8bd6f2c1a43994f1a94a88d273a93b114f37137b9876888a7099267f5610cc488b5c5f679737bb1b1a5a1a1abeb55d65713bc7f01aceb4eca8af93e6378b8ab841f53885b98220be20aa0745e587a7ae72d8f57a07ed60efb4347cfd769bedf835ac48f77bafbfb5a6cee6707c67534292c49d9ae0f05afaffafe962ba1b2de8c04ca0b597b5ad2c57552a1e5765954f865b27bb0221be4022a04ce16d9557a1e9f5c196b0dbebaa7f9c552691083b3ed3d698e88a3fb33060386a82f5c79deff09e705253d473c04836b7f4385451b0a911d55a8512566d9a7dc1d444cf5754a5c1d5d09c9577469b7c5180460ba34fd142da8f006b358b434d7cc84255fcc9ae8c271da7b66d51d170ecb2191426c37e51bb68380cf561d5a0f0e5768fc366da9d4f3bdc0eea74d481f73d47b3d6b86503e248622e8ec5c9380b20d51a14f7fbcad303c9ae8035be3c9762bcea65a999e031c2d59140265d1cbaf57725fcc51156a641c78ba3abe954426695713a158fb1dac8df95a6c7520daaea72f7acd9baa6a767cd8c69935caa576d481d5727abaacc0ef36455d555b5c925aabae892345b9fa4ab924bd455f1a4b2a97055bcc1ea43f5d80c1b6d4c35aa5ed535695acf408fe5b0dba5aa0d293b734757677377d921e3926c9a641d24cd2631d7a564d9747f43dc66d87a58e7acb40e88b59b2cfe13c8601ed0ea1aafbaa412f15426dd5a9978b4c6c67de3ae0311ab558a285eca1a7a615f5b4f4f1b1dad1b3651b415b292f0b2208d3b7c58f82d6b3ca9895651bf6ef4b415b24ca572da357bcaaefe993de56587a965d39b9e064f4d1ca5b1ca41ca42077cc5f12e9f2bc1c7a0b27d74d05a68d3b9a51846de6fe3e31f09c0533d02a29657fbf053341e28dd79af3212f2433e309be483a89dc561daaaa1907ddc6680db5c51591b2196f3a38a5ad4039468a729e44bb6c6a24aad9054cb0bc4a89094eb9d37fca590bbc1592f77097f31f9501ca9b7d7bab35977eded6ad86401332bba5c1f65ad79fe5ea035e64ba8dde396edb596f5ea2acbc0444f0a9dfde1707f49632c5c6ce98dc55b8babad86067cbe019b9a65d759d5d6671dcbf7fac6da020e6b2e649086a059f5680c53d18d5e2c463f4ec15a7cba382ecfa2bc3ca82e960c81c3c6dbff49abc1d6746b6bbab58fa7534d23bb68bdaa7835e6e68f26ba39ee497eca72bb3b78a2d300f722cb2f87fe0f77fb8ad987af11000dc1638d3fa135595e5e982c76ccbb33be48f7f8356c89982f497d593ea09bb5d602640b087afb83de216fb0df1bcc0e0e0eed667969b7b59af7cafe7e6fd05a9dd6199c1db6f4e9a704a22cfa700cd0ca17cdb1fa53897690122bcf2e47132a4bbab9c417d3596224e2d6ec4f32c3ca502d315d458c1ae44ba6da4980b72663ccb1791af4745bd2aab0926d69bdc1639b63646abc9e9a9e0ecbee4deb5e474f8d6734940a1d0aa5be5ae376869b66b3bb99f0081379249c618fce6e0a3bdd8d9e59ed969575ab7d96873ca15428940af1ef0614eb380f62486281b5aef85c5c06c8b1726567158648772a4e1f57cf8d5b8511286ba8fff0dae347bd865e785837bcb24a59b5f0636b8dd5b843aa7cb5b8af6a1df5110f617aceea16f6f075da744bd9b2a76cda54797c680533ac9ae0a18aa93876ffa455d7ccc442a035154fb01e2e574e2bda8412f0375bd360995e627a46269d885b532cec3e1f42529902d2cd3453a1cf6db436daa6344c9e929c39c4b2de14bb22d5caa2ea9ce571c87aadacaaa2e470d5a53a126d8149b6c656c33dd035ad77c182de695d876aebe56d8dad5aab3be4f404bd03de6062727d876193745193eb6db5354e97a2b8db35d1e36c72c5b4d6c66d72fd659303616d91160e4cb6da841fd3dfac3681f7dac7ae1bc88c69204a03d063ee12ac05d8ebd8a1abd24e2c6888c753f178436c56d41acf8fcea2edc5a7d69d34bdafaabd608fa5e27dc5a716cd8a96da63abdc65ac92774a69ddb66fecb2d5b10b58ab56b15a7398560d20972abc48c990e9ae8cedb2064780a16bd6bf4eddc85a47cdfa67e8daecb32e396bb6a61b852dae40201a08502d3fd71a7ae1a03534d1a91bd4d6af1b7b75c31a8868e34743df6be8fdbad1c9e71f3a8d47d86ba57f3dbbd943ec50d4d3ac3e51690df2f15883f3aadb735ed5d138b9e5eeb13358e3af5bc75d67c65dfbc65d07bd64cd7a1558533ba8ca855758aea736591d45a5a45095b9fafee044a5d069ed27e0b369d4595e8d7569f9a14bf732d3de312f5e55b12d9bc6d45fbcf65a8e4f611baec0172b2bc6aaebfeea5680d54f72554c76bb52e9c0d8c073dda072ddfdcfdad3a38555b25adaf53158da0ca21696d35e769fc5b27af1449136614c4e7893c2aadce22d2e6c2dae75f5b6c86a58950b1f58339192ac1e28bf5189e6559ff05e596fb3f2278bf7a3ff6fb12d27c62d78b5d63e7d9228a21383a22e9dd32eea5250924e9474f10bd2270af7405012cfe910c5a0a48b2b44f14649afec132ae5a1ff5b58c6a676f29305a39b89b9cf2a519f44fa6c2595315eee93ff8f72a72acb16c7ce72f00c9cfca4b996e6a9f26ccb6a3613b16cfc4401bb7efc5b96f15f16c6c317578f5fe29bf86461543a2589e5bcce4e491783123b8fb9fe44811d3ac2cba5ebd25a4956bef6a316496b76724c88782d5e49b6f109c85a0247b5e08f1d1e3299d9b38abb22d9d48964b7a6ab95b2aecddaa3a4d5fe9ecafa8a63b69fc5e464451964a92497532b53d609c5ea7590894a5f246e4dc25923ce8acfab7496779e790b03e7b00eee058264a36f179632f3b52141fc50b549af5aeb7be65b8b7c5a52a9a353a915aa8d0f0dd4786c34c4c3cf1bb170b1a3acabb601496811a469a24d5d224885f78a2ecccf840f32278e4e6db4a9d65880a746b555f533ea11b7b4a1aa9498c5d43916b46696fb54be238deb418952c74d4069edc82a875257fbd9da3ac5b1ca1bdc55f136ccbda5ceca5a9188e1721991e0bd870510d2680110046bcc7c018ec7e900c5ac6e7354a925be1e79164db7d6604c345569555489e9496bcdb25c923e52eceafbbc2a0b5c2c9ae0f3195e8546329a31bfed92b6f98696515441136c4db56ea7a51311ac93d35ddb641334412ddca046bc9778236a6dc10cb3fe5facd6e6a5a5247a6db5b1068f87ea7cadededad3e5da9d36c4deece3a776f453fea75d775ba9b6c5a9da20b9e40c013dfee69f0c46aeca22088f69a18ebf3f1859633c8fa0a192b15a5b58fcd24d4e8b69d8a53d969d309f5b69d8ab2d3568ff2ffc3b39f4eb1de717995d2bacf6ce9299a572854deaebcf375fe0e4be7d2fac7d22b73abfde3e5f51065adf2d138368758ab8d02a515e25185b2d599b270d7a5a22e5d2a2bdabb9a425b2a16c1a14b25e952b9b676bcdb7295bbac4e10d5d28af0549c76573bb0431477c8b5b5e1313adcba1da22eeee0fe1d26f7f87ac69329ad00f7fa3b2b8e949d1e5bc00a777e94dbdde334d7d644bcbcfeea88123a27f0b49c3e34836c2c7d5a23d178699d2d45aa9372a03a1ff07eda7cda8f4e2c626f05acfc630de846db2913f37b95443bb15e9958d58f6d26eb31831263aad9d2a27ffa5be1970ad5d80d41a97545dac382fb2557acced74ce4ac59b48865ebb3b41ac1469f7718628750b3798ad5af9f52d96c341876dbebd546672012ee70393b2344cd3e6750a393ad797dbb36cd6d3f68d30779a358da5f343e3c2bfee9f01cdeee5b19ea1f0bddd99dd69c5727ab7f2bc64f16c2dbf9a218ebad2a2340a31f8efe4010e9879805b466d2f10ecaa4e3b59468a75abeee3211578a0b2f556b09a6e29f4bd6749fb5f432e04f77589d6efa69bbaed5cc754b5ea3d72936ead3a6d982a2b3d7f04aeeb9359adefe91b6d9697a63d5654787ae1ad50f576c0d9539556d5b5a9b011a841791e2ac7b7523c28a45ab6a05c61749b4934ad6304ea1aea4d4779f749254239e4c83a70a76a934cc4156e7a970e03733b6ca24dfb4f1095994aad7427ad18214165ab963221fc777fec65f273ec67e9c9055dd912a4d7560c2bbe38330f56876b60ebbca87e7ca87b74b078c8dcbf41142467c81b73aa67311281e78ce1e17c1bbb6e8861a39ba47d4a58b44b149d4a51333922e6e8ea85ec3182f2d850daf1a39a647142f1475a949924eec11c57323aaa16fb196e258e3cf59a19bb2b0c38f366b5d4757babb5d48441526a0c1b26b0705fcd636d1e2b80a0b0885df9055b177c36c59239bac0acd414997ee5e2a9118593e6ddee6797336f6ca1a3dfa8626cfded02baa85b734b96d69b344d2dd3749ba180acfdb3cb8699ea4ca6f54f6ccef83c3ca73d57b60265089fd5d63b62dfd619f2cfbe51af9b645728dec97e58d9251b5d7e2d97d92210564662b072443da288fadef5b0e6fa712137a59dd60fde6702fc7b45d6bf7f1fbcc53f6dc4699b70302e87313eea55349893ef480aab6aa3e6d8ba9f9d456552dfc8feab7ddaffad5168dddd35a54bf5af88556ac4f9fa23eda8f36f4009ef65217c3e7b516e195b2115f34ed8b75c713f154a6973ce386602e75d4065c9dceba5a474b78bb2018822c9cdfe4ac69dad754e37439bb0f550fa2d056c957e30a045c353ea97ec67641160c41387f6e32eef36833676a1edfd28ea9cb0ae79627c7c0bfbf64cd99643f761de6022cc6b1381ecb71324ec31a7c0a67e1d3380fdb70112ec5e780565facdb13f3257dc9ee5826e64bba92ddb16477cc2727bb63ae982f2977c77c81d2b52fd9ad160924bb63095f728e10f3a9bea4b587813dc29c5293ddb16e5fb25bf425bb5b8b53f289982fc9b05eeb8e31df7ccc4cb0e6c6fb06f9a1906567625785bee25fb6fc007b78901b07fb46517a8d3d31c81fcb5a0f65fbb2a5d7295b7c236bb95a32f347b345679969b0afe8b9e52aff597f7cfdccdf479fa21f597db10c208ffb868118ebae5e9e35be41b5548548261da721552edc5eaa45b4a12ed617e9b23a22dc38e4ab53579273a55a172ca737cdedac7ac23276463dc3c39e68718e8b06ad39ec94b576d49aeb986bad4554955a62ff3a88096aede6647939449ef19f5428f5c068a090adf3cea831fcbae820a5499667abaacd1054f996d4aa94b722ba5af8bee670381d8e43873afc09bd4909185d76d9dea1080e416814b53dba6a0b4a3635b5aaf06a65ea95fad92b4e47a99c75d24e4c612d7a2456dc4052d651ac82c78b5db93fe9e5e3e4e385d70eda1cb61acd16b6aa717fc3f445d31bfc56551d76da5d36355878cf125b9355d5e670d585e2ed9634faa4fad8f4e9b1fa49ba7539ab3d1cb0cbce8ab4a531aea7e8efd6186c1d8ee635da983da8e519b5b8a22aacc794b0d25f35285a5c48e02b59305dc5a08027e249c713f468556c3e56170e774422df9174c117f02a32a9f2244d54ebc3f5aaa84d92559215afe1d074d126b549a2703685cf1644a60294641510698f44da237788a21437ec6159d5bc3e9f5753e5b0dd70686e4914bda226174689644d2c858be59b04ffba45465123f144a66a002b36c1d082b7b9b80a2f161857024ea03085c3344de2630b5633ce471ba41d9e064fdfa1ea8cfffb4b376fbe74b2246f6737a64ead1cb7cbd2f21a8fa7a6efceaada4e29a6c17e3462014ec34e7c1e77039952b6b016dac5d24cf662f6492602496ba9c4c7954a4ff9b65a3d609bc804bc6a32de5d8e8e721c8c898c40292e12133bf31c2bb00d8264ffacdd3a4b8211dd18153525e967174da2e817c52666f427156d9f243c22487e5112de10247161bde316473d09149402829062872009c7d81cb6d07643101e12048304e18020bcc95256b4b5d5b74763d31a1236ebf2ac356b143d240901410a32f7839631a4171ee69786204e6686c9a2b0c7d59b4af5ba48582408527373f120088b846ec566534227db6bd965ad9d841833c484f1fb78c7eb15eac7e9156fed525597e651376c50bd8a4bd3ae51bd556ac57776a95ed5a5325bcda979f866f071fe8dd9479b98e89b05d59b348a2e6aebcb2e566d9c7deb1a4d75ab4561dc7c17fb61fe8d99fb0a4cf47d82f1feb170ad5faf692e95f957bd0ea23af4aa53e31e8ef36fccfed8cc44df22d0c684c0f2c672d0c5bf41f051c254facedfa7a32a3a532f319dc95fda4cfa1fc5fd9c77dcc1f7e63fad7a17585b395562f7c8b27c5a2bef476da53b2adf2008512dd36b4b1b6c6313bcf8e2e1ee8f778befa96c27d672a54bdb27a96902c7fe6d22c7c684917f8b80e9dbfcf32f9692983bfc359a33612085f27a1a0d53004f69254c86658558822f7672953bcea59507ae4c3ab57df2ecc993674f1ed51bf4951b56ea0d1edb1a4f8db3c6e3b48e6b6cb43dc4ec2737d96c279f6cf334e8ab0b7f6575e0962dd6e21ffb6abd81c70bd3e31fc5246bc6d36fad41b3b247772a5d5a3b6d08bee28eab14ebf32b14d6b5994bad89d5a53335dd63ef3ea973c1d66bce5fd07952b7c34d5f7669358273ed5c6b9eb66bee5aa750a3b91c86682c5a3763e1f9f3176c5d3063dda21ad128a64b297f8edd1f559df1abb37969dc9ec5990f2124018a594b8d6363078c2bfb98d4eaedd845f59dfafbe3a9787f79f7dcbd7cefd2155f609d33490a4abad87e8e35764e830df17843f558541ddfb7f4f68da2b4dc9a2522b1fd6cab5f579c332cc99640276658b3c9671f494a2a2d794a1c66c89402e0f947d7378c0b5be18331fbb3c66edaba5616778bf2110f8787be70fb449bb8b2fc54b0de73b243ff04a67169d73e7ebcdb52cd925dfef2d07d60fca840f9936fc520668b8191844759c3f3a820517f45564bf614176dabb7b49c6d5c3d1c1e97f3c444d53a9340c852aeaa73a3be4a56e54e59ed93480c8afa98cf53dcd32729d66ce6b5eda22ec525a134df62f5a96a799d3f661834e9e22b09aad6fd1517d159c18c747496d2d11adc2d8fe117063a22074b373a51deefc1bfe337cdfa26e1f82ff859595f35c85a989d49fb037cacae9d14af3f9df948dbb1dfeb7b5750c82b4a9e5933dc9e486845bd28b80459f44c0b354df94f41163ca2e82d5a3508828b14c13b2dd43475ecf7fa0e0962a324f96adc81fa96f6863aaa17c5904882931ada9b04f7475916e3f4d702d33383e8e27a422c52acb4baf9fee374926f9838c2d8aa30189d152bec4ecc4fa4274f5972f2125f5d535b8f3275e6ffceb3a99daa6d9e5d53cf910ce91c551b88cd8a26e627da8fadd5a62c9932b5c5d9d3e676d916b9b7a8369bbac5ab9e2349e794dada4f2ad3619f23b146458f24d31f8a92d8cbb21d41a6695c96a264c5ef461cb2d6000681d674772a1e8baad63c5213f1cd0dc98855afc78506a5a7ada9ceb7e4e4255326a713f313b425362b3af3572e775b8fb365ea942553b4da63db13f313d159b1f645d61ad6621f717f71cdcc8900f13d1ffe80417c89926a7d5bab78d357def11f4ff452269d495a9db34c2fb596abba52e5e729dda1c18ef91de106f2d5d5b6048d80b3beb9637e4773bd750a0664afc75e4f537c318f8fea4285837c8b8eca4fff53dcb0d319e9e888344ed6ea1a1451144549ddad4e6ee4f7d4e78ac6fa49364d974894143dd030599b7c0e7bd3b01506f999faf8b9b2fe73a7d5676fc10c404eb453c6d36bedcd574583127c1cb997aabf37d25a51224b3bf9fd5d149823cbc22e41938be78ba648249e769a48d2145197764bd26e49a725d6d92655dbcd75099a4c3f9765720b9a5c982ccb5bdb255decef1775a95d12af9174e91ab17892aa6c2cf90b569eb81b1e345a5faa4a5a9b72accaaf34d8647ded6c0a757b22d1443b595d314555b2d9b69eb0b5c22a56d8ae1b3db491d5b0e1fe029c35765db60947db64dd5ed3d7d3662dac32f4b7db7a281c4fc5070b83baaddeebadb7e95639d94f7fa1a7ac95a8680d84c8da1fd4418acafae54aa29de6503ca12ad69af9f45c8a67580cb38cd24cac2ca533e940889ac86f7d0fcf6f6984fe18df0fd095a61f4c964472c5454d9adc1895a54c4692a38d93254d8cbb4894262bcac7d86fe3fbcceeaa1734a97b922808f501c774492587835469ba23502f08e2a46e4913ea63b14ff00cdfd20628d6b7e92ea7fd588ce3f125dc873fe1af00cb0b56277e2ec513b168bc3b6ecdfaa63389b8553cfccd940e647a29e0b7da226bcbbccfafb2d451d480df2a66f10e5212fe5e4ac40d52ff45f1a9a6ad091e55098428e097ffc5520ad0049be4362412345d71caaa24922a3b155d134832dc924dd09ccef18f48e39f6870b7da0d77ab7d435453245b4471a94df52187168fdbeccd754d9a4b0eeb92a2451425a229921e965d5a537dc86e8bc73547a8be497529615d94b5a872a94f10e2c150a34fa04463886aff95b21119ec7d8768930c47ad22bb3d92525b634836d1ae0aa2542b8ab5922828967d4dad2279dcb252eb60f60e9544c9107b0d7babc770b43ee8925c5a439b224a2e9f3daa19a4aa646851bbcf25894aa2517349ae70b34b766a8d0955949d3e3d6aab2155116a6c51bbd7298b6a3ca8396557737763a83121087e7622e19e2349e750045132848f97ced1c2a443d55a063e6a7c98fe413157d2137325c7ea121f0c0d1d1a1a1a37db3b4818659d03d6c6fc5a984743e5f5ebbc5d8d2614957ffb2693ceb497d65f96975e260f33087dc75db56cf1dc392748aaa06a6ead4609362fbbf2ce2b9759a2b405839bc69c0ece58d353d7a9499aaa3a6b022d8d7db1196b7a7ad6d8f82741abfff136b624e347497744118ee059697fe5af8545d61ed76e20c35c8e45ad6faa64d2997877b93f2f5b653bd14bf184f5259d84f555167fa0ab97128732d33be792229022d72abadc6ead319d7d168504b146b1491163d2d444fc8aa54d27b427dba7ce1264413ec5d3aa2a922cd7d85d4d537aa61e3b75eab1a71c3bf5d3243a746743f3b263eaa5395d9d1921d0e88a2aa222f1b42fcd0705adbdbfd52337096bc438c422642ea5abbee5533d7af3a30db210116b7cb6e2797671897f45f15eb85652afb5bb44ad783eafb2d7a3b41778a8b8276339eb6f55af172f0ef6b61e3e5ed795768de964f84af391c9c31759d2a33b74c31a7d5c21ab6ae1adb251dea11b86be839956f0e9c8d2dde21ad63196755566a3f05ab59bff0f6b6f0227c951de89c69791199157656555e5515757d7d155597d57775d3d5777cddd3342438f18490308d1e84003083108c9c072b8855918030661e187608d69d9608b676cc6ecc272196a30b6d9f7587b165fb285edb17f3c56d8d816062f32869af7cb88ccbaba47026c693a3232322b33f28af8ceff3f6c65bb87f6d44bd04531f6fea3823dac2ff91f57a239a252968a95b657e15850d009139ad70beea38f8699cde754e3b587a84a7822339c578dde636e01ce9e33d41e8b1306d9983e4437893ae2e76b8de949093280fbf1270d6607f1dfc2529158ae535f0ee60567c468b6ac26ca73d387ca9583cf29c6152c385813a9e638c56ac22a255d9d621da78411a5eac3bae6540e9d3e548eab2a567049144442f4d9836eca90a9086211f773aaae081dd8460a4aa1695447a819aa5405772c9bc01b5b07e6dff0c59cac0557acec0fbbdd81b7782bf01eaf4b54403fecf23d4c7fb0ba78f72ed90070a4e62b6d7d3bbf007009d551cb9715cba5665f10dc2546823dc6f140098f36ddb60d4f54f770f4b93ddf61815161dc37c8fdd52f3c34ffd0e677f630683aba27dca1a61abda706fbd754a3fbd043dd871eeaf7cfd74d17d10bd139bf7f0b30303b1b40fb5de3185b2122453be81bedefbb005eff8b5985767fdf1cb8fd631883c035f86e4ebbf318bb63c7eed472fe7d1b6ff873b632b7a64efb5ba7d5b5b91d0d7c04b872ad230c1a3e71ed63040d6fe7e30d97ef7f97e58d39288bf20825288b7773b8eac86d628b50b15d9b7acd44b36dffd3652366442eab8e7a3962c48ccbb16eb77b651b3e738a24a37f63b8e49c249d23aef137d12439458eacc3a953d0fbfa2f1c7c0b8fc57f5c40f02bccbf3a8f969877f52042658f211e5538ded1a0036be03a611f3cda6c7b6dbf1709da6c37a9b7d49e84b0e6c2375f1451ef8844ee50232f52239a7287699e3b679a77285ae4e76ebcf12b2f7ef18b5f7ce6c61bfdc5937cf17b532fd7e26245922a625c7bf99498d0ee51e3e2b22c371ab2bc2cc6d57bb484973f5a2e572a303dddfbabd9677be59919cf3b1f56d0302603c71d3a8250d9b198018e06d86fadfab2dbf648a91f12e8b25c692b3a08d8ec3bbffa7011f039514c1e4bde97a22b1b2b2b554a0a0542ab2b2b1b2b34755ff25852147ff593239961b7f34ccfb4a8e254ea55295f8b5dd958814201d801e2b1d4ab5229ac8abf1a647e5d457c7937cfeb1c8d430f716203cbe80108d33dc2759ef5eddaa3ebd00d66dab028adee7ddbded5d2501d5ebd60152cab60f1c5ebeee26b772523ba1eb930b23694a3124787d00de8b6ff105cbdf6788cfce8aaf763c2e97d2d8b55f1661e047fb3d8fb88a888efe1a1c7ef11c59f1047af9115c59bb12a6631be59547b4f88e27b7854f37b44450c7cbe2c476a12950652e73e3676f109c01f93fcd1c9974271215610cc5ede1fbebbe67a38291aeabad9b5b2d9a95ec77fe61c2dbec64d87354ec2d1db867cdfee71092ea1fde8203a8eae472844b823b4b020f83596fbdf6a5716a1ceed203c16b1dd6a171c370880f2e5b556bb451db7d4a2ad76dd716384962a1e7441a579a20a42efcb185492a72a4876fe40ba20c9e24f97e65eb15294d91e0a0802ac0882420a5405929d39736626fb1753d9adec0b15fd6bbaa2e88f4714f84daac94456755dd6e8dcdc91462286a938e1acdcb2f780bf45515499c81a6dd437daed8dfa5f59c9e439d3344de8f8651fef1266a18b4e300f457d39401df446a70ae62ff575452bf04b73d8427774e26836981ae9555e994b95aba226240501c796527c146ec6cd89f8f148428fa69ca46d630de730e0447d82bb7ff7c6a3d9d889880d6eccce62419a15651cb5f0a23f942fabfbbc62ca3695ac1cc9eb1155353188d3a282e329a9e6efb0281f9ccb271351252b1b7dec12c66b603144bf404be927ecfa2f9154880d4b80ecb522c1e7e5d507353ef15d862daa28f4c15aed41aa28f06b3d53a19b41bce27370b69ac5bfc7cae75045d9e2b40d5bf9fc16e765e80033dbe5a9d27b902ab2ecbf9f8325dbc0e7a6cfb1b8cc38cbe54565c7ed0346bad4a306b8120b0858000ff3b86ddef584016e4e586538257d5206a864dc470811f60b3a395038505825448053aaa0933f8d549c3b704c657d7aee2d96254ab3fb1a93f02784f4bec075a4ff9bc69a824e3f418860dd61dd6e093ab99c2344381e4b00cca83abf96bf371733b939cd5dcc1ec7dacf843ad3b05c698f23e3f5458421b131c26d32c372e153816145eccb30369ae5d12a897a20f38721dc2ca5639821641f777ab2b8fac06ed40e2b8f6da8c6d988aa3c4c4cf2b0a246ce1ab06ca81cf3fba1a5e84c74e921d5783d0f39e9f005740df5d194f230210f2ba94755a37781c1039d578da56874c9b88d07b5c87cd1cf4d3f085d144113682f420c5a5d209535a1b53c3e2463bb10e311f563f80095281078e879183f7e8b1a01f5712c7f7849cf6b53183f0fcb784aebf6badf90709510b9f7b7a16a1d95aa22bcdcdffeb80a11f596c7b1b5a4695358c6cfc3784acbf7fef1c5d0c1d35234d4c77f4926a48a83ef85eb585186423c16a9512e2cf72d9e39806e22d2db629ec6ad48a2771e36ad8c605c34668c8b8690e9745834462491a8673ca36b9a5dc3cbf47d18f014c841ce3a2a872f437b475a25ac730fe839eee7ecbd892fbb7c31c337f27f1c8b113d0a9f0a8fdbb72f7bfc6045120b2b9bbb1c00e45dcfd5f7ed5c42296609ee2b67ed1653d1977962ae635386afc9e0651621c473e56282ff457a611e477cfaf58aa527d209dd525e3f1d3f2410fcaa60fd5598088a00c27d6e34594d46ddfb04109812023469e49f474da2ebc4a4cfcb1bc9438220dcc8d76f1404c110a870262e1b861c3f235021c4c00fe2294b7ecfc76d35b4b2087d621aa6be17bd76ff890ff5bd351266f9cfa7320a9f4f95cc29924d66bfcc3550e70435d5582ea69af4c4a8a9e71b2b0e4df9df4a8a3a2b926d2fbdd35f7967ac29e94451882e35d1485c6e06adf8f3ed08b0a83bdc1fca176b308ca938197419fe0fa6fc46535c78ad9a34d89d547feaab918466a96f9c9514be55a173af532d2d018045f12b7e5fbf226221755689cb11438ecb37dee9dfeae71745aa27fcad099d4a45f60882ef4440f00872b9d785e3fdf10f3afc7267c17369c9837f368c6da36a5c4586b1695870873f513df8c8db8edcbbf19b46d5d836fc2d5563931b08fee7db0e6f8418da07e1117412a13207dd654c253c0ba4d2ee5719d04a3057fb5af9409923039dcc61aafa2a34a10d8ae43a3307a3f78a140850f216417828a8becd5cadc66c511674205226b5fe0aa7e077d511c0667a56a2bde7fac99c2815250264d193c42c51dc0411278852aa8a2049739202d246874a39893a1695b2123d363327832c85713fdf13007e16b9bea4cdf9a786c0acfde75c2856a4c218a07770370d15ce1916dda074835a46ef61d580277a0f0f5a18801c244dd5a8a986df4237a8a1d68c778eae72b043dcc738f6e7a6715b56df76e5b9210cc44e6286a712994c2593599399a3581e6714b8dfdf58c97cf88248a97881508af0d51f5eed0a87e17790c1106150d909bc87edc42a382ebed65985bd3249c77bf9789ac84f2a858232b3cba965b3e0ba0513b64d4d337b9fdc71f6c0478d2ec22524a3e4102e080e70bd9a097eba8b7c1a7eaf61a88754c330d45b55c30c30fb7eaaf7a41a89f81f7f3f8fe6ea5f335df0309f2d66812156780cce228c58589e8436c3b2086d755614dc761052cabe725f77f47544c79f64cfab069d7ad9cba67838bc61d1a9bbef9ea296b1db167fc532ce8dac5d7bbfe12d811edb1db627c69ac326a3e072caf648660bbf4989d298819111618da655f20d235641c88f58ffde33645a64a6c6a16da00fdb0c7fee69f61c394a188be0cb1d2eb3e77144f9615e16768d98920928c40a1cc37e4cea5800a1e3dfb6ef70a295effa77724b353e62d25e1764959ad4507b8f85e3bb61c1a35bfe8dfd2e6775f90ebbd7bdab26551f840e35a96584d3c1452d026834d6dfdb99ef4683f48ba1e0351eaf3b92fb76d67f98f9df11c549ac8abf93f7cf399201376558fe66154f8afee630b982df1f0c9790e67ff96dff3e50b75d5f5e1346891d782280eb50427feb6d349f5f5955e9db6e8b513a4d2dfacb7c117b4efaba4c561092df7e1b555757f279b68745a729fd65be88dd90c914ca8514d3293f2f74e08b288e16d13a7a16426537d0a27c65dd25b69583b2019487bf553cc6c9c0dc6e756e7df51a0b502a52b7e5b84b7cb4682e3984ba2dea110726f351f3b9d79d9ca5746aff1e796a15d6dc633333129623b2457abf1d54ead3b36ca787cbabe574ca4acc24e2a9d454ca10e389c22f9fc2732b8b30377b424b6babd337386e79b57c7eba63ef932d4995b00cbf1f544e686ca74879b5ac6608565353a9543cbd3f95a92cbfc25bf575188613fa5a944079e6d109f1f6ac3e7c5e632412333073b497f818585a6ad5971d61cfecc9eb3ece2e29acf4ae9457cbe5d5937e71f8c04d07747666373d7be0b113b373bce761e51782fd4eae962fcc1e38309b76d9a5ea07d8b8c5f1d23d9e5918409732ce05bfb4638c65c50e4a3610b02feea34a2afe510e9afe51ff8f35ea3cb1e7e10fc8423cf26656f6ba91b820ffe2cfb0f2bd12a5a3e70c69300e305e385e36638c55a51994ac4f0247c3f8753515f7ffe229f5d7fb6785fb7858f4f0693962fbf06903cc3660b10c65b48056d129742bba87e7b2722a8e80b572244ecb9f96272007e53a8fac2f25fe9de0155b598b1964f2569645093d6965ddd81fc6f49a6ec47bdd2793aad1ddfcd1512a6a03e2d4ec99ab0cc7161e8db97a4d8f9d9452b069a8c9de877e64440a3e37fe1b8bd1ac0c690e0996174d8a5e2944ce1b36dc6f7168aa9faf0911598b57e29a1c116ad8d057188fc98a6e40972350f57ea92babb2acca5d3dce706ecfc5430ce92dd86679898b50f2eadc8a65d7ed9257a276ddaedbd476ed925db2dd7abb6e075c04b3d0ae73e7608b41700af9ad5af2feaa1c89c8af326b878b9a5ceb746ab2563c5c335fe5b756ef4fd6b6e6dd84248a52c2bd629aefc104eb1fdad08e9a589e91b17954dbf8908e097e8f69aa5412055910790e8314c4fa77510c15d0123ae8cba33bbd51ee33452f8ef1a3b6ed52b3eebf605718a0126ca8c605d5e804cfe41ac5e61651e96d14562e848a3aac1b7f2beda47bed84e45bf4e5648bde4647aec34629b41f1d45a7d875d8a51dd7e2d5ed52a258598366bd590afed8ad0fff967d3583f4c5a7c1b574f2e786ae662b9fcfa726a5447ef09f2b12888b937222934864127fddbf9e7c7ee88aeecdf7b6bde48b867e9627e2cda94a53334dc734bf115ed2c8b329a1258e26b6f3d9608b2c0efca4ed9663bbfe6bb3ca8d780bd066ec950bd0e6add7783451692aebdfd5ec94142d50aa2a29cdb2b494b2e95f8a9a56b44c4653d2afdaed11f57a322153ec019525229fa509aaa564cdda67ab726a2b7be2444693535af654564bc92f0bae8ef191327c5019a55996c919cef5c3ba46c7c2299b3169842d89b3d851d75b8066bbc110426d6a915db9e9608bf7f9826af42fb8f76f20c14141380812582054ab02e4b382b02a0aacfca5a1768bed09c758bf6b863a74e1df06382088c201005b90606a0a24e1b80ca2f047028660797e78a3cdf61fe4d7f8cfb58d3abb7e6fbe88300bc54596a3e57f592cce7d1f77d2ba1c2c83eefe28f7efdf2f525aa2b82c451298962815c3165da14a9937ddb1db93dcbcf505542747d57481e8e4d6179008b14ddd3a4a74fadae0b98923cfad846a4fffd4fae1db8566bb9f77b9eb13f9766262c2cb66bf7e1555b12256ef12555cddf5ae9bdcfcf864ad8a71f51cc65536fff1fb2931f6e70aba1edd8436116a571af5658b12da6eb52bd4f207544adaf59159d0b61cb7e2f943adb7e07f27aee312ba4458c414d7c1db3958f675efbe479efa6bd4719df62745819068c4988cdb77ab4451c5f4072e70543a43fdb2214c182001c6d87604110bd48d4f988e2e46a4c844223a6799a5b401c47cf66d54255ba705a2e8f198268b5d6dca6b7b49a28bd1db81ca5a1427af727464b8cc9eef47e353606b9666a8548d58b14c2b6f988e29491305298a15d5b449f4f1dbe816519f020202500cc09f1bbf471499a888da2c478a45070eae6b97619f12af3436b67f31624423993f62ddde1e7ef19a55b72a5369d21f464e17aabf15cbc40efc2aeb4972f825fb2fcd982aec0932b7073cece13bd51a7ea376f6882b3b635df245ba65277caf463ab56958b4cdb544bf6853cb085eab914ebdc55735da95602f43adb4394fd8f0b77ad2d72077f956eb1c2ec1efd0225416a1640dadf2f9d1719985701fe3547299ebaed1dafdf3dd9324142a40c58a4841d30400ec0015cb2285b240494aa49600090588342112c80a8214a52fdbed63be47218f8a92242ecceaaaa23ddfaf3e4a14497a61467956c55f7b55146bb1dc51517a0bffb885a16b4def76a5bb77787bb7932783f142e9dbfcdae83843127e357a2b7a2ffa35f4df111a82e22b0c81f2059ebfbeaa5e18c26fe231683f662e85f40cdb9f51ba19cfcd78426682658fe31570d03f2eb576fa2dbd7b9e1e6b12cc61fc82b038ff0c3fda6280a3162ffb0098432d6c301da0b7ed0649c9325e37fb700a9bfdb6a701b104e6b302e6b36276666b126c062bc3f2982a9c4e957e5addd0d39fa606740d8b7efa0f7479458e44817c9a71e2315e67e6735d41071162f990a516a7e867eed51c9779fdd9cde6c112a19ee135eb3609416c069eaf8f3faaee95f489724ea5a5643c22caf1048e440d2b928f4e4e33a8c4e9c92a688f1259ee3d160492ff6a568842bc60bba5b892b58a4a82ca4ade888842466e16bee73fcaa70a0d390351210bb2749f242f8651e3216ef225348750a251e18c0f2cd69679ee995985c1e98789561c86deab3c663aa422493175c2918d4ab36c58d48dc61a67cf9d6d4423a968bea4dbf0a81e11d4d64c311bcb3a7ac2ce942b991bb508c8c97c65ba71b6d138db98abe42662b97c3c3b162715414bbe8691ea6392270a311e2b350e7c364adedee42c52fe1795b56a352bbb059d5eb7b33b1b3b6cb078286e7f816eb6770b74bfbc2be7fa53bd0eb7cff89fbed2d74d97d05e749865189c452f4277a197871e80d0d1ec554a456a871a2b4bb9609e681a18475ca7be2cd9ad76d3bfef6e65116cbfd1b35b6eb3e23a93d0f48f41d9f632a176abdd5a03bbe9d73cdb693709fc513467ec5b4ba6a3d9a46ec5561b1c5d26524c3a930052a1146ea9f5beba98310cc5f903ab9450adacf950b550a984f59257acc279af144fe80ececf94efa994a6e00d341eff4e4c99265895b1e4deca46c137c949235900c8d9114d27a2226369ea584c3c0e2296a3a2468f60a2e2ec314c8f680f893a392250453ca38beb38fa708cac632a2af0f663165917df7944938e13fefe313fd5124230b8673cc69b6567f4b30c87ee194f54a6046e8d597a321b4d274b050960d24916231abb078dd570cbda3e23173d0a2f90b0ac8844d722760ea090349272ef8dfe35ddea4a585631995662df89c7691e09577f70f50bf025b8842698c5dbdb1971c9b0fc59864ab9cdf31f27013e713f1b35191aaa7cbf217b1958ce7872eff76ba4436af39f7bef80c7edbd9f731bc552fda5a764757b5b954f055c7847588ed4244265caacec157f82e53e4c66a0f5d844d25e05e1c0093917eb9d370cea57e041c3e89d81f5acb5ddd9b6b2472373bff8fa682ca9fbc54acdca76b256efef7eca49a33e76c8168a3104b5d2a8df162e773bdbfd1068e874c2c4a82b5696e71141171e41f3a88150bbd4aebba571db49e0dba7786c4ba2d57626a1f47032f3b6b44b15855ef08bcc9b4091d62505de9409dbf6485820d3b7e74f9f667e7a56c0fd122152efed432d662c168bbdbe8fe5fe69e63f9d60f98cfe9be3b9150ffc2fcdf51cd77359568f670025e51d94e174b7da0ea5abbd4b0dfe56b48c7aeb0360f41630af45d4c70edf57a96aac84ba40b02608d9ac20689808130eafe0ac3b2108ba40856c160fef81b33bf78037472cd1800f341bbdd784b58ffcb97a7c65ff49562e61ac095498c80a54d00561c20d0fe98c1efbe9f618e5629cf0dff98a0176cc62a1d10daf34ba0affd265663de592a65fe555b5abe97fbe3db021f6d91807ab0cd760105b9143cbe818ba691ca3277476bb24a8b48b7489ab5ccd251ed7c272c576b4b94cd56148d38eebacc208b0cf7dd5956a75a5fa08f0e5115d53342da6115feffa6fc32bbf3171e6393949894beeda9a2bc59521e718cefa3ff515357f61112da6698aa6b3989391953f99cfe7e7e5a8209752a9922c4443993bbcf6f9300b6fe0bb5ba25edbad782ef5da84b65dea2d596e7b12a8b3dcf6d6c06df99be9f015d5d26bb1a2b76a5c779db1ea95ccb57445beb19ccb7572b9f28d72e5a9dca953b9a1ae1f76f69ec1adc4e4cccc64a285cfec750e358adaf571558d5faf151be22d2b2bb7f0f83186cbff2264a33d8c25d7978a06c443fe8205c248e3b3ee3838a92f7ff6b385fb92cd955e77f6e4ececc9d9c23ee716675f81adf4fe854a0d269271f8cdb0fa291ecbb39f2f6073f6e44d276753ae9b6295ff36be3babdecdd5e88d20980782f89b4bbe66c891f7bc1dc4e32eddc187de7687710efed5a516955e29f1ccf937706791543d4d948cf22a4559e00b72ba4afc4d09f9f5f45f1dca7ec0bc50af9713fe82f83f505ea5649405be20a7abc11e6fa016c7fce8b258418e6f1443aeff1d825bf24a6ea15daad3925d771db208054c8ade1ad429a9c0379e77e7d1dad1dedf1ddb7af6d13bef7c1d48701c923f0b221c7edd9d8f8304dd6dffbffc0f042c5ced7d51100efde0aa8079cc02e46103c9c81eb21b8fa0993fc89da705ef90e71d3ae51760721f6b27583f75c80b65368047d02c6aa23574c29f5582744ec279046dcb1d86da1b2177f35aed00ffd4f3e776167bebd64381099e38985aa9e69296e3ce4d5457520739df1b13c4fca9f62f4cd78c451289483766bae67a249138b019207466cad595a89ec9a657aae50cc31f3fef4f63e759355f36b5443ad1d1cc72229dd8628608c431f7b88f2dc522274b85229964b02941b7b9a714fe4d96b55e5e93e53fba453739a495a9df021fa69645fff89ba6eebf8dbaf94d2627f25c6e824c16b35d648c977bd01a4250772c5a6a515fa0a933b9aebe009e434bc4adb76829076ea54de8aa3fdb7815af4458a88be5d659868d0114ee7eb32cbf59feac6226d2423a612af937266f5b9dd11e96e587e5cfb2fae7cd99d5db92bfd4dfe323fe0f6489b5029a3c34d9d99c2bcf66b3b3e5b9ee9e0d6dff6b3a9dcea65f397b76bfb6b1a71b6eccfbbb76f2ac31b4e176e111c611338596d0aa3f52b4eb5688fb1f2a9615e688b6082df5c7399e63ebb03420b75fabb318b7c1cae6150615c1be6d56834e73ee2fe79b8ce6e6bf19095d953437229afbc38a66243a43f5bcff4e70e5319248fc65fb05d9ec0bcebf7065e58577260c2d8623ae2aaafa62bf665d3fa8f2f8cb1f2224fc0cfc67e431ac3d892c02a139b0080db4ea667b011abe56e72d40ab5d6eb9520e88545a228b40430a60e115bd6f6532ff43156459a1a628d644d1f48517419bd36459032b93014b93e5dedfc3d4d47b23ad5beebea515f9d71b6579d54889463c2abe4e9424f17562341e152712116c59f84659be115bd6ab5575f14c2c178be56267d0985fbabebb5f7a04c6670cb463a78ffa7c9e2a5b03592ba88eb8a98f2874a3cfff32a806fea183f008aa2024d59b0d0f0f7277fdd921302385eb93e0d8b0d58dfe0a71f4dec755a3e07e4355b1239acaeb3365437dc8d0cf6bf9fbb22e60553754d32d984a5dd1ca195935e8716af06f966146d77cfd21b8d0dd96de02709672ce7dcd2ffb7db1a49c2cb8e15f5e296424f50dd4d67ecfcce08ce4422719bbf9622c99347febcffcf2b18ff9e5b7e62252a2607c54556df395b6fb7f9949044c67b8045d348f50b948ec1ddd08ce4f7776e2e1982bbb4557ce56b3c65179aa6cd2eb26758976485c7bd270701edc27dc583ee6bab13c0360b8fcf1b8199d4a7c3ea54c44ce2b5accb8204a1b3197e32fc2037089618c1d41c86d3227491055df37d5b1fffdefd433c0ffc714fd447334f1a81f747a4b443727ad8944ca8a90a4f151250258c254c374aa245762d119235d4a5b86daf507d1ae6afc318f3b4dfc8222512515cbeab2979b8c44753912910d4bb79266d52386aec62172473c93810f30eb9a5f14c32054ccf81121c04a3b8250a25ef12a3c668c4572fb7d0cd2f8795f17c0ffc7668f71346e37e4639bff897b04533fd12d08702ffceb9863de3bce9ae310cafecd86da2ecb826e0456a2fa324b92ae2f3bd2983db81f0e2ca04cfc8e08c455dd205ed54c5aba65f8d7a2472393394fd6b3b1944225e517e2991e9f0d5991e59d7a2a963666a2b18a5c9aa258a358c210513e6a2449c44a2526ac49538fa4e3e185181f1fc405f7dfade05a12fe6d6e392efbc72c1eec7f6e230e391659da75b3d14a8c3f94306aecc24fd21de8fe3b6e0093737f187083cea325d464d96f7668df5e84ca2a389310e35867f5e6d8d25f4825bbde0efea00b79ec18972d7d4b95320525ef7fc9437f57912c9f65ff2e6f4ae20523665e340a0929320796ff457fb9ea97d5a45ffac58b36fdff427c0c5faeda13a2575c73600b962c0d6b48e55e83565340596f421efb8b45cf9b86faa46ac83519d6ac89ac35e917f945bfacb1fa055af31787ec4ae4f6a84dfd5b8813f1fbe2563f7e4e00f8903fd6b51b2d166bc114803ee1d30247d7e2d013fe930f3c7e8ffd280399fc8ce321bf3f5f60f8c87584d8799a1e7f70f570d95e65b05ce1d2bf43fd67bc009a56d00f78623c9f154b6a8d2d1bd19a38918f8973daa498cdc7c5292ca6a594f9e709e33febf0333a687b367eddccca71f37d7fc8167ff34533264f98bff9801997b3e6fb346dc6883c379a88bc512bf8f23ce338de62388a55b484ae43af4428316615e953cd95afb5c173ed526bd1d7ba2b2cbc8a2397f1919c831778fed21fc749a95859842673a4fa2a0c639b5c1f1fcd84da78cbbd3309889e160489ec8fb762ba7e589d882dc40b8a26e8b2a698021811c3944a8968caae18b71eb073e574a263e66666a235d808ec5d9755e3ebfc03fbfa8e96efd5feab1bbb5da082883b16d8c69471bd6e44ff582fa9321640901d2a432c41a23163f353753b71325e9bd2b5d8723faeff1186e78a80211c068c90361d7043fa023acb63a2a521aa481e8c5a0f6a6bcccfc28f505f6ed152bb0e9fa640c97551a0645aa4e66d06505295084437442a832c5de73e5ba4f023ecf3f1dbdddb41ad4aca0d9242c49b7849c4aaa46cb17297e6b76c717b37424287bd23139c65613c77c15b763d2e3f45a155efc3089406e801598b678cc1152b5b33a32ff2e5a8efea0e7951d4848b3ce5f0e57cf120c336f08bfde4ddaaa6a9ef269b3cb7304857e771b14fc236d3fc4773cf4b3b6da0b11db6bf66ddded116ab2fb7e049856efb1262e52b157fc1eae572bf3ade0ce7fba2e79018daeb0e89a443edd05142ac0304db2c0abf18a6a572412bec37edd3610d27202d07e8b10cdbedd8fd4755d9100ece27fd7738e94e9bcca3614ebbbc61fea060c8ead1fb61fbe8fdc76a8a29d2f93543bda81a7153e01e0dc18cb386b5792a9a4aedd8fd47c331f3cf8425f8084a33ae674279e4bb6db941fa2e4b7bacc0074b5e269dce78a523d717e3b1cfd238fdac6de6af874793662a6526af3bb4b0948e7e82904f58c9c5f943d7717de50757af08227c184598f4c9b35a4b2c8fa8e4ab2884e1c6137ff473dcfa2068a1be0a15e82c4996b82777eb27a528f9e4cbdf8c53478ea6b2d9d4d123299c8c1bf68ba7445bdabb245a52e6d5b611ffcaed8af2d3eb9f21e4337f8a5389446a62c22f71f2e0e1f44daaf2a6db14a59d3e7c709047f56934ef6bbb1c7d82c3b4f8424108ea53244150087be32759620003d464591ec1cbe63a2d78eaf0bd8767370a32c81a49d0e50e87f09b3a98aa53597b37552cba5c3cbb74f8dec39f5089204f3323fb4199e1424ea4a92d6b04a42a03064c27ebd452e8bb35992e17a60ebff2e775d9223c08ea429d04f94481dca6a30c42b1616cca89c0427200fc41b772f4fe77dc7f7450b4efbaedb6bb209f9e4ba7e71a7eb1720faba7efa9460d231ae62a314c8ec270f4f9d09715ae07b13eed4126233354717ca66023276378c250efeb7b3eef530df173a22c7e4e3c7386b93b9f6b14233d0c388555f1ef4559fc7b51c5290c6f7d976a50e9bcff93f31235d47711f1fd18bf5f6c1f7dbbdf76e2a4a6fd2fac8a9322be84f1252c4e8a6a9fa387f9be74ae710de32eec64a31ba72bb2d91716dcb019e662db64e55015ba831bdabbe06f3a7bd62f9f1c54075c7197d0049a4707023ffcdb119202eecbd80e8b64acbeec8c7b25e8d8a8c62d55f566a3d21edf732c30d4ab8fa321ecc4dc856eafc31cd8675904c659e6d77e47dff9fd1bfddacb1939c0befefa101b9a9a66d8800c4d77509d63548ee75483a509af1b6aef610ade4ea6011e897ae6cc082381def7817f77ecb041b5cfc5e4cbfbd36819a1e026f411df19929a3d8a4b5d62e869b4b800cdba65004b6d09e2868e349b47c2e80abef668b696bd9cadc1d6c02776f865f1f8cb0e8fad5fef1dae540e7bfd781abf3f8ba8c9fdf5cfd095265fc1a5555876daa54ab36ec1b96b7548358c1b3f1359debf1cf98c7619bad7ee115fef6d4dcdcd7d2d572c8eddaba51faf677c6879da5e9dbc9cadadd4b23f42973a95c39e7738f4e9f3fefc184feee91fd8333ea94026077f6cb89ecb0fa5c13cc74ed7729d11da95b07db9cd384183efa844bccac847e54b10884a25bb944a15ed29ffc59db4f36c39c55248aeb505fc6f4d92532959e29126b23ec18351ce73a8ee6b6d0b6302b7028c852a3ab04b26e2380f6c3f307030faad81e33a6d3707366c0c1026b35fe7ec8f7ed1e176f64798c06c99536e2e9f99322de886f459b06d65e7fa61c277731bfc13fe9d4f98695189012414316d729ef33ecee6141b1539afed8e9ee3dd3ae88510bfcf145934bede1e1559ed1114adaf6bf417a916d53371276965f4e82f96964ba5e512dc324c79b2b3c853a9c782de195fdb083c67ef6fa9a65143b7308d004429b6f43b52fe314bcfde25ac7a503bdbaf8d6392265119a1691865eee85304e0427340d9388a10f60eb7505828148ec3d659ace20b2b58c5ebc113661d86750e52df7beafc59ec6fc7eb033c205f0688a1029a61de297b2c7eb33ecebadecf37a603f9cd2ec095acd5dbf2cf672e16e062b8025b56b6d7e56eb04dbf5bd50b58c5677bdb799e978bacece5c2e206b00c049687f075ee67fbd00af6f7c567cff7e5a083b0856cee130e3591e1c1a35c774bb4e49584959786aac74b65ae8ef46efbc18dafcb9fcfbfee2b1ff4d58d0fead107fcf33d10ddda622413d2d5ab571f874bf0e13edfeb756186e580dec62d8c0e60786cbd3db61e3277ad41aba150603a456f932a1701f9d5ab7ef9be41b3f26b43ed0b9bd4b2e8a60477732e26aa283fcb177e71150dea5b83ea2b366559eb6ab2bc291a617e04305c3404b4d9a84443b1600471eef1b7a7f4b707719970593552903d7bc430e4b35f6283306f370d63e03b0ef33e1b635217dd65d8e1a6981190317b18b4e0702c952aa6522782af42671241874906c34006f7f83b15533d89531384f40b775029c83db9045dce9fdfaeef38e1b0bd2f117e4c9665c9ba2e9f9775b67c58d6f5333c633df9a02ed7fcb63f0e9635598747832cf9306773061e412584daa5443f9538d4f8715ff7e75bfe6771755a528082226f13992d8babd5a0e58392024450f3d0a1244f7556f4ba83fab09ccbd0cd80a3e7d11dc4cb8d3508c1ee4a61e88280164fd76266926a65866b755e35e82f2b8ba7374f2f5ee4df2498b5d38b38235703f0ab532afde54cb6767a71f134ff0e5164c83630cc85fcd3e85de883e863e80be80f7719b39e81baeac75d1fe751fef7fefe99789843f41b7ff0c8f66ed9954eeb19abbd8b3fe1ce901f506e0ded3232a0eb4f17c8ba6bf1fcff90fd027eb30760132928cfbcc8f7720e40fefc29bb7f8be0dfcec15750f79c4928b55b6da9100b09a976c176f365b480aac57149e0a0e2225990a2efb5425835a8f598ec01c9d762c52554d88395bc82f70894b82205657f4e14b58a862578acf7042455c358e850c99468c7bf947b155ba558110d49c08aae1ba220c8822ac563b1b8a40ab22088869ed73489d23c076bf89ea2928fc8f247882a89f9bb6366a5a2db7f12a2077eddf48f69b2c3db8eaa890296b12a46228a22a8a22162ac198686b16888aa20aba512db33c4387980c55a2438b76921561e939112a5a21d38331a7d82e360ae11506f0b1e1c920436fe910871bda3c705f28ffe1b23e4ad2c85adab085067141b5dd2a3515d6284b98c68b6efbf6571af2b681da1328b1d5d6446a280492784c5f20208f4f0ff10cac365f45ce555709d55a878151e770c6f3f7abcec653396444445a39a16d7d5084d444459c41837164fc67389eaded46c4cd5a836a9ab449c5de8fd6aed0d37125550e82d3fd714052d9229aab2aeca52244123869636e4a8ea4b518a168dadafd49304030898c4145d24292b9f8adf74f8f8e491bd0494880af4d075524416421bd5e70411be846ae8088bd1a38416bd0a7319f19863dbefb5d06eb5975d87b92b59024ba5d96ab72a922130d7d202b45785762b0704be199b31234e243f9f9aab2cdc64c5044114405694e2eecdbdef4f746a545024915050da278b54c3143e1253141904511062d64d0b95b9d47c3ee244cc99e2eecd2bb4d69990a8a0d1e2c9b60234a2a1206ee40b7090f1f504d637e60689958afd6489587dd9b160ef39d992cf1143ed9c91f00a21f29754a3a31a2be765f93c4d18608a2b52d4507b9f3212e3c70db965b8e135fcc69bb1fa72ab71ade3c27a70e0de93fcc0b0ee1f78380e2f8e32a8c010fec6b08e68c56b3b7d2f047609f55ab8edb8b42279adb64b86c589977562d9b5f4fb1992ddcaa36bd958c7b25813a4d9cab04cf11ad6f27d7fcf8d1530d86ebd6f0cfd26cc4f39cfe24b9a8cb5d4b608ed4fb9dc5deadf552ff4347a9501a85ce8872c798d569d1bcb03e0393015cae27fa8c2948c77c9baa04515d3963536396bb26d2a514dd0e5772d167ce92ed7c829866265651d2bfea0a7605dce4a947a32cdba869536d3553667d7aa69336d196e96ca970b8b8aa1e41a39aaf03491abdfbffa1981c0efa12ac3a1cf7133ec82c092e4dd80cb2080b45b806685db47db7d736d30087b8d4a1076cad2ec991bdcdfb502c7272c6be2c8c4a953fb2c6ba24213000aa6111b66f6db876d5bd24177444dd2de9b3b756ae288bfafaa499ae8e8a04bb67dd8de3f037684620520412b13960534dc71dfa95313152aab99b4420d7bdfacbfb32dc9725cb745c0f29bc3f3e614198368eb7159966cffa4b3fb6c832ae98c2ad3cac4a953dc97090fc036435d64466f36b035031a97280cd5fac452dc84bf06f6a016480d8d0adc579368d2f5caf36f1525853cc04ba6edb5fdea122fa9b471e7eb44daa5626d2a1f333f98032a4e130a13b97eadee4f2147f56055cbf56b97247afe0e3e3ed321fce824d3d8f6a293e8793bd91e6140ec3d5e19177dec67581f55347f31e6ba45d78d8d2c20ba5bb2cda018a5403ee7ffa4e86e8e2c2e300a39bf78fe2e35c6817ef587016650161d46f7a037a277a25f4228d1d807cd3667165a03ff63f465fe09b066a1d8a40d367c371ba522258b5069b3c0fde0d30cf7aa34dd76cb75eacb0dee74f7a7b2262d150f40831dcde2a4be7cfe4b8c2979e34ae10e25518f8288154c64c5a6b2ae4775fdb00e11d994892249b22c2bc448c7f5a84ecd0878ba7e44a2a244544aa3a6248b201242253da2eb7b751233a27a246999f283c010f37a4c75bc461d1a7a55c5fe0164d922fa195dd6f50fd851459308964599502a2714cd322354a558573422fdbcaa101c93052a5359024157344d94892526f4b86e28149e355034b777ad063cf5ff242078778021c6df4f94e85b0c76bc8de34af333ddcf4daeb6d4b87262f1c5b37e941b128098bf991f609b2fbef5cc17e55fd39302820747f41f947806ebc08e1761dcbeff0ceb5bc3bd37af7151afedf8d56b15f0acbef1e023bb5e1c34067b6fef5a6573bf2f2f49f0bb288a104806f0e0d9563bd15a00f85c6fd351d2a98be539ed0b8a5986cf7e419b2b5f4ca51507b6139568a02f7705ceeb1af8434ba342ec2c04212d7d1fc702c0a33347a7aff483fcacdaccbe59060b317d0cba33c7a68f672d0660d1b5b2c773b33339661dde983e361dd8c0bbd04529c68f576a36169eeeb4363c989c3e76c3b1e964ff6caf7f7066ffcc95f5e963d3d3c7a6d707675acfcdcce4fa7127e89f601bb908b563a15585c3ee380124d0a36c1658500d7a13b5e84dd4505f0c0bfe88d6fbaae1affbcd06b35523045d5864c7eabf3523285ecdb7ecfce5c33b0e1ff2ae5de2c72af7d93a7d992364af2336eced7d9519341706077b62e7c198fd08fd13c3684389983524e58571eb4efdec8edf417ae7d199aff1f3c241f8225a62886c3cb32a50f526c11f8d9788e5e6c0f5253aa78d5bed04972a16c197be1bd45b056f2900475e5a00eab1f834db621037cf9da936892547642ccd4e97a692944e3cb7fd8688b9ed553f1fb77e106e9a3996a49f49c4258361dec467ac44325d5e2d3f7662764e5d97b1a44a96bcd79e2ccc68696df944e2e389d8ff2789108d28bdffd2df7a705a4bdf9549edcf30281c1593ac525e2dd7d9fc74b58f13934073e828ba15bd1a21d7d7996040889c70db8b10852299046a31acea56d36bb72a25ffa6b6830dc40979d3830d5161f77689dfc0910d8b42a578e7ad94c2bdd4a2b752da7b27b5beb4f4bca5ab7a5a1470429244d7152529810531ad83fc22392e084204832898a620028e0882109741bc74ad0df0c16b6dd9732bb5fcf3527fd97b2785172d3d6f299714298ea74551d0754114d3714cc5248e45b104911816409641c0b10848388af1aead7f6b0a200a7a5cc0a0288085b82e88209802b747321ba73f361f67514d43b6bf613203fefe525665189383c1d6a10354a566837d7e1f7a58a276f45cd4a670335f4a0f4bf443124d3907dd145b01a84e1dd8fbba7dfba73c2a419e4a1b51db8e6e48540f2bd4a352633e934c66e6595e483cadacef6be573b97c6bdfba9ad7063a7717757760e7b8258e9b3342b9d0f7466d72ec9ceb186e8e953554d3503baa61aa463644cd795096b3d6059644ce201e2ef09cd1411eba8326117279dc675f6be1e1fdc57618acfad1f4f4b2e906b127aeb97c98a623dc51d4aaec5d4f4d2de579b0497e692ab5bea93ec9bd427d4c647e9e6b9d659783ef7ad401d6f812bb4f0c73b06d3305b7e9c4862942695fd7e2e9585d47d445273f481e999ec96149c2530d89480ffd4641920abf41a03ec824b9909b9188d498c29214e87fdf627a6f19ed6359d50378dc219f3e8342e93fa376a959b24be1f0ddcf687c6289aabd9ff79fc6369bcadea8d225dcfb0756dfdede60ab7889aa708f6a18707689ab8841fefb12567bfff21abffe9a076b357f15073b0431b15f130ec287fa38ec3116e8c874025fbda35e85d994784a79a3e2519645c770f2fd75a143c996eeb2e20f1ed41d99f8c5df6f11eaea7e01177a17a9863bc488c006afb43b9211e95da43af62bb041f5431dacd1dec58841fc0a6c44fa3e038ec93e812a2c7a8e51cc51a60df753b9db21461d1e8e43f477f3580c32cf00273427d4c77e00679e2d1329562bcd84cfd8598a6195d2ff11802e1ee6db270a388a5953ae205657cb9ebfa329aa9442372ac5969ce015f0664a3553a4d2b325dabbc2dfe62d7f7b1c17722c0f0947f114a3961bec18f094230457e046968b8dca5e6594c9d97fff0d2127b4daadf650c486cd1d449e1488c8167c6d458a26b9c15799c89e3cd9b6acf6c993d90925cb9951a2d28a28f6fe21c9baf63fda84c8499e6152cd65d8ae6dcbcae4aabc2d2913b282557cd0659712f0a93f0e65f80263de44edca5052b15f1be2dd1b8c3e841a901356850a0dbbf97f86cfd0165571f78eacf36efee9849266bd4f196405e315627034f3f4d015fe4cbf8b415ed803f000ef63f0c60cc87f77be3b61be9c33fa12c17dece1c70c86868fa3f1a1b7246e888a981545231e93a2f49bc1dbe23febb8218a5951118df8d04bc11ab1eaef4e88ecbf1dddfe5837e82f63f6b9d61bbe6bdf3686ba747abc27a7873ab061ee38afd4b70744508c8d512710720bb1a1d7ae5db74b1243aa8bd5971d064cc03cbb92fdcca9939bd0c967ad6d2b9bdfdcda824ed6324d2bdbeb30cfad097906da9ea74a2dc06fe7d53c6c323ece5a3e5fbb8aac2c6c667b9fe39ede0777ecec5711da351f77e33f2e1fb754e436caca4f9689fb8e6d559655bff84972702f0724015c2f29c0257498615736382e120f07e5b0d71e0f06759d49c615e0b8f635e7ff5968ae423f5002f29924ad484148b018738fb93111a8582514a40a4d66d69678280afbe87875692d18dd9e2cecb1487e51928998885a56342112595acc136b4fa17e4a6b0cfd84a7b86aa7ea215f9f32848d58426d741d7a217a157a2bfa2fe863038cc6101fd11dbc71cdfa4ed88c1fbbad5cb74be3af6efbdfd106db0c5c80159ba21017859919418c0be28f52efe57e8c9dfdfa88d7e6942e8844106ba240c4db7e84bac94a81b76cfe682b6888cbe812d25002ddc039744261d96342139d847e56b2cd22a25cc2095d42413a07eecee0ea662b1c85e1c3f3cc3bbfbe524d4e1b1f7b5f6f1fe75a7adf9eaa9d88670eb6f36c73e550f588ff527dca2f8e54f2f7b0bd7e659ec1e4cd453f565d71121ffb2efc2ee7737adf72758f12330b2bf959b67de6f82259a0129f6e24ba2039f7b01dfbf2ed4ba08b34b486503bb42d906218491932d43cfd05ad0a4ccee6ee811f24259a6f1f6c1776e97bf5508576b7ab2b2b55bfd8a4d26c7ea5906f17e676ed29593c3e3327d1517ee5ec38bff2208889d997865d1cbfcfb46b163e344201762508315a91e8481ee6e42e2c83e3871fc6a7ef7d6ae804a394834f0d9d22b03574d1551445a83c16db078f0e8247de64a8cff297cf5207f22074583c5b92d984fa9854414c583f5f7f74fcb0c10c3fcfec9b030aa3818d79344cad970fb88ad855ac84b156c2c8b9af7de69d67dafdf0a81febf6006ca228b2500a159187e658f6f958f6ab7f7fec44c95e6e4961029d5b24763d56b29cbaf474666c61cb507fc8a221850dd5f8e19572a6d3c994a1c6c7efcb9972a753cef43ea945018bb24864c52181a9598375ce6ec7f87b7aff9829770075ca77720759b29c019429dfbdd354dcd7df9e607634242dfb5315e349655ca8cc80c35e58c8ec3b3725c9f28195f6e1f622c5b29b3cfa53478ffe5467799e44052de9de71a0756b5a3205918551873995beacf42cf47cf44a968330a04563e16d038ddd2d55f82a7b482ead5043608037cb2c0ec0abb4da2e27690ef02002f62c966b634081549a8db61b9a925af565871a208063156ef0efcabc462b0e3558cef021ebfd513be5b535c35057f2a66ed985950240717f69eea876468d024c642376b2b8efe8fe62696fef0585c5c50221d3d4304e2b55b8bbb8ec2ce38864108c9764b95813845940b4cd943b79a6a22bd4a44a3ea16a8665a42c0250dc53281d28b566a2ead421d78ed7278a7b4bc5fd47f7962e2f1e5a84ebf4a493166ac5bc7b03c158c111e9b4b05c9c9ce5cfe5f37004be846c84caa500ec7a1128d7f65c70082cbc740513ba440cdcbc59761c192664e5d517a8811d4ce803cf55541d7e5357e4dee3b2dbc73dfa124379907cbd30ccea3900653bacb371e34f7b9755dd4973a23033a8a4e10b9b624ced7d4fa9342a95f4d76ffc22afc0a699e8e78417609b497608b83596493703caa3be7b17f24ce05d5b62b2c6d25a00fe00269391bdfa298d63366ba72602299806f1490f202b88c01f8a359d1845cc0c86beba6d91f698a5a83eb6ee3dd3f6c2e8202a547b9c61b0e0c26356d6e8112c99d237796f254affdf7eed4f766993381435c3c1862d43950db5f7a45bc85ab0a21abd8b127eea292c9941d4e848b1798dc63060878db77fcdfc662b681d3d0f21184da02a34af9d4a551881ed2f8f2566f7c373eb5c30756cb86285e14c21ecb415b640bfc5df16a21203472d5e578d33fe4a7efc570108e050cb3bfae1b9cff72b0d435d67833be7963f088fa036ba17a1b67ded20c4c2284fc14888e018a96969746bc97e9afbd31185064b5d60090c0d4184fc784b37ac9c63669d8e6a5cd8b9f3567fef1d3f0f1b3afd9dd7d9510c555e1fdf39d00f9f39ae75ccf3b423ae756cbb1728b2be8c381cd77af94a88c2f0e9a1a8d6dfefb77ee92789697dee484cabd0975f13681aa1b2635bcc2bdb0cacb7ed1c248a41d4851d84f3b71880a2219c583d3255503d5b8c4da6aafadc5fd8f1eafebdb164b4599e4ca68a932b91c9e728eafe234bf3c7e884361b8f427a0a5e6c4e35eb66326b975b09ab597b49ba92e1dc760127da0ada8f3a03af4d9f17cdbf4dd2e85d1c985386fc4f52a959774bcd7ae0d13ddfe99ca78a02ffdb5ff921bb8735a6240b9c22ad7785114177d9fde4b4685746f0313a4355ff3f1e13c4f3937f17b908298c54a9dc7228e64e219739f22af0b5de9221182f854951c6df8eda74ed0daa2dac0b29f8edde77698eccfd1053b1f7171b7a44b9be21e91a5c8cc6d8b1bf7ff533f025f8125a41c85d0096bf9813fc192958e10867615c49e0365a1e004d1b5099cd5af6c4ff72f6ed9d8b469dffee7466c1799714915c497a100355f07f8f4e54a35f4dd7d7531fe5cd1f9d78f6a9f8c4c6b327fecc31cdb97dfb9ccfba30bfe63c2482e44811e92151a3e267cc995cf44f33d735d31725d67a3167d9012fd06fc123a8c8a43f8e2865f77d5bc35e2e0e88f18db99373b327b9eb31cfcaaa6a18b03d7be2e693b31caffc6c8fd3069f659b837c8d4b2c6628cf183e51826b98955958004e31c4a5ce81adbf0f341446ddf7c160b70aee05433d2de78a39f934c3becfab866119c617cfb1cc7943bd60dcbb49547a8882ec16d655231a8b4579f60cbc8693333ec501656b8cd7b84236e9a120f670a07fcc8d6b20cf00e23aac913c47a1dc944395f383ea8872f2a97e56eda008c6ecbf61387e4c4f714b43d27ecc22e5d8205edd7f2e83bc6108967e31391c5d521b54b3c3f63103cda0fde8147a0163085f8046bbb5ece6c0a244e2911d0be0558a2c02b0546422aebfd92b7a1cb4a4eeafd91625ed462b0c220922225d8b1b6ff86f9c1b5d3beeeac6222be188654c18a65a56a26953f5d4787465cff4ecfaecf49e7f731371cb30b3c944cc32cc552b9648664dc38a27dcac693ce9c6ed4543e7e5fd667471de4cc4fc32fed2942a8b38e28ff0112cce164f6772b9cc0d5f8e45179d8cedc6a28b76d64aaedb8bd1986b679cc5682c691d7716a366dc9c5f8cc612e618af992f2fed881dc25120ce9ac0ddbc3bb84f8755c54f5e20a0487bdf2a086d417a498e5ad46555c11d0bf959b8b04752805c1024a12d68394a5d56135c6a21f16aefeae71937a1df9f1996b74647f1e83deee00c3cd834883e630089b46e53af5d877f5e1055fc0a515c30aac67ee3ebbdef3b425cff4f4044f11558fd9028be5fd465bfa8d63a797d0a9617d80671c130f61bd56ceffbff498f0b0e107690ef8abaf87e51f68b8d293ddf4148bafa83ab5d86c3a9231b15d12cb39cf32f857f35edfea73c9211118ab5095ff3e0c0136d689dcf3572b9c67ebfc8f1a894efee6899ca1b86dc7b37d58b86a1c0797a25d8bcbf910b625776b64037adf76a6a5a87cbea880da0b6ab0d60b14f90b30aed20217a12c2d0c551a3c06724598882241d931471726a4fac2c622127a8d24189562b870e8f190ab6a8745052859c80c5726ccfd4a4a848c72409a2822c3dfbf0a14a95e51e5dfdeed52fc05be012caa33a5a47b7702f210bd89a64381906943c62b96dce18e16b3909c7a206a3f26cfbba9fdf79cebfc05e1746c1c0de0d3ab45f23d8f1451dc771dc3549973a44c47941252bd1e80a51853c164947d2dfad285893882008b22c080291b417e62c2b8735511271b98c4549d4663319ac890403b62c0c9888dabececd67cedcdc1105b18a75725a2264ee05b38448a7898eaba200db66d1944024822c46a3a22c10116e9a3a7b764ac404ab78febe79ac6282974a674bbe028e159c3e94c60a262237af5ced31ddec8b28cfe26e0352440306b113be2edc0e32f6ffe19c6ce21a16c9feccf3f72d91283d2fcb42120cf98d77bf64754d855f4b0ab27c9e46c9d2de5b32fb89886bd894cf29eadaea4bee7ea36cf07cb0af0947e01164a224aaa01642098e6010a49a3716c02df1b019970d97cc9fd5f0da0cf2928d12ed55a878436f787c335bcdbe0353ece86efbc47593185b597f21fc11a682abbb59d8ce357257d80fd8e20ac3c7bb41c093d79d68bbba2b50fc8d8cab3b98e2af62bf31cb649aae7090c714954bdc443009fd0a87da60d0844185b1613e76fe9c48f6120ac57b4a229925146c1b28992562e99e2250b29788e7cecf1e38f0d41789423ebd9728d24b5f2a2964efa78942be5858288cd8ec92e339e79404d001a36cfe4b17f56452bfa88fcc874fde490de3b261d097d16c606bf96df81df82232109a8710e2b45d5e850a3cdadb368a49b718854d53d3be79599152566f339e26ca65259f1fc2f7a7a8846659be2bb378ba8521e7816bd79bfe030cd10e03a41e408974a2c6e3cacc13ed4efb844915e57b8974026ae7238944e4bcc9a4c9fcdeb3daedb76b67f7e6d9aac9b78ddc8f5d73f09f019a73f83e5d4fa55b9869f1165fadeb57476edbb7c6b7b2ea4edcb9f1fcd81fa52bc3c35de31a7d1919e57eb07b67a0df971242e5e66ed9f8a3ee1ce81aeadb9879f46dbe98d6afbe7f478b5f0db826ba6c2e6aa117a017232491220b3c5ff6476e6f0158c6021fc739e1747b15bc058141e75a8e2ff2fb1f6da21810523b2dafe235bc3e9b1827e30ed9cffba19aa09193114ab728bddf30416896330b9909011b1488e026012a6b95ea916ad2110850031f3c70d7fe52710f2620029e9aa96dbcf0746dae0c2210bc529cda7fd7011ec032edd6aaf3eedc9c3b5ffd9851b1cb4d0152f399ea8420096a148360afe4cb9d0a40e57035d7b604c0515590a0b4ffae0387dacd8c208aa9041692a76e39bdb878fad653492b238a42a6d93e74e0aefddb3c0c268cd7bb021d7884f141072884f5e130c0418211336c0e3faa31b50d1af3127d1dcbf63e536ce744054f6010e3f664bedae993fc500ec64937a954ff698e83902c24b080a744154794487eefd4a11176ae7352280fff3e3c055de4a1368bd10ff8f29944caa641da3777361b218a091d0fd97eb0b672f8956fbdf7f04a4db1255314697e6afefae79f9a9fca53513425fb854c556105bcadf8b203fe57f8ca23075e5a22929295e352f2d8f4fca9f9f9530bdef1a41497b38af4185335fc22cc1bee3299adcc5019f6f9da54d397ce4a85f1f77c046515179a8572936b5c03605eb86cd2bd54edfd9d6a985696d9746043351a12cdde711501ba8aba865aad71bd07d03d2add4b0df5d1acf56689723e302abdd9ca5e459b5bdb55d5d85ce76a4f602b65b1a77722541e4a636ab7d658ae0f4b62f2bf167f3ca4847f0ebe70ef55bca5985ff53785891dfeb467311dc1dfb1ddaa7b4c6061ca01030d6878158146a38aa14a945a449444599e9c9a9c4de5249cc0a4d44a5814ab4410cfcecd650b59cfcd4a58d64579aa55223881a5b9f45a2922890054b1358d26a96ea4270cf383445408c619c7cb14b25a84c88466758d24653de26f4e9bfe194599cc6141edfd578900c86a92c8a26a288699999848193a4d524d9b14b12c269c443a9a08fa13b7980f978f571cef378a12c84525e4f97349b3de2cb975bbd4b6eb4d5a6ad621582fd76d16e3d4ac339ab59257b74bdd6ea7d361456f8b2d6033bf99ef6c76f2f94e3e7fa5dbe96c75bb5bfec64e676b2bbfd9cd6fe583f92bcc290eb00987bcfe1e7b682c6e898312b2e87dc6133de4af0b92d24646ab2157ffb7ab13191b0b6209abd8548c786c42213121a5c6d9c82d4b465a4b145b254e0b3be4e3bf3d16cd8b0a4e631013544d189a2ca9606889b4c85d6444944dddce6717334f71c2d8818fe93fc1255447fb7df969ec02dca7b902f6b22d409fcaf6ffd93bebe5099667e50471a2894cca76234a46a89869435d570d9ddae988ad1b99d4e9e644b5bab75a856ed2999713a440b09c562386e14475250ab699adaafe87423495e8513566a70a33e5e274efedd37ba6a7f74c0f7cc30fc0253489a6d10184ca6e6049f3178bc072fc2ad19044a43dd9cf3129259834cac4534eb5df5e05809bb024ab91d8f442b9519e2e602cbd1013717f6ac2ce25276c3bf64fc58585c30b0bc57759a2213d5114759cba792f1171f10949f8df2f8f5956d6c9e4552a0820442debbc48c139e9c654591400de1a50dd1f4c4982f8f1591148ebe53ae8d2ecc7c5c8208f11c1afa0942f0f04f7d7e1689dc3165da93f093482c41f1a3c97daf2a69650e8b9757fbadfb2b2b0c1f00cd6cf5125a16d2ed7b2e6d64b8e1e4f63432fd288507929db29cbf77d694588d0a26ee0f4f1a32fd90af80afe92d921587f020dabc2c136876dd303f03d2b4836f23bce333dc77bd4bb38d62338ff637429f00b003c826c546208507d1ae9527111da2e039a74cb75b73df0c88d8692fb037d7488c5770de05f399bf43e493cd66ce60d8bf66e3fd36c1e13a5574894c26b077cd3fb24f16b6c127d85247eedb901bf7455bc6eef9eaa6ad0bbf6ecbd4e645f6775887eba2a7e8bb589df62318fff76f5b705097e0f4da255742b426d872c02250c682d7cc0fefc18e87f6edb0dbe43fe1e731cb27e0b83b70b40ad0c60325b60f760b3d72a7c5a882bd53a15e33a07799f6aea567d5ac1da3d4487d74f57594d135238ae5467e26b6bf13816c4a2a4e0b832f5d719ac8a4551c019fff79b16dd90a40d6a6d4e35f5cfa811923aadba261304168f4e9e4e4b364e09949e3814d6eef1f7393461db1313a22a3882204e44ff614e14041babe29cea9a354d96374443dc9065adb67894cd7b7c4c5d4408961dc60d1dbef38d3558e8db3e9703b9c27fdd4a7cd405b474b6c8e99edfa21a74c6dd979f3fb5307ffdc2e41e17abb88ac5c24d8b6c90844f4d15a628dbcdb0e88c9d9c3ff5fcebe76d1b03ae620de78a6c1c0de4af2fb318d066e0757747bbc00d3bfd2ed4971dd71b8dc880ef2e4a542cddb6c2ce7c78f1a682888ba222bafb0b3cf371fefae49d24483a832e25374c2f1cbef7adaf3c5ccc610d17456cbb2cb572664aa2d262103430ca874091e57f9d658b0719b923bc089545e09c4363d0d52e97b826b239d7361e1fcc393f47b574cc4e655ac79568547155233d478da4617c7b6245ef0ca6985f8f5835adeaceb8494365e9ecebcf892459bec45f09bebc9a43cb082538b1ae13a6ae71f387c7d9752b0dea3afed8c56c1ffe1ce8bfb7172eca89c8cb9a9d945ba251056773993391847c517e8ddffe7286c4285f944178980a11f5397265fe96b9b9e9948475f979b39e7a468d08f461ea4cb0cde6ad66c3bcd50cda429fc25f319fe2e4eebdab0c754ff64ff9b387cf045d71d2b5d91b86cfbe2194e65e129efdf8e9980967c353f9e3e60f8437c09bff7feade04beade3ba179e3377997b2f808b1d204190c44202dc4042dc40891245ad963759f22e2fb140f0928005023016c9cc66ba691a6769aaba69eb2679a9dcbcbe3a691667a9b337b4e3667553b7f54bd2368b9ad7bc266d9a2a6ddae7e46be1ef3733171b49d98a5fdeeffb9e7ed4bde7cc1dcc9db977eecc9933e7fc0f8a30c9a0432f3813e510b9cd1075b41b4b549ef7b7c6a896ee922fb916208ecf1ac4430c422cc44b863ead2a0e0236ed279a3e44bcc442ea9714f5d39c24ed1975ed279a0d48769990656ed134fa048bcdad6bdf1e65c6473ef20427485b9e6fb36fa389f3b3081be61e351a64016a9a38eed1884c0499d53212db6fce0754e28f4e4dcece4c0fa61a9a788e52c874e5a996761ea7de2858c9694ca4a044f0696215dea8eadad7640216229e10096840e4af697afdb302910624220091476472f8308b803f4d8f8b30292b6e495124b722d7bfeaf66aba2265255996b292a26bdee743940e498ab2a148c7287d4c524c7f7a044fa271b66669c44d925b18a85c0062480e5e6e73be8f834cc65be8b2f053acf97cb6c0b154229ed5fdf22e59b7dda329180b8b8245d4bbfcd6259bbeb77f10a06006e2783f5d09c260df3edd9ab1fa7d0ed1222c0a1813cb3d365d9a94fd7a363e3e7bac5bf79d33a370a0b698f576d485c6699fda412fca2b34451ff0388e9bdbfc7dd8bf2d8d2eadfd9e2d9ad26778f5de141589307c302ec9449abd6b4e20199a70b87c8826dc78d5919b04b25569caab294bf183c3021169f6b9bb6625224b87ca87cd84919137df28116643f31d8647aba03e348750339cae9fd68eaf57698db99b32f74c379339ea3abfb23138138bcd0c3e2edeb0711dd1543975f76e916dde9c17e7f79cce5468da3d278e27933c3514a0b907afb96ee3069e20eebe3b25ab1aa92ca577ef359392c9e327ee9155ad150f60031e4549564b1e7eb97385f82226aecca8807e1fffbc78f2e4e2bb1be1551a4156e625f228251f3d1e1d1a1ab87ee3e4c60d44fa332225186a57671c97d0df0c1d1936b17b1679cc68d8ba413bd98a0ed28c0cd00f269ec902b4f6c163716045d7bf418fb70c7b1ea6e7df95e2fd374b44fc7d41ba4991e5dfde7d9d3443d3e725151a06190989f430b22744a41949f81dc12ebf191f9d6369ce667c1ede479d28c0f6e5e21df05b33cee9a69d9abb13deb21f7cf0e19b754ffd278d4e75916b598e987832df13454184859bf566c7b37aea97b89e047619a6224214c40e5b513b1a6356f85bb034dd7c34de0772b4394d7a3d843bc308cd9d91c9058064cbe0e34b41363ece1ddb7dcf1c8ba231e6d0c83279ac156b1e50d3efbbfeed201d4935c718cb3a77cfee6373746405b915c5bed3ae358a1619e6df1558b7ff7cf59f6335e2e68f0df20adbd2f9234a5e69bb5af60e4166ef40a58fd99966d5a62653dee6cedc60b3111e1de0a73b944e82a4fe6c743e12993f4a0fd2f69a9320f194cdcb47e723486518b12dbc011e65f026741732d8c8d9610115df8609edff05e4808bf5459bdb6d834d9bdbbd8fab80aee1a795977105426e1bbbb66873dfced544e61ef9cf99dea173deb543ac930889cfc653a6ab82d7e327dce633e56fb82574463a39ef731c16c5c38e44383c1ec6ec9c701cc6e1f170b823dcc90fedc3ba3e6ca7e97e4218611f2684e1ff99369b9bb0890698be8bd560aaad0aecb14eb557e27424b0228a2b8108b3e5c39c188a0456f0dc89b9b90defa2d7bbe8a5e4904563847751b3b0bc4d0cde03f024ea430b7cdf967969e9e0f7c94d8820ba8e644b0c6fd8c937ab3a50e8f8aa3b1e93f1dc79e2d6af1b1aebf6881eb5dfebbb7edf6b753739af6cd637a724d1dba748ea7ae34168b2d3292b607f88e8da31d0edd71cb2da48576c7838331c82639a4e1e229e3f3f028ba2cf2eb91a0ffa944cb02c80d2926181cbb0108fd1e5b6dc50012ed05523135778a03978fee50bb10ddb34d6578274247547b7b846b4872a4a45b92b79ac13e39c4b27efbdc334c17e6cf12491c6347de8efe72472477448d7c6247272918eb270bafe16c904acbc61f1e312d1b50f45861689547fcb50e4439a4ea48f2fdec02f37eaf629f831b30fea43a8113fa3a9f3dc0f2c02bcb08b4519824bb1706a7cd2e5da9d9ce98b38f44d976b53775cba76621a3f0e8babb71e9b4d7814c53f95bae6a657d8bba4138a7242eaaa7f64f0fa5bf2d734c6b307e149b48f21b0b4d0b53bb74888e915de8265e5f0e9a926326b241e83b0371eb303fcf8a855718eb86d8b2c24eda2cd3de254ac476d7da131ba9eba3d6549f66df4252da9db293b16eaad3f09e8aca69dbdf6a82d2ae96fb1b919f0dd90dbf6165d8ada8e463c5e06253b1f088703f38cf47ac07f7b4c14637cdffa0513b3eb16f40ab48af21c6380219ecd4c772ac01bc35adb6bbc0ccf3ec799297e9cec0cc41b6e1ac44767a6fcb8e4d09775cf1887cb646161c1d144a57eb6937a64eec4dcc6dc89b92451d5fab029388f9901edce8f2d9fce7bf4659dfb6b49022be632870d3a2cd0ff6c03b0c46555fef76c69b9b127c0f6a5dca887a1be2268412f34859741be39196d2affa3cd15c06936e99c9e0843283c51bf189b8e6d5ce0a3f6971b8377884d5fd150fd527862220c0e2a9106429d03b35997efe003f07b6818cda0036cb5c584013398e9444b2268c4e668c4ea98f449cd28261c17b041c7db68bca86b4a40e871d5dfe6ea1102cc98f3d01925e01395133f3ca188be8072e690a6d79fe7752af1d3457efabe43d33fe6f2fb5d1f63bdeb372ca22360595bb3041ca2e537f44f969a61d2773834f0340ec2268bd2909a8d45c3f1f620026e13636a3a3ec50db799a319cd159e9cc58e0941b7d6cfa9d8a6acd2328f1eb5d129c4f9174e7ab4cb58b7d4ff558641c5f61bcf5a5c098587b0adbf4709d8fde1f084c331110efb1d3da4dbe20a69c861ea591f45836cf5b7c82210df8996d11a3a8b1e400fa15f476f47ef46ef6bd9f4a4768d432ac6c738a7a9ea99f5f977995344731dd3706d6bae6c9a97526d30a35b2eedf0abcb97b3fde74d027ee55dc443ac8474e32eb72f34be183b10efd9e5e9d9ed63c9361eb33ac44fa7f9e9023f257920ecdb3a123b736e7470e669b123a77982b9771162251ed27743bf753c54ff2a4cc60fc43c4ec5e262e937f09b918e539c9f545e84a32371c79c2fc69927739ef85f0ca7b89faef3c32dad75c33ab8c33ebea9206eadeeb801d905be754a652a4e0dcdcdddf618f134700a3ce43162c6dbdb3423efcd0d6d0ecd7de931a26ba775edb4a69fd674f218f1705f92cfc293f0149a40f3288390bf23f84fdb7901e6c18c05e46b8b02949a8a8f33db271dfc527c3a46e79d4678b42d67d6417b21357ba7d3b6f05aabd36979e0ed56a7d3faf6d7585de0b0bea75f13f52ef5d5badd7ac2e13863755c3d60d1b1cda674b904028b92cbef045855fc6e41b95eba87d0f32bc4e3f44ca635bffa2ad73e7dc0ea949d5d0ed9e977d2ff3ed2e516e43b34d7af5addd82d3a7ea468518b5313ec7e6dec11ab039cd6d8eb5541efd296c457b2f3ba90d1047b977a482677587dce24b7017b019e8707919f613b1379eb6a882bcd663adedfec56c9037ebce5fdd4bfb8f50d0edd2c910f6e7b43efddfe1a49336e23ceb2b565035309a5b640f5a63a8ceb23f236becd736b277ea0e1ab46d65b7e6b1b2f452eb600d1079aee19d736d058c9993a5bc8c2ed12216fae331062f83e432883a66c730b97084c7ffa2de1baa31d5fc58bc5abd99e86b349bff3e32c68d2791639e9e34e7f1bf7f88ef446d2e91f3293cf6bfa90df996ce38676a6cd35f5dfe04578278aa2abd019bea68e865f644dcd223c3605b976f4a10ebd0e09bf883d4c03d7948aab7936f7f02ec648789b44ac9cac73cfbeb7b5b2d47fc8e8e728fd1ccfeea1d270694822268686d4227f677b12252fec9c8cb6f8a807d97c77705bcc68323b4e458c185d4df8fb6036feb27dd6dbb7af5f25ab2ea9e7d8b11ec9a5caa1bbeffef1953aaeb76d65bf55b1636538181c56b05d991c18f8cc95baaf731b44780a9e446f42687096edf4a618ba2bdbe7a57c6a761c643b9ee167e80c73e99d004ed087e2636127e99aca4f3a798613bb1f7bf9998b30fbc0ef9b5c800998a12b104a34ee3b0b9f11458776dbe1c3b7690ec9a24dcc2892ea56675c82ea7609bebd0708d63d729feed1fb648f8ec981bd3ec1e55605d78cea5625656642b3483bfe5c736df93971eff473cbc38adb82bba3d16e6c713b31e997dc2e49ea4fa82e59554f458f2e128f0d486c8176a18518019b872c1e8d9e5255d9a526fa25c9e596fa0976ee5886e6dca90c65e722780cc1efc01fb27ddc3134814e2094e2b25623f68c09fa9ae220c2dcbbb41fd836c20444535371776acb2845b60c459f6a6e2e72e0068b5204591c60a0cbca90c240970754ac8eda75221fc2447a351b4d8f0844fa254aed9be11b9ec070e5ea9b9ef78b92263fa6288fc99a1a9cf4d7bf7c5a10bd3467af449604d1679208edd83e37dfec91475b1003d1484c7af9ed93b6b50f667ebe06c2b5bc85f54d06d1b7e8b9f34a5b28d1f63119da8b06d10c3a42e78f9ddfe056f049b2c521cf3bb34d9dd0c16f7f8d89b69803aa4a58e5373b910437ccc3d65708032d67a3669434f5a74dea0d4dea326ddcf92d6e0584fc79dbb8fd55feeb95b771db5b0c5e791be9fcff3c24d1a3c8c66519664dc10098877fa4e9e41cf1907344bfa0d313e574deb7bf09ef85475108ed4647d09d4c1335cdbbf0f6e005f33023c708735df1791b6e2b264caf1c4b71ada9df3735998a47db41099bf1b9663c82382a4afd1209d0feb7460fdd921671b9f7fb025d81119f5314410355ead27bc7ee76aa321188dd0a4f359f65c3ca008e7b454d181688f400ebc6ecb047827f0c78bcbec0d8485f846045ec9344506de290d5e1d5745913c466e7310d201adff7ff916730d8e1ced580357ab9cfa0feae5fd043f8bb66e76a3d046eec9f848768df198c465aae2f32f8db3acfc5b6ce83797f63bfe9d9dae3065b18dd93b3d3edfd0f5493d07ea4b577c69c79d63d4dfba90d16f3f5304283e3100dc7e25331e62515f54667e8b719e905cf94971f3dbea99929ef24874a8fced28f38b5c0838732f5fea44fc627bbf787ebdf25ea5727e25dc7bcd1118727180a8542418f6324ea3dd6159ff8aa4aa02fbcbfdbd7ddfd80204982dd6abd64b169b2e6d7f75a5c1b1b833d8b5d435d8eaea1aec59ec18d0d9765afeed764cd66b17477755f2f098b823434c4e3b131db548e411b4563688669a71babfba6795daa41b40332f0947073ffa149243ba0673fcd4ff557f3549ba95b7399c99f37f9f39dd99eed28e386762d1ac49adbd44d9ffc4d2a854b616718a33ac26811376d99f9bec3f6ddebf6ade8cefd65d4f43308c12672b018e576cc4530994a601052edd281876d7650efedc6b62ecbeb6053557fd98b3d5deaeaafdb3c443edc2c038fc1e7185e00f3ed6c9440a5332614c626f038c8207494f63a4b970d77dfab82ddf6f001d9ef870f98653f6cf5caf2e1c3b2ecb53ebcaa7679b0f797ad8ad2c45965fbc73d08f99bca7266dcee64e625e67264914849893cad76bb5cddead38cf1005ba93dfe470a76d9ea1b3617563efa41134bbaa3dcc6f4b30f588872e7348be1cbef051bacaccf69b460ed738c81b7f18050bc64682fb9b15ff7143ac822974664c2700e78c8496e6038010d371e2f07b5631693dcf68c0101f761e66ac30cbc5be6119f0d0c80d3de37dd97388053575b94fd9a038bd8a2f5cfddb0bb5fb560013bb4fd8ae5ea14244fdc7372c2ee8c05b8ea064e0c065c7dca7dc16470cfb0f5f6ddef506dd80616d5a139b0fccaf89eb9a157c9d8a139540bb6629bfa8edda72c63d78e25ae1fbf4fe973f60c9ee06aa4761f0bfa55a1c1a98eb05033d3b37ec2d099bc1e987ba8193848d1dfbc4434796303940622cc439a9e5a221bb2f6e21838ee17f138ed6df9915ec6cdb48103f4217892a15037d66933d30b909a896e951bbccc448ebb24fbb699d33fceb648c74fee62e6fdf7331bffb9b11e51137a05a12fdc16b9e53cdb4fdd3d756a0f89b65223ea400f078feb9b5a7a445414f111de1185b6b18a6123ba1beaca1747fff4cbc4e7f7791ad6ec3c2c472cdedcbe323dc2e231130ab4b4034ce8418b2b164e8e0fcc27a343bb760f8c24c3319725d93fba6be8e0f4d2f4c1a15da3fdb0c1cd07661425e8c932ef615dcbea5ad613fc8c4b956dce61874d918962730c39ad4475591c5da168975b5314cddd150d75391a7bf35fc308fe00d9d138d3c46fd9f325cc728c35a44d4a6753f82cdb57e1db88531d08d1dcc4c8ebf1c3a53a13c2e02251d56ffb2db6e168afb7472509a226c7168e8e25b5b7f7d81c6e57b02fa2c9e3444d0ced3e343c6abbd012ec1c16abeeeeeed5ac3e4c53dcc9602032b0d8eb3b6db5d87d5d568bc7c6d2fb623e4f7f785fb8abcdbef851348e96e9aab8f1bca3edd6de7446e69b695e8fbf15ff371a6f4a341360ea21cdbd8836d0917e9c6aeb9fc40f6f164303f6407f30dedfdda58b82d4275b45dd65b359883be60802a8f2630da405b2a04ad3f298a432712bb07ba68f9e8fa8e2903c21aa8729139c990f593d7e47efc048b7d76ef3c936c12b60c9a5bb35590fb8c3a3aa262becf1f027456ed28e71fea6ebd94939a05dcb13aebb99c54fe3fbce3d6814cda3c3cc06838ed051bf8f6d8bef671f1f1d5be799a2e425e22f91edf3f0e6c0dec87e5190ebcfca82b83fb27760703eb419da3bf0bcaef17ea9e95f6c91e60c5bffa1390f9f7e017527029382c5224c0612dd805834dcdfdb618765bc7d526ec6c86bc758bc4284c517454f7c1194c4863d0bf303ba01dd85720801c3309af5f189830591f770a75866b02c9b934a844f24325d04c7286d9a41ce72fca3d86cc3d8d9dd6ede126f576181bb5bb4933d16bfe8c09a72d8a65aa60899b2a8b6c38a861da2dfb287d8c56e29285d59b657b66c61422c7a280f21fa910545120788c37650b1810401755476c8a36a0024b029076d0e32204aca82cd7665d95e402db399c1a0798f60b28109f372bf53f2ff8fef74f317f79df2f9f6a7f0716e4f0b3cee35d79ba416f0d4564bf194c45715dc4a9b9bda121d5361866f254ccf42a56b3eb4e74e1d6469b74cc07274756f87f978fdebcc88fcb29960dee7bf6a4e945469f75d33ede6e4ebba878cec74ad691705b08986d049fa75706b7233c27e6a470372fab50a9158dcbf7d7f63823570a111d19fe8009f10a34b737b578f5a80c8bb4402fa3d0bed06e6d284443e91b8be6b456a26c804b6fd063e72e3f0f8cc5dbb255512e7afeb303d27f5db3a79b93dab199f9b636bc6a92ce9f6379677a44571ec77d3048cb930c65b800d640b740383c765d497538260c104cf251a44c066c5e410c6564cf0c14557c4f6c4433fb94190050bc6c1c43598e008c6efe5a7ab13414cb01583730e136c1184b9f114cf39d7638bb8160fb2abf810c156db136fe8bd81171a4c5c8d710413fc5e7eba261164b736f7f0b00a5f445616d1060dcec6b86f867f017c242efb3adae8a7c2407352b8d4d535315c2c0ecf3de73b7ccda7bee9557ba3ab449e919df2a981de61cb798e73f7c8fc0313c3bdbdc373cff5f749c63723277ba3a764a73c2393d581a014e8751de7288f6d7821dc0bae6747f4c4e8ccd44c7466ca6d9e3b03e4fcc7850b0ca4e7c285ade6bda7174fbf804e2f9e6e62206eb661206e8d8bdb8681d86e55d6e9a6fc34c7267c37914cd0c6633f170ee2661307f17277dfe96e974342246cac5d3471dee20cb9f920ba09217fa4192bae11204e8768f31dc61b48f364dbb2bc39f993189be9b839433c351bbb4ef7cbe178ece0a1771e3a188b8765bf6ee5b5fb277efa4b7e9ad15dae1eb71b266c6e778fcb65a82e61bc3b32383be81f17d4906e5d38769cfe9e1674fcd88255dfe48db9d0717a172da2c7c58ffd82aafd1a1e9c1e1cece9739f575d0d1b382ac3b37551cb14b7a18d693627e879c6a33fa7ebcfe843fa737a894b264f3fe309eacfe943fa33bafe9cfe6c4b07c06d5a37cc72474debcf8651b269f269be2789c891f82ee6466362d1ffcb73baa75572ddbc19fc88defb0381c09feca235f9f6737a5b9d4ef07bffca33bafe819e6b7a9ea6bf35e35a5c627328dfab9d4337a015847ede40484dcb4e774349c5555ce6b28bf8774e7e1698985e67d3e565e8377a7a7b8782c1abafb68b9a38210a0e5113fc8b82263a0511764cdcfb52617f6e367532a3c71c82901434d12e8abe4541708aaa78e1985d142744557408826fbf283a054d6cfa163c0f8fa229b40f1da5abb9416698d3bedbd95ce47bb743c871f5c0e0d4a4af1fc2a905685aa3484db394affac8688f85edd05a7a4689cfedb759742da9e980d8c962f3d73ffa35490567fd1f9ca05abd7d5e6f9f1716f9f999db7a22dcd62dd2731b097b92f6803acb78963aab06ec494ff84e221d3e2c91c7edf4275e3b3f99f3d145fc20bc0379987569d31727ded2564a336d18b0e1c959c04f110ff113f2f6b713e2271ef2148173ba567fb68147f5c1a708f1110f79c73b8887f808798a78feb8e199ae37e4b743f0284aa0ab599f6bc7e2736e530d3ba36d36ea12f394f14e4dfaccae659a82d0ca3a78f789123515a1c4797a88a4588a0adf65fb071d4e75260317546262b16db65690b0c840af4e13553a413c171b8a5d4670df4f78122eecd806ef76f5767b1ba01945a0cd19d10c19e0e0287b51a29e6b6bc339b30d1fde569356dddb10e3361a35afffe1651bdd580341730cd88fd056bd7ca75bdc744cd862ad216d318580a14dfa9ee9e16893fa2e3fd143db75b8a06b1758d88cf643fdf926fb542b95efd377d695c5eb4a6df15e205beae7de626bb1757c13bc2d6b659ab6f5fa6fea9a41eb60687a1bf99a06a11f851ea600fb9ea6ebb4f337b9aeb60bdfe761ac345d7f6f9382e3fc4c0ff5c5160d8f35b3d47fd44ae6fefcdbdacfe335a32d0e233effd675f896a7b2759d4eb63ca5ad4f71f025a29ac5b7e46f7b544fe8da0a255718d05e2335d44afd6af359bea1751d5ed74c6d1d9e6efd081e6a3ea59fed40ddd1a4c65b8ff0e33b255e6891d9e67564c65ed904603abc209a6ef3c54af9bc1eb6b66218721c3e42988e73936766e6cc969cec81988aba5028321f85c87c24347762cea14936313814146d92361182f0c42257c7ed194c46e723d1f96872e02b43737343f58b5ea7a64bdfa232d9b7245d737a43c909b35e542e71a351b40f2137bfa9ecf5b0352ef36625d10813cdf6374183b8328eb561667ab6819ede0717e74ecc8522f31188ce4742a72134d15eb9fec1d941a7dd1d70db9d709a56e92b03c9e87c34321f4d0efe7e32b4b57ae189133d83833dce3ee50736b7dbf603a5afe3393ad120adeff63afcbc0fd4acd24b3f545a951cad4a4ee93b7c454ff7fffbfa0ed3fa0effdf53dff7d0fabee7caebcb31be44f81c439662d8123bac805b94977064d1a9d402c463f0ade0f53de3537cf1399998c4d822c8421b718ae81e726ab9eed21505dee79783e3937ce13ab503619c221e9d9cfa4fd77477b03da6d1936cfd741c21e79671ad69882c45e2b1f84c333830df0c9d652a237f1f10fe37d5c7f7b17c8df8d9adb166889b8c83c3a649b224ca9aa3abd72312c979c413090963de6840b66ab24d5440b144bb0d6cd144b9c7050f35e17afe829bceffbbcfea079fe6d4ecd111af207d4d22fdb2459463017dc4ed1c73ab01dd1fd5bc2ecde54a7a6cdbdb97da3aee3757888d58aa0c1033ea9309ffa3b34c7cdc34126c86099f3111505a23e8a469d93f2b8b9a051bdd518b028a689335ab1c887ac78450c473c42911d1d3dbe5d064519225cdd6e3eab968629f5ed274d3c41edee072692eaf16f5eb01d53de6748fe881982c5ae47e227d4d12bc2351bbe6d47ce0b7fa6c1ed4c4b77f109e44092aa94f6df5066df6f5a68b1ddb7e99998ec760c43ac2e66c5687116bccdfad6b0f4117d670173ca4e9ddfe7f38cbe4717638ebeaed1fd0f42cc649514c629cd5b5c1fea0e90f7e0036908042b48fbbc3def0a0c737e5f59831c6986d6013ac3922c73b85eb990d58ac6fc2f9a027e8a9873c41fa01053d709152490e00cb719420b479da13e470a9c1a1067133bdcc0471f4e2386ecd2f6c9bc0dfdc326bdf9b4b09c290a88a070e889a302408070f6ee13b36ecbe70994c0dde1c075e60b195a2ccdf617a02520ddffe96aeaba5209a8443b384a4d384cc120f3d7bc876feb217e8b9a11fa9c0e75037ed1d7e3e2032e38605f695f6819f8d95f158a4a139e6ba89583cb699bc31e9b2ec770474a93b20dabb1dfb2daee48d7782029255c6823be816b06c5d4cde988cc7fc77f42426758b459f1cef39e51f1c4ade987c9f28ea4e55248acde3b12944549da8d9571e4476ee09da00cf986fc43d687a7e46c6418a2e402c3e657a826e6cf2507afc547f4bcbbd13167785fcfed02ee653031b2c0a1f3b6cb69c44ef1eb8ebae01ee0cda8873c5eae140bd7c4f75d4dc3a98e7684d6d1d072f36efca4e6da5f25476bbebdadc4dcdf21f8434ea4627b747736c7af4ceb8999aa31fa6182a11db1f36f78b67e2b1995494abeb2770d4efb143e337d3b3e95b2442a49fd2c3ad449a95c80f0ea8c2a8244b20cbe298a01e9048174b5701c0d52f2893aad0e70200954829897413e825128b40332a911f339ddab4f280cdeb767b6d0f28b254ff86a4c8d2ebed5ed7ec2d8a72cbaccb6b7fbd242b120c497243566ced934dbff41e59fbf74e5e722b2cd9beb47e9cb984865f72e76b96e632b12d37e1226c32ff9d660cb30889b73e375341ce83a0fb5b1f9d7c05c1aa760c81f69c1902ede6a8c32308bd8226badd669833bbec70bbf9aeb9c7e1db318095efa4436ec54bdb64f1d27c0e0fdf97f7b89d929d48ec066eb799e6888e4c1db7f0407a1cab8f9396e3533b0558c34d6ccddde860675cb797dbe2f6a06f9769547b10b84d33085cfce7a936f7af6018e4dd2d0f38e78ce9efc68145a65a1100a42dbecb52cbd16d2675195ad74aaa6025656215d492a613a97ebb099079d113e4912cea97767274827c50d3dd3221b25bd76863a6ea9f66dae4c312215737b7c6763a98361d8d76bd588b04bea91517788b76aeedef7a20e8fe7777103c448215896cabda74fd93ee40c00d4725a5e933cc6586695366601ad7b688c8546e681d3db2b925c57c69694658bf29a2e9e4c6b0a6cb59c5a364655d0bdf48742d7213d1b5fb1d2e55b19cb728aa9368f76bfad5b7e96e72bbee2625452911b77e3b71ebb7296ebdabd74ebc5ea2db1cddbabb298f2ec293ac9f5ecbd1183b5d5139b061ff4e51084ce18ceb1fa571d807533e7f6c90e180cea6a6f050968b3a594d0ff525177497d56649f60c7288cbc19ea4c56675e90bc9be905edfe5742d628b1fdee4d5dd7e0b5e840dae70d4b5b99e695f8474b96d9a72ac2f60a59dd81ae83ba66836771789f8a67be634fd415b4073248695054b8fc5a60c274c9cc907191e6612ede6e89d9dbeb61c1bfe6578cfd659546fc7953bc8d21fbc8413ac8ded65013cc324ba4574029d4625b481cea30be871b4899e45171172cfa666990861078e51bd1f6211d28ce3139bdda694f9dfe4a55ff0efb70655de96fff0dd77dc71f761118ba3a255be4d22204f64c66520d26db2551c15f13d2dd3a8d33f07597ffc65668690897ff2fd8e2c70fbe1aeaeaeaec3a24d3e2289388a3579afd3b957d670148bd211d9f6c546ce2b3edcf90bc967ee296dc026eaa7522f34fbb99703388439900eedeb6cbf2eec0ce313ffc96296fddb05867cb1418f17fed1130c0ed411466cd36ed3133477eb42410f2c7a82f50b1042c20bf5173ecbfc8907d11c3a80d020c3408c30c32b6e27c14ccc88ccb1d927d940220f32eb450e2cc15c756272c3597a162786e2a383824d00ab3d18edef7278049b3038121f263a768c8ddcffbaf591841debf567786de64ecc392293b45a1f1d90e55959068f2de0b605193d2029646f62647c7c24b197a8b677f08d3d1bfd08dfa1c0332eda4e97d0b1a73949e7ea143327db41806495dd219dc8525b501c7af5e255c363bdb2a6c96fa287dea16343413a0bbd9171a323f51fb485b9d91b1bbafafd2db5fafbe3434343ef6be38f0dc7f6b6d8c6faf30bf05313a32f229378acf5094d4fc00298127c3412e3c8ef1e3f3753981eff3f86d1073f8527d10c5befb73da0ceaab0c55fab2ad1085bfed307f71cb384484a249a9e3d7cdf8143f71dde0ed3377a4df79244c845d36ce2787cd444e9133531223450fae261564ec357b4e177d78d6268022d2104ed21bf539d2117da99a6abb84c3c74f6f3e910631d3b1e6521c8756e23959a9d8931ef608ef89b9aed031950031b67ee9eddade5eda1d6d2659aef8dbd7ea697881601cbba4d108828099a208944106cba8c058b487a67642258c86430140a4e128b40e0bc596cf99eb9a1d66278aeb5001be31b764b5671ff802f28135d9265e2b6bafc7e97d54d6459d2891cf40dec17add86223d82a88a260c5c4666de2475d824751008da0c5362c24deaff99b65a81e3e21dc290c0c72e9803b68327c5ffa1f2e49421791eaf74ba44b90a4ef0bc2f7a5aefa094d9704785690f4fa6b07a8e847a481c5c5c545587408129fdf25c121e1db31be1dd7bfa26b1c4942d32f6df2685e9bf41f5d13fdec854f62193e8f7ad13c955d06795ca0713cdb0a13d4081ae48ff3334fe3ab8f0518c7fcf360d11e4c49cc0fbe49488a62a2f7f8f1798fa737c1350b09efc85e6f42d00487a00909efde116f421086044d4cf47a3cf3c78ff72644115c7e42ea57f19d4bf804f18c745e1f6afbe937db8a1ceabc5bfd3e3ff1d0dfb39dcffa55a435463d89e20c6932da084eda50ac35e0323a5f0bf198c656cc00e4f991791e8f68f8e84d4786bb9af619eff447fcfe887f73b56f74a4cf41c52ec7f0d1e191a3c3abcc0a911d1e71fafdce243d701f03b32e575c93cbdffd456fdbc0e4f82cb393f0322b8203dcd3857548f345f36e9af27ada82ecb7adac7ca4e1a6916a10307442d36fb769ea23b2437e44d56cb7eb5fd5b53a53bd3d14f69ff0871fd2f4575b1d56abc3ba689e74edb16ef511597e44ed7e4cd395c64258f187c37e455f526826abc24f1df8a056ae7b49b5eb5afc7d54001a8709902371a243aa39f64474505a1ff7b1bebbefbdbb4fe8f18486ef1d0e797af6b582b7b479e9ce8f2493239e7e498d4655a9ffedad201a4d9ba127cd1834e92df16748c3d33815f7f6818970109b894fcf4ed169998109fb277d5e332c0af3af9f91a3119adbdbdc083031871b6ffb624b63730bd7b2fe2c121c2072489045417447fd0e9f5b140490857e591908f68747622e5f783cec77ba8667b81032b3d9d2ef3cc675bd6f9552d258ef9cac820ca2e0106471d4d72b0a41d7b0280b0e41041154794fef9894d47d39a9d74ddf8bbb575a11c8fee1349deed3c3fb4d5dca45bc011798ddd81184dced73823b2ec763f12ded49455f3c12036b736c31165bbc8e1e3ebf3031373dbc101ce87642ded93df08d23448a49e4081ddb5a245c30b35fb718ab7fd311c1b8cf41c67b43ceee6e67a877fcde2dd94d1235e3843d85f6a0057490e10831fd0a330599e61b06cc9a770262b209c5cd2c47fc4c0dd1d93412efc7f1fd38b94bf6b6f09b220d6202a627607a1e66fdbea9d4ac7f6ad20baff76222cf5bfb228361d966b1109f16d4f5a0e623168b4d0e0f46faac7b6482fdc108ffbec37f9f4c76cd75752589846555b6e8163bc13a5674abaec9aa8c25d060288625121b02ed7752b2d61db4c84eb753f677f97455927442744952755f979f255b82dd1679c6b2abef041d224ef4259fd8ec1adad818ea2a8958f41159c0b2e29365bf228b58263e118baa20aa00aa28bcbc77df0284dd51694c2fc75fe4dd3f9e14c580a809bb76099a1810c5e416fe257ac1b597f959836fda7bd2f191b6a953c2d9b1458046af191dbde6567af8ee553307e627ae0a0d73abbc61d8342fdc7acd68fdc3ae18c61197321d1ea40f7b303c6de219305deb86697739c590fd3aefebdfe9befe86c15eb841f867a6537233df3c0cc669bf63be9bbca68bbdc96030b9871ede3a141d89f70d75f779eda0d8bd7d477b8787f70c0fd75fc3cf3336dfb8abc7e1d1b5123cd7e3e9f2796c254df7c086f9f33dc9e05f69018c7d9a1cefde67f77aedfbbae336facbc65f695f9757936c440c388635bd48ec009aafeb80ae0d3b02ad7888223c8d021cad967d2e2d65a68fad72e231b818181dbe35342013efd755654af52b9bf191b181fe107dd93da218ea1f181b896f2a7e754a51bfee25f240e8d6e1d186dfd105780a8da20584dcc95d6c6bcc84eddd0f6c2b61d702f8fc5e2ebdf858d4a49905f0b94d6d115dd351b15af6fb9e750c866c60d716353bd842830eecf303e8a0609f0f2ba003f87deb76d02d73cc68ea2ab7d762850fdd1389a5ac3fd2ec76ed47d6542c728faa28daaf0af8ad9aa2686fc5c2af6a8a52ffab4f680e5d8367357d6f625772ce941b999ddf309a64f88e6d917a5f5cd1196fee767aa7b668eadb714262f159130f91c4e2b3530c6eb315f0770755e84513e6ffc4b66bfd01afc57f6862e290dfe28d4fc60fc6f7b745089e6ecbc871602dc7a7b83ef5ccf66bc413e8ef9a3838d115eaee67bf6fead30ec0268aa1932c666e53f34b7c7eded8b84c7c53930d2d6f43e974858ae1b6d070789a698493d191c9f89646f97639058d90fa6d97d315c70fc6dbf4c4bb7cfd1d4d1989261d22916e90c8e28b3c98f8c1f8c5767d378fd54cfbc0cbe90157f23aafe84d31f9f4058697ddcf9ebfbd5de3c7c7227ff36bc10eab475fe2cae7a007429ee092eeb17a8241d8d0971699f68e5d595cd2f96584e417feed852fc025f80c52995f4f8ca19ba2542cae03f1f9178051fe05f0cfc6e231d2077e1f910903b196498cb0b73f9b92e331771f101f15b2be03de23f7383d83ceeb1cbee891abecddf7fc4c9e9a9e4a8e26f1aeab26c20b0f1fedb38ec46ffa804fdb7b247163f8fa6b76bf6e242e271277fde9dcae50f9e844746fe6b1782876fec442e60dd7be7952d61395fd3d8eded1d16ecff02e0d603e3631d01fb4f89cf0a699d71d01bb7ce20153efc1f747dd28c6bd5923edf8760c168d21d23097411d58382840ba879ce25652a78847dfe8f25902ba6cb5eb16d11eb0b87d90ad3faee9e41433363d45f40f778fd988ec0f1035aa2a019f48f461ae33780110bbf78e77de7a9bada59aeb82afe003f01916d3f700ba79e79252ac016cc868b481cab58d96352e30b741da1f5fb2c54fb0f6eeda3335ae49f68065cfc16bbd93232c2d18ee0d582445756a4a7cecf44b3d98c3eca9f4197b534bfdecc10cbfe6aaeb5ef76753b705d805e79e48ff9c4b095874b9e7e6891d1ea268e2463d6ddaebddc43c243bd77f5bf8f8163e3518232c707b73f5d670ae6c7e207178be7e9e614596e8b183fe75511445280a9294adffb3cb55bfa43b24e18420b97578adee66a4433f2d09499a3b29486de4668b7cf37d8a729fdca5d7df43139ea782faf3ec26b7e95d729bafeb934c8bc3e240f84c4123b52548bbd0beb2612185c10ea62607360301a623090402b158003602b1d85fb704a1d1b060b54a3862e90afbfdb09158bd7d7afaf6d5442c50df64d91703b117504b367ae4b82c4956f9064bd8ef0f77997a570c4fa161b41fa1c1a6523e1aa132f4acbf0fcbc4df9ce3fccc563b35eb8b47cdd015b3a9388fcf45c706b8a40ba27cc01a9017de6275e1d0504f771487baa45f22aa4ad6a55f561de2ee41d9fa4497bc7fa46fbaafbf5b9ddc37713239739b772128db84b0ac5a7fc561f95e4f0c6060725008f3487c9af22a371683c3a9bee97d53f683ee53a9e4c9893d13e6fcfd5af86003137eb06987c81d6a98b7108bcfe8e3026f8cab75090f2399e2db12bed9146c7063c4374a20cd9d3f3f27811491acd270363b2c59a58725906ead148b955b59ba4d3cf68a3bef7cc531d12685b879625ad2a5c9687452d2a5882846bbbba3a2f83649174f0683c1e04991a68274d0eff7fb0f4a20367d692f13bb4fb812f393760f9cac280e899a70e8a0a88943a278e890c91f1238bfc52de7db97c9d6e03bead7bd436cc1f04cc335a7bd1603f50dbe09da793b0e7ec8311c3042a7917dfbd7de51cee9a027449950d32fb4e16b1266b11e99dfa989a0cb71a7b7e2503756bc5318053dc989f0b37c02dc689f2c0f13e9ef24f21f709e263d1b9e487a82c1b7b52e07930c489fdb567f071f800be816740a65501695d1d92692fe68c381ce0e511392b445f5b796dc2d987dd3db723f4cb5a86659e12912f5b312621330b51f4ff503e56628978ac6a730c3e04fba81c8e3920c7ac103b23426cae0597302114764022e56f105e528c3901b0659dc2d1218498d524a926184d9831c25f5df3ca91c8c4b1800b060891dc79295e4048c4110ad71db21721210134f4e4aaa24de7aab28f1a32a9de4c105d8f16334f963fcc8934367dd5da2ee74cc2eaafed059875317bbdcb38ba1867fef2578127998af141a9cf491a613ae8fad15b8470cedeb7dd0547cc1df1222ba0f1ca702d4f1036e9190dcd0d0c12fb96607dd5fb4263f6842965be5502c76f0f8a1782c245be7e6eefea27b70d6f5a5fee46f73054c0343640d1e45474dd94a26ec31c7b6beaa1795fb5a111152b331b8e78022a4ec56ac686a4a500e10229cd8431fefed1ee67d9667f08a9cf430008d3d27040217c87dd1417f8fef3e62957f8b61e40ff6b05323a06648223d83ecf45bb2952ee0900b7d9b23e62084ac0df41c04c88dac268d9184fa4d5a40dd68c0a445d48df699b4842ce856939699468dd31a1a45674dda82dce85124201055845017faa849038aa1674c1a230dfd8b490b6812fd87498b6812c64d5a423e386dd2321a81b326ada15b59dc3d4a5b500cfefd68b1500d1d3867548a6b463b1d9a091d2d1bc64dc57c6e7987f4d08b5fb8d5285772c54268663c49f39859669a255e65148c72ba6a2c8796d64395b3ab93d5ea4a68a55c5c0bd1ec463e5f0c95cac57b8d4c753c5bad96f64c4cac98e9e399e21a3a8a8aa880aa28840ea073c8401554446bc8b86c7a08cda0103a8acac84006ba0915511ee5d0f215e60ffd6ffde25664a032aaa01cfb25cd378e92cd723a4b99d9a18e572103155819695445065a4621b484d6510855d059b48a26511555d10a0aa1155466e5849aa51b288ff2a88842a8c4aedd8b0c944155348eb2ec5725b4074da009b4b225ff38cab0924cfb38be27b6d33ff80960104004096420a0800a1a58c00a36d0c10e0e70820bdce0012ff8c00f5dd00d01e88120f4421ff44308c21081280cc020c4200e43300c23300a63908071988024ec824998826998815948c11cec863d300f7b195acd7e58840370100ec161380247e12a380657c335702d5c07d7c371b8014ec049b8116e829be116b8156e83dbe114dc0177c25d7037bc02ee81d3908625c8c03218b002ab90851cdc0b67200f6b50802294e03e284305aa5083b3700eee87757825bc0a5e0daf81d7c203b0010fc22fc1ebe097e1f5f02bf0067808de086f8237c35be057e1adf06b701e7e1d1e86df80b7c16fc26fc16fc323f03bf0767807bc13fe0bbc0b7e172ec0a3f07bf06ef8aff0fbf0dfe00fe031780fbc17fe10de07ef870fc007e171f8107c183e021f853f8227e063f071f8047c123e059f86cfc01f038bc90b4fc1e7e069f813f83c7c01be085f822fc357e019f853f82afc193c0b7f0e7f017f09cfc17f87afc1d7e11bf057f0d7f037f04df8167c1bbe0317e16fe1bbf03fe0efe07bf03fe1efe1fbf003f807f847f821fc13fc08fe192ec18fe15fe05fe127f06ff0eff0bfe079f829fc0cfe1ff80ff84fa8c30b1861c0180b58c4129631c10a56b18619ac0fd6b11d3bb013bbb01b7bb017fbb01f77e16e1cc03d38887b711feec7211cc6111cc5037810c7701c0fe1613c8247f1184ee0713c819378179ec453781acfe0599cc2737837de83e7f15ebc0f2fe0fd78111fc007f1217c181fc147f155f818be1a5f83afc5d7e1ebf1717c033e814fe21bf14df8667c0bbe15df866fc7a7f01df84e7c17be1bbf02df834fe3345ec219bc8c0dbc82577116e7f0bdf80ccee3355cc0455cc2f7e132aee02aaee1b3f81cbe1fafe357e257e157e3d7e0d7e207f0067e10ff127e1dfe65fc7afc2bf80df821fc46fc26fc66fc16fcabf8adf8d7f079fcebf861fc1bf86df837f16fe1dfc68fe0dfc16fc7efc0efc4ff05bf0bff2ebe801fc5bf87df8dff2bfe7dfcdff01fe0c7f07bf07bf11fe2f7e1f7e30fe00fe2c7f187f087f147f047f11fe127f0c7f0c7f127f027f1a7f0a7f167f01fe3cfe24dfc247e0a7f0e3f8dff047f1e7f017f117f097f197f053f83ff147f15ff197e16ff39fe0bfc97f839fcdff1d7f0d7f137f05fe1bfc67f83bf89bf85bf8dbf832fe2bfc5dfc5ff03ff1dfe1efe9ff8eff1f7f10ff03fe07fc43fc4ff847f84ff195fc23fc6ff82ff15ff04ff1bb2a69797cb46a592582a16cf34994cbabc2ca797efad55aad6743eb75a48648c42d528db3843d3732beb1ae7f2c64ad5c2c9726e355b55d36b4bb57cba9031a2e935a39ccba40b890acb982eacd6d2ab462247cb2a958d6aaeb02aa70b996cb1ec4c1756f34662b9585b62a77385ce147a1357470abb97bd23a956d21afcb98249f2da3192fd42e174ad44d2e54c3677d6f0a6cbe5e2b9443a5f4d6472e58cf9ebeda9b420dfb65456a67b5b72ade4e4696d4576a6f006b5a7980d6a4fa20d623c6f1023798318693688d1b592951115568d6c3b73566b313de94a2557a9e6ce1a897cae52350ab9c26aa2b25ea91a6b15255da91ae55ce50c4e579de9da72ae9858362a9972ae54cd150bca523a73e65cbabc6c5b4ab3b79ba864d27943584ad34b85e5443ab74c96d2e54c71d91097d2e58a6d295d3196d2f97c821eec4be9ca19a3dae4c5a574356b5b4a57ab46793d61ac95aaebd606b752cbe79b4c369d5fb13798fb6ae972d528fb1a7c355b368c466a45583296c525c3286b4b463e9fa8e4d395ac4849b294cbac67f286b6942b1433b53cab5dae5ccd2ea7d71399f419435acae70acbe25231cf0e5571a9b8b624d26f42a187b574f98c75a9782e4f9f16adbdb054bc5f5a2ade6f54c852399dcbe70d75a99c335632e98a212cd55695a55a2ebf9c2b50229fcf16cb0546548c757ab9a265d2795a8d6ab16ca50fb1b09c2ed3b7a337994cd6c89c69b16bb942ad626bb2a57cadd2ba58cdad1915a5c15a33f4ab4b27ca46b55c94392364d2652d932e1b55de9338c97a1227594f7272ba421fa7d9653b525897ed48e15db623a95652385f2bd10bd544ab03ab8ca775b7648c7235b792cba4ab8696c9f26c465ae5e412ad2ca3f2b9826126967286953d14f3db30197e57893134898e64b94ab658b2984c315d5ed6387d26575835f39c29d09a9be9a5f4b98299fdbe9a6114cce472b1784662a43b9335ce968b85f6af796b1a7d389e2d69e653ed4cac95ac8d145a4e93a105d81a4cb9513dc6d54a52269bcb2f5bcd220ac56a262b73c69ec9e74aac958d3ed3e4e907ae365929932f66ced063c17066f2c58ab19cc8a4d9a79d2bacba32f9626d99d5285f4c2fd3cee8e049b5522341620916fa812796ca74dc16292d678a2b2b8621648aab62a6b85a219962beb656a85832c5b535a350a53f2526ad98679a69ad94ae54684289ce3962a6585a57e981b5dd92291bcbb92a9b89c44cb958d232e562a5924de7ca1531535b32247aa808995a55594e57d374ac11978df40a59362a67aac592b05c485b968bf97cbacc661f1ba5d7132bf97475c9589618a72d171b23b6d268b9486f2b197491a219f97cae54c95512d91679d66614ce1af962c948144b46c1dee4784f541abc6c94d315a3ac1ab5729155c06adc9fc9a60bab067d1e2ee3fe4c3ebd96a64fdfac81a73da95aceb179cad296e834ee2fb171b63998cb3cc569dc5f35ca85749e7e2f67e885aece14f3d34ce7ab1663dd482c978ba512addabac1c748c158376c2be90afdf4f8186f65dc4ab14c1961257dbfbc62aca5f3866585be1ca39cb8d7a82a2bb93c2bd4ca093e9d6a9ca1b387ca48da4578a2717fc6c87332b7965e357801a5e5153b278ae78c72a9982b54799eb3b965c32ce35cb1bc2c528a1ed6e4955cbe6a949d2bb9322d944a11b55c256b94459aa2aee4ca952a9d8df4957c7a957f1546d95816292bade4d395339695627ed928b33728735aa44b51db4ab1d89aa288d97e69a55c3c5790576ad5a5629eaca6d78c527a595a4d9f35f2c2aab1a6ad1a8565a39ca79d7835b752b5ade6d3954a622d5daee60a3969355f5c32d4d5627e8515aaaf96d3cb35f3c5a74b4ad67c3b962c7db7f9dc2be978c5e852ba64944dd248670c3b27e90362df693b4f070f471bcfbe215b5b42ad646d714659654cb99839c3335532b94aa558aef0db554ac5cc1996a5924d9f3148365dc956d3ab42767999648d349dd7347a2e658b05a322658d74b9aab2e39291ae926cae522d96d72dd962e68cb19e28d53267c46c71cdb0678b9552ae9ace272aeb6b4bc5bcd2e06dd962adcc9f9a5158d65b1c9bfb5b6ca5ca6ed4e0955c22532b578a6525b79c584a2faf1a24b7cc460c89f52f991d2b52aeb054bc5fce1596e900942b2cd72ad5f2ba255758299a9f9e486999d6249711ce18ebca19639d8d994a436495f3e952b55812f3467a45ca1b6bc5829e37ce1a79f622d837c0d95a89326a3eb74247ffc2aa9aa72f62a9965f12e997a8e673e5341b0d143a38b3919111c53c3fd7f2223debf962867711f6b1ab74e4669d55a4943b5f2cac265a32279b8eb6a4b1e9684b1a9f8eb624d64a5abe782e713657c9150bd25a7a359791d7d2ab05a32ad20f5e5f4b9768573e633001456bb18492a55c41a567daa48ab0962e59d6d2e58a298fdb185da9968b678c44b6833b6b69e3444acb6bc6f2995c555833b264cd28676ae575752d97291733d95cc9c128d6ddf888a5b512ac4c366a48059c31a502c6686bc52573a09239a9af150bc67a622997cfd35471ad582c686bc56ab1cc8444db5ab156311a5f8ab456abe43272c1a8d1cfa6609cabb0efd25a5ca2534462b55cac957493a915184b8ab52aed6b96529a7e7a4be55a252b97d2f9bc41934a0695dfd2054365349d9fd552ba9c5e2da74b59a94465706b294d6bc09b24314628a5cf6925a360368d92991cab3ea1851885aad57c3cecbac99ca533b12131462ae5f2f98ac46e6d29e5a9e0cb3b3fa5c552beb66aa1a29999ca695e18bd5821a5e272265da96aa5628d0e11b9d582ca46ec447165452a9573b406b557be920ee4392363c8f7b19580fdbe9a51699be59406afde57cb2d2fe7aa99ac765fad5835176a9c641d552ea70bcbc5355236d85b51cac67291bd2e4a686563952e5fcac6b25a364af9f5443a9f971845ca46f59c6154c57231bd2cd321cea86ae54aa33142b952d1ca6cb948dba0956b25839362257dd6b0560c3a917181db6232b4fd32a7e58a513e6b941d95ac39a39ac5aacd042ba7cc2ec8184b256b9c31f2fc86956ccec833794aac6473251b3d94e8ba824eb9562aba96f82a63d5dec6d0b593adc953415aae64e9e3b7b0a5758e0d42b68e65b69571c51a1b6664caa4f3a492ab1a6be9925ac9e7968d722591952a6bb9bca1560ac5732bf9f419c35e2952693c5fcaa6d9c0626be36b2507e7d68a357312d2db136a2595b16ce9c0a8428d6900f87cd591522b11c6d74a223ddb2aa5345d52666bd56ade209552ae50a08de3920b5d10ca8d075d4d97d9c42052ca56a91aa596d8c23873dab654aa46355bac648a25c352a9e63267d6a9e44ce962c9ec8e2aa5cfa5ab99aca5522d1b46357136679cb355aae5dc19a39a2d176bab59b5525be2ab60b9525b3a975e572ab55c95adf42ab582a5522b19657e5da9ac1732fccdae1732a4b24ea700c35a4dd3de56350a855c45628cc68efcc57052afa633748eacf27156a8a657c56a7a95e6af9ca988d5f4fd39a56a94d7728574de5235eeaf26b2065b2330fa5c6eb99a55aad9443e5d5e35082572952aae669dd5ac515e33cb658b6c477b0a7dae1d09f4b9badb13cca575a03dad73d16d69bb64a9666b6b4b15beda33e95a8953d574e68c46df026fb795ad5a1b631c63c42a95fdaac5d5d5bc414715b54116d46a39bd6cd07947aa96d3b982bd5a4e172a5cee62626d1b4ff356b26cbdc22891be57b94a678b75a95aae65ce08d5ea3aae9e556a6b4b65239f4fab3526bfe50a86522b98830c251cb542eeac51aea4f389742663542a9a9990abaecbb5029dd0b55a81cdcdf4457252e6eb254bad6294cdd61146af2dabecccd6bf8caa1899b251d518cd1f0025257aa8d86a55a350c9e5a92c562c282657b19e35e8fcc6e7578d3374f69418293191d97eb698cf1beb4d31d6c26701bef23769fa744db25652cfa5cb46964e7af239dea9ce650d239fa18b2df15c6e25673d972b2c17cf25d8aad16e326be9fb736bb957b6f85c81f1bac9970d2a051acab92257ffc9e7ca46219355d60dce2384fedf000000ffff85cf7717149e0100", "f39c937bdfdad87ec51c9bb933f23cb1": "1f8b08000000000000ffec3d0977db36d27f45e1b659b2811852b7e455fb52e7689a387163376daa4fcfa54448620c812c0fdbaaa2fffe3d1c24411294445b6e93ddbed7b8226e0c063303600ef5dac1b67bad5fc389674d2f7f0c5cec0d25699f3e8dc69aee45c1421d8d4c630cd693c5cbc96016e169e8b858450083485b2b51006b41e83bd350398a745fc5dad195e5d7e0305295de87ee8f8a7634455610d4c2f586643824c33bc1678a0602f2fbd593e5af8a065cf27b76f5ec54d180457e5fa11fde291af0c96f33ea198a06a6e4b7ffd624e527e4b7f312db8a066cda59e31a2a1a5890df67ef03f27b4e7e07ddd7cf150d78b47df4b2a9686049fbfdd8f4150dccc8efc7d1cfa1a28115f9bd38fef383a281ab6176aa006a6b1f86918f6b185eabd1a74f6a343cf5dda513404d5393c22170b475fc550b54a4ad437fb5b654a8637813aa48d336532b9c2e54acad1d156b9b4d52da154b870bdfbdde5adc22c5916ebb187e17aa48bfb25004b50186d7b5281d10d6d638c9dc687ab880580d80ab6d2c558543a85b9e8756649274c935364c4ddb681b702c0021993e1a21fd6c0a310c86c678a8b09f0a20c927967f09fd60688e870affad00b451d79b180b2ed7531707a11f4d43d7a7d35d38811e8456b03883fe953385430468da2f164227ae0d87c7ec3b58b8d70e9eb3665f3b41387c60f21c68f9d3c539f497434511939ebbfef2d8c5a1efa22181ca5c872c7b49db8d87bbc1f3b7f8257642351e4ebe3683def1c2c27318e89ee341f5ede4239c86ea52b734d5844d0df0841949d0343d8826c1d477265045c36f59b373183260a948db68a030737d49c77316fa0e9e07aa96ed55d2202bffd6230b140c916e5ba1956d24e9a630a30086ef49f36a0e84da461c66bce657b418b8721dbb66c4ff8b71e31b555b3b33d69013c26530c4114285b54102ec87c3638e431a43881a1eae1c88ec5a112a012947b041459aeec32042a1aa1d89bdb18927e53610057067b30c4e7bb49b16dc6cb44de8cee70812c48cb1854e4836b5ef120c1bc44920870805e0f3e613244f50b288fdf2f48d0f673e0c1671c52d7db9f81839d34b5637dd8be98afdfed51ae9a11322b8f9bd321e95efda4de0fa21874c151cdb6f45e3ed4371b0b0b2d92d83a55b664319d5f510eacb89ba86786a7941842c52656080205c21180c462345198f01a93f586f36da5142964f843941fde54435c04845aaa66a00ea2ef934001d1cfdd3064ae82b603416d2b27f340d88d5cd4cf5065042bb4af546a6ba09142bad3d1ad1ff295382166476796ecf38fb03e3884d8f171c0e87f8e143150e1f980f8643a44fdda5e76288433d8761fad4c521bc09f5af9ca5879ca9136a0f1f420dc08d7cb82f266a938f4c5180a28c737369e5e75201142f266a3bd736af284e5a5b23158326e9a73878b63534408ab44b8a4cdd0887849726e87151093d4ca04ca23074b102462385f25005289153e3a963305228462a40595afedcc1835adbbb21ff8ec80adecfba16a9d4ae75ac9b31b049f95a2c1ca450a77552289d558592e57975ca01ead716427542c18b88bd74a300421c429f004e4843d0ba82b9b4a54b92e4c00a0560098d7288850c62505f4d54044c4d77f10929f48c145223ede1c350cb74bca3de6b524815abd1b1eda875e25ec1b8b370037c7d027cddd20800312123a6d9eaf47a0c400698ea16184df44b60ebd618ac19491c8c0c8a569704606c71b5b16483509aa47b964f90a3b8c937f9d57df9cfeafeadab4b41491797fe3ae8dade545adb16506ce72a43dcc80ad7a62e8a9638a1603b88f96ca29a9d6eb7db303b19bca1ff3b8b81d20066a7d96bc53059e8088ca0fe0640fdd518acf1fce58c8284fc4820b2671f2fe33e5ab7e8230f758282d110a7f4f688ac0361dc111731a3e474144b988c0bb5e465b8a45d58aab7d5b6a1595cab80e001ac2f5ddb4275821c9683c9f61b83d1882e6de0216ba5d006e46bb955ba318d3dba8438dc174f0af24f1f28a13521dc33cb5dafa0bfaa4dacc099d6a6102168d758b1fdfb6916a4bc05b42a496aadfc46a92627b60bc2d1e21e253d51a457a85ca4549009ce6985bc78d7fdfb6640c5b62a33a05bac764cabe5e7d12f48ec13d75eedbd965b09cf4942f14dd0e8f6da8d5e4a7a2e13d203a0fe07253fcf5dff6d4c81e86f09a123bb30bb4b1aed122a3df71dbbc29e30b39ba2610265e6facbfce673f015f44368d782a51504ce15acd15244d4756c85f3acfacc419cd32bd8bdb290635b21a4923c213e0d32c37a8443379a2ea0cd2910e0e9f254cf7782d0c130976c3b7eb8caa5d1fe72690e96a57a10db0e9e272430c6db209a2c9d30154a7c18c0701f818457948b076d221f9cd1128924c25ade52fe1d29a026a284b87a0cb5724c6daefb19dc8d8bb541ab611a82d431d7976034eac500e915d800a9f974a2368c16af33d7277c47cdf5e5386eb89bef1f51f632d727f9c648e91e308d4eabdf31c0686482d6780c1ac023f20fd42f73c59f4dd48ed1ec77fbdd6e0798607d114493130b5b73e80703735328d200eb0b1f621bfad07e67d98ecb4a65f84b8e83358b5b4744f104c351e4d8b5d0b770c044ad9a337571cdc15e5489bb35f26c87b540bac7d692ec8f3fe896f19035850b17d9d057807246af6d745da779e1ca230589a0f7856c260ea6782f4d50241c0128890f1c7ae3135a7e28cd81d8de67f3b18ea47ba9d1d4f48b85856d045f92526aa487963f8721bf7a679b910eadb4be8bcf1930e3e34061ece55d0b45cf4851491364927b35f00cdbd2e1cba843a399df9d53b2d58e01240ca801e6ba25d9f2a6d168c55bde01c55786111a6f081198c644a0d106ed96d1e936d27e6612e202461dd2e298f51c8ec7604d980765798c8b6cca28cfc784f2cc924e0b94e792539e8fd93965f6602fb3070da0385901966e36babfabececfe17702f94dc3def2f38bd6355b242d35691e722c6bce6dd0e7444486f1e06a80683ec5f73eb469f1e76de9bb66200cb2e4e9bedbc482ae15133c297d8399c0b7a92e91b470739a3df246bdabd9b18bbdf59da34d941597c0c6027e8469be614de39586e739f4378b34b0bd137246db3d7780cd669feade43b6582dce9a53250b08ba1c29aa74234a5db18985d4dc7f363b2663fc7dc5992775e9a73cab9b424eb29e1d492f4f7842f4bd25f328e2deb84716d0ee0463afcc696e1374a87df281f7ea364f88d92e1374a87df28197e73eb15cb77f16bf82079fecedcfd3fbfdbbda7ecc8f8165c975dfa5d82d14ab7443e5572bf97dc0c11ec3c1f42fd72a216babe04cfc17a43fe1b8d35703a8c5465ea5cbf5634f094fc369e4c3c4503cfc8efdf7ef4bc44efe345e6c53f7e64240d13143f0bad10d2c7f967fa4790e6a59b402c71b9d9b0463fcad50828f0737a0401ad5fcc97f623aa02b067c057d267c046f20c287d027c739b75464e10ca56f8549f8053f16ab7d56a194627617b4fc9d966a55b60a25f8209bbdf257361f7bbe4d71ef7bbc23d08a951bc2bfcea36536204b674666fc0ab32dcfd08462faa62ee130173333d7f045fa5a8cbd1f27d0e2d8b2bffcb6d56fef54e304999a0e2bb5108fdba1b85084a61553c958386d9e8f7137978a2bb6034d1278031cb8fa9480cf54515502673f9e3d6d42a90cde035f8a56cb5df67ef13f659ec9ff3642a50c07bf047619ddf1d8a526ca111bfde0653fefcefa3111f6ecfdeca26f627f8b50c69dedd82447c5f606eace377e083c0dc7e204cec978f67aea2811fc9ef1bf478ae68e037f2fbc9cd1f0b45033f514677fd8a9441887c7c3c7d453820a61f2f2797bf2a1a88e8c7eb5fcc5f137e089114232f20824b88c3777016e3e3249acda0cff4bf280384fa92e590954030cca5b2f2d934e8fb6e2ec943d62a9b42af16b249b308a160ea4388734521bc8476362d7496b9915c903ec850a2580f8c5d8c3cbb82380c9ebbfe902ab121ddc5aa224e93abefb9f87b21510362c15c9138330649927dcc13e202141249ee33f21567a5934df29f47089dd1a4b8107bc8e2d9a7c85ac519ec6226cea1772f491685569a473fe34c02b624ebdc59c24429301d3c855366c975b874a8166966264355d578413a4f562a2d2482336d53847ca15d56255f38df309deeae422930779524704dcb1090173a640898946120ce9722e04ccb104827f3dbcc615863f8a926d42a83b5e2c7a74f1faf79e1fc36d5b1153a57f0194bd03298bf09601879a7ac62a23f9c4c0afaba4f5ff9550d8889b496ba9e39080e107096d61c0e30087d6b7a190c462c3d02970eb6074ab88896136c392850368065419e355d585e480e1f9b31f07c6769f9ab81b20897a8ad002b0a5d8ab183072620dd4eace9e53b2b84fca01b0c467ab70d4c60ea6dd0004dd01ac76899dbc3aa30726de3e2577045a859aca52782439fc3f054e84bd58e826b279c2e54a45fc295b69e5a01540c6590a914e42a991a208dbb08eac89dab4a9c59f30927ab998412eb9e0fc9009fc299c5d4fe263eb42e8f68078d1d1de0477a3bdbc7efb93ebe5a93329bdf77f564eeeaa9be474ff5b29e364cec08d16d55141d5489534b5ee1e35d21dc7629cc8a4001ca255cd9ee35dee7ce8bd519c435b6a91212fc8a64175f190d32d24140b96ef3b2b348b8ae8bd6fce868c9f9ef220cbd441084f032c7f6a6be8b509ef1059eef84f02555161e8d63f5e628804fdd6b9ca8a75f41e44e9d7035346212c16fd98706a145a76e400194a745bc10a124a7fc3701e2f081a1adf1c387996171f277c4f65ec46558e4d8d0d7a7c88138fcc5b1c3c5e30680c3baf94dac18fcbd1b613b885563d371a16fa3efa201fa0fac47dfc17a3488c1c21aa4d8a5d3a7aa99eb2f87bfd39fc80ae1afea57ebdce8bd1b8dab0e3bd876a656e8ee6a4045f5487bacc27ae39b48fba66426b4dd0d57858a3cb28ab1063a256e5afc95598e132b5ce8d62450116febd77a5a254ed2fe633e7c88f8e347cdc14168e1297467b51fce4f5e3f75ae627a9f10bab8ec118204f6040d8fc89f07434c80fc240c7d6712855055c84eac33a4a12a6c75c756b4870fd568a862dd9dcd0218be86b3f01116a7fa8d8a78deaf8f33199af638b32c14175895f40ca313c6a0db914f69438c21503e347e6826a3e2338074744273f4ef052b188cde44cb09f455a88df5004e5d6c071a8862dc84f092e165a4518dfc9a33539315c8ec0ceddb463b86271ac6d8996c8c47a6f14da6fc11ef40d8185a7eaf6d62ec20748519cae4c96861c3f20d8aac2014ce847ef221b4ce1ba73c9c21df836c6b1adbcd47299664508ef411a71c651b473a69754973321b3a03135c0442a489e32f5ab5503c1169c3b935cf0a31b99d3acc7e9614df9f2cc82812dbc964acdcd085ad15c5338e4933184e17678cd6e299ab6a9b428a70aae795083d27105305e4f5ac7011e8576108d63e0c3c1707f07ce5c1017beadee48d76d2a50b3ce484aaf27f58d18e9c99aafcf2ecfbf7e7e7ca83e110ebc1c29911d193af37c9966670ea00af6b2e3a9ac5e25396851c611d413c0f1747e976481a224d23ddc15314d93050957f11da21260cf30940d1b4e22cfea56823731c7f0d335f40d18e22fd66c837361e19630d44fa2a4d3069c2759ad0a0098b34a139d60aec911912461a882190500471bcb57afdff6e9ab0261d769a09e0900c2cce18d031b38dda31be790447c6f89b8ef188fd36c78f6a8fe0a831e67b291c6261beac2ec436ad190a354356331c35c69bcd06c4f8108b6b48dbd09344cc4233ccbb4891eb657c6c0ec333b2719ebb3ec3e782082d407184c60480faf537088817552962eb3ea49a1daa7241cf07345101ca056b45ffe8cd158dcb5e6be59a0c41f76e9401d6af81b280ce7c11f2ef05e04f7c8ae1ddd4c8a941010a914fe73e99723de6f0caa08ef59b478a7753531ed5b1be223fb345e9394619fc1ef948fd6a0d37daef404170c67a8a360406e7d69c8281dddc24d49401ecd32763382c0083ef142153580ebee9d69b9c4824e161780c608cbce57c33065932ee32d6ab46312b7c0cb53aca12bb474606ca0d63b399bbdf5bd34b751bfb2bc11d1917dcccdde7ae7f6df9f6b616cbb051da229bdcb92b22e64e70151aaa9bdfa8a520438f71e9981e3734f0c0e436593ebb5b5bc05f140d4c771e7ffe4dba892613e8d7af7dcbf3a03fbac073ae335cfffaf8edc9e9d7e3758cc9031f22cadd8edc2be8cf907b3d5838b60df111df096defa6666cfe95b449505cd6e00cb95638209822149eb165292fef13b4d8a423663a07b2f274db0e4cbdfdf51143a68169185f1f2107c37a9cd030bc9b23cfb26d07cf07c6116170750b39733c98526386a389ebdbd01f98de4d2d709163d7fed56eb78f662e0eebd7ac8d9e61b0efc0f9130e68835317b9fee05fb3d9ec681af981eb0f3cd721cd09e3e6a3950dbc7e0d27974e588f02e8d70388e0341c6017c3a33823067c9da107193b7d168e7b8bcbcd7d6b7294992a8349bff375bc58468dc0872ba00f1c4ca1439fd38f762e787136baed5bf3b983e7b26949063771f05c6825b4e6413da588b246047ac9a14cd62319aa35095c1485f088a0d5c038a2d832306220101808c81657ab27b2db7e5d4ea7530e498651a4af3afd29f473f4276916de0c8ce2f084314c23df27bdc565f61b01412d3682867713f7da24bdd2c1b48daf93ee4d43368014e8570ebcf65c5f8a8949bd20b442679ad947e5c8c0a8d3d6f6927512c098d9a46cf9a86ccc6a349bcd6550835600eb6e14e69046d697b814455466e85f9fb861e82e0726c18b4c93fb8dbeb83046861a9874cf2dc84136f0ac291c609750d894e2d468895222211fc8604160bf4e1658328c56abb5bb196b16427fcd53078a22d9461c3ef5b688591c760ced490e2392f5d0f528f1e784928082e7b0aa4996a0bf1b97601b555a44988813c2e57e2b1353b4198237f1807d8e5f05888b049bb2806061d9ee35a5fae41f9d4a913764d779f7306bb55ae059d21d2e25c0b433c20066741a75886d61bf6cfe2dbfb49cec7369391a29a135578019df4b4a74db44f4610ace26c85f8000a3d45c297e7dcfa9a9b96004759f6abd42fd98aaa9519196aba9d1df122dc41713b511abead514a0d4984decee3758516ae64a4b8626d820d33da41514d06275b37c4110db98951b3a8b9a4c76b51b6489014906a9b2cb90bb22fbcbd6a2601ed6040a41ec2a46e5a2c17aad5e8bb52fa17e4c8d03f9af3630f75de4dcf1f0d60b7cc4540fa1fec3849bb4c716830c7bb889671689521460d7aa1a08d316ccc4f27daf1620b635ed28b6a78f40d62c7e214328a83f21ff0f906ed187796a8ed1321a9d76d3ecb58009d6c945d6c0d814f21b602d5e5ed122e5367ae63624e5e7870a0adb05e70496bc6541b7985b3709c78bfb53268ecf9dfb6b6affa7a046dcd96dac9993a32bc0afbbeb09aa4cbaaed0478f728c0630a8490ce7b52f639411b888d07d76918a927685eefb6553ccf69197a4ab58dc65c970670b146371b94aeb26604656147e714b67744b0ac0dbb6afd8feadd2676397ea7a062f0ea29d3e114de10e6465b9b5433bedb07348b3ce82456d559ac46f31ee932c25f757fb53a66f65325389e67f4c9687c3885d5d7d47be0691ec6e902bdc7798767e7af59851299bd33ba9e5d33f278a063cfaf1eec30f1d45034bfa317d7efa4ad1c08c7e9cbc42a6a28115bbc77a6affaa68e08a7ef82f4f2d4503c7f4e3b73f173f2a1ab8a41fef83e7d3e41dfb5afe7a2d73a096312738716d0b254fd2cc7616da27196f48f113f6c20a9ebbd328488adb10c11052573ed4c2397ec9dee1652db4e6178e4dda2dbe45897e9b2c84cead79f0dcf59fd371ede1f98c6cedd8e119affeb77b54dbee23ae6518fbf88893af4c716cbca08a87df62269eeba1fbdabd86feb11540554b5f55503643d3f4a5e5910eb96b2f4d0f903385aa01cc3691c8724f719bc49e982f1dad34dc0683a3f8e279edd803a60248ea0cd2ea805f91f35b74f601d8de73ec8170afecd8b106d305432796994d031cd30622da6d8ed836674a71b613267be1bb323c39f6a1455f60240f81e9c30fdf248e0de9a65235f9ebd04045ba634bba27732a1bc1cf9e7db811500f6f169e4214af9d5885fbe67a4af7765c20bfd31f0d4b48c0b78df899bf3889a730087d77a56e9b3a5fdc6df354d8d06a41349dc220981132ad00d9ec93c93cb1f9c651b3ca769e150589ae1da18b3920e45ce0254a5bf052458966435cf899ed84799f79499328d726f56c21f8d60be3844d00c31f38a125f90fcce17088bea32596d08d42aad1b9ce13e40d208464904d461b011a127f8159e29f5911aaaeb211c64f134ab021a1fb92c61396c067a828b16a6366ab0a2ac1297b00221918521d112ac98b1a86fc018bbd26691a60fa29e8e143099aa57a5c31b863576d998e92a5950e14890909e2c683469405a5a4d4b135baa4d9f566b412edf49d88f8fbd6c9ad35fa2eaaddc734f3a21ff392787f729d6c5354750728737e9817feefea1048e2e38879b3d9b34189cbc2aa6e0533d72267d5d6550211b6b2412d7d72a85d398153c19bd1766becd411c0612d77c5fbc8188ba4d291c4bd5c65a00591c31f24eb2e6d955ef951cf17ccd71c4edc5058d3d0b9820517145b774a58b65324dedde83e113cbbcd913e217f44e39ebed96e24de4d4ce021e6dee498df782ec6604d25310a68fa4bf47bf06ca2369bed76abd56c18a009d6d38583eca7beebd9ee353e81381a189badb793451f70f22bc8d81458d32f1854a93d2d0c840c277842e19941fa9bff91f56b1d60fd3a9fe1fabdadb67ea56e17e8bb568daa4740bb86e19c3e7126de18ee9957c592f1ae7b88e41a82cbab2aad4ddf72426709036d2b13206bd2ac8b442e2f75652dc82b8356e2d9015913882a70b46486c203d596e9c82effb1b5cce2c879c589482e11d9c391e094227e7dae197a1b2e77fba688cd0a532722264064bbc67bb1e82e2add78dd928db7ed85e120024b6b17c75f40cbe69ed162c8a42fba35132ef7f6d9217323f879fb8beee484afed4f0ace768a831c7cc9fc7091e3c5bd131cf160790bd9b89797f0f378b184a175ebd78946f5a750d3c82f067dfb344d606ebdd3970c1dde847e95b1e73d0d4ac960e8e015a385877926789ed294f6e16561b3ccc53839884a597867eb6b7ef63d983e1425ae7132efb9d9ff95be0ff35b12f6c24b9b8b3204ffb41ac1973c55454ecdb6fccbda94be40649c11ddc48a8fb5a661783747b5f8d3348cabc5512d512c5c0da82eb3907233a87135cf5aacac52cb68abd404574f5528a7b94b032221fdc254449daa1a76fda585aaf4b9f3301bf3865b9f66abb122b264ce956343bb46fd211d649f9d27fbec8e8f63b26d56b669b20f43b2ed561a25809acde4c49fa7773ed7474e4d70b82ca09088eb31668bd8cef03f8768547bef20ab73fa575e08141fed2e3839c4d92b8167fba8976c71447d3bcf70f7e80cae78e3bdff7b297be7e041188acee1b27438413d7e9e86379e85edacbfcfa98b90e505d244d15fe716313ce76376c98fc4b102571039c7bc13e6b324fd96bf7567e5d68e447f24e36918ce97d5a4f04e1e3f16ad7ceb95696d57a0b565ab9395f2daddedf3622e2f6f29f2c91cbecf1c882ab97c2e9c47d9e1b38218b9cb4d784e7aec4921c29d6ecedc69b437132aca91197fba5917ba7c6c5fa4fbdcacbf5c0e2320f7ad7b086fbac01149d91ebe75cdd6dd7ceb92fab7f4ad4bbbbe8b6fdd7c0365be7565c37774f195f081c94bb215da5ad4a8e2cefb5e1cf69a9dbfc161afd9abeab0777be890549631eeea6b36e718bc21897c02ff882c54a39af0354a68ab90aa4621b2c55d6977a3e01df70eb4fb8c9d0f0bd4bbd1ce1ffbf6a6b0985a217e213416cf4f5c1b22eee6aa8cbaded6737992ce9b3f20ed6d74eee8d7bc737bbfe69dbbfa35efec497b39dce48d74e9b30e2d21afbd0d7a3b2b6f815c5702b92c1e65eba94ea2db106d71d8dea94cffa5aed0ff28bb26dfc22dc8392ee61700738e41da4a3caef741a76b765b423f58ca3572ec630cd64b021716b18cfc2254781d517daa410e6a9badcc04c763699ab7f0fede6cec8cff50950e17bd94df810e9f32a596dab935dfe516dc34c487d59c0f7b92e4f0932f1dce733a2bc0c24c14434c64fa0523f6aa19d761516428158f1c91a0dafc71a5f40197a6c4fa0c421293f7c514e45a0261062393867ea2b6310a5560a707ddc09aa002a3f8f2d80abf66c888f40ece25b822e7b9842bcf878120f8b335863653b3c8f710cfbd32abd9f27edeec141ed093a16fa94045de9758156bb8650459a8f2364a83e424d3df52e9155c9d923249252984e40df44536c0abc720dc52a31af1cf69b0a53c6086f409f993e820343bc06c347a3d835a4cf27ae7d6fc8c6f75163567255ec2802b44fdc63a018b1643360aa5b6628232064c532018900dc67f2b6390928801dd8c29c5188394140c464d205286311088c860d40219a242087c02a241024e205b96817cb18a217e4c21c40f57304a2301a5afbf0db0be585a38b2109b3c373f23a0ed67b9c68a3e28af50d6137b9543156921e6492df3f3e18fad42e497ca872d2309a0985e04def1ed2cfb40d13938376e158c68eec08d9fd836154c2d441863f174d4ea4b39f23242e181f832ebf64b62c874f21ecaf3d77f98b48b83bf824bb78d8a5c9a55a8c4a5852afb7369566907970eb6b1e976b32a9b6ecba276ed60d3b10e79ca9f8f098f3816f873db10f9739867cc97ff0d8c399073e6a09435b7f663cded52d6dcce31ac4bca9a2fefc09a2f05d6dc6e7f3eacb95d397059396bbe495873bb7f40d6dcd95309940ba73516f7f22f50fe8ccddd2a047fe5b13cf34f84056d8ced6fc8f7f854ccadc02a3c11d31a15a2b2bd4d9532daf71767fb69da4bf7de226db780011e44122ba7ac3db03c445883c5f2925a2a709785df1a0f1f4689f516afd6e78d722fba54a18474f4802487d63c0071004f6a912d5ea7f0d8df2ca659f60cc8b3521f1df4286b5d590e225c2113faac6d947747a5445e8c4548e34c8ca7f5d30e08179677d021351f3c88b2c65a3cafcbf3a82ec79e61d38448682d4dbf7082675c37219b1a2b0ac89393d05e2c6c5bd6525479663ba132e01a13b2086cbd2d11d87aa511d87ae511d87a2511d87a2511d87aa511d87a2511d8446c30cb872fe49d97e6e4872f6465862fa467862fa4e7862f769289c0d60626d9e909365f30f921679bb03d27365bc8a6bd67c7965c13649bd326b2859970e1e0b9981c5a9397e400932dfa949f6212fc6b96435dc83b2fcdc9435dc8ca405d48cf405d48cf415dec84417dcc69485f003bd9e372e06ecfc9839da5e5c0ce9b28809d152e809d24e7c1ce8ae6c14e1ba6a7c733e900b744236c9746236c9747236c9744236c9744236c9746236c17a2118eb58dc6031abcc8b9846042023539a551c50457e6a98f080cd202fe304a1d87d3c829dc98d709580493331846def0815970e33087210d78a86a800572d0136fb10630a883649e9f38a3f52c3f802f31f7cb4dfbd7036c79c1c2a52ac6d632d01d1b9846ec4456b42f9f39d8660da2ddbe1c28271932970bba1504ce1cabeb82aae0803b7910a201526f1280a7275d6a12987cfac4a61147c3d0c5b02f05ffcc41e8436b098ae934340e014031ef2a9424c6f15d2eaec25036acc41a9b81f78f08faab5306da2c9c3033a2d6436ecc9fcc236b011f526702721fd882ed822a629daf63ebca995b2154470a339f00ebd84be5b93b484bd24658589fbcd3e2fc783236e01c3fb86b1a5df0530ca495c9ffa8c93f41f1829beded5d25710b703db353b46fcdd8023dd93c18940c0c6bd49b3273924421cb012607bb509887f9504bca73f706cc86fce3ad6dc85fdd5927398826d5b51e933347c64aa4011a722bb3822898baa433b90d4343ea92aedce90f396803e5e4e4b16d3f5ead94d8860118391f756f2a038819d927cafdd4c7658d3a82152d14bc9b52db03c1032a33dfe23adf999cc44b688d3bf014337de8412b1cd4b0cb7f1ed5d8e16450b37dd7e32e41d5387e75ade5ddd4fe6559564d3b6277c02d8933f7cc9dad3f8721bbb1ed0165e1c319bba6ba2fcb5a9d9d9741a44f431fbd822b10e94b185aec170d96f00aaeb6e8bfe5ae6926fa128c785c44b0d01d42a728057bede04b7a864c3f456db43f632495e1678c86cae3208c6cc70d1499de3acdd21d3b45b8a8d41857897ca42a8fca5b210b734118c423455304135db640420259a20c5e7f55d9a8b4aa29587ab1f0c6ad9dd1010b66a438ababffa4da705aa982fa3ea3d97abff046305eb8b74b8cafca94de0f7887d1108fd31c453420de6e8819057389f7b75c02b916ba15861691996fa1665f30c358346f87774f614863e56db7763081e265a6e1f9555c7fe483ee979a49b7a4762c361b63666ffe52796f5a9e57f7a03f73fd25f4ebd4588e196ff4009bd61b7ab19375aafb833e013f883e0ab2b1567fa41632609db44bf132f952c6c09ac3e7bebb7c4a83ca9251a4df7b8596cd594dc9a0c362ceee725540a79801e1eb3bfb2afedc90f93406fc2e7c96db8dcddcc8e7a2029947684d2fc94199d93b1384398c9dde2fe9c3c1612dc1e424afbdddb36382ac12ebb03faa6fb283f954d8452af6f6a8f0f37f1d9a4b5522f641f0031a75fff15921b1dcb8f1ddad78c4dc4208faabbae7c32b075ecb96e8377d027e13b942a7d9eb779307c29f08572092f38a3e40f306e9ecf9ef8ab337b7cf9e375a04c0af9fb7b87237abc0743fd45e3000d42abccbbdfb0b844d2a52aa9985fbf4e9417ed58acbf667b565ebe7c9ee14399e473957e20a06cf6f8e91e34d5c2af628cc5c841a8e0085f9e509dddad4f556d59e5bf73ca636c5632a3b776d3b87decef14cbbccf10c533f040db3d1ef27565798368b916e8fc19a0de91962e655c9973206d3c9310f974284b7e4ab44ab6ebb1f9500fa57d0a78e536eed6846b245ab7bca29d8e8ded91b42ba177f7ef77a876daea43f1b0653dff1aa38717f3151fb055161dfc75145d9464e231fedf9d0dadf4e976943c2befeb0c5d87ea1dbe477403555684a541edd21bee82c09ee10df8f16dc2e15632f785e3d09595df05fc4c3f4a75a73ceb2d4860ad2cb7599ca1c6f25ab8711eae9dd36d5be608d170bd14be934bcb5834028481ea2c73f304aa36fd38b3603404aca63aab1662319c42302a4cb01eb78b36d87b4244683a29b89982156314bec56e1bca1ebdd85fb16f61f59768aa27576b4aec71823c70141ad92dfb853fe91c4355fb268d369b1651c603897b474af6e6184c763a1c7bd48390cb50a88a35ec71a8ae93076d4a1b19033b5e84877d4a2418e536d4a98677e8e9e79d5484ac6302c2d9d3c6bc43c7281c034c1fa7e2c6d8e460d86f6e9ea31b4b71018f9489f8e017bd7639e21c82faa414786ca368102e2c10cd2616d76792a28600f0f0fb5b4b035177128fdf30c819394c19be90c1456f724aeca26708dc088c9ce85f1034ef9083b8e43ed4b633a3476fa6c90cab653042ddfc1f3db08b9cdbcc9eec22ced10c159ea508db9464130086ef14c945cae255e08f714815f89d134ee68c59d0ba171b037b05e8ec7735769fdbcabb4c6ad5c67fe451e33d923f0fe4a8654b96aff757c925ece37efef76fe7ddacb3d2a32be4e7bb98d22e39ebdfc9cf6d2bfbf5e7e4d7ac95bcc56df5f39f3d986c46047a42e2c8ce35d64869c716d437ea194923327a8d47aeb4b3bc176ab1c619bed5b9e61cbbc4ef366bb7fc121b6d9db7e8af57ce7ca9aaeaa1e639bfdc39f635b3b9dfadee1207bbc80d3cb205a166dcf763a13bcdd71b6b5dda5e097b6635a95764cebb63ba6b575c7b4fe8a1dd3dab16366d4faa7e67a10d7dc28440e8655774feb1e764ffb3e77cfa9152e0a38dcbea79dd32edf395b19f49fe94dc26d449afdee9bb8010353954c3cc9f294449155e33a6b822945f9cd317df1e54aebcd8c7d40aac8bea5367f4d7ff8d07830cc96caa97fb182dc3a23ee9008fadb6aa5ef8971c56f0dc196635b551a3a2657a969ee7789ce0a77775eee4d3959e74a1fbb2b7856b8102c3cca8712f9a81875764bb4bdad90a0ae883f7d52deb835e6df89f9254e55fa7ab15fe2bef8cabf6d223307413d70fe84b11e5f8f2af2313834b7df6466a1d6de519a824cbcf8fcfe560f71e21d83ec52e103021f519966c60b044613dd022bdd02932c0b2951b7c8442ffc010da17e395125037981c0f708ac37e4bfd158033fd26884fdd5795fd1c06ff4c33b7975ae68e02716ceb07fb248e214227c30a57466269ee83427fb2e133c6a4bacc15409fd8efae8c683e1830748123d2ed1117feefacf98fdd03e0aea3c3a544ecf9c47c8e301b828652a96e119ac54e4a36289c8e710264454d28015f23e7c8b8cb75882a5b3329cfab0b058b9723cefbbb20c3d0902c8e016d98e2b6d886515db49b4248566b24850a822d0663142573e84571ef0f9885eb9bec48893a9060e280b48294e58cc63ea8f810859072605a8ddc78b38f5b9ebd3b165b7028a7f6db44126621e86d735767fa889711b333af565282e31b7a04df190846bc71e48023972441c88e80a221f0d62cc04d48a39c144c0d06a20a01e48706290451190a2dd20878620830083224ec843428ae10671bc0d8be60a8fe9c40305206a66430925c6b755ab8ff0ff4634a34344a32a3be5fc9dd18ce0ffc8fab50fb07e654171fecef50babad9f09146739a7a73566a2a100a567ec1949a8db300818b86cf6a3e0a6e3862e77e277630cd6c8fa73f57269cd195c932fc9d9fbc5446dc427bfffbbb18c340ad3feea82a9798014c08d7db50c83ff91ddd03bc06e308dcf703bb8ff230b681e821f999f637844ab224133f70c12302a7ae52a0bd9b05de7b1100921e98a068371f0fc2e5a905420aebdc464d816bb41db6ed3210bbb56d9eb5b36429504a27772deddde15c2a0ea780baa6f070fbbd0fb5f888c70bf5ebb0fe8a5bb7f3727dd3267a3fbf9e8eedfd145777f4f0fddbb7caad1bb942d5eaffb7f4dd083cfc83da759d93da74bb56c0e4c89cc4204c93b902299d66d4e25670b25a2b5533a14f9e81f3274e0402dbd3b066ae9dd3e504befae815a7a872145918fb611a26288927ba1440de3f3a1448dc62d28512efac8012851a3a0167e074af4d40a614dfdf0e1c387fac949fde953ad18d9a4b32f5d92b4f58fb4749f64aad1bd634c1359648e3d639a74ef1ad3a47b183245df85b6850929b810bd1f3af55f16f0e30071970e1aefe31d7d63d915eaa3c36e79d8834cfef4beb482c0b982359e2b770c1e571552a065d75d8cf274e6cb2360d45222e3885b78daad4e9892e6b6c49a38e16562ca2076b84d7133ebba7a0709e04fbf2911f80de913f2478c13c1eed3f88ef8097147104bebc659464ca18cffa6fb4f18e720336841b733b3c77ea28a6a3fddc107f34f820fe6e667444d5ab7a12679a54bc94553e5abab43929317b15d77be93dc29af759bd0411e55a62b842848fafc92a2147c9184eecb0c1bd4aa1a36a8553d6c50eb3661835a770d1bd4aa1c36a8758bb0418276cf969041ad4cc8205ee79f7841778e17d4bad77841edcfe842321f7e612f86d84e0eed06687e2e6f91edf65e8f91edf6419563b618cd7c4f433eac1d7b6000c245290aee11db21c27f496c8703845dea149e19ef128c36f14098eda3797ff10fe32eff9161fe91612414a5d3aa28c3b00a956418a1cafe320cab740719a6233b986e95613ab7897b9be8156f11613a2d51846155fe9160dafb49309d5209261f8ae5b0124ce7333ad2772b1fe9cb592f4c586fb77928d63ba3aa40a3d431275bcf73b8f49015420534e261723e17e2bcbb96f6c13977f790ba285b3c5f767bf71d2b51ecfc4be2e3ff444cfc7b232676fb15993bab5089b90b55f667eeacd25d2226f61a55b93bab5131b071c6dc674bdcc46e3f13d738aef6d9454f74337499f2f96c525e1068ff2511167bfb8902fd5251a0d7b8cf088bbdd6e7230af43a871305824414e8f50e780aeff50ffe96d02fd84adc45af54e6deb7df283c2448075d45bbb69f570896b4e9467e0821ae5d3b36ac55064beb9f30cdff081d9f97d0d12fde516e173a58854a428750657fa18355ba8bd0d1ef55153afa32bdc2bb8769eeb7ff09d35c7c11d9f349c42c7f13e9f7ee538c308dcf4837d2342a2b47960b126e22489846eb809284691494b8f30c34bc766fc13bb3eecdfff3f590c6a0b808dddabf9fd876eddc9aff1bd430bca6e16c3d2b5c801aed7050fb77e4d466287262e786ffae7dfd6dada81b6e740faecf6e14dcccde458db4242c8d6916a23584f026b47c68c91448e356fe51133da836bb69de519ddd346fafcf4e3bbf93427bbe855bab8a723724dbb4dacdc2d5e83d19d8343f23da6db66f636263162e44ff0b22dfef19e083f904636e9fc478e9918f3281d0a9ebaf340a7a9bff66994c6f917b744a82a427ae54b822190f5d1e6b8f71974e6c00a9ca4bec6f8a667659a4bd372e860a731e457d6185c528e7add230ea9d563c20eefa251b499dbf03f3b2dc695afc78c503910bf1c53badb27ebafdb89fd4414da62bde42b7a5656eae59ed5e0b64aaa6b1dc7bbdb4f76ebfacf77e7baf60f144d42a448b27b249d205390dc8bb30a99fe9288d8a5662462d460ae387553e13c1c67a4bc46db334e2b6591e71db2c89b86d9644dc364b236e9b8588db7cfadd74f88d46f9f085bcf3d29cfcf085acccf085f4ccf085f4dcf0c54e3251e63b5f7a94792313079ed11c5990f9d21c2778072ddbc5288dc7be0510ad5240b4ca01d12a0144ab0410ad5240b44a00d112c3edb74a83ea6fcfc9c77d6fc9c2edb74ac2edb7e4e1f65b9270fb2d69b8fdf696cddf2eddfcedf2cddf2ed9fced92cddf2eddfcedb270fb6d8144b6db651e22484ee222827194a6b05c8479c817657b4e7eb9585a6eb9781385e562850bcb4592f3cbc58ae697abbb6593744b3749b77c93744b3649b76493744b3749b7b049f872757b02d809d79403777b4e1eec2c2d0776de4401ecac7001ec24390f7656b40076d230bdb43d930db0d7295f1521efbc3427bf2a4256665584f4ccaa08e9b955113bc9ac4abf25ac0a1134e4b0df9e935f1596965b15de44615558e1c2aa90e4fcaab0a2f955a10d97af8a696c910cc4ccbc646394cb06625e56b6314aa40331232fdd1805f9601c8b77a20f1cb3bd651e42667e1e4256611e425e761e4246761e42467e1e62479c3f8a3e79fcca4ec65287abd4ff8ee4f6c8c200e332bfaf08dfc9efeb1417fcbeb261200c7c2c787d9de061a42a8ed96e291ab0e947f4e3d30f8a0616f4a3fbe1b7c78a06e6f4e3e672fe5ed180473f1ab079aa6860493fa63f7bef140dcce8c793d68c7cace8c7f73fb6a78a06aee8c7e3ceb36b4503c7f4e39763ef4ad1c025fd087f7ed25434704d3f9ebf58feac68e084150b9e388a062ee8c7ca0e5f2b1a386375566764d42fe9c7dbfe84747a433f3e9efd88150dbca51fbdf70e99c273faf1eb87aba78a06cee9c71fef66bf291a386539dde350d1c0530610bbff46d1c033fa71dc711b8a065ed08fab4be74cd1c0470e83c5f78a065ed18ffef123329c37f4e3fabc77ae68e02bfa717afcc64e5ce73ec1eb4da4db2a06ccd55170e2da11826fe6cfad69e8fa2b255dde04e3dee30d3bc8be27eb8a266a48f0a9789f5283fad5441d41fd7aa2b6cd0680fa4700756b426f50468e6e8140b780ab5bc0d22d700e9e809fc1f7e00704a6783c06a326a9300650bfa25720d713b5d5317a60a163b0d09734ae1b1835c042bf19670accf580fe1be5526dfa2f9b3ac104a3317b3999f3117a992236c9a57fb255af906eb13fd9f405294aff8c48c3d94160320a2c0ea36d360ce0617d42fe4c73e918e936f96381d192179910c05057fbd951924116c6f202bc48534ca3dbecb61acd66072cf409fd27cb9beb1efd27cf9bd37ff23c97fe93e54d744cff8d460d30d1437a694be888a4e88c406e9601b790bb2219abb2dc2b927155967b4c328ecb722f49c66559ee35c9b82ecb3d21192765b91724e3a22cf78c649c95e5be24192fcb726f48c64d59ee5b92f1b62cf739c9785e967b4e32cecb724f49c66959ee5392f1b42cf719c9785696fb8264bc28cbfd48323e96e5be2219afca72e724635e96eb910caf2c17237dcafec872df906a6fcaea7e4532be2acb7d82c97fb29c1084627aa30526e2a57572673d5a53131ce5da424801c9e5d4e07203780e0b061788991f934c31f53da0163f3ec4839124fb5d5269e0d862c60b24e63c86b6138ad9086fc69bf1987278e6e278ac1dfd7f000000ffff328917741a1e0100", "f8cade6638cdf85cd39d65e5ac2c07a5": "1f8b08000000000000ff949341739b3e10c5effe1444877f2e7f246c1cdbe980d353ef6d2fed71915646ae9018ed9ac4dfbe83d53869a693694fb04ff3de6fb50bcd8d899acf23163d0f7ebf68e647e1211c5a8141cc0282d92f8aa21990a1d03d24426ec5896db913970376ec71ff9581fa4f2906c6601a95c5f9b803c2a24f685ba1c47e718d0a30602b26878f634c2c0a7db1722b1e9de1be3538398de5a5f8bf70c1b1035f92068fed3283bd0b3f8a84be154ec7208af91ead70031c503d9559cb600bd35c4aa7e3c3d4aededa89cf1ea947e4678302226452840304765a0e2e484d949d3765f9aebb671ee98352da04792483de4d49066415c6e11a599edcc795ace5521947fc075259ee17ef62b2228db95bd79dadecf20e36bbaac67a657342a3f2f69a2e9af3a573d2c98d5ce81489627207175a012186f3104f240a4afaa5fb31fab375de4b17d554bf947383477ab01e0ed41e80d1fc6711f894905a83164e9e677446bda6cee9b7d7d9e475cbe3e3e8816d4c83d47150de75099243529fbf7cdb7cdf2e3b79a4dbdfe3601ccb1423ef1b757d5d3c43f247c0f8c4ea081364f5d7cdd229b01b5062b5d96dab1ab13208ddca9aaab2f248afbafe9bb4e7819004309dae77d57a63cdddfd66bdaaabd5bfe70de082acbad566bbbbd7f7c6aec16cb735ac776fa254de66a3f22ffb330000ffff80672004c3030000", @@ -70,6 +72,12 @@ var _ = func() error { b.SetResolver("1_initial.up.sql", packr.Pointer{ForwardBox: gk, ForwardPath: "58d1af1ca7160aee1378690fdd4499a3"}) }() + func() { + b := packr.New("Setup UI Box", "../ui/setup") + b.SetResolver("index.html", packr.Pointer{ForwardBox: gk, ForwardPath: "ed538a0a92b0b6c10683f77f1509ba52"}) + b.SetResolver("milligram.min.css", packr.Pointer{ForwardBox: gk, ForwardPath: "18b5bbd8768c777033d715258b270deb"}) + }() + func() { b := packr.New("UI Box", "../ui/v1/dist/stash-frontend") b.SetResolver("1.b2de8334565fbf1b7d1f.js", packr.Pointer{ForwardBox: gk, ForwardPath: "7e79e36572fa06225972da658efa2336"}) diff --git a/revive.toml b/revive.toml new file mode 100644 index 000000000..c535a9a5c --- /dev/null +++ b/revive.toml @@ -0,0 +1,30 @@ +ignoreGeneratedHeader = false +severity = "error" +confidence = 0.8 +errorCode = 1 +warningCode = 1 + +#[rule.blank-imports] +[rule.context-as-argument] +[rule.context-keys-type] +[rule.dot-imports] +[rule.error-return] +[rule.error-strings] +[rule.error-naming] +#[rule.exported] +#[rule.if-return] +[rule.increment-decrement] +#[rule.var-naming] +[rule.var-declaration] +[rule.package-comments] +[rule.range] +[rule.receiver-naming] +[rule.time-naming] +#[rule.unexported-return] +#[rule.indent-error-flow] +[rule.errorf] +#[rule.empty-block] +[rule.superfluous-else] +#[rule.unused-parameter] +[rule.unreachable-code] +[rule.redefines-builtin-id] \ No newline at end of file diff --git a/scraper/freeones.go b/scraper/freeones.go index 3376bab03..32368c843 100644 --- a/scraper/freeones.go +++ b/scraper/freeones.go @@ -14,7 +14,7 @@ import ( func GetPerformerNames(q string) ([]string, error) { // Request the HTML page. - queryURL := "https://www.freeones.com/suggestions.php?q="+url.PathEscape(q)+"&t=1" + queryURL := "https://www.freeones.com/suggestions.php?q=" + url.PathEscape(q) + "&t=1" res, err := http.Get(queryURL) if err != nil { logger.Fatal(err) @@ -41,7 +41,7 @@ func GetPerformerNames(q string) ([]string, error) { } func GetPerformer(performerName string) (*models.ScrapedPerformer, error) { - queryURL := "https://www.freeones.com/search/?t=1&q="+url.PathEscape(performerName)+"&view=thumbs" + queryURL := "https://www.freeones.com/search/?t=1&q=" + url.PathEscape(performerName) + "&view=thumbs" res, err := http.Get(queryURL) if err != nil { return nil, err @@ -151,16 +151,16 @@ func GetPerformer(performerName string) (*models.ScrapedPerformer, error) { twitterElement := bioDoc.Find(".twitter a") twitterHref, _ := twitterElement.Attr("href") if twitterHref != "" { - twitterUrl, _ := url.Parse(twitterHref) - twitterHandle := strings.Replace(twitterUrl.Path, "/", "", -1) + twitterURL, _ := url.Parse(twitterHref) + twitterHandle := strings.Replace(twitterURL.Path, "/", "", -1) result.Twitter = &twitterHandle } instaElement := bioDoc.Find(".instagram a") instaHref, _ := instaElement.Attr("href") if instaHref != "" { - instaUrl, _ := url.Parse(instaHref) - instaHandle := strings.Replace(instaUrl.Path, "/", "", -1) + instaURL, _ := url.Parse(instaHref) + instaHandle := strings.Replace(instaURL.Path, "/", "", -1) result.Instagram = &instaHandle } @@ -204,10 +204,14 @@ func getIndexes(doc *goquery.Document) map[string]int { func getEthnicity(ethnicity string) string { switch ethnicity { - case "Caucasian": return "white" - case "Black": return "black" - case "Latin": return "hispanic" - case "Asian": return "asian" + case "Caucasian": + return "white" + case "Black": + return "black" + case "Latin": + return "hispanic" + case "Asian": + return "asian" default: panic("unknown ethnicity") } @@ -217,19 +221,18 @@ func paramValue(params *goquery.Selection, paramIndex int) string { i := paramIndex - 1 if paramIndex == 0 { return "" - } else { - node := params.Get(i).FirstChild - content := trim(node.Data) - if content != "" { - return content - } - node = node.NextSibling - return trim(node.FirstChild.Data) } + node := params.Get(i).FirstChild + content := trim(node.Data) + if content != "" { + return content + } + node = node.NextSibling + return trim(node.FirstChild.Data) } // https://stackoverflow.com/questions/20305966/why-does-strip-not-remove-the-leading-whitespace func trim(text string) string { // return text.replace(/\A\p{Space}*|\p{Space}*\z/, ""); return strings.TrimSpace(text) -} \ No newline at end of file +} diff --git a/utils/boolean.go b/utils/boolean.go index bb3239df2..51a6cfd72 100644 --- a/utils/boolean.go +++ b/utils/boolean.go @@ -5,4 +5,4 @@ func Btoi(b bool) int { return 1 } return 0 -} \ No newline at end of file +} diff --git a/utils/crypto.go b/utils/crypto.go index b368d5d2b..efa124a34 100644 --- a/utils/crypto.go +++ b/utils/crypto.go @@ -25,4 +25,4 @@ func MD5FromFilePath(filePath string) (string, error) { } checksum := h.Sum(nil) return fmt.Sprintf("%x", checksum), nil -} \ No newline at end of file +} diff --git a/utils/date.go b/utils/date.go index 16d3e9d87..715b304ff 100644 --- a/utils/date.go +++ b/utils/date.go @@ -6,4 +6,4 @@ func GetYMDFromDatabaseDate(dateString string) string { t, _ := time.Parse(time.RFC3339, dateString) // https://stackoverflow.com/a/20234207 WTF? return t.Format("2006-01-02") -} \ No newline at end of file +} diff --git a/utils/file.go b/utils/file.go index e2b0ad0da..b45bf533f 100644 --- a/utils/file.go +++ b/utils/file.go @@ -61,4 +61,4 @@ func EmptyDir(path string) error { } return nil -} \ No newline at end of file +} diff --git a/utils/image.go b/utils/image.go index 155057b42..5e9e2d1a8 100644 --- a/utils/image.go +++ b/utils/image.go @@ -40,4 +40,4 @@ func GetBase64StringFromData(data []byte) string { // result += "\n" //} //return result -} \ No newline at end of file +} diff --git a/utils/natural_sort.go b/utils/natural_sort.go index b88532875..a2bbcf003 100644 --- a/utils/natural_sort.go +++ b/utils/natural_sort.go @@ -109,4 +109,4 @@ func NaturalCompare(a, b string) bool { } return false -} \ No newline at end of file +} diff --git a/utils/string_collections.go b/utils/string_collections.go index 7b7e24b7f..5702e9375 100644 --- a/utils/string_collections.go +++ b/utils/string_collections.go @@ -31,4 +31,4 @@ func StrMap(vs []string, f func(string) string) []string { vsm[i] = f(v) } return vsm -} \ No newline at end of file +} diff --git a/utils/vtt.go b/utils/vtt.go index 4a4fa1b7d..f80ef6f7b 100644 --- a/utils/vtt.go +++ b/utils/vtt.go @@ -5,6 +5,7 @@ import ( "time" ) +// GetVTTTime returns a timestamp appropriate for VTT files (hh:mm:ss) func GetVTTTime(totalSeconds float64) (s string) { totalSecondsString := strconv.FormatFloat(totalSeconds, 'f', -1, 64) secondsDuration, _ := time.ParseDuration(totalSecondsString + "s") diff --git a/utils/windows.go b/utils/windows.go index 43a23d900..fb25f912d 100644 --- a/utils/windows.go +++ b/utils/windows.go @@ -5,11 +5,10 @@ import ( "strings" ) -// Sometimes the \ isn't recognized as valid on windows +// FixWindowsPath replaces \ with / in the given path because sometimes the \ isn't recognized as valid on windows func FixWindowsPath(str string) string { if runtime.GOOS == "windows" { return strings.Replace(str, "\\", "/", -1) - } else { - return str } -} \ No newline at end of file + return str +}