diff --git a/Changelog.md b/Changelog.md index 80f4c1a..3e85f77 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,20 @@ +# 2.0.0.0 + +- Added + - **Instagram** + - Filter by site + - Group for regular channels in the main window + - Ability to change user/collection path + - Imgur albums downloading + - NSFW Imgur content bypass (requires 'CilentID') + - Special user folder + - Remove user while keeping data + - Disabled overriding user preferences when creating a new user if it already exists in the destination (in case of deleting a user with saving data). + - **Saved Reddit posts downloading** +- Fixed + - Suspended profiles do not change status if the profile is no longer suspended + - Limited download for Twitter not implemented + # 1.0.1.0 - Added diff --git a/README.md b/README.md index 37373a9..a60a1f7 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Social networks crawler -Program for downloading photo and video from Reddit and Twitter +Program for downloading photo and video from Reddit, Twitter and Instagram -Enjoying the tool? Considering adding to my coffee fund :) +Do you like this program? Consider adding to my coffee fund by making a donation to show your support. :) [![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/andyprogram) @@ -12,9 +12,10 @@ Enjoying the tool? Considering adding to my coffee fund :) - Reddit galleries of images; - Redgifs hosted videos (https://www.redgifs.com/); - Reddit hosted videos (downloading Reddit hosted video is going through ffmpeg); - - Twitter images; - - Twitter videos. -- Parse channel and view data. + - Twitter images and videos; + - Instagram images and videos. +- Parse [channel and view data](https://github.com/AAndyProgram/SCrawler/wiki/Channels). +- Download [saved Reddit posts](https://github.com/AAndyProgram/SCrawler/wiki/Home#saved-posts). - Add users from parsed channel. - Labeling users. - Filter exists users by label or group. @@ -24,41 +25,49 @@ Enjoying the tool? Considering adding to my coffee fund :) ## Reddit -The program parsing all user's posts, gathering pictures' MD5 hash and compare with existing for remove duplicates. Then media will be downloaded. +The program parses all user posts, obtain MD5 images hash and compares them with existing ones to remove duplicates. Then the media will be downloaded. -## Twitter +## Twitter and Instagram -The program parsing all user's posts and compare file names with existing for remove duplicates. Then media will be downloaded. +The program parses all user posts and compares file names with existing ones to remove duplicates. Then the media will be downloaded. + +You can read about Instagram restrictions [here](https://github.com/AAndyProgram/SCrawler/wiki/Settings#instagram-limits) # Requirements: - Windows 7, 8, 9, 10, 11 with NET Framework 4.6.1 or higher - Authorization cookies and tokens for Twitter (if you want to download data from Twitter) -- ffmpeg library for download Reddit hosted videos (you can download it from the [official repo](https://github.com/GyanD/codexffmpeg/releases/tag/2021-01-12-git-ca21cb1e36) or [from my first release](https://github.com/AAndyProgram/SCrawler/releases/download/1.0.0.0/ffmpeg.zip)) +- Authorization cookies Instagram (if you want to download data from Instagram) +- ffmpeg library for downloading videos hosted on Reddit (you can download it from the [official repo](https://github.com/GyanD/codexffmpeg/releases/tag/2021-01-12-git-ca21cb1e36) or [from my first release](https://github.com/AAndyProgram/SCrawler/releases/download/1.0.0.0/ffmpeg.zip)) - Don't put program in the ```Program Files``` system folder (this is portable program and program settings are stored in the program folder) -- Just unpack program archive in any folder you want, copy ```ffmpeg.exe``` into and enjoy. :-) +- Just unzip the program archive to any folder, copy the file ```ffmpeg.exe``` into it and enjoy. :) + +# Updating + +Just download [latest](https://github.com/AAndyProgram/SCrawler/releases/latest) version and unpack it into the program folder. Before starting a new version, I recommend making a backup copy of the program settings folder. # Settings and usage The program has an intuitive interface. -Just add user profile and press ```Start downloading``` button. +Just add a user profile and click the ```Start downloading``` button. -Users can be added by patterns: +You can add users by patterns: +- https://www.instagram.com/SomeUserName - https://twitter.com/SomeUserName - https://reddit.com/user/SomeUserName - https://reddit.com/r/SomeSubredditName - u/SomeUserName - r/SomeSubredditName -- SomeUserName (in this case you must to choose user site) +- SomeUserName (in this case, you need to select the user's site) - SomeSubredditName -More about users and subreddits adding [here](https://github.com/AAndyProgram/SCrawler/wiki/Users) +Read more about adding users and subreddits [here](https://github.com/AAndyProgram/SCrawler/wiki/Users) **Full guide you can find [here](https://github.com/AAndyProgram/SCrawler/wiki)** ## Using program as just video downloader -Create a shortcut for the program. Open shortcut properties. On the ```Shortcut``` tab in ```Target``` field just add ```v``` at the end through the space. +Create a shortcut for the program. Open shortcut properties. In the ```Shortcut``` tab, in the ```Target``` field, just add the letter ```v``` at the end across the space. Example: ```D:\Programs\SCrawler\SCrawler.exe v``` diff --git a/SCrawler.sln b/SCrawler.sln index 0741768..a51dee8 100644 --- a/SCrawler.sln +++ b/SCrawler.sln @@ -11,6 +11,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject .gitignore = .gitignore Changelog.md = Changelog.md + Info\InstaAlgo.txt = Info\InstaAlgo.txt + Info\InstagramInfo.txt = Info\InstagramInfo.txt README.md = README.md Info\RedditUrlsInfo.txt = Info\RedditUrlsInfo.txt ToDo.txt = ToDo.txt diff --git a/SCrawler/API/Base/Declarations.vb b/SCrawler/API/Base/Declarations.vb new file mode 100644 index 0000000..3c69e8b --- /dev/null +++ b/SCrawler/API/Base/Declarations.vb @@ -0,0 +1,13 @@ +' Copyright (C) 2022 Andy +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Namespace API.Base + Friend Module Declarations + Friend ReadOnly LNC As New ListAddParams(LAP.NotContainsOnly) + End Module +End Namespace \ No newline at end of file diff --git a/SCrawler/API/Base/SiteSettings.vb b/SCrawler/API/Base/SiteSettings.vb index 0907f00..32db4b1 100644 --- a/SCrawler/API/Base/SiteSettings.vb +++ b/SCrawler/API/Base/SiteSettings.vb @@ -25,8 +25,47 @@ Namespace API.Base _Path.Value = NewFile End Set End Property + Friend ReadOnly Property InstaHash As XMLValue(Of String) + Friend ReadOnly Property InstaHashUpdateRequired As XMLValue(Of Boolean) + Friend ReadOnly Property InstagramDownloadingErrorDate As XMLValue(Of Date) + Friend Property InstagramLastApplyingValue As Integer? = Nothing + Friend ReadOnly Property InstagramReadyForDownload As Boolean + Get + With InstagramDownloadingErrorDate + If .ValueF.Exists Then + Return .ValueF.Value.AddMinutes(If(InstagramLastApplyingValue, 10)) < Now + Else + Return True + End If + End With + End Get + End Property + Friend Property InstagramTooManyRequestsReadyForCatch As Boolean = True + Friend Sub InstagramTooManyRequests(ByVal Catched As Boolean) + With InstagramDownloadingErrorDate + If Catched Then + If Not .ValueF.Exists Then + .Value = Now + If InstagramTooManyRequestsReadyForCatch Then + InstagramLastApplyingValue = If(InstagramLastApplyingValue, 0) + 10 + InstagramTooManyRequestsReadyForCatch = False + MyMainLOG = $"Instagram downloading error: too many requests. Try again after {If(InstagramLastApplyingValue, 10)} minutes..." + End If + End If + Else + .ValueF = Nothing + InstagramLastApplyingValue = Nothing + End If + End With + End Sub + Friend ReadOnly Property Temporary As XMLValue(Of Boolean) + Friend ReadOnly Property DownloadImages As XMLValue(Of Boolean) + Friend ReadOnly Property DownloadVideos As XMLValue(Of Boolean) + Friend ReadOnly Property GetUserMediaOnly As XMLValue(Of Boolean) + Friend ReadOnly Property SavedPostsUserName As XMLValue(Of String) Private ReadOnly SettingsFile As SFile - Friend Sub New(ByVal s As Sites, ByRef _XML As XmlFile, ByVal GlobalPath As SFile) + Friend Sub New(ByVal s As Sites, ByRef _XML As XmlFile, ByVal GlobalPath As SFile, + ByRef _Temp As XMLValue(Of Boolean), ByRef _Imgs As XMLValue(Of Boolean), ByRef _Vids As XMLValue(Of Boolean)) Site = s SettingsFile = $"{SettingsFolderName}\Responser_{s}.xml" Responser = New WEB.Response(SettingsFile) @@ -34,40 +73,112 @@ Namespace API.Base If SettingsFile.Exists Then Responser.LoadSettings() Else - If Site = Sites.Twitter Then - With Responser - .ContentType = "application/json" - .Accept = "*/*" - .CookiesDomain = "twitter.com" - .Decoders.Add(SymbolsConverter.Converters.Unicode) - With .Headers - .Add("sec-ch-ua", " Not;A Brand" & Chr(34) & ";v=" & Chr(34) & "99" & Chr(34) & ", " & Chr(34) & - "Google Chrome" & Chr(34) & ";v=" & Chr(34) & "91" & Chr(34) & ", " & Chr(34) & "Chromium" & - Chr(34) & ";v=" & Chr(34) & "91" & Chr(34)) - .Add("sec-ch-ua-mobile", "?0") - .Add("sec-fetch-dest", "empty") - .Add("sec-fetch-mode", "cors") - .Add("sec-fetch-site", "same-origin") - .Add(Header_Twitter_Token, String.Empty) - .Add("x-twitter-active-user", "yes") - .Add("x-twitter-auth-type", "OAuth2Session") - .Add(Header_Twitter_Authorization, String.Empty) + Select Case Site + Case Sites.Twitter + With Responser + .ContentType = "application/json" + .Accept = "*/*" + .CookiesDomain = "twitter.com" + .Decoders.Add(SymbolsConverter.Converters.Unicode) + With .Headers + .Add("sec-ch-ua", " Not;A Brand" & Chr(34) & ";v=" & Chr(34) & "99" & Chr(34) & ", " & Chr(34) & + "Google Chrome" & Chr(34) & ";v=" & Chr(34) & "91" & Chr(34) & ", " & Chr(34) & "Chromium" & + Chr(34) & ";v=" & Chr(34) & "91" & Chr(34)) + .Add("sec-ch-ua-mobile", "?0") + .Add("sec-fetch-dest", "empty") + .Add("sec-fetch-mode", "cors") + .Add("sec-fetch-site", "same-origin") + .Add(Header_Twitter_Token, String.Empty) + .Add("x-twitter-active-user", "yes") + .Add("x-twitter-auth-type", "OAuth2Session") + .Add(Header_Twitter_Authorization, String.Empty) + End With End With - End With - ElseIf Site = Sites.Reddit Then - Responser.CookiesDomain = "reddit.com" - Responser.Decoders.Add(SymbolsConverter.Converters.Unicode) - End If + Case Sites.Reddit + Responser.CookiesDomain = "reddit.com" + Responser.Decoders.Add(SymbolsConverter.Converters.Unicode) + Case Sites.Instagram : Responser.CookiesDomain = "instagram.com" + End Select Responser.SaveSettings() End If - _Path = New XMLValue(Of SFile)("Path", SFile.GetPath($"{GlobalPath.PathWithSeparator}{Site}"), - _XML, {SettingsCLS.Name_Node_Sites, Site.ToString}, XMLValue(Of SFile).ToFilePath) + + Dim n() As String = {SettingsCLS.Name_Node_Sites, Site.ToString} + _Path = New XMLValue(Of SFile)("Path", SFile.GetPath($"{GlobalPath.PathWithSeparator}{Site}"), _XML, n, XMLValue(Of SFile).ToFilePath) _Path.ReplaceByValue("Path", {Site.ToString}) _XML.Remove(Site.ToString) + + Temporary = New XMLValue(Of Boolean) + Temporary.SetExtended("Temporary", False, _XML, n) + Temporary.SetDefault(_Temp) + + DownloadImages = New XMLValue(Of Boolean) + DownloadImages.SetExtended("DownloadImages", True, _XML, n) + DownloadImages.SetDefault(_Imgs) + + DownloadVideos = New XMLValue(Of Boolean) + DownloadVideos.SetExtended("DownloadVideos", True, _XML, n) + DownloadVideos.SetDefault(_Vids) + + If Site = Sites.Twitter Then + GetUserMediaOnly = New XMLValue(Of Boolean)("GetUserMediaOnly", True, _XML, n) + GetUserMediaOnly.ReplaceByValue("TwitterDefaultGetUserMedia", n) + Else + GetUserMediaOnly = New XMLValue(Of Boolean) + End If + + If Site = Sites.Instagram Then + InstaHash = New XMLValue(Of String)("InstaHash", String.Empty, _XML, n) + InstaHashUpdateRequired = New XMLValue(Of Boolean)("InstaHashUpdateRequired", True, _XML, n) + If (InstaHash.IsEmptyString Or InstaHashUpdateRequired) And Responser.Cookies.ListExists Then GatherInstaHash() + InstagramDownloadingErrorDate = New XMLValue(Of Date) With {.ToStringFunction = Function(ss, vv) AConvert(Of String)(vv, Nothing)} + InstagramDownloadingErrorDate.SetExtended("InstagramDownloadingErrorDate", Now.AddYears(-10), _XML, n) + Else + InstaHash = New XMLValue(Of String) + InstaHashUpdateRequired = New XMLValue(Of Boolean) + End If + If Site = Sites.Reddit Then + SavedPostsUserName = New XMLValue(Of String)("SavedPostsUserName", String.Empty, _XML, n) + Else + SavedPostsUserName = New XMLValue(Of String) + End If End Sub Friend Sub Update() Responser.SaveSettings() End Sub + Friend Function GatherInstaHash() As Boolean + Try + Dim rs As New RegexStructure("=" & Chr(34) & "([^" & Chr(34) & "]+?ConsumerLibCommons[^" & Chr(34) & "]+?.js)" & Chr(34), 1) With { + .UseTimeOut = True, + .MatchTimeOutSeconds = 10 + } + Dim r$ = Responser.GetResponse("https://instagram.com",, EDP.ThrowException) + If Not r.IsEmptyString Then + Dim hStr$ = RegexReplace(r, rs) + If Not hStr.IsEmptyString Then + Do While Left(hStr, 1) = "/" : hStr = Right(hStr, hStr.Length - 1) : Loop + hStr = $"https://instagram.com/{hStr}" + r = Responser.GetResponse(hStr,, EDP.ThrowException) + If Not r.IsEmptyString Then + rs = New RegexStructure("generatePaginationActionCreators.+?.profilePosts.byUserId.get.+?queryId:.([\d\w\S]+?)" & Chr(34), 1) With { + .UseTimeOut = True, + .MatchTimeOutSeconds = 10 + } + Dim h$ = RegexReplace(r, rs) + If Not h.IsEmptyString Then + InstaHash.Value = h + InstaHashUpdateRequired.Value = False + Return True + End If + End If + End If + End If + Return False + Catch ex As Exception + InstaHashUpdateRequired.Value = True + InstaHash.Value = String.Empty + Return ErrorsDescriber.Execute(EDP.SendInLog + EDP.ReturnValue, ex, "[SiteSettings.GaterInstaHash]", False) + End Try + End Function #Region "IDisposable Support" Private disposedValue As Boolean = False Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean) diff --git a/SCrawler/API/Base/UserDataBase.vb b/SCrawler/API/Base/UserDataBase.vb index 533f730..4c12542 100644 --- a/SCrawler/API/Base/UserDataBase.vb +++ b/SCrawler/API/Base/UserDataBase.vb @@ -78,6 +78,7 @@ Namespace API.Base #Region "Declarations" Friend MustOverride Property Site As Sites Implements IContentProvider.Site Friend User As UserInfo + Friend Property IsSavedPosts As Boolean Protected Const NonExistendUserHelp As String = "404" Protected Const SuspendedUserHelp As String = "403" Friend Overridable Property UserExists As Boolean = True Implements IUserData.Exists @@ -329,17 +330,16 @@ BlockNullPicture: Dim luv$ = String.Empty If LastUpdated.HasValue Then luv = $"{LastUpdated.Value.ToStringDate(ADateTime.Formats.BaseDateTime)}: " Return $"{luv}{Name} [{Site}]{IIf(HasError, " (with errors)", String.Empty)}: P - {_DownloadedPicturesTotal}; V - {_DownloadedVideosTotal}" & - $" (P - {_CountPictures}; V - {_CountVideo})" + $" (P - {_CountPictures}; V - {_CountVideo})" End Get End Property #End Region - Protected ReadOnly LNC As New ListAddParams(LAP.NotContainsOnly) #End Region #Region "LVI" Friend ReadOnly Property LVIKey As String Implements IUserData.LVIKey Get If Not _IsCollection Then - Return $"{IIf(Site = Sites.Reddit, "R", "T")}_{Name}" + Return $"{Interaction.Switch(Site = Sites.Reddit, "R", Site = Sites.Twitter, "T", Site = Sites.Instagram, "I")}_{Name}" Else Return $"CCCC_{CollectionName}" End If @@ -361,14 +361,18 @@ BlockNullPicture: End Function Friend Overridable ReadOnly Property FitToAddParams As Boolean Implements IUserData.FitToAddParams Get - Select Case Settings.ShowingMode.Value - Case ShowingModes.Regular : Return Not Temporary And Not Favorite - Case ShowingModes.Temporary : Return Temporary - Case ShowingModes.Favorite : Return Favorite - Case ShowingModes.Labels : Return Settings.Labels.CurrentSelection.ListContains(Labels) - Case ShowingModes.NoLabels : Return Labels.Count = 0 - Case Else : Return True - End Select + If Settings.SelectedSites.Count = 0 OrElse Settings.SelectedSites.Contains(Site) Then + Select Case Settings.ShowingMode.Value + Case ShowingModes.Regular : Return Not Temporary And Not Favorite + Case ShowingModes.Temporary : Return Temporary + Case ShowingModes.Favorite : Return Favorite + Case ShowingModes.Labels : Return Settings.Labels.CurrentSelection.ListContains(Labels) + Case ShowingModes.NoLabels : Return Labels.Count = 0 + Case Else : Return True + End Select + Else + Return False + End If End Get End Property Friend Function GetLVIGroup(ByVal Destination As ListView) As ListViewGroup Implements IUserData.GetLVIGroup @@ -383,7 +387,7 @@ BlockNullPicture: Return Destination.Groups.Item(LabelsKeeper.NoLabeledName) End If Else - Return Destination.Groups.Item(GetLviGroupName(Site, Temporary, Favorite, IsCollection)) + Return Destination.Groups.Item(GetLviGroupName(Site, Temporary, Favorite, IsCollection, IsChannel)) End If Catch ex As Exception Return Destination.Groups.Item(LabelsKeeper.NoLabeledName) @@ -431,6 +435,7 @@ BlockNullPicture: Return New Reddit.UserData(u, _LoadUserInformation) End If Case Sites.Twitter : Return New Twitter.UserData(u, _LoadUserInformation) + Case Sites.Instagram : Return New Instagram.UserData(u, _LoadUserInformation) Case Else : Throw New ArgumentOutOfRangeException("Site", $"Site [{u.Site}] information does not recognized by loader") End Select End Function @@ -503,7 +508,7 @@ BlockNullPicture: x.Save(MyFile) End Using - Settings.UpdateUsersList(User) + If Not IsSavedPosts Then Settings.UpdateUsersList(User) Catch ex As Exception LogError(ex, "user information saving error") End Try @@ -584,7 +589,8 @@ BlockNullPicture: Select Case Site Case Sites.Reddit : URL = $"https://www.reddit.com/{IIf(IsChannel, "r", "user")}/{Name}/" Case Sites.Twitter : URL = $"https://twitter.com/{Name}" - Case Else : MsgBoxE($"Site [{Site}] opening does not implemented", MsgBoxStyle.Exclamation) + Case Sites.Instagram : URL = $"https://www.instagram.com/{Name}/" + Case Else : MsgBoxE($"Site [{Site}] opening not implemented", MsgBoxStyle.Exclamation) End Select If Not URL.IsEmptyString Then Process.Start(URL) Catch ex As Exception @@ -604,10 +610,12 @@ BlockNullPicture: UpdateDataFiles() If Not Responser Is Nothing Then Responser.Dispose() Responser = New PersonalUtilities.Tools.WEB.Response - Responser.Copy(Settings.Site(Site).Responser) + Responser.Copy(Settings(Site).Responser) Dim UpPic As Boolean = Settings.ViewModeIsPicture AndAlso GetPicture(False) Is Nothing Dim sEnvir() As Boolean = {UserExists, UserSuspended} Dim EnvirChanged As Func(Of Boolean) = Function() Not sEnvir(0) = UserExists Or Not sEnvir(1) = UserSuspended + UserExists = True + UserSuspended = False _DownloadedPicturesSession = 0 _DownloadedVideosSession = 0 _TempMediaList.Clear() @@ -714,7 +722,7 @@ BlockNullPicture: End Function Friend Function DeleteF(ByVal Instance As IUserData) As Integer Dim f As SFile = SFile.GetPath(MyFile.CutPath.Path) - If f.Exists(SFO.Path, False) AndAlso f.Delete(SFO.Path, False, False) Then + If f.Exists(SFO.Path, False) AndAlso (User.Merged OrElse f.Delete(SFO.Path, False, False)) Then ImageHandler(Me, False) Settings.UsersList.Remove(User) Settings.UpdateUsersList() @@ -919,7 +927,7 @@ BlockNullPicture: #End Region #Region "IEquatable Support" Friend Overridable Overloads Function Equals(ByVal Other As UserDataBase) As Boolean Implements IEquatable(Of UserDataBase).Equals - Return Site = Other.Site And Name = Other.Name + Return Site = Other.Site And Name = Other.Name And IsSavedPosts = Other.IsSavedPosts End Function Public Overrides Function Equals(ByVal Obj As Object) As Boolean If TypeOf Obj Is Reddit.Channel Then diff --git a/SCrawler/API/Imgur/Envir.vb b/SCrawler/API/Imgur/Envir.vb new file mode 100644 index 0000000..8c83025 --- /dev/null +++ b/SCrawler/API/Imgur/Envir.vb @@ -0,0 +1,69 @@ +' Copyright (C) 2022 Andy +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Imports PersonalUtilities.Functions.XML +Imports PersonalUtilities.Tools.WebDocuments.JSON +Imports System.Net +Imports SCrawler.API.Imgur.Declarations +Namespace API.Imgur.Declarations + Friend Module Imgur_Declarations + Friend ReadOnly PostRegex As New RegexStructure("/([\w\d]+?)(|\.[\w]{0,4})\Z", 1) + End Module +End Namespace +Namespace API.Imgur + Friend NotInheritable Class Envir + Private Sub New() + End Sub + Friend Shared Function GetGallery(ByVal URL As String) As List(Of String) + Try + If Not Settings.ImgurClientID.IsEmptyString And Not URL.IsEmptyString Then + Dim __url$ = RegexReplace(URL, PostRegex) + If Not __url.IsEmptyString Then + __url = $"https://api.imgur.com/post/v1/albums/{__url}?client_id={Settings.ImgurClientID.Value}&include=media" + Using w As New WebClient + Dim r$ = w.DownloadString(__url) + If Not r.IsEmptyString Then + Using j As EContainer = JsonDocument.Parse(r).XmlIfNothing + If j.Contains("media") Then + Dim UrlsList As New List(Of String) + Dim tmpUrl$ + For Each m As EContainer In j("media") + tmpUrl = m.Value("url") + If Not tmpUrl.IsEmptyString Then UrlsList.ListAddValue(tmpUrl, Base.LNC) + Next + Return UrlsList + End If + End Using + End If + End Using + End If + End If + Return Nothing + Catch ex As Exception + Return ErrorsDescriber.Execute(EDP.ReturnValue + EDP.SendInLog, ex, $"[API.Imgur.Envir.GetGallery({URL})]", Nothing) + End Try + End Function + Friend Shared Function GetImage(ByVal URL As String) As String + Try + If Not Settings.ImgurClientID.IsEmptyString And Not URL.IsEmptyString Then + Dim __url$ = RegexReplace(URL, PostRegex) + If Not __url.IsEmptyString Then + __url = $"https://api.imgur.com/3/image/{__url}?client_id={Settings.ImgurClientID.Value}&include=media" + Using w As New WebClient + Dim r$ = w.DownloadString(__url) + If Not r.IsEmptyString Then Return JsonDocument.Parse(r).XmlIfNothing.Value({"data"}, "link") + End Using + End If + End If + Return String.Empty + Catch ex As Exception + Return ErrorsDescriber.Execute(EDP.ReturnValue + EDP.SendInLog, ex, $"[API.Imgur.Envir.GetImage({URL})]", String.Empty) + End Try + End Function + End Class +End Namespace \ No newline at end of file diff --git a/SCrawler/API/Instagram/Declarations.vb b/SCrawler/API/Instagram/Declarations.vb new file mode 100644 index 0000000..2ec5b3a --- /dev/null +++ b/SCrawler/API/Instagram/Declarations.vb @@ -0,0 +1,23 @@ +' Copyright (C) 2022 Andy +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Namespace API.Instagram + Friend Module Declarations + Friend ReadOnly FilesPattern As New RegexStructure("[^\./]+?\.\w+", True, False, 2,,,, String.Empty, EDP.ReturnValue) + Friend ReadOnly Property DateProvider As New JsonDate + Friend Class JsonDate : Implements ICustomProvider + Friend Function Convert(ByVal Value As Object, ByVal DestinationType As Type, ByVal Provider As IFormatProvider, + Optional ByVal NothingArg As Object = Nothing, Optional ByVal e As ErrorsDescriber = Nothing) As Object Implements ICustomProvider.Convert + Return ADateTime.ParseUnicode(Value) + End Function + Private Function GetFormat(ByVal FormatType As Type) As Object Implements IFormatProvider.GetFormat + Throw New NotImplementedException("GetFormat is not available in this context") + End Function + End Class + End Module +End Namespace \ No newline at end of file diff --git a/SCrawler/API/Instagram/UserData.vb b/SCrawler/API/Instagram/UserData.vb new file mode 100644 index 0000000..207e0aa --- /dev/null +++ b/SCrawler/API/Instagram/UserData.vb @@ -0,0 +1,241 @@ +' Copyright (C) 2022 Andy +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Imports PersonalUtilities.Functions.XML +Imports PersonalUtilities.Tools.WebDocuments.JSON +Imports SCrawler.API.Base +Imports System.Threading +Imports System.Net +Imports UStates = SCrawler.API.Base.UserMedia.States +Imports UTypes = SCrawler.API.Base.UserMedia.Types +Namespace API.Instagram + Friend Class UserData : Inherits UserDataBase + Friend Overrides Property Site As Sites = Sites.Instagram + ''' Video downloader initializer + Private Sub New() + End Sub + ''' Default initializer + Friend Sub New(ByVal u As UserInfo, Optional ByVal _LoadUserInformation As Boolean = True) + User = u + If _LoadUserInformation Then LoadUserInformation() + End Sub + Protected Overrides Sub DownloadDataF(ByVal Token As CancellationToken) + DownloadData(String.Empty, Token) + End Sub + Private _InstaHash As String = String.Empty + Private Overloads Sub DownloadData(ByVal Cursor As String, ByVal Token As CancellationToken) + Dim URL$ = String.Empty + Try + Dim n As EContainer, nn As EContainer, node As EContainer + Dim HasNextPage As Boolean = False + Dim EndCursor$ = String.Empty + Dim PostID$ = String.Empty, PostDate$ = String.Empty + + 'Check environment + If Cursor.IsEmptyString And _InstaHash.IsEmptyString Then _InstaHash = Settings(Sites.Instagram).InstaHash + If _InstaHash.IsEmptyString Then Throw New ArgumentNullException("InstHash", "Query hash is null") + If ID.IsEmptyString Then GetUserId() + If ID.IsEmptyString Then Throw New ArgumentException("User ID is not detected", "ID") + + 'Create query + Dim vars$ = "{""id"":" & ID & ",""first"":12,""after"":""" & Cursor & """}" + vars = SymbolsConverter.ASCII.EncodeSymbolsOnly(vars) + URL = $"https://www.instagram.com/graphql/query/?query_hash={_InstaHash}&variables={vars}" + + 'Get response + Dim r$ = Responser.GetResponse(URL,, EDP.ThrowException) + Settings(Sites.Instagram).InstagramTooManyRequests(False) + ThrowAny(Token) + + 'Data + If Not r.IsEmptyString Then + Using j As EContainer = JsonDocument.Parse(r).XmlIfNothing + n = j.ItemF({"data", "user", 0}).XmlIfNothing + If n.Count > 0 Then + If n.Contains("page_info") Then + With n("page_info") + HasNextPage = .Value("has_next_page").FromXML(Of Boolean)(False) + EndCursor = .Value("end_cursor") + End With + End If + n = n("edges").XmlIfNothing + If n.Count > 0 Then + For Each nn In n + ThrowAny(Token) + node = nn(0).XmlIfNothing + + PostID = node.Value("id") + If Not PostID.IsEmptyString And _TempPostsList.Contains(PostID) Then Exit Sub + _TempPostsList.Add(PostID) + PostDate = node.Value("taken_at_timestamp") + + ObtainMedia(node, PostID, PostDate) + Next + End If + Else + If j.Value("status") = "ok" AndAlso j({"data", "user"}).XmlIfNothing.Count = 0 AndAlso _TempMediaList.Count = 0 Then + Settings(Sites.Instagram).InstaHashUpdateRequired.Value = True + UserExists = False + Exit Sub + End If + End If + End Using + End If + If HasNextPage And Not EndCursor.IsEmptyString Then DownloadData(EndCursor, Token) + Catch oex As OperationCanceledException When Token.IsCancellationRequested + Catch dex As ObjectDisposedException When Disposed + Catch ex As Exception + If Responser.StatusCode = HttpStatusCode.NotFound Then + UserExists = False + ElseIf Responser.StatusCode = HttpStatusCode.BadRequest Then + MyMainLOG = "Instagram credentials have expired" + Settings(Sites.Instagram).InstaHashUpdateRequired.Value = True + ElseIf Responser.StatusCode = 429 Then + Settings(Sites.Instagram).InstagramTooManyRequests(True) + Else + Settings(Sites.Instagram).InstaHashUpdateRequired.Value = True + LogError(ex, $"data downloading error [{URL}]") + End If + HasError = True + Finally + _InstaHash = String.Empty + End Try + End Sub + Private Sub ObtainMedia(ByVal node As EContainer, ByVal PostID As String, ByVal PostDate As String) + Dim CreateMedia As Action(Of EContainer) = + Sub(ByVal e As EContainer) + Dim t As UTypes = If(e.Value("is_video").FromXML(Of Boolean)(False), UTypes.Video, UTypes.Picture) + Dim tmpValue$ + If t = UTypes.Picture Then + tmpValue = e.Value("display_url") + Else + tmpValue = e.Value("video_url") + End If + If Not tmpValue.IsEmptyString Then _TempMediaList.ListAddValue(MediaFromData(t, tmpValue, PostID, PostDate), LNC) + End Sub + If node.Contains({"edge_sidecar_to_children", "edges"}) Then + For Each edge As EContainer In node({"edge_sidecar_to_children", "edges"}) : CreateMedia(edge("node").XmlIfNothing) : Next + Else + CreateMedia(node) + End If + End Sub + Private Sub GetUserId() + Try + Dim r$ = Responser.GetResponse($"https://www.instagram.com/{Name}/?__a=1",, EDP.ThrowException) + If Not r.IsEmptyString Then + Using j As EContainer = JsonDocument.Parse(r).XmlIfNothing + ID = j({"graphql", "user"}, "id").XmlIfNothingValue + End Using + End If + Catch ex As Exception + If Responser.StatusCode = HttpStatusCode.NotFound Or Responser.StatusCode = HttpStatusCode.BadRequest Then + Throw ex + Else + LogError(ex, "get instagram user id") + End If + End Try + End Sub + Protected Overrides Sub ReparseVideo(ByVal Token As CancellationToken) + End Sub + Protected Overrides Sub DownloadContent(ByVal Token As CancellationToken) + Try + Dim i% + Dim dCount% = 0, dTotal% = 0 + ThrowAny(Token) + If _ContentNew.Count > 0 Then + _ContentNew.RemoveAll(Function(c) c.URL.IsEmptyString) + If _ContentNew.Count > 0 Then + MyFile.Exists(SFO.Path) + Dim MyDir$ = MyFile.CutPath.PathNoSeparator + Dim vsf As Boolean = SeparateVideoFolderF + Dim f As SFile + Dim v As UserMedia + Using w As New WebClient + If vsf Then SFileShares.SFileExists($"{MyDir}\Video\", SFO.Path) + MainProgress.TotalCount += _ContentNew.Count + For i = 0 To _ContentNew.Count - 1 + ThrowAny(Token) + v = _ContentNew(i) + v.State = UStates.Tried + If v.File.IsEmptyString Then + f = v.URL + Else + f = v.File + End If + f.Separator = "\" + f.Path = MyDir + + If v.URL_BASE.IsEmptyString Then v.URL_BASE = v.URL + + If Not v.File.IsEmptyString AndAlso Not v.URL_BASE.IsEmptyString Then + Try + If v.Type = UTypes.Video And vsf Then f.Path = $"{f.PathWithSeparator}Video" + w.DownloadFile(v.URL_BASE, f.ToString) + Select Case v.Type + Case UTypes.Video : DownloadedVideos += 1 : _CountVideo += 1 + Case UTypes.Picture : DownloadedPictures += 1 : _CountPictures += 1 + End Select + v.File = ChangeFileNameByProvider(f, v) + v.State = UStates.Downloaded + Catch wex As Exception + ErrorDownloading(f, v.URL_BASE) + End Try + Else + v.State = UStates.Skipped + End If + _ContentNew(i) = v + If DownloadTopCount.HasValue AndAlso dCount >= DownloadTopCount.Value Then + MainProgress.Perform(_ContentNew.Count - dTotal) + Exit Sub + Else + dTotal += 1 + MainProgress.Perform() + End If + Next + End Using + End If + End If + Catch oex As OperationCanceledException When Token.IsCancellationRequested + Catch dex As ObjectDisposedException When Disposed + Catch ex As Exception + LogError(ex, "content downloading error") + HasError = True + End Try + End Sub + Private Shared Function MediaFromData(ByVal t As UTypes, ByVal _URL As String, ByVal PostID As String, ByVal PostDate As String) As UserMedia + _URL = LinkFormatterSecure(RegexReplace(_URL.Replace("\", String.Empty), LinkPattern)) + Dim m As New UserMedia(_URL, t) With {.Post = New UserPost With {.ID = PostID}} + If Not m.URL.IsEmptyString Then m.File = CStr(RegexReplace(m.URL, FilesPattern)) + If Not PostDate.IsEmptyString Then m.Post.Date = AConvert(Of Date)(PostDate, Declarations.DateProvider, Nothing) Else m.Post.Date = Nothing + Return m + End Function + Friend Shared Function GetVideoInfo(ByVal URL As String) As IEnumerable(Of UserMedia) + Try + If Not URL.IsEmptyString AndAlso URL.Contains("instagram.com") Then + Do While Right(URL, 1) = "/" : URL = Left(URL, URL.Length - 1) : Loop + URL = $"{URL}/?__a=1" + Using t As New UserData + t.Responser = New PersonalUtilities.Tools.WEB.Response + t.Responser.Copy(Settings(Sites.Instagram).Responser) + Dim r$ = t.Responser.GetResponse(URL,, EDP.ThrowException) + If Not r.IsEmptyString Then + Using j As EContainer = JsonDocument.Parse(r).XmlIfNothing + Dim node As EContainer = j({"graphql", "shortcode_media"}).XmlIfNothing + If node.Count > 0 Then t.ObtainMedia(node, String.Empty, String.Empty) + End Using + End If + If t._TempMediaList.Count > 0 Then Return ListAddList(Nothing, t._TempMediaList) + End Using + End If + Return Nothing + Catch ex As Exception + Return ErrorsDescriber.Execute(EDP.ShowMainMsg + EDP.SendInLog, ex, "Instagram standalone downloader: fetch media error") + End Try + End Function + End Class +End Namespace \ No newline at end of file diff --git a/SCrawler/API/Reddit/Declarations.vb b/SCrawler/API/Reddit/Declarations.vb index 7b20bae..1c83eb5 100644 --- a/SCrawler/API/Reddit/Declarations.vb +++ b/SCrawler/API/Reddit/Declarations.vb @@ -24,7 +24,7 @@ Namespace API.Reddit Return ADateTime.ParseUnicodeJS(Value, NothingArg, e) End Function Private Function GetFormat(ByVal FormatType As Type) As Object Implements IFormatProvider.GetFormat - Throw New NotImplementedException("GetFormat does not available in this context") + Throw New NotImplementedException("GetFormat is not available in this context") End Function End Class Friend Class JsonDateChannel : Implements ICustomProvider @@ -34,7 +34,7 @@ Namespace API.Reddit Return ADateTime.ParseUnicode(AConvert(Of Integer)(Value, EUR_PROVIDER, Value), NothingArg, e) End Function Private Function GetFormat(ByVal FormatType As Type) As Object Implements IFormatProvider.GetFormat - Throw New NotImplementedException("GetFormat does not available in this context") + Throw New NotImplementedException("GetFormat is not available in this context") End Function End Class End Module diff --git a/SCrawler/API/Reddit/ProfileSaved.vb b/SCrawler/API/Reddit/ProfileSaved.vb new file mode 100644 index 0000000..f851fc0 --- /dev/null +++ b/SCrawler/API/Reddit/ProfileSaved.vb @@ -0,0 +1,39 @@ +' Copyright (C) 2022 Andy +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Imports SCrawler.API.Base +Namespace API.Reddit + Friend NotInheritable Class ProfileSaved + Private Sub New() + End Sub + Friend Shared Sub Download(ByRef Toolbar As StatusStrip, ByRef PR As ToolStripProgressBar) + Try + Dim Bar = New PersonalUtilities.Forms.Toolbars.MyProgress(Toolbar, PR, Nothing) + Dim u As New UserInfo(Settings(Sites.Reddit).SavedPostsUserName.Value, Sites.Reddit) With { + .IsChannel = True, + .SpecialPath = $"{Settings(Sites.Reddit).Path.PathWithSeparator}\!Saved\" + } + u.UpdateUserFile() + Using user As IUserData = UserDataBase.GetInstance(u) + DirectCast(user.Self, UserDataBase).IsSavedPosts = True + Bar.Enabled = True + DirectCast(user.Self, UserData).Progress = Bar + If Not user.FileExists Then user.UpdateUserInformation() + user.DownloadData(Nothing) + Dim m As New MMessage("Reddit saved posts download complete", "Saved posts downloading", {"OK", "Open folder"}) + m.Text.StringAppendLine($"Downloaded images: {user.DownloadedPictures}") + m.Text.StringAppendLine($"Downloaded videos: {user.DownloadedVideos}") + If MsgBoxE(m) = 1 Then u.File.CutPath.Open(SFO.Path) + Bar.Enabled = False + End Using + Catch ex As Exception + ErrorsDescriber.Execute(EDP.SendInLog, ex, "[API.Reddit.ProfileSaved.Download]") + End Try + End Sub + End Class +End Namespace \ No newline at end of file diff --git a/SCrawler/API/Reddit/UserData.vb b/SCrawler/API/Reddit/UserData.vb index 3bcbdcb..b78e7b5 100644 --- a/SCrawler/API/Reddit/UserData.vb +++ b/SCrawler/API/Reddit/UserData.vb @@ -79,7 +79,7 @@ Namespace API.Reddit If IsChannel AndAlso Not ChannelInfo.IsRegularChannel Then If Not Responser Is Nothing Then Responser.Dispose() Responser = New PersonalUtilities.Tools.WEB.Response - Responser.Copy(Settings.Site(Sites.Reddit).Responser) + Responser.Copy(Settings(Sites.Reddit).Responser) ChannelPostsNames.ListAddList(ChannelInfo.PostsAll.Select(Function(p) p.ID), LNC) If SkipExistsUsers Then _ExistsUsersNames.ListAddList(Settings.UsersList.Select(Function(p) p.Name), LNC) DownloadDataF(Token) @@ -227,7 +227,12 @@ Namespace API.Reddit Dim eCount As Predicate(Of EContainer) = Function(e) e.Count > 0 Dim lDate As Date? - URL = $"https://reddit.com/r/{Name}/new.json?allow_quarantined=true&allow_over18=1&include=identity&after={POST}&dist=25&sort=new&t=all&layout=classic" + If IsSavedPosts Then + URL = $"https://www.reddit.com/user/{Name}/saved.json?after={POST}" + Else + URL = $"https://reddit.com/r/{Name}/new.json?allow_quarantined=true&allow_over18=1&include=identity&after={POST}&dist=25&sort=new&t=all&layout=classic" + End If + ThrowAny(Token) Dim r$ = GetSiteResponse(URL) If Not r.IsEmptyString Then @@ -396,15 +401,15 @@ Namespace API.Reddit LogError(ex, "video reparsing error") End Try End Sub - Friend Shared Function GetVideoInfo(ByVal URL As String) As UserMedia + Friend Shared Function GetVideoInfo(ByVal URL As String) As IEnumerable(Of UserMedia) Try If Not URL.IsEmptyString AndAlso URL.Contains("redgifs") Then Using r As New UserData r._TempMediaList.Add(MediaFromData(UTypes.VideoPre, URL, String.Empty, String.Empty,, False)) r.Responser = New PersonalUtilities.Tools.WEB.Response - r.Responser.Copy(Settings.Site(Sites.Reddit).Responser) + r.Responser.Copy(Settings(Sites.Reddit).Responser) r.ReparseVideo(Nothing) - If r._TempMediaList.ListExists Then Return r._TempMediaList(0) + If r._TempMediaList.ListExists Then Return {r._TempMediaList(0)} End Using End If Return Nothing @@ -460,13 +465,23 @@ Namespace API.Reddit Dim v As UserMedia Dim cached As Boolean = IsChannel And SaveToCache Dim vsf As Boolean = SeparateVideoFolderF - Dim ImgFormat As Imaging.ImageFormat Dim UseMD5 As Boolean = Not IsChannel Or (Not cached And Settings.ChannelsRegularCheckMD5) Dim bDP As New ErrorsDescriber(EDP.None) + Dim ImgurUrls As New List(Of String) + Dim TryBytes As Func(Of String, Imaging.ImageFormat, String) = + Function(ByVal __URL As String, ByVal ImgFormat As Imaging.ImageFormat) As String + Try + Return ByteArrayToString(GetMD5(SFile.GetBytesFromNet(__URL, bDP), ImgFormat)) + Catch hash_ex As Exception + Return String.Empty + End Try + End Function Dim MD5BS As Func(Of String, UTypes, SFile, Boolean, String) = Function(ByVal __URL As String, ByVal __MT As UTypes, ByVal __File As SFile, ByVal __IsBase As Boolean) As String Try + ImgurUrls.Clear() + Dim ImgFormat As Imaging.ImageFormat If __MT = UTypes.GIF Then ImgFormat = Imaging.ImageFormat.Gif ElseIf __IsBase Then @@ -474,7 +489,27 @@ Namespace API.Reddit Else ImgFormat = GetImageFormat(__File) End If - Return ByteArrayToString(GetMD5(SFile.GetBytesFromNet(__URL, bDP), ImgFormat)) + + Dim tmpBytes$ = TryBytes(__URL, ImgFormat) + If tmpBytes.IsEmptyString And Not __MT = UTypes.GIF Then + ImgFormat = Imaging.ImageFormat.Png + tmpBytes = TryBytes(__URL, ImgFormat) + If Not tmpBytes.IsEmptyString Then Return tmpBytes + Else + Return tmpBytes + End If + + If tmpBytes.IsEmptyString And Not __MT = UTypes.GIF And __URL.Contains("imgur.com") Then + For c% = 0 To 1 + If c = 0 Then + ImgurUrls.ListAddList(Imgur.Envir.GetGallery(__URL)) + Else + ImgurUrls.ListAddValue(Imgur.Envir.GetImage(__URL)) + End If + If ImgurUrls.Count > 0 Then Exit For + Next + End If + Return tmpBytes Catch hash_ex As Exception Return String.Empty End Try @@ -496,41 +531,57 @@ Namespace API.Reddit m = String.Empty If (v.Type = UTypes.Picture Or v.Type = UTypes.GIF) And UseMD5 Then m = MD5BS(v.URL, v.Type, f, False) - If m.IsEmptyString AndAlso Not v.URL_BASE.IsEmptyString AndAlso Not v.URL_BASE = v.URL Then + If ImgurUrls.Count = 0 AndAlso m.IsEmptyString AndAlso Not v.URL_BASE.IsEmptyString AndAlso Not v.URL_BASE = v.URL Then m = MD5BS(v.URL_BASE, v.Type, f, True) If Not m.IsEmptyString Then v.URL = v.URL_BASE End If End If If (Not m.IsEmptyString AndAlso Not HashList.Contains(m)) Or Not (v.Type = UTypes.Picture Or - v.Type = UTypes.GIF) Or Not UseMD5 Then - If Not cached Then HashList.Add(m) - v.MD5 = m - f.Path = MyDir - Try - If (v.Type = UTypes.Video Or v.Type = UTypes.m3u8) And vsf Then f.Path = $"{f.PathWithSeparator}Video" - If v.Type = UTypes.m3u8 Then - f = M3U8.Download(v.URL, f) - Else - w.DownloadFile(v.URL, f.ToString) - End If - If Not v.Type = UTypes.m3u8 Or Not f.IsEmptyString Then - Select Case v.Type - Case UTypes.Picture : DownloadedPictures += 1 : _CountPictures += 1 - Case UTypes.Video, UTypes.m3u8 : DownloadedVideos += 1 : _CountVideo += 1 - End Select - If Not IsChannel Or Not SaveToCache Then - v.File = ChangeFileNameByProvider(f, v) - Else - v.File = f + v.Type = UTypes.GIF) Or Not UseMD5 Or ImgurUrls.Count > 0 Then + Do + If Not cached And Not m.IsEmptyString Then HashList.Add(m) + v.MD5 = m + If ImgurUrls.Count > 0 Then + If ImgurUrls(0).IsEmptyString Then ImgurUrls.RemoveAt(0) : Continue Do + f = UrlToFile(ImgurUrls(0)) + If f.Extension.IsEmptyString Then f.Extension = "gif" + If f.Name.IsEmptyString Then + f.Path = MyDir + f.Name = $"ImgurImg_{v.File.Name}" + f = SFile.Indexed_IndexFile(f,,, EDP.ReturnValue) End If - v.Post.CachedFile = f - v.State = UStates.Downloaded - dCount += 1 End If - Catch wex As Exception - If Not IsChannel Then ErrorDownloading(f, v.URL) - End Try + f.Path = MyDir + Try + If (v.Type = UTypes.Video Or v.Type = UTypes.m3u8 Or (ImgurUrls.Count > 0 AndAlso f.Extension = "mp4")) And + vsf Then f.Path = $"{f.PathWithSeparator}Video" + If v.Type = UTypes.m3u8 Then + f = M3U8.Download(v.URL, f) + ElseIf ImgurUrls.Count > 0 Then + w.DownloadFile(ImgurUrls(0), f.ToString) + Else + w.DownloadFile(v.URL, f.ToString) + End If + If Not v.Type = UTypes.m3u8 Or Not f.IsEmptyString Then + Select Case v.Type + Case UTypes.Picture : DownloadedPictures += 1 : _CountPictures += 1 + Case UTypes.Video, UTypes.m3u8 : DownloadedVideos += 1 : _CountVideo += 1 + End Select + If Not IsChannel Or Not SaveToCache Then + v.File = ChangeFileNameByProvider(f, v) + Else + v.File = f + End If + v.Post.CachedFile = f + v.State = UStates.Downloaded + dCount += 1 + End If + Catch wex As Exception + If Not IsChannel Then ErrorDownloading(f, v.URL) + End Try + If ImgurUrls.Count > 0 Then ImgurUrls.RemoveAt(0) + Loop While ImgurUrls.Count > 0 Else v.State = UStates.Skipped End If diff --git a/SCrawler/API/Twitter/UserData.vb b/SCrawler/API/Twitter/UserData.vb index 83e81dd..d8ce2de 100644 --- a/SCrawler/API/Twitter/UserData.vb +++ b/SCrawler/API/Twitter/UserData.vb @@ -130,18 +130,18 @@ Namespace API.Twitter End If End Try End Sub - Friend Shared Function GetVideoInfo(ByVal URL As String) As UserMedia + Friend Shared Function GetVideoInfo(ByVal URL As String) As IEnumerable(Of UserMedia) Try If URL.Contains("twitter") Then Dim PostID$ = RegexReplace(URL, New RegexStructure("(?<=/)\d+", True, False,,,,, String.Empty)) If Not PostID.IsEmptyString Then - Dim r$ = DirectCast(Settings.Site(Sites.Twitter).Responser.Copy(), Response). + Dim r$ = DirectCast(Settings(Sites.Twitter).Responser.Copy(), Response). GetResponse($"https://api.twitter.com/1.1/statuses/show.json?id={PostID}",, EDP.ReturnValue) If Not r.IsEmptyString Then Using j As EContainer = JsonDocument.Parse(r) If j.ListExists Then Dim u$ = GetVideoNodeURL(j) - If Not u.IsEmptyString Then Return MediaFromData(u, PostID, String.Empty) + If Not u.IsEmptyString Then Return {MediaFromData(u, PostID, String.Empty)} End If End Using End If @@ -224,12 +224,13 @@ Namespace API.Twitter Protected Overrides Sub DownloadContent(ByVal Token As CancellationToken) Try Dim i% + Dim dCount% = 0, dTotal% = 0 ThrowAny(Token) If _ContentNew.Count > 0 Then _ContentNew.RemoveAll(Function(c) c.URL.IsEmptyString) If _ContentNew.Count > 0 Then MyFile.Exists(SFO.Path) - Dim MyDir$ = MyFile.CutPath.Path + Dim MyDir$ = MyFile.CutPath.PathNoSeparator Dim vsf As Boolean = SeparateVideoFolderF Dim f As SFile Dim v As UserMedia @@ -260,6 +261,7 @@ Namespace API.Twitter End Select v.File = ChangeFileNameByProvider(f, v) v.State = UStates.Downloaded + dCount += 1 Catch wex As Exception ErrorDownloading(f, v.URL_BASE) End Try @@ -267,7 +269,13 @@ Namespace API.Twitter v.State = UStates.Skipped End If _ContentNew(i) = v - MainProgress.Perform() + If DownloadTopCount.HasValue AndAlso dCount >= DownloadTopCount.Value Then + MainProgress.Perform(_ContentNew.Count - dTotal) + Exit Sub + Else + dTotal += 1 + MainProgress.Perform() + End If Next End Using End If diff --git a/SCrawler/API/UserDataBind.vb b/SCrawler/API/UserDataBind.vb index 800a440..c41ff26 100644 --- a/SCrawler/API/UserDataBind.vb +++ b/SCrawler/API/UserDataBind.vb @@ -407,7 +407,7 @@ Namespace API Dim f As SFile If MsgBoxE({$"Collection may contain data{vbCr}Do you really want to delete collection and all of it files?", "Collection deleting"}, MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then - f = Collections(0).File.CutPath(2).PathWithSeparator + f = Collections(0).File.CutPath(IIf(DataMerging, 1, 2)).PathWithSeparator Settings.Users.Remove(Me) Collections.ForEach(Sub(c) c.Delete()) Downloader.UserRemove(Me) diff --git a/SCrawler/Content/Icons/InstagramIcon.ico b/SCrawler/Content/Icons/InstagramIcon.ico new file mode 100644 index 0000000..cf77110 Binary files /dev/null and b/SCrawler/Content/Icons/InstagramIcon.ico differ diff --git a/SCrawler/Content/Icons/SettingsIcon.ico b/SCrawler/Content/Icons/SettingsIcon.ico new file mode 100644 index 0000000..a9e67d3 Binary files /dev/null and b/SCrawler/Content/Icons/SettingsIcon.ico differ diff --git a/SCrawler/Content/Pictures/BookmarkBlack_16.png b/SCrawler/Content/Pictures/BookmarkBlack_16.png new file mode 100644 index 0000000..5d58cb4 Binary files /dev/null and b/SCrawler/Content/Pictures/BookmarkBlack_16.png differ diff --git a/SCrawler/Content/Pictures/InstagramPic76.png b/SCrawler/Content/Pictures/InstagramPic76.png new file mode 100644 index 0000000..47ed0f1 Binary files /dev/null and b/SCrawler/Content/Pictures/InstagramPic76.png differ diff --git a/SCrawler/Content/Pictures/SettingsPic_16.bmp b/SCrawler/Content/Pictures/SettingsPic_16.bmp new file mode 100644 index 0000000..ab2e01d Binary files /dev/null and b/SCrawler/Content/Pictures/SettingsPic_16.bmp differ diff --git a/SCrawler/Content/Pictures/TwitterPic400.png b/SCrawler/Content/Pictures/TwitterPic400.png new file mode 100644 index 0000000..24efa51 Binary files /dev/null and b/SCrawler/Content/Pictures/TwitterPic400.png differ diff --git a/SCrawler/Editors/GlobalSettingsForm.Designer.vb b/SCrawler/Editors/GlobalSettingsForm.Designer.vb index 8158981..dbb9444 100644 --- a/SCrawler/Editors/GlobalSettingsForm.Designer.vb +++ b/SCrawler/Editors/GlobalSettingsForm.Designer.vb @@ -23,6 +23,7 @@ Dim ActionButton3 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim ActionButton4 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim ActionButton5 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton6 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim TT_MAIN As System.Windows.Forms.ToolTip Dim TP_FILE_NAME As System.Windows.Forms.TableLayoutPanel Dim TP_FILE_PATTERNS As System.Windows.Forms.TableLayoutPanel @@ -38,6 +39,7 @@ Dim TP_REDDIT As System.Windows.Forms.TableLayoutPanel Dim TAB_DEFS_TWITTER As System.Windows.Forms.TabPage Dim TP_TWITTER As System.Windows.Forms.TableLayoutPanel + Dim TP_INSTAGRAM As System.Windows.Forms.TableLayoutPanel Me.TXT_GLOBAL_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_IMAGE_LARGE = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_IMAGE_SMALL = New PersonalUtilities.Forms.Controls.TextBoxExtended() @@ -45,11 +47,13 @@ Me.TXT_MAX_JOBS_USERS = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_MAX_JOBS_CHANNELS = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.CH_CHECK_VER_START = New System.Windows.Forms.CheckBox() + Me.TXT_IMGUR_CLIENT_ID = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.CH_COPY_CHANNEL_USER_IMAGE = New System.Windows.Forms.CheckBox() Me.CH_DEF_TEMP = New System.Windows.Forms.CheckBox() Me.CH_DOWN_IMAGES = New System.Windows.Forms.CheckBox() Me.CH_DOWN_VIDEOS = New System.Windows.Forms.CheckBox() Me.CH_SEPARATE_VIDEO_FOLDER = New System.Windows.Forms.CheckBox() + Me.CH_CHANNELS_USERS_TEMP = New System.Windows.Forms.CheckBox() Me.OPT_FILE_NAME_REPLACE = New System.Windows.Forms.RadioButton() Me.OPT_FILE_NAME_ADD_DATE = New System.Windows.Forms.RadioButton() Me.CH_FILE_NAME_CHANGE = New System.Windows.Forms.CheckBox() @@ -60,7 +64,6 @@ Me.TXT_CHANNELS_ROWS = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_CHANNELS_COLUMNS = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_CHANNEL_USER_POST_LIMIT = New PersonalUtilities.Forms.Controls.TextBoxExtended() - Me.CH_CHANNELS_USERS_TEMP = New System.Windows.Forms.CheckBox() Me.CH_REDDIT_TEMP = New System.Windows.Forms.CheckBox() Me.CH_REDDIT_DOWN_IMG = New System.Windows.Forms.CheckBox() Me.CH_REDDIT_DOWN_VID = New System.Windows.Forms.CheckBox() @@ -68,7 +71,12 @@ Me.CH_TWITTER_DOWN_IMG = New System.Windows.Forms.CheckBox() Me.CH_TWITTER_DOWN_VID = New System.Windows.Forms.CheckBox() Me.CH_TWITTER_USER_MEDIA = New System.Windows.Forms.CheckBox() + Me.TAB_DEFS_INSTAGRAM = New System.Windows.Forms.TabPage() + Me.CH_INSTA_TEMP = New System.Windows.Forms.CheckBox() + Me.CH_INSTA_DOWN_IMG = New System.Windows.Forms.CheckBox() + Me.CH_INSTA_DOWN_VID = New System.Windows.Forms.CheckBox() Me.CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer() + Me.TXT_REDDIT_SAVED_POSTS_USER = New PersonalUtilities.Forms.Controls.TextBoxExtended() TP_BASIS = New System.Windows.Forms.TableLayoutPanel() TP_IMAGES = New System.Windows.Forms.TableLayoutPanel() TT_MAIN = New System.Windows.Forms.ToolTip(Me.components) @@ -86,6 +94,7 @@ TP_REDDIT = New System.Windows.Forms.TableLayoutPanel() TAB_DEFS_TWITTER = New System.Windows.Forms.TabPage() TP_TWITTER = New System.Windows.Forms.TableLayoutPanel() + TP_INSTAGRAM = New System.Windows.Forms.TableLayoutPanel() TP_BASIS.SuspendLayout() CType(Me.TXT_GLOBAL_PATH, System.ComponentModel.ISupportInitialize).BeginInit() TP_IMAGES.SuspendLayout() @@ -94,6 +103,7 @@ CType(Me.TXT_COLLECTIONS_PATH, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TXT_MAX_JOBS_USERS, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TXT_MAX_JOBS_CHANNELS, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TXT_IMGUR_CLIENT_ID, System.ComponentModel.ISupportInitialize).BeginInit() TP_FILE_NAME.SuspendLayout() TP_FILE_PATTERNS.SuspendLayout() TP_CHANNELS_IMGS.SuspendLayout() @@ -110,8 +120,11 @@ TP_REDDIT.SuspendLayout() TAB_DEFS_TWITTER.SuspendLayout() TP_TWITTER.SuspendLayout() + Me.TAB_DEFS_INSTAGRAM.SuspendLayout() + TP_INSTAGRAM.SuspendLayout() Me.CONTAINER_MAIN.ContentPanel.SuspendLayout() Me.CONTAINER_MAIN.SuspendLayout() + CType(Me.TXT_REDDIT_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'TP_BASIS @@ -125,23 +138,19 @@ TP_BASIS.Controls.Add(Me.TXT_MAX_JOBS_USERS, 0, 3) TP_BASIS.Controls.Add(Me.TXT_MAX_JOBS_CHANNELS, 0, 4) TP_BASIS.Controls.Add(Me.CH_CHECK_VER_START, 0, 5) + TP_BASIS.Controls.Add(Me.TXT_IMGUR_CLIENT_ID, 0, 6) TP_BASIS.Dock = System.Windows.Forms.DockStyle.Fill TP_BASIS.Location = New System.Drawing.Point(3, 3) TP_BASIS.Name = "TP_BASIS" - TP_BASIS.RowCount = 7 + TP_BASIS.RowCount = 8 TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) TP_BASIS.Size = New System.Drawing.Size(570, 352) TP_BASIS.TabIndex = 0 ' @@ -279,6 +288,19 @@ Me.CH_CHECK_VER_START.Text = "Check new version at start" Me.CH_CHECK_VER_START.UseVisualStyleBackColor = True ' + 'TXT_IMGUR_CLIENT_ID + ' + ActionButton6.BackgroundImage = CType(resources.GetObject("ActionButton6.BackgroundImage"), System.Drawing.Image) + ActionButton6.Index = 0 + ActionButton6.Name = "BTT_CLEAR" + Me.TXT_IMGUR_CLIENT_ID.Buttons.Add(ActionButton6) + Me.TXT_IMGUR_CLIENT_ID.CaptionText = "Imgur Client ID" + Me.TXT_IMGUR_CLIENT_ID.Dock = System.Windows.Forms.DockStyle.Fill + Me.TXT_IMGUR_CLIENT_ID.Location = New System.Drawing.Point(4, 175) + Me.TXT_IMGUR_CLIENT_ID.Name = "TXT_IMGUR_CLIENT_ID" + Me.TXT_IMGUR_CLIENT_ID.Size = New System.Drawing.Size(562, 22) + Me.TXT_IMGUR_CLIENT_ID.TabIndex = 6 + ' 'CH_COPY_CHANNEL_USER_IMAGE ' Me.CH_COPY_CHANNEL_USER_IMAGE.AutoSize = True @@ -340,6 +362,18 @@ TT_MAIN.SetToolTip(Me.CH_SEPARATE_VIDEO_FOLDER, resources.GetString("CH_SEPARATE_VIDEO_FOLDER.ToolTip")) Me.CH_SEPARATE_VIDEO_FOLDER.UseVisualStyleBackColor = True ' + 'CH_CHANNELS_USERS_TEMP + ' + Me.CH_CHANNELS_USERS_TEMP.AutoSize = True + Me.CH_CHANNELS_USERS_TEMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_CHANNELS_USERS_TEMP.Location = New System.Drawing.Point(4, 88) + Me.CH_CHANNELS_USERS_TEMP.Name = "CH_CHANNELS_USERS_TEMP" + Me.CH_CHANNELS_USERS_TEMP.Size = New System.Drawing.Size(562, 19) + Me.CH_CHANNELS_USERS_TEMP.TabIndex = 3 + Me.CH_CHANNELS_USERS_TEMP.Text = "Create temporary users" + TT_MAIN.SetToolTip(Me.CH_CHANNELS_USERS_TEMP, "Users added from channels will be created with this parameter") + Me.CH_CHANNELS_USERS_TEMP.UseVisualStyleBackColor = True + ' 'TP_FILE_NAME ' TP_FILE_NAME.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] @@ -527,6 +561,7 @@ TAB_MAIN.Controls.Add(TAB_DEFS_CHANNELS) TAB_MAIN.Controls.Add(TAB_DEFS_REDDIT) TAB_MAIN.Controls.Add(TAB_DEFS_TWITTER) + TAB_MAIN.Controls.Add(Me.TAB_DEFS_INSTAGRAM) TAB_MAIN.Dock = System.Windows.Forms.DockStyle.Fill TAB_MAIN.Location = New System.Drawing.Point(0, 0) TAB_MAIN.Name = "TAB_MAIN" @@ -630,18 +665,6 @@ Me.TXT_CHANNEL_USER_POST_LIMIT.Text = "1" Me.TXT_CHANNEL_USER_POST_LIMIT.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center ' - 'CH_CHANNELS_USERS_TEMP - ' - Me.CH_CHANNELS_USERS_TEMP.AutoSize = True - Me.CH_CHANNELS_USERS_TEMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_CHANNELS_USERS_TEMP.Location = New System.Drawing.Point(4, 88) - Me.CH_CHANNELS_USERS_TEMP.Name = "CH_CHANNELS_USERS_TEMP" - Me.CH_CHANNELS_USERS_TEMP.Size = New System.Drawing.Size(562, 19) - Me.CH_CHANNELS_USERS_TEMP.TabIndex = 3 - Me.CH_CHANNELS_USERS_TEMP.Text = "Create temporary users" - TT_MAIN.SetToolTip(Me.CH_CHANNELS_USERS_TEMP, "Users added from channels will be created with this parameter") - Me.CH_CHANNELS_USERS_TEMP.UseVisualStyleBackColor = True - ' 'TAB_DEFS_REDDIT ' TAB_DEFS_REDDIT.Controls.Add(TP_REDDIT) @@ -657,18 +680,19 @@ TP_REDDIT.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] TP_REDDIT.ColumnCount = 1 TP_REDDIT.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_REDDIT.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) TP_REDDIT.Controls.Add(Me.CH_REDDIT_TEMP, 0, 0) TP_REDDIT.Controls.Add(Me.CH_REDDIT_DOWN_IMG, 0, 1) TP_REDDIT.Controls.Add(Me.CH_REDDIT_DOWN_VID, 0, 2) + TP_REDDIT.Controls.Add(Me.TXT_REDDIT_SAVED_POSTS_USER, 0, 3) TP_REDDIT.Dock = System.Windows.Forms.DockStyle.Fill TP_REDDIT.Location = New System.Drawing.Point(3, 3) TP_REDDIT.Name = "TP_REDDIT" - TP_REDDIT.RowCount = 4 + TP_REDDIT.RowCount = 5 TP_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) - TP_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + TP_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + TP_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) TP_REDDIT.Size = New System.Drawing.Size(570, 352) TP_REDDIT.TabIndex = 0 ' @@ -787,6 +811,72 @@ Me.CH_TWITTER_USER_MEDIA.Text = "Get user media only" Me.CH_TWITTER_USER_MEDIA.UseVisualStyleBackColor = True ' + 'TAB_DEFS_INSTAGRAM + ' + Me.TAB_DEFS_INSTAGRAM.BackColor = System.Drawing.SystemColors.Control + Me.TAB_DEFS_INSTAGRAM.Controls.Add(TP_INSTAGRAM) + Me.TAB_DEFS_INSTAGRAM.Location = New System.Drawing.Point(4, 22) + Me.TAB_DEFS_INSTAGRAM.Name = "TAB_DEFS_INSTAGRAM" + Me.TAB_DEFS_INSTAGRAM.Size = New System.Drawing.Size(576, 358) + Me.TAB_DEFS_INSTAGRAM.TabIndex = 5 + Me.TAB_DEFS_INSTAGRAM.Text = "Instagram" + ' + 'TP_INSTAGRAM + ' + TP_INSTAGRAM.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] + TP_INSTAGRAM.ColumnCount = 1 + TP_INSTAGRAM.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + TP_INSTAGRAM.Controls.Add(Me.CH_INSTA_TEMP, 0, 0) + TP_INSTAGRAM.Controls.Add(Me.CH_INSTA_DOWN_IMG, 0, 1) + TP_INSTAGRAM.Controls.Add(Me.CH_INSTA_DOWN_VID, 0, 2) + TP_INSTAGRAM.Dock = System.Windows.Forms.DockStyle.Fill + TP_INSTAGRAM.Location = New System.Drawing.Point(0, 0) + TP_INSTAGRAM.Name = "TP_INSTAGRAM" + TP_INSTAGRAM.RowCount = 4 + TP_INSTAGRAM.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + TP_INSTAGRAM.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + TP_INSTAGRAM.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + TP_INSTAGRAM.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + TP_INSTAGRAM.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + TP_INSTAGRAM.Size = New System.Drawing.Size(576, 358) + TP_INSTAGRAM.TabIndex = 0 + ' + 'CH_INSTA_TEMP + ' + Me.CH_INSTA_TEMP.AutoSize = True + Me.CH_INSTA_TEMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_INSTA_TEMP.Location = New System.Drawing.Point(4, 4) + Me.CH_INSTA_TEMP.Name = "CH_INSTA_TEMP" + Me.CH_INSTA_TEMP.Size = New System.Drawing.Size(568, 19) + Me.CH_INSTA_TEMP.TabIndex = 0 + Me.CH_INSTA_TEMP.Text = "Temporary" + Me.CH_INSTA_TEMP.ThreeState = True + Me.CH_INSTA_TEMP.UseVisualStyleBackColor = True + ' + 'CH_INSTA_DOWN_IMG + ' + Me.CH_INSTA_DOWN_IMG.AutoSize = True + Me.CH_INSTA_DOWN_IMG.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_INSTA_DOWN_IMG.Location = New System.Drawing.Point(4, 30) + Me.CH_INSTA_DOWN_IMG.Name = "CH_INSTA_DOWN_IMG" + Me.CH_INSTA_DOWN_IMG.Size = New System.Drawing.Size(568, 19) + Me.CH_INSTA_DOWN_IMG.TabIndex = 1 + Me.CH_INSTA_DOWN_IMG.Text = "Download images" + Me.CH_INSTA_DOWN_IMG.ThreeState = True + Me.CH_INSTA_DOWN_IMG.UseVisualStyleBackColor = True + ' + 'CH_INSTA_DOWN_VID + ' + Me.CH_INSTA_DOWN_VID.AutoSize = True + Me.CH_INSTA_DOWN_VID.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_INSTA_DOWN_VID.Location = New System.Drawing.Point(4, 56) + Me.CH_INSTA_DOWN_VID.Name = "CH_INSTA_DOWN_VID" + Me.CH_INSTA_DOWN_VID.Size = New System.Drawing.Size(568, 19) + Me.CH_INSTA_DOWN_VID.TabIndex = 2 + Me.CH_INSTA_DOWN_VID.Text = "Download videos" + Me.CH_INSTA_DOWN_VID.ThreeState = True + Me.CH_INSTA_DOWN_VID.UseVisualStyleBackColor = True + ' 'CONTAINER_MAIN ' ' @@ -803,6 +893,15 @@ Me.CONTAINER_MAIN.TabIndex = 0 Me.CONTAINER_MAIN.TopToolStripPanelVisible = False ' + 'TXT_REDDIT_SAVED_POSTS_USER + ' + Me.TXT_REDDIT_SAVED_POSTS_USER.CaptionText = "Saved posts user" + Me.TXT_REDDIT_SAVED_POSTS_USER.Dock = System.Windows.Forms.DockStyle.Fill + Me.TXT_REDDIT_SAVED_POSTS_USER.Location = New System.Drawing.Point(4, 82) + Me.TXT_REDDIT_SAVED_POSTS_USER.Name = "TXT_REDDIT_SAVED_POSTS_USER" + Me.TXT_REDDIT_SAVED_POSTS_USER.Size = New System.Drawing.Size(562, 22) + Me.TXT_REDDIT_SAVED_POSTS_USER.TabIndex = 3 + ' 'GlobalSettingsForm ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -810,13 +909,13 @@ Me.ClientSize = New System.Drawing.Size(584, 384) Me.Controls.Add(Me.CONTAINER_MAIN) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.KeyPreview = True Me.MaximizeBox = False Me.MaximumSize = New System.Drawing.Size(600, 423) Me.MinimizeBox = False Me.MinimumSize = New System.Drawing.Size(600, 423) Me.Name = "GlobalSettingsForm" - Me.ShowIcon = False Me.ShowInTaskbar = False Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide Me.Text = "Settings" @@ -829,6 +928,7 @@ CType(Me.TXT_COLLECTIONS_PATH, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TXT_MAX_JOBS_USERS, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TXT_MAX_JOBS_CHANNELS, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TXT_IMGUR_CLIENT_ID, System.ComponentModel.ISupportInitialize).EndInit() TP_FILE_NAME.ResumeLayout(False) TP_FILE_NAME.PerformLayout() TP_FILE_PATTERNS.ResumeLayout(False) @@ -851,9 +951,13 @@ TAB_DEFS_TWITTER.ResumeLayout(False) TP_TWITTER.ResumeLayout(False) TP_TWITTER.PerformLayout() + Me.TAB_DEFS_INSTAGRAM.ResumeLayout(False) + TP_INSTAGRAM.ResumeLayout(False) + TP_INSTAGRAM.PerformLayout() Me.CONTAINER_MAIN.ContentPanel.ResumeLayout(False) Me.CONTAINER_MAIN.ResumeLayout(False) Me.CONTAINER_MAIN.PerformLayout() + CType(Me.TXT_REDDIT_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub @@ -889,5 +993,11 @@ Private WithEvents CH_REDDIT_DOWN_IMG As CheckBox Private WithEvents CH_REDDIT_DOWN_VID As CheckBox Private WithEvents CH_CHANNELS_USERS_TEMP As CheckBox + Private WithEvents TAB_DEFS_INSTAGRAM As TabPage + Private WithEvents CH_INSTA_TEMP As CheckBox + Private WithEvents CH_INSTA_DOWN_IMG As CheckBox + Private WithEvents CH_INSTA_DOWN_VID As CheckBox + Private WithEvents TXT_IMGUR_CLIENT_ID As PersonalUtilities.Forms.Controls.TextBoxExtended + Private WithEvents TXT_REDDIT_SAVED_POSTS_USER As PersonalUtilities.Forms.Controls.TextBoxExtended End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/GlobalSettingsForm.resx b/SCrawler/Editors/GlobalSettingsForm.resx index b3dc4bd..d884b96 100644 --- a/SCrawler/Editors/GlobalSettingsForm.resx +++ b/SCrawler/Editors/GlobalSettingsForm.resx @@ -181,6 +181,14 @@ HhQDmFjYeHVKFp7WX/Xuv9Kq9/+Vd/z7r7rv/3+l7f//y676DEwDN/9L+BVvYkKLCTgDhNkkVUyVlr74 qbbz73/VOTc/qsy89kWx+9h7qbQpJwS1bbOAscGGrB6EUTggLOqf16C55ft/HlnNAFZOXgVWdi4FRgYG VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go + tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX + AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC @@ -236,4 +244,2526 @@ If checked, videos will be stored in separate folder; otherwise, videos will be False + + False + + + + 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 + AAAACGdnZwBnZngAAAAAAAAAAAAAAAAAAAAAB3d3d3d3d4dwAAAAAAAAAAAAAAAAAAAAB3yGR2V2jIeA + AAAAAAAAAAAAAAAACIAAh+d4d36HeHeAAAAAAAAAAAAAAAAAh3eHeHjnjnh4fnYAh4AAAAAAAAAAAAAI + d+d+h4iIyId3h3yHZ2cAAAAAAAAAAAAIaIiIeGd4iIeOh4dniHdwAAAAAAAAAAAIh4eIiIyOiOiIiIiI + iIZ4AAAAAAAAAAAI6IjojoiIiIiHjojojoiHAAAAAAAAAAAIiIiIiI6IiIiIiIiIiIiIAAAAAAAAAAAH + iIiIiIiIiIiIiIiIiIiAAAAAAAAAAICIiIiI6IiIiIiIjoiOiGgAAAAAAAAAB4iI//iIj4iAAACI/4j4 + +GcAAAAAAAAAj4iPiP5/+IAAAAAPiPiPiHYAAAAAAAAAiPj4+IiIiAAAAAAAiPj4j4eIgAAAAAAA+I+P + iOiIgAAAAAAA+I+P+IjoyAAAAAAAj/j4+HiOAAAAAAAACIj4+Pj/hoAAAAAACI+PjoiAAAAAAAAAD+/4 + j/+Ph3AAAAAACI+Ph4iAAAAAAAAACPiOiPj4hoAAAAAACI+P6IiAAAAAAAAACI+HiP//h4AAAAAACI+P + eI4AAAAAAAAACI74j4/oiIAAAAAIiPj46IcAAAAAAAAACI+P/4iHgAAAAACIj46IeIcAAAAAAAAACO/4 + +PiIAAAAAACI+PeId4cAAAAAAAAACIj/j45wAAAAAACI+IiI534AAAAAAAAAiO+P/4iAAAAAAACPj4iP + iIUAAAAAAAAAh4//j4dwAAAAAACI+I+Ih+cAAAAAAAAIiP+P/454AAAAAAAPiIj4iHeAAAAAAAAIiP// + j/+H8AAAAAAACIiIiIdwAAAAAACIj4/////4cAAAAAAACP+Pjod3AAAAAAiIj/j4+Pj4gAAAAAAACIj4 + +IiHAAAAD4iI//////+OgAAAAAAA+I+I+IiIh4AIiIiP+Pj4+PiIAAAAAAAAiIj4+PiIiIiIiIj4+P/4 + iPiIAAAAAAAIiI+Ij4+IiIiIiI+Pj4+I4AAAAAAAAAAAiIiIj4j4iIiI+Pj/j/iI8AAAAAAAAAAAiIiP + iI+Pj4+I+P+I+PjoAAAAAAAAAAAACIiIiIiIj4joj4j4+Ph3AAAAAAAAAAAAAA+IiI+IiIh4iPj4+PiG + gAAAAAAAAAAAAAAAiIiPj4iI+PiPiPiHgAAAAAAAAAAAAAAPiIiIiI+IiIiIj4iIgAAAAAAAAAAAAAAP + iIiIiIiPj46IiIjoAAAAAAAAAAAAAAAIiIjojo+IjngAiOiAAAAAAAAAAAAAAAAPh4iI8IiIiIgACAAA + AAAAAAAAAAAAAAAACIiIAHiIiHgAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiIAAAAAAAAAAAAAAAAAAAAAA + AAAAAIhoeAAAAAAAAAAAAAAAAAD///////8AAP//Bw///wAA//4DA///AAD//gAB//8AAP/+AAH//wAA + /5wAAf//AAD/AAADH/8AAP4AAAAP/wAA/gAAAAf/AAD+AAAAA/8AAP4AAAAD/wAA/gAAAAP/AAD+AAAA + B/8AAPQAAAAP/wAA4AAfAA//AADAAH+AD/8AAMAA/8AB/wAAwAH/wAD/AADAA//gAH8AAOAH/+AAfwAA + 4Af/4AB/AADgB//gAH8AAOAP/+AAfwAAgA//4AH/AAAAD//gA/8AAAAP/+AH/wAAAA//wAf/AAAAD//A + B/8AAAAP/4AD/wAAgAf/gAH/AADgB/8AAf8AAOAD/gAB/wAA4AP4AAH/AADAAGAAA/8AAMAAAAAD/wAA + gAAAAH//AADAAAAAf/8AAMAAAAD//wAA4AAAAP//AAD4AAAAf/8AAP8AAAB//wAA/gAAAH//AAD+AAAA + //8AAP4AAMH//wAA/gEA7///AAD/gwD///8AAP//Af///wAA//8D////AAAoAAAAIAAAAEAAAAABAAQA + AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAA + AAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAIAAAAAAAAAA + AAAAAAB4dwh4cAAAAAAAAAAAAAAAeOd4iIgAAAAAAAAAAACICHeIeOh4AAAAAAAAAAAIeHjlaIh4d4eA + AAAAAAAACIfniIh4iIiIeAAAAAAAAAjoiIeI6IiOiIgAAAAAAAAIeIeIiIiHiIiIAAAAAAAIh4h4+IiI + iIiIYAAAAAAAh4iIj4gAAIiIiHAAAAAAAIjoiIgAAAAIiIiIgAAAAACIiIjgAAAACOh4iHcAAAAACIiI + gAAAAAiHaIiHAAAAAIiOiIAAAAAIiIiPhgAAAACIiIcAAAAACIiPiIAAAAAIiIiHAAAAAAiIiI4AAAAA + CI53jgAAAAAIiIh4AAAAAAiIiIcAAAAACIiIhwAAAAAAiIiIgAAAAHiIiIiAAAAAAAiI+GAAAAiIiIiI + 4AAAAACIj4iHAAh4iI+IiIAAAAAAiIiPiIeHiIiPjogAAAAAAIj4iIiIiIj4joAAAAAAAACI6IiPjoiI + iIeAAAAAAAAAD4iIiIeIiIiHcAAAAAAAAAAAiIiIiPiIiHAAAAAAAAAACI+IiIiO+OgAAAAAAAAAAACI + 74iIcACAAAAAAAAAAAAAAIAIjoAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ///////nf///wh///8AP//yAD//4AAH/+AAA//gAAP/4AAD/4AAB/8APAf/AP4B/wH+AP+B/gD/Af4A/ + wP+Af4D/gP+A/4D/gP+A/8B/AH/gfgB/wDgAf8AAAP/AAAf/wAAH/+AAB//8AAf/+AAP//wB3///Yf// + //P///////8oAAAAGAAAADAAAAABAAQAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAA + AICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAIAAgA + AAAAAAAAAACHcIh4AAAAAAAAAAB4h4iHAAAAAAAACHeGaI54hwAAAAAAh4joh4iIiHAAAAAAiOh4iIiI + iIgAAAAAiHj4iIiIiIAAAACHiI+IAAiIhoAAAACI6IgAAAiIiIgAAACIiIgAAACIaIiAAACIiIAAAACI + iPhwAACIiOAAAACIiI7wAAiI6IAAAACIj3AAAAiGiIAAAACIiHAAAAiIiHAAAAiIiIgAAACI+IAAAIiI + iI4AAACIj4eAB4iPiIgAAACI+IiIiIiPiIAAAACIiI+IiIiOgAAAAAAIiIiGiIj3cAAAAAAACIiIiIiI + cAAAAAAA+IiIiICIAAAAAAAAD4AIjgAAAAAAAAAAAAAPiAAAAAAAAP+7/wD/EP8A/wD/APgAPwDwAB8A + 8AAPAPAAHwDAOB8AwPgPAMD8BwDB/AcAwfwHAIH8HwCB/B8AgfgPAMHwDwDAYA8AwAAfAMAAfwDgAH8A + +AB/APAE/wD5j/8A/4//ACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8A + AAAAB3AAAAAAAIgIcIcAAAAAh4iHdwAAAAiIiOiOgAAIiIjoiHh4cACIiAAAiIYAAIjgAAAIhwCIiIAA + AAh4d4iIcAAACOh4AIiAAACIhwAIiIiACIiIgAiIiOh4joxwAACPiIiIAAAAAIiIiOgAAAAAgAiACAAA + AAAACIAAAAD+fwAA8k8AAPAPAADgBwAAgAEAAMPDAADH4wAAB+AAAAfgAADHwwAAgYEAAIABAADwDwAA + 8A8AAPZvAAD+fwAAiVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IArs4c6QAA + AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA + c0BJREFUeF7tvXusdWd934mqtupMpNGMOhNVUzVqq7Rqp+qombQdpRGVmiYTJaVVk1pMIKCGixGOMTdD + wGBTsA2DbUhjjAM2hoAxF98Q2EBiICQEkpoGQUgggUyapJNO07T5o7dEaibNnvV53v3Z+Z6fn3XZ5z2v + 33PevY60tNZea+111l7r+X5/39/leZ4nPGH9W5/A+gTWJ7A+gfUJrE9gfQLrE1ifwPoE1iewPoGTfgKb + 4e83/s1vbx75qX++eejhD28efuTHNx/80Z88stz3gQ9tWO5+8JHu8qZ7Pr5hueUdj7TljnsebOu77v1w + Wx7++Kc3P/kzn9t85Vd+bXPS979eb30C6xM45hMA+P/5v/zXzS//xr9tgL//wx/fLZDBEeC/532bu4fl + zh+5e3Pr2+9rC59f/8P3tIVtiSOJ4s4HPrZhueODP75bv+fHfmLD8lOPfn4lhGO+u/Vr6xM4rycA+H/8 + i//35j/9zu9s/p/f/t0GRiw1SoAFi83C/p/+2Z9v60c++ZkG8g999BNNLTSgD8C/5c13bl77lg+2/Xzn + gz/xc00RcDwJABK4+4GPbO754EcbAbheieC8XuX65fUJ7P8EACoEgPX/0q/8qwZcgf+5L3yhAf6LX/py + W37uF//FkeXRL3xl45Lk4HnsUwVo/QH/Wx7+bAP+7R//hbZ++6d+sa1ZuJf9f8X6jfUJrE/gWE8Aa/6j + j/7S5tHPf6lZdQAPCQhoPifQkwjw5VkAvOvc5jp8FyXQVMCPfblt8/8A/fs+/cttufef/b9tzb77Hvnk + SgDHepPrl9YncIwn8NAnP9tAid9P4O9Tn/nppgBYA/66oAogBxbIgDWgZxuwe4w15KIaAOQCHbBDAnwG + 9A986nNtjTp47yP/bPPov/x3Kwkc412uX1mfwF5PANkP4LD8933oI23dgDsQQAJfMjAe0Fsn8FUQkgOu + BYC/+5Pn1ABgT9nPNu7Abfd/rLkBfH+vH7KevD6BQ3kCSG0srb461vO4abWf/fmvblAALCiAZv0Hq53y + v6cA3Ica4D5SFbiPa+g6QAAA/60f/YVGOMQAXAN8LD/LG+89RwD8pkN5n+vvXJ/AY54AkXnAg9UEOAAU + wLAYLKtrgLfvo8Tv55pYfKw/4Dfw15P/EgPrBH1af7ZVALoIEFTLCDz4aAM6BCDg61oVsO9vWc9fn8CZ + ewIAveXYH/xAs7oGzEijETS756FPNICyZtFyKqFZc9xoOtfb5yE04A/ABPgW6ZjySyvvdgV+JQFjAKYM + /SwBmAl44wN/SABYfUngDe//yIaFtOA+v2M9d30CZ+oJAFQWAmS3vfuhVkADCNmHX/7Zr/zrnWRGDuM7 + GzhrQbMv/1aTyQbSOMbnfaUzEfe0/lX6A2DBPGXxOZbHKwHoAkAAWHiWCnw+SwAQwpl6oevNrk9gyRMQ + +KwpvIEALKQRNB4DNA99/jdbpBygs+1CrryRwLCwLQG0CPog65fcC0SDa8G1if5DBD3fX5cgZX71+VUv + Y/utL4AAbnrvpze33fvRRgIAPoHP55ve+WBzc5b8hvWc9QmciScA2AW224ACq9+WAXyQgQDyHJTAGAmw + H/BLCpABBLA0j/7Fr/xqOx/Jj8tRCaD69WOfUQned25bP0AcABeA/0MMAMUD+CUCrb7r6+98TyOA4wY2 + z0SDWG/ycJ6AwNf6A3xz5Fh/i28AESRgZ5l//7t/sHMHUAEA/cNf/Lc7NQDg2ZdKQBJY4goAVkDfFMBQ + +gtgMwBYZX3P389zjPh7XroB/C6rAikNrqDPz6+644G1f8DhwOPS/aVa8ZT9Ah+L66IKEIACM12BR37p + d3YEAAmwpALQJdAdwLJj4aeebgYAa+pvibXPNB/3bMRfFSABZPkwCoDegagAQX/LPQ8fIQQIgBjAUiVz + 6bag9Zed2Scg6CUB5CwgI9e+A/4nBr9bF2C7xvoDJOUznXNYcAUkASW/n7H6EsLOHRgCgpDA1ANEeWD9 + dUEE7FiKT8vO/bEt0HMtEaQrYIUgREBmA+kP6BP4bN/89vsbERADsCLwzDaA9cYP8wn0fH2CckhsgN/K + belpV4DvZwpxAA9gAZDpPgB4gG5cQCWQ64wJQAAAfOxNkP5rKcBtj7/s7VeDerXTT35O6Z/7My7AfkgQ + AmjjBQyAJ/hXSUACIEi4pgIPE0Nn9len1cdqG/giwm6dfQW+lXet621RAebQuRbE0oKG4QpkVsD4gGQA + 8FkggV5tgHl5FEf1/9PXT0uepFBBr5VPBVA7EZkKZPyABL9qQDJQCZwkAaiqauOyolIydM37IktyZhvj + euOP7xOgsbCoALD6Sn4IoC2D5WfZgb6ogCSDVAGogd11f+MPNp/+/FC+OwT/VAKuJYEkhlbnP1j5+jQM + /rXCo239fw3iGQeYk/oJfu61ugF+NuuhAhDwVQXc+K4/dAPO9y0yyAkE+OZ3PbD5vufd2AYv4R6tsGwD + l6CEhrXdlhm5CBJiOUkSOt/fsn7/FD8BauppaM3XH6y5Fl/gA27Bv3MBtPrbnnecU0mgBQS3BUKQwFd/ + 6/eaCtAdSMufMQJjAnbDpdHn49P/t/GrNnK9xM9PyZ++vvtTBagAdkOGdeIABgaJA8zFMOaag+4T2RSe + +fW339/cD+6DYy0tuR3CDGJw2/uDNCABApa837n/tx4/4CeA9aeRAHhGutHqp+SnwVXrf+TzdgQe95kW + VJJXVwAlUF0CKwMBNqlD6+8BvJIWMoCk2ve3KkTgp9VPy9+T+Gnp0/K7XYODFgMZBwBouAIEBdm2QpAA + IPuwvnznOM2K79GlGNL8/d8/pwIkJZ6D7lrrobiNSwB0iYA12QqVAGue2XHuZf3OATwBpCay/23v/8C5 + qrqU9+Hfs7/14hvWdrFlG0tpP3yDcuzXFeA76Qp86ld/b1cAlKB3wA2sJz3vdhJ3IATUScYpuJ7yP/v3 + 1+CdSiAB7331SCCPpULg/0E6Wlo7BNnJiXun5JnFfVQq7tt8AD/BUAiTPxSAJdYcUwH4LLhHSADAO8Yh + 22+44z07EqA46bV33be6BPu+jEM5HwIAYEfAv5X2GdxLAnBsPfveSwCOyMNngY8FZltZixVzgI0awLJT + D2sH56SR813AwIJlNABWrX4N8PU+qwjq2oFBUgXUGEF2CxbsAp9jgB8ysAPUVCajti+ei8ObAf5//R+P + gp/jvCeJwGHQ+I0QpiTgGrcB63/T2x9uBHDDm9/dPq8BwkNB9sLf6Yi6OyseJb69XL8qoAf+VAZ2q01A + peUS/IK9Dbv13ofaonXnu37HugI+Z7GPljyLe3qyv/r53ldvbfWfg4LwW5o0d4iwbQentPqAkGIhBxBF + LTiceI1j9MAPWQBOSY7fyf/ku4LdWE2PBHhmgJ+BTSsJAHxIQCJY2udiYRNaTzvLTwBrQwPbSfltfb/+ + vIDfWf3tcc9P+Z/98B15x3H2tNqQiiPxCnjWKgyr76rctfFXq55VfAn8lPhLrH5W/UkA7uNaZCzs6ZjW + Hqv/9k98tVl/o/EQgaMJQwSOXMR1aluB2Ch/5tr8ZX8LngFWXwIQ+L215JRzG+AWQAjGA5IEIIyz3G7X + ez+hJ4ACoBFSfvsIFX5b+S/wdxZ/GwMQ+IJdq5/j8OUwXFhRGzHjB7zitbdubrn19mbpBb2gliyUujlY + Z/rkS6R9T8onoFPy1+1KBqqQNvfAtgjJAUJNy6EGBL5EgCpogbotIZi5IJ7A6+N6BjW1/LyLtPAp+9kv + GdT9O4UyABsSMBhIPAA3oJIAsQEyPifUjNbLnOUngNVpBFB8fwGa4+jVAGAdg6+OxqM0t7jIyTd6oE/A + C0qtd03tcd1q2b3mmNzv7a9gr58zAAn4tLQZpCSmYfBPsLNmX67ZlhQgAQiBNf4+Ef8Ev2AX6GPyP9UA + KoL7w60yOGhQUBKgdkElsAYHzzJqT/DejQM0mS8JxMQaSQQV4BkArC5AjszjkNy9Mfrdl1ZewEsgGfBz + 35Svb0Q/QT8H9t5xXZG0vrtYwGDdIQIBl5ZfQqgkwDlWO7IG9II/pb7bvbXFWz3XABJwYpNd+fJ2ujPS + hVm9SM0CJEAG6ASb03qps/YEkgCM4Gfu3+h+HXKrkoGfPa/2zBNgc4Cv4O+l83rgz4Be/o8q/aeIoDdH + QKbg3OYaDWhbyQ3Ycj5CPmPtHUxUV4DvYPUT/Eb8e9I/CSCBX7erEvDesnbBNCb9FShccmATiIB9Z63d + rvd7Qk/AQGC6ASn7c7sHekfjyUE1s4eeRJAyvlr2auFr/b7FRSn9pwJ9Y9H9MfD3gO8+o/EZmBRw3AMK + SSIgtuGUYlmmi/wH+Fhosxu4Xub6E/w9oKcCMUMwdp6uQJYKO6JRG8NwGNcQ8DueoSMbrcOZnRCgzuJl + doHAkP6ZAZAExqy+YwKY/ls6Kk8t3ql99TNWMAb+uZReHu/5+LmvzhbUIwGJQAA63LlEYEqT8RIJeBKQ + 45jAx+IDfiP+VfpXq1/dkCklIDlAAlZMqkwc2NQBWx2o1VGaIYB1SLOziN4TuGfcABpayn2l/Bz4UwEk + 8KcG4wTYFexV6udntwXzWEBP338ff3/K+mdGIreTBKzW8zpaXoB/xQ/c0jrzQATcm8Cv4K9WfcrKTxGA + x7g/ScD7MX15+4e/2AKUObORk51AAuschycAqLN2CdyAlkoayoIr4P2sxFcFpLSfs/gCvtc1l2MCvFbf + Kf0FdpX9+0p9iaFaelOQrNPPF/S5P4kgwZhlu8YIiMJfed1bmwrguin7x4J+S/3+SgT+/7yPJAF7UjpS + cyUAPhMbWFXAWUPvCdyvgUAAVlWA4E4iSFegZ/UT8HOgT0tf8/0W+owBfV+LX1ONlRAsvpEQ/Cwp9PLy + lukKyKwbaBmDbbdly6Fxt7K6LyW+ll8QL7H2eW79Hr+juQLbMRTZlgCc1xDAY/kd1ISg4Ak0qfUSZ+0J + 0HgIBFaL72cH3pyz9jXol1K/5vMT8L36/F46L9XAlH/f8+2rpU9A947l8bHtsQBegjEDiGPg3xfsSThs + J3nQ/dr7subAugPkv4AH9BQF/ZO3vnvzytffvHn+a27aXP9Db14J4KyB9yTul4h0ugEZ1Qe4Y+m9GsFP + i94Df8/Kp7QX4Cn/q6Xfx/JXuW9Uv/r+Wnv2u4xZ/txfz69ugYogpXnN709Z/LFjdT+gTzdAEuC9Maxb + m0ptCEaSpQDwL3n9P22Af9GrX7e58pU3bC6/+pq2rARwEmg6g9cwEEgcoFp5GpHugRH/PCf9+Lrd+zxW + xTdl3euxpYG+JIvMl6df3wN6DfplPYDHMhOQoK7HJYEq97XcS6x/79wkF7YBvefxmd/o4CpkJyCBG3/w + 9iOAf8ZVL9605YrntfVdd9+zKoAziN/zvmWHoaKROty2KkDwp7XPKH8vYq9Vn/LxVQO1OKhK++OAn+9k + DYP/K0kgt3v19b19mZNfErDr5fCX+Pg1qNdTFj3iSKXBb8b6UwVI70T6Blz3ups2T79yC3hAv12e8uwr + Ns99/gtbn5DzbkzrBc7mE6BB1Vz+1GCbEEIP/HOgr+m8dAvSsu8j9fN7rYZhO3OwefA2pNmwj2um3B8j + hLT4dbtK+LnP+wT3euSQZFCDflp97kE3gLVlwVh+shAQAOMCIPcBPYBP8PP56ldct4L/bEL3/O+aocGY + 1AKLYRS/Z/nHfP4e6Me66FbAJ9CPY+0fA367HQ+Nnw5Id9zzYOuByLBn/D5+A9YdkPSsPCAbs/5jQb+x + aL4KYKnMr8G9lP4p8/M8gZ/kwDPR+rdpzYaF3pjPfME1O/ADehfI4E1vuWMlgPOH0tm8AhFhLKQAscBH + BVCVgJV5veq9no/fG4V3TOov9e8zXcc292JFnlOVt046A/CRv698w11tRmPUgN/NfHxVA1ruqch9TymM + 5einJHtP8uvjp5VPEkifPxUA2y3lN/x2BgltIwa/9R2bl1w3WP/Bz+9ZfwiAviBns/Wud/2YJ0AjsIcf + OV+2yUH3HhXAxxpyDuCoHXIcJXcswp++fI3yp0Wfsu5L5X4W5xjIkzCQ/jnKEADA+rOmBJahsq6+8U2N + DBzph+dUrb3AT0JIokggp+XvWe99LX9eI9OHPRJIgsiAoPJfv5815HfFy244YvFTAazy/wyTSAvcDSAm + ymttN2s/5/46ASelnzQeatRr0E8XICP5Y4Nv1h56tXhnDPxLgV/BnnX6btt/AcAreanEA/RYQIGAL4y7 + wzUrsBP0VQEIzhoI3Bfk1drXaL6yv0b162fVQCUCnilE2OYy3A4SSvBP+V+lP59X+X9GCICXTaqOkWft + dw6oWeo+jrPftaTgZyQfjY0aAMBgkKxG+2sqryfnx/x691dZf1zgm8evZbvGLRx2DKlvLT4N/8U3vu3c + 6DgDEUAAkAHf6bkAqQBqpP+4Pn368mOEYe6++vq9FF/6/UkEyv/7PvSRFvyDBPjNLfi3lf+6AKz/0fc8 + rUX/IfYzAoHDvU1eruAX7A5T9b5P/3LL+UoGCfxKAoAEC4jltEuqEf1e6W4N8NXOOQnyKvmr5d8H+Eka + FfgSQBb0mPpDARDw+u7Lr9l859Ovah1yUAK4AJAAigBgQHgJ8Ar8XnR/H2s/lsqrUf3e5+r/9+R+Rv0l + AZ4HvwuC0/9H/kMAGfAzE7BG/88An1CiS5Qe8NPwedn2KMPfY1iqNlnEMDYdYE8iyNFptPyAH7AIfqX+ + GNDTukMQyvsp4O8TyOsBPQGffn+vg47f934gAKw/4Gd58vNe2wgAIFAJ9/QXXdukcRLAWKovI+tLrP8S + 0NfIvp+rpe+5AGN+v/+3DV469D8A/G0UoKFDUpX/CX627/yRu1frf1p5APDf9+AH2tBNBvKyW2kSASSg + tXd+veoeoBy4DuB3HDor/QTQVB6/+va9z0vAnwCv/n0lhDHrbz7f47oBEsATn/zyzZOe8uw/JIDb7msK + AGWAGkAJpV+vAkjff8riJznkdn6n7q9yfYm8H/P1VQDEb/yfvNvM/V//prta9N/in/T/Lf5Z5f8pRb+W + AYuNhKOMU6vllFuOKAsRcD7z69n3u1r/NpvvsDjRBsCxtLf6+b3I/hT4l4B+7JwM6AnqSgpzVXveG2QG + AAA4BHDZ057VAI8CwPdnQRFwTsYAevK/gn8M5GPnTUn7MeBXNZDgB/C8d1UAaz9DAjwj3j3yn9/PmtiH + 8j8LgCQCOgGd0ua/3pYBOlQAc861GXy2IKbB8/IFM4NLQgJ2N3XwSdwCh7HOCTtpLL2U3RTwx/z5ffx6 + rfWcAsjzBH8G/mrO3vMlAACO7w/4jQG8clAAzRUY1jyfzAKk9c/tMQXQk/o9az+VyhsjgZ5vn6D3uBOm + +M4t5trl/odJQYh3YP17kX8IAXW5Iu0UPgHSc1/9j/9fA3Tz/wefncV4gOWuHKtEABkoCx2EEuKgEeWk + k2NSf65oZyylN6UCKuAtxElLXyV9fs5ed1NEwDFJgCg4gHdQDoCPAgD8+MpjRTzp6/dA3SOFau0TxJnb + 74G+SvwEu9uCPcGvApAAiBHR1TdLf6v8VwWgjJ5zzY1tePVT2PwP+5ZoME4UCcD10QE/SwbCVATsoyHk + mHMZ5KOxGC/IIF4t110i85dafEFfB+Loyfxq8ac64tTuulpsvwO4TQc6SQZryoEhRINrAj0BlxZ7TAn0 + fP8xYHvtpQG9TO+lhU/p39vPfRv9t/MP1r9X+msfgFX+n1Keca44iGA3g87A7jC8KoDGznHW7JcIaAiQ + gETAccHPvhrB39faT4F/TN73rL1qocr7tO69vvmCNo8lWaQvb1dYIv9sQww5z+CcvE/LLTFUa95zBfKc + BD7bY/K+5vUT5NXnrwTA50Z6g8pj8E98f4KdV157SyMAXAAW+vsTD2AMgJfefFsbDOSUQuBwb4sXqfWH + CJx9p4E/FpSBaoAGB3AI6PHyKQKxw4tBwgr+HFhzrjtuptl6Ur63r5enr9H9mtJLIGeferfT8vfAmyCV + CByO22PK5X3z+SnT+W4dgMPjgrwXzOv58RnI2xf0eb7DuhMwJviLqwPQv//aN+0Az0AgDPnlvAC4C3zv + cNF2Cn85aTsLULT+u0h9IQGtscDge+SAKYKhAdDo8fkd7acOvllH1x3z7feV/L0Ifi3d1fLP9brT4qfl + z30ZDBR0VcZXn9qKuykFkLX3CeYK4p4iSNlf/fsxS59EkL59z9rXfbYX3pPzFeIGAHYWh/ymEtTBQCkc + u/3jv7AOAnqaOADrzwsk+GdHHjviKP8biJMItsHBlNnNHRhy3Ep/LXQFeC3q6QXxKvh7Mr/uS0XQS/Fl + cK+3naRg48612wI913XfGGDnFED13fP8XsBPknA9F8mv1l4ffwng8xziOrQX/i/tB2Vo4Be3JwEP6B/4 + 8m+1Noah4TOkUPuHnCZMHNS98GIe/Zf/rlluAFx74R0ZVHMbD9jFBYZorpa3Wrwa2OvN0XfcPP6US5DS + PYHek/ppydOPd38FbAK9kkPv8xjgq6XvnZcBvurTjwF+KpKfYE/L7zRhUyRgqrd3Ds9E8LMG4CwPff43 + 2xrXEkKQCBwZeHUFTgHN8PKcMw6rCwHU4pzJQTcGQhDYFXhz0n5M4k8F9Srw67lzIE/AC+aeO9AjA10A + j81Z86njWnOBPdb3vudGjEn9JTI/g5G97Wrlx0gB0vCYKsC6DwAP+CkVF/TskxisEl1dgVNAAID/Y7/+ + 203KpfUfK8/N6H32E1DWZ+AuFcBxLX3N12cUPwN+SQQV5L3PYzGABLeAHwOyBLIPEfR8/JTxaekN+uW6 + gr8SxJik5zwtvcpiKdjzvAS+27gCGhICgTkTMdta/1QAuAQQASpgdQUuIhGY+nMih7Eqve4wW9tOQnYW + qt+tZLCUBMYUQM/nHwvyCfoxS17394A/RwDVP58DZ/rwgjqVQII5j/eum9a+l8PvBfcyyDcl6avVT9Bb + 88Gaa5j6VQU4PoSugL6/rkAjgW0cgG3IARLA7byIMDjMf61Ua9Z/CODp+8+Nqdcsu+Af3IYE+tLI/VIy + qG5FkkBN0y2J7I8F7paCPc/rfacG/8bkerXcCfixPvdTAb4x//5Ywb1t7X8lCbI6kkGuMyBInxA7hKkE + lP65VgFABrgCkADP5DCReJF+tcE/pLyDcqQVZ7+LwPbzksq9pSAX1GnNe9I/A3puV9BPkcBUkG9MKfRc + mpy8JIcAzwFN+B7R8bF0XQXzmK8/RgZj/nta+X3BPyb10+pr+d2nApAQ+L1G+40JqAKw9sYCVAESgSNK + XSQoHOa/lQCcnLN2yEEJJODHto/j62cwr7fdk/ZZrTfm5/eAPCb3e+f6W9pAn4MqYogrB/qkpNdRfhnw + k8V9uaZDEEVRfI+4SqorSKGnEqYkvaDu1eOn1FcFcF4P/HOy367arhPkXk/A57F0BYgH8BvtHp4qIOMB + Al+XQFdgjQc8TlwEE/MSAFKz/tv0XoJ5KfjnLP0Y2HuFOxXkPdDXmvzMzycxJMA9x30W5aSFt46BoiZA + DKgZ3JN6/row9Jf7GOTDhe6wbtM7jm07yUAKXFtXSxWTbkKV8lOg74HcQN8YCfgdQZvAnvL9E+Q968// + 1UWQBOgRmkFB2ltrd9sYQFUBkAC9T0lJP04wONx/w4shVWM9P2AHDFOg93iu58DvcS16nt8L6lXpP5bT + 1/+eA3xG6vM7/B8CVUh457JvQ3lvgS/4IQDH998pgO15ns+aUui60BcA8DseAGPkQRB2mmnz5sWkIZnb + H/PpJYSau88o/5K8vmBPa59SP338lPlz25JAdQWsCdilArdZgIwFGA9gEJrDRebj9Mvf8vBnd/31IYH0 + 95MMeqD3+BT4BXwCv6bqegpgLpCXxTaCvyqA/GyU3XNVOI7jf/+HP95An8D3M8eQ8VhtXIE2y88g6SGM + nVoYth0V2OO5BuRYfshBxQAROEgoCgFCaP9nuBb3l3EDLXn69qbxUv7neRLAWPS++vRV6ldXYA70af3d + RgVgyR0kJl2BGgc4EhzcBgWJCZwEFNbA4shT5MXQg4vGfb5Sn9hBynyJwRlwxgJ6GcjrFfD0MgDV9+8R + gjI/XQCBDzh3oB9m72k+/UAA7GNxSi9BbpCPBuzApTkpiV2mURPGUNhmQeo7TbZKg8FVkhBSHUAEzU0Y + 3o1qRbCntE9rD/AT8B6rIE8yEOCPieRvr1WVwBIC8BwHivHatAFHiOIZ9jIBWSCEG+BU4pDsPiRAByNG + nIY8cL9uHgYmYaFfAq7FPtc6iHMNZJnS61l+HmpP8k/59VXuz+XvxyL6Ce7spZepvFp+2ztmhaO+fU7c + IfC18DlOYW5LaqkktNbpWjjgh6T4mLqKQW3Z25L7oRed6gBVoCLoEUEP6D3pv9TyVyIA+LlvH+DnuUkC + P/sffq8NF9dczmFcSH47FYJZCwABGCDkPEjgtvs/trnlnodHhw3ndwN23IXb3/neNvU4C12NWeh56EKK + 0Z6IBwHspT8S8ND4aIgp5+3yu8S/r5YfoGr5BS3Xye2xCH4G96orMCX96zEtP/+3Wd4I6qW8V9rXFGgv + 8FjTdDR4Bzqpx/ysT+8z4bn0VAL/XyJolgsXYbBcvBsICiVh9oD/mwG+JIWela8R/V5kX799DPBjx92f + x3NfxgMAeQ4TJwkAdq0+a6y3gIUAsN6QIWBngTjasxqmEwfoEADEwrkN5Pd+dIN766Q0XttagzXLUNgB + C09DoxEuAXz123vyvvbEG4vk9+R8Wnq3e9H8CvospxVojs7DRJ0p9ZvMH2R2Svm8RwEsyOcsoZazWsEE + ZJKCvxsy2JHCVhlwX/d94EO7abXNIHDPuBP+Tv9XVQBjuf9q7aulH4vsz/329P8rIagEajzA+oC3fvQX + GviZPu2N936sgRfLbzdiwEq8gDbK72ZtFgFrzyAjjD5sfEH14FpV4VpyWWogD+Y8XADiAayrRa/yvQK+ + SuK5IN5Y4C5ltEGwGukfUwEZ6OP+ADaWE9ADoLT6SP0q7dPf7oE+wWvJK98RwIA4x/rz/rXUFRhG+DnP + 52WXWrvVtlGFhjoD4gL8Biwdv4PG7P0KzrHo/dz+JeBO374X7Bs7LvjTHXjkl35nN38EvwPgA3jWgBZw + t/4lQ/BwV/swBBN9v7gTHOO7KIPnvu7uppQcfIVnlu6E6sLeh9YaoCAOBtxLf6gNjhfQC+ilhRzzh/ft + iZf+egV7JYpKChkpTxLS6gt+LX+LzG9Tbvrn/v9q/QS81tk0YUb0abSm/Uzr8Zn9NDD+Hw3VxpmWuwbK + VDiSgG5CG2Rj675IBG3kpeH6qoEkgZrT71n5feT+1Lk9qZ+/qxIAn1vJ+UAC/C7iArwPfh8AxboDbs7h + d7TS6AH8laQ4xv4j19leM4OM1frnUPW4CktxcTDn0QixOLyQBFQvgDcm6Y9ThtsD+liQT5IQ/EkKdUBO + Z+dFCSTwvXelswUuzm/AcQDP9wAbBCL4mO3GmW9M6bGP85IE2HZBzroA3FZ9uZ0bMK2nqoDfmIrCTlp8 + 1/tQ1fC7OL8SWC+KPyXxj0MKUwTQA7/nN3fgN/6gPYcf+KH3tBGC8eV55hAASz6X//xf/usml83wl9fn + XMjAKeokAd0ArL5koCJAdawqoENtBgV5YDVol9Kf83okMBbc6/n6mavv+fM9l6ACP4N9EFcW7yCX2Yfc + B0QV+OlDOyKStQAU8Ahgq/pI1zHFF8OeMelFi5sMNQEGOH2cGRDUbxXEprcgBMnAAUPTeqZLIxmYToSk + IQBnHeY3cg7uRg/IvfjElPQfC+gt8fXHgJ/7ATPXArAvveWuzbOvuaW5AQDflCbncx5/uWbbY5ICnyEV + AowsTlBjalEi0A0gDkBAcFUBI9oGFwAg0ODSoveKdsYAn0G7PCdBn5a/l8qrYE9r7/UlogR/Sn7An+6K + DT+HKc/vAnq+D+gBPMNbM9cfy/Nfc1ObIOV8JKHSlmecsyg5cnAFsc/F+EISFcoDEmDtnIucP2fNK/h7 + gK9+/UmCXxADWkGq1a/WPj9PkYtBRggA42XVIeDnf9TgICQAAawZgZHWjLSkcMJ0XoIYUugBeYwMetZ9 + bF8lgp7U18LqmgBg6/UN9mGZtfr2yKMB2RlGdwFLb94d8AN6RrN1em9m9gFk5wP6qe/y+7hP0liqAj4L + OMHZIwIaNSrE8mJJ+zgk0MteVGKokn8MkAJ8CrBpvatFn/t+fTbeFyRCalESMCDomANVAfC8UR4X6t2e + 6etiqfSda3BuTPr3rP6YtO9lAqbAn1H47MRDoM2iHkgg/f2U/DYS/i+qQFdBmY+019IDesa05/Pj9RIl + ggxUQVLZ2HknxgdcG7glEk4fA9wDB3hZogQS1GNWfg74Y4CdA3K19j3CyN8/515wLvIfAshZq/OZWhOQ + bgCZr8frPZ+p/0OjBFC6AhXMPRBXv33s85i8n5L9eQxwV/A3n59A0naAEoNjKfclCyw/JCDwn/WSm9rE + nQD/qc+7tlnWi/GyADnugbECA2NaSRo5z0FVky4BBICCaYVdw3NQCfSIoO5bSgRzVt37nAPrhTjOs0EF + WHCUXY+rC2DBEbUHJ9Xn4GK0lwv+PwGRQSalf5a/9oJ7VTHs49+PEYD18F6rB/4sZBL8NDS+AynYMw+l + AFiYt0+pL/AB/wV/qAv+gcHDrKFH+WhVJQGVgDl1SYAgYSWBOZD3pPUSoM5Z+iXXWHrOXCyCWAD+/50/ + 9uXR4iDBD/Df+MBnWywA0l3wWg7zFOvWMwjXs/61Wm9fK98732g4x7w+95Oyn23TfMp+G1QjsMEaOj8f + JIDVB/xIfQnAmXxP2xvmdztwJmSAhfO3oRYyXcg2NQhMREqWgt+c7oDfGyvmmZP6FaTpx19oEljqCmQw + UFfAOQqyNFgXwGDgqgImWj4+ErJSBVCJID/3tpcQQQJdsKdy0O/HkuOW2Ee/yn5lr/4y5wp+1kp+wO9y + WsGfrwTgEygE4MYGTKdlXAB3zem5+K3M09dTAkst7lk6z0AmJJDBQAclqf0NHJIcN4CA4Gkj/1NzPzQg + Uk1ZhNOT+VP+ewX4UlJw8AvObwU621y/qT7nMNDy2wj4DDlw3wT6XvuWDx6R/M942ZsbAQB+llPzsCdu + RDVw03vPVRhmyrBHArgDkAABwp4SWAruat0vtLWfuq+pQKXfSxVgWXAlARWAHYRwA/btenwW2syJ3CME + AEPaG61a+SxaWQLsOT+/yn4aOuojo/cQAHEAS2a5puAHDIDfarkEP8BP2f/tz3jFmQD/ETUwqCCUAI2b + xp4Zjla6PFTZ4dNSGyAJoASSNJaC/6ydZxv41K/+3i4YaK/D2z/8xaaO6CmYLoA9D9fxAkboAh+UxmPk + WWleVUC18hzPnL3He2vPdc3/yAk0ADqgtlCH0XMsqcXaW+aq5Vf2A34q9zLFp+V/4pNf3sp6T4QlH+eL + 0GmGHDbvJknAgiGeHykxiCJJoNYYLAX4xbT6c+nBXnygpgStAchsAEQA+FEBPEt6ImJoHudXefr/HQ/P + jidp/fXLM0AnKQjyeo7fz9lv2M4hsj3mmv9NDOLGH7y9SVrAzYu0R5/lo1p+SAKySMufEX8IAPC/5Lob + zvTL5vfyHLBsxAiMCYwFBnl2PMdaXyDAssx2KTGcpvOSCGowEGMxpQBaV+SBBNZgYIePIAA7r8xJ/Grx + teiCvPf9sQpC9vN/abQNwC+7oZXjSgCWz/LiadT2/iPSD/iJhPM9wa/0B/xnxe+fMw88I6wYlh7prztQ + OxNxjn0ZdOd6Uf3cd9JWv/rvJ0EevWvqBtjhyGyAcQDdAK0/awiAOACDisw984M7LtCWBPK0+GnFq6sg + 4LP/fNa6G9BiHy/LlN0zX3JDa8Ts0//3/xjwc22ePwkAy/93n/byzXc+/ar2/UvpRaoEzIL4HnyuWECI + FFLkGRIfMIh4EkA8zjXmcvpLAn5T/xcVYGUg4G8jDg9qCcAj/3UBkgAImK5uQCAD+c1DrAHAtORzYK+S + 1M+5TtC7n0ZLnT7AffqLrm1EYJWbAS3+N2DG4gN+rL/grwqAgB/W//Es8X08SQYVQAM3JsCzoZuszxMi + p4HzXMiOMMzY0vz6cQA+9p3z/Z9jPn8tdLLbcfP7P/HVFjPi+STw3XbsQAYZWTsIRas10JYBuSrjq4Tv + AbzuS8ATuEuS4H/xGUDTWC3YAdi8TFNankdjFvxKf76XBKDff6lI/zFi0R2wapB3RXzA58vzMyjIuRDE + hZT9J0kc9VpzLgXHrQmgMlAXAKIU+Eh/5T8kwDBjDDD6eBL3qf5fpJp61j9Bz/EEcW5PAV95iq+WLoD1 + 7fj6yn8CWFn0Y9BQ4Cv9BX4SABb/W//xq5v1Z/+pfuAncHM0bhq7Eh8SAOikBmvJMISg23AhwToVyd9H + ESwBfVY86gagAFggAoiPWoq0+q+644EG/muH8QVZTuA1XBqX0Npq9StQ97H2afV72y3oN5ABgT8aptYf + EkDasw+XxICiJb5p/VMB6P9/5+U3NfCjAi6NtzL9Kxhai2AW764GBSVXMiUWCfEcJYuTDvztQypTRDBH + EvV4EgUKCEIE/Mh7LL6jDb/2rvt2wH/l62/evOjVr9uwPoR2sug3SgBa6SWAn/P5BbokALnwHSU9IMf6 + Y7nppUfQysEw8zxIoYH/wUd3Uf+qAAA91p+FeoBFP/oSOIk6gVbdtpX4+WzZB+hxBRiSCxeKZ36xXIEx + 8C7N/091YuIY7YtiIAiABfAD/Otuu3tzzRuG1PIW+IwwfPnV16wEYPu3mESAToF/zLqnYrARZtlqEov/ + pzXOQYZBAIzIA9AdEntn/YeSYAmABkxjBvzm/vX/D836J3dR2kpvN2sEeHYEdB11uHUcGlwrlovpCswF + C+esf0p+FU9+x3QghgICuOFt59QPwAf0LM+46sVtee7zX7h55BNrv4DWjmgsWQDUI4BKDj0i4AUk6LlO + 7rPqjwZqt13kOzn/NsjFtp+/1p9zauCP8yQBswBYfwmA610Chn3vn2DlW8YDzOrYxwMw8MxQewLnYrgC + U/59z8rPKYcWBNwGlPH5AT5rLP+V196yIa3M8vQrX7x5yrOvaARwz733H2Q7aQ1rN/z0UBFlf+pWa78N + 0gHAMTXgg67grt/xvCr7/UwjpDFi/bHi+Ko01PT99fltwJz/wh88V/iTwb/vvurW5vtDAnxnb/RcIl/A + 5yWYi3XM98S74T3rCqCo2LeP315Tb/t+d+78Jdbfwp9eGpCxAUgd4+pgBF7+ww9trrz+ziPAB/wHaflb + imgAOD3q6GpKcQiLtf/mkJeAXnXguVr8McC7v64hIUAMAeD7I1Pth+C5O99/W/GH7E/r7/cPWf4nd/GO + sXyOJaBr5wSmTAijK9D6FmxHF54D53Gl+xio53z5KvUT8HkvWn7aDeRHe2C0J+JJEMD3vnCw+kNdyWVP + e1az/AT+vvilLx+GgaCaj0on+vi36a2HpeX6h8+k73LsPQjAKr6U/0kIuZ0+fpX4fPbcurbGAGlKOS+D + clqsUq0/khZrzho3APAb+ZcEYHqtP8G/1//wPYfxcicUi1VwPGsAAhm0ocq3AUF6C/LMj6sCxsA4RxJL + A31T4K8KwJmDaBe0pcuuuHbz96+8qVl+ZhJiW6t/y623H0bbANhYAsCeM9XQi86Rcl07mIaztOgCVCUw + BeiM1lcVIBnUNWB3wI5q/R39RvAT0JEAkP/V/8f6A37Wl4iSP++fQX2Afj75cZWVg4g0FTCMJgS5nq8K + WFq0s1TiLyESrtUKyIaUH+0Hi0/hF4CHCL7vVXdunnb1zU0NEPg7qIIfLb0W3lloLKhRNrHmmODUOlcF + QH9rCSCtfQV79fVrRWEqAyaKJOqPBbfqj8bJOXwPggD4bR3yXxdAEqDPvwRwKLn/JezAs0xXQOvvRBqo + ACbqYH2cWEDPSp+PMpjK7dfr0j74PRT5KPkBP2DH///ea364LZABkv9853dY8rxPzTkA2mGhBLiyKdcZ + jXd/WvmeEkgfvp7bYgwh/QV/tfx+z84qzrqTk2VwjtkAq/6U/6wzCIj8N/ePVTs1L+IU3EhmBXgfzqaD + GoBUefamBedUwFxV3pLqv54CWBLdTwLgPgn2ETDG0gN6OnyxvuoN9zbLf9mL39h8f1J/FEqdglfx+N0C + 4DGdZx7dAgk/6xu2iRe3QaAEbC3aqeD2c0p/qwcFfH4nFQbb3J85/Kz593ocT+uf/n/GAFAPWH+XQ47+ + j7UwXAELhBxBlxgBzxewYCWR0Dz7JRJ9zvIvvUYllLnUn6oVEqPNMMUYwT06ffE7tPz8HvbTsezxQ90p + +k8ZmU/gAfDdLKzbQTkkAh+uqqCCONN7CewK+gp0g4qpNtjGMuF/4gI4pHUt++WcVsk1BP9clP+uV/k/ + 3/AAOyRAHICFZ0ovOYDEOyB1+h2XX9/k9JwK2Efiz1n2GskfIxb/JzGq1m4Glae/D/gJ9mH5lfzk+g96 + uC8AZkRfi58AlAiSDCoBCHLLeBPojhPQk/ZJDqk29OslJ9J9V7/xfbtIdMr/FtjZFgMZ/a8KQBWA/Nf6 + H2rxzzwFPOEJPMcHvvxbzcLrO0MAqACA81e+4/K2poR2qQUfC/xN7Z9zAcZUAG2i+vuQ1pU3Dfn+YeHe + n/zCYYanAfxve/8HDtPy2xBSvivrBaPzyadroBtQyaJa+h7gcx/frwpA4kkCogHivzX/cxuFbqnJbfAP + JUCA0CAgvmolAKv/JADWq/8/TgX0FUAFtJTg8JztLIMa4LmhAhg8hTw6x/fJwR8nA9CLJ/TAb7CP9gLB + I+/x94nuX33rg5vn3PiuHfhJ/73k9f/0sMFPE8jgXVphga61V/67riohwVvBn2DvgbxeK+8DsCP7ncyC + xjgm/wG/BJAkkARg+m/1/6e1AARABoD3zxqLCgGQKYBA/9o/+P7mS3tOBoynioTmFMMSV2DM8mMsCBYT + 7PvuZ1+9+danXtUkP+A30v+ca84NIMPyprfccdgEQG7fvvsVmD3g16BgjRNUSV9jBH6/xhryutUVgACU + 8K3jz5DmM/jHucjVNgnmdsQfgF9VAASA/0/DdVkihQ/5HFWAI+cYC2CNJf2mJ1/dYgFtlKFtYLiXPZqq + yBsrFZ7KIPTAz3W4T9oCriIR/r93xZDPH8Cv5IcAAD/BQFJ9LNf/0JsPmwB4cCqAlPk9oEsISQzpKlSX + oKcCpix9jwQ4n6AU0h8QA+xa+tuq/7b+qQqgpwKe8ap3N/ATA4AMDhncS387z1YLT0YAsPM+Xv2Oj7dU + 6t+47IWbl775Q7usQY8AliqDOaKoxysR0N4kAIJ+KMbnvu7ezT++7p2b51z/lkYGpPleevNtTfqzrAQw + EIAR+wrAHuDnVEFP3o9Z98n9RKC3MQLns+v5/xap8OIJUE25AGn91wDgMgqAbJkyy2CgfeZxD5D/xALw + rw0GzhHAlC8/l9brqYW8HlF/yYm2woJSgQgoYHI0nxzZh3202WVP4xI8i4eacrqqgDHA91TAmAU/DgF4 + faO5yDqH+8YSeU0aKOA3+p+WP1OBuBBJAGsAcHljZmIMKjuR2AYDGT6LZ4oKwA2AfKfcAInB+NGY9O+p + gDHJn+C3vdAeICfiFKgUOvfQvff6O9/zmAXwM+DH577whcMlAOv6a76/Wv8jn7fWecxlGAP8nHpo3yvX + NqgDm7defoPUr/4/GYC0/rz8jAOwjRVIAmDfcggc9pmACgvv+HkOnXXzvT/dAmuQAEDjXS1RAGMuQS/4 + NxYQrEqCzygAFCHG4G0/8a9aG2h9/IeRfFkgAdeoABbcgIOe88+6/l7EfxLIBahLrHxNAfYIoRKP9el1 + 4A/jFg3827QfLxzw9+IAlQA457Bhvd+vRwX87H84l7blmUMCrOk9RzowawIEuNa8RwoqAadsO1/5bxBQ + AsBQNCUw9FtgqPMkATr5AH4IAQVw0LP99Cr9arpv9zlAP+oCdIiBRkOUXqmOn+bAIGPXcT8vtE3bjQIY + ZGYqAFwBgLwDfcQAaiyAAGBmARhXYD8IHPbZDBiCheddEhPgXeAGYPntV8HwYjkPoe3mfFTBXH1BKgH+ + H/doRegYAagEVAAHXQVoN9pe1H8sKDhl7RtwgwQAOi+k1fEPUVjyswRkGHjRwSWqf5ifkZ+tBHiIAQBq + Gp3kAQEo9yWBtt52BU4SaASwzQLgCkBIhw3p/X49KUFIAAJ452f/fcsG8C6uf9eP74ZVIxtArGBOAVTr + nyqgkkUlgJ70T6UBAdCuVCkogBvf9ZGdCkg34Oa3vqMFBtm339O4hM6WAOYscT2+A/qIK8Bxoqvm8Im6 + k5qBAFiTpyUQN0UCNDakJvJdAqARtoDUwPZsSwDN508FUDICqQDWFODxGjCWn3eCrw3AIAEW5D/pQN0A + g4H7KgCJoBLCGAn0uvza35/7g6AgAIf41v+vsYCDzgSMKoCFPv6oK7BN4dkZw26k+PJEZanBplILCekg + FNX/pwHxIknl9AgAd8BIP+DX+h8hgm18IBXASgDHJ4CP/+bvn3MDBnCpAq564wdbOhBXwKKgJbJ/DPBT + 351SBC0QuHU3JYDmIm7jAPj+Cf5dZmAoBmLEq+M9lTP+rR4BLMnPZ5ygug8CGTZ2TH4H4wD4qAA+U5VF + hwymXebFVVeAffhx9gGwu699AGiEu8DfiPU3QLgSwPk3VNwAOgjx/HG/8PmPuAHfe83mtfd86si77Ll3 + U8pgqWroEYEEQMbC+f6aQhzcTQKBrHsEgAL41Gd++jAJwJ6A1XfvpeR6wcBe7CAJoBXoDCyMH8/oO4zC + AgFg+QEvZZn0y856cv8PUh/QY/1/4PYfa2TAy20ydFv1dSTyDwkQKNxOBpKlwRKArsD5w+Ewr6AbgK+N + tcfSQgTIf1QAaq33Lseseg0453lJBj1i6FUGch6KcucCBAEA/h4JkApksNuDfKOpAPbx8/PcMZZHAfAi + ACIgfurzrm2ynzHX6Y9NTzICNNRqW22WDQCQ0wGF7xJElAB4yZCDKcAm+etCp6DtPkhiRwBDCTDbB/my + T+BH857SDUAB6KY9cVAAlN22moHt4KLp1lUXb4mbMHdOVQLWKkgAtB/ePwqAmZCU/VkXgAJAhZ7A4zmb + l3Bkl5707/nlFfx+rxIB15WNUQCNAAYF4GgsVGoB0uff+sBussq8BgSAhJMAeKk2rh4BQDQSTnMXmB1o + mxGgJjxVwNl8Uxf/rpH+WHhIgBiMQLvurkdaDIDut5DCUil/UqSgGshUoJN9GgOABIgD1MIgCOCgBgCt + zegxpcATkf0pyVbZHgBbqosbQOS/jbg6KAAIAQKgzv/adz4yqgAAMGoBFqexWQacBMB+F0mA70kGfHcl + gJMhD+MAWFo7B1F1h+/vWIu9OMBobUkohTH539ufBJOugATgMOet+/I2E1DjAJkVQBkc3FiANgkYfa+C + oO1LG3up+cKszEKKEX1vBDCkBAE11h0/Eh+SxlTlnjEAyWKKAAB+m+M9VIAEwP+BAC6/8f07FXAycDjM + q6DCUADGAfhsOhA3gHhN1gMsVQO985Z8t7obGB4JABXgbL8QgEHAXmnwT/7M5w7TDXD657GBQZYAfcxX + I2ec+XqKgYjq81J4STQeXlKvwZgFgAAAMYCGUI7EAAZLT6CRY65zG0Lgu4wKjAsgCRzsyz4BzspAIO/O + d0gAEDcAcu8NEtKT+0tAX8+ZyyKoPHVPkgAIAqYbwGcDg7SfE3g8Z+8S/HDHBGTtWPt27Z0LxMwd11Lw + IgAjC/8Tq9/KSweSQFL2XAgsCxYFGU9jqwRgxRfWHyJzaDCtv3MEQACA3+VgX/YJNE9SgSgASJt3ggsA + CfCMGWsBItBVW+rjLwH50nPafQ3BSrsut0BgpAIFPUFBgn8sbB9snwCmg8YXx1LzIp0ZCHAelwRqRxAH + lsTvZyGAxD5faq/jiAqAlKEKwIbFd41Ac602ItB2LRlICMQfIBHcAIpWIIG1M9DxmYA4wMd+fZhJapDa + tBeeO2vLgokFsG/KMIzFknrZgzng91wA/r+FSqyPgP7ejzbQQwxkliALDAKfD7ZnIDEAHhpE4My/ThNt + 4c2Y9Brr9VVfDMwMgHeWf1v8w1TTvVSipcCkACEA5aaBHietqASQROBAIRIAJMDCNY8PgcP+Zht4IwqC + VAEADfBTE2AmIKPzVeFVgpiU9tvA9JJAocRkqTLtWcBX0GP0nAzlNohhGEyUzkEMk3eQb5kfzkOBCJwr + TiKo6b6p7p4V0Jmv5VgOGjmWK54iAMhEAsDSY4FYk3VgnYupQKy/CoC4wkG+4BP40W2Ytq0bwBqwWxkI + +CGBuVTglFUfqyHoGYle28lKRVPHkIG9UbX4afl1BRoJbBfI4iBLhC0O4qVCBDw8gKX/3UvBzLF5lfo9 + 8qiNghcJyHEZdAEcDjwJQPC7TvDrDqAAXnDrw40AWPBXTwALB3sJFQBtguduIJBAKyTAYCFjQJ4D+JhS + WOoKZDEQbZcYBUbNRSIA4CyCP7dRArgNrNl/sEFjFAFE0CaK2Ebts25Aaz4mzY687AkZ15N/EAAvLQmA + hgb4PWbjc9QawZ9k4GxBgJ4FAsANOFj0nsAPNwbQYjGDD00bgax5rhAA8YDs3zFmvXN/G9SjUxewFPjZ + Bg1QQgCQlAVp+vqoWyy9JJBr97MmOGj8gM/ECA5uDEEVgYMtqAZ8wWMBnamX3n3RhSBgctjbzIFyLrsD + A3QaH/ckCfTcAbIIgB8lsCqA82cAFYDBWMYIMBMAAUDamdrtWfV9gb30fM4zDsA9QQD2HYEAAH8P+D0S + uPOBIUuwdQkgA+oHXnvXfe37BM/P/0mesSugCCzu8cEuYe0l/ls9h+s66IcuQI5Mk9Y/SUAyyNgAcQDA + rwpgvaYCj9/4UAAMESYBGNx92Vt/tCkA1jlG4FKf/ySIol1jMB4Q0P2/8Ls7xWi7qC7AnApoLsI2c2Cg + 0DEGWB9knADwEx8wlccLrhJuiQ84lSfm+/wf/EkJAEWQIwJVBZBKIIOCqIdKAGsq8PwIwFoA3gkEgApA + +kMAEOzYIKFj0f6lFv44ypJ2hDuA9b77gY9sHvnkZ5pL2wX/NkWYAcEjJLAlhBxohO2fevTzh6UIAKXj + xC0N3Mz6guEGmO6jVLinAAxAaX2oX5AAdAdcw/rIUkhAIqC+4PgQOOxvkgq0HFgSlqzpEehkIXNpuyXq + cY4YplSD2SbUALEgOp496zVvb8PTURFI8c9Dn/xDlyD9/yMEENkBA4SUFtc4wqNf+MrhtCmDgjU9uJQM + 5qLBHOfFwdxYFks7zUZAPrgEEgBrSMB1koGjByUB0EgPG8bH//USgL62CgBXi0wAzxb5PZYdOh9QT5HK + mLrgO6YH6axEtSJEBRHQP4DcP+1ZMjgC/iETwGesPHEAKwiziIhAqIHF4z/VM/ZNwAarWii0BPj7vnij + uUkANDb+J8eMCRgDSBJIAsAdQEXgm0ICNFDWnHPGHvupuN0kAAlYmS0BLBkYZM4ILGlTXQXQyTiZem6d + hYb6BZQl7QBFwNRhjFGJKoAMJAIzAC0luM0aWDhU17gTBAkPSgW0GWF42HtUai3xAT2Hl+WwU5Z21lSg + fdSJDYwpANNAKgBePAsv7VQg6ozdhASAG8D7wP+3izapwLGJQnoZIwN2fF+XckmWaEnAsCqQLEhTERBj + IjOEIiB+wVwHyHtIgLQfQCcGIOCzngDLTxtCFTC4DUON870z9jqPf7uAMhXAcRh7yg/kGA3MVKBFHTQU + GoxpHjsxYXWSBLROjkuAkoAEVALMHHP8X3+43+wpgCSAuSyAwOS9OZ4A0hwwoipVeUuMxXHaXK1MzepB + BjchVtDGqhxiHaTBaVdZNpzANzXIwCJMPHpQ8wwgrfXJ5xh5X/mvsshMAGpA2W+WABKoBNBTAroBvGAV + wBoIPB6JVQUAYHXXUAAQQC8GkEFg3isyHH+c8mGm82ZEISwxAOTYvrUEtQ0uaXNVFXBfGW9qU94PRODk + NvRqtSbAKcYEP7MPHxQBADQCbEse9BhTT+4fXAsaEi8E6wAB8P+sQQD4qgD7LHBPVQlYDUbqDwJgMRaw + 1gPsTwIAgjoAAIr8V5HxbhgPAAIYA6/BXQAO2J1ZiMFE2GaqMdYcQxX0xhZY2t72qT/h3F3npaHdOfgs + v81qWJSoU405yzBWn+X5rzk378Xb3v+Bw1KVSLaeb7fk4S9JAxkHgAAgAvuf08CqG2AcoBHEkJLhswFC + g1QSAI2UBUbfHwKH/Q0VgD08IQHeE+8GAsDVGq0D2FZ4osKcXBTLjxLguywoAucchChq1WmvbfUCipMF + SJ24lddVFfib7FlIHQHzWmjxAT5WH/C/6NWva8vBjS/YmwxijqGPvKyZAKKpJgggO3ckAdDY0g0A+JKA + 4xsQB8B9wKowDiHgf+UdH2kzyK7ZgP0ITQVAEBDQ86ztoIWy4hmrAGpbMLUL0A28MVAswTfHf2TNtOOQ + AMRQ3YmlsQGrAqfSg1Pn2CPVtofLyNR2Ah+LD+hds/2mt99zWAaF/Ckvtfb9nosJjOWIK7s7ACWWwEyA + cQAtEA0E0EMCrFMJ6A6YFiRqqwpgDQkc9LDQ+2G/nZ0ugC5YEgBSeawzkEqMakFADwkA9jZe5JCXB2So + Mtbs5zjKbyrT9BiDM2Hd90k9Zh0K7Q/rr8VX8mv5mejmIBUALxSZPdaba44IJmXatneYL8I4gOWnNDLA + biCQ87T+EkGSAaPZWFgkCUAApHCOgYOD/YoEwLvnXdhDk/eAsjI79JgBQQZgOrlo65g1WHrk/7c/4xWb + p7/o2jZvJPtQEBB1y9EPCiDdgNGo/0LQ75M1sN3RVrgnSAlrnxYf0AP+K195QyOAu+4+MAUACmDoJICx + mMAY+/bYPZVAxgHMBFgPYBwgrb8kgPxn0T1gm2guPiqLcQDcgDUYuJzPCACyWI5tD02HBqM9TCkAjgMo + 8u/I/CQAZorifQB6FjMCS+IAx6kSnFIE/C7uQbeGe6vgF/isWQ5ylqGpSSHnwF1dgTHFQOMyEEi0ufYM + pDFWElAFIP8lAdQKkh9Wp6GxoAJokMshcNhnSgA8SxWA3bd5jhJAb0gw6wVoM1jUb33qVW1h0pjvfeEN + zcfmnfiuuZ6KYgrgc0pzLkXYCyzSZpIAmMVKAhDwri+/+pqmAA6SAPTR8iHvE6iZe3k0LqWjgcB0A0zV + 6AIIfPbTbxvJqhrADaCQg0Cgi0Rw2LBe/ushAItnIGaLwVQAmRqu7cCRnpwTgvw/BIAKYPJY4wC4ALyn + 2z9+bkaoVBRL3MZFWajS+awSDO0HIkoFwHyW1erzGQIgLnCQA4s6SMg+/tVcKqdeiwYA0WRJcM8N6JGA + mYAMCMLslQTWlOAyEoAAyABYadkIYJvew7WCnMeUXZK5Iz5h/b/z6Ve1eICTxzp0PC4ftfsOHb9rN+fh + 889lBfwfFqGRsuR3EbRkZqtq/a9+xXWNANh/kDMNG4ibiuzPpQbnGNt0IMClgWFlWFs/7mjDY26AJIAC + YKH3FvKSFwsRvOqOB1p/8WUQONyzKI2VAMwA8O4yTlOLd3oqwFGEeF9MF08WgEAgBNAG5BxUG+90zvrP + tZux43Pfs9K0xSq2gUnUiQG/MRfgIEcKAg45Fvyo/B9h7SXk4GCPFmU4j4ENxJRgKgCzBLoEKgA+EwyU + ACQBiGBNCU6TG+DnXViF6aAwEgAETVq2lxXK92yvPCsJnUqeNWRNCa71BXxvyUCyc+1oNAhdprtTfUJA + jCNBypJ1jwC0/KyZavyLX/ryYRoRpNqSgN4c804dN4CkCnBYMNNQqoDqBmBNJAGsvzMXowJueffHj6iA + NSU4TQAA0+HA7LTDOzNijptmViDfZa9OBBIA5BAG78iS7abqYsaoBP8+IJ+LLfXaa7oYKEyCxSoACpaw + /Fe87FzEPwOAEAA1AgepDZVqS8A9lXaZC+5geVAa1gNAAHxuDWhoTGPBwKwJyEIhipiSAFAAV9/64NpN + eKIV1wyAAUALfMbmBBhThb43SANfP90KJo3JiWOWtK99QD+VruYYBECmAgWAWoQAqgugAnjGVS8+TAIA + dK1H4HZ+v6Uvael5tWyY/6cboALIMQLsmebYgQl+lQAqgOmguW9VAOCnlxcZAeIBB8nkMz9a/98MAMTL + +xEsKrN9SL7XAYe2xP6xWaOWgHzOmMypVe4BMiMAiAJACZABSAIA/AYA2b7+h958OO2GEYJpCLVv9ZxE + W/TyJiK82UHD6cIgAFWA9QDp/yNbeyoAIiAWUFUAfbwhg5UEjj6BJAAtdSOALVgggOweXtNqU0Fij9X2 + NHWNubY2SQJ1GPoyJ4ExDRQhBUuVANL3Z5vl5re+4zDajJODbOJv7mVX4Pck4ZLaAYOBNLYkgBwqTBVQ + g4BNFZR4AAGnVAFmBFgf1OguC9guA4COAqT/z7tgQaFN+ew9AzDpixdgng/o56x+qlLaDkoT8Dt+xNOu + vrn5/Ql+FQAuwEGUAdvNU+wj0+YmCJ3Kuy4BfW00+Iv4Z7wgYgCZUtKnND3IZ9UK60oCZgTowILVz7Qg + SmABLg7mFAjA6HwNANItnMKddAWXgrW6eUu/dyw3shPx713HoCbyXwKo8l/LD/jZvqSrABuIBusJ2Hvg + n/L7GoBnqq56L2GsIWQPQSenNB4A4Hl5Dhqi9E/LLwmYEbA6EFcAErBAiFjAmhY8x2+Z/7cAyPcDAUMA + rJdY2SXq73xJYKnSGAsE0oYINtMZyTgApcoqAMHvGiVwyRYBtUk5B/DnX8/yL3mxlQzGWHyO3XlBgB8V + kMFA89LOCmOKUOvfhnja9iI0NkBAEBKgEpBoryTAGhLg2MGY+ZEfyrMy/2/uXpDx/J2H70Km7Oba11i/ + kx7I51QpBsQhxCGAVgU4yP9nvuCcv5/WHwXAsUuyjeAjV/BDBMfx8+Ze4Bzoj8QZon+Ag1LU0YIsJBH0 + ju82FhQkLZgEgBKgLoCx4y/Jl7vHj0L+8/ztAGQA2GAZZNzrATgX9D2upZ8D8JQCGFOruZ/fCfBVAKQA + 6auQBMA2y1OefcXmlltvvzTbCGDB2u/j8y+J9s6RwZLjWRhkLUJGpx2rbhcHGFRMkgDE5mdVAJVokIBE + oBpgbPg98HJJnYr8x7o6DDjP2lQdz1g3TFIYA98S0O5jBOq53TazYMj6HgnRjhy1CCJoBLAFvOtnXPG8 + Bn4+f+4LX7g02wcvfwr8k6mWY0z3PEceNWBEYzT/rG9KYFDpn8FAwD5GAMY4mOMNV4DF2gCVAFNJXVLI + XvhjUv5LsCpA3AGq/3pjAI7516P79wTraAB54jpLrL8ZAIcsY0wCMgAqAID/9Ctf3IBP9d8jn7iE55dI + BTCW6puTcfvIwCX+Wv6/rEHXN6WRNiu1nV4sC1Yc613rj7QF/BID+3EFsPySgERwiPGA3/g3v72b/CW7 + YEMAdtCyP0YW9TymTfRAubBH3+RwYDP5/O598J1ctrUMnGuAGatPV+U2hdgwDgAdlVgAPT4/Qb+DSPvp + P1uVtY+MmwP+ktqBlHm9uAP3k2WobGdaUBJQEaQCUBFY3876K7/yay1VSD90lUBmBg4tHpDyH6lvTz/e + Rcp/nnNNB48G5RaCtgv8GdLgO5kK5h5tD9aNGCtibf0CQUwyGU4ZxtDkf+U7Lm8jFzM0WQP/EAN47vNf + eHgj//LSH/NyQ97P+etLfcKePBuTbHnNVAGOUJNpQa6RKqACn0buPhQBJEBMgG6pSQISwaHUBwh+rSJg + cQBYnmmOCLSEzOfayVLjUonB71miDIgZ7o1JSpTxAJnhxi978RvbYKNtIJIB5K4Zmoy5Cf7GZS/cfP23 + PG3zJ7/hSZuv/ev/sBEA3yHKf3Bj/usiZnnnFCCXWvy5a/RyyaPBoa1FgOmZqxAWZxvASwJN2m3dARtP + gj4JIeMEpP96JOAssQtd6DN7mr6/KVcsqcE/5b+uVm/4r3xnvgPbyNhn96cr2N3evvfd+dsBSV5w68MN + yID4T3/TZZuv+cvftvnjf+HvbP7EX/yW3cLnP/rnn9j2P+Hr/tZjlj/ytX+p7ftzf/spLQtw8LUg+MhZ + 4jnH5Estfs9qjMUT5kiDBkkDNSBoJyUDgvwv3QCuBQG44Oe60MDZlgggAWICuRAMdDmz6F7Q8ceaDYgU + Yk0lyPNVbfWAnkDWtx7dJ5grqLfE/Zjvlf2+W6o4v+nJVzfQA2CADNDrAhlADixYes5nDWkg+7/xu57X + 1AFjRRL/4d1fqu958e/ihQOYfaL0S1I6Y7JvSg6OEUxNCzpoBQ3VHLV91SsJJBkA/lQIYyRAyvBSLf/k + GQgswG+gj1gQJJnp1t17HgNyx1ofAXXnuN2Mj5BHnle2ecfIfUAswL/tWa9pBTxE8RnR1zXpPTr5kOp1 + 9GHWpn/Zhkw4hxLxxSC5lE80p94b2GGpxZ+z4sdRFvU7zv1OUAc3gPt2+DDlv2QwRgKAXxUgEfRIAMuA + ErjUSEDwC3SepQqQ9+/oS6b+HP0n5fgUgNuxAvrevnxfeW22d9cfrmPdPlb7z3zz9zQ/nrw9C/57XfDr + CeZC4C64evc89Ind59Xqd9gMf29OASyNA9Tz9iWHsfP1TWFzg1ZIVycVtSFl1Vq6A//pd84pHRa2AYNk + MEYCNJZLaVZYlZ5jL2Dt9f15fmZacl8FdAXp7nMAX9An+Me2je73FAGuH2k7pLuRe4J73/3sq9tCsY7L + k57y7La9AvwYciUJoAJwbGagpeeNEctYTGCKiGhEpnSU/zQSSSADUV4HsLNt45cIWLMkCTD0c40LqAaO + 8VhP1Ve0/lT9UeCTY/xr/Z0MNKV/BbMWurvepuqOkIRWfUsQk9/f5us5x3eNVf9r/+D7WwAQy88w4wn8 + HQFc9tSWwz9VD/2s3Izz7/Wi9McBqt+p6yXXn1MayH+yAg5SoTJAFeSglXZfpXFr9fP/pzqo7sBP/szR + 4KBK4KxONkoRFGSn9OfZtcj/ALjm+2+tf476myCeA20e7xHG6PEgB0GvEmijCg/+OvIfBWDarlp+y3Yh + goMaueekyYU+32NxgOPEApaAfco9mCKejAfgJzqNWA5coUvAfTgajWqAz6kMVAWogSl3gJjAWRtMhNoH + yVDpj4rimdnzk22tfx3KKyX6DqRa+rI+QhQT5yRJ1Gv6GVVKqg6/X+uv/E8FAAH8o+95WivouaRLd08a + 8PV6rWvwIL16Kby5+MBUkK+nAnrnz1n+PF7jAXw2p11JIAlA4AP43E63ABJwdGEs/5gaePQLXzn1cpOh + rJH+lvc6a49BPiP/dZhurb9gTOtc9+VnyWLsHNyPsWsnEfAuuVcKfJD/FPgg/3vWn9p9CGCV/yfAEASF + ej7/mJRnfz1/DNxTJDJl7cfKTmkwgJ3BHYgHcA1z2LWyTRJwNNpcA34+GxMwU0CNBKTI2IIQgWtjBKiB + Rz75mVNLAk6d1t7PYI3rs6IjmOlAB1nxXSaAl4C2nj9FEkuOcT+M1Yf8hwCQ/8wulAQA8FMJrPL/BAiA + Bq9cHJP9U1H+Xn3A+cYDai46icT6AEjAajaVgOPY5/mVAAA9fz1FwD7kM8+kTUI6ESCkp+EJPP4TuwTg + R8UIfgjSIdcBIPt5Fmwn+Nu73abfBCrPExLgs+seiPNYfie3VWpT11Hdkfun+Af5z/aTX3jjDvD6/ZIA + n+/70DrY64k0IFTAlP8+J9+XKoAkkiUuRO+e2KdfSwO3tJlgIBavRwIOfWZc4Pd//w+tf25nloDBU1QD + EEFVA1YPngYiaJb/81/axXPwpXk2mfM38Gf8JIlbkI6te4D2OlZk5uexY5KA30nCIUiJxSf1x1r5rwIA + +JLAZU97VhvF50Qa/3qRJzyhBgMzmNbLCXs811UJLFUBc1mDseM5p4AkQMMi2GWf9gxusQ3YWXIb0PdI + YE4NpDrANbhYY8gRryCIaXDPYKkZE95LSn87UvlsEoQJZslgCbDHzpnbLyFAWMzai+VX/lPwU/1/5T8E + cLAz91wIwnJG4LFgjS+SxpNddJ3JJ9NHY1Z7ylXoBSF7JHOEmLYdguwvYDDTbq2ogRzY0tiFJOA6CWBM + DRD8y9gA22O1A49nJSH3QLrP7t28H8thJUWHfOP5tDEWB7nv854DeQWwFaRzwK7H6/+p1+FdEf3P3D/R + /5r7TwVw34MfWBXASZIB4+n7omBkwI0ltUEhKVnI0+bCPoeVToD25P5YCrAL9lqLXj57fRo692lQ0AIX + PqMGag83vldJYM4lUA1UIuiRAOWougcXqkLN/0vQUkuO5eddUDXpswD8Sn8nW9EN2hf8Cep9iCAHdOUa + 9buSFkE/5D+Wv3X3LVV/NQ14sRTXSWLu1F0LIAEaGhERWRbATsOCCKwmsyhHUnAUWRrVWAR/LNX4GPD3 + epFlRVkclwQMAqa8NbDkfAOckyok3YAkhClFQLqQIKHxgR4BjPU0PF83AZeDa0AwKBBHd+I36fPzjiQ8 + g588X8FvZiTBXwFaPwv8HuiX7usB3+s6YKfFP9b814g/1t8x+5//mpsuuT4bp4YMaEQAHOAk0O1hlccJ + jGGBaZSm4RoJlAkbpuR8OzbT88xrep0kGv8XDSq7tJoHp4E5Ukxvqqsl4O+5BhABwbcxd0AiIL6CInCd + 3Y9z2/Lj3MdIRnRsYR/bSn7TmPx2Arj2fNPyGw8wTdqkf6Rve6BOMLstGfSOuY91LoI9j6cLWZUE92zx + zzc/5aVtmzH7KPJpoN+O2cdEHi+9+baNU73xXE4NaC61GxH8uAGAfEk5LOeiHrK4Y9K6j3QHTbD3tt03 + RgIAnoZr8It7UCE470BVA9UtmIsLZP2Aw5JPVRMK6koCfgbcY8DnHIFvgQ8AJ4AGsTHX/c7yD8/UdB+k + KoCzo09a4wriqWMV6Pt85roWHiWZsI97R/JT/UcREATApB2NALaz9Fzzhtsb8CVSnoeEeKlh70z/Hhvi + EhKoVn0XSCwdSHZlqaXTSealM/ZgnjutHgBnP+SgG6MaaENlbQelOC4R2NNwNxjpkJJ736d/+UigsCqB + MTIQ8BAKi4OcavUBuMDBPbOrNL9By58SPy2/gcB9wHvS50IGEpPqBeCTAWDATkfsTYsP8AE9z7Q91yHe + oWJaJ3o5ZZSRHXa00juwd3z5ek6SR4J8ybbugA09C16Q8akGzB7QINNlETA1VWjxkGtVQF3b4SiHI3Oe + AkFN422KYWjI7nNNVF/QO5hJAhvJjOQH/LpdEFeeo5Wtsp/9jqtw0sBeej1nfOZ8CIDf4Vh/jtmP1L/5 + 7fc39wdCTOCzzbPiu5Io7tgpg8Hh3g7ugt1OqxI4It9jIIgq65eAvZ5jDjvBnJKW/dYApBpglBgak0SQ + Kc0kg3QLJIGMDWQ/g+yJ2OuBODaGoftRPWxnIM85EwBMKi0lvzEPfexM9/kcEnxu17VA7hGF59Zj9Rpj + x5Mk+A7Pnd9CDYCEdsPbHmozPAt6iRKybPGWYd0jgcNF3Cn85UbelaLVqi+R9WMAz/1TRSpmCHQJVAPK + fNUAFhUSoCHSIGmkfMfv6x5k70IrC7X+EoEk4FoiyEFJeoTA89DaC3xLeqll4HmakTHjouS3yCeftdF+ + S3wTkEkC1WpzbEwhcKxHIFyjXnPqf+T/NN3s9PAcA9wCneOCXbXEO9IFgBx0tQ51opdTCP9ztwSo7G6q + dT6OZc+GvbQARRBnEJJ9zjbENQV0ugUSQc5LWAOZphIFdwW9pFAJowK/jlykJef6/E6eHVkYI/wAP6fx + tsBHxeIzrkU+AldgJ8jdl8cEdO88j/Wulee7beFY7/+4D0ATQHYCGEkAYPu+tPqqgCQBlQLuAKnSUwuI + Q7sxWJxGmzJ8jAB6HU8Eewa0pgggo8v1fwpi9tNgnICUawNEe8TRcO1BZy29M+ikX62bkSqBbUGd2wn0 + WiWZJKRS4f9jEbX4WenYs/rV8hvwNPLuDEuCMgnB7R54kwjyuwnq3rU8nteu255jTEIlABGwj7bDPpVA + b70jgW1AkPeKCqBPxKFh7dT+XuoDKgnQMCvgl1r2el4FfU1jKTcz0AdgnALb4ibOA6hIeQBEgwX4WGB8 + U0ecVRkAqiSox6Q7o7ah10dCac7/dXgz6ywAPv/PKsZ279v03q6yb9t7b+fvR45fIuG6YyCsIK1g731v + 6nqc73HX/A9TspVoeoSwq9fAkm9JAIuvCsigaboDugisDQqeWkAc4o3RmHmJPbAuBX5+1+1cL41Aa/EB + LPdEDp0ZZwhC2YEog4g0YsfRzzLorIDEYksMnDsmj3NKKwfpsHRX0KcvbBzC2Zxrv32JIf19CQWACT4B + VAHK/rqv99l9nC8g63kJVP9f/t/8X/V+koyc3ovnSNdmYwBeX1egxgZ2cYJtfcAaDzhFTIN8M8o+RwJj + x88H9JKDgamM9rMNgCEAClBYIAWkqOlJA5acax0BACZeYJ8IvuM2hCewTdd5rJZX62ZIHGZDcgp3gV/7 + 7Kc7odUXXLo4FYQVnAIz9wPu3nm9c3vXP873UxG09N7wTioJ8L96KsC6gKwPoEhojQecIhKwj/6UZFcN + HMeyL1EANdCVaoDvA8ZnvOrdrRqNyjQmnDjif1PDsC1G4rtaLhoqgMvS6exA5TbHWYwp0OgN3BkLEPg5 + eWsF/pH4w9YV6AHRoFoCMonB/b3z5oDtd+s1elZf6+3/SSLJe/N5sg8pz722YO5QF6HFH1ubDbA+wCKh + 0zBWwymC4cW9FVjdAp30zU8a+Fp63Y5Ma6VP6v6sQeC7gPTyG9/fiIBx6SSD6penQmh9GYIcanxgd+62 + j0QC3lz/buyCbX1EDZhak2CQL61+AjFB1QN3Hu+dK0HlNb0O69zmedb/YXDOY/mdShi9+9N9af03BiJw + 9GoDgVkPkDUCqQDWeMDFxXr3v/NSJIDjgn6qwKSmmiQZiUDwmw7MIFUtApIIrnrjBxsB0FONxYEqmZYK + QrBvgf8j6x3qMGtabsF/pHdkVEgeIY/t/gwkJvAFqyBLcFYA5zn1/HqdCt6x757kftWD74VroxxZowJM + D6YrUIuCkgQgDztSnUI4HN4t8XJs3EsLRVLaCzIj1qaQ8nMFe01f9cCfViij6pIVxwE7ZEDJKsNVQQSs + WSAI9hM/YAJKK/UgBxuwPq0kVIOf1drXrtO6AUbb9wFonrvP904S3FU5TF073QhJgH0ogawHyAKh3LbP + AGsI4LZ7P7qmBU8D3WCRSP/tU4veI4rqy6dln8pRG2jrpbiqFE33QHAKPtJzBPNe+IMfbKAH/G34qm3s + QELAjSCOYISfoKGKgevr//cKjdxnjt+05HFAmRmK3PZaWMqx60pcU/+3d86S7+U16z3wTnUFOM+UqJkB + 3YxKAlkUxDTgzBl47ZvuumjDtZ0G3J2aewD8LFl00pP0WSSilU9LnlZ8quhkLG9N48k0VgalJAIlcbXY + WZSkVOVcLL2pvZyhNlWA/8eYQw6ckuMuWssg4XBPCRAnR00AVWB7Dv/TKrup85eQQUvRBVn0rluBn+e7 + PUU4KhTP4bO/jWvzTCQBs0uC3pJgrD5dh+lC/KJXv25z5StvWAngYrMAPhzgz4KTBG+16kkCgrCuqyWv + oO5Fm2uKKn1mpafgd51g8hwj+GYsVAm9uoaU9wLdoGDGQqq8F2AJqgRdBWAlht7nRibbFFse91oJtjw3 + Qbs7Z0sGXm9under98HnSjC+G545/997tEiI44Jef/+Wex7e/JO3vnvzktf/0zaWAIOJrJOHXGz0D/// + Y7/+2zv5Xy0znzNXn8G5KdD3LHn6j25XYPeAXiVuPacngVMl5G/ImITWPH+fxCUZVYmeYKzA83MPsHnM + 42Nrfg/H8jr5eQzMR87pqIEkq9723P2MkU4qFN4NBsVIPxZf4DNSMBYf8DOG4HOf/8LNXXffs8YALjYH + KP+zYkwAJCBqBZtkoE8o6NNHnEprVUmvpbFBTQXFqqyuymDXKDsW1WO9a3gPgslz/KxlTgXAORX0eVyw + pRW1qs7r7SQ46bVtik0iOAK87e9JEthth9X3f3HdJJ+8diWlqjD8XWnhe8pHN4hjXF8V8Ib3f6RZ/AR+ + jhy8Wv+Ljfzh/6f8rwUkyvSxmvUMBPWAnla4WuQlEe+a/urJYgGbLkX1TVPCJoBz28aewK+gT5COgXKK + KBLsCaQxUhG8R8ghQF73HwF3jyg6bkFVLakCKqn5jJIUBb9xFjIybKMAGDhEi+/4gcwZwLyBWP973vf+ + 1fpfbA5I+Z+yvCqA7FCSlr5XPDJlwW08YxY85XwC3v02yjyPhp9BPqLSSR4cr+SRQO2Btu4T8EkUOwu5 + tdpaQAc5rZ+1pB4fPU8VsF2rFur39vqMEijXPfJ5qxSSdMaekc8iSYzgKvUXjBrMoCF8fuZLbtjNHQDw + nTUYAnjl9a9dwX+xwc//V/4nYFJO1+DXWHVaAjKtewX6GJB7YE8JXINQnm/arw1WOeT8TfOR3jOtlw22 + Z/UBQoJ5CnCPAfUUqM7jGL+LmvlGbtv1EsDv9T1JYYoctgE+iaGSAs8Wi0+NBfUXDB76nOvf0sjgsiuu + 3Qj8BD/bDz384ZUALjYBMMqNuf9eIC2BXIHfO3/Mt67nphVPYAtO9rlUEkiiAOBWAzJoJRNXsDCDDZWB + z33d3c0SpaxfAiLPoWHvc/7UuWPXyv2Ad2qRCPKc3r7eNThPchg73kCepBUEwTNs9yohRJyCZ8xEoX/u + bz+lLTx3Bg91shAsfi5vessdK/gvNvj5/+RsIQDAPQboWrI6ZtF7lr3ns1cXIP3MpbJca01Vn6XAgF4C + YP313/K0RgRIUocTGwOoIIRQeufU4wlat53z0M+Obsz13B5be84cASw9zu9Yem7vPECev8f7lgR8T5zH + MUYLxvL/mW/+nrZ+1mvevrP+Kf2fdNlT17TfaQC+90DUn0j+FAFMWfq0+EkMFfgJehtPDaKllR6T6fry + NkQq+bD0AB4FQMUf49WzfOfTr2rWqEnSwT1offmLhRsDvDGF3roHdM8TTALQHoYWHDULvO11mGTAPgba + 5Ljr3O5dr/6vsc/nQwT5W3nmjiWpEuB5EvT7u097eQM/z1s3jOcP+A36oQDalOHrnIGnhwKo1mrdO8ug + GUbNp8Cfcl0rPhdoyxSb/zMDdGMWOn1yXQO6B0MASn9Kfb/9Ga9oc9Y96yU3bV56y12NCL7h//ie1ifA + 6LTWVvAnSHM7QT12zoXcDxHk9XfkMUj53v+F4DxHEmFfu06R/3yeUglJQk5Hl/9TAmYfpAsB/3d/9Ts2 + zByE9ecdJPCV/6v0Pz3Yb3fi+HsZjU6f2+3qj9c0UE/GZ8qoAntpVNvznFw05TUEwDj1BJ5QAcxW+61P + HazOEHgi+gwBXH/7/a0xQgycOwf6Cwnoem3Auc//kxAS6I/5/gBsj7PGRSI4d+07H2njKSQZ5HZ+R/Cr + SviMpfd/GQPgs9L/v/9fv2Pzp/7mdzV3i1gA1h/QJwmQ9jtlzX+9HecMVKLWPG8Fusclhirbq3SfAr6p + Oi1yD+w9n5nz2O949XT2oeGhBCSAZ19zSyMA0lE/8EPvaeTgACJa9qXg6wHVfVS51QFFuK7Hx9ZTZFC/ + 47lpzds5Wyue5wNWPt/y7o+fi8IP1hnyY0Gas08iMCDoddM9GVVFW58fEoBYkP7Ifqw/Kgvrr/TX6uP3 + I/0f+cQ6V+CpYxwIIDvKpBJIMCfgl6bLenJef7QGveaCZL3jEgD+PZmApgS2CiAJgDLUHEForKELJCde + rZ8TiAny3C8ZCETXlRSSNPw/ve+4T5C6znO15F4Taw8hIscJhALOP/rnn7j5k9/wpBYP4djL3vqjjSjS + VeC5JNnlvasGNBS4U0b9uT7/BzUA0aTVB/x8Xgt+Th30z90QacB7HvpEk3eOrFt987EUWvXL83sCvK4z + IFWj5XMk0AMdEpduv+T8IQIsEpboymtvaZafsQAhORrn1bc+eERy96xz7sttZ2Ee+87U/gQx56VqSGAL + 4N7a354EU8kBy67V1ycH+Cz/7Z/9xs0f+x+/rm0DVoBKrt6xEbhWEkkqgCQFLD+f+S4ZFsAPsfAZtfGk + pzx7l+4T/Kvff0rB7205PwD94QESDUnrLcjHfPYeiDlXXztTYEpvFUddL5HFvXMc5JOGiTtA/hkp+vIf + fqiRm5Fqjmv9p8D2eB9zspPj/l+Ai+SHAL/tWa9pAP/jf+HvbJ7wP39jAyeuES4QawALEWi1IUtcI8lf + Ish7kWh8X5yPkvjav/4PN3/iL35Lu7bS/+/9n888ku+/4f+6efX7Tzn+2+1hJXnpWExIgO2U8Abh3JdB + OX3yasFNIRltVj4eJxiWVqhaW8kGN4Vt7h/wY2mpYoTgMt5wXKDNfU8QAWhBzRpwesxr1M/s7+1jf34f + cq73kZIfUGLl/8jX/qVGBMh9U6PM5suCz85xFogAS845xEu8h6o4fGeoKP1+SOYbv+t5jUAgAXx+CWDN + 958F1Jd71FLSCKZIYEyqV4DTUL1OAnjMfx6TnVPyWqKyYlE/lntkX3b35TP7nTOgAmkpKD3PNQDd51pp + 8eu1kgh698P/8v45TiAO8GKRscZYd4BtMQ5+OrL86Ve+eHPPBz/aAnGsyZJIBBAGOXwUQroFNcAJQfC/ + OBfws8a1qtJ/rfM/g+D3lpHMNCzH0adBLvHNlYeCmGs4HBfrF9z68BF1kaCes6xLjmP97QHotdlHt1TH + 6+Oz8wFoSZcA0Ln/euDM73ve2D6An+fU6879nyQEo/wEPvH3AaQ+Pv49kpwaCMB/+dXXPKb45r5HPtmG + 4yJoCgHwXQiEa3FNgI2y4DfjAvC/ATqkwXm4FvwPFIYpv7WH3xkGft66AcF0B8b89QS+wGsDdA6yEH8c + BUAE3sE5ycU7+QbnVVBU65yS1+1cs50zB2ffBUcFcsIQfhdBr5wUpIK6B9DTtI97B5gAFH8fQALgJ/yx + /6aBkmeNFRf8ROBvfus7Rv1wZuhhdB7cBV2Hr/nL39YUBIAnkIrsZ5tzOAYBtEDrcA/UWAB8av4J9n3q + Mz+9+vyXAg8o/5IEahqsl+8W/Fl002r1B0tDWoqCHT5LBKSjVBsQA9sCbgzwlQDSckJIqgEHKyFuIdAv + Bpidu9D/7WdnI5pa5/1i9Xle1jwgwZH7WG+IQH8fUAJIa/Dvuff+SVCiBm5/53sbmCno4XpP+Lq/tavr + 571p+dlPDKCRwlBwRX7/JdfdsPbsuxRAX3+DlpUGanZgLBgnwAA2i8FCVADgNz1EkIiGZl5eNZDKwH1J + BqoF7ikteAIk5+9Lt8H7T+DxvQRmThvmsR5we2DNe1gC6uOeg7/PczMCbyDPDk/4+4IfAmDYLZQA4F7S + PlEDDODB+yI46PVNJQJ+/jfgJ9NyxctuWHztJf9/PecUPgGGbhYQSQLVL7cslzn87ORDY80OIVaEffBH + f3Lzsz//1RZ1xmrRoNgmTiCB8L+wdoJ6qeUW7H6faxwHcHPW+rjXdUrxJfeU5wp+wJ6Rfvx9nmEFPtH+ + 57/mphb1X0oANr+3vf8DLUhIPADQs6AMUAK8qyuvv3Nz69vvW0Qqp7BJr7e07xPAHUgSyGBUWn4atYND + 2CEEy68U7TXET3/+q7t4ASRAo6eRSQSk8yoJ9EjBfWntp0CW4OqB2eOqkZw0NL+bx+v/9jyvn9/jt3I+ + a4+z7X78fO+ffcyQDNiNwBP0wy9P8BPpJ+AH8BmDj/H28e8Zk2/fd37fBz7UYgd0qkLyQ+bcx43v+sjm + 7gc+svf19v3/6/mn7AmYHcgAXoKf/ebhjQwDfMaDozHN/ZyHPjlUl21n/4VguB6BxFQE7tc6C/pcJ+gT + xKkMxqwwQAR4LDR0f6tgZD1GDEkECWost8TGOVzD4/4vPrvtccnAzwT2SNMRiPvT33RZA3+b7GTr7yP1 + GWNfwAN6ovxIeogAP3/uHfSO3//hj29ue/e5moq7H3zkWNc4zv9dv3MKnwDFQvjlLEbvqcEHXETfCQo6 + NRfA39dSPPr5LzVwoB4AvnUEGR/oATmtc7X69oRzLdj4rJvANouWOIlAi+zxPFcgcx33H2ft//N/JBmw + jSKCALDCjnkgyQJ8njVWH6ALfMDvwv65QOApbG7rLZ3GJwAJ0OABJUAFBEbZmWoL//Cue89vrDfUAOkn + FICByF6QUOAbK0i/n30JxgT1HEg9F+AJQH7n3PfO53i9ft5v87uHlBsLz7yV/Q6EgJ+ewO+BXxWwbxzg + NLa99Z5OyRN45Kf+eWuI5vmx1Nbdn+Qtvvau+5r1oyNOJQAtOKDXEgOaKaByvBJDD7T8z7nzuJ/8X3zm + Wny3XnNuX49o+P+vuuOBdh8chwz5DCHhajHePt2dq9Vnyq20/mwzBRfrk3w367XWJ/AE4gJYaABKvf2F + eCR05YVgUm5r8ZXMgm/OAifQOJeec35HkM6tjUkIdj6bxRgDvmSR15Y8khy8P+5LEgL0fLY3owTAQC5Y + /Gr1ewQASbCs/fEvRAtdr3lBnwDuAEE/A2msBRRrlAeL+yug87PWtIKvgl5w98jA/yPw/f+cWxfP6R3L + fYC8fpaguGcIAAXAmnMZCIQqR8CeBNADv7PvogLu+9Aavb+gjXW9+Mk/gZ969PNtXjlIQMBrhcfWc4Cb + Op5gTEmfaUlA7zVy+3z+79h3vR8IABXAPaGI6OOAG4CblJK/SwI/9OamANY4wMm3z/WKF/gJ/Nwv/ovW + yGn0gATAJfCPCzqsaW8BaLkAOtKTrBnrnthHb+G4dfMG7bw3Jf3Y57rf67D2u+0+hsAfLgBBQBQAvTen + FIAuAmsUwFSfgAv8GtfLr0/g+E8A2Z0E0AOSMjkJASD7WQndAz3gIsVGXp1OLiz0b6cAxoX02xOf/PJW + CsvCNguVeX52TDz/lwB2LUlw3CxHbruvfs/9EIBxAsBP3KW6AaoBwF4J4PpBCRz/LazfXJ/ARXoCuAAE + G7X81eqnhQVkkoFArGtTagbXADsgpvSVTi+U2lL6Ss83e7/RAy4XS2Tbehh5x84zdKVFMagC+F9VVYx9 + znO9NwmL7zjdFioAAqD2gmdTo/58TvBbEYgKWAOBF6kRr//2+E/A/gj62xkUq2ASOD2QSQ6uHT8P8NOV + 1mG07Bab4E7AQwQQBOvduUN3XDrPQCB2ldVvl3B6a+9ziihSAXAegUH66BMHgBinCMAMABWCLOt8fMdv + h+s3L9IToAzVijxlfbXiFWx+HgMh+6mmw/o7gKbj5DHMFT3i6MjEQrntd19+zbn1dvm+5924ecVrb91c + PwTXWOh9x8CbEAXXo7fcEgLwdzQLv4016O/n91UAEgAqgDgAzyatvdvWB0gAlgmvA3RepEa8/tvjPwFS + gUTDyQRo/dOa2odA65+Bu7qd38Pvp4MN9fV0soEQ6ANApxqntKIzkwv76NH4zBdcs7nl1tvb4q8CWFe/ + 4rrWlx63wRly/H/eY96PgG/DmhcCSGWwu8YQA8jek0zrZiAwgS/olf5YfsqFWdY4wPHb4frNi/QE6CMA + ARAIrMCvslqgsaYHXQWeoHPwDDvYsAZMzCdQR7bNWW0hAAbAGHsUnPuEr/mfGqG0eMAA2iOgHz737inv + u7etYuG+LWAyDkAgUIsPESTwsfwAH1KDuFYFcJEa8fpvj/8EvvIrv3YkFSig5kAD+Oo5pPJYlP/4/05q + QYmtI+moAHKSCxXAFIg49vX/27lReXEFyCzw/7wXUoi7+/L+hrX3NfabkgD4PvUAxAEsCAL09Pxj0d8H + +IAe8LNMEdfx3876zfUJPA5PIGsBBEkD07YLMesduLbAMl/fABdg41zkP2PqkcZjcfDLBL7bznHv+s4f + uXsynfbK61+7+R/+7P/SAoS4AvyvqRqC3f15n5W44t4hLt0A7hkCaP0CAvwAn3EB2ohAA/AZtuu61920 + ZgAeh3a6/osL9ATok26fgLFinKn9Aoe1s9jo/yPVGUsQkqkEAHgEPsewqEu61hI3cKw+R+mVoLgHR9Tl + Xrwn7zH3VRVjvQKKgMAoBPDGez+2+f5r39SkPsDX6nPfTMh593vet+b/L1C7XC/7OD0BBrQgQEcgUMuf + QEqAC67cV7dJ1en/cwx/muGzHL1I0EMA7HvKc17ULCmBviU/WVfArACuQCoSgFzvUyVQCcHPjgmAcuF6 + fG5TdQ0EwL0n8LnXDFIuuef1nPUJnNonQBdkCAAVAHAYd0AAJZjYx2cB77bDZ7Ff+e/kmVhTetc1oG9H + 081RdZMU9gEVZIErYFbA+3To7iQl9rlUtSIxONMvLgtxC+6fOAABUgYGIQAJ8JmOa833n9qmvN7YcZ7A + F7/yq7tAoP6+YNcyCu4EvwTgmvy8QDIA6BiHEkD1+VMN3PfgBxYpAH4j5/7v3/r3GwmYFUiQs8399JRK + qgFG+6VegfqEP/U3v2tXhAQJcO9kLvD1IZx97u8472H9zvoELtoTuPnt9ze5mxHxCp60pIJLv1mCUP5b + x48VJYreC/q5T8u674/HFTAgyP8DzGPWPn8L9+59CnxLkQkuQgROgMqoQGt6b983s55/5p4Aw4lT9up4 + hJQGG10X3FUNaGUFHdafoJ/yn88EABlea0wBEEjbR/rXB8t1CQhSbmxWwPsx4Mf9q06ITQB6LLwz8AJ6 + SpW9BqlQ+gG8+V0PLApKnrmXvd7w+gR6T4CBRkl5UR+P/HV2IiLiKAPdgmplKwEg/6nb5ztco/r+yv4m + qxeMajz1th5+5MebK2BfAXoYAnaVCYTEPl0S3AX6GgB4rT4Wn3P4fWQryIrsO+jq2qLWJ3DJPAEmprjy + 2lta+ksyyLkJ6Y0nGTiENoATbMhxCKDNODRU0mUAkG2Af5LpMxQErgBZAf6v3YrtgYhlB/TOwsOafZzL + PaN0rrvt7nMWf5jd95J5kesPWZ/A+TyB5hYM/jtkQDCM7ADgB9j49rgLrWvusB8iQIILOsCF/OcYJb4A + /0LmzQnUSQJ2NRbwfBb03J+TcTDwJ7EPrP0a2T+flrJ+95J+AowcxCQWb7hjmM32xqEoZgA1C5aTWAGE + QBoRVYBFdfZbCIAcP8Cnwu9CgoyZcykQstcgoMfKI/lRJNwXJAboUThYen7TJf3i1h+3PoEL8QQADqPi + 0GUXQpAUCLo51wDE8Mo3DBZ2OO/xSp9BAnTQaT0Oh9l1CT5yb2QhkPdY+hX0F6JFrNc82CdAb0KsqYSA + y0AQ7c4HPnbRwAbQGaSTiTgB/IVUHgf74tcfvj6B9QmsT2B9AusTWJ/A+gTWJ7A+gfUJrE9gfQLrE1if + wPoE1iewPoH1CaxPYH0C6xNYn8D6BNYnsD6B9QmsT2B9AusTWJ/A+gRO8An8/7AWyvzTtcwRAAAAAElF + TkSuQmCCAAAoAAAAMAAAAGAAAAABAAgAAAAAAAAJAAAAAAAAAAAAAAABAAAAAQAAAAAAAGxQMgBvVDYA + cVY5AHhdPwBgWU0Ae19AAGFbVAB9YkUAYmBVAGtkWABvaF8Ac2pZAHRoWgBxcWcAfnNhAHNwaACHbE4A + iG1PAIVtUwCKblAAinBSAIxwUgCJclYAhnFYAI93WgCRc1UAkHRWAJJ2WACUd1gAlXhZAJd7XACZfV4A + gnViAIV9ZwCRfGMAmX5gAJR9awCbfmkAnIFjAJ6DZACUgWsAmYdvAI+IdgCCgH0AiIJ5AJGDcACZhnEA + n4RwAJeKdQCci3QAnox5AJ+VegChg2QAoYVmAKGGaAClh2oApYhpAKaKbACnjG4AqYxuAKyObwCgi3EA + pYxyAKeLdQCijHUAq49xAKyPcACrkHIArpFyAK+SdACglXoAoJB8AKaXfgCpknoAr5R+ALGUdgC0l3gA + tZh6ALOYfgC2mn0Aupx+AJ2ThACYkokAm5iVAJ+blgCllYYAq5SBAKSZggCsnoEApZuOAKScjgCsnIwA + tZuDALqegQCxn44Aop2VAKuckQCtoY0AvKCCALOiigC4oogAuaCNALumjQC/p44AvayMAKahkQCnopcA + raGSAKWkmwCzpZQAuaWSALmqkgC+qZEAvq+TALiplQC6rZYAtKWZALKpngC7rJsAvLGaAKempACtqqEA + t6uhALetogC3raQAva+iALWvqQC8sqUAtrGqALOxrwC8tKoAvLawALy4sgC5ubgAwKKEAMOmiADFqIoA + yauMANa1jgDCq5MAzK6QAMKxlQDOsJIAxLOcAM20mgDLup0A0bOVANa5mgDZu50Aw7OjAMO2oQDEtaIA + wranAMW1pQDJtaIAx7igAM24oADLvaQAzL2kAMK2qgDDuawAyruqAM2+qgDKu60A07qhANu+oADQvqgA + w7u0AMm+tADFvrkAy8CuANLAoQDewaIA1cKsANrDqgDcyKkAy8G0AMfBuwDLw7sA08OzANnHtQDVyrcA + 2cm1ANDHuQDUyrsA2sy7AOHDpQDlx6gA5smqAOjKrADk0K4A482yAOzOsADizbgA59GyAO3RsgDk07wA + 69S6AOvYuwDy07UA9de4APbZugD63L0AzcfAAM3IwwDTy8MA283BANTOyADb0cIA3dDBANrQxgDc0cUA + 3tbHANXQygDa08wA39nNAN3W0ADe2NIA4tPDAO3bxADi1ckA49nLAOrbzQDw3ccA/N7AAPXeyQDi29QA + 6t7SAObf2AD+4cQA/+TMAOfg0gDs4dMA5uDaAOvj2wDx49QA/ufRAP/p1QDz5tkA8ujdAP7s2wDu6+YA + 8+riAP7u4QD37+kA8/DnAP7w4wD+9ewA9vbzAP/28AD/+PEAAAAAAAAAAAAAAAAA////AAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZSiQy + ggAAAHwXKloAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGcbFxQZB1QAAAgRCAJBeQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4bHx8XDQtUMhQ3NydxImAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAEM2OT0dAgMDCEM5QTmjR2oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ANSdAAAAkD1GRkZGRkZGRk5GTUZiNIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzxs2QXVeQ05eY4dj + Y2NjXmNeYzkTDwAAYiN2AAAAAAAAAAAAAAAAAAAAAAAAAADUHT09Rk5OiomPrbuJiYmJiYeJiYknBEdB + FCcXLQAAAAAAAAAAAAAAAAAAAAAAAABOPYeJjY+Uj5ROKWOPj4+Pj4+Pj4+UTgY9lKY2GCwAAAAAAAAA + AAAAAAAAAAAAAACLh4+Ura27rbuHG4q7lJSUlJSmlJSUlK2mlJSmNgqGAAAAAAAAAAAAAAAAAAAAAADD + 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 + AAAAAAAAAAAAAAAAAAAAAP///////wAA//8HD///AAD//gMD//8AAP/+AAH//wAA//4AAf//AAD/nAAB + //8AAP8AAAMf/wAA/gAAAA//AAD+AAAAB/8AAP4AAAAD/wAA/gAAAAP/AAD+AAAAA/8AAP4AAAAH/wAA + 9AAAAA//AADgAB8AD/8AAMAAf4AP/wAAwAD/wAH/AADAAf/AAP8AAMAD/+AAfwAA4Af/4AB/AADgB//g + AH8AAOAH/+AAfwAA4A//4AB/AACAD//gAf8AAAAP/+AD/wAAAA//4Af/AAAAD//AB/8AAAAP/8AH/wAA + AA//gAP/AACAB/+AAf8AAOAH/wAB/wAA4AP+AAH/AADgA/gAAf8AAMAAYAAD/wAAwAAAAAP/AACAAAAA + f/8AAMAAAAB//wAAwAAAAP//AADgAAAA//8AAPgAAAB//wAA/wAAAH//AAD+AAAAf/8AAP4AAAD//wAA + /gAAwf//AAD+AQDv//8AAP+DAP///wAA//8B////AAD//wP///8AACgAAAAgAAAAQAAAAAEACAAAAAAA + AAQAAAAAAAAAAAAAAAEAAAABAAAAAAAAfWRJAINpTACQeF0AgnhmAIJ6bQCYgmoAlYdzAJCEdgCdjHIA + l4l4AJeLfACUjH4An5B9AKGTfACkkX4AqJJ+AKmVfgCzlX0AsZp/ALaZfwCelIUAoJSCAKaWggCrlIAA + rpSAAKKYggCnmYQAq5uDAKuahwCtnYYAo5iLAKqciAConI4As5qBALeYgAC1nYIAtp2EALmcggCyn4sA + tp+IAKadkQCuoY0Au6GHAL6hhQCyoIkAsqCNALakjQC6oYoAv6KJAL2mjQCuoJAAr6SUALGkkQC2ppIA + sqaVALWmlQC7p5AAvqmSAL+tkQC8qpYAu66XAL2slgCwp5kAsqiZALSomQC2rZkAuaqZALqtmgC+rZoA + vrGeAL6xoAC+tKEAu7OoAMWoiwDCqI0AwaeRAMCpkgDFq5EAxayRAMKrlADEq5UAwayUAMWtlgDIq5AA + yKyTAMGtmQDHr5kAx6+eAMmumQDGsZoAwbGeAMK0nwDKsZgAzbKbAMq0nQDMtZ0A0bifANW4nwDXv54A + 2bueAMGzoQDFs6AAwbShAMW1oQDBtaUAxralAMm3ogDMt6EAx7ijAMS4pgDIuaMAyLmmAMy4pgDPvKYA + xreoAMW5qgDGvKkAwbisAMW6rADFvKwAybqpAM+4qADKu6wAyb6uANK6oADVuqAA1b2iANK7pgDZvaIA + 2L6lANy/pgDRv6wAyL6yAMvBrgDPwq4A0cOtANLErwDYwq4A3MOvAN3ErgDKwLEAzcGzAM7FsgDKwrQA + zcO2AMzEtwDLxbgAzca5AM7IugDPybwA0MCyANHFsQDVx7EA0ca1ANbHtADYwLMA2cWyAN3EsADZx7YA + 18q3AN3NtQDRx7gA1sa4ANTJuQDQyb0A1su/ANPNvgDVzL0A2sy8AN3SvwDhw60A4MStAODGsQDgyLIA + 4sq1AOXNtgDqzrYA4su4AObLuwDizbsA5c66AOLOvgDn0LkA4tC8AOXRvgDRy8AA1MvAANLMwQDVzcEA + 1s7EANjNwADcz8EA1tHCANbRxQDY0MEA3dHBANjRxQDd0cUA3dbHANfQyQDZ08gA2dTJAN3WygDa1c0A + 3dbMANzYywDf3M8A3NfQAN3Z0QDgzsAA4dHBAObSwwDi08QA59bGAOnSwQDp1MIA7dXDAOvTxQDq18YA + 6NrFAOHXyQDt18gA4tnLAOfaywDg2s8A6NnKAOvcywDu28wA6NzOAO7ezgDw1sQA8NrJAOHc0gDi3dUA + 5dzVAO7d0QDk39sA6ODSAO7h0wDr5NIA6+TWAO/l1wDm4dgA7OXdAPHg0ADy5NUA9endAPDo4QDw7OUA + 9fHpAPj29AAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAHtzAAAAcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtJB4KAGotLTgAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABMsMAoXNjuZQkIAAAAAAAAAAAAAAAAAAAAAAABqOAA4JCQoOzY7RWoWQgAAAAAAAAAA + AAAAAAAAAAAAezAwGDBMAQNFVmpqRSkzOCopAAAAAAAAAAAAAAAAAAA+SlQ7OztWVkVbW2pzc2mGmRYp + AAAAAAAAAAAAAAAAAHBKWVlZO1h7bVtqc5CQkJDp6jMAAAAAAAAAAAAAAAAAPllYWFjV+fGqmXx8kJCQ + lc6hbQAAAAAAAAAAAAAAcEVZYWB/+fugampzbY+Qk5WVKQ0AAAAAAAAAAAAAAGo7XWFhYfL6aoUAAAAA + bZCQlaA/CAAAAAAAAAAAAAAASmRkg4O48T4AAAAAAAAAPpCTupOFRUIAAAAAAAAAAABqYoODg9xPAAAA + AAAAAABGc4U0oLygFhYAAAAAAAAAAABZq564oT4AAAAAAAAAAHNpKgG6us5JBwAAAAAAAAAAv12tr7g7 + owAAAAAAAAAAk0WQlbzq6kYXAAAAAAAAAAA7g7KysjAAAAAAAAAAAACQRbzC6elGRgAAAAAAAAAAO62y + t7KeJgAAAAAAAAAAAEl7ybzzRjgAAAAAAAAAAABisbECNqsTAAAAAAAAAAAALcLFwscXcwAAAAAAAAAA + AG2tuDutrSYAAAAAAAAAAABFycK8xUIpAAAAAAAAAAAAAHCv2dnUMFkAAAAAAAAAF7zJwrygyTc0AAAA + AAAAAAAAAH/s8feeEgAAAAAAAB6FycW8vJPqhi0AAAAAAAAAAADSnub19uxZGQAAAHMXc+nCvMnQoKA+ + kAAAAAAAAAAAAFnZ2ebm7OJ6GRgZLZPJxbzJ9IdJkEUAAAAAAAAAAAAAWOf12dnZ4ODgoMXgycW8oMmZ + OwAAAAAAAAAAAAAAAACZmXqe1NTUycUZLcnFqbzFdgR2AAAAAAAAAAAAAAAAAADpk6my1LLUoQZqqanF + oLyQBQoAAAAAAAAAAAAAAAAAAAAAALKy1MWpqanF6sWZoOo+DQAAAAAAAAAAAAAAAAAAAACysuLmoamp + qeB7e8WVQjMAAAAAAAAAAAAAAAAAAAAAAADS2WGq6qnSmQkAAADJAAAAAAAAAAAAAAAAAAAAAAAAAAAA + oAAAoMVqHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6skAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////53///8If///AD//8gA//+AAB//gAAP/4AAD/ + +AAA/+AAAf/ADwH/wD+Af8B/gD/gf4A/wH+AP8D/gH+A/4D/gP+A/4D/gP/AfwB/4H4Af8A4AH/AAAD/ + wAAH/8AAB//gAAf//AAH//gAD//8Ad///2H////z////////KAAAABgAAAAwAAAAAQAIAAAAAABAAgAA + AAAAAAAAAAAAAQAAAAEAAAAAAACDaUwAkHhdAIZ+bwCQhncAnY96AJuPfACgkHIApJV/AK+RewCplnsA + qJJ+ALWWfQCVjYEAppSCAKCWhwClmIcAr5mDAK2dgwCsnIQAqZyJAKidjACznYQAsp+LAL6fjAC6ooQA + vaSHALahjQC0pY4AuaKIAL2iiwC+pIsAvKaOAK+jkwCxpJEAsaOUALSnlAC5pZIAs6iXAL6okQC8rZMA + t62aALysmQC7rZwAvrGeAL60pADFqY4AyKmMAMGpkgDEqpIAw66VAMaulQDIrpEAwq2ZAMWumgDCspsA + wbGdAMiwmQDOtZwA0bacANS4nwDFs6EAw7ejAMS0oQDDtaQAybKiAMi2oADDuKQAybigAMu5pADNuqUA + xrWpAMG4qQDFuqkAxb2pAMW6rADHva0AybusAM2/rADVuqIA0LyiANe/pQDZvaMA3byjANi8pQDQvagA + 1b2qANS+rADYv6gAxr2wAMW+tADKvrAAysCtAMzArQDewKMA0sKqANLDrADWxa4A2sCpAN3BqQDcw6wA + 2cWtANnIrwDGwbYAy8GyAM7FsgDMwbUAzMS3AM/ItwDLw7kAzca5AM/IuQDPyb4A0sOzANHGsQDVxbEA + 0sO0ANDEtgDVx7QA38WwANPIswDXyLMA2smxAN/IsQDfyrQA3c62ANHJuQDXy7gA0cq+ANbOvwDdyroA + 2sq9ANnOvQDczrwA3tG+AOHKtgDlzLYA6s62AOLNuwDlzbkA4dK6AOXQvgDo0L0A0svAANbLwADSzcEA + 1s7CANXOxADW0cMA1tDGANnQwQDd0cEA3dLFANrVxwDa0sgA2tXJANzVygDb1s4A3NjPAN3a0ADiz8EA + 5dHBAOPTxgDl0sQA5dXGAOjTwgDo1MEA6tbFAOjawwDg2s4A5drPAObczgDp2skA7d7MAPHbyADx3c0A + 4NrRAOXf0ADl3tQA6d7QAO/c0gD84csA5OHaAOrm3wDw4tUA8efWAPTl1QD54NEA9ObaAPbo2wDw6N4A + +OvdAOfn4wDu6ucA9vDlAPr26QD69vMA///+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAABNAAAARwAAAAAAAAAAAAAAAAAAAAAAADIaBgA9KBxb + AAAAAAAAAAAAAAAAAAAAABouHA4cQkoUAAAAAAAAAAAAAAAAAB0LER0BAkI4PSEQKyQAAAAAAAAAAAAA + OC80MjIWJTg9SkotclwOAAAAAAAAAAAAXC45MjZ/f01NSltqb8N/bgAAAAAAAAAAMjk0c8TCqIx5bG5u + cEpyAAAAAAAAACgdPDxlxatKAAAAYHBwbwRuAAAAAAAAADReUlK5YAAAAAAAalxvlW49LAAAAAAAADhT + Y4x8fwAAAAAAAGVuAZWrKRUAAAAAAHJSiaUyAAAAAAAAAGBqJJW3bxEAAAAAADKIiXw4AAAAAAAAAEZv + n7eVLJkAAAAALol7iFdCAAAAAAAAAEacnJ8RAAAAAAAAT7UBJWI4AAAAAAAAAEqwnGoFAAAAAAAAamWI + pXsMAAAAAAAAFJyck5kkWgAAAAAAAFesvb0YAAAAAAAkarCTcJmrCgAAAAAAAFesur2lCUcAAA5KsJOc + n25GLAAAAAAAAGK7r6y6pTglK3+wlZW+RpNvAAAAAAAAAFeMiKyksrI9f7KVk5URLAAAAAAAAAAAAABu + coiloHMBHJmVf5kDDQAAAAAAAAAAAAAAAIikpZmClbJ/crA9DgAAAAAAAAAAAAAAsomvc3+IpD1sAFkh + AAAAAAAAAAAAAAAAAMFyAACViAYAAAAAAAAAAAAAAAAAAAAAAAAAAADAnJMAAAAAAAAAAAAAAAD/u/8A + /xD/AP8A/wD4AD8A8AAfAPAADwDwAB8AwDgfAMD4DwDA/AcAwfwHAMH8BwCB/B8AgfwfAIH4DwDB8A8A + wGAPAMAAHwDAAH8A4AB/APgAfwDwBP8A+Y//AP+P/wAoAAAAEAAAACAAAAABAAgAAAAAAAABAAAAAAAA + AAAAAAABAAAAAQAAAAAAAItyVgCYgWgAnoRpAJiEbACiinAAqY1zAK6SdwCsk3gArZR5AKiVfwCsln0A + spqAALWegwCxnocAuJ+DALqhhQC8ooUAvqWHALqiiAC/pooAvqeNAL6ojwC/qpEAu6mWAL6vnQDApooA + w6qLAMCojgDDqpAAxKuSAMOulQDFrpQAx6+ZAMawlgDIsJUAx7KaAMaznQDLs5oAy7SaAMy1mgDLtZwA + zbeeANC5ngDCtKMAyreiAM25oQDMuaUAzrymAM68qADTvqcA0r+qANTApwDVwaoA08KuANXErQDZw6oA + 2cSrANrFrQDcxq8A1cWyANnFsgDayLMA3ciyAN3MtgDayroA3cu4AN7NugDdzrwA4Mu2AOPNtwDizroA + 4M+8AOXQvQDk08AA59bDAODUxADn18QA6NbEAOnZxgDs28oA7NzLAO7fzQDy4tEAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + dGha/2dfVfBPST+Ll4Nu9ohtT/+ih2n/oodp/5yBY/++qpH/hX1n/4uFe8wRERE3AAAAKAAAACEAAAAm + AAAAKwAAACgAAAAdAAAAEAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAsaSWJKyPcf+ihWb/ + pIhp/6mNbv+UeFn/bFAy/3FWOf9xVjn/fmJE/6uQcv+njG7/p4xu/6WKbP/Nvqr/oJV6/5yWhOMGBgZH + AAAAPwAAADoAAAA4AAAANgAAADEAAAAqAAAAHgAAAA0AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMSxnJTEq5DXr5V/SwAAAAC9p5AK + s5uBxaqNbv+vknT/r5Jz/7KVdv+ylnf/spV3/7CTdf+tkXL/s5d4/7GVdv+wlXb/sZZ3/6yQcv+uooz/ + n5V6/6CckbkAAABIAAAARAcGBUIAAAA7AAAANgAAADIAAAAsAAAAIQAAABAAAAAFAAAAAgAAAAEAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybagrpR3WP+hg2T/ + pYxy/5+Ofce2m37zrY9w/7eZe/+8n4D/vaCB/72ggf+8n4D/u5+A/72ggv+8n4D/up5//7ufgP+6nn// + vaGD/6aKbP+FbVP/f3Ri/3dzbn8gHhxOno562I94XvuZjX2/ICAgPgAAADEAAAArAAAAIwAAABgAAAAO + AAAACAAAAAcAAAAFAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOTj4gHMuKGo + lnhZ/6aIav+wknP/tJZ3/7WXeP+7nn//xaeI/8epiv/OsJL/3MKl/+LDpP/GqIr/xaiJ/8aoiv/FqIr/ + xaiJ/8OniP/Dp4j/xaiK/8erjf+afmD/eF0//5mIc+2fiW/6iW5P/56DZP+LcVP/eHFn4GJhYUwAAAAq + AAAAJQAAAB8AAAAYAAAAFAAAABAAAAAOAAAACQAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAANTQyBC8nHz9rI5v/8Cig//Fp4j/y62O/9Cyk//TtZf/1LaX/9S2l/+2mHn/lIFr/76ggf/StJX/ + 0LKU/8+yk//OsZL/zrGS/86xkv/OsZL/zbCS/86xk//UuJn/t5t8/3tfQP+rj3H/1Lia/9u/of+ihmj/ + hnFY/21raNokJCQwAAAAJQAAACEAAAAdAAAAGQAAABUAAAATAAAADgAAAAcAAAACAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAOLd1gPVsonzv6GC/9K0lf/Zupz/3L6f/92/oP/ewKH/3b+g/+HDpP/AooP/ + kXNV/8apiv/ewKH/2Lqb/9a5mv/Xupv/2Lqb/9i6nP/Xupv/17qb/9e6nP/Xupv/2byd/9u/oP/cv6H/ + 17ud/9i8nv/avqD/oYVm/2tkWP+Ih4WUAAAAJAAAACAAAAAdAAAAGQAAABYAAAATAAAADgAAAAcAAAAC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXvJK0yquL/+LEpf/mx6j/6Mqr/+nLrP/py6z/ + 6Mmr/+jKq//qzK3/5ceo/+LEpv/kxqf/8tS1//HTtf/kx6j/38Gi/9/Bov/fwqP/38Kj/9/Co//gwqT/ + 38Kj/9/Co//ewqP/38Kk/9/CpP/hxab/4820/8O1mv+ZkYD0XVtZOAAAAB4AAAAbAAAAGAAAABUAAAAR + AAAADAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDqY3CyquN//LUtf/y07T/ + 89S2//LUtf/x07T/89W2/+3OsP/Iqov/za+Q/9q8nv/ixKX/+du8///r1///6tb//+TJ/+3PsP/myKr/ + 58qr/+fKq//oyqv/5smq/+fKq//myar/5smq/+nMrv/lyqz/4tS8/+TQr//PwqzMOTg4JwAAABwAAAAa + AAAAFwAAABQAAAAQAAAADAAAAAcAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM22nkG0lXb/ + 58iq//3fwP/73b7//d6///zdv///4cL/+Nq7/9u8nv/LrpD/3cSp/+bUvv/s28b/7NrE/+rTuP/qzrD/ + /+LG///r2f/42rv/7tCy/+7Rsv/v0bL/79Gz/+7Rsv/u0bL/79Gy/+nLrf/g1MD/59Kw/9XEqfKYk448 + AAAAGwAAABoAAAAXAAAAFQAAABMAAAAQAAAADQAAAAsAAAAIAAAABAAAAAAAAAAAAAAAAMyzmX3AoYSk + xKaKd7idf/bcvZ7//+nV///n0f//5s7//+bP///lzv/32br/yKuM/9bBqf/t6eb/7+3m/+Day//PxbL4 + wbWg1r60n8nTybfk6tW7/vXXuP//69f//+HC//TXuP/32br/9ti5//bYuv/12Ln/+92+/8mrjf+XinX/ + uKuT98nFvFsAAAAWAAAAGQAAABcAAAAVAAAAEwAAABEAAAAPAAAADQAAAAoAAAAIAAAABAAAAAAAAAAA + 0b6pQLmafP/avJ7/0bKU/+LDpf//6tX//+/g///u3///79///+bO/+fIqv+3mnz/6d/U//b28//f2Mv/ + xrun5qSYiYNnX1ZGAAAAKAAAACoAAAAqfnhrVeTSuvX32br//+vZ///jyP/938D//d/A//3fwP/838D/ + /+PH/9a4mf+Sfmb/bWlh82ppaCYAAAAXAAAAFwAAABUAAAATAAAAEQAAABAAAAAOAAAACwAAAAgAAAAF + AAAAAgAAAAAAAAAAy7WZyP/ix///5cz//+PI///q2P//7+D///Dh///w4///6tj/3sCh/6+Rcv/v59v/ + 8/Dn/9bOvP+/s6GxjYF2KQAAAAwAAAARAAAAGAAAAB8AAAAiAAAAIWFcVDbn1Lr6/d/A///q1f//5c7/ + /+bN///mzf//5cz//+bM///hwv+ni23/YFlN/6GdmXcdGBMZAAAAFAAAABMAAAARAAAAEAAAAA4AAAAM + AAAACQAAAAUAAAACAAAAAAAAAADWwKsY27+e/f/lzP//6dX//+vZ///u3v//7+D///Dh///w4//qy63/ + r5Fz/+PXxf/t59v/zsGs/72vnZR/dW0DAAAAAQAAAAIAAAAFAAAACwAAABMAAAAYAAAAGQAAABe1qp1e + 9Nu+///hwv//7d3//+vZ///r1///69f//+vX///w4//Bo4T/oIVo/7yjh/23nID3s52FwU1LShgAAAAO + AAAADQAAAAwAAAALAAAACAAAAAQAAAABAAAAAAAAAADbyLNT/+bP///n0f//69f//+3e///v4P//7+D/ + //Dj///hw/+/oIL/zLWb/+zk1//MvaT/sZyDrQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAgAAAAM + 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 + /e7h///48f//9/D///bw///28P//9u////fv///37///9u////bu///t3P/UxrL/vq+T/9DKwj4AAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8uPUAci5q/Xj3NX/5t/Y/+nh2v/q49z/ + 7eTd/+vj2//CuK7/08rB/7qsnv+TgHD/f2pcdgAAAAAAAAAAAAAAAAAAAAAAAAAA6NK9DcSxnqG9q5r+ + 287C/8O2qP/y5tn///fx///28P//9vD///fw///38P//9/D///fw///27///9u7///bv//Ddx//MvqT/ + xrypwNnW0gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2svAl8vDvP/f2NL/ + 4trU/+Xe1v/n39j/6eHa/+vk3f/j29P/u7Ko/9bNxf+/tKj/qpqK/5mHd+Gql4iAu6eYVsCunXC/rZu9 + u6qZ/MS2qf/b0Mb/w7ar/+3i2P//9u3///Pp///16///9e3///bv///38f//9/D//e3a///37f//+PH/ + //Ln/9vNu//Lup3/08zCWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo2s5L + t62k/9jRy//a083/39fR/+HZ0//j3NT/5d7X/+bf2P/q4tv/4trT/8K6sf/Mw7v/08rC/8W6sP++s6j/ + vrKm/8C0qv/IvrT/1MvB/8rAtv/LwLb/7+bd//zy6f/68Ob//PLn//7z6P//8+n///Tq///28P/w4tD/ + z8W2/+fg0v3z7OH12c27/Mu9pP/NwKrW6ejnDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADEtKK7xb63/87HwP/Vzsj/2tPM/93W0P/f2NH/4drU/+Lb1P/k3db/5+Ha/+fg2f/UzMX/ + xr21/8S7s//Iv7b/ysG5/8e+tP/Cua//ycC2/9/Wzf/17eX/9u3k//bt5P/37uT/+O7l//rv5v/88eb/ + /vTp//Hl1//WzLv/0sCh/9XNwHYAAAAA0M7IHcW/tUnX08wmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADh1cNZwbeu/8fBuv/QycT/1tDK/9jSy//b1M7/3dfQ/9/Y0v/h2tP/ + 4tvV/+Td1//n4dr/59/Y/+DY0f/c1Mz/3NTN/+HZ0v/o4Nj/8Ojh//Hq4v/x6OD/8unh//Pq4f/z6+P/ + 9ezk//ft5P/47uX/8ujd/9bKvf/cyKn/08ezuuzp6QIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzsCy+Ma/uv/PycP/ysC2/9bNxP/W0Mn/ + 2dPN/9zVzv/e19H/3tjS/+Da0//i29X/49zW/+bf2P/o4tv/5+DZ/87Cuf/o4Nj/6+Pc/+3l3v/u5t7/ + 7+ff//Dn3//x6OD/8unh//Pq4f/27eT/29DF/7Gmlf+5rZXx4d3YJgAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA59zQccO6sP/WzsT/ + 29HC/8rAsP/Ty8T/087I/9fRy//Z083/29XO/93X0P/f2NL/4NnT/+Hb1P/h29T/yb20/5+Oef+7rZ7/ + 5d7X/+ri2//r5Nz/7eXd/+3l3v/u5t7/7+fe/+/n3//y6uL/1cvB/56Sg/9ramDzzs3LHgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAN3a1UPa08luzca0oc3HuKHQxLTs0MjC/9LLxv/Vz8n/2NLM/9nTzf/a1c7/3NXQ/97X0f/e19H/ + wriv/6WWhv+3q6H/4tzV/+fg2f/o4dr/6eHb/+rj2//q49z/6+Pb/+zj3P/t5dz/5NvT/7Wnm/9iYFX/ + o6OdgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD049cVycG6/87Hwv/Qy8X/087I/9XPyf/X0cv/ + 2dPN/9nTzv/d1tD/1c7I/8a/t//Y0cv/49zW/+Pd1v/k3tf/59/Z/+ff2P/m39j/59/Y/+ff2P/n39f/ + 6uLa/8G3rf+PiHb/jIp/xtHRzgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + 7tzS/8mumf+niHLlm35oeJd7ZUaVe2VNln9oi5uGcebEuKv/4NrP/9XRxf/SzMH/2dTK/9zX0P/Pybv/ + 1Mq6/7+tkf+6qZOy6unpAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCmoE4ya2V8OvTwP/t18j/ + 7tvM/+3dzf/u3tH/6NnK/8+4qP+uk4D8oop07KWNee6yoI3/0ce4/97XzP/Y0cX/1MzA/9fQyf/s5d3/ + 0cOt/7ankde1qJW2rpuCysm+sEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGunEbJtJ3+ + 8NbE//Dayf/t1cP/6tfG/+nXxv/n2sv/6NzO/+HXyf/cz8D/3c/C/+Pay//d1sr/183C/9TNwP/Tzb// + 2tXK/9LEr/+6pYnmw7epP724rgG4q5gHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + waGMDcGsmsHWx7T/0b+s/9nFs//p1ML/5tLD/+PTxP/i08X/3tDA/6mVfv+yn4v/3NHE/9nQwP/Wy7// + 1czA/9fRwv/Ataf/gnhm/56SgrEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYB + AAAAANGHcAEAAAAAybipMsO9r5KxpZKhzbiku+PLt//m0b//48+//+DPwP/Xyrf/mIJq/8Gwn//ZzL7/ + 2M3A/9nQwv/UzL//1c2//8rCsf+Cem3/gnho2by0qRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUp4964su4/+HOvP/i0cL/4tPC/97Pvf/czb// + 2sy9/9zSwv/l3NX/2NDC/87Fsv/Tzb7/49zT/7uul/+ai3Lss6mcLwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANqxmajkzbn/69PF/+vcy//Zy7j7 + 2My8993LvP7czb7/4drP/8i4p/+8q5fMz72srM7Gtvi1qJn/opJ858O3pXLRx7wDAAAAAAAAAAAAAAAA + AAAAAPf39wEAAAAAAAAAAAAAAAAAAAAAAAAAAM2BaQEAAAAAAAAAAAAAAADlyLkC49XMW9/Juefn1sb/ + 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 + + \ No newline at end of file diff --git a/SCrawler/Editors/GlobalSettingsForm.vb b/SCrawler/Editors/GlobalSettingsForm.vb index c1283f5..ff4ea96 100644 --- a/SCrawler/Editors/GlobalSettingsForm.vb +++ b/SCrawler/Editors/GlobalSettingsForm.vb @@ -12,6 +12,19 @@ Imports PersonalUtilities.Forms.Toolbars Namespace Editors Friend Class GlobalSettingsForm : Implements IOkCancelToolbar Private ReadOnly MyDefs As DefaultFormProps(Of FieldsChecker) + Private Class SavedPostsChecker : Implements ICustomProvider + Private Function Convert(ByVal Value As Object, ByVal DestinationType As Type, ByVal Provider As IFormatProvider, + Optional ByVal NothingArg As Object = Nothing, Optional ByVal e As ErrorsDescriber = Nothing) As Object Implements ICustomProvider.Convert + If Not ACheck(Value) OrElse CStr(Value).Contains("/") Then + Return Nothing + Else + Return Value + End If + End Function + Private Function GetFormat(ByVal FormatType As Type) As Object Implements IFormatProvider.GetFormat + Throw New NotImplementedException() + End Function + End Class Friend Sub New() InitializeComponent() MyDefs = New DefaultFormProps(Of FieldsChecker) @@ -31,6 +44,7 @@ Namespace Editors TXT_MAX_JOBS_USERS.Value = .MaxUsersJobsCount.Value TXT_MAX_JOBS_CHANNELS.Value = .ChannelsMaxJobsCount.Value CH_CHECK_VER_START.Checked = .CheckUpdatesAtStart + TXT_IMGUR_CLIENT_ID.Text = .ImgurClientID 'Defaults CH_SEPARATE_VIDEO_FOLDER.Checked = .SeparateVideoFolder.Value CH_DEF_TEMP.Checked = .DefaultTemporary @@ -52,19 +66,31 @@ Namespace Editors OPT_FILE_DATE_START.Checked = Not .FileDateTimePositionEnd OPT_FILE_DATE_END.Checked = .FileDateTimePositionEnd 'Reddit - SetChecker(CH_REDDIT_TEMP, .RedditTemporary) - SetChecker(CH_REDDIT_DOWN_IMG, .RedditDownloadImages) - SetChecker(CH_REDDIT_DOWN_VID, .RedditDownloadVideos) + With .Site(Sites.Reddit) + SetChecker(CH_REDDIT_TEMP, .Temporary) + SetChecker(CH_REDDIT_DOWN_IMG, .DownloadImages) + SetChecker(CH_REDDIT_DOWN_VID, .DownloadVideos) + TXT_REDDIT_SAVED_POSTS_USER.Text = .SavedPostsUserName + End With 'Twitter - SetChecker(CH_TWITTER_TEMP, .TwitterTemporary) - SetChecker(CH_TWITTER_DOWN_IMG, .TwitterDownloadImages) - SetChecker(CH_TWITTER_DOWN_VID, .TwitterDownloadVideos) - CH_TWITTER_USER_MEDIA.Checked = .TwitterDefaultGetUserMedia + With .Site(Sites.Twitter) + SetChecker(CH_TWITTER_TEMP, .Temporary) + SetChecker(CH_TWITTER_DOWN_IMG, .DownloadImages) + SetChecker(CH_TWITTER_DOWN_VID, .DownloadVideos) + CH_TWITTER_USER_MEDIA.Checked = .GetUserMediaOnly + End With + 'Instagram + With .Site(Sites.Instagram) + SetChecker(CH_INSTA_TEMP, .Temporary) + SetChecker(CH_INSTA_DOWN_IMG, .DownloadImages) + SetChecker(CH_INSTA_DOWN_VID, .DownloadVideos) + End With End With .MyFieldsChecker = New FieldsChecker With .MyFieldsChecker .AddControl(Of String)(TXT_GLOBAL_PATH, TXT_GLOBAL_PATH.CaptionText) .AddControl(Of String)(TXT_COLLECTIONS_PATH, TXT_COLLECTIONS_PATH.CaptionText) + .AddControl(Of String)(TXT_REDDIT_SAVED_POSTS_USER, TXT_REDDIT_SAVED_POSTS_USER.CaptionText, True, New SavedPostsChecker) .EndLoaderOperations() End With .AppendDetectors() @@ -128,6 +154,7 @@ Namespace Editors .MaxUsersJobsCount.Value = CInt(TXT_MAX_JOBS_USERS.Value) .ChannelsMaxJobsCount.Value = TXT_MAX_JOBS_CHANNELS.Value .CheckUpdatesAtStart.Value = CH_CHECK_VER_START.Checked + .ImgurClientID.Value = TXT_IMGUR_CLIENT_ID.Text 'Defaults .SeparateVideoFolder.Value = CH_SEPARATE_VIDEO_FOLDER.Checked .DefaultTemporary.Value = CH_DEF_TEMP.Checked @@ -152,14 +179,25 @@ Namespace Editors .FileReplaceNameByDate.Value = False End If 'Reddit - SetPropByChecker(.RedditTemporary, CH_REDDIT_TEMP) - SetPropByChecker(.RedditDownloadImages, CH_REDDIT_DOWN_IMG) - SetPropByChecker(.RedditDownloadVideos, CH_REDDIT_DOWN_VID) + With .Site(Sites.Reddit) + SetPropByChecker(.Temporary, CH_REDDIT_TEMP) + SetPropByChecker(.DownloadImages, CH_REDDIT_DOWN_IMG) + SetPropByChecker(.DownloadVideos, CH_REDDIT_DOWN_VID) + .SavedPostsUserName.Value = TXT_REDDIT_SAVED_POSTS_USER.Text + End With 'Twitter - SetPropByChecker(.TwitterTemporary, CH_TWITTER_TEMP) - SetPropByChecker(.TwitterDownloadImages, CH_TWITTER_DOWN_IMG) - SetPropByChecker(.TwitterDownloadVideos, CH_TWITTER_DOWN_VID) - .TwitterDefaultGetUserMedia.Value = CH_TWITTER_USER_MEDIA.Checked + With .Site(Sites.Twitter) + SetPropByChecker(.Temporary, CH_TWITTER_TEMP) + SetPropByChecker(.DownloadImages, CH_TWITTER_DOWN_IMG) + SetPropByChecker(.DownloadVideos, CH_TWITTER_DOWN_VID) + .GetUserMediaOnly.Value = CH_TWITTER_USER_MEDIA.Checked + End With + 'Instagram + With .Site(Sites.Instagram) + SetPropByChecker(.Temporary, CH_INSTA_TEMP) + SetPropByChecker(.DownloadImages, CH_INSTA_DOWN_IMG) + SetPropByChecker(.DownloadVideos, CH_INSTA_DOWN_VID) + End With .EndUpdate() End With diff --git a/SCrawler/Editors/RedditEditorForm.Designer.vb b/SCrawler/Editors/RedditEditorForm.Designer.vb deleted file mode 100644 index 8a0db8a..0000000 --- a/SCrawler/Editors/RedditEditorForm.Designer.vb +++ /dev/null @@ -1,134 +0,0 @@ -Namespace Editors - - Partial Friend Class RedditEditorForm : Inherits System.Windows.Forms.Form - - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - Private components As System.ComponentModel.IContainer - - Private Sub InitializeComponent() - Dim TP_MAIN As System.Windows.Forms.TableLayoutPanel - Dim ActionButton1 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(RedditEditorForm)) - Dim ActionButton2 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Dim ActionButton3 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Dim ActionButton4 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Me.TXT_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended() - Me.TXT_COOKIES = New PersonalUtilities.Forms.Controls.TextBoxExtended() - Me.CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer() - TP_MAIN = New System.Windows.Forms.TableLayoutPanel() - TP_MAIN.SuspendLayout() - CType(Me.TXT_PATH, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.TXT_COOKIES, System.ComponentModel.ISupportInitialize).BeginInit() - Me.CONTAINER_MAIN.ContentPanel.SuspendLayout() - Me.CONTAINER_MAIN.SuspendLayout() - Me.SuspendLayout() - ' - 'TP_MAIN - ' - TP_MAIN.ColumnCount = 1 - TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - TP_MAIN.Controls.Add(Me.TXT_PATH, 0, 0) - TP_MAIN.Controls.Add(Me.TXT_COOKIES, 0, 1) - TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill - TP_MAIN.Location = New System.Drawing.Point(0, 0) - TP_MAIN.Name = "TP_MAIN" - TP_MAIN.RowCount = 2 - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) - TP_MAIN.Size = New System.Drawing.Size(524, 80) - TP_MAIN.TabIndex = 0 - ' - 'TXT_PATH - ' - ActionButton1.BackgroundImage = CType(resources.GetObject("ActionButton1.BackgroundImage"), System.Drawing.Image) - ActionButton1.Index = 0 - ActionButton1.Name = "BTT_OPEN" - ActionButton2.BackgroundImage = CType(resources.GetObject("ActionButton2.BackgroundImage"), System.Drawing.Image) - ActionButton2.Index = 1 - ActionButton2.Name = "BTT_CLEAR" - Me.TXT_PATH.Buttons.Add(ActionButton1) - Me.TXT_PATH.Buttons.Add(ActionButton2) - Me.TXT_PATH.CaptionText = "Path" - Me.TXT_PATH.CaptionToolTipEnabled = True - Me.TXT_PATH.CaptionToolTipText = "Specific path to store Reddit files" - Me.TXT_PATH.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_PATH.Location = New System.Drawing.Point(3, 3) - Me.TXT_PATH.Name = "TXT_PATH" - Me.TXT_PATH.Size = New System.Drawing.Size(518, 22) - Me.TXT_PATH.TabIndex = 0 - ' - 'TXT_COOKIES - ' - ActionButton3.BackgroundImage = CType(resources.GetObject("ActionButton3.BackgroundImage"), System.Drawing.Image) - ActionButton3.Index = 0 - ActionButton3.Name = "BTT_EDIT" - ActionButton4.BackgroundImage = CType(resources.GetObject("ActionButton4.BackgroundImage"), System.Drawing.Image) - ActionButton4.Index = 1 - ActionButton4.Name = "BTT_CLEAR" - Me.TXT_COOKIES.Buttons.Add(ActionButton3) - Me.TXT_COOKIES.Buttons.Add(ActionButton4) - Me.TXT_COOKIES.CaptionText = "Cookies" - Me.TXT_COOKIES.ClearTextByButtonClear = False - Me.TXT_COOKIES.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_COOKIES.Location = New System.Drawing.Point(3, 43) - Me.TXT_COOKIES.Name = "TXT_COOKIES" - Me.TXT_COOKIES.Size = New System.Drawing.Size(518, 22) - Me.TXT_COOKIES.TabIndex = 1 - Me.TXT_COOKIES.TextBoxReadOnly = True - ' - 'CONTAINER_MAIN - ' - ' - 'CONTAINER_MAIN.ContentPanel - ' - Me.CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN) - Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(524, 80) - Me.CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill - Me.CONTAINER_MAIN.LeftToolStripPanelVisible = False - Me.CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0) - Me.CONTAINER_MAIN.Name = "CONTAINER_MAIN" - Me.CONTAINER_MAIN.RightToolStripPanelVisible = False - Me.CONTAINER_MAIN.Size = New System.Drawing.Size(524, 80) - Me.CONTAINER_MAIN.TabIndex = 0 - Me.CONTAINER_MAIN.TopToolStripPanelVisible = False - ' - 'RedditEditorForm - ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(524, 80) - Me.Controls.Add(Me.CONTAINER_MAIN) - Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle - Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) - Me.KeyPreview = True - Me.MaximizeBox = False - Me.MaximumSize = New System.Drawing.Size(540, 119) - Me.MinimizeBox = False - Me.MinimumSize = New System.Drawing.Size(540, 119) - Me.Name = "RedditEditorForm" - Me.ShowInTaskbar = False - Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide - Me.Text = "Reddit" - TP_MAIN.ResumeLayout(False) - CType(Me.TXT_PATH, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.TXT_COOKIES, System.ComponentModel.ISupportInitialize).EndInit() - Me.CONTAINER_MAIN.ContentPanel.ResumeLayout(False) - Me.CONTAINER_MAIN.ResumeLayout(False) - Me.CONTAINER_MAIN.PerformLayout() - Me.ResumeLayout(False) - - End Sub - Private WithEvents CONTAINER_MAIN As ToolStripContainer - Private WithEvents TXT_PATH As PersonalUtilities.Forms.Controls.TextBoxExtended - Private WithEvents TXT_COOKIES As PersonalUtilities.Forms.Controls.TextBoxExtended - End Class -End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/RedditEditorForm.resx b/SCrawler/Editors/RedditEditorForm.resx deleted file mode 100644 index 5c7bfe6..0000000 --- a/SCrawler/Editors/RedditEditorForm.resx +++ /dev/null @@ -1,1341 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - False - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP - WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP - aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+ - 5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8 - vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB - cMaRN0UdBBkAAAAASUVORK5CYII= - - - - - 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 - AAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go - tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX - AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC - - - - - AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAEb/AABG/wMARv8PAEX/IgBF/0AARf9fAEX/fQBF/5wARf+6AEX/zQBF - /90ARf/rAEX/8wBF//gARf/8AEX//ABF//gARf/zAEX/6wBF/90ARf/NAEX/ugBF/5wARf99AEX/XwBF - /0AARf8iAEb/DwBG/wMARv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH/wAAR/8DAEb/FABG/zQARf9dAEX/iwBF - /7MARf/RAEX/5wBF//QARf/6AEX//gBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//gBF//oARf/0AEX/5wBF/9EARf+zAEX/iwBF/10ARv80AEb/FABH - /wMAR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASf8AAD//AABG - /wYARv8iAEX/UwBF/4sARf/AAEX/5QBF//cARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX/9wBF/+UARf/AAEX/iwBF/1MARv8iAEb/BgA//wAASf8AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAARv8AAEb/AwBF/x4ARv9WAEX/mQBF/9MARf/0AEX//gBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf/+AEX/9ABF/9MARf+ZAEb/VgBF/x4ARv8DAEb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH/wAAJv8AAEb/DABF/zsARf+FAEX/zABF - //QARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/0AEX/zABF - /4UARf87AEb/DAAm/wAAR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH - /wAASv8AAEb/EwBF/1AARf+nAEX/5gBF//0ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//QBF/+YARf+nAEX/UABG/xMASv8AAEf/AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH/wAAT/8AAEb/FABF/1oARf+3AEX/8ABF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf/wAEX/twBF/1oARv8UAE//AABH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI/wAAQ/8AAEX/DgBF - /1QARf+2AEX/8gBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/8gBF - /7YARf9UAEX/DgBD/wAASP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAARv8AAEb/BgBG/z4ARf+mAEX/8ABF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//AARf+mAEb/PgBG/wYARv8AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR/8AAFP/AABG/yAARf+FAEX/4wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf/jAEX/hQBG/yAAU/8AAEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAEb/AABG/wkARf9SAEX/wwBF//sARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/7AEX/wwBF - /1IARv8JAEb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEf/AAA8/wAARv8eAEX/igBF/+sARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/6wBF/4oARv8eADz/AABH/wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABG - /wAARv8DAEX/QABF/7sARf/7AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/+wBF/7sARf9AAEf/AwBG/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARv8AAEb/CgBF/2MARf/cAEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF/9wARf9jAEb/CgBG - /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARf8AAEX/AABF - /xUARf+HAEX/7wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF/+8ARf+HAEX/FQBF/wAARf8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAEf/AABD/wAARf8hAEX/oQBF//gARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //gARf+hAEX/IQBD/wAAR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH/wAAQv8AAEb/LQBF - /7UARf/8AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//wARf+1AEX/LQBB/wAAR/8AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAR/8AAD3/AABG/zMARf/AAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf/AAEb/MwA9/wAAR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEf/AAA8/wAARf83AEX/xgBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/GAEX/NwA8 - /wAAR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABG/wAAQ/8AAEb/MwBF/8YARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/GAEb/MwBD/wAARv8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR/8AAET/AABF/ywARf/AAEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf/AAEX/LABE/wAAR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAEX/AABF/wAARf8hAEX/tQBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf+1AEX/IQBF/wAARf8AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARf8AAEX/FQBF/6EARf/9AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//0ARf+hAEX/FQBF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAEX/AABG/woARf+HAEX/+QBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//kARf+HAEb/CgBF - /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABG/wAASP8CAEX/YwBF/+4ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF/+4ARf9jAEj/AgBG/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAARv8AAEP/AABF/0AARf/cAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AET//wBE//8AQ///AEP//wBC//8AQv//AEP//wBD//8AQ///AEP//wBC//8AQv//AEP//wBD - //8ARP//AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - /9wARf9AAEP/AABG/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF/wAARf8eAEX/uwBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AET//wBD//8AQ///AUT//wZJ//8QUP//HFn//yxk//87b///SHj//1F/ - //9Xhf//W4f//1uH//9Xhf//UX///0h4//87b///K2T//xxZ//8QUP//Bkn//wFE//8AQ///AEP//wBE - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF/7sARf8eAEX/AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAARv8AAEf/CABF/4oARf/7AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8AQ///AEP//wNG//8RUf//L2f//1WC - //97n///n7j//7vN///Q3f//4en//+rw///x9f//9ff///b5///3+f//9/n///b5///19///8fX//+rw - ///g6f//0N3//7rM//+euP//e57//1SB//8uZv//EVH//wNG//8AQ///AEP//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/+wBF/4oAR/8IAEb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEb/AABC/wAARf9TAEX/6wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE - //8AQ///Bkn//yNe//9Wg///i6r//7vO///h6f//9fj///7+//////////////////////////////// - ///////////////////////////////////////////////////////////////////9/v//9fj//+Hp - //+6zf//iqn//1WC//8iXf//Bkn//wBD//8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/6wBF/1MAQv8AAEb/AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAARf8AAEX/IABF/8MARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBD//8CRf//HVn//1eE//+atf//1N////X3//////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////9Pf//9Pf//+ZtP//VoP//xxZ - //8CRf//AEP//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX/wwBF/yAARf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEb/AABH/wUARf+FAEX//ABF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD//8GSP//MGf//3uf - ///J1///9Pf///////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////09///x9b//3qd//8uZv//Bkj//wBD//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/8AEX/hQBG - /wUARv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI - /wAARP8AAEb/PgBF/+IARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBD//8FR///MWj//42s///d5v///P3///////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////+/z//9zl//+Lqv//L2f//wRH//8AQ///AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/iAEX/PgBE/wAASP8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEX/AABG/w4ARf+lAEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8BRP//JmD//4Sl///b5f///f7///// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////39///a5P//gqT//yRf - //8BRP//AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf+lAEb/DgBF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH - /wAAQv8AAEX/VABF/+8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8AQ///DU3//1+K///M2v///P3///////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////7/P//ytn//1yI//8MTf//AEP//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF/+8ARf9UAEL/AABH/wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEb/AABG/xQARf+1AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AET//yZf//+ZtP//8fX///////////////////// - //////////////////////////////////////////////////////////////////////////////39 - ///09///6O7//9vl///O2///xNT//77Q//++0P//w9P//87b///b5f//6O7///T3///9/f////////// - //////////////////////////////////////////////////////////////////////////////// - ////////8PT//5ez//8kXv//AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF/7UARv8UAEb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABG - /wAARP8AAEX/WgBF//MARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AET//wJF - //9Cdf//xNP///39//////////////////////////////////////////////////////////////// - ///////////////////9/v//7fL//8nX//+dt///dZr//1KA//84bP//JV///xtY//8VVP//ElL//xFS - //8VVP//Glj//yVf//83bP//UoD//3SZ//+dt///yNf//+zx///9/v////////////////////////// - /////////////////////////////////////////////////////////f3//8HS//9Ac///AkX//wBE - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/8wBF/1oARP8AAEb/AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEX/AABF/xMARf+3AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBE//8FR///WYb//9zl//////////////////////////////// - ///////////////////////////////////////////////////4+v//y9n//4Sl//9Ddf//GVf//wZJ - //8ARP//AEP//wBD//8AQ///AEP//wBD//8ARP//AET//wBD//8AQ///AEP//wBD//8AQv//AET//wZJ - //8ZVv//QnT//4Ok///K2P//9/n///////////////////////////////////////////////////// - /////////////////////////////9rk//9Wg///BEf//wBE//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX/twBF/xMARf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH - /wAARP8AAEX/UABF//AARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//Bkj//2SN - ///m7f////////////////////////////////////////////////////////////////////////// - ///8/f//zNn//2qS//8fW///A0b//wBD//8ARP//AET//wBD//8AQv//AEP//wFF//8ER///CEr//wlL - //8JS///CEn//wRH//8BRf//AEP//wBC//8AQ///AET//wBE//8AQ///A0b//x5a//9okf//ytj///v8 - /////////////////////////////////////////////////////////////////////////////+Tr - //9hi///BUf//wBE//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/wAEX/UABE - /wAAR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEX/AABG/wwARf+nAEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wNG//9gi///6O7///////////////////////////////////// - ////////////////////////////////////////8vX//5Sw//8lX///AUT//wBD//8ARP//AEP//wJF - //8PT///KGL//0l5//9nkP//gqT//5ay//+kvP//q8H//6vB//+kvP//lrL//4Ok//9nkf//Snr//yli - //8PT///AkX//wBD//8ARP//AEP//wFE//8kXv//ka7///H1//////////////////////////////// - /////////////////////////////////////////////+bt//9diP//A0b//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf+nAEb/DABF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAABI - /wAARf8AAEX/OwBF/+YARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//Tn3//+Hp - //////////////////////////////////////////////////////////////////////////////H1 - //93m///DE3//wBD//8ARP//AEP//w1O//88cP//faD//7bJ///c5f//8fX///r7//////////////// - //////////////////////////////r8///x9f//3Ob//7bK//9+of//PXH//w5O//8AQ///AET//wBD - //8LTP//dJn///D0//////////////////////////////////////////////////////////////// - /////////////+Do//9Le///AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - /+YARf87AEX/AABG/wAAAAAAAAAAAAAAAAAAAAAAAEb/AABH/wMARf+FAEX//gBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEP//zBn///P3P////////////////////////////////////////// - ////////////////////////////////////////uMv//xFQ//8AQ///AET//wpL//9MfP//qsH//+fu - ///9/f////////////////////////////////////////////////////////////////////////// - //////////////3+///o7v//rML//059//8KS///AET//wBD//8QTv//tMj///////////////////// - /////////////////////////////////////////////////////////////8za//8tZf//AEP//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//gBF/4UASP8DAEb/AAAAAAAAAAAAAAAAAAAA - AAAARf8AAEX/HgBF/8wARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8SUf//pr7///// - //////////////////////////////////////////////////////////////////////////////// - //++z///F1T//wBB//8ZVv//i6r//+vw//////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////7PH//46s - //8aV///AEL//xVT//+7zf////////////////////////////////////////////////////////// - /////////////////////////////6O8//8QUP//AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/zABG/x4ARv8AAAAAAAAAAAAAAAAAAEb/AABF/wAARf9WAEX/9ABF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AUX//2eQ///19/////////////////////////////////////////// - //////////////////////////////////////////////X4//+euP//aZH//7DF///5+/////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////+vv//7LH//9pkf//m7b///X3//////////////// - ////////////////////////////////////////////////////////////////////////8/b//2ON - //8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/0AEX/VgBF/wAARv8AAAAAAAAA - AAAARv8AAEb/BgBF/5kARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD//8kXv//zdr///// - //////////////////////////////////////////////////////////////////////////////// - //////////////7+///7/P///v////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////v8///+/v////////////////////////////////////////////////////////// - ////////////////////////////////////////ytj//yFd//8ARP//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf+ZAEb/BgBG/wAAAAAAAAAAAABF/wAARv8iAEX/0wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AUX//3ab///7/P////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///6/P//cpj//wFF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF/9MARv8iAEX/AAAA - AAAAR/8AAEX/AABF/1MARf/0AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8bWP//yNf///// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////////////////E1P//GVf//wBE//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX/9ABF/1MARf8AAEf/AABG/wAASP8DAEX/iwBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEP//1SB///z9v////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////L1//9Qfv//AEP//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/iwBI - /wMARv8AAEb/AABG/xQARf/AAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ER///k6////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////46s//8DR///AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/AAEb/FABG/wAARf8AAEb/NABF/+UARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AET//xVU///D0/////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////v9D//xNS//8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - /+UARv80AEX/AABF/wAARf9cAEX/+ABF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8AQ///LmX//+Hp - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////////////////////////////////f5///KmP//wBD - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/+ABF/1wARf8AAEj/AwBF/4sARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBC//9Gd///8PT///////////////////////////////////// - //////////////////////////////////////////////////////////////X3///Q3f//r8T//6a+ - //+4y///3uf///v8//////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////+/z//97n//+3y///pr3//67E - ///Q3f//9ff///////////////////////////////////////////////////////////////////// - /////////////////////////////+/z//9DdP//AEL//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/iwBI/wMARv8PAEX/swBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEP//1WD - ///2+P////////////////////////////////////////////////////////////////////////// - //////////////3+///H1v//YIv//x9b//8LTP//CEr//w5P//8uZv//gaP//+Lq//////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////+Lq//+Bo///Lmb//w5P//8ISv//C0z//x9b//9giv//x9b///39//////////////// - ////////////////////////////////////////////////////////////////////////9ff//1GA - //8AQv//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf+zAEb/DwBF/yIARf/RAEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8AQ///XIj///j6//////////////////////////////// - ///////////////////////////////////////////////////9/v//rcP//ydh//8AQ///AEP//wBE - //8ARP//AET//wBD//8ER///S3z//9bh//////////////////////////////////////////////// - ///////////////////////////////////////////////////W4f//S3v//wRH//8AQ///AET//wBE - //8ARP//AEP//wBD//8mYP//rcL///3+//////////////////////////////////////////////// - ///////////////////////////////////3+f//WIX//wBD//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF/9EARf8iAEX/QABF/+cARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD - //9Yhf//9/n///////////////////////////////////////////////////////////////////// - /////////////8fW//8nYf//AEP//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8ARP//VoP//+vx - //////////////////////////////////////////////////////////////////////////////// - ////////6/H//1aD//8ARP//AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD//8nYP//x9b///// - //////////////////////////////////////////////////////////////////////////////b4 - //9Ugv//AEL//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/5wBF/0AARf9fAEX/8wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEH//0p5///y9v////////////////////////// - ///////////////////////////////////////////////////1+P//YIv//wBD//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBE//8LTP//oLn///////////////////////////////////// - //////////////////////////////////////////////////+guf//C0z//wBE//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBD//9gi///9fj///////////////////////////////////// - ////////////////////////////////////////8fX//0d2//8AQf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf/zAEX/XwBF/30ARf/6AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD - //8PT///dZr///X4//////////////////////////////////////////////////////////////// - /////////////9Dd//8fW///AEP//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD - //9Ugf//9Pf///////////////////////////////////////////////////////////////////// - ////////9Pf//1SB//8AQ///AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEP//x9b - ///Q3f////////////////////////////////////////////////////////////////////////// - ///09///dZr//xFQ//8AQ///AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//oARf99AEX/nABF - //4ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//K2T//6W9///y9v////////////////////////// - ////////////////////////////////////////////////////////r8T//wtM//8ARP//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEP//y9m///j6/////////////////////////// - ///////////////////////////////////////////////////j6///L2b//wBD//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//C0z//6/E//////////////////////////////// - ///////////////////////////////////////////////////z9v//qL///y1l//8ARP//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//gBF/5wARf+6AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AET//zBn - ///C0v////////////////////////////////////////////////////////////////////////// - //////////////////+mvv//CEr//wBE//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8AQ///JmD//97n//////////////////////////////////////////////////////////////// - /////////////97n//8mYP//AEP//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE - //8ISv//pr7///////////////////////////////////////////////////////////////////// - ////////////////////////xNT//zNp//8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/ugBF - /84ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBE//8aV///s8f///////////////////////////////////// - /////////////////////////////////////////////////////////////7jL//8PT///AET//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD//84bf//6O7///////////////////// - ////////////////////////////////////////////////////////6O7//zht//8AQ///AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AET//w9P//+4y/////////////////////////// - ////////////////////////////////////////////////////////////////////////tsr//xxY - //8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/OAEX/3QBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//Akb//3Wa - ///6+/////////////////////////////////////////////////////////////////////////// - ////////////////////////3uf//y9m//8AQ///AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEP//2mR///5+/////////////////////////////////////////////////////////// - ///////////////////5+///aZH//wBD//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8AQ///L2b//97n//////////////////////////////////////////////////////////////// - ///////////////////////////////////6/P//eZ3//wJG//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - /90ARf/rAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBE//8fW///zdr///////////////////////////////////// - ///////////////////////////////////////////////////////////////////8/f//gqP//wRH - //8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD//8aVv//vc////////////////////// - //////////////////////////////////////////////////////////////////+9z///Glb//wBD - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AET//wRH//+Co////P3///////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///Q3P//Il3//wBD//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/6wBF//MARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEP//1KA - ///09/////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////i6v//THz//wBE//8ARP//AEX//wBF//8ARf//AEX//wBF - //8AQ///Ckv//4Kk///5+v////////////////////////////////////////////////////////// - //////////////////////////////n6//+CpP//Ckv//wBD//8ARf//AEX//wBF//8ARf//AEX//wBE - //8ARP//THz//+Lq//////////////////////////////////////////////////////////////// - //////////////////////////////////////////////X4//9Wg///AEP//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf/zAEX/+ABF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//faD///////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///X4f//VoP//wpM//8AQv//AEP//wBD//8AQ///AEP//xlW//+CpP//7/T///////////////////// - /////////////////////////////////////////////////////////////////////////////+/0 - //+CpP//GVb//wBD//8AQ///AEP//wBD//8AQ///Ckz//1aD///X4f////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////4Kj//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//gARf/8AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wRH - //+UsP////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////////////////s8f//oLn//1SB//8vZv//JmD//zht - //9okf//vc////j6//////////////////////////////////////////////////////////////// - //////////////////////////////////////////////j6//+9z///aJH//zht//8mYP//L2b//1SB - //+guf//6/H///////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////mLP//wVH//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//ABF//wARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//BEf//5ay//////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////9Pf//+Pr///e5///6O7///n7//////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////5+///6O7//97n///j6///9Pf///////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////+atf//BUj//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/8AEX/+ABF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARP//f6L///////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////4Ol//8BRf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//gARf/zAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD//9Ugv//9Pf///////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////2+P//WIT//wBD//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/8wBF/+sARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEP//yBc///O2/////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////9Hd//8jXv//AEP//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf/rAEX/3QBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//Akb//3ic///6+/////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////7/P//e5///wNG//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF/90ARf/OAEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARP//G1j//7XJ//////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////7jL//8dWf//AET//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX/zgBF/7oARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//Mmn//8TU - /////////////////////////////////////////////////////////////+vw///a5P///P3///// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////+/z//9jj///q7/////////////////////////////////////////// - ///////////////////H1v//NWv//wBE//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf+6AEX/nABF - //4ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//LmX//6i////z9/////////////////////////// - //////////////z9///Q3P//Wob//y1l//+Usf//7fL///////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////+zx//+Sr///K2T//1eE - ///O2////P3////////////////////////////////////////09///q8H//zBn//8ARP//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//gBF/5wARf99AEX/+gBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8AQ///ElH//12I//+wxf//4On///P2///3+f//9fj//+rw///H1v//gKL//yli//8BRf//AEP//wtM - //9Ugv//vc7///f5//////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////b4//+7zf//UoH//wpL//8AQ///AUX//yhh//9+of//x9b//+rw///1+P//9/n///P2 - ///h6f//ssb//1+K//8TUv//AEP//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/6AEX/fQBF - /18ARf/0AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//AET//w5P//8uZv//THz//1mG - //9Tgf//O2///xlX//8DRv//AEP//wBF//8ARf//AET//wBE//8YVv//aZH//8jX///3+f////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////f5///H1v//Z5D//xdV//8ARP//AET//wBF - //8ARf//AEP//wNG//8YVv//O2///1OB//9Zhv//TXz//y9m//8PT///AET//wBE//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//MARf9fAEX/QABF/+cARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AET//wBD//8AQv//AEP//wBC//8AQ///AET//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBE//8BRP//Hlr//2WO//+6zP//8PT///////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////////+/0 - //+5zP//ZI3//x1Z//8BRP//AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8AQ///AEL//wBD - //8AQv//AEP//wBE//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/5wBF - /0AARf8iAEX/0QBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//AET//xRT - //9Nff//lbH//9Pf///2+P////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////9vj//9Le//+TsP//THz//xRT//8ARP//AET//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/RAEX/IgBG/w8ARf+zAEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AET//wBD//8FSP//I17//1qG//+Usf//x9b//+rw - ///6/P////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////r7///r8P//x9b//5Sw//9Zhf//I13//wVI - //8AQ///AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - /7MARv8PAEb/AwBF/4sARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8AQ///AEP//wVH//8YVv//PnH//2iR//+Sr///uMv//9fi///p7///9Pf///r7 - ///+/v/////////////////////////////////////////////+/v//+vv///P2///n7v//1uH//7nM - //+Sr///Z5D//z5x//8YVv//BUf//wBD//8AQ///AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/iwBI/wMARf8AAEX/XABF//gARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE - //8AQ///AEP//wRH//8PUP//Il3//zlu//9Qf///ZY///3id//+IqP//kq///8fW///+/v///////+7y - //+guf//iKj//3qd//9mj///Tn3//zZr//8hXP//EFD//wRH//8AQ///AEP//wBE//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //gARf9cAEX/AABF/wAARv80AEX/5QBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8AQ///AEP//wBC - //8AQ///AET//wFF//8BRf//YIr///j6////////4+v//zNp//8AQ///AET//wBD//8AQv//AEP//wBD - //8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/5QBG/zQARf8AAEb/AABG/xQARf/AAEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBC//84bf//6O7///// - ///1+P//VYL//wBC//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf/AAEb/FABG/wAARv8AAEj/AwBF/4sARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AET//xpY///M2f////////////9/of//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF/4sASP8DAEb/AABH/wAARf8AAEX/UwBF - //QARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//CUv//6e+ - /////////////6rA//8KS///AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf/0AEX/UwBF/wAAR/8AAAAAAABF/wAARv8iAEX/0wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//fJ////7+////////ztv//xxZ//8ARP//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF/9MARv8iAEX/AAAAAAAAAAAAAEb/AABH - /wYARf+ZAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBD - //9SgP//9Pf////////p7///Om///wBD//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/mQBH/wYARv8AAAAAAAAAAAAAR/8AAEX/AABG/1YARf/0AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEP//y5m///h6f////////j6//9hi///AEP//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//QARv9WAEX/AABH/wAAAAAAAAAAAAAA - AAAARf8AAEX/HgBF/8wARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARP//FFP//8LS/////////////4yr//8CRv//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/zABG/x4ARv8AAAAAAAAAAAAAAAAAAAAAAABG/wAAR/8DAEX/hQBF//4ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8GSP//m7b/////////////tcn//w5P - //8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//4ARf+FAEj/AwBG/wAAAAAAAAAAAAAA - AAAAAAAAAEj/AABF/wAARf87AEX/5gBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBD//9vlv///P3////////X4v//JF7//wBD//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8AQ///Akb//wZI - //8ER///AEP//wBD//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/5gBF/zsARf8AAEb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEX/AABG/wwARf+nAEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEL//0d4///w9P///////+/z - //9Fdv//AEL//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARP//F1X//1KA//+IqP//nrj//5Sw//9qkv//KmP//wNG//8ARP//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf+nAEb/DABF/wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAR/8AAET/AABF/1EARf/wAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8AQ///JV///9nj////////+/z//22U//8AQ///AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//A0b//0V3//+6zP//8/b///// - //////////////r8///V4P//b5X//w5O//8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/8ABF/1EARP8AAEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARf8AAEb/EwBF - /7cARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8PT///t8r///// - ////////mbT//wVI//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//9Nff//3eb////////////////////////////////////////09///haX//wtM - //8ARP//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf+3AEb/EwBF/wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH/wAAQv8AAEX/WgBF//MARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wNG//+Prf/////////////A0f//E1L//wBE//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8AQ///JWD//8rZ//////////////// - ///////////////////////////////////v8///Wob//wBE//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/8wBF/1oAQv8AAEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABG - /wAARv8UAEX/tQBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEP//2ON - ///5+////////+Do//8sZf//AEP//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//92m////P3///////////////////////////////////////////////////// - //+7zf//FFP//wBE//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf+1AEb/FABG/wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEf/AABC/wAARf9UAEX/7wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8AQ///PHD//+vw////////9Pf//1B///8AQ///AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8AQv//Dk3//7XJ//////////////// - /////////////////////////////////////////////+rw//88cP//AEP//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/7wBF/1QAQv8AAEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAEX/AABG/w4ARf+lAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE - //8dWv//0N3////////+/v//ep3//wBE//8ARf//AEX//wBF//8ARf//AEX//wBE//8ARP//AEP//wBD - //8DRv//Dk///yNe//9Xg///3+f///////////////////////////////////////////////////// - ////////9vj//1aD//8AQ///AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf+lAEb/DgBF/wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASP8AAET/AABF/z4ARf/iAEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AET//wpM//+swv////////////+lvf//CEr//wBE - //8ARP//AEP//wBC//8BRf//Ckz//xxZ//87b///Yoz//42s//+2yv//2OP///D0///+/v////////// - ///////////////////////////////////////////////////2+P//VoP//wBD//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/4gBF/z4ARP8AAEj/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAARv8AAEb/BQBF/4UARf/8AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AUX//4Kj/////////////8rY//8ZVv//BUj//xZV//8xaP//VoP//4Ci//+rwf//z9z//+rv - ///5+v////////////////////////////////////////////////////////////////////////// - /////////////+rw//88cP//AEP//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//wARf+FAEb/BQBG/wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARf8AAEb/IABF - /8MARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8AQv//V4T///b4////////7fL//5Cu - //+dt///xdX//+Tr///1+P///v7///////////////////////////////////v8///u8///5+3///z9 - ////////////////////////////////////////////////////////u83//xRT//8ARP//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX/wwBG/yAARf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH/wAAP/8AAEX/UwBF/+sARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBD//8yaf//5Ov//////////////v7///////////////////////////////////3+ - ///09///4On//8HR//+atf//bpX//0R2//9Bc///y9n///////////////////////////////////// - /////////////+/z//9ahv//AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF/+sARf9TAD//AABH/wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABG - /wAAR/8IAEX/igBF//sARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AET//xZV///F1f////////// - ///////////////////3+f//5+7//8vZ//+mvv//e57//1F///8tZf//FFP//wVI//8AQ///AEL//wBD - //9Nff//3eb////////////////////////////////////////09///haX//wtM//8ARP//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf/7AEX/igBH/wgARv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF/wAARf8eAEX/uwBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//BEf//3ic///t8v//7fL//9Xg//+xxv//iKj//12I//83bP//Glf//wlK - //8BRP//AEP//wBD//8ARP//AEX//wBF//8ARf//AEX//wNG//9Gd///us3///P3//////////////// - ///6/P//1eD//2+V//8OTv//AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF/7sARf8eAEX/AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAEb/AABD/wAARf9AAEX/3ABF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//Dk7//0J0 - //9Bc///IVz//wxN//8CRv//AEP//wBD//8ARP//AET//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBE//8YVf//VIL//4io//+dt///lLD//2qS//8qY///A0b//wBE//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf/cAEX/QABD/wAARv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEb/AABI/wIARf9jAEX/7gBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARP//AEP//wBD//8AQ///AET//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBE//8AQ///AkX//wZI - //8ER///AEP//wBD//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/7gBF/2MASP8CAEb/AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAEX/AABG/woARf+HAEX/+QBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //kARf+HAEb/CgBF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEX/AABF - /xUARf+hAEX//QBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/9AEX/oQBF/xUARf8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARf8AAEX/AABF/yEARf+1AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - /7UARf8hAEX/AABF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAR/8AAET/AABG/ywARf/AAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/AAEX/LABE/wAAR/8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARv8AAEP/AABG/zMARf/GAEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/xgBG - /zMAQ/8AAEb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAR/8AADz/AABF/zcARf/GAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF/8YARf83ADz/AABH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR/8AAD3/AABG - /zMARf/AAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/AAEb/MwA9 - /wAAR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR/8AAEH/AABF/y0ARf+1AEX//ABF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf/8AEX/tQBF/y0AQf8AAEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAR/8AAEP/AABF/yEARf+hAEX/+ABF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/+ABF/6EARf8hAEP/AABH - /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARf8AAEX/AABF/xUARf+HAEX/7wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF/+8ARf+HAEX/FQBF/wAARf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAEb/AABG/woARf9jAEX/3ABF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf/cAEX/YwBG/woARv8AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEb/AABH - /wMARf9AAEX/uwBF//sARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf/7AEX/uwBF/0AAR/8DAEb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEf/AAA8/wAARv8eAEX/igBF/+sARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/6wBF/4oARv8eAD//AABH/wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABG/wAARv8JAEX/UgBF/8MARf/7AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/+wBF - /8MARf9SAEb/CQBG/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABG/wAASP8AAEX/IABF - /4UARf/jAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF/+MARf+FAEX/IABI/wAARv8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARv8AAEb/BgBG/z4ARf+mAEX/8ABF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//AARf+mAEb/PgBG - /wYARv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAASP8AAEP/AABF/w4ARf9UAEX/tQBF//IARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//IARf+1AEX/VABF/w4AQ/8AAEj/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEf/AABP/wAARv8UAEX/WgBF - /7cARf/wAEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//AARf+3AEX/WgBG/xQAT/8AAEf/AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF/wAARP8AAEX/EwBF/1AARf+nAEX/5gBF//0ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//QBF - /+YARf+nAEX/UABF/xMARP8AAEX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAR/8AACf/AABG/wwARf87AEX/hQBF/8wARf/0AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX/9ABF/8wARf+FAEX/OwBG/wwAJ/8AAEf/AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABG/wAAR/8DAEb/HgBF - /1YARf+YAEX/0wBF//QARf/+AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//4ARf/0AEX/0wBF/5gARf9WAEb/HgBH - /wMARv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASf8AAD//AABG/wYARv8iAEX/UwBF/4sARf/AAEX/5QBF - //cARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX/9wBF - /+UARf/AAEX/iwBF/1MARv8iAEb/BgA//wAASf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAR/8AAEf/AwBG/xQARv80AEX/XQBF/4sARf+zAEX/0QBF/+cARf/0AEX/+gBF - //4ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF//8ARf//AEX//wBF - //4ARf/6AEX/9ABF/+cARf/RAEX/swBF/4sARf9dAEb/NABG/xQAR/8DAEf/AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAR/8AAEf/AwBG/w8ARf8iAEX/QABF/18ARf99AEX/nABF/7oARf/NAEX/3QBF/+sARf/zAEX/+ABF - //wARf/8AEX/+ABF//MARf/rAEX/3QBF/80ARf+6AEX/nABF/30ARf9fAEX/QABF/yIARv8PAEf/AwBH - /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA////////wAAAA////////////////AAAAAA//////////////+AAAAAA - B/////////////8AAAAAAAD////////////8AAAAAAAAP///////////8AAAAAAAAA///////////8AA - AAAAAAAD//////////8AAAAAAAAAAP/////////8AAAAAAAAAAA/////////+AAAAAAAAAAAH/////// - /+AAAAAAAAAAAAf////////AAAAAAAAAAAAD////////AAAAAAAAAAAAAP///////gAAAAAAAAAAAAB/ - //////wAAAAAAAAAAAAAP//////4AAAAAAAAAAAAAB//////8AAAAAAAAAAAAAAP/////+AAAAAAAAAA - AAAAB//////AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAB/////wAAAAAAAAAAAAAAAP////4AAAAA - AAAAAAAAAAB////8AAAAAAAAAAAAAAAAP///+AAAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAP///w - AAAAAAAAAAAAAAAAD///4AAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA - A///gAAAAAAAAAAAAAAAAAH//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA - AAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA/+AAAAAAA - AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAD+AA - AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA - AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA - AAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA+AA - AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAB/AAAAAAAAAAAAAAAAAA - AA/wAAAAAAAAAAAAAAAAAAAP+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/8AAAAAAAAAAAA - AAAAAAA//AAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAB//wAAAAAA - AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAD///A - AAAAAAAAAAAAAAAAA///4AAAAAAAAAAAAAAAAAf///AAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAA - D///+AAAAAAAAAAAAAAAAB////wAAAAAAAAAAAAAAAA////+AAAAAAAAAAAAAAAAf////wAAAAAAAAAA - AAAAAP////+AAAAAAAAAAAAAAAH/////wAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAAAB//////wAAAA - AAAAAAAAAA//////+AAAAAAAAAAAAAAf//////wAAAAAAAAAAAAAP//////+AAAAAAAAAAAAAH////// - /wAAAAAAAAAAAAD////////AAAAAAAAAAAAD////////4AAAAAAAAAAAB/////////gAAAAAAAAAAB// - ///////8AAAAAAAAAAA//////////wAAAAAAAAAA///////////AAAAAAAAAA///////////8AAAAAAA - AA////////////wAAAAAAAA/////////////AAAAAAAA/////////////+AAAAAAB//////////////8 - AAAAAD///////////////8AAAAP///////8= - - - \ No newline at end of file diff --git a/SCrawler/Editors/RedditEditorForm.vb b/SCrawler/Editors/RedditEditorForm.vb deleted file mode 100644 index 92605a3..0000000 --- a/SCrawler/Editors/RedditEditorForm.vb +++ /dev/null @@ -1,76 +0,0 @@ -' Copyright (C) 2022 Andy -' This program is free software: you can redistribute it and/or modify -' it under the terms of the GNU General Public License as published by -' the Free Software Foundation, either version 3 of the License, or -' (at your option) any later version. -' -' This program is distributed in the hope that it will be useful, -' but WITHOUT ANY WARRANTY -Imports PersonalUtilities.Forms -Imports PersonalUtilities.Forms.Controls -Imports PersonalUtilities.Forms.Controls.Base -Imports PersonalUtilities.Forms.Toolbars -Imports PersonalUtilities.Tools.WEB -Namespace Editors - Friend Class RedditEditorForm : Implements IOkCancelToolbar - Private ReadOnly MyDefs As DefaultFormProps - Friend Sub New() - InitializeComponent() - MyDefs = New DefaultFormProps - End Sub - Private Sub RedditEditorForm_Load(sender As Object, e As EventArgs) Handles Me.Load - Try - With MyDefs - .MyViewInitialize(Me, Settings.Design, True) - .AddOkCancelToolbar() - .DelegateClosingChecker() - With Settings.Site(Sites.Reddit) - TXT_PATH.Text = .Path - If .Responser.Cookies Is Nothing Then .Responser.Cookies = New CookieKeeper(.Responser.CookiesDomain) - End With - SetCookieText() - TextBoxExtended.SetFalseDetector(Me, True, AddressOf .Detector) - .EndLoaderOperations() - End With - Catch ex As Exception - MyDefs.InvokeLoaderError(ex) - End Try - End Sub - Private Sub ToolbarBttOK() Implements IOkCancelToolbar.ToolbarBttOK - With Settings.Site(Sites.Reddit) - If TXT_PATH.IsEmptyString Then .Path = Nothing Else .Path = TXT_PATH.Text - .Update() - End With - MyDefs.CloseForm() - End Sub - Private Sub ToolbarBttCancel() Implements IOkCancelToolbar.ToolbarBttCancel - MyDefs.CloseForm(DialogResult.Cancel) - End Sub - Private Sub TXT_PATH_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_PATH.ActionOnButtonClick - If Sender.DefaultButton = ActionButton.DefaultButtons.Open Then - Dim f As SFile = SFile.SelectPath(Settings.Site(Sites.Reddit).Path) - If Not f.IsEmptyString Then TXT_PATH.Text = f - End If - End Sub - Private Sub TXT_COOKIES_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_COOKIES.ActionOnButtonClick - If Sender.DefaultButton = ActionButton.DefaultButtons.Edit Then - Using f As New CookieListForm(Settings.Site(Sites.Reddit).Responser.Cookies) : f.ShowDialog() : End Using - SetCookieText() - End If - End Sub - Private Sub TXT_COOKIES_ActionOnButtonClearClick() Handles TXT_COOKIES.ActionOnButtonClearClick - With Settings.Site(Sites.Reddit).Responser - If Not .Cookies Is Nothing Then .Cookies.Dispose() - .Cookies = New CookieKeeper(.CookiesDomain) - End With - SetCookieText() - End Sub - Private Sub SetCookieText() - Dim c% = 0 - With Settings.Site(Sites.Reddit).Responser - If Not .Cookies Is Nothing Then c = .Cookies.Count - End With - TXT_COOKIES.Text = $"{c} cookies" - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/TwitterEditorForm.Designer.vb b/SCrawler/Editors/SiteEditorForm.Designer.vb similarity index 81% rename from SCrawler/Editors/TwitterEditorForm.Designer.vb rename to SCrawler/Editors/SiteEditorForm.Designer.vb index b4f8f68..3064a4e 100644 --- a/SCrawler/Editors/TwitterEditorForm.Designer.vb +++ b/SCrawler/Editors/SiteEditorForm.Designer.vb @@ -1,6 +1,6 @@ Namespace Editors - Partial Friend Class TwitterEditorForm : Inherits System.Windows.Forms.Form + Partial Friend Class SiteEditorForm : Inherits System.Windows.Forms.Form Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try @@ -14,21 +14,20 @@ Private components As System.ComponentModel.IContainer Private Sub InitializeComponent() - Dim TP_MAIN As System.Windows.Forms.TableLayoutPanel Dim ActionButton1 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(TwitterEditorForm)) + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(SiteEditorForm)) Dim ActionButton2 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim ActionButton3 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim ActionButton4 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim ActionButton5 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim ActionButton6 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Me.TP_MAIN = New System.Windows.Forms.TableLayoutPanel() Me.TXT_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_COOKIES = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_TOKEN = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_AUTH = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer() - TP_MAIN = New System.Windows.Forms.TableLayoutPanel() - TP_MAIN.SuspendLayout() + Me.TP_MAIN.SuspendLayout() CType(Me.TXT_PATH, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TXT_COOKIES, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TXT_TOKEN, System.ComponentModel.ISupportInitialize).BeginInit() @@ -39,23 +38,23 @@ ' 'TP_MAIN ' - TP_MAIN.ColumnCount = 1 - TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - TP_MAIN.Controls.Add(Me.TXT_PATH, 0, 0) - TP_MAIN.Controls.Add(Me.TXT_COOKIES, 0, 1) - TP_MAIN.Controls.Add(Me.TXT_TOKEN, 0, 2) - TP_MAIN.Controls.Add(Me.TXT_AUTH, 0, 3) - TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill - TP_MAIN.Location = New System.Drawing.Point(0, 0) - TP_MAIN.Name = "TP_MAIN" - TP_MAIN.RowCount = 4 - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) - TP_MAIN.Size = New System.Drawing.Size(544, 107) - TP_MAIN.TabIndex = 0 + Me.TP_MAIN.ColumnCount = 1 + Me.TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TP_MAIN.Controls.Add(Me.TXT_PATH, 0, 0) + Me.TP_MAIN.Controls.Add(Me.TXT_COOKIES, 0, 1) + Me.TP_MAIN.Controls.Add(Me.TXT_TOKEN, 0, 2) + Me.TP_MAIN.Controls.Add(Me.TXT_AUTH, 0, 3) + Me.TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill + Me.TP_MAIN.Location = New System.Drawing.Point(0, 0) + Me.TP_MAIN.Name = "TP_MAIN" + Me.TP_MAIN.RowCount = 4 + Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + Me.TP_MAIN.Size = New System.Drawing.Size(544, 132) + Me.TP_MAIN.TabIndex = 0 ' 'TXT_PATH ' @@ -89,7 +88,7 @@ Me.TXT_COOKIES.CaptionText = "Cookies" Me.TXT_COOKIES.ClearTextByButtonClear = False Me.TXT_COOKIES.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_COOKIES.Location = New System.Drawing.Point(3, 29) + Me.TXT_COOKIES.Location = New System.Drawing.Point(3, 36) Me.TXT_COOKIES.Name = "TXT_COOKIES" Me.TXT_COOKIES.Size = New System.Drawing.Size(538, 22) Me.TXT_COOKIES.TabIndex = 1 @@ -105,7 +104,7 @@ Me.TXT_TOKEN.CaptionToolTipEnabled = True Me.TXT_TOKEN.CaptionToolTipText = "Set token from [x-csrf-token] response header" Me.TXT_TOKEN.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_TOKEN.Location = New System.Drawing.Point(3, 55) + Me.TXT_TOKEN.Location = New System.Drawing.Point(3, 69) Me.TXT_TOKEN.Name = "TXT_TOKEN" Me.TXT_TOKEN.Size = New System.Drawing.Size(538, 22) Me.TXT_TOKEN.TabIndex = 2 @@ -121,7 +120,7 @@ Me.TXT_AUTH.CaptionToolTipText = "Set authorization from [authorization] response header. This field must start fro" & "m [Bearer] key word" Me.TXT_AUTH.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_AUTH.Location = New System.Drawing.Point(3, 81) + Me.TXT_AUTH.Location = New System.Drawing.Point(3, 102) Me.TXT_AUTH.Name = "TXT_AUTH" Me.TXT_AUTH.Size = New System.Drawing.Size(538, 22) Me.TXT_AUTH.TabIndex = 3 @@ -131,8 +130,8 @@ ' 'CONTAINER_MAIN.ContentPanel ' - Me.CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN) - Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(544, 107) + Me.CONTAINER_MAIN.ContentPanel.Controls.Add(Me.TP_MAIN) + Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(544, 132) Me.CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill Me.CONTAINER_MAIN.LeftToolStripPanelVisible = False Me.CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0) @@ -142,24 +141,23 @@ Me.CONTAINER_MAIN.TabIndex = 0 Me.CONTAINER_MAIN.TopToolStripPanelVisible = False ' - 'TwitterEditorForm + 'SiteEditorForm ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(544, 132) Me.Controls.Add(Me.CONTAINER_MAIN) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle - Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.KeyPreview = True Me.MaximizeBox = False Me.MaximumSize = New System.Drawing.Size(560, 171) Me.MinimizeBox = False Me.MinimumSize = New System.Drawing.Size(560, 171) - Me.Name = "TwitterEditorForm" + Me.Name = "SiteEditorForm" Me.ShowInTaskbar = False Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide - Me.Text = "Twitter" - TP_MAIN.ResumeLayout(False) + Me.Text = "Site" + Me.TP_MAIN.ResumeLayout(False) CType(Me.TXT_PATH, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TXT_COOKIES, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TXT_TOKEN, System.ComponentModel.ISupportInitialize).EndInit() @@ -176,5 +174,6 @@ Private WithEvents TXT_COOKIES As PersonalUtilities.Forms.Controls.TextBoxExtended Private WithEvents TXT_TOKEN As PersonalUtilities.Forms.Controls.TextBoxExtended Private WithEvents TXT_AUTH As PersonalUtilities.Forms.Controls.TextBoxExtended + Private WithEvents TP_MAIN As TableLayoutPanel End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/TwitterEditorForm.resx b/SCrawler/Editors/SiteEditorForm.resx similarity index 92% rename from SCrawler/Editors/TwitterEditorForm.resx rename to SCrawler/Editors/SiteEditorForm.resx index 59ee30e..42ac1a2 100644 --- a/SCrawler/Editors/TwitterEditorForm.resx +++ b/SCrawler/Editors/SiteEditorForm.resx @@ -117,9 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - False - @@ -220,19 +217,6 @@ xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC - - - - - AAABAAEAICAAAAEAIADLAQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAZJJ - REFUeAFiGDZgFMguBPBazwB6BEAUx2PbttHFqmJ2sW1UsbrY6NLFrmL2sW3jbMz9z1rNqvh9wry3QnQ5 - LMRdRCAez7AVDQ1+3w2lc9+UwXwP4W3wFGIiBhPQANNxDScKDhgDwWIX4XXxCWIjDekQ/EKjgkP2QJCO - DcoCRyAKbzAY07Ewd8hRSAHnUMtBeA0kQxQSIXiM6rmD9kKK+I7pKGlRYAzEhQeoX3DQWIiJJ5iFSgYF - 5kCUHqFy0UHl8QViIQ6nsAjdUBujIUrXzVbncKRCFFIgSheMwtdiClaqh+odNiqwDxKSFWarX0LS16hA - SdyHBCwa5c12wk74DwnQMbszW1c8gwRksF2B2uiIdfgL8dETlLQr0CLAw3CM06vblgDCL2kur6VxAuKT - CDTT3mSUxDx8hHiQipGqcIMi3XEPopSO6V7DR+ApRCkJU9yElkEvrPVwPniLXprQgbiNLx4PwXjsQGW3 - 9/TTcQfpEIVf2KLa023KtMJSHMMj/IEgFf/xEhexGQNQJmMMQxmMAgBkarVAZoTAyQAAAABJRU5ErkJg - gg== \ No newline at end of file diff --git a/SCrawler/Editors/SiteEditorForm.vb b/SCrawler/Editors/SiteEditorForm.vb new file mode 100644 index 0000000..755bac6 --- /dev/null +++ b/SCrawler/Editors/SiteEditorForm.vb @@ -0,0 +1,141 @@ +' Copyright (C) 2022 Andy +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Imports PersonalUtilities.Forms +Imports PersonalUtilities.Forms.Controls +Imports PersonalUtilities.Forms.Controls.Base +Imports PersonalUtilities.Forms.Toolbars +Imports PersonalUtilities.Tools.WEB +Namespace Editors + Friend Class SiteEditorForm : Implements IOkCancelToolbar + Private ReadOnly MyDefs As DefaultFormProps(Of FieldsChecker) + Private ReadOnly MySite As Sites + Friend Sub New(ByVal s As Sites) + InitializeComponent() + MySite = s + MyDefs = New DefaultFormProps(Of FieldsChecker) + End Sub + Private Sub SiteEditorForm_Load(sender As Object, e As EventArgs) Handles Me.Load + Try + With MyDefs + .MyViewInitialize(Me, Settings.Design, True) + .AddOkCancelToolbar() + .DelegateClosingChecker() + Select Case MySite + Case Sites.Reddit : Icon = My.Resources.RedditIcon + Case Sites.Twitter : Icon = My.Resources.TwitterIcon + Case Sites.Instagram : Icon = My.Resources.InstagramIcon + Case Else : ShowIcon = False + End Select + Text = MySite.ToString + + With Settings(MySite) + TXT_PATH.Text = .Path + With .Responser + If .Cookies Is Nothing Then .Cookies = New CookieKeeper(.CookiesDomain) + SetCookieText() + If MySite = Sites.Twitter Then + TXT_TOKEN.Text = .Headers(API.Base.SiteSettings.Header_Twitter_Token) + TXT_AUTH.Text = .Headers(API.Base.SiteSettings.Header_Twitter_Authorization) + End If + End With + If MySite = Sites.Instagram Then TXT_TOKEN.Text = .InstaHash + End With + + If Not MySite = Sites.Twitter Then + Dim p As PaddingE = PaddingE.GetOf({TP_MAIN}) + Dim s As New Size(Size.Width, Size.Height - p.Vertical - TXT_AUTH.NeededHeight) + TXT_AUTH.Visible = False + If Not MySite = Sites.Instagram Then + s.Height -= (p.Vertical + TXT_TOKEN.NeededHeight) + TXT_TOKEN.Visible = False + Else + TXT_TOKEN.CaptionText = "Hash" + TXT_TOKEN.CaptionToolTipText = "Instagram session hash" + TXT_TOKEN.Buttons.Clear() + TXT_TOKEN.Buttons.AddRange({ActionButton.DefaultButtons.Refresh, ActionButton.DefaultButtons.Clear}) + End If + With TP_MAIN + If Not MySite = Sites.Instagram Then .RowStyles(2).Height = 0 + .RowStyles(3).Height = 0 + End With + MinimumSize = s + Size = s + MaximumSize = s + End If + + .MyFieldsChecker = New FieldsChecker + With .MyFieldsChecker + If MySite = Sites.Twitter Then + .AddControl(Of String)(TXT_TOKEN, TXT_TOKEN.CaptionText) + .AddControl(Of String)(TXT_AUTH, TXT_AUTH.CaptionText) + End If + .EndLoaderOperations() + End With + TextBoxExtended.SetFalseDetector(Me, True, AddressOf .Detector) + .EndLoaderOperations() + End With + Catch ex As Exception + MyDefs.InvokeLoaderError(ex) + End Try + End Sub + Private Sub ToolbarBttOK() Implements IOkCancelToolbar.ToolbarBttOK + If MyDefs.MyFieldsChecker.AllParamsOK Then + With Settings(MySite) + If TXT_PATH.IsEmptyString Then .Path = Nothing Else .Path = TXT_PATH.Text + Select Case MySite + Case Sites.Twitter + With .Responser + .Headers(API.Base.SiteSettings.Header_Twitter_Token) = TXT_TOKEN.Text + .Headers(API.Base.SiteSettings.Header_Twitter_Authorization) = TXT_AUTH.Text + End With + Case Sites.Instagram + .InstaHash.Value = TXT_TOKEN.Text + End Select + .Update() + End With + MyDefs.CloseForm() + End If + End Sub + Private Sub ToolbarBttCancel() Implements IOkCancelToolbar.ToolbarBttCancel + MyDefs.CloseForm(DialogResult.Cancel) + End Sub + Private Sub TXT_TOKEN_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_TOKEN.ActionOnButtonClick + If Sender.DefaultButton = ActionButton.DefaultButtons.Refresh Then + With Settings(Sites.Instagram) + If .GatherInstaHash() Then + .InstaHashUpdateRequired.Value = Not .InstaHash.IsEmptyString + TXT_TOKEN.Text = .InstaHash + End If + End With + End If + End Sub + Private Sub TXT_PATH_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_PATH.ActionOnButtonClick + If Sender.DefaultButton = ActionButton.DefaultButtons.Open Then + Dim f As SFile = SFile.SelectPath(Settings(MySite).Path) + If Not f.IsEmptyString Then TXT_PATH.Text = f + End If + End Sub + Private Sub TXT_COOKIES_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_COOKIES.ActionOnButtonClick + If Sender.DefaultButton = ActionButton.DefaultButtons.Edit Then + Using f As New CookieListForm(Settings(MySite).Responser.Cookies) With {.MyDesignXML = Settings.Design} : f.ShowDialog() : End Using + SetCookieText() + End If + End Sub + Private Sub TXT_COOKIES_ActionOnButtonClearClick() Handles TXT_COOKIES.ActionOnButtonClearClick + With Settings(MySite).Responser + If Not .Cookies Is Nothing Then .Cookies.Dispose() + .Cookies = New CookieKeeper(.CookiesDomain) + End With + SetCookieText() + End Sub + Private Sub SetCookieText() + TXT_COOKIES.Text = $"{If(Settings(MySite).Responser.Cookies?.Count, 0)} cookies" + End Sub + End Class +End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/SiteSelectionForm.Designer.vb b/SCrawler/Editors/SiteSelectionForm.Designer.vb new file mode 100644 index 0000000..8ffb952 --- /dev/null +++ b/SCrawler/Editors/SiteSelectionForm.Designer.vb @@ -0,0 +1,107 @@ +' Copyright (C) 2022 Andy +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Namespace Editors + + Partial Friend Class SiteSelectionForm : Inherits System.Windows.Forms.Form + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + Private components As System.ComponentModel.IContainer + + Private Sub InitializeComponent() + Dim CONTAINER_MAIN As System.Windows.Forms.ToolStripContainer + Dim ActionButton1 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(SiteSelectionForm)) + Dim ListColumn1 As PersonalUtilities.Forms.Controls.Base.ListColumn = New PersonalUtilities.Forms.Controls.Base.ListColumn() + Dim ListColumn2 As PersonalUtilities.Forms.Controls.Base.ListColumn = New PersonalUtilities.Forms.Controls.Base.ListColumn() + Me.CMB_SITES = New PersonalUtilities.Forms.Controls.ComboBoxExtended() + CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer() + CONTAINER_MAIN.ContentPanel.SuspendLayout() + CONTAINER_MAIN.SuspendLayout() + CType(Me.CMB_SITES, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'CONTAINER_MAIN + ' + ' + 'CONTAINER_MAIN.ContentPanel + ' + CONTAINER_MAIN.ContentPanel.Controls.Add(Me.CMB_SITES) + CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(284, 276) + CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill + CONTAINER_MAIN.LeftToolStripPanelVisible = False + CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0) + CONTAINER_MAIN.Name = "CONTAINER_MAIN" + CONTAINER_MAIN.RightToolStripPanelVisible = False + CONTAINER_MAIN.Size = New System.Drawing.Size(284, 276) + CONTAINER_MAIN.TabIndex = 0 + CONTAINER_MAIN.TopToolStripPanelVisible = False + ' + 'CMB_SITES + ' + ActionButton1.BackgroundImage = CType(resources.GetObject("ActionButton1.BackgroundImage"), System.Drawing.Image) + ActionButton1.Index = 0 + ActionButton1.Name = "BTT_COMBOBOX_ARROW" + ActionButton1.Visible = False + Me.CMB_SITES.Buttons.Add(ActionButton1) + ListColumn1.DisplayMember = True + ListColumn1.Name = "COL_DISPLAY" + ListColumn1.Text = "Site" + ListColumn1.Width = -1 + ListColumn2.Name = "COL_VALUE" + ListColumn2.Text = "Value" + ListColumn2.ValueMember = True + ListColumn2.Visible = False + Me.CMB_SITES.Columns.Add(ListColumn1) + Me.CMB_SITES.Columns.Add(ListColumn2) + Me.CMB_SITES.Dock = System.Windows.Forms.DockStyle.Fill + Me.CMB_SITES.ListCheckBoxes = True + Me.CMB_SITES.ListDropDownStyle = PersonalUtilities.Forms.Controls.ComboBoxExtended.ListMode.Simple + Me.CMB_SITES.ListGridVisible = True + Me.CMB_SITES.ListMultiSelect = True + Me.CMB_SITES.Location = New System.Drawing.Point(0, 0) + Me.CMB_SITES.Name = "CMB_SITES" + Me.CMB_SITES.Size = New System.Drawing.Size(286, 277) + Me.CMB_SITES.TabIndex = 0 + ' + 'SiteSelectionForm + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(284, 276) + Me.Controls.Add(CONTAINER_MAIN) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.KeyPreview = True + Me.MaximizeBox = False + Me.MaximumSize = New System.Drawing.Size(300, 315) + Me.MinimizeBox = False + Me.MinimumSize = New System.Drawing.Size(300, 315) + Me.Name = "SiteSelectionForm" + Me.ShowIcon = False + Me.ShowInTaskbar = False + Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide + Me.Text = "Select Site" + CONTAINER_MAIN.ContentPanel.ResumeLayout(False) + CONTAINER_MAIN.ResumeLayout(False) + CONTAINER_MAIN.PerformLayout() + CType(Me.CMB_SITES, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + + Private WithEvents CMB_SITES As PersonalUtilities.Forms.Controls.ComboBoxExtended + End Class +End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/SiteSelectionForm.resx b/SCrawler/Editors/SiteSelectionForm.resx new file mode 100644 index 0000000..b335496 --- /dev/null +++ b/SCrawler/Editors/SiteSelectionForm.resx @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + + + iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAE65JREFUeF7t + 3X2sJWddB/DdLi2lQG2hdOHuvfM887J7Cxca4ELTQMDWKigIFpBAEAgi9g+CJpJo9Q8NJhgBiYZIYspL + GlAKCkhEC4KgQlsLQkqhKi/lrYWWlxaw3dLddrerz/Q89+7dc2fbfTn3npf5fJJv2rS758z85nnOzJz5 + nZktAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMK3O3r79wVUIz65jfGNVxI/VIX69CvGO9M//a9P+e8o3B/8v + vKn9s+3fyX8dAJgmaWd+fl3E96Wd/E9XdvZHkfbvXNa+Rn45AGCS3bvjj/E/h3box5OrmxjPyy8PAEyS + XXO7zqhCeH/HDnwUOdCE+J6zdux4eH47YIrEGE8uy/Ls9Bnx/LooL0oH9b9Th/I1TVG+rCqKC+q6Xsh/ + FJgmO8vy6WknfdPQTnsjckMdwlPy2wITLO3wF6si/lGas1ekuXvX0Fzuyg9S3psOCl6qDwimQB3ji9Ok + 3btmEm907kpnEa/Mbw9Mlq1pB/6cdHZ/ZcfcPZrcXoXyrVVVFfl1gUmSdsS/libqPUMTd5NSvjktwrbB + kgDjVi1UT26K+Nnu+XrMuaud60uPWHpIfhtg3JqyfEaanHcPTdZNTRPCPy4uLj40LxIwBudt2fKAtOP/ + 0zQnN+5koIg3tpca81sC49J+LZcm5a3rJulYEq6LSV40YBOFEB6V5uFV6+flRiTsSwf9r81vDYzBCSO4 + vjfq/KAuiqfm5QM2QRPjuWnubUbz71DCn6W33zpYCmDT1EX5m92Tcuy5q47xFXkxgQ3UduqnOXfn0Bzc + xJSvz4sCbIb2pzlp8v1w/WScnKSzkjekRT1hsMTAKC0vL5/Ydud3zb1NT1FelBcL2GiDm3d0TMTJy0ea + pjk1LzYwAu3NvtLc+uTQXBtn7tYYCJtja/vQno5JOJFpQrzWb4hhNJoQnpjm1Q3D82wCcnNRFKfnxQQ2 + Qttk1zH5JjzhFmcIcHzyzb6O5aFem5J0sP/OvKjARmg7b7sm3xRkT3vDorwawJHb1t6Ep2NOTVoOtDch + yssMjFr6IPh8x8SbnsT4lrQamgPhCMzPzz+sifHjnXNpMnN5XnRglJaWlk5KE2z/0ISbxnzQQ0bgvlXz + 1ePSXPnG0NyZ+DRF8Zi8CsCo7Azh0V0TbkrzRc2B0G3wIJ9429CcmZLce4MgYJTyff87JtzU5uayLM/J + qwcM7vD5+jQ3DgzNlWnKDXldgFFJZwW/2jHZpj1727uZ5VWE3mofqJXmw4eG5sdUpqqqXXm1gFGoQnhJ + 12SbgRxoYvzjtIruK04vxRjPSvPgK0PzYmqTPqtemVcNGIU6xgu7JtusJH1ovH9ubu6UvLrQC2ncPyuN + /58Mz4fpTvnmvHrAKJQL5dO6J9ssJXxucWFhLq8yzLKtaUf5h2ncb9zz+8eUKsYP53UERmHX/PyOrsk2 + g7nJDUWYZUuPWHpIE8oPdIz92UiMn86rCoxIOmOYta8KD5uftk2Peb1hZtTzdVOHcF3HmJ+ZVCF+Ia8u + MCppcl0+PNlmOG1zYPtYYc2BzIQ0np+ZxvWPh8b5LObqvMrAqEzRo4BHmctijCfnEsBUqkP5u2ksz8Kd + PI8g5SfyagOj0jbIpQk2c01DR5Brmh3NfC4DTI324LWO8V0dY3pm48mAsEGm7OEgo0sRb9wZ4+NzGWDi + lWUZ0ti9Zt1YnvUU8fdyCYBRmsFbAh9xqhDvqEN4Xi4FTKz8s93vD4/hPiSdpJyXywCMWPtrgKuGJ12P + ck/6gPmDXAuYOHVR/lY6UN3XMXb7kDv17MAGqhaqJ6WJ1sdegDUJ726a5oG5JDB2917vL+Kl3eO1N/lQ + LgewUdIO8E0dk69vubosy+25JDA2bYNuFeJnOsZovxLjhbkkwEZZXl4+0QfOvfl2Ogg4O5cFNl1dFE9N + 4/B7Q+Oyj7mh/VzKZQE2UtM0j6iL+LWOidizhN3OPBiHuigvSmPwrvVjsn9pQnh1LguwGQa3Fo3fHp6M + Pcw97c1WcllgQy0tLZ2UDr7/qmMc9jJNiF/WkwNjMHhQ0GzfX/yIU8RLfRCxkdq+kzTfrugcf/3MgZ1l + +fRcHmCztU8Yq2P8h47J2cdcpTmQjdCE8IQ0vnzjdkjKP8nlAcZoWxXin3dP0n4l1eGb9UL92FwXOG51 + Ub48ja09w2Otz2nvTJpKs21QIWDs0lnKb6TJqTEphN3NQvncXBY4VtvSju4N3WOs17l6cXHxoblGwKRo + r8mlHeAtHZO2b9mfDohem8sCR2XX3K4z0hj65NCYklSTGONpuUzApNlVFFWaqP81NHF7mvD2tnM7lwbu + V/vwqTR2vrV+LPU7VSjf4ff+MAU0B65NeWVd12fm0sBhpTnzosHDp7rGUV8T9lVFvDiXCJgSrmEezDea + onhMrgsM25rmyuvSODkwNG56nvZyYvi5XCNg2mgOXM3tVVH9ci4L3KtpmlN9W7Y+VYhfiEkuEzCt8n3L + fzA8yXuY/b7OZEVZlovt3ew6xknf8965ublTcpmAaac5cG3C2zQ09Vv7bVAaC/+7fmz0Og6QYVZpDlyT + GD/dPlgpl4b+2Nru5NIYuGfdmOhxmhB/VBblL+QaATNKc+DBfH1nCI/OdWHGtTewSdv874fGgIT4xfYb + wlwmYNZpDlzNbVUIz85lYUblJ2i6BDacGP/u7O3bH5zLBPSF5sDV7K+L+Nu5LMyYtJP7xbSNfzy0zfue + A+03gak8WwdVAnpHc+CaxHiJ5sCZsnK9f/+6bd3v3JZ2/r+SawT0mebAg0kfjB93v/Pp136t3X693bWN + e56v6nsBhmkOXE24Ph0EnJXrwpSp63qhDuXnu7dtn1P+U1VVP5PLBHAozYGDtD+LchvU6TN4Iqa+lqGs + XO8/YVAlgMPQHLiSsC+dNb0ml4UJVxflRWm73b1+O/Y5YXcVwvNziQDun+bANYnxkvO2bHlALg0TJsZ4 + cl3ESzu3Xa8Trm+KYimXCeDIaQ48mKqIH9McOHl2zc/vaIr42a5t1vN8tCiK03OZAI6J5sCVFPFr7QNk + cl0Ys3yp6nvrtlO/s3K9f9ugSgDHSXPgILk58PxcFsYkX+93J8s1qUK8oynKF+YSAYyO5sCVhH3pgOjV + uSxsoqZpHpjq//bu7dLjFPHGND+Xc5kARk9z4JrE+JZUEl+1bpLFhYW5VPf/WLcd5N/ruj4zlwlg42gO + PCQfdXOVjdeE8MRU6xuGai9uXw2MgebA1YTrFkMoc10YsaYoX5rqfOf6uvc6e9LO/xW5RACbT3Pgam5N + B0Q/m8vCCLT3XnCQ2ZXwnWqhenIuE8D4aA5czV3OykZj19yuM1I9PzlUXwnhirIst+cyAYyf5sA1GTQH + uu/6MdoZ4+NTHb+1rq59j+v9wKTSHHhIPtI0zam5NByhNH5enGr306Fa9j1720ttuUQAE0tz4Epi/FJM + cl24b8ZNd25KdTk31whg8mkOXEm4pX1EbS4LHebn5x+WdnIf765fr3NVCOFRuUwA00Nz4Gr21kX58lwW + 1qjmq8el+nxjqF4S4yVLS0sn5TIBTB/NgWuiOfAQTVE+J9XltnV16nXCvqqIF+cSAUw3zYGH5INnb9/+ + 4Fyavtra7uRSLe4Zqk3f88MmxvNyjQBmhiavg/liVVVFrkuvLC4uPjSt/4eG6iEhXlOWZchlApg9mgNX + c3P6wD8nl6UXqvlqZ1rv/xmqQ+/ThPJv5ufnH5TLBDC7NAeuZm97n/tclplWhfCstL4/GVr/nsf1fqCH + NAeu5kB7aSSVZFabA13v786tVVFckGsE0C+aAw8mnSG/f25u7pRcmpnQbt8mlB/oWt8+pwnxWk+PBNAc + uJoqxC/MSnNgs7BQ1yFc17WePc97Z+1AD+C4aA5czU3T/qjXdED3zLQePx5ar75nf77ev3VQJQBWaQ5c + zZ4qhJfkskyVuigvapvbOtapt2lC/FFTls/IJQKgi+bA1aw0B07FGWOM8eQ6xnd1rEe/E+OX2jGdywTA + fdEcuCYx/u2kXzNudjTz6az/c53L3+NUMX7YI6EBjp7mwIO5pt3J5rpMlHKhfFpavu8PLW/fM+s/7QTY + eJoDV/PduiiWc1kmwuB6f7x7aDn7ntvrGC/MJQLgeGgOHKQK8Y46hOflsoxN0zQPbEJ8Z9cy9jxf3RnC + o3OZABgFzYGrab9efl0qyViaAxcXFubSgchnOpar77k8xnhaLhMAo6Q5cE2K+L7NfoBMHcJT0nvfvG5Z + +h3X+wE2iebAg7m6LMvtuS4bKl/v14txSMLuKoQX5BIBsBk0B64kfCfV4om5LCN33pYtD3DA1ZVwfb1Q + PzaXCYDNpDlwJWH3RnSe75rbdUZ6/X9b/369z0eLojg9lwmAcdAcuJqV5sCRaEJ4QnrNbw+9R9+zcr1/ + 26BKAIyV5sBDcll7W95cmmPSPocgvc6dQ6/b9+xpivJluUQATBDNgQdz1TE2B6phV4p446TdhAmAIens + 9ZXpQ1tz4KA58Am5LPfrrB07Hp7+zr90v1Z/UxXxU3Vdn5nLBMAk0xy4krC7WSifm8tyWGVZnl2F+M3u + 1+hxYrxkeXn5xFwmAKaB5sDV7E9nsRfnsqyTdnIvGtxiuPPv9jV7Ul1ekUsEwLTRHHgwVSjfsbS0dFIu + TWtr+6uB9P8ODP/Znue7ZVmek2sEwBTT2Laa8sr2enb7jHoHRl0JV8QYH5nHDQCzwJ0DV/P1tKO7vuO/ + 9zpVKN/qej/AjNIcKB3Z24TyVXmIADCrNAfKmtzUxHhuHhoAzDrNgZJyVQjhUXlIANAjmgN7m/Du471d + MgBTzp0D+5Sw777uiQBAz2gO7EPCLSnn500OAAOaA2c615RlGfKmBoBDaQ6cvTQhvmd+fv5BeRMDwGFp + DpyJuN4PwDHQHDjVubUqigvypgSAo6M5cPrShHjtYghl3oQAcGw0B05Rivi+ubm5U/KmA4Djozlw4rM/ + X+/fOthiADA6mgMnME2IP2rK8hl5GwHAxtAcOFH5SozxrLxpAGBjaQ4cf6oYP9w0zal5kwDA5tAcOLYc + aC/FpE1wwmBLAMAm0xy46bk91fvCXH4AGCvNgZuRIn6tKYrH5JoDwGTQHLihuTzGeFouNQBMFs2BI4/r + /QBMB82Bo0rYXYXwglxWAJh8mgOPN+H6eqF+bC4nAEwVzYHHkiL+c1EUp+caAsB00hx4FInxLalk2waV + A4AppznwfrOnLsqX53IBwOzQHHiYFPHGaqF6Ui4TAMwezYGHpirip+q6PjOXBwBmmubANjFesry8fGKu + CQD0Q4+bA/dWMf56LgMA9E8PmwO/W5blOXn1AaC/+tMcWF4ZY3xkXm0AYOabA2O8ZGlp6aS8ugDAGrPY + HLi3CeWr8voBAIczQ82BN6UDmnPzagEA92f6mwPLz1dVVeTVAQCO1LQ2B1Yh/PX8/PyD8moAAEdrupoD + w76qiBfnRQcAjtMUNAeGW1LOz8sLAIzKBDcHXlOWZciLCQCM2gQ2B142Nzd3Sl48AGCjTEhz4H7X+wFg + k425OfDWqqh+Pi8KALDJtqWDgDemHfKBoR30hqUJ8dqY5PcHAMalKcrnpJ3z94Z31qNO+/t+1/sBYIKk + k/LT6hD+Mu2oR/4rgXTW/+X02r+U3woAmDTtz/GaIv5F2nH/ZHhHfpS5J+Vf01n/S9LLbhu8OgAw0dpb + 8TYL5XPTmfvb0o78v/MOvWtHvybtzXzKT1Qx/n5d1wv5pQCAaXXvAUFRLLXd+3WMFzZF+cKUl7X/rIri + gsWFhbn8RwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6LEtW/4flgYiLD1qeX0A + AAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/SCrawler/Editors/SiteSelectionForm.vb b/SCrawler/Editors/SiteSelectionForm.vb new file mode 100644 index 0000000..fd14c78 --- /dev/null +++ b/SCrawler/Editors/SiteSelectionForm.vb @@ -0,0 +1,68 @@ +' Copyright (C) 2022 Andy +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Imports PersonalUtilities.Forms +Imports PersonalUtilities.Forms.Toolbars +Imports PersonalUtilities.Forms.Controls.Base +Namespace Editors + Friend Class SiteSelectionForm : Implements IOkCancelToolbar + Private ReadOnly MyDefs As DefaultFormProps + Friend ReadOnly Property SelectedSites As List(Of Sites) + Friend Sub New(ByVal s As List(Of Sites)) + InitializeComponent() + SelectedSites.ListAddList(s) + If SelectedSites Is Nothing Then SelectedSites = New List(Of Sites) + MyDefs = New DefaultFormProps + End Sub + Private Sub SiteSelectionForm_Load(sender As Object, e As EventArgs) Handles Me.Load + With MyDefs + .MyViewInitialize(Me, Settings.Design, True) + .DelegateClosingChecker() + .AddOkCancelToolbar() + CMB_SITES.BeginUpdate() + CMB_SITES.Items.AddRange({New ListItem({Sites.Reddit.ToString, CInt(Sites.Reddit)}), + New ListItem({Sites.Twitter.ToString, CInt(Sites.Twitter)}), + New ListItem({Sites.Instagram.ToString, CInt(Sites.Instagram)})}) + Dim l As New List(Of Integer) + If SelectedSites.Count > 0 Then + If SelectedSites.Contains(Sites.Reddit) Then l.Add(0) + If SelectedSites.Contains(Sites.Twitter) Then l.Add(1) + If SelectedSites.Contains(Sites.Instagram) Then l.Add(2) + End If + CMB_SITES.EndUpdate() + If l.Count > 0 Then CMB_SITES.ListCheckedIndexes = l : l.Clear() + .EndLoaderOperations() + .MyOkCancel.EnableOK = True + End With + End Sub + Private Sub SiteSelectionForm_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed + SelectedSites.Clear() + End Sub + Public Sub ToolbarBttOK() Implements IOkCancelToolbar.ToolbarBttOK + Try + SelectedSites.Clear() + Dim l As List(Of Integer) = CMB_SITES.ListCheckedIndexes + If l.ListExists Then + For Each i% In l + Select Case i + Case 0 : SelectedSites.Add(Sites.Reddit) + Case 1 : SelectedSites.Add(Sites.Twitter) + Case 2 : SelectedSites.Add(Sites.Instagram) + End Select + Next + End If + MyDefs.CloseForm() + Catch ex As Exception + ErrorsDescriber.Execute(EDP.LogMessageValue, ex) + End Try + End Sub + Public Sub ToolbarBttCancel() Implements IOkCancelToolbar.ToolbarBttCancel + MyDefs.CloseForm(DialogResult.Cancel) + End Sub + End Class +End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/TwitterEditorForm.vb b/SCrawler/Editors/TwitterEditorForm.vb deleted file mode 100644 index 93ccafc..0000000 --- a/SCrawler/Editors/TwitterEditorForm.vb +++ /dev/null @@ -1,92 +0,0 @@ -' Copyright (C) 2022 Andy -' This program is free software: you can redistribute it and/or modify -' it under the terms of the GNU General Public License as published by -' the Free Software Foundation, either version 3 of the License, or -' (at your option) any later version. -' -' This program is distributed in the hope that it will be useful, -' but WITHOUT ANY WARRANTY -Imports PersonalUtilities.Forms -Imports PersonalUtilities.Forms.Controls -Imports PersonalUtilities.Forms.Controls.Base -Imports PersonalUtilities.Forms.Toolbars -Imports PersonalUtilities.Tools.WEB -Namespace Editors - Friend Class TwitterEditorForm : Implements IOkCancelToolbar - Private ReadOnly MyDefs As DefaultFormProps(Of FieldsChecker) - Friend Sub New() - InitializeComponent() - MyDefs = New DefaultFormProps(Of FieldsChecker) - End Sub - Private Sub TwitterEditorForm_Load(sender As Object, e As EventArgs) Handles Me.Load - Try - With MyDefs - .MyViewInitialize(Me, Settings.Design, True) - .AddOkCancelToolbar() - .DelegateClosingChecker() - With Settings.Site(Sites.Twitter) - TXT_PATH.Text = .Path - With .Responser - If .Cookies Is Nothing Then .Cookies = New CookieKeeper(.CookiesDomain) - SetCookieText() - TXT_TOKEN.Text = .Headers(API.Base.SiteSettings.Header_Twitter_Token) - TXT_AUTH.Text = .Headers(API.Base.SiteSettings.Header_Twitter_Authorization) - End With - End With - .MyFieldsChecker = New FieldsChecker - With .MyFieldsChecker - .AddControl(Of String)(TXT_TOKEN, TXT_TOKEN.CaptionText) - .AddControl(Of String)(TXT_AUTH, TXT_AUTH.CaptionText) - .EndLoaderOperations() - End With - TextBoxExtended.SetFalseDetector(Me, True, AddressOf .Detector) - .EndLoaderOperations() - End With - Catch ex As Exception - MyDefs.InvokeLoaderError(ex) - End Try - End Sub - Private Sub ToolbarBttOK() Implements IOkCancelToolbar.ToolbarBttOK - If MyDefs.MyFieldsChecker.AllParamsOK Then - With Settings.Site(Sites.Twitter) - If TXT_PATH.IsEmptyString Then .Path = Nothing Else .Path = TXT_PATH.Text - With .Responser - .Headers(API.Base.SiteSettings.Header_Twitter_Token) = TXT_TOKEN.Text - .Headers(API.Base.SiteSettings.Header_Twitter_Authorization) = TXT_AUTH.Text - End With - .Update() - End With - MyDefs.CloseForm() - End If - End Sub - Private Sub ToolbarBttCancel() Implements IOkCancelToolbar.ToolbarBttCancel - MyDefs.CloseForm(DialogResult.Cancel) - End Sub - Private Sub TXT_PATH_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_PATH.ActionOnButtonClick - If Sender.DefaultButton = ActionButton.DefaultButtons.Open Then - Dim f As SFile = SFile.SelectPath(Settings.Site(Sites.Twitter).Path) - If Not f.IsEmptyString Then TXT_PATH.Text = f - End If - End Sub - Private Sub TXT_COOKIES_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_COOKIES.ActionOnButtonClick - If Sender.DefaultButton = ActionButton.DefaultButtons.Edit Then - Using f As New CookieListForm(Settings.Site(Sites.Twitter).Responser.Cookies) : f.ShowDialog() : End Using - SetCookieText() - End If - End Sub - Private Sub TXT_COOKIES_ActionOnButtonClearClick() Handles TXT_COOKIES.ActionOnButtonClearClick - With Settings.Site(Sites.Twitter).Responser - If Not .Cookies Is Nothing Then .Cookies.Dispose() - .Cookies = New CookieKeeper(.CookiesDomain) - End With - SetCookieText() - End Sub - Private Sub SetCookieText() - Dim c% = 0 - With Settings.Site(Sites.Twitter).Responser - If Not .Cookies Is Nothing Then c = .Cookies.Count - End With - TXT_COOKIES.Text = $"{c} cookies" - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/UserCreatorForm.Designer.vb b/SCrawler/Editors/UserCreatorForm.Designer.vb index a59dac7..f4df2b7 100644 --- a/SCrawler/Editors/UserCreatorForm.Designer.vb +++ b/SCrawler/Editors/UserCreatorForm.Designer.vb @@ -24,11 +24,14 @@ Dim ActionButton2 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim ActionButton3 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim TP_DOWN_OPTIONS As System.Windows.Forms.TableLayoutPanel + Dim ActionButton4 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton5 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim TT_MAIN As System.Windows.Forms.ToolTip Me.TXT_USER = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.OPT_REDDIT = New System.Windows.Forms.RadioButton() Me.OPT_TWITTER = New System.Windows.Forms.RadioButton() Me.CH_IS_CHANNEL = New System.Windows.Forms.CheckBox() + Me.OPT_INSTAGRAM = New System.Windows.Forms.RadioButton() Me.CH_TEMP = New System.Windows.Forms.CheckBox() Me.CH_FAV = New System.Windows.Forms.CheckBox() Me.CH_PARSE_USER_MEDIA = New System.Windows.Forms.CheckBox() @@ -41,6 +44,7 @@ Me.TXT_LABELS = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.CH_DOWN_IMAGES = New System.Windows.Forms.CheckBox() Me.CH_DOWN_VIDEOS = New System.Windows.Forms.CheckBox() + Me.TXT_SPEC_FOLDER = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer() TP_MAIN = New System.Windows.Forms.TableLayoutPanel() TP_SITE = New System.Windows.Forms.TableLayoutPanel() @@ -58,6 +62,7 @@ Me.TP_ADD_BY_LIST.SuspendLayout() CType(Me.TXT_LABELS, System.ComponentModel.ISupportInitialize).BeginInit() TP_DOWN_OPTIONS.SuspendLayout() + CType(Me.TXT_SPEC_FOLDER, System.ComponentModel.ISupportInitialize).BeginInit() Me.CONTAINER_MAIN.ContentPanel.SuspendLayout() Me.CONTAINER_MAIN.SuspendLayout() Me.SuspendLayout() @@ -68,18 +73,20 @@ TP_MAIN.ColumnCount = 1 TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) TP_MAIN.Controls.Add(Me.TXT_USER, 0, 0) - TP_MAIN.Controls.Add(TP_SITE, 0, 2) - TP_MAIN.Controls.Add(TP_PARAMS, 0, 3) - TP_MAIN.Controls.Add(TP_OTHER, 0, 5) - TP_MAIN.Controls.Add(Me.TXT_DESCR, 0, 8) + TP_MAIN.Controls.Add(TP_SITE, 0, 3) + TP_MAIN.Controls.Add(TP_PARAMS, 0, 4) + TP_MAIN.Controls.Add(TP_OTHER, 0, 6) + TP_MAIN.Controls.Add(Me.TXT_DESCR, 0, 9) TP_MAIN.Controls.Add(Me.TXT_USER_FRIENDLY, 0, 1) - TP_MAIN.Controls.Add(Me.TP_ADD_BY_LIST, 0, 6) - TP_MAIN.Controls.Add(Me.TXT_LABELS, 0, 7) - TP_MAIN.Controls.Add(TP_DOWN_OPTIONS, 0, 4) + TP_MAIN.Controls.Add(Me.TP_ADD_BY_LIST, 0, 7) + TP_MAIN.Controls.Add(Me.TXT_LABELS, 0, 8) + TP_MAIN.Controls.Add(TP_DOWN_OPTIONS, 0, 5) + TP_MAIN.Controls.Add(Me.TXT_SPEC_FOLDER, 0, 2) TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill TP_MAIN.Location = New System.Drawing.Point(0, 0) TP_MAIN.Name = "TP_MAIN" - TP_MAIN.RowCount = 9 + TP_MAIN.RowCount = 10 + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708!)) @@ -89,7 +96,7 @@ TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66542!)) TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 150.0!)) - TP_MAIN.Size = New System.Drawing.Size(454, 403) + TP_MAIN.Size = New System.Drawing.Size(454, 431) TP_MAIN.TabIndex = 0 ' 'TXT_USER @@ -106,21 +113,23 @@ 'TP_SITE ' TP_SITE.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] - TP_SITE.ColumnCount = 3 - TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) - TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) - TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + TP_SITE.ColumnCount = 4 + TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) + TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.0!)) TP_SITE.Controls.Add(Me.OPT_REDDIT, 0, 0) TP_SITE.Controls.Add(Me.OPT_TWITTER, 2, 0) TP_SITE.Controls.Add(Me.CH_IS_CHANNEL, 1, 0) + TP_SITE.Controls.Add(Me.OPT_INSTAGRAM, 3, 0) TP_SITE.Dock = System.Windows.Forms.DockStyle.Fill - TP_SITE.Location = New System.Drawing.Point(1, 59) + TP_SITE.Location = New System.Drawing.Point(1, 88) TP_SITE.Margin = New System.Windows.Forms.Padding(0) TP_SITE.Name = "TP_SITE" TP_SITE.RowCount = 1 TP_SITE.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) TP_SITE.Size = New System.Drawing.Size(452, 31) - TP_SITE.TabIndex = 2 + TP_SITE.TabIndex = 3 ' 'OPT_REDDIT ' @@ -128,7 +137,7 @@ Me.OPT_REDDIT.Dock = System.Windows.Forms.DockStyle.Fill Me.OPT_REDDIT.Location = New System.Drawing.Point(4, 4) Me.OPT_REDDIT.Name = "OPT_REDDIT" - Me.OPT_REDDIT.Size = New System.Drawing.Size(143, 23) + Me.OPT_REDDIT.Size = New System.Drawing.Size(105, 23) Me.OPT_REDDIT.TabIndex = 0 Me.OPT_REDDIT.TabStop = True Me.OPT_REDDIT.Text = "Reddit" @@ -138,9 +147,9 @@ ' Me.OPT_TWITTER.AutoSize = True Me.OPT_TWITTER.Dock = System.Windows.Forms.DockStyle.Fill - Me.OPT_TWITTER.Location = New System.Drawing.Point(304, 4) + Me.OPT_TWITTER.Location = New System.Drawing.Point(228, 4) Me.OPT_TWITTER.Name = "OPT_TWITTER" - Me.OPT_TWITTER.Size = New System.Drawing.Size(144, 23) + Me.OPT_TWITTER.Size = New System.Drawing.Size(105, 23) Me.OPT_TWITTER.TabIndex = 1 Me.OPT_TWITTER.TabStop = True Me.OPT_TWITTER.Text = "Twitter" @@ -150,13 +159,25 @@ ' Me.CH_IS_CHANNEL.AutoSize = True Me.CH_IS_CHANNEL.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_IS_CHANNEL.Location = New System.Drawing.Point(154, 4) + Me.CH_IS_CHANNEL.Location = New System.Drawing.Point(116, 4) Me.CH_IS_CHANNEL.Name = "CH_IS_CHANNEL" - Me.CH_IS_CHANNEL.Size = New System.Drawing.Size(143, 23) + Me.CH_IS_CHANNEL.Size = New System.Drawing.Size(105, 23) Me.CH_IS_CHANNEL.TabIndex = 2 Me.CH_IS_CHANNEL.Text = "Channel" Me.CH_IS_CHANNEL.UseVisualStyleBackColor = True ' + 'OPT_INSTAGRAM + ' + Me.OPT_INSTAGRAM.AutoSize = True + Me.OPT_INSTAGRAM.Dock = System.Windows.Forms.DockStyle.Fill + Me.OPT_INSTAGRAM.Location = New System.Drawing.Point(340, 4) + Me.OPT_INSTAGRAM.Name = "OPT_INSTAGRAM" + Me.OPT_INSTAGRAM.Size = New System.Drawing.Size(108, 23) + Me.OPT_INSTAGRAM.TabIndex = 3 + Me.OPT_INSTAGRAM.TabStop = True + Me.OPT_INSTAGRAM.Text = "Instagram" + Me.OPT_INSTAGRAM.UseVisualStyleBackColor = True + ' 'TP_PARAMS ' TP_PARAMS.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] @@ -166,14 +187,14 @@ TP_PARAMS.Controls.Add(Me.CH_TEMP, 0, 0) TP_PARAMS.Controls.Add(Me.CH_FAV, 1, 0) TP_PARAMS.Dock = System.Windows.Forms.DockStyle.Fill - TP_PARAMS.Location = New System.Drawing.Point(1, 91) + TP_PARAMS.Location = New System.Drawing.Point(1, 120) TP_PARAMS.Margin = New System.Windows.Forms.Padding(0) TP_PARAMS.Name = "TP_PARAMS" TP_PARAMS.RowCount = 1 TP_PARAMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) TP_PARAMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) TP_PARAMS.Size = New System.Drawing.Size(452, 31) - TP_PARAMS.TabIndex = 3 + TP_PARAMS.TabIndex = 4 ' 'CH_TEMP ' @@ -206,14 +227,14 @@ TP_OTHER.Controls.Add(Me.CH_PARSE_USER_MEDIA, 1, 0) TP_OTHER.Controls.Add(Me.CH_READY_FOR_DOWN, 0, 0) TP_OTHER.Dock = System.Windows.Forms.DockStyle.Fill - TP_OTHER.Location = New System.Drawing.Point(1, 155) + TP_OTHER.Location = New System.Drawing.Point(1, 184) TP_OTHER.Margin = New System.Windows.Forms.Padding(0) TP_OTHER.Name = "TP_OTHER" TP_OTHER.RowCount = 1 TP_OTHER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) TP_OTHER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) TP_OTHER.Size = New System.Drawing.Size(452, 31) - TP_OTHER.TabIndex = 5 + TP_OTHER.TabIndex = 6 ' 'CH_PARSE_USER_MEDIA ' @@ -253,11 +274,11 @@ Me.TXT_DESCR.Dock = System.Windows.Forms.DockStyle.Fill Me.TXT_DESCR.GroupBoxed = True Me.TXT_DESCR.GroupBoxText = "Description" - Me.TXT_DESCR.Location = New System.Drawing.Point(4, 254) + Me.TXT_DESCR.Location = New System.Drawing.Point(4, 282) Me.TXT_DESCR.Multiline = True Me.TXT_DESCR.Name = "TXT_DESCR" Me.TXT_DESCR.Size = New System.Drawing.Size(446, 145) - Me.TXT_DESCR.TabIndex = 8 + Me.TXT_DESCR.TabIndex = 9 ' 'TXT_USER_FRIENDLY ' @@ -278,13 +299,13 @@ Me.TP_ADD_BY_LIST.Controls.Add(Me.CH_ADD_BY_LIST, 0, 0) Me.TP_ADD_BY_LIST.Controls.Add(Me.CH_AUTO_DETECT_SITE, 1, 0) Me.TP_ADD_BY_LIST.Dock = System.Windows.Forms.DockStyle.Fill - Me.TP_ADD_BY_LIST.Location = New System.Drawing.Point(1, 187) + Me.TP_ADD_BY_LIST.Location = New System.Drawing.Point(1, 216) Me.TP_ADD_BY_LIST.Margin = New System.Windows.Forms.Padding(0) Me.TP_ADD_BY_LIST.Name = "TP_ADD_BY_LIST" Me.TP_ADD_BY_LIST.RowCount = 1 Me.TP_ADD_BY_LIST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TP_ADD_BY_LIST.Size = New System.Drawing.Size(452, 31) - Me.TP_ADD_BY_LIST.TabIndex = 6 + Me.TP_ADD_BY_LIST.Size = New System.Drawing.Size(452, 30) + Me.TP_ADD_BY_LIST.TabIndex = 7 ' 'CH_ADD_BY_LIST ' @@ -292,7 +313,7 @@ Me.CH_ADD_BY_LIST.Dock = System.Windows.Forms.DockStyle.Fill Me.CH_ADD_BY_LIST.Location = New System.Drawing.Point(4, 4) Me.CH_ADD_BY_LIST.Name = "CH_ADD_BY_LIST" - Me.CH_ADD_BY_LIST.Size = New System.Drawing.Size(218, 23) + Me.CH_ADD_BY_LIST.Size = New System.Drawing.Size(218, 22) Me.CH_ADD_BY_LIST.TabIndex = 0 Me.CH_ADD_BY_LIST.Text = "Add by list" Me.CH_ADD_BY_LIST.UseVisualStyleBackColor = True @@ -303,7 +324,7 @@ Me.CH_AUTO_DETECT_SITE.Dock = System.Windows.Forms.DockStyle.Fill Me.CH_AUTO_DETECT_SITE.Location = New System.Drawing.Point(229, 4) Me.CH_AUTO_DETECT_SITE.Name = "CH_AUTO_DETECT_SITE" - Me.CH_AUTO_DETECT_SITE.Size = New System.Drawing.Size(219, 23) + Me.CH_AUTO_DETECT_SITE.Size = New System.Drawing.Size(219, 22) Me.CH_AUTO_DETECT_SITE.TabIndex = 1 Me.CH_AUTO_DETECT_SITE.Text = "Auto detect site" Me.CH_AUTO_DETECT_SITE.UseVisualStyleBackColor = True @@ -321,10 +342,10 @@ Me.TXT_LABELS.CaptionText = "Labels" Me.TXT_LABELS.CaptionWidth = 50.0R Me.TXT_LABELS.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_LABELS.Location = New System.Drawing.Point(4, 222) + Me.TXT_LABELS.Location = New System.Drawing.Point(4, 250) Me.TXT_LABELS.Name = "TXT_LABELS" Me.TXT_LABELS.Size = New System.Drawing.Size(446, 22) - Me.TXT_LABELS.TabIndex = 7 + Me.TXT_LABELS.TabIndex = 8 Me.TXT_LABELS.TextBoxReadOnly = True ' 'TP_DOWN_OPTIONS @@ -336,14 +357,14 @@ TP_DOWN_OPTIONS.Controls.Add(Me.CH_DOWN_IMAGES, 0, 0) TP_DOWN_OPTIONS.Controls.Add(Me.CH_DOWN_VIDEOS, 1, 0) TP_DOWN_OPTIONS.Dock = System.Windows.Forms.DockStyle.Fill - TP_DOWN_OPTIONS.Location = New System.Drawing.Point(1, 123) + TP_DOWN_OPTIONS.Location = New System.Drawing.Point(1, 152) TP_DOWN_OPTIONS.Margin = New System.Windows.Forms.Padding(0) TP_DOWN_OPTIONS.Name = "TP_DOWN_OPTIONS" TP_DOWN_OPTIONS.RowCount = 1 TP_DOWN_OPTIONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) TP_DOWN_OPTIONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) TP_DOWN_OPTIONS.Size = New System.Drawing.Size(452, 31) - TP_DOWN_OPTIONS.TabIndex = 4 + TP_DOWN_OPTIONS.TabIndex = 5 ' 'CH_DOWN_IMAGES ' @@ -367,19 +388,38 @@ Me.CH_DOWN_VIDEOS.Text = "Download videos" Me.CH_DOWN_VIDEOS.UseVisualStyleBackColor = True ' + 'TXT_SPEC_FOLDER + ' + ActionButton4.BackgroundImage = CType(resources.GetObject("ActionButton4.BackgroundImage"), System.Drawing.Image) + ActionButton4.Index = 0 + ActionButton4.Name = "BTT_OPEN" + ActionButton4.ToolTipText = "Select a new path in the folder selection dialog" + ActionButton5.BackgroundImage = CType(resources.GetObject("ActionButton5.BackgroundImage"), System.Drawing.Image) + ActionButton5.Index = 1 + ActionButton5.Name = "BTT_CLEAR" + ActionButton5.ToolTipText = "Clear" + Me.TXT_SPEC_FOLDER.Buttons.Add(ActionButton4) + Me.TXT_SPEC_FOLDER.Buttons.Add(ActionButton5) + Me.TXT_SPEC_FOLDER.CaptionText = "Special path" + Me.TXT_SPEC_FOLDER.Dock = System.Windows.Forms.DockStyle.Fill + Me.TXT_SPEC_FOLDER.Location = New System.Drawing.Point(4, 62) + Me.TXT_SPEC_FOLDER.Name = "TXT_SPEC_FOLDER" + Me.TXT_SPEC_FOLDER.Size = New System.Drawing.Size(446, 22) + Me.TXT_SPEC_FOLDER.TabIndex = 2 + ' 'CONTAINER_MAIN ' ' 'CONTAINER_MAIN.ContentPanel ' Me.CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN) - Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(454, 403) + Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(454, 431) Me.CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill Me.CONTAINER_MAIN.LeftToolStripPanelVisible = False Me.CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0) Me.CONTAINER_MAIN.Name = "CONTAINER_MAIN" Me.CONTAINER_MAIN.RightToolStripPanelVisible = False - Me.CONTAINER_MAIN.Size = New System.Drawing.Size(454, 403) + Me.CONTAINER_MAIN.Size = New System.Drawing.Size(454, 431) Me.CONTAINER_MAIN.TabIndex = 0 Me.CONTAINER_MAIN.TopToolStripPanelVisible = False ' @@ -387,15 +427,15 @@ ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(454, 403) + Me.ClientSize = New System.Drawing.Size(454, 431) Me.Controls.Add(Me.CONTAINER_MAIN) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.KeyPreview = True Me.MaximizeBox = False - Me.MaximumSize = New System.Drawing.Size(470, 442) + Me.MaximumSize = New System.Drawing.Size(470, 470) Me.MinimizeBox = False - Me.MinimumSize = New System.Drawing.Size(470, 442) + Me.MinimumSize = New System.Drawing.Size(470, 470) Me.Name = "UserCreatorForm" Me.ShowInTaskbar = False Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide @@ -415,6 +455,7 @@ CType(Me.TXT_LABELS, System.ComponentModel.ISupportInitialize).EndInit() TP_DOWN_OPTIONS.ResumeLayout(False) TP_DOWN_OPTIONS.PerformLayout() + CType(Me.TXT_SPEC_FOLDER, System.ComponentModel.ISupportInitialize).EndInit() Me.CONTAINER_MAIN.ContentPanel.ResumeLayout(False) Me.CONTAINER_MAIN.ResumeLayout(False) Me.CONTAINER_MAIN.PerformLayout() @@ -439,5 +480,7 @@ Private WithEvents CH_DOWN_IMAGES As CheckBox Private WithEvents CH_DOWN_VIDEOS As CheckBox Private WithEvents CH_IS_CHANNEL As CheckBox + Private WithEvents OPT_INSTAGRAM As RadioButton + Private WithEvents TXT_SPEC_FOLDER As PersonalUtilities.Forms.Controls.TextBoxExtended End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/UserCreatorForm.resx b/SCrawler/Editors/UserCreatorForm.resx index bdba578..7f54305 100644 --- a/SCrawler/Editors/UserCreatorForm.resx +++ b/SCrawler/Editors/UserCreatorForm.resx @@ -166,6 +166,25 @@ False + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP + WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP + aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+ + 5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8 + vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB + cMaRN0UdBBkAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go + tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX + AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC + + AAABAAkAMDAQAAAAAABoBgAAlgAAACAgEAAAAAAA6AIAAP4GAAAQEBAAAAAAACgBAADmCQAAMDAAAAEA diff --git a/SCrawler/Editors/UserCreatorForm.vb b/SCrawler/Editors/UserCreatorForm.vb index fd218be..478f071 100644 --- a/SCrawler/Editors/UserCreatorForm.vb +++ b/SCrawler/Editors/UserCreatorForm.vb @@ -66,16 +66,29 @@ Namespace Editors Return TXT_USER_FRIENDLY.Text End Get End Property + Private ReadOnly _SpecPathPattern As New RegexStructure("\w:\\.*", True, False,,,,, String.Empty, EDP.ReturnValue) + Private ReadOnly Property SpecialPath(ByVal s As Sites) As SFile + Get + If TXT_SPEC_FOLDER.IsEmptyString Then + Return Nothing + Else + If Not CStr(RegexReplace(TXT_SPEC_FOLDER.Text, _SpecPathPattern)).IsEmptyString Then + Return $"{TXT_SPEC_FOLDER.Text}\" + Else + Return $"{Settings(s).Path.PathWithSeparator}{TXT_SPEC_FOLDER.Text}\" + End If + + End If + End Get + End Property Friend ReadOnly Property UserLabels As List(Of String) + ''' Create new user Friend Sub New() InitializeComponent() UserLabels = New List(Of String) MyDef = New DefaultFormProps(Of FieldsChecker) End Sub - Friend Sub New(ByVal _User As UserInfo) - Me.New - User = _User - End Sub + ''' Edit exist user Friend Sub New(ByVal _Instance As IUserData) Me.New If Not _Instance Is Nothing Then @@ -92,6 +105,7 @@ Namespace Editors If User.Name.IsEmptyString Then OPT_REDDIT.Checked = False OPT_TWITTER.Checked = False + OPT_INSTAGRAM.Checked = False CH_PARSE_USER_MEDIA.Enabled = False CH_READY_FOR_DOWN.Checked = True CH_TEMP.Checked = Settings.DefaultTemporary @@ -100,16 +114,22 @@ Namespace Editors Else TP_ADD_BY_LIST.Enabled = False TXT_USER.Text = User.Name + TXT_SPEC_FOLDER.Text = User.SpecialPath Select Case User.Site Case Sites.Reddit : OPT_REDDIT.Checked = True : CH_PARSE_USER_MEDIA.Enabled = False Case Sites.Twitter : OPT_TWITTER.Checked = True + Case Sites.Instagram : OPT_INSTAGRAM.Checked = True End Select OPT_REDDIT.Enabled = False OPT_TWITTER.Enabled = False + OPT_INSTAGRAM.Enabled = False CH_IS_CHANNEL.Checked = User.IsChannel CH_IS_CHANNEL.Enabled = False If Not UserInstance Is Nothing Then TXT_USER.Enabled = False + TXT_SPEC_FOLDER.TextBoxReadOnly = True + TXT_SPEC_FOLDER.Buttons.Clear() + TXT_SPEC_FOLDER.Buttons.UpdateButtonsPositions() With UserInstance TXT_USER_FRIENDLY.Text = .FriendlyName CH_FAV.Checked = .Favorite @@ -154,14 +174,24 @@ Namespace Editors Private Sub UserCreatorForm_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed UserLabels.Clear() End Sub + Private Function GetSiteByCheckers() As Sites + Select Case True + Case OPT_REDDIT.Checked : Return Sites.Reddit + Case OPT_TWITTER.Checked : Return Sites.Twitter + Case OPT_INSTAGRAM.Checked : Return Sites.Instagram + Case Else : Return Sites.Undefined + End Select + End Function Private Sub ToolbarBttOK() Implements IOkCancelToolbar.ToolbarBttOK If Not CH_ADD_BY_LIST.Checked Then If MyDef.MyFieldsChecker.AllParamsOK Then - If OPT_REDDIT.Checked Or OPT_TWITTER.Checked Then + Dim s As Sites = GetSiteByCheckers() + If Not s = Sites.Undefined Then Dim tmpUser As UserInfo = User.Clone With tmpUser .Name = TXT_USER.Text - .Site = IIf(OPT_REDDIT.Checked, Sites.Reddit, Sites.Twitter) + .SpecialPath = SpecialPath(s) + .Site = s .IsChannel = CH_IS_CHANNEL.Checked .UpdateUserFile() End With @@ -208,6 +238,7 @@ CloseForm: Private ReadOnly RedditRegEx2 As New RegexStructure(".?u/([^/]+)", 1) Private ReadOnly RedditChannelRegEx1 As New RegexStructure("[htps:/]{7,8}.*?reddit.com/r/([^/]+)", 1) Private ReadOnly RedditChannelRegEx2 As New RegexStructure(".?r/([^/]+)", 1) + Private ReadOnly InstagramRegEx As New RegexStructure("[htps:/]{7,8}.*?instagram.com/([^/]+)", 1) Private _TextChangeInvoked As Boolean = False Private Sub TXT_USER_ActionOnTextChange() Handles TXT_USER.ActionOnTextChange Try @@ -218,7 +249,8 @@ CloseForm: Select Case s(0) Case Sites.Twitter : OPT_TWITTER.Checked = True Case Sites.Reddit : OPT_REDDIT.Checked = True - Case Else : OPT_TWITTER.Checked = False : OPT_REDDIT.Checked = False + Case Sites.Instagram : OPT_INSTAGRAM.Checked = True + Case Else : OPT_TWITTER.Checked = False : OPT_REDDIT.Checked = False : OPT_INSTAGRAM.Checked = False End Select CH_IS_CHANNEL.Checked = CBool(s(1)) End If @@ -235,6 +267,8 @@ CloseForm: Return {Sites.Reddit, False} ElseIf CheckRegex(TXT, RedditChannelRegEx1) OrElse CheckRegex(TXT, RedditChannelRegEx2) Then Return {Sites.Reddit, True} + ElseIf CheckRegex(TXT, InstagramRegEx) Then + Return {Sites.Instagram, False} End If End If Return {Sites.Undefined, False} @@ -249,6 +283,17 @@ CloseForm: Private Sub OPT_TWITTER_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_TWITTER.CheckedChanged If OPT_TWITTER.Checked Then CH_IS_CHANNEL.Checked = False : CH_IS_CHANNEL.Enabled = False : SetParamsBySite() End Sub + Private Sub OPT_INSTAGRAM_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_INSTAGRAM.CheckedChanged + If OPT_INSTAGRAM.Checked Then CH_IS_CHANNEL.Checked = False : CH_IS_CHANNEL.Enabled = False : SetParamsBySite() + End Sub + Private Sub TXT_SPEC_FOLDER_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_SPEC_FOLDER.ActionOnButtonClick + If Sender.DefaultButton = ActionButton.DefaultButtons.Open Then + Dim f As SFile = Nothing + If Not TXT_SPEC_FOLDER.Text.IsEmptyString Then f = $"{TXT_SPEC_FOLDER.Text}\" + f = SFile.SelectPath(f, True) + If Not f.IsEmptyString Then TXT_SPEC_FOLDER.Text = f.PathWithSeparator + End If + End Sub Private Sub CH_TEMP_CheckedChanged(sender As Object, e As EventArgs) Handles CH_TEMP.CheckedChanged If CH_TEMP.Checked Then CH_FAV.Checked = False : CH_READY_FOR_DOWN.Checked = False End Sub @@ -256,27 +301,17 @@ CloseForm: If CH_FAV.Checked Then CH_TEMP.Checked = False End Sub Private Sub SetParamsBySite() - Dim s As Sites = Sites.Undefined - Select Case True - Case OPT_REDDIT.Checked : s = Sites.Reddit - Case OPT_TWITTER.Checked : s = Sites.Twitter - End Select - With Settings - Select Case s - Case Sites.Reddit - CH_TEMP.Checked = .RedditTemporary - CH_DOWN_IMAGES.Checked = .RedditDownloadImages - CH_DOWN_VIDEOS.Checked = .RedditDownloadVideos - CH_PARSE_USER_MEDIA.Checked = False - CH_PARSE_USER_MEDIA.Enabled = False - Case Sites.Twitter - CH_TEMP.Checked = .TwitterTemporary - CH_DOWN_IMAGES.Checked = .TwitterDownloadImages - CH_DOWN_VIDEOS.Checked = .TwitterDownloadVideos - CH_PARSE_USER_MEDIA.Enabled = True - CH_PARSE_USER_MEDIA.Checked = .TwitterDefaultGetUserMedia - End Select - End With + Dim s As Sites = GetSiteByCheckers() + If Not s = Sites.Undefined Then + With Settings(s) + CH_TEMP.Checked = .Temporary + CH_DOWN_IMAGES.Checked = .DownloadImages + CH_DOWN_VIDEOS.Checked = .DownloadVideos + CH_PARSE_USER_MEDIA.Checked = s = Sites.Twitter AndAlso .GetUserMediaOnly.Value + CH_PARSE_USER_MEDIA.Enabled = s = Sites.Twitter + CH_READY_FOR_DOWN.Checked = Not CH_TEMP.Checked + End With + End If End Sub Private Sub CH_ADD_BY_LIST_CheckedChanged(sender As Object, e As EventArgs) Handles CH_ADD_BY_LIST.CheckedChanged If CH_ADD_BY_LIST.Checked Then @@ -295,6 +330,7 @@ CloseForm: Private Sub CH_AUTO_DETECT_SITE_CheckedChanged(sender As Object, e As EventArgs) Handles CH_AUTO_DETECT_SITE.CheckedChanged OPT_REDDIT.Enabled = Not CH_AUTO_DETECT_SITE.Checked OPT_TWITTER.Enabled = Not CH_AUTO_DETECT_SITE.Checked + OPT_INSTAGRAM.Enabled = Not CH_AUTO_DETECT_SITE.Checked CH_IS_CHANNEL.Enabled = Not CH_AUTO_DETECT_SITE.Checked End Sub Private Function CreateUsersByList() As Boolean @@ -308,18 +344,14 @@ CloseForm: Dim BannedUsers() As String = Nothing Dim uu$ Dim tmpUser As UserInfo - Dim s As Sites + Dim s As Sites = GetSiteByCheckers() Dim sObj() As Object Dim _IsChannel As Boolean = CH_IS_CHANNEL.Checked Dim Added% = 0 Dim Skipped% = 0 Dim uid% - - Select Case True - Case OPT_REDDIT.Checked : s = Sites.Reddit - Case OPT_TWITTER.Checked : s = Sites.Twitter - Case Else : s = Sites.Undefined - End Select + Dim sf As Func(Of Sites, String) = Function(__s) SpecialPath(__s).PathWithSeparator + Dim __sf As Func(Of String, Sites, SFile) = Function(Input, __s) IIf(sf(__s).IsEmptyString, Nothing, New SFile($"{sf(__s)}{Input}\")) For i% = 0 To u.Count - 1 uu = u(i) @@ -330,7 +362,7 @@ CloseForm: End If If Not s = Sites.Undefined Then - tmpUser = New UserInfo(uu, s) With {.IsChannel = _IsChannel} + tmpUser = New UserInfo(uu, s,,, __sf(uu, s)) With {.IsChannel = _IsChannel} uid = -1 If Settings.UsersList.Count > 0 Then uid = Settings.UsersList.IndexOf(tmpUser) If uid < 0 And Not UsersForCreate.Contains(tmpUser) Then diff --git a/SCrawler/MainFrame.Designer.vb b/SCrawler/MainFrame.Designer.vb index 9fe1e33..472a809 100644 --- a/SCrawler/MainFrame.Designer.vb +++ b/SCrawler/MainFrame.Designer.vb @@ -27,7 +27,6 @@ Partial Class MainFrame Dim SEP_2 As System.Windows.Forms.ToolStripSeparator Dim CONTEXT_SEP_1 As System.Windows.Forms.ToolStripSeparator Dim MENU_SETTINGS As System.Windows.Forms.ToolStripDropDownButton - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainFrame)) Dim MENU_SETTINGS_SEP_1 As System.Windows.Forms.ToolStripSeparator Dim SEP_3 As System.Windows.Forms.ToolStripSeparator Dim CONTEXT_SEP_2 As System.Windows.Forms.ToolStripSeparator @@ -36,9 +35,12 @@ Partial Class MainFrame Dim CONTEXT_SEP_5 As System.Windows.Forms.ToolStripSeparator Dim SEP_4 As System.Windows.Forms.ToolStripSeparator Dim MENU_VIEW_SEP_1 As System.Windows.Forms.ToolStripSeparator + Dim MENU_VIEW_SEP_3 As System.Windows.Forms.ToolStripSeparator Dim MENU_VIEW_SEP_2 As System.Windows.Forms.ToolStripSeparator + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainFrame)) Me.BTT_SETTINGS_REDDIT = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_SETTINGS_TWITTER = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_SETTINGS_INSTAGRAM = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_SETTINGS = New System.Windows.Forms.ToolStripMenuItem() Me.Toolbar_TOP = New System.Windows.Forms.ToolStrip() Me.BTT_ADD_USER = New System.Windows.Forms.ToolStripButton() @@ -47,6 +49,7 @@ Partial Class MainFrame Me.BTT_REFRESH = New System.Windows.Forms.ToolStripButton() Me.BTT_SHOW_INFO = New System.Windows.Forms.ToolStripButton() Me.BTT_CHANNELS = New System.Windows.Forms.ToolStripButton() + Me.BTT_DOWN_SAVED = New System.Windows.Forms.ToolStripButton() Me.BTT_DOWN_SELECTED = New System.Windows.Forms.ToolStripButton() Me.BTT_DOWN_ALL = New System.Windows.Forms.ToolStripButton() Me.BTT_DOWN_VIDEO = New System.Windows.Forms.ToolStripButton() @@ -55,6 +58,8 @@ Partial Class MainFrame Me.BTT_VIEW_LARGE = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_VIEW_SMALL = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_VIEW_LIST = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_SITE_ALL = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_SITE_SPECIFIC = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_SHOW_ALL = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_SHOW_REGULAR = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_SHOW_TEMP = New System.Windows.Forms.ToolStripMenuItem() @@ -65,6 +70,7 @@ Partial Class MainFrame Me.BTT_LOG = New System.Windows.Forms.ToolStripButton() Me.BTT_VERSION_INFO = New System.Windows.Forms.ToolStripButton() Me.Toolbar_BOTTOM = New System.Windows.Forms.StatusStrip() + Me.PR_SAVED = New System.Windows.Forms.ToolStripProgressBar() Me.PR_MAIN = New System.Windows.Forms.ToolStripProgressBar() Me.LBL_JOBS_COUNT = New System.Windows.Forms.ToolStripStatusLabel() Me.LBL_STATUS = New System.Windows.Forms.ToolStripStatusLabel() @@ -76,14 +82,15 @@ Partial Class MainFrame Me.BTT_CONTEXT_DELETE = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_FAV = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_TEMP = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_CONTEXT_READY = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_GROUPS = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_ADD_TO_COL = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_COL_MERGE = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_CONTEXT_CHANGE_FOLDER = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CHANGE_IMAGE = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_OPEN_PATH = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_OPEN_SITE = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_INFO = New System.Windows.Forms.ToolStripMenuItem() - Me.BTT_CONTEXT_READY = New System.Windows.Forms.ToolStripMenuItem() SEP_1 = New System.Windows.Forms.ToolStripSeparator() SEP_2 = New System.Windows.Forms.ToolStripSeparator() CONTEXT_SEP_1 = New System.Windows.Forms.ToolStripSeparator() @@ -96,6 +103,7 @@ Partial Class MainFrame CONTEXT_SEP_5 = New System.Windows.Forms.ToolStripSeparator() SEP_4 = New System.Windows.Forms.ToolStripSeparator() MENU_VIEW_SEP_1 = New System.Windows.Forms.ToolStripSeparator() + MENU_VIEW_SEP_3 = New System.Windows.Forms.ToolStripSeparator() MENU_VIEW_SEP_2 = New System.Windows.Forms.ToolStripSeparator() Me.Toolbar_TOP.SuspendLayout() Me.Toolbar_BOTTOM.SuspendLayout() @@ -120,9 +128,7 @@ Partial Class MainFrame 'MENU_SETTINGS ' MENU_SETTINGS.AutoToolTip = False - MENU_SETTINGS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - MENU_SETTINGS.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_SETTINGS_REDDIT, Me.BTT_SETTINGS_TWITTER, MENU_SETTINGS_SEP_1, Me.BTT_SETTINGS}) - MENU_SETTINGS.Image = CType(resources.GetObject("MENU_SETTINGS.Image"), System.Drawing.Image) + MENU_SETTINGS.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_SETTINGS_REDDIT, Me.BTT_SETTINGS_TWITTER, Me.BTT_SETTINGS_INSTAGRAM, MENU_SETTINGS_SEP_1, Me.BTT_SETTINGS}) MENU_SETTINGS.ImageTransparentColor = System.Drawing.Color.Magenta MENU_SETTINGS.Name = "MENU_SETTINGS" MENU_SETTINGS.Size = New System.Drawing.Size(62, 22) @@ -130,25 +136,35 @@ Partial Class MainFrame ' 'BTT_SETTINGS_REDDIT ' + Me.BTT_SETTINGS_REDDIT.Image = Global.SCrawler.My.Resources.Resources.RedditPic512 Me.BTT_SETTINGS_REDDIT.Name = "BTT_SETTINGS_REDDIT" - Me.BTT_SETTINGS_REDDIT.Size = New System.Drawing.Size(116, 22) + Me.BTT_SETTINGS_REDDIT.Size = New System.Drawing.Size(127, 22) Me.BTT_SETTINGS_REDDIT.Text = "Reddit" ' 'BTT_SETTINGS_TWITTER ' + Me.BTT_SETTINGS_TWITTER.Image = Global.SCrawler.My.Resources.Resources.TwitterPic400 Me.BTT_SETTINGS_TWITTER.Name = "BTT_SETTINGS_TWITTER" - Me.BTT_SETTINGS_TWITTER.Size = New System.Drawing.Size(116, 22) + Me.BTT_SETTINGS_TWITTER.Size = New System.Drawing.Size(127, 22) Me.BTT_SETTINGS_TWITTER.Text = "Twitter" ' + 'BTT_SETTINGS_INSTAGRAM + ' + Me.BTT_SETTINGS_INSTAGRAM.Image = Global.SCrawler.My.Resources.Resources.InstagramPic76 + Me.BTT_SETTINGS_INSTAGRAM.Name = "BTT_SETTINGS_INSTAGRAM" + Me.BTT_SETTINGS_INSTAGRAM.Size = New System.Drawing.Size(127, 22) + Me.BTT_SETTINGS_INSTAGRAM.Text = "Instagram" + ' 'MENU_SETTINGS_SEP_1 ' MENU_SETTINGS_SEP_1.Name = "MENU_SETTINGS_SEP_1" - MENU_SETTINGS_SEP_1.Size = New System.Drawing.Size(113, 6) + MENU_SETTINGS_SEP_1.Size = New System.Drawing.Size(124, 6) ' 'BTT_SETTINGS ' + Me.BTT_SETTINGS.Image = Global.SCrawler.My.Resources.Resources.SettingsPic_16 Me.BTT_SETTINGS.Name = "BTT_SETTINGS" - Me.BTT_SETTINGS.Size = New System.Drawing.Size(116, 22) + Me.BTT_SETTINGS.Size = New System.Drawing.Size(127, 22) Me.BTT_SETTINGS.Text = "Settings" ' 'SEP_3 @@ -186,6 +202,11 @@ Partial Class MainFrame MENU_VIEW_SEP_1.Name = "MENU_VIEW_SEP_1" MENU_VIEW_SEP_1.Size = New System.Drawing.Size(141, 6) ' + 'MENU_VIEW_SEP_3 + ' + MENU_VIEW_SEP_3.Name = "MENU_VIEW_SEP_3" + MENU_VIEW_SEP_3.Size = New System.Drawing.Size(141, 6) + ' 'MENU_VIEW_SEP_2 ' MENU_VIEW_SEP_2.Name = "MENU_VIEW_SEP_2" @@ -194,7 +215,7 @@ Partial Class MainFrame 'Toolbar_TOP ' Me.Toolbar_TOP.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden - Me.Toolbar_TOP.Items.AddRange(New System.Windows.Forms.ToolStripItem() {MENU_SETTINGS, SEP_1, Me.BTT_ADD_USER, Me.BTT_EDIT_USER, Me.BTT_DELETE_USER, Me.BTT_REFRESH, Me.BTT_SHOW_INFO, Me.BTT_CHANNELS, SEP_2, Me.BTT_DOWN_SELECTED, Me.BTT_DOWN_ALL, Me.BTT_DOWN_VIDEO, Me.BTT_DOWN_STOP, SEP_3, Me.MENU_VIEW, SEP_4, Me.BTT_LOG, Me.BTT_VERSION_INFO}) + Me.Toolbar_TOP.Items.AddRange(New System.Windows.Forms.ToolStripItem() {MENU_SETTINGS, SEP_1, Me.BTT_ADD_USER, Me.BTT_EDIT_USER, Me.BTT_DELETE_USER, Me.BTT_REFRESH, Me.BTT_SHOW_INFO, Me.BTT_CHANNELS, Me.BTT_DOWN_SAVED, SEP_2, Me.BTT_DOWN_SELECTED, Me.BTT_DOWN_ALL, Me.BTT_DOWN_VIDEO, Me.BTT_DOWN_STOP, SEP_3, Me.MENU_VIEW, SEP_4, Me.BTT_LOG, Me.BTT_VERSION_INFO}) Me.Toolbar_TOP.Location = New System.Drawing.Point(0, 0) Me.Toolbar_TOP.Name = "Toolbar_TOP" Me.Toolbar_TOP.Size = New System.Drawing.Size(934, 25) @@ -247,12 +268,22 @@ Partial Class MainFrame ' 'BTT_CHANNELS ' + Me.BTT_CHANNELS.AutoToolTip = False Me.BTT_CHANNELS.Image = Global.SCrawler.My.Resources.Resources.RedditPic512 Me.BTT_CHANNELS.ImageTransparentColor = System.Drawing.Color.Magenta Me.BTT_CHANNELS.Name = "BTT_CHANNELS" Me.BTT_CHANNELS.Size = New System.Drawing.Size(76, 22) Me.BTT_CHANNELS.Text = "Channels" ' + 'BTT_DOWN_SAVED + ' + Me.BTT_DOWN_SAVED.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.BTT_DOWN_SAVED.Image = Global.SCrawler.My.Resources.Resources.BookmarkBlack_16 + Me.BTT_DOWN_SAVED.ImageTransparentColor = System.Drawing.Color.Magenta + Me.BTT_DOWN_SAVED.Name = "BTT_DOWN_SAVED" + Me.BTT_DOWN_SAVED.Size = New System.Drawing.Size(23, 22) + Me.BTT_DOWN_SAVED.ToolTipText = "Download Reddit saved posts" + ' 'BTT_DOWN_SELECTED ' Me.BTT_DOWN_SELECTED.Image = Global.SCrawler.My.Resources.Resources.StartPic_01_Green_16 @@ -295,11 +326,11 @@ Partial Class MainFrame ' Me.MENU_VIEW.AutoToolTip = False Me.MENU_VIEW.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text - Me.MENU_VIEW.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_VIEW_LARGE, Me.BTT_VIEW_SMALL, Me.BTT_VIEW_LIST, MENU_VIEW_SEP_1, Me.BTT_SHOW_ALL, Me.BTT_SHOW_REGULAR, Me.BTT_SHOW_TEMP, Me.BTT_SHOW_FAV, Me.BTT_SHOW_LABELS, Me.BTT_SHOW_NO_LABELS, MENU_VIEW_SEP_2, Me.BTT_SELECT_LABELS}) + Me.MENU_VIEW.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_VIEW_LARGE, Me.BTT_VIEW_SMALL, Me.BTT_VIEW_LIST, MENU_VIEW_SEP_1, Me.BTT_SITE_ALL, Me.BTT_SITE_SPECIFIC, MENU_VIEW_SEP_2, Me.BTT_SHOW_ALL, Me.BTT_SHOW_REGULAR, Me.BTT_SHOW_TEMP, Me.BTT_SHOW_FAV, Me.BTT_SHOW_LABELS, Me.BTT_SHOW_NO_LABELS, MENU_VIEW_SEP_3, Me.BTT_SELECT_LABELS}) Me.MENU_VIEW.Image = CType(resources.GetObject("MENU_VIEW.Image"), System.Drawing.Image) Me.MENU_VIEW.ImageTransparentColor = System.Drawing.Color.Magenta Me.MENU_VIEW.Name = "MENU_VIEW" - Me.MENU_VIEW.Size = New System.Drawing.Size(45, 22) + Me.MENU_VIEW.Size = New System.Drawing.Size(45, 19) Me.MENU_VIEW.Text = "View" ' 'BTT_VIEW_LARGE @@ -320,6 +351,18 @@ Partial Class MainFrame Me.BTT_VIEW_LIST.Size = New System.Drawing.Size(144, 22) Me.BTT_VIEW_LIST.Text = "List" ' + 'BTT_SITE_ALL + ' + Me.BTT_SITE_ALL.Name = "BTT_SITE_ALL" + Me.BTT_SITE_ALL.Size = New System.Drawing.Size(144, 22) + Me.BTT_SITE_ALL.Text = "All" + ' + 'BTT_SITE_SPECIFIC + ' + Me.BTT_SITE_SPECIFIC.Name = "BTT_SITE_SPECIFIC" + Me.BTT_SITE_SPECIFIC.Size = New System.Drawing.Size(144, 22) + Me.BTT_SITE_SPECIFIC.Text = "Specific sites" + ' 'BTT_SHOW_ALL ' Me.BTT_SHOW_ALL.Name = "BTT_SHOW_ALL" @@ -385,12 +428,17 @@ Partial Class MainFrame ' 'Toolbar_BOTTOM ' - Me.Toolbar_BOTTOM.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.PR_MAIN, Me.LBL_JOBS_COUNT, Me.LBL_STATUS}) + Me.Toolbar_BOTTOM.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.PR_SAVED, Me.PR_MAIN, Me.LBL_JOBS_COUNT, Me.LBL_STATUS}) Me.Toolbar_BOTTOM.Location = New System.Drawing.Point(0, 439) Me.Toolbar_BOTTOM.Name = "Toolbar_BOTTOM" Me.Toolbar_BOTTOM.Size = New System.Drawing.Size(934, 22) Me.Toolbar_BOTTOM.TabIndex = 2 - Me.Toolbar_BOTTOM.Text = "StatusStrip1" + ' + 'PR_SAVED + ' + Me.PR_SAVED.Name = "PR_SAVED" + Me.PR_SAVED.Size = New System.Drawing.Size(100, 16) + Me.PR_SAVED.Visible = False ' 'PR_MAIN ' @@ -423,7 +471,7 @@ Partial Class MainFrame ' 'USER_CONTEXT ' - Me.USER_CONTEXT.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.BTT_CONTEXT_DOWN_LIMITED, Me.BTT_CONTEXT_EDIT, Me.BTT_CONTEXT_DELETE, CONTEXT_SEP_1, Me.BTT_CONTEXT_FAV, Me.BTT_CONTEXT_TEMP, Me.BTT_CONTEXT_READY, Me.BTT_CONTEXT_GROUPS, Me.BTT_CONTEXT_ADD_TO_COL, Me.BTT_CONTEXT_COL_MERGE, CONTEXT_SEP_2, Me.BTT_CHANGE_IMAGE, CONTEXT_SEP_3, Me.BTT_CONTEXT_OPEN_PATH, CONTEXT_SEP_4, Me.BTT_CONTEXT_OPEN_SITE, CONTEXT_SEP_5, Me.BTT_CONTEXT_INFO}) + Me.USER_CONTEXT.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.BTT_CONTEXT_DOWN_LIMITED, Me.BTT_CONTEXT_EDIT, Me.BTT_CONTEXT_DELETE, CONTEXT_SEP_1, Me.BTT_CONTEXT_FAV, Me.BTT_CONTEXT_TEMP, Me.BTT_CONTEXT_READY, Me.BTT_CONTEXT_GROUPS, Me.BTT_CONTEXT_ADD_TO_COL, Me.BTT_CONTEXT_COL_MERGE, Me.BTT_CONTEXT_CHANGE_FOLDER, CONTEXT_SEP_2, Me.BTT_CHANGE_IMAGE, CONTEXT_SEP_3, Me.BTT_CONTEXT_OPEN_PATH, CONTEXT_SEP_4, Me.BTT_CONTEXT_OPEN_SITE, CONTEXT_SEP_5, Me.BTT_CONTEXT_INFO}) Me.USER_CONTEXT.Name = "USER_CONTEXT" Me.USER_CONTEXT.Size = New System.Drawing.Size(222, 364) ' @@ -471,6 +519,12 @@ Partial Class MainFrame Me.BTT_CONTEXT_TEMP.Size = New System.Drawing.Size(221, 22) Me.BTT_CONTEXT_TEMP.Text = "Change temporary" ' + 'BTT_CONTEXT_READY + ' + Me.BTT_CONTEXT_READY.Name = "BTT_CONTEXT_READY" + Me.BTT_CONTEXT_READY.Size = New System.Drawing.Size(221, 22) + Me.BTT_CONTEXT_READY.Text = "Change ready for download" + ' 'BTT_CONTEXT_GROUPS ' Me.BTT_CONTEXT_GROUPS.Name = "BTT_CONTEXT_GROUPS" @@ -490,6 +544,14 @@ Partial Class MainFrame Me.BTT_CONTEXT_COL_MERGE.Size = New System.Drawing.Size(221, 22) Me.BTT_CONTEXT_COL_MERGE.Text = "Merge collection files" ' + 'BTT_CONTEXT_CHANGE_FOLDER + ' + Me.BTT_CONTEXT_CHANGE_FOLDER.AutoToolTip = True + Me.BTT_CONTEXT_CHANGE_FOLDER.Name = "BTT_CONTEXT_CHANGE_FOLDER" + Me.BTT_CONTEXT_CHANGE_FOLDER.Size = New System.Drawing.Size(221, 22) + Me.BTT_CONTEXT_CHANGE_FOLDER.Text = "Change folder" + Me.BTT_CONTEXT_CHANGE_FOLDER.ToolTipText = "Change user data folder" + ' 'BTT_CHANGE_IMAGE ' Me.BTT_CHANGE_IMAGE.Image = Global.SCrawler.My.Resources.Resources.PicturePic_32 @@ -518,12 +580,6 @@ Partial Class MainFrame Me.BTT_CONTEXT_INFO.Size = New System.Drawing.Size(221, 22) Me.BTT_CONTEXT_INFO.Text = "Information" ' - 'BTT_CONTEXT_READY - ' - Me.BTT_CONTEXT_READY.Name = "BTT_CONTEXT_READY" - Me.BTT_CONTEXT_READY.Size = New System.Drawing.Size(221, 22) - Me.BTT_CONTEXT_READY.Text = "Change ready for download" - ' 'MainFrame ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -594,4 +650,10 @@ Partial Class MainFrame Private WithEvents BTT_VERSION_INFO As ToolStripButton Private WithEvents BTT_CONTEXT_DOWN_LIMITED As ToolStripMenuItem Private WithEvents BTT_CONTEXT_READY As ToolStripMenuItem + Private WithEvents BTT_SETTINGS_INSTAGRAM As ToolStripMenuItem + Private WithEvents BTT_SITE_ALL As ToolStripMenuItem + Private WithEvents BTT_SITE_SPECIFIC As ToolStripMenuItem + Private WithEvents BTT_CONTEXT_CHANGE_FOLDER As ToolStripMenuItem + Private WithEvents PR_SAVED As ToolStripProgressBar + Private WithEvents BTT_DOWN_SAVED As ToolStripButton End Class diff --git a/SCrawler/MainFrame.resx b/SCrawler/MainFrame.resx index aa33c66..2d3179e 100644 --- a/SCrawler/MainFrame.resx +++ b/SCrawler/MainFrame.resx @@ -132,22 +132,6 @@ False - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG - YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 - 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw - bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc - VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 - c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 - Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo - mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ - kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D - TgDQASA1MVpwzwAAAABJRU5ErkJggg== - - False @@ -169,12 +153,16 @@ False + + False + False 132, 17 + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 diff --git a/SCrawler/MainFrame.vb b/SCrawler/MainFrame.vb index ca87a9a..79332e7 100644 --- a/SCrawler/MainFrame.vb +++ b/SCrawler/MainFrame.vb @@ -46,19 +46,30 @@ Public Class MainFrame MainProgress = New Toolbars.MyProgress(Toolbar_BOTTOM, PR_MAIN, LBL_STATUS) With {.DropCurrentProgressOnTotalChange = False} Dim gk$ With LIST_PROFILES.Groups - gk = GetLviGroupName(Sites.Undefined, False, False, True) + 'Collections + gk = GetLviGroupName(Sites.Undefined, False, True, True, False) .Add(New ListViewGroup(gk, gk)) - gk = GetLviGroupName(Sites.Undefined, False, True, True) + gk = GetLviGroupName(Sites.Undefined, False, False, True, False) .Add(New ListViewGroup(gk, gk)) - gk = GetLviGroupName(Sites.Undefined, True, False, True) + gk = GetLviGroupName(Sites.Undefined, True, False, True, False) .Add(New ListViewGroup(gk, gk)) - For Each s In {Sites.Reddit, Sites.Twitter} - gk = GetLviGroupName(s, False, True, False) - .Add(New ListViewGroup(gk, gk)) - gk = GetLviGroupName(s, False, False, False) - .Add(New ListViewGroup(gk, gk)) - gk = GetLviGroupName(s, True, False, False) - .Add(New ListViewGroup(gk, gk)) + 'Channels + gk = GetLviGroupName(Sites.Undefined, False, True, False, True) + .Add(New ListViewGroup(gk, gk)) + gk = GetLviGroupName(Sites.Undefined, False, False, False, True) + .Add(New ListViewGroup(gk, gk)) + gk = GetLviGroupName(Sites.Undefined, True, False, False, True) + .Add(New ListViewGroup(gk, gk)) + 'Sites + For Each s As Sites In [Enum].GetValues(GetType(Sites)) + If Not s = Sites.Undefined Then + gk = GetLviGroupName(s, False, True, False, False) + .Add(New ListViewGroup(gk, gk)) + gk = GetLviGroupName(s, False, False, False, False) + .Add(New ListViewGroup(gk, gk)) + gk = GetLviGroupName(s, True, False, False, False) + .Add(New ListViewGroup(gk, gk)) + End If Next If Settings.Labels.Count > 0 Then Settings.Labels.ToList.ForEach(Sub(l) .Add(New ListViewGroup(l, l))) .Add(Settings.Labels.NoLabel) @@ -72,6 +83,8 @@ Public Class MainFrame UpdateLabelsGroups() SetShowButtonsCheckers(Settings.ShowingMode.Value) CheckVersion(False) + BTT_SITE_ALL.Checked = Settings.SelectedSites.Count = 0 + BTT_SITE_SPECIFIC.Checked = Settings.SelectedSites.Count > 0 _UFinit = False GoTo EndFunction FormClosingInvoker: @@ -89,12 +102,13 @@ EndFunction: "Downloading in progress"}, MsgBoxStyle.Exclamation,,, {"Stop downloading and close", "Cancel"}) = 0 Then - If Downloader.Working Then _CloseInvoked = True : Downloader.Stop() + If Downloader.Working Then _CloseInvoked = True : Downloader.Stop() : Downloader.DownloadSavedPostsStop() + If Downloader.SavedPostsDownloading Then _CloseInvoked = True : Downloader.DownloadSavedPostsStop() If ChannelsWorking.Invoke Then _CloseInvoked = True : MyChannels.Stop(False) If _CloseInvoked Then e.Cancel = True Await Task.Run(Sub() - While Downloader.Working Or ChannelsWorking.Invoke : Thread.Sleep(500) : End While + While Downloader.Working Or ChannelsWorking.Invoke Or Downloader.SavedPostsDownloading : Thread.Sleep(500) : End While End Sub) End If Downloader.Dispose() @@ -240,10 +254,13 @@ CloseResume: #Region "Toolbar buttons" #Region "Settings" Private Sub BTT_SETTINGS_REDDIT_Click(sender As Object, e As EventArgs) Handles BTT_SETTINGS_REDDIT.Click - Using f As New RedditEditorForm : f.ShowDialog() : End Using + Using f As New SiteEditorForm(Sites.Reddit) : f.ShowDialog() : End Using End Sub Private Sub BTT_SETTINGS_TWITTER_Click(sender As Object, e As EventArgs) Handles BTT_SETTINGS_TWITTER.Click - Using f As New TwitterEditorForm : f.ShowDialog() : End Using + Using f As New SiteEditorForm(Sites.Twitter) : f.ShowDialog() : End Using + End Sub + Private Sub BTT_SETTINGS_INSTAGRAM_Click(sender As Object, e As EventArgs) Handles BTT_SETTINGS_INSTAGRAM.Click + Using f As New SiteEditorForm(Sites.Instagram) : f.ShowDialog() : End Using End Sub Private Sub BTT_SETTINGS_Click(sender As Object, e As EventArgs) Handles BTT_SETTINGS.Click Dim mhl% = Settings.MaxLargeImageHeigh.Value @@ -270,19 +287,21 @@ CloseResume: If Not UserBanned(f.User.Name) Then Settings.UpdateUsersList(f.User) Settings.Users.Add(UserDataBase.GetInstance(f.User)) - With Settings.Users(Settings.Users.Count - 1) - .Favorite = f.UserFavorite - .Temporary = f.UserTemporary - .ParseUserMediaOnly = f.UserMediaOnly - .ReadyForDownload = f.UserReady - .DownloadImages = f.DownloadImages - .DownloadVideos = f.DownloadVideos - .FriendlyName = f.UserFriendly - .Description = f.UserDescr - .Self.Labels.ListAddList(f.UserLabels, LAP.ClearBeforeAdd, LAP.NotContainsOnly) - .UpdateUserInformation() + With Settings.Users.Last + If Not .FileExists Then + .Favorite = f.UserFavorite + .Temporary = f.UserTemporary + .ParseUserMediaOnly = f.UserMediaOnly + .ReadyForDownload = f.UserReady + .DownloadImages = f.DownloadImages + .DownloadVideos = f.DownloadVideos + .FriendlyName = f.UserFriendly + .Description = f.UserDescr + .Self.Labels.ListAddList(f.UserLabels, LAP.ClearBeforeAdd, LAP.NotContainsOnly) + .UpdateUserInformation() + End If End With - UserListUpdate(Settings.Users(Settings.Users.Count - 1), True) + UserListUpdate(Settings.Users.Last, True) i = LIST_PROFILES.Items.IndexOfKey(Settings.Users(Settings.Users.Count - 1).LVIKey) If i >= 0 Then LIST_PROFILES.SelectedIndices.Clear() @@ -340,6 +359,9 @@ CloseResume: End If If MyChannels.Visible Then MyChannels.BringToFront() Else MyChannels.Show() End Sub + Private Sub BTT_DOWN_SAVED_Click(sender As Object, e As EventArgs) Handles BTT_DOWN_SAVED.Click + Downloader.DownloadSavedPostsStart(Toolbar_BOTTOM, PR_SAVED) + End Sub #End Region #Region "Download" Private Sub BTT_DOWN_SELECTED_Click(sender As Object, e As EventArgs) Handles BTT_DOWN_SELECTED.Click @@ -388,6 +410,25 @@ CloseResume: BTT_VIEW_LIST.Checked = List End Sub #End Region +#Region "View Site" + Private Sub BTT_SITE_ALL_Click(sender As Object, e As EventArgs) Handles BTT_SITE_ALL.Click + Settings.SelectedSites = Nothing + If Not BTT_SITE_ALL.Checked Then Settings.SelectedSites = Nothing : RefillList() + BTT_SITE_ALL.Checked = True + BTT_SITE_SPECIFIC.Checked = False + End Sub + Private Sub BTT_SITE_SPECIFIC_Click(sender As Object, e As EventArgs) Handles BTT_SITE_SPECIFIC.Click + Using f As New SiteSelectionForm(Settings.SelectedSites) + f.ShowDialog() + If f.DialogResult = DialogResult.OK Then + Settings.SelectedSites = f.SelectedSites + BTT_SITE_SPECIFIC.Checked = Settings.SelectedSites.Count > 0 + BTT_SITE_ALL.Checked = Settings.SelectedSites.Count = 0 + RefillList() + End If + End Using + End Sub +#End Region #Region "Labels" Private Sub BTT_SHOW_ALL_Click(sender As Object, e As EventArgs) Handles BTT_SHOW_ALL.Click SetShowButtonsCheckers(ShowingModes.All) @@ -631,6 +672,86 @@ CloseResume: End If End If End Sub + Private Sub BTT_CONTEXT_CHANGE_FOLDER_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_CHANGE_FOLDER.Click + Try + Dim users As List(Of IUserData) = GetSelectedUserArray() + If users.ListExists Then + If users.Count = 1 Then + Dim CutOption% = 1 + Dim _IsCollection As Boolean = False + With users(0) + If .IsCollection Then + _IsCollection = True + With DirectCast(.Self, UserDataBind) + If .Count = 0 Then + Throw New ArgumentOutOfRangeException("Collection", "Collection is empty") + Else + With DirectCast(.Collections(0).Self, UserDataBase) + If Not .User.Merged Then CutOption = 2 + End With + End If + End With + End If + End With + + Dim CurrDir As SFile = users(0).File.CutPath(CutOption) + Dim NewDest As SFile = SFile.GetPath(InputBoxE($"Enter a new destination for user [{users(0)}]", "Change user folder", CurrDir.Path)) + If Not NewDest.IsEmptyString Then + If MsgBoxE({$"You are changing the user's [{users(0)}] destination" & vbCr & + $"Current destination: {CurrDir.PathNoSeparator}" & vbCr & + $"New destination: {NewDest.Path}", + "Changing user destination"}, MsgBoxStyle.Exclamation,,, {"Confirm", "Cancel"}) = 0 Then + If Not NewDest.IsEmptyString AndAlso + (Not NewDest.Exists(SFO.Path, False) OrElse + ( + SFile.GetFiles(NewDest,, IO.SearchOption.AllDirectories, EDP.ThrowException).ListIfNothing.Count = 0 AndAlso + NewDest.Delete(SFO.Path, False, False, EDP.ThrowException) AndAlso + Not NewDest.Exists(SFO.Path, False) + ) + ) Then + NewDest.CutPath.Exists(SFO.Path) + IO.Directory.Move(CurrDir.Path, NewDest.Path) + Dim ApplyChanges As Action(Of IUserData) = Sub(ByVal __user As IUserData) + With DirectCast(__user.Self, UserDataBase) + Dim u As UserInfo = .User.Clone + Settings.UsersList.Remove(u) + Dim d As SFile = Nothing + If _IsCollection Then d = SFile.GetPath($"{NewDest.PathWithSeparator}{u.File.PathFolders(1).LastOrDefault}") + If d.IsEmptyString Then d = NewDest + u.SpecialPath = d.PathWithSeparator + u.UpdateUserFile() + Settings.UpdateUsersList(u) + .User = u.Clone + .UpdateUserInformation() + End With + End Sub + If users(0).IsCollection Then + With DirectCast(users(0), UserDataBind) + For Each user In .Collections : ApplyChanges(user) : Next + End With + Else + ApplyChanges(users(0)) + End If + MsgBoxE($"User data has been moved") + Else + MsgBoxE($"Unable to move user data to new destination [{NewDest}]{vbCr}Operation canceled", MsgBoxStyle.Critical) + End If + Else + MsgBoxE("Operation canceled") + End If + Else + MsgBoxE("You have not entered a new destination" & vbCr & "Operation canceled", MsgBoxStyle.Exclamation) + End If + Else + MsgBoxE("You have selected multiple users. You can change the folder only for one user!", MsgBoxStyle.Critical) + End If + Else + MsgBoxE("No one user selected", MsgBoxStyle.Exclamation) + End If + Catch ex As Exception + ErrorsDescriber.Execute(EDP.ShowAllMsg, ex, "Error while moving user") + End Try + End Sub Private Sub BTT_CONTEXT_OPEN_PATH_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_OPEN_PATH.Click OpenFolder() End Sub @@ -745,26 +866,51 @@ CloseResume: If USER_CONTEXT.Visible Then USER_CONTEXT.Hide() Dim ugn As Func(Of IUserData, String) = Function(u) $"{IIf(u.IsCollection, "Collection", "User")}: {u.Name}" Dim m As New MMessage(users.Select(ugn).ListToString(, vbNewLine), "Users deleting", - {New Messaging.MsgBoxButton("Delete and ban") With {.ToolTip = "Users will be deleted and added to the blacklist"}, + {New Messaging.MsgBoxButton("Delete and ban") With {.ToolTip = "Users and their data will be deleted and added to the blacklist"}, + New Messaging.MsgBoxButton("Delete user only and ban") With { + .ToolTip = "Users will be deleted and added to the blacklist (user data will not be deleted)"}, New Messaging.MsgBoxButton("Delete and ban with reason") With { - .ToolTip = "Users will be deleted and added to the blacklist with set a reason to delete"}, - "Delete", "Cancel"}, MsgBoxStyle.Exclamation) With {.ButtonsPerRow = 2} + .ToolTip = "Users and their data will be deleted and added to the blacklist with set a reason to delete"}, + New Messaging.MsgBoxButton("Delete user only and ban with reason") With { + .ToolTip = "Users will be deleted and added to the blacklist with set a reason to delete (user data will not be deleted)"}, + New Messaging.MsgBoxButton("Delete") With {.ToolTip = "Delete users and their data"}, + New Messaging.MsgBoxButton("Delete user only") With {.ToolTip = "Delete users but keep data"}, "Cancel"}, + MsgBoxStyle.Exclamation) With {.ButtonsPerRow = 2, .ButtonsPlacing = MMessage.ButtonsPlacings.StartToEnd} m.Text = $"The following users ({users.Count}) will be deleted:{vbNewLine}{m.Text}" Dim result% = MsgBoxE(m) - If result < 3 Then + If result < 6 Then Dim removedUsers As New List(Of String) + Dim keepData As Boolean = Not (result Mod 2) = 0 + Dim banUser As Boolean = result < 4 + Dim setReason As Boolean = banUser And result > 1 Dim leftUsers As New List(Of String) Dim l As New ListAddParams(LAP.NotContainsOnly) Dim b As Boolean = False Dim reason$ = String.Empty - If result = 1 Then reason = InputBoxE("Enter a deletion reason:", "Deletion reason") + If setReason Then reason = InputBoxE("Enter a deletion reason:", "Deletion reason") For Each user In users - If user.Delete > 0 Then - If result < 2 Then Settings.BlackList.ListAddValue(New UserBan(user.Name, reason), l) : b = True + If keepData Then + If banUser Then Settings.BlackList.ListAddValue(New UserBan(user.Name, reason), l) : b = True + If user.IsCollection Then + With DirectCast(user, UserDataBind) + If .Count > 0 Then .Collections.ForEach(Sub(c) Settings.UsersList.Remove(DirectCast(c.Self, UserDataBase).User)) + End With + Else + Settings.UsersList.Remove(DirectCast(user.Self, UserDataBase).User) + End If + Settings.Users.Remove(user) + Settings.UpdateUsersList() RemoveUserFromList(user) removedUsers.Add(ugn(user)) + user.Dispose() Else - leftUsers.Add(ugn(user)) + If user.Delete > 0 Then + If banUser Then Settings.BlackList.ListAddValue(New UserBan(user.Name, reason), l) : b = True + RemoveUserFromList(user) + removedUsers.Add(ugn(user)) + Else + leftUsers.Add(ugn(user)) + End If End If Next m = New MMessage(String.Empty, "Users deleting") diff --git a/SCrawler/MainMod.vb b/SCrawler/MainMod.vb index f04c81e..c1cc5e0 100644 --- a/SCrawler/MainMod.vb +++ b/SCrawler/MainMod.vb @@ -18,6 +18,7 @@ Friend Module MainMod Friend Const LVI_FavOption As String = "Favorite" Friend Const CannelsLabelName As String = "Channels" Friend Const LVI_CollectionOption As String = "Collection" + Friend Const LVI_ChannelOption As String = "Channel" Friend Enum ViewModes As Integer IconLarge = 0 IconSmall = 2 @@ -47,7 +48,8 @@ Friend Module MainMod End Class #End Region Friend Property MainProgress As PersonalUtilities.Forms.Toolbars.MyProgress - Friend Function GetLviGroupName(ByVal Site As Sites, ByVal Temp As Boolean, ByVal Fav As Boolean, ByVal IsCollection As Boolean) As String + Friend Function GetLviGroupName(ByVal Site As Sites, ByVal Temp As Boolean, ByVal Fav As Boolean, + ByVal IsCollection As Boolean, ByVal IsChannel As Boolean) As String Dim Opt$ = String.Empty If Temp Then Opt = LVI_TempOption @@ -57,6 +59,8 @@ Friend Module MainMod If Not Opt.IsEmptyString Then Opt = $" ({Opt})" If IsCollection Then Return $"{LVI_CollectionOption}{Opt}" + ElseIf IsChannel Then + Return $"{LVI_ChannelOption}{Opt}" Else Return $"{Site}{Opt}" End If @@ -65,32 +69,37 @@ Friend Module MainMod Undefined = 0 Reddit = 1 Twitter = 2 + Instagram = 3 End Enum Friend Structure UserInfo : Implements IComparable(Of UserInfo), IEquatable(Of UserInfo), ICloneable Friend Const Name_Site As String = "Site" Friend Const Name_Collection As String = "Collection" Friend Const Name_Merged As String = "Merged" Friend Const Name_IsChannel As String = "IsChannel" + Friend Const Name_SpecialPath As String = "SpecialPath" Friend Name As String Friend Site As Sites Friend File As SFile + Friend SpecialPath As SFile Friend Merged As Boolean Friend IncludedInCollection As Boolean Friend CollectionName As String Friend IsChannel As Boolean Friend Sub New(ByVal _Name As String, ByVal s As Sites, Optional ByVal Collection As String = Nothing, - Optional ByVal _Merged As Boolean = False) + Optional ByVal _Merged As Boolean = False, Optional ByVal _SpecialPath As SFile = Nothing) Name = _Name Site = s IncludedInCollection = Not Collection.IsEmptyString CollectionName = Collection Merged = _Merged + SpecialPath = _SpecialPath UpdateUserFile() End Sub Friend Sub New(ByVal x As EContainer) Me.New(x.Value, x.Attribute(Name_Site).Value.FromXML(Of Integer)(CInt(Sites.Undefined)), - x.Attribute(Name_Collection).Value, x.Attribute(Name_Merged).Value.FromXML(Of Boolean)(False)) + x.Attribute(Name_Collection).Value, x.Attribute(Name_Merged).Value.FromXML(Of Boolean)(False), + SFile.GetPath(x.Attribute(Name_SpecialPath).Value)) IsChannel = x.Attribute(Name_IsChannel).Value.FromXML(Of Boolean)(False) End Sub Friend Sub New(ByVal c As Reddit.Channel) @@ -123,13 +132,15 @@ Friend Module MainMod } End Sub Private Function GetFilePathByParams() As String - If Merged And IncludedInCollection Then + If Not SpecialPath.IsEmptyString Then + Return $"{SpecialPath.PathWithSeparator}{SettingsFolderName}" + ElseIf Merged And IncludedInCollection Then Return $"{Settings.CollectionsPathF.PathNoSeparator}\{CollectionName}\{SettingsFolderName}" Else If IncludedInCollection Then Return $"{Settings.CollectionsPathF.PathNoSeparator}\{CollectionName}\{Site}_{Name}\{SettingsFolderName}" Else - Return $"{Settings.Site(Site).Path.PathNoSeparator}\{Name}\{SettingsFolderName}" + Return $"{Settings(Site).Path.PathNoSeparator}\{Name}\{SettingsFolderName}" End If End If End Function @@ -137,7 +148,8 @@ Friend Module MainMod Return New EContainer("User", Name, {New EAttribute(Name_Site, CInt(Site)), New EAttribute(Name_Collection, CollectionName), New EAttribute(Name_Merged, Merged.BoolToInteger), - New EAttribute(Name_IsChannel, IsChannel.BoolToInteger)}) + New EAttribute(Name_IsChannel, IsChannel.BoolToInteger), + New EAttribute(Name_SpecialPath, SpecialPath.PathWithSeparator)}) End Function Friend Function CompareTo(ByVal Other As UserInfo) As Integer Implements IComparable(Of UserInfo).CompareTo If Site = Other.Site Then @@ -157,9 +169,11 @@ Friend Module MainMod .Name = Name, .Site = Site, .File = File, + .SpecialPath = SpecialPath, .Merged = Merged, .IncludedInCollection = IncludedInCollection, - .CollectionName = CollectionName + .CollectionName = CollectionName, + .IsChannel = IsChannel } End Function End Structure @@ -207,62 +221,88 @@ Friend Module MainMod Friend Function DownloadVideoByURL(ByVal URL As String, ByVal AskForPath As Boolean, ByVal Silent As Boolean) As Boolean Dim e As New ErrorsDescriber(Not Silent, Not Silent, True, False) Try + Dim Result As Boolean = False If Not URL.IsEmptyString Then - Dim u As UserMedia = Nothing + Dim um As IEnumerable(Of UserMedia) = Nothing + Dim site As Sites If URL.Contains("twitter") Then - u = Twitter.UserData.GetVideoInfo(URL) + um = Twitter.UserData.GetVideoInfo(URL) + site = Sites.Twitter ElseIf URL.Contains("redgifs") Then - u = Reddit.UserData.GetVideoInfo(URL) + um = Reddit.UserData.GetVideoInfo(URL) + site = Sites.Reddit + ElseIf URL.Contains("instagram.com") Then + um = Instagram.UserData.GetVideoInfo(URL) + site = Sites.Instagram Else MsgBoxE("Site of video URL does not recognized" & vbCr & "Operation canceled", MsgBoxStyle.Exclamation, e) Return False End If - If Not u.URL.IsEmptyString Or Not u.URL_BASE.IsEmptyString Then - Dim f As SFile = u.File - If f.Name.IsEmptyString Then f.Name = $"video_{u.Post.ID}" - If f.Extension.IsEmptyString Then f.Extension = "mp4" - If Not Settings.LatestSavingPath.IsEmptyString And - Settings.LatestSavingPath.Value.Exists(SFO.Path, False) Then f.Path = Settings.LatestSavingPath.Value - If AskForPath OrElse Not f.Exists(SFO.Path, False) Then + If um.ListExists Then + Dim f As SFile, ff As SFile + For Each u As UserMedia In um + If Not u.URL.IsEmptyString Or Not u.URL_BASE.IsEmptyString Then + f = u.File + If f.Name.IsEmptyString Then f.Name = $"video_{u.Post.ID}" + If f.Extension.IsEmptyString Then f.Extension = "mp4" + If Not Settings.LatestSavingPath.IsEmptyString And + Settings.LatestSavingPath.Value.Exists(SFO.Path, False) Then f.Path = Settings.LatestSavingPath.Value + If AskForPath OrElse Not f.Exists(SFO.Path, False) Then #Disable Warning BC40000 - f = SFile.SaveAs(f, "Video file destination", True, "mp4", "Video|*.mp4|All files|*.*", EDP.ReturnValue) -#Enable Warning - End If - If Not f.IsEmptyString Then - Settings.LatestSavingPath.Value = f.PathWithSeparator - Dim dURL$ - Dim FileDownloaded As Boolean = False - Using w As New Net.WebClient - For i% = 0 To 1 - If i = 0 Then dURL = u.URL Else dURL = u.URL_BASE - If Not dURL.IsEmptyString Then - Try - w.DownloadFile(dURL, f) - FileDownloaded = True - Exit For - Catch wex As Exception - ErrorsDescriber.Execute(EDP.SendInLog, wex, "DownloadVideoByURL") - End Try + If site = Sites.Instagram Then + ff = SFile.SaveAs(f, "Instagram files destination",,,, EDP.ReturnValue) + If Not ff.IsEmptyString Then + f.Path = ff.Path + Else + f = Nothing + End If + Else + f = SFile.SaveAs(f, "Video file destination", True, "mp4", "Video|*.mp4|All files|*.*", EDP.ReturnValue) End If - Next - End Using - If FileDownloaded Then - MsgBoxE($"File downloaded to [{f}]",, e) - Return True +#Enable Warning + AskForPath = False + End If + If Not f.IsEmptyString Then + Settings.LatestSavingPath.Value = f.PathWithSeparator + Dim dURL$ + Dim FileDownloaded As Boolean = False + Using w As New Net.WebClient + For i% = 0 To 1 + If i = 0 Then dURL = u.URL Else dURL = u.URL_BASE + If Not dURL.IsEmptyString Then + Try + w.DownloadFile(dURL, f) + FileDownloaded = True + Exit For + Catch wex As Exception + ErrorsDescriber.Execute(EDP.SendInLog, wex, "DownloadVideoByURL") + End Try + End If + Next + End Using + If FileDownloaded Then + If um.Count = 1 Then + MsgBoxE($"File downloaded to [{f}]",, e) + Return True + Else + Result = True + End If + Else + If um.Count = 1 Then MsgBoxE("File does not downloaded", MsgBoxStyle.Critical, e) + End If + Else + If um.Count = 1 Then MsgBoxE("File destination does not pointed" & vbCr & "Operation canceled",, e) + End If Else - MsgBoxE("File does not downloaded", MsgBoxStyle.Critical, e) + If um.Count = 1 Then MsgBoxE("File URL does not found!", MsgBoxStyle.Critical, e) End If - Else - MsgBoxE("File destination does not pointed" & vbCr & "Operation canceled",, e) - End If - Else - MsgBoxE("File URL does not found!", MsgBoxStyle.Critical, e) + Next End If Else MsgBoxE("URL is empty", MsgBoxStyle.Exclamation, e) End If - Return False + Return Result Catch ex As Exception Return ErrorsDescriber.Execute(e, ex, "Downloading video by URL error", False) End Try diff --git a/SCrawler/My Project/AssemblyInfo.vb b/SCrawler/My Project/AssemblyInfo.vb index 4481450..b35a113 100644 --- a/SCrawler/My Project/AssemblyInfo.vb +++ b/SCrawler/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + diff --git a/SCrawler/My Project/Resources.Designer.vb b/SCrawler/My Project/Resources.Designer.vb index 6478cdd..ca8e314 100644 --- a/SCrawler/My Project/Resources.Designer.vb +++ b/SCrawler/My Project/Resources.Designer.vb @@ -60,6 +60,16 @@ Namespace My.Resources End Set End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property BookmarkBlack_16() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("BookmarkBlack_16", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' @@ -110,6 +120,26 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + ''' + Friend ReadOnly Property InstagramIcon() As System.Drawing.Icon + Get + Dim obj As Object = ResourceManager.GetObject("InstagramIcon", resourceCulture) + Return CType(obj,System.Drawing.Icon) + End Get + End Property + + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property InstagramPic76() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("InstagramPic76", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' @@ -210,6 +240,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property SettingsPic_16() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("SettingsPic_16", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' @@ -239,5 +279,15 @@ Namespace My.Resources Return CType(obj,System.Drawing.Icon) End Get End Property + + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property TwitterPic400() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("TwitterPic400", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property End Module End Namespace diff --git a/SCrawler/My Project/Resources.resx b/SCrawler/My Project/Resources.resx index 4a9250b..b3f56db 100644 --- a/SCrawler/My Project/Resources.resx +++ b/SCrawler/My Project/Resources.resx @@ -118,17 +118,14 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Content\Pictures\GlobeBlue_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Content\Pictures\StarPic_24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Content\Pictures\PrevPIC2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Content\Pictures\PicturePic_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Content\Pictures\PencilPic_01_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Content\Pictures\NextPIC2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -136,40 +133,58 @@ ..\Content\Pictures\Folder_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Content\Pictures\PencilPic_01_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Content\Pictures\TwitterPic400.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Content\Pictures\PlusPIC.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Content\Icons\TwitterIcon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Content\Pictures\SettingsPic_16.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Content\Pictures\Delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Content\Pictures\InfoPic_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Content\Icons\InstagramIcon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Content\Pictures\GlobeBlue_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Content\Pictures\PicturePic_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Content\Pictures\Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Content\Pictures\DBPic_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Content\Icons\RedditIcon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Content\Pictures\InstagramPic76.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Content\Icons\Rainbow.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Content\Pictures\Pin_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Content\Pictures\StartPic_01_Green_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Content\Pictures\RedditPic512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Content\Icons\TwitterIcon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Content\Pictures\DBPic_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Content\Pictures\StartPic_01_Green_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Content\Pictures\BookmarkBlack_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/SCrawler/SCrawler.vbproj b/SCrawler/SCrawler.vbproj index 4767565..00a1aab 100644 --- a/SCrawler/SCrawler.vbproj +++ b/SCrawler/SCrawler.vbproj @@ -133,13 +133,18 @@ + + + + + @@ -174,16 +179,16 @@ Form - - RedditEditorForm.vb + + SiteSelectionForm.vb - + Form - - TwitterEditorForm.vb + + SiteEditorForm.vb - + Form @@ -244,11 +249,11 @@ LabelsForm.vb - - RedditEditorForm.vb + + SiteSelectionForm.vb - - TwitterEditorForm.vb + + SiteEditorForm.vb UserCreatorForm.vb @@ -287,6 +292,11 @@ + + + + + PreserveNewest diff --git a/SCrawler/SettingsCLS.vb b/SCrawler/SettingsCLS.vb index 249042f..b99f86c 100644 --- a/SCrawler/SettingsCLS.vb +++ b/SCrawler/SettingsCLS.vb @@ -13,6 +13,7 @@ Imports SCrawler.API.Base Friend Class SettingsCLS : Implements IDisposable Friend Const DefaultMaxDownloadingTasks As Integer = 5 Friend Const Name_Node_Sites As String = "Sites" + Private Const SitesValuesSeparator As String = "," Friend ReadOnly Design As XmlFile Private ReadOnly MyXML As XmlFile Friend ReadOnly OS64 As Boolean @@ -44,11 +45,6 @@ Friend Class SettingsCLS : Implements IDisposable GlobalPath = New XMLValue(Of SFile)("GlobalPath", New SFile($"{SFile.GetPath(Application.StartupPath).PathWithSeparator}Data\"), MyXML,, XMLValue(Of SFile).ToFilePath) - MySites = New Dictionary(Of Sites, SiteSettings) From { - {Sites.Reddit, New SiteSettings(Sites.Reddit, MyXML, GlobalPath.Value)}, - {Sites.Twitter, New SiteSettings(Sites.Twitter, MyXML, GlobalPath.Value)} - } - MySites(Sites.Reddit).Responser.Decoders.Add(SymbolsConverter.Converters.Unicode) SeparateVideoFolder = New XMLValue(Of Boolean)("SeparateVideoFolder", True, MyXML) CollectionsPath = New XMLValue(Of String)("CollectionsPath", "Collections", MyXML) @@ -62,33 +58,12 @@ Friend Class SettingsCLS : Implements IDisposable DefaultDownloadVideos.ReplaceByValue("DefaultDownloadVideos") ChangeReadyForDownOnTempChange = New XMLValue(Of Boolean)("ChangeReadyForDownOnTempChange", True, MyXML, n) - n = {Name_Node_Sites, Sites.Reddit.ToString} - RedditTemporary = New XMLValue(Of Boolean) - RedditTemporary.SetExtended("Temporary", False, MyXML, n) - RedditTemporary.SetDefault(DefaultTemporary) - - RedditDownloadImages = New XMLValue(Of Boolean) - RedditDownloadImages.SetExtended("DownloadImages", True, MyXML, n) - RedditDownloadImages.SetDefault(DefaultDownloadImages) - - RedditDownloadVideos = New XMLValue(Of Boolean) - RedditDownloadVideos.SetExtended("DownloadVideos", True, MyXML, n) - RedditDownloadVideos.SetDefault(DefaultDownloadVideos) - - n = {Name_Node_Sites, Sites.Twitter.ToString} - TwitterTemporary = New XMLValue(Of Boolean) - TwitterTemporary.SetExtended("Temporary", False, MyXML, n) - TwitterTemporary.SetDefault(DefaultTemporary) - - TwitterDownloadImages = New XMLValue(Of Boolean) - TwitterDownloadImages.SetExtended("DownloadImages", True, MyXML, n) - TwitterDownloadImages.SetDefault(DefaultDownloadImages) - - TwitterDownloadVideos = New XMLValue(Of Boolean) - TwitterDownloadVideos.SetExtended("DownloadVideos", True, MyXML, n) - TwitterDownloadVideos.SetDefault(DefaultDownloadVideos) - - TwitterDefaultGetUserMedia = New XMLValue(Of Boolean)("TwitterDefaultGetUserMedia", True, MyXML, n) + MySites = New Dictionary(Of Sites, SiteSettings) From { + {Sites.Reddit, New SiteSettings(Sites.Reddit, MyXML, GlobalPath.Value, DefaultTemporary, DefaultDownloadImages, DefaultDownloadVideos)}, + {Sites.Twitter, New SiteSettings(Sites.Twitter, MyXML, GlobalPath.Value, DefaultTemporary, DefaultDownloadImages, DefaultDownloadVideos)}, + {Sites.Instagram, New SiteSettings(Sites.Instagram, MyXML, GlobalPath.Value, DefaultTemporary, DefaultDownloadImages, DefaultDownloadVideos)} + } + MySites(Sites.Reddit).Responser.Decoders.Add(SymbolsConverter.Converters.Unicode) MaxLargeImageHeigh = New XMLValue(Of Integer)("MaxLargeImageHeigh", 150, MyXML) MaxSmallImageHeigh = New XMLValue(Of Integer)("MaxSmallImageHeigh", 15, MyXML) @@ -100,6 +75,14 @@ Friend Class SettingsCLS : Implements IDisposable LatestSelectedLabels = New XMLValue(Of String)("LatestSelectedLabels",, MyXML) LatestSelectedChannel = New XMLValue(Of String)("LatestSelectedChannel",, MyXML) + XMLSelectedSites = New XMLValue(Of String)("SelectedSites", String.Empty, MyXML, {Name_Node_Sites}) + If Not XMLSelectedSites.IsEmptyString Then + _SelectedSites = XMLSelectedSites.Value.StringToList(Of Sites)(SitesValuesSeparator) + End If + If _SelectedSites Is Nothing Then _SelectedSites = New List(Of Sites) + + ImgurClientID = New XMLValue(Of String)("ImgurClientID", String.Empty, MyXML, {Name_Node_Sites}) + n = {Name_Node_Sites, "Channels"} ChannelsDefaultReadyForDownload = New XMLValue(Of Boolean)("ChannelsDefaultReadyForDownload", False, MyXML, n) ChannelsDefaultTemporary = New XMLValue(Of Boolean)("ChannelsDefaultTemporary", True, MyXML, n) @@ -300,7 +283,7 @@ Friend Class SettingsCLS : Implements IDisposable _UpdatesSuspended = False ChangeDateProvider(Nothing, Nothing, Nothing) End Sub - Friend ReadOnly Property Site(ByVal s As Sites) As SiteSettings + Default Friend ReadOnly Property Site(ByVal s As Sites) As SiteSettings Get Return MySites(s) End Get @@ -318,22 +301,12 @@ Friend Class SettingsCLS : Implements IDisposable End Get End Property Friend ReadOnly Property MaxUsersJobsCount As XMLValue(Of Integer) + Friend ReadOnly Property ImgurClientID As XMLValue(Of String) #Region "Defaults" Friend ReadOnly Property DefaultTemporary As XMLValue(Of Boolean) Friend ReadOnly Property DefaultDownloadImages As XMLValue(Of Boolean) Friend ReadOnly Property DefaultDownloadVideos As XMLValue(Of Boolean) Friend ReadOnly Property ChangeReadyForDownOnTempChange As XMLValue(Of Boolean) -#Region "Reddit" - Friend ReadOnly Property RedditTemporary As XMLValue(Of Boolean) - Friend ReadOnly Property RedditDownloadImages As XMLValue(Of Boolean) - Friend ReadOnly Property RedditDownloadVideos As XMLValue(Of Boolean) -#End Region -#Region "Twitter" - Friend ReadOnly Property TwitterTemporary As XMLValue(Of Boolean) - Friend ReadOnly Property TwitterDownloadImages As XMLValue(Of Boolean) - Friend ReadOnly Property TwitterDownloadVideos As XMLValue(Of Boolean) - Friend ReadOnly Property TwitterDefaultGetUserMedia As XMLValue(Of Boolean) -#End Region #End Region #Region "User data" Friend ReadOnly Property FromChannelDownloadTop As XMLValue(Of Integer) @@ -360,6 +333,22 @@ Friend Class SettingsCLS : Implements IDisposable End Get End Property Friend ReadOnly Property ShowingMode As XMLValue(Of Integer) + Private ReadOnly Property XMLSelectedSites As XMLValue(Of String) + Private ReadOnly _SelectedSites As List(Of Sites) + Friend Property SelectedSites As List(Of Sites) + Get + Return _SelectedSites + End Get + Set(ByVal s As List(Of Sites)) + _SelectedSites.Clear() + If s.ListExists Then + _SelectedSites.ListAddList(s) + XMLSelectedSites.Value = ListAddList(Of Integer, Sites)(Nothing, s).ListToString(, SitesValuesSeparator) + Else + XMLSelectedSites.Value = String.Empty + End If + End Set + End Property #End Region #Region "Latest values" Friend ReadOnly Property LatestSavingPath As XMLValue(Of SFile) diff --git a/SCrawler/TDownloader.vb b/SCrawler/TDownloader.vb index fdea68a..b0fffa8 100644 --- a/SCrawler/TDownloader.vb +++ b/SCrawler/TDownloader.vb @@ -73,6 +73,7 @@ Friend Class TDownloader : Implements IDisposable _Working = False TokenSource = Nothing UpdateJobsLabel() + If Settings(Sites.Instagram).InstaHashUpdateRequired Then MyMainLOG = "Check your Instagram credentials" RaiseEvent OnDownloading(False) End Try End Sub @@ -91,23 +92,33 @@ Friend Class TDownloader : Implements IDisposable Dim i% = -1 Dim j% = Settings.MaxUsersJobsCount - 1 Dim Keys As New List(Of String) + Dim h As Boolean = False + Dim InstaReady As Boolean = Settings(Sites.Instagram).InstagramReadyForDownload For Each _Item As IUserData In Items If Not _Item.Disposed Then Keys.Add(_Item.LVIKey) - Token.ThrowIfCancellationRequested() - t.Add(Task.Run(Sub() _Item.DownloadData(Token))) - i += 1 - If i >= j Then Exit For + If Not _Item.Site = Sites.Instagram Or InstaReady Then + If _Item.Site = Sites.Instagram Then h = True : Settings(Sites.Instagram).InstagramTooManyRequestsReadyForCatch = True + Token.ThrowIfCancellationRequested() + t.Add(Task.Run(Sub() _Item.DownloadData(Token))) + i += 1 + If i >= j Then Exit For + End If End If Next - If t.Count > 0 Then + If t.Count > 0 Or Keys.Count > 0 Then + If h Then + With Settings(Sites.Instagram) + If .InstaHash.IsEmptyString Or .InstaHashUpdateRequired Then .GatherInstaHash() + End With + End If _CurrentDownloadingTasks = t.Count With MainProgress .Enabled(EOptions.All) = True .Information = $"Downloading {_CurrentDownloadingTasks.NumToString(nf, NProv)}/{Items.Count.NumToString(nf, NProv)} profiles' data" .InformationTemporary = .Information End With - Task.WaitAll(t.ToArray) + If t.Count > 0 Then Task.WaitAll(t.ToArray) Dim dcc As Boolean = False If Keys.Count > 0 Then For Each k$ In Keys @@ -167,6 +178,33 @@ Friend Class TDownloader : Implements IDisposable End If Return Nothing End Function +#Region "Saved posts downloading" + Friend ReadOnly Property SavedPostsDownloading As Boolean + Get + Return If(_SavedPostsThread?.IsAlive, False) + End Get + End Property + Private _SavedPostsThread As Thread + Friend Sub DownloadSavedPostsStart(ByVal Toolbar As StatusStrip, ByVal PR As ToolStripProgressBar) + If Not SavedPostsDownloading Then + If Settings(Sites.Reddit).SavedPostsUserName.IsEmptyString Then + MsgBoxE($"Username of saved posts not set{vbNewLine}Operation canceled", MsgBoxStyle.Critical) + Else + _SavedPostsThread = New Thread(New ThreadStart(Sub() Reddit.ProfileSaved.Download(Toolbar, PR))) + _SavedPostsThread.SetApartmentState(ApartmentState.MTA) + _SavedPostsThread.Start() + End If + Else + MsgBoxE("Saved posts are already downloading", MsgBoxStyle.Exclamation) + End If + End Sub + Friend Sub DownloadSavedPostsStop() + Try + If SavedPostsDownloading Then _SavedPostsThread.Abort() + Catch ex As Exception + End Try + End Sub +#End Region Friend Sub Add(ByVal Item As IUserData) If Not Items.Contains(Item) Then If Item.IsCollection Then Item.DownloadData(Nothing) Else Items.Add(Item) diff --git a/SCrawler/VideosDownloaderForm.vb b/SCrawler/VideosDownloaderForm.vb index 33fbfe6..eb2a585 100644 --- a/SCrawler/VideosDownloaderForm.vb +++ b/SCrawler/VideosDownloaderForm.vb @@ -26,7 +26,7 @@ Friend Class VideosDownloaderForm MyView = New FormsView(Me) MyView.ImportFromXML(Settings.Design) MyView.SetMeSize() - RefillList() + RefillList(False) Catch ex As Exception End Try End Sub @@ -36,9 +36,7 @@ Friend Class VideosDownloaderForm End Sub Private Sub VideosDownloaderForm_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed If Not MyView Is Nothing Then MyView.Dispose(Settings.Design) - If UrlList.Count > 0 Then - TextSaver.SaveTextToFile(UrlList.ListToString(, Environment.NewLine), DownloadingUrlsFile, True,, EDP.SendInLog) - End If + If UrlList.Count > 0 Then UpdateUrlsFile() UrlList.Clear() End Sub Private Sub VideosDownloaderForm_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown @@ -51,17 +49,25 @@ Friend Class VideosDownloaderForm End Select If b Then e.Handled = True End Sub - Private Sub RefillList() + Private Sub RefillList(Optional ByVal Update As Boolean = True) Try With LIST_VIDEOS .Items.Clear() If UrlList.Count > 0 Then UrlList.ForEach(Sub(u) .Items.Add(u)) If .Items.Count > 0 And _LatestSelected >= 0 And _LatestSelected <= .Items.Count - 1 Then .SelectedIndex = _LatestSelected + If Update Then UpdateUrlsFile() End With Catch ex As Exception ErrorsDescriber.Execute(EDP.LogMessageValue, ex, "Error on list refill") End Try End Sub + Private Sub UpdateUrlsFile() + If UrlList.Count > 0 Then + TextSaver.SaveTextToFile(UrlList.ListToString(, Environment.NewLine), DownloadingUrlsFile, True,, EDP.SendInLog) + Else + If DownloadingUrlsFile.Exists Then DownloadingUrlsFile.Delete(,,, EDP.SendInLog) + End If + End Sub Private Sub BTT_ADD_Click(sender As Object, e As EventArgs) Handles BTT_ADD.Click AddVideo() End Sub