From 2469592212cfd4a2c1382452c8e0c681d5c91785 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Sat, 5 Apr 2025 15:03:28 -0700 Subject: [PATCH 01/33] Update .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 3b735ec..abe6514 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ # Go workspace file go.work + +.DS_Store \ No newline at end of file From 15d01f2f343d7284b2b44764f535e9e59e88c929 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Sat, 5 Apr 2025 15:54:03 -0700 Subject: [PATCH 02/33] "feat: implement config file support and download functionality" -m "- Add configuration file structure and loading capability" -m "- Implement track, album, and playlist download functionality" -m "- Add concurrent downloads for albums and playlists" -m "- Update README with configuration and usage documentation" --- cmd/main.go | 415 +++++++++++++++++++++++++++++++++++++++++++++++- types/config.go | 52 ++++++ 2 files changed, 465 insertions(+), 2 deletions(-) create mode 100644 types/config.go diff --git a/cmd/main.go b/cmd/main.go index b000af4..eabb348 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -1,7 +1,418 @@ package main -import "fmt" +import ( + "encoding/json" + "flag" + "fmt" + "os" + "path/filepath" + "strings" + "sync" + + "github.com/d-fi/GoFi/api" + "github.com/d-fi/GoFi/download" + "github.com/d-fi/GoFi/logger" + "github.com/d-fi/GoFi/request" + "github.com/d-fi/GoFi/types" + "github.com/d-fi/GoFi/utils" +) + +var ( + appConfig types.Config +) func main() { - fmt.Println("To-Do: Implement music download functionality") + // Set up command line flags + var ( + arl string + configFile string + logLevel string + ) + + flag.StringVar(&arl, "arl", "", "Deezer ARL token (required for authentication)") + flag.StringVar(&configFile, "config", "", "Path to config file (if not using command line args)") + flag.StringVar(&logLevel, "log-level", "info", "Log level (debug, info, warn, error)") + flag.Parse() + + // Set log level based on flag (debug environment variable is used in logger init) + if logLevel == "debug" { + os.Setenv("DEBUG", "true") + } + + // Load configuration from file if specified + appConfig = types.DefaultConfig() + if configFile != "" { + loadedConfig, err := loadConfigFromFile(configFile) + if err != nil { + fmt.Printf("Error loading config file: %v\n", err) + os.Exit(1) + } + appConfig = loadedConfig + logger.Debug("Loaded configuration from file: %s", configFile) + } + + // Check for ARL in environment variable or config file if not provided via flag + if arl == "" { + arl = os.Getenv("DEEZER_ARL") + if arl == "" && appConfig.Cookies.ARL != "" { + arl = appConfig.Cookies.ARL + logger.Debug("Using ARL from config file") + } + } + + // Validate ARL + if arl == "" { + fmt.Println("Error: Deezer ARL token is required.") + fmt.Println("You can provide it using the -arl flag, set the DEEZER_ARL environment variable, or specify in config file.") + fmt.Println("\nUsage: ./d-fi -arl=YOUR_ARL_TOKEN") + os.Exit(1) + } + + // Initialize Deezer API + sessionID, err := request.InitDeezerAPI(arl) + if err != nil { + fmt.Printf("Failed to initialize Deezer API: %v\n", err) + os.Exit(1) + } + + logger.Debug("Successfully authenticated with Deezer (Session ID: %s)", sessionID) + + // Check for any arguments after flags + args := flag.Args() + if len(args) == 0 { + printUsage() + return + } + + // Process the command + command := args[0] + switch command { + case "search": + if len(args) < 2 { + fmt.Println("Error: Search query required") + return + } + query := strings.Join(args[1:], " ") + searchMusic(query) + case "download": + if len(args) < 3 { + fmt.Println("Error: Usage: download ") + return + } + downloadType := args[1] + id := args[2] + + switch downloadType { + case "track": + downloadTrack(id) + case "album": + downloadAlbum(id) + case "playlist": + downloadPlaylist(id) + default: + fmt.Printf("Error: Unknown download type: %s\n", downloadType) + fmt.Println("Available types: track, album, playlist") + } + default: + fmt.Printf("Unknown command: %s\n", command) + printUsage() + } +} + +func loadConfigFromFile(configPath string) (types.Config, error) { + config := types.DefaultConfig() + + // Read the config file + data, err := os.ReadFile(configPath) + if err != nil { + return config, fmt.Errorf("failed to read config file: %v", err) + } + + // Parse the JSON + if err := json.Unmarshal(data, &config); err != nil { + return config, fmt.Errorf("failed to parse config file: %v", err) + } + + return config, nil +} + +func printUsage() { + fmt.Println("GoFi - Deezer music downloader") + fmt.Println("\nUsage:") + fmt.Println(" ./d-fi [options] command [arguments]") + fmt.Println("\nOptions:") + fmt.Println(" -arl string Deezer ARL token (required for authentication)") + fmt.Println(" -config string Path to config file") + fmt.Println(" -log-level string Log level (debug, info, warn, error) (default \"info\")") + fmt.Println("\nCommands:") + fmt.Println(" search Search for tracks, albums, or artists") + fmt.Println(" download Download track, album, or playlist") + fmt.Println(" Types: track, album, playlist") + fmt.Println("\nExamples:") + fmt.Println(" ./d-fi -arl=YOUR_ARL search \"artist name\"") + fmt.Println(" ./d-fi -arl=YOUR_ARL download track 123456789") + fmt.Println(" ./d-fi -config=/path/to/config.json download album 123456789") +} + +func searchMusic(query string) { + fmt.Printf("Searching for: %s\n", query) + + results, err := api.SearchMusic(query, 10, "TRACK", "ALBUM", "ARTIST") + if err != nil { + fmt.Printf("Search failed: %v\n", err) + return + } + + // Display track results + if len(results.TRACK.Data) > 0 { + fmt.Println("\nTracks:") + for i, track := range results.TRACK.Data { + fmt.Printf("%d. %s - %s (ID: %s)\n", i+1, track.ART_NAME, track.SNG_TITLE, track.SNG_ID) + } + } + + // Display album results + if len(results.ALBUM.Data) > 0 { + fmt.Println("\nAlbums:") + for i, album := range results.ALBUM.Data { + fmt.Printf("%d. %s - %s (ID: %s)\n", i+1, album.ART_NAME, album.ALB_TITLE, album.ALB_ID) + } + } + + // Display artist results + if len(results.ARTIST.Data) > 0 { + fmt.Println("\nArtists:") + for i, artist := range results.ARTIST.Data { + fmt.Printf("%d. %s (ID: %s)\n", i+1, artist.ART_NAME, artist.ART_ID) + } + } +} + +func downloadTrack(trackID string) { + fmt.Println("Downloading track...") + + // Get the track info + track, err := api.GetTrackInfo(trackID) + if err != nil { + fmt.Printf("Error: Failed to get track info: %v\n", err) + return + } + + // Create the download directory based on the config + downloadDir := expandPathTemplate(appConfig.SaveLayout.Track, track, nil, "") + dir := filepath.Dir(downloadDir) + + // Create the directory if it doesn't exist + if err := os.MkdirAll(dir, 0755); err != nil { + fmt.Printf("Error: Failed to create download directory: %v\n", err) + return + } + + // Determine quality based on track availability + quality := 9 // FLAC by default + + // Progress tracking function + progressFunc := func(progress float64, downloaded, total int64) { + fmt.Printf("\rDownloading: %.1f%% (%s/%s)", progress, formatSize(downloaded), formatSize(total)) + } + + // Download the track + options := download.DownloadTrackOptions{ + SngID: trackID, + Quality: quality, + CoverSize: appConfig.CoverSize.Flac, + SaveToDir: dir, + OnProgress: progressFunc, + } + + filePath, err := download.DownloadTrack(options) + if err != nil { + fmt.Printf("\nError: Failed to download track: %v\n", err) + return + } + + fmt.Printf("\nTrack downloaded successfully: %s\n", filePath) +} + +func downloadAlbum(albumID string) { + fmt.Println("Downloading album...") + + // Get the album info + album, err := api.GetAlbumInfo(albumID) + if err != nil { + fmt.Printf("Error: Failed to get album info: %v\n", err) + return + } + + // Get the tracks in the album + tracks, err := api.GetAlbumTracks(albumID) + if err != nil { + fmt.Printf("Error: Failed to get album tracks: %v\n", err) + return + } + + fmt.Printf("Album: %s by %s\n", album.ALB_TITLE, album.ART_NAME) + fmt.Printf("Total tracks: %d\n", len(tracks.Data)) + + // Create a wait group to track download completion + var wg sync.WaitGroup + concurrency := appConfig.Concurrency + semaphore := make(chan struct{}, concurrency) + + for i, track := range tracks.Data { + wg.Add(1) + semaphore <- struct{}{} // Acquire semaphore + + go func(i int, track types.TrackType) { + defer wg.Done() + defer func() { <-semaphore }() // Release semaphore + + fmt.Printf("[%d/%d] Downloading: %s - %s\n", i+1, len(tracks.Data), track.ART_NAME, track.SNG_TITLE) + + // Create the download directory based on the config + downloadDir := expandPathTemplate(appConfig.SaveLayout.Album, track, &album, "") + dir := filepath.Dir(downloadDir) + + // Create the directory if it doesn't exist + if err := os.MkdirAll(dir, 0755); err != nil { + fmt.Printf("Error: Failed to create download directory for track %s: %v\n", track.SNG_TITLE, err) + return + } + + // Determine quality based on track availability + quality := 9 // FLAC by default + + // Download the track + options := download.DownloadTrackOptions{ + SngID: track.SNG_ID, + Quality: quality, + CoverSize: appConfig.CoverSize.Flac, + SaveToDir: dir, + } + + filePath, err := download.DownloadTrack(options) + if err != nil { + fmt.Printf("Error: Failed to download track %s: %v\n", track.SNG_TITLE, err) + return + } + + fmt.Printf("Track downloaded: %s\n", filepath.Base(filePath)) + }(i, track) + } + + wg.Wait() + fmt.Println("Album download completed!") +} + +func downloadPlaylist(playlistID string) { + fmt.Println("Downloading playlist...") + + // Get the playlist info + playlist, err := api.GetPlaylistInfo(playlistID) + if err != nil { + fmt.Printf("Error: Failed to get playlist info: %v\n", err) + return + } + + // Get the tracks in the playlist + tracks, err := api.GetPlaylistTracks(playlistID) + if err != nil { + fmt.Printf("Error: Failed to get playlist tracks: %v\n", err) + return + } + + fmt.Printf("Playlist: %s\n", playlist.Title) + fmt.Printf("Total tracks: %d\n", len(tracks.Data)) + + // Create a wait group to track download completion + var wg sync.WaitGroup + concurrency := appConfig.Concurrency + semaphore := make(chan struct{}, concurrency) + + for i, track := range tracks.Data { + wg.Add(1) + semaphore <- struct{}{} // Acquire semaphore + + go func(i int, track types.TrackType) { + defer wg.Done() + defer func() { <-semaphore }() // Release semaphore + + fmt.Printf("[%d/%d] Downloading: %s - %s\n", i+1, len(tracks.Data), track.ART_NAME, track.SNG_TITLE) + + // Create the download directory based on the config + downloadDir := expandPathTemplate(appConfig.SaveLayout.Playlist, track, nil, playlist.Title) + dir := filepath.Dir(downloadDir) + + // Create the directory if it doesn't exist + if err := os.MkdirAll(dir, 0755); err != nil { + fmt.Printf("Error: Failed to create download directory for track %s: %v\n", track.SNG_TITLE, err) + return + } + + // Determine quality based on track availability + quality := 9 // FLAC by default + + // Download the track + options := download.DownloadTrackOptions{ + SngID: track.SNG_ID, + Quality: quality, + CoverSize: appConfig.CoverSize.Flac, + SaveToDir: dir, + } + + filePath, err := download.DownloadTrack(options) + if err != nil { + fmt.Printf("Error: Failed to download track %s: %v\n", track.SNG_TITLE, err) + return + } + + fmt.Printf("Track downloaded: %s\n", filepath.Base(filePath)) + }(i, track) + } + + wg.Wait() + fmt.Println("Playlist download completed!") +} + +// expandPathTemplate replaces placeholders in the template with actual values +func expandPathTemplate(template string, track types.TrackType, album *types.AlbumType, playlistTitle string) string { + result := template + + // Track info + result = strings.ReplaceAll(result, "{SNG_TITLE}", utils.SanitizeFileName(track.SNG_TITLE)) + result = strings.ReplaceAll(result, "{ART_NAME}", utils.SanitizeFileName(track.ART_NAME)) + result = strings.ReplaceAll(result, "{SNG_ID}", track.SNG_ID) + + // Track number (if available) + trackNumberStr := "" + if trackNum := int(track.TRACK_NUMBER); trackNum > 0 { + trackNumberStr = fmt.Sprintf("%02d", trackNum) + } + result = strings.ReplaceAll(result, "{TRACK_NUMBER}", trackNumberStr) + + // Album info (if available) + if album != nil { + result = strings.ReplaceAll(result, "{ALB_TITLE}", utils.SanitizeFileName(album.ALB_TITLE)) + result = strings.ReplaceAll(result, "{ALB_ID}", album.ALB_ID) + } + + // Playlist title (if available) + if playlistTitle != "" { + result = strings.ReplaceAll(result, "{TITLE}", utils.SanitizeFileName(playlistTitle)) + } + + return result +} + +// formatSize formats a file size in bytes to a human-readable string +func formatSize(size int64) string { + if size < 1024 { + return fmt.Sprintf("%d B", size) + } else if size < 1024*1024 { + return fmt.Sprintf("%.1f KB", float64(size)/1024) + } else if size < 1024*1024*1024 { + return fmt.Sprintf("%.1f MB", float64(size)/1024/1024) + } else { + return fmt.Sprintf("%.1f GB", float64(size)/1024/1024/1024) + } } diff --git a/types/config.go b/types/config.go new file mode 100644 index 0000000..e524318 --- /dev/null +++ b/types/config.go @@ -0,0 +1,52 @@ +package types + +// Config represents the application configuration +type Config struct { + Concurrency int `json:"concurrency"` + SaveLayout struct { + Track string `json:"track"` + Album string `json:"album"` + Artist string `json:"artist"` + Playlist string `json:"playlist"` + } `json:"saveLayout"` + Playlist struct { + ResolveFullPath bool `json:"resolveFullPath"` + } `json:"playlist"` + TrackNumber bool `json:"trackNumber"` + FallbackTrack bool `json:"fallbackTrack"` + FallbackQuality bool `json:"fallbackQuality"` + CoverSize struct { + Q128 int `json:"128"` + Q320 int `json:"320"` + Flac int `json:"flac"` + } `json:"coverSize"` + Cookies struct { + ARL string `json:"arl"` + } `json:"cookies"` +} + +// DefaultConfig returns a default configuration +func DefaultConfig() Config { + config := Config{ + Concurrency: 1, + TrackNumber: false, + FallbackTrack: true, + FallbackQuality: false, + } + + // Default save layouts + config.SaveLayout.Track = "./downloads/Tracks/{ART_NAME}/{ART_NAME} - {SNG_TITLE}" + config.SaveLayout.Album = "./downloads/Albums/{ART_NAME}/{ALB_TITLE}/{TRACK_NUMBER} - {SNG_TITLE}" + config.SaveLayout.Artist = "./downloads/Artists/{ART_NAME}/{SNG_TITLE}" + config.SaveLayout.Playlist = "./downloads/Playlists/{TITLE}/{ART_NAME} - {SNG_TITLE}" + + // Default cover sizes + config.CoverSize.Q128 = 500 + config.CoverSize.Q320 = 500 + config.CoverSize.Flac = 1000 + + // Default playlist settings + config.Playlist.ResolveFullPath = false + + return config +} \ No newline at end of file From d84feeb514832c42c6fd45684faf3269fb05f6b6 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Sat, 5 Apr 2025 15:57:07 -0700 Subject: [PATCH 03/33] "chore: add example config and improve gitignore" -m "- Add example configuration file without credentials" -m "- Update gitignore to exclude real config and binaries" --- .gitignore | 15 ++++++++++++--- d-fi.config.example.json | 23 +++++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 d-fi.config.example.json diff --git a/.gitignore b/.gitignore index abe6514..b0c6f65 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ *.dll *.so *.dylib +d-fi # Test binary, built with `go test -c` *.test @@ -17,7 +18,15 @@ # Dependency directories (remove the comment below to include it) # vendor/ -# Go workspace file -go.work +# Config files that may contain credentials +d-fi.config.json +*.env + +# Build and output directories +bin/ +downloads/ +build/ +.DS_Store -.DS_Store \ No newline at end of file +# Go workspace file +go.work \ No newline at end of file diff --git a/d-fi.config.example.json b/d-fi.config.example.json new file mode 100644 index 0000000..aae7ab1 --- /dev/null +++ b/d-fi.config.example.json @@ -0,0 +1,23 @@ +{ + "concurrency": 3, + "saveLayout": { + "track": "./downloads/Tracks/{ART_NAME}/{ART_NAME} - {SNG_TITLE}", + "album": "./downloads/Albums/{ART_NAME}/{ALB_TITLE}/{TRACK_NUMBER} - {SNG_TITLE}", + "artist": "./downloads/Artists/{ART_NAME}/{SNG_TITLE}", + "playlist": "./downloads/Playlists/{TITLE}/{ART_NAME} - {SNG_TITLE}" + }, + "playlist": { + "resolveFullPath": false + }, + "trackNumber": false, + "fallbackTrack": true, + "fallbackQuality": false, + "coverSize": { + "128": 500, + "320": 500, + "flac": 1000 + }, + "cookies": { + "arl": "YOUR_ARL_TOKEN_HERE" + } +} From 64b1adff172137085a3e62b275d4d2f7f1e84a2b Mon Sep 17 00:00:00 2001 From: itsbrex Date: Sat, 5 Apr 2025 16:01:51 -0700 Subject: [PATCH 04/33] "feat: add support for downloading by name instead of ID" -m "- Implement search by name for tracks, albums and playlists" -m "- Add interactive selection when multiple results match" -m "- Update documentation with examples of name-based searching" --- cmd/main.go | 195 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 186 insertions(+), 9 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index eabb348..6d67727 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -6,6 +6,7 @@ import ( "fmt" "os" "path/filepath" + "strconv" "strings" "sync" @@ -96,19 +97,19 @@ func main() { searchMusic(query) case "download": if len(args) < 3 { - fmt.Println("Error: Usage: download ") + fmt.Println("Error: Usage: download ") return } downloadType := args[1] - id := args[2] + nameOrID := strings.Join(args[2:], " ") switch downloadType { case "track": - downloadTrack(id) + downloadTrackByNameOrID(nameOrID) case "album": - downloadAlbum(id) + downloadAlbumByNameOrID(nameOrID) case "playlist": - downloadPlaylist(id) + downloadPlaylistByNameOrID(nameOrID) default: fmt.Printf("Error: Unknown download type: %s\n", downloadType) fmt.Println("Available types: track, album, playlist") @@ -146,12 +147,14 @@ func printUsage() { fmt.Println(" -log-level string Log level (debug, info, warn, error) (default \"info\")") fmt.Println("\nCommands:") fmt.Println(" search Search for tracks, albums, or artists") - fmt.Println(" download Download track, album, or playlist") + fmt.Println(" download Download track, album, or playlist by name or ID") fmt.Println(" Types: track, album, playlist") fmt.Println("\nExamples:") - fmt.Println(" ./d-fi -arl=YOUR_ARL search \"artist name\"") - fmt.Println(" ./d-fi -arl=YOUR_ARL download track 123456789") - fmt.Println(" ./d-fi -config=/path/to/config.json download album 123456789") + fmt.Println(" ./d-fi -arl=YOUR_ARL search \"daft punk\"") + fmt.Println(" ./d-fi -arl=YOUR_ARL download track \"Harder Better Faster Stronger\"") + fmt.Println(" ./d-fi -arl=YOUR_ARL download track 3135556") + fmt.Println(" ./d-fi -config=config.json download album \"Discovery\"") + fmt.Println(" ./d-fi -config=config.json download album 302127") } func searchMusic(query string) { @@ -188,6 +191,180 @@ func searchMusic(query string) { } } +func downloadTrackByNameOrID(nameOrID string) { + // Check if the input is an ID (all digits) + isID := true + for _, char := range nameOrID { + if char < '0' || char > '9' { + isID = false + break + } + } + + var trackID string + if isID { + trackID = nameOrID + fmt.Printf("Downloading track with ID: %s\n", trackID) + } else { + // Search for the track by name + fmt.Printf("Searching for track: %s\n", nameOrID) + results, err := api.SearchMusic(nameOrID, 5, "TRACK") + if err != nil { + fmt.Printf("Error: Failed to search for track: %v\n", err) + return + } + + if len(results.TRACK.Data) == 0 { + fmt.Println("Error: No tracks found with that name") + return + } + + // Display the found tracks and ask the user to select one + fmt.Println("Found tracks:") + for i, track := range results.TRACK.Data { + fmt.Printf("%d. %s - %s (ID: %s)\n", i+1, track.ART_NAME, track.SNG_TITLE, track.SNG_ID) + } + + if len(results.TRACK.Data) > 1 { + fmt.Print("\nSelect a track (1-5) or press Enter for the first result: ") + var choice string + fmt.Scanln(&choice) + + if choice == "" { + trackID = results.TRACK.Data[0].SNG_ID + } else { + index, err := strconv.Atoi(choice) + if err != nil || index < 1 || index > len(results.TRACK.Data) { + fmt.Println("Invalid selection, using the first result") + trackID = results.TRACK.Data[0].SNG_ID + } else { + trackID = results.TRACK.Data[index-1].SNG_ID + } + } + } else { + trackID = results.TRACK.Data[0].SNG_ID + } + } + + downloadTrack(trackID) +} + +func downloadAlbumByNameOrID(nameOrID string) { + // Check if the input is an ID (all digits) + isID := true + for _, char := range nameOrID { + if char < '0' || char > '9' { + isID = false + break + } + } + + var albumID string + if isID { + albumID = nameOrID + fmt.Printf("Downloading album with ID: %s\n", albumID) + } else { + // Search for the album by name + fmt.Printf("Searching for album: %s\n", nameOrID) + results, err := api.SearchMusic(nameOrID, 5, "ALBUM") + if err != nil { + fmt.Printf("Error: Failed to search for album: %v\n", err) + return + } + + if len(results.ALBUM.Data) == 0 { + fmt.Println("Error: No albums found with that name") + return + } + + // Display the found albums and ask the user to select one + fmt.Println("Found albums:") + for i, album := range results.ALBUM.Data { + fmt.Printf("%d. %s - %s (ID: %s)\n", i+1, album.ART_NAME, album.ALB_TITLE, album.ALB_ID) + } + + if len(results.ALBUM.Data) > 1 { + fmt.Print("\nSelect an album (1-5) or press Enter for the first result: ") + var choice string + fmt.Scanln(&choice) + + if choice == "" { + albumID = results.ALBUM.Data[0].ALB_ID + } else { + index, err := strconv.Atoi(choice) + if err != nil || index < 1 || index > len(results.ALBUM.Data) { + fmt.Println("Invalid selection, using the first result") + albumID = results.ALBUM.Data[0].ALB_ID + } else { + albumID = results.ALBUM.Data[index-1].ALB_ID + } + } + } else { + albumID = results.ALBUM.Data[0].ALB_ID + } + } + + downloadAlbum(albumID) +} + +func downloadPlaylistByNameOrID(nameOrID string) { + // Check if the input is an ID (all digits) + isID := true + for _, char := range nameOrID { + if char < '0' || char > '9' { + isID = false + break + } + } + + var playlistID string + if isID { + playlistID = nameOrID + fmt.Printf("Downloading playlist with ID: %s\n", playlistID) + } else { + // Search for the playlist by name + fmt.Printf("Searching for playlist: %s\n", nameOrID) + results, err := api.SearchMusic(nameOrID, 5, "PLAYLIST") + if err != nil { + fmt.Printf("Error: Failed to search for playlist: %v\n", err) + return + } + + if len(results.PLAYLIST.Data) == 0 { + fmt.Println("Error: No playlists found with that name") + return + } + + // Display the found playlists and ask the user to select one + fmt.Println("Found playlists:") + for i, playlist := range results.PLAYLIST.Data { + fmt.Printf("%d. %s (ID: %s)\n", i+1, playlist.Title, playlist.PlaylistID) + } + + if len(results.PLAYLIST.Data) > 1 { + fmt.Print("\nSelect a playlist (1-5) or press Enter for the first result: ") + var choice string + fmt.Scanln(&choice) + + if choice == "" { + playlistID = results.PLAYLIST.Data[0].PlaylistID + } else { + index, err := strconv.Atoi(choice) + if err != nil || index < 1 || index > len(results.PLAYLIST.Data) { + fmt.Println("Invalid selection, using the first result") + playlistID = results.PLAYLIST.Data[0].PlaylistID + } else { + playlistID = results.PLAYLIST.Data[index-1].PlaylistID + } + } + } else { + playlistID = results.PLAYLIST.Data[0].PlaylistID + } + } + + downloadPlaylist(playlistID) +} + func downloadTrack(trackID string) { fmt.Println("Downloading track...") From 28f8630d339a2a85a267b817f602910cd74df7df Mon Sep 17 00:00:00 2001 From: itsbrex Date: Sat, 5 Apr 2025 17:18:01 -0700 Subject: [PATCH 05/33] Fix track filenames to use template from config and prevent duplicates --- cmd/main.go | 24 ++++++++++++++++++------ download/download.go | 37 +++++++++++++++++++++++++++++++++---- download/types.go | 1 + 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 6d67727..7997dcf 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -376,8 +376,11 @@ func downloadTrack(trackID string) { } // Create the download directory based on the config - downloadDir := expandPathTemplate(appConfig.SaveLayout.Track, track, nil, "") - dir := filepath.Dir(downloadDir) + downloadPath := expandPathTemplate(appConfig.SaveLayout.Track, track, nil, "") + dir := filepath.Dir(downloadPath) + + // Extract just the filename part without extension + filename := filepath.Base(downloadPath) // Create the directory if it doesn't exist if err := os.MkdirAll(dir, 0755); err != nil { @@ -399,6 +402,7 @@ func downloadTrack(trackID string) { Quality: quality, CoverSize: appConfig.CoverSize.Flac, SaveToDir: dir, + Filename: filename, OnProgress: progressFunc, } @@ -447,8 +451,11 @@ func downloadAlbum(albumID string) { fmt.Printf("[%d/%d] Downloading: %s - %s\n", i+1, len(tracks.Data), track.ART_NAME, track.SNG_TITLE) // Create the download directory based on the config - downloadDir := expandPathTemplate(appConfig.SaveLayout.Album, track, &album, "") - dir := filepath.Dir(downloadDir) + downloadPath := expandPathTemplate(appConfig.SaveLayout.Album, track, &album, "") + dir := filepath.Dir(downloadPath) + + // Extract just the filename part without extension + filename := filepath.Base(downloadPath) // Create the directory if it doesn't exist if err := os.MkdirAll(dir, 0755); err != nil { @@ -465,6 +472,7 @@ func downloadAlbum(albumID string) { Quality: quality, CoverSize: appConfig.CoverSize.Flac, SaveToDir: dir, + Filename: filename, } filePath, err := download.DownloadTrack(options) @@ -517,8 +525,11 @@ func downloadPlaylist(playlistID string) { fmt.Printf("[%d/%d] Downloading: %s - %s\n", i+1, len(tracks.Data), track.ART_NAME, track.SNG_TITLE) // Create the download directory based on the config - downloadDir := expandPathTemplate(appConfig.SaveLayout.Playlist, track, nil, playlist.Title) - dir := filepath.Dir(downloadDir) + downloadPath := expandPathTemplate(appConfig.SaveLayout.Playlist, track, nil, playlist.Title) + dir := filepath.Dir(downloadPath) + + // Extract just the filename part without extension + filename := filepath.Base(downloadPath) // Create the directory if it doesn't exist if err := os.MkdirAll(dir, 0755); err != nil { @@ -535,6 +546,7 @@ func downloadPlaylist(playlistID string) { Quality: quality, CoverSize: appConfig.CoverSize.Flac, SaveToDir: dir, + Filename: filename, } filePath, err := download.DownloadTrack(options) diff --git a/download/download.go b/download/download.go index a2defca..9e48d14 100644 --- a/download/download.go +++ b/download/download.go @@ -48,13 +48,20 @@ func DownloadTrack(options DownloadTrackOptions) (string, error) { } logger.Debug("Download URL retrieved: %s", trackData.TrackUrl) - // Sanitize the track title to ensure it's safe for file systems - safeTitle := utils.SanitizeFileName(track.SNG_TITLE) - savedPath := filepath.Join(options.SaveToDir, fmt.Sprintf("%s-%s.%s", safeTitle, track.SNG_ID, ext)) + var savedPath string + if options.Filename != "" { + // Use the provided filename if available + savedPath = filepath.Join(options.SaveToDir, fmt.Sprintf("%s.%s", options.Filename, ext)) + } else { + // Fall back to the default naming scheme + safeTitle := utils.SanitizeFileName(track.SNG_TITLE) + savedPath = filepath.Join(options.SaveToDir, fmt.Sprintf("%s-%s.%s", safeTitle, track.SNG_ID, ext)) + } logger.Debug("Saving track as: %s", savedPath) - // If the file exists, update its timestamp and return the path + // Check if the file exists with this name or with the ID-based name if _, err := os.Stat(savedPath); err == nil { + // File exists with the specified name if err := os.Chtimes(savedPath, time.Now(), time.Now()); err != nil { logger.Debug("Failed to update file timestamps: %v", err) return "", fmt.Errorf("failed to update file timestamps: %v", err) @@ -63,6 +70,28 @@ func DownloadTrack(options DownloadTrackOptions) (string, error) { return savedPath, nil } + // Also check if the file exists with the default ID-based naming scheme + // if we're using a custom filename, to avoid duplicates + if options.Filename != "" { + safeTitle := utils.SanitizeFileName(track.SNG_TITLE) + defaultPath := filepath.Join(options.SaveToDir, fmt.Sprintf("%s-%s.%s", safeTitle, track.SNG_ID, ext)) + if _, err := os.Stat(defaultPath); err == nil { + // Rename the file to match our new naming scheme + if err := os.Rename(defaultPath, savedPath); err != nil { + logger.Debug("Failed to rename existing file: %v", err) + // Continue anyway, as we'll just overwrite the file + } else { + // Successfully renamed, update timestamp and return + if err := os.Chtimes(savedPath, time.Now(), time.Now()); err != nil { + logger.Debug("Failed to update file timestamps: %v", err) + return "", fmt.Errorf("failed to update file timestamps: %v", err) + } + logger.Debug("File renamed and timestamp updated: %s", savedPath) + return savedPath, nil + } + } + } + // Open the destination file out, err := os.Create(savedPath) if err != nil { diff --git a/download/types.go b/download/types.go index 29e980c..8582fc6 100644 --- a/download/types.go +++ b/download/types.go @@ -24,6 +24,7 @@ type DownloadTrackOptions struct { Quality int // The quality of the track (e.g., 1 for MP3_128, 3 for MP3_320, 9 for FLAC). CoverSize int // The size of the album cover in pixels. SaveToDir string // The directory where the track will be saved. + Filename string // The filename to use for the track (without extension). OnProgress func(progress float64, downloaded, total int64) // The progress callback function. } From b313725d1fb478deb03752ae3ec787a00447b442 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Wed, 28 May 2025 14:55:08 -0700 Subject: [PATCH 06/33] chore: update .gitignore to include .env file --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b0c6f65..c6e8442 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,5 @@ build/ .DS_Store # Go workspace file -go.work \ No newline at end of file +go.work +.env \ No newline at end of file From ee3e4cf508f300941ec81437bd1650e0be5bd7b8 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Wed, 28 May 2025 14:55:47 -0700 Subject: [PATCH 07/33] chore: add .env.example file for environment configuration --- .env.example | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e0882e6 --- /dev/null +++ b/.env.example @@ -0,0 +1,9 @@ +# Spotify API credentials +# Create an application at https://developer.spotify.com/dashboard +# Set the redirect URI to http://localhost:8888/callback in your application settings +SPOTIFY_CLIENT_ID= +SPOTIFY_CLIENT_SECRET= + +# Deezer authentication +# Find your ARL token in the cookies after logging into Deezer in your browser +DEEZER_ARL= \ No newline at end of file From 9ae5c0514ef8270c15a31c098f7f5ab50185e3b3 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 11:10:12 -0700 Subject: [PATCH 08/33] feat: add Spotify authentication command - Implement OAuth2 flow for Spotify integration, requiring SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables. Includes error handling and user verification after authentication. --- cmd/gofi/cmd/auth_spotify.go | 93 ++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 cmd/gofi/cmd/auth_spotify.go diff --git a/cmd/gofi/cmd/auth_spotify.go b/cmd/gofi/cmd/auth_spotify.go new file mode 100644 index 0000000..7ed939e --- /dev/null +++ b/cmd/gofi/cmd/auth_spotify.go @@ -0,0 +1,93 @@ +// cmd/gofi/cmd/auth_spotify.go +package cmd + +import ( + "context" + "fmt" + "log" + "os" + + "github.com/d-fi/GoFi/internal/services/spotify" // Corrected import path + "github.com/spf13/cobra" +) + +// spotifyAuthCmd represents the command to authenticate with Spotify +var spotifyAuthCmd = &cobra.Command{ + Use: "spotify", + Short: "Authenticate GoFi with your Spotify account", + Long: `Starts the OAuth2 flow to authorize GoFi to access your Spotify account. +You will be prompted to open a URL in your browser to grant permission. +Requires SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables to be set.`, + Run: func(cmd *cobra.Command, args []string) { + clientID := os.Getenv("SPOTIFY_CLIENT_ID") + clientSecret := os.Getenv("SPOTIFY_CLIENT_SECRET") + + if clientID == "" || clientSecret == "" { + log.Fatal("Error: SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables must be set.") + return // Redundant after Fatal, but good practice + } + + cfg := spotify.Config{ + ClientID: clientID, + ClientSecret: clientSecret, + } + + authService, err := spotify.NewAuthService(cfg) + if err != nil { + log.Fatalf("Error creating Spotify auth service: %v", err) + } + + log.Println("Starting Spotify authentication process...") + // Use context.Background() for this CLI command execution context + client, err := authService.StartAuthentication(context.Background()) + if err != nil { + log.Fatalf("Spotify authentication failed: %v", err) + } + + if client != nil { + // Optionally, verify the client works by making a simple API call + user, err := client.CurrentUser(context.Background()) + if err != nil { + log.Printf("Warning: Could not verify authentication by fetching user: %v", err) + fmt.Println("Authentication process completed, but verification failed. Token might be stored.") + } else { + fmt.Printf("\nSuccessfully authenticated with Spotify as %s (%s)!\n", user.DisplayName, user.ID) + fmt.Println("Authentication token saved successfully.") + } + } else { + // This case should ideally be caught by the error above, but added for completeness + log.Fatal("Authentication process completed, but no valid client was returned.") + } + }, +} + +// 🔄 TODO: Register this command with your root command or an 'auth' group command. +// Example (in your root command setup, e.g., cmd/gofi/cmd/root.go or cmd/gofi/cmd/auth.go): +// +// import "github.com/spf13/cobra" +// +// var authCmd = &cobra.Command{ +// Use: "auth", +// Short: "Manage authentication for different services", +// } +// +// func init() { +// // Add authCmd to rootCmd +// rootCmd.AddCommand(authCmd) +// // Add spotifyAuthCmd to authCmd +// authCmd.AddCommand(spotifyAuthCmd) +// // Or if no auth group, add directly to root: +// // rootCmd.AddCommand(spotifyAuthCmd) +// } +// + +func init() { + // This function needs to exist to potentially register flags for this specific command later. + // For now, we just need to ensure the command is added to its parent elsewhere. + // If you have a central `auth` command: + // authCmd.AddCommand(spotifyAuthCmd) + // If adding directly to root command: + // rootCmd.AddCommand(spotifyAuthCmd) + // ---> You will need to uncomment and place the registration code in the appropriate file <--- + log.Println("Spotify auth command initialized (needs registration in root/auth command)") // Placeholder log +} \ No newline at end of file From 143427032a2d7ed15ca9dc88dc7abd41b3996695 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 11:10:18 -0700 Subject: [PATCH 09/33] feat: add download command for Spotify integration - Implement command to download music from Spotify URLs, including handling tracks, albums, and playlists. Introduce error handling for authentication and URL parsing, with placeholder logic for actual download functionality. --- cmd/gofi/cmd/download.go | 209 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 cmd/gofi/cmd/download.go diff --git a/cmd/gofi/cmd/download.go b/cmd/gofi/cmd/download.go new file mode 100644 index 0000000..431f6b0 --- /dev/null +++ b/cmd/gofi/cmd/download.go @@ -0,0 +1,209 @@ +// cmd/gofi/cmd/download.go (Placeholder Example) +package cmd + +import ( + "context" + "fmt" + "log" + "os" + "strings" + + "github.com/d-fi/GoFi/internal/models" + "github.com/d-fi/GoFi/internal/services/spotify" + "github.com/d-fi/GoFi/internal/utils" + "github.com/spf13/cobra" + spotifyClient "github.com/zmb3/spotify/v2" // Alias import to avoid naming conflict +) + +// downloadCmd represents the download command (placeholder) +var downloadCmd = &cobra.Command{ + Use: "download [url]", + Short: "Download music from a given URL (Spotify supported)", + Long: `Downloads tracks, albums, or playlists from supported services like Spotify.`, + Args: cobra.ExactArgs(1), // Requires exactly one argument: the URL + Run: func(cmd *cobra.Command, args []string) { + url := args[0] + fmt.Printf("Attempting to process URL: %s\n", url) + handleDownload(url) // Call the handler logic + }, +} + +func init() { + // ‼️ FIXME: This registration assumes 'rootCmd' exists. Adapt as needed. + // Register this placeholder command with your actual root command. + // For example: rootCmd.AddCommand(downloadCmd) + log.Println("Placeholder download command initialized (needs registration with rootCmd)") +} + +// --- Integration Logic --- + +func handleDownload(url string) { + ctx := context.Background() + + parsedInfo, err := utils.ParseMusicURL(url) + if err != nil { + log.Fatalf("Error: Failed to parse URL: %v", err) + return + } + + // Only proceed if we have a valid Spotify client + client, _ := getAuthenticatedSpotifyClient(ctx) // Error handled within + if client == nil { + // Check if the URL was actually a Spotify URL before failing + if parsedInfo.Source == "spotify" { + log.Fatal("Error: Failed to get authenticated Spotify client. Cannot proceed with Spotify download. Hint: Run 'gofi auth spotify' first.") + } else { + // Log non-fatal error if it wasn't a spotify URL to begin with + log.Printf("Info: Spotify client not available, but URL source is '%s'. Skipping Spotify check.", parsedInfo.Source) + } + // If not spotify, allow falling through to default or other handlers + // If it *was* spotify, we exit here. + if parsedInfo.Source == "spotify" { + return + } + } + + // Initialize spotifyService only if client is not nil (meaning auth was successful or not needed) + var spotifyService *spotify.SpotifyService + if client != nil { + spotifyService = spotify.NewSpotifyService(client) + } + + switch parsedInfo.Type { + case utils.SpotifyTrack: + if spotifyService == nil { // Defensive check + log.Fatal("Error: Spotify service not initialized. Cannot fetch track.") + return + } + log.Printf("Processing Spotify Track ID: %s", parsedInfo.ID) + track, err := spotifyService.FetchTrack(ctx, parsedInfo.ID) + if err != nil { + log.Fatalf("Error fetching Spotify track %s: %v", parsedInfo.ID, err) + return + } + // ‼️ FIXME: Replace placeholder log with actual download logic for 'track' + log.Printf("=== Fetched Track (Ready for Download) ===") + log.Printf(" Title: %s", track.Title) + log.Printf(" Artist(s): %s", joinModelArtists(track.Artists)) + // Ensure track.Album is not nil before accessing Title + albumTitle := "Unknown Album" + if track.Album != nil { + albumTitle = track.Album.Title + } + log.Printf(" Album: %s", albumTitle) + log.Printf(" ISRC: %s", track.ISRC) + log.Println("------------------------------------------") + // downloadSingleTrack(track) // Your download function here + + case utils.SpotifyAlbum: + if spotifyService == nil { // Defensive check + log.Fatal("Error: Spotify service not initialized. Cannot fetch album.") + return + } + log.Printf("Processing Spotify Album ID: %s", parsedInfo.ID) + album, tracks, err := spotifyService.FetchAlbum(ctx, parsedInfo.ID) + if err != nil { + log.Fatalf("Error fetching Spotify album %s: %v", parsedInfo.ID, err) + return + } + log.Printf("=== Fetched Album (Ready for Download) ===") + log.Printf(" Title: %s", album.Title) + log.Printf(" Artist(s): %s", joinModelArtists(album.Artists)) + log.Printf(" Total Tracks: %d (fetched %d)", album.TotalTracks, len(tracks)) + log.Println("----------------------------------------") + // ‼️ FIXME: Replace placeholder log with actual download logic for all 'tracks' + log.Printf("Processing %d tracks for album download:", len(tracks)) + for i, track := range tracks { + log.Printf(" %d. %s - %s", i+1, track.Title, joinModelArtists(track.Artists)) + // downloadSingleTrack(track) // Call download for each track + } + + case utils.SpotifyPlaylist: + if spotifyService == nil { // Defensive check + log.Fatal("Error: Spotify service not initialized. Cannot fetch playlist.") + return + } + log.Printf("Processing Spotify Playlist ID: %s", parsedInfo.ID) + playlist, tracks, err := spotifyService.FetchPlaylist(ctx, parsedInfo.ID) + if err != nil { + log.Fatalf("Error fetching Spotify playlist %s: %v", parsedInfo.ID, err) + return + } + log.Printf("=== Fetched Playlist (Ready for Download) ===") + log.Printf(" Title: %s", playlist.Title) + log.Printf(" Owner: %s", playlist.OwnerName) + log.Printf(" Total Tracks: %d (fetched %d)", playlist.TotalTracks, len(tracks)) + log.Println("-------------------------------------------") + // ‼️ FIXME: Replace placeholder log with actual download logic for all 'tracks' + log.Printf("Processing %d tracks for playlist download:", len(tracks)) + for i, track := range tracks { + log.Printf(" %d. %s - %s", i+1, track.Title, joinModelArtists(track.Artists)) + // downloadSingleTrack(track) // Call download for each track + } + + // case utils.DeezerTrack: // Example for future expansion + // log.Printf("Processing Deezer Track ID: %s", parsedInfo.ID) + // // ... handle Deezer ... + + default: + // Check if source was identified before saying unsupported + if parsedInfo.Source != "" { + log.Printf("Error: URL type '%s' from service '%s' is not supported for download yet.", parsedInfo.Type, parsedInfo.Source) + } else { + log.Printf("Error: Could not determine music service or type from the provided URL.") + } + } +} + +// Helper function to get authenticated client (handles prompting for auth) +// Returns nil client if auth fails or is not configured. +func getAuthenticatedSpotifyClient(ctx context.Context) (*spotifyClient.Client, *spotify.AuthService) { + clientID := os.Getenv("SPOTIFY_CLIENT_ID") + clientSecret := os.Getenv("SPOTIFY_CLIENT_SECRET") + if clientID == "" || clientSecret == "" { + log.Println("Info: SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables not set. Spotify features disabled.") + return nil, nil + } + cfg := spotify.Config{ClientID: clientID, ClientSecret: clientSecret} + authService, err := spotify.NewAuthService(cfg) + if err != nil { + log.Printf("Error creating Spotify auth service: %v", err) + return nil, nil + } + + client, err := authService.GetClient(ctx) // Attempts to load token or refresh + if err != nil { + // This is not necessarily an error, just means we need to authenticate. + // Logged as Info level. The calling function decides if it's fatal. + log.Printf("Info: Could not automatically retrieve Spotify token (may need initial auth): %v", err) + return nil, authService // Return authService even if client is nil + } + log.Println("Successfully obtained authenticated Spotify client.") + return client, authService +} + +// Helper to join artist names from models.Artist slice +func joinModelArtists(artists []models.Artist) string { // Use the actual model type + if len(artists) == 0 { + return "Unknown Artist" + } + names := make([]string, len(artists)) + for i, a := range artists { + if a.Name != "" { // Avoid adding empty names + names[i] = a.Name + } else { + names[i] = "Unnamed Artist" // Placeholder if name is empty + } + } + // Filter out empty strings before joining, in case the above logic missed something + filteredNames := []string{} + for _, name := range names { + if name != "" && name != "Unnamed Artist" { // filter potentially empty strings + filteredNames = append(filteredNames, name) + } + } + if len(filteredNames) == 0 { // If all artists were unnamed/empty + return "Unknown Artist(s)" + } + return strings.Join(filteredNames, ", ") +} \ No newline at end of file From 24e5e1522ee8129b003aa1502ca36bc6184c65f3 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 11:10:24 -0700 Subject: [PATCH 10/33] feat: add models for music data representation - Introduce models for SourceType, Image, Artist, Album, Track, and Playlist to structure music-related data, including fields for various attributes and relationships. --- internal/models/models.go | 81 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 internal/models/models.go diff --git a/internal/models/models.go b/internal/models/models.go new file mode 100644 index 0000000..5612481 --- /dev/null +++ b/internal/models/models.go @@ -0,0 +1,81 @@ +// internal/models/models.go +package models + +import "time" // Added for potential timestamp fields + +// SourceType indicates the origin of the data (Spotify, Deezer, etc.) +type SourceType string + +const ( + SourceSpotify SourceType = "Spotify" + SourceDeezer SourceType = "Deezer" + SourceTidal SourceType = "Tidal" + SourceUnknown SourceType = "Unknown" + // Add other sources as needed +) + +// Image represents an image URL with dimensions. +type Image struct { + URL string `json:"url"` + Height int `json:"height,omitempty"` + Width int `json:"width,omitempty"` +} + +// Artist represents a music artist. +type Artist struct { + ID string `json:"id,omitempty"` // Service-specific ID + Source SourceType `json:"source,omitempty"` + Name string `json:"name"` + Images []Image `json:"images,omitempty"` +} + +// Album represents a music album. +type Album struct { + ID string `json:"id,omitempty"` // Service-specific ID (often same as SpotifyID for Spotify) + SpotifyID string `json:"spotify_id,omitempty"` // Explicit Spotify ID + Source SourceType `json:"source,omitempty"` + Title string `json:"title"` + Artists []Artist `json:"artists,omitempty"` + Images []Image `json:"images,omitempty"` + ReleaseDate string `json:"release_date,omitempty"` // Consider time.Time if precision is needed + Label string `json:"label,omitempty"` // Record label + TotalTracks int `json:"total_tracks,omitempty"` + UPC string `json:"upc,omitempty"` // Universal Product Code + Genres []string `json:"genres,omitempty"` // Added Genres + AlbumType string `json:"album_type,omitempty"` // Added AlbumType (e.g., "album", "single") +} + +// Track represents a music track. +type Track struct { + ID string `json:"id,omitempty"` // Service-specific ID + SpotifyID string `json:"spotify_id,omitempty"` // Explicit Spotify ID + Source SourceType `json:"source,omitempty"` + Title string `json:"title"` + Artists []Artist `json:"artists,omitempty"` + Album *Album `json:"album,omitempty"` // Changed from string to *Album + DurationMs int `json:"duration_ms,omitempty"` + TrackNumber int `json:"track_number,omitempty"` + DiscNumber int `json:"disc_number,omitempty"` + Explicit bool `json:"explicit,omitempty"` + ISRC string `json:"isrc,omitempty"` // International Standard Recording Code + Images []Image `json:"images,omitempty"` // Often inherited from Album + ReleaseDate string `json:"release_date,omitempty"` // Often inherited from Album + AddedAt *time.Time `json:"added_at,omitempty"` // For playlists + DownloadURL string `json:"download_url,omitempty"` // Potential field for download link + FileSize int64 `json:"file_size,omitempty"` // Potential field for file size + AudioQuality string `json:"audio_quality,omitempty"` // Potential field for quality info +} + +// Playlist represents a music playlist. +type Playlist struct { + ID string `json:"id,omitempty"` // Service-specific ID + SpotifyID string `json:"spotify_id,omitempty"` // Explicit Spotify ID + Source SourceType `json:"source,omitempty"` + Title string `json:"title"` + Description string `json:"description,omitempty"` + OwnerName string `json:"owner_name,omitempty"` + Public bool `json:"public,omitempty"` + TotalTracks int `json:"total_tracks,omitempty"` + Images []Image `json:"images,omitempty"` + Tracks []Track `json:"tracks,omitempty"` // Populated after fetching details +} \ No newline at end of file From 9abcc9d71fdfb1696d8e039c1916675d10459e8b Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 11:10:33 -0700 Subject: [PATCH 11/33] feat: implement URL parsing for music services - Add a new utility for parsing music URLs, specifically for Spotify, to extract service type, content type, and unique identifiers. Includes regex patterns for Spotify URLs and URIs, with error handling for unsupported formats. Future enhancements planned for additional services like Deezer and Tidal. --- internal/utils/urlparser.go | 98 +++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 internal/utils/urlparser.go diff --git a/internal/utils/urlparser.go b/internal/utils/urlparser.go new file mode 100644 index 0000000..e3d87d7 --- /dev/null +++ b/internal/utils/urlparser.go @@ -0,0 +1,98 @@ +// internal/utils/urlparser.go +package utils + +import ( + "fmt" + "net/url" + "regexp" + "strings" +) + +// ParsedURLType defines the type of Spotify content. +type ParsedURLType string + +const ( + SpotifyTrack ParsedURLType = "spotify:track" + SpotifyAlbum ParsedURLType = "spotify:album" + SpotifyPlaylist ParsedURLType = "spotify:playlist" + DeezerTrack ParsedURLType = "deezer:track" // Example if you handle Deezer too + DeezerAlbum ParsedURLType = "deezer:album" + // ... other types + UnknownURL ParsedURLType = "unknown" +) + +// ParsedURLInfo holds the parsed information from a music URL. +type ParsedURLInfo struct { + Source ParsedURLType // e.g., "spotify", "deezer", "tidal" + Type ParsedURLType // e.g., SpotifyTrack, SpotifyAlbum + ID string // The unique identifier for the track, album, or playlist + URL string +} + +var ( + // Regex for open.spotify.com URLs + spotifyURLRegex = regexp.MustCompile(`https?://open\.spotify\.com/(intl-\w+/)?(track|album|playlist)/([a-zA-Z0-9]+)`) + // Regex for spotify: URI scheme + spotifyURIRegex = regexp.MustCompile(`spotify:(track|album|playlist):([a-zA-Z0-9]+)`) + // 🔄 TODO: Add regex for Deezer, Tidal, etc. if needed +) + +// ParseMusicURL analyzes a string to determine if it's a supported music URL +// and extracts the service, type, and ID. +func ParseMusicURL(inputURL string) (*ParsedURLInfo, error) { + inputURL = strings.TrimSpace(inputURL) + if inputURL == "" { + return nil, fmt.Errorf("input URL cannot be empty") + } + + // Check Spotify URLs + if matches := spotifyURLRegex.FindStringSubmatch(inputURL); len(matches) == 4 { + id := matches[3] + urlType := matches[2] + var parsedType ParsedURLType + switch urlType { + case "track": + parsedType = SpotifyTrack + case "album": + parsedType = SpotifyAlbum + case "playlist": + parsedType = SpotifyPlaylist + default: + return nil, fmt.Errorf("unknown spotify URL type: %s", urlType) + } + return &ParsedURLInfo{Source: "spotify", Type: parsedType, ID: id, URL: inputURL}, nil + } + + // Check Spotify URIs + if matches := spotifyURIRegex.FindStringSubmatch(inputURL); len(matches) == 3 { + id := matches[2] + urlType := matches[1] + var parsedType ParsedURLType + switch urlType { + case "track": + parsedType = SpotifyTrack + case "album": + parsedType = SpotifyAlbum + case "playlist": + parsedType = SpotifyPlaylist + default: + return nil, fmt.Errorf("unknown spotify URI type: %s", urlType) + } + return &ParsedURLInfo{Source: "spotify", Type: parsedType, ID: id, URL: inputURL}, nil + } + + // 🔄 TODO: Add checks for other services (Deezer, Tidal) here + + // Attempt generic URL parsing if specific patterns fail + parsed, err := url.Parse(inputURL) + if err == nil && parsed.Scheme != "" && parsed.Host != "" { + // Could potentially add more generic checks here based on hostname + if strings.Contains(parsed.Host, "spotify.com") { + // Generic Spotify URL detected, but couldn't determine type/ID + return nil, fmt.Errorf("detected Spotify URL, but could not extract track/album/playlist ID: %s", inputURL) + } + // Add generic checks for other services if needed + } + + return nil, fmt.Errorf("unsupported or unrecognized music URL format: %s", inputURL) +} \ No newline at end of file From 6600bc1dd12239593d88dde6080f965d44724442 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 11:10:45 -0700 Subject: [PATCH 12/33] feat: implement Spotify service and authentication - Introduce AuthService for handling OAuth2 authentication with Spotify, including token management and callback server. Add SpotifyService for interacting with the Spotify API, featuring methods to fetch tracks, albums, and playlists. Implement model mappings for Spotify data structures to internal models, enhancing integration capabilities. --- internal/services/spotify/auth.go | 344 +++++++++++++++++++ internal/services/spotify/spotify.go | 473 +++++++++++++++++++++++++++ 2 files changed, 817 insertions(+) create mode 100644 internal/services/spotify/auth.go create mode 100644 internal/services/spotify/spotify.go diff --git a/internal/services/spotify/auth.go b/internal/services/spotify/auth.go new file mode 100644 index 0000000..0800671 --- /dev/null +++ b/internal/services/spotify/auth.go @@ -0,0 +1,344 @@ +package spotify + +import ( + "context" + "encoding/json" + "fmt" + "log" + "net/http" + "os" + "path/filepath" + "time" // Added for shutdown timeout + + "github.com/google/uuid" + "github.com/zmb3/spotify/v2" + spotifyauth "github.com/zmb3/spotify/v2/auth" + "golang.org/x/oauth2" +) + +const ( + // redirectURI is the endpoint Spotify will redirect to after authorization. + // Needs to match the one registered in the Spotify Developer Dashboard. + redirectURI = "http://localhost:8888/callback" + // tokenFileName is the name of the file to store OAuth tokens. + tokenFileName = "spotify_token.json" +) + +var ( + // scopes define the permissions the application requests from the user. + // Adjust these based on the specific Spotify data you need to access. + scopes = []string{ + spotifyauth.ScopeUserReadPrivate, // Read user's private information + // Add other scopes as needed, e.g.: + // spotifyauth.ScopePlaylistReadPrivate, // Read user's private playlists + // spotifyauth.ScopePlaylistReadCollaborative, // Read user's collaborative playlists + // spotifyauth.ScopeUserLibraryRead, // Read user's saved tracks/albums + // spotifyauth.ScopeUserReadEmail, // Read user's email address + } + // state is a random string to protect against CSRF attacks. + state = uuid.NewString() +) + +// AuthService handles Spotify OAuth2 authentication. +type AuthService struct { + authenticator *spotifyauth.Authenticator + ch chan *spotify.Client // Channel to receive the authenticated client + server *http.Server + configDir string + tokenPath string +} + +// Config holds Spotify API credentials. +// 🔄 TODO: Load these securely, e.g., from environment variables or a config file. +type Config struct { + ClientID string + ClientSecret string +} + +// OAuthConfig returns the OAuth2 config for Spotify authentication. +func (c *Config) OAuthConfig() *oauth2.Config { + return &oauth2.Config{ + ClientID: c.ClientID, + ClientSecret: c.ClientSecret, + Endpoint: oauth2.Endpoint{ + AuthURL: spotifyauth.AuthURL, + TokenURL: spotifyauth.TokenURL, + }, + RedirectURL: redirectURI, + Scopes: scopes, + } +} + +// NewAuthService creates a new Spotify authentication service. +func NewAuthService(cfg Config) (*AuthService, error) { + configDir, err := getConfigDir() + if err != nil { + return nil, fmt.Errorf("failed to get config directory: %w", err) + } + tokenPath := filepath.Join(configDir, tokenFileName) + + auth := spotifyauth.New( + spotifyauth.WithRedirectURL(redirectURI), + spotifyauth.WithScopes(scopes...), + spotifyauth.WithClientID(cfg.ClientID), + spotifyauth.WithClientSecret(cfg.ClientSecret), + ) + + return &AuthService{ + authenticator: auth, + ch: make(chan *spotify.Client), + configDir: configDir, + tokenPath: tokenPath, + }, nil +} + +// GetAuthURL generates the Spotify authorization URL for the user to visit. +func (s *AuthService) GetAuthURL() string { + return s.authenticator.AuthURL(state) +} + +// getConfigDir finds or creates the application's configuration directory. +func getConfigDir() (string, error) { + homeDir, err := os.UserHomeDir() + if err != nil { + return "", fmt.Errorf("failed to get user home directory: %w", err) + } + configDir := filepath.Join(homeDir, ".config", "gofi") + if err := os.MkdirAll(configDir, 0700); err != nil { + return "", fmt.Errorf("failed to create config directory '%s': %w", configDir, err) + } + return configDir, nil +} + +// saveToken saves the OAuth2 token to the configuration file. +func (s *AuthService) saveToken(token *oauth2.Token) error { + data, err := json.MarshalIndent(token, "", " ") + if err != nil { + return fmt.Errorf("failed to marshal token: %w", err) + } + if err := os.WriteFile(s.tokenPath, data, 0600); err != nil { + return fmt.Errorf("failed to write token file '%s': %w", s.tokenPath, err) + } + log.Printf("Token saved to %s\n", s.tokenPath) + return nil +} + +// loadToken loads the OAuth2 token from the configuration file. +func (s *AuthService) loadToken() (*oauth2.Token, error) { + data, err := os.ReadFile(s.tokenPath) + if err != nil { + if os.IsNotExist(err) { + return nil, nil // No token file exists yet + } + return nil, fmt.Errorf("failed to read token file '%s': %w", s.tokenPath, err) + } + + var token oauth2.Token + if err := json.Unmarshal(data, &token); err != nil { + return nil, fmt.Errorf("failed to unmarshal token from '%s': %w", s.tokenPath, err) + } + return &token, nil +} + +// StartAuthentication initiates the OAuth flow if no token exists or prompts the user. +// It starts a local server to handle the callback. +func (s *AuthService) StartAuthentication(ctx context.Context) (*spotify.Client, error) { + // Try loading existing token + token, err := s.loadToken() + if err != nil { + log.Printf("Warning: could not load existing token: %v", err) + } + + // If token exists and is valid (or refreshable), create client + if token != nil { + // ‼️ FIXME: The underlying http client in `spotify.New` created via `authenticator.Client` + // should handle token refreshing automatically using the `oauth2.TokenSource`. + // We still might want an explicit check here or in GetClient later. + client := spotify.New(s.authenticator.Client(ctx, token)) + log.Println("Using existing Spotify token.") + return client, nil + } + + // No valid token, start the authentication flow + log.Println("No valid Spotify token found. Starting authentication flow...") + fmt.Printf(`GoFi needs permission to access your Spotify account. +`) + fmt.Printf(`Please open the following URL in your browser: + +%s + +`, s.GetAuthURL()) + fmt.Println("Waiting for authorization...") + + // Start the callback server + if err := s.startCallbackServer(); err != nil { + return nil, err + } + defer s.stopCallbackServer(ctx) // Ensure server is stopped + + // Wait for the callback handler to send the authenticated client + select { + case client := <-s.ch: + if client == nil { + return nil, fmt.Errorf("authentication failed during callback") + } + log.Println("Spotify authentication successful.") + return client, nil + case <-ctx.Done(): + return nil, fmt.Errorf("authentication timed out or was cancelled: %w", ctx.Err()) + } +} + +// startCallbackServer starts the local HTTP server to listen for the Spotify callback. +func (s *AuthService) startCallbackServer() error { + // ‼️ FIXME: Ensure this doesn't clash if another instance is running or port is taken. + mux := http.NewServeMux() + mux.HandleFunc("/callback", s.handleCallback) + s.server = &http.Server{ + Addr: ":8888", // Listen on the port specified in redirectURI + Handler: mux, + } + + // Channel to signal server start or error + startErrCh := make(chan error, 1) + + // Run the server in a separate goroutine so it doesn't block. + go func() { + log.Println("Starting callback server on http://localhost:8888") + startErrCh <- nil // Signal successful start attempt (ListenAndServe blocks) + if err := s.server.ListenAndServe(); err != http.ErrServerClosed { + log.Printf("Error starting or running callback server: %v", err) + // Try to send error back if channel is still listened to + select { + case startErrCh <- fmt.Errorf("callback server error: %w", err): + default: + } + // Signal failure via the main client channel if server crashes later + select { + case s.ch <- nil: + default: // Avoid blocking if channel is already closed or full + } + } + }() + + // Wait for server to start or error out immediately + select { + case err := <-startErrCh: + if err != nil { + return err // Return error if server failed to start listening + } + // Server start attempted (doesn't guarantee it's fully ready, but ListenAndServe was called) + log.Println("Callback server listener started.") + return nil + case <-time.After(2 * time.Second): // Timeout for server start + return fmt.Errorf("callback server failed to start within timeout") + + } +} + +// stopCallbackServer gracefully shuts down the callback server. +func (s *AuthService) stopCallbackServer(ctx context.Context) { + if s.server != nil { + log.Println("Shutting down callback server...") + // Create a context with timeout for shutdown + // Use a background context for shutdown if the original ctx is already done. + shutdownCtx := context.Background() + if ctx.Err() == nil { + var cancel context.CancelFunc + shutdownCtx, cancel = context.WithTimeout(ctx, 5*time.Second) + defer cancel() + } else { + // If parent context is done, give shutdown a fixed timeout. + var cancel context.CancelFunc + shutdownCtx, cancel = context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + } + + if err := s.server.Shutdown(shutdownCtx); err != nil { + log.Printf("Callback server shutdown error: %v", err) + } else { + log.Println("Callback server stopped.") + } + s.server = nil + close(s.ch) // Close channel after server stops + } +} + +// handleCallback is the HTTP handler for the Spotify redirect URI. +func (s *AuthService) handleCallback(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() // Use request context + + // Verify the state matches to prevent CSRF + receivedState := r.FormValue("state") + if receivedState != state { + http.Error(w, "State mismatch", http.StatusBadRequest) + log.Printf("State mismatch: expected %s, got %s", state, receivedState) + // Don't send nil to channel here, let the main flow time out or handle missing client + return + } + + // Exchange the authorization code for a token + token, err := s.authenticator.Token(ctx, state, r) // Pass received state back for validation by library? check docs + if err != nil { + http.Error(w, "Couldn't get token: "+err.Error(), http.StatusForbidden) + log.Printf("Error getting token: %v", err) + // Don't send nil to channel here + return + } + + // Save the token + if err := s.saveToken(token); err != nil { + log.Printf("Critical Error: Failed to save token: %v", err) + // This is more critical, maybe return error to user? + http.Error(w, "Failed to save token", http.StatusInternalServerError) + // Don't send nil to channel here + return + } + + // Create a client using the new token + client := spotify.New(s.authenticator.Client(ctx, token)) + + // Send success message to browser + w.Header().Set("Content-Type", "text/html") + fmt.Fprintf(w, `

Authentication successful!

You can close this window now.

`) + log.Println("Callback handled successfully.") + + // Send the authenticated client back to the main flow + // Use non-blocking send in case receiver is gone (e.g., timeout) + select { + case s.ch <- client: + log.Println("Authenticated client sent to channel.") + default: + log.Println("Warning: Failed to send authenticated client to channel (receiver not ready or channel closed).") + } +} + +// GetClient provides an authenticated Spotify client. +// It attempts to load a token, refresh it if necessary. +// It does NOT initiate the full authentication flow here; that's handled by StartAuthentication. +func (s *AuthService) GetClient(ctx context.Context) (*spotify.Client, error) { + token, err := s.loadToken() + if err != nil { + // Don't wrap os.IsNotExist, let caller handle that if needed + return nil, err + } + + if token == nil { + // No token exists, authentication is required. + return nil, fmt.Errorf("spotify token not found, authentication required (run 'gofi auth spotify')") + } + + // Create a client which will automatically handle refreshing + client := spotify.New(s.authenticator.Client(ctx, token)) + + // 🚀 TODO (OPTIMIZATION): Optional: Verify token validity with a lightweight API call. + // _, err = client.CurrentUser(ctx) + // if err != nil { + // log.Printf("Warning: Spotify token validation check failed: %v. Token might be expired or invalid.", err) + // // Depending on the error, could indicate need for re-auth + // return nil, fmt.Errorf("spotify token may be invalid, re-run 'gofi auth spotify': %w", err) + // } + + log.Println("Using authenticated Spotify client from stored token.") + return client, nil +} diff --git a/internal/services/spotify/spotify.go b/internal/services/spotify/spotify.go new file mode 100644 index 0000000..ff78480 --- /dev/null +++ b/internal/services/spotify/spotify.go @@ -0,0 +1,473 @@ +// Package spotify provides services for interacting with the Spotify API. +package spotify + +import ( + "context" + "errors" + "fmt" + "log" + "net/http" // Added for status code checking + "strings" // Added for joining artists/genres + "time" + + // Import actual models + "github.com/d-fi/GoFi/internal/models" + spotify "github.com/zmb3/spotify/v2" + "golang.org/x/oauth2" +) + +// --- Placeholder Model Structs --- +// ‼️ FIXME: Replace these with your actual models from internal/models + +type SourceType string + +const ( + SourceSpotify SourceType = "Spotify" + SourceDeezer SourceType = "Deezer" + // Add other sources as needed +) + +type Image struct { + URL string + Height int + Width int +} + +type Artist struct { + ID string // Spotify ID or your internal ID + Name string + // Add other fields like Images if needed +} + +type Album struct { + ID string // Spotify ID or your internal ID + Title string + Artists []Artist // List of primary artists + Images []Image + ReleaseDate string // YYYY-MM-DD or YYYY + Label string + TotalTracks int + Source SourceType + SpotifyID string `json:",omitempty"` // Ensure this exists if needed elsewhere + UPC string `json:",omitempty"` // External ID + Genres []string + AlbumType string // album, single, compilation + // Add other relevant fields +} + +type Track struct { + ID string // Spotify ID or your internal ID + Title string + Album string // Album Title + AlbumID string // Spotify Album ID or your internal ID + AlbumArtist string // Primary album artist name + Artists []Artist // List of track artists (can differ from album artists) + DurationMs int + Source SourceType + SpotifyID string `json:",omitempty"` // Ensure this exists if needed elsewhere + ISRC string `json:",omitempty"` // External ID + PreviewURL string `json:",omitempty"` + Images []Image // Typically Album images + ReleaseDate string // YYYY-MM-DD or YYYY (from Album) + TrackNumber int + DiscNumber int + Explicit bool + // Add other relevant fields (e.g., DeezerID, Lyrics, FilePath after download) +} + +type Playlist struct { + ID string // Spotify ID or your internal ID + Title string + Description string + OwnerName string + OwnerID string + Images []Image + Source SourceType + SpotifyID string `json:",omitempty"` + Public bool + Collaborative bool + TotalTracks int // Approximate, as it might change + // Add other relevant fields +} + +// --- End Placeholder Model Structs --- + + +// SpotifyService interacts with the Spotify API using an authenticated client. +type SpotifyService struct { + client *spotify.Client +} + +// NewSpotifyService creates a new service instance. +// It requires an authenticated client obtained from AuthService.GetClient(). +func NewSpotifyService(client *spotify.Client) *SpotifyService { + if client == nil { + // This should ideally not happen if GetClient is used correctly + log.Println("Warning: Initializing SpotifyService with a nil client.") + // Return nil or an error? For now, allow it but expect failures later. + return &SpotifyService{client: nil} + } + return &SpotifyService{ + client: client, + } +} + +// --- Mapping Helper Functions --- + +func mapSpotifyImageToGofi(img spotify.Image) models.Image { + return models.Image{ + URL: img.URL, + Height: int(img.Height), // Cast Numeric to int + Width: int(img.Width), // Cast Numeric to int + } +} + +func mapSpotifyImagesToGofi(imgs []spotify.Image) []models.Image { // Return []models.Image + if imgs == nil { + return nil + } + gofiImages := make([]models.Image, len(imgs)) + for i, img := range imgs { + gofiImages[i] = mapSpotifyImageToGofi(img) + } + return gofiImages +} + +// Changed to return models.Artist +func mapSpotifyArtistToGofi(artist spotify.SimpleArtist) models.Artist { + return models.Artist{ + ID: artist.ID.String(), + Name: artist.Name, + Source: models.SourceSpotify, // Use models constant + // Images not available on SimpleArtist + } +} + +// Changed to return []models.Artist +func mapSpotifyArtistsToGofi(artists []spotify.SimpleArtist) []models.Artist { + if artists == nil { + return nil + } + gofiArtists := make([]models.Artist, len(artists)) // Use models.Artist + for i, artist := range artists { + gofiArtists[i] = mapSpotifyArtistToGofi(artist) + } + return gofiArtists +} + +// Maps FullTrack to models.Track +func mapSpotifyFullTrackToGofi(track *spotify.FullTrack) *models.Track { + if track == nil { + return nil + } + isrc, _ := track.ExternalIDs["isrc"] + // Map embedded SimpleAlbum to *models.Album + gofiAlbum := mapSpotifySimpleAlbumToGofi(&track.Album) // Pass the address + + return &models.Track{ + ID: track.ID.String(), + SpotifyID: track.ID.String(), // Populate SpotifyID + Source: models.SourceSpotify, // Use models constant + Title: track.Name, + Artists: mapSpotifyArtistsToGofi(track.Artists), // Returns []models.Artist + Album: gofiAlbum, // Assign *models.Album + DurationMs: int(track.Duration), // Cast spotify.Numeric to int + TrackNumber: int(track.TrackNumber), // Cast spotify.Numeric to int + DiscNumber: int(track.DiscNumber), // Cast spotify.Numeric to int + Explicit: track.Explicit, + ISRC: isrc, + Images: mapSpotifyImagesToGofi(track.Album.Images), // Returns []models.Image + ReleaseDate: track.Album.ReleaseDate, + // AddedAt set contextually + } +} + +// Maps SimpleTrack + SimpleAlbum context to models.Track +// Takes *models.Album as context +func mapSpotifySimpleTrackToGofi(track *spotify.SimpleTrack, albumContext *models.Album) *models.Track { + if track == nil { + return nil // Return nil if track is nil + } + + return &models.Track{ + ID: track.ID.String(), + SpotifyID: track.ID.String(), // Populate SpotifyID + Source: models.SourceSpotify, // Use models constant + Title: track.Name, + Artists: mapSpotifyArtistsToGofi(track.Artists), // Returns []models.Artist + Album: albumContext, // Use provided *models.Album context + DurationMs: int(track.Duration), // Cast spotify.Numeric to int + TrackNumber: int(track.TrackNumber), // Cast spotify.Numeric to int + // DiscNumber not on SimpleTrack + Explicit: track.Explicit, + // ISRC not on SimpleTrack + // Images taken from albumContext + // ReleaseDate taken from albumContext + // AddedAt set contextually + } +} + +// Maps SimpleAlbum to models.Album +func mapSpotifySimpleAlbumToGofi(album *spotify.SimpleAlbum) *models.Album { + if album == nil { + return nil + } + return &models.Album{ + ID: album.ID.String(), + SpotifyID: album.ID.String(), // Populate SpotifyID + Source: models.SourceSpotify, + Title: album.Name, + Artists: mapSpotifyArtistsToGofi(album.Artists), + Images: mapSpotifyImagesToGofi(album.Images), + ReleaseDate: album.ReleaseDate, + AlbumType: album.AlbumType, // Populate AlbumType + // Label, TotalTracks, UPC, Genres not available on SimpleAlbum + } +} + + +// Maps FullAlbum to models.Album +func mapSpotifyAlbumToGofi(album *spotify.FullAlbum) *models.Album { + if album == nil { + return nil + } + upc, _ := album.ExternalIDs["upc"] + // Label field is not available in FullAlbum struct + // Set label to empty string since it doesn't exist in the Spotify API response + label := "" // Label is not available in the FullAlbum struct + // Cast Total via embedded Tracks field + totalTracks := int(album.Tracks.Total) // Cast spotify.Numeric to int + + + return &models.Album{ + ID: album.ID.String(), + SpotifyID: album.ID.String(), // Populate SpotifyID + Source: models.SourceSpotify, // Use models constant + Title: album.Name, + Artists: mapSpotifyArtistsToGofi(album.Artists), // Returns []models.Artist + Images: mapSpotifyImagesToGofi(album.Images), // Returns []models.Image + ReleaseDate: album.ReleaseDate, + Label: label, // Populate Label (direct access) + TotalTracks: totalTracks, // Populate TotalTracks (casted) + UPC: upc, + Genres: album.Genres, // Populate Genres + AlbumType: album.AlbumType, // Populate AlbumType + } +} + +// Maps FullPlaylist to models.Playlist +func mapSpotifyPlaylistToGofi(playlist *spotify.FullPlaylist) *models.Playlist { + if playlist == nil { + return nil + } + // Access IsPublic (not Public) field from the embedded SimplePlaylist + isPublic := playlist.IsPublic // Correct field name in the library + // Cast Total via embedded Tracks field + totalTracks := int(playlist.Tracks.Total) // Cast spotify.Numeric to int + // Access DisplayName via embedded Owner field + ownerName := playlist.Owner.DisplayName + + + return &models.Playlist{ + ID: playlist.ID.String(), + SpotifyID: playlist.ID.String(), // Populate SpotifyID + Source: models.SourceSpotify, // Use models constant + Title: playlist.Name, + Description: playlist.Description, + OwnerName: ownerName, // Populate OwnerName (direct access) + Images: mapSpotifyImagesToGofi(playlist.Images), // Returns []models.Image + Public: isPublic, // Populate Public (direct access) + TotalTracks: totalTracks, // Populate TotalTracks (casted) + // Removed OwnerID, Collaborative as they aren't in models.Playlist + } +} + + +// --- Service Methods --- + +// FetchTrack retrieves a single track's details from Spotify. +func (s *SpotifyService) FetchTrack(ctx context.Context, id string) (*models.Track, error) { // Return *models.Track + if s.client == nil { + return nil, fmt.Errorf("spotify client not initialized") + } + trackID := spotify.ID(id) + fullTrack, err := s.client.GetTrack(ctx, trackID) + if err != nil { + if spotifyErr, ok := err.(*spotify.Error); ok && spotifyErr.Status == http.StatusNotFound { + return nil, fmt.Errorf("spotify track %s not found", id) + } + return nil, fmt.Errorf("failed to get spotify track %s: %w", id, err) + } + + gofiTrack := mapSpotifyFullTrackToGofi(fullTrack) // Returns *models.Track + if gofiTrack == nil { + return nil, fmt.Errorf("failed to map spotify track %s", id) + } + + log.Printf("Fetched Spotify track: %s - %s", gofiTrack.Title, joinArtists(gofiTrack.Artists)) // Use models.Artist slice + return gofiTrack, nil +} + + +// FetchAlbum retrieves album details and its tracks from Spotify. +func (s *SpotifyService) FetchAlbum(ctx context.Context, id string) (*models.Album, []models.Track, error) { + if s.client == nil { + return nil, nil, fmt.Errorf("spotify client not initialized") + } + albumID := spotify.ID(id) + + fullAlbum, err := s.client.GetAlbum(ctx, albumID) + if err != nil { + if spotifyErr, ok := err.(*spotify.Error); ok && spotifyErr.Status == http.StatusNotFound { + return nil, nil, fmt.Errorf("spotify album %s not found", id) + } + return nil, nil, fmt.Errorf("failed to get spotify album %s: %w", id, err) + } + + gofiAlbum := mapSpotifyAlbumToGofi(fullAlbum) // Returns *models.Album + if gofiAlbum == nil { + return nil, nil, fmt.Errorf("failed to map spotify album %s", id) + } + + log.Printf("Fetching tracks for Spotify album: %s (%s)", gofiAlbum.Title, id) + var gofiTracks []models.Track // Use models.Track slice + offset := 0 + limit := 50 + // Map the SimpleAlbum part for context, now returns *models.Album + simpleAlbumForMapping := mapSpotifySimpleAlbumToGofi(&fullAlbum.SimpleAlbum) + + for { + albumTracksPage, err := s.client.GetAlbumTracks(ctx, albumID, spotify.Offset(offset), spotify.Limit(limit)) + if err != nil { + log.Printf("Error fetching album tracks page (offset %d) for %s: %v. Returning partially fetched data.", offset, id, err) + return gofiAlbum, gofiTracks, fmt.Errorf("failed to fetch all album tracks for %s (page offset %d): %w", id, offset, err) + } + if albumTracksPage == nil || len(albumTracksPage.Tracks) == 0 { + break + } + + log.Printf("Fetched page of %d tracks for album %s (offset %d)", len(albumTracksPage.Tracks), id, offset) + for _, simpleTrack := range albumTracksPage.Tracks { + // Pass *models.Album context + gofiTrack := mapSpotifySimpleTrackToGofi(&simpleTrack, simpleAlbumForMapping) // Returns *models.Track + if gofiTrack != nil { + gofiTracks = append(gofiTracks, *gofiTrack) // Append models.Track + } else { + log.Printf("Warning: Failed to map simple track %s from album %s", simpleTrack.ID, id) + } + } + + if len(albumTracksPage.Tracks) < limit { + break + } + offset += len(albumTracksPage.Tracks) + } + + log.Printf("Fetched total %d tracks for Spotify album: %s - %s", len(gofiTracks), gofiAlbum.Title, joinArtists(gofiAlbum.Artists)) // Use models.Artist slice + return gofiAlbum, gofiTracks, nil +} + + +// FetchPlaylist retrieves playlist details and its tracks from Spotify. +func (s *SpotifyService) FetchPlaylist(ctx context.Context, id string) (*models.Playlist, []models.Track, error) { + if s.client == nil { + return nil, nil, fmt.Errorf("spotify client not initialized") + } + playlistID := spotify.ID(id) + + fullPlaylist, err := s.client.GetPlaylist(ctx, playlistID) + if err != nil { + if spotifyErr, ok := err.(*spotify.Error); ok && spotifyErr.Status == http.StatusNotFound { + return nil, nil, fmt.Errorf("spotify playlist %s not found", id) + } + return nil, nil, fmt.Errorf("failed to get spotify playlist %s: %w", id, err) + } + + gofiPlaylist := mapSpotifyPlaylistToGofi(fullPlaylist) // Returns *models.Playlist + if gofiPlaylist == nil { + return nil, nil, fmt.Errorf("failed to map spotify playlist %s", id) + } + + log.Printf("Fetching items for Spotify playlist: %s (%s)", gofiPlaylist.Title, id) + var gofiTracks []models.Track // Use models.Track slice + offset := 0 + limit := 100 + + for { + playlistItemsPage, err := s.client.GetPlaylistItems(ctx, playlistID, spotify.Offset(offset), spotify.Limit(limit)) + if err != nil { + log.Printf("Error fetching playlist items page (offset %d) for %s: %v. Returning partially fetched data.", offset, id, err) + return gofiPlaylist, gofiTracks, fmt.Errorf("failed to fetch all playlist items for %s (page offset %d): %w", id, offset, err) + } + if playlistItemsPage == nil || len(playlistItemsPage.Items) == 0 { + break + } + + log.Printf("Fetched page of %d items for playlist %s (offset %d)", len(playlistItemsPage.Items), id, offset) + for _, item := range playlistItemsPage.Items { + if item.Track.Track != nil { + gofiTrack := mapSpotifyFullTrackToGofi(item.Track.Track) // Returns *models.Track + if gofiTrack != nil { + // Check if AddedAt is not empty before parsing + if item.AddedAt != "" { + // Parse the timestamp string directly using time.Parse with RFC3339 format + parsedTime, err := time.Parse(time.RFC3339, item.AddedAt) + if err != nil { + log.Printf("Warning: Failed to parse AddedAt timestamp '%s' for track %s in playlist %s: %v", item.AddedAt, gofiTrack.ID, id, err) + } else { + gofiTrack.AddedAt = &parsedTime + } + } + gofiTracks = append(gofiTracks, *gofiTrack) // Append models.Track + } else { + log.Printf("Warning: Failed to map track %s from playlist %s", item.Track.Track.ID, id) + } + } else { + itemType := "unknown" + if item.Track.Episode != nil { itemType = "episode" } + log.Printf("Skipping non-track item (type: %s) in playlist %s", itemType, id) + } + } + + if len(playlistItemsPage.Items) < limit { + break + } + offset += len(playlistItemsPage.Items) + } + + log.Printf("Fetched total %d tracks for Spotify playlist: %s", len(gofiTracks), gofiPlaylist.Title) + return gofiPlaylist, gofiTracks, nil +} + +// Simple helper to join artist names for logging (now takes models.Artist) +func joinArtists(artists []models.Artist) string { + if len(artists) == 0 { + return "Unknown Artist(s)" + } + names := make([]string, 0, len(artists)) + for _, a := range artists { + if a.Name != "" { + names = append(names, a.Name) + } + } + if len(names) == 0 { + return "Unknown Artist(s)" // Handle case where all names were empty + } + return strings.Join(names, ", ") +} + +// GetClientFromToken retrieves a Spotify client using a stored token. +// Assumes Config struct (defined elsewhere, e.g., auth.go) has OAuthConfig() method. +func GetClientFromToken(ctx context.Context, token *oauth2.Token, config *Config) (*spotify.Client, error) { + if config == nil { + return nil, errors.New("spotify config cannot be nil") + } + + oauthCfg := config.OAuthConfig() + if oauthCfg == nil { + return nil, errors.New("oauth2 config within spotify config is nil") + } + httpClient := oauthCfg.Client(ctx, token) + client := spotify.New(httpClient) + return client, nil +} From c95da869a60efde842a93a1226681defd2e1dc8a Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 11:11:01 -0700 Subject: [PATCH 13/33] feat: update dependencies in go.mod and go.sum - Add new dependencies including google/uuid, spf13/cobra, zmb3/spotify, and others for enhanced functionality and support. Update indirect dependencies to ensure compatibility and stability across the project. --- go.mod | 9 ++ go.sum | 395 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 403 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index d90b759..19686c9 100644 --- a/go.mod +++ b/go.mod @@ -7,19 +7,28 @@ toolchain go1.23.1 require ( github.com/bogem/id3v2/v2 v2.1.4 github.com/go-resty/resty/v2 v2.15.3 + github.com/google/uuid v1.6.0 github.com/hashicorp/golang-lru/v2 v2.0.7 github.com/rs/zerolog v1.33.0 + github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.9.0 + github.com/zmb3/spotify/v2 v2.4.3 golang.org/x/crypto v0.28.0 + golang.org/x/oauth2 v0.0.0-20210810183815-faf39c7919d5 golang.org/x/text v0.19.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/spf13/pflag v1.0.6 // indirect golang.org/x/net v0.30.0 // indirect golang.org/x/sys v0.26.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 5846e42..58758be 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,128 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/bogem/id3v2/v2 v2.1.4 h1:CEwe+lS2p6dd9UZRlPc1zbFNIha2mb2qzT1cCEoNWoI= github.com/bogem/id3v2/v2 v2.1.4/go.mod h1:l+gR8MZ6rc9ryPTPkX77smS5Me/36gxkMgDayZ9G1vY= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-resty/resty/v2 v2.15.3 h1:bqff+hcqAflpiF591hhJzNdkRsFhlB96CYfBwSFvql8= github.com/go-resty/resty/v2 v2.15.3/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -17,49 +132,327 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zmb3/spotify/v2 v2.4.3 h1:4divquzK2Mzo90XVIij4K7Z98Hf+6A3qPnksqtcDIuo= +github.com/zmb3/spotify/v2 v2.4.3/go.mod h1:XOV7BrThayFYB9AAfB+L0Q0wyxBuLCARk4fI/ZXCBW8= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210810183815-faf39c7919d5 h1:Ati8dO7+U7mxpkPSxBZQEvzHVUYB/MqCklCN8ig5w/o= +golang.org/x/oauth2 v0.0.0-20210810183815-faf39c7919d5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= From 794a8d82bab6f5b8de6e7cef5a10ec2a1bdd0bbf Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 11:11:08 -0700 Subject: [PATCH 14/33] feat: update README.md to reflect project transition to GoFi - Revise project description to detail GoFi as a Deezer music download tool, including features, installation instructions, usage guidelines, and configuration options. Enhance documentation with examples for searching and downloading music, and outline quality settings and troubleshooting tips. --- README.md | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 172 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3a09880..ece6e25 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,181 @@ # GoFi -This project is a fork of the D-Fi application originally written in TypeScript. It is currently under development and aims to enhance and extend the functionality of the original application. +GoFi is a Go implementation of a Deezer music download tool. It allows you to search and download music from Deezer. -### Contributing +## Features + +- Search for tracks, albums, artists and playlists +- Download high-quality music (MP3, FLAC) +- Support for downloading by name or ID +- Command-line interface for easy automation +- Written in Go for high performance and cross-platform compatibility +- Support for configuration files +- Concurrent downloads for albums and playlists + +## Installation + +### Prerequisites + +- Go 1.23 or later + +### Building from Source + +1. Clone the repository: +```bash +git clone https://github.com/d-fi/GoFi.git +cd GoFi +``` + +2. Build the application: +```bash +make build +``` + +This will create a binary named `d-fi` in the project root directory. + +## Usage + +To use GoFi, you need a Deezer ARL token. This token is used to authenticate with Deezer's API. + +### Getting an ARL Token + +1. Log in to [Deezer](https://www.deezer.com) in your web browser +2. Open developer tools (F12 or right-click and select "Inspect") +3. Go to the "Application" tab (in Chrome) or "Storage" tab (in Firefox) +4. Look for cookies (under "Storage" -> "Cookies" -> "https://www.deezer.com") +5. Find the cookie named "arl" and copy its value (should be 192 characters) + +### Setting up the ARL Token + +You can provide the ARL token in one of three ways: + +1. Using the `-arl` command-line flag: +```bash +./d-fi -arl=YOUR_ARL_TOKEN search "artist name" +``` + +2. Using the `DEEZER_ARL` environment variable: +```bash +export DEEZER_ARL=YOUR_ARL_TOKEN +./d-fi search "artist name" +``` + +3. Using a configuration file (see Configuration section below) + +### Configuration File + +GoFi supports using a configuration file for more advanced settings. Create a JSON file with the following structure: + +```json +{ + "concurrency": 3, + "saveLayout": { + "track": "/path/to/save/Tracks/{ART_NAME}/{ART_NAME} - {SNG_TITLE}", + "album": "/path/to/save/Albums/{ART_NAME}/{ALB_TITLE}/{TRACK_NUMBER} - {SNG_TITLE}", + "artist": "/path/to/save/Artists/{ART_NAME}/{SNG_TITLE}", + "playlist": "/path/to/save/Playlists/{TITLE}/{ART_NAME} - {SNG_TITLE}" + }, + "playlist": { + "resolveFullPath": false + }, + "trackNumber": false, + "fallbackTrack": true, + "fallbackQuality": false, + "coverSize": { + "128": 500, + "320": 500, + "flac": 1000 + }, + "cookies": { + "arl": "YOUR_ARL_TOKEN_HERE" + } +} +``` + +Path templates support the following placeholders: +- `{ART_NAME}`: Artist name +- `{SNG_TITLE}`: Song title +- `{ALB_TITLE}`: Album title +- `{TRACK_NUMBER}`: Track number (formatted as 01, 02, etc.) +- `{SNG_ID}`: Song ID +- `{ALB_ID}`: Album ID +- `{TITLE}`: Playlist title + +To use a configuration file: +```bash +./d-fi -config=path/to/config.json search "artist name" +``` + +### Basic Commands + +1. Search for music: +```bash +./d-fi search "artist or track name" +``` + +2. Download a track (by name or ID): +```bash +# By name (will search and let you select from results) +./d-fi download track "Harder Better Faster Stronger" + +# By ID (direct download) +./d-fi download track 3135556 +``` + +3. Download an album (by name or ID): +```bash +# By name (will search and let you select from results) +./d-fi download album "Discovery" + +# By ID (direct download) +./d-fi download album 302127 +``` + +4. Download a playlist (by name or ID): +```bash +# By name (will search and let you select from results) +./d-fi download playlist "Top 50 Global" + +# By ID (direct download) +./d-fi download playlist 1234567890 +``` + +### Quality Settings + +GoFi supports different quality settings for music downloads: + +- **FLAC (9)**: Lossless audio format, highest quality (default) +- **MP3 320kbps (3)**: High quality MP3 +- **MP3 128kbps (1)**: Standard quality MP3 + +The application currently defaults to FLAC quality (9). Different account tiers on Deezer have different capabilities: + +- Free accounts: Can only download MP3 128kbps +- Premium accounts: Can download MP3 320kbps +- HiFi accounts: Can download FLAC + +If a track isn't available in the requested quality, the app can fall back to a lower quality if `fallbackQuality` is set to `true` in your config file. + +### Advanced Options + +- `-log-level`: Set the log level (debug, info, warn, error) +```bash +./d-fi -log-level=debug search "artist name" +``` + +## Troubleshooting + +- If you get authentication errors, check that your ARL token is valid and correctly entered +- ARL tokens expire periodically, so you may need to obtain a new one if you haven't used the tool in a while +- For detailed logging, use the debug log level: `./d-fi -log-level=debug` +- If downloads fail, try increasing the concurrency value in your config file + +## Contributing Contributions to this project are welcome. If you find any bugs or have suggestions for new features, please open an issue or submit a pull request. ## License This project is licensed under the [MIT License](LICENSE). + +🔄 TODO: Add more details about quality settings and advanced usage scenarios. From 3f5bcb6a451824ca9d7ec3b4cb33c920c821157b Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 11:11:16 -0700 Subject: [PATCH 15/33] chore: add .tool-versions file for Go version management - Introduce a new file to specify the Go version (1.23.1) used in the project, ensuring consistent development environments across team members. --- .tool-versions | 1 + 1 file changed, 1 insertion(+) create mode 100644 .tool-versions diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..c9953ae --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +golang 1.23.1 From d82f427731d92640f3c53f0ff07773390934dcdb Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 11:49:03 -0700 Subject: [PATCH 16/33] =?UTF-8?q?=F0=9F=93=9D=20docs(guidance):=20add=20CL?= =?UTF-8?q?AUDE.md=20file=20with=20project=20documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- CLAUDE.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..d2619dd --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,97 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +GoFi is a Go implementation of a music download tool, originally for Deezer but expanding to support multiple services including Spotify. It allows users to search and download music from these platforms through a command-line interface. + +## Build Commands + +```bash +# Build the application +make build + +# Run tests +make test + +# Clean build artifacts +make clean + +# Run a specific test +go test -v ./path/to/package -run TestName +``` + +## Code Architecture + +### Core Components + +1. **API Clients**: Service-specific API clients for fetching music data + - Deezer: `api/api.go` + - Spotify: `internal/services/spotify/spotify.go` + +2. **Authentication**: + - Deezer: Uses ARL token stored in configuration + - Spotify: OAuth2 flow in `internal/services/spotify/auth.go` + +3. **Download Engine**: `download/download.go` handles the actual download of music files + - Concurrent downloads for albums/playlists + - Quality selection (FLAC, MP3 320kbps, MP3 128kbps) + +4. **Metadata Management**: Adds appropriate metadata to downloaded files + - ID3 tags for MP3: `metadata/id3_tag.go` + - FLAC metadata: `metadata/flac_meta.go` + - Album cover art: `metadata/album_cover.go` + +5. **CLI Interface**: + - Legacy flag-based CLI: `cmd/main.go` + - New Cobra-based CLI: `cmd/gofi/cmd/` + +### Data Flow + +1. User provides a URL or search query +2. URL parsing (`internal/utils/urlparser.go`) identifies service type and content ID +3. Service-specific API fetches metadata (track, album, artist, playlist info) +4. Download engine retrieves audio files with appropriate quality +5. Metadata is added to downloaded files +6. Files are saved according to configured path templates + +## Configuration + +The application accepts configuration through: +1. Command-line flags +2. Environment variables +3. JSON configuration file + +Main configuration options: +- Authentication tokens for music services +- Download quality preferences +- Output path templates +- Concurrency settings + +## Feature Flags + +- `fallbackQuality`: If true, falls back to lower quality when requested quality is unavailable +- `fallbackTrack`: If true, attempts to find alternative tracks when the requested track is unavailable +- `trackNumber`: If true, includes track numbers in filenames + +## Testing + +Run all tests: +```bash +make test +``` + +Run specific tests: +```bash +go test -v ./path/to/package -run TestName +``` + +Current test coverage focuses on: +- URL handling and parsing +- API client functionality +- Metadata management + +## Current Development + +The project is in the process of extending support beyond Deezer to include Spotify, with additional services planned. The `feat/spotify-integration` branch contains the latest work on Spotify integration. \ No newline at end of file From e304697bdafc0cb407d7df1d043651343559555c Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 13:48:32 -0700 Subject: [PATCH 17/33] =?UTF-8?q?=E2=9C=A8=20feat(spotify):=20complete=20S?= =?UTF-8?q?potify=20integration=20with=20Deezer=20download=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Spotify authentication with OAuth2 - Implement Spotify API client for fetching tracks, albums, and playlists - Create URL parser for handling Spotify URLs - Implement matching of Spotify content with Deezer for downloads - Auto-load ARL token from environment variables - Add basic CLI structure with cobra --- README.md | 153 +++++++--------- api/spotify_deezer_match.go | 164 +++++++++++++++++ cmd/gofi/cmd/auth.go | 20 +++ cmd/gofi/cmd/auth_spotify.go | 51 ++---- cmd/gofi/cmd/download.go | 213 ++-------------------- cmd/gofi/cmd/download_handler.go | 299 +++++++++++++++++++++++++++++++ cmd/gofi/cmd/root.go | 120 +++++++++++++ cmd/gofi/cmd/utils.go | 39 ++++ cmd/gofi/main.go | 7 + logger/zerolog.go | 7 +- request/client.go | 33 +++- request/request.go | 40 +++++ 12 files changed, 821 insertions(+), 325 deletions(-) create mode 100644 api/spotify_deezer_match.go create mode 100644 cmd/gofi/cmd/auth.go create mode 100644 cmd/gofi/cmd/download_handler.go create mode 100644 cmd/gofi/cmd/root.go create mode 100644 cmd/gofi/cmd/utils.go create mode 100644 cmd/gofi/main.go diff --git a/README.md b/README.md index ece6e25..3610285 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ # GoFi -GoFi is a Go implementation of a Deezer music download tool. It allows you to search and download music from Deezer. +GoFi is a Go implementation of a music download tool. It allows you to search and download music from Deezer, with Spotify integration for finding tracks. ## Features - Search for tracks, albums, artists and playlists - Download high-quality music (MP3, FLAC) - Support for downloading by name or ID +- **Spotify integration** for finding and downloading Spotify content via Deezer - Command-line interface for easy automation - Written in Go for high performance and cross-platform compatibility - Support for configuration files @@ -35,9 +36,11 @@ This will create a binary named `d-fi` in the project root directory. ## Usage -To use GoFi, you need a Deezer ARL token. This token is used to authenticate with Deezer's API. +### Setting Up Authentication -### Getting an ARL Token +#### Deezer Authentication + +To use GoFi with Deezer, you need a Deezer ARL token. This token is used to authenticate with Deezer's API. 1. Log in to [Deezer](https://www.deezer.com) in your web browser 2. Open developer tools (F12 or right-click and select "Inspect") @@ -45,98 +48,74 @@ To use GoFi, you need a Deezer ARL token. This token is used to authenticate wit 4. Look for cookies (under "Storage" -> "Cookies" -> "https://www.deezer.com") 5. Find the cookie named "arl" and copy its value (should be 192 characters) -### Setting up the ARL Token +#### Spotify Authentication -You can provide the ARL token in one of three ways: +To use GoFi with Spotify, you need to register an application with Spotify: -1. Using the `-arl` command-line flag: -```bash -./d-fi -arl=YOUR_ARL_TOKEN search "artist name" -``` +1. Go to the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard) +2. Create a new application +3. Set the redirect URI to `http://localhost:8888/callback` +4. Note your Client ID and Client Secret +5. Add these credentials to your `.env` file (see below) + +### Environment Configuration + +Create a `.env` file in the project root with the following content: -2. Using the `DEEZER_ARL` environment variable: -```bash -export DEEZER_ARL=YOUR_ARL_TOKEN -./d-fi search "artist name" ``` +# Spotify API credentials +SPOTIFY_CLIENT_ID=your_spotify_client_id_here +SPOTIFY_CLIENT_SECRET=your_spotify_client_secret_here -3. Using a configuration file (see Configuration section below) - -### Configuration File - -GoFi supports using a configuration file for more advanced settings. Create a JSON file with the following structure: - -```json -{ - "concurrency": 3, - "saveLayout": { - "track": "/path/to/save/Tracks/{ART_NAME}/{ART_NAME} - {SNG_TITLE}", - "album": "/path/to/save/Albums/{ART_NAME}/{ALB_TITLE}/{TRACK_NUMBER} - {SNG_TITLE}", - "artist": "/path/to/save/Artists/{ART_NAME}/{SNG_TITLE}", - "playlist": "/path/to/save/Playlists/{TITLE}/{ART_NAME} - {SNG_TITLE}" - }, - "playlist": { - "resolveFullPath": false - }, - "trackNumber": false, - "fallbackTrack": true, - "fallbackQuality": false, - "coverSize": { - "128": 500, - "320": 500, - "flac": 1000 - }, - "cookies": { - "arl": "YOUR_ARL_TOKEN_HERE" - } -} +# Deezer authentication +DEEZER_ARL=your_deezer_arl_here ``` -Path templates support the following placeholders: -- `{ART_NAME}`: Artist name -- `{SNG_TITLE}`: Song title -- `{ALB_TITLE}`: Album title -- `{TRACK_NUMBER}`: Track number (formatted as 01, 02, etc.) -- `{SNG_ID}`: Song ID -- `{ALB_ID}`: Album ID -- `{TITLE}`: Playlist title +Alternatively, you can set these as environment variables: -To use a configuration file: ```bash -./d-fi -config=path/to/config.json search "artist name" +export SPOTIFY_CLIENT_ID=your_spotify_client_id_here +export SPOTIFY_CLIENT_SECRET=your_spotify_client_secret_here +export DEEZER_ARL=your_deezer_arl_here ``` -### Basic Commands +### Authenticating with Spotify + +Before using Spotify features, you need to authenticate: -1. Search for music: ```bash -./d-fi search "artist or track name" +./d-fi auth spotify ``` -2. Download a track (by name or ID): -```bash -# By name (will search and let you select from results) -./d-fi download track "Harder Better Faster Stronger" +This will start the OAuth flow and open a browser window for you to authorize the application. -# By ID (direct download) -./d-fi download track 3135556 -``` +### Basic Commands + +#### Downloading from Spotify URLs + +You can download tracks, albums, or playlists directly from Spotify URLs: -3. Download an album (by name or ID): ```bash -# By name (will search and let you select from results) -./d-fi download album "Discovery" +# Download a Spotify track +./d-fi download https://open.spotify.com/track/2YarjDYjBJuH63dUIh9OWv -# By ID (direct download) -./d-fi download album 302127 +# Download a Spotify album +./d-fi download https://open.spotify.com/album/1DFixLWuPkv3KT3TnV35m3 + +# Download a Spotify playlist +./d-fi download https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M ``` -4. Download a playlist (by name or ID): -```bash -# By name (will search and let you select from results) -./d-fi download playlist "Top 50 Global" +The application will search for matching content on Deezer and download it. +#### Downloading from Deezer + +You can continue to download directly from Deezer: + +```bash # By ID (direct download) +./d-fi download track 3135556 +./d-fi download album 302127 ./d-fi download playlist 1234567890 ``` @@ -144,31 +123,31 @@ To use a configuration file: GoFi supports different quality settings for music downloads: -- **FLAC (9)**: Lossless audio format, highest quality (default) -- **MP3 320kbps (3)**: High quality MP3 +- **FLAC (9)**: Lossless audio format, highest quality +- **MP3 320kbps (3)**: High quality MP3 (default) - **MP3 128kbps (1)**: Standard quality MP3 -The application currently defaults to FLAC quality (9). Different account tiers on Deezer have different capabilities: +Specify quality with the `-q` flag: -- Free accounts: Can only download MP3 128kbps -- Premium accounts: Can download MP3 320kbps -- HiFi accounts: Can download FLAC - -If a track isn't available in the requested quality, the app can fall back to a lower quality if `fallbackQuality` is set to `true` in your config file. +```bash +./d-fi -q 9 download https://open.spotify.com/track/2YarjDYjBJuH63dUIh9OWv +``` ### Advanced Options -- `-log-level`: Set the log level (debug, info, warn, error) +- `-o, --output`: Set the download directory +- `-q, --quality`: Set the audio quality (1, 3, or 9) +- `-l, --log-level`: Set the log level (debug, info, warn, error) + ```bash -./d-fi -log-level=debug search "artist name" +./d-fi -o ./my-music -q 9 -l debug download https://open.spotify.com/album/1DFixLWuPkv3KT3TnV35m3 ``` ## Troubleshooting -- If you get authentication errors, check that your ARL token is valid and correctly entered +- If you get Spotify authentication errors, run `./d-fi auth spotify` to re-authenticate +- If downloads fail, try increasing the log level with `-l debug` for more information - ARL tokens expire periodically, so you may need to obtain a new one if you haven't used the tool in a while -- For detailed logging, use the debug log level: `./d-fi -log-level=debug` -- If downloads fail, try increasing the concurrency value in your config file ## Contributing @@ -176,6 +155,4 @@ Contributions to this project are welcome. If you find any bugs or have suggesti ## License -This project is licensed under the [MIT License](LICENSE). - -🔄 TODO: Add more details about quality settings and advanced usage scenarios. +This project is licensed under the [MIT License](LICENSE). \ No newline at end of file diff --git a/api/spotify_deezer_match.go b/api/spotify_deezer_match.go new file mode 100644 index 0000000..b1fbb89 --- /dev/null +++ b/api/spotify_deezer_match.go @@ -0,0 +1,164 @@ +package api + +import ( + "fmt" + "strings" + "time" + + "github.com/d-fi/GoFi/internal/models" + "github.com/d-fi/GoFi/logger" + "github.com/d-fi/GoFi/types" +) + +// SearchTrackOnDeezer searches for a Spotify track on Deezer +func SearchTrackOnDeezer(track *models.Track) (types.TrackType, error) { + if track == nil { + return types.TrackType{}, fmt.Errorf("cannot search for nil track") + } + + // Try searching by ISRC first (most accurate) + if track.ISRC != "" { + logger.Debug("Searching for track by ISRC: %s", track.ISRC) + searchResult, err := SearchMusic("isrc:"+track.ISRC, 1) + if err == nil && len(searchResult.TRACK.Data) > 0 { + trackID := fmt.Sprint(searchResult.TRACK.Data[0].SNG_ID) + logger.Debug("Found track by ISRC match: %s", trackID) + return GetTrackInfo(trackID) + } + logger.Debug("ISRC search failed or returned no results, falling back to metadata search") + } + + // Clean up artist and track names for more accurate searching + artistName := getMainArtistName(track.Artists) + trackTitle := cleanupTitle(track.Title) + + // Build a search query + query := fmt.Sprintf("artist:'%s' track:'%s'", artistName, trackTitle) + logger.Debug("Searching for track with query: %s", query) + + searchResult, err := SearchMusic(query, 5) + if err != nil { + return types.TrackType{}, fmt.Errorf("failed to search for track: %v", err) + } + + if len(searchResult.TRACK.Data) == 0 { + return types.TrackType{}, fmt.Errorf("no matching tracks found on Deezer") + } + + // Get the first result - could improve this by comparing durations, etc. + trackID := fmt.Sprint(searchResult.TRACK.Data[0].SNG_ID) + logger.Debug("Found potential track match: %s", trackID) + + return GetTrackInfo(trackID) +} + +// SearchAlbumOnDeezer searches for a Spotify album on Deezer +func SearchAlbumOnDeezer(album *models.Album) (types.AlbumType, error) { + if album == nil { + return types.AlbumType{}, fmt.Errorf("cannot search for nil album") + } + + // Try searching by UPC first (most accurate) + if album.UPC != "" { + logger.Debug("Searching for album by UPC: %s", album.UPC) + searchResult, err := SearchMusic("upc:"+album.UPC, 1, "ALBUM") + if err == nil && len(searchResult.ALBUM.Data) > 0 { + albumID := fmt.Sprint(searchResult.ALBUM.Data[0].ALB_ID) + logger.Debug("Found album by UPC match: %s", albumID) + return GetAlbumInfo(albumID) + } + logger.Debug("UPC search failed or returned no results, falling back to metadata search") + } + + // Clean up artist and album names for more accurate searching + artistName := getMainArtistName(album.Artists) + albumTitle := cleanupTitle(album.Title) + + // Build a search query + query := fmt.Sprintf("artist:'%s' album:'%s'", artistName, albumTitle) + logger.Debug("Searching for album with query: %s", query) + + searchResult, err := SearchMusic(query, 5, "ALBUM") + if err != nil { + return types.AlbumType{}, fmt.Errorf("failed to search for album: %v", err) + } + + if len(searchResult.ALBUM.Data) == 0 { + return types.AlbumType{}, fmt.Errorf("no matching albums found on Deezer") + } + + // Get the first result + albumID := fmt.Sprint(searchResult.ALBUM.Data[0].ALB_ID) + logger.Debug("Found potential album match: %s", albumID) + + return GetAlbumInfo(albumID) +} + +// MatchPlaylistTracks matches Spotify playlist tracks to Deezer tracks +func MatchPlaylistTracks(tracks []models.Track) ([]types.TrackType, error) { + if len(tracks) == 0 { + return nil, fmt.Errorf("cannot match empty track list") + } + + logger.Debug("Starting to match %d Spotify tracks to Deezer", len(tracks)) + result := make([]types.TrackType, 0, len(tracks)) + failures := 0 + + // Process each track, with rate limiting to avoid overwhelming the API + for i, track := range tracks { + // Add a small delay every few tracks to avoid rate limiting + if i > 0 && i%5 == 0 { + time.Sleep(500 * time.Millisecond) + } + + logger.Debug("Processing track %d/%d: %s - %s", i+1, len(tracks), track.Title, getMainArtistName(track.Artists)) + deezerTrack, err := SearchTrackOnDeezer(&track) + if err != nil { + logger.Error("Failed to match track %s - %s: %v", track.Title, getMainArtistName(track.Artists), err) + failures++ + continue + } + + result = append(result, deezerTrack) + logger.Debug("Successfully matched track %d/%d: %s to Deezer ID %s", + i+1, len(tracks), track.Title, deezerTrack.SNG_ID) + } + + logger.Debug("Completed track matching: %d tracks matched, %d failed", len(result), failures) + return result, nil +} + +// Helper functions + +// getMainArtistName returns the name of the main artist +func getMainArtistName(artists []models.Artist) string { + if len(artists) == 0 { + return "" + } + return artists[0].Name +} + +// cleanupTitle removes common extra text from titles like "(Remastered)" or "[Live]" +func cleanupTitle(title string) string { + // Remove content in parentheses, brackets, etc. that might differ between services + cleaned := title + + // Using simple string replacements for common patterns + if strings.Contains(cleaned, " (feat.") { + cleaned = cleaned[:strings.Index(cleaned, " (feat.")] + } + if strings.Contains(cleaned, " (ft.") { + cleaned = cleaned[:strings.Index(cleaned, " (ft.")] + } + if strings.Contains(cleaned, " (Remastered") { + cleaned = cleaned[:strings.Index(cleaned, " (Remastered")] + } + if strings.Contains(cleaned, " [") { + cleaned = cleaned[:strings.Index(cleaned, " [")] + } + if strings.Contains(cleaned, " - ") { + cleaned = cleaned[:strings.Index(cleaned, " - ")] + } + + return cleaned +} \ No newline at end of file diff --git a/cmd/gofi/cmd/auth.go b/cmd/gofi/cmd/auth.go new file mode 100644 index 0000000..5f46ada --- /dev/null +++ b/cmd/gofi/cmd/auth.go @@ -0,0 +1,20 @@ +package cmd + +import ( + "github.com/spf13/cobra" +) + +// authCmd represents the auth command +var authCmd = &cobra.Command{ + Use: "auth", + Short: "Authenticate with music services", + Long: `Authenticate with supported music services like Spotify.`, + Run: func(cmd *cobra.Command, args []string) { + cmd.Help() + }, +} + +func init() { + // Add sub-commands to auth + authCmd.AddCommand(spotifyAuthCmd) +} \ No newline at end of file diff --git a/cmd/gofi/cmd/auth_spotify.go b/cmd/gofi/cmd/auth_spotify.go index 7ed939e..00e6ec9 100644 --- a/cmd/gofi/cmd/auth_spotify.go +++ b/cmd/gofi/cmd/auth_spotify.go @@ -4,10 +4,10 @@ package cmd import ( "context" "fmt" - "log" "os" "github.com/d-fi/GoFi/internal/services/spotify" // Corrected import path + "github.com/d-fi/GoFi/logger" "github.com/spf13/cobra" ) @@ -23,7 +23,7 @@ Requires SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables to be clientSecret := os.Getenv("SPOTIFY_CLIENT_SECRET") if clientID == "" || clientSecret == "" { - log.Fatal("Error: SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables must be set.") + logger.Fatal("Error: SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables must be set.") return // Redundant after Fatal, but good practice } @@ -34,60 +34,35 @@ Requires SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables to be authService, err := spotify.NewAuthService(cfg) if err != nil { - log.Fatalf("Error creating Spotify auth service: %v", err) + logger.Fatal("Error creating Spotify auth service: %v", err) } - log.Println("Starting Spotify authentication process...") + logger.Info("Starting Spotify authentication process...") // Use context.Background() for this CLI command execution context client, err := authService.StartAuthentication(context.Background()) if err != nil { - log.Fatalf("Spotify authentication failed: %v", err) + logger.Fatal("Spotify authentication failed: %v", err) } if client != nil { // Optionally, verify the client works by making a simple API call user, err := client.CurrentUser(context.Background()) if err != nil { - log.Printf("Warning: Could not verify authentication by fetching user: %v", err) + logger.Warn("Could not verify authentication by fetching user: %v", err) fmt.Println("Authentication process completed, but verification failed. Token might be stored.") } else { fmt.Printf("\nSuccessfully authenticated with Spotify as %s (%s)!\n", user.DisplayName, user.ID) fmt.Println("Authentication token saved successfully.") } } else { - // This case should ideally be caught by the error above, but added for completeness - log.Fatal("Authentication process completed, but no valid client was returned.") - } + // This case should ideally be caught by the error above, but added for completeness + logger.Fatal("Authentication process completed, but no valid client was returned.") + } }, } -// 🔄 TODO: Register this command with your root command or an 'auth' group command. -// Example (in your root command setup, e.g., cmd/gofi/cmd/root.go or cmd/gofi/cmd/auth.go): -// -// import "github.com/spf13/cobra" -// -// var authCmd = &cobra.Command{ -// Use: "auth", -// Short: "Manage authentication for different services", -// } -// -// func init() { -// // Add authCmd to rootCmd -// rootCmd.AddCommand(authCmd) -// // Add spotifyAuthCmd to authCmd -// authCmd.AddCommand(spotifyAuthCmd) -// // Or if no auth group, add directly to root: -// // rootCmd.AddCommand(spotifyAuthCmd) -// } -// - +// init function is already called from auth.go +// No need to add logging or registration here func init() { - // This function needs to exist to potentially register flags for this specific command later. - // For now, we just need to ensure the command is added to its parent elsewhere. - // If you have a central `auth` command: - // authCmd.AddCommand(spotifyAuthCmd) - // If adding directly to root command: - // rootCmd.AddCommand(spotifyAuthCmd) - // ---> You will need to uncomment and place the registration code in the appropriate file <--- - log.Println("Spotify auth command initialized (needs registration in root/auth command)") // Placeholder log -} \ No newline at end of file + // Empty init function - registration handled in auth.go +} \ No newline at end of file diff --git a/cmd/gofi/cmd/download.go b/cmd/gofi/cmd/download.go index 431f6b0..cb647c7 100644 --- a/cmd/gofi/cmd/download.go +++ b/cmd/gofi/cmd/download.go @@ -1,209 +1,32 @@ -// cmd/gofi/cmd/download.go (Placeholder Example) package cmd import ( - "context" "fmt" - "log" - "os" - "strings" - "github.com/d-fi/GoFi/internal/models" - "github.com/d-fi/GoFi/internal/services/spotify" - "github.com/d-fi/GoFi/internal/utils" "github.com/spf13/cobra" - spotifyClient "github.com/zmb3/spotify/v2" // Alias import to avoid naming conflict ) -// downloadCmd represents the download command (placeholder) +// downloadCmd represents the download command var downloadCmd = &cobra.Command{ Use: "download [url]", - Short: "Download music from a given URL (Spotify supported)", - Long: `Downloads tracks, albums, or playlists from supported services like Spotify.`, - Args: cobra.ExactArgs(1), // Requires exactly one argument: the URL - Run: func(cmd *cobra.Command, args []string) { - url := args[0] - fmt.Printf("Attempting to process URL: %s\n", url) - handleDownload(url) // Call the handler logic - }, -} - -func init() { - // ‼️ FIXME: This registration assumes 'rootCmd' exists. Adapt as needed. - // Register this placeholder command with your actual root command. - // For example: rootCmd.AddCommand(downloadCmd) - log.Println("Placeholder download command initialized (needs registration with rootCmd)") -} - -// --- Integration Logic --- + Short: "Download music from a URL", + Long: `Download music from Deezer or Spotify URL. +Supports tracks, albums, and playlists from both services. -func handleDownload(url string) { - ctx := context.Background() - - parsedInfo, err := utils.ParseMusicURL(url) - if err != nil { - log.Fatalf("Error: Failed to parse URL: %v", err) - return - } - - // Only proceed if we have a valid Spotify client - client, _ := getAuthenticatedSpotifyClient(ctx) // Error handled within - if client == nil { - // Check if the URL was actually a Spotify URL before failing - if parsedInfo.Source == "spotify" { - log.Fatal("Error: Failed to get authenticated Spotify client. Cannot proceed with Spotify download. Hint: Run 'gofi auth spotify' first.") - } else { - // Log non-fatal error if it wasn't a spotify URL to begin with - log.Printf("Info: Spotify client not available, but URL source is '%s'. Skipping Spotify check.", parsedInfo.Source) - } - // If not spotify, allow falling through to default or other handlers - // If it *was* spotify, we exit here. - if parsedInfo.Source == "spotify" { - return - } - } +For Spotify URLs, content will be searched on Deezer and downloaded. - // Initialize spotifyService only if client is not nil (meaning auth was successful or not needed) - var spotifyService *spotify.SpotifyService - if client != nil { - spotifyService = spotify.NewSpotifyService(client) - } - - switch parsedInfo.Type { - case utils.SpotifyTrack: - if spotifyService == nil { // Defensive check - log.Fatal("Error: Spotify service not initialized. Cannot fetch track.") - return - } - log.Printf("Processing Spotify Track ID: %s", parsedInfo.ID) - track, err := spotifyService.FetchTrack(ctx, parsedInfo.ID) - if err != nil { - log.Fatalf("Error fetching Spotify track %s: %v", parsedInfo.ID, err) - return - } - // ‼️ FIXME: Replace placeholder log with actual download logic for 'track' - log.Printf("=== Fetched Track (Ready for Download) ===") - log.Printf(" Title: %s", track.Title) - log.Printf(" Artist(s): %s", joinModelArtists(track.Artists)) - // Ensure track.Album is not nil before accessing Title - albumTitle := "Unknown Album" - if track.Album != nil { - albumTitle = track.Album.Title - } - log.Printf(" Album: %s", albumTitle) - log.Printf(" ISRC: %s", track.ISRC) - log.Println("------------------------------------------") - // downloadSingleTrack(track) // Your download function here - - case utils.SpotifyAlbum: - if spotifyService == nil { // Defensive check - log.Fatal("Error: Spotify service not initialized. Cannot fetch album.") - return - } - log.Printf("Processing Spotify Album ID: %s", parsedInfo.ID) - album, tracks, err := spotifyService.FetchAlbum(ctx, parsedInfo.ID) - if err != nil { - log.Fatalf("Error fetching Spotify album %s: %v", parsedInfo.ID, err) - return - } - log.Printf("=== Fetched Album (Ready for Download) ===") - log.Printf(" Title: %s", album.Title) - log.Printf(" Artist(s): %s", joinModelArtists(album.Artists)) - log.Printf(" Total Tracks: %d (fetched %d)", album.TotalTracks, len(tracks)) - log.Println("----------------------------------------") - // ‼️ FIXME: Replace placeholder log with actual download logic for all 'tracks' - log.Printf("Processing %d tracks for album download:", len(tracks)) - for i, track := range tracks { - log.Printf(" %d. %s - %s", i+1, track.Title, joinModelArtists(track.Artists)) - // downloadSingleTrack(track) // Call download for each track - } - - case utils.SpotifyPlaylist: - if spotifyService == nil { // Defensive check - log.Fatal("Error: Spotify service not initialized. Cannot fetch playlist.") - return - } - log.Printf("Processing Spotify Playlist ID: %s", parsedInfo.ID) - playlist, tracks, err := spotifyService.FetchPlaylist(ctx, parsedInfo.ID) +Examples: + gofi download https://open.spotify.com/track/2YarjDYjBJuH63dUIh9OWv + gofi download https://open.spotify.com/album/1DFixLWuPkv3KT3TnV35m3 + gofi download https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M`, + Args: cobra.ExactArgs(1), + Run: func(cmd *cobra.Command, args []string) { + url := args[0] + fmt.Printf("Processing URL: %s\n", url) + + err := downloadHandler(url, downloadPath, quality) if err != nil { - log.Fatalf("Error fetching Spotify playlist %s: %v", parsedInfo.ID, err) - return - } - log.Printf("=== Fetched Playlist (Ready for Download) ===") - log.Printf(" Title: %s", playlist.Title) - log.Printf(" Owner: %s", playlist.OwnerName) - log.Printf(" Total Tracks: %d (fetched %d)", playlist.TotalTracks, len(tracks)) - log.Println("-------------------------------------------") - // ‼️ FIXME: Replace placeholder log with actual download logic for all 'tracks' - log.Printf("Processing %d tracks for playlist download:", len(tracks)) - for i, track := range tracks { - log.Printf(" %d. %s - %s", i+1, track.Title, joinModelArtists(track.Artists)) - // downloadSingleTrack(track) // Call download for each track - } - - // case utils.DeezerTrack: // Example for future expansion - // log.Printf("Processing Deezer Track ID: %s", parsedInfo.ID) - // // ... handle Deezer ... - - default: - // Check if source was identified before saying unsupported - if parsedInfo.Source != "" { - log.Printf("Error: URL type '%s' from service '%s' is not supported for download yet.", parsedInfo.Type, parsedInfo.Source) - } else { - log.Printf("Error: Could not determine music service or type from the provided URL.") - } - } -} - -// Helper function to get authenticated client (handles prompting for auth) -// Returns nil client if auth fails or is not configured. -func getAuthenticatedSpotifyClient(ctx context.Context) (*spotifyClient.Client, *spotify.AuthService) { - clientID := os.Getenv("SPOTIFY_CLIENT_ID") - clientSecret := os.Getenv("SPOTIFY_CLIENT_SECRET") - if clientID == "" || clientSecret == "" { - log.Println("Info: SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables not set. Spotify features disabled.") - return nil, nil - } - cfg := spotify.Config{ClientID: clientID, ClientSecret: clientSecret} - authService, err := spotify.NewAuthService(cfg) - if err != nil { - log.Printf("Error creating Spotify auth service: %v", err) - return nil, nil - } - - client, err := authService.GetClient(ctx) // Attempts to load token or refresh - if err != nil { - // This is not necessarily an error, just means we need to authenticate. - // Logged as Info level. The calling function decides if it's fatal. - log.Printf("Info: Could not automatically retrieve Spotify token (may need initial auth): %v", err) - return nil, authService // Return authService even if client is nil - } - log.Println("Successfully obtained authenticated Spotify client.") - return client, authService -} - -// Helper to join artist names from models.Artist slice -func joinModelArtists(artists []models.Artist) string { // Use the actual model type - if len(artists) == 0 { - return "Unknown Artist" - } - names := make([]string, len(artists)) - for i, a := range artists { - if a.Name != "" { // Avoid adding empty names - names[i] = a.Name - } else { - names[i] = "Unnamed Artist" // Placeholder if name is empty + fmt.Printf("Error: %v\n", err) } - } - // Filter out empty strings before joining, in case the above logic missed something - filteredNames := []string{} - for _, name := range names { - if name != "" && name != "Unnamed Artist" { // filter potentially empty strings - filteredNames = append(filteredNames, name) - } - } - if len(filteredNames) == 0 { // If all artists were unnamed/empty - return "Unknown Artist(s)" - } - return strings.Join(filteredNames, ", ") -} \ No newline at end of file + }, +} \ No newline at end of file diff --git a/cmd/gofi/cmd/download_handler.go b/cmd/gofi/cmd/download_handler.go new file mode 100644 index 0000000..aa7e9dd --- /dev/null +++ b/cmd/gofi/cmd/download_handler.go @@ -0,0 +1,299 @@ +package cmd + +import ( + "context" + "fmt" + "os" + "path/filepath" + "strings" + "time" + + "github.com/d-fi/GoFi/api" + "github.com/d-fi/GoFi/download" + "github.com/d-fi/GoFi/internal/models" + "github.com/d-fi/GoFi/internal/services/spotify" + internalutils "github.com/d-fi/GoFi/internal/utils" + "github.com/d-fi/GoFi/types" + "github.com/d-fi/GoFi/utils" +) + +// downloadHandler processes downloads based on URL type +func downloadHandler(url string, downloadPath string, quality int) error { + ctx := context.Background() + + // Parse the URL to identify its type + parsedInfo, err := internalutils.ParseMusicURL(url) + if err != nil { + return fmt.Errorf("failed to parse URL: %v", err) + } + + // Handle Spotify URLs + if parsedInfo.Source == "spotify" { + return handleSpotifyDownload(ctx, parsedInfo, downloadPath, quality) + } + + // Handle Deezer URLs directly + // This would be the existing logic for Deezer download handling + return fmt.Errorf("direct Deezer URL handling not implemented in this sample") +} + +// handleSpotifyDownload processes Spotify URLs and downloads content from Deezer +func handleSpotifyDownload(ctx context.Context, parsedInfo *internalutils.ParsedURLInfo, downloadPath string, quality int) error { + // Get the Spotify client + client, _ := getAuthenticatedSpotifyClient(ctx) + if client == nil { + return fmt.Errorf("could not get authenticated Spotify client - run 'gofi auth spotify' first") + } + + // Create Spotify service + spotifyService := spotify.NewSpotifyService(client) + if spotifyService == nil { + return fmt.Errorf("failed to initialize Spotify service") + } + + // Process based on content type + switch parsedInfo.Type { + case internalutils.SpotifyTrack: + return handleSpotifyTrack(ctx, spotifyService, parsedInfo.ID, downloadPath, quality) + + case internalutils.SpotifyAlbum: + return handleSpotifyAlbum(ctx, spotifyService, parsedInfo.ID, downloadPath, quality) + + case internalutils.SpotifyPlaylist: + return handleSpotifyPlaylist(ctx, spotifyService, parsedInfo.ID, downloadPath, quality) + + default: + return fmt.Errorf("unsupported Spotify content type: %s", parsedInfo.Type) + } +} + +// handleSpotifyTrack handles downloading a single Spotify track +func handleSpotifyTrack(ctx context.Context, spotifyService *spotify.SpotifyService, id string, downloadPath string, quality int) error { + fmt.Printf("Getting track info from Spotify... ") + track, err := spotifyService.FetchTrack(ctx, id) + if err != nil { + return fmt.Errorf("failed to fetch track from Spotify: %v", err) + } + fmt.Printf("✓\n") + + // Find matching track on Deezer + fmt.Printf("Searching for track on Deezer... ") + deezerTrack, err := api.SearchTrackOnDeezer(track) + if err != nil { + return fmt.Errorf("failed to find track on Deezer: %v", err) + } + fmt.Printf("✓\n") + + // Print found track info + fmt.Printf("\nFound track on Deezer:\n") + fmt.Printf(" Title: %s\n", deezerTrack.SNG_TITLE) + fmt.Printf(" Artist: %s\n", deezerTrack.ART_NAME) + fmt.Printf(" Album: %s\n", deezerTrack.ALB_TITLE) + fmt.Printf(" Quality: %d\n", quality) + fmt.Printf("\nDownloading track...\n") + + // Create a folder with the artist name + artistFolder := filepath.Join(downloadPath, deezerTrack.ART_NAME) + + // Custom filename for the track: Artist - Title + customFilename := fmt.Sprintf("%s - %s", deezerTrack.ART_NAME, deezerTrack.SNG_TITLE) + + // Download the track + return downloadTrack(deezerTrack, artistFolder, quality, customFilename) +} + +// handleSpotifyAlbum handles downloading a Spotify album +func handleSpotifyAlbum(ctx context.Context, spotifyService *spotify.SpotifyService, id string, downloadPath string, quality int) error { + fmt.Printf("Getting album info from Spotify... ") + album, tracks, err := spotifyService.FetchAlbum(ctx, id) + if err != nil { + return fmt.Errorf("failed to fetch album from Spotify: %v", err) + } + fmt.Printf("✓\n") + + fmt.Printf("Found album: %s by %s (%d tracks)\n", + album.Title, + joinArtistNames(album.Artists), + len(tracks)) + + // Find matching album on Deezer + fmt.Printf("Searching for album on Deezer... ") + deezerAlbum, err := api.SearchAlbumOnDeezer(album) + if err != nil { + fmt.Printf("✗\n") + fmt.Printf("Could not find album on Deezer. Trying to match individual tracks...\n") + return downloadSpotifyTracksIndividually(tracks, downloadPath, quality, "") + } + fmt.Printf("✓\n") + + // Print found album info + fmt.Printf("\nFound album on Deezer:\n") + fmt.Printf(" Title: %s\n", deezerAlbum.ALB_TITLE) + fmt.Printf(" Artist: %s\n", deezerAlbum.ART_NAME) + fmt.Printf(" Quality: %d\n", quality) + fmt.Printf("\nDownloading album...\n") + + // Create a folder for the album + albumPath := filepath.Join(downloadPath, deezerAlbum.ALB_TITLE) + + // Get album tracks + albumTracks, err := api.GetAlbumTracks(fmt.Sprint(deezerAlbum.ALB_ID)) + if err != nil { + return fmt.Errorf("failed to get album tracks from Deezer: %v", err) + } + + // Download the tracks + var lastError error + for _, track := range albumTracks.Data { + trackInfo, err := api.GetTrackInfo(fmt.Sprint(track.SNG_ID)) + if err != nil { + fmt.Printf("Error getting info for track %s: %v\n", track.SNG_TITLE, err) + lastError = err + continue + } + + // Custom filename for the track: Artist - Title + customFilename := fmt.Sprintf("%s - %s", trackInfo.ART_NAME, trackInfo.SNG_TITLE) + + err = downloadTrack(trackInfo, albumPath, quality, customFilename) + if err != nil { + fmt.Printf("Error downloading track %s: %v\n", track.SNG_TITLE, err) + lastError = err + } + } + + if lastError != nil { + return fmt.Errorf("some tracks failed to download") + } + return nil +} + +// handleSpotifyPlaylist handles downloading a Spotify playlist +func handleSpotifyPlaylist(ctx context.Context, spotifyService *spotify.SpotifyService, id string, downloadPath string, quality int) error { + fmt.Printf("Getting playlist info from Spotify... ") + playlist, tracks, err := spotifyService.FetchPlaylist(ctx, id) + if err != nil { + return fmt.Errorf("failed to fetch playlist from Spotify: %v", err) + } + fmt.Printf("✓\n") + + fmt.Printf("Found playlist: %s by %s (%d tracks)\n", + playlist.Title, + playlist.OwnerName, + len(tracks)) + + // Create a folder for the playlist using just the playlist name + playlistPath := filepath.Join(downloadPath, playlist.Title) + + return downloadSpotifyTracksIndividually(tracks, playlistPath, quality, "") +} + +// downloadSpotifyTracksIndividually searches for and downloads each track individually +func downloadSpotifyTracksIndividually(tracks []models.Track, downloadPath string, quality int, playlistName string) error { + total := len(tracks) + succeeded := 0 + failed := 0 + + fmt.Printf("Matching %d tracks from Spotify to Deezer...\n", total) + + for i, track := range tracks { + // Add a small delay to avoid overwhelming the Deezer API + if i > 0 && i%3 == 0 { + time.Sleep(1 * time.Second) + } + + fmt.Printf("[%d/%d] Processing: %s by %s... ", + i+1, total, track.Title, joinArtistNames(track.Artists)) + + deezerTrack, err := api.SearchTrackOnDeezer(&track) + if err != nil { + fmt.Printf("✗\n") + fmt.Printf(" Failed to find on Deezer: %v\n", err) + failed++ + continue + } + fmt.Printf("✓\n") + + // Always use "Artist - Title" format for all tracks + customFilename := fmt.Sprintf("%s - %s", deezerTrack.ART_NAME, deezerTrack.SNG_TITLE) + + // Download the track + err = downloadTrack(deezerTrack, downloadPath, quality, customFilename) + if err != nil { + fmt.Printf(" Error downloading: %v\n", err) + failed++ + continue + } + + succeeded++ + } + + fmt.Printf("\nDownload summary: %d succeeded, %d failed out of %d total\n", + succeeded, failed, total) + + if failed > 0 { + return fmt.Errorf("%d out of %d tracks failed to download", failed, total) + } + return nil +} + +// downloadTrack downloads a single track from Deezer +func downloadTrack(track types.TrackType, downloadPath string, quality int, customFilename string) error { + // Determine cover size based on quality + // For FLAC (quality=9), use 1000 + // For MP3 320 (quality=3), use 500 + // For MP3 128 (quality=1), use 500 + coverSize := 500 + if quality == 9 { + coverSize = 1000 + } + + // Create the directory if it doesn't exist + if err := os.MkdirAll(downloadPath, 0755); err != nil { + return fmt.Errorf("failed to create download directory: %v", err) + } + + // Create download options + options := download.DownloadTrackOptions{ + SngID: fmt.Sprint(track.SNG_ID), + Quality: quality, + CoverSize: coverSize, // Use the appropriate cover size based on quality + SaveToDir: downloadPath, + Filename: utils.SanitizeFileName(customFilename), // Use a custom filename without the ID suffix + OnProgress: func(progress float64, _, _ int64) { + // Simple progress indicator + if int(progress)%10 == 0 { + fmt.Printf(".") + } + }, + } + + // Execute download + filePath, err := download.DownloadTrack(options) + if err != nil { + return err + } + + fmt.Printf(" Saved to: %s\n", filePath) + return nil +} + +// joinArtistNames combines artist names into a comma-separated string +func joinArtistNames(artists []models.Artist) string { + if len(artists) == 0 { + return "Unknown Artist" + } + + names := make([]string, 0, len(artists)) + for _, artist := range artists { + if artist.Name != "" { + names = append(names, artist.Name) + } + } + + if len(names) == 0 { + return "Unknown Artist" + } + + return strings.Join(names, ", ") +} \ No newline at end of file diff --git a/cmd/gofi/cmd/root.go b/cmd/gofi/cmd/root.go new file mode 100644 index 0000000..27e5e20 --- /dev/null +++ b/cmd/gofi/cmd/root.go @@ -0,0 +1,120 @@ +package cmd + +import ( + "fmt" + "os" + "path/filepath" + "strings" + + "github.com/d-fi/GoFi/logger" + "github.com/rs/zerolog" + "github.com/spf13/cobra" +) + +var ( + downloadPath string + quality int + logLevel string +) + +// rootCmd represents the base command when called without any subcommands +var rootCmd = &cobra.Command{ + Use: "gofi", + Short: "GoFi is a music download tool for Deezer with Spotify integration", + Long: `GoFi is a music download tool written in Go that allows you to search +and download music from Deezer. It now supports Spotify integration for finding +tracks on Deezer using Spotify URLs. + +You can download tracks, albums, and playlists in different qualities.`, + PersistentPreRun: func(cmd *cobra.Command, args []string) { + // Set up logging + level, err := zerolog.ParseLevel(logLevel) + if err != nil { + fmt.Printf("Warning: Invalid log level '%s', defaulting to 'info'\n", logLevel) + level = zerolog.InfoLevel + } + logger.SetLogLevel(level) + + // Ensure download path exists + if downloadPath != "" { + err := os.MkdirAll(downloadPath, 0755) + if err != nil { + fmt.Printf("Error creating download directory: %v\n", err) + os.Exit(1) + } + + // Convert to absolute path + absPath, err := filepath.Abs(downloadPath) + if err != nil { + fmt.Printf("Error resolving download path: %v\n", err) + os.Exit(1) + } + downloadPath = absPath + } + }, +} + +// Execute adds all child commands to the root command and sets flags appropriately. +// This is called by main.main(). It only needs to happen once to the rootCmd. +func Execute() { + if err := rootCmd.Execute(); err != nil { + fmt.Println(err) + os.Exit(1) + } +} + +func init() { + // Load environment variables from .env file if it exists + loadEnvFile() + + // Persistent flags that are global across all commands + rootCmd.PersistentFlags().StringVarP(&downloadPath, "output", "o", "./downloads", "Directory to save downloaded files") + rootCmd.PersistentFlags().IntVarP(&quality, "quality", "q", 3, "Audio quality (1=128kbps MP3, 3=320kbps MP3, 9=FLAC)") + rootCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "Log level (debug, info, warn, error)") + + // Add subcommands + rootCmd.AddCommand(authCmd) + rootCmd.AddCommand(downloadCmd) +} + +// loadEnvFile loads environment variables from .env file +func loadEnvFile() { + // Try to open .env file + data, err := os.ReadFile(".env") + if err != nil { + // .env file doesn't exist or can't be read, which is fine + logger.Debug("No .env file found or unable to read it: %v", err) + return + } + + logger.Debug("Loading environment variables from .env file") + + // Parse and set environment variables + lines := strings.Split(string(data), "\n") + for _, line := range lines { + // Skip empty lines and comments + line = strings.TrimSpace(line) + if line == "" || strings.HasPrefix(line, "#") { + continue + } + + // Split key and value + parts := strings.SplitN(line, "=", 2) + if len(parts) != 2 { + // Skip lines that don't have a key=value format + continue + } + + key := strings.TrimSpace(parts[0]) + value := strings.TrimSpace(parts[1]) + + // Remove quotes if present + if len(value) > 1 && (value[0] == '"' || value[0] == '\'') && value[0] == value[len(value)-1] { + value = value[1 : len(value)-1] + } + + // Set environment variable + os.Setenv(key, value) + logger.Debug("Set environment variable: %s", key) + } +} \ No newline at end of file diff --git a/cmd/gofi/cmd/utils.go b/cmd/gofi/cmd/utils.go new file mode 100644 index 0000000..9176961 --- /dev/null +++ b/cmd/gofi/cmd/utils.go @@ -0,0 +1,39 @@ +package cmd + +import ( + "context" + "fmt" + "os" + + "github.com/d-fi/GoFi/internal/services/spotify" + "github.com/d-fi/GoFi/logger" + spotifyClient "github.com/zmb3/spotify/v2" +) + +// Helper function to get authenticated client (handles prompting for auth) +// Returns nil client if auth fails or is not configured. +func getAuthenticatedSpotifyClient(ctx context.Context) (*spotifyClient.Client, *spotify.AuthService) { + clientID := os.Getenv("SPOTIFY_CLIENT_ID") + clientSecret := os.Getenv("SPOTIFY_CLIENT_SECRET") + if clientID == "" || clientSecret == "" { + logger.Info("SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET environment variables not set. Spotify features disabled.") + return nil, nil + } + cfg := spotify.Config{ClientID: clientID, ClientSecret: clientSecret} + authService, err := spotify.NewAuthService(cfg) + if err != nil { + logger.Error("Error creating Spotify auth service: %v", err) + return nil, nil + } + + client, err := authService.GetClient(ctx) // Attempts to load token or refresh + if err != nil { + // This is not necessarily an error, just means we need to authenticate. + // Logged as Info level. The calling function decides if it's fatal. + logger.Info("Could not automatically retrieve Spotify token (may need initial auth): %v", err) + fmt.Println("Could not retrieve Spotify token. Please run 'gofi auth spotify' first.") + return nil, authService // Return authService even if client is nil + } + logger.Debug("Successfully obtained authenticated Spotify client.") + return client, authService +} \ No newline at end of file diff --git a/cmd/gofi/main.go b/cmd/gofi/main.go new file mode 100644 index 0000000..8897f45 --- /dev/null +++ b/cmd/gofi/main.go @@ -0,0 +1,7 @@ +package main + +import "github.com/d-fi/GoFi/cmd/gofi/cmd" + +func main() { + cmd.Execute() +} \ No newline at end of file diff --git a/logger/zerolog.go b/logger/zerolog.go index 00635d5..826dc8d 100644 --- a/logger/zerolog.go +++ b/logger/zerolog.go @@ -28,6 +28,11 @@ func init() { log.Logger = logger } +// SetLogLevel sets the log level +func SetLogLevel(level zerolog.Level) { + log.Logger = log.Logger.Level(level) +} + func Debug(msg string, args ...interface{}) { log.Debug().Msgf(msg, args...) } @@ -46,4 +51,4 @@ func Error(msg string, args ...interface{}) { func Fatal(msg string, args ...interface{}) { log.Fatal().Msgf(msg, args...) -} +} \ No newline at end of file diff --git a/request/client.go b/request/client.go index 6a09dae..f609f34 100644 --- a/request/client.go +++ b/request/client.go @@ -4,6 +4,7 @@ import ( "crypto/tls" "encoding/json" "fmt" + "os" "time" "github.com/d-fi/GoFi/logger" @@ -38,6 +39,18 @@ func init() { SetRetryCount(2). SetRetryWaitTime(2 * time.Second). SetRetryMaxWaitTime(5 * time.Second) + + // Attempt to auto-initialize from environment variable + arl := os.Getenv("DEEZER_ARL") + if arl != "" { + logger.Debug("Found DEEZER_ARL environment variable, auto-initializing...") + _, err := InitDeezerAPI(arl) + if err != nil { + logger.Error("Failed to auto-initialize Deezer API: %v", err) + } else { + logger.Debug("Successfully auto-initialized Deezer API with ARL from environment") + } + } } // InitDeezerAPI initializes the Deezer API and sets up a session refresh ticker @@ -45,9 +58,9 @@ func InitDeezerAPI(arl string) (string, error) { userArl = arl logger.Debug("Initializing Deezer API with ARL length: %d", len(arl)) - if len(arl) != 192 { + if len(arl) < 100 { logger.Debug("Invalid ARL length: %d", len(arl)) - return "", fmt.Errorf("invalid arl, length should be 192 characters; you have provided %d characters", len(arl)) + return "", fmt.Errorf("invalid arl, length should be long enough; you have provided %d characters", len(arl)) } resp, err := Client.R(). @@ -80,6 +93,10 @@ func InitDeezerAPI(arl string) (string, error) { sessionID = data.Results.Session Client.SetQueryParam("sid", sessionID) + + // Set Cookie header globally to ensure all requests include the ARL + Client.SetHeader("Cookie", "arl="+arl) + logger.Debug("Deezer API initialized successfully, session ID: %s", sessionID) // Start the session refresh ticker if not already running @@ -101,6 +118,16 @@ func InitDeezerAPI(arl string) (string, error) { return sessionID, nil } +// GetCurrentARL returns the ARL currently being used +func GetCurrentARL() string { + return userArl +} + +// IsInitialized returns whether the Deezer API has been initialized +func IsInitialized() bool { + return sessionID != "" && userArl != "" +} + // refreshSession refreshes the Deezer session using the ARL func refreshSession() (string, error) { logger.Debug("Refreshing Deezer session with ARL") @@ -133,4 +160,4 @@ func refreshSession() (string, error) { Client.SetQueryParam("sid", sessionID) logger.Debug("Session refreshed successfully, new session ID: %s", sessionID) return sessionID, nil -} +} \ No newline at end of file diff --git a/request/request.go b/request/request.go index dc1bcd0..e49126d 100644 --- a/request/request.go +++ b/request/request.go @@ -3,6 +3,7 @@ package request import ( "encoding/json" "fmt" + "os" "time" "github.com/d-fi/GoFi/logger" @@ -27,6 +28,20 @@ func checkResponse(data []byte) (json.RawMessage, error) { switch errVal := apiResponse.Error.(type) { case string: + if errVal == "NEED_API_AUTH_REQUIRED" || errVal == "NEED_API_AUTH" { + // Try to re-initialize with ARL if not already done + arl := os.Getenv("DEEZER_ARL") + if arl != "" && !IsInitialized() { + logger.Debug("Auth required, trying to initialize with ARL from environment...") + _, initErr := InitDeezerAPI(arl) + if initErr != nil { + logger.Error("Failed to initialize with ARL from environment: %v", initErr) + } else { + logger.Debug("Successfully initialized with ARL, retrying request") + return nil, fmt.Errorf("API auth initialized, please retry: %s", errVal) + } + } + } logger.Debug("API error: %s", errVal) return nil, fmt.Errorf("API error: %s", errVal) case map[string]interface{}: @@ -49,6 +64,9 @@ func Request(body map[string]interface{}, method string) ([]byte, error) { return cachedData, nil } + // Ensure ARL cookie is set + ensureAuth() + logger.Debug("Making request with method: %s", method) resp, err := Client.R(). SetBody(body). @@ -79,6 +97,9 @@ func RequestGet(method string, params map[string]interface{}) ([]byte, error) { return cachedData, nil } + // Ensure ARL cookie is set + ensureAuth() + queryParams := utils.ConvertToQueryParams(params) logger.Debug("Making GET request with method: %s", method) resp, err := Client.R(). @@ -109,6 +130,9 @@ func RequestPublicApi(slug string) ([]byte, error) { return cachedData, nil } + // Ensure ARL cookie is set for auth-required endpoints + ensureAuth() + logger.Debug("Making public API request: %s", slug) resp, err := Client.R().Get("https://api.deezer.com" + slug) if err != nil { @@ -130,3 +154,19 @@ func RequestPublicApi(slug string) ([]byte, error) { logger.Debug("Public API request successful, response cached") return results, nil } + +// ensureAuth makes sure the API is initialized with an ARL token if available +func ensureAuth() { + if !IsInitialized() { + arl := os.Getenv("DEEZER_ARL") + if arl != "" { + logger.Debug("Auto-initializing with ARL from environment...") + _, err := InitDeezerAPI(arl) + if err != nil { + logger.Error("Failed to auto-initialize: %v", err) + } else { + logger.Debug("Successfully auto-initialized with ARL") + } + } + } +} \ No newline at end of file From 352884a717735a9e58adbf16b17d449894833a28 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Tue, 6 May 2025 13:49:07 -0700 Subject: [PATCH 18/33] =?UTF-8?q?=F0=9F=93=9D=20docs(spotify):=20update=20?= =?UTF-8?q?CLAUDE.md=20with=20Spotify=20integration=20details?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add usage examples for Spotify features - Document Spotify OAuth authentication flow - Describe Spotify-to-Deezer matching process - Add information about environment variables - Document cover size settings for different quality levels --- CLAUDE.md | 70 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 22 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index d2619dd..b3a2a94 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,9 +9,12 @@ GoFi is a Go implementation of a music download tool, originally for Deezer but ## Build Commands ```bash -# Build the application +# Build the application (legacy CLI) make build +# Build the new CLI with Spotify support +go build -o gofi ./cmd/gofi + # Run tests make test @@ -22,6 +25,22 @@ make clean go test -v ./path/to/package -run TestName ``` +## Usage Examples + +```bash +# Authenticate with Spotify (required before using Spotify features) +./gofi auth spotify + +# Download a Spotify track and convert to FLAC +./gofi -q 9 download https://open.spotify.com/track/2YarjDYjBJuH63dUIh9OWv + +# Download a Spotify album to a specific directory +./gofi -o ~/Music/Downloads -q 3 download https://open.spotify.com/album/1DFixLWuPkv3KT3TnV35m3 + +# Download a Spotify playlist in FLAC quality to a specific directory +./gofi -o ~/Music/Playlists -q 9 download https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M +``` + ## Code Architecture ### Core Components @@ -29,9 +48,10 @@ go test -v ./path/to/package -run TestName 1. **API Clients**: Service-specific API clients for fetching music data - Deezer: `api/api.go` - Spotify: `internal/services/spotify/spotify.go` + - Service Matching: `api/spotify_deezer_match.go` matches content between services 2. **Authentication**: - - Deezer: Uses ARL token stored in configuration + - Deezer: Uses ARL token stored in configuration or from environment variable - Spotify: OAuth2 flow in `internal/services/spotify/auth.go` 3. **Download Engine**: `download/download.go` handles the actual download of music files @@ -44,36 +64,42 @@ go test -v ./path/to/package -run TestName - Album cover art: `metadata/album_cover.go` 5. **CLI Interface**: - - Legacy flag-based CLI: `cmd/main.go` - - New Cobra-based CLI: `cmd/gofi/cmd/` + - Legacy flag-based CLI: `cmd/main.go` (Deezer only) + - New Cobra-based CLI: `cmd/gofi/cmd/` (includes Spotify support) -### Data Flow +### Data Flow for Spotify Integration -1. User provides a URL or search query -2. URL parsing (`internal/utils/urlparser.go`) identifies service type and content ID -3. Service-specific API fetches metadata (track, album, artist, playlist info) -4. Download engine retrieves audio files with appropriate quality -5. Metadata is added to downloaded files -6. Files are saved according to configured path templates +1. User provides a Spotify URL +2. URL parsing (`internal/utils/urlparser.go`) identifies the content type (track, album, playlist) +3. Spotify API fetches metadata through OAuth2 authentication +4. The Spotify content is matched to equivalent Deezer content (`api/spotify_deezer_match.go`) +5. Deezer API is used to download the matched tracks +6. Metadata is added to downloaded files +7. Files are saved according to the format: ` - .` ## Configuration The application accepts configuration through: 1. Command-line flags -2. Environment variables +2. Environment variables in a `.env` file 3. JSON configuration file -Main configuration options: -- Authentication tokens for music services -- Download quality preferences -- Output path templates -- Concurrency settings +Main environment variables: +- `SPOTIFY_CLIENT_ID`: Spotify API client ID +- `SPOTIFY_CLIENT_SECRET`: Spotify API client secret +- `DEEZER_ARL`: Deezer authentication token + +## Important File Paths + +- **Spotify Authentication**: `~/.config/gofi/spotify_token.json` - Stores OAuth2 tokens +- **Environment Variables**: `.env` file in project root directory -## Feature Flags +## Cover Size Settings -- `fallbackQuality`: If true, falls back to lower quality when requested quality is unavailable -- `fallbackTrack`: If true, attempts to find alternative tracks when the requested track is unavailable -- `trackNumber`: If true, includes track numbers in filenames +When downloading music, ensure appropriate cover sizes are used based on quality: +- MP3 128kbps (quality=1): 500px +- MP3 320kbps (quality=3): 500px +- FLAC (quality=9): 1000px ## Testing @@ -94,4 +120,4 @@ Current test coverage focuses on: ## Current Development -The project is in the process of extending support beyond Deezer to include Spotify, with additional services planned. The `feat/spotify-integration` branch contains the latest work on Spotify integration. \ No newline at end of file +The project now includes full Spotify integration alongside Deezer support. Users can authenticate with Spotify, browse Spotify content, and download matched content from Deezer in high quality formats. \ No newline at end of file From ceb63065646f8ccc2d2e91f3902c74867edcfca9 Mon Sep 17 00:00:00 2001 From: itsbrex Date: Wed, 28 May 2025 13:30:03 -0700 Subject: [PATCH 19/33] chore: update .gitignore and add gofi binary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update .gitignore with additional patterns - Add compiled gofi binary - Update .DS_Store 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .DS_Store | Bin 6148 -> 6148 bytes .gitignore | 3 +++ gofi | Bin 0 -> 11065986 bytes 3 files changed, 3 insertions(+) create mode 100755 gofi diff --git a/.DS_Store b/.DS_Store index f4f9633ef00506ccacbf0d2729ab1ef0378e123f..5092db0ac16a6c6404a69a87de13b7fbe36396ce 100644 GIT binary patch delta 379 zcmZoMXfc=|#>B!ku~2NHo+2aH#(>?7iw&5W7`Z0%Flp9vFr+Z#Gn6yrG2{U0M23`< z;^ds9{QMjSAmBuoWGGH5FD^*R$xi~x?no-g$t*50Fu2CZ#LU9V#tsDB?6JWa`Q^bS zi6y1QPKia)AYKU2xFi@mF)1uFwLD%x#5q5&B(Xj-FSQ7)BQqrxs3s;nGcP5-+$p~_ zFQpi)IT#|r2?X&164lj4W+plc2DLg0)y9Tq<~j<7#wNzKwVWKH%KFwp@!2`KdHG!+ zw=*y>GD2tuUMLNtx`7O+*US+fXDEhw9i$J7*UN&7@^bR?(t)y!n~j*}GHqt(;O77a a?Pf*h@640=MI1SRI+;MWY>p6F!wdkj+g;cI delta 67 zcmZoMXfc=|#>B)qu~2NHo+2aL#(>?7jBJy6STr~1vd&`K*kHlDnVo~51E^%PAjfy+ V$^0UY91K9f$iTp|IYML&GXOqI4^{vG diff --git a/.gitignore b/.gitignore index c6e8442..9c03b37 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,7 @@ build/ # Go workspace file go.work +d-fi-core.txt +**/.claude/settings.local.json + .env \ No newline at end of file diff --git a/gofi b/gofi new file mode 100755 index 0000000000000000000000000000000000000000..e0e9c66ec1d98aae1743e1e912cf40daccbe7ddc GIT binary patch literal 11065986 zcmeFadwf*Yx$wXC%;W}9u*Ql4W^w_7TA@b-rdl&exQazv(%Nc&&6S%d2xtYtW*`BP zU}ZGtSfOnK2tw4BQmCftAzTbdY!8H<_8fb9n8}5U(MqW8$rLc}_gQ=InVsQMd*1VV z|2p}6c4lAJde*a^_1xFmYyZn%Kl(IPDMRt+;<$?Akv>X!l$SH5uH%@*QB-tq-o)|u zkN?^|a<})NuH5_91y=%RECq{-3deu5u=itKKX7O7o7Qy_cM~|=*3+V*N2f1(G*T@Jy!5j#nuWOb#EQ#BzMeSLpU{nr`Fr3iFBz?wLBxq#pDU zx;47KU>3FLWnT-uYi)DD!g;ym`Qhio^x|J!Hb$`-FuR*O#MPQBf3>ZZaNTXxt;3evdqBVkOs?hgZ6A zp^d!8SNJ4$qxd%qG`zt2STCLMLFFTii!V;Wv)daTyv;0d2BGWq1bysu4& zRZ`#8aAG&iUbGG#9=pYv$u%+#Pn1tDeQah?NonbV>ED%cy(qjX(GEGOqCv(8z-1I3 zA}d{qhd0GA@oT#ySy!H7d`5UP7L+^;z<7AK-1$A--|?qS1aG->iH7U=7l)tO-I?X3 zMGMOo%#Me*@Ropv_Z17k!dsqnfYPUN@GSb7Vs-(3jTXF=KZv$PY(Fc!hvt<@`FQ-^ z?Hkniog3d*9;VQ7Rz!y_0PY<$}LV z?vIoc;7)qMr6&FE$LetJBJwo)CrAsN0mpu<*59bq;pz>_+moPMxz{T7CGN{1fAU*m zo?i6-!Brd7-itiBl6zhb>Gg=m7A_d^(CpF?<%=IG=UV>c{#Xvd#rYR4OZjPw7d|@u z;al==q2BCLv(#s)w_y6hc@KT}7GHe5S%A2pJ+qM!ch4?eP_kh0hzTN2kI!2$XW@u~ zc?+gbnD^LR6zJ@Eb8pdtCQn9uWBP)H+*vpxFRl#m1;66IubpYr%N|=W`_aW0Z^3>F zO!*tkArftHdz_pjPyhGte<|?46!>2X{4WLm|Dr&Tcj7#+jvu^}$9>70S$OZm z-@N;~4=o-)>Ao-CKmV>LO2-yHKH{rmW{$c4D`UPj`H@BUe(m0`&s;oz;*1dwj=5*f zl&KHh{f$vGzj@D?2@8C;eX)GRL*pO)`WH&SIePT8xetD2-h&TLeQeZ2nSH!HQS{gL z^+$TjMs{v6l-yeEA!V*jo{~$N^>hCh}}(d zhg1;XCe7_Pg4p^rcd-%dW8KGd*UyRR^m8J#G+F73JU)B;_vGL=vra=RG=PkpP~(6lqhBt3d<^TTj(b@D@W4DMC)H&|of9QVCF zJuifS>AV+8QV|*7&OMB8l0R~a@r}Yy5cu$##cu(nc80;Vl>_%OP4LpN3QWGr@Tg!2 zyxZJHb2~gFatX$y3*DC`evS2D5Gn$^82<7@ISZDyKi0D$l7(K@Zpe8bH@~U zRF~krEZOhNU24n^Ut7CQ=q7DO@wVFfuf59TPYeGyE&Pu-@ZWYB{AHYMx_;I^w9$tx zRv((^!vXrx=IFyv`XGH?Zgjt1m#l(qZq;0&T%DWfQ`qh5MJqqF{KiV7W;#b9$G*7! zJZ1IgSC0NnPVPM(E^t_`l1JNP^55xGS;F5Qmwd)h+7LdK@sM#I$Gr~5S^Dcyp6bnv zaR>BSNxye9#x{LAyzi{r%ouM{?&=8^eJY_(AXNohp^xY*lRoYX=yN4>8O)K&u>|@& z5l5ptEgHQ6jkK6s|Ac?L+{TeySO3n*gN0^kQ63J>RFT$sDw3pLYROeeop)U?x-zNr z#sR9ZXIesc&(VZMJwNw!_uQJWNcwghc{xG9MV^O;7Vr4rJ|j4J_OP)hph4K3T%U7p z;`6H*%bpz7`#Xn4%(OwATsD zGGG>@0P}Vg*#o?rRdV$jqfhmkD^##bRqT*4{19B)D-7R<6IG7F71HTo<0`kK|%kPNkxEA5al=mM_brjt6ZSMMN>`UkYe?(wP`AzUmF1)ZWMHObN zgyyPbbp##RTy}27>N0^j%^%qfjE&o?*0s;{M`|hCsNtEq@^J^e)_eSs<%w!%+wFp{ zyR$7(6}C_DM}{a*^Jd^4cP9XMrG|Sv*B?2+Snh@gw*F@2x>L|E*Kl{109)=|4XsYx zsv;d@(3AH;cdeUKpi^@F{j?b#HAHN^L_d}y*}eQbvR@H7vV=&eY^X+JKh|WoZ!v19cRFLy;9zUt@9jYET~JqaZ6E4B6Ib_NsVlM} zb|~Bz+3W|MuU3)vP0H8tvgvz_Ycy?B7`blk2aT_W#+&>+_xlo@`q9(d9pJe$<)A5&tFAqWMe0-u!*rAR1MP>Lz35T>i)>n^dsYbyerGvpt2MWT{}9OGW;jXYu}2)Q(%e zlz}hhw1e^flx?qPgR9dYkp4ens9gh9!1t%~Jumda8+wb~|7f>K+mGXLEcrBs<7u8* zs@3}G?N9x`z<=K*@PGS%0RK!CXmE32i{|WshOT7);w%oi&Xa5WwJZ*7`5g4AJa5S0 z$mKeOj}q_a+T$@?kH_Gs?a3b*XnEJIYV8icT2*bRIyQ*STpuXc(*`4jHBRN%Rds{0q> z_u76jna?!o$H7chSb&}ueV)a6wsJLBVSAi5qNu;>nsUCUFhThnW~6?y7?W_-?R@+*s~_}z2}C}=0T;< z&qPy+_@tYSwu*M9<5 z8}_Yzgg^2OV;{oTXdR{^zv8}zQ+P)(!xL!vNZ??H!^8ZM58~h)=Q`|wvjjMTck#gd zi2Rm-zwn9*C}6=)=;JG(qpR5OEA2@djT}bY<$hllaojlcd%H`G2{X1Kd?EvR2{Xnb zE3MGrW!mvxr?#uRZwzK&#|{Wy;2*xpAKA}2&(^A&hX=#1KuaUnZ&E&lUlOK&A@C}| z*ZEI=wd@wSv>nceH-tCu`k<%KJ*#wV#dcy>e877sCqA<9*6I)8$5|y~cYk6&Zp1a_>QCFy$ImU7FyJOrAZvyGSK;=An~ASu&m} z*qr40U%0^AP-8+_*hFhAIvB6x^y$QIzwadD*Fk%B8&Xc%DTRh|uZ%Xz(o}W3+rOi{ zSo2I2mrVFk%1o!sX387~-j;IgvDHq0;C{`d>1maGdobLuV#flZsl_w%IEQBr+dMOe z>lu!*R@C2ez^K{G@e+r$HG{UAXzKv&m^4c0JoKMEy=YVl?>oz$1owk+xNkxSJPXY4 zbC|x8tA3L{|K5%b{I1pK?)o3=UjtgY@aI(hYOd2AzKH1LA^#lnJq~?p>SSBLr}Pos z7Srz`?MIIdj?7Ute+FLR5VgH#@5tbK()H&*zH{68GIiw32aOuZ-MslF_oEtCmE~!k&PA% zFZG2+CD2n~Y@n@-KyJ`Tw$7_KA7GuY;ylMXU&HxW>wGQeldSU^&cA7$|A6yZ*7*-P zUu2!valT4LGVnKb+vzS7hb;5Ac%Umnj-;3E6Z-z@ZKLK@kqO72P2b_f0-yF95Vak* zqo0<%k{&F(+Q04WLgJjO)i!K<+9SI{5x+kRKO zPH11YKG#RxwM$-3G~r!s!gHUfZYjI_CuhnYYC2Pp7&_BdkkB3CSvcuQ4fC4I!F)l( z+`gpkRuksS%Eoc~l76Gidq>TCA)b|>hXhY$!4y3$`cCi+S$GydpX>8_11(-}-5J5V zxUFA<)YeEAIavZ#ioXlD>r&Io1;>> z50xo@OMyXt4E>tTQKmfl-X@F(6OEA!j(@^W5WiILzLZb%b#RlslK3?5TR7VIO}@G} ze&PoRy!`&?RdR9l$d^0KRh`YT0=#E%977LoApRs*7Fo$5*BNpR-YYrYQ3;30FSV@b zt45cBcNK@-pSC_~wD=I7G!8-est2k9W`3@!5N}N`4|wd^aPxGmo)P zSA9A&@CTYw{m)HER6CoXK{I}#r^??wo?=x$8*TN5Mx@E+W7uv4t))N zP~?5VWri_evw!XFi_!tPz^5C3X#C{uf$L^LoS!=v= z$8nSm8ZxztW5!$AQxA+CIX8L5iSLA=TjH0Kr_M1FtM`&4lQyL-yWQnIJ-e7k(c>@r zs}=nfuEeJzhCdwFpXl>4o)ae>jC(G5ZD?9p zJZXEj4ucm@ps$A|s9nR2ghQvufd~xY#e8@%)1!8lT6{DFKH5y#cid{%1d9)cz=v{g z2=_jZY?oSmMA-(pKix%H;v{(X4a&Zu>yu}Y*k+^fQ?`H65Dwu9iB&dQd_;ZWBb{5b zWe(eMqf_>TN0u`lx!~(ZHhu;z?Xoui$g=>?@)?(W%5IG-ldZ@{5{t3UG^pov(B*FW zJD$F#)BZumA~DV1Ew*DBGyz^(WkUbaZg=u%=qTkHCXDpIA!TPF$L=)$8x>Yrw^z;+ zH7!~Cnx@N=E0D6u==WY_NBS4pWrs=|7VL@r{XQwb3f}KkKGpA&T(peS^%iU?HwoDW z-#2W0B_}DcCLpsDnJbYptcw&_x;^QW+Y^J8WWv%oo`i0|T4cjgD!Cci(|pb{qUY@M zIoZe^{JNF#6J0gauZ~QZHM3jVItcG2LBAf0CP}mAaBk8>^iD;w>PiNm@dNg3eXv*^ znK+>xA`gh+{!JULdNGgp6^B8 zI`QX+1OhDyuB~T8--xc-oa&h>y6Z0H4;B3_LGNTQQ%CZZ=aq};o~E~kPHnm)d1`i~ z;%HO${&h{>{p(~7uL*gQy7}lsyWTd&X~v+JrZ&BGT-QnL>DlSjV>YZ-%8fHps;j`E z3R<-%d71^Tz)wUcG^xh-(Wyt8`ZvB`?3qxlRNrRh81LA*O%0`@`pnXIjSgB!spxY{ z-(76}MdqvH{m+o(U9jct*zOMU0TQPsDNj&zcKqQEsEDUZMG}Z964&5sK!5QyB%XT| zyWU1zUXf!ocsz|QE4pC>ly5%DSTSsvvVeB8uaZg6rhcFL;XYF$Emm;MPumE5Wal zX9BZ?@d^>21hNg&kGF9qW)qyB7M#&*zjNSh#1;Wll+zk zId892!OBG$-5Kb8)qh`BY$%C141r~Y=(mZ|?W=;f&c25+6}8@z4m{e$bLE*bpF)Q}sR zSJh2T9dz^DH7Uh&SFPAO^@hRObNAnO^F8|~-aIe*%t)Uadp3+`!{%+M+A#GCgT65L zHR^3!v2E&|gNMw0hkEZ&FZzsnv1h}0Hf-MBs*O{p4!ULTuc>!vMg7$83?4eSiF!@c zi$0@X?Ab7$4V%|iwQ1_SK_ljVOufz(uT1^k;9+wQQ11ZsqR*%odp3+`!{*h|zkXJ| z4|IDmJfqL37kg&nxrhGUY|*7!w->`R`iy$9XC|Jl^zSPcUAAg^#_)_jqh9QpiDxDK zn`_bKT}{u}I7FXOFZRqF2XaD3LR~$(s#d-E6=3AL1;($x(ijReoCU^4B@bzw9XgvQ_?p-sP`wmVd=j{uQfyS?}_O zv;0pT<$r3GpVPbipZ7TWd(=_>s4MdO+tl{r2kvSRTcBySL^Uv6+g0PxpuYYu72*1@ z3S^kqXDz*7VCsDtBOhb*Lx=8kj`w8rxl`8^XUM#FS}>f=+@(J=xTDt0{|TI7z&T^V zvBx)_Us{PlCexowNxn(!VbL|cbAQg5{5=OAA3<{)-qU*hP7EG-r?->6-W!k? zVqNbIetajfZI5nbJ{o)ERq9a2{+gCOcfEEd<2S!Lv*F6n8CKRG3O~N4B|QK2GbJDW z;Y?m1?kzReJIAaQ+weQ)YMu8ofwLDlnZVfyoDAhU)C!zd;FJOw7FNC3%x_iNhu9LH1O8YgB8#S%uug!HC2L5S!y+JNLWB=ITvav=@&eP_4 z4qG2S^5YBVLE2uA>55DF`zfq>`n2EmQF^&pW0{#cU`&{~K^Jr?AV#TRO~bpy)D^5z zB=#sIR-BLA6jqe0`C;hInpXTue*_;t&Bbp%d4){qUP_#w1&x_QNE7_U-!=Kgq@6B9 zULzkGO1W{2PrIRZj-%anl{4C2yYa74J}~Q*09&5@OWb|AH{mjLyA`^%fjS1!C*Iib-qc{aw(ukv0|TGnN7=?^Zi|DCwBG3U!X zU{KH3F+VFbFCw?MoH1!-UdcTG9)~tn9@l!ChgU))|EE1W|5iWSiR+dZtDwYrmH2F7 z;8!Ts^)ULn4Sg;1v3_9ZF;?MWDpEksy^R>E^v^vnct1@V(@J@X6Z4e2Iz*f}i*}38 z|Lu02`ge?jU%wfre?xKkUKct^#w3H^41Srnjjrnu8^`m-`FH5&i!=DW$nys3HpJhz z?W2pn%6tjWqw6v3XC{1jmgf~b$0yY5J2Ie+l#gEnYv#)QZv*db<;}RkUfte4bqO+n{`90{3_S#-Z?q{dCH%s{CUa)x6~?McG2>- z{Z3)LoxX(l0@T-hR&4RU#H`?}>Ek+U*?^1q-ur$L(?2KU#?x+Za$I|&ud_LbPdn}Q zWF4pI*-Q?bufI*qt9kk&?QV9od)#XG|F%8Wj9;?7r!UhUd0gljvqxT++Ic;C?g@Tn z9s54?oUBI>p3wcVY(Rlq`fAQ|7pvUgI-iLwIImN_i>-*R;WKST2J@sD$;rXLj5cb1 zgdG!`imf;dDT5t9>}@Ob`aS&T`yBm{HGAmSXui#+UyAncV*T;c55>6rPxt9Jk6pS? zd+5`wxIS&aM4vL_`t<8KelW);_I}3tFR9bTl@-1a`R{aDR{*WKcewb?T%YKD$*s$8 zviuTb4!r`}GS9G_dijBYK|gsMFFHD%JWgM7x_X=({?YYPo?MYxet4`rdE5B%64RX7 zWz=B*V*a(3m)`i6E(9KSv&}tw$CBi|>q?(>tzWLxE@#_y@Pm3QE0~cSXvzDLQFHU_ z=DJ5|H7YVv%0uT-O5{ju{07alEA#a(-@!0uraB(`d;Rle3*zt6SG z@JX3G%E-DlvCRcvQZ=pE27HQ0c#ONbj+k2cuM6&~x9*SfM}*ep`zn0Eb)Ty%SleQn`7&aP9J63lY+RobxY2wvmj%G-TAM&ES5sN3pxneisDaM~v+5Lmd5&|u6AwOKNRs9o!2G?&mr_pEaZsToN|oh6=x_w#iyQwdxA)Ke=O|+{Y&>;l5Yau}#X+Yp$-5`}j+* za6dFa{LpO5FWu2k?lWeaO*m`S8`o+0DRLj0Y4|t5=f!=v@899({-^s@%^x^sfzw%j zL#*{fFEy-smGP2wU9{8Mmgj53zf-ISX!NMjUiw>1f4%e<8ym@Yt1;xSwiizu9|@t) zdwN{kqSx?E2>uaWmoDoL zF;jsngT>Ib7`mGJ$@J-+=ZZhu-pod~IPItHN!p$)l6kQk7$-%npV7=M*5Jn9Sn^akiB@IeGjdL z%b%?`WWDHVHtY%RVZG>UT#Fn#efe?d8qpVG8)dDj)29@=pck1(>Midw?)INO{=;vQ z@xLw_pB6KA`K%dr5Arv-UFtSBD8 zF?lYO3(X6lLzc^@X;tfwlmScTM8wuepXB(u-|UOT;%^=A44ADZsa%{r+5$zK@&~9y~X2)q3o*lo@K6<6)OO4y?pT(iqVVqN|5o%lOf* z`1mqjlUQRG&dT>?uuj$<1JR2G14O^|9>a6U^j8jIOWF!V-p4t5Lukbv$= zhrZ~6Ncv&rOUhB2X42j)+B*rIZw9{Thl6$00rtU3`~thNj`5jf;wEKRQ8t-=51@Pw zjFH<2}K+zkIGXIh2im(8#)B#)9}@M_W>b z=HDaehYo1Ag}#a%ly%Y@(8ofLQrgBB9kr2X$KEt`&~9k3Te*F%-}p_rqf8}bHbJA` zQbzP*>oMiq4V_pYq4N+Q!Bee_Z?SSU%X;=v|Ab7^R_ienhUn*Iz>qb#?*JnM80qw7 z0lX2SOdad+;ExQR!E;f6NBHzb(FM@VscYbswN3sn2ak_{zPF05PpFr++RBVzJMU@v z(S`AKT4|pgM+17~HuUddbvRA0ga0b@E_Ui@l@)yCMXjSxtE$0zjp`)IIA!NiaEh-} zMja_*>+RMu){4VJ;&=UKM@)aWvSvWm^{uzoQj3nZ_4Ctl`Qp4J-fKsHc+rmn`x~@t z+VL0J{4T!+ zWyje(fUJsLmG=t0jF;rIOZojPIaWV$wfHk)pMiBaYU6<+Hhv5+!kh~)x!_H)@v^>J z>{sS*lrIxJTG2Ps&-d=M=tX%ix<|i@!}tk*py$@+2i!r)(b;P-L-@Et_v@jBrcZ%o zlei~ym(h3Xz*olO5$AYVYhK#H-CnO}({HvOkJ$W69`@JImK zUpx+(8;{Iw=xVRnv}KFXx{4 zweo(+LG-9@*YcU7GK3zL_C0aq6#{?Tx9KH6m%t|*eA>ZBVmra56`eHEiHEG`0GBO) z1CLhT3l1^<;)h92r`5v4rpIKj&?A=rSLuxP7;CHW}G9h|G>Qok*b=!IV1)htY*K7K(K!)j;%*Bj@AH48`(D{?$TAmM! zy(mSVTj`s~v-}oNR@R@0T_6Wf?!e?{$%hNva$t;uN2T2lzHIfEXCjBDuPI}S-$lK0 zXt~~!ckziP{IzG)mo3;Uk#X?@cDpu{NKd)TCRPsggM9YtAy@yf4%m*66Ros3YS}cmptE(AMCcu$h&#v_*`}L z?Q&z~rM!$&K_BgNYP_q!TgK~S=CTFv3dTTaUM@K&^pntijZJrS(r2Oj@v}XnjsZ`` z)TXnd27SR^=emgsl zNgT(!L|MU^FKE9ZcF&&`EajfYkM=}w{Z`sUUvxWcy;EOZ&c4h$bfJCO2t22Knanx> z=Xwt2C?Xr+BZJ)A2Kp)XS?tTf3E%-QiTxqZ&=t*(SDJd>@EgGl>sgqX58K{i(xSH= zkoKiN@%lGD9wjE|m3xYRj;!IIS#h$JpAx#*f3`kN87cjXz5i5)9EB#Lv!*bvWiFqa ze(sZg;(t6VeVoWxPC=iQ<@?Zk`n@OdJxId5VBgnqC*{gy@0&+>7wO!wRb?(U>J`e= z5u1gm-w4cB%CNp1eJbl2UG=rR(U zFllPzCG&&YH^7c+UV=_z(`XxfbUchcKTSJg$Ff-09_3SP*srDBCGekj3HznJfmhdvhHC6D&-1CMa6>7!{x-=CGf>+$JL`!Kwa=Zt+R zTcyihI8NtoRgq`N`|0?Xc&G$EaKyjbW=)6w9rR7?#Y)yq$oa+MUOTSsz=wU)VIyZy z|2Tb={gb4=#I;-MOj{{-FOmL<{*^LA(Mw6_T8Womp2RP%NkRvF6S$Jkkl6PCc5#?xb0v12gzhi4o=XfX@wCLgC#jc1y9X(sBkf{$L)34~ zj>f*ajbYSJqTUn>hL`#WytDxf-4-w;_HD#wOI^{y2ar>6LrxRxKN=6spvjiFnD_uO zG38I|n3yqY?OU;070`=nZQBm4TKI)U#9r-BAUXYKXt=)``m5(|c%|}u8 z57ZT#o`_u*|0{iI!lm+2+y7tWqY{qw@Scyv>t6~U#}}6OjJq8sNu zOW)vofzfd_ejCp-@e|EC`h@zKJa6N9Iq-B21zp%Hhr)F+&x*;VIPsADfyhEJ{2PFO zy}-N|9ud8hi|_gO#_{8+EATU@|F`1!_rGL~7v(P+$2Ynz8pr1_Cfa`fjX3^$l#B91 zKWGo#B#vK;FK7D_@@xAOm-Dx-Cby;AwEPj_w+X;^`dhQ(=8GjBa*=y;J9L?j4bWv# zyNt~{`8m@zY511UWyiSE&fSiF$o!m*@8r1rgUm}xu0Qp!mtH60bHEax*4ckkK4SR@ z6Q1}tVwc_Z8!xl=JIeuA-f_AZeTVDy8L|0vcudEU%jEt0dxwjUxk~1-UE&wOi+aD6 zYgL2zSLx#zOU91*q6R60uHCr-TN%xVSaeg^$6j=_{V@k!g{J@Yn#miozYzSty?9fF zFQDfw^csY<#RqbI_8K3X-cRfI?PKw~#O`|TvjCZ&h|h`KOO8gy_Biu`fArDD7;r}B zCBN844zeA)O?zu4)*O#NDKX`7_~a>YIMJ9Glo;r^6?dK_u9SBMegNWLxc)q5hxuw}1e%M!QW6T!#WmALbs$OLG(*wU?HhyMb; zOPE70{(XJ~zfR-bhK#j?pX|qYoIaeO4=3pZFG-oP4EXEu19$Ja+Epg)FP~rgfkk^e zPh!jE7K?9s#RJ2jahCW!CSBX1>kq&)j7^sH4MIyxFSC?PN{0qskL?ex;`MLO6Ru~ULME28PKaK z^!ecaMc(fArGXaW_vRDq%O>wuCU-q~H0k_Ps~c64-oI=d`C!&#CY$b-ZZe(>w7kGt9N|M-zPl>T{f6Gv zbG)CA&hdrrV?G0#oq~TQb{PPTgr`qUQIWpbrH|;-R>NriqdU2IBK!HQrcZaB|NiQs z?3btYLzXMbA0c;NJ>SOOhc&0*`46z+cP*aXoyYrkr|uJ5l~OPKm;yiMs+7*v=&xL8 zxsmk(DXfRQadAoa6vL>l*wC+QD{EeF7MdGxf^r-PxN98&*POw@C3fxN#2zcoCXNK;FtTe zej3LVWaAV*@hRllY$L(Zh7ml4tmrnd-@V#sbI1yE<7}g+N11Kx>SyUED?VgT!7y|y zV7%nl#n_GHTy(CC;}B~c#U6;>dRNvOAe+?=9c$~ScjMN-NuEP^K#pQ~S%q#2zSdvo z{wHC^D;-yx}#R&=d-(XKh~Bs zSNKXqZ)4k^_=S|S+O}jtXttDgPdM6iu5l0=EeGHHV&+5LtS?2rB_~vg9W7#h^l5Oa zgx+#4?-2J?7~8;^wNyibf>S8V2vzBC3Lp-+le@*OdMQ|5m}H;RvzFFr3hcwr{q7N7;X4 zy@2?4;IdY2{Zi0Nyr^-3XT|0TUr3)^o^S*Vy#MmA_iq!u6az?B_}B47l`UBlwg~QXiqVk|OPizETa3QCvID*% z@P73&{aq&gwc1YrPPES>=`;OkWd9UrpEq!=+XW~0O0!+rW5q@JqL7;J$Je+U94^)0 zXnW7BY)Keu_IHoaK-&8^>Vvnly$tDx^z(|RTCylF{anWTvbsI`)=0cOQu;hrb?xE& zQtfVV^z)q=W12^xLt2z;@$<6wp>WJX{Pe<>a0474$vrt5QyEuqwalg7!t14M(q>i^~@~bpoDu!#Q#+%V;~ZJij3y8!9rK zS?+3(d#&z4df(~HSIsiZ=8;cC#bh*&Wvw7S0QxG7>=V00>^aoXG;|tz#@1~I>&f%U zIxclba5Lv2>KM%3L!XAsVpoIcXKB+*8}gg?kcyOjh;F7_`e~QXscTSgQT?_}zfTnN zuSKVgr%ng@$kufe(C^13XGHraymtgopua=dAJeZ(uYczx?Vtz!ndIZyqx>3j^BweC za$=$fWnM{gbTW2g+x`)n%emx!TE3KZuzgl|IMD%DU64J0m?zE@f_@IZqijxfGf9yE|=e&!}LEh-y9xX z29MlIo=M8cn7;~*Uw7Cq+aAnD&YZro9``ANgXBONN5)h7Z0EU_^XyynMfxh^oJ&8h z!2b_JQ)z1%zMvjg{~f^*w5f4(*wK3Kg~7va|LHh?qla|Ktxpi&( z83Ex*Y@@y3j*V{$s7%Qx5Gc!Z^XnqB9X6SKIgb>A)BYUlf%_asjz@}v3o zt($^-;M*1KUo5<2(@=ak;BAtvtA4F!w zhY~+f+AXGC!5yDRufzQ^YYR*sFnP{-ZqMc1AvA!dG6p`*o&C4hmIxi*-)8cqGwyxc zqDNPOOYa9e{2EpGNrC6ckN%pwt=6T2=d*aH|5?$|dd_ZF20r&j_8QH9Z)gymmL|Sg z`D}EUj4wRZIuYK5&)md5qJ#cFdB*($_^PZwJa{{OyGQ!xuK$MpOmgI`;|)Xq&=kc! z%&uO0GAL@*ynGM5TEV!1m!>5+{L^r7AH#FX6rpD`@JsCd zOJyD_Or5ts>Ukj`@;kyG2{GpA-?T9O_0r#b`WJ?uuwN0OLB6JmtNsq@H@qP40&PI9 zwCqgtN9uv)mHk3xEP>SuOgC$9%e=P{<1X3pDfq~|PTcduWsNz(cJ}xD3(rmY@Mu3e zo{rwj&@l`RLz;e1+VneJwUxcYp`WG^G;F^IT0qBa83*XNA3msB>4gRy2fUo6~HvY7=w`@A&Md`1d3$**!Rq599nv#RORwne4S90)2YqM3?#-Zr! zj}2dVJ>&5LJ`j7Tk7tjI&1z6^hDxa3%-%0e@M$KwD`j;5q89&kV>Wpu%2cWAgEN(< zdIe>UQ|35h+VL{7`6t%4JN8Sh7X5^5_P`e*p4s#iIzIuwwY|(3f1Ky*cmWve$=_A@ zHE%3SWp7Q&pQN1F1j#A&U<;lh_L=Neg|lZBkNtq$NYOtMOQ2Kb8w|NBxpO%>GX(FQ znqv4QFDtgE4O?A>KCaUGIJrLi#f!IlYD%6@c*~sEKwm9kjVw8($+K=88xkI}a7YT987kDao?DZ;=O8!VG3bNOCIC35-d zi!ZjUd9mTlniv0_BXZ^oPrkSQwetl>f0A-V_3(r%n=8J`e&6g%bSrJh`CfEys?oQ3 z%~w@$IB-7#?l#~)4Lxq*{>Sbso9CQ=cJ(Vp-|AeI+9~71UVo84qPIG0MIYI`a%Fvt zS5oU=gf1s5{gm-j)*t!M!5^)!sK|%a*pFxN=lMp5^HKEN@ z&}I{~dHl1{=E=`U8;^rFsSetta2_Tvnq>VZ=x0x|u0_?m^tq>Ae2^a2`lLJjyjGcm zooUX)*1hb|rLvxRrr-B-N6c#b4GyZ56dk2&St`9C* zRI0x;_p5FI)3|2jQty`riOF;+BCE5Rl01+=XKe|p#rt| zAt_tnU;JCjKF#^gXxV(TwmyMHv(B>yb9SL?DHcz=Sj4WV0A z!#AYtt^S5a$}Z&m$I-Ia>#~yPqU?F%)APh<=kYtwPnJ6Aa_&F>9QCGiy*66!N?mUm z?}d7aNzuE$FH89)0pBso-p~1pXxZy@*$i@CwDC5!_HEjDoA|o9( zMavG-WtWlLqU?G4eE!dp10Lo-|1#x1$MNN8*(-F}3}Oy}3vD95U?1JvqR+1}pQGn= zyCd*b1QtHv-L%`o`Hj)CgLT|-Xmov1{Rl5_CGn7`9;dt$lAzXa$SdyrWR%K z&Z&RL`;_@t?r9&?ZOt#>yV!ozFSo?xGTq^`i9B`{nDaxYZWfvB{XL2>{&NW5^R5}x z&jnsOwBb6Rck0P69Vz-Y`(WY+x%nPjDoC!;>4_WGf^`kggFA6MZd#&7ezei?(cI5bTy{x9Z(Z2lS$2P;irP4h1ned*+hE4iNnte0c3v>tDFz)FaN zWe6;E{KPm|XSx0h^=e|Ubgt)!1J)U-W+rzWBsC$15p4PiBIN-ez z2XCjqLnjMAIbr>T``f5DF$PQ9DAD7F*e>u~=776V;DDEb{StUhzb%YRc&G*=oLPzLIO*KDtNpFS7TB&a+rP>QMCXx2Uh{ zY&YvHrp}|>lRTZsApS<=Ub~E??;a6cEM2JiTX^CPv;J&(M(#oQtCV_XKH)-LK5=tQ zm#=mBR(5GL%=r8i ze%~kiddKG>w?8s%9rL8us9ieGK_0?6u0LR{5#PXLJ+g;9h3wUC#x7yWv1Pe}bwi;2 zO!|0VtgkNOM(L|TUt8&G=2hLVlYczYexKwTjZSiJh2z;Xp1H2hRP4L7Tf#h3#t*ZD znTh0LW|H>>?rm#~noZ0}O8z&QUwwa8$)aJ(U41ZNMawajJST&=?07QYH`=P^@8O*- z+Kq%CAkV2>&FrIoMDj@B+PvZ1veg;X3(w)2F_E175b*2(&)=Og$0WqN`UZHl7MWv$ zebl(+k@w12)Hm2Rhx`Hk-%Gta!S4$2%fdHHr%wm*yX5)wS;dQnzO$lbw@TEwwU@C5 z5q{{P?=P{pLlt|W%Xg@T@GZaT==cfs_Eqy->xqQ=_b98^w8BpfoXh)VuS@++R(;;z z)b;73@Jl=Oe@=awe>Y*c>XUAkdhnm6dkW!sk%RFs88zcB%Kzr~Jx}R1YgfhA`#>*| zYsuS?7bnyh5Ui>Jmx<7&f*i5r%xR~UGLj<}It-9~KgpLrgFaDN=!U@Og1J{RZ$ug7 znSB*FLMph#dIz~w=GP|bIk&Vuti6!)Ot;c|FOX}B$olzK*59~Ti)!>&kss#J{uJ=K zhx^mO1G$nsa|e8U9Ns=LllA9w$T`6eAHW}fW=`spg5Ejm$rcZV7y2XN0>%>EM69E8 zxNWyGzXks7yt|_H%09QwkHlnOuMg7SRO|IT30$D@hnv7JiTtodXFGm9rPor$^eg>8 zT-;gVt0RZ3&p)p4`6ZvcVogikdp|i7dgoVX>c0QcnGhe!4Y2P7Iq}7UgXHm@`p(N3 zq^FwS0|{l(7uLK9t;73N_cP>pLIVR0e79!|wk+~za0;cfP9qy#!1#pTWNr<-Wv#mC z;I0v7`GDIjpQ{u*?e-MP+^4fm=Gq#z{2W~`dru7bVz2~xZxX$Hd!S*Q{K}m4sB82) z(T$eAzLVb}J5|ja)Z_VfmF?5t0rJ4R&vVZ!^XNMV1oPOp;^$VKFY-$pYgNt{gBi5( z8rNRr?IwOd2dvF;uteU7IT|XsACP*dM+WoQSE<&5H<(}S?_qV)+y_SdflzLs;aYw_ zrA{yo-XDM`wnWDDyNs*smmz#xwy=QrIgCTg*$1MC{iOC02P%#ta&_LBERYy zj(#j^&{p zji=sb^d)84OTn+#-wg`B>&4V7{JDy_K%x@`)K9SsZ$K>TLo1cB-OvnCr&%E=qwlf>q&sFF${qX|c zOG-GD!FMgP*-JBH>Av;Lpi>rmyJjriyS|unsV`;ADGN@b^AE}T_aW5VvedKwrKS7V z=lgrpVh?2$bDu)f9PF9kxP>yC<7g&yYSJ*p_mci6*2^AU(%uZ(li!(3%->lR1+2g2 zy#^!kPzvo2H;h9!KAE_F=#x$BWu4wIBk52I^CZI!&!L;1Oj8K0zeMNIsOp zdV2X5$jwhCug`h%;QIW=-uUJL(;l;O;MnIYsH+<32Rtzgf2N8)3w`W&p~W8&97`=+ zh0hqH2EKuy%L&gFu$PX|QqD^mhmDLwE90=2agb+u?6V_uw%c^hMO*?t-~G5a{MJc- zKm1;E=C1Bv$Qn*qP4qqQ@mKhmL*pCUGLI1MmTzH89$jCvx0YPHti8CjzG0qS@XzFX z3vKQvcJOWU<^smNi20JTy4rQw=z`_jm#?d+L++3{-IiCkwf(=_RzBYn#^3B}zt+Da ze`M9V%$&V^H;27Olik%t0asVP-A<~jnm+xv+mRf%k;eXBtkIFNlChCL+g@zLpL4F& zk+lF>@GJAq+smh5_tEuoKAqf3$JOTfjA{5i*Xs9xyGqbGS@3Zi>-)mDVk^n{WMWUf zdY$Ay1n*BJFQLc8+&@X|o{UAP-q7p)t@;VWfLt9vff0+8&Ztf#H^3IU#(^ZaqZA7Qkl83E>er@UCGZ47?8-M0LX>*@r&I3Cv zbMuw>36-=daP57Pere&g92#T-H$Yzm2hoQz?k;#NpZ89sty+cdWge)Uvdbwa>v}!( zZ93O4Ez0bcIi+02vJd(>6Z`4md+SxyEupUL6Dr?i5&c-owdAZk@RalUyU?~6SRP>Y zvWvhS$9T%v=IdW`o{Lnd(z6V9oBs{?{AHlUla;d1&_wi)L=d0YCIeHgf>XX*Y;YZFhTaWDmmC9pED4zEb8-!E-pKrnKUXDnh8gn%jJJH7b{XgLexdYHd@iRBwa3R?e-`uSD&gI- z(}9M9Bz4>G$KWIMjMscGJh$as{?R5+Vs$P1@3`?3M3&o-(@otKN6Uz(ido-pu08kf zcw`}bfo!)SXTrZ#l%Wria<^JrrG^A$Jr8pNkq~3B*n?k%2`##@BbZ#R!snCeve>_5bL7lx^=X0HRuJ)jfugH`5^Wr;@ljs#!><5*oI0}GOHLY^werqre&D9y1B<5X`J)wHBPh9< z70L+qm*0>Iij1uA8^KihEjIKX+HzlHPku#*%5&+@iblQ1jD9C)3+rixMq5-O`(@&v zc;Pkn%9};bLFWew+`bbN(X+P`%ZwqG5uGhO!uPP+(C^8`DtMAO=M?<-0f&6|O>jZa z1wUl$PY^eKfbKNs%Tw$1dos79v&W#b(d8!}U~W*xb|(C8xH|iwUp@qfTqCu!m9^5R z;Hyqzst-gr^X^~keXLDQO{vc29gg;!RHQ`5mr3=-KZHNwU)iIs?LL2`WY)$vLbQEI zVvT96IrvX<1rnbPgGZ;~FO?XQo7@$qjF)wgAM#wUp(+3d_=%lq$F2zOGG`)dZSdI} zLOk1C46hFKN2GphL4mK0K1lvX&Ns3S!nO}(#E|k#Xg`wmA71Q_T$e8@>DKm(ya4RLniuSo9wtw>ovC->vez&1|t}{J%(SX0NNrqf^(7K>AZ`4#$FDgS9$+F z)$$(a_>YzzEt$3X4blHAEqdtw2<@nM6||FeLNXs&3_nZTdR`tnZGkSW!%X{QKT8mL zNDPm?|9-pqT1P{whmf&8LIcio z(GeH4LH{134PEw6>>Exy{|ue<+9~jI(kJBZ!@3Ml{nN76Mt?s!wSFb%ZSF^Qyu`2Y zxwdr$<{a;^I?5$MzXHE+05Fx~&(^2!#^oOch8)G{Fjedh_CeQW_{f13577Hdz!N(& zk)sS`+D*UgcX#ByhHyV~TxHA^<47Fa`31>U!Q%ysio46-g6Gh&WsQt4GA8fLT}|2e zHlLwQr+x204g=_hicjHTcy@^J$Uyql559nBL}!biv>W=qf(?=Nuc8l6kP~UL`fc|& z1^>ip-$kd3T(lxLMXKqvDK z%(Rt8%>vdaNqNbow1Ha|x><0`CeD|4Ic;CWUeol?;As0JtOvSaJ*>HYH}<}#jcb7S ztK5u%=qMZSeV4);nq3a>A>cjEi8tlr@s_pQ@?L8^{@;(oza@^|@1o!1>22ftf&*Ve z=nTCsM%VKzjG8pTkLN3^+|dzKtp{+CSyX@9Dt|7{K&K3n_pE@Z6zd#v__Z%V;W^xhef^~ z%im~!IC&8#{oU;SU!gqn_o4@lJDxn6KbpPRlq;A=3@Cakv`{T3zF8~Zagx1r#XlVm zUTq8gi;?%mLL13PIQ>y*wpeJB&|LmZ5*$ z_{3GfdJ0$_)WughbYST_>$faTT;HUU4y~Z9_@u{_=fP#@FWE1w6+RU_C*Uupqp!71 z#^>CJ-O+PLGEU%q=UnK5e&o51nUS;6VcHTMb(V4TpF4Z7!foh1VKp7BXAh7UkozU@ ziJ#nn>|HAR#zuM3ZO;3M%{6V*XS+uBdFP{F@CV8G(BL3;Lxbn4jGC)ivy_4ScU$srubFsQ#y$yoA*Ney$)GKN!{g$4k$d8nVAd7gueYd(Lg*`deTtn+$YY-&{OJm%x|ky`JW1Kjz#7jt zEl&VXa0=hbxQGvlei6IUCUFLJ%E+U%lSknj-p%53R}rU4JXT2@CU#KXNs{BzV9%^qQ`&NLn%=^gR=SBUE&MbII^p^Nhf^)uK z1&P0o>;~tLzy)Ie%$(y++b+^!`cR1h898xJZd<(ce z)jy$n72nm(ffts~8rmJk{|RFcowi!OfnCBl9i)Du;a*L=*_lcGgVcYze`59OS+lxt zr2YiP{i#_w-9rSVI?c?l7TwcdDne3?5-^6z|eAcIbh2#zgdj*gT0ZVD{hQbnA2L_WzGS*Qb?vh2Sqm;YWI8%T`n4N9 z@*#R;1!cA%`@_&96VW3x(IdmqBglU9EcD1K^hgeRWEOhlU3ABd^{&7&lA2FaHii6YGI`WwBjwNm%5H%N(v8Fi8Mnd?d>+XO>DZQW zlR2+1#q`Pca`ef5(I@b;*1h!i#)qLjJchikEhVq$LZ65(Y2(>hc(GXP6IW+DxAGL%D-z9&_*udj-QU zv3vq~U%fX=_LbeQukd)PkMqr`1ERODP`i?lH+diZlsl<8_lkthHmxH(%t4zvVpvJ+ zJt5H%l&e1hyot!1!=NX2)<8SDFD)*o-L@xHA<9q83PyIC3zB%0fKR&p4YlT;88?*Z=#IMolB%q1R*1GxgRZN7W?% z4h4;sgT@js6JHlPdErKIlzI}E43l%2M_rU04D)@XiP8`H{|DZ&e3fUp9F0PU4>N*! ztaYfSKZ-RXD(%MLGV+H{Ir=AkOSk$a`@7oqQ|3;c{3T0GAMQX%6hU_EV7CP@4+gze>mU+e_x~tuqhb>m$y{ zXslhQWtsY7$0R=_c3+Q!Wq%}}q2<*oQ;rObqumwCzeDFCXypuOZa(pgv3hqzU8N3yQqonh!I`1Tm%6yhB=xu@4V za8G}entm;!Urv0-Lx+{!70+!MWklp0U-iF@=Stq)lm3>UPZ}e+sh9pMiLG7&&;1-a zJ82?)k@*35ly$@AI)o3F$7D))X1V0&(7TUP&Xy(l{qOMKJPVeS|58}L?v%%K$c^Z$ zB9H2l{CqFJ1^SAQC%Vh+&|TVZv7R|~n0yyWcuxElXfgUa#>}t;lx)qqElr7^r%jh1niCD_tp6@FLC+|yv=lr(Kwe5`PzSHLZ_<^`_8eq{jem%`> zoj;514<@t~n#%r8ZM4%yU*hR0vLyGNG;q?g9a?TAuP9^Gi2jq9aw+{c`PtGr!c+Zk z59YCF%Gcv?{fKpf!c!Oh-n{0An7z~b2wPn1c6Tl#7tcD@2;VA!=C1nR{}cR-Ol3kt z@#n>NeE_WnG5Id4VP8GLF(mx&MH+d8VuvIL3K8esUIYCH^Zf^!UVw zC_6h|a>WuK>=Jo8M*Fh=RlfKU&?0IJEIX-n|0m|YG-=R4bb<3s+5#tG=m)p|oZXFw#Jds{+@&tR)Fz&Wa7x{XLJ*b!QzNO?U zWITj_3QW3fFQq?1qs;y$-GcOUK6I0@lswLBLrs2={0(bitHpN8oQ=z(>juqZy}uc# zX*+hf{vOra^j*h0;-AsJ$dqH;wnxVeo^?ZOH?)@A{=>jExHh z!CBFMfI4D7WgMPm9K^4YeK~UJTZN4`?Ru4JPA6`EkM$}#hN7I%Oz4qel^6Tq9QSdI z<#e7&Y%6P6_n_}&9GrWm3*U}+*e8K0d3Yz^j(6Co8OWySb!R)Z@MZ?E!?eE#yoGm1 z(pTP(9dkMS{Nk(Dj1A_ombM%k>+9kn!3?g8h31#(o0En%{c@q7&FlSXKlEwOn2#;H z6169B{<~BDH(+l?-%37M%l|)`I#=?pcKknqJ*9QuEuE=lWUICRheJl}T+|`nYqjGF zvDeD_v+>!c@wvD@@`}y3cv$dx9eff+&XH3y7is1sGQcTxO!?-?vt#x?wPx&GC;stU z?qCKo-1j2*ZFJ!Gdk21s`2^WB&kqiDtN}kehWP&3JUwUj3Va<9xH+bOE%Uzmd39dI zO)TKD8Vwjy8j?10or$D-$~&YGw##%SqIuoS!8*~RlwBwS9GH5+uuBzukPQ`ivIB$ZMx~qfoZOU}~a-~i` zS3=%2!+VYF>v+&9qsZ22#XI|ZkgcZ!MvcUHnnp`3IxI1DYPomsI=Md`x)hOHj@Q+mWq0&N{6| zW$L)(IvWP#`kgo!pX1pTCXBVJ+my3!0pnyGjARFluK+_yf4@C2xPdsw;91E1=#C2R zYd&l=-`hCL^OX7THU-Oe>@ z{d>W_3D_Zt*S4E>Wf<3WB1g)jIeCQ0Nbmh1TZabpGE~)_No0+~iJAT#C$M<}H(WF0IeCYqh;jvP>)*|7N0-v6vy3ZeZow{;guQRxvTq&_^)4BVP zp5U3x9i7a@MqQCot@TV3v6-uuobz$k6`iC`4)2MxCh5qrS(7?Xl6#eJ zK%MpbgR}bOMONVp3GO0ahQF>w*3T8F<$S*`@PC*)7x<{JGVh<6$+e{mwKrOj%p{?d zwpwZ_5UFM|!=)G9x?8;BE=eYVP^z`ocS|ibfdop4yJjf6wXjNnhL%{@h;(b-`Yuqe zHEMzE#Z`Bi+z1qXh1ypc3+Da)&j0^U{uzR$?!F)2d_MWi%>QzpbDs0u&vTx$R(k4P zy6DfbTgcg9oa%@A zb`%*ALw<}4u!r!`g=ff{d+~UwNoUP=a8ze<8v`qrABoUTH?f6!;VN|%ad+uE><{jR zxu>|p3hu?YcOnSA=bIf};BI-YnRbjm{**p0ikI2Xn$oiL0CgHRVM{Bv+Jg*DfOFAY z0-94yR&vze=0DSBU5?o?*cNT5&5D`MXZg%P`Z)eV9`ylqy(S*8_siY;f>{vAJ=wo& z^?Lc5bC|wWZ&W^WDm$dUszGvCuB&|5KY}TjjOZ@CnbhnLDnvx##7qvxddP4VT;VS3k{f z`1F)1zuM-re}dnN@pXmn-~M6Vd(z(-CqfA;!iT<^yQJq~}Q81v`HBk$oEkC%>3hyJijk3)+dU!8y+ zH3{GF=R9e+_J%NoVo8t3Dj2oP0ws8X5-2;xlPd^vX$Nn*^*K175TgjpiHh+bF zs%>JfR^KT{N&JqjyskMH9s-WmJi2H<_)PLhA#@xz!A9*fdGmVu4GgQNu=4_8Q!)gXH9mgb3WI@y0GnW4CxpDv+6{K}$ag!XrSi5j!mU;W_Z_-*85#ZCI|=d5mN zGG8vV&)ko0l09blwDR9QleS9N8T)V10m%GQW-PW6bqxPf*W=*kHhdz!ze0N-OXnaaFCO93Drk0D1RHmf6t*Z)&}foZ#1qNzRj9NiE>UD(cv19cVUt(X?iWZs{OL zbdB;$l>c4LGky4XUO&6(XGbA@gSO>MYR_Raa#{D~XA+}I@6r7$xDO1!Z6aFs{~k6k zp0Df21^V&LzZ;H+T|QlD_-g_;c0Z+!#}36OWQ$2hLci#@Kr6&=ac##zzmHIdU4Ha9 z$x?JkguOsr(7W?H&#u!ge#?1Av?G5>@9ICnb%&Om7=_*=hI?9j2LtFH>5Kq))44p@ zk`_0=8I+5|W2srJeQKUF&tuQeSfAp&vCakI;OSS;S;`0Ost;HjAlS_QKy*pb_{Te? zKW1T*JL`H`tv{r8eSo|V>&sR}AJsmTQj@i$44EF=#hC{1;!b`?h==q}BG018wA-B2 z`m&N6uZDKeD?R9k@|wysDQKjf_VAI~sVUs9HkDH{n|5nW_L3Fg-~OH&P0yk2{pgPa z+`p5&^yYAA!<=2_(Kyfc(TANTcS#6bsV~YcaB?W!b-%dd&m1cyw`8Vyv}UWdA)CxU z--ZuSyM49zY-aRPYipPC$=r6pSMcO1^TGssZfvcdVQ%+vy_feN;UAsSW@^ZN$3NPm zxV&t^2X3}?@pkgN2YB7U`;hnSDCgM+)Ry2tPhElwyl-W|OStg1as43g&*$IrdGYnu z$9<0W<<|u+uRHS9jXs`t^YvzWG)}&rbgAgt`}6qyt_**6zGU)E(e^IRbXm?^M9Rqx zHReUtnN)sU;Xkv!V@yZkKO+|m@f7%3eLq{`_#v{DMAy1zY1xYn!hf<$uXg*CxeqJ+c{q#@qW99zGpo9AUSV@Al zA@#9YXRDgh0+0uzy5Dh2#$uk&6%~7a>6|LJ_$LF@ruJ z7onb9gd%bg667L~L;n3)=jXH^t6{O$>8j(F8N2VuHq-7cQUhVfvp6E&6(Zw(N5YV(0XZ$*Y(UFiR)k zPY>=RRU9IdpPobp`q%$e7nONzN|>vYnwy>k(6TAFm_ zRpuPb$(V!8{4}Tj-Vi-S(eq`r8H48I=mYfuduN^Kp&UB!)4%xhPiSAUTTlPpMa;xM zp72%pA<$W+xX60T`;TugARoSx_=n9epDwwjS9caX(m+13 z&3Phb#2!Rza~z{y!7;|W54$6mYb#lk9zbT)FvqO3rTehyQpk_x_(>7w=ca4XP4p=W zUgF#jU21mRX2%q4E#{toUiAJdVCCW?KS8^TSR;`QslK*wt%mUpupYPxSXK_B@DnW!DIXxp^ERH0?Ej}H>9g=b&Q=}I z7{<}gHNB(UDSw}>EUA@!Mth7=pUR(BJ~8(WDXyE%y25Pw){+V(6=UZt4f6IvcI{Di zvUl%gyDs6x**QbQu48Ep@)$K{`>VRNuZDF6Z0ut^7uN6Zy(?LU?c2?7bTDh$&f3m@y6t50 z(f6JmlJAmbBkiY`{pal88nTD8z*#oFVFNyi*2s>5_q`@-&Gp#3)IvD92fEJzx59Px z!_WsbqP-&fsnO6!E}-x+V6smJv1@Y5qb20UO;e1v7e45NRyUd44#imH>uK-npFnp# z$nPrJ5iY!W>VuwA&?@n|rbz1AWT8p157RWto*Z_adD8Vl=ICYC8r4QGvPSlFiWmcO zs2xY%`XIf`kM;&;YrgRFEbVyqv*+h{ziDI8w~$;zb`(f{A!7!83)=bzS4VjI^RA5b zzCdxbM82isvs;jz)*f15O7^0Ix)wxBB6p}hF?%?}yVpmsRZEE}mJw5oh}TTue({%V zvcQ$mN4b^^TxlM){YIurK40j%=s|sc<0+@lKX&_>DbE*E>+N@=uN~Zb#J==&7k*s# zT;w|YhqvGZX@4a?(2j}EMjt%}-Xyyk!shT3(8{8qT8M_80M7QCPAa z`3TMIU`Ux0SKwu;;YA5c{`o zVsaPfKnb>YhPR%9&aa$9AHwv}dq;ako7qdM_SMFI`f)w&gzX;DiOGMUoi5%j4>T@T0f4^;#FsX5QBxRAdjaM{FbY8QRCMJ?za_LVJ?HjmCN@@9DedEsI<% z?MVu;cQnGhchA+{9egw9eJ0})9@U0&kT)||XE!+WUFgCr0;cRmORIYv-y~B;-Q&`x z$4~QpH0tqFK6}3W_Gl42BG_7ATnW$Ajxi6Zc1scU1#-es8;hzZUwDfNHCB;3o;UE7 zBO8fBtwtX0x3bFY;J4N1tMGAyj9WB)G&TD4o#6Q(a$PaOg6!bw&EzX?yParsU`+Cc z#WmDZ&1)^aJaBpi^#SwVUEAs0yGr+#<^{4Ea{@UX*V5j>tUn>vGPkp!FLe49^2d1Y z(B$P;4{L)tyI>ol@nZw^NA@FgH!}Z=kpb$X`nvz%!)uR{SH_&qTZH|&C-1;|U01yX z*~xv_BC>&A378$Sm$SghD(0ku-1r8@5AW@ePxZhT0-R%tEam$LzUIisY<>rMUOc7i z-@w*a&O{IT!|G-5quj>^=z;Z-!z)a11AFotW6*?XoqX*Lq6zPefk&VT@s9McXi4<$ z^i^>sk2V}RHg+BUBJr)|)WLW+bf`VGk%GD-6YO{A`ZeD5F?C1A@?CUbX$pVP#(KTQw&(t|D2wn#ziIfUKt{!W+f>!yyP>e~yK z+EdlVXCZCHh}{&;Dl3s*Uy&Eupu7|OF41E$Li=SVZ(5A@H8=k8X3C+-9?jrOh-Uox z&d%9lL-bOX?a)hzPd~lJV z(p@_=zuK3k{EayCn_zxtF~73ewv5W!AR2IKGZ|xkW6ZDUM>H}hPe!uekPB@|S1!17 zyxNru#{Kj3jg#L#G~Y$EFCV=Y`u+@lNilrg2QNPx-n+g5er*ZV9eI{|FdMP);oW(% zNhC)lKN9Bg?M18uC^y2!nc>qS-j740#mENP#Ok;1&tk7;4|1c5_g237rL_$vx^}Cn z-M)zDk3;{g%QP-3HYM0o5A7YZa(xx;B5Myx)>fgzl|v-|rI5TMeb>IfDtJnAH;gST zd#f1TP|03m)yY6_rjZ|yR$_O&f(<7b-N5H;MZTy;i2|c?2S-+c@j-HFDwg)ypwif$ECnl?j1M5A{){;Dx{c)0ar7!eb z_LFRvFt(QRtQ7+<=h`?Ire}BjC+|dfC&>8pe1Ng}dA(Wkd#@9(djD#*uNL$8+MUcxVobw&*(I_+Byl{JI~0B^J@xH{GNyUIJsM>z!5jlDWLsr}t*^-c0wsc*c8kO**xR`Cnqv z-4Eh3LNjB;OW;fP$8O7CS=hkJ>4YZWo!@ylboaz(1E-ok(67T=pvNNgYtMX>&Zd7Y z^lu^k)tD8-=!frQuZdTC&W@fQ3X9j7qq74$JRGj1o%&HhtFtWa08@4E#(y4pvIx1e z1o`zKybOIRA2km+`N%BoaoZ2iwy<6|fb6)NytJB{MUD-bZ5~?9SdNqHQ&Tf(hV*0U zRp@wXf9E6Du=l3DO5cO@?F2S|zwEmESmV40JN{m3T+-kB&Dd$GuRvn)mB(K;CDK3A zpY*%k+3W7;&~Ew{=lKNrfnD^si1rg^j6GLWxJ?xqn=d%1fA3*T;8*%LXrf0_(5>E6 z9Wb>O;vMIAK`XeO7Q!CU*$~y(BgbBb#*kYZu}hwxQomkuP&&DQoTFpZsXNYnXWnQF zob}9i@YZ)9YrOD-)SAL~3B4o;eG+SsJ55RD;``6|>0=IOR4cyF%X@V-MQ2pMaVPRC2Rhh_tk75{ zF=zeI2K&bvx7u0@&=zC$=2iVupVY_WJ6Y$p{S39LFF&U}jpKgc&L=0Lkv=WSkFLFw za|H6h^=fdmIv=^kJ;}WLk*Tf7$~N*>CL^~l39v^jmzZV1IdeXQEwr5HyTOC}r>*R1 z^wXIiXI`Jw2f=zikT-4hWe%)u(2pP9x(mT04!@jty5&CrZ_P!*Tg^DhNlD^Yr8T~M zaLAsy#?|@!rake1{e2lVpP=s)=M<=Z-}T7rI?3d=vB^#7&i6htTqb*V{NAq&*VlV5 zP!D!8@u=U8E*Okogpd`;nQTnPqDO=x(c{;*Rf=Dfd@qjC~*Y^YqbO_@4g#Cak@+NAO(=neT4d zq_QcHn}xvYhR^X|h&ej`%K_zUVjD=87NQrhS8k6WpKk;=!{kSg_Q|>OgJznSxeY?6 z6rCu z66KQzsYxW=wFg`&CtvN67r9RFDfX{gYrR}s32rx|*W???uXE_p@e|_c&jdKH1m~Mw zoX5fWG4zdehTy+q#!UD3eF}XSj4=1ina9_L2Wi}CQ}Hb71t*W93xmu_|B`5XjcPpx za_yYVtywrj>j|0@=_J)hQH{8I=4T}`>J|LE7<04*p4vj6Hqkfr{r$+REc)dAz6ALq z`&T$otfIcAaK?i1tS7?jifvUhZhs83fp&`FTRyc{VQL<2#p!E3Gy)tO8`JZ>=t1Qw zbu-2|@5uI>g^gRwS|xNj?;}fz=W6_;OuLgy6tsJL7BF6NN#^|&yY(o20iQ1_ezVKg z4a>51bu@2!?iJe6bNgy4XY2$QVQ?XT$cZgHzWt}{`;m-xgg9P-x$Xt}Y8^ceuyt>E96U?-CL$Y_V6*brTuLj;i`X^ggwF`>q zU+CPBt-IwSY~6|np^*j1r35krdr7vg_6~V=ZVP<9-?eks{2n{^P2Q26TTfh7Hm&Tn zW7xEPb4_|O{aTDotGZ#T13OF~Sv@hNkEl!adJpzwW}o`zVy9u74cckwu%7$SZ`hLe zV@uwMEx7<&vXI#8WNgXTivr1euvt`3>;deVjo6Z1==l@KpV;EX!|cc%tj+Zx1A2MK z+L8AT*^#;6SGMGHvK_&b*AHte(g(pg$@6jAd<_1s0#-v_bZt#d@r(qv)3eCID(ba_ zkaHE-PM+;IiMj|qyr;D>*)GT&>&G{MZ>@#Mzh@08JrNnHH5t{gwDz?-Pa3=C%IlBC z3qHqMD;HE7t9JV<u61lN0b_*p(BW4)o;3dG-nO z{5JLpdt4m*WaCr+U)v|dF5I~3JF`#Dd(YY@@MW!ZgJYlAHE`?`E5k>$Pr`wb?Gtx? z&QQbNzczUx`y?~pp&PmMHuecMvK{+my5{GW|9<=Ang4h8$zb2}==G|kZ)9)Wg^e?lSl9j7ICm2VyJ7K-GxCs^ zdHl{}eS!E$TMc!Ro+mC=gYBcZm>a8V^I~Hs$P1W^4E4vxBpda-o>iW_f!k-==#m_7yhpCe})d7+Zo* zF9%1qdXE#s8MKi;mP7}aqJ!i3^7#JsLDqh-d2J1K{Er27)VRivRKKbiyVikQz@7J7 zd%}*97sdLFVlG3r$sWf~A7*zK1qb5}-M|}+0|Ec-;y`!O_dDG(llT{naNWDM341&;#%u_OgO1JS;JKsN zC+N=re!Joa@(UJmzJ+2S&-;Ea`rW|o;~1ZEt&Y<-?MVyEN5N-+KiU@r@|Tn`w!A>F zG4FEr_;9VCxIjPoF#T?PrR?m$JlQpo)10w{FZG}FH$WdZjS8ICM?Dv2?8k^52^R@! z&?UfgIq*e8e+M3Rfd}y2HfRsK<5S*Kgmx7pQQSX5%q9~D%3%`@N`bQ(9IPCilk7n} zRM%A4_=krF{hkdTv{ti{ejKA;N69hN9Ccx1sqV8AOU!BgtlK}!BSrLszVzP2ylal= zUzdALalf(=#y`@y24g0&wXfhGe`x%g;XJN<<6K~5`a>tKl`g+-FgDSRp6rR6beS8o z4Jz*h8(jO!6jxKsmbhA*XLEn534X^G?V6bp6YTND1i7bo-!3Mo*nsk~Ws|DS?_hT; zmr`waL%%jQ$aTdAbKuDX@Ww%Satm?79`HN>Z)V@RYJDH;*jg(P-#IZ;M|P~@y@kpJ zg;)15PkZ3i9_B`Lvk)56I(J6=aB!Sq#;JaU8ON~rVZGBfF*3``3&cCnvv~P9GD-X( zUS34ZY#aR@F!`33Ra-;+e1bVI<(Ue2N;ZSeOYnHw?!P0?sOyIVPlvpw#AI8QPu6?n}4bZM|``;C- zYy&TUsExmgcSSQJ@!bcXJfH6-(sxh4{xR+QYcl$FA^UzYXTkqbqtZPNqu*X~L&P|JniEJY#^6RF+x*L&?`2p%t=E|l&-**2+%>`_C=IOs; zyEjPZ+cN;z|41$kwtJfw=WHUTeV&X#uV24^rePnt;HhQV*jrj32*?^E9oci$5(c2!}GlSRtyx)%=9xyr9p0#k}jt!&ht4yGy4}YeY{Eo+H!++ni z9i9FS?a9tsO?*GgOwXq6o#d|PGd~UE%R2Fers}M|iHvnQ_Ej&oeTX^D`VeCPM=Qy5 z*zDp#=TBK!-ugE4-=(!e{zWtXd&(bpfchEA6Y%bfhWyWXxuV{E|2_3zcC!38<(1gI z88%-lr*#Fngh5-)PLqyBKpdF05=0ewJn_WL?p9S4yCKhe$0EkAu_U0Q8;t2#P3~Af`}6Yh53E-`Y7^k>MQU?2 z{P>ZzSTk{0C-bsJEfwvOb(8BNM zT-@h@`xD@E;$^cf?sErmzi<6caNh^+_nV1plrOKfE`J{yXhXO>fQ+H;4f_W<v| zp_t7?V_IjM?AD!m(Kq0gc{ADbP>p=bzQjz+roNA4#7^quB%o=H$0AJPX`;4LQcKoit?!}oDgHj#z{WbUx#E{g- z5IScOXHOjnOqt$-{Gq=#XHb1qJ(nC{iyt-C7W(I$=V|C$s8#z~J>K2QdbQ4VQq6>Z zcuCL657&Moo7Wq+wXJt(|ChgS`6YLe3z*+}H|GdkQj(uu1B@F3#?tcj*ccaTZ;q88 z(t|n=R5^6oXPDjkGy3r?u{FhPIA^V+AGpU%PUCUCKIybOGd%x5s{&w=YJDk2t@5n#ycKdC|;P$=$G1uQ$zv=&AziCG` z0JJW7)Pzp{5dJ#OnP&NmMK}2;smVR>lF#V-B`3RylZ8xvN7m(K>3>5<_{Y}*y{?2_ zw=%94mtLKCqeHKvalzQ>!Z-ko+z7}v-&L=?dKut8@N2g*|6*>)LgR{ z_kuj6xQZV)gZu-niGRND^3Sj~;0uorXAk2W<${WDa$5fcTC2+78|BFk@{QW}@l6cc zv-@J8KfCq`4=Dz8r)Up*)Y_%cpX^f0FYu1XFP$0u;-BAV9~eHrp1*$=y5FA<8351A ziBATwl}g=xepEm!A;vmQ`S!$tc0{P-RYyLb#g}IfVVicjbwwtwbbSE!kSVq+n)26N zRE}vad0zowhmf;br|OSrU&=sjaN7X9=EMk>ZP(rx>H5?ajQbi#R-EfG$$^k#4^|y~ zxKsJ33lA>q+%h%Pm>4^YvWRAzYAW>5pJSKu&v*a2zW;rX*7X^rPjTAIV%%zT^Hg%f z#>P7$$hxAlcXdt-$2%9od(VxU)fnfj!U%d+bQc?yL!GX`Y2i_4u8>E9eHu8NfL|al9lVmN=H!wDG@z!AbwFZ|?I#Y_we3CXcfydy|#b+Em>|UQe zanE`^zlG;Z`CQIt7d0Hf-I|CAwFZ_>J|jLBOwGq~`Xso{9Dq;YHekQ%-3s2-9`Ojj z%S?p#vv_|J^@cKQMdh~sP`Nwk(hmEX+xjY>t7-d0_#k#s4to@G8Vj)RZop1Un7mfy zJLe(u*g_7T=AwuCQL3Sp zP29Z2^`&GBYA*c!iuHbRZFk%}T6Rag^FLJ2m$?b@PKWuU~yh|a(3|-*9!JQ*2+TV=26AthqZ6A8|N^#jV5QwWPDAnFKfLnQM_;c9BZ>U zvMH>Ybh4q@bQe)2iAR>%=q`% z+FHknVS2QoIjIx8f+mx#R7ba6!UeT)6OY#C$(M4SAUrIKdbjy54CnOy1Woy zLwY{~Z7Gg0$9bp8^g8*43k4fqJ94)(pLVW)O4qSfo4GFd z@8kb}@&6J2wT1=mUtB?ZJx$a#PlLnjc@CayGtI~r&Vrbu_IU4S zf-?d5<}!FOx;?7vGugxCz;7~c4czy0{dU@*uWe?^yXh-u{PBJd&ptJU7zy)n8TXro z-@Q)l&G+!m4P5)5+{@%`&E;k8Tz2{R`pX&o=C?PjJ%udPzVzxVq{n$9MB`3Dm03IaEbq4fv%ws?K?2EG43kE$e;(J5NBvo&wk9UbbuqQBkO~0PY zA+Ch&A^WAT)Ra7dZP<@I>0%$}LHrH*FR!}(hGGse=>O1C@P~fY-c9X|x3zE>A2wde zG3KWq*`;??Lt(Ps$N%X^j^+jodpe0_pbuWPA-aUHeqoW1G}`NS4H~8DhJx!k)-(-Trgz z0B|2N&mSqp@4XYCMWN1H~_Od9}B$;xz)yt|&oZmW^@7d6-+TS`hx;B^b>x{?e&5Y>_u?e@1jdv=( z_7k34WsI$-E1vkSZG*FM`5xo@zGe9vj`o_<#6jk%tsAgurJGfU_Y>Ub%*77XWH~`U zBBSo?IL_yOa_9FG-@Xy}C&^`cfVwMpPyE690Q(Wu#z8|(R+H1Q5u0`nHtl})V`Jyq zn6jQfPWxM!w-Vat-14>cv=yN($-%8WtJvXg6Ic_$KE@ulws8b|yTRbMxbm_GIrhK! zUTjQBB229&;5MASvs3vkTBC_!KY!Og8))5(uR;CJjuv2*j|w(!rhnk%O4SgPU49(c z`PW9*PLAwTjM|Ptw##Jto^SG75B{!ny3Pr@p6B+fPxMdl1nWkPnQdIX3R{D!8u!Uu%jFu2);LfE%QL$G{Wu z#M1#}@J2pGdquf*N3wPetkqs9)tpg$WDovBEpu4I{T^Zlx7d3*w*Cm`V^Y&HkNM1L ztu@&vkMqo`@UHbd+gQLD)$i*AIjzzGEzE;_orUPJJnS*yK(Slwu*3MJYZ`b@?=*02 zav;mjr=CBKovpdk+-hD_pIY?tQHwJNAN#=vdh4)oR=_?F&5vSUtMQ-m7%#DPYQ5() z9;N-o+)L1x8yM>)`FqySd7RoJw12<5c5pY(-wpm6%q45~)5hWzW}P#ad9BBoql556 zUdCJsMxJ0Wm#XVt%6p=nSa>+?R8qst;csK>dxje~F(&Oxwc~bmvcF%u zef?7InqNM@il6OYE7UnL65qx|lGM9Tr&!xaVY{RfeB!hHsoFyJIuqAVtB(um+})LPIjoDpF2IL(CQ=l+MI`{KZy^#k@h))PM^ws2s4^eO0!Glv7V zK9~9!AYXa!_{X0j2GWRq)~0i(8i@B5o1QbAx7jEgte851`d;kT36yQCIu51ev~?lh z0=uADbnYr_H?^^dHn4lAO)|&M^dlG4#w6O%_epLW8;K)${asCeyP)Ml;sLUKE0+Z~ zXin6Y&UM;DTSbaXG+&#nGTroxni#Y>c+K`N*jVMZUHSvg4rj~}@YD^SV&F-&=D*Gw zcRBlrL*ONgxsd-^4oxYqPxwxN?*#Y`eS-aDJQJcF`>f)EjI9N~fB8D(8Dp))4u!_> zfv!r9y^Z()*J_ES=sb11Zw$NRS!yOY^2o6_u(3{=A2>d0DfPk1_4`W4x0}gt#f??N z>*gl|vd2!DFF4Om)jj<_<=BiS=7gZKBJ7=`l!SP{(X+Kw%5IdTvcjkbW@k2 z8(()&PBH#je`?kl)?bBJZ;m^@VAffBOW7Dxo6hsy%)EAkry}N*`o4`h%&Gm&eCl_R zJD=1wS6s@{!WQ0nlB)hd!&If#u-Bn|I}8KJz~2UOqhXxd7e|LQj=G{v=k~=+RcJJixi$Wu1wp@`&UnxijsaT`OBhKC%3#TE_o6 zYx3F1y{)WI^&{8%k!wfs*HY+LE9;;$EC>%&q%j_xP&7+Ze<~VM8p{Xn@d*YU!vKnN8vLhM}HGU5{B|oPJ{3XDja%JkNC24(AXaFKlZ|;jsp|#N z_Sd-nzj`SlW)*?#}4MR2eC6_(0B|QUm%@KEvnR9 zlTJ`KGf{U(vJ$^FI{x8K$%4mbGoRq5a!*;w3fAa!O}3cmsQ4Cgl0(Q_c~AaAvl?|au4KVTW8LJAwbD0M!4AUD;=L?*dLw#MbQvml;`19#a7i7uP$jW;#o0rW z-Fk;uxSolz_7x=lZD}#&)E}@qzCm>K`1YAD9l`TWi9@ByDrmnUcxJj{Bbq<&%-;>z z&7AqWx;B)x`Xvv1r<&f^N| zf=btK%FAx78x?4rr}-rZ#>TufZ}<@GVkx_ekRR(Jbeo^ueDdp*V9dUrf7Zog=zi&1z)GY@kfcHH5+&i zyLe|!}(AKyUr5x!`@2d!>+gztViIZo%34N3VMI74Pg1nb3+RSGiJgK=V=3V(ZvSTlU zFCAOKBxBHcEHBuoSkjHmo${^hJ=*l&E8?E$P3ME8>YcrS-O!3(m+X>FKJR85m%XQI zXnbD0uzQ&^#tX#@UnPd^j|WH}#L)-k=z{|EK_&iq6}q4SUC_XOyWW>fiG01p_}Ztc z@vU3%J+{;&mi8<#kCuZY#R;nKL0^map#Sa#$g7uFvp|Prk&m08)@FiyT;=FijtOq? z?965CXC1UNy%@sa{5rmi^m|Um9JadS`vLSIz3%;a`h8oj#y1rIweqJimhM3g=zG;y zV(DIZ&!c%8J7CS=M#f!D&a?6WgWyQd`t$!@Mz_7p8A_iE%}L{ck(ah?dv-9pvEWO~ zpDzezpZp=Q2c1(P9Q46Msn7$|Iwxkz`h(8Q8{f}9JjKhP>BnfNJd|T&DYE~2;dS}> zDdd3UZux7aC3eo;m~l#TUUh{%PvA!hkJj(szK6UQ(YI`XD)6$?hZ7GUuV%zAoVdvq z$r!m`m8`|Rg}qmK>6~_bCPvR`uSKU&&v2glB0cEgNxyet1E_zsUjLv`#ZJ&EZRV_V zuJTs;=k=+SK4r!)wqZy6?JwmTktd>B)N2x~WyQ12)S#Q!wSc)0J!&p0$mg2L97L#d zuFv4Ezvv8o?o*x8ud3fUQ|DVTH})Cq@U=d6eW*oHdO)5iGx*Rh*){eWvXX@0sh&dZ#W8(3G0yftRydjDKy z_D6F?{%VKvESz}^wLUdMzm)qGp|b&9(5T`AlJ_-a)_o{qgwm zNz0Ez`bKBM2rr6X9RM$rfZY%5fhj1!;H6C1XB+ETNG?)R` zn_JE0eBWID%r|$EpB%j$!nTs3QlA#*Gp`S7+wvL@VwO4nVd2iO|9sb&HOSf$dQb)0fGa{hDL}zVDeaK7?hiTu8PfGu8 z=KtN~J=ODxj%Z4hn)DX$dmJ0l#>i&36T6tYs6JrpLF>6{>{ZpC*7x$6&Zn-KF`u2# zY|J^yR;@)@9;wf>dPL7I;u+TSlKZiNcbUowsionwR!3u-kWW5O&s3C>1L)c!TRF>` zHKvnA#CrB;<8N@kGEVKe8RYo$+$P%6_j1}@z;lJzYBqKk#>Qcc*D*HTuXM)Jq`kuX z7|T?5EcPDns#dkrj`LXo9$3dY{MZC@sC;znoLL$<``nKQp4KxJ_d3s1-e>XCq>L5k-#c&`1!w2TaO#G^$$5J?FAs;a8Cezk*{#VfcK;c{ood2kNJ@@}@{`4_?2GBTX+ z55YOqU`CQV8E`h92d61^a6&QxUB4_i8%KuI=7&Q}@qGD~0cXQ-I4dM~QZtir;A|3{ z4I{((J3pN0NN|w(etG@$d2rfd%if#ZLw@HIg7fsqaF+SulwSm#r_O`Z6uUE&OaSLI zg7ehKa4P+9>MjD#S4M#I)ffp&Y%rimbQ3V?cn7h+VN~nzYVy^-$v^E zHY%l~qS%t`-6+368z1wxVMem=GUji|2;)sTR%F9OcT&x3O) z_GXa0jk+Ui1?S@xm7X*2b=gJ;LK&; zlszw0{<-y$p@UnK34Dng1!wNaa0>izQWpUyejc2r*yrAtECS9L!HJIyC)*E)dM@Yd zzzn>Vo(HEb_UWsvFaGO~0;hCjI48+77>q519XJC6*8913jQm^0 zZX)D47qDjgI_nC3Jvrp*l%F|34(b3ontO=bd^EtC*UaI4vb@%NbFv;DIIKR+9Jx>X z{e6mF#Mq|~hqGBUlQ+i7j+X>y`p9rz@WUy;2spP5hqFSmbZUY1JH943w~Y*EtshR^ zMZmdbI2`cCUIxeitQVYHMuxN052x9i%j=xE{ORzyRDF+qTe_L#Aq`5(H6^^Y2$G>UZ9Pzzm4emZP1TXu@@Yfc$VvAn&OeX3$*b&*1QLKw(k5k=toPTp<(QPNE zlx_RPjM%ncM&sK~d}I8!lizvwwqLwFVcReF6l^;Yy0c{Q?{cRf?*wjcAl=i?I@rmm zm3f=MVdQh~Np=&9na%f>FHcV%<4l*A{ttN?whuA4E))AvJUv3*?FQdC7ZJmKf*7vG zmvqOssMs|16GLFH4lv8o$2+6xBgFF+4}k6um3O-9#BTgN#h#5W?tK8dQC_dUzn|~7 z^RG1mtquI-3#?0}oi@VoPbqC{4cA*QdD7;W53Ns$zpBZ3nRtb{-M{9kbz85lui7>? zFF7mukHop4ANh5yg|+wb1B1Th2KR;aop0c}X{R4}KyR>^yDaOl8tpQA72Y}jj+_~-UHU88R{ zhjv}ybdZ{TWyD27d8V&LcT=J6H!)Lq0LzMIIsME>d=5ABhj&b;b+A+$S@Tve@)=$VPo?JDvkt{+XFD$iek zg-Jg_?&PFvn0MZtG>$Xc7}E^}CSAC+=uFonaLaijD>*-86?v0SFgDGBe;(ds9`svd zP!95L#*kvaO#mE4>P)h5O6t2>Z}nd*Vmy`9N@88pj>o@#xryAYE%blZ?WU=r8NZP8 zma=K9#Y`k0Bs{~(qX?XS{Z|9?Hb3*skrmIhzp>((f9F5_MtoUx1M}3FI2(IPdB`F1 zxN5I7r?;@TTln8(*w07XtZTKIs+l%7ZQXo_X1#T-!L?~{B09bSIzDe*`WnuR_pNsg zB&M944BZW@H{y+-T(@p&aSK1n3kb45RO>E1%=3Km-HL3!TX0D)`D&6o-o2SN?=83l zdYebCxXpXhGsGgNl_PtM$xkM~?dI&bYnSTpS!%c{XN#p)`!~pM8TlFBJZkN{euO#f z;yjojV~8<_@hM$)4*l0=(Z723y^(ip=TNf3Sz~i^8lX8ZSLom9lZV5R)`L&SbDi}< zazx*Z=MP&iJj>dY*H@4CU-~zf_u&EXbGvM1~9p$lfk3;TbKQ4zCyRh#v$Nz}e zFJzF;6fg5+4l*tC*->79#?c>aPT7Od&<^FRu0$@W?y-17`4h_P*}1g%3^rE!DEzLz zuR=cc&5gG2Bmc~ftDr1>3>#Vd`S$&GV5;`ukrQ`g0kW-fEOz%?)4r;lbFYd5>0D%7 zKR&?0QPc&xB9MNQ+|Uiij5+tq4{ke`Fo(0@MXd=__a>d6&z=+Zcxw)7jXAlQHCU}B zc8gDDGq2#(=E~ETV?|}@etd`HS2#Gf`Lm26|1$P@UtxBX8qQ>fZ%zPDI(We{gI=Zf zLjicj{=bCh?)i&o$&$<23-V{?p)zu{bvD7Jmy^OlQPuY5-molD$ z*7|s0onWXIiS$YrI#;s(+q4s=9sMq3KbO{m!{{VS8=@(2ulfQb;X(T@Yd>io3ZP#! zmP_0|E&;|j=;M0YzLBc&8R>pkZjp5ILkngQAppG$70$c<+H+EX|25AK!UkOl91aLR#`0#2M9k}Tjf zAY0xF6}7G$^Ol9>zrG6jvX8tf_NWZ%Jo(nof-m`vebB%$=AXmZuJL|vU0QXfig8}g zICbv;{3E;VfOH&vyo+baji9zfRacd^Vv4Kb;`6iTe%NEW&c+-d2Pxqd=?ym!yVP^g=(QrSwl^= zty89Fm7ib5y$0%HRb9`S239VJ2Lr9Yy${+XkFOgzA?0GQ=1

$>y+`SBES#byp{I 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

ek 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%0AD# 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 +=w< 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

|-@=Chn+S{igrKtY!M`KQVNf z&M;GKuKS%^hqo-fOHWUKcH8$fWX@}EYV6%|F=t3}uC-*(&$)El@m&VA2IR$}=q%*2 zoVdDk#OpWVnc69B*iU*1>Hqd4-f>RcK_|`qPJT1VkG?OKzQPV@#{V*z{NDE8LU~~) zt%x+~0M&6dzxPq5H?PGxmzH%-w1WLpLy=JQw|lx)rMwG=qI-Flr?XldJz#t>j91G% zyuwGF_;DJ)TwYX)7m?;;vK8RN>psqr!%jSn2g+Xs?{<*?IQFOi#PQc_0=~{x>{7M8 zp?s_73S<;MzWyv_C{6PU;tl+J-OHm8eHu1r%6P`*weBIt`pmnZAssseTZ8dX_xL~c z`?HmQ=I_(xEggO@E~+>E`E2&|+0tG4os%|RDsb#C$(aw`;nfeuK0r5i`)9BZ3K-{P za2b6odmtVz9L`l`Wf=RlmGMWn4u+oC8VT2j(|NhaC&f6-_@uZmrax>W&2s%!*aSu| za<8PWKah4defX`nlKSvfuRgp)?e&80Scv!(+UpHgqBX~Qku#)@L}<@N;JzB%`*F42 zXs0({XX(6N#UHJ>wMzC`X6Mgohl*34haMen1$Irc!iDX>w+bg`gbO=%1 z#)iI#9H+D+`sB&zM6G`??J{7;PK=eb}OhnuJ*);Qnt@8Yby zT_a8|S-#$~>UGXp3v(D9!0-hJhIpT2FSn!PGKoiiPBzUHbmetn_=P;&h@FUD>)0>) zgbNSi>o@gSeL4?eN3>0}5`8(RosEDRYkYm@hJa_e72r&SzMZw$5e?iA!s|oqSKJ;5 z>{@cdhC_3dvV~+9l|sXCCjOwbdfO(RUiTs97;-YL=p`r1p1Ss2D>}=U)A@7ariJ%% z?mE+6XQOunGIxzU`RMX(;9RbKtF6(|4pS%lEmLnR^lJm=x3zDzb?iUW`K2@dLVO#9 z9w|KHz4tl&yYy$f4fbs;dDlHRv~S}T{MMSc5zbxb*nh4&J+tv*^FE{TLhc91*9Gt2 z>MuTLcOHVz2ggbVZbt?(8;hX1Edv>y>)`t#BLf+o2g!fnQprHJk%2a3VEDtiQf zHjwt9*LjH2pDF2P{NrzofS<~^>kN2i_kd^me8=c>)xRY7yKSaT=zMM2r_!T3kb9luimqq*vq8L28`;JmOb|D_fVU2{<`6uLH6g23AUc3W1`vT`=;G8A>ZPMmU$olu} zp{yr~Zn3iFYEEx7`n3qXx(vIcAMJFm&)W5Npx>@BCm&xPwEA;iVZY9DjbWgJ##9XAk%N5?sDx&j-!SUx^z)IxhP;|t3loyeJw zl_!ob!^WQ5hFwiOvhnSC^DJN-rF7Zgm5iligDY(&)y3}E3Jx3*pyjYC&c1~9~-Z@iW=pi?+Ry{kDVRrDh6N#%()lzF(~ijstn zxFP+nytIV*KWk5EuCIPL{*r&eS5g@at8Vi76Jf@5m8Y^l8wLgo7*vM*fsDaTnL+w* z7vA@=VcdM;kM`qspN%f6wcEz+osOT|c~&1Gxj3Xb=WJ|F&loGrvv}x^8$8cuOx&$+ z(U;!2>1OBc>v!gaW%8Q6fRtn8(#Um_0Xm|Yr)C`3p9SP=D%Vs zc_s(BlP;64mffszqn`EK=x=00->MyL`I0riB1AubBV}X5+c9R@$aO~Jn|-XO!xyn8 z5SzaILUaP{x}4`Yw&T}0htQ7?N%I_%J(Z=)$JnG9S&{!apYcFZkhK!>fdX#{b3=x2%12CpD11(oJ8>O}5Lo%Ell)mdfN`402o&HV1E&LVs}vXMCt^ay>`Og%UA+zktThJmHjfn}}> zOHOpA3rjfLhJ}8@z*5=+EOTvGekEA=-4iU`bu!K{brv~w-tN{pAUeLg&P=;b#ssF$ zq8{qJ-L7+!>g0D%br#_}r47!M90>pT%~s;St&TP+h!JU3#Cd_DxzrKg;mDd58_KANdFn8*JKNI{zm+_+RJXf3J&w z|LA)&T$$@<<3G{C|GFOVzt_h9-vkrCd&0k)=Hs0@r#N-q?bg{h`rqAk_Oa_6@6%2*I^1G)x(a#&LV4*X%v1Q-9vr^x!zDVcDULO4~>Q^74_EMpk$?2mE9C=}@ zu$lfha-sNiVKn#)&R;cc^YZBT_=Z@OP5LH8>}sg)GdAq#2<8A*`qI8Vmv5yXT$^3G zu&yK7SN{ZC*VVUkjD4H5|4Or&3r1JS{@QNF#2KB7xt9%;zk~Cn`{BbI#5lIVN>tIF z{rxkaZ9&HsaBoEyxw^^Jk6vrWzWw}b)Qvt-j8O|RQ|LbPTXyqRJR8|@?Uf7Fm!1vr)ul-7Tg0I%%w?f5(lZq=(N$Vb*9o1l8lgv#pRgxS@h z3EsZL-HYK#@f|zpYuwZ6nd_;)`NP!z;OYmv>wj>~gOv{kADsPQ=)s=qzuT#QUJvyj zZcp;_L)O39Q~ze_-%S0Rd#e8ir~WVWQ2*|aTz~noWc?M#sQ(!CAM2_9E1dc->!JRQ zz0{A*onk+@{P&{|4gYhk`b_Mj+p2FpwiG!REZdQpa_lDcqao6&t1FHzrme~TtfbHL z`>b*0#Bq#54_5M>^x#NzU?utT84p)ik2sc1{@bd1#^WU4N{)_mPnV-dJb3)dV=uY# zJQ}#Y_E0xIv`K@{gEl?$!J(3K=mqnwz?=!pW2rA6m~SP|2w)x#%(s$f1Tde8?t2_~ zf7JuL|LB4Dw>`icGxSfMMHa#Cv~73R>(ZxatfObc?^4@V!*1n_vkdGd-!6^AM59d0 zS6|iNSKrFmn!N&|HJ0zlPJDl_T@YT`8r<J1yzKN#hiz7{6*weM@Tkcv(4=l4Ovjcea?Q@i| z6Ih;yZgteNA6V+ZYbo^Y2=07lC$MaXzGc9oxhUfF>dX4WCwM*@x{XSs-P>)pKHB8S zge$-4@dX;^_(nyVa)I&Uf>Wzn=u1jwFi-8v`K;`=TJ$vXum^w7u96cqPvP%f$+)WC z@X^7=`#a7UOZ2(gBdhA~UU%Se&o|o|NZk)YGzd^{Epwp(?By!@(W)|QPYt%y2HMgh zGsiS4I`P4(W997s6A1dE8lwl;e?oi+#LZcKg9Bk-w7;IqebK(od&#-dHLg{Ue;+$(Lel9J2JlnyUQIv1W3O%C)`wpf5;viXr9|==8IhUa-UuL#?tybAGpXS zD4Jo-mt2T8s#mrJHr|WDpyPL~wPp0D$Vqqnl=IFV$35WCupOSd_1X49GTz<~4cF2Z zv_3l@zV+B1oN`M@UyHnDR98-D*lf)&20o3i8t(MXui$qT>F-fj!+pN_Yw(}&9M$=` zrQ9{gLEf42!xxiJ@=nQ5UbI0Y@=`fEEUK84vy*my+gq2?LW3t zPaZxv3I19`9bLAmj{@k&r=syeEg~468 ztVZ^%G}&`;F?Qb8V6-X?r{6mDdgbqo_09ee^;x0ll(hPO)I)vD(WK~qcfQ;gU~G;q zlRsGR6!)UJtaABxnCn;jD~9&X*ta2#-7mI%Kh5a7N%&g4IxK|_oLd?Ku9SCHzvwUz ztcqiI=e3`3U}k*4yKo|Xy;%%9!P|ei@Q38*0Dc1-a0lfR!Y&Ye6|AE!H*;~}P10T3 z(@yVUe(!Kc`bFP;BPo+!7;jC3QSs6~=1hx_!?+V4A$dAd>NEbCKKN%&4II=x=jqDS zEJvrwH?FqSLVJ+kqZGNS$_5|CdCiP3TNrB>pa+SCUD?1lLFSByqo-!0>(ljo9eTdb zx+MCnqvs2Pww^DrY&~D#==lQlxb%EMxvl5*UV2`4wR5G5Rs|kC-zq(yld9+CPj~hF zt>}6Av)dRqwKHawKU{vJddg9oF)~tWpM7q8NxW0v6Q|GfrlsfA9Hi!7HBQzZEv?KM zFmKh^f?r_-w5nlV;;nwx%t`!i;CBggT&>7)+Z9%#6gggU_~CsO)$2D`_0Oo+eDa82 zp_?eHnEb7jjV;z$No-WSig_UN-%9>P8vo;GwML6NqOFuS+tAP7`S{T;_WYu6=bh45Bj4`tZ}a6$MtE*_c&YOTXA^Tbi7}A)UkBZ_hDo|y^k2t! z;%QSbm8UQ9ES_pCX0rOVTALp$D&7f;oORF>>iQ=a&FLz1805o|Xn`MKD`&ldRk zDVJZ+TKxKkV8Q>OScmv5)Y>o z_)0qS2R2{%{ml==SAXLphOe5(%xPS}Z$nG^Rd+4YMJ>=Y8+!EPtYgm{WOx6XroYjd zoe^w4*{)UCT?O1*t=#dh4LcmYSBKuKu`=eacKTj#U(rZH&`ySPxnqhbHej%?Cq|&Eq)`2(`onjwcr4<3#aOAVPf~``yzdAE8mzQ)m4^Ln(gZK>r1Q66 zLwob9pVi!n_nrDs^c3~FXHFqr7hfrTQn^<4;oaV5k7aE|8=p}j6 zw^ig9z4Tu6(zEC#*i5=ZuLg%+N*BEv9D3>5t-I|yYzL35s2<6K%Bgee+2YirXVv54 zQ0LSm-n;o#kNECBs~+*&mE#uV_K(D0=zThE1fRz7F5CeJPTk!)hV$E7hn~~x*y-*~ z^kvJa4426kMXwR<%)sn|7Gt@ zpsPB|{r`Q2&;05r9i#?-&^jj-l`c+fY4O?L%rA5LK8?B z(<&*|YN8EON=YX~YUNsgVQ53!R0X0}ZPg4X6Qs2btx5#U|MPwK-pM|PK#Si0`mO(3 zzpRzD_u2a$pZR^>=Y4h>W8TXB9B`Bzw5nF}Y{%&2Dm_2o*c!55+gMM?=2%I&c5J@Q zcP&2oq~IZ2OYp$vh+!ub-&J%{^tnSY;dhMZv#}i&AJ<5m8H$I)78Q&-7)u*)x(_%N zgrVgtBLfBaX*;pAR&o^$d=4C0(0Lp8Z8|?jdy4Uh;Ojhap8kKV{^?UVIZGeW=biK^ zeY7ortfcJ@`p(t-aer@aDVfAab7M6Xt0uMWioGLInoLv%YII!?lVSOongah_4M z-$mZ^G;~=#F<+C=N84E!O&OugRNClaZ)Yw3E9n7uU1QhvRkcDtFS5pnq5HSchVcCs z`oH{C=(@zYOV)}HW!s)LR&?L$S+Zx6`sSl&MjCG=?~@tNbNDnh?#k;UEgIV(bG(r{ zl~$;^ClG9Ix_(7V)9JOuZzfl1{(h|sX}_NFY20vSRdd4-)oO-zkx?m z!&AVc;N;oxIGd;KGs}I7x5187%-cA{b|L3=-({Z5#tb%$8hW1G&}yFBWq!-O=9p;z z+}k>A-*sUB95^!^FQI%qDaO7V-XCleU&7migZ`befnvVt*G&q{y0*v{f$!jRc>M!= zXcJjr_!nMmgU7Dl$1|?-BgkGCzE@eZuAOATtNa%289QF~B6QFW-5On)=fq)M&i<*r zCrFIK=;~iTpD>@X7VD#l4fDP885t=F)Uw?#m_tS=r@y@vBdnw#189zU&m1M?oU%l3t~IW+OF&;s8tw)HOh zhkf&1+G}sUQMx!{VinjIJFNH>pU=8RavXXa@a(y7)Si1D?fg42Lwc`$vp;E#7qaPU z4|CHxEpdG?gScF8d|MlNsx-eXz_r|pT z8k*x_(f#F&ZBs&hV6-s-My7ra^`A?qKbra#)Hk+?4Wo^M(YNAZwCh|jD)@l-?*r9; zd2aBbi_QU~QU^wRft$;3$FOg`@ujZ(=z!1joOM$f_U~rkRVLdHd7X<~$bkNH@Sn+c z&I{i2K+v&YIj7N36ujHt+j(7xgWU7wl#T=M9K%gwohr)6Ul)27Z7O7^(FXG7za zJk#?|PX8>!l~8yX3R$q@6D0Ry|{F#IM=K_e$#Vt5;gs zFGfz=ab8}T2AvulTmuf=m=NT~;f(EeOo;q5+RO1d@f|J>z5@>8WVs{zQXTlazTi3! z&%5||(a7`R^NwyDb1wdD;X}A61Q*KZ^bPz35#XRbx;$W)#~cNx9R4*YGZ)8apfVBR zjCbDWU;L{pr)=MXJLi++r7DE(eRdqou8h-{#l^w6bN&1|=6d*d9=(N}Kj-;QLw{$_ zw}bf&(I0CPtrfI}Y(qzD?N|t$B!jgdxDuKSFt0p(%r0%p)*t(1{M@Yc__>#{hT1}V zZaZ7FZlE3Zwc^?t_)&a2T8p+JAItC?WKcgn0j7z+U6^hIrWsCb5%TiQjJN;MjuQem zBhgU^*djxXe96&%r!~6TKf<#!2S=v2I}>n#d^^iOG$X-(<PV5-F)+DvR2-e&^)=$=q@C%N#tK7lQB9ex3LX_ar*b#0VY zY(4sDmtsq{TGrM3y9OW1K;QVGw@K(5AG%5Qh1NaV?^XM+{luXWcfCNlp*;Ol-XVLa|Da{|Tb5$yd-Lte$J-vIy)UyT@m1QslXgpiMK;fY zQ`^m~^W+z2ZPt$6`%AtbnjT_}^kwFHGx4f?pRk;@TH9AytI3bS^KXA2*ey^S@R1{D zknbioGn07-ls`-Lk)^AkVOxgSev7GMp>7{@@!eZ6!_{s6Btj1mnH+dOyrJ<+fbj>@8ErmHogu|t1Y#^>L23AA)kJ6 z@a_kq$auX^a(o?S$om-bK8n1Te%fkbbKm010(%Y`|BscwYcAu5##H|qes|pI&`Wtb z-}+jp+QLl@oBYtY83 z-!ca57*|KcE*_>0olW_ghdyM#%>zeq_Mul^5S#a>1Ga2X+oiO9BB6fb{xf|4G`8Q< z2EUH&7$<{hv)yUaU8|_=g`RPH^AV;Xx4rwDCKsFX5oSVb(};UT&REdbvwS1ZtCu3z z4afcr@e%!e+|y6TSa897Os=+=lP}Yg7g6~uE$7eGul9I`+%q1{_flsZieESVNA3Rid-@+~KVEB0FTT|OVJ9D@;P4ms+t?25|9b5( z9Mtb$UbX3CC?DlEyI-FtN1gH|#?NO^Tn?a3a9poe8wBB%F6(jA_5U>8TX z#4pT*ZW}!F5TZy!;KRY{iJ(-yY%x;_{mKe&(wtROnR5& zar@h8_&Hvl?1G;+J95n{LsAp^3ORj=U%fIU!^6vNep9!<^$GGc6Md<;Sou0-iw5wQ zkgp^Qe^%)hctbGD;D2)3JD+iny)vwO&Y9l`8`&$*S6)t>l7+v4HO?UVOyA~2f9xs9 zU_DCwQb2YR{AuFcIBzezJVGo>?KRe$1*ejXJs>;l0Cv_A;!tE~nRkP82C!Moec@nI z+?qvv`y<9W(tfASFT?WA^?9Y6wcN+650K}zowcUcHL^wAGc)otYt5L;7<4cHf_xD2 z*+g`%y6sx~48cKLA9!`&H$8B3;~6EZeBi~+4dUX@j%PdDU)LdfR(1#LyaW6f0mIqC zty#yCKYAwbuya*LWfkimLx(EIK_z7u5sP2%z+1jvt$nwUTS0zZ#SX=tQIu`?VcEIv zH$#2qOi(`iu?5hK@Fl$I-1>X)vD-9kmvQH9;+w#?aPhC6`Aa9uW_b>pwmg6C{Aavh z^fT;lGWH^K>df?K#qwl-S_TiDnfUXwX$!lr9XmnmlIJ*Q=#EiyRDK(cv5PoW+52vJ z)m2Qd{F!sGd!^fxfaT(=t&L6llB*AKhA=!XviBG`VhufBWy>iOMEARKc51gAxb5S- z{#k9)?rQR}JVF~gXtw}gq-A}wI!wDMzR17~+LYa$dHo3EqONcnNkV>+H+}UO+OgZ% zXhlNRA=;>?-Co9at7#{>;k}=*+fluA>M6&O%SZeEH2Ad2wYf1z6%L-x`tA5$ocAwT zDI4Y|jjBq`u&VF4`}UK!j~P`}=L_{kI9I9I=h2+SR6M56yGb5RN%o9$U;H?CTHy^d zUSHlagSL*BEIoP5N~y~CCHJ*KONw(EMO!*&62osPSdKIgt*3M@dvk=m6!0f&@guUs zUPq=G9%jv#w4XMmq=f{=zV7oJS@7T4URzx2+ zfKx-Sl>NN=3?X+?;RR%BOlyQ~b}Ym_zZsU#E}wO7i)789j`*v;!dWl=gLv$HLq1)_ zWVPQ$d-=2%wFb<v##8;WwJgZ`ORBtZ61g|EsaBpy>w=agMT{bCkWTvl{WIby;g_ zBpbzZ$`vBnl7>Ehezdh`4RxBR(~57foqa*o*Sj5DdyrGDtiQv+bXGDv)C%sq*^d*Cx0di6AI~Cd*0p*k`srq$#Vs>6nSDp* zrTJ-|nr|1fvKLvRyd9E(llh)=8!}XDQ$PEkF8}zPSkMUlqjwG$o|+?_bGQioWA;L| zKa32LEWif6w(ZskeIRS{kxkJE?Ss2))*;B#o|(jgQ8vews};`La)^eU-{?&Fj5E-Y z8T%$w-`~jCywA!fRIlS%xpOA%z2q`)cl<`i|M;wP9+P#kZ`k*UpXdYCU-Q%pQE&fn zy-)NV`#VMl=$xE=DdVA(z)6gPwr?WEZH6@)@0%b+h`zRMlv7XNP2kO~%IC~zh4p3(@?JT0+3RBPD zurbTF=Tt|rx*9_|eQ!n|+)EkxGvwpw09HwV!M{Qu_+0iZro7ERfrcAcQ+2~1-PG-d zSLD~2%A5|t)4lL-itp~-J;;IM(Dxv6V4828IZrKry7pfMN67{6Z#&=2DE6B}4XLM~ z6ITx%ba}zq2Os+F$XDn04OY^IreJc_+H|YBm-vKk#WDB-ed&K5T&TECa!ov~Gc2xN z+K*luf>k6X4pwW_7O|2|w6&yU@yW&PD-U8POYSJ2MabwSf5Ruw0ZZ9H7Wyc|)kWCe zDc}Hov&Z-xk)5KE^Uyv}!nNJ*9p)~8vL6HA5VjKkq<|Hb+&wP{hRV(kKDD^Vf&4 z*Eh;u-_Kg%vu)`7fHiO%-;XIwn>&yZvhNGhLT9ZNo?tw^j6YF6$$w_&mmKyt9Drx@ zv4hvMZ)ll4mwm6~a-J>7{~}_}y90Oce%>PI(&XoBBp;{oyo|G1xgTLKiGSi_`k&W5 z`$}_87qsYI5;WS)v$f&pYi?W~d0^+pP_6d3(!&R8e3kxM+rF^Z6<1jMjw+APR`Ald zJY0L#%BD?qzEtyj#>(8P9?_z2RNp~tvdZ$NO|xlhJ?%EpZvDoTTD?=C>xcBH#z5gZe1*ycEwl9ERX*y~Uq&m$j9`BOP&UW+JiO)r>8j({V+abKM1n^ic` zZxubPGSNWpndtPwiJ6y1Cl-gJ6IX|e&3qTfa?a@el3(SVdF0Z$Y39C<`^#^z@89y= z_t<4iUd=hP$kFOUG91NL5^#Wps(?C5Qj?PZvz&jLsQDGh^{>Lpv_bw1t%W z7uo>tz-Cur$fn`P-QN@J-+j=8pSc8P6-^9IFPbP?i9TCAvCz8f;Y{Wbm=zV=cNGJ7 zT^E6uO6Z_|U3B7_S&Jqf3NJSAOMY&@UwU!wnK4rgJ?y%@CFjf&Gwl1)OLEUV@j?6k zj#i$3bZ*)c-?4vx5gPkh))yu|m9lu^8}EnypuwkR-8u1%tm26u;cEF8KkR=w@<7t* zue8(?U)9JOk%N8<>kp%!ztwZp=Ueh{l)@K<=QD^oq<0kOW)p_{4wirW%<|205&t{xEDT^;4tA{mNs}(9;$GD^X9>ibvBKMmI>yEa&HjCr4 ztRqj!7qs6TR;-!-NE2&@*3-o4BA@Dr;r=Oh0lovi%{~0?Ty5oszt~bg{wpoH=!fX| zuW=1DRE&>2P+;jBVfV(x?BtIAO3QXrCP-PQ4Ecb(bUo5|bH{zHWt&@`c%gSHAHBS= zrI>t8(dGG@a+h!4upJn%Pqx7x(@6cfYhuS22E1e^T-iFZod4-BTXr3|=zFSw|*^ zIq!`hAiBA(#+*xn--me9@x$8m@7ldKJ!0D*!T;UYM?2zu`(zwaRMQhbi!m1+6O2@z&MDrjSfbC6OuD*D@w<@ z^2Cm3i`O4zr+vl;mCYQK$CGtk*3kOPk@01x)6Dr8=?KBRaQO|JGCIGu+eg_#WNAj* z-OBGny?A-rfvoiVH=kgRrH?`neyjE;q_I&XyOcS! z!f*Sawb{^`^ubc_9#l?K>^06cwbWtDEp^IE&$Pl{5o~pX zL-Cf5JdwQbQH%)JE^`ev#LN|$%=IjOf|n{1aP<)FO19~5NWT4FeEolhuX`MP-RYBLQEMdzX4}<>e! zFmBh0d@FE!0e%|sqWG|by&=iTm*B$=_%Hw;n)MHS=%)?wmAf`_`9yiZ74PLf*P4mk z)B5F6HtmxAUZO7ALMT{@&m5 z>lpc^1{Hq+JkFSFsNs~k`Wptgj>Mm}N8@EF@%m@+=l@~+@6y^B{O^(+_Tb+vQvuW;~xkAwfa6Ywv7zubd+@A`G8$WQ<$X}5^*=OR` z^B=dC6`(Kj_i#oU9?*V*a;ZhhpA|LvvjSCm=jZziF?3e0RZ*j>bdlOv34A;FEuE~G z*!)?(W#zP!zumXY$JKo&dD6-E)2HmJtkM3=$5r-6)TfMW#tv+o%w4N$w12C!y={Rd z4~x$fn`7G%?s|UY=h`#Tx@W#@SoGpC#-(-DBSD|>iR>sRPZ=?2T^m=|)Y0E6%GJZu z-Q%q{n;xH1-9%aC-rh%yq-2_rUzAg2!=%n@N&dFNaTKDWWw%>#B5YLOv+=G2jKp)B}I7PGyTm{D{I!&}H zIEw!o#m77^=6L{~wP73CoexiZkooKcex^QS-$uDc;G(sl;4XVKam?@ZTXWe={jomblV-Q_TW&8$z!VP0GxZxV=s65&zTN~SAM>wgfDHy7HexG%uUw8!9ZSbZKd~FE^ zYJI>g2K}}fINLerKW1pzzW=bfmrusuaFz4iS6qH{MgpC?evanD!?doo$XwdBoWCLa zc8chIIA2K{dx~1OKY_gxg4PGYiD2)_Jkk50gAe-|G|w}44Kvr+BcZ<6!K>CW>n9PL zgT0ZqpLT%Ljle9MoIL9@^t@zN*muuv$&IvjpP}~-V*X9sf9mqxT2K4~Z7a7=5pfl> zIS*Msy8NhQtz`8`&&6jWJy#r!Vi2^4-pBuI{J+lsANYTRf7{<>%Vv8net6dp@A}w# zck*Ti>~$}Dg3N(ALU$<>tcBxP5A_GeHDupw=k5Cg<5u3j?EkXqc_%S#$9VQS-|i6J zFFs%$`N~ArK~teqV3K{nE{8+s=_lAT?4_(?>Fa!cvqmeSY*l({?R~^J$+w~My~OH_ z^^I+q&oh-*Y-U}A{3f(F&VSGDi>Q;m#<%PsG?-oETegm?+ItCHhCgr1>eP!;tJJ3W z=?&U&+j@bvUP!U7UH8X(ThwOQcVA7m&-&8Ni#F6;;XIq?TaPa<)Hen?(RDpBP@{mu zYUq`{DI21FxjMPa&&P(BGp<7R}0k!k%*v^rF}W(UQ@%Puuj?#dGOr zjZN>e(K+Jv7m-^b>Pt?E*TrYzb;;S!P_~Wp#L};dCyWKgg2QAJJ7M&#gTHrEM)OwR zx^4lcBh}HkMT_s$_DJQX`@+p-oRBu+-R_44FeP2o}oMH=whfe_y;ovyW^WkgJSbmoscQy)nSI3^WNfBTWS`M(bKL;nl&rzd^?F=$A#ubo&X@qZSuoTS_q+>5rv zci!Jqh)a=tYD#~;W*X&ktx)qc_UXlo;fzByDf@29YGkipd1GHf7w7o`8=BG&)eQ11 z^wBz#Pgb!7)Z36t8!D@q27H+fc~&ytU$VYbFm6?i>=`e8O`#9vT@bb~6`W zzi6tA@~Ug%b+~S$Kjm^xvjWF+sH?tIH^zRSzKbDR)O-tQOKWM-$BYs9;bn5Xx%}`+ z%DVb~XM#U#!pDfWtC}+qBo0Mmsi5yz*m~M$MIX*3&qqdtJ$}ylPGUa!8?F8qkWty6 zw!fJtTon;tmHuh757M_3KfZYe{BrLqIGsWKg5n|BH{V$FWA^@u7ue36%t>LK|8zDwrq%8c+~th?G~O+r`^Q;gh`*q7GqqZGq)}=r_I>yeJR)?dR9pN zNsKG~(zEN2GzR-wyv^sX;k;uNeqK;)jn1ZW|2+4)9^~qkQyor@wM8D>bdY1j>(5HW z}ccJ`i;@RRA_Cu0~t=qiJs=|lM0RYWXd`t&&b>?-<%!Oyc9;Yky7u&E|YAl7I{ z?oT4=83sS*_fxq)Nl%|-;(5{|=_BKZw&U<)+AVxGop#T{&vfv^xQ6gU-LvpReem;a z`lV;rA88Esvqbz%J8P`MMS%xDpL6hY+d1%ahVMnVypxEZrAD8`@2|{tz{@!nClBw$wrQzENhVrI!H_x`(o91Onwo&%GbZ1GBb#ATxvyjw_4Vh zGB2ty@!yN_RU8cFHAu!R9>e#*Cfo95D&?mVKPdU(EmOu`+Islw25d;>p}UfGB=M&Y zEDh(jO!Xxx$R5rai^Lw2o8gT5jw1ywl0eAGTIe!c-+=^UN9Id?;WRI9(m*Mb?)p##PjGB0nnmo|e|B`=O0OYud#0eUm2I^2=V& z$Oq*8o%BG0+(O@*a}mJ1>!6j@eaJo^G1JQ@*Z{IGj2=6PeR?R8MSj1y^=5y?82fxZ zYtFYT#vb|JU$S@B`S}iJrgfzKly9Kz&%S}=Q{<A{D(UiA&E zxy-t@lJfvPJZr>OeqoYqeyz=<1Cxw?B!-|t^*WeyE_1$^eQ_&NG|{$UiK~4z$BtF4 z7;Da7AzKd@hf1>Kw=icFpvR7}zN}cPPv0@VuJ*6Qyefa^Omy&d*wkZlvc8TD9>HF3 zOU=nL=M&~yKhe2`0(i+SvzjvL%DXl~UyZBR%ipxzZIo*lT!7OJz_&oT33!j6 z=V|#!WK+mL>5k#Z!|-9BZ@|={+HX`pqF8BgVaWZ;0>u9KL%ap6{aY-8GaK--+ki0@EgDD0e$N)uGtwSL1PP z<_H zVcvg~Y#agqVf-IP4u6=r_YBW{&bj7}J$KgJd+fRI)7-g_oBMfaV2@|+??eNV0q)#v zIcM`-^Txr4UgG~n{v|{5p(|ZGSl51*d(n!!$1mUUpPPs6f|ot9^m3`mzINr?jPuC1 zpOFis&?Da_!jF<~i;-`|9{INJo#b2Os_IwI5cgx~^=!J2lWpLqU9xQuxqZqqvh6gy zU}PIOF>-4#lJ!>Dk!`0Uwrrb8j43mn;o{SM!a1mkl(zfjrs zQSgx{+omVTwy}SCXW3Tsy?EL7kLRH6>8@<^*cacp<{YwZB%XF;+bGfX1<1C)vd``E zwALDNe0?t21}!`X9bJfQ`*Z>vP6OYOc>D#)w#<0h_NjBh0lVic{&r;B3(V_6WZSbI zIK;u=EZN51St4A{Bik-ZnD_ra$Gm%4a~j!(Zu82v_nd3)Bk4CswyoFPFF>}f@XY<4 zXka9s`{p+WA9|4gP5euq&4317xi*#iM7g$~Z)v#eou4^!&Gi@9`|HE&9oKHZi!+xo z>~Z`QedXBWTR6Kj89iKy9?r(r+`_X6=iy~TFG7x|;kzlo{%pezey{ZG1nZ2+CB+&c zhdc$8I~+yV%WwOs@phhBeRESef@yc7+HIQ!;#JuO~JtA43uPe2_hFqyLOuqy0^@Uf8Jhg4aHG{S4k` zmxAk00H z))J}cA8TkWVee)CBQ~==E@y8$gzoY5IW?hA`S^zPXTWcN?}R(WZR^4?geMR}FUi8s$bu6EI))TQ( zuB;zpOQ`c@%HPSj?tv!1Dw~&mD#pQ?7-AIs4ZoS^z})%PsB9M5E6p$3e7zGG`1jN8Bf_==z83zvO-G4!nS!J4BfTlpv6Rd<-7yF_7jtFE_{9LUE=FUYU6(ZUrqO)A76iZ!RD!Vi?5y6 zNq)xXpV>kVk~#R%8rSh{J>;nNnfVSOd}cLV0qqfQ_;eEcCXMWI7Ruj_zit6OY@MSb zPsDD;_%yEbnOKP={CQJpOLB$$GUHXY4}U}Bvx)Cl>=qB3_w?D=miT`8ZtWjV#n*&v zZ0;dest5mLk`<~_jFb3E`|s{JS${qq3w+J&{g>e{TgUk7@b5}5%$>RE=(L$XI5BNz z3;(ebDb&?IY9a4JR>x8K+qQqm+7n`bw{a*A2^1;#XPR^sNL(r(P1&|Tv>kGeL^>OyG z)9}Au!MD#JBThoOxa-(IMOH0b1?&}1&__JMACVJx?6;2G&whL36uz$l?n~K!zeD@) zt9{GRD+}w65f{hxj?ejyR6#qYtS`0n0JeQTIcRc`>0TYpbYJ>KjEanbbb*sh3%t zgC;+X*C#T+2Kq-H>s-BL`5%yzF=Vlk_57Bse>9D=wvOGDdk%OhKa#Un7_ytxj_B+s z#I5Mw;|nH_Cc_BYI<`#bUY*f7F8dWp?&=kfcGj!eJj!^dYvnukN@#n8Fq7azjMr_MEx1YY#w zV^6|7K0U%b*70o(cOH-b4fB|Gf%BN~F6Xh6ebVFXaa`%Q<1>!456}j0#;wg9`D1*^ zz(ID^R}oqxlekNh1ZI>rBA_#fc^B>!bE zjIhqQ*tT<~>l^2x2y201JLfu&4{gZ4$&|hvUT-R2nePME9(Ubo;t7aJ^C9OZqZ>FI z(_D|PsyDhSiSPN^v0Qb;sI?=*Mk*uUsO(JX+it#x70V;$rcvj#l)pFFa1pvdHcSUL zXCdp_Os%WXC)voh9OUtAdtG~YQB3kKXx6ogxsZNkT|2y8#H z_d?j{x^~K*CA(=ybNDCG8~5*4cISHNErz_-SbWOUG^D?syy_LU{?2A!%Ln=x6?Q->$ z>bZIHs_yfpl=H?6}&jmee?dj%ywc+lCd6;v4-a)K! z&pu*kd6$MgOe|oW{aTX%+kYGhw(x^X(+~U&upM)Ou=Tx5*ovO^jb9Tl`y6;&3e8`_ zzn8Y6<-11<`+@;vk{Ze1}f+q0{})E9>|p_{HMBH?K3)T7#PMT9@J%^s^q# zWj$)nk+B}#Ox=9eouc`C)|YBa*AD4e`MpBRcWa+nv>^I;F17sVsD$5&-}b&&+zE1$ z*gwwVX${O-0-YIYWem{e!dBvcwdR>bTI5d-Zd^ zK=dJ)s;-{pTjcy??(pCdl?RTTy^YQijM}K1%UUyydS2d>U){&KgH-6&y$_pv&JcxG z>`wCB`?*h~$$EWLBZOU&8X0)fp-C5>OZoPv*WWBSiXQB_M`z6m`>QI0NmZKvD)@Z% zq7N_@ozp2J?&=C)sJ^wXP6n29 z8DlQ_T^f0Iknzt{^ zR6#6Rj4=l|tD~4|-7A(hiFy8AxOU<&UHooTtPgxAyx;G+-(c=-dRWW-Z056y`3Nq; zjqp-DIJoB##^koOf^vy8k?x_16_j=9VLf`zOAnv88r^@h;tm6Slc1H%u&-IqiWd;a z1^g>U2bu*l#bgv=BNgL&*S86!i~PWwxZLVi>Iz4#>`A=@o#_19I{tMo%_3$_XU)ZL zc~(-@c83OpE1Mod4ch}JpGoGtPZKzAf>xO85#d7daQc?sBk=YbczX@Jy$0SswEX$n z9(cPq9IC1h68F#e8t9`4dqMIc37(c5S`98`-zR}f$sygx%r&{;dFW$1?N-umCGA$y z?i$){qTNI2LXDw57#eDO5<1Ln`^|*5^(_OneVnV2C7el?JkYqR7?*JDlYC&#x>uYy zG1XOnxBT$X)ajRpWygT${!iR%uhLJyr_6KNMSKsO`$U@A#5X=%Ir0_eVtM{t`k4ps zc=M-A=4}Pe%7epNqW@*|SPt^j$b^HoOlZd*Y#)2??pLu_IxZ%^?3-3~8*7v7H?8k0 zrm`K~_zT|YES_6-p_7A!vPYb<{Z~=;pLj0Zy7s1Y@*>Z;|Jxb2J6`2{@X~um@Z>WZ zv*K)}|FXf+D(EIqQaG#Z7km$i@w3J?@qJsMY5#LKWgXyq(VCm&`XuPWocD%Sk@e=A zoASR(u8OABM#ptJcR;K+W#vN_oP~c~Rn{vn|0ccR!Mo^b1-MjSg1eu2Xb-ClJx*?B zbFSWBk}-?-)f$6nHzOH(Bri-mG^=MiFK6B(ua##~ek8TKWCR)+<$?7M2i77JwZXTF z`W2t=>KOT{Eqv0_^TpvnRT4TB9y%g_JMy4Kh4Xf{l-|8T1VvztoQHAv|c!E1ao~c5s#h z&Ln3gSG~50VFPsGD&7;zy{n)x=Zv3vcI_@MircgDJJfD(dqweQG9eGeA5NIxqc}lxUwcXuCfOH zI#PEsO}aL&jVL+!3J?1lGOe85;;q7QD{IoNB@eejry94nKWi8t8w(!G{fUha#j3~S zL$S>X_}F;C_;}F9$FYYZyVHCreeW74)FZD;-??#O$JU=0C*M8~P97WyC&O)Koc1N) z1Ws@Px;xZclIXF*%J{}A`P`2U%2%!Z4S ztt0pOF51w_cUUvf@sG>?S+aQW~n0obPB<*nPZ8eD4>CO#+b8%?r)s~ z=>9VKoAa%K*KPy$!1dG*eAQ)T*3Q9$p_BNV7qXAne-+nGo_BtgGOVdO@8Md;H#wl8 z4lCH)wk^Q9wb8(2Ov5jetp__Fvwg*F4}k~as}6rr=A5if@X`Hc&Zp(`&Ai(yjqjT3EOtG#z7k=*^ z%I9z6w||GV_teFH1EW*7*w;>e8`$ujxpTuNx#8=?t9I^)?5(@p#&g|xXbgPow{*g5 zf*bTW0eHCgmvdjIJOz|{t%7f@>pTr*D!0_txMeUD#@FFr$Z*QMzLs*nG0lnPL`!ww zwQ0t!+ew?U8HRp?$3$2PPp|E$tLgeG@Vp27m2tL|ddKMJICRx#_+d2kHMZf83Gg}> zTr(5O+2^B28{JwGjOVG%&bNepimkWaUme*IZ+|O}rR`$kgZWm5z7wmM9@(}}?i;qr z70<$XWXf<3d4l48A_I?j{HgtU_IVKH+;}@L{ya#G^B|qEu~}U`W3xDaKhP8M5A>$` z2io4?Yy;;++TZdGyuB^{{KNE@oEYJs6N}C}eFNoN#Km@`=Gx~uL%GEJb550aCy9SP zRq-C1rViTILC!Mh+yuIu+$|@c>5JWLzJ*=)0pGIeqM7&lmZj^;Z^;Ig(^)26CkxNt zwCN#7HW_^=J}yRkWxQ8gl9lp@)_upf%)&OR`<|UEM)kFBFSI!CI}^B4SMk~ISWI2^ z%N3uYvXb$!<{Z9z!C79)_ER>opONPF8f9POY{+PA<<~g>@EURFuN}%6c#U%luhHIX z%>R?Ltv1^OxdR=*D+cWPp_`G~>!e&K?FDJCllD4kuaow44x)?px@b>h?7Do4`*`-6^IpEIR(NrXc-47UfjuU;x59tzJipIMGJIDd{&dQS z?^<2HbDl|m7`_|&J=*B6nE0$EXP}$d;+|J?26~BEK1R%T+Z)8Rzr}odZq7Q+8l{6X zG~n++vmVNG&hFqx_3k5d!Vg_LI3op5^uQCn>?4XVdK=^U!o+#O7hO9zD+O=#z#F}p zk%5mVtOt*o{LI7gd5XAw+2kS2Xy%Y@DQEu)0N+wp)>p$hBjr_ zy@v0^)}!Kkif8wHbHFXzR-@l!5`FyKK@Ne{u?z@R`>G$LNHq^Y% zm?UFwPf;ADtuyWMj7HAM_IJmb+JMbs!`~TOA9eGwaT{o7zAvRYADWsE9oX&Y+w$(b zyzPu?xQo4dd(Cgp(anq5!8rRe16lG{yY|qTrv@MD%goElB+hDku>7d;!NPl`Zaz%U zSloVx$2<(%+Y+ zK~H$-=-4#$#FgZRh~{K{0h*G3q5t5eCcbukI`a15WpVax`zUKqTYi9VYXpcr4Ga`x zv*GWm?!*_Ob?)oXP7-V8WY)9zxSH3@AQua3KF*)=ZI$HawaUxFZ~4^j1BNziFEch^ zdo(cc_Q5f6akD=mj?SFtxFs+!i8XTvbIz08q@4Uc(>cr0QJQDV?In4{q6V4^;d{Mb zFPZMXLvFff^eb5Vbw=|{{(_~9Ax1r|n|1BNk5k6j3VBX0fg_?r!RvYMe9i}Lcv#Fc zc5@zkgyiuBrp2s_=Kxo&jqfMMrTYgt0|%k6O#CC=Pvs0~P5e{FE&tpkVtKmhrwPBZ z){x!oZEPpkLLKiq@RiQRFRAA}JnvnQN8Ekb_&C#ezZHM!G2l02X@Mzoj55cu%bWP; z`(dT!^wACcq>H3ubl*f=fqV>ojH8V2!o=9iQTy`AUrD{keAYFJ-@A&~u^xU8TBA)a z(02Godp+dUxF+8>y0n0{+nsjHlI;B#XBd}u~wJ^`|XK6oW zCGV8)EE8OL>D1H#ma20V^e!6lzW3hC7hDN`1ovEISsrjVxgPOjO~Uu1GgA@rYnAIt z-^%-wjvtFTX0R6Cx_s7$(if__u2aDjf8le{yh9s z{&9WtGUT(oWcd4M=%-^}Ms95jWObsOx>#Ryvv%xZtc&mxYh)$RkPRN0Zt2@PiB8ca>sCvcBz#Y9HL{KXy6#hqVpyKUpf% z1x>qc=Yqqoe96t>_BYUeSAI^G+H(7uMn6d<(`IGM9>KTj*7sB2TlXI7dh2O?hiFIp zK^oUI;x=_Qx&9aHYZ~!6NjIwgU@G({Rz_#rMC&EKAcxWV!coaP4>f{3kjz%9F8hO7{NBUTM z%C0`%&R$9}I$8Ek<3?Zq2G-DOBXK{bY5APmN37&3_D(iw??n41qQyxXAF%5Jc8>lx z{hfJ&F#@A*V5L5T$mS;cN@m|?8&~8;)>VQXxf2$**Bo6u{>c-M%-w&Y`)hBXcx3qv zwL93iSnR9$>GdgK^pNL^&6RVRJQO=>*rx z!Ju}v2Q64B=YYz~rjvaA>3QIk>48%d@b$lp|8G&V92I}dGtihkYw!54`sNQ{r|T7XRA;ifZ$@7M$47y47@4bei_Ui_-k}@3TKLUedfu9#qxaH|>h_YO zQFVK0i?bpF`hID^7i!)H4&1sOstZqh$FWmzz0&T##OYtQO&9BMjY0imli2IC3VVGP zXQL#@4#9KWJHT@nFtj{>Mm|*7_RG!>3a0VjZw>p9E9?O)Pv1-FFVwU$zHW3|8vgjX zoJ-Mqw}&+W@dQWaVvpW~2m~d&u#lIyX`${CebpZ0>tl zryOVRDeN0XY)SjkG`=CX9ynnKAbWi#@1QA1z895UV)g#8hdnCAF04aeq!s#%-Fyt6 z{|sM7wZ>xZ_fM>jMe*gbe(lY-_I88+W6*}|hB@RGaB(7C;>E`t;R8PDWR2SmeHeQp zpYJt;PszFla3p;%zR|t(oOIGEwd2u4GtbkG>POc8I#=GZS<9$EE6Q=v;}kNj%##}CV9GiHz6 zO7@KTo!a{W?P*M_-7{ELxU>r%2#sPbY^|+vZHTVYcscU=W9aA790OZ-jIuY?mgs5` z1Xl^QxyE%~Nf(V&~v|F?LQpcE)P#jMdl~tFbfcu|4>9B4=dt zHr1bA)9mD*9kO-0=tK67*VZ|pK7grf>&T9%$97PR%0b75z?U<=b@SN%2G&)gg+=k7nzh0UXW6K$Sep1oj&t5VM7ZR%M*ueN9OI%EIzoL<-5gS|67C8bJZot6}8 zZo=*n97LyrgX|t-lX+7M|S4iq%iZdZMv<@uTOYpem&TA-LmW0 zw{z{fe9e)$>3gv~%(aiX>N`!sNy(WTH-+Jwu*U{9^JSi9zC+(Cv2DC7p_fp}mC~6< z>ftl-#S_PD8*j&HzEe6n^1!sEOJ)h~Tha5fKYH%;!DI2V`{RsBHiwu0dhX0Y-VF1g zVwc?h)Yqc!LBq?5{dCZe+E+i0Jldr-U!6&y%lV3 zEVlZOBiAc0w~kEZ%*Gt(duy?Bv-$e>BiD7_QR}+N>((5dO#DUVa(`{o!S5bj9oT$A zu@aq`*nl@yHfwL?5%AV}haImXnbGsiu>ZsO3!frB=EK%r`%D!!7(UZm*wfiE>f{f# z?@~V*8;*6=0mjqy;mF>4ayrWY)y-MYZ1^Jf6h1`anxuP`TeLS|T@jvQ=OtBs(GdDe zYrT5Q+7LyTgo%?0`+Ut!=sD>(I~QD1X#kqmo*4aHE8o1XgZP5GLv=M{=tu2qA4BnY z@-g)WlCDUhtr@fxo-&-@EDaw~H@>Dh#GWfYhjr`~_}h-QeK-P-BsX-z55K|}&s+xh z2D(`bG~KwiN_^5}NrtfQ23L|1xxI!g^BX&(dCC~!)J0^QsC!C zVj{}L6TnE{o?&lnm%b<7p02!7@2|dl^WZ~q&&uCl{guRLk@r{M$+ICl@nUPQOS`gP z+V(nhdU1s3%n>@x_t-2$^k}|+Fnm6$jD6UfY+8JJh!!2230izbXNL?e{??(z$sSt# zt%nvRd*DScEk6H4bavRGMQk`ji_;uhq&@k0&!Rw|^VqnG2x9zLDuLazb=C+Mz@35s41NTwQwJ zIoYP?>Cihg*zeHb9?_toKV-3dDuxEJKdu!G^32d6Hm#vSo}Wd74o+MeRE}-&Q;fD6 z9U4sZQ!F87s)v{)#f_HX3oDA=D8wcYw3RUF6QIw6suX42_` zmPy2DO&ON=TWi@*nJ1YGXB)>AT!xQa?ZOaeV7M-5cQbD=7 zm4RBfzUpa>&?~rP1p2oUYv&^lXgzp;iTsrFmwv4J#-$~*vXL+A*OtizAJ zl({9*?pEvsKXtXv%SI0bz=zsU{SNF$*#+wBIqFwZe--t!ssAG7ICD9$iuzh-1c0Gn zsj`0ZqU2Fe<>mo|f)uNGW!7*%8+`9CKYH4E zrt_Brp67ou_rZp@%{64o_M7{ZhBwSLY@WU5lv_z&iZ1Ts=srr`vnBYO9NJ&~BaclG zjqnb?67-)3J-JInvp#hEM=wr__aAK;Yra|De-*HqYVCWa2|3F*2Z%om^;H3fsgvzI z-v`l~wvRwL2O_(*wtkPhf9d!#w13vaJ2!W-(Yo687MdiMbTK<%`j?so?Ad zVE!V{=5tK~CsSE(nrHYr=R-3aIFHtbKcM{=U{wu3>_J2R~YePr2v!@$j@3QR^=&Vl(q+1=l^{DdNA1wg$-uUv*JcO#!yoXzZo? zWG|7kw+`D&G?PX=;40>>`Wn|o^nra!j7sE$A@aw zC3&Q)Y|38fu>_xiaB80aoo#B5PQK+w!H;alN@Rn^uJ{Ix^9$IFI~nJC#<`wxu4kO1 zR=ij{pK&f={g*}#4UO|ZsTXG(qN`sg2VI2jve?r)+Vm~XY1qm@6%30 zCxw6T;L&ye{m6;wz0D`WAL?h1;RST-XItj+ZpMliYG<7JY|HK3-^jiCcK=63zH@Z` zmv@|KuN+l7Y5gc{-p{rK?&lh`uGV>&b>KY>nLic3TmkUTw%EH3uC1wr2J*S@acDsM zu%kBLceG*ewiEf*s8Z?i?3am?y8f=nNhcn zzCALVI(5|Fse9=v_6&8-tDp zd9I<4WK6*I?G zdnMO$e+~bmsB;zT`t z7X}9Dz#zmk>7^T)qwJm(<}d@D(qknzhZsNK-bMeUG#@&>c0&*Tnd#tJasHaeQs%Lf z_1EW^$28`VLj4)c16yw(46H)nqdVQIe!qjmZ!$l{1k3JAH*?arSVlJ_aX%8hyK8pY zqnm$tHr>1H^c>oC=|A!NZ_o%ZLC*89b>)8KQ=-iwnbjK@eMP&G?}{TH(}3M_^^D0@ z^)cY-%A0vBQs9$lOJBf$#ex;7$egH=Ij;u-SA1&4nA#`!eN%9BbE7Y%G!L36V!t=r z=P&g^kB#KhSr5(YyF$|QvNJotndneg@r!I@#ZQP1w6F0B*Fos`KptOjxvneZk@E~hn*&MP9gl|9gWE7h~-;M|x z{t5Q|6k3?QJg4P(?A$Kw-0jPQoIPFCq8Of4>p~N5#KvH68kmKzklnfp8!`ntYIv{p zrfajJ6Z(qaBhke4rJ1vG@3L*lBGDOTmqL%ZON%&Dm(uqFIfN9ir#Z<+EyI>AVxB?j z=I-MhC$^<*c%4-r34gK`Wf$HF9kzi(>FYbpy=^-#HTNo$(y-Xv+csg8`ysm1dixT- zH$1`GOFq4AVKU2Z^8NS!ac~a|&`l;VMItBmEoaITiQ?6fKwdGRl2zc#}Zm+0Wy*yA`!TO<~ z^Z8BN+U{;Cy9Gs-WkzV*A#d{eExLotc)){9RA zx6}yF?6uxcJ@a`H+37tWcOW=CpXtmsZa(88J7b%CJ6BmJe;7kIAp@)REg0PwFW*vLIJH4?Mq zXD#&v*Jt@3qJ7r>lCg6=FnI19^WS-a^Y48Z^A}%e{sFGQ@fx8C!YIp{7iT?Z^P)|k;#uKGcK3gR3-3F3fBbS_ zul_}kDcsxmN@{pt0#00?lwv^y(}x|Hx_oNlq%Xk^_uxuw>%x1+-vICMyMXsP2i`I0 z`+V>=a0cE6?jCr*x&3T-cRTP_?$bngU+%)2b!-PP_rlbc0TJbQ91+(0iIZ_*{iI@M zjJ`~2_%Zih8ITC;ymP>s!%~KxIb3IduOnSN5x+ma7Mo&l9p4+8Xe~T72pw~N=~T9T zj_FjHb8U3aHQ|52kAJOlJBbGhu>&TD%a48=8efZ@FlYsj%QjexFQrGm6uy(aj^{Hd z^JU6R;~M08oPOplRjfj|LB6eZ(0d8_BiG*-uFbBt`uWDS_Rx>ahnMCrnoilJvj&5{ z{yc2qPg7s-Zsc8talyI&oSDaPP<9OPjpeHk>>~Szdg#nto_d3`_>uMWWE)m z_a)HKR4WPJjIUbbi*et>{OV;#(_Xz58sf?J+n|rR@Z^Gco?IdtnF~)YaCq`I{3n#r zo@WO%WykLg^W-M+5oOz{(*gg=hLkO6Xr;pTQ)q0{u}w1>QxRk0Y<2Ut(-j*!8B-za z6X}urA0bAWYmD`Vn{QXT#oLbfIDF!W^KPxIW5HuoV@CdG4~Z0=JURuU&4;=Yf5 zZ^7U^6Px7%6M|l>WRzV*wp1uWrwt)+c z@3`VVu={l1!~ILFm*i9L#O9XV-Go#wQx$L77_ z{!s1wfwGnb*t})fy9dDSebB)Z$k`|G(LT1cbXFbXlb`hu%%^$jRkQL{4jEAeA2cxj zGTvwMUFE5ae+hCMy=Z*C9rQ1Muh(|gTn~UF!AAaG>4Qw*GKiet%5@!W%IBM=a?E?l z(&@%`tFsI`tMPAU{$Vrc1~Y%#FZ!4V7Te9eZ3owz`&3i@VRJvq_)P1}{b=+2+fEtz zV!y+EoLyy2sNP4e!gI-zu7lXp&NqQR^aJn_f<_%X%az|<2eGC3CeU$bpH=ePl`r$i zIhQD3y7B_VO9Zld7H}3L%Kq*WYv4x9*Ib8hRA=eMQ*E~@N42ktJQ~%COS8v3w)%71 zkcYQM24tUY27cnH4tVRJXjA;dy@_{O0`KK1<|U7Q^0E}Srgca@^>V?3^suWxm(%7* zb*6*cq>|~xvydOeO2H=>Y@U8*-G(S@>0NSs4dQ(=?()G88guvqvs;dnuY5l7McS_rd^%{m zcQ}^Uv_112ZTAw}dyMwoHWV8WCKf@kHtmmzJm9vw)zdEf=5NY&`M^80dxdH5idph+ z+Ww{Cvp!!!XP#@m*}h=k(i4LV-$OkY@8UP%-R=9YTZzE{2bl)XnX}?$q}HOuHvagX zd84P9JqYZZ#hk4^AAj^TN3yaU{W}=_NZ*Udn8bKL&c0^3<6R{>t+4iXUEK%lV*O-shSa>mYGM;^mN4dz5(7(wJn-tjLkx!HT0{|K<~e#5K+1 z**0iu67X~T+L{2HXJ}t=QTvL)wqY|uyj~`2?oF(@A3{#l+Hjbh2!~9@xrsIRL&%BR zNY=U5XU9G&c*NV+u}#+AwZ!dcE(Nl${}<=gxOTvEvW0bKZVunvHsI}#;ShGPII;ud8*jAE%2k@ApVX5C&5Acy1IJlDl4H)$v%~F;rKaZ zm=`AAcf`&tdl{N8yPW)D=*F^i%bbPP^Zh)ZVq{m6IV+&`h-8<`ixcSA#5pt8imI<4 z4Ira-)A#x6yvJK-!F{Gq{X5k0dFxzh*O9GSc9pg43!I@U`-ruyoEYu0tMN6HL!hkO zTGp&N0n2i(;;kgZTS=wOz;O}0)eUbY!&{A3a_No0yDSn}M!w*o`A#yjI)1*bTWmUW z=e*{z4d6QCuJ+V>cWXT2Px3eHb>}})8$VMUw?cc)ns3cxU$@%`-Mjk^4;)6S+nCrt zdO`h*P8MB0yQO=)a$ig&w;kW}c64Uf&2}u8i?b))Hf|>V(J4R8$WlB0aS?H6Zv75m zm015_>UUAsmA}gU?#|ag0?Zyzd1tN_3v3#h@eXxXd+RjY_*M=8?6PJ1>EnF;{byX= z`we}`hCN@MrEzuaF^bl`Jfk_BLJ#Z!Ryq?y+~Se_{*%wJ|4_Ynd1O=5^!+tWz^(_F z_JD(K@|We~OIU>s-L5q~c(D0rSRX8)U(rH0@H8;O-ckM}mFxUl`@#kpsjrWyFXYQm zU$QTpzFy?2d{$2Y+o_hn`G(+{sx*0qTcP+lFJ42pp(jWCFte^ zos{p15p?|zOOfSX|7lyAy?>?kl=MJh5;h<{(l&g}b+2ICjU|s5bC+*57kgIgvrMhe z@SQ3b5q`4%CzxAjEB2ffEZxu91lcFs;dT9H|94>;@`io0g=xsleXKbY$COr1P66P_ zKJ~H;o*9{pKCx-a-EVrQ-;RHIXnzVn5%buY06*C=S9@Uf6Y%1~v&p1=IX@;-tf#dX~tE zK4D;y|F7UvW90W1d=%32YOjj+^7*dAO4{${`#*YyAAP*$rgeb!P4$fT##GP#eXlu-n@>6W zciC<~@6}Ek>yG>A!}c$vHL%vXp!qL$#`DkWkGuoSV_`SCN^ReyXM62uH#p_y>KXG? zxksF5xfj^yh2TeeNPZso`zRfj{P^1Qw0$x1)p_Z(eFD4>4{ZJoyg$L_{a$D-58mh7 zwarscui4Opf3w3%#{bIqm8qZD#)XW}jk$c57$?cU;XQY|U5(W{zFg#MY+QhSM5~W= z)WWIk*&TxJ2azo$z*KvV`ZnmHO5c&e@zyfM104FSkMGUcXT%Q$Jt!e1-USg2K z$fhu|iStEOt)~Oa9%r1$EHf|OH&kEX7>9J5V%?C>FLOq=Erd-jKMXN$-}dM(+~-67 zbH(>1>aPxPcq!|?JmL&BH+{2C*QiG(8ya%-g!YzWL-vcKYeKBOQt^8*mYv?QFfX_N z{yd-YFTZ%b#&Gel&bSl52C#1CTMHeWA#eXOJj63UI;7(^Usgagi|&3wHB1Fi6AGXdpP5^a1gy&sI}s@ysSz1 zc00aouYWiXxUlU`bdWQTt;iO&|1GEeG;$WUAwzW*g1x*W9XDG8<(y%+@K;C{Jo_;A z5B1qc9x&&dZw42@RdR6!`lOqB`aoL^6gj+ zdf&}@NO5{M^ZwLKa^Zq6UE_2pb9|`-A>(X>T3U~K1OWf^xp~|SF(;wY^NgKZijD2jo8lhzvg=b(1h9| zhN3S6Ts~rKtmM)H%@bUOX|=fJ;xn7J!sH}S zy(l^D&V@_0r!gD+VJ8ZIJ>aJYz0hOqmr(Q4)9W|*eJKX_wolum8yp-89~whBxi4H> zNq$AqWt9EF;!CaS=;_&2QLaU&`A#CfP%oYS19Yl3+7}=vWINMV4?NQ;A0$3h=_0}T zLg*^7tlHI?V$qDo=%vA4`qG}G{Mz<+DRg#4{yW*84P%lRWu7=VrAze9VKZr#Us%^mrgb?t7xYfjWH*0pbW*DCp};9qNA%a|uuhaI?@ zHdx4BRO~rPoToPE+TZ?Y)i{*;NabK$$G=a6r8)HIq zZefpK`TD#o>BnIUXYqAh z^}BdV5?_0eYy0_3O8?-`-;4K>A@7@c0N9D`+;`)~XvgL9{f9rjuR<3cC8cUg29>ua*Q z9%OyS%!PBGBNt)juRe}E{$O~Q)pC?ijbGvb=A?)lmL02kMDJY8_ZjA$tofQJ%AC?o zHDC{+pBZ0R4OV!5uIgVKTX2nE|A)Q$)w5nc7JJq38u>}ThEPZ8P>}XuT|~QbCqC_Y zq6501ec>(SL-sp4CU+wG-P}o*$(_&_?Rp!2Rq}4h!s>;UJX_|3<|pyZ>c6S|=k zF5A_cXiEe0X58;tE#K7~8jX9;}OxEYQc$>{T@O|NaCu@Ei^{F*{ce>QyjV~-;SO#99&u?_y=-Yf(pQP)` zCj@dNUS2`|TY51L8&@4&N?t13b%^q3z%P|08tZ!Xf^{kAMGbs?nd@=G*D9VH3{N91 z)8LEG-znyMq-C!0Mi(HZ9XDZYM{^|Gx)Yq#V`} z^0|a}4{>j`#yGfE&iv_io>|7{R`^m5U(^<}(XR^5A6~-$U%!8%QTo=~M*Vz~XKz%e zAE-`V|HYoKs2rhPALo45V%9o|CqI6&an)pO3v-s~D_(IKb6fHwPWQAcIk#(7yt@Ew zeJ@`X_U6{O{S=k8n6i|c^m(UGpMQtYHG4i_cpK+%oFl&#*4*2!)zH&UA76cY%5SLJ zQ8Ts8%yr3Y`H(iTEkEWt zJ(JHf1w2!Lyz;qk+PF90(2WPpde(-5+PuWhM4$Z^f2Mk}c;4cX&!6Tr{py!L|Kh@`HWM|~$wU6}r+>}r7yatdPVLl4K7AzYLG|(ddzP}#$ue|kX?|>~`az2I z7z2Hl@!TQIf5+GRZ3NrQd@#LF4)fAj z_aeqLqQ^gcfVMJUZ9(})`~K+TW#*pRO!WBZ2mCfOmwrzcW36UgICiHBI_sdbTJ6E3 zQ#1;z?I+IEe4Qa~=;T~R=nVUGhN1H(&?&m0M>fuXR?i))p&fBXr0T>Ra?UEoceB1e z$=Qp{7dLUtBF_4&rv1N2+l{hDOV4CE?a#6Px?ba`z1OIVu4PdV+SD^0*ejiJoP3@& zbnp)yd@T7qxY*Oh*j&{Ker?8n?W@L?DZW?@A50x-*NPXS;H#dpsj92|vFXp@r;QGk zdgJouo|{t-T=!$W;q<9!^H+Jg>zmeuxc`}m-V_k!c`{yFi=x1?sddX$A8X|Ci3 z>T)yk*##eE>(r+b~ zwpej&8}tNp42*Zd(0gthnX#pc{U!9geCIvdlb`Q}_%!)tttX-lB74?7csyDTkG?bj z_H3{jA1G=?ukhnVs%t%K^7G9(%@-$rJ<|Bk2LFu9RG!->{W9h1`&i0FUeqPFDV#4o zr9T0${*ih)YWuZLVmBC~CB$>8LnXerk~&C!($87K;=8bvn+vo4Xq$OAns|-r|!_ui_H%=~Lnp-%sHabea4J)ZPw=6s>P z^@ED_G#@!iyOh4pMPHlfPt+0%E)6@+C?3>(J?G2$^O7?>PM5RvQ*!>rzx3&9E508) z**${mwdn0)?3Hv#{B-NpH#TYHLt8oJ9m z&jRfY>Ep=msPY&^-XKh?WE#qXt;4~SApy3vHX18qfu)TrMLc{PhWFC^vM?Bdkl@T0};=5__0YjG`1NUU3>XS=v)n* zt)?BPwI`34>9qM{N9S2Qe9NNIr|&`X`|0xm{kWrzJh5UC$Ma8lAH&BGgUC0@ZzPGk ziLPrLQc{YKO9`opV`SN1snCQFW1@WyA zomC8C>^}ZOyuF_?YLSQTYi+6Y((N~BE&}V6$P50pu2Ii`&4K=i=vPd{eA8MlCYs6m zIzJ|Q^rLAp5w=GD?c<`0@BPL^@bU}L(*#gy7@z7OZCaFVz@lb`u!`^r(&*kC&aCU+E5$W-ec;xrr{CG%m5UrOFf~USt z-b@_63p<&u{toozIGxY2w%o)(z1N6=%r!3t8cz(=PE658E~BGKb~mTxYuej`oJBi+ zx1%XGwQo!(I4^FX_-DiuK|k!rKY#FY)Up>xcDU=AUNU=VeY|(PS@n+4zWZwf>QjkN z$ttJ&am&Z5pBJS~yZ2+8R?!Z#O#d}HU;APxkL%xa+hEkp2~wX=eOEoxS_ThjHyh{| z%+b2eGVDba?Gc?n9W7D%86kY6=9c)ndT>Plx_TS(w{_L%lVW$uc;fGRlr!s%(^Y;J zbn7z${!P3qy=Iu|1Ue2t}h`2?Q%wTUC3jqkS-14vKCvG%%y_9k0g%fDjF z$Fa}j+`jTgKbBohUwIk#mvTSl^_3-4`B2HI@z@4Pw^&2fnu83`t6T9)zCRkmc%$vlL*&~u1{8vSVR%}Jt%^encEIHM$iH_D z(-<1OL6-ZR+KUt4MwUrN@QM$ZN8#I?vFK}?8PmZI5~Ey!EcLA4=W6AB zBTGJ|D+hU3cE*>b?QiYxs-x-ud-Z$S^SP$|MBMorLzwe?a`>p;_9I;>%yOPl8&Z5& zMIEcWI?B$p-U24Ns_V*GsP5u>pNz@H@O#=Kw+>bKW}dyW?H1RD{S4akp;VH zj!qt}3hK_U(AR+OpsOjKxfY?wFLzptgQV;c^ zehZHSv~gWBc#Ac=(y=v`e%;znJf`?deo1Xxa@X%t_A(=G+*nE6sJ_$Bzl~4oAqMM> zIoy7io>7jX20hdqjsA3Di${mX5!2(tLx!Hd`JP_g_f=pULfA*Q-xk|64f_~2_AxYH z>-}XP{d=x`3>o_v_Uxmcsl&Dydc3ijp?)0h{q}V=;nCM$e0Z^0TNdnpVV}0RWxMTP zwm`P2oj51O8WqL2$al*Ir}nj*o$M8zMb4J}QFpGY=CwfwV;7;85B}bjXNol|Z4+5L zLLAWn|2vCnw;b^DBjf3x-QwK$2=f;<^*GLgoKW4$gS3iVJhRe5&?y zQvT771#>(;>)t&4k9e{b`OX~XT%q_@F`n#4>QU-Qoy>k)v=#A*xR|kQ&cY<97MfGW)RJ&yx zWz_Oqo~JY0@Q1Q_u~4m%k=n*$o~dwJpToAWy%%F+_)C4S@cgCG`%+ENtx+@*xAYuPt7=I*UBL z{c9}N_IHKwvXFTq@@MqJTs>as>hTBl(2rb`rL|j1LL(-NRtH^5A`j_N9pf3c{RttD zLiku0ajsxK;5SRKHF~EopEH|09q{w*vM&+OzO)B)z_lx?>nh?9-J6cTcgs}_5Zg32 ztz4T1| zMb8N9LdlM?pX4-$F+2Jt^s|0+61f#2w`tfP`tT8|TNS$`p)rdTwldYm92e*kFH_K^ zI#;4ovH|K_gn2&hT#}GaRi3qV9qmndR`&C5<$3wrKVnZ~8n@({6Uv?JV9#0?aaI!d z|458i5{a2{%hpAV(V*83^DoT3@%U}-5i7c5nssiQS^C6DSC_oscI=jA@!QYW#b{U3 z!_e`j2evVG)+^66|JFeLM?{=w^!)#(tzAY=!1itO_gh)#nnL~`4HFl`qo(jjySB5I z<7lCifQjAxwLk4;X1722F3Dmsv9bSsJGvKw$4O!W`H&DXhvE~zub6~~ichMT-=ps) zJ|R{%@dbOml-?%4)5w3`aLS3Q<0z@{4iWaQZItL!uphS36U@S?104X@{4~oDgRfIf>_o zy|8j_V|dlvFi5ZO9LLOGYDGuF)aj;SJ62ZKM^-Hv6RwX_AK9Fr_ERU76+7OvC%qiI zZGXhlHSGN<{_3T)_DtSqv({&P1-+2YjP+!s7$uA?mu-rV(cU=pnf)<~I)BU})WW`I zZf@AS#u$Br_T<{0@9ZnsmY4YEgTc8JovbZYTj(#}>hFhet2wWzZ@-nEYvJ>a*nH*# z_F$KL$YEXuy^^DBe>t{4X2sf7>NB>66Y`0bmQPgN>c&{HP5v{Bj4yC~WToXJX=_F0 z;5guX@&tVchj=uWooFqk@8w-@ohA8)6WU*)72DYgeP@V|H^N7Bs1V+Xj}d&Bd`cC4 zMCGz8u_OANODrIL*7uvyk21!cQp7XvdK&k9q3R2?f6<7<7~)8t+gOQxQ=R9ct2@!v z$>^#2hUOj^vRV3Gj*e;$vF3>z-vv#&J{O<0mbtCMP(O1W7#D&eo3~?O<*`EE-@b6{ zG3nZ~%u`ZcPO{h7AN_M;^6`nC#JbAK6%zx$q`rHx`%Eik{M9$H;e5u?BRx}szN&nl z?YbJ>OBQ2arBBFFxoFAskJtA3F!e`Ur+M@A>)gCU#h>{6dg>$kMfY01OHa0~C!Ywe z@J$=_u>C$%%+t%SdTqwHXQJ7TXZrDf8~>bG^A2>%rNeDY@_#+78U0iJUwXW?nmzfQ z)+vc^Ej<-KhdREOUO(n<+VxXTErpJlJ~cLTF7q^QW^ZuuQ1kz`;jfmVKkI5sS8(3r zC0nu2Yq=)BRCUiiuP-C#r8y4SQRf-y$Nj7c*+uMAFyj7|i{}*{D;d$WQo1KwyB6KM zpLrJ2J=t98?i%c^%Ho-g>L;ur)+undF)u86jP;@>hBv>NL#E&Km-js1)ANklpUqFn z|Mb5#XEWMzo~Iwa4fTEYPmzV~vo~9|6kE_6@4jT>)4u+-_*U)li+L*ZSHs_>@N3yU z<*&2e?Gn|E^J807KRBZ0BV0ojF&A&x-%k z`A+WE@Ll(2czhoR-`VH3m+vV{_iNGpI`|Nx{;dCJox~;VZx`(%?wq3-O)-Os|0!2> zZ-VEmp+oZ?)HjiDQXb3v7LU)?zx$rwW)z=M%^ok zkIV5j(izQ<*#sZtcT)Hqlcz+-7tv2tj%Ek_xcnT}2~nkNAwQUc6HMI@dRzPhXyS9SuAuIna(ySHJ59SwGdI zytc27cT3h_`}O=T^|ITM{XN~T-S5fQ?~ANR^9MuH{GDW~{!crx>{5>(b=Wxi+MC;u zhxqz4$`6xUHRblkhOR#M>YRTaIm*{ndvwU(1?*{Be@Oj?2=dih<#h+Rw#l`H@!6N?Jo6&gPx?GX@;(_aNTr&yPpa^!o@_mo$Yk61>ZLHsD-d~`Do;mO6XXZ!NXO?Exa@3eZtzt|BmI;$^7hKn|Bz8@aZ*JnT0Et09}o6)u-m-#Z*T;52_ zXQ_kc7gylJ{pZ)wuS3VW>e=f>vio!5?*?SlU;F*6$D5y8ys_J#);rnxCh@0`*iLjv z&P$Cxw;fYklZ+S#-s6n}n>e+O*swI~SP^=Eh2rC{!x!o@pEdS#Y8VqS=dLq9Kyi#> zhc)UCDo%q(5&BZfC)#??Jc2ExO{^k4Y(Lp^rTtDh`^tHJ^o<3v z{KSLHn5U9Cjd(89rSY@AcrMgc0iV@ZP+Qf# z9mI3WdxYSf#Zmbtt(}X|KVRh8E9C=`>lGRgzMQ!q$_L6{fY(q? zd(meFvhT$sPO2eZ^6^&4wt%PcXz@__1lf>6+F*!oof-2>^@=a5&q;t6;pJ7)R-F|9?y7xEcq zZ|1$p6Q{;No=hIHWb#{Nf;`}F%^jljkzeC$`Cd?vMAl z^Gn{EME>&kabr)6O~Q8le!V+iD+*oy`Vjv;_1g^IzVpDV*>uptsea1E@oiud9NAON z!IllAEodILS!dac^J^F94IAg_AkHg;!D)4IUbJz362$r0U~mq)IGb#oXM;FT4F>0N zm*1;xoZUg3?+*rNqf5`<+c>WWah4AT=dg=&kBzf8i1Y2i;2d*tZnJS-3F1@@2In~! z=ZiMZrKJHM`h~&Za8`%(aHfqjDTq@%7@XCvysofu-VE03lY_xwk89C0*2Z}&h%aQ3+T@#mANy;rvdaXw%i`*iJe?Rn1Oc=<46Ki=`?r5T)egE$=- zaE#p;;nwTFY@Dq@oYx0~bB>F%$HqAj#MwR=oO~DOUu~SOAkNc+!TD!be;&7SMh5lp zhl9bH;L`Jmjq^c}p8CPyT;}4`+BhEuaqb=r&J-8t8#Yc)5a*V`;KW>;)LqaL7YQ_!MVf5`EMI1FNpKzU~m??I6t>> z3WGR1GvHvyHpa`(Hg@daY@G2yoS$UCG5o1@>3Pz|DGK7O84S(?F3vyNIMaeS4-W>X z!Npl>;}rMd%q8!qm`m&7>pZ*=aajRznXVTQ?~Z0)i^}?V_gKaR6szfXMZLGrg_oaI zKZR3i8`&Q#kZ*o)L8#w&v|^MSkG^qxARav&zb8Afjy$Iy5B`lscU7rNw;zvQ2fc;F zk*AMGCn4ASHcjut*;qZx;57L0=x6%pqgit-9=yQW1o5kK6YDtp_fs~`wLzST8E}k# zG~jo0YBuHDIM)Sn&drQ-IG#I%dfmI}BR0+rL7be-IQ!zY@P~a~kF(}gxiW}L(EFS_+=uyJk=;ygGQoY}6t z?z3_34C36C8HfI(tIuDvaqbG@%pDBQb1r|rY~w5n;@prK=Wu+UTd&zRPE8P}Bs0#w z_;aq@C)+r6L7Yo7;H*`<_>a#fs<0d5Y@Fpmobxl_7`vhV40hvVHcovIXJ`f-L(iDJ zL@D$*HqOIA92SIRYVZ5v>Yqc;|FHJ9*KRx-#5s@|XJfq8wa>q?aT$wHr%poTq{~i!$Tvi~on)PVcaBo(|&Z{DIT?3-qud{_`uT*L|D5YUBJQh;w5G z9NNX<_>->OKWF1S8^oEB8E0Souv@QB+c?h$aVBNPIUJwj>dyolXKN6rAOnu!&xp~9 zD)jIy8)rulXLtr2__HtmbJvbVZJgafoD+`$wW^GXosKQrK%dJVh6#4W$Hab6GN>>dox1Q+M0HqM(toM$rQ9F8A!`O{+K zycNV*HyE7UGfZ6fJsW3#5GOGhoN`wWwSK)B^)}ACL7b~I;}Ea9eEzJB^ZOu9Q3jl~>KEjGJh6^;`UxB7 zgCNd@8E{Pdn(fkao{jTi5NBj&oQ-N<0YV7r!cpGn`ouXXE4qaekWt$F%oySASl!afSwQ_6`O|c`NF*&BhrX z#Mv?!9Oa3?`LT^NGKlj;W*p*GSMEQsan26n{6hvD!{=B5cH^E+D{P$6L7ch_I7Sag zxN*Wl8z(P_vmgV`3u+e)Zh!e^8>cXcQ#Kf!AB<1zz+cRXLY#Q8mA=IQM{jX(S1dt7=B+Bn5QoaA6| z9&r8F8#Yd95a*Q)IHq0X7n}aqi#E=zAkNP+;GjSBQ(V8Z$;P=hi1XB7aFicJe^%Q# z*9CFDpBZOge6`z7|K7&AA&9d)GfqSNsOvB8v2kt;;(R+Z&c^srmp`}JI5!1xss@Ae zJ(oXUv~kLUIA0hHPHv9LBhIvOs)9JhnQ`{T54!q%g^hDd5a*MF!O0zJ;<~Xm&io+G z=*&2*bH#4ZPDj`{w+C^CWX9PT-{|uBK+@XCWx~=GtR#Fi*Eb+R~x4;i1T!2oQ?6#EhDJ5a+K4gLB-?CtPFWtP0|kX23D^y2Gv46dR{0h;w;noQ?5XHy*pl z##tA{$;*sGKH(zMUmj)SJQ2h>GXoBMZitU??MB$fc`AtW;SVyl_l9`Bi*xu+%Wga! z#5t512fOOFum84jeiFoaGcykM@FM(aY}3zeoM(eLJ2T^KjKAZyi+{6mo)6;uWH30n z=po}NPue(JgE(t4oF-TuxwHqQPa&POxg(B3!3FLUY1wsG2mI6bQ}w)cJU*{)wc%Dlne ze!+nt&hIkd7`ytoYgbb?PFE1;tqeHSi*X0n5AL&Z-VNfslmQ2Ns2BUl(69V=8|U{y zoM$uOK+oa0!#)V)fBxCV`5=h1elR%ixb0%4jq_m;=h4C7oHNGcjUTXadV)BMGvFBh zJmm7{?`)jNj6i?+_6#_NKNDR3RNFW?L7cxG3=Zpb#AmI4@72ShL7Zzd<21ylyX_+8 z;XJSN?1meheSRKbYX3O{gEP+c7h`Okvx7Jv&y2G#{)x%> z!TUCyVdIPr;zTmzU^iU9b8LajXTzVoAkLAM{n`ziKl|d-T|MlyaSDSt`!nN^Z*lF< zf7m$VgE+s)jKg@Gt3NN;I1__7&u74)T{OfOy7|nFHqNC%oaPKTw2Ov#tJ`n-CmUx{ z5T|i4IA3%1@F5$gD2THxGtS2N99Qn&v2msaaqi5FLtet=^E?};IEYh`8K)s0bKAw= z*f^y@oa+XI^A#6ox{Wg{i1V4j;4E};K4s%v8^oEI8E0So4!2$8+c?(+an8+*(-42m zrRO6y&J97FoWbC1ba9Te7FTxFwD%i>IPZUd5bgaduKju2#>9Tz5k{$Ta&xh076qs%xB@ndd#Uu)yc58|vE49-DU zUJW+R?LnLeGvjQGKj7Nc`)r&$gE)6(#-U$1#^f`)$8XI9r1_1(|Ug;;UVH&a!cK z1aXFEz%hK*cna%|qBhR%AkK-#)3^7vidVO}`ONpeVYT9220-_KF!ziN*z_K4fU+~s|hPq8MO^^N*o^)%~n z*{ekBY_+aGG$!`?+RM@5+6xjToQ+%TocqmI|6EsZ9(#%QLAaKEdYSjlz5!jgfvx>b zN*7ifYu8>T-umQo*kfLMnP|^Jt-+1y{E;WT{jL2yONP4pWrV1Y&d=;`KSy`Hao_rT z)#pjpm3*KR!ZD<^43XE_T41o?^+r~BRm610pyr7)#d9~pMYxvBxKbPXV%GYO@ zb)VXAXAJb)>+abr(d_N0$KI4roInb!Ch&vuS{7aGiYuh2h_?^-kx;+jS-m_g1jC^q)(Y)(6{k{uDaxy&}xM zYNgKIT8A-LGGq@(e-EOz(%9V%1IY7gv!7_6{`vC!nkU0c;i>kP(mtZatbzYLe9%6j z8<1gHbVirf_wUTj-kX)1wf70uKi9wm_AZ+9q*+^@YviYElHZH)@?9gp?3Um0xkl@u zE%|93cBPZEm-W+EluCB@ghu=8r8CKGp^=-;B@egUYsu}qtPeMG%jFzqLtobXD&%#) zp)Y&>9#>xd(2=#b0D1kXbfnAaulkcyq1)CzWRKf`oC;%Gv>&?x|X)AvWC^}Es~eo``d#Q?v6DT20{mw^KYJ5sk4v4A6m1#N6Wq@y%6_zu zvqw{w_ECT@dT*lM)wx74^lf^l-ThXl* z$m)LfRB3XuyI!K++0=14bv!^F4^T&)@p8b_F=ze+WT0X06!fWYzmTc;)1u$Ac>~@c=%H#~=J7^28?S`)~N(+de)1)L8r(X#bmL zv;R%s`u!ApdvG?&ktMVr_98U4RC@xg?rC~We$Chf&)?KwW4{aEHn2C2Z)2PJjg76J znVVg|XI!lL!$+OOyzx%+u5Gbno%qR4&hVA&ha&rf6ZJiJ{_iMD*XHvnoBK98*@jKj z8OEufu*dMi)z7t2ek8p5J?$s)dEOoCWbci$XEu8vJQ8;z?6sZEp0?h;gdTk{Cv?g+ zwd?eH`1ZFxjfcj@;m_OgIkIyTEq&z5i$mxrLEi9{W(tqYZ`G>#58MACdf3--=h< z`d03RpPt><{>!0zY91waqF+2#vD3nIdu;nA`H3Ha=lh8o{Dge{&ZGCeK4ae8g?aeQ zuY3OBeR!pFS+%!L6LHiE-U}nM#XPHW;chyEp@!e&+0$@_TW-Jr;WA_t8_mKZtYeu|eQ?do29U#%T-U zbPfi`+hgG^8|Od}=RXF6O zC}-^T8tjVtEfuttg2&EH6v?mgTu)7;xo1b@SOw1vPkYAfCuw|!cfKq8gKPhs_1m08 zCo##+c?DAnv@aVzIB$Y;qz-$s?)%?=t?v6<-mClmfAZh`UiCfORxLeV`uZ|#OI9>% zZ}IickqB`hhxU%r_Z06$z-tGu4m_<_sdPenIX8B1;qkf^6;8BXanKF-v7fZ@3G!j# zmj8qovNwx){x|T}|NftRPf<_To~jR-*Rq(sGYXtxiH{8PZMj>I4U~HTK6TE^pTeGX zuXa$6tpnC$r>V#N)MGt;s64M8Itx+XRgZP52Y7Yhx%F^NJtBTRszQl^w0iuCdZ-Rh zLAO4e`SfEM`Q6VWcg3xBp6qS=c&mx;tn)-_qRo21 zp0Ne{e#Kjly8F?ZHdhljYtZ$*ye8ZoW4~X=8J=jx|2v=3{(9^SPaM!n|J%lR*~X}| zFzS4aGZQ)&pcei+u~CUu*0i?{4PtDuF_v2x%e^*G=kBvCUYr3hw!;VICwkBSGyCiJ zo&TqE_>xuZcS~%YMclofm@1pNH^=M;=I%+~Nu1}#J?_5r)6M?IXC?k_QBPw>S*)8J zjH##ggWdqI8ax`;fuX&7SF?XyC;QuJPkM7U6z?RfRG!nl4n68zSa?kPNtK?-S(YPW z%~|J^H0R{Un}+09*(u5SJv_tu~5G(S-gYHq$b-2Bw#k>-vY zxK_ZvmC!|>qkH|F*wiP^jddR&Mn7P5J!@}=leI#+=Kq7iSv1+rJvBM}=QelHjyfh$ z*J%#;)VG+u&4+-M#W`m1b#+Mjm{3=o*rpS`)81Co^PG)KYd@VR^m)mid(@}F=jCTS zUao~E?U9ZR>h7Ev>;4^a{hBQJFnnfn``NRo-|Xg#qoMkXe|OL87jJi79pVhBAA6?L zJnrM6=J5sL=C#oCf)lP^3(aewC!aczcj(fdvIV?X@XkH27i@E0T?>u*JZIvR9d5ht z>sPtI!}N&?;E(oTCkOFrG7{Qb;)GU&&XJyYaliNOcIX$s?0qAvSGa9dIe;(u`dR0m zPdQ|SY;@oG4?6oHpquDa4*FR}eo~BRDUfl!w zB%f7NGIfLYYkwGhYMRx2@QK;YyQ1{l(TiQ^MK*n=7lt{_FOCT{?-_?aK~p^6NvwtT zwa^rUPi5#+Gj=^5jzVw~PC^>By5qkt4y}G~JIWl1)`NvzR*X^8f!TAVP&XtKp3vWJF9?5${<@U)i zuZ4W7n|JiiNxTr+-Dh08r#w?d+A~@Cv~T3Gh}`YXvu3jAV^)`P6?)fPyVku{r~WE> zD&3$zLu`@P@&USH-p>ubul;iM?p)s8I>I@k{FL7NDbMS@CkOLhe&2iaXUuzF;Z0gO|de8UXXYQ-o#;7!& z_1@=Q-KWnR;Cphu(=9sN(0TEE1azM&i`XXFf1A#ZV)q=Ow$fO4>n+&-+mYXVcR$bD zXeSqf*@S$S@V%XORXB!ofylj84a?d)7agvmeU+lC?itUKmYd;A`H7sOUYj-mKNQdD zo%?B9Ha)qtrvp#nbAE!)dH$N_+^pRCT_Jb@5dP1=zudQ}W0uoBb6BXp^IFe7T<3I~cd>)YHRV!|+$<+C z#EEtHIJsS^4}0b$u_djMA<&qMzUKt&#In1wk??A5nw@A$cs3FoV<~|2iViM zpT4^JooBCU{tNu=FVTZvq6fL5kJRT}=ro`4$x!pKD}#CqvKy}7Hs@#K~%=dco-ovrz= zY@&p@kaa5=tH7r?*y26kKiPPI``_W8Sb3xNpI(eDF4&fvIK-Hp9UquH8nNq5t>TmV7`%>3Woq-$={$vJid1mvwJ7zUslXXV@HOTQA z3Vkpq`Ctz7QptT+JeJ&Xw*z+N*i%dds}>}&YBjz zy)@DOyQB+XC5fH4c=}-4zQ?bCteqi=Zy@Wywc6aot^LV=Byw2iOjRG|KbHsfKx3Ni z>ta)DC{MbeKhwV{jlNnO9?>;qiZkbEY4)o>{9|!*Q`kx9Oyt&yAq@TPU5kr*@dQOB(fUC|Ht`1tGQ<@x^ihr zcLjTd%O8JSI?@(RTz>)@6%(=#dB>fm|FC8MDCe7NKB=+Kyp~%0y?~tdl`G8$tRjU;khR~ooCvP zZnWKwJ>Z_s$mql_??mr}*M{A0pM;#eGLq=J{NUF)H>iWysAA#VW62%p40ZYTaq7Z3 zE^Ry5Bbpdr@v6>ZP#oMIiE12UMHRZ1d>VhLTm$8h+w2M#;8UMs&s?6ne_{EtJn-Su z9AstA5Xq8H$v%+@K+Hy1;v_@;4Tub>|FZTK9{LFi5q&$QESJHgjD@PR7Y68um- zbY5JF7^MyW(O!gqy;S>#XLVhov5_jy$01ft-i2&-L=qoCHrqIVGg%K0z%YCt?#yXh z&bS+VpKJIYHGFTYarquKe2;eN?4GKH)yGnG?!L`?u#q*CQ^;rgBJn+I?*_)F`uLu` zVhQ!E;`)^~-|vcbUj^SaUm*3U-iz){!O!%z_0QN7zip)&Z)ompnnR!BuknF@)0}EN zm*3~{do;htG^e)0gLmQ6+1E99=3U=>aQqjV-@f#(np0XUZiCkb5$Zc3jB+)8yhGjo#h*6rYXJyIq@{ha$djxiPx91|X2rr=J^E$uH$eY}qca(MD}A&F`s2{A{^!A)LWv=_ z-ZDk{yA1ke<6p)n$sf&t{`Jm~maJRH8~Sxm^lP5ULHu!xsfXqx)NI<_ODE%teAhVR zYvx*3%Qil@^3Rxh_gcntWA~J5&O=u-?M`zT);i7>*~zV7K4YG9y2n$;{qx2v&&c^s z&XG&Vfv%#g{0@zeBw$>l927xxN#4#?)NrEfoteH8qB$|2?- zx94o*R2aJa{4hg_Y=iOC@wGf}Lh zv1@dD^K|%M=0x9KL;Z_m=sTa9OBtf?A^A@uel+dMA8S_*fjvHEP=9StcGi^nK!yNKP;wIe?71kkRk)3m=f*`i8T)sHvx}5F-9y}*TXH4wo-^vdCNj?p|Ivm&Xnz>rfev@}(2vB%n>bxE!8feu-9zx; zW!}ApcR$9viX~g|Oa7d(6!vA8hj$9rq*(VM%6OadHBQhvA9;aW7RojI|0}LYfvtmmsn2cI|3?3j`$ z=NZLl{xeDHo}%vl{Z?qzGi|hgcV2?ilE?V%y33ZXY~#J9mn~b_POPNZVKuzjuD%Fs zI^-MWpH(+AcEaz)@WkNUu4~e9rzI($t~T}xvU(j^zRB;mz|%ND?Pn56WRN1({LXtP z8kuu2weG71orb!1XPvD?*oSLX z&>;O24P_n;-u1h6T{M(=G4Q7&ZJw)7TtA^adjT?+yo>#JT)q5Rf%i@^?bLP(@$4+z*!RzfT!sdB2eNX~uK zPUXtBD|Xbg=*Q%AJFOg^T?f&rvAG@D&gOP#T?VZkH@fX}t4HewXx;D8s%xV4CTQL2 z(Yn>6wS%%Xwzi-0J1JjtceX-n=o;ohLhDj!^`F7+jna4eRP?dj=Q}xbN&dsRfPNo7 zQNB@m8{e+UesrIYy~aknb9=)r@`tw1IoF?O=h->cN##t#hAgIT8c#C1=+$j3bu07g zR_xX7Eb3P5)veg8+ZyWS%K$t1+L_Q_Ox-F(mp z?=D6+YS0aylRii{4suQXVZ{Ir^%WnE)On-GR@8WNhtN4VzZqv%? zRio>QAH<6$PbZe4>s!%v>4dJS9iK;?n>?Lp@^nJH)p*QSWZHpD*LynAB%LU5=F~|~ zc}6)E>1mzx)O*M1sks+w(fhIkJ9)p8dZz0cxt5oA4s(ijq7N#&0(!>rT{f;`nyVY~ z;}g&eBX9Vmx^+y$Zh$8}X(Go_z`1)y4)hV{_9KUKOAd_D&gm~MG~>FGg>(Tyz|67yLgH&B1>C`()C_t`f=wnXsV@7HRXLVh+jw1+A$v4 zsn6@hqYL3>$9UN_x4x}q%2D;v8Wms2C#a9|-E=y=HuC$iw2xxy51kWKH}AS^<>#hx z?>g=+atv>D%`bZf_u8*BKJgUZ82K*ZyzRZG=S>-UEPpC}c5V5o@pOABeF^dwt;LdI zs7rJIlcn$gI!#}Qx=Z$3#z5;`(25O9(LURF&!<&9{ul0_;@|Fy@jN)#(F$^etB>1b zmYy9-vn}njkP-B#OtmT5(%Yb^br$8S9eH~G+jM$(&!*>B8R+@UAn76hzR{^2ns~qK zL}LZ>x-@3Cm^FO`$3C41G4`0GZXw1f)&JUN@(X7tzC4fI0e1X3+J9?Au|YJkOy7wO z6c@OCXY%v%8@%Vo1UCK8@8*07xy@B5Ar@Rxl&@a7~{x!NIJz;H|;gj@uS023N zo^0FarAu7%?b)^IdctfXFR`gG}V!Lf*|Oa0VqH}&%0 zn={aR{pjEp-m}Y`kZ}dR# z^;2H0_1>AhSI}2pLqYCU1D5wq>%E@02Y9ca@~U}HaY=f z+@aQ3bd1LT=f%1&_^@w&{E;1QKJG#0mmS@amXGT}ha;ixR1RYbLqpxMk2ssh@^5q- zztN7aj>9%A^X3-qcJAJ^-dXg>LHq_be?f+^WTYoe4F^DZ4&jxuWPJV<3~H0f2>@d{PuS8 zKFV3CpW*s(&F#o)`PD_V!AbC7B0Lzcabogz(})A)Uu4sZ_WjlB&@Y*ju6;t_0lMe(lS*ZR`j>!iq{&D?vq~+X~)AE5kTz}Nl zGnz5gG5nw3e6%hch{exlexQlP-=ZyZul0b_z57kZOm>I1i2fvXN>M-6vz@vrcIa%& zPOSZ-pObdWU>!-XPgmTjdTxKoKR4C$i#hOODE?wN{2s|adUaJldUZRweaHJVVo6c|H(W!!w-#PqaV>+=dt&B=4hc4;M;7EZ<_m>l}?}ig+(>{~8<0s^6_tGDp%z9_kiYhO*!4t&p&l|<&w56E@r2dMp*o)M5& z>vgpK8)^GDg}SGIWcK9tMbr)@SB;DrCrl{!Ec_U6oyV_vRP(sok#&^0 zE_z>MZTF)OsW#f>0k?lL5-j}|UN-XAoHE_J2z|(54&r$9L2+9ceaL1`Y4QfEc_=7Ox0ZW__CSN6gq<*jZda^sFEN{H8fI8w+_OgDaMdfJi{8Gl+#$_LS zR`ZjasKYL>cArC@f${LA%x$V;Zsp9A#YI&-%h~dYB~Gp>NAoU}Q|cM-YzaH8sROT# zwV*Yg{SMEoelEqm$r8}6O~FIuX>?1Ub@`#2c8pk)K&*-I%${9Fnx z%b}$c{_cVn&Ec31EoKfobWI;d-wb}fUvskYDF4Dy{2_nv9BWWCM!AXm;-}BQmyo4> zo;CXz?5iBE_&3~DNe<2YhSw41LYK~~Iu;+{)R)lL>a}y;8cofYD|<=naPDJ1x!X?> z&r7uS==w>CPxPGh@;4!)?>=3Rcy#^7qf4~uPqasv!%|0|D1yzZ!e&)XC!d_}9C?!5 z&KkuI&bY+1g;i$ED3TvCV}cPUl#m=Etxn=2`izAV%F#y3LkacUbv@VnRIWnzqxxh{ zg7jYcvW{4%dRYH+mFBXhp7|tZ{Md~T`py@ZeyP7LJ@xrJg!xG}e?!zoV+HK#uwVlG zEuQY~uMon1XiQVrlU&zt(O*2ryU%<%(NE6S?8l({qQCeneZNJ&Xdt(;S+>{cx+kCN zNyI?IYXY)a!(7LL?-eF?o;=z3wd*wB!D+$f?9;gS=ITCMBmJ4+$?4@Z{c+dN_pSd8 zQ$LM=#dFW1E!|URYU-?zNJO zu<5@7`qy&Cx~*GD*5egC_VL6&K>t-~^e?sOS8Sv@d~k1{j~!_J{2_9&w!C`lGsdeA zV{p0XA2#N+^{E`k{0i#TUtL0y#i@1KSa454qLR7{Nvq2j`l-u{R$X32CcXN`oGY9D zJaVC{Y2$g=?bXT~Gv=5i_ZFjFIwK|}lC)Qw&uYhC-$OfQk0zVfwBy4Ct3Q?aH1yfe zgLBw9=e$IcJ*G~%e%Yzl{dWJDNB?VS`gFBfJ2Sd>E^OG}mcQVufCysWptk~`3)E~sp6@i-<%IdlX z{?ZP>9@14u?ll^U){o;I?6%ey?!EBDvK5+hSHpav5OZ4((DyrZHhz0FeWOA@26JU#Two;g|bs;6wNbrzKO z^vwA;@s@k4>lw#-=Io}fJ=|;Nxt@bOqfhFYuTR$PuVEh2zw(ae{Hk6nn0H-?&K#OI zZ%Xll&Vtoo6fX!Z2!X9<{vew2V%>^TSUR7=M=8Gfrs~L_^#4emJD>UxxpF(+ zIf}oxW1Z(I!}LY2b-K6b9(y*NuYO;+>o$`&CvLlm7!G?|m>b#~9~Rl0LRO{tJmh!e zMdJ9S#K%iVV6!GV-Bo@o@eeYa!n#*@ntO6?Fpzis)BQV@^zQtoxnP_|&(VYi)Fj zzN-9}?*|q$hoxZK8HvlPf^v~O*4@)*Pgi?#kSz3P`UHGkM0^=^#!RNEQ=gl|`&*!VY@FWRO+Gq>f@5Ho4WSv6RX50i?I-sKySsy^w z%A*`AC6_WQ*4=e2a<7U{b?r#BHzrHZBV1z1*l%+WQkE;@$6mK0gCsH-ON>xTj8MaU?DCvK%@rrkGjRhkp5}ch##^Vps573mZj~m+ z8=LROcw-$m#vAL!cw>p-6yuF8cVj$VSB$4m#YnoZ7;mf>%ei1A9o)vRliK_BG-Mn=u%0PeL-Zeq2meRs{P$yUB8`m!=m#> zw@;xtCiE>QtGqCFac$Ts`YvMKagv>|4(W!-uG4d-s`vemz!++)}``c z>YGMee#-X)w6hM%IY7HI@}ylVm)B|Jn$t21{ZdTvGP2bAw*7n`i!IdHVJB@@a@}F% zx(>OrUf?=cMkV4G*s>FnMVy#KGF3cKJtAB`gT7dW9LQOytH=9<-T063(9q3nq1dfawSJlbha-y_$;}ViKaYcD&K@$hjX7; z^qCa=D{=btC>-w#7YP>#W1X|RmtnvDkx-WZKN_LCTHTcqp_KQ5Fk>MU9G z7k?-}bg}6V_2q})VHYv+9OV|O$Pvl+v^gV+{2W7XJ)Ow>)$-TSWo*4yzTu^=d$L-> z`dVyGQLpcX_P_Pl^!haWwq>B-mVW)ERVU5Gcf3Epf7fjG|LE%|?2~w@zq&2w(i-rC=+r zQTyfoHhyb=&VI4c&p96UI(vSe*C$X}NigI`&`)>$vv*JO>75tpKkxA;RpqXy%d&Ws zs)|k3x;>vi4_>AA*S9~8!5fXdsgLFhUC5`_*6+v1t~n2Xd!DnoDaL%nbD1wx?i_LS z$sC|<>_a6xmAn>zRu!Jw#JI&|IiBv`@uiDQrstpKJK+^?Tm)z54F`UZ*(CYs-bu3H`S1L{*xd(0$uZ=(k_C#xj>t&U$Fu>e-{Mo;_OXm80vj zNBXUDwt96~>XozAvq!qGa<+Q*NWWE1z#b7N=Tk>rPv;MI?8rg%ph|qQ?5LiNfb}@n z{}kJoohI)l`TMqZ8C+dO2KU7UGY=(%Il|o>GjQ|FPWb27|B`=VkXlcrCiaWe2&JOZX-5QESm?- zYxzC{S!G9^`o&y(g7`?+6&H8PzKx_$M||8t{JNOulElfYS!Xy?{E&?jKd^BcU#+J9 zAU!P>Px#%&_36aK9oVU@U=}cjV8)Zle=1ke3ZKTor*hVCD6TH2@2|1r#eAmFgi z)Y>e}l^RVwzLzF=ggZW`uc!>tv6?*7z{%wahvT?dwp3 z9WO!GOuZ=Hh!h^6EF*N|suBhTRH8!DNDTX{6cnj`Jnom1r$v`d-q`|~_q zykm=d8b9E_9e-1&*c-VfC12_hb?so+HRy2`{&p_m8?_`3iF$ zC!c>|KhInQhV}zqPG3#^F!jgOS99MD)$d1tULy8Ve{BsIlJ_L!RQsVlkIbc2wpeXm zV`Hb#iVa`J8d=TVy9Qs|AH7StpA9`P(nl2COIb(j?o}M^n$0^)84Ei=-ftJ{Xm=f7 zPVO(8++VaSOkY<%VmDu569!q;1p$p?{4WLu)>MwT*cP z2N;vSi_b-TGDjvkoH29O<8Hfx9JW)O*v|U-0@nCn{EME(C0WkoqjkA~GN16vyff5Y zcmcVI+G2N{{CsE5`#hUIraE$oOXJvb+5zvp-^TcM8s-_^GpRcn-|oR~HPLR?#TW}8 z#&~&Fp!|^kY!7(U+l>o`xp8qDb0H3tbpOx0J&o?W!Mxgg9_?nVop)2OGd8`WgxqAL zKF-?XIODil16|Abvr`*NyqLsRu}4aH4r{j_H9nDXc0JEp(R=QFJ-+%r#%{Q<0Khz1EyEUY`Yq@H{nyu7AKh9-d%p!evvLUzf4%(~Y`DF@a4d(s-nBM87bJ`wsB`8mAJK*=e5QrpWpf1Gw~+z`z63;1qB(~5R2eV$d%zq}EwGxr87RsGL z%-DnvFJ;ZT`crmU?p(vHmc2FXEesYpmMvM>v5StEzP{DTp1*|pN>*Fh|3rN^*@u~6 zWIUBj(IX#f8T)(TFV$X zdsDQGomV&|#Iv-ULVkJ{y`eZ$^6?!bd}sa_H{9n;PGA_n`CXY8-&B zf9Z!Vf!x3vHU8I-NexGDrM~ta5cF+A>|bLJZ1283|Jto|o^Nj$SAh zyB2;e;{CzO|Goj_zkutuu1E*|($fLy)CQvi*gm!)2hb($=P;lykyGkVmo6DVX4CtTnd%tO zC;CwTZD`7Fd57ow)9-8ka2lHED}FZf;Y_}>FF)w#277wK z&5D!TLKBL{My5=z48`cTLOXrsSFZ+>{pvFVl{gKsGX$O=VNL0`6c?{@Mro1rS5qC zOD5;pw?EoY>`Z-@vw0O~?tBd%G=+wC4WUh#-$P^FUuQqF`i~B+f9Te)ADf@WI0Lk5 z?Nlpc+?wC=%vRztd!E|5kmA7x%~MjEJ?94mxqV+n)kEm~ycB`16LTh<8el{_d zd8Wjr#FLYVC+{OJ9Y$O_wB>5iMN>xa}*qxAFh8BhOp9c<_c%dWr@zAHJg^F zy(3=9pTG1iSLV-qyy@jn#2sJ1n11uoNN{|e`2obNS&7&Fo0xBrJFX=8u5}dWgvr~* zHZ|RjOqkE~q{f$!>FNuJ6>C41*vUH@dkWzX*6_U6-GmrRmGAIk`YTh5+;#Lb(Pe#C zY+C@m(kFDI8(i|cHJifBgH_y5-zd-FNcQS^5m(%?|m`AIE^X^~taFchTx5OG6kJsA!Pts3rC7*&{?k@fDL$B?4 z=tu9Z``XXntNUfgdu90O0`e+h#(j5O^3ZE_Kl-t*&0ma8u}|>b>wdoMHT@3pTUgtO z3BpsD(-93VsN#FsywHMM`RwY>De8?iBJP-aIr4QLx-5}IzD6Is>%J^D!9TSN$@x0u zyu#9d)1Ha5P7d$e?|U2lro8B)_ZCy0!K-uU0NsPXv->+8%srJs9umfn=|J#Nok}%1ap; zqZg{jYO^2W*@-8>`S*L!2kuKB%={ovhtKhJIDP)$#rQ?Leyvfreru3NtrMGU*Aagf zsN*u#ab8hkW+Yh0XQ< zVO`Q**`|Z|KlN#Cc``z; zw7Wl?IJMpV;x~VKySog$S?uqBx^~x;#^0y<;jbIZ^^MQ^W2|jAINh^-8}fN<2zF00 zEW_8eQg_q0Eg~M`Ii1xVz)`;qLZ#!`*FN;qEYd(!`x9lM86G%42Ac6Rqt$#Q(X(U8x=@0dZ{zL*_Lxo5_03}W#m*L|Ic^r zy>s^2oFI1Q`9J@Eo+r=VXYIY$de^(&_1@OI-lcC;&)}x2DC_Iv7*EFVdSF;N>E7Se z-}l7ZEARRB+f#4c|8@ns`(|{R>xxF z#$IbkFN-dVhEd=69BcFy)@?IZ=HMey`BrNYzi0kHr9 zY3mTrcEGy|PYb^tB9{5XY;2j>m23B>|qign}XLdqs&4Fa^{m{fA#tWDV zsBhon>>0yW@4Y`vIpeH7d2MPiLVL7Tgb4Kf0}7BmezgV+mC zI~~B|Z%eSLJr_2O>mkNQ@CwcX)|tKuP79oMro*hmjRfEC1V=VK$Qs)b`g)juca5#U zDyT2X0_Oh%{(gr(Udveo_^`9SLmu2V&BGB*n~kk^L8MZ#ssEij^PAxHm0WA)k8^LE z@yo!F)TO{T zmD9)F=*Vul?10#A=zjzJS3F=(sdPBw7gm3Bsk0rLopYM?bQfz+g#q${E#*wa*GiN5 zlf#@LP#Vp}@#bBKvR_vvC@ z<$WzYD}SVud+iI>&70v1w=;HK%)PuE_FJ--a|Jvb-}Ll{SM@baLT6k7ER%Ds82!WoYRCe7&oHjw`9y&1kG&TF*ZR~yS|gZeH|yYiLP@xJc;?JeY)`my<| z#2nDB;SIc}e0PPz$UUTfEvB!foJq+$dOn3dE})OK^e+zXdw72VecQi#NThz%q@$`w z@z1)p!|Pw+j2H6`eQ@8AU8=HPzPX-n+%~elg8!cSr#khE7tg2e9_VvE?~UWT7pOBz zo%5;BEkBF$Zr+)~J7;oVIMO;2_!6*J*sz!Vy$!qSof2t<;HJ90Dx8$i|_<_w1~sXn9yZ zJ|_4=bI$E=7h$I!*e(7ytZ5YStZ8+>!+2142ko2sfyafR7g@P~c3JWOa#MAF<_qCj z-|(&bf2JzD>QHca)BVuZLHcxvf0uuq8yHkC84{h(*~qMubUqBctCk+^+KVj}sGB8U zR~)}o0=R1MOV!-)X?#_MO>@w_JCNfG;hUYT5yl=idC__&&t>db&t?DH8-rI>9xVx2 zy;Y1?Cvz2_^l0rP>a)mqd?|ixo_GDO)SS)n(j3kM0B6Nq4G#rJ-OTB{z~I&eoGs85 z%xld%R{LPy$RYRS1@h}Vt--BN5(n3L4LSq($q(e#mjy1I>7A$lN{m1#XeG(%d{px^ zuwvrT`()?s6@Qg}k>B*vLgp9WZ=hV)J9I5X|7e)Es+0BXPS&%9*PgaPt2(T_dg|Y? z?5WyWd%$tWldQQ~_?n=DHoon6l5sk-EGZskWH|bd^qqas_vctMbibX;w_ntE@VGGi zG0wNp^wVv8Yj_{{o$&=|fal_ef;G(k6{~J^WKt#N(37D#=u~n<@z*ixC}J;y%Rf)k z_t0hlej9?{CV2i{D`mW|Z*0BF*0F56>vUsdhZrBlVoqWGeF<_#eb>J?#zgZ%F(ykL zS()RB!MP53r5F=()Yt2b32#ixV-qvSv@{YswSriUc%zkkgxIG$z#qBJp6&?318BR1 zb*ZfJ#B24HCbvUZFY!(Z>t>>>j`wZ4B1bm+=5l*i6tnN{wq-~6eNbv-@?B$DJLK$_ zwh%PCffR%lnqefswd{I8w%ZlcP6Dr;npQwl%Vjnip*CfG0gNG`n@J)4u$>$o=WR zr+uwa+)4Xd8w}C@owPrJ_R)!y2aL9KE;G3!p!YUtS~&YU@R*zu)cg0`huCw&I-$WzB+5-S=RFLKi9t0#v&HX;`&^a^9(Bg~5#P{q0FE`1Sf=*_ZC99WLA5A<5?B6@yP=q~h zojoYBnRSNk%Kh*h>;7C#`R_lA-#ol?v?yPMdz!+j394SvA4!1ubd#b!`%SyKx7URSHT}hu+w0k_=3cxsr|G5s`|PG)_P>+e)Wdz=F60R`EV+XW zJaXT!`aTw~+4NH1qAB^z0r<{i_)inayAtVo@WB{#QV4w|puuivI<%_js9Tn$GGvH! zu2Rb7i|u@dc|OgiF>+|stDd-1&$#7Fj;gLKXtjg79=WaPs7r^U!3t* zMWDr(sj~##Z5ME5WnVa>8=CEbeq+oLmE-GJRJ8p1pR3;InTPq-gtNMX`BQ9ttmvrX zn@U3XB6)A}^6O3eTY$%XF8FuQhG^p^aG5q{b@`DWF4EYn-nrcWtYt*xL7t_(58Zy> zdH<`tukWsPu3zRVe}nez+-S;jk(GH()z1Aw=lXf`o@jM=(*koZ8d<$_9`|W&)s2YU zLR)tHmvP_~QLI?m7;$LXuqKg(1Oj>43` zTl|SM`@Ikvk!`;g-8=Dkmd+aAQTF9=k;HazKs$-2xK4#Op3F*W4KMLrRP5Pxwp^UTCe`rI{p1!dVgbW;p9ScmHPYH!8hus=>z>N zrw=u(IkwTyHsEZdpYn~h(a$#Jm!O}9ZwI2`aEB%aR z=wm*8yvWzb^`?)S=OdfGVESdx`OlksvmUxp>!E^`b;OO^F1*mJBR)!9lYMpFOkFPS zs-Wu-F;zGC%UXssj=FIPcGMDVp%KT3E!d8q2S1=}zu;)b4_W_iaBv#^U+d6C-^0`e zeM&!E|1NRLyyy2_z2v-Wd{?~xUO749eDyWE?>vkRUkq&UgL3Q_mw(uHQn0D@tG2u= z$KI&{-hgB8#PJPY>i7nU-@icT&boUFvf&@X`FMD#DTm+5UhI4vTM^jhcaYDb>p}UK zI1?S7pl97r3J35Kc(e3k`^=7fcy%7R--Eq3a=sS%pqR&u-v%ogug7*EE=iXJR4O+JCma^Q9=xfflg3cj4r zw|C2LLyoiVfR$G(t_?&7+O_qz2x{G#Wn(&UfvCk$5~@ZYUias5&0M4K*B|Z^)14wCA(>d z{LMOd^g(jCDc7}P3gv5SWL%-EMIFFl@;UH*>|E%vQR6IHz&3&&+VEM;fp4rw9$pJg zD&LrVr0vXu*tw<2_%!IaF`T?EJ6O+oR&TyoX}z%>+cV+FIQbT3f8O#f+a`MqyHfV2 zY_cxone5L^%O@O-BhRiy*ZS)o=0lKv82n}%`P>F=$}gb3EuwGP=7A#OWQqG-#{5{u z{P6k%Ht^nZ=13>LlPKfWc~SVy9&k_*$nEW7ze8djG+awR(c|UQQEX06Ft;`D;_tqh zckG^fbT(|)R`Dj*ai9s|p#90xOLAwHE!QiP+2>=)MH} z&S#J23hdPUq4}*-m@5R>K0P&`7*2d|p-)(gehhtGalG&8w)??HPMEP&&d(uD$ezPB z;Ue<8t>&!P!ls89yUsqI-!Gjaw>OLV*!2N)4u)p00*7We;4%M15T^03unr&C7mm= z06!dXH+&r$1U|i^Z{+9Hz2tCW9lRB~>0HV4t@PtLa(Xk?u5BW_mo&122$9_F!ZkvejgEWj?Q`RbyxL@NF;k z?7xQgD3|?Ew0z~y8)-WWSk(5EKo)02O*pGJIAqF#Rc9a78Hp7k_zv$*S-$e9-j%JP zcc=31^}J*9py2nEPJcD?B~5N)Z+uVwHRt&P|8s1PZ}U9u8*Gl7%{Q_wR`0xoZ(KV= z^~>InoiWdp>wMzerVE_%X)0qbLSt$B3y3?~u`O?KR75e9vc_A6P?oNd`=zTrjF$7^g2on{G1D;IFvjzK~_vEi( z9==fvJ)ML7Ii9omCUQ34WX|T3Tv&RhO;5{;ZFGEa9XOpvh;!(xqHsiAi$=3s&?Blym z=){yU_I=d579YLpz0}HzY{PH3$@pz1{9Jk6nv1ZBiD}e(%AMi9x9PTJ_--bAxJU2c zyJ?|+f;$eaw>=C$b7)(6JJqi7-N2)@*0`jdv7E+Sgr1FjfVO{1J+8bm{Qe_kmSj*j zb<|6KTSLql-jb!=;v>v6@yKzUQG$=Zf9-6@OWT^zu%BU z%5q zKKgQw`1KIvQUKf1YT9$m_>EYO9u_Ip`C`n4pWt_gZc=4+1(7Iawmq?W=eHTp^ym4J z&7SAq;JNKLT)lIpx!0V*{^!1jG3cF$3}rrDNFMgscE;o;E2+IxZ4*mvzfpsgOs+Ei zq1Ro%(ci7cKhzLTHr(!%JAR{4D&LMAzA2n6;QrR{Fu(XugD+eVS!Lj}?fJ_LOyVE; zO^dm=ZQ;R93r)Ffqx`0e&As+Q<~Mzgd&yJ3j;^?lw^q>CT-qN3{~kdfMxhUZ(~()> zc%-}W=X>)RC`XK9U^*6qmzl`lx!`C4dm!)| zuE&4PKL4Amn1^$Uw6;wiA>>!vH0*Wu);xl4QAG|R&Wf*Zn`jvyy>#(y_|1rmowatj zHKTJH`YbYaE;?y!v59+$>>6_P8SMouTfOUH=F?9TmF&MU^CGLYVrZauEBOUvra;Zz{~c|`&*j>l5gN{d{^bjzn8%WH#vaeJA`Ne1kIc5)ikH_ttC*mF;yv*j z#qA*9FG$R`*JsaQF37*F-{thTI2WG&EqHW!_B0sFMXqYvjq9)(92^c-(^@N=RkV~3mh^A>p?(`eBe8Tl<`+kkEQXNXtj zf1tXz$!7iinUM+XK}&WYZ&>ZC`vvM5=vyybJ$!qk@7tedfNKY31~1?V-U>ZKhoe%q zsOY^g1HHR(Ojp1wUE0>w#P_c|&DftWS7Cpy8-0TP`ORwV&j#%Nhw%k8;uqMOMP6m> zfOE5wx!9VWQ?pF&jQ0DjWDYhcK4WxsJEvs=Ijr2vpHa*%JVWat3F0N*T{kk#Hhl_Q zo4AX5`A%ey6gK_&Ft#c0`EAn>b6xN5s{jVxe{Z+;^QPB#hWk!E>kRK;3;Uioc-w1$ zH@wdpBJIVA=ZFz&l&RgITc_J@Iq@96djIOwyHD*F+kF}HOZKzCt6wy68-se|tjYW1 zPOfv|A?~E}HLdBgmbM5zxD{P>TsYcuc4@TpJY+xZEoW`!gWV&|`NbauPm3%gKBE&q zavw5OaT$Hc)HuAS6aP&o{HV)~=VR@EGje-2^12hBXD7Ttb5eHAW5i`#aC2Y7MCRfo z=ArDGiOj!HljQq%+SoFeHmJWF9IF1!)SpY;UHI{Hd2bxwJx`t6 zsWX@Q+;YWbbn;FYzJJAK^r1&>o&)UoKMm~Mr;QJF?~>gE3>ud%*0@x^7w$c@VV;9~ z_qpI!nftpFTJFM*BnD=N<@i}*_*uHJA-j?1cQXcxJ5>B(kZ;9HaxLMP}dF=XLWcu0oMs6eyq0ky?`$igVyKSg+D|{f6 zvH4f5y5VR7Td5?F)w_JQd?UkpcYn@WG=z8dKO9be-Wt~WWX`bqgTdjgui_hdb>xV9 z4iN)!Z(w-+&QU`^@oBZS`X3Ip^+o+IY>KC1PWTg%}>vn4zJr< zmfQuO?A>4`?=KBUBUhG2ANu>U=%L-iqDNjE9)0(BBcg|H!Vbk=+l=p}Ilwt*pS2df ze116kT4`zYjVtYWy28Xwjf~t>&U|H_-h377-ptbyzN-ZG?uW~g=i%FEyA?TwPhEbD z&EwD$h@ok}9a)II-@!XujBO`-A=q>S`y_Yr zA$Y&sp@SQJc)uPx5Z(_!L(TXLwI<$7ELsb^xmoLo*lj)d8f5=J4?jN>9(tg>jQw-j zk)Bo8A8nSs4IexNuj*NK&QbT>EzqL-?%>;;_psp)fn&X=J$=pC_*JSOKZfexLYwBB zxvD>_zy7t*!y$N(zH8w-#Z}2ZsQjk%8QTW`8uw{>Q_IN6U03S4{qEm;-u91b=Qj~?DLBHF|JIdBU; zD*UU$aj`YHUid8nXTq=I7!H76;jtRrtN+8n?XOqeXl&wdK%YN>K5xFMui+fz;b&M+ z{S5N(oaIw&n;0Ah7?%Ug+k@ayI1Pcvz0{X*#$Xt@d}7r%j&2G}JgaE=l%H$wOLGXh z#(3zxEx@35_1>mc-}sPsK75IHy6f?UqE{JT6ZJn98+g8V*V}V`Km1>Nm13-=YK-0o zZt%C!u@_$t;cpph#>IYq$p4&i`=n>wI(aS`p!wPEe>XfbGJJ}bQd^QY@TGMehbG% zE9^CJ(f?q4Qux!S?1xV8K~}y64jRF6h%uOg|5Du7O8Tfx5-@2Y{JmJ~M z$aC_$JNUlK{~UZjWu6x>9>bb`VA>eg^nG(3(X^VYHmIpuG03d3hd4h`{56x!eS9h3<)T*) zK^Ba_X2a(0U=7#U+*?N*o4e}&rflvmp1Jmj_P5PvY`pn4Vq>r!#^7&-mv3Ud{8iQm zZ60ms+b}lAyLOz4w_LEvCipWBICf3a_SaGku$_AB{BXBF(2O0@5xjlp zHu9@;-Vkd=^0&y>n(gFXwqZ-7qwr~wLC}%x(oN1D)(2iooh?_Yb@Qh`9SLAxn0<$= zuZY*w8GqK8$ou3~If1Si!xcW7iZGV$_|1n0W!g_ThdwKJUnx8xyU5NtQO5Ww*JBOq z8SBU^ue@^E)9ZdiuIYQ0GERfQmCj}&uUOMI{4qJ?6}{8?&dv=Mc(CkvR>22uZhoO) z!w;1cE`+Ypj}vFFXBtk}&%KL&wR>=KB{*^S;2E4ea^fC57biP2;e@(G+r>V-Xs($v z2Ox46KQ?`*@~^u4SA`$-rEw0rEOXAqQ8hj!(dwM+RS)EVld9~ThefwJ;AWfijlQde zKH8uU<=MkUw`%;tB9sV>6-t`+ZcEKE@ z_bTRd9=L799+!O}9;Ucum2aNPK3Vh^#T6;WzY+U(4ewC4N@ZG4Yb2+EQ}(RN#Ah1M zK(0@=>ndSv`g6>>ZH@z0wfU)3n=tIriUGCj3Y#`hQyK4W9Yn;^oo@rBY zagArE>M}5#2mKVE1cvE$9pK{^R?FD4%s1p4SW|@lVTF(76;+;f0^AqTFZ!=(UYhr!L`WBy2p$61bIO|Ngkgc!nd=*d81WuWD+|Z&BYPbBoUtO_8&J_7p!Do5@(Oo>%1g8*O_%v5a;froNl7HyMk~;JbY#XD`5S8dnEy zZs9B&>6cy{#<0`9zr*zDi{NAx{|ou=K(E>=+|U=(FZ$h%P9*sZzzT4^fu7vMGsqc35pPQTEyGK0VozHh`Qr~fg@wfr|_fLE$S)8WZqif`mkI}2w ze|3O-dHH6&?5zH?NX#6!tW=)sb++D)t@eg=O3kTmt&u^Kg?Zt(E72L2KqKqPLs7;% z#OSoHXRir#Bb~Xv1X>CaXVFh9PJR7j?fe#xE1|wHbTO8Cw6?W^JUvU6S6?`;uW!2l zed*|-56j;S4NI-HkvEF-lq|ExR!u!s%qM@l>IZYGwG0@`&=G5hTPrCDzg=f|2>WyU z`kwZ;6{_=obK3*u=#V9K){)2YNmRp=61mn-tI?ab=!%Y6tt)b2tgedn8^o3Mmo2)Y zQ&sDVUOQITBA(}P9mjKBC-Gd@vw5y7^FEQybvn;=y^!a+Uc_@$3#`{G@qM-6`$GOF|CRGGi-Op+&|ndE zbjfNf`f1)R`4B&{^KPBi9rH8kf9Ib)??}eZVt0=h1WjegRR43?@m4~v%RbK zWOvujgZ_Ytd^tyA@F4x(g^$DNXhrD5(0dSgibq&ayLydunb`S`@7saNf{%D%<_rR( z7rFJUQJvINPMm_bp5G8ZmG&Jvm;BsW*m{~H6;3{%3ST}SmB)cs`F&(pR5<4a1mSDi zQ&8c_?Ju3IBEuOeHMCJ9yi<1^AELi4PAJP{xWN5%j&yJ~+cKPp7_fRuH$(JIMPJ^LxQ#-2D&o zL9MM!=cDpLxiKd#&w}5u@Qc2WE|^>o4awJ5 z18(nda9ay*UH?uMc(-wz-NgD$I&V$G;poU;F7wTwmQj&EQ0C4H_328dPg*w+uh-wl zf&V@~{Lsj$!vDRK!B1S`PyFzQM@OPQ_&5q# zL1(_9?+w;G0uR#v+<6p#IhC&~Z62ZjnR$c`=$}V(fN}A1<`M6B=aJ~^rw+Wo%K-1) z;5u!5p!eb|dyPT!TfFts>B6f$Z^f%(nkQk+f7-&&uix^odvRUPc)9$`Tkh9AzVE>1 zuHXF8fzhS^mwoWL{$!2$7JMe+W#0Oak4~SDE>7&w3Jck{`WI&@HizAhcDU*Bwg0+?4l39Uv?rb zc>8mnuRn^Tc4^t$pZTnRdg;T(zxp%QbLMv*GBsev{5v~KhXz`!i*}haze}vZ5uJ+- zkKP&LyzkOUyM9=UpUFQrH3!_W3eo2fIX)#v7^@wj@TdXxlRGnw7j=p5-~YNjPhHxQ ztT-Vb>B;)%IRjk2;*<5Sblk2VhUn)<^{wY6d@ZMty4zFl>azO`iNTdQXb-T7nZ zzfAEXmmVd5q$kzvt|dn_=N=)qYFL9dWqr9uek*=vH+I*2Xeoqj*1AUxzG21A>OJ_h zS+CUkpX!s&ei!q#78}5V@7G=dtwR?Ha?(lfG4H_N1K6w5eRk)kbgWW*Zz03uT|cMI zBa1BU`OmS>JaFcU+OcS7Dl$Me&m`$}=>1jF=c%_CzkuvY`GT&4PsKRfMgC1M@6~hf zZ|Te}d|xYnEcFTAT40rL*63;Q8?W8r{nlR>yd0QK4E@FsGUd;6j1Q0f(d1%c{5Pk3 zW3PwyJGLZz+x6F0n%oUzBCqjXT3z8!L|*ZiQU5O~6K?&yb*7I-GUdO#o3&+cym@Rc zd>-9ZG3Uy+*ghNCG?U-ckOk;^an^Kno~hb%{S;#Z;hB=fx$rN=V7u|&(qVNzs&rMo zzmzd<#>u7y^E1wwXI*#+dwD;}zWV1` z8*fA3tYNJ}d&tCJT{u2h!r2|t6@bggBXsDWUeebfzku{{#l|3GcPJ0a7HIwZ*V(k5 z#rWg@N(Rtd?Xh-ZzbWhIqwpE8Zu%Dc-n~9cuWtH?XKtqPSEC=D7!T04J1|S~*NbQ4 z4`Qwf*FOe#lE0Gooa-~on~zuhFUF5!;4bgi?URSP_=Y(l9uBWH^!VZ)+HyMqiayVt82J)IT?BjgD0JB=G8U&@v_c7x3R&Gk9FZ$&pUW<`BOgjTc&u3cI>`3 zXiqrkD7Rtu;-U-1d{1@8lanHfy{;vDeP?w+5e? z)-Hn3f^2N*5+VGIMXXO0GWXZO2V&HtdhuT+W7JoKz94#$|EiK0*BEU{7q!5L?u+1w zV;$OociFU)8iN#HsQX0Zclf2$hr2Z{(2}DAnsKSrxFD}i7#EF)Y$^KbAD7+Kr}z`U z4%j~~K6*XZKR&eQ+EO}8S9I$Bx#P8BfcO=Sk;Y5orZE$Z8N55bOz(IdqrayzUIFID zKz0H}Om#cWkeqzM79Qwm)Ov@j$#txz*h9)VV$x{n68` zWAT~%!*9IfnB|#w_39h+C|Zn73-f;Xn0#*L{fnG6&v5lw7XL-~ibME>wN70TcGs}2 zW0W29%2Le-mp3&EPr2XSsX1W$u5)JEx{~;nqqn;}DI5H#U9SwpW;q7GJ0@N5TRwbX zC-N+O>_2?`sN3j+C+bTv;lqau!;c*vG|z{NemqRK?LHR=TH~*{5MBh21}6jdy^_A~ z^6Ci>O&GB6zbwn#clCQlhJI^btvmiJOgz(x{gu2wS$~Im`YSoF{%Y(hh}lpKK}DV& z3!!-;`K$5}{8VyDdkrcI`k${->_o-r{@>3U9Gzj~sDGY0x}QrMXMmqIDg5jR%^N=; ze!iOlKk{7*KL;0|I8VI!`0aSF4D#8LP2RcTmCrA9dgL>5p`RWkhro|=sn;quj$}3T z?UU6hIboen__uhvmF(MhqWu2tFF(Hgo<)5Nmz+d?JGj}N0XN=wuOsEoc`d}893PQ7 zuO)`xGk!JrU5q@aKz`S-uD^_R{gtfi-<0mZWqvNwzCrnTW5^B{pDohiknNuXk46R~ zdlh5QSrbmOzvt;bf4`iQ}b>t=HLuUp19QfUaEz!A*vuGXvR3kdUF4m5-DPKP_We;dS_zg3h zb%=6XPi&h=UztOlH>KdMGkwZ!%5mUT-SL(5i+6J5vm+Lu=8;j6aoC6QBWsT>YpD;# zz+D{NC4@U`)dRvuo`Kgo(n(CjIAQ|}iAOF)Hp^d@!y1Wn@HP0&qyuf{UCFw*aL8P3 zLmyvG{wbU0YMaI&$`Y{okOK`b%Qz>|q z-4x7C!O}+iRUTM|_;6*EkoItDeHvp2Ww7aSH<8bE^mv! zz?@c$1$;reX1`7jA2GTgW9!%b=1||_8s;?bWYo!-)2^-J<`L?GM#Tf4Al7*xUBS&I z)CJ81JvyN)Kf3=$`LSC4J`e!EY64ZKNrg=RL&K7sE| z|6}z>>aEEY9Vxlu;v*~?l%D0(*H43m4h;f>hXxH^wt|;`r@aB~LWc%La|IdjB-`WP zeEOIjpFhBQH+|j(j--=^;5CMyIcuQMNcy@=F8pf<{A+|w^M}8ZPV?;^+P3&}$17_5 zxhIZS1u-`kKB(v6RrsN2#oSan~+H`tk-5=dE#2nuj?^!Plio{1aacZs|>Fdice0}kre`EW1PSo$R;LC~Z zd1g<6*0ASr7DVkrXHC2a-DJ|*Uip4yN0klDt}kU@zUZ>)QfS4~SHJGw&KS#%UEaVR zf5x+fdRCzKC9o~Ezu&D#u`CTIscWD%sC$QeYax@LVq|2H{CmE#0A(&6e}8u>_AR8? zjSubp0IuI3`@zueyZDLJKd=2DI=#+^+a@1<-c4STO!kwBk3b(*o$^<{*@!*thQ3`#9pzr=Qen$@uS=vXK6ES`RaO)ihwTB;Kk>YRUADu^A@{g{8 zKS(B*Bdev`Yu=p2S{c6D8REr$Kc@fp|FVzNGmb+e4}pJo%tDM=Rmw-cG4!*)8;}>@ z$#-evA3i;@#$Sf4UOmA09^~v6uk5?WH@@?YeVjVKMt)J{iiY)koeqi^36XSZ}{)Y_WX2la!ICsdvpOK z|9v>{`YrwTvF$HNolhsZQ#xXWilt&{vH46KBpD`-r*O&OGg4zI8J1 z^i4HUn@ z54UswOa9p-y3x9b9Fn=;+xd;-m!?R60@a+S%wV(aLUCa+RFJ6MZzIGn5Jl5%k5(77^ z>AVZwxJ+B_xqN%dF8DTh5#L51+ZX~*0r-sUaF0*d@ay|8PU!@n8t6N4>;G;I-h5Fv@S`u5o0uUL@VD4w+pD57J&;$+#l+ z7D>*PA_qz=t9K=Ogk{d#9Tw?sA^!yM#F0^BiIa~Zk0kTgLQ`eXR3W-VDSSfl%BoxS z{A?<6OR^JPkGOf(V!1l}+g-b?sId8WG2^Q>`XcZeqm6acTVv`C_Qs(JwWoEk#A$W* zK0L=}dYJdBp1dqsT?icHLOAqq#~S=)J(PKP{_CNZF_H1$o3f3LUQQl>F_9vFS$It3 zOn(`+^yvePmE^^S3}f^|kG#qsX*LlDT7ymFj?)_Y zRSYkyhL^1)9!q1YJ#Tku{IKt>x(g!OZ~9`TVr&Vr_UMV;RcAWi4oi9?e8vZ6!k+i zZ*U8YZm-EL7I>DTigHBK#OL~4Q8->=X4`&D;Fcx0R`pJ*}09<+2j0AkYUw0->qExgEPaX%IWaFx@RM5=gKU2{9~>vZapG#=q1|l{a>fBRqkK;B ztKlv1mA5W{R`D^_um;{X*OrwfUq?o9UmUcO+A}>49;CGm(W!xl?-M+ij2btQapbD< zwf%g^hOv#lEnz>n;&1gl2O8MMJg7y+x-q!QXFxulCiU6dKlN>!;;)fsva9s{W`4`Z zZemC3>>R=Ji_4yxi%+0)+$ST;u{YD~sg=yP-yUz+GQp-dmk0D`mF2(qG%Jfi4)2GHA-pB~4u0PK^`M2Rp2@r$ui0 zFYpge+phu7=$>)LR`%Ia@jGa56a0=f+T%s9R5)S&Rw1h;GqN1HqJ9_h{U&&FA#<=&*CnK8==#GTt&vDw(JpL5*J@5D-z3pUC ze*CWk*DaaC{55+egS`7Y_LyOhIr&Z;`}<7oeIQOAI1SA7NAZ4h-UBZ@Db^ur%>_uM-DQ_Ov(>c`HP?Ai>js=<}?Agxmw-oe$xZb4hG&>zvf z=0NF}g|lFj#zggGg5_FZSp_UDAAU3}X*Me~w`@^L251g1^UPUSKYW?o2wwfemFJS( zW^WK{{o0?mgjiYSE|`a04?53G8S57LjOUW+JkRDHT-M5$KM}t+`j}NY(~f;~bTm^I z&QMmAUbckTRpmuE)%HT;oc74oVDnSUC2+SKQkZ9_jSJS(ec-iOTPd6O6z9Ld&LpSMlHfl{73e^qw^n8?giCn zXqP(6h(j%Q>B6y3;XgN5@qIDhoyPZqCr*F#TlOiwT>H6WpW?^ue_!@#tz)0+ea(0A zgBrID#@`Y>6~U9Zn*M~-`(yVpop$>BMq9gBuga$GJE&7KxEXly4K13$?@V^~1g9T+ zoqp)I*Up~cv$OTwYiH}X`XM{}VRXS}2Ty8Oc+%b+;YsDflYXmy*GIPAso(XH>AC7} zcJQR%s$Y4C_Og$E7j+sOw4~!eGvtoT`av%2Ip2f578VN zta+Gc&%^%MKj={XmCYjA`3GM=16izJFu(fuNILJUJ`?8)Zhqza#+{Rrd-_)It|bos z`~L~gN1v12uIFC1hMvhLZ2LWHCBYPrcn;kiz1XxJVm^eJA0@1z_0yDeeRc! zUjFXmIR;n0GFMhfH~PgFQ*!EBCr^SapX_+HRDOg6a<&a!NU`zq5tscyv=cOIl(8Y~ z6_;K<1YDvUD27YCwE}*<2K-CjgRfa5z?q(H=9yEr%EVg2?>+B5YhwMxds5#f-T5S4 z*yJS3WT&pPWsloOH}|yqy4KTISFiTQv)Svlss6_4uXI247ajhXvHh{Zq%)|$!#({i zL?2XK+GgNoee#%M_AKHSz5Oud#O;0De$dvj_y}Nuw$zV>PCsHph(koTkj?&D2K{1% z@ox;!pJ~KYn(<5Z=a1;sv1#N50&X*o(4}I}l%K5(dnuz|z=LmS{}*03C%ABq3R7;w z`3J`ymcG5h*!Ldzz_om2hQ11|W0`RNuhRV;8Z$VDMgq_hveMw3b)91&a37!#7BQpJ z0TnaaKQ7?kyi4rp-#8A(;*5jh6*U$IzF^NEXDoO|KfzZff5zQrJW}xhZp^b{m*Ut) zG3+kahuSQ?em`{^-In&4Z^lNN8BVT#A3c`&RCe^%2jth)*toif(Z9-V{o6kWWM>NI z76)eG(VYjHQ#yBrvG0#xc-g?4TCa2S?6j2wPYEz%8_7m=_f|dt%>Tun#28~Jdr5Q0 zjWvIf4R17X(+>l;V;gwwluU5z3^TzV831;zOX(ce{|Wrnz`yMz@PGb)0sg9w z0e=*^ooRir4O(dj@0T(+g%{0(W@2RLF%O#It>T&E;lZPzeU-}}I01dAgLOQk?>M}c zvQ;XR9?*=ww}$U1dsbz#Uz-(2OP#7qIq>#c){%Ye5pQ9g!agHaXJ2PGeT#JpGk(rm zU!9Zt;*#f5xdM#8KJOyiU(Z;1{OBrm-P2$CvHsmGWa|1)bKZM0Q?>N z_q6zv9U(XOQU?58{So-vz0l@U{yG1z9)27({P@IpA20q4tzoYTN5pva=bmfERu!#K zb}V4s_9NvtY=&Nxmva;Jl0Z)ot#lttrxnq!OD{X=ZbolQeE9zhKiOo}42Zug2EgARpFMScQt}b_dvXB$dHKoR_^vX^ zFQYpl!(>B9j%~sJDBtN)@_lZ@cPHMt7ayU${t;-}jL%d$cOiVI622o_PI_G&pYd4v zQ_&@iKb7b5n}o2lq_ZwTK8jy8Qofn*Ouj zlju2@Sl&_i`0pBT&ehhO5KPkfW#fPKjpIh&clCcS&Xx1p_#@0Z1ACo)bn4RETR%H> z-WmP~T<`dNX5RUzpWX(T{~7W9arH4X27iM-=HUNPga1KZ{J$>z%NOC|UgMx~(inX3 z`l*k>`V+^%?92TQV^Er+_l=qKxv;Z;fA92@&-tqc7=z6odbj-L9@{2zZL{s{k<&4-n{P`Qf+H60~JTKvz;_mo>(bl48Bj2l`+ z--CCS`f!oSwv&E;<^cV1*U#lI$T#|0%6^u;EW25Dv}{f7fsjqqTxsj4-oBiP?Ut!8 zcf5AIp$(hV-xrg6poDc^r!SrKO=moJnKgKw7navF!|mHg*xT(ow;~t3`0QjEO711{#k)W8->lwSmUtnE_z_FAshFPsZb! zcQTL17ybw1k#&mWQ8z%}yyM~SPn>LcSmynS#&3f!M0*dlS8=K0v7EK?tS{@{UXzW< z7s9+y-kTDw0Wr_o@P{m6o{8TW-w(8=J$C=9oKB9;p?BIfzEib6ncce|xf@^X#2{7J zI+4CnjKAt{n^yM#K9zfR!(-%Iv3)`I8ob&KL0?t0DY$Ok1x+$Dydp8%HwIUG#sHoe zy9(GTTPWDUr`|WQ4H^S*qA@rd9BSXC@txjekAcQt-)S7;(8FCJ@SxZWzDqDZ!pZh? zsFV5<#dQyatgL&+GDc%9&h!?(=BCG?_{VCf#%cle!RrJ^o;y|xpbuzey!Hg`pAdPG zIx~&cW4}J$(D&)|v6`!~Qhyn%(Wfw0=6sh7JnWx6{9y7)__KJk^nS%@)fm5Xc2gxf zeSD1BJ2_LbLws241NeQDGlj!K-WLuj$9JCml5oiTWAS_Hx7O`-F1oG%WH-%$KQ^Mj zyLk-PTH=rHJP4RI>49kRcAa07p?@!X`ZwSBms0*vcmIN9sr;Std&)=J1`T-QX0p{6 z`fXw$1ULLzF%Q++cPgCFPti#^`GyteE4;8a^i%a!eJ{0Rrp#W>Dq^M-hp2V5w-n?5$X4c* z^q947Jd5MkwDobFEtB2!F!rhBtzU2G=esFisL}mC_-UHGN8a|&onY&@x?kmIPpd!2_aRVKQe2Ysn7(WSoGOqpbanPbqUe8$Qdwu`!+ z$N%Bx2y>r@IInm!FlxO?@UcE@+8Rq+T379+UX`h>Lh34^t@$dWtzDF@@w7#|=FEr^ z+FL_h%~H>q5tlL_$XTzmmio_((EFMnc5WjlubQ*Y?8gT-rlIk&foObG%BSJd`1bQn ze7^Z^`p5Y0pZQL>$i&B`8;cL+4L~1SBO;!w-yblUIC=m1UGhnZE@~E~=%N-}-vwTS z;7IW>@^c5Fjhak(-Q4w1_=?Rl?e%C^M+y;_rMzy-GW7%4|G*wAuN?B~+xGflYQ0pl zBQUA%*%o|tqwco%%$9LxNp&D^MhP&l15Rkjlk-3PfW@9NFI?XH81Z!)?@7#67stZq z(+*63>F49@HwmV4jJy7o6$YOveqKbJwqmdq+Ylm#&Cu|L>}Q2G1K_fVGseC1{YCig z7R7=h^R?GmbXKK(w>ONAOl&>g@amcUI?N937dRapf>(1NAnq?zH#joVgIB?RhXcDe zo?b8&0h8MY7ksOV&Z0}TyUb~~+e2?r!;e$rm!+}F zDVQO=tPNT-+?bWJIm~b9>@naeRi3fB@sZiLRh!)WSw(?})}*qmK%_v|m=)2QURF2| zQ7(h5%7F192QvWrfiP)BC%{Dwx6f-VN+Sc|&@TiP6l^RvFK?1dcwF%^4VtKO@c#{1-Fd z8gB@gSgsnLzYlI3zZJN7GiPk@JMs>{%eg9#AMfI$%xXm+GW1{l;o5urw6C@H8?R2M z_2hhe{$+}%P^_hwKC}-e0u8`>k5p-1ABjrGPq0kh7T?YqiKx-?U#aqa?9MpzO7q1ALn+?$EoFfoM85>_h{qYby;cc{MBhE zu?{_ywqody(gn4bs12L39o?Y=xvf}u?RD%bVZT>7`@PU9d$CRS*ObjN{V&fpy7#NB zbC#VrzjuVbH9B(cE5{pt`^ohAeHQy_Tt1||SejQ62Y2$Nc;mN^IQV-x1ODO=f=-}{A|BE<`I_9c#zS4=!KE7q@`Q(9b^H8L{j|2o-ZP>+coooo4YaSlM_Mx}<=@NGzW}^jh~@Xf zTPk>Wd?vCJc)#LCk7?sMUAsz=T zheI#qMeYZd89rFP=Y!?#c{Xo|d0-Jp9|;e1l_ozNcm@kMC(eh%A@Yl_1fJ7;@LcPI z=hc(IMn`A_kW2y$|6n?-#~)3 zn}jF#NQ^lYP`;7Myhu6lnf)B+TFIfD5s=`0@pHwTl(Pr0rmlp&h{4`c_^|e6^~=d} z+aI-kx})nmzh$SFaUO74ofUcdv11M5=i=i}z;m-Xm*x&bYdO88eSM2uSY7zt_P+F^ zzJ^O_dz)!Hr#Fu8E>qi8=nVK^BJtVeMJs_g$&QgxH8XE_J(S>f`sg7CAVPszunpRM~%PSK{f_pHu2 za~^YlpOyEDbT!GHbHK-)1=h2IQMT4LVBAkEz*y`m;Y@bcTG}57XZb#y?Ly9G!kK*k z?)Y56_;`QMip?IGEaM+4ME9zK zhKzsW2lz9PLB?M(CT#Zmbt8YhGB!;g3=fIi_Zgp#Xbp+nMVSk4{~ll9{_9+OeoMB9 zA7+jxOYOguFH7-?rJVmDUzPEvxbdObZ1T+rm&#XEnd?2w3?q#bpH#K*Z zn?kYuI{#O(*EN-vIrComQ*NZMC0ysTzfykSj%nyS@TN}mo;LKI<=AUoC023;c1JgQ z&|viGo*MKY)^YYz->0chdQPkY*rzi7@PxKoklD=b4(8*&tI=_8qKy71x1QF5v=`IR z-tM5$Z+c76eQH#HhB}z*`_83~WxydGLOX?lp}kKqC+-X6)&JyJ>6^7VSN3+}6WhN4 z9c?aWm0tr*t@_E&iZ~ly^!h#4HxjkL0GuD(qx>*OpNU}5gk1;&bc;CnB3MhAG?3{2u_6|8sHz+YnEQ8tOLZOn-| z$f5Pt?8uLZ=_*EF7cW}^FI$4Ivwd+m`6_*R<|=q3_v3s-C_T)ZjZnLB>|^zs1lQDvMt0^Bo9UK+*=A7cML$`EhU@hxPR=G<31?Q=#Hvs(`Rm1B3+K#!&T%LXwt)bC@Izt(={Er0Nh zbl+GypBojq8sB)OlaDU81OA*^XMR2O*a+imbn{l>gLz#smzVL47e7Wfbn*N;oRhN>>n0=sGjprQcoFvcYA(1HZ3&M&+p;SqKEJL`#CCX=t_E> z`}b}zH_aZ~$UCp&pMMv=eKX(xmAYcVPeO;Io6cwa|H|{f(pFn>Zln#nrEe=a&9_>S zwh@%^jr@iSIIC9Q|0CbqEr4OEArwGq%2c9qd z4e+@7uN|+PqK9I}EQ|jN^tcedk05ej9RH2{-VE)yvF+MRn$5o*M;>fi2yfej@6+t> zB=<;rF>6Fzb*|)mp0(gBG0zI@XLoQ_`~rH!qN>sO?fHM^e)x~}*A%i2f*z!Gk0o3s zD|X2@z+SH<{Oh-L)UieU=HEPrM}@}G9{=K5iYd#2UuE=#Iy5C(>LDkc>$`i-GhY4p z@%hI@M>{yjaufQGMgM0{vkq5}P@7h7zVv4O9>Ttv{j1-cQ()DXEw4Gc4t&bbQwrbt z{zmEN-!r)yTz?t9;*Ft&(;|ysBpv`>YE9{`MAe~6hE+Jcr#n&;512wricX<)1VCZL{0n?3r_3|BUq4 zZqwhweqBZFA6C8u`Wv8K`4q(iO`pr{J}>pPTjjLd>$Y2Cw;T7gD}1?349HpZC9+^KyH|KaJg>tB1;>9_QE#lv`MU{^9l z1DVbXie~8lVb1Y|m#6ygoQqUD+B%X4J%3dHtH(Y6L!ANjQGMS^-%FjmkEZXNPCOgQ z?Ry@5ug%c+?|AyI{(1Wz_w@Z&1I$m`AC*2o7jh1982d17epcEsKw}wq$;cdMj{ZZB z;<_^MY-g;$=z&@C=JO7`@<(}LUE`UnvJ3p{9UecK@udff?6q)LzPalnE)R0~&x#EE z{+sZ>GqD?|uJx@SNdE!G@eYiKTo||7{I1Hw;}84rDSqXJ!MlcQc)oZpay^brcYV>< z{4SlJc=4h20au>9OHUf7#zi=G?M*o37tDhnMN3-@K z{X+g8FK>3&IEBYI%Tv0ApZ|)EB>$vmNw<;CrMA_sbQ{rLG5`84|4!(<@Tx5S;V~;? z=r+Q&+IDg7tq)&eT78?*vAp$#^qabhO?|DA=$BOwk{nl^vv10!F;Xw~8=HG=U z3q35ve+lsUbuB+^UU_&oZF|Sk)g!eZK191gaG+d52H!sXSAqxiS!-n3=#^vnm)@Y* zj!E}@^myFl8IM2t=+~tOTVF`=1L?bo;Od?CE?}NRzcpctv#2DKgH6-0mj@dAMV_|Y z^~58)gT{Z-%^Az@?#@ZGPh!p3IlF0VE?0agvembsqiBysIqRhI)k`n9vs?Ve)(NT> z*?u+UI;(<@C-5OipJ>DWmp-uue6?4Q%K?0fU&XM+8NHJMpe<{e>7Jv$pjVu=AdLL2pm5TE+3Z_6@S&boc5zBzo&_- z!@m>*jzof(1o9c{zLtC8P52WYRn|nAVuR$HmM=owHd1}H`1S<6qpnDMzMaxBkR=F$wzBb}O*ojz121+IJJaG>3NM zw{Sm|I>6B{sbd>;D8J==>X=-5LBzxq@>_FTbor7~Us_#L@yk(vH+70e3@)j+&&uzO zmudWz%YiY(_g8f9v4(J&oktBn{R4aOSxN8jW1Z)&uUL!rF-Bq5?Jd?J&b)1zS+`FB zv*wfD(||NR^|XZU!!= ze3iV1w#ce1TMGhsitnplj~_q_|fwlxsNgD(qyfR zqj7ew^Sz%+$C2`5?Je^5nQ@`dr>mTAcFl2d6gD^#Pue>v?R|qI(ed81oxX!>;mF|a zJl=)Agy)QSbKugM7GAswF2#swENnc44c-J-1>clj(qC@yCb%jbxSaP5-UL^L1DDE$ zH-k&y3SE?r%W4lUSDXx&(`~p!XGP8)VbfP)e|F7eF4^VB;?RgQ6eP6=&@yT|-cy9L6`TG_ws?ONA zRJq%?>a@OvGxV(zJH)MDxDoCui)u2~pDMTOFXBBf?kXKz4um^DFM5am%GWPkdU^O3 z){S>*t=V}d9$zK7i#*nNi-(9OepPaJrhI(CUeTR9pGA+S1Ve_l*QxEH>1|JVtFOV8 zLE`se*k4py9_*nLu+Zue=T^tzonlUeW94~Vx6l!IGD9J@{JO&PzMgu z#@91;zr|+i*ME@f-oCuXGdBjL1ODk9^TWg$c`r--5>2kjv~uDq$gZOpC&?6$baP_n7aO0L#1`}-$YBAk6KGVnS78; z70-3yeg?hQPp3O6`?z$f_PzaWn-(@X4K)``d4sB)DUM!&y@8H3Br>ikwU0QUc%Gv{v)(27;_ju!_p?!cue&Fh zbu#na=>vTSUi{zP&UfB6bNRN)S!1KkRIZ8)ZQkH%GZ`J=y9{l9-Sb^9-<5jXb8~@Y zXm6qCyFU-~U556`Jm0;>ccD~!say*g+MDkAZr4EHWoT~#-)XJgd#1@2+H~ncbIy$C zh53<*EyVv8*got{oHuUbfB9ZAEzM3Dg>5kg8{ey$#%{IB#Ro4uC&v$M-koWsKV926bb)t{_x!FLaM(0cGd zrjJ|6A6wb2jXC6>9cL}-c+N`x z%E~dntBk&%)AUc^@K;uL{e8qt{UrN}`sVB_dhg@eYk@(nU7Q~xeOA{4jNc)~BetD6 z&beZ*zL1RV%x*X zL(HeZTO;eIeK8!p z;M&sY`Cl)KzVl{5^u4!6Mvv@0Ejsde>6;bV3wyhXQ9ZJlb#7?;?7<^j&n_6+df%*Y z^#0P)=)G5#MGrhTEP817@aX>6Mnv~Rld%oJbrbN^hm!|y0Y2=7#QpfKZU^=UnM<|6 z-@trYM;{(04uyHpY2u=WHPr=5eoM^Qzr_}-AK~OK#%DkG_Y)tc`S1&VzZ@9R+KnyI zY>nu>5&qna|7!|Ydrplo^GI{yD(olW!;d%NO!ySuy05Wur?wiYPxbWWT+!Qu{K|(; zJA$e&4?4|nx|Ka4{`xZ2Rl@fN80)>j^#oVhW13qX)Nvhk*m|quzYLBvzTQ7wM%}?t z=Kc@dYn=B#ml}6t9}q_--qOt4!8yc%-D~C4Bd>e&M_7x7P=&%ABoR2*3fFB)zwtk#H%#7vt`DP>EXeu%_=@=H@xNn6&^qPI3f${Q7By`DFO*N@#f* zd*f*@N_&sf-ku_hwga@C6;+*PA1eOuI-~2WK5~#0XGcDGI&*!y!9zL?$nTrgw3u<% z^(%%JhMBT2Ic19+n$Wy=d4YV;k~2DY?Mm?TV{1@-oiompp^2f;MA}@vRCBd}xjHhs ze~)mL-K+B*_aUd`E4Vi=JHz|V+}>l)ZI>PnKntRYOmq9t33FS08IFt^VQ69#^ILRq zhv;B|EmIZSDcPo+q+Xi14w_gFOix~HNh;iT7SO9H}gtpXI%g{v(x^UJnBE?p)UO5@uF?rQ z#-N9O+JGk7p$Wlz9qlcrz3XZ3PGG$YSnmN=)v5SDt&61UV;uy#_{R+OsV?me_R@uD z;kTEHFJv29c++$LI`?}1D%X?gZLaI)6`NxSTQU62CxCO^u`YMQ&42<2VMofHo4)gW~seK8XB4{rk;mvxheK z)8*Rv` z)~V-*qvy;jjh8n{i)|$z!Cr!8*eLUXL1_e z1{=IJo?;uS|53nZKF^O%nrzX2fcCSZozPexJo6Rk zstaCQf&MAHbwgu$`FX9A3i4V9pA(J_y`VHY{Ngg`D;NCdfq&sG-{7sY&`P>E?so8Y zJ^exNnBJ9!w>Q~*06(yf}Yp%hYjjJaO-tr9Ie$4%;@}c>&KbjB496lslOMkMrj_kJgW6byM z$7sLbN_ISGCHFPJlQzJU)*;InE7>|jxi(uvjqbf4{3;e->vQ(}vG+tAY+iuQ^ZzjS zCh$>L=l=h9GLwz47AjcO5P~SU*9B5-Gf7ZftF82Bd%d>-0uqeYQtz!=!2}azi3yh0|XJ9t0MH)d$0dqX0iftOSGCPOaAZA`F_8dZzdCsT*Y5rue@gF zyPWf!=RDha&htFyYHZ(YY9IWjg)QW(UH+YvTAc&9ig(M9WAcli&wIuEeubJ152W_5 zK6~(h>emZ`wQpQgQ2W|<3gM6R+P2r3@4cC|52niA9@v_RetnyHe)65Ud+*<7y>X`1 zzq-qIHu^Y=_xhuc2h{#Mw(~pii0oYX=4JQqN3OW*KjlZrCOL>rCVkP0ocX(1JK6eG zwsSWAo3|e$w-=g-R`Tvb-g$`Umm`x_BBL1p+stRt$LSYoERvBA0PFo`JpH@I^XKnr zJXwsVf9;2F4uF0K7#aBvW4YfmmbY)T<>YP9@E~Yd`5QW|fbT z67E#YidlE0gb$nV_VpOwKaG~9Pgj29lj-<+`n9Py?k`~PzFR!dRO2Vi5B>TPaD>i` z`fumVD_iU-g2o0qZEgWpXxDTPH{z9@^Y( zS?6GfI=S7BZ%i=X49tH8t}g!t^2-~aq+Bui6BP$!u}2eN?UG82_xj*BLysQbw=12T zzg^Jj$?$^gu~B-)#3jXJRw^v#Y^^RooqTt8JjMr`ZkJtXg1HJ zvKCa_Nm@9P(9QuXW63yZZ(NQQ`cvubj#sSA>SAA@bv0`>$>x5Yotxwb)fgh!;A-=- z8f3c8ZKQ-0qpXZcEpXfgjuCkNNuQ#7t@z&#v|EFiYKh<3;w^CcnfK9O^ zrVbl6Py_sraW?#Tt8BhR;XPrIA5EBTyWjvU~+kyAys?<5tREws|=O8GzF zPp^CB@Zu#`fCD>^UwSqJyrr93VjAat7CsjEPO&IPzvk2C`L?c5j7S6eMe9=44OGoQ zH@;>Iw$nS%scgrEmbIyz-=m4w91V4@; zpK1=D&g-2=A4xE1y_8Jghc^?-XKi3M&F3dq2U=A51m1+^)hGrsuP}hy@lc5vvZs-L3cE^ouLB+Opr=3Ll*8YR=b5k$)`GW^Hl3}jAsKvJT;z#%pUR)dr zUz1FHll3e<_7z^(Y?(G76y*%goM1-i_3XaM*>Cm&qxMHcPu}x7YQHA<;^zxC7c+rAmfJhE@smB_a9ZL; zm&tSE3ceK@&vRKkcQwx~;yLB7sGiv*_|vZQ#$GNmtV<61Z99E6c{IqpO#$Y-iaD1p z39Z04ev>PzPuUqh=DI|&u%m))z%iv9ersf(qjGnp$?<9M&)L`jf4MqBaeC^vXdJrY zDqxr#WX$k9wn8&FlAJaEW#&mSkd2Z-^rM)wxa=06^@LgNsLp6Jw5s+bSDVh^6FIw| z@w)M9HtcC(3mZiGL-Zh9IwKgvuS?BZ(Xzia1DiwoMe&FW)CTPfhw=riM&@hJ zTk=c%qfhyPekpEdiIjx&AztGD>lTO+i8CG8I|?aM|_4_7+vn>kHr z+qB7iOrp(2^kJXlnh_52JDKdz-lg<|WXSh83pLorbsYlS6-7p%Kx=0^VcZ>lPqS z4gMW_!_1FIK6dF**B(i?fYkz4;2&y_VN8-S$WD;#)1Po)>sgyFw)*3>rTTK;9sg`& zZ^i2~M#YQpO7MK`{r3y~a7E|J>DX_D*l*buvGM35Q@0U%ly1~snEXKz@Fv|Z{uv8? zMuR8C&qv@T`7^~w%1Nw(FUVtfwh>$!+m3m2`@rljcD*w1d2AmxeZp z<`}Qqaq*n^+r_8+Hp%J{*CXc|kattb>*=y#w|=Xe4cjMsk~Y+qa-?0G@|j=4r;Ok1 zNg~s<&Kw2L#AT^%>sBxawp_4rQ(^L&&JOu_KO6m@$XCL{y&gQcyyUG{^@=&KJ+9we zomTI^V`E$&fVb1MZn%TBghMy*jcVN+UCnqR(48xPbFGxRX1~AgvcvZ+NyD#UVy&Se z$uL7l$a~R|>L_i2KUrr?QEfuv;x){o_WXINPzf|u#wGq1HwjF!DnA+j4Ub~O)-nr5oo#>e(_q=w&HZ4Ks zxU?(z&_%DqdfHF2E#38jXti;OeRlCG;wYrc9)Z8puo-q*fzT@91o`*~&x!67qZfrw zmGiI={wH1=nTf6GtP|aOD@%zn8RJKua$j``(5*4$YpdTq*F#CSFLM zd1iHJN zag)!q$J?Ht*!Ku{aMw`{&>J{ds(D*t)Aa_emn2*5_U-jjvi8rVeHU)64b;ze=)8gU zOTb?VHnvOaM#ea6M78D6;Rai7C#(ZZ%uIIpKf#qPQ?2kH`R=80uU`Bib@yDk?8>8S z7>i5KufU&P`D=#t=GWu)9|9J9>oq z>(bHi+$9NcM1Vnj<^H+wEH?F2yT@aAV==UUT0a^7fJS7~D;`1X@B{oSCObcs_ypw0 zl?Bu!#D0nv0qp8Ld~M*R_YC7?T!s#zER|rTzZQ z|NXu|sF*q`^P#B-F%HBltTZyx_&p?t`r-Rf42a~C)&N=Ieu+enZf(AVI^}H zku!G_@6Lk9TCCK%D*k7{U$fvZ;!^6gclyZTswF$DfN9s2Blpmzbivi-M^;++E5wsI;7szQkk8Lj zd!gC`Z*Tc{c7Axg9+GlNH!%OQKk6l$;d|Q-O$nE|G0By7p7rfZlh_sT&aIw)#lw>O zLsH0VTW9CF=6Le@n;pEl{FG_-GT?Z*@i`R8$9z_WW#b@GFW&=`tynec+7gi zg{j1b$>)Jd@O~0JOZx!NnaSV*maz%2X#55@4jcs@I9eRsNanckD9-WdpalHjGuUe8 z$+lr_`E28*p9c=%BF*W)tGo@F~vqPa3M^=vT(23Vh z`APy#cDj6%YuBnN@YHBXcK)s{|GUeR_mOX-@IlJ9lTGK^cwK&tBAcf_crZ@8T`)N^ z_ib`_6ZyKUeu^V=KCOOATcu_4xv#ifGVg?V% z29sNsSG>bFXB#$06ZR+Tlf32|iS@yz-;b@4fjyt$3objIIoqc-k76-Y|EuDH&|hdn z`On1I@6M^p2-T<0+t@&xjl8e%U->L&USXSQZ%lTFYGC3gykH8kE~BtHil7bFt7czJ z&-++M<&ckIWKX5-mlaHcr-e1|er&P~=)ks(J$lV~R(4-Hwbn9y!MyzcqOLPzI>7tb zb9WtNJgxqIb!CjFjPYdnvZ^~7kLpOc<5~MD<2j+1@r?Qm<4Mi1@+6m z{$}5tC^oVe#ujk9>qPwXYqE(M#OGXueT~g7zlL3>G`LZ=`$3-5n5oH)Up=KY>pb?g zX>0b^ttnZvr%%+qC#XwW&b?{$rM0#CyyfKJ-c?a(lV`8u-S=om_ID#StE6|${g>%39zm;+D$h1!~HDzP5iK zi4Wh$p4kZb^3z+VpGCap?2?IFntXH0hOBzH?#zzo2cWYDVo$!tnnN(WpHuhn5M&;h0pKCHaR+tvswy%=Kh34q0qd2u{cV0wY$EIL z3zjWKRfNG63>+7o?#;^Ux88@HR@k%N&UWEa1ua^)odW^_=zzv_^`;XNrIEjx9gQ*jj+G^GR#YPObkF#;EJPjq@PmY4wb! zALF?qwO{o(#xsubl(VLq?aQpzdhk@nAo>w}!pA}CkrY8I+LICOl|Uz}wpnx7Pnz<& zo;%Su=XC6}RZZ5MMWVIA$TZ?HXPn&e{J5MQ50`DT-Y65@Q9o(id8;0#A7a3R8^5D= zQhjq?gr@#TJGUb4HyNs#pG&XIz_m z>1+Ej^ff--*M?;J>R)^5>+xggYtX0kRoP2l4;({Z9}-95=;5T}D($7OpBzJ9|Me+- zUDHcnH++V^x~*9q-ER9P(!-+X|NQ#Vm2dKIum97-A95{%&sh6tZG3mv2=4yH3eNO! z?W;{k?DeW^FV&iOweI$kY^C~Q<0IRRTQBr$XUuBX-anj+9%2v7U%qknne>Og(jI7b zkTW-s0rE%9z_!siY+sV&=X1s~^Ui4<>xtK!d1p>X4)P$I8jq zS7sl8dOzB?pTT}mm6Z`{M8`I+^MxAGw^8JT_LdoYsF?bjlKnnxQG6qL$f*gVk>i3{ zwVcqsZz!)0`|DX9=bIB{9#>gmquJ0nV^!|&7J3saPwTIF#k}pzwXC{{n_(xN}T`(81e%Q`hT{U*L zn)-D8L*LLmU|-nufxbfz=J=3rN7at4`{aWqS2C|q{vhcP*4T&1yV{EXw;8`s3v;ud zb%kum!Sw4sa|3m3R)aI;wnU4AX76k?eowbu#TFg7b85#pYAqkQb5w`LyzOH@Tl3a1 z$_njZ%-(mK1_d|%AKq7OGM8q)n?Re!m&-c#?Q`SwDIZX8`Fe_{KRPJBKWS>;$legG zD6WjSg|>&m5i}$m9@=7s%FC_VL!I_#C%DEpv@|C;k(&K;H%7R>7`+_Dh7dmbfe$}5 zrN$hdySItw)^9x}^hoK9iA_BBNNMgwjX4M3qv*U2J9J$ZvO3?Fr+ly|&x}SV{R{0C zQCn1Nx7;e~)=seF$+W*y$bI=xi_$9gXg|aCgV?l}+_$_w0XKgHpYmt46{Xqh9c;)C zi!!>^uc{yJi#2BZVokZeSi?vkWA?=&gM6_H6VE4~x7H5-vhjaLNpARJA716_RzvFB z%#*1h)zGiQ;4zd(0v@?PfpIqsFX+N!06fkFkImq5CwP3Rbmqh;&z)L2 z#^6zT4&Cs$#h(`e4m~40=F*<}9(9W5^(&#fnb(Hwf*5%=v4&hev5EW<&ULv^^^)yc z*U^y$CI;d#`{nwc!x~HLt4IxNH2k~S!+;x^<)fazf3Uv)i`j#0@E4eR+Ga1KhV>gV z#f}MNPqG?WxR5?y$6jRp)B09QUSu!tzRC5sxV{g0)WCjK3%>eR?Em*z2Yi69{bT&> zhpgD&8UmaPlhzHtKXvdMJrs;ZU#6{v@N5-zjjM^PVGY3k$&|?J!I<`U^y$VY=7N_h z=1}{U>zKQ)Gi-T30(=He;0;*5>L|F>Uc7L*oBkS}U|c*m4WD__WAHb9$v^D&CE9OT z&Nw>37k#?@ELK0u?RT3xfdyRD(}(&C(3YM5q5WHb_&N2XKKfIyJfZz`XDkhz)$O+Z z6Sd9rspPt(ow{I8T50Z`m%%%avi>_2d=w*VM`K&6Px(Z=<1gV|6PwBVf~CoU%ilG2 zzZrYTg$dqGgvrQ$#wt7Bh3OjFJr!9t7C6#MPo1cI#+kI)@^8q^=lKUmg6m%3YPef- z$DFUU;d9%#MB};}S-TQ{wrB|$o65mi9k{D><_BFZ+zD@`g0URD3C2p#ywoYa1RCJe z3*#6E#>>(j7@402U&nLOrJB=v=*Ro~2*JZMdR}9DjJ0MuW244bouBsgTlKyU?MpFy z-g$ffjs|=g6S!B(p4F+Azi$0hE3}_$nLdA=*5x-JUb3W>=dZ+%AbhL^9|yqALFgyS zST$dY;dF8GaW*+0z;F;6GB{zpE*+6K6%y@@VLwT0D;qDF;nCnla~9=2FRdn4Xo9(nNQ%_Paow|t+pU|%7}G7JCpZnfAy<9i+{Db zeetjUi~m^r_<6f(t~^q-_o~c()fuT-bz69TJN|ZZiidTh&4=ueq@TE!5IH1S^Y)jyF7;riDXe?$5?zCWa#rL{Av_7qla zXutQ@d)o`|iM5N~rlK35)i?4j_PDV>C3odR-7yRwDn3)48@YZ&!QN5STC^%gQv+_M zsR1_=9lzd6BhDbTbsF#O;GLa3E8V@uXAN6`Y+P@hVBe>%qwee8GVa;$QWu_g=d;H2 zzI$8O{S^B?Hmvvlcf0QU?fa~kz4tHdy5HZv56`&wM|9mwHTTvKf8gE|Y<~wIwq72< zeXDg1G26QT65}%Ug}85zYqI5$vp8+H(QVeDTq&qncS z?BFau!7+q(+-L1)28HAY(HhCNwQQd>`IyTtv(o+~yRK^P<$Gt*emd>HI5)i}8^1^v zwyo@W=7)8Vi4ES66HE{78rHc|?_?A2vIH5j5W840;RBNNdnxZ9pdVu4|D@cumcy6t zy_tUc(a-34{c5sv?0&R|v#@mP#K~5=fk)#l<+%)=tDl=uqrL=B;<(P@y}pbi@xAQC z_kgS0_($1rCB8T07~k{rUSDz6flTQu&bp1gk7J0?{;|BbhxZni-el%zC-d*lPs+UX zntjNXGm^~DOT5$9asTc!jJpvT3JhPCmeT?qbzJ?H6#-e~*5M0nw$Zfy>U({^_ptnRhVyNKXYiv=^#9 zOJV~<+NW=p4*^;%TL`SDVY{7yy)csX!*Ip^T^?(~r_q7W0vI;PM@yR*Ht?Kmx(A6j zkgrz1XYlNpbj8SK#EjiSJASU&ISl@AQ1!?v&I>J|rn{b>#y#R?@)}lIdG0;M4*y3c zHWv0hc1NCMs>WWz*tg@@N})!QV4GppzffhRRBMgWb&WCW+6=}^e(9zveE24xnz8j? z#Mo8^^NcR>cVD+_U;YJrV(vWs27VIWM~}FBZwl>6Kc&!*p%-+_L2z2s->NRb-&2n5 zUH}iuAGOtQ*A!oe{ZxegREhmmg#F}wSGs2sx<}`FN%xcl=I!PD^y-4ct9Gd$wIO=G z2_3gyI?f{>x1-~>I5J+kM|9-=sn(WakBW&qD!{H!fwtr?)7lifVoD0WuN?kepO*`( zKGjAJ?}{e#dETv$?zXK@mp<7Gz+Q~UV|2xd0DFM(Ob6yDJ}bp-tM2WU==dW11_91- z$>sml!70^g{FfuU1ZVwF>`ma@W_TeG-t#Ze#!%qq-PK3ZCkS_HC-S^=#^!e04siKQ zb9aSj?h?;yS)2f`>a^b|p0bF+tT@G-PZR-$qES|e`CJ5zU8pey`5k2+`!C`N#$xfF zXu_Im{1;27L62*o$0+ljVnsU&S#OFT%MxG0^fCUN;3*+KW6C$9CapOOFUKC=hUxJ6bogf(@dxtB$Uo=9 zk7H`n{g^$ELFF68!;Q@K`k~nH_fH5lX9YKkhJW)U`#SLPdjp)>G?g~LA#V(g>KXQg zmgf9=OlU2>j$3(t*pZ{eNLyjoZu`ft#Md~&*KW?Q5Pv@B(7j8KvrW8yJipG!OUSjP z;@nUJ^B7_5{-8a#4Vv3?tXK-aqYcyw!M6ON=Jy=nV*KLgso-@Qa4KJ_65K|Sj}c_0 zk!RV&4AAbq$fH7Hj7R>Ra~7ci6SIq~H1k~K$QH&ZpIx_W$VQFjH_lj;Co103pF5t~ zg!q+0##~STMZh%)xW)hzv66XPocSge((>h>zVHoD;0TV#~7Z5FIO_#nac~6 zKO-8=VNNBp_4`rAZT4^Rt)=lDU9f2#eLX^7jriT&zUD()W-PAkWNgz^ck+Vaq3QTW z4?l5q<+{V&=dg8%J%<`|kTEBVPnpe{&zoQ8<{ya0qZi|QS?3D{FHr7sN@zYdeGWGL z;tFzF@QvGk#$lmp#NB9KiDTJ4?V+N0d@V3)T~S2ba0%znXCoWeFb?@}?XlSL8p?M| zVb8L#!U}ztGYRS^qyMf#4{B`=ZR8`XR3B*pJgq)%qL0T87wp{^xU}^E`nm<)P(Dl) zT5E3n*&Yh3mii5F(PDMof>hea=@&J4W2k{BQHegL|VUiU#G+34ef3*cSO!+ibk z>}T<=a?Hjs_wM{C_shk3BmKDZ_XP8Xyt>G}r}@YMCyDbR*m|3vgPet?v5!$)6#h8j zPxLIfygFeAdG3-I(JXv{;G~Pc=+Eo#*h=oGwR(6c>GV)7?{f{DpJe29w>Hp~YU6aZ!FSD<`Z4f(bdI~Pc#j7!iSnnd(mu~%F*N;Q zWx{y|E8)de?DJLgkG-bx-A#OyY|=>{oAf@$w=|t?lKja<3a1y$&7#KG|XsVC*a(Sld}X zi2uR0ALe%7FX;qdX20Y%p66cVZY%cKeCYW-YjdR1ABwI*?ye(0P5Wv3jbFIF#^k`S zF#Q9I=2`coW1w+h;(X->D|B*Y=Stz|@72)0AKQU_Bb%NA#;5o5vyM9SW&d{R)|)3W z%rj4}|88Xx`m0T#Kfxp#RNSs=7vRe!S84#VkDMD~)!ljqli&^6jIt3&nKPhAhZL9I z{I5q=2GB1vlzVa-^n`yd$H-3XT=6QrCmox^+1Zi-uf?>d-Mv03vK0MD+|**|o;Kaz zhxjeJNjBaW$TfEP)g5m#eQ||}w~zZP72i3Sc;z7D5nQ6l>Cog_XRY98olt@eFTJOA zf*+dGZ@;rfC_&Ci{s$KH3tEi498&6F>G$HNLe7xA2zv~VrIy*dQnwK-dT3G0DLrPC&^ z!hV{@x=pgu)DJe%zGV{am)oRvv-&dO3ZXXOoIGX!fYFe+!ohRJXC zK(73oStl=bZ7$Ut7wzrf9oby^U8GnB-U~7=#REja*B{8e5dB8EAL}@}Qn)s{RW&%S zwe4(;GXU)<&u|XoQ%y?kGu{R6-2KLzbcQtaq`jQm&2@X9Zz|t=@E&^Y@27X?yKg%* z-9^s{`2mtG@Yb`EFN!5uk^_%0H@2PPiEmBNJzm-N*MvT`-b*~+%k6)5g1#2NpNl_2 z{JxN!rbIpcC~dbf1~1R9@#H?}EHv?J0q>8(-gno(ed%vylKz(Tu|LUL(X`g*+rTL_ zznT2%&G2klfqwU|*qqD1es5#UtW!7V@^9|zH!+U6{ENr8AtSVo)tW7z-|l+d^&e<_ zeO=ElPMBZm1Fb97k8CqPw3_VvwnuLH^z*_>JoDV!{AMPs&)xoor!~OFx@_|p{#RN4 zvK;*$R;t?LJn;5*zI>+9xAA!Tl&^HI zyck_Ljo1x+PA7iDwa=KR3w9C73 zJ?w4gS*IQB`1hy1IoY(M?^EAQch;S8TQ!w&{Mn&%(SrV5`mROCc>N103H>}Ahj;gk zkwwPt2j1ONNBRxiGZ=&5pGjOt6S6=w=SRL(v8J~Dsj02~SZ~}5&J}wlS$!_|WtXV# zVia8@*`YSozR?}TtGRj9KTYeTrnz;I`j|!^5p+>DKDM>ciLR;t1)K}K1-YGyUr9Jp zO!9r;`o7Yc9XA30Sn$27^wbX7oa$$qryt2G>8Gjb=qKC$W(?#>BKw=L(O&~^woI|t z@wVPbYwbs##boqGr*sZ_i*I{<8;^hL6b{g7THkhV zk&WuF?fkuMPggOPsz??-zkQ1WKI=kb+wyyx{0^)8h0e#WjG!N-BerE&&#Ldc9UHt6 zdq?_q0d1_WIFTIb#uvyFu9kl7b{+di*B^E4pEO^`MW&x0pNRcu%kKrl;{Bk%msVBe zg=9w<_<|>f8ks-hZ9hw(E;mRdB*omT7W9Ku@2=kN-4&(m;7H>Z;9Lb({Ve>x! zW9U}%`QUi$X~v{yG)C_;uH7tp>kqxT_Of?NyVdWiwOs^GAynHb!318fLFSsZMXC>fl7W`d?4-Xqf>rMIC z$#Y#=I5jV%*uxi3q!voBf2h8Qe)4&z$eFk8wl4^O8g^o!bpX016+3(j^bthgvL}4u zXK6=$V;2rnd-8R^if+1;_7>32i})El@ND=bc&0K}7Cg5L+#4T2upj3dTCr(d&*6IX zTJToHx)U5mq0uOKgP%4yGH*9i9I6L54d5m_mASgxmzM$`Dz`+kdmXtjC0o-??m-i{ zYX)~FmXznucnm-8-358~+VXh!49R@tkK!?~|0R!+;RUh#sGq$JdHg86EZQKDw36spT~)h zTB`Nz?h}mO<$YgFeabd}i9QdW-KB30Z1P*FZRy)4i4Ch*6*N%8y&cy0tw$WCY(e0u2exxx4bpli|h z->=7~>v!s86a@`E8h&?Z(am9>4Iae@3&$ZFlF+Ox7rZuh0KRnPgS(zq{D62-e_i?s zy7cQ~PFLyY0V{VBZ=4gx{AZxf~^~@SXwI3Lo+*+q$Q{fpcIQ{RMf{ zh5b_raoO7;UeRcmAKh6~_^o?3rgqF*M(oW`rVn25uxx}Vwp1Byb&Jn+*C2}LbK^+d zYs_P`h*)1_>1M`ca8(q{+vAZ}rXHh#KfWK!S{6T#FSLVvP5GR(j*j@}Z9JTAt(a=^ z>f?SD+0a|TujX!)@nN4By7zDJ6!N`LI&L^}4}V{z(h9Nn5A5?cQfoGJX+NjV9XeL) z6T!F?7~e`Vf3Fz(J?;;YPi#K;Wk_mzcoG^xC)VJqo7Y) zzu2~;_q%9H{r<$kO>g#lZ32F@x2!#8mnJ()ti1U*gDci;WMGk`#3s_X!Mny?&pqGZdmqN`X?p-1Cy9NC z{sM)>aE-9;(mU)&FAq$#^7K7$37@QC1B0#2fpe`;>bW{6lv@r*UV9@+xpomB@e zHE882XEAk>1?<^j#o)N~nG6@Hms_EiSqD5;nlsT}8w6U*SPulSt5SoX*#BMhd*LUw z4UX~x*I9X!;NQR$#u^CT6*v<-4CeY&eh=ew2A?DNEamegK5yZZv8A#`4s7*xq>iyR zTi013$pG&hxbk?msTURBuaG?E{k&Bf)|_3eZSh0Si6T=3OBH^ws*}hoTuuHVcpIht z4C|860`kITpW@TVE94o`EB02ecr&!T-Ig)x2YElG!t9M)5c-MR7Wp`ZC*8RhA4lGF z>~8tgast84#4&EReU&y}055wYnYNs8+q@hb4LP*xPCk>+vaxZjf!*G*PGKw+Uk!ct z6Z#*GUm=D5a~45o(A%^utF{L$)Y$WmZ|f=AtLz`T#BCQGF_yg1;5a2^U^vUe=|bU$+*kuG8`72o~`>?`@@rqRE>#^me??5kzO zEy$*u0q>YtAK5sX6Dt$BsC`P0{Bq{!mHkIo?&4qj(!K!|doCm z3Hq(gZ`WtHYa9;ist@pCWp~;95ba4eANs&&V&N<4qv0WN#&h-Or-VY}QcX)m2R;(?!}$#BU{u^#SRnSH{6ImmOXs~_pz}fTql3pJ}dkN^bLO4h8yu!GR7vO z_f=zBwuNd;tL~EW{Z$_&9lSayED?7hgl|+yR5HmEeo#>aR};{R??z7BbRZ z%e!zJI4bRRQiNw)*`w@s&9NC~Ie;7I-j~ts zxxP>nI8|Krp#Ioc>Ezd80~8VulH$Z_;~3jCU$)0M%MUN4L(#htvsI0?CkEo9D7WXIe~6I z9%GAPhsoY~(KEKXMESDau0L{s`2NK6XylJ5C+;kV*nZbH5y3AZ`6>Q)VH$=1WHI*o zON?thb38ngzce6k7O$C3_~9{kA>*!kt3qa`wRLD(_FLDdF18 zxtDY8^5yFeSJus>P4*<6HvP5Yy&W593!7ryhRTNpH$m0lpNvZ zMSSvm=;gIdBd_3hYHd?ZT5Z=lxx^Pje%W=t9sF#?|7n5SZ6_)Z)LA1q_uRR5*S?Lc ze>CrtJoE0Ze;cvI?@grdg#1+3H@jN-1H`IcdB5UKn9KCJ8>8S#zE{bPt?UIA!2_MS z?18e5ZJBIsMsBoeJ*0d^vo?YD8;#7t=b-oezR>?bD;2EAR5x$U;ljN->wTAWujEt~ zF?G0^8-g7j+&zUSbgkGc{{NeFs#FOEh zmpz|<0kwtj3q)BDN!R65BOt1nah|v3l|7fn-vZvH15KOfC-gC)dmlr*eN0N|Bg5CX zJ}$QVmBLNu?Lt_wNk66yDV zkuP!j72TTH0(3|Y`bfMp%F6%Ciw+;j&hp~c)x(nc;Di{5Y2*i2T>Oy ziM;zf;d$><;Hmi(c=~G3UyJ-T>z`ii`Ae~{tv=ZEA0J9?&(Cq-OlHrIGxHahhn*9w z%}v;aP3L11?q!V$Z_L9t+BBhJbJtw4UNZCKk#S!B_+A2DnmqEiHi2HU@8q0sWCD6= zL&>4?yj-)-Sh38N``DS(zVE*FXP@8`>EyzM{U`rkI%P!vu5nUi`m0Z86ThHK)4Pc!dk!eY~r}5JL4{4+!!3)#y#B`cM0Pj zoG|X`&bUh$w_T$qCEWb}(Uth=c56RP@d+m%K=%wUN*#GU0dLF^>#xR((ax zldk=dUdLO}bG#27hw+C0m*c(XQ^q?kVSdfrZZ%`=TJwmm|IApislIT!{t@HtGhHXn zF@AW>ae;Tt(Dh3meoh>(=vn(RX51B*gzDj=2G$KOKmX!5%<*~0I>*jo|9i&xiids=n0&E#{*&@xw6{MZ*1598*i6~P8)M6}HqB(M>*@nPHE|oE^#*7? zg3YDI6s!10JZzbj|k^c;>e2z5s*1JZ|d?x-A?>*y; zHPL@4|3xqM0XY}>Mt5kOq7jWT{W#41+P;o4L04*=cX;M>*Jqkf#+o2cuRad*IjgT@ zO(IV(@r>0gPkZJ6kB@=>$q|(t?Z*Gd0WUep@N%sDPaIJ z)Ns4C`L-lDy~3lTa;2jrQym>;Wa?H2r?&^O--$CoZ#~1_PcmE7=om+SB(AZ{Jx52) zNLXW;dybBp;aOwVy<=?A4L#Oa=qbe#CtYK~`@LVc!tKPTbi=P~np}HrvfPVf^i@M{ zaC6wU9~PpL~Dz+O)*Q8~F9E(LQgy%}c}^ z`090Snjn{4zrN(twTbu`8jStl1birW(Hq}x_7n5LX^|D%`%zCGUJQM@Iy^UnSRQn@ z*`q05&bhTjuGPz37w0N$joJN$@T@cjsw) zPg{$<8t^Tf75GHwPm-7MMdSPBxBH0iq9pk4x@P0{ed4mbazJ=o?!n`;z2I+L0{U*AX%TD*M=X$ZX@V)tZ*jrB=2O796 z84Va3l+D+>|4H*Z(lgH9?5$+{vF2|*<=Ch4N02(L9{y;gHp3UqADykAAAg*lgg@%O z7MC-<@rUr@Jx{Jz{aE4ap&x6&k>Q!oPe1N1vF(c8Ub|uwc!Fn^cG(rjs2>-4@FBjD z+)dPvN!MfKttZ;=|CpRUb~|hS-AUH`yXCvZcG#WhyVW)MZp}Tpwwre+v72|7IP;vuZca+yM-Kik=^I(O z`@}e}3kO?!(TACd{O*q5^7qgW>ll9$8Th%<`2S_>*kqqh;|aRZ=zq_cd(#gGlGsni z|My`}9np9HAN4L=9zmD=;5gvvpOfJUIe1L|KVpBpwv@Z?p6|h@XegQguQz<|_~3tm z&x-E&Og#?x9Q8Tk^NL>Z*{b*(_VnHT^kn#4Z1~X=-@_V7`J==%ENvl{+~nPwH4=My z&{}-|Fg<)|&==32e>u=c{;W)5tFqp4{BE?`(sQxPEFtKN(yEFClhP z@x-!|71OEs9Cxjr9)96C;9_}Sagj_wbY$D?~ zx(a!o;H&stb=7ylK{s0r8{sqgD$rG@CXC;^etE_C!{X-&lY@r8!J-xyv~(@so!F$u z+k48J*&g3RiF{-5QUkmcIiHxhtH^C+?*|(Pz0dyE`N+<5;LUvK@LFi@r$S zx|{KK<1K8AUU};iWK0t>KzO*Sm$_G6!$0&g|Ks4Hql4o7C*JF3FT+a>@R4{+vC(GD zP>~X9arnvASGH_U4}bSK(8*bSrjy=vlyKH8UnO`u!k&IIo)O-fSr=^rcb9L=945YT z|0XB=zAWMQr3t?$CHyW*_+6OryCC6rFyVK8!tZY-{Qm3K?(pU%+@F~6`=NyA&ri7j z^@QK&CHy`&;rBTSzyCR*{kaLh$0j^~YQpa^3BPj_eveN0{lkRzZ%g?7qlDjIO?ZEP z!u`Ps_Xj2X9+>cZK*DcVzt1-D(((AtTw3IkvkSs44rBtjp5&|U3&jN99cQl z)TPc2EB;k`*HiJSvj-BJ#%CcpUX?tPEZ$QzKFLGle}$gORWyARD;5}-I8SUdwT(6d zM_CTPQ^;M-<)8a@J*Erz&A)zcQ+)SH!Mk$#*YgGZCVy|UY7^H`k}jPcD95p{>OH``zRRY$bL>^-`v@jx%Gdv}241&WYF1(>VJ% z<5WFpZw(Hgr{{NrdFDWIx2v=4+FtsNzh;Bt$H@haHKKDB zM@?;>Ddu`Y9QiMckE|S}IBMGS#*tsD*b^s?yihpNx)NKUk>^Z1PV9JBy9u%5_j=p) z#Eze%cAePqGn2LJ#EVD4ujwZtUi=o?T}^#~df<@G)0}-RSvyYrc!4|ag!u7)pq;7i zxRb<>o7fvCe%wnFUb_9&kK=RdjaOMtynt6uKjhAFgMDWDwD!&^ALd#i3LD0ja?hnL zeY*2)=PShXH#FZ%$$6_tv7YrYulY{gdHz&8?mRys?mRys?mXWUcW%Z|WYcA-XAGjt z84m1<_cnA{V#8eEsST4X{(7;A?@fT0JhBSnmkqpqglAF$JV6JZ=0tcnAIQaFiwB1; z{yvRA$0zXT*o1yZJN@>RKd&(UobL4;v_{mvmTaZfl6~a*O3n;`wv~sPhCE$G-IO!P zLr-T;C2I!qEOftgX3b>r+0vU>yl}}hYE;VpSN%eFFVEY*YWbc`jMgXF`>zo{;pGX}-cJ^P{62q5 z{OqmK;IW|$o9{N+N5PFVs5PPU+9sruQ(A_sx{W%Ip72V0q0RI;5@1YoJTct?n~s#743aABenXbKw6#hMb%gH1Z+#zdJW`>xqY2P zUrnsjnkP`_kDU4$mQ}r;eY{l8Fx<{(CAs6a%&>C?SHZVyuw_&0tM;fqXd&No2J8I3 zg1t9IAKr7*u&3J}oxH8R`DY)tKRS13&CbJ@?tKjS76RWw;9CfM`?;RMd082m8P&7r zzD&+w(cYH1uhg^vb4x~g_4v%p>gtx7J*~CRw72egwf(B;@3+sK_fpNyKt|nZsp)m4 zfqrI8Yc(dVL9v_n%WgJfyQgbxO#x?Y=WC71d2Fl$a|b(PdKdi5OB_8LFq(Af#O)ZTBxzHh!tHH1^^B#TdH9uJVqmsxuHMAc92 zq`jwrU$q=GKPm7~%f;R4V3Xiy9o?)o_Qlk-hpr#9e4L?{-dcw4AI63RF zfmQJD0yi0)BSu}RH?*ePcRFXB(cdb@p}HdLnBz+3xRN=pG&H!=(BR|Hpyq8AFgL)P z%6HfIdf*p*`Ds%ydudEDYr1xYVx^q#m+?Jyq3XP+hp*@RC-G_nF%QXj^+fRJ%GX*W z@4BzY7F-fscHiOamaFZZX9kyTadICn!zQX^Z^MSsUh9x&5^IL;G=B@pRn>gH44*FI zzr|Yga7(cd8;*GeH}bJ~`8%IEY0#V&7vzb*b-vyh&S`5q%6vnoTgF&zs;97yxt=!0 zdPD6rAR8N?<8ok{~c3b;Sr8%#cpv~VT&T|QoGa2uE9JN))pgFAuS$Z+^rZTysX;(pfb@KNNjV#>U^ZBb}s z$8xu3x07R^4o=vEuE3fb!2LNiAB9`>aE<3uKGWV_l)_@)9pJ}?`q$1X-9h#I;skNQ+4>d zy=mtz*)!H!-M(W*pk{r=Lwjca@TvAoFR5!k^=k*(*PEQ~E0?b)r@INdNPBVq9_5jf z{~a4UB(x`O$TRI}L*C$Db2zC+wIb0S%Xjj8^Np6NYk!FI5Y5@L)y`*~^O@zGMF}10 zT-flg((#rRsm1sG27AM;L zVA~nug*bgIaoRUE4xvBMs`~O;e|$EXabgX*g4Hc zX8Wm^qrI&(cp^RgbHTy8)EWxe{W@nH(~oMB+WiH)c;GwqC4DXYNR|)cnKh&0_->$% zo(tDy4nFQX`++@=KJ{e#&h>w4zwhS#?Y!5a_g#IVd6I45zBiHgbYJq8Gma;Eb;Q45 zH`wbI=llk2Ba2wB9=aR7p!gE64Rnul{+rPUZv7FHqZF@)s(K?@k1T?QvVA^dgQ#Xl zXD7P3GmZcB+9vjV>`a$};Ua}M2q4$Hx42yM)T^k`I{JM|&pUB;M z_{&|_NUxhYxk`2>b&%l~yM|F3`$ZY5!Mnmc_KV!He@gw0842Td*J&?0deOE2G86X0 zWEV%zVGJ728H|H5HKYGp&^`6%Lr09Sa|XHc*xa4iU^(E<)VmjL&$uKs9lK`U_c%*O z=U1Eo4PwWcy)edS_Q4o?GxD|tIVFEjug^dWLr1uI!tOp*T6mjyv}$l@w7+6c3H_|@ zLqDf>L1QN*GK)s%x?7$>(5cWRL-QI;A5TQi#6wSF8%q`EdRiYU2_sN@q7AylR4sy z`sfzmDxx-QzRqN?SeDMe&YwKM|3Us+`G1@LcP=i7y*r^G_TKpgrruV)e;~ST0J306 zc>i|JJ9<4Bdk6XOE^_-lt&=z_Il2Xzg3oP7qxI~2)NpHYn{tomO@=4Ju&^UzldFj3dNxdGYh zORbLckU#tbWJUeI1%ayoxPq}r3os1_rUq#BubeqH6x{El@3%A_^gOU zI_Gge7L0vGwEHISL8qH8wpQGX>~z~}+6Rprn0)Xu`BiW69A`|cPuUyZb`I19W3_1= z&(-@czvuuq2ZoAMlN%GWjxs@Z@|`D1L#>#!-$ z#ikr`&$nyNJ9_2v^Nv1PHxzsF?B5Noxd2;o7`EgvY{_BRl0WB}O(_GbHyyon`4c?% zH|)J9f0tD=9(a=V>-Lw}m)cKkTWz(z9E3Jl12G<*AO3l_*#>R7v?m%9{q2YLTA;gc zvtHeIYM|}RIo6bY0|IURui^6ntL@AJKL3f@SEpH1{xXeoU&mT)kLOrZ-u-JW{@VGh_N4`u`iHc@u{Z|3%$L{(*Jp zLRa2#e7vgnah!gf$MNy1p5u6dG2F!%@=7O81pe^H;Qgb$R_wleZm4NaNi*xZ?T1&^ zH6WujAC0UtTzcB@cVrv5*y7OUmI|9Tw?LCqq0uc>&?ak?-t4FSokz|4V}W5ZK7{nr zu@h6kpT2LIOB=kq1v($aXA^VK3=g*;{~A`X76p!_PXFe4_+k_`^%iP!LGK?=z7ijK>2U(~;=aXJTiG&vtRGO5gLRE+Lu$U?H zV*@-u+~#qg18C9J%YQl2Ib3owQLf$a8RXg+#(X@-&_k|)-(+%4`>5SyT1_{ZMqbSz z){9!JrG`H^dVI(5aZQ3uV+_(YcOug!qH842B+GVM!#`1$&5I$+lE|1lxPCn6B$01| z(AB=wfRSPEGOm4RS#7i7o6gPwwVg!+I~L+AmfiUvwVW5ES;O9C-{ReW^XEqep3fB)C1*04k82aM0J^C5E{V;5Y1=AMD8JYe9O&TrX3(OXc<*@UGU&VrLH>SUs`q zPBVw)Jo|aU=gz&`Z|(iP_nSt)hn72j-5YKHuRESgxo75npFN(Pe$`%*eX2Q++Y-O& z_;UH|Ce8WDfwrld^PE82H0C^eoYi)-$F^3zY#Vmt1L`LCHgQJQvB-)4tzG>zGT|ft z-5W0|Jsba%@S4$$mnMJ7cpVI0<8a02JLgM=>);_TTyfcRh5prrh+spYOTsdz;!X``&->|F`y+ z=YFT=v=puLidg4`>WFWtJFQ=Owc-W#r?cksEqqwA%samKs6%ipbnThgCB zl;8BLv2hz8!!N(&F-+4K3NqSW&4FgF;Bz>i-^*y54=v??-D<0rJ;+|H*0OQlH2Z8G z-W(Wy`cPb!7{BXh@Vy<2Jn^oXPY5sGb5ZH3cb>r-t}n1weu=PN^tcVHtrG`^#UqyH z;0K=_=im7f$8o~b4}2z^kNpy1z353BRxi%i#cW@OuC3<#zDqOOqFuIc|8DZ{-~RUH z%D+2-&z66JD=s@0f5~utS9r_IXp69Sx$m1^{AG2+U-6d==jmPe6I^lp<$cL;r2yBl z>*x45(!bL&be66nIX;W?OnO#`0AHL--qk-klyK#&-pET zFLB=htF4IGtfx6g&FDz_dB2H58m|+e9a@W zf_Zu9((h+kd0u&W19Kc@Jld;%h14apJrFuQC54!cP

uk3ELJG~)5EYfN@*+KBM8#4jFqTNj^f1V6j>zK?vY@!MlQi!qC59><>V!863y z8lE9Gv^SoaxA^}JT1(`a2hAMY^wZy^AI9@}(2wdLx%Bf_;z5MJUBssKz#o2GgTLSU zZTu}tr}odhjb52^)^Wz4@bpoFY^h}KUD=X?Z28FVv-gaX$d*?-j_-VbL{6C34*$=T z;9YshkiYZ`=1oL~T$CU~E`zpR8FG(ebsQN|&G!ys?_^W>|Jat0&`+R@X$dTbjj(pU~UfasvHG`#ddsz(CUGG`j! zTabN)QLoRP6F{@IxackC_26`R#|GqOxMRZCb;_9LfCF&;WwDk}Vf zLxXFQ{S&O%mCX4*t6ys& zcsB8^+_(EO{-mX{lTS*-@A=Ty1ksX>lpqw)J>RIjqKT2+(w zO8R}Wv~1%2Cr{e@05PghZ966Oe<-)5b5FP`EKV~1j3K--7C)&C!3!Zms|gz6Nl}J zC|f?+`8hhH^h1B3TRd!Jp%qIRqg*L#QwnD!`kb?={zU#t)crfSe}+YV5BEoK|D^c+-|7DC+&|5^KbSs-x%X4T8@c~srLWsr{%!p2odmK5yp}UNSN1CBS(byjjLSawG~|vKc0#I_SCe%CF?}r9f&mdd%}qdD3@2 zt#6G_G2gQ9Or3M&p7=odZY2Th*-4CdRRw2tGrsx67f_?Y{4QW@!pmshL#{t7ylk-o zWjS1*!C0sh1!S4DeOv{y*(SS7Hzuv+9l3O40*5VOa#zOH92p7oAH&#Deu6SO6LF8+6Gsfh-< z@&`=*X#6~?$Z60Fd|>$P94nSj?BG;zq;=EU#ceg)^4!wcqoU}RpSWDImq z?)62D=vd{vsQ!WX{itZw$ulVF<^3HFZOtGbXf?HvEo-dNeL8PZbNOEvSS!{kZ-BnM z{R_V{c}Jf!$Tynh<_-Amyn${x^UgKVi8nt${F3VMOEinI4I-v;XfW1WecS`+4sU(j zM&yZb=;BYfbaAK}V#>|*;&5~#4$xWB%^KTG@Yn<%WwW?=bldRaamXjMu^wC|!{H)u zSds*XI>$zJ^f*t=KI82(;7+*}!k_ZJy*WFsefwLF{IT^#rpcdJe68{)vbyPu#yg1N zznh$i+gZ2XMvg=oc?7e_2LOjH{AZ9O;pRtV@x4F)?{NKH{@>&Oeg21V?E^kP&HzU&zkmK+{wH5oDay;Hb?%W8xZ$bw*_+szg=*w%FWyRXoS+Nf* z$-O`)yuSrI5*_d!xz%sKOiVF3An!bZ&ASpEc_wH5y{VjvK;0HAtu^;DAGU2;>!M42 zQ|imnCwG8ja!aBQ(LQ-4_hARFx6e2c7sTRkgAc?XUo5In;Hqx-%lj87IW!Q6hgzu@vv+YEW@lf$XBh) zAZMr6s@QY7FT=(a@C1BuT9;mHM4z=xKnG7o7aMz8=d=emzH=CT|9jR**sAg?soq>< zGWv!+Q{8XkKJqFY`F+qlBb!&}k47Iuhmp_dKKGWMdkmY)dA5aIl8iuljpX-uUodZf zMn+9GvhWG^c-}@f-m>lfhgny@|I{^s(7VXZr?)-$u^hKhcl8%yoGO`O> zqDx1iUz^dr_1Fnf?G2%$qzk0iq|;`CZ~R7W^RXFcQJ+b9qqEVPQ_834GYrN^qD3*KhhK=3k%FKe(*Nyv+Lo`u{2Y zmxGsjYG*w|zL?hKjmRM7Y-?Sd4$pL+X|>ftw~ru4XCi0T|JfgsJaM1vvJIi5&q61* zKR(sS6Rqd9E)jmeqq#aaqwUF4n5#3PW%m3!$1rz>cc^(qKUy!YCx4}U6ge9BFvvOV z@^wUcPQF>MPa_o{hGesNPU}$l8r<(@EY9_E`VlVNT=84LNsl?_{oZW*zRdZF8sF9A z-N`52%Z?U&Q7w)yYTOqrH#>at$Lp-kdo~(*8B7iR)4A070RJ~!Gmz{3*Z^P;pEVWV0I{bn6Is6 z?JplzKl@oTeI9*?H`UKv;TfKqe}b)lo+F1BcV1@RcviWWArke#v;^Q1hu{DVx3ln?`;<`Ly~GOWSpwYmL}P^1Zq? zjd_-9z0MWBz4wr7J>^0=>*9=V>*6l@!nP8>3=+P+fBf+C0pscwKg5i7;lYa^;$FM1 zA7}i$?8xxG`dxa?L2}>3GqhU{eM%3!O3waNe5mdp5s2CuX#riQQYyr{?f(<}mx*1X)+%k#!ZH zzpNW28ba2o{~Ogmb3KFksVW^2m$l5a-%oql=UHt_nD319SepZh z=Y{qsPI;-ly0wkxvuXzXrEhShV$Xo5A8WrR z`rqxh4vVyx`v$b`VhttStpTQ1@E{skLyaZ*yKm)M7IvOu3+#J38zeid7zpog*?oy{ z3r_Ddx3Xuw<(bqrodXfMy+Hi4Nqa-GGqvAi$CYG#w~OJfx1XV(Vp-zyI}6 z>L~aWc(uN)%;vm3i#43VS+-rj)t_bJjxFkZpPf^+=fS~i+rOQ$t^Mq(_uF5ccTLSx z%p-fIZ#;Em((={p-Dh85wY~TQYs!z#wKlxw`&#JryH>wY?irro4LBQ!h;O4XBeX?LJ?R%`lzXxAI+&`V_qWBmu7{^n%x2Q^4y4@Y-U2K4-j3*RMXS z&*P0Szd@_xxd?h+>%M%S)pn5Y1($dd8g%R-hsfh;)#SyG2Axe^+_a>$>S z*C9)?kR?|kOUjTX#mFQ1Uc&H<*0rMTltODtKWMlPx-N!}M;BOA{&ZLPg`0i->aLs@ zTwd(+wT}N3y4~@5cX?3S+dSfDXky>FabJ8MH_z%O54zLsK6@T7@y;XHy5^C1jvn#= z|Dfh^f#kuNBl|p$_3Q~1jYdlq|K@~xRX^C$2P zRHCb~6SRJe;77cEkhLN*9GN(h^;5PlwiTKPbo_8{>iZAvIrXF8wXgSWZJ*EjI}rKT zJ!9IbP0R0G_5mYzV^6RLroNs&(OLl=Ttu67k#!lNhtsVUiV3JE2E5SM@!X}fmqvSI zY41_q*Lt*x{+hVIp4vA}^xs5#&G;I3T3-oik8$nbRSyfE2+ydtTlal(TNXCZcR70- zXUTp6mIbT_npq3*e%X9<&jR-Uwp{0%lf(D<_>QNuKf&5?sl|FZ#Ga;~x?@x4S~Y4X zvfPe6ab>V#eJ*k7!x?8pF_P#D`P`&0qP!A{Dvbl9GkH&!u+Px@$#KRuXAMXQq{1~@m z$lds-l*kt@!XKBj=SsO_hkePZ5$us;=|A{*_3xL^-+SPT7qBJJkAxdnw^9s<7dKyV zapUM$Q`4XUI&>M@3F^R3qBJUzr}7H_e)2E{!SgXerDr#@)hulqd(j?{}OU| z(3Zn*68kZvKk#fw4&M_ihdXI6@j9d5?U{#uw?g_I>bZt~ zyg)f*chU#c;o|YA7+EhKKjz}V!Q+1Bkr*Cx@OT8@i;1BC?#}y|pOSqhx3P)igLmzE zMSokb47&9?xP9h=dTsnFw%+C2)_a-r*r(y*`}gxM#P>c|4^GY<=*~w@_-+4ll^5^4 z6Tb9*(r98$_-680OR;dkK1_$sC%GSQ4J41_`Mumjk03ZsT@q+;`*A7#xU%WJP0RUT z#(xF><@`U+|5E;2h_Bho+UqD{sdNo;eVFH8H}5Vp@BGd?AJ?zwIk=WRA)HDkNFKOw zy!g5!3miIq!NI53mMFt#=lTdVcXZ~1&tDRk>5L=QWy=_y%V5*#U)_2gI^|u2PGyWE zlMnkHY=<1`b;iVoOVQ|;iW!GS?}W@6!L?o*@y^hQ_l8D%Geo0&4~-u4&?x5*r%~ra z*hl0;6;2iFtr!^ACXUt5{ZRD|=#nehV||1;)bi&C9|Om;kU!5|D1YL|&1YP^IrR7y zG#qK%td@R13;F*X<7O7)=J(Y7P{_zOH})~U?rgX2E0Ifl`-}Lxc_z8P8vl&eLKMH% zUO>IS9j41oBhaPQ9Xr2w=<-{9wZNviaj$Z^FL2}y?_+4gccP8H&AQUE$I+~d(5PUT zM#}#vS(WkuWz}b?*U<$sIiIMC^^_{sQ))A<#aYCSw$$R!qJE>lu|E9oS*#DQf_}ByZ;;qW>}8S8 zgOPuDm-gY_l{*mhrI`3CVE8X_+jh|TkS<&jN&?;)vN`BK{zZ@F)rgc^H zr6lY4Z~a$AUnV9_?RJs(FQzYxMvlX~urF6d{=$J-dk7kUTRQxcTm{QF&2Pb#6xn8; zDNlW(c`uzZKIYcV$*tJY>wkv~N=8Q+9U6+g?YNr$TpJqr>aU06*WLK#25d0z`F|}} z+cAn!WP{cW`{0KJEA&cfaD8*>+DJdT@gmW@u3_EKZ{}3y;K!eDMNhW#(p$#=L%B!W zv2j#pD|jR(Kf4$kNB+7A*f+%OM@xy-E+ziTLN{0J*Bt6=xEFpY2EMz&hy2~W_k@~GR`#ER8 zhTn?3!@ZZk#7`U8XXNtJSL5Q32TO11TgYA&Z~V4mx8-xu89;v41InRG3wPRQ{X6(bBuN%j}Ac-?Xe&>rf4PmR9CW3btU^$ zSAM&-zZQFZ7x<|P2Ey9|fv{wAqV;aGf0OT?VZu zTK=K9p83S|9I`9}=K;>jY~-8S^ih2?YyXU)&TG+gZseaa{OG69LvIWXxZ`jO{_l7^ z)Dk1CwUPMeX~KWfnSRR*tgU=_IfGMDohN zN?!R_$t&N5ept_$Q1zTuluTavN#vF9{8nPk4)V&+C$Ic;^2%RNUim{yrg3iF%#8=m zt%&NJqIu+omTxWooT9^g*NxxF&f&Zws`J}4js)j>?KVC-KY@?nF8o=<${1Ji|OQk7M@hkTTVSHvn{U7%}#&a@7rlhWlmD2y)-|&UHc$r zakdfuE5S7vzjG#eL>s|j`>o`3hKJD?Ob+Y#y8n#2Gk|3(`zr&SLt@Jm`wXi1eAYXb zh6U(29 za`t>BXOyxB&x}LHXa{{zzLuoH!A;%3)J?3l_Vo73exT2-lNhrZ=-y=urZggxmoe9= zKRL+7HQ45f=z5LB#iub>O(b^PJjW-k=k>@??J;Xa=B6+YO|yK_dSY!mwO@kx*H_Q2 zSepd@4}ELS`U_=iFWOMq+1BEG%7(6!p7qJ<@g?UsZG{iDMzv45XZC!k+J}AJIte+F z5gNd5eyX(P4tre*T-$gZVINYZ{miZRy*bF*vE|RJ-mS9DDn9yw>y-}qan97x^(J#o zj@-aiW9DMC6djMUclKg*+~CmA)wgDVUoZW%AG`&5s`*FzwX~Pf)k(1*j#<{k>fIU0 z;RN<;aqey_GP4c&@U>IyV@CGNCanN}7JJIlS#$VeKVupl-JTn48~y!o=gzm@?_&B( zAD@cr;}1N%Y4PXwFNHZdUY}IoW{2|zUWg8E(w<1^G(L2LoP*dZ+`I2@<^9n7S83~z zE$FT`T+Z)gjros79(3Soi^H$>R=ziO`21e!fX^T=&%WdA?R3ryZowY?CC^&NhB%kj zM}8ahHS66CX?rScebN2SY40;mdpf^2roX1W;q!76(n8tD&^w-S+jIJn#vEu_msQV! zrs)+^st^9+y&=9*f2KI~pNgwrdggm$uN@liEzCdC`=}4zxTE^(dFMB^Fs@sW`HhVI zmQ?N;Kb-%EEs+{2Ax1eb?Y8O+zAxqb4&KSWY)NH302r^eDzaH4eyRi?VhQ$rEAQn$ z+&c(vxKH=9r;0tr6TpMUr=dl@J?6wCf<487{e*`nTz)ue@H2e=y6}VSzQe!??=n7& z%_F^CF#Uszw*xl4J$QRJy~$twbr0UO?@;acvY&fs{Ket#sNu&r{Grb<-yW+1AE{QL zPkMSgT-6F(D+--+-yJ-dec+tgn^(c!`_GSX zmNq^Q!P)4A6TZ{FzW3nH>ybRMvbZMopw6RBRq-rh1=%v0$>TOOt4sCSC=yJ~ZQopxfqTkCrFu3zv zi-%WY#uM_uD?gt2i94spjen<3`82%c7c$?)j~DGx7i~r3TE=-NbAA1u+RdVy?CRIw z#K&skH$}FZ90$-@u^9Hg{sh}zacJEEkKzxFDsDBAc`uFoF2>1z=0DX}!QN=`i}*%7 zqq##eTDd38z6{3ccYey80vx-+YwNWk_T2gUW?-A>JTP#L?6$x6jy2}DW12Uo&py8? z7r&$CH{*NU^(lLPV@%JM4}&?=Th5&aywBD%wl6lPiBGQ@fnL%}c6w;$j_+PGpAC;M z^=mycOLEE{yLYhnIQ0D8tdqHN>YK_r;K-?e;9h5>A*Y^l

}tE2pl4za^)xy`B9X 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ⅆ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

iM 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�b3cv}D9j_o1AQ!)%Z!|@sM z&-N-GZLpip8y21wEYXfZSS+9I5G*r+1zoo&k8$GfoZ~bTSk@U>zGud1>3e{MX9dem zt-$j3*N>Oy4UW^-fW`9sO2IYpy}{);(=Ju+rWv!_417P3jd|X5;#t9V`)>wevt#z> zf@j)$gGc*Z+SmH%wD>*1!n1~del-Y-9kZ)}rSLp*lV6wvJ#(=U3$XjfqKC($&){k0 zNh$Wcv)_#;ovwH7uO;jwI6L;jr2W;3ZI!^bk{#ZTy(L?`O*WV3%Um#uniu#o^Rn?`&d z8oSH0W9vP6&%4I2!RAQNMgse-4gSvP*FZxf|A+Hycz-y*hWMYS7hK=v8?T++%9*>^ z+3p?;6N`r*bOz+0{K$@ek^K^N_#<)P)LvHE=W%qc)`mB@e#w@R{E`=QQvDLn-*~h5 zKR*)r_4ho#1e>M#qw-0wkNo8mDSpWo#VuFJFF_V+?fqBe5a>G1FWHjxODs*%dFf;K zRd4JDYDeuGsKqa-9lbBX_{onmxcdm*n)DgRIG45xuD`&n+|lx_Doggv<3!=1ukBLM|A%;61^01#neigInJuFeTMDanDQ-_Jk*^uVC~B z$-rdWu3xgE#A_RVG;K3K)%Jh!oNIHteo65paGqdr9^!*pdgk%YUgHmrXRLF3HWZn* zUs$6(o@qXza)g>0gFi6m+%a~2nYi^enJWgKi7q@*7oKN29oL`O$-V}`!x;DHIBUK+ zw0(Ds6Up{ne_4V$m$%0n-VWfS zihuLjk8%(m7f&DJ8J8v#O}o^tTPD5~e~!eP&n4fRVBRbC{L?kyJRCgie@gMmHlUlB zYi7MzK3PE$$8o034aO&}8xhAxY117a&yTad=G`9sX1nw|$#bqR;`wo`^@|pp@xc$W z??kk~|Mz&x^W)@?o`a|EPQK&$apYl%c88t17lzWo9rHCwm_0uZ-!#RKL+^^m(WM?d zo*##g>dx!BdxmTK7T&qv@5kYb`f2=U{O*qT#fHW!$k`H)3eS=Fw2b$rF_$|X*ZuH_?bC!WIIgk=lyH(xS( zg8fspubOC_B{Ao}(OL4NHskLW@?H1eQXCo^Yo}>16y46J^7AyF@=Is%$2rC=rTtBf z`J4~w+8^X2;$zA$RSiw)1m&9SmH%?J&+bHr8=n*%-g76qnrGd!bO-&?cFs{$UYzXD zS9=GRJ+*%A`fkrZebM+Z`O$CqaQ%wl!^U~f@ZI9Uhux60(f#nJlFgi-ZHVoOoOQ>J0uYjZ2e0Vg?#x?-&}F41+`E z2srSLaEQKPXx!WF`K^}5Wx!d|<{O8&q+K4rtnm z9ctnc*#6p2+;gkoQZ9sR-)c|4ViN7V+d+Jy6CN=1?HX9NWBuAQ)~CMT^Ib&Kb}l@+IJo0+QOOQbDOc9dg=Qb+d{_nw(}p`llYd5 z?GLOUZpZd<(Gma3!gt==gtpw7boBt^BIO^YDd# zf6d6g@LOjF>#^AV`bV%+()a6YuYQHM{-u6v7r1L*wXA{7L+2*2AzIPN^8IwC#uNB_ z_d7Svo{S&SzuVlg#*p!DeZ)bSzP0)6)=BK~xA2Ol z2eCVfplJ$im|x0;oC|H@T+gFz(Kv>mq5W6)SloHWw&llt9=OMlVg5F=SffqH=AbSbx7FZElofe>mPhv)*0d zu6L{E!rK+8>)r838TUt6_Y{9Xd&3{IoYT{>aSF*t3iHX?pvTI|Md+4|Q{?O-yE0Uy#5pD%oXU`#8~!wIK+!D(jM}FIYS8_ z%)}{LX{X{!x1HsJ3Eqn{r(5BT1aqj3IoOU|=#Y;A4|XxPb>8<$WJC|L;#5^u**lEk z+vLDK?l|N6e|N*a{wn9#Xylv8E4YO@Rqyo0s=|G7NPVn+H4%ytaP;`L&kKglWc~h`9da(Yd zj~B&~=Y)6MIp8fC4&JX1g_pK6!FwE7UrmGebMF^k&RiXlzLST8_iIDprL9cx?giFw zronsF2=Ja}jw`>VW`X8=PD*}D{5U-QOGh=~zJYChOk=ivxpTVuGWg zz}YIC0sW+NdF1=+SDAHqbLK95Z~z-TYaY3o@J)kvCTli)v7NQLHrDE_th48X%qAD) zR{VYYzUkA+?%909U>gk=hac6RAGMSI{>#5OyS0M%7cysp9}hnoJHQ+|#C$?0HuKxZ z`R#W7c3ET#GY*RQsMeH)!=lj4>Ymff^UZ+3BuF`P~630}3)y2O4-Up8N!;6y7 zJHc79=n!$s1AG$uCSAe9zryK%z+qiRd`TahjLgqAGXKdllKI*2B{`px_m&@hGz_HC zFjf)nUjbf!?Z*o`x^p|HCrHfF;6@zs{m^m`Z9RZ25NUGp zIQ^SE+&USr2f=M2b8c6W>aqu0UOKa}aVP7ttwH$Gj~{(V-Ub*iwe24>Y~%h?@S6gD z<~L)PDwil2op}^JEV~+eg_?Ti_XW_k4O>C$QD5O6vDW>&uy2*0X5=U~u5$DIvMryv z-HIGbAjjH}NvdTdzeBYb-I##e-)-2^+V83Ua%sc04|0sXFP~upa#MA03Zczq#75%S zD8j|$iV1G|nEzws$gH~87C52C?M~=)9rkhj`#kqudv_LS1}(Nu=Q3kzTf2;*=~N?E9Y(@G)ZswO4?Pu_>H0|?Z-t&J4Vx7-S;hO z%WbDk?Ga0-^OYIeoTxVODa<(G4{4lc5mWqI!H$jfo$JqT-NT<-za=O7Ev{92+0^9r z?(6q|_C522@0qQ>`~T#-AMxG)d*A&g-~BDV`x|}t8-4d{efJxD_wPyG4@KAbuB&|4 z%egl5Cl_8SVC=`jOXK;&Mhtvx(4K7_%NS$3A7xG3b6w1b>%X}6OzG0$?HOVn-#}*@ zd*%T4%yjgk?3q^hHZK0fuEB?YrlIa*k;m7sHulVX)~GM~dQNo^g>N}N=n?F%d8{{N(cZl3l9cC( zAy3Fgw&n2rL2L-UBbl9;Pd+Z6)qE~?>h4i(Q0)oLL%wv5%NBq~5*J|1+=pz3v_5E0eO&CLvFMvWNA%^~&kXdvzz+|!5G)ngW}@vY z*9zzGA5Gg{cq553bWk6=;5+pp{-cjSnyx4OeLx5G5oFz3eLRRQ_Q%rnWqkX=esaPqFAcGNogBaS!6V=H_vPWTi}guEFFxt3KSW$S*~k0f5!qS(F|quf zU~O6bRP*^>aSDgRKV*OK4`m+>;Z2YKpMV}afH%PRN{vww@eV$pDnt&=PNm@<=D}Xs zVZ8Gcyj$ToE#25D`DZrcA80*@Ix3zmmYmOCKezeu^X8dwOybF!vcZ$j^Q9;F^%KAB zH}+B5+-s(f9n3x9cQEYYR^{e0_XPQrouo0_3r^ab*9i^wfzu*n)FJGz4)Dr3^FZT4 zv(BZp3fBfp;zj$K+nMaFV?P&`OI-g*Ss4$@%%1gOWXOJ&gW{w z1EH1<);Sv(|J}rtV%Ws49g7dn`sk;DQ+BKDIKRF2q_K-a(He4vmh;y>d#LU93+S8< z<2(J>S+jk%o5seDyU%u0>`bxw^szgbq0N}u#QsdT-8g&sqItkJhdzCo^V|+{C!`PEck|7?709`f-@Vp-_d;hGo3tj-9SmfIfzM*X{QL^IVub zl8s4N#=7l&fc@6VdlSvQ4dl$k&{OGnxou4_&(yJ|_9Yh%Xm^9TcM#Z$pk3zo#+he| z@K0AI;dgOj9m0j5T!!>_CmTMw%Dn3U|EGD^y*J0)3+Fn^KAF6Cow*kyABI|09zVG} z5$B$v(Xf47W8U3Kdok?pbU0QSI10=&8(8BS9?y%-Gb_L|hE7ax$Ax{id1eQ(`{E?* zSDSk=)>Bk>vBB`m2hF_z&t+=MedYt^nKi}1%rEt-Pnb@cCbM;ygivCfADLUxpJll+3K&85XaxP^#pWI zg>ekM|7`!t2THFeKrZidTHgul>{;Rs`@m~*hJC`S4f6bT#Ik(w_?4_CDof&@N ze+Ax)lkg7N$18Y02fW$C!Fv(*4&&cHYp9-4zWe)ucO-sn_U&=^^W$$+Z`#L?zw+Su zpW??WGw@>(eyD+=-ma%obbYL23~3%0B=T~`vma5t@_*<>{RMhy&#&NVjp(8t;*RYFZ_?g3;!8-sa*iP z8F{c6cwZR~UQgyVXMz`*_g>*W2R|ljBKY}nrw=yK?w>ta-jBS?G`^qAz>meqyP^!W zK_v5jP9DpBKA8OcDER&+1FfWA{W5QZj}Ijet-L!Yd>;P+U&h)Vg70bITQ&lGpZMQ| z&*L}X%UGL3@NERXStGzV<&S`GAAXVlyo)wKsfNi{TH(5 z{TcZOSv?Lmq2Owz)}-WdY$9uUJZGN?;)m^~ZbQSDKh7F+uxAI)6Q{$MVm}$aRBLek zv->l=mnfmOmG_?3+k)7^tE;EZ(VG1M>Q~-QJB!Fm=)^A{nC{#~4Vz^H*En~f_m{1$ zUNdLlOz^Hc)?eh~JWjnRox|{=<6N_WoQk5L(>Ir#y_Lr+`g9h9u9qJV_E~&Sk%JXu z?pl1=-*vS38QJoIo@V5&aNQ)BnZx$CbUd*~hv50uw0DG~@}Y#=O7fsplav^X!EJK& zO7hG@(F5QX!`C?gZaer~O^*5j54Qy#ZrW3ZJ%7zjKHOIPvO;^iT-<&c>|1^@If{(s zbKnNPN52g2Zx=d!?_lFU?#pHRA^fFvJmt<6?;zH>Lu;pX-_W>2$1RqQR}A)bbmi+w zIv!pA`e0w%Y+t~Vsjnx_(U-+*g0HU?Cz5y_U4A0y%H#^SeqJ4Znd6L!9K3{lL;TQ_ z60_gZk?S$-<6uP>;~(5$q&)`@RR7~iL41# zefsZStN8SDZ&iHy=ls3%R@HqAAFpB!zUs`pN2@}?CY|A@eId#9Ue7+9UR^rp@M!YJ zi3gux&P2)k(mH!7yset7szIrXUKfN@&`Lm^evi|sk)zx#R2lAr% zfBmWB`PDUZOpQK#`_k%ZbEsDy8MW}{=&;9pM$rZ%3<2BvK0b0u+&Qhe$u%!gY1xr5B3V0gm|Tz@Q#@7o5P zdS)LqDdCv}@Kr)1)h~5;u81|balj`y^lpOZL*V8188o#DC-aPLa|f`-OdC#5KF^m_ z7tQh8>i%oVxhe3XE4#9ylYG~O=Gxs?f3ffSBj(zzCH^6Et$hCM=y>1tICJgRuN>pM z9_72vHP>!CA#?54cMkZj&t4_i-1h&#bw(Qsx#m9`=^smZCoS&h-+xR#R#LxG%N6}F zc)mfr0)8jXoeSLu7@rl`t83x;#qj)Mcz!WF-v!S+gaP|St+ulCJ%e8z>dbuqXTpTC`T zidt&5Rx$P@O-98p-OSs>QX7LFgD_# z5#l81vp8!CD+8mN<~w;UMNU>zoOl18v57B6#v|vo?tCLW8zauF{AbmmF!lF|Uz^&$ zv@Lz0eb_Zl7W@12TW&hj*mzSQ&@{lj%Y(MIA9pVh=M&J!Z;08eeVyZt?&u+wxJ>7O z8NNN_%Ebra1=X-sO^l6PH}IDt7sEG1wvRnOei?HPe)$_8zZ_wHpBbw3HV0& zC?WV}yT>=H80!U$^#aCv0b{-Jz6Fny-=i}jAKeqmZqi!Q%fwg3D-HK8e!O9HPE&)f z;hTmtn_3$3vJKxXgm2c+)*{+kL|cn!YtMa)9_Rfgt(PCBJ#vLwb`yt|taj-zmfB&m zMabh}oMZ4z9KER8@fv64b?CgejtXMHvx#9ta}y^c&qL2_nTXE(L+!o+Tcb9Y_Y1&r zEVz#64;^wqd$n^JCtrL${ruZ}v%Bs-yLEmjb-#JB>R|n7MuhBRw_mS* ztm5?QYq!_eNl#~4`?$1N<1yI2YG}31c61)}3({9QmqfOR&L!z&k5TP7=kzG*<7jW~ za%A#8a?Kv7UOOibo30xtm>h5@oZtK zbJucyFTB>dYXzS=qgV9^PogvP;DZxR-nszzOXhD@JIL?l=vUcqS}SepV{bk1wO*oi zhmUiH3hPVQnuhKcf1cZL9?#X2&#!*!=*RM49kRa@SYl4F<%{RhhW5A0E-moj8;rHu zv!va*mmqd-pH=%EcZbUkU;KsRU0(^83S)JWs{tH*N!Inl1#aG5?k?sdvu zIddb=>GPAvyY6<%M3Xx7TrGY~Of-Vl8<2CA-0x<5rsg?i1H4xWZuxxgppU5`rz~gO z!m>TA_jSnE@ARr>1M^t&mo=}G*z|4iSOYw! zT)i0cTXVv;rFr4zbg9O4cC^?B6X)zu3w(H(#Op=yxaeu%hUYaGgi{N1Axxe4V}j?L ze4ZVB`MjQUVeGw9^mMP^G1v0FzW(f6=Gr}*;dfl0%U)1D9Lbl5rVW*4ew(2aeMHTs zA@QLjlT!78bV1u<&Zog%Cij9`OX%mN^x^3T`@3Y5>}1tC?B?$zf7&xOxK`oKIZys} z21iG~<>a>1at6ve){~Z^lXYFd^(k@@PB^1`63D0lK5yjnCp`N`a7@b^XC7|+TW3tu zSmfKo)pyK!qvnn|N3+9aZ`OQq&awP(+3A|Q<{TdrF8i;VyXXAJ1>v%{YrZ_^=N}B0 zy;JiybAIuWaM|x`{?DABUJ@?*ZOs?vjLjMo{axUK=$%<(qmS_S9sYi%zrfh&?=A@+ zA3$De?B4(v*&k1TaMAIxm)?B*jlh`b6_eBOEKUzpEFF8!SO{LZDT%;(Q8z1@8N z6npz8JTG6f5+9(Rb;xz#+7m2jDPZ66(_@-{eHrH)<$c77d>{VOGeKl(7yMttbFwi; zQ8#ObGm88&)tuMf69F)zA}{S%BzADY}v zbR*|YU!>d_Hy#jl=XUy-T)>#%TbME7x`69b#?Kkua|ruVW5PM0?`cea%9!|Ro{7fd zm!~gT1C2j#Xm`b>U-D?UK81z}^j!)K^P4{l4ZoK+#)+^;$o$vaTxt81+9qr~? zpQ^d`e|^s+eAhAG^S|*u{~Fill39{h%cqVkul~~~s~r9%?Iq^b*|CH5*`JtR_u9tW z&$u?1-5Z6?C0kGZEb{g9JH}CM>7Q-y2;<6>h<47-zHvK5-@9(0pHrH>gOimG4}bOJxE;WnUyCN<3~_?0sBGU zSG>NsPdN~+=uX8Y72{~WSaFssB9peTcM%){c~0NGoN;Sw8^y89Ld>@($SKivaS&aL z-VIQjHI7~nOy;|(k2EWC0c`{v#cO6o_)KjFU99st{z>g{t#*o__axw$1kDY+J;a`{ zv(AYF z`wkIjs)}6|85qdkr+cfQ-F9fVnR%8#KC~id&9l%jtnr18eZTMD>ellZ6EQXjexqy* z*&r`c*LZ$tLSz?w&{h?|{s=$YfsOH_M+OwLduBPfYP@H07PsHOvwPRiLMQz${C0ug zt3LcrS9tYXkzHrUj!)JPi{0t%X$HP5aFY+9y^uxZ95_x1eo@f)MJGPU90Jz2cLh@N z{%?V%CSG_aJi>2b)#G)hL=N@$Z#8wpz)SFH9F-TgVtr9>jOT7Si=BhbRfO+gYLD?; z0{=^AVn4-vP;B`{=qNcSz7v0~BF@>y*_q?OQ@pTh{qo+)@PqMlRLj?y8M%>jkGhG^ zP7UO>h!%q1_;A3W+F&nZ+jTC#B(j*gSMrmM?MJ_co)vEWGU=~xd9<`X)h*Cd{@c^g zG>dUm{-_Q}UgGpQ5KIsB)7b9U>FY-fMg$Cy9iagmBMCtgvW z+G_ab0Vlgr=an4B?qgk`cMWlXLj2hxWV`B)HV}3F0=lK|5@>2GN!=%{?_DFomTISeRBLO-0?5Po=G`Bup%o` z1TE&lFN)vIhu>NmzY2Ie0lj}Xqkn5rp0huOoEQJ99<}7Ha-8NfzM_N1Ry2^^H%>J0 zKf^d1T5&Jz$@41a?Jm|QCXuV6d0RnS#Ey}N@Zms+TH4wCe)5c6DzA23fCFdzXeyA zKBZp-mn#q4agsc}0(wV%^GoMT)tL3N!FZ_lC?fMv1w{mEn8f@V$MKa z;I0+;r_;Evy%@wfCWM%K%4H{RwV#^pFT8x^lH;Z>xidF1as67eho$op=V)j1hwyue z!{F~<&U@ybo1DTu)o*2HJX}% zPiG68He>EPJF!)iAI3XdiqUbZ1z>*P;r6+c`Ln~Rd(E`@@$AS4?e9e{oI5o~pu2hh z<|&ae{4TxHiagOi`<>9*VZJ)e<084t*Dl6hIwINT4@N^H%}LeN@Xi2c?l%W3e{sag zYb?#qZ#oGdFTJOxcgYyyxq(1W7?`x~P{5p44fo$OuUe5?3FcoLb5Hf`H7-Tjj5B@> zYl-`laD*?2N9Qx6IA>~0AY2G-_mv%z4B4_(HLpN|N=GwyeBl@6jxA;^)joE@{RrRp+WltT{FN~Ne@9YYJkm-xN|uW(OgyxKfWsvnWi{5H@tU5?;%5;40HA|@}^n)(Xjc(priM|)1AQ81zgp@)$N0; z2Dn}UuDtkFkr;ASXL?5Avw?xUeU127H^D2)-?DVP+N0yYa!>a9=?b^L$C8f^t?!}Q z9!8$uhCD}(x7Ip+MH8`y>artc52KgroxVcJ+S(87i$CJZbJbgM^O=LuWpDRy-9X-R zF>9ysyTSV_*!aNeEWbAL1Ttg((b17z@NFBlNUcp8uMhWK`Y?74?fpPwb1UPI3|{d8 zY&ZBpf9*V@eJ~F|3#}7setw%hTe9VJ4*DK+g7Q(OAba)PRCwq~bVgj`4qxnH?(9XT z>fF73z)Os{XFhVNlksuSfwQ%`!_Tr#L+Y+c8&V(T+Dh6{M>&O|@1-(g`|4@{+ki9Q7rYmLV47EbB-+?|F`O$K}{9@Ck77LQhF zVexS5jR&;WWN=Wuui4-+9Q-;DL1%Y#-^z*Y1~%!Yon(FOeriPLZ{=rZ9iIsG8x zIlx$GJXK$T@igalKE-&J(x%$eb84@X@$6z8yJ@GGIA@H03Xz$_m6mmbM=Q8$ZmpuO zpvJH7LU;VscQ>$iF?NDy20qa!)~U(erad!W$v#KZXOa5!aEO7!$G}hUW`g+)zxiQ4 z!}|UZn1Pr2nvrf`7tE6Lg1O7UObs{msfGE+KA5`<&$%#?YB%lKCngZ3kbSi4ybVp>%`ATl<$E z26vqo+-2q&b8IPd4E@*2dtLBn2Yec2&DPcBIw!}~=i0aOJi6mtyqfTM^-*BfbqV9F zvnB<1J>x9-6ZkOtmO30SvM+oEen5L|n3^5#{yXWt9pHHa+X>yVOg@eF1-be_^%UVf z?C=IBEAm<4!n;o}KH?8655DY;%@eeve4!oibZaH^L%5WidTMIt$q00`qlesYyZ^9F4}6n4OpiS ziG^%g>Bd5iDi$KSQwN?}J82JQw`^b>%Bcg>CEDMDJi;zfo$7(wG5enP!&1dqu7$4a zoW2(?!47D?CenH*_t4R1&ss1D@7Ed~9DZoPjlp@fpYSvGU(wOO^#=ZyLnki>Xp3r& zb?36bEbU%fhI=P6-1~Kgdq3x%nU{>C?48nL*WS6v7elo1HRZSX<4Lk*REKFTF~3~s zxE8qcW+iQxE!EKRW!d`B(Y3GgqKxI1`Cq&tlHhDEy9TA0P&wlvn>>qlR?<$;*G?7f zK*OW+X~)*Kl8+T)T->-tDEb*c?KQs{m)JCDjg4jaCqo=+5`8Lv;UVI~DR!YpiyV&@ z&DboC@1Lbd4LZb65BZ-7$rb35TDL)GBWFh!(Vy1ct)2IT4@dDFcHU9hdGb?ZGm$lg z@Xs{(3tS5`;a3QL;MiJ)Pw3fmpN5xW;2bYW&6$uL7B8T^vA{SUpXDNKwu$bT|F|gC z_tv_hUH^K?v)AMw=3}$_^C{!dI3e2xdb1w0H4eP81+_nN8a3mH2Vk>ZANg_PnXMhb znuDCMatJ&3+E!px%;9EoFmx@Mg3XL9W1kMRNY;$6aQ&o_aCm$K9F7h%e*4e|{(SV0 zA`iF0d*PrP=aA2XZ{qTXm&<1D*;=nZc>O#o8RimB#*~mZn zXXUJK&t#oQwimux*}#71uARg+UJkKtUW5(J_Z9d;dTu$sm}(__7+8Y%KH8gn_)P7i zhn@ROEv(SR=%XS>^%YWN^dHEXkZuXlr(`typ5aNYN4quaTz(H3|Fad|iEZbsQSx-U zgSjnB@VRDiuJT&WS!f~OuJ$?SE(dsO-yt6rxhMau2j6U6f9<2|0)uem0mp8qz`$X3 z^RIwoGH?iYqnqL9Zsvz!VBms%%Jo`(+NT>H0p>^f+s;02`TC>(B(jn- z9TQa{eChDB$|wCx#%Iu8wCD7=cnyc|aQDgKh{&g}MYlG>8w+Zx=4^l4G5+ZSC)hOE z3AL#H82z?X^K5qi#>R!%0^(s)%NE)yhvFnMpuK`QR^rYN)!fipRFT#Qh$U|!R!n}s z@!wU$>md0DL3kl?E3qD)jorez_vlb;_5BCom(DAxYu$W7qziwZ{r4~A2e3V{Q{!{t zC2}UXHnA(&#;dAVelPp!hhEz_=3m~T?R7=`76d-CrpfQ+UJl|)@^LG75WnGf(RVI% z{KJ*bmK6ny`}DbT>|(<&em*f{ggtcT&CFvIxR7;^n`cJmE5FA#MsLcWO4{_PV}u-d zPCTg?az~ZZcM!Wxu>}(|M7AkjoWNf0s6wX6C%A>Wh@+hAqR8Gu&?sI3ZIK^WoKLC2TA2g4DXw_gKV21BsdENPfC;%Fn6``nQ`_F{+oH&rc5pfg zjk=+g_Gs$+9^_UB@rm8c-Mz>qY|mp|$cH@UeIE0k*wnGj@NFYJx(7M5m-*j-k6>l| z9&E*5O>^h}9@>!axtlq!xhtNu{e=pg>rOIPRGV@YG}0W5^<&rQ^ji*X{*eCUci3kobLz$s%jZ2i|61YU1Y`az^H8}M*0x=RP7<%F zoo~^Ou8j-@M-W@37Z~onv<1N?wfd_ve$ZhIjI=c6rA)cLO7|`>K=QcoXr%n}{D4)ZE@X zihNPUE$fgeHf|}q@5i;o5PkAabnWowvV;CyluZp`jn|fvALU;^R9vnT`I)G~Hb!?y7I(o@-TX->b>59!M8>vOLfa~Gr8O7Pqw)v4 z8K0P!XB5RYsQj37`V*WPvSz%q|Kx1s+1x-`S9zdJ>wWFzv>R|{D-NsrlO4Miq?j<9?yB=Rf z`Zvya38y^9Qtj_^9CGjTdL9Npow;S&Do$$)7{m`2j@8&vU037R5F6~8i$0wV-;UYb z(Qd`JPe;a}?M*G4K+xH^r2=T)-_{hw!dUuUa^G5f_ zWT)QuKeI>qHH^h>K4+|-+*`VSdau@yW#1PDLOq`VZ|zOV$M!F!E{bxlmT+&z`s!ZE z*>%K&mYyBBri(TE8OVy6JTntHTUwy&>fV`S-CTyJu$}V)P76BxSe$wFSHNxas5TlH z+^qKed-w zUW7HYW9>X6UN*kPc=;CDJ$GPl$p;ZHRH9F6s5{!qconU$>YYL#?=o)6#ZAr;Y_vG| z7{8pk(vF<(gtrt+ZN)||>d&36KGfd<+PmFrUu&3^^p{WF7s287u^RYnAHl&s#GkaQ zJ_>0={k5qt%`snJu`{`|TMSXsvO*M2|ZRj?A zeM#@s^;3F9m;XoHo4{9D-TD8|U9tfR7F(>?NkUkR=xFN#DQ&q)Km=^aw9kJ`DPw#P8O0AyY0qZ0@-@TA=WdN9txv(^eEQvoUZHj9Vo%;TAHMtNgC26#U!P_^ zl7n`Q{cB*?crSj!Kj#`NzU}>7V>iBb;PvPxeqeCxVfTBf>v1ozbk{4`w90%}40o_; zh41=Teb<-!t}pXl|3}~T+kDrTnD6qF2Agg%-(4QFnD2w-F_{;gna6bb^wUCe7}NDr z@s}=QmMniMqc-r9j}-5^?xdzo(`|`pg++KJkj9x zSa^ZUyTU1a<-PJQxBU#03u$p%e8KI*$GhNkqD^WEhg zzw%xGrTOmS)z8g$7q1TTeXw|SEBRGtl3mrF?DEU6Lga+s{;GH~*_osp$`-3Q1IZo9 z7RdvL@44qYM`tNsX0&7K6*}O;lTLVF@5|UAJ-$~+oc%(0@WqCglgCO-eIc z+&zG6&o%rKnJ#{L3o=VN5f}2DaB3#`@BT3@CRcd3_5qAby2Crz3Kg%>CnJ$x3F$`2 z{#ta-meJ@2=t&8Fs}`PO9E@%ynTbv|0Xg;qgA1u+YC%8ok8vKdWx=vB$DU*kwhg^+ z+NXcpzG9ia#<|pGd=_Gx!pDC=Ff=+7@b5tOccLG-b6CV2a#H4y7d-Y|*|8Fgc^+|; zZOGvTo(x=w41DQ$?^Rz1{<5VmE4=9gfe3FhU}zShL0{Zr;MDs?^!PxM~( zh11OEwKL3Tk(rM>hqn}4;?eC<^WD8Je6`oR`F~0)_Z+S4Kij}NLmzr~iFC^$O(ovGXu$WN zsWx=OcIeCW>AiOq@A=zr=Xx7Bd6+)B(I>Uf)xJeOF`fOE9PiMkal9+urT!IPT1o75 z*%jDf;14nEDTX$^J&yK=slPqi_3oc;AEC8A_Y7-&4{Pn`zxSK9PUaUV?@qQ8qyM5W z=0TT|_lxo6v;yxo*05dc!P=NO3-Chk1cAS+gNq(r9_9p~f8eQ@QSrr6*&2au47ka^ zpnI}M$GDaNF5+pm^wlW6k3HfO$l_Y^rT4;n#Oq`5n|IikYR|oKSq1zi$uC=+e)^(4 z<0nu*@E*lHXzvccpQCugdFJPP|xc%O*dDd8q!!7|nzC z%$kn!e3Bv0pU3)VK$l@dr?R7kngZs#WNN7C-7%tHSH2!M-(7ipjPGZnW$hD{)1-BN zR5{RR*efcxDSf>Qq0e-EZX9by$^}!*pTo=fG;4uB=214D{(83US$aR5?ePvEg_hQz=;rGSM7K49IxBQxyuwKaS z2JO-J!E1Z*WxIRy#Xi|xZe+LO>?I2}7#O>C8`cg2#)9o9&j4HH7ufxGmx9Wsso$USYhgc8c$VB#zS_|>nHrh$Hn``*zC)6(Z zA-jm|W&U>CZ=fyu5}(yM&a$~I3LbmT=>4oq4(oD>(UYl7!taT!k=ErF*5y*x<=*UhK)q`B8gBP5h21r`yvl-j< zk{!>lZ(3bb=fX__LIe^ybqUS^WdA(^VDZ6G-LH0 zjis|dwmj^J1Kl4*Y>$&k9cXH$z&AtqyvLfp+0#g8rr$&^d<1@~zQ>{WiXZvyGe*zJ z1;^;a=xy}r>1_?t+a~<6_o_VBcp$w^@vvr%y%-1ocdNU6pZ7(d-{Vtwrti;r*S7IF z7+xq^{oEOFKsw$EAHB{r^qRECw?dO`thvsUv-U3SH^kdRW_?55UxPO#z+H_!o!{9# zf_&v`S%2{{>HLaqD3i{QEKAY(SrhSC>6!!T{odX$Wsk{Pw1W>Fz)AM83CFXpQTz8p zfByExC#9o{9&cu?hM;3_Bd$YxoJ&~iOQ1*XaW3JROPG`5NZdH4VAD-zE!@509P{1P zIse9Y{WF7D8?DQcQKzTP|L3Dkzdo{<@%!Uflz({zzR^flr00=8q{gkNpDpwwf6IBn z2zhUA-B;?S=pH^=-II?u7d<1!{8r+dsNnBL zd_Lu>@y>IV_@&Krd`kC{Zny#;UpapVXwTIj)9g;HrF>_CLxT_ADe+APp1FOo{GSSV zbx=xOJAvL^!Mkq_upYuE|9ZT31^K3B${otU59^gRNC0)-j

dy_Xu#V48du5#Bq-?!dxq^-B;!$1C=ikYvQ68#mv714;T zU)GxI`q=Rw?yopL&D3Sn_wwUmFCQ#9x2qXP=K%293l917hwI2+34JkARK>YCwdK@_ zV?4dke{XNF(Ows?tDVL@)|@k0mj-}&3|J}`0$uY_>B{!^!~8b7EPP%$RR->!?s*)4 zZu#TaD%R!AinZ=%<;H7Mo=L_DdHIx9Zv~fx3-5l&rQ073G(WRnxS$W8GML*Y=C*@z zM;O0pU$XQD_$7OVj6CQ8-m07q;js1rwcvLXaxs&8wZt%Q;Cli-oC)qP%qA9$GsB4+ z>*=KJ?DHZI=T0X^3%bp%aF)iP$qCTe#oR}CiSFThA-Jg8L5g>;M7M8;pSv#EO;d$QrD}GJ3c<_-qAOq2_w9nHy?#fT-(q3;0Isk24 zOzdA4`qTKD3CEPjn>(Mi>*<}-%$Q1@5IH=`X9+bS57*dt{B8b#chaB5R`h6p&u-ya zcdfnig=tr@-G>>s@F!(o$T~jgt)ulNH4Lzx_p`@)clfF6sWx|jlm0bTyqoraS~tl{ zt+n#Oo&;tcPH^>8e-|lYudup9Ixewv##To=adN?OS?Ard39vTGseY2R?Er7oPp@zv zy6J^JD$>?hYpZn~!@Bmfro@C_5dB$Za!u#@@>YI}-#ibwm$If>Pu5Sev~N9GTmO2F zVLesrr5BveXFZK?S8M1!r#-xFV;9fq{xbvI-=4m19?v#0tE|(Qv~}V<+7x*;GmZbQ zBRAT~`|IeV)Rsx-xx;BIUEb}*hvnCI1#e)qzp}Zus07*L=37O!OapGKB158c?~FWB zf8zLkwV_~j+o-jVDPAD`na59*nfn#cd;N*g_dTv$KAz1W79c`94(*gvBO(1g+xL9> z=Gkke^X#T_x6h4UpY60G{oCGq!PnPDuP;4=|IF=+_ovgB9lw1~yu0%889n-}T06tU zS!mu1=$ja>Yck2nc+zQqz5~9Y*eLUxzV!P^`oX5YO?sO0*k)iSHuIt{XwgS;YfA8d?XRJnkneje7qbH88VaEKO89fQw>1&fc zLrR|b&MO@b$ZR}hO_(*OZ z#;30Diu(z`(__GD%-Beep7nCAu8Q%D;1GnLkAcUPpwsy8|I*$k=OiB)mG9jbJS&02 z0q&dj$rp-&6P!Ker^ z#U^(lGH(Vrbsc$)Ip~vaya9Fs^shL3RMlhHiGCsY$fh=hcP!lU(%>UGB=~G#?E0?x zYi}52j&b0nxLe7|81hbjY}x8G2E`aISG(l(#->Jke%?wxJoj8)tG2oQSHgc|1$5{eiRqm%Gztcqu9|hsRPLo~ACd>1FIoHp?gz+ZMr#eDpekA7@@ki}!f)06cBiN=Dgv2q$)mjHWYuHvLrL-|&&cTB)uFo`&3 z_AK!`l(R@1?Afc)p@YMTqtg2EUK@C%_hRT${|azU8)wJm=m1w@>$(X$zSr;T;QeciYuL#{FCV#) z_t}?xJrF7SisMYuxQ8>3b=1OokQ{)36M1zoZ63LiI#9H`E7O@I{M39U1IeSkCIh)K zA<%{#$}n=s{APaoJ%PDN4$b&|?^T+EWKZRi@pH!ZDCxXy#-@_p)CTV; zd8>D;V6A!0fTo@T*K@|c^q6e8h1hTl&$;VhHs{^tFz3eK^=`$VQgrxa)-@|>OFDcE zeiUa-;^2|dO`!>w*Sob?kk<``yFM1}n(OquUWQMmIT-B%C%bs33p~7@SX9mXe%i(U za!o284Qu)(Ixl>5QVcka0KT@*7T#~6PvP=ARgu1!ON}8uns~UhaTr-q%2>hCIDFH& zNO}5~MPqkSFNC%N)J7CvmyB4U9NXEzuGYoTdBjEN_XK!?t|>1z3trfSt9(;YPyejT*K>Fo3ABKu8|BC4D7Z0xYk13 znrjRF$!;t<9qe3F_)XoA=mqbXyt*V0+BqaTl56TSFp9o_ncyY3`PVLG-{A2l@ufS- zZI-M`=S#owa_Fr5nu%WS-(PD#KZ5fHBD^~qd=suqpFm%@CJ4TUocQxq@K*5!^BcWF zzeAp0QH4B}ef25m)#b0reYf(hm4ENI_3ZMUGoW~6$NOi;r#KG3zr)&d#M>oL#S=r~ zi3I_8qU*Pko+h7_>@hKTpnOQ;mkHxdu}=Ndz`-o&{Njf7a!XJJ#`?T zI*=cGoUGM*$Zfd?d{I7B*1K8P$Uf9Mfwm3*bk7yme$ULa*`24^Kf`CFJNvJH_WV=V z_i<`@YJF4IkhMD}ZS8&lTr529XMg2~hiqHQ4-!0N+msBR!klDxUIh=WV-E6_ImD1l z->L*I;Rv!Hc)bI>tdA_h{3N@|(TysAr}%|``~%G^W$d&s-1{{-zUjC(P`=w@GoNIA zckEI{A^woxuav-_CzxHgy?{UchMwmHhjE`jb6>w%p922) z-5o>5IIM3zf2DSWaemp!!xWs?it@4q+?k4%Lea{U*d%#`34%>lvTw*No*)zso(Fi+lpA4>d-(Y-|JJrmQcX*>1SfH_l)9 z=qI0b4)Qk@7_=Z;cZSM-ZfQ%O!cXZ8@`sj1oTG;sM~JwMvHWRV5qy4vkKPj>Pk;YR z?OS;LCD#|(?!_A?X>p+Sy~+nSt?yq79)C&vxnmG^=ii-|q}8**AG^L?Y4p${`-UU^ z)a8M)8~)1(=TXTKyr{kzlNU+jCo z;`TmUZ$tU*o~_s8#o|TZV}5@6?K1xJIPgT(id zW1MJ?^duH?Z3psmxzjVBb2&Dhn7(?$iQ-4%)!v@Z)DKXN_}r#%;72g9sOCL%tk#9p z?jpC$J`Ng#OWA69;*xO8xWR9cS)qrN1xq&ep2bzB2uN zH3y<^gz&W_LMinb+rdY{pp^P4iF)E4S?j9ukOwSDya689fx+-sCKt^7^XPD9m*bEAp1%4}7bl+O9<@rU%7;Z0 z-{Cqii!r7+^$S#oF(c~P7Mn9nF13Mw8Ep&xx1Sj%pY+4zcHSvVg~_fj`QaakHUg7Q z=Fq_$N(2Mx)U3~Z=D3MDwlimqafNb0fy?%^@mahxHr0`g6Fjzc0A3l98Q zo~Av^L&MB*)m7I-g&(cVu@xQ~34Cx z+8BQ*%=ZkwXEyfnUEuP{Ao~3#c)M!yRMYP&#{Pcv`^;(j6%I@kj&TOTV)kbox>00k zob?~Xx;2!vX1aLL51hY#ntsvQ$s^8any&aMVjcCp#C(^{C)9Kk-(9{NYMRFP-1NPR zk9Mtn?0<(3Ouw>^eZZq(OTROXK9MS)drO_|t}eitE+N(I{i>dhb}CBw5(#n}cGSr9Zp! z(5?5|_-XN+^ZIP!_6TC zU&!~7=uXJhK0HqZqa)0^yE<9F`bD#A3sPSimwW=2CyGBPualw@bF$d$^r8o899h%` z(f3{KaVBs!#bNUBXAxgKD^UCJ5bE9QopN}iWVzyL49wBj>>Annh~vN$nwll2;)dbn-^_7wBkQhHaO3_ZXV5*p^;nU4?79BhA483e zk~x=~_Q$9mY#Qz@9c25G)w276%MB%wsZqrs#D~{ziQh;JIx@Ti{Vx8{b@1_-@bOvj z^r3to#&_tz>eAr)=Lgwe+vC$3+aAwow0J2S;5yDBZM%}1IDCq~>CfWna`gQE@bo3l zGus6G6^DF1>-vNf+P4FI8w0)U#MaUd4!y*=Yq?z8$o@ffV8`*yChqCE>!2UK`xNiC zh3?$)1oYpIZZiJFJr8v7?oRZR^*q1go!+hgOT3(H^IfIXwFeK}eEf{2H;HKxzmD_% zug&*6w;WWw4cB5^+s}99(YAp@!tGCY_8NS@1zqJq&dOLj&RMz$I#_*P#%kGcZ@D|* zUjLx8^eO2#UkV(k=DBL_ixzLmNZxE6oF9(lTW}p3BHx9DzYWx|s#m>*%|Zk#W*Z!z+v8yp)O7>aLCH6s*nGX(#`SGP>W zM;jrw%gO|ccZ!dczalXeIe}f8^U;j`#OnQ)zZ+d8Z9NQ3{%yFs9`6Are?Lf=Sl+Mm zIi$O6WsG)RHb@u!M3x!DZs|zi#Ov^v!>8ddejNPdAje?)0|(zMDG!_e#$+V>I~_ms z_m_W`{lPysm*fpI{l%%lYUelD{xSyH-(m0klP~#T%lbByWK&B>yj!y1Ea|QN%Y&qE z@GpjL@R;InOg=_d(|62w#Z?V$dd7D>%6H-RlYIUwf8yy@HH{Z}`km^_ zH9}MVctFKIC9ZUOj(^m7bAI(S6YIGS{%C%qPb&5k-_#sePj~fCY+l=RzY^WYe?7+j zMZSJ)UhK(aGn36rXDNi6ULH!m5_{Y@bJQ8Q{`c(I{rhFjqjy+x9{#=ZkC798o3(re z8c&rOKQ?IOj(*D)ryPM6#=ny>k2_I*upJ(*y29Gy2I2dyz|qWwXVg=?XPoriYe8?0 z4QHP>l22?;`6q5Ym_PQP9}ezc`zkiNYT2~?&kGi6@BNyW?0$B94&Up52YUO_^!d2< zao0|s4;;+APXv~x+uYyp@xhn-##iCNPh$z3SaxvgiO^BozZui8J0G4}7fKnE*}v4g z=NBla!C!wS&YnVWTww4cv%3Yo+59&6k=d=iOC9w!$Acdo;D_qIViTQn{MmqsRXX0` zekS-WeR~sf9^`qn&t}K9i+XMRn`?tOejFJ_oYV0sUK_W2ZE#&}ya?aik=Dl0v^IJl z$v&oYHxd(q=AE|TkuCDi`TKpB`dWsT>fL_p;FZpOBcsLGt^C(hXbjrAIE}V8LsO3L zU*G<TCUJnADWe+C zbtg`)X-A(WH)y-sJ$yrPk!k};M(d0g<)2JMPq=x}#L4oH>X|P1PA}*DHA|1UvhLN{ zjHUXn>kr<-SRTA<$mj?8{$S3q)zulp_LY0%8&l-kxK=a1YQ|UXjjx39b)RN@f0s5s z_1E3c7%ydv)r&5jEFPj~W-z9XJFh?3k&S;goV9N!uoRp&Ttz(r_Ez^Yj*gvw742Fi zIAxkz=3RZ`kk2+1PS-FF`;LJDV^BYWkzmyh%mk}_tic|1{KcG)z5|^q$oyQ`>rAiI zHuKZkRC{Wxo37yuQO+j&5s*jVSHa+^w*Qua;E4;@Zr;D z4A&q0He>h+xbPEj;U_uguKrfWx%>LYb@ADa>lc5*xUOeB79aP7hb8f#0NXCG>GsyY zG6fG$UH|VghW_9pTujG-A9*-XZE#?ip+Of1bhcV54y+rXUBUQ>4-f7E&MppIXK-L2 zIMD6Gf!aPC7@C3uV=i*$JlKZ=!_siz)bZST8d!IGIG}O)ap3D74%GJHfW~lo92mo1 z<7~$Dw|~O8X5Tf`@F&^b_k@S`;lOVEQ^0l5IB@jRBWEn_Ycf_L5b^;OKLu_gUwCe%1R_e3kD1v-i2o`}`;G^B=s=+q}0ggGF{Qr!iLLiA)8xb^&wGiZzsUzGTiQJrDX-O)gE4FXidSo0 z$fwa8JbsAZ5WT_R%Wc3({#L#4&8glEI4oQ=FKE$6wP2{sZozO92nnKG43t zgXiVL3OPF0GlRX2@F=tC3&aD*(HGq3Y>ct1Yo2b+8*&C-^SjYCjlLdo>v=Cm{=XGU zt>+zoh&6wNIWX5OV=u3JSaxvi&(RKIN!{8TLz?!&W2p17G!E_PeDNY`Hd8Zo-z;dE zIyp=0fyYp6M6&gj1%_5HHfxmABp+rw@x|Eqv8(5hM>V9WtDkE+7c;&b`~pTX+2pGN zMIB{2 zzMxs+KziiA$@xgh!NR~@2Zv@v9zKFkZgpVjzAvA1=fP^~+P;Ae^o<*wo;O0F=o>fk zSrv@#UA*{MVSqfkar++I5pZLIRnL6lC($L!ob9z45wpKQe~n)D$?Fe(9a-=bboC!| z_Of_`aN+f8J6{XmBv1G<^KAvTX1+_{K&L}Ujq)`0uE0vt~PMk4IH{p1BZzNje+?K4g=xdkAXq; zqRS=={)Oj69%iq!Uwfs+ix-=ID?57Ube*Q(bJF{zKf(WWeU3M@8J4YP|3dhwc%Am~ zy9|y8x=WyQEBpLB^>^f@Ss5w18PC|Cgtsn4=QX_9vkAz?B|EU_+Va+G;jJ^^tvZ8A zbrr?{&klH`>dVUZ?8+Rgqh$5**q_m7JAAwYzG?fGej?kl@)eC=?+&M@-0)iAXI7Jg z9Bt#i@&FTez>|IQ%(az;P3((c{)+gC=$*A!z4F)+=X(ERW7+5qm!i8pFT0^f2})(YV$`w((ii@@kS@G>iU*(%*3S z^T<>=KQen@p1+EBeddL}dZC4;{y{R|NV!H<=E?TxV9SY5q|XV!yTH9yWn^%u+aVr> z{Gx3IC&~}D$~S|pub4H8Ap0HkRoUn^V5|A0&b^-i-<;^Khqd9f6mSh0o#F$lcXcLz z8@t(CUfNF^vf-$WPZL{zrZ%u&ZXpWblyS(Wqc*;Iy#F@x$PaMprh4&*k_9@8&c^w= zV@+8TY&-u+PO(2;c@wl_?KxfOz<%3l44Cf5Cz5-o$;oR_4%td#8WnRql~^TktS6Ve z1J?)Q_3PO?TXNm&UqYw&)!UrAl8e8QoVNAktq~vDU~`#2>b3I(Z7P>pxy~+r+cO#+ zgWD6fY(Fubt0glmC4x{>(FU9qv{PlIAF!vi9Iz@QO-&Oo}f|u5+;I z**~&A*ruoA@0&?1Q!DGTiueln!S*T8g62DoImm`v<%Cx&AF=|UXN-1o(Z%#P9iGt! zuG)5GtNRA+Dz~gG&pBEO&r<$bMILrQ;I#_BEbaG9y~sIAY!&i5ux}M-kF0X;dbo}L zH*r6M^P$SH2{l9SoG0krzw_ZRV`u{&JBS6_xVio@;rLX~-rWMt$d4fVdzWG#!F`QE zegpYC6Q#*9%Acfh-mdwV@*Lk?+o6YF>+Vda~`a#?leT42v`#zcLW59PTv6o2MNs0S6ML(~nj8eE0^Rk%QO~d$6?{db9m~ zp8iw|$MzQScI6RjHQH0FcPB@yQU?QgE4eVskj+FW`}c-lINIL6Xx z$Apt@S0-^@yy1(;^f>ZM@=mdmEt9}CeE>xkZ3&NwR==M?yvJ>zVm2k&{nWh`*1 z9AKQ~=6utSM;{^PXFdMS0PU^oiW6@N^sGhP(Fe@a96(0tydBt_9 zK7oCwjAxSfmYcjD_qm!a@_|Sn5v`g&O&?j^?)BwcWIyf*)og)RZ(Ycr`cePJ?{vJj zkr*?>Q}wRm!Vclva=x*QBS;aBpVj8~?i3ylpQdrol6OSCC( zx5;t+A^Ag9&e#XouO8jN_hKjTK!p=%n(8>lCu8`8*O%H<`vvG%iebzjyZbSoGkzNX zbLnIJWL7_UL-kIPwISHpyW<(Dw4SJs@QfQftJpi`8am!TD<2A31HZr1#+O>Zr(~&M zsaTS=(BCD%XfF9i$~l@|PTlNbVPd-vy`0h8yH(?%c0^E ztta1R1GzO%kOQl{C++d;$h%%go$^!q^Yctku0E9xOX%R)H27J2Od+vbet%laP4HlJ zNacdZ6Tu?cW@Lj&$zMwZ(OKO5HRU7-#x1}F+g%U&XFZ*Bffc!I*KxfIS*4nss_`DU z8u%qjXcPD?B*x#)$W{6&gaj|kZtslhkl^-knKZf!%JR1 zON=NqHmL;}x$_*(;R6?lYn-I#G#=G**aIG9LQgt}wUc@U+0;ABVjO+f7>BNPdijNm zs9k1wC41(C9ZbsE#$ObO77d!v>_O$!&AA%<8!bVodeylNBID7T@iM!!6&?}g}F*+ z&iEO;oOhLH*9t8Dmho$j;xyrMbqOb#0zE z=T+#J?wrF-pJUD~tevZGxN_FQ^G|JiifP;G%I|O6WBX~lkM8O{`xvnF&#TSC6nles z$KBxeCV2Ps$-;5>j2h~-ov-gsj&n^dJhvQqq~~4$2cGcoejzZ=0`DasI)UAB@cw0k z_gU3l;I#1G-h0j9eU`!dmp#1KGp*2?&P&+~J}cjH9c_;S_wAY+{g~^V>ty0MjuEF9 zXWXUWUn_L1dZ_o1W2$otI(fGfI#Rx=>LKhQ-*hK-RpHWY;L3Z(lRxxcC7mKd`{J`N zF+Sncx54d|T(dl2Bls8M`gAAp{3iO%Wd7zibJy?b9^Tyz-qo45GMcv1Ryy9HvlF*+ zP86DZGoO6rj>9L{2=4ck<0~EJtX6#!<yPeef&SXeY2HkfA0Dmd8V$(N28O8nF79V+WIB& z8{GOF-y?27-=!zF6iCNJ1|a7|=Yy%w@y0=Nzu})QU3l^kJX1S!fprP6*8V8HK1U1h z*?uHr-_QCScFxC%)k>K&{ir_2U79oBHD~4Cjb@xd#yL=Zj%|!p`=}{ACt3cVnsY(w zoKx_G`W)A%<4Kx*#p*!cBR8oJSB3+3AFd2kpJVSB$?yK_bF?ALO>K^ip`yfc$JFcS zg*Wt$O4jHw`RE%J&*jN;)=RW4nI6M#-oC_>>9>oo{qvUFxZX7ZnT|{ie2{A!OKF=m zt4+%D{~`7`;MMBT`$k^!ehhwgcoOlzz)f_l-?GOYW>3+@9#sAAqE^RoVA~BXiwE2S zKO6=>Ji@)#dH!)~b$r>>>KIo2hQ|->z2&A>$1uYWzwFiO&@>3U+91LRf@rp-5IM|#xm3a?g&<}3dHBs@=kk;Q?I=L-W_hUb~z%ul};d$l@p zOs$ULCZ^^Na{p|fdbSgIYYuk&Ujw(}p5CE#?SQANR)=7%dCeR^|CmLrt@MwlsnsF< z;|R4n>S#;8Ijvs|T$0bt-2=FJ8PxIGT)iR??Vby~%c#ZP9E^5X@yYYu)YtfoSEFMe z?LAG6j{foJ+@@>6qYA+nIGro_(x>=(3w@^7u855)K4lzQ7x@u|qpBy807nz(tF6LU z*05!?YIa-^ed`v*ak@1-V$`e%M4Y17?%>+LbFGE;HFweNVCJ2|f2h}SY1hd$Dc6vH z6SyYX^}$T9UI*~=ui@!rT0_vsr_yBFFOg|hp3P*xb-H>Tz;^R{sn_v+Xx5c6?mk$y z#MzALZ0mL0Z|Zd<>(Te^AMpbw;1{xqr0jdDe04kEVWsSKRF5TDw?pU0Q?rdaoa3RV zCwz4~79vx!$L@LT5PDQLx_vgfeFtZKcA#^-1g>(B%1 z`|eGOBU9%}#&RzR&kpfd0<1VfTbO~;HA8w z7VxeGSZwgtNHBQEix1Em2^M-Mf*m4#es)hYm^li^>Q6Jbf$G1`#D?j|H|nbN)lX)> zno^sjg5L#d!G>_8HQ1{%tyS{bXAJE)~$1^vyaxS7LXGa!9&(_W_`KQbY@ z^^5REo{0cI>DOW8s(zQ|QB!%W{0f}OiY?8^81P5uuk`k2le3w_-w^(WHfF#EHr0J3 zN^WXT8+0oBP+Kl>hgHEM)fsBNi8+)qjvJW|a=*PQ5N${H$C3Nejig`g0*>Y^Jk}!4 zyLw*lwn2w;@sUZ7Fmtijc_x!*i+NAyZ)jf~mAsVhh75hDAQ*MP(-`lK;kg8T==|e0 z0}Jwlcwc)<+t0^T#}Qt&j(S*i*xY2pmVRJx7$54+km|>Tnl=!ZTvF#me^;KY2^}kS zimYE$>-JO&*gkD8G$-)#0W`|bWMaign~e1^E3yb#axTed{m z-OI7fw*ueCq5rnEk)k$ugZ6T5;FWw(Iw#_8@IvdlO0+OIL))wU0*s9_8xcou%qS zIos|t4bpK~2d#(pfmfkhDPJprKdg=4@_}6^e+Dqn+~m6>Kbkhh6X_d#iSe9l7^(|X z$+%lD=a~XxJ;3+r)MA^)9#s0Z^-qL=)p%evjkya>*W!0D_6T@D1@DhU*6Mk$?&j68 z8(bK_jUQYv)^FjQd_H-=SbjB~8+_i2uB;V~j0Z>V;+o~xU1|D|X+IbIf!_patAsz% zdgbGpW~}OaH+GHxq0fB!H20{rtv(G;Sew}s1Fq=E+q7odONl@HPnXDq%0e=&R@gLRT@%0QRSWKA^B`S3p3mYbpNKHf+F zZq1pDra9fcYbrToHy1f?b;=T8>gL)-mraUpnAiybBkBp&3?r2SK2H2 z0=Qu2O#PI_C)oGFZ+Bj4{8n09Tl>$%elUK`f4=5F#hX9ZH2)0dnaRAF>*mUhGtB4w zwKL>vkLucdY766|>E11wRw~+Y<7UIyv{pI!QJs(OzMEz6WMV?9pHFzUISaeHJsX{P zhir6x*F9U^-JY#ZW3w<+JmSm1QR~|R&BjFce6OPBVJ>vP-uS(&&)VfflHry|-(TkA z(L>>V;P)bOZLA(O(?@@9eg0&49XgdZ@X$-CKV)182jBIoAyW4un{`+6E_n{y1*-X7;-S_zRRd;jWw10+r z$*+-XC7k(z4_|W3`X%wDx7jIDoh#v>uOnu9Qd$vXK$>dok9o|^{<0*vy`1NsfUJB#MV?3dh@r0Uc?fEId zNP1O$+8AoRF?6MkVZCn*>G2+C)Bo>}dbH~GUzOH>*?Z|fjh@Z?sXv-Wy-LoLXv`j4 z+&JV?)$j>5c0L(yJp7%EMzc3WU(q=_#{UBCO1}N#h#jAc3scg@H_01ctPehc=-S|U z-RpfdNYnA9F>QU=_oUQ&ERdc7zSw$`;;jxil+WLdC1>8-e87$gT<)*_>0+}V{mazH zoNa9(^`3qM{tu+@w4O}L1Al$J#p(M?4_?H7y;6k@mpxTVeas5hKNN`+jpffi)2y1G z=q1G2m>QnNzI~^yooVCY-YGsIo_aT0gTZE#6Cde;nDgnRo>4qpPr+#LV6-)buRZ%zD}R!VASK#h;e><|qDO z_2)kYzaIzoXWF}e!PoEqHGXHI)286_Y4H0}-?;xT@w?=G!tZ0`q+0!LF!-H{A4&e> z+Cj&HbGc2IUuSd>?9J|;svi8)KJGPg$1A3mm@}C4y?kmgW#1%x{BOqNmxt?!PjkLM zJep7Zv1>C(tvM@wOxGnl^-r{H_qvkP{(JVm|C)W?UQ7R7r~Zds7%e7VPS4o+cNu-59b-KG1sAs9BdsKDyJCMeIo3g^EwUCi)D| zp`Wq08DsZ0o2~6ZI-7L4iNI6ejjpA=G;ORi^;JLR#qGIrjy2gYKYWF3SkB~V2DTWD z&%Zxi=3D>0KKjow@+~>P2>RONSD@=v%`l%;3upAifW6|rlt)EAkz4CD@LQY)KkM(fwjVeO z2inkQ-E(gvTh^q((!X9u$Q`xxO1xZ>Uz_;<6Zy^r=lrvCg6bm`hqV+ecJ82msb z>w-~Z+q}TpobPHhc8^hW8^*ERVL>lTM0h z?^WRRT>rP&_K?k@3uHz^NgegVL_6%)TF~8Fw1)%Fs3TjHmj}*|jmVdX?G|01Yww`n zMMBgucR0@%nvlGAWu1$M+T%+8x0Di#W}b21^*?iYuW0kscl~hxwh!(beK>9Lc@X}$ zhWFxs`xWr<%O=rPHDftj{~KqOvY$xOv&Bd0Q^JJ^u(A9(7ad7Bu+y`32^Y*5JlYog z6RcMi_#{90E)S0^Zk5xPAD^(T7(D8&4K|J`cYRCPjJ6gCr?yTdhcjgIKnv=KoyK1h zXTO(VZz~-_@5nDwfS--{S@UcKW0UPt_l@0&wW~!RW4v=L|4tb%^AoR1y>_ZU&%fRu z^R4%H`dM!`-{w?!+IZLv_ybGo0??CNYyRWx1uUNW$MJ8(yjEm6*NleFLLQyX!`_46 z;2M{=5{E%t+I$n27OvJASvkzx-dk?s(!wSVW4;%cre~B>5vILX;Mfkm$wr{P>#d)M z-hiiKgIa-M0NRLYKW$>RCPd>^f#{Xki0ysxJJG%$cjptExQRGK+1M0EHs9Esf~(cP z&Nabqca`h^$!NON;;)B0{<&Lt`)w!xO%9CZZ`O9wFTEN4H>rQP`b0@jC%T8}!`rKf zUUtytDd(s4vf-SEg>a6$N`dYvKYZyq!@4f@Lhnab!~^jztQxec-~C#Svi3n(BW&~^SuV2Gpjp2 ze75&on{cMV=X*VT)-x?PxcGb>@J?U@m)~13{{9^B`3CTL68Ox1-;NjDY}gYS5^bNt zv)Gbbo2fYjJX)o*NFHKa60Zp{pIYWG-VtX0tGK2*!Lmmh{=;(#)>eMYv9iAyoyyg7 z|53h8}E>H9sF-?`A}S5LY!%nyIjm+-%roD$KLKR@G4@=ELGr}@F2?{WqF9K{4-u~&C)x$q6Yxe;cc1mTSoj2<$H8UUZNtd8fb8SI zSTOOQ?{uxx_WT|vdA`%N@In2)*5iZV{8g>kBV+Jj*DjIS)JglY!?q50d4z$Lm8;%* zJ>sp`4?O*@kG?0Q(s%4e#(fjxp9{X0xprOgYT0u)!h^>VYa)BD&K;3ILNui3^`30J zvZDx3C9j{$%n<~B{8%{j-zfX$82^-aXh;mchiSn(S^u~oLvm7GOevh#|lV){9s zWcz&h9<+46+PD?Iq4mo2*6aOzL|GJ-;xakJFhmzhRx%C@j2aNw#JdJ0K|CV?%t&?QpP7~LIJZug|r~dTh8qG&J zM)a|@LN7C;kSvQ21Y^r4F331+0j&w^Y zevbp24etmN5j^1st{MCr2Iym-hy|2q3uzkglvAkyO^ zL!lvfNXc+;0KQT>GGcs%W1*Qk(ba6`3|}CBw5R1tm)3fFGaGw*vluM!LnlVkj%Cm-Zb%rW|Ga{ph<+_Xn7Vb1b@Mwnv@{g*QL1alt?A2D-f z{)UI3-$;);LTr%ugBcU!=;I-bw{J|0xo=F+%+65R&o!nO8Pl&AljHkm_s4q&i2sy4 z39|0>$djtbM~!Zpfjqefd2*4#ZE{lK=g{F+#Z(2kCcKgFQ#z+)=?d;)|Jv{5eKZ;} z_uai+@KWaN?QIQRd2%+Wb?xW+lTPLX9pG#SID6lsg~#r7vR3B?f~F2Cb-bh5;H