-
-
Save fourpastmidnight/1827bf8010b6fd0314ee784e7d562ea2 to your computer and use it in GitHub Desktop.
PowerShell function to Convert PEM files to X509 (PFX) Certificate
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <# | |
| .NOTES | |
| =========================================================================== | |
| Created by: Marc Collins ([email protected]) | |
| Organization: Qlik Professional Services | |
| Filename: Convert-PemtoX509.ps1 | |
| =========================================================================== | |
| .DESCRIPTION | |
| Converts PEM files to X509 Certificates | |
| Can be used with QlikClient.pems | |
| .Example | |
| $PublicKey = 'C:\ProgramData\Qlik\Sense\Repository\Exported Certificates\.Local Certificates\client.pem' | |
| $PrivateKey = 'C:\ProgramData\Qlik\Sense\Repository\Exported Certificates\.Local Certificates\client_key.pem' | |
| $Cert = Convert-PemtoX509 -PublicKey $PublicKey -PrivateKey $PrivateKey | |
| #> | |
| function Convert-PemtoX509 | |
| { | |
| param | |
| ( | |
| [Parameter(Mandatory = $true)] | |
| [System.IO.FileInfo]$PublicKey, | |
| [System.IO.FileInfo]$PrivateKey, | |
| [System.IO.FileInfo]$OutPFX, | |
| [securestring]$PFXPassword, | |
| [switch]$NoPassword | |
| ) | |
| BEGIN | |
| { | |
| if ($PFXPassword.Length -eq 0 -and $null -ne $OutPFX -and $NoPassword.IsPresent -eq $false) | |
| { | |
| $PFXPassword = Read-Host -Prompt "Enter PFX Password" -AsSecureString | |
| } | |
| [string]$KEY_HEADER = "-----BEGIN RSA PRIVATE KEY-----" | |
| [string]$KEY_FOOTER = "-----END RSA PRIVATE KEY-----"; | |
| [System.Security.Cryptography.X509Certificates.X509Certificate2]$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 | |
| function Get-RSA | |
| { | |
| param | |
| ( | |
| [Parameter(Mandatory = $false)] | |
| [string]$PEM | |
| ) | |
| if (Test-IsRSAPrivateKeyAvailable -PEM $PEM) | |
| { | |
| [System.Security.Cryptography.RSAParameters]$PrivateKey = Convert-PEMToRSAParameters -PEM $PEM | |
| [System.Security.Principal.SecurityIdentifier]$everyoneSI = New-Object System.Security.Principal.SecurityIdentifier([System.Security.Principal.WellKnownSidType]::WorldSid, $null) | |
| [System.Security.AccessControl.CryptoKeyAccessRule]$rule = New-Object System.Security.AccessControl.CryptoKeyAccessRule($everyoneSI, [System.Security.AccessControl.CryptoKeyRights]::FullControl, [System.Security.AccessControl.AccessControlType]::Allow) | |
| [System.Security.Cryptography.CspParameters]$cspParameters = New-Object System.Security.Cryptography.CspParameters; | |
| $cspParameters.KeyContainerName = "MY_C_NAME"; | |
| $cspParameters.ProviderName = "Microsoft Enhanced RSA and AES Cryptographic Provider"; | |
| $cspParameters.ProviderType = 24; | |
| #$cspParameters.Flags = [System.Security.Cryptography.CspProviderFlags]::UseMachineKeyStore; | |
| #$cspParameters.CryptoKeySecurity = New-Object System.Security.AccessControl.CryptoKeySecurity | |
| #$cspParameters.CryptoKeySecurity.SetAccessRule($rule); | |
| [System.Security.Cryptography.RSACryptoServiceProvider]$rsa = New-Object System.Security.Cryptography.RSACryptoServiceProvider($cspParameters); | |
| $rsa.PersistKeyInCsp = $true; | |
| $rsa.ImportParameters($privateKey); | |
| } | |
| return $rsa; | |
| } | |
| function Convert-PEMToRSAParameters | |
| { | |
| param | |
| ( | |
| [Parameter(Mandatory = $true)] | |
| [string]$PEM | |
| ) | |
| if (Test-IsRSAPrivateKeyAvailable -PEM $PEM) | |
| { | |
| $keyFormatted = $PEM | |
| [int]$cutIndex = $keyFormatted.IndexOf($KEY_HEADER); | |
| $keyFormatted = $keyFormatted.Substring($cutIndex, $keyFormatted.Length - $cutIndex); | |
| $cutIndex = $keyFormatted.IndexOf($KEY_FOOTER); | |
| $keyFormatted = $keyFormatted.Substring(0, $cutIndex + $KEY_FOOTER.Length); | |
| $keyFormatted = $keyFormatted.Replace($KEY_HEADER, ""); | |
| $keyFormatted = $keyFormatted.Replace($KEY_FOOTER, ""); | |
| $keyFormatted = $keyFormatted.Replace("\r", ""); | |
| $keyFormatted = $keyFormatted.Replace("\n", ""); | |
| $keyFormatted = $keyFormatted.Trim(); | |
| [byte[]]$privateKeyInDER = [System.Convert]::FromBase64String($keyFormatted); | |
| $MemoryStream = New-Object System.IO.MemoryStream( , $privateKeyInDER) | |
| $BinaryReader = New-Object System.IO.BinaryReader( , $MemoryStream) | |
| [System.UInt16]$twobytes = 0; | |
| [int]$elements = 0; | |
| [byte]$bt = 0; | |
| try | |
| { | |
| $twobytes = $binaryReader.ReadUInt16(); | |
| if ($twobytes -eq 0x8130) | |
| { | |
| $binaryReader.ReadByte() | Out-Null | |
| } | |
| elseif ($twobytes -eq 0x8230) | |
| { | |
| $binaryReader.ReadInt16() | Out-Null | |
| } | |
| else | |
| { | |
| throw "Wrong data"; | |
| } | |
| $twobytes = $binaryReader.ReadUInt16(); | |
| if ($twobytes -ne 0x0102) | |
| { | |
| throw "Wrong data"; | |
| } | |
| $bt = $binaryReader.ReadByte(); | |
| if ($bt -ne 0x00) | |
| { | |
| throw "Wrong data" | |
| } | |
| $elements = Get-IntegerSize($binaryReader) | |
| $paramModulus = $binaryReader.ReadBytes($elements); | |
| $elements = Get-IntegerSize($binaryReader) | |
| $paramE = $binaryReader.ReadBytes($elements); | |
| $elements = Get-IntegerSize($binaryReader) | |
| $paramD = $binaryReader.ReadBytes($elements); | |
| $elements = Get-IntegerSize($binaryReader) | |
| $paramP = $binaryReader.ReadBytes($elements); | |
| $elements = Get-IntegerSize($binaryReader) | |
| $paramQ = $binaryReader.ReadBytes($elements); | |
| $elements = Get-IntegerSize($binaryReader) | |
| $paramDP = $binaryReader.ReadBytes($elements); | |
| $elements = Get-IntegerSize($binaryReader) | |
| $paramDQ = $binaryReader.ReadBytes($elements); | |
| $elements = Get-IntegerSize($binaryReader) | |
| $paramIQ = $binaryReader.ReadBytes($elements); | |
| Assert-Length -Data ([ref]$paramD) -DesiredLength 256 | |
| Assert-Length -Data ([ref]$paramDP) -DesiredLength 128 | |
| Assert-Length -Data ([ref]$paramDQ) -DesiredLength 128 | |
| Assert-Length -Data ([ref]$paramE) -DesiredLength 3 | |
| Assert-Length -Data ([ref]$paramIQ) -DesiredLength 128 | |
| Assert-Length -Data ([ref]$paramModulus) -DesiredLength 256 | |
| Assert-Length -Data ([ref]$paramP) -DesiredLength 128 | |
| Assert-Length -Data ([ref]$paramQ) -DesiredLength 128 | |
| [System.Security.Cryptography.RSAParameters]$rsaParameters = New-Object System.Security.Cryptography.RSAParameters | |
| $rsaParameters.Modulus = $paramModulus; | |
| $rsaParameters.Exponent = $paramE; | |
| $rsaParameters.D = $paramD; | |
| $rsaParameters.P = $paramP; | |
| $rsaParameters.Q = $paramQ; | |
| $rsaParameters.DP = $paramDP; | |
| $rsaParameters.DQ = $paramDQ; | |
| $rsaParameters.InverseQ = $paramIQ; | |
| return $rsaParameters; | |
| } | |
| finally | |
| { | |
| $BinaryReader.Close() | Out-Null | |
| } | |
| } | |
| } | |
| function Get-IntegerSize | |
| { | |
| param | |
| ( | |
| [Parameter(Mandatory = $true)] | |
| [System.IO.BinaryReader]$Binary | |
| ) | |
| [byte]$bt = 0; | |
| [byte]$lowbyte = 0x00; | |
| [byte]$highbyte = 0x00; | |
| [int]$count = 0; | |
| $bt = $binary.ReadByte(); | |
| if ($bt -ne 0x02) | |
| { | |
| return 0 | |
| } | |
| $bt = $binary.ReadByte(); | |
| if ($bt -eq 0x81) | |
| { | |
| $count = $binary.ReadByte() | |
| } | |
| elseif ($bt -eq 0x82) | |
| { | |
| $highbyte = $binary.ReadByte(); | |
| $lowbyte = $binary.ReadByte(); | |
| [byte[]]$modint = $lowbyte, $highbyte, 0x00, 0x00; | |
| $count = [System.BitConverter]::ToInt32($modint, 0); | |
| } | |
| else | |
| { | |
| $count = $bt; | |
| } | |
| while ($binary.ReadByte() -eq 0x00) | |
| { | |
| $count -= 1; | |
| } | |
| $binary.BaseStream.Seek(-1, [System.IO.SeekOrigin]::Current) | Out-Null | |
| return $count; | |
| } | |
| function Assert-Length | |
| { | |
| param | |
| ( | |
| [Parameter(Mandatory = $true)] | |
| [ref]$Data, | |
| [Parameter(Mandatory = $true)] | |
| [int]$DesiredLength | |
| ) | |
| if ($null -eq $data -or $data.Value.Length -ge $desiredLength) | |
| { | |
| return; | |
| } | |
| [int]$zeros = $desiredLength - $data.Value.Length; | |
| [byte[]]$newData = [byte[]]::new($desiredLength) | |
| [System.Array]::Copy($data.Value, 0, $newData, $zeros, $data.Value.Length); | |
| $data.Value = $newData; | |
| } | |
| function Test-IsRSAPrivateKeyAvailable | |
| { | |
| param | |
| ( | |
| [Parameter(Mandatory = $false)] | |
| [string]$PEM | |
| ) | |
| return (($null -ne $PEM) -and $PEM.Contains($KEY_HEADER) -and $PEM.Contains($KEY_FOOTER)) | |
| } | |
| } | |
| PROCESS | |
| { | |
| if ($PublicKey.Exists) | |
| { | |
| [string]$PEMPublicKey = [System.IO.File]::ReadAllText($PublicKey) | |
| } | |
| if ($PrivateKey.Exists) | |
| { | |
| [string]$PEMPrivateKey = [System.IO.File]::ReadAllText($PrivateKey) | |
| } | |
| [byte[]]$pemCertWithPrivateKey = [System.Text.Encoding]::ASCII.GetBytes($PEMPublicKey) | |
| [System.Security.Cryptography.RSACryptoServiceProvider]$rsaPK = Get-RSA -PEM $PEMPrivateKey | |
| $cert.Import($pemCertWithPrivateKey, "", ([System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::MachineKeySet, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::PersistKeySet, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)) | |
| if ($null -ne $rsaPK) | |
| { | |
| $cert.PrivateKey = $rsaPK; | |
| } | |
| } | |
| END | |
| { | |
| if ($null -ne $OutPFX) | |
| { | |
| if ($PFXPassword.Length -gt 0 -and $NoPassword.IsPresent -eq $false) | |
| { | |
| [system.io.file]::WriteAllBytes($OutPFX.fullname, $Cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx, $PFXPassword)) | |
| } | |
| else | |
| { | |
| [system.io.file]::WriteAllBytes($OutPFX.fullname, $Cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx)) | |
| } | |
| } | |
| else | |
| { | |
| return $cert; | |
| } | |
| } | |
| } | |
| # SIG # Begin signature block | |
| # MIIrmgYJKoZIhvcNAQcCoIIrizCCK4cCAQExDzANBglghkgBZQMEAgEFADB5Bgor | |
| # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG | |
| # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCD/L6ozJ0FquUsB | |
| # om8coZ7xoD5VIUNPtHyKGL6fEgw+RaCCJHwwggNfMIICR6ADAgECAgsEAAAAAAEh | |
| # WFMIojANBgkqhkiG9w0BAQsFADBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3Qg | |
| # Q0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln | |
| # bjAeFw0wOTAzMTgxMDAwMDBaFw0yOTAzMTgxMDAwMDBaMEwxIDAeBgNVBAsTF0ds | |
| # b2JhbFNpZ24gUm9vdCBDQSAtIFIzMRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYD | |
| # VQQDEwpHbG9iYWxTaWduMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA | |
| # zCV2kHkGeCIW9cCDtoTKKJ79BXYRxa2IcvxGAkPHsoqdBF8kyy5L4WCCRuFSqwyB | |
| # R3Bs3WTR6/Usow+CPQwrrpfXthSGEHm7OxOAd4wI4UnSamIvH176lmjfiSeVOJ8G | |
| # 1z7JyyZZDXPesMjpJg6DFcbvW4vSBGDKSaYo9mk79svIKJHlnYphVzesdBTcdOA6 | |
| # 7nIvLpz70Lu/9T0A4QYz6IIrrlOmOhZzjN1BDiA6wLSnoemyT5AuMmDpV8u5BJJo | |
| # aOU4JmB1sp93/5EU764gSfytQBVI0QIxYRleuJfvrXe3ZJp6v1/BE++bYvsNbOBU | |
| # aRapA9pu6YOTcXbGaYWCFwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T | |
| # AQH/BAUwAwEB/zAdBgNVHQ4EFgQUj/BLf6guRSSuTVD6Y5qL3uLdG7wwDQYJKoZI | |
| # hvcNAQELBQADggEBAEtA28BQqv7IDO/3llRFSbuWAAlBrLMThoYoBzPKa+Z0uboA | |
| # La6kCtP18fEPir9zZ0qDx0R7eOCvbmxvAymOMzlFw47kuVdsqvwSluxTxi3kJGy5 | |
| # lGP73FNoZ1Y+g7jPNSHDyWj+ztrCU6rMkIrp8F1GjJXdelgoGi8d3s0AN0GP7URt | |
| # 11Mol37zZwQeFdeKlrTT3kwnpEwbc3N29BeZwh96DuMtCK0KHCz/PKtVDg+Rfjbr | |
| # w1dJvuEuLXxgi8NBURMjnc73MmuUAaiZ5ywzHzo7JdKGQM47LIZ4yWEvFLru21Vv | |
| # 34TuBQlNvSjYcs7TYlBlHuuSl4Mx2bO1ykdYP18wggO3MIICn6ADAgECAhAM5+Dl | |
| # F9hG/o/lYPwb8DA5MA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYD | |
| # VQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAi | |
| # BgNVBAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAw | |
| # MDBaFw0zMTExMTAwMDAwMDBaMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdp | |
| # Q2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNVBAMTG0Rp | |
| # Z2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP | |
| # ADCCAQoCggEBAK0OFc7kQ4BcsYfzt2D5cRKlrtwmlIiq9M71IDkoWGAM+IDaqRWV | |
| # MmE8tbEohIqK3J8KDIMXeo+QrIrneVNcMYQq9g+YMjZ2zN7dPKii72r7IfJSYd+f | |
| # INcf4rHZ/hhk0hJbX/lYGDW8R82hNvlrf9SwOD7BG8OMM9nYLxj+KA+zp4PWw25E | |
| # wGE1lhb+WZyLdm3X8aJLDSv/C3LanmDQjpA1xnhVhyChz+VtCshJfDGYM2wi6YfQ | |
| # MlqiuhOCEe05F52ZOnKh5vqk2dUXMXWuhX0irj8BRob2KHnIsdrkVxfEfhwOsLSS | |
| # plazvbKX7aqn8LfFqD+VFtD/oZbrCF8Yd08CAwEAAaNjMGEwDgYDVR0PAQH/BAQD | |
| # AgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEXroq/0ksuCMS1Ri6enIZ3z | |
| # bcgPMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgPMA0GCSqGSIb3DQEB | |
| # BQUAA4IBAQCiDrzf4u3w43JzemSUv/dyZtgy5EJ1Yq6H6/LV2d5Ws5/MzhQouQ2X | |
| # YFwSTFjk0z2DSUVYlzVpGqhH6lbGeasS2GeBhN9/CTyU5rgmLCC9PbMoifdf/yLi | |
| # l4Qf6WXvh+DfwWdJs13rsgkq6ybteL59PyvztyY1bV+JAbZJW58BBZurPSXBzLZ/ | |
| # wvFvhsb6ZGjrgS2U60K3+owe3WLxvlBnt2y98/Efaww2BxZ/N3ypW2168RJGYIPX | |
| # JwS+S86XvsNnKmgR34DnDDNmvxMNFG7zfx9jEB76jRslbWyPpbdhAbHSoyahEHGd | |
| # reLD+cOZUbcrBwjOLuZQsqf6CkUvovDyMIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1 | |
| # U0O1b5VQCDANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMM | |
| # RGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQD | |
| # ExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcN | |
| # MjgxMDIyMTIwMDAwWjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQg | |
| # SW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2Vy | |
| # dCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBTaWduaW5nIENBMIIBIjANBgkqhkiG9w0B | |
| # AQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8OEa9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid | |
| # 2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq8JyGpdglrA55KDp+6dFn08b7KSfH03sj | |
| # lOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRpwsJS8hRniolF1C2ho+mILCCVrhxKhwjf | |
| # DPXiTWAYvqrEsq5wMWYzcT6scKKrzn/pfMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzL | |
| # fnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR | |
| # 93O8vYWxYoNzQYIH5DiLanMg0A9kczyen6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckw | |
| # EgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYI | |
| # KwYBBQUHAwMweQYIKwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz | |
| # cC5kaWdpY2VydC5jb20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2lj | |
| # ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgw | |
| # OqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ | |
| # RFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdp | |
| # Q2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwTwYDVR0gBEgwRjA4BgpghkgBhv1sAAIE | |
| # MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYI | |
| # YIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsqCqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQY | |
| # MBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgPMA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1a | |
| # JLPzItEVyCx8JSl2qB1dHC06GsTvMGHXfgtg/cM9D8Svi/3vKt8gVTew4fbRknUP | |
| # UbRupY5a4l4kgU4QpO4/cY5jDhNLrddfRHnzNhQGivecRk5c/5CxGwcOkRX7uq+1 | |
| # UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8AlEeKcFEehemhor5unXCBc2XGxDI+7qPjF | |
| # Emifz0DLQESlE/DmZAwlCEIysjaKJAL+L3J+HNdJRZboWR3p+nRka7LrZkPas7CM | |
| # 1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhs | |
| # RDKyZqHnGKSaZFHvMIIFRzCCBC+gAwIBAgINAfJAQkDO/SLb6Wxx/DANBgkqhkiG | |
| # 9w0BAQwFADBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG | |
| # A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xOTAyMjAw | |
| # MDAwMDBaFw0yOTAzMTgxMDAwMDBaMEwxIDAeBgNVBAsTF0dsb2JhbFNpZ24gUm9v | |
| # dCBDQSAtIFI2MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxT | |
| # aWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlQfoc8pm+ewUyns8 | |
| # 9w0I8bRFCyyCtEjG61s8roO4QZIzFKRvf+kqzMawiGvFtonRxrL/FM5RFCHsSt0b | |
| # WsbWh+5NOhUG7WRmC5KAykTec5RO86eJf094YwjIElBtQmYvTbl5KE1SGooagLcZ | |
| # gQ5+xIq8ZEwhHENo1z08isWyZtWQmrcxBsW+4m0yBqYe+bnrqqO4v76CY1DQ8BiJ | |
| # 3+QPefXqoh8q0nAue+e8k7ttU+JIfIwQBzj/ZrJ3YX7g6ow8qrSk9vOVShIHbf2M | |
| # sonP0KBhd8hYdLDUIzr3XTrKotudCd5dRC2Q8YHNV5L6frxQBGM032uTGL5rNrI5 | |
| # 5KwkNrfw77YcE1eTtt6y+OKFt3OiuDWqRfLgnTahb1SK8XJWbi6IxVFCRBWU7qPF | |
| # OJabTk5aC0fzBjZJdzC8cTflpuwhCHX85mEWP3fV2ZGXhAps1AJNdMAU7f05+4Py | |
| # XhShBLAL6f7uj+FuC7IIs2FmCWqxBjplllnA8DX9ydoojRoRh3CBCqiadR2eOoYF | |
| # AJ7bgNYl+dwFnidZTHY5W+r5paHYgw/R/98wEfmFzzNI9cptZBQselhP00sIScWV | |
| # ZBpjDnk99bOMylitnEJFeW4OhxlcVLFltr+Mm9wT6Q1vuC7cZ27JixG1hBSKABlw | |
| # g3mRl5HUGie/Nx4yB9gUYzwoTK8CAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIB | |
| # BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdT | |
| # oDAfBgNVHSMEGDAWgBSP8Et/qC5FJK5NUPpjmove4t0bvDA+BggrBgEFBQcBAQQy | |
| # MDAwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwMi5nbG9iYWxzaWduLmNvbS9yb290 | |
| # cjMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9y | |
| # b290LXIzLmNybDBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0 | |
| # cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wDQYJKoZIhvcNAQEM | |
| # BQADggEBAEmsXsWD81rLYSpNl0oVKZ/kFJCqCfnEep81GIoKMxVtcociTkE/bQqe | |
| # GK7b4l/8ldEsmBQ7jsHwNll5842Bz3T2GKTk4WjP739lWULpylU5vNPFJu5xOPrX | |
| # IQMPt07ZW2BqQ7R9CdBgYd2q7QBeTjIe4LJsnjyywruY05B2ammtGtyoidpYT9LC | |
| # izJKzlT7OOk7Bwt1ChHbC3wlJ/GsJs8RU+bcxuJhNTL0zt2D4xk668Joo3IAyCQ8 | |
| # TrhTPLEXq+Y1LPnTQinmX2ADrEJhprFXajNC3zUxhso+NyvaxNok9U4S8ra5t0fq | |
| # uyCtYRa3oDPjLYmnvLM8AX8jGoAJNOkwggYVMIIE/aADAgECAhAFRTa04g6mPPeC | |
| # iV1MUKqsMA0GCSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxE | |
| # aWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMT | |
| # KERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTkw | |
| # NzIyMDAwMDAwWhcNMjIwNzEzMTIwMDAwWjBSMQswCQYDVQQGEwJBVTERMA8GA1UE | |
| # CBMIVmljdG9yaWExEjAQBgNVBAcTCU1lbGJvdXJuZTENMAsGA1UEChMETk5ldDEN | |
| # MAsGA1UEAxMETk5ldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANK1 | |
| # /Hj/BqB63rqE3dowq0x7apSIKaKaC6QyjdTcElpJKbmcociClLRF36Svz6CSCd6O | |
| # YfBFC6HCQjeWcBgC+dJ9bbEa4nOTBgS6U2p1QzJiBsjueZtctZiqZCf6K1N8ZzDV | |
| # NU/mDzHU6Ekrd33cP8pMB/fafDAffkVu9ImT8UW7sYkH8m35S5cZ/dNHXEUCaa6S | |
| # jNksmOjZOuHV1aDbBnilw+6ebZkd6bZABalQlZiXnt5vSmUwkpxTMAEULy3pcLLK | |
| # gumJ/Y+gj6ER3NcdcaXs0AHNthNe9GhRPtskNbcNDqENcvDkyTwKmiplrStAKszi | |
| # I/sSw4vdvtuqsDKBu1WVXtjoJdJF09AJ7dnv1cWXTdpoXU6b3KZKVE9e5j1JeN3F | |
| # tgE5SgOulIAKMB4or+krtw4yL0qbrMHbvWn/Q3ZIIG+Bj4vHpJ2XghXXSjvskrRz | |
| # jHKYgW3nGYaTth/HRI0HJbuOXgHLuKJ3qDsyRZElG7Amfq4mFEnIkJ2yLooImJqz | |
| # T6zaD6DgDSEHBiEs53Wn2cNCTytmJxSIUkjUkmiP+QaaOI2hnlkmi6XbsEjt3ajV | |
| # QYS5FM6Di8P9LQ2WuB6CiiXUXqyrimoG0xWQubx8iEUp0pGtS534nOrok2eKxPRm | |
| # 4IZQo5GWNsJgMsfjHq0iuJzxFu45DKP+fQAL9kPtAgMBAAGjggHFMIIBwTAfBgNV | |
| # HSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4EFgQUFSv0DHHkjRjR | |
| # JwaFIc02WgvWhFUwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMD | |
| # MHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9zaGEy | |
| # LWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3JsNC5kaWdpY2VydC5j | |
| # b20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG/WwD | |
| # ATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAgG | |
| # BmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz | |
| # cC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9jYWNlcnRzLmRpZ2lj | |
| # ZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2lnbmluZ0NBLmNydDAM | |
| # BgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQDdAL691XRUPt1IwCuENKw6 | |
| # n1sfTD7AAEzD6zhprUrV6JWPFzJ4z/YgZp2LPYZDnh4m16/UI2O9pNMhykG3mg1I | |
| # CJ45hTGZvRY+cM8aTV/ioG3lADJQ2Z9H624SKfLf+q/dT2Cq6Nv/9syj2PGx0POn | |
| # uLHgz4c2VGVTbc3DdhSHRpikjisSl9JPUjpFjqlT/UTWfgLoMvv/D4p17EOZarT4 | |
| # ykAgE47zJbWJS0cj3O1lnShDO7Xk+H/cv982frwWc2akrROov2deZ1uw/BcJ6AnC | |
| # yX+gZkACtetd0SmjQgOCUi/gVZUSIkWhSxJmj5wEV0IdJjKJLrafac5YtKXWlDuM | |
| # MIIGWTCCBEGgAwIBAgINAewckkDe/S5AXXxHdDANBgkqhkiG9w0BAQwFADBMMSAw | |
| # HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFs | |
| # U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xODA2MjAwMDAwMDBaFw0zNDEy | |
| # MTAwMDAwMDBaMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52 | |
| # LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBDQSAtIFNIQTM4 | |
| # NCAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA8ALiMCP64Bvh | |
| # mnSzr3WDX6lHUsdhOmN8OSN5bXT8MeR0EhmW+s4nYluuB4on7lejxDXtszTHrMMM | |
| # 64BmbdEoSsEsu7lw8nKujPeZWl12rr9EqHxBJI6PusVP/zZBq6ct/XhOQ4j+kxkX | |
| # 2e4xz7yKO25qxIjw7pf23PMYoEuZHA6HpybhiMmg5ZninvScTD9dW+y279Jlz0UL | |
| # VD2xVFMHi5luuFSZiqgxkjvyen38DljfgWrhsGweZYIq1CHHlP5CljvxC7F/f0aY | |
| # Doc9emXr0VapLr37WD21hfpTmU1bdO1yS6INgjcZDNCr6lrB7w/Vmbk/9E818ZwP | |
| # 0zcTUtklNO2W7/hn6gi+j0l6/5Cx1PcpFdf5DV3Wh0MedMRwKLSAe70qm7uE4Q6s | |
| # bw25tfZtVv6KHQk+JA5nJsf8sg2glLCylMx75mf+pliy1NhBEsFV/W6RxbuxTAhL | |
| # ntRCBm8bGNU26mSuzv31BebiZtAOBSGssREGIxnk+wU0ROoIrp1JZxGLguWtWoan | |
| # Zv0zAwHemSX5cW7pnF0CTGA8zwKPAf1y7pLxpxLeQhJN7Kkm5XcCrA5XDAnRYZ4m | |
| # iPzIsk3bZPBFn7rBP1Sj2HYClWxqjcoiXPYMBOMp+kuwHNM3dITZHWarNHOPHn18 | |
| # XpbWPRmwl+qMUJFtr1eGfhA3HWsaFN8CAwEAAaOCASkwggElMA4GA1UdDwEB/wQE | |
| # AwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTqFsZp5+PLV0U5M6Tw | |
| # QL7Qw71lljAfBgNVHSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDA+BggrBgEF | |
| # BQcBAQQyMDAwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwMi5nbG9iYWxzaWduLmNv | |
| # bS9yb290cjYwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9iYWxzaWdu | |
| # LmNvbS9yb290LXI2LmNybDBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcC | |
| # ARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wDQYJKoZI | |
| # hvcNAQEMBQADggIBAH/iiNlXZytCX4GnCQu6xLsoGFbWTL/bGwdwxvsLCa0AOmAz | |
| # HznGFmsZQEklCB7km/fWpA2PHpbyhqIX3kG/T+G8q83uwCOMxoX+SxUk+RhE7B/C | |
| # pKzQss/swlZlHb1/9t6CyLefYdO1RkiYlwJnehaVSttixtCzAsw0SEVV3ezpSp9e | |
| # FO1yEHF2cNIPlvPqN1eUkRiv3I2ZOBlYwqmhfqJuFSbqtPl/KufnSGRpL9KaoXL2 | |
| # 9yRLdFp9coY1swJXH4uc/LusTN763lNMg/0SsbZJVU91naxvSsguarnKiMMSME6y | |
| # CHOfXqHWmc7pfUuWLMwWaxjN5Fk3hgks4kXWss1ugnWl2o0et1sviC49ffHykTAF | |
| # nM57fKDFrK9RBvARxx0wxVFWYOh8lT0i49UKJFMnl4D6SIknLHniPOWbHuOqhIKJ | |
| # PsBK9SH+YhDtHTD89szqSCd8i3VCf2vL86VrlR8EWDQKie2CUOTRe6jJ5r5IqitV | |
| # 2Y23JSAOG1Gg1GOqg+pscmFKyfpDxMZXxZ22PLCLsLkcMe+97xTYFEBsIB3CLegL | |
| # xo1tjLZx7VIh/j72n585Gq6s0i96ILH0rKod4i0UnfqWah3GPMrz2Ry/U02kR1l8 | |
| # lcRDQfkl4iwQfoH5DZSnffK1CfXYYHJAUJUg1ENEvvqglecgWbZ4xqRqqiKbMIIG | |
| # ZTCCBE2gAwIBAgIQAYTTqM43getX9P2He4OusjANBgkqhkiG9w0BAQsFADBbMQsw | |
| # CQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTExMC8GA1UEAxMo | |
| # R2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0EgLSBTSEEzODQgLSBHNDAeFw0yMTA1 | |
| # MjcxMDAwMTZaFw0zMjA2MjgxMDAwMTVaMGMxCzAJBgNVBAYTAkJFMRkwFwYDVQQK | |
| # DBBHbG9iYWxTaWduIG52LXNhMTkwNwYDVQQDDDBHbG9iYWxzaWduIFRTQSBmb3Ig | |
| # TVMgQXV0aGVudGljb2RlIEFkdmFuY2VkIC0gRzQwggGiMA0GCSqGSIb3DQEBAQUA | |
| # A4IBjwAwggGKAoIBgQDiopu2Sfs0SCgjB4b9UhNNusuqNeL5QBwbe2nFmCrMyVzv | |
| # J8bsuCVlwz8dROfe4QjvBBcAlZcM/dtdg7SI66COm0+DuvnfXhhUagIODuZU8Dek | |
| # HpxnMQW1N3F8en7YgWUz5JrqsDE3x2a0o7oFJ+puUoJY2YJWJI3567MU+2QAoXsq | |
| # H3qeqGOR5tjRIsY/0p04P6+VaVsnv+hAJJnHH9l7kgUCfSjGPDn3es33ZSagN68y | |
| # BXeXauEQG5iFLISt5SWGfHOezYiNSyp6nQ9Zeb3y2jZ+Zqwu+LuIl8ltefKz1NXM | |
| # GvRPi0WVdvKHlYCOKHm6/cVwr7waFAKQfCZbEYtd9brkEQLFgRxmaEveaM6dDIhh | |
| # qraUI53gpDxGXQRR2z9ZC+fsvtLZEypH70sSEm7INc/uFjK20F+FuE/yfNgJKxJe | |
| # wMLvEzFwNnPc1ldU01dgnhwQlfDmqi8Qiht+yc2PzlBLHCWowBdkURULjM/XyV1K | |
| # bEl0rlrxagZ1Pok3O5ECAwEAAaOCAZswggGXMA4GA1UdDwEB/wQEAwIHgDAWBgNV | |
| # HSUBAf8EDDAKBggrBgEFBQcDCDAdBgNVHQ4EFgQUda8nP7jbmuxvHO7DamT2v4Q1 | |
| # sM4wTAYDVR0gBEUwQzBBBgkrBgEEAaAyAR4wNDAyBggrBgEFBQcCARYmaHR0cHM6 | |
| # Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYDVR0TBAIwADCBkAYI | |
| # KwYBBQUHAQEEgYMwgYAwOQYIKwYBBQUHMAGGLWh0dHA6Ly9vY3NwLmdsb2JhbHNp | |
| # Z24uY29tL2NhL2dzdHNhY2FzaGEzODRnNDBDBggrBgEFBQcwAoY3aHR0cDovL3Nl | |
| # Y3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZ3N0c2FjYXNoYTM4NGc0LmNydDAf | |
| # BgNVHSMEGDAWgBTqFsZp5+PLV0U5M6TwQL7Qw71lljBBBgNVHR8EOjA4MDagNKAy | |
| # hjBodHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL2NhL2dzdHNhY2FzaGEzODRnNC5j | |
| # cmwwDQYJKoZIhvcNAQELBQADggIBADiTt301iTTqGtaqes6NhNvhNLd0pf/YXZQ2 | |
| # JY/SgH6hZbGbzzVRXdugS273IUAu7E9vFkByHHUbMAAXOY/IL6RxziQzJpDV5P85 | |
| # uWHvC8o58y1ejaD/TuFWZB/UnHYEpERcPWKFcC/5TqT3hlbbekkmQy0Fm+LDibc6 | |
| # oS0nJxjGQ4vcQ6G2ci0/2cY0igLTYjkp8H0o0KnDZIpGbbNDHHSL3bmmCyF7Eacf | |
| # XaLbjOBV02n6d9FdFLmW7JFFGxtsfkJAJKTtQMZl+kGPSDGc47izF1eCecrMHsLQ | |
| # T08FDg1512ndlaFxXYqe51rCT6gGDwiJe9tYyCV9/2i8KKJwnLsMtVPojgaxsoKB | |
| # hxKpXndMk6sY+ERXWBHL9pMVSTG3U1Ah2tX8YH/dMMWsUUQLZ6X61nc0rRIfKPuI | |
| # 2lGbRJredw7uMhJgVgyRnViPvJlX8r7NucNzJBnad6bk7PHeb+C8hB1vw/Hb4dVC | |
| # UYZREkImPtPqE/QonK1NereiuhRqP0BVWE6MZRyz9nXWf64PhIAvvoh4XCcfRxfC | |
| # PeRpnsuunu8CaIg3EMJsJorIjGWQU02uXdq4RhDUkAqK//QoQIHgUsjyAWRIGIR4 | |
| # aiL6ypyqDh3FjnLDNiIZ6/iUH7/CxQFW6aaA6gEdEzUH4rl0FP2aOJ4D0kn2TOuh | |
| # vRwU0uOZMYIGdDCCBnACAQEwgYYwcjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERp | |
| # Z2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMo | |
| # RGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIENvZGUgU2lnbmluZyBDQQIQBUU2tOIO | |
| # pjz3goldTFCqrDANBglghkgBZQMEAgEFAKBMMBkGCSqGSIb3DQEJAzEMBgorBgEE | |
| # AYI3AgEEMC8GCSqGSIb3DQEJBDEiBCCiVdpNtrqvZupZVwpILkYG02LzwDMVziQT | |
| # MZ3uSkyrJzANBgkqhkiG9w0BAQEFAASCAgA3GNw1XmiSJdhRqAVZsXM2Rztb/we9 | |
| # HKivh4JJ6N6NfVKhax+oYNXYbTnTMn3UwRXAXwJEVB6pPbzYeI5ZA2UWrP5CH1lb | |
| # n40t733dU7+xPOvEdXrg50uCohXADhSisIin0Vj25wmua3ubtd+YHPe0sNoKLPHA | |
| # xaiptSRKykuwogS/JFH1JTtlmwDyLRXNLSnG4SNwyC5Wf8puvN3NeFu1uzHYINd3 | |
| # H4B1Eaqps4wdsJW0azUnYK+IBuVw6OaxdilLc5Z50UqsRkm9H4qXsjILRx0t4naB | |
| # y04+cNTMMydQRG69QMfuDCtYGi6NQ7W/077bVR+JtmetSTuW2d3cVzvy7v8H0jWt | |
| # HPMdLNNC1PwDXx3tmaPnqv8/vCwSlz5wzJuggUrloCl5rS47PomP/DZAveWLGt/A | |
| # G2YSTbYDButJfTzhRe3rTtYD8KJPjLkCVhQcYcxe/AJDMx88Wo8Iojj37Nx5L8DS | |
| # hdurFgr6W2wh8CeXml1rQvXoJo9h9blVfgfJ0msYqkWsqhXfidPnDOeFVX3dDKA9 | |
| # B7DS6lx+DoPRVR4S9EcEOcSQIsaDyZU8bfpPg6KAVASclYFJrVrFsQy7kXQ9D8p8 | |
| # nJwUSEnwzor6kYA7RKYOhREg0po7b2cXOE9apH0Ysd/tll0Aacbp/mpiZxtR/M5w | |
| # 1w0hIfEYR0L2N6GCA3AwggNsBgkqhkiG9w0BCQYxggNdMIIDWQIBATBvMFsxCzAJ | |
| # BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhH | |
| # bG9iYWxTaWduIFRpbWVzdGFtcGluZyBDQSAtIFNIQTM4NCAtIEc0AhABhNOozjeB | |
| # 61f0/Yd7g66yMA0GCWCGSAFlAwQCAQUAoIIBPzAYBgkqhkiG9w0BCQMxCwYJKoZI | |
| # hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMjAxMTkwMjA0MTNaMC0GCSqGSIb3DQEJ | |
| # NDEgMB4wDQYJYIZIAWUDBAIBBQChDQYJKoZIhvcNAQELBQAwLwYJKoZIhvcNAQkE | |
| # MSIEIJmcAdQnCKv7j3HjpDSVSmQJrPNDKhOCZOrkg1LUwi6gMIGkBgsqhkiG9w0B | |
| # CRACDDGBlDCBkTCBjjCBiwQU3Ve1s4c8hhspxq7Ecxr76I11wUkwczBfpF0wWzEL | |
| # MAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExMTAvBgNVBAMT | |
| # KEdsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gU0hBMzg0IC0gRzQCEAGE06jO | |
| # N4HrV/T9h3uDrrIwDQYJKoZIhvcNAQELBQAEggGAWscAx8Asp0k/OIZe9aSMVEpP | |
| # rrwDVV54QmVnF/wtcNhNdhLOk0FdgHgUMPB40yi8Ct+ZWUpQ73MTlQMcidxv7HYQ | |
| # WVGIZS84n/KKqPDL07iEhxZ/SUUMrBNtdgRKo1pgsdGyKAu+DxYp5p3j4PAoShXv | |
| # BGpwsHtypLykL3WoZ0gax1/p2Wnt8DX8QVSXtdGoNhh6mvwhISf0PAIbPSps3ikY | |
| # keHdi4p0IDhw4P2s9yh9/RqAIgPpprXrU2/yZKhLyjGMWHtBM/ujgr/QhSwJyUBG | |
| # R/KUV20Tn1YJkkNSnNHQYB5PNN2xFbZrno7xlTrfHunElyTRX/kxYBMwtE8IGP6H | |
| # AxprFh4wlXB/xFfW9N9jwRDfwCKcJ+Uv3ueLTsIXUXFaHAsgcYxM2ikbbGqYpIW+ | |
| # OR5aZF/QxcHD8UCcMTXhlSiuCq3Q1Q105TZcxep0ykPOUxpDTiqcUQhevHj1lumo | |
| # A5ZpApo5UtyBuInMKXCU3t1oWpV62S/otRR/+0bY | |
| # SIG # End signature block |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment