├── .gitattributes ├── .gitignore ├── ADReplStatus.csproj ├── ADReplStatus.sln ├── ADReplStatusForm.Designer.cs ├── ADReplStatusForm.cs ├── ADReplStatusForm.resx ├── AlternateCredsForm.Designer.cs ├── AlternateCredsForm.cs ├── AlternateCredsForm.resx ├── App.config ├── Forest.ico ├── PortTester.Designer.cs ├── PortTester.cs ├── PortTester.resx ├── Program.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings ├── README.md ├── SetForestNameForm.Designer.cs ├── SetForestNameForm.cs ├── SetForestNameForm.resx ├── SetUserDomainControllerForm.Designer.cs ├── SetUserDomainControllerForm.cs ├── SetUserDomainControllerForm.resx ├── images ├── Darkmode.png ├── DomainController.png ├── Error.png ├── Forest.ico ├── Forest.png ├── Go.png ├── KeyLock.png └── Logging.png ├── packages.config ├── screenshot01.png ├── screenshot02.png ├── screenshot03.png └── screenshot04.png /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Oo]ut/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio LightSwitch build output 298 | **/*.HTMLClient/GeneratedArtifacts 299 | **/*.DesktopClient/GeneratedArtifacts 300 | **/*.DesktopClient/ModelManifest.xml 301 | **/*.Server/GeneratedArtifacts 302 | **/*.Server/ModelManifest.xml 303 | _Pvt_Extensions 304 | 305 | # Paket dependency manager 306 | .paket/paket.exe 307 | paket-files/ 308 | 309 | # FAKE - F# Make 310 | .fake/ 311 | 312 | # CodeRush personal settings 313 | .cr/personal 314 | 315 | # Python Tools for Visual Studio (PTVS) 316 | __pycache__/ 317 | *.pyc 318 | 319 | # Cake - Uncomment if you are using it 320 | # tools/** 321 | # !tools/packages.config 322 | 323 | # Tabs Studio 324 | *.tss 325 | 326 | # Telerik's JustMock configuration file 327 | *.jmconfig 328 | 329 | # BizTalk build output 330 | *.btp.cs 331 | *.btm.cs 332 | *.odx.cs 333 | *.xsd.cs 334 | 335 | # OpenCover UI analysis results 336 | OpenCover/ 337 | 338 | # Azure Stream Analytics local run output 339 | ASALocalRun/ 340 | 341 | # MSBuild Binary and Structured Log 342 | *.binlog 343 | 344 | # NVidia Nsight GPU debugger configuration file 345 | *.nvuser 346 | 347 | # MFractors (Xamarin productivity tool) working folder 348 | .mfractor/ 349 | 350 | # Local History for Visual Studio 351 | .localhistory/ 352 | 353 | # BeatPulse healthcheck temp database 354 | healthchecksdb 355 | 356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 357 | MigrationBackup/ 358 | 359 | # Ionide (cross platform F# VS Code tools) working folder 360 | .ionide/ 361 | 362 | # Fody - auto-generated XML schema 363 | FodyWeavers.xsd -------------------------------------------------------------------------------- /ADReplStatus.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {AF7EE9DD-D7C5-409C-A1E9-78E1078F6A89} 8 | WinExe 9 | ADReplStatus 10 | ADReplStatus 11 | v4.8 12 | 512 13 | true 14 | true 15 | publish\ 16 | true 17 | Disk 18 | false 19 | Foreground 20 | 7 21 | Days 22 | false 23 | false 24 | true 25 | 0 26 | 1.0.0.%2a 27 | false 28 | false 29 | true 30 | 31 | 32 | AnyCPU 33 | true 34 | full 35 | false 36 | bin\Debug\ 37 | DEBUG;TRACE 38 | prompt 39 | 4 40 | false 41 | 42 | 43 | AnyCPU 44 | pdbonly 45 | true 46 | bin\Release\ 47 | TRACE 48 | prompt 49 | 4 50 | false 51 | 52 | 53 | Forest.ico 54 | 55 | 56 | 57 | packages\ObjectListView.Official.2.9.1\lib\net20\ObjectListView.dll 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | Form 75 | 76 | 77 | ADReplStatusForm.cs 78 | 79 | 80 | Form 81 | 82 | 83 | AlternateCredsForm.cs 84 | 85 | 86 | Form 87 | 88 | 89 | SetUserDomainControllerForm.cs 90 | 91 | 92 | Form 93 | 94 | 95 | PortTester.cs 96 | 97 | 98 | 99 | 100 | Form 101 | 102 | 103 | SetForestNameForm.cs 104 | 105 | 106 | ADReplStatusForm.cs 107 | 108 | 109 | AlternateCredsForm.cs 110 | 111 | 112 | SetUserDomainControllerForm.cs 113 | 114 | 115 | PortTester.cs 116 | 117 | 118 | ResXFileCodeGenerator 119 | Resources.Designer.cs 120 | Designer 121 | 122 | 123 | True 124 | Resources.resx 125 | True 126 | 127 | 128 | SetForestNameForm.cs 129 | 130 | 131 | 132 | SettingsSingleFileGenerator 133 | Settings.Designer.cs 134 | 135 | 136 | True 137 | Settings.settings 138 | True 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | False 151 | Microsoft .NET Framework 4.8 %28x86 and x64%29 152 | true 153 | 154 | 155 | False 156 | .NET Framework 3.5 SP1 157 | false 158 | 159 | 160 | 161 | -------------------------------------------------------------------------------- /ADReplStatus.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.4.33205.214 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ADReplStatus", "ADReplStatus.csproj", "{AF7EE9DD-D7C5-409C-A1E9-78E1078F6A89}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {AF7EE9DD-D7C5-409C-A1E9-78E1078F6A89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {AF7EE9DD-D7C5-409C-A1E9-78E1078F6A89}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {AF7EE9DD-D7C5-409C-A1E9-78E1078F6A89}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {AF7EE9DD-D7C5-409C-A1E9-78E1078F6A89}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {07B32D0E-B7B7-49A4-8ED3-43C83A52FC2D} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /ADReplStatusForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ADReplStatus 2 | { 3 | partial class ADReplStatusForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ADReplStatusForm)); 33 | this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); 34 | this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); 35 | this.SetDcButton = new System.Windows.Forms.Button(); 36 | this.ProgressPercentLabel = new System.Windows.Forms.Label(); 37 | this.treeListView1 = new BrightIdeasSoftware.TreeListView(); 38 | this.DCNameColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 39 | this.DomainNameColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 40 | this.SiteColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 41 | this.DiscoveryIssuesColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 42 | this.IsGCColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 43 | this.IsRODCColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 44 | this.SourceServerColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 45 | this.PartitionNameColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 46 | this.ConsecutiveFailureCountColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 47 | this.LastSuccessfulSyncColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 48 | this.LastSyncResultColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 49 | this.LastSyncMessageColumn = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); 50 | this.DarkModeButton = new System.Windows.Forms.Button(); 51 | this.ErrorsOnlyButton = new System.Windows.Forms.Button(); 52 | this.AlternateCredsButton = new System.Windows.Forms.Button(); 53 | this.SetForestButton = new System.Windows.Forms.Button(); 54 | this.EnableLoggingButton = new System.Windows.Forms.Button(); 55 | this.RefreshButton = new System.Windows.Forms.Button(); 56 | ((System.ComponentModel.ISupportInitialize)(this.treeListView1)).BeginInit(); 57 | this.SuspendLayout(); 58 | // 59 | // backgroundWorker1 60 | // 61 | this.backgroundWorker1.WorkerReportsProgress = true; 62 | this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); 63 | this.backgroundWorker1.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.backgroundWorker1_ProgressChanged); 64 | this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); 65 | // 66 | // SetDcButton 67 | // 68 | this.SetDcButton.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 69 | this.SetDcButton.Image = ((System.Drawing.Image)(resources.GetObject("SetDcButton.Image"))); 70 | this.SetDcButton.Location = new System.Drawing.Point(180, 12); 71 | this.SetDcButton.Name = "SetDcButton"; 72 | this.SetDcButton.Size = new System.Drawing.Size(50, 50); 73 | this.SetDcButton.TabIndex = 12; 74 | this.toolTip1.SetToolTip(this.SetDcButton, "Specify a domain controller for forest discovery"); 75 | this.SetDcButton.UseVisualStyleBackColor = true; 76 | this.SetDcButton.Click += new System.EventHandler(this.SetDcButton_Click); 77 | // 78 | // ProgressPercentLabel 79 | // 80 | this.ProgressPercentLabel.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 81 | this.ProgressPercentLabel.Location = new System.Drawing.Point(68, 12); 82 | this.ProgressPercentLabel.Name = "ProgressPercentLabel"; 83 | this.ProgressPercentLabel.Size = new System.Drawing.Size(50, 50); 84 | this.ProgressPercentLabel.TabIndex = 8; 85 | this.ProgressPercentLabel.Text = "0%"; 86 | this.ProgressPercentLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 87 | this.ProgressPercentLabel.Visible = false; 88 | // 89 | // treeListView1 90 | // 91 | this.treeListView1.AllColumns.Add(this.DCNameColumn); 92 | this.treeListView1.AllColumns.Add(this.DomainNameColumn); 93 | this.treeListView1.AllColumns.Add(this.SiteColumn); 94 | this.treeListView1.AllColumns.Add(this.DiscoveryIssuesColumn); 95 | this.treeListView1.AllColumns.Add(this.IsGCColumn); 96 | this.treeListView1.AllColumns.Add(this.IsRODCColumn); 97 | this.treeListView1.AllColumns.Add(this.SourceServerColumn); 98 | this.treeListView1.AllColumns.Add(this.PartitionNameColumn); 99 | this.treeListView1.AllColumns.Add(this.ConsecutiveFailureCountColumn); 100 | this.treeListView1.AllColumns.Add(this.LastSuccessfulSyncColumn); 101 | this.treeListView1.AllColumns.Add(this.LastSyncResultColumn); 102 | this.treeListView1.AllColumns.Add(this.LastSyncMessageColumn); 103 | this.treeListView1.CellEditUseWholeCell = false; 104 | this.treeListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 105 | this.DCNameColumn, 106 | this.DomainNameColumn, 107 | this.SiteColumn, 108 | this.DiscoveryIssuesColumn, 109 | this.IsGCColumn, 110 | this.IsRODCColumn, 111 | this.SourceServerColumn, 112 | this.PartitionNameColumn, 113 | this.ConsecutiveFailureCountColumn, 114 | this.LastSuccessfulSyncColumn, 115 | this.LastSyncResultColumn, 116 | this.LastSyncMessageColumn}); 117 | this.treeListView1.Cursor = System.Windows.Forms.Cursors.Default; 118 | this.treeListView1.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 119 | this.treeListView1.HideSelection = false; 120 | this.treeListView1.Location = new System.Drawing.Point(12, 68); 121 | this.treeListView1.Name = "treeListView1"; 122 | this.treeListView1.ShowGroups = false; 123 | this.treeListView1.Size = new System.Drawing.Size(760, 381); 124 | this.treeListView1.TabIndex = 9; 125 | this.treeListView1.UseCompatibleStateImageBehavior = false; 126 | this.treeListView1.UseFiltering = true; 127 | this.treeListView1.View = System.Windows.Forms.View.Details; 128 | this.treeListView1.VirtualMode = true; 129 | this.treeListView1.CellRightClick += new System.EventHandler(this.DCNameColumn_RightClick); 130 | this.treeListView1.FormatRow += new System.EventHandler(this.treeListView1_FormatRow); 131 | // 132 | // DCNameColumn 133 | // 134 | this.DCNameColumn.AspectName = "Name"; 135 | this.DCNameColumn.Groupable = false; 136 | this.DCNameColumn.Text = "DC Name"; 137 | this.DCNameColumn.Width = 75; 138 | // 139 | // DomainNameColumn 140 | // 141 | this.DomainNameColumn.AspectName = "DomainName"; 142 | this.DomainNameColumn.Text = "Domain"; 143 | this.DomainNameColumn.Width = 75; 144 | // 145 | // SiteColumn 146 | // 147 | this.SiteColumn.AspectName = "Site"; 148 | this.SiteColumn.Text = "Site"; 149 | this.SiteColumn.Width = 75; 150 | // 151 | // DiscoveryIssuesColumn 152 | // 153 | this.DiscoveryIssuesColumn.AspectName = "DiscoveryIssues"; 154 | this.DiscoveryIssuesColumn.Text = "Discovery Issues"; 155 | this.DiscoveryIssuesColumn.Width = 100; 156 | // 157 | // IsGCColumn 158 | // 159 | this.IsGCColumn.AspectName = "IsGC"; 160 | this.IsGCColumn.Text = "Is GC"; 161 | this.IsGCColumn.Width = 75; 162 | // 163 | // IsRODCColumn 164 | // 165 | this.IsRODCColumn.AspectName = "IsRODC"; 166 | this.IsRODCColumn.MinimumWidth = 75; 167 | this.IsRODCColumn.Text = "Is RODC"; 168 | this.IsRODCColumn.Width = 75; 169 | // 170 | // SourceServerColumn 171 | // 172 | this.SourceServerColumn.AspectName = "SourceServer"; 173 | this.SourceServerColumn.Text = "Source DC"; 174 | this.SourceServerColumn.Width = 75; 175 | // 176 | // PartitionNameColumn 177 | // 178 | this.PartitionNameColumn.AspectName = "PartitionName"; 179 | this.PartitionNameColumn.Text = "Partition"; 180 | this.PartitionNameColumn.Width = 75; 181 | // 182 | // ConsecutiveFailureCountColumn 183 | // 184 | this.ConsecutiveFailureCountColumn.AspectName = "ConsecutiveFailureCount"; 185 | this.ConsecutiveFailureCountColumn.Text = "Consecutive Failures"; 186 | this.ConsecutiveFailureCountColumn.Width = 120; 187 | // 188 | // LastSuccessfulSyncColumn 189 | // 190 | this.LastSuccessfulSyncColumn.AspectName = "LastSuccessfulSync"; 191 | this.LastSuccessfulSyncColumn.Text = "Last Successful Sync"; 192 | this.LastSuccessfulSyncColumn.Width = 120; 193 | // 194 | // LastSyncResultColumn 195 | // 196 | this.LastSyncResultColumn.AspectName = "LastSyncResult"; 197 | this.LastSyncResultColumn.Text = "Last Sync Result"; 198 | this.LastSyncResultColumn.Width = 120; 199 | // 200 | // LastSyncMessageColumn 201 | // 202 | this.LastSyncMessageColumn.AspectName = "LastSyncMessage"; 203 | this.LastSyncMessageColumn.FillsFreeSpace = true; 204 | this.LastSyncMessageColumn.Text = "Last Sync Message"; 205 | this.LastSyncMessageColumn.Width = 120; 206 | // 207 | // DarkModeButton 208 | // 209 | this.DarkModeButton.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 210 | this.DarkModeButton.Image = ((System.Drawing.Image)(resources.GetObject("DarkModeButton.Image"))); 211 | this.DarkModeButton.Location = new System.Drawing.Point(348, 12); 212 | this.DarkModeButton.Name = "DarkModeButton"; 213 | this.DarkModeButton.Size = new System.Drawing.Size(50, 50); 214 | this.DarkModeButton.TabIndex = 11; 215 | this.DarkModeButton.UseVisualStyleBackColor = true; 216 | this.DarkModeButton.Click += new System.EventHandler(this.DarkModeButton_Click); 217 | // 218 | // ErrorsOnlyButton 219 | // 220 | this.ErrorsOnlyButton.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 221 | this.ErrorsOnlyButton.Image = ((System.Drawing.Image)(resources.GetObject("ErrorsOnlyButton.Image"))); 222 | this.ErrorsOnlyButton.Location = new System.Drawing.Point(292, 12); 223 | this.ErrorsOnlyButton.Name = "ErrorsOnlyButton"; 224 | this.ErrorsOnlyButton.Size = new System.Drawing.Size(50, 50); 225 | this.ErrorsOnlyButton.TabIndex = 10; 226 | this.ErrorsOnlyButton.UseVisualStyleBackColor = true; 227 | this.ErrorsOnlyButton.Click += new System.EventHandler(this.ErrorsOnlyButton_Click); 228 | // 229 | // AlternateCredsButton 230 | // 231 | this.AlternateCredsButton.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 232 | this.AlternateCredsButton.Image = ((System.Drawing.Image)(resources.GetObject("AlternateCredsButton.Image"))); 233 | this.AlternateCredsButton.Location = new System.Drawing.Point(236, 12); 234 | this.AlternateCredsButton.Name = "AlternateCredsButton"; 235 | this.AlternateCredsButton.Size = new System.Drawing.Size(50, 50); 236 | this.AlternateCredsButton.TabIndex = 6; 237 | this.AlternateCredsButton.UseVisualStyleBackColor = true; 238 | this.AlternateCredsButton.Click += new System.EventHandler(this.AlternateCredsButton_Click); 239 | // 240 | // SetForestButton 241 | // 242 | this.SetForestButton.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 243 | this.SetForestButton.Image = ((System.Drawing.Image)(resources.GetObject("SetForestButton.Image"))); 244 | this.SetForestButton.Location = new System.Drawing.Point(124, 12); 245 | this.SetForestButton.Name = "SetForestButton"; 246 | this.SetForestButton.Size = new System.Drawing.Size(50, 50); 247 | this.SetForestButton.TabIndex = 4; 248 | this.SetForestButton.UseVisualStyleBackColor = true; 249 | this.SetForestButton.Click += new System.EventHandler(this.SetForestButton_Click); 250 | // 251 | // EnableLoggingButton 252 | // 253 | this.EnableLoggingButton.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 254 | this.EnableLoggingButton.Image = ((System.Drawing.Image)(resources.GetObject("EnableLoggingButton.Image"))); 255 | this.EnableLoggingButton.Location = new System.Drawing.Point(404, 12); 256 | this.EnableLoggingButton.Name = "EnableLoggingButton"; 257 | this.EnableLoggingButton.Size = new System.Drawing.Size(50, 50); 258 | this.EnableLoggingButton.TabIndex = 3; 259 | this.EnableLoggingButton.UseVisualStyleBackColor = true; 260 | this.EnableLoggingButton.Click += new System.EventHandler(this.EnableLoggingButton_Click); 261 | // 262 | // RefreshButton 263 | // 264 | this.RefreshButton.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 265 | this.RefreshButton.Image = ((System.Drawing.Image)(resources.GetObject("RefreshButton.Image"))); 266 | this.RefreshButton.Location = new System.Drawing.Point(12, 12); 267 | this.RefreshButton.Name = "RefreshButton"; 268 | this.RefreshButton.Size = new System.Drawing.Size(50, 50); 269 | this.RefreshButton.TabIndex = 0; 270 | this.RefreshButton.UseVisualStyleBackColor = true; 271 | this.RefreshButton.Click += new System.EventHandler(this.RefreshButton_Click); 272 | // 273 | // ADReplStatusForm 274 | // 275 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 276 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 277 | this.ClientSize = new System.Drawing.Size(784, 461); 278 | this.Controls.Add(this.SetDcButton); 279 | this.Controls.Add(this.DarkModeButton); 280 | this.Controls.Add(this.ErrorsOnlyButton); 281 | this.Controls.Add(this.treeListView1); 282 | this.Controls.Add(this.ProgressPercentLabel); 283 | this.Controls.Add(this.AlternateCredsButton); 284 | this.Controls.Add(this.SetForestButton); 285 | this.Controls.Add(this.EnableLoggingButton); 286 | this.Controls.Add(this.RefreshButton); 287 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 288 | this.MinimumSize = new System.Drawing.Size(800, 500); 289 | this.Name = "ADReplStatusForm"; 290 | this.Text = "AD Replication Status Tool"; 291 | this.Load += new System.EventHandler(this.ADReplStatusForm_Load); 292 | this.Resize += new System.EventHandler(this.ADReplStatusForm_Resize); 293 | ((System.ComponentModel.ISupportInitialize)(this.treeListView1)).EndInit(); 294 | this.ResumeLayout(false); 295 | 296 | } 297 | 298 | #endregion 299 | 300 | private System.Windows.Forms.Button RefreshButton; 301 | private System.ComponentModel.BackgroundWorker backgroundWorker1; 302 | private System.Windows.Forms.ToolTip toolTip1; 303 | private System.Windows.Forms.Button EnableLoggingButton; 304 | private System.Windows.Forms.Button SetForestButton; 305 | private System.Windows.Forms.Button AlternateCredsButton; 306 | private System.Windows.Forms.Label ProgressPercentLabel; 307 | private BrightIdeasSoftware.TreeListView treeListView1; 308 | private BrightIdeasSoftware.OLVColumn DCNameColumn; 309 | private BrightIdeasSoftware.OLVColumn SiteColumn; 310 | private BrightIdeasSoftware.OLVColumn DiscoveryIssuesColumn; 311 | private BrightIdeasSoftware.OLVColumn IsGCColumn; 312 | private BrightIdeasSoftware.OLVColumn IsRODCColumn; 313 | private BrightIdeasSoftware.OLVColumn DomainNameColumn; 314 | private BrightIdeasSoftware.OLVColumn SourceServerColumn; 315 | private BrightIdeasSoftware.OLVColumn PartitionNameColumn; 316 | private BrightIdeasSoftware.OLVColumn ConsecutiveFailureCountColumn; 317 | private BrightIdeasSoftware.OLVColumn LastSuccessfulSyncColumn; 318 | private BrightIdeasSoftware.OLVColumn LastSyncResultColumn; 319 | private BrightIdeasSoftware.OLVColumn LastSyncMessageColumn; 320 | private System.Windows.Forms.Button ErrorsOnlyButton; 321 | private System.Windows.Forms.Button DarkModeButton; 322 | private System.Windows.Forms.Button SetDcButton; 323 | } 324 | } 325 | 326 | -------------------------------------------------------------------------------- /AlternateCredsForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ADReplStatus 2 | { 3 | partial class AlternateCredsForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AlternateCredsForm)); 32 | this.AlternateCredsButton = new System.Windows.Forms.Button(); 33 | this.AlternateCredsLabel = new System.Windows.Forms.Label(); 34 | this.UsernameTextBox = new System.Windows.Forms.TextBox(); 35 | this.PasswordTextBox = new System.Windows.Forms.TextBox(); 36 | this.PwdLabel = new System.Windows.Forms.Label(); 37 | this.UsernameLabel = new System.Windows.Forms.Label(); 38 | this.SuspendLayout(); 39 | // 40 | // AlternateCredsButton 41 | // 42 | this.AlternateCredsButton.Location = new System.Drawing.Point(384, 57); 43 | this.AlternateCredsButton.Name = "AlternateCredsButton"; 44 | this.AlternateCredsButton.Size = new System.Drawing.Size(75, 23); 45 | this.AlternateCredsButton.TabIndex = 0; 46 | this.AlternateCredsButton.Text = "OK"; 47 | this.AlternateCredsButton.UseVisualStyleBackColor = true; 48 | this.AlternateCredsButton.Click += new System.EventHandler(this.AlternateCredsButton_Click); 49 | // 50 | // AlternateCredsLabel 51 | // 52 | this.AlternateCredsLabel.AutoSize = true; 53 | this.AlternateCredsLabel.Location = new System.Drawing.Point(12, 9); 54 | this.AlternateCredsLabel.Name = "AlternateCredsLabel"; 55 | this.AlternateCredsLabel.Size = new System.Drawing.Size(359, 39); 56 | this.AlternateCredsLabel.TabIndex = 1; 57 | this.AlternateCredsLabel.Text = resources.GetString("AlternateCredsLabel.Text"); 58 | // 59 | // UsernameTextBox 60 | // 61 | this.UsernameTextBox.Location = new System.Drawing.Point(74, 57); 62 | this.UsernameTextBox.Name = "UsernameTextBox"; 63 | this.UsernameTextBox.Size = new System.Drawing.Size(120, 20); 64 | this.UsernameTextBox.TabIndex = 2; 65 | // 66 | // PasswordTextBox 67 | // 68 | this.PasswordTextBox.Location = new System.Drawing.Point(240, 57); 69 | this.PasswordTextBox.Name = "PasswordTextBox"; 70 | this.PasswordTextBox.Size = new System.Drawing.Size(138, 20); 71 | this.PasswordTextBox.TabIndex = 3; 72 | this.PasswordTextBox.UseSystemPasswordChar = true; 73 | // 74 | // PwdLabel 75 | // 76 | this.PwdLabel.AutoSize = true; 77 | this.PwdLabel.Location = new System.Drawing.Point(206, 60); 78 | this.PwdLabel.Name = "PwdLabel"; 79 | this.PwdLabel.Size = new System.Drawing.Size(31, 13); 80 | this.PwdLabel.TabIndex = 4; 81 | this.PwdLabel.Text = "Pwd:"; 82 | // 83 | // UsernameLabel 84 | // 85 | this.UsernameLabel.AutoSize = true; 86 | this.UsernameLabel.Location = new System.Drawing.Point(13, 60); 87 | this.UsernameLabel.Name = "UsernameLabel"; 88 | this.UsernameLabel.Size = new System.Drawing.Size(58, 13); 89 | this.UsernameLabel.TabIndex = 5; 90 | this.UsernameLabel.Text = "Username:"; 91 | // 92 | // AlternateCredsForm 93 | // 94 | this.AcceptButton = this.AlternateCredsButton; 95 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 96 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 97 | this.ClientSize = new System.Drawing.Size(462, 87); 98 | this.Controls.Add(this.UsernameLabel); 99 | this.Controls.Add(this.PwdLabel); 100 | this.Controls.Add(this.PasswordTextBox); 101 | this.Controls.Add(this.UsernameTextBox); 102 | this.Controls.Add(this.AlternateCredsLabel); 103 | this.Controls.Add(this.AlternateCredsButton); 104 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; 105 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 106 | this.MaximizeBox = false; 107 | this.MinimizeBox = false; 108 | this.Name = "AlternateCredsForm"; 109 | this.ShowInTaskbar = false; 110 | this.Text = "Provide Alternate Credentials"; 111 | this.Load += new System.EventHandler(this.AlternateCredsForm_Load); 112 | this.ResumeLayout(false); 113 | this.PerformLayout(); 114 | 115 | } 116 | 117 | #endregion 118 | 119 | private System.Windows.Forms.Button AlternateCredsButton; 120 | private System.Windows.Forms.Label AlternateCredsLabel; 121 | private System.Windows.Forms.TextBox UsernameTextBox; 122 | private System.Windows.Forms.TextBox PasswordTextBox; 123 | private System.Windows.Forms.Label PwdLabel; 124 | private System.Windows.Forms.Label UsernameLabel; 125 | } 126 | } -------------------------------------------------------------------------------- /AlternateCredsForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace ADReplStatus 12 | { 13 | public partial class AlternateCredsForm : Form 14 | { 15 | public AlternateCredsForm() 16 | { 17 | InitializeComponent(); 18 | } 19 | 20 | private void AlternateCredsButton_Click(object sender, EventArgs e) 21 | { 22 | if (UsernameTextBox.Text.Length > 0 && PasswordTextBox.Text.Length > 0) 23 | { 24 | ADReplStatusForm.gUsername = UsernameTextBox.Text; 25 | 26 | ADReplStatusForm.gPassword = PasswordTextBox.Text; 27 | 28 | this.Dispose(); 29 | 30 | if (ADReplStatusForm.gLoggingEnabled) 31 | { 32 | System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] Using alternate identity: {ADReplStatusForm.gUsername}\n"); 33 | } 34 | } 35 | } 36 | 37 | private void AlternateCredsForm_Load(object sender, EventArgs e) 38 | { 39 | if (ADReplStatusForm.gDarkMode == true) 40 | { 41 | this.BackColor = Color.FromArgb(32, 32, 32); 42 | 43 | foreach (var control in this.Controls) 44 | { 45 | if (control is Label) 46 | { 47 | ((Label)control).BackColor = Color.FromArgb(32, 32, 32); 48 | 49 | ((Label)control).ForeColor = Color.White; 50 | } 51 | else if (control is TextBox) 52 | { 53 | ((TextBox)control).BackColor = Color.FromArgb(32, 32, 32); 54 | 55 | ((TextBox)control).ForeColor = Color.White; 56 | } 57 | else if (control is Button) 58 | { 59 | ((Button)control).BackColor = Color.FromArgb(32, 32, 32); 60 | 61 | ((Button)control).ForeColor = Color.White; 62 | } 63 | } 64 | } 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /AlternateCredsForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | Provide alternate credentials to connect to the AD forest. 122 | NOTE: This is only necessary if the currently logged-on user does not have 123 | permissions to the replication data of the target Active Directory forest: 124 | 125 | 126 | 127 | 128 | AAABAAYAICAQAAEABADoAgAAZgAAABAQEAABAAQAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA 129 | CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA 130 | AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA 131 | /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 132 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP/////////////////wAAj///////////////// 133 | 8AAP//////+P/4/4/4/4//AACP93Bzh3dw93dz93dw/wAAj/f/h/eI9/eIh4eI9/8AAP/3j4eH/4eH/4 134 | f3+IePAACP94iH94iH9/iH94+H/wAAj/eHd/eHd/d3d/eHd/8AAP//+P//+P//////+P//AACP//j4j4 135 | ////iIiI///wAAj////4///////////48AAP///3d3T////3d1L///AACP//94+D//+P94j3///wAAj/ 136 | //f4h/////f4h4/48AAP///3j4f/j//3j4f///AACP//93d3////93d3///wAAj///////////////// 137 | 8AAP////+IiIiIiIiP//+PAACP////////////////+AAAj///////d3V/////iIgAAP///////3j4L/ 138 | //eHiIAACP//////9/iH///4/4iAAAj///////ePh///+P+AAAAP///////3d3f///j4AAAACP////j/ 139 | //////+IgAAAAAj/////////////iIAAAAAPiIiIiIiIj4iIiPAAAAAAAAAAAAAAAAAAAAAAAAAAAP// 140 | //////////////////+AAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AA 141 | AAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAH4AAAD+AAAB/gAAAf4AA 142 | Af//////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA 143 | gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAHd3 144 | d3d3d3dwf/j//////3B///j4+P+PcH93f3d/d39wj3h4f3h/f4CId393f3d/cI/4//j/+P+Aj/iIiIiI 145 | /4CP///4////gI///3d///iAj///f3/4iICPj/93f/j4gI//////+IgAiIiIiIiI8AAAAAAAAAAAAP// 146 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAcAAP// 147 | AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAFxcXABjY2MAaWlpAHZ2 148 | dgCAgIAAhYWFAImJiQCOjo4AkpKSAKmpqQCurq4AsrKyALi4uAC+vr4Aw8PDAMbGxgDJyckAzc3NANLS 149 | 0gDV1dUA3t7eAOPj4wDk5OQA6urqAPX29gD3+PgA+fn5APv8/AD9/f0AAAAAAAAAAAAAAAAAAAAAAAAA 150 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 151 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 152 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 153 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 154 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 155 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 156 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 157 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 158 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 159 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 160 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 161 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 162 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 163 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 164 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA 165 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 166 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQbGxsb 167 | GxsbGxsbGhoaGhoaGhoaGhoaGhoaGhoAAAAAFBsbGxsbGxsbGxsbGxsbGxoaGhoaGhoaGhoaGgAAAAAU 168 | GxsbGxsbGxsbGxsbGxsbGxoaGhoaGhoaGhoaAAAAABQbGwQDAgEBGwQDAgEBGwQDAgEBGgQDAgEBGhoA 169 | AAAAFBsbBRoYFQEbBRoYFQEbBRoYFQEaBRoYFQEaGgAAAAAUGxsFGBUUAhsFGBUUAhsFGBUUAhsFGBUU 170 | AhoaAAAAABQbGwgVFBAEGwgVFBAEGwgVFBAEGwgVFBAEGhoAAAAAFBsbCQkJCAgbCQkJCAgaCQkJCAga 171 | CQkJCAUbGgAAAAAUGxsbGxUbGxsbGxQbGxsbGxQbGhobGxQbGxoaAAAAABUbGxsbFBQUFRQUFRobGxsb 172 | FBQUFBQUFBsbGhoAAAAAFBsbGxsbGxsUGxsbGxsbGxsbGxsUGxsbGxsbGgAAAAAUGxsbGxsFAwIBARsb 173 | GxsbGxsEAwIBARsbGxsbAAAAABUbGxsbGwUaGBUBGxsbGxsbGwUaGBUBGxsbGxsAAAAAFBsbGxsbCBgV 174 | FAIbGxsbGxsbCBgVFAIbGxsbGwAAAAAUGxsbGxsIFRQQBRsbGxsbGxsIFRQQBBsbGxsbAAAAABUbGxsb 175 | GwkJCQgFGxsbGxsbGwkJCAgIGhsbGxsAAAAAFBsbGxsbGxsUGxsbGxsbGxsbGxsVGhsbGxsbGwAAAAAU 176 | GxsbGxsbGxUUFRQVFBUUFRQVFBQbGxsbGxsbAAAAABUbGxsbGxsbGxsbGxsbFBsbGxsbGxsbGxsbGxQA 177 | AAAAFBsbGxsbGxsbGxsbBQMCAgEbGxsbGxsbFRIODQAAAAAUGxsbGxsbGxsbGxsFGhgVARsbGxsbDQsK 178 | CwsNAAAAABUbGxsbGxsbGxsbGwgYFRQCGxsbGxsSGhgVDQwAAAAAFBsbGxsbGxsbGxsbCBUUEAQbGxsb 179 | GxIbGBIAAAAAAAAUGxsbGxsbGxsbGxsJCQkICBsbGxsbFBUSAAAAAAAAABUbGxsbGxsbGxsbGxsbGxsb 180 | GxsbGxgQEgAAAAAAAAAAFBsbGxsbGxsbGxsbGxsbGxsbGxsbFQ0MAAAAAAAAAAAUFRQVFBUUFRQVFBUU 181 | FRQVFBUUFRQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////// 182 | ////////gAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AA 183 | AAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAB+AAAA/gAAAf4AAAH+AAAH//////ygA 184 | AAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAZGRkAG5ubgB2dnYAenp6AIaG 185 | hgCJiYkAkZGRAJ2dnQCsrKwAsrKyALm5uQC9vb0AwMDAAMXFxQDKysoAzc3NAN/f4ADl5eYA6urqAOzt 186 | 7ADw8fIA8vL0APP09QD09fUA9vf4APf4+QD5+foA+/v8APv8/AD+/v4AAAAAAAAAAAAAAAAAAAAAAAAA 187 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 188 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 189 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 190 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 192 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 193 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 194 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 195 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 196 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 197 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 198 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 199 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 200 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 201 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAQE 202 | BAQEBAQEBAQEBAQEBAAFFRUVFRUVFRUZFRoZGgUABxUVFRUVGRUaGRoZGhoHAAgVAwIBFQQCARUEAgEa 203 | CAAJFQYVBBUGFQQaBhUEGgkACRUHBwYaBwcGGgcHBhoKAAoZGRAZGRoQGhoaEBoaCgAKFRoQEBAQEBAQ 204 | EBAaGgsADBoZGhoaGhAaGhoaGhoMAAwaGhoaGgQCARoaGhQRDAAMGhoaGhoGGQQaGg0LCwwADBoaGhoa 205 | CAcGGhoQFQwSAA0aGhoaGhoaGhoaEAwUAAANDQ4ODQ4ODQ4ODQ0ZAAAAAAAAAAAAAAAAAAAAAAAAAP// 206 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAcAAP// 207 | AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 208 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 209 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 210 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 211 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 212 | AAAAAAAIAAAAGAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA 213 | ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAGAAA 214 | AAgAAAAAAAAAAAAAABgAAABIAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAA 215 | AGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAA 216 | AGAAAABIAAAAGAAAAAAAAAAA1tbW//j5+f/4+fn/+Pn5//j5+f/4+fn/+Pn5//j5+f/4+fn/+Pj4//j4 217 | +P/3+Pj/9/j4//f4+P/3+Pj/9/j4//f39//29/f/9vf3//b39//29/f/9vf3//b39//29/f/9fb2//X2 218 | 9v/19vb/9fb2/wAAAGAAAAAgAAAAAAAAAADW1tb/+fr6//n6+v/5+vr/+fr6//n6+v/5+vr/+fr6//n5 219 | +f/5+fn/+Pn5//j5+f/4+fn/+Pn5//j4+P/4+Pj/9/j4//f4+P/3+Pj/9/j4//f4+P/39/f/9vf3//b3 220 | 9//29/f/9vf3//b39//29/f/AAAAYAAAACAAAAAAAAAAANbW1v/6+vr/+fr6//r6+v/5+vr/+vr6//n6 221 | +v/5+vr/+fr6//n5+f/5+fn/+fn5//j5+f/4+fn/+Pn5//j4+P/4+Pj/9/j4//f4+P/3+Pj/9/j4//f4 222 | +P/39/f/9vf3//b39//29/f/9vf3//b39/8AAABgAAAAIAAAAAAAAAAA1tbW//r6+v/6+vr/dnZ2/2lp 223 | af9jY2P/XV1d/1xcXP/5+vr/dnZ2/2lpaf9jY2P/XV1d/1xcXP/4+fn/dnZ2/2lpaf9jY2P/XV1d/1xc 224 | XP/3+Pj/dnZ2/2lpaf9jY2P/XV1d/1xcXP/29/f/9vf3/wAAAGAAAAAgAAAAAAAAAADW1tb/+vv7//r6 225 | +v+AgID/9vb2/+vr6//f39//XFxc//r6+v+AgID/9vb2/+vr6//f39//XFxc//j5+f+AgID/9vb2/+vr 226 | 6//f39//XFxc//f4+P+AgID/9vb2/+vr6//f39//XFxc//b39//29/f/AAAAYAAAACAAAAAAAAAAANbW 227 | 1v/6+/v/+vv7/4WFhf/r6+v/39/f/9LS0v9jY2P/+vr6/4WFhf/r6+v/39/f/9LS0v9jY2P/+fn5/4WF 228 | hf/r6+v/39/f/9LS0v9jY2P/+Pj4/4WFhf/r6+v/39/f/9LS0v9jY2P/9/f3//b39/8AAABgAAAAIAAA 229 | AAAAAAAA1tbW//v7+//6+/v/ioqK/9/f3//S0tL/x8fH/3Z2dv/6+vr/ioqK/9/f3//S0tL/x8fH/3Z2 230 | dv/5+fn/ioqK/9/f3//S0tL/x8fH/3Z2dv/4+Pj/ioqK/9/f3//S0tL/x8fH/3Z2dv/3+Pj/9/f3/wAA 231 | AGAAAAAgAAAAAAAAAADW1tb/+/v7//v7+/+Tk5P/kpKS/5GRkf+Ojo7/iIiI//r7+/+Tk5P/kpKS/5GR 232 | kf+Ojo7/iIiI//n6+v+Tk5P/kpKS/5GRkf+Ojo7/iIiI//j5+f+Tk5P/kpKS/5GRkf+Ojo7/iIiI//f4 233 | +P/3+Pj/AAAAYAAAACAAAAAAAAAAANbW1v/7+/v/+/v7//v7+//7+/v/1tbW//v7+//7+/v/+/v7//r7 234 | +//6+/v/1tbW//r6+v/6+vr/+fr6//n6+v/5+vr/1tbW//n5+f/4+fn/+Pn5//j5+f/4+fn/1tbW//j4 235 | +P/3+Pj/9/j4//f4+P8AAABgAAAAIAAAAAAAAAAA1tbW//v8/P/7+/v/+/z8//v7+//W1tb/1tbW/9bW 236 | 1v/W1tb/1tbW/9bW1v/W1tb/+vr6//r6+v/6+vr/+fr6//n6+v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW 237 | 1v/W1tb/+Pj4//j4+P/3+Pj/9/j4/wAAAGAAAAAgAAAAAAAAAADW1tb/+/z8//v8/P/7/Pz/+/z8//v8 238 | /P/7/Pz/+/v7/9bW1v/7+/v/+/v7//r7+//6+/v/+vr6//r6+v/6+vr/+fr6//n6+v/5+vr/+fn5/9bW 239 | 1v/5+fn/+Pn5//j5+f/4+fn/+Pj4//j4+P/3+Pj/AAAAYAAAACAAAAAAAAAAANbW1v/8/Pz//Pz8//z8 240 | /P/8/Pz//Pz8/3Z2dv9paWn/Y2Nj/11dXf9cXFz/+/v7//r7+//6+/v/+vv7//r6+v/6+vr/+vr6/3Z2 241 | dv9paWn/Y2Nj/11dXf9cXFz/+Pn5//j5+f/4+fn/+Pn5//j4+P8AAABgAAAAIAAAAAAAAAAA1tbW//z8 242 | /P/8/Pz//Pz8//z8/P/8/Pz/gICA//b29v/r6+v/39/f/1xcXP/7+/v/+/v7//v7+//6+/v/+vv7//r6 243 | +v/6+vr/gICA//b29v/r6+v/39/f/1xcXP/5+fn/+Pn5//j5+f/4+fn/+Pn5/wAAAGAAAAAgAAAAAAAA 244 | AADW1tb//Pz8//z8/P/8/Pz//Pz8//z8/P+FhYX/6+vr/9/f3//S0tL/Y2Nj//v7+//7+/v/+/v7//v7 245 | +//6+/v/+vv7//r6+v+FhYX/6+vr/9/f3//S0tL/Y2Nj//n5+f/5+fn/+Pn5//j5+f/4+fn/AAAAYAAA 246 | ACAAAAAAAAAAANbW1v/8/f3//Pz8//z9/f/8/Pz//P39/4qKiv/f39//0tLS/8fHx/92dnb/+/z8//v7 247 | +//7+/v/+/v7//v7+//6+/v/+vv7/4qKiv/f39//0tLS/8fHx/92dnb/+fr6//n5+f/5+fn/+fn5//j5 248 | +f8AAABgAAAAIAAAAAAAAAAA1tbW//39/f/8/f3//f39//z9/f/9/f3/k5OT/5KSkv+RkZH/jo6O/4iI 249 | iP/8/Pz/+/z8//v8/P/7+/v/+/v7//v7+//6+/v/k5OT/5KSkv+RkZH/jo6O/4iIiP/5+vr/+fr6//n6 250 | +v/5+fn/+fn5/wAAAGAAAAAgAAAAAAAAAADW1tb//f39//39/f/9/f3//f39//39/f/9/f3//P39/9bW 251 | 1v/8/Pz//Pz8//z8/P/8/Pz/+/z8//v8/P/7+/v/+/v7//v7+//7+/v/+vv7/9bW1v/6+vr/+vr6//r6 252 | +v/5+vr/+fr6//n6+v/5+fn/AAAAYAAAACAAAAAAAAAAANbW1v/9/f3//f39//39/f/9/f3//f39//39 253 | /f/9/f3/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW//r7 254 | +//6+vr/+vr6//r6+v/5+vr/+fr6//n6+v8AAABgAAAAIAAAAAAAAAAA1tbW//39/f/9/f3//f39//39 255 | /f/9/f3//f39//39/f/9/f3//P39//z9/f/8/Pz//Pz8//z8/P/W1tb//Pz8//v8/P/7+/v/+/v7//v7 256 | +//7+/v/+vv7//r7+//6+vr/+vr6//r6+v/5+vr/1NTU/wAAAGAAAAAgAAAAAAAAAADW1tb//f39//39 257 | /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//z9/f92dnb/aWlp/2NjY/9dXV3/XFxc//v8 258 | /P/7/Pz/+/v7//v7+//7+/v/+vv7//r7+//W1tb/zs7O/7+/v/+4uLj/AAAAVQAAABsAAAAAAAAAANbW 259 | 1v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39/4CAgP/29vb/6+vr/9/f 260 | 3/9cXFz//Pz8//v8/P/7/Pz/+/v7//v7+/+ysrL/q6ur/6mpqf+pqan/r6+v/7i4uP4AAAA3AAAADgAA 261 | AAAAAAAA1tbW//7+/v/9/f3//v7+//39/f/+/v7//f39//39/f/9/f3//f39//39/f/9/f3/hYWF/+vr 262 | 6//f39//0tLS/2NjY//8/Pz//Pz8//v8/P/7/Pz/+/v7/8bGxv/19fX/9PT0/+Pj4/+8vLz+ZGRkhAAA 263 | ABQAAAADAAAAAAAAAADW1tb//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f7+//39/f/9/f3//f39//39 264 | /f+Kior/39/f/9LS0v/Hx8f/dnZ2//z8/P/8/Pz//Pz8//z8/P/7/Pz/zs7O//r6+v/r6+v/ysrK/m1t 265 | bX8AAAAXAAAAAwAAAAAAAAAAAAAAANbW1v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f7+//39 266 | /f/9/f3//f39/5OTk/+SkpL/kZGR/46Ojv+IiIj//Pz8//z8/P/8/Pz//Pz8//z8/P/Nzc3/5OTk/8nJ 267 | yf5oaGh/AAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAA1tbW//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ 268 | /v/+/v7//f7+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/f3//Pz8//z8/P/8/Pz/6urq/8PD 269 | w//Hx8f+ZWVlfgAAABcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAADW1tb//v7+//7+/v/+/v7//v7+//7+ 270 | /v/+/v7//v7+//7+/v/+/v7//v7+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/f3//Pz8//z8 271 | /P/c3Nz/v7+//mtra4IAAAAZAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbW1v/W1tb/1tbW/9bW 272 | 1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW 273 | 1v/W1tb/1tbW/8zMzPiCgoJvAAAAEgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 274 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 275 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// 276 | ////////gAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA 277 | AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA4AAAAeAAAAPgAAAH4AA 278 | AD//////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 279 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6enr/enp6/3p6 280 | ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3p6ev8AAAAAhoaG//Dw 281 | 8v/w8PL/8PDy//Hx8//x8vP/8vL0//Pz9P/z9PX/9PX2//X19//29vf/9/f4//f4+f+Ghob/AAAAAJCQ 282 | kP/x8fP/8fHz//Hx8//x8vP/8vL0//Pz9f/z9PX/9PX2//X19//29vf/9/f4//f4+f/4+fr/kJCQ/wAA 283 | AACdnZ3/8vLz/3Z2dv9ubm7/ZGRk//Pz9f92dnb/bm5u/2RkZP/29vf/dnZ2/25ubv9kZGT/+fr6/52d 284 | nf8AAAAArKys//Ly9P+Kior/9PT0/3t7e//09PX/ioqK//T09P97e3v/9/f4/4qKiv/09PT/e3t7//r7 285 | +/+srKz/AAAAAK2trf/z8/X/k5OT/5CQkP+IiIj/9PX2/5OTk/+QkJD/iIiI//j4+f+Tk5P/kJCQ/4iI 286 | iP/7+/z/ra2t/wAAAACxsbH/9PT2//T09v/Nzc3/9fX2//X29//29/j/zc3N//j4+f/5+fr/+fr7/83N 287 | zf/7/Pz/+/z8/7Gxsf8AAAAAs7Oz//X19v/19fb/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83N 288 | zf/Nzc3/+/z9//z9/f+zs7P/AAAAALq6uv/3+Pn/9/j5//f4+f/4+fr/+fr6//r6+//Nzc3/+/z8//z9 289 | /f/8/f3//P39//3+/v/9/v7/uLi4/wAAAAC8vLz/+Pn6//j5+v/4+fr/+fr6//r6+/92dnb/bm5u/2Rk 290 | ZP/8/f3//f7+//3+/v/l5eb/39/g/7q6uv8AAAAAvb29//n6+v/5+vr/+fr6//r7+//7+/z/ioqK//T0 291 | 9P97e3v//f7+//3+/v+6urr/uLi4/7i4uP+6urr/AAAAAL+/v//6+/v/+vv7//r7+//7+/z/+/z8/5OT 292 | k/+QkJD/iIiI//3+/v/9/v7/xcXF//b29v+6urr/3d3dmwAAAADAwMD/+/v8//v7/P/7+/z/+/z8//z9 293 | /f/8/f3//f7+//3+/v/7/Pz//f7+/8rKyv+6urr/4+XipwAAAAAAAAAAwMDA/8DAwP/AwMD/wMDA/8DA 294 | wP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP+/v7//9fX1uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 295 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAEAAAAB 296 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAAHAAD//wAA 297 | 298 | 299 | -------------------------------------------------------------------------------- /App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Forest.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/Forest.ico -------------------------------------------------------------------------------- /PortTester.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ADReplStatus 2 | { 3 | partial class PortTester 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PortTester)); 32 | this.results_label = new System.Windows.Forms.Label(); 33 | this.results_txtbox = new System.Windows.Forms.TextBox(); 34 | this.Target_label = new System.Windows.Forms.Label(); 35 | this.target_txtbox = new System.Windows.Forms.TextBox(); 36 | this.portOverride_btn = new System.Windows.Forms.CheckBox(); 37 | this.port_label = new System.Windows.Forms.Label(); 38 | this.port_txtbox = new System.Windows.Forms.TextBox(); 39 | this.manualTest_btn = new System.Windows.Forms.Button(); 40 | this.protocolTesterListBox = new System.Windows.Forms.CheckedListBox(); 41 | this.runTest_btn = new System.Windows.Forms.Button(); 42 | this.selectAll_rbtn = new System.Windows.Forms.RadioButton(); 43 | this.exportResults_btn = new System.Windows.Forms.Button(); 44 | this.SuspendLayout(); 45 | // 46 | // results_label 47 | // 48 | resources.ApplyResources(this.results_label, "results_label"); 49 | this.results_label.Name = "results_label"; 50 | // 51 | // results_txtbox 52 | // 53 | resources.ApplyResources(this.results_txtbox, "results_txtbox"); 54 | this.results_txtbox.Name = "results_txtbox"; 55 | // 56 | // Target_label 57 | // 58 | resources.ApplyResources(this.Target_label, "Target_label"); 59 | this.Target_label.Name = "Target_label"; 60 | // 61 | // target_txtbox 62 | // 63 | resources.ApplyResources(this.target_txtbox, "target_txtbox"); 64 | this.target_txtbox.Name = "target_txtbox"; 65 | // 66 | // portOverride_btn 67 | // 68 | resources.ApplyResources(this.portOverride_btn, "portOverride_btn"); 69 | this.portOverride_btn.Name = "portOverride_btn"; 70 | this.portOverride_btn.UseVisualStyleBackColor = true; 71 | this.portOverride_btn.CheckedChanged += new System.EventHandler(this.portOverride_btn_CheckedChanged); 72 | // 73 | // port_label 74 | // 75 | resources.ApplyResources(this.port_label, "port_label"); 76 | this.port_label.Name = "port_label"; 77 | // 78 | // port_txtbox 79 | // 80 | resources.ApplyResources(this.port_txtbox, "port_txtbox"); 81 | this.port_txtbox.Name = "port_txtbox"; 82 | // 83 | // manualTest_btn 84 | // 85 | resources.ApplyResources(this.manualTest_btn, "manualTest_btn"); 86 | this.manualTest_btn.ForeColor = System.Drawing.SystemColors.ControlText; 87 | this.manualTest_btn.Name = "manualTest_btn"; 88 | this.manualTest_btn.UseVisualStyleBackColor = true; 89 | this.manualTest_btn.Click += new System.EventHandler(this.manualTest_btn_Click); 90 | // 91 | // protocolTesterListBox 92 | // 93 | this.protocolTesterListBox.FormattingEnabled = true; 94 | resources.ApplyResources(this.protocolTesterListBox, "protocolTesterListBox"); 95 | this.protocolTesterListBox.Name = "protocolTesterListBox"; 96 | this.protocolTesterListBox.ThreeDCheckBoxes = true; 97 | // 98 | // runTest_btn 99 | // 100 | resources.ApplyResources(this.runTest_btn, "runTest_btn"); 101 | this.runTest_btn.Name = "runTest_btn"; 102 | this.runTest_btn.UseVisualStyleBackColor = true; 103 | this.runTest_btn.Click += new System.EventHandler(this.runTest_btn_Click); 104 | // 105 | // selectAll_rbtn 106 | // 107 | resources.ApplyResources(this.selectAll_rbtn, "selectAll_rbtn"); 108 | this.selectAll_rbtn.Name = "selectAll_rbtn"; 109 | this.selectAll_rbtn.TabStop = true; 110 | this.selectAll_rbtn.UseVisualStyleBackColor = true; 111 | this.selectAll_rbtn.CheckedChanged += new System.EventHandler(this.selectAll_rbtn_CheckedChanged); 112 | this.selectAll_rbtn.Click += new System.EventHandler(this.selectAll_rbtn_Click); 113 | // 114 | // exportResults_btn 115 | // 116 | resources.ApplyResources(this.exportResults_btn, "exportResults_btn"); 117 | this.exportResults_btn.Name = "exportResults_btn"; 118 | this.exportResults_btn.UseVisualStyleBackColor = true; 119 | this.exportResults_btn.Click += new System.EventHandler(this.exportResults_btn_Click); 120 | // 121 | // PortTester 122 | // 123 | resources.ApplyResources(this, "$this"); 124 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 125 | this.Controls.Add(this.exportResults_btn); 126 | this.Controls.Add(this.selectAll_rbtn); 127 | this.Controls.Add(this.runTest_btn); 128 | this.Controls.Add(this.protocolTesterListBox); 129 | this.Controls.Add(this.manualTest_btn); 130 | this.Controls.Add(this.port_txtbox); 131 | this.Controls.Add(this.port_label); 132 | this.Controls.Add(this.portOverride_btn); 133 | this.Controls.Add(this.target_txtbox); 134 | this.Controls.Add(this.Target_label); 135 | this.Controls.Add(this.results_txtbox); 136 | this.Controls.Add(this.results_label); 137 | this.Cursor = System.Windows.Forms.Cursors.Default; 138 | this.Name = "PortTester"; 139 | this.Load += new System.EventHandler(this.PortTester_Load); 140 | this.ResumeLayout(false); 141 | this.PerformLayout(); 142 | 143 | } 144 | 145 | #endregion 146 | 147 | private System.Windows.Forms.Label results_label; 148 | private System.Windows.Forms.TextBox results_txtbox; 149 | private System.Windows.Forms.Label Target_label; 150 | private System.Windows.Forms.TextBox target_txtbox; 151 | private System.Windows.Forms.CheckBox portOverride_btn; 152 | private System.Windows.Forms.Label port_label; 153 | private System.Windows.Forms.TextBox port_txtbox; 154 | private System.Windows.Forms.Button manualTest_btn; 155 | private System.Windows.Forms.CheckedListBox protocolTesterListBox; 156 | private System.Windows.Forms.Button runTest_btn; 157 | private System.Windows.Forms.RadioButton selectAll_rbtn; 158 | private System.Windows.Forms.Button exportResults_btn; 159 | } 160 | } -------------------------------------------------------------------------------- /PortTester.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using System.Net.Sockets; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | 8 | namespace ADReplStatus 9 | { 10 | public partial class PortTester : Form 11 | { 12 | bool g_checkAll_rbtn_isChecked = false; 13 | bool g_tnc_firstRun_onMulti = false; 14 | public PortTester() 15 | { 16 | InitializeComponent(); 17 | this.target_txtbox.Text = $"{ADReplStatusForm.gTarget.ToString()}"; 18 | portProtocolList(); 19 | } 20 | 21 | private void portOverride_btn_CheckedChanged(object sender, EventArgs e) 22 | { 23 | if(this.port_label.Visible == false) 24 | { 25 | this.port_label.Visible = true; 26 | this.port_txtbox.Visible = true; 27 | this.manualTest_btn.Visible = true; 28 | } 29 | else 30 | { 31 | this.port_label.Visible = false; 32 | this.port_txtbox.Visible = false; 33 | this.manualTest_btn.Visible = false; 34 | } 35 | } 36 | 37 | private void portProtocolList() 38 | { 39 | this.protocolTesterListBox.CheckOnClick = true; 40 | 41 | string rpcEpmString = "Remote Procedure Call // EndpointMapper"; 42 | string ldapString = "LDAP"; 43 | string ldapSSLString = "LDAP SSL"; 44 | string dnsString = "Domain Name Service"; 45 | string globalCatalogLDAPString = "Global Catalog LDAP"; 46 | string globalCatalogLDAPSSLString = "Global Catalog LDAP SSL"; 47 | string kerberosString = "Kerberos authentication"; 48 | string smbString = "SMB, NetLogon, SamR"; 49 | 50 | string[] stringArray; 51 | stringArray = new string[] { rpcEpmString, ldapString, ldapSSLString, dnsString, globalCatalogLDAPString, globalCatalogLDAPSSLString, kerberosString, smbString }; 52 | 53 | foreach(String s in stringArray) 54 | { 55 | this.protocolTesterListBox.Items.Add(s); 56 | } 57 | 58 | } 59 | 60 | private async void manualTest_btn_Click(object sender, EventArgs e) 61 | { 62 | if(this.port_txtbox.Text == "" || this.port_txtbox.Text == null) 63 | { 64 | string errorMessage = "When using the manual test method you MUST provide a port to test with!"; 65 | MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 66 | return; 67 | } 68 | 69 | try 70 | { 71 | Int32 port = Int32.Parse(this.port_txtbox.Text); 72 | await testNetConnection(this.target_txtbox.Text, port, false); 73 | } 74 | catch 75 | { 76 | //Do nothing, the exception should've already been caught in testNetConnection 77 | } 78 | } 79 | 80 | private async Task testNetConnection(string target, Int32 port, bool isMulti) 81 | { 82 | if(g_tnc_firstRun_onMulti && isMulti) 83 | { 84 | this.results_txtbox.Text = ""; 85 | } 86 | else if(!isMulti) 87 | { 88 | this.results_txtbox.Text = ""; 89 | } 90 | 91 | try 92 | { 93 | Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 94 | 95 | this.results_txtbox.AppendText($"Testing TCP connection to {target} on port {port}:{Environment.NewLine}"); 96 | await client.ConnectAsync(target, port); 97 | 98 | if (ADReplStatusForm.gLoggingEnabled) 99 | { 100 | System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] Connection to {target} was successful on {port}{Environment.NewLine}"); 101 | } 102 | 103 | string successMessage = $"Connection successful! {Environment.NewLine}==========================="; 104 | this.results_txtbox.AppendText(successMessage); 105 | this.results_txtbox.AppendText($"{Environment.NewLine}Local IP Address: {client.LocalEndPoint.ToString()}{Environment.NewLine}"); 106 | this.results_txtbox.AppendText($"{Environment.NewLine}Remote IP Address: {client.RemoteEndPoint.ToString()}{Environment.NewLine}{Environment.NewLine}"); 107 | 108 | new Thread(() => client.Disconnect(true)); 109 | 110 | } 111 | catch (Exception ex) 112 | { 113 | string errorMessage = $"ERROR: Connection to {target} using port {port} failed!{Environment.NewLine}{Environment.NewLine}{ex.Message}{Environment.NewLine}"; 114 | this.results_txtbox.AppendText($"{Environment.NewLine}{errorMessage}{Environment.NewLine}"); 115 | 116 | if (ADReplStatusForm.gLoggingEnabled) 117 | { 118 | System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] {errorMessage}\n"); 119 | } 120 | } 121 | } 122 | 123 | private void selectAll_rbtn_CheckedChanged(object sender, EventArgs e) 124 | { 125 | g_checkAll_rbtn_isChecked = this.selectAll_rbtn.Checked; 126 | } 127 | 128 | private void selectAll_rbtn_Click(object sender, EventArgs e) 129 | { 130 | if(selectAll_rbtn.Checked && !g_checkAll_rbtn_isChecked) 131 | { 132 | selectAll_rbtn.Checked = false; 133 | for (int i = 0; i < this.protocolTesterListBox.Items.Count; i++) 134 | { 135 | this.protocolTesterListBox.SetItemChecked(i, false); 136 | } 137 | } 138 | else 139 | { 140 | selectAll_rbtn.Checked = true; 141 | g_checkAll_rbtn_isChecked = false; 142 | for (int i = 0; i < this.protocolTesterListBox.Items.Count; i++) 143 | { 144 | this.protocolTesterListBox.SetItemChecked(i, true); 145 | } 146 | } 147 | } 148 | 149 | private async void runTest_btn_Click(object sender, EventArgs e) 150 | { 151 | 152 | Int32 rpcEpmPort = 135; 153 | Int32 ldapPort = 389; 154 | Int32 ldapSSLPort = 636; 155 | Int32 globalCatalogLDAPPort = 3268; 156 | Int32 globalCatalogLDAPSSLPort = 3269; 157 | Int32 kerberosPort = 88; 158 | Int32 dnsPort = 53; 159 | Int32 smbPort = 445; 160 | 161 | try 162 | { 163 | g_tnc_firstRun_onMulti = true; 164 | foreach (var item in protocolTesterListBox.CheckedItems) 165 | { 166 | string protocolname = item.ToString(); 167 | Int32 selectedPort; 168 | switch (protocolname) 169 | { 170 | case "Remote Procedure Call // EndpointMapper": 171 | selectedPort = rpcEpmPort; 172 | break; 173 | case "LDAP": 174 | selectedPort = ldapPort; 175 | break; 176 | case "LDAP SSL": 177 | selectedPort = ldapSSLPort; 178 | break; 179 | case "Domain Name Service": 180 | selectedPort = dnsPort; 181 | break; 182 | case "Global Catalog LDAP": 183 | selectedPort = globalCatalogLDAPPort; 184 | break; 185 | case "Global Catalog LDAP SSL": 186 | selectedPort = globalCatalogLDAPSSLPort; 187 | break; 188 | case "Kerberos authentication": 189 | selectedPort = kerberosPort; 190 | break; 191 | case "SMB, NetLogon, SamR": 192 | selectedPort = smbPort; 193 | break; 194 | default: 195 | return; 196 | } 197 | await testNetConnection(this.target_txtbox.Text, selectedPort, true); 198 | g_tnc_firstRun_onMulti = false; 199 | } 200 | } 201 | catch(Exception ex) 202 | { 203 | MessageBox.Show($"{ex.Message}", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 204 | g_tnc_firstRun_onMulti = false; 205 | } 206 | 207 | } 208 | 209 | private void exportResults_btn_Click(object sender, EventArgs e) 210 | { 211 | if(results_txtbox.Text.Length <= 0) 212 | { 213 | new Thread(() => MessageBox.Show("Cannot export an empty results report!", "No results available", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)).Start(); 214 | } 215 | else 216 | { 217 | try 218 | { 219 | System.IO.File.WriteAllLines("PortTester_Results.txt", results_txtbox.Lines); 220 | new Thread(() => MessageBox.Show($"Results exported to: {Application.StartupPath.ToString()}\\PortTester_Results.txt", "Successfl export", MessageBoxButtons.OK, MessageBoxIcon.Information)).Start(); 221 | } 222 | catch(Exception ex) 223 | { 224 | MessageBox.Show($"{ex.Message}", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 225 | } 226 | } 227 | } 228 | 229 | private void PortTester_Load(object sender, EventArgs e) 230 | { 231 | if (ADReplStatusForm.gDarkMode == true) 232 | { 233 | this.BackColor = Color.FromArgb(32, 32, 32); 234 | 235 | foreach (var control in this.Controls) 236 | { 237 | if (control is Label) 238 | { 239 | ((Label)control).BackColor = Color.FromArgb(32, 32, 32); 240 | 241 | ((Label)control).ForeColor = Color.White; 242 | } 243 | else if (control is TextBox) 244 | { 245 | ((TextBox)control).BackColor = Color.FromArgb(32, 32, 32); 246 | 247 | ((TextBox)control).ForeColor = Color.White; 248 | } 249 | else if (control is Button) 250 | { 251 | ((Button)control).BackColor = Color.FromArgb(32, 32, 32); 252 | 253 | ((Button)control).ForeColor = Color.White; 254 | } 255 | else if (control is CheckBox) 256 | { 257 | ((CheckBox)control).BackColor = Color.FromArgb(32, 32, 32); 258 | 259 | ((CheckBox)control).ForeColor = Color.White; 260 | } 261 | else if (control is RadioButton) 262 | { 263 | ((RadioButton)control).BackColor = Color.FromArgb(32, 32, 32); 264 | 265 | ((RadioButton)control).ForeColor = Color.White; 266 | } 267 | else if (control is ListBox) 268 | { 269 | ((ListBox)control).BackColor = Color.FromArgb(32, 32, 32); 270 | 271 | ((ListBox)control).ForeColor = Color.White; 272 | } 273 | } 274 | } 275 | } 276 | } 277 | } 278 | -------------------------------------------------------------------------------- /PortTester.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | True 123 | 124 | 125 | 126 | Consolas, 8.25pt, style=Bold, Underline 127 | 128 | 129 | 321, 14 130 | 131 | 132 | 55, 13 133 | 134 | 135 | 0 136 | 137 | 138 | RESULTS: 139 | 140 | 141 | results_label 142 | 143 | 144 | System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 145 | 146 | 147 | $this 148 | 149 | 150 | 11 151 | 152 | 153 | 324, 31 154 | 155 | 156 | True 157 | 158 | 159 | 160 | Vertical 161 | 162 | 163 | 231, 208 164 | 165 | 166 | 1 167 | 168 | 169 | results_txtbox 170 | 171 | 172 | System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 173 | 174 | 175 | $this 176 | 177 | 178 | 10 179 | 180 | 181 | True 182 | 183 | 184 | Consolas, 8.25pt 185 | 186 | 187 | 6, 34 188 | 189 | 190 | 49, 13 191 | 192 | 193 | 18 194 | 195 | 196 | Target: 197 | 198 | 199 | Target_label 200 | 201 | 202 | System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 203 | 204 | 205 | $this 206 | 207 | 208 | 9 209 | 210 | 211 | 6, 51 212 | 213 | 214 | 258, 20 215 | 216 | 217 | 19 218 | 219 | 220 | target_txtbox 221 | 222 | 223 | System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 224 | 225 | 226 | $this 227 | 228 | 229 | 8 230 | 231 | 232 | True 233 | 234 | 235 | Consolas, 8.25pt 236 | 237 | 238 | 6, 7 239 | 240 | 241 | No 242 | 243 | 244 | 146, 17 245 | 246 | 247 | 20 248 | 249 | 250 | Manual Port Override 251 | 252 | 253 | MiddleRight 254 | 255 | 256 | portOverride_btn 257 | 258 | 259 | System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 260 | 261 | 262 | $this 263 | 264 | 265 | 7 266 | 267 | 268 | True 269 | 270 | 271 | Consolas, 8.25pt 272 | 273 | 274 | 158, 7 275 | 276 | 277 | 37, 13 278 | 279 | 280 | 21 281 | 282 | 283 | Port: 284 | 285 | 286 | False 287 | 288 | 289 | port_label 290 | 291 | 292 | System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 293 | 294 | 295 | $this 296 | 297 | 298 | 6 299 | 300 | 301 | 161, 26 302 | 303 | 304 | 68, 20 305 | 306 | 307 | 22 308 | 309 | 310 | False 311 | 312 | 313 | port_txtbox 314 | 315 | 316 | System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 317 | 318 | 319 | $this 320 | 321 | 322 | 5 323 | 324 | 325 | Consolas, 8.25pt 326 | 327 | 328 | NoControl 329 | 330 | 331 | 64, 25 332 | 333 | 334 | 91, 23 335 | 336 | 337 | 23 338 | 339 | 340 | Test port 341 | 342 | 343 | False 344 | 345 | 346 | manualTest_btn 347 | 348 | 349 | System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 350 | 351 | 352 | $this 353 | 354 | 355 | 4 356 | 357 | 358 | 6, 100 359 | 360 | 361 | 312, 139 362 | 363 | 364 | 24 365 | 366 | 367 | protocolTesterListBox 368 | 369 | 370 | System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 371 | 372 | 373 | $this 374 | 375 | 376 | 3 377 | 378 | 379 | 91, 245 380 | 381 | 382 | 104, 23 383 | 384 | 385 | 25 386 | 387 | 388 | Run Test 389 | 390 | 391 | runTest_btn 392 | 393 | 394 | System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 395 | 396 | 397 | $this 398 | 399 | 400 | 2 401 | 402 | 403 | True 404 | 405 | 406 | 9, 78 407 | 408 | 409 | 85, 17 410 | 411 | 412 | 26 413 | 414 | 415 | Select all 416 | 417 | 418 | selectAll_rbtn 419 | 420 | 421 | System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 422 | 423 | 424 | $this 425 | 426 | 427 | 1 428 | 429 | 430 | NoControl 431 | 432 | 433 | 383, 245 434 | 435 | 436 | 104, 23 437 | 438 | 439 | 27 440 | 441 | 442 | Export results 443 | 444 | 445 | exportResults_btn 446 | 447 | 448 | System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 449 | 450 | 451 | $this 452 | 453 | 454 | 0 455 | 456 | 457 | True 458 | 459 | 460 | 6, 13 461 | 462 | 463 | 567, 270 464 | 465 | 466 | Consolas, 8.25pt 467 | 468 | 469 | 470 | AAABAAYAICAQAAEABADoAgAAZgAAABAQEAABAAQAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA 471 | CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA 472 | AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA 473 | /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 474 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP/////////////////wAAj///////////////// 475 | 8AAP//////+P/4/4/4/4//AACP93Bzh3dw93dz93dw/wAAj/f/h/eI9/eIh4eI9/8AAP/3j4eH/4eH/4 476 | f3+IePAACP94iH94iH9/iH94+H/wAAj/eHd/eHd/d3d/eHd/8AAP//+P//+P//////+P//AACP//j4j4 477 | ////iIiI///wAAj////4///////////48AAP///3d3T////3d1L///AACP//94+D//+P94j3///wAAj/ 478 | //f4h/////f4h4/48AAP///3j4f/j//3j4f///AACP//93d3////93d3///wAAj///////////////// 479 | 8AAP////+IiIiIiIiP//+PAACP////////////////+AAAj///////d3V/////iIgAAP///////3j4L/ 480 | //eHiIAACP//////9/iH///4/4iAAAj///////ePh///+P+AAAAP///////3d3f///j4AAAACP////j/ 481 | //////+IgAAAAAj/////////////iIAAAAAPiIiIiIiIj4iIiPAAAAAAAAAAAAAAAAAAAAAAAAAAAP// 482 | //////////////////+AAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AA 483 | AAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAH4AAAD+AAAB/gAAAf4AA 484 | Af//////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA 485 | gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAHd3 486 | d3d3d3dwf/j//////3B///j4+P+PcH93f3d/d39wj3h4f3h/f4CId393f3d/cI/4//j/+P+Aj/iIiIiI 487 | /4CP///4////gI///3d///iAj///f3/4iICPj/93f/j4gI//////+IgAiIiIiIiI8AAAAAAAAAAAAP// 488 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAcAAP// 489 | AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAFxcXABjY2MAaWlpAHZ2 490 | dgCAgIAAhYWFAImJiQCOjo4AkpKSAKmpqQCurq4AsrKyALi4uAC+vr4Aw8PDAMbGxgDJyckAzc3NANLS 491 | 0gDV1dUA3t7eAOPj4wDk5OQA6urqAPX29gD3+PgA+fn5APv8/AD9/f0AAAAAAAAAAAAAAAAAAAAAAAAA 492 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 493 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 494 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 495 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 496 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 497 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 498 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 499 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 500 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 501 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 502 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 503 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 504 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 505 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 506 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA 507 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 508 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQbGxsb 509 | GxsbGxsbGhoaGhoaGhoaGhoaGhoaGhoAAAAAFBsbGxsbGxsbGxsbGxsbGxoaGhoaGhoaGhoaGgAAAAAU 510 | GxsbGxsbGxsbGxsbGxsbGxoaGhoaGhoaGhoaAAAAABQbGwQDAgEBGwQDAgEBGwQDAgEBGgQDAgEBGhoA 511 | AAAAFBsbBRoYFQEbBRoYFQEbBRoYFQEaBRoYFQEaGgAAAAAUGxsFGBUUAhsFGBUUAhsFGBUUAhsFGBUU 512 | AhoaAAAAABQbGwgVFBAEGwgVFBAEGwgVFBAEGwgVFBAEGhoAAAAAFBsbCQkJCAgbCQkJCAgaCQkJCAga 513 | CQkJCAUbGgAAAAAUGxsbGxUbGxsbGxQbGxsbGxQbGhobGxQbGxoaAAAAABUbGxsbFBQUFRQUFRobGxsb 514 | FBQUFBQUFBsbGhoAAAAAFBsbGxsbGxsUGxsbGxsbGxsbGxsUGxsbGxsbGgAAAAAUGxsbGxsFAwIBARsb 515 | GxsbGxsEAwIBARsbGxsbAAAAABUbGxsbGwUaGBUBGxsbGxsbGwUaGBUBGxsbGxsAAAAAFBsbGxsbCBgV 516 | FAIbGxsbGxsbCBgVFAIbGxsbGwAAAAAUGxsbGxsIFRQQBRsbGxsbGxsIFRQQBBsbGxsbAAAAABUbGxsb 517 | GwkJCQgFGxsbGxsbGwkJCAgIGhsbGxsAAAAAFBsbGxsbGxsUGxsbGxsbGxsbGxsVGhsbGxsbGwAAAAAU 518 | GxsbGxsbGxUUFRQVFBUUFRQVFBQbGxsbGxsbAAAAABUbGxsbGxsbGxsbGxsbFBsbGxsbGxsbGxsbGxQA 519 | AAAAFBsbGxsbGxsbGxsbBQMCAgEbGxsbGxsbFRIODQAAAAAUGxsbGxsbGxsbGxsFGhgVARsbGxsbDQsK 520 | CwsNAAAAABUbGxsbGxsbGxsbGwgYFRQCGxsbGxsSGhgVDQwAAAAAFBsbGxsbGxsbGxsbCBUUEAQbGxsb 521 | GxIbGBIAAAAAAAAUGxsbGxsbGxsbGxsJCQkICBsbGxsbFBUSAAAAAAAAABUbGxsbGxsbGxsbGxsbGxsb 522 | GxsbGxgQEgAAAAAAAAAAFBsbGxsbGxsbGxsbGxsbGxsbGxsbFQ0MAAAAAAAAAAAUFRQVFBUUFRQVFBUU 523 | FRQVFBUUFRQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////// 524 | ////////gAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AA 525 | AAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAB+AAAA/gAAAf4AAAH+AAAH//////ygA 526 | AAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAZGRkAG5ubgB2dnYAenp6AIaG 527 | hgCJiYkAkZGRAJ2dnQCsrKwAsrKyALm5uQC9vb0AwMDAAMXFxQDKysoAzc3NAN/f4ADl5eYA6urqAOzt 528 | 7ADw8fIA8vL0APP09QD09fUA9vf4APf4+QD5+foA+/v8APv8/AD+/v4AAAAAAAAAAAAAAAAAAAAAAAAA 529 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 530 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 531 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 532 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 533 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 534 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 535 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 536 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 537 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 538 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 539 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 540 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 541 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 542 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 543 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAQE 544 | BAQEBAQEBAQEBAQEBAAFFRUVFRUVFRUZFRoZGgUABxUVFRUVGRUaGRoZGhoHAAgVAwIBFQQCARUEAgEa 545 | CAAJFQYVBBUGFQQaBhUEGgkACRUHBwYaBwcGGgcHBhoKAAoZGRAZGRoQGhoaEBoaCgAKFRoQEBAQEBAQ 546 | EBAaGgsADBoZGhoaGhAaGhoaGhoMAAwaGhoaGgQCARoaGhQRDAAMGhoaGhoGGQQaGg0LCwwADBoaGhoa 547 | CAcGGhoQFQwSAA0aGhoaGhoaGhoaEAwUAAANDQ4ODQ4ODQ4ODQ0ZAAAAAAAAAAAAAAAAAAAAAAAAAP// 548 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAcAAP// 549 | AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 550 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 551 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 552 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 553 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 554 | AAAAAAAIAAAAGAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA 555 | ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAGAAA 556 | AAgAAAAAAAAAAAAAABgAAABIAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAA 557 | AGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAA 558 | AGAAAABIAAAAGAAAAAAAAAAA1tbW//j5+f/4+fn/+Pn5//j5+f/4+fn/+Pn5//j5+f/4+fn/+Pj4//j4 559 | +P/3+Pj/9/j4//f4+P/3+Pj/9/j4//f39//29/f/9vf3//b39//29/f/9vf3//b39//29/f/9fb2//X2 560 | 9v/19vb/9fb2/wAAAGAAAAAgAAAAAAAAAADW1tb/+fr6//n6+v/5+vr/+fr6//n6+v/5+vr/+fr6//n5 561 | +f/5+fn/+Pn5//j5+f/4+fn/+Pn5//j4+P/4+Pj/9/j4//f4+P/3+Pj/9/j4//f4+P/39/f/9vf3//b3 562 | 9//29/f/9vf3//b39//29/f/AAAAYAAAACAAAAAAAAAAANbW1v/6+vr/+fr6//r6+v/5+vr/+vr6//n6 563 | +v/5+vr/+fr6//n5+f/5+fn/+fn5//j5+f/4+fn/+Pn5//j4+P/4+Pj/9/j4//f4+P/3+Pj/9/j4//f4 564 | +P/39/f/9vf3//b39//29/f/9vf3//b39/8AAABgAAAAIAAAAAAAAAAA1tbW//r6+v/6+vr/dnZ2/2lp 565 | af9jY2P/XV1d/1xcXP/5+vr/dnZ2/2lpaf9jY2P/XV1d/1xcXP/4+fn/dnZ2/2lpaf9jY2P/XV1d/1xc 566 | XP/3+Pj/dnZ2/2lpaf9jY2P/XV1d/1xcXP/29/f/9vf3/wAAAGAAAAAgAAAAAAAAAADW1tb/+vv7//r6 567 | +v+AgID/9vb2/+vr6//f39//XFxc//r6+v+AgID/9vb2/+vr6//f39//XFxc//j5+f+AgID/9vb2/+vr 568 | 6//f39//XFxc//f4+P+AgID/9vb2/+vr6//f39//XFxc//b39//29/f/AAAAYAAAACAAAAAAAAAAANbW 569 | 1v/6+/v/+vv7/4WFhf/r6+v/39/f/9LS0v9jY2P/+vr6/4WFhf/r6+v/39/f/9LS0v9jY2P/+fn5/4WF 570 | hf/r6+v/39/f/9LS0v9jY2P/+Pj4/4WFhf/r6+v/39/f/9LS0v9jY2P/9/f3//b39/8AAABgAAAAIAAA 571 | AAAAAAAA1tbW//v7+//6+/v/ioqK/9/f3//S0tL/x8fH/3Z2dv/6+vr/ioqK/9/f3//S0tL/x8fH/3Z2 572 | dv/5+fn/ioqK/9/f3//S0tL/x8fH/3Z2dv/4+Pj/ioqK/9/f3//S0tL/x8fH/3Z2dv/3+Pj/9/f3/wAA 573 | AGAAAAAgAAAAAAAAAADW1tb/+/v7//v7+/+Tk5P/kpKS/5GRkf+Ojo7/iIiI//r7+/+Tk5P/kpKS/5GR 574 | kf+Ojo7/iIiI//n6+v+Tk5P/kpKS/5GRkf+Ojo7/iIiI//j5+f+Tk5P/kpKS/5GRkf+Ojo7/iIiI//f4 575 | +P/3+Pj/AAAAYAAAACAAAAAAAAAAANbW1v/7+/v/+/v7//v7+//7+/v/1tbW//v7+//7+/v/+/v7//r7 576 | +//6+/v/1tbW//r6+v/6+vr/+fr6//n6+v/5+vr/1tbW//n5+f/4+fn/+Pn5//j5+f/4+fn/1tbW//j4 577 | +P/3+Pj/9/j4//f4+P8AAABgAAAAIAAAAAAAAAAA1tbW//v8/P/7+/v/+/z8//v7+//W1tb/1tbW/9bW 578 | 1v/W1tb/1tbW/9bW1v/W1tb/+vr6//r6+v/6+vr/+fr6//n6+v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW 579 | 1v/W1tb/+Pj4//j4+P/3+Pj/9/j4/wAAAGAAAAAgAAAAAAAAAADW1tb/+/z8//v8/P/7/Pz/+/z8//v8 580 | /P/7/Pz/+/v7/9bW1v/7+/v/+/v7//r7+//6+/v/+vr6//r6+v/6+vr/+fr6//n6+v/5+vr/+fn5/9bW 581 | 1v/5+fn/+Pn5//j5+f/4+fn/+Pj4//j4+P/3+Pj/AAAAYAAAACAAAAAAAAAAANbW1v/8/Pz//Pz8//z8 582 | /P/8/Pz//Pz8/3Z2dv9paWn/Y2Nj/11dXf9cXFz/+/v7//r7+//6+/v/+vv7//r6+v/6+vr/+vr6/3Z2 583 | dv9paWn/Y2Nj/11dXf9cXFz/+Pn5//j5+f/4+fn/+Pn5//j4+P8AAABgAAAAIAAAAAAAAAAA1tbW//z8 584 | /P/8/Pz//Pz8//z8/P/8/Pz/gICA//b29v/r6+v/39/f/1xcXP/7+/v/+/v7//v7+//6+/v/+vv7//r6 585 | +v/6+vr/gICA//b29v/r6+v/39/f/1xcXP/5+fn/+Pn5//j5+f/4+fn/+Pn5/wAAAGAAAAAgAAAAAAAA 586 | AADW1tb//Pz8//z8/P/8/Pz//Pz8//z8/P+FhYX/6+vr/9/f3//S0tL/Y2Nj//v7+//7+/v/+/v7//v7 587 | +//6+/v/+vv7//r6+v+FhYX/6+vr/9/f3//S0tL/Y2Nj//n5+f/5+fn/+Pn5//j5+f/4+fn/AAAAYAAA 588 | ACAAAAAAAAAAANbW1v/8/f3//Pz8//z9/f/8/Pz//P39/4qKiv/f39//0tLS/8fHx/92dnb/+/z8//v7 589 | +//7+/v/+/v7//v7+//6+/v/+vv7/4qKiv/f39//0tLS/8fHx/92dnb/+fr6//n5+f/5+fn/+fn5//j5 590 | +f8AAABgAAAAIAAAAAAAAAAA1tbW//39/f/8/f3//f39//z9/f/9/f3/k5OT/5KSkv+RkZH/jo6O/4iI 591 | iP/8/Pz/+/z8//v8/P/7+/v/+/v7//v7+//6+/v/k5OT/5KSkv+RkZH/jo6O/4iIiP/5+vr/+fr6//n6 592 | +v/5+fn/+fn5/wAAAGAAAAAgAAAAAAAAAADW1tb//f39//39/f/9/f3//f39//39/f/9/f3//P39/9bW 593 | 1v/8/Pz//Pz8//z8/P/8/Pz/+/z8//v8/P/7+/v/+/v7//v7+//7+/v/+vv7/9bW1v/6+vr/+vr6//r6 594 | +v/5+vr/+fr6//n6+v/5+fn/AAAAYAAAACAAAAAAAAAAANbW1v/9/f3//f39//39/f/9/f3//f39//39 595 | /f/9/f3/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW//r7 596 | +//6+vr/+vr6//r6+v/5+vr/+fr6//n6+v8AAABgAAAAIAAAAAAAAAAA1tbW//39/f/9/f3//f39//39 597 | /f/9/f3//f39//39/f/9/f3//P39//z9/f/8/Pz//Pz8//z8/P/W1tb//Pz8//v8/P/7+/v/+/v7//v7 598 | +//7+/v/+vv7//r7+//6+vr/+vr6//r6+v/5+vr/1NTU/wAAAGAAAAAgAAAAAAAAAADW1tb//f39//39 599 | /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//z9/f92dnb/aWlp/2NjY/9dXV3/XFxc//v8 600 | /P/7/Pz/+/v7//v7+//7+/v/+vv7//r7+//W1tb/zs7O/7+/v/+4uLj/AAAAVQAAABsAAAAAAAAAANbW 601 | 1v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39/4CAgP/29vb/6+vr/9/f 602 | 3/9cXFz//Pz8//v8/P/7/Pz/+/v7//v7+/+ysrL/q6ur/6mpqf+pqan/r6+v/7i4uP4AAAA3AAAADgAA 603 | AAAAAAAA1tbW//7+/v/9/f3//v7+//39/f/+/v7//f39//39/f/9/f3//f39//39/f/9/f3/hYWF/+vr 604 | 6//f39//0tLS/2NjY//8/Pz//Pz8//v8/P/7/Pz/+/v7/8bGxv/19fX/9PT0/+Pj4/+8vLz+ZGRkhAAA 605 | ABQAAAADAAAAAAAAAADW1tb//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f7+//39/f/9/f3//f39//39 606 | /f+Kior/39/f/9LS0v/Hx8f/dnZ2//z8/P/8/Pz//Pz8//z8/P/7/Pz/zs7O//r6+v/r6+v/ysrK/m1t 607 | bX8AAAAXAAAAAwAAAAAAAAAAAAAAANbW1v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f7+//39 608 | /f/9/f3//f39/5OTk/+SkpL/kZGR/46Ojv+IiIj//Pz8//z8/P/8/Pz//Pz8//z8/P/Nzc3/5OTk/8nJ 609 | yf5oaGh/AAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAA1tbW//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ 610 | /v/+/v7//f7+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/f3//Pz8//z8/P/8/Pz/6urq/8PD 611 | w//Hx8f+ZWVlfgAAABcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAADW1tb//v7+//7+/v/+/v7//v7+//7+ 612 | /v/+/v7//v7+//7+/v/+/v7//v7+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/f3//Pz8//z8 613 | /P/c3Nz/v7+//mtra4IAAAAZAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbW1v/W1tb/1tbW/9bW 614 | 1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW 615 | 1v/W1tb/1tbW/8zMzPiCgoJvAAAAEgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 616 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 617 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// 618 | ////////gAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA 619 | AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA4AAAAeAAAAPgAAAH4AA 620 | AD//////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 621 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6enr/enp6/3p6 622 | ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3p6ev8AAAAAhoaG//Dw 623 | 8v/w8PL/8PDy//Hx8//x8vP/8vL0//Pz9P/z9PX/9PX2//X19//29vf/9/f4//f4+f+Ghob/AAAAAJCQ 624 | kP/x8fP/8fHz//Hx8//x8vP/8vL0//Pz9f/z9PX/9PX2//X19//29vf/9/f4//f4+f/4+fr/kJCQ/wAA 625 | AACdnZ3/8vLz/3Z2dv9ubm7/ZGRk//Pz9f92dnb/bm5u/2RkZP/29vf/dnZ2/25ubv9kZGT/+fr6/52d 626 | nf8AAAAArKys//Ly9P+Kior/9PT0/3t7e//09PX/ioqK//T09P97e3v/9/f4/4qKiv/09PT/e3t7//r7 627 | +/+srKz/AAAAAK2trf/z8/X/k5OT/5CQkP+IiIj/9PX2/5OTk/+QkJD/iIiI//j4+f+Tk5P/kJCQ/4iI 628 | iP/7+/z/ra2t/wAAAACxsbH/9PT2//T09v/Nzc3/9fX2//X29//29/j/zc3N//j4+f/5+fr/+fr7/83N 629 | zf/7/Pz/+/z8/7Gxsf8AAAAAs7Oz//X19v/19fb/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83N 630 | zf/Nzc3/+/z9//z9/f+zs7P/AAAAALq6uv/3+Pn/9/j5//f4+f/4+fr/+fr6//r6+//Nzc3/+/z8//z9 631 | /f/8/f3//P39//3+/v/9/v7/uLi4/wAAAAC8vLz/+Pn6//j5+v/4+fr/+fr6//r6+/92dnb/bm5u/2Rk 632 | ZP/8/f3//f7+//3+/v/l5eb/39/g/7q6uv8AAAAAvb29//n6+v/5+vr/+fr6//r7+//7+/z/ioqK//T0 633 | 9P97e3v//f7+//3+/v+6urr/uLi4/7i4uP+6urr/AAAAAL+/v//6+/v/+vv7//r7+//7+/z/+/z8/5OT 634 | k/+QkJD/iIiI//3+/v/9/v7/xcXF//b29v+6urr/3d3dmwAAAADAwMD/+/v8//v7/P/7+/z/+/z8//z9 635 | /f/8/f3//f7+//3+/v/7/Pz//f7+/8rKyv+6urr/4+XipwAAAAAAAAAAwMDA/8DAwP/AwMD/wMDA/8DA 636 | wP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP+/v7//9fX1uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 637 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAEAAAAB 638 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAAHAAD//wAA 639 | 640 | 641 | 642 | ADReplStatus Port Tester 643 | 644 | 645 | PortTester 646 | 647 | 648 | System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 649 | 650 | -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace ADReplStatus 8 | { 9 | internal static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | if (!System.IO.File.Exists("ObjectListView.dll")) 18 | { 19 | MessageBox.Show("Could not find ObjectListView.dll. Make sure the file resides in the same directory as this executable.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 20 | 21 | return; 22 | } 23 | 24 | Application.EnableVisualStyles(); 25 | Application.SetCompatibleTextRenderingDefault(false); 26 | Application.Run(new ADReplStatusForm()); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ADReplStatus")] 9 | [assembly: AssemblyDescription("Active Directory Replication Status Tool")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ADReplStatus")] 13 | [assembly: AssemblyCopyright("Copyright © Joseph Ryan Ries 2023")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("af7ee9dd-d7c5-409c-a1e9-78e1078f6a89")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.3.1.0")] 36 | [assembly: AssemblyFileVersion("1.3.1.0")] 37 | -------------------------------------------------------------------------------- /Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ADReplStatus.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ADReplStatus.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized resource of type System.Drawing.Bitmap. 65 | /// 66 | internal static System.Drawing.Bitmap DomainController { 67 | get { 68 | object obj = ResourceManager.GetObject("DomainController", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\images\DomainController.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | -------------------------------------------------------------------------------- /Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ADReplStatus.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ADReplStatus 2 | 3 | Active Directory Replication Status Tool, aka ADREPLSTATUS 4 | 5 | Joseph Ryan Ries - 2023 6 | 7 | GitHub all releases 8 | 9 | 10 | **This project is NOT supported or endorsed by Microsoft. I work for Microsoft, but this is a personal project.** 11 | 12 | **This tool is still very early in development. Right now I need beta testers to report bugs, submit feature requests, and send me screenshots of ADREPLSTATUS that I can post here in this README to spruce up the page.** 13 | 14 | I am rebuilding the AD Replication Status Tool. Here are my reasons: 15 | 16 | - The old version of the tool had a time bomb in it - an expiring SSL certificate - that rendered the app 17 | unusable sometime around September 2022. Only through great effort internally were we able to periodically renew 18 | this certificate and republish the app, and the app was architected in such a way that excising the signing 19 | certificate check was more work than just rewriting the whole thing. (I know about the Sirona DLL hack, but still.) 20 | 21 | - The old tool had no active maintainers and no one who was still around was familiar with the app's internals or source code. 22 | 23 | - The old tool was showing its age... I mean, that Office-style ribbon was straight out of the Windows Vista era, was it not? 24 | Plus it contained a bunch of outdated TechNet links. You might argue that WinForms is similarly old-fashioned, but I just so 25 | happen to think WinForms is and always was PEAK Windows UI. 26 | 27 | - Now we can maintain and improve this tool together. The Active Directory community. 28 | 29 | Here are some screenshots of what the tool looks like currently: 30 | 31 | ![screenshot1](https://user-images.githubusercontent.com/15063294/212465477-8f244640-6796-4afb-ba9a-1b98acda279c.png) 32 | 33 | ![screenshot2](https://user-images.githubusercontent.com/29166333/212477765-3e4b714d-2ae0-4c78-b73e-cf13671f8eb5.png) 34 | 35 | ![screenshot3](screenshot01.png) 36 | 37 | ![screenshot4](screenshot02.png) 38 | 39 | ![screenshot5](screenshot03.png) 40 | 41 | ![screenshot6](screenshot04.png) 42 | 43 | This project currently targets .NET Framework 4.8. 44 | 45 | This project uses ObjectListView.Official 2.9.1 by Phillip Piper. This can be installed as a NuGet package directly from within 46 | the Visual Studio IDE, (which is what I did,) and it can also be downloaded separately here: https://objectlistview.sourceforge.net/cs/index.html 47 | -------------------------------------------------------------------------------- /SetForestNameForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ADReplStatus 2 | { 3 | partial class SetForestNameForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetForestNameForm)); 32 | this.EnterForestNameLabel = new System.Windows.Forms.Label(); 33 | this.SetForestNameTextBox = new System.Windows.Forms.TextBox(); 34 | this.SetForestNameButton = new System.Windows.Forms.Button(); 35 | this.SaveForestCheckBox = new System.Windows.Forms.CheckBox(); 36 | this.SuspendLayout(); 37 | // 38 | // EnterForestNameLabel 39 | // 40 | this.EnterForestNameLabel.AutoSize = true; 41 | this.EnterForestNameLabel.Location = new System.Drawing.Point(12, 9); 42 | this.EnterForestNameLabel.Name = "EnterForestNameLabel"; 43 | this.EnterForestNameLabel.Size = new System.Drawing.Size(303, 13); 44 | this.EnterForestNameLabel.TabIndex = 0; 45 | this.EnterForestNameLabel.Text = "Enter the name of the Active Directory forest you want to scan:"; 46 | // 47 | // SetForestNameTextBox 48 | // 49 | this.SetForestNameTextBox.Location = new System.Drawing.Point(13, 29); 50 | this.SetForestNameTextBox.Name = "SetForestNameTextBox"; 51 | this.SetForestNameTextBox.Size = new System.Drawing.Size(240, 20); 52 | this.SetForestNameTextBox.TabIndex = 1; 53 | // 54 | // SetForestNameButton 55 | // 56 | this.SetForestNameButton.Location = new System.Drawing.Point(322, 29); 57 | this.SetForestNameButton.Name = "SetForestNameButton"; 58 | this.SetForestNameButton.Size = new System.Drawing.Size(75, 23); 59 | this.SetForestNameButton.TabIndex = 2; 60 | this.SetForestNameButton.Text = "OK"; 61 | this.SetForestNameButton.UseVisualStyleBackColor = true; 62 | this.SetForestNameButton.Click += new System.EventHandler(this.SetForestNameButton_Click); 63 | // 64 | // SaveForestCheckBox 65 | // 66 | this.SaveForestCheckBox.AutoSize = true; 67 | this.SaveForestCheckBox.Location = new System.Drawing.Point(15, 56); 68 | this.SaveForestCheckBox.Name = "SaveForestCheckBox"; 69 | this.SaveForestCheckBox.Size = new System.Drawing.Size(51, 17); 70 | this.SaveForestCheckBox.TabIndex = 3; 71 | this.SaveForestCheckBox.Text = "Save"; 72 | this.SaveForestCheckBox.UseVisualStyleBackColor = true; 73 | // 74 | // SetForestNameForm 75 | // 76 | this.AcceptButton = this.SetForestNameButton; 77 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 78 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 79 | this.ClientSize = new System.Drawing.Size(406, 83); 80 | this.Controls.Add(this.SaveForestCheckBox); 81 | this.Controls.Add(this.SetForestNameButton); 82 | this.Controls.Add(this.SetForestNameTextBox); 83 | this.Controls.Add(this.EnterForestNameLabel); 84 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; 85 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 86 | this.MaximizeBox = false; 87 | this.MinimizeBox = false; 88 | this.Name = "SetForestNameForm"; 89 | this.ShowInTaskbar = false; 90 | this.Text = "Enter AD Forest Name"; 91 | this.Load += new System.EventHandler(this.SetForestNameForm_Load); 92 | this.ResumeLayout(false); 93 | this.PerformLayout(); 94 | 95 | } 96 | 97 | #endregion 98 | 99 | private System.Windows.Forms.Label EnterForestNameLabel; 100 | private System.Windows.Forms.TextBox SetForestNameTextBox; 101 | private System.Windows.Forms.Button SetForestNameButton; 102 | private System.Windows.Forms.CheckBox SaveForestCheckBox; 103 | } 104 | } -------------------------------------------------------------------------------- /SetForestNameForm.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Data; 6 | using System.Drawing; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace ADReplStatus 13 | { 14 | public partial class SetForestNameForm : Form 15 | { 16 | public SetForestNameForm() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void SetForestNameForm_Load(object sender, EventArgs e) 22 | { 23 | if (ADReplStatusForm.gDarkMode == true) 24 | { 25 | this.BackColor = Color.FromArgb(32, 32, 32); 26 | 27 | EnterForestNameLabel.BackColor = Color.FromArgb(32, 32, 32); 28 | 29 | EnterForestNameLabel.ForeColor = Color.White; 30 | 31 | SetForestNameTextBox.BackColor = Color.FromArgb(32, 32, 32); 32 | 33 | SetForestNameTextBox.ForeColor = Color.White; 34 | 35 | SetForestNameButton.BackColor = Color.FromArgb(32, 32, 32); 36 | 37 | SetForestNameButton.ForeColor = Color.White; 38 | 39 | SaveForestCheckBox.ForeColor = Color.White; 40 | } 41 | } 42 | 43 | private void SetForestNameButton_Click(object sender, EventArgs e) 44 | { 45 | if (SetForestNameTextBox.Text.Length > 0) 46 | { 47 | ADReplStatusForm.gForestName = SetForestNameTextBox.Text; 48 | 49 | if (SaveForestCheckBox.Checked) 50 | { 51 | try 52 | { 53 | var key = Registry.CurrentUser.CreateSubKey("SOFTWARE\\ADREPLSTATUS", true); 54 | 55 | if (key != null) 56 | { 57 | key.SetValue("ForestName", SetForestNameTextBox.Text); 58 | 59 | key.Dispose(); 60 | } 61 | } 62 | catch (Exception ex) 63 | { 64 | string errorMessage = $"ERROR: Failed to write to the HKCU\\ADREPLSTATUS registry key!\n{ex.Message}\n"; 65 | 66 | MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 67 | 68 | if (ADReplStatusForm.gLoggingEnabled) 69 | { 70 | System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] {errorMessage}\n"); 71 | } 72 | } 73 | } 74 | 75 | if (ADReplStatusForm.gLoggingEnabled) 76 | { 77 | System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] Forest name set to: {ADReplStatusForm.gForestName}\n"); 78 | } 79 | 80 | this.Dispose(); 81 | } 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /SetForestNameForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | AAABAAYAICAQAAEABADoAgAAZgAAABAQEAABAAQAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA 124 | CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA 125 | AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA 126 | /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP/////////////////wAAj///////////////// 128 | 8AAP//////+P/4/4/4/4//AACP93Bzh3dw93dz93dw/wAAj/f/h/eI9/eIh4eI9/8AAP/3j4eH/4eH/4 129 | f3+IePAACP94iH94iH9/iH94+H/wAAj/eHd/eHd/d3d/eHd/8AAP//+P//+P//////+P//AACP//j4j4 130 | ////iIiI///wAAj////4///////////48AAP///3d3T////3d1L///AACP//94+D//+P94j3///wAAj/ 131 | //f4h/////f4h4/48AAP///3j4f/j//3j4f///AACP//93d3////93d3///wAAj///////////////// 132 | 8AAP////+IiIiIiIiP//+PAACP////////////////+AAAj///////d3V/////iIgAAP///////3j4L/ 133 | //eHiIAACP//////9/iH///4/4iAAAj///////ePh///+P+AAAAP///////3d3f///j4AAAACP////j/ 134 | //////+IgAAAAAj/////////////iIAAAAAPiIiIiIiIj4iIiPAAAAAAAAAAAAAAAAAAAAAAAAAAAP// 135 | //////////////////+AAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AA 136 | AAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAH4AAAD+AAAB/gAAAf4AA 137 | Af//////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA 138 | gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAHd3 139 | d3d3d3dwf/j//////3B///j4+P+PcH93f3d/d39wj3h4f3h/f4CId393f3d/cI/4//j/+P+Aj/iIiIiI 140 | /4CP///4////gI///3d///iAj///f3/4iICPj/93f/j4gI//////+IgAiIiIiIiI8AAAAAAAAAAAAP// 141 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAcAAP// 142 | AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAFxcXABjY2MAaWlpAHZ2 143 | dgCAgIAAhYWFAImJiQCOjo4AkpKSAKmpqQCurq4AsrKyALi4uAC+vr4Aw8PDAMbGxgDJyckAzc3NANLS 144 | 0gDV1dUA3t7eAOPj4wDk5OQA6urqAPX29gD3+PgA+fn5APv8/AD9/f0AAAAAAAAAAAAAAAAAAAAAAAAA 145 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 146 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 147 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 148 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 149 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 150 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 151 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 152 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 153 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 154 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 155 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 156 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 157 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 158 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 159 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA 160 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 161 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQbGxsb 162 | GxsbGxsbGhoaGhoaGhoaGhoaGhoaGhoAAAAAFBsbGxsbGxsbGxsbGxsbGxoaGhoaGhoaGhoaGgAAAAAU 163 | GxsbGxsbGxsbGxsbGxsbGxoaGhoaGhoaGhoaAAAAABQbGwQDAgEBGwQDAgEBGwQDAgEBGgQDAgEBGhoA 164 | AAAAFBsbBRoYFQEbBRoYFQEbBRoYFQEaBRoYFQEaGgAAAAAUGxsFGBUUAhsFGBUUAhsFGBUUAhsFGBUU 165 | AhoaAAAAABQbGwgVFBAEGwgVFBAEGwgVFBAEGwgVFBAEGhoAAAAAFBsbCQkJCAgbCQkJCAgaCQkJCAga 166 | CQkJCAUbGgAAAAAUGxsbGxUbGxsbGxQbGxsbGxQbGhobGxQbGxoaAAAAABUbGxsbFBQUFRQUFRobGxsb 167 | FBQUFBQUFBsbGhoAAAAAFBsbGxsbGxsUGxsbGxsbGxsbGxsUGxsbGxsbGgAAAAAUGxsbGxsFAwIBARsb 168 | GxsbGxsEAwIBARsbGxsbAAAAABUbGxsbGwUaGBUBGxsbGxsbGwUaGBUBGxsbGxsAAAAAFBsbGxsbCBgV 169 | FAIbGxsbGxsbCBgVFAIbGxsbGwAAAAAUGxsbGxsIFRQQBRsbGxsbGxsIFRQQBBsbGxsbAAAAABUbGxsb 170 | GwkJCQgFGxsbGxsbGwkJCAgIGhsbGxsAAAAAFBsbGxsbGxsUGxsbGxsbGxsbGxsVGhsbGxsbGwAAAAAU 171 | GxsbGxsbGxUUFRQVFBUUFRQVFBQbGxsbGxsbAAAAABUbGxsbGxsbGxsbGxsbFBsbGxsbGxsbGxsbGxQA 172 | AAAAFBsbGxsbGxsbGxsbBQMCAgEbGxsbGxsbFRIODQAAAAAUGxsbGxsbGxsbGxsFGhgVARsbGxsbDQsK 173 | CwsNAAAAABUbGxsbGxsbGxsbGwgYFRQCGxsbGxsSGhgVDQwAAAAAFBsbGxsbGxsbGxsbCBUUEAQbGxsb 174 | GxIbGBIAAAAAAAAUGxsbGxsbGxsbGxsJCQkICBsbGxsbFBUSAAAAAAAAABUbGxsbGxsbGxsbGxsbGxsb 175 | GxsbGxgQEgAAAAAAAAAAFBsbGxsbGxsbGxsbGxsbGxsbGxsbFQ0MAAAAAAAAAAAUFRQVFBUUFRQVFBUU 176 | FRQVFBUUFRQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////// 177 | ////////gAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AA 178 | AAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAB+AAAA/gAAAf4AAAH+AAAH//////ygA 179 | AAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAZGRkAG5ubgB2dnYAenp6AIaG 180 | hgCJiYkAkZGRAJ2dnQCsrKwAsrKyALm5uQC9vb0AwMDAAMXFxQDKysoAzc3NAN/f4ADl5eYA6urqAOzt 181 | 7ADw8fIA8vL0APP09QD09fUA9vf4APf4+QD5+foA+/v8APv8/AD+/v4AAAAAAAAAAAAAAAAAAAAAAAAA 182 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 184 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 185 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 186 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 187 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 188 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 189 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 190 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 192 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 193 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 194 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 195 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 196 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAQE 197 | BAQEBAQEBAQEBAQEBAAFFRUVFRUVFRUZFRoZGgUABxUVFRUVGRUaGRoZGhoHAAgVAwIBFQQCARUEAgEa 198 | CAAJFQYVBBUGFQQaBhUEGgkACRUHBwYaBwcGGgcHBhoKAAoZGRAZGRoQGhoaEBoaCgAKFRoQEBAQEBAQ 199 | EBAaGgsADBoZGhoaGhAaGhoaGhoMAAwaGhoaGgQCARoaGhQRDAAMGhoaGhoGGQQaGg0LCwwADBoaGhoa 200 | CAcGGhoQFQwSAA0aGhoaGhoaGhoaEAwUAAANDQ4ODQ4ODQ4ODQ0ZAAAAAAAAAAAAAAAAAAAAAAAAAP// 201 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAcAAP// 202 | AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 203 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 204 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 205 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 206 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 207 | AAAAAAAIAAAAGAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA 208 | ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAGAAA 209 | AAgAAAAAAAAAAAAAABgAAABIAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAA 210 | AGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAA 211 | AGAAAABIAAAAGAAAAAAAAAAA1tbW//j5+f/4+fn/+Pn5//j5+f/4+fn/+Pn5//j5+f/4+fn/+Pj4//j4 212 | +P/3+Pj/9/j4//f4+P/3+Pj/9/j4//f39//29/f/9vf3//b39//29/f/9vf3//b39//29/f/9fb2//X2 213 | 9v/19vb/9fb2/wAAAGAAAAAgAAAAAAAAAADW1tb/+fr6//n6+v/5+vr/+fr6//n6+v/5+vr/+fr6//n5 214 | +f/5+fn/+Pn5//j5+f/4+fn/+Pn5//j4+P/4+Pj/9/j4//f4+P/3+Pj/9/j4//f4+P/39/f/9vf3//b3 215 | 9//29/f/9vf3//b39//29/f/AAAAYAAAACAAAAAAAAAAANbW1v/6+vr/+fr6//r6+v/5+vr/+vr6//n6 216 | +v/5+vr/+fr6//n5+f/5+fn/+fn5//j5+f/4+fn/+Pn5//j4+P/4+Pj/9/j4//f4+P/3+Pj/9/j4//f4 217 | +P/39/f/9vf3//b39//29/f/9vf3//b39/8AAABgAAAAIAAAAAAAAAAA1tbW//r6+v/6+vr/dnZ2/2lp 218 | af9jY2P/XV1d/1xcXP/5+vr/dnZ2/2lpaf9jY2P/XV1d/1xcXP/4+fn/dnZ2/2lpaf9jY2P/XV1d/1xc 219 | XP/3+Pj/dnZ2/2lpaf9jY2P/XV1d/1xcXP/29/f/9vf3/wAAAGAAAAAgAAAAAAAAAADW1tb/+vv7//r6 220 | +v+AgID/9vb2/+vr6//f39//XFxc//r6+v+AgID/9vb2/+vr6//f39//XFxc//j5+f+AgID/9vb2/+vr 221 | 6//f39//XFxc//f4+P+AgID/9vb2/+vr6//f39//XFxc//b39//29/f/AAAAYAAAACAAAAAAAAAAANbW 222 | 1v/6+/v/+vv7/4WFhf/r6+v/39/f/9LS0v9jY2P/+vr6/4WFhf/r6+v/39/f/9LS0v9jY2P/+fn5/4WF 223 | hf/r6+v/39/f/9LS0v9jY2P/+Pj4/4WFhf/r6+v/39/f/9LS0v9jY2P/9/f3//b39/8AAABgAAAAIAAA 224 | AAAAAAAA1tbW//v7+//6+/v/ioqK/9/f3//S0tL/x8fH/3Z2dv/6+vr/ioqK/9/f3//S0tL/x8fH/3Z2 225 | dv/5+fn/ioqK/9/f3//S0tL/x8fH/3Z2dv/4+Pj/ioqK/9/f3//S0tL/x8fH/3Z2dv/3+Pj/9/f3/wAA 226 | AGAAAAAgAAAAAAAAAADW1tb/+/v7//v7+/+Tk5P/kpKS/5GRkf+Ojo7/iIiI//r7+/+Tk5P/kpKS/5GR 227 | kf+Ojo7/iIiI//n6+v+Tk5P/kpKS/5GRkf+Ojo7/iIiI//j5+f+Tk5P/kpKS/5GRkf+Ojo7/iIiI//f4 228 | +P/3+Pj/AAAAYAAAACAAAAAAAAAAANbW1v/7+/v/+/v7//v7+//7+/v/1tbW//v7+//7+/v/+/v7//r7 229 | +//6+/v/1tbW//r6+v/6+vr/+fr6//n6+v/5+vr/1tbW//n5+f/4+fn/+Pn5//j5+f/4+fn/1tbW//j4 230 | +P/3+Pj/9/j4//f4+P8AAABgAAAAIAAAAAAAAAAA1tbW//v8/P/7+/v/+/z8//v7+//W1tb/1tbW/9bW 231 | 1v/W1tb/1tbW/9bW1v/W1tb/+vr6//r6+v/6+vr/+fr6//n6+v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW 232 | 1v/W1tb/+Pj4//j4+P/3+Pj/9/j4/wAAAGAAAAAgAAAAAAAAAADW1tb/+/z8//v8/P/7/Pz/+/z8//v8 233 | /P/7/Pz/+/v7/9bW1v/7+/v/+/v7//r7+//6+/v/+vr6//r6+v/6+vr/+fr6//n6+v/5+vr/+fn5/9bW 234 | 1v/5+fn/+Pn5//j5+f/4+fn/+Pj4//j4+P/3+Pj/AAAAYAAAACAAAAAAAAAAANbW1v/8/Pz//Pz8//z8 235 | /P/8/Pz//Pz8/3Z2dv9paWn/Y2Nj/11dXf9cXFz/+/v7//r7+//6+/v/+vv7//r6+v/6+vr/+vr6/3Z2 236 | dv9paWn/Y2Nj/11dXf9cXFz/+Pn5//j5+f/4+fn/+Pn5//j4+P8AAABgAAAAIAAAAAAAAAAA1tbW//z8 237 | /P/8/Pz//Pz8//z8/P/8/Pz/gICA//b29v/r6+v/39/f/1xcXP/7+/v/+/v7//v7+//6+/v/+vv7//r6 238 | +v/6+vr/gICA//b29v/r6+v/39/f/1xcXP/5+fn/+Pn5//j5+f/4+fn/+Pn5/wAAAGAAAAAgAAAAAAAA 239 | AADW1tb//Pz8//z8/P/8/Pz//Pz8//z8/P+FhYX/6+vr/9/f3//S0tL/Y2Nj//v7+//7+/v/+/v7//v7 240 | +//6+/v/+vv7//r6+v+FhYX/6+vr/9/f3//S0tL/Y2Nj//n5+f/5+fn/+Pn5//j5+f/4+fn/AAAAYAAA 241 | ACAAAAAAAAAAANbW1v/8/f3//Pz8//z9/f/8/Pz//P39/4qKiv/f39//0tLS/8fHx/92dnb/+/z8//v7 242 | +//7+/v/+/v7//v7+//6+/v/+vv7/4qKiv/f39//0tLS/8fHx/92dnb/+fr6//n5+f/5+fn/+fn5//j5 243 | +f8AAABgAAAAIAAAAAAAAAAA1tbW//39/f/8/f3//f39//z9/f/9/f3/k5OT/5KSkv+RkZH/jo6O/4iI 244 | iP/8/Pz/+/z8//v8/P/7+/v/+/v7//v7+//6+/v/k5OT/5KSkv+RkZH/jo6O/4iIiP/5+vr/+fr6//n6 245 | +v/5+fn/+fn5/wAAAGAAAAAgAAAAAAAAAADW1tb//f39//39/f/9/f3//f39//39/f/9/f3//P39/9bW 246 | 1v/8/Pz//Pz8//z8/P/8/Pz/+/z8//v8/P/7+/v/+/v7//v7+//7+/v/+vv7/9bW1v/6+vr/+vr6//r6 247 | +v/5+vr/+fr6//n6+v/5+fn/AAAAYAAAACAAAAAAAAAAANbW1v/9/f3//f39//39/f/9/f3//f39//39 248 | /f/9/f3/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW//r7 249 | +//6+vr/+vr6//r6+v/5+vr/+fr6//n6+v8AAABgAAAAIAAAAAAAAAAA1tbW//39/f/9/f3//f39//39 250 | /f/9/f3//f39//39/f/9/f3//P39//z9/f/8/Pz//Pz8//z8/P/W1tb//Pz8//v8/P/7+/v/+/v7//v7 251 | +//7+/v/+vv7//r7+//6+vr/+vr6//r6+v/5+vr/1NTU/wAAAGAAAAAgAAAAAAAAAADW1tb//f39//39 252 | /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//z9/f92dnb/aWlp/2NjY/9dXV3/XFxc//v8 253 | /P/7/Pz/+/v7//v7+//7+/v/+vv7//r7+//W1tb/zs7O/7+/v/+4uLj/AAAAVQAAABsAAAAAAAAAANbW 254 | 1v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39/4CAgP/29vb/6+vr/9/f 255 | 3/9cXFz//Pz8//v8/P/7/Pz/+/v7//v7+/+ysrL/q6ur/6mpqf+pqan/r6+v/7i4uP4AAAA3AAAADgAA 256 | AAAAAAAA1tbW//7+/v/9/f3//v7+//39/f/+/v7//f39//39/f/9/f3//f39//39/f/9/f3/hYWF/+vr 257 | 6//f39//0tLS/2NjY//8/Pz//Pz8//v8/P/7/Pz/+/v7/8bGxv/19fX/9PT0/+Pj4/+8vLz+ZGRkhAAA 258 | ABQAAAADAAAAAAAAAADW1tb//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f7+//39/f/9/f3//f39//39 259 | /f+Kior/39/f/9LS0v/Hx8f/dnZ2//z8/P/8/Pz//Pz8//z8/P/7/Pz/zs7O//r6+v/r6+v/ysrK/m1t 260 | bX8AAAAXAAAAAwAAAAAAAAAAAAAAANbW1v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f7+//39 261 | /f/9/f3//f39/5OTk/+SkpL/kZGR/46Ojv+IiIj//Pz8//z8/P/8/Pz//Pz8//z8/P/Nzc3/5OTk/8nJ 262 | yf5oaGh/AAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAA1tbW//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ 263 | /v/+/v7//f7+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/f3//Pz8//z8/P/8/Pz/6urq/8PD 264 | w//Hx8f+ZWVlfgAAABcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAADW1tb//v7+//7+/v/+/v7//v7+//7+ 265 | /v/+/v7//v7+//7+/v/+/v7//v7+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/f3//Pz8//z8 266 | /P/c3Nz/v7+//mtra4IAAAAZAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbW1v/W1tb/1tbW/9bW 267 | 1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW 268 | 1v/W1tb/1tbW/8zMzPiCgoJvAAAAEgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 269 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 270 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// 271 | ////////gAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA 272 | AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA4AAAAeAAAAPgAAAH4AA 273 | AD//////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 274 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6enr/enp6/3p6 275 | ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3p6ev8AAAAAhoaG//Dw 276 | 8v/w8PL/8PDy//Hx8//x8vP/8vL0//Pz9P/z9PX/9PX2//X19//29vf/9/f4//f4+f+Ghob/AAAAAJCQ 277 | kP/x8fP/8fHz//Hx8//x8vP/8vL0//Pz9f/z9PX/9PX2//X19//29vf/9/f4//f4+f/4+fr/kJCQ/wAA 278 | AACdnZ3/8vLz/3Z2dv9ubm7/ZGRk//Pz9f92dnb/bm5u/2RkZP/29vf/dnZ2/25ubv9kZGT/+fr6/52d 279 | nf8AAAAArKys//Ly9P+Kior/9PT0/3t7e//09PX/ioqK//T09P97e3v/9/f4/4qKiv/09PT/e3t7//r7 280 | +/+srKz/AAAAAK2trf/z8/X/k5OT/5CQkP+IiIj/9PX2/5OTk/+QkJD/iIiI//j4+f+Tk5P/kJCQ/4iI 281 | iP/7+/z/ra2t/wAAAACxsbH/9PT2//T09v/Nzc3/9fX2//X29//29/j/zc3N//j4+f/5+fr/+fr7/83N 282 | zf/7/Pz/+/z8/7Gxsf8AAAAAs7Oz//X19v/19fb/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83N 283 | zf/Nzc3/+/z9//z9/f+zs7P/AAAAALq6uv/3+Pn/9/j5//f4+f/4+fr/+fr6//r6+//Nzc3/+/z8//z9 284 | /f/8/f3//P39//3+/v/9/v7/uLi4/wAAAAC8vLz/+Pn6//j5+v/4+fr/+fr6//r6+/92dnb/bm5u/2Rk 285 | ZP/8/f3//f7+//3+/v/l5eb/39/g/7q6uv8AAAAAvb29//n6+v/5+vr/+fr6//r7+//7+/z/ioqK//T0 286 | 9P97e3v//f7+//3+/v+6urr/uLi4/7i4uP+6urr/AAAAAL+/v//6+/v/+vv7//r7+//7+/z/+/z8/5OT 287 | k/+QkJD/iIiI//3+/v/9/v7/xcXF//b29v+6urr/3d3dmwAAAADAwMD/+/v8//v7/P/7+/z/+/z8//z9 288 | /f/8/f3//f7+//3+/v/7/Pz//f7+/8rKyv+6urr/4+XipwAAAAAAAAAAwMDA/8DAwP/AwMD/wMDA/8DA 289 | wP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP+/v7//9fX1uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 290 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAEAAAAB 291 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAAHAAD//wAA 292 | 293 | 294 | -------------------------------------------------------------------------------- /SetUserDomainControllerForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ADReplStatus 2 | { 3 | partial class SetUserDomainControllerForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetUserDomainControllerForm)); 32 | this.SetUserDomainControllerButton = new System.Windows.Forms.Button(); 33 | this.SetUserDomainControllerTextBox = new System.Windows.Forms.TextBox(); 34 | this.SetUserDomainControllerLabel = new System.Windows.Forms.Label(); 35 | this.SuspendLayout(); 36 | // 37 | // SetUserDomainControllerButton 38 | // 39 | this.SetUserDomainControllerButton.Location = new System.Drawing.Point(226, 25); 40 | this.SetUserDomainControllerButton.Name = "SetUserDomainControllerButton"; 41 | this.SetUserDomainControllerButton.Size = new System.Drawing.Size(75, 20); 42 | this.SetUserDomainControllerButton.TabIndex = 3; 43 | this.SetUserDomainControllerButton.Text = "Set"; 44 | this.SetUserDomainControllerButton.UseVisualStyleBackColor = true; 45 | this.SetUserDomainControllerButton.Click += new System.EventHandler(this.SetForestNameButton_Click); 46 | // 47 | // SetUserDomainControllerTextBox 48 | // 49 | this.SetUserDomainControllerTextBox.Location = new System.Drawing.Point(15, 25); 50 | this.SetUserDomainControllerTextBox.Name = "SetUserDomainControllerTextBox"; 51 | this.SetUserDomainControllerTextBox.Size = new System.Drawing.Size(205, 20); 52 | this.SetUserDomainControllerTextBox.TabIndex = 4; 53 | this.SetUserDomainControllerTextBox.Text = "DC1.contoso.com"; 54 | this.SetUserDomainControllerTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SetUserDomainControllerTextBox_KeyDown); 55 | 56 | // 57 | // SetUserDomainControllerLabel 58 | // 59 | this.SetUserDomainControllerLabel.AutoSize = true; 60 | this.SetUserDomainControllerLabel.Location = new System.Drawing.Point(12, 9); 61 | this.SetUserDomainControllerLabel.Name = "SetUserDomainControllerLabel"; 62 | this.SetUserDomainControllerLabel.Size = new System.Drawing.Size(137, 13); 63 | this.SetUserDomainControllerLabel.TabIndex = 5; 64 | this.SetUserDomainControllerLabel.Text = "Specify a domain controller:"; 65 | // 66 | // SetUserDomainControllerForm 67 | // 68 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 69 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 70 | this.ClientSize = new System.Drawing.Size(303, 50); 71 | this.Controls.Add(this.SetUserDomainControllerLabel); 72 | this.Controls.Add(this.SetUserDomainControllerTextBox); 73 | this.Controls.Add(this.SetUserDomainControllerButton); 74 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 75 | this.Name = "SetUserDomainControllerForm"; 76 | this.Text = "Set Domain Controller"; 77 | this.Load += new System.EventHandler(this.SetUserDomainControllerForm_Load); 78 | this.ResumeLayout(false); 79 | this.PerformLayout(); 80 | 81 | } 82 | 83 | #endregion 84 | 85 | private System.Windows.Forms.Button SetUserDomainControllerButton; 86 | private System.Windows.Forms.TextBox SetUserDomainControllerTextBox; 87 | private System.Windows.Forms.Label SetUserDomainControllerLabel; 88 | } 89 | } -------------------------------------------------------------------------------- /SetUserDomainControllerForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace ADReplStatus 12 | { 13 | public partial class SetUserDomainControllerForm : Form 14 | { 15 | public SetUserDomainControllerForm() 16 | { 17 | InitializeComponent(); 18 | } 19 | 20 | private void SetForestNameButton_Click(object sender, EventArgs e) 21 | { 22 | 23 | if (ADReplStatusForm.gUseUserDomainController) 24 | { 25 | //The user cleared out the input box and clicked set 26 | if(SetUserDomainControllerTextBox.Text.Length < 1) 27 | { 28 | if (ADReplStatusForm.gLoggingEnabled) 29 | { 30 | System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] Clearing user specified domain controller and disabling global. Previous value:{ADReplStatusForm.gUserDomainController}\n"); 31 | } 32 | 33 | ADReplStatusForm.gUseUserDomainController = false; 34 | } 35 | else 36 | { 37 | if (ADReplStatusForm.gLoggingEnabled) 38 | { 39 | System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] Changing user specified domain controller to {SetUserDomainControllerTextBox.Text}\n"); 40 | } 41 | 42 | ADReplStatusForm.gUserDomainController = SetUserDomainControllerTextBox.Text; 43 | } 44 | 45 | this.Dispose(); 46 | return; 47 | } 48 | 49 | if (ADReplStatusForm.gLoggingEnabled) 50 | { 51 | System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] Setting user specified domain controller to {SetUserDomainControllerTextBox.Text} and enabling global.\n"); 52 | } 53 | 54 | ADReplStatusForm.gUseUserDomainController = true; 55 | ADReplStatusForm.gUserDomainController = SetUserDomainControllerTextBox.Text; 56 | 57 | this.Dispose(); 58 | return; 59 | } 60 | 61 | private void SetUserDomainControllerForm_Load(object sender, EventArgs e) 62 | { 63 | if(ADReplStatusForm.gUseUserDomainController) 64 | { 65 | SetUserDomainControllerTextBox.Text = ADReplStatusForm.gUserDomainController; 66 | } 67 | else 68 | { 69 | SetUserDomainControllerTextBox.Text = string.Empty; 70 | } 71 | } 72 | 73 | private void SetUserDomainControllerTextBox_KeyDown(object sender, KeyEventArgs e) 74 | { 75 | if (e.KeyCode == Keys.Enter) 76 | { 77 | SetForestNameButton_Click(this, new EventArgs()); 78 | } 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /SetUserDomainControllerForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | AAABAAYAICAQAAEABADoAgAAZgAAABAQEAABAAQAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA 124 | CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA 125 | AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA 126 | /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP/////////////////wAAj///////////////// 128 | 8AAP//////+P/4/4/4/4//AACP93Bzh3dw93dz93dw/wAAj/f/h/eI9/eIh4eI9/8AAP/3j4eH/4eH/4 129 | f3+IePAACP94iH94iH9/iH94+H/wAAj/eHd/eHd/d3d/eHd/8AAP//+P//+P//////+P//AACP//j4j4 130 | ////iIiI///wAAj////4///////////48AAP///3d3T////3d1L///AACP//94+D//+P94j3///wAAj/ 131 | //f4h/////f4h4/48AAP///3j4f/j//3j4f///AACP//93d3////93d3///wAAj///////////////// 132 | 8AAP////+IiIiIiIiP//+PAACP////////////////+AAAj///////d3V/////iIgAAP///////3j4L/ 133 | //eHiIAACP//////9/iH///4/4iAAAj///////ePh///+P+AAAAP///////3d3f///j4AAAACP////j/ 134 | //////+IgAAAAAj/////////////iIAAAAAPiIiIiIiIj4iIiPAAAAAAAAAAAAAAAAAAAAAAAAAAAP// 135 | //////////////////+AAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AA 136 | AAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAH4AAAD+AAAB/gAAAf4AA 137 | Af//////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA 138 | gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAHd3 139 | d3d3d3dwf/j//////3B///j4+P+PcH93f3d/d39wj3h4f3h/f4CId393f3d/cI/4//j/+P+Aj/iIiIiI 140 | /4CP///4////gI///3d///iAj///f3/4iICPj/93f/j4gI//////+IgAiIiIiIiI8AAAAAAAAAAAAP// 141 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAcAAP// 142 | AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAFxcXABjY2MAaWlpAHZ2 143 | dgCAgIAAhYWFAImJiQCOjo4AkpKSAKmpqQCurq4AsrKyALi4uAC+vr4Aw8PDAMbGxgDJyckAzc3NANLS 144 | 0gDV1dUA3t7eAOPj4wDk5OQA6urqAPX29gD3+PgA+fn5APv8/AD9/f0AAAAAAAAAAAAAAAAAAAAAAAAA 145 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 146 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 147 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 148 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 149 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 150 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 151 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 152 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 153 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 154 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 155 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 156 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 157 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 158 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 159 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA 160 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 161 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQbGxsb 162 | GxsbGxsbGhoaGhoaGhoaGhoaGhoaGhoAAAAAFBsbGxsbGxsbGxsbGxsbGxoaGhoaGhoaGhoaGgAAAAAU 163 | GxsbGxsbGxsbGxsbGxsbGxoaGhoaGhoaGhoaAAAAABQbGwQDAgEBGwQDAgEBGwQDAgEBGgQDAgEBGhoA 164 | AAAAFBsbBRoYFQEbBRoYFQEbBRoYFQEaBRoYFQEaGgAAAAAUGxsFGBUUAhsFGBUUAhsFGBUUAhsFGBUU 165 | AhoaAAAAABQbGwgVFBAEGwgVFBAEGwgVFBAEGwgVFBAEGhoAAAAAFBsbCQkJCAgbCQkJCAgaCQkJCAga 166 | CQkJCAUbGgAAAAAUGxsbGxUbGxsbGxQbGxsbGxQbGhobGxQbGxoaAAAAABUbGxsbFBQUFRQUFRobGxsb 167 | FBQUFBQUFBsbGhoAAAAAFBsbGxsbGxsUGxsbGxsbGxsbGxsUGxsbGxsbGgAAAAAUGxsbGxsFAwIBARsb 168 | GxsbGxsEAwIBARsbGxsbAAAAABUbGxsbGwUaGBUBGxsbGxsbGwUaGBUBGxsbGxsAAAAAFBsbGxsbCBgV 169 | FAIbGxsbGxsbCBgVFAIbGxsbGwAAAAAUGxsbGxsIFRQQBRsbGxsbGxsIFRQQBBsbGxsbAAAAABUbGxsb 170 | GwkJCQgFGxsbGxsbGwkJCAgIGhsbGxsAAAAAFBsbGxsbGxsUGxsbGxsbGxsbGxsVGhsbGxsbGwAAAAAU 171 | GxsbGxsbGxUUFRQVFBUUFRQVFBQbGxsbGxsbAAAAABUbGxsbGxsbGxsbGxsbFBsbGxsbGxsbGxsbGxQA 172 | AAAAFBsbGxsbGxsbGxsbBQMCAgEbGxsbGxsbFRIODQAAAAAUGxsbGxsbGxsbGxsFGhgVARsbGxsbDQsK 173 | CwsNAAAAABUbGxsbGxsbGxsbGwgYFRQCGxsbGxsSGhgVDQwAAAAAFBsbGxsbGxsbGxsbCBUUEAQbGxsb 174 | GxIbGBIAAAAAAAAUGxsbGxsbGxsbGxsJCQkICBsbGxsbFBUSAAAAAAAAABUbGxsbGxsbGxsbGxsbGxsb 175 | GxsbGxgQEgAAAAAAAAAAFBsbGxsbGxsbGxsbGxsbGxsbGxsbFQ0MAAAAAAAAAAAUFRQVFBUUFRQVFBUU 176 | FRQVFBUUFRQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////// 177 | ////////gAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AA 178 | AAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAB+AAAA/gAAAf4AAAH+AAAH//////ygA 179 | AAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAZGRkAG5ubgB2dnYAenp6AIaG 180 | hgCJiYkAkZGRAJ2dnQCsrKwAsrKyALm5uQC9vb0AwMDAAMXFxQDKysoAzc3NAN/f4ADl5eYA6urqAOzt 181 | 7ADw8fIA8vL0APP09QD09fUA9vf4APf4+QD5+foA+/v8APv8/AD+/v4AAAAAAAAAAAAAAAAAAAAAAAAA 182 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 184 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 185 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 186 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 187 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 188 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 189 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 190 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 192 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 193 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 194 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 195 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 196 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAQE 197 | BAQEBAQEBAQEBAQEBAAFFRUVFRUVFRUZFRoZGgUABxUVFRUVGRUaGRoZGhoHAAgVAwIBFQQCARUEAgEa 198 | CAAJFQYVBBUGFQQaBhUEGgkACRUHBwYaBwcGGgcHBhoKAAoZGRAZGRoQGhoaEBoaCgAKFRoQEBAQEBAQ 199 | EBAaGgsADBoZGhoaGhAaGhoaGhoMAAwaGhoaGgQCARoaGhQRDAAMGhoaGhoGGQQaGg0LCwwADBoaGhoa 200 | CAcGGhoQFQwSAA0aGhoaGhoaGhoaEAwUAAANDQ4ODQ4ODQ4ODQ0ZAAAAAAAAAAAAAAAAAAAAAAAAAP// 201 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAcAAP// 202 | AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 203 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 204 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 205 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 206 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 207 | AAAAAAAIAAAAGAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA 208 | ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAGAAA 209 | AAgAAAAAAAAAAAAAABgAAABIAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAA 210 | AGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAA 211 | AGAAAABIAAAAGAAAAAAAAAAA1tbW//j5+f/4+fn/+Pn5//j5+f/4+fn/+Pn5//j5+f/4+fn/+Pj4//j4 212 | +P/3+Pj/9/j4//f4+P/3+Pj/9/j4//f39//29/f/9vf3//b39//29/f/9vf3//b39//29/f/9fb2//X2 213 | 9v/19vb/9fb2/wAAAGAAAAAgAAAAAAAAAADW1tb/+fr6//n6+v/5+vr/+fr6//n6+v/5+vr/+fr6//n5 214 | +f/5+fn/+Pn5//j5+f/4+fn/+Pn5//j4+P/4+Pj/9/j4//f4+P/3+Pj/9/j4//f4+P/39/f/9vf3//b3 215 | 9//29/f/9vf3//b39//29/f/AAAAYAAAACAAAAAAAAAAANbW1v/6+vr/+fr6//r6+v/5+vr/+vr6//n6 216 | +v/5+vr/+fr6//n5+f/5+fn/+fn5//j5+f/4+fn/+Pn5//j4+P/4+Pj/9/j4//f4+P/3+Pj/9/j4//f4 217 | +P/39/f/9vf3//b39//29/f/9vf3//b39/8AAABgAAAAIAAAAAAAAAAA1tbW//r6+v/6+vr/dnZ2/2lp 218 | af9jY2P/XV1d/1xcXP/5+vr/dnZ2/2lpaf9jY2P/XV1d/1xcXP/4+fn/dnZ2/2lpaf9jY2P/XV1d/1xc 219 | XP/3+Pj/dnZ2/2lpaf9jY2P/XV1d/1xcXP/29/f/9vf3/wAAAGAAAAAgAAAAAAAAAADW1tb/+vv7//r6 220 | +v+AgID/9vb2/+vr6//f39//XFxc//r6+v+AgID/9vb2/+vr6//f39//XFxc//j5+f+AgID/9vb2/+vr 221 | 6//f39//XFxc//f4+P+AgID/9vb2/+vr6//f39//XFxc//b39//29/f/AAAAYAAAACAAAAAAAAAAANbW 222 | 1v/6+/v/+vv7/4WFhf/r6+v/39/f/9LS0v9jY2P/+vr6/4WFhf/r6+v/39/f/9LS0v9jY2P/+fn5/4WF 223 | hf/r6+v/39/f/9LS0v9jY2P/+Pj4/4WFhf/r6+v/39/f/9LS0v9jY2P/9/f3//b39/8AAABgAAAAIAAA 224 | AAAAAAAA1tbW//v7+//6+/v/ioqK/9/f3//S0tL/x8fH/3Z2dv/6+vr/ioqK/9/f3//S0tL/x8fH/3Z2 225 | dv/5+fn/ioqK/9/f3//S0tL/x8fH/3Z2dv/4+Pj/ioqK/9/f3//S0tL/x8fH/3Z2dv/3+Pj/9/f3/wAA 226 | AGAAAAAgAAAAAAAAAADW1tb/+/v7//v7+/+Tk5P/kpKS/5GRkf+Ojo7/iIiI//r7+/+Tk5P/kpKS/5GR 227 | kf+Ojo7/iIiI//n6+v+Tk5P/kpKS/5GRkf+Ojo7/iIiI//j5+f+Tk5P/kpKS/5GRkf+Ojo7/iIiI//f4 228 | +P/3+Pj/AAAAYAAAACAAAAAAAAAAANbW1v/7+/v/+/v7//v7+//7+/v/1tbW//v7+//7+/v/+/v7//r7 229 | +//6+/v/1tbW//r6+v/6+vr/+fr6//n6+v/5+vr/1tbW//n5+f/4+fn/+Pn5//j5+f/4+fn/1tbW//j4 230 | +P/3+Pj/9/j4//f4+P8AAABgAAAAIAAAAAAAAAAA1tbW//v8/P/7+/v/+/z8//v7+//W1tb/1tbW/9bW 231 | 1v/W1tb/1tbW/9bW1v/W1tb/+vr6//r6+v/6+vr/+fr6//n6+v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW 232 | 1v/W1tb/+Pj4//j4+P/3+Pj/9/j4/wAAAGAAAAAgAAAAAAAAAADW1tb/+/z8//v8/P/7/Pz/+/z8//v8 233 | /P/7/Pz/+/v7/9bW1v/7+/v/+/v7//r7+//6+/v/+vr6//r6+v/6+vr/+fr6//n6+v/5+vr/+fn5/9bW 234 | 1v/5+fn/+Pn5//j5+f/4+fn/+Pj4//j4+P/3+Pj/AAAAYAAAACAAAAAAAAAAANbW1v/8/Pz//Pz8//z8 235 | /P/8/Pz//Pz8/3Z2dv9paWn/Y2Nj/11dXf9cXFz/+/v7//r7+//6+/v/+vv7//r6+v/6+vr/+vr6/3Z2 236 | dv9paWn/Y2Nj/11dXf9cXFz/+Pn5//j5+f/4+fn/+Pn5//j4+P8AAABgAAAAIAAAAAAAAAAA1tbW//z8 237 | /P/8/Pz//Pz8//z8/P/8/Pz/gICA//b29v/r6+v/39/f/1xcXP/7+/v/+/v7//v7+//6+/v/+vv7//r6 238 | +v/6+vr/gICA//b29v/r6+v/39/f/1xcXP/5+fn/+Pn5//j5+f/4+fn/+Pn5/wAAAGAAAAAgAAAAAAAA 239 | AADW1tb//Pz8//z8/P/8/Pz//Pz8//z8/P+FhYX/6+vr/9/f3//S0tL/Y2Nj//v7+//7+/v/+/v7//v7 240 | +//6+/v/+vv7//r6+v+FhYX/6+vr/9/f3//S0tL/Y2Nj//n5+f/5+fn/+Pn5//j5+f/4+fn/AAAAYAAA 241 | ACAAAAAAAAAAANbW1v/8/f3//Pz8//z9/f/8/Pz//P39/4qKiv/f39//0tLS/8fHx/92dnb/+/z8//v7 242 | +//7+/v/+/v7//v7+//6+/v/+vv7/4qKiv/f39//0tLS/8fHx/92dnb/+fr6//n5+f/5+fn/+fn5//j5 243 | +f8AAABgAAAAIAAAAAAAAAAA1tbW//39/f/8/f3//f39//z9/f/9/f3/k5OT/5KSkv+RkZH/jo6O/4iI 244 | iP/8/Pz/+/z8//v8/P/7+/v/+/v7//v7+//6+/v/k5OT/5KSkv+RkZH/jo6O/4iIiP/5+vr/+fr6//n6 245 | +v/5+fn/+fn5/wAAAGAAAAAgAAAAAAAAAADW1tb//f39//39/f/9/f3//f39//39/f/9/f3//P39/9bW 246 | 1v/8/Pz//Pz8//z8/P/8/Pz/+/z8//v8/P/7+/v/+/v7//v7+//7+/v/+vv7/9bW1v/6+vr/+vr6//r6 247 | +v/5+vr/+fr6//n6+v/5+fn/AAAAYAAAACAAAAAAAAAAANbW1v/9/f3//f39//39/f/9/f3//f39//39 248 | /f/9/f3/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW//r7 249 | +//6+vr/+vr6//r6+v/5+vr/+fr6//n6+v8AAABgAAAAIAAAAAAAAAAA1tbW//39/f/9/f3//f39//39 250 | /f/9/f3//f39//39/f/9/f3//P39//z9/f/8/Pz//Pz8//z8/P/W1tb//Pz8//v8/P/7+/v/+/v7//v7 251 | +//7+/v/+vv7//r7+//6+vr/+vr6//r6+v/5+vr/1NTU/wAAAGAAAAAgAAAAAAAAAADW1tb//f39//39 252 | /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//z9/f92dnb/aWlp/2NjY/9dXV3/XFxc//v8 253 | /P/7/Pz/+/v7//v7+//7+/v/+vv7//r7+//W1tb/zs7O/7+/v/+4uLj/AAAAVQAAABsAAAAAAAAAANbW 254 | 1v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39/4CAgP/29vb/6+vr/9/f 255 | 3/9cXFz//Pz8//v8/P/7/Pz/+/v7//v7+/+ysrL/q6ur/6mpqf+pqan/r6+v/7i4uP4AAAA3AAAADgAA 256 | AAAAAAAA1tbW//7+/v/9/f3//v7+//39/f/+/v7//f39//39/f/9/f3//f39//39/f/9/f3/hYWF/+vr 257 | 6//f39//0tLS/2NjY//8/Pz//Pz8//v8/P/7/Pz/+/v7/8bGxv/19fX/9PT0/+Pj4/+8vLz+ZGRkhAAA 258 | ABQAAAADAAAAAAAAAADW1tb//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f7+//39/f/9/f3//f39//39 259 | /f+Kior/39/f/9LS0v/Hx8f/dnZ2//z8/P/8/Pz//Pz8//z8/P/7/Pz/zs7O//r6+v/r6+v/ysrK/m1t 260 | bX8AAAAXAAAAAwAAAAAAAAAAAAAAANbW1v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f7+//39 261 | /f/9/f3//f39/5OTk/+SkpL/kZGR/46Ojv+IiIj//Pz8//z8/P/8/Pz//Pz8//z8/P/Nzc3/5OTk/8nJ 262 | yf5oaGh/AAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAA1tbW//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ 263 | /v/+/v7//f7+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/f3//Pz8//z8/P/8/Pz/6urq/8PD 264 | w//Hx8f+ZWVlfgAAABcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAADW1tb//v7+//7+/v/+/v7//v7+//7+ 265 | /v/+/v7//v7+//7+/v/+/v7//v7+//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/f3//Pz8//z8 266 | /P/c3Nz/v7+//mtra4IAAAAZAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbW1v/W1tb/1tbW/9bW 267 | 1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW 268 | 1v/W1tb/1tbW/8zMzPiCgoJvAAAAEgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 269 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 270 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// 271 | ////////gAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA 272 | AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA4AAAAeAAAAPgAAAH4AA 273 | AD//////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 274 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6enr/enp6/3p6 275 | ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3p6ev8AAAAAhoaG//Dw 276 | 8v/w8PL/8PDy//Hx8//x8vP/8vL0//Pz9P/z9PX/9PX2//X19//29vf/9/f4//f4+f+Ghob/AAAAAJCQ 277 | kP/x8fP/8fHz//Hx8//x8vP/8vL0//Pz9f/z9PX/9PX2//X19//29vf/9/f4//f4+f/4+fr/kJCQ/wAA 278 | AACdnZ3/8vLz/3Z2dv9ubm7/ZGRk//Pz9f92dnb/bm5u/2RkZP/29vf/dnZ2/25ubv9kZGT/+fr6/52d 279 | nf8AAAAArKys//Ly9P+Kior/9PT0/3t7e//09PX/ioqK//T09P97e3v/9/f4/4qKiv/09PT/e3t7//r7 280 | +/+srKz/AAAAAK2trf/z8/X/k5OT/5CQkP+IiIj/9PX2/5OTk/+QkJD/iIiI//j4+f+Tk5P/kJCQ/4iI 281 | iP/7+/z/ra2t/wAAAACxsbH/9PT2//T09v/Nzc3/9fX2//X29//29/j/zc3N//j4+f/5+fr/+fr7/83N 282 | zf/7/Pz/+/z8/7Gxsf8AAAAAs7Oz//X19v/19fb/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83N 283 | zf/Nzc3/+/z9//z9/f+zs7P/AAAAALq6uv/3+Pn/9/j5//f4+f/4+fr/+fr6//r6+//Nzc3/+/z8//z9 284 | /f/8/f3//P39//3+/v/9/v7/uLi4/wAAAAC8vLz/+Pn6//j5+v/4+fr/+fr6//r6+/92dnb/bm5u/2Rk 285 | ZP/8/f3//f7+//3+/v/l5eb/39/g/7q6uv8AAAAAvb29//n6+v/5+vr/+fr6//r7+//7+/z/ioqK//T0 286 | 9P97e3v//f7+//3+/v+6urr/uLi4/7i4uP+6urr/AAAAAL+/v//6+/v/+vv7//r7+//7+/z/+/z8/5OT 287 | k/+QkJD/iIiI//3+/v/9/v7/xcXF//b29v+6urr/3d3dmwAAAADAwMD/+/v8//v7/P/7+/z/+/z8//z9 288 | /f/8/f3//f7+//3+/v/7/Pz//f7+/8rKyv+6urr/4+XipwAAAAAAAAAAwMDA/8DAwP/AwMD/wMDA/8DA 289 | wP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP+/v7//9fX1uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 290 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAEAAAAB 291 | AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAAHAAD//wAA 292 | 293 | 294 | -------------------------------------------------------------------------------- /images/Darkmode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/images/Darkmode.png -------------------------------------------------------------------------------- /images/DomainController.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/images/DomainController.png -------------------------------------------------------------------------------- /images/Error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/images/Error.png -------------------------------------------------------------------------------- /images/Forest.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/images/Forest.ico -------------------------------------------------------------------------------- /images/Forest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/images/Forest.png -------------------------------------------------------------------------------- /images/Go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/images/Go.png -------------------------------------------------------------------------------- /images/KeyLock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/images/KeyLock.png -------------------------------------------------------------------------------- /images/Logging.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/images/Logging.png -------------------------------------------------------------------------------- /packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /screenshot01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/screenshot01.png -------------------------------------------------------------------------------- /screenshot02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/screenshot02.png -------------------------------------------------------------------------------- /screenshot03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/screenshot03.png -------------------------------------------------------------------------------- /screenshot04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ryanries/ADReplStatus/f29710dcce76266e09d79413fd3e231d8aee269f/screenshot04.png --------------------------------------------------------------------------------