crypto/tls: Check all certificates in the path.

Currently we only check the leaf node's issuer against the list of
distinguished names in the server's CertificateRequest message. This
will fail if the client certiciate has more than one certificate in
the path and the leaf node issuer isn't in the list of distinguished
names, but the issuer's issuer was in the distinguished names.

R=agl, agl
CC=gobot, golang-dev
https://golang.org/cl/9795043
This commit is contained in:
John Shahid 2013-05-29 11:21:32 -04:00 committed by Adam Langley
parent f41a7e7ee6
commit 2946f7013d
2 changed files with 940 additions and 24 deletions

View File

@ -165,7 +165,7 @@ func (c *Conn) clientHandshake() error {
}
}
var certToSend *Certificate
var chainToSend *Certificate
var certRequested bool
certReq, ok := msg.(*certificateRequestMsg)
if ok {
@ -197,35 +197,39 @@ func (c *Conn) clientHandshake() error {
// where SignatureAlgorithm is RSA and the Issuer is in
// certReq.certificateAuthorities
findCert:
for i, cert := range c.config.Certificates {
for i, chain := range c.config.Certificates {
if !rsaAvail {
continue
}
leaf := cert.Leaf
if leaf == nil {
if leaf, err = x509.ParseCertificate(cert.Certificate[0]); err != nil {
c.sendAlert(alertInternalError)
return errors.New("tls: failed to parse client certificate #" + strconv.Itoa(i) + ": " + err.Error())
for j, cert := range chain.Certificate {
x509Cert := chain.Leaf
// parse the certificate if this isn't the leaf
// node, or if chain.Leaf was nil
if j != 0 || x509Cert == nil {
if x509Cert, err = x509.ParseCertificate(cert); err != nil {
c.sendAlert(alertInternalError)
return errors.New("tls: failed to parse client certificate #" + strconv.Itoa(i) + ": " + err.Error())
}
}
}
if leaf.PublicKeyAlgorithm != x509.RSA {
continue
}
if x509Cert.PublicKeyAlgorithm != x509.RSA {
continue findCert
}
if len(certReq.certificateAuthorities) == 0 {
// they gave us an empty list, so just take the
// first RSA cert from c.config.Certificates
certToSend = &cert
break
}
for _, ca := range certReq.certificateAuthorities {
if bytes.Equal(leaf.RawIssuer, ca) {
certToSend = &cert
if len(certReq.certificateAuthorities) == 0 {
// they gave us an empty list, so just take the
// first RSA cert from c.config.Certificates
chainToSend = &chain
break findCert
}
for _, ca := range certReq.certificateAuthorities {
if bytes.Equal(x509Cert.RawIssuer, ca) {
chainToSend = &chain
break findCert
}
}
}
}
@ -246,8 +250,8 @@ func (c *Conn) clientHandshake() error {
// certificate to send.
if certRequested {
certMsg = new(certificateMsg)
if certToSend != nil {
certMsg.certificates = certToSend.Certificate
if chainToSend != nil {
certMsg.certificates = chainToSend.Certificate
}
finishedHash.Write(certMsg.marshal())
c.writeRecord(recordTypeHandshake, certMsg.marshal())
@ -263,7 +267,7 @@ func (c *Conn) clientHandshake() error {
c.writeRecord(recordTypeHandshake, ckx.marshal())
}
if certToSend != nil {
if chainToSend != nil {
certVerify := new(certificateVerifyMsg)
digest := make([]byte, 0, 36)
digest = finishedHash.serverMD5.Sum(digest)

View File

@ -51,6 +51,13 @@ func TestHandshakeClientECDHEAES(t *testing.T) {
testClientScript(t, "ECDHE-AES", ecdheAESClientScript, &config)
}
func TestLongClientCerticiateChain(t *testing.T) {
config := *testConfig
cert, _ := X509KeyPair(testClientChainCertificate, testClientChainCertificate)
config.Certificates = []Certificate{cert}
testClientScript(t, "Long client certificate chains", clientChainCertificateScript, &config)
}
var connect = flag.Bool("connect", false, "connect to a TLS server on :10443")
func TestRunClient(t *testing.T) {
@ -1000,3 +1007,908 @@ var emptyRecordScript = [][]byte{
0x40, 0x41, 0x8e, 0x41, 0x9b,
},
}
var clientChainCertificateScript = [][]byte{
{
0x16, 0x03, 0x01, 0x00, 0x4a, 0x01, 0x00, 0x00,
0x46, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05,
0x01, 0x00, 0x00, 0x1b, 0x00, 0x05, 0x00, 0x05,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00,
0x08, 0x00, 0x06, 0x00, 0x17, 0x00, 0x18, 0x00,
0x19, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00,
},
{
0x16, 0x03, 0x01, 0x00, 0x4a, 0x02, 0x00, 0x00,
0x46, 0x03, 0x01, 0x51, 0xa2, 0x9b, 0x8b, 0xd4,
0xe6, 0x33, 0xa2, 0x70, 0x38, 0x37, 0xba, 0x55,
0x86, 0xcf, 0x87, 0xea, 0x6d, 0x2c, 0x3e, 0x17,
0xc2, 0x09, 0xf8, 0x4d, 0xb0, 0x5d, 0x93, 0x2b,
0x15, 0x99, 0x0c, 0x20, 0x5d, 0x61, 0x21, 0x2c,
0xed, 0x49, 0x32, 0x29, 0x08, 0x6e, 0x21, 0x58,
0x00, 0xdb, 0x34, 0xb7, 0x37, 0xcd, 0x27, 0x75,
0x31, 0x1e, 0x6c, 0x74, 0xa6, 0xef, 0xa2, 0xc4,
0x2b, 0x6c, 0xc3, 0x03, 0x00, 0x05, 0x00, 0x16,
0x03, 0x01, 0x03, 0xef, 0x0b, 0x00, 0x03, 0xeb,
0x00, 0x03, 0xe8, 0x00, 0x03, 0xe5, 0x30, 0x82,
0x03, 0xe1, 0x30, 0x82, 0x02, 0xc9, 0xa0, 0x03,
0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xcc, 0x22,
0x4c, 0x4b, 0x98, 0xa2, 0x88, 0xfc, 0x30, 0x0d,
0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, 0x86,
0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30,
0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x02,
0x4e, 0x59, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03,
0x55, 0x04, 0x07, 0x0c, 0x08, 0x42, 0x72, 0x6f,
0x6f, 0x6b, 0x6c, 0x79, 0x6e, 0x31, 0x21, 0x30,
0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x18,
0x4d, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41,
0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04,
0x03, 0x0c, 0x08, 0x6d, 0x79, 0x63, 0x61, 0x2e,
0x6f, 0x72, 0x67, 0x31, 0x21, 0x30, 0x1f, 0x06,
0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
0x09, 0x01, 0x16, 0x12, 0x6a, 0x76, 0x73, 0x68,
0x61, 0x68, 0x69, 0x64, 0x40, 0x67, 0x6d, 0x61,
0x69, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1e,
0x17, 0x0d, 0x31, 0x33, 0x30, 0x35, 0x32, 0x36,
0x32, 0x31, 0x30, 0x35, 0x30, 0x31, 0x5a, 0x17,
0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x34, 0x32,
0x31, 0x30, 0x35, 0x30, 0x31, 0x5a, 0x30, 0x81,
0x86, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b,
0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c,
0x02, 0x4e, 0x59, 0x31, 0x11, 0x30, 0x0f, 0x06,
0x03, 0x55, 0x04, 0x07, 0x0c, 0x08, 0x42, 0x72,
0x6f, 0x6f, 0x6b, 0x6c, 0x79, 0x6e, 0x31, 0x21,
0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,
0x18, 0x4d, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74,
0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20,
0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
0x79, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55,
0x04, 0x03, 0x0c, 0x08, 0x6d, 0x79, 0x63, 0x61,
0x2e, 0x6f, 0x72, 0x67, 0x31, 0x21, 0x30, 0x1f,
0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
0x01, 0x09, 0x01, 0x16, 0x12, 0x6a, 0x76, 0x73,
0x68, 0x61, 0x68, 0x69, 0x64, 0x40, 0x67, 0x6d,
0x61, 0x69, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
0xf0, 0xfb, 0xad, 0x80, 0x5e, 0x37, 0xd3, 0x6d,
0xee, 0x2e, 0xcc, 0xbc, 0x0c, 0xd7, 0x56, 0x4b,
0x56, 0x45, 0xcd, 0x28, 0xb6, 0x22, 0xe9, 0xe2,
0x0f, 0xd1, 0x87, 0x2a, 0x27, 0xce, 0x77, 0x8d,
0x6e, 0x0e, 0x0f, 0xfb, 0x66, 0xe1, 0xb5, 0x0e,
0x9a, 0xb6, 0x05, 0x8e, 0xb3, 0xe1, 0xc5, 0x77,
0x86, 0x5b, 0x46, 0xd2, 0x0b, 0x92, 0x03, 0x1b,
0x89, 0x0c, 0x1b, 0x10, 0x0e, 0x99, 0x8f, 0xe2,
0x17, 0xe8, 0xc2, 0x30, 0x00, 0x47, 0xd6, 0xfc,
0xf9, 0x0f, 0x3b, 0x75, 0x34, 0x8d, 0x4d, 0xb0,
0x99, 0xb7, 0xa0, 0x6d, 0xa0, 0xb6, 0xad, 0xda,
0x07, 0x5e, 0x38, 0x2e, 0x02, 0xe4, 0x30, 0x6d,
0xae, 0x13, 0x72, 0xd4, 0xc8, 0xce, 0x14, 0x07,
0xae, 0x23, 0x8c, 0x8f, 0x9e, 0x8c, 0x60, 0xd6,
0x06, 0xb9, 0xef, 0x00, 0x18, 0xc0, 0x1d, 0x25,
0x1e, 0xda, 0x3e, 0x2f, 0xcf, 0x2b, 0x56, 0x84,
0x9e, 0x30, 0x21, 0xc7, 0x29, 0xf6, 0x03, 0x8a,
0x24, 0xf9, 0x34, 0xac, 0x65, 0x9d, 0x80, 0x36,
0xc8, 0x3b, 0x15, 0x10, 0xbd, 0x51, 0xe9, 0xbc,
0x02, 0xe1, 0xe9, 0xb3, 0x5a, 0x9a, 0x99, 0x41,
0x1b, 0x27, 0xa0, 0x4d, 0x50, 0x9e, 0x27, 0x7f,
0xa1, 0x7d, 0x09, 0x87, 0xbd, 0x8a, 0xca, 0x5f,
0xb1, 0xa5, 0x08, 0xb8, 0x04, 0xd4, 0x52, 0x89,
0xaa, 0xe0, 0x7d, 0x42, 0x2e, 0x2f, 0x15, 0xee,
0x66, 0x57, 0x0f, 0x13, 0x19, 0x45, 0xa8, 0x4b,
0x5d, 0x81, 0x66, 0xcc, 0x12, 0x37, 0x94, 0x5e,
0xfd, 0x3c, 0x10, 0x81, 0x51, 0x3f, 0xfa, 0x0f,
0xdd, 0xa1, 0x89, 0x03, 0xa9, 0x78, 0x91, 0xf5,
0x3b, 0xf3, 0xbc, 0xac, 0xbe, 0x93, 0x30, 0x2e,
0xbe, 0xca, 0x7f, 0x46, 0xd3, 0x28, 0xb4, 0x4e,
0x91, 0x7b, 0x5b, 0x43, 0x6c, 0xaf, 0x9b, 0x5c,
0x6a, 0x6d, 0x5a, 0xdb, 0x79, 0x5e, 0x6a, 0x6b,
0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x50, 0x30,
0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
0x04, 0x16, 0x04, 0x14, 0x6b, 0x1e, 0x00, 0xa8,
0x9f, 0xfa, 0x7d, 0x00, 0xf9, 0xe0, 0x9d, 0x0f,
0x90, 0x8c, 0x90, 0xa8, 0xa1, 0x37, 0x6b, 0xda,
0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
0x18, 0x30, 0x16, 0x80, 0x14, 0x6b, 0x1e, 0x00,
0xa8, 0x9f, 0xfa, 0x7d, 0x00, 0xf9, 0xe0, 0x9d,
0x0f, 0x90, 0x8c, 0x90, 0xa8, 0xa1, 0x37, 0x6b,
0xda, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13,
0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30,
0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82,
0x01, 0x01, 0x00, 0xcd, 0x6f, 0x73, 0x4d, 0x56,
0x0b, 0xf3, 0x2e, 0x1c, 0xe2, 0x02, 0x0c, 0x14,
0xbb, 0x2f, 0xdd, 0x3c, 0x43, 0xfe, 0xdf, 0x94,
0x2d, 0xa9, 0x89, 0x81, 0x51, 0xf8, 0x5f, 0xa7,
0xa0, 0x13, 0xaa, 0xcc, 0xb0, 0x18, 0xe2, 0x57,
0x3e, 0x0d, 0x29, 0x93, 0xe8, 0x95, 0xd5, 0x1b,
0x53, 0xd2, 0x51, 0xf2, 0xbd, 0xf5, 0x9e, 0x7b,
0x22, 0x65, 0x62, 0x5c, 0xc4, 0x4c, 0x1d, 0xe8,
0xe9, 0xc3, 0xd4, 0x2b, 0xe7, 0x78, 0xcb, 0x10,
0xf3, 0xfe, 0x06, 0x83, 0xdc, 0x3a, 0x1e, 0x62,
0x10, 0xc0, 0x46, 0x77, 0xc6, 0x9d, 0x9f, 0xab,
0x96, 0x25, 0x5c, 0xfb, 0x26, 0xc1, 0x15, 0x1f,
0xa5, 0x33, 0xee, 0x4f, 0x9a, 0x14, 0x6a, 0x14,
0x97, 0x93, 0x2b, 0x95, 0x0b, 0xdc, 0xa8, 0xd7,
0x69, 0x2e, 0xf0, 0x01, 0x0e, 0xfd, 0x4e, 0xd0,
0xd9, 0xa8, 0xe5, 0x65, 0xde, 0xfb, 0xca, 0xca,
0x1c, 0x5f, 0xf9, 0x53, 0xa0, 0x87, 0xe7, 0x33,
0x9b, 0x2f, 0xcf, 0xe4, 0x13, 0xfc, 0xec, 0x7a,
0x6c, 0xb0, 0x90, 0x13, 0x9b, 0xb6, 0xc5, 0x03,
0xf6, 0x0e, 0x5e, 0xe2, 0xe4, 0x26, 0xc1, 0x7e,
0x53, 0xfe, 0x69, 0xa3, 0xc7, 0xd8, 0x8e, 0x6e,
0x94, 0x32, 0xa0, 0xde, 0xca, 0xb6, 0xcc, 0xd6,
0x01, 0xd5, 0x78, 0x40, 0x28, 0x63, 0x9b, 0xee,
0xcf, 0x09, 0x3b, 0x35, 0x04, 0xf0, 0x14, 0x02,
0xf6, 0x80, 0x0e, 0x90, 0xb2, 0x94, 0xd2, 0x25,
0x16, 0xb8, 0x7a, 0x76, 0x87, 0x84, 0x9f, 0x84,
0xc5, 0xaf, 0xc2, 0x6d, 0x68, 0x7a, 0x84, 0x9c,
0xc6, 0x8a, 0x63, 0x60, 0x87, 0x6a, 0x25, 0xc1,
0xa1, 0x78, 0x0f, 0xba, 0xe8, 0x5f, 0xe1, 0xba,
0xac, 0xa4, 0x6f, 0xdd, 0x09, 0x3f, 0x12, 0xcb,
0x1d, 0xf3, 0xcf, 0x48, 0xd7, 0xd3, 0x26, 0xe8,
0x9c, 0xc3, 0x53, 0xb3, 0xba, 0xdc, 0x32, 0x99,
0x98, 0x96, 0xd6, 0x16, 0x03, 0x01, 0x00, 0x99,
0x0d, 0x00, 0x00, 0x91, 0x03, 0x01, 0x02, 0x40,
0x00, 0x8b, 0x00, 0x89, 0x30, 0x81, 0x86, 0x31,
0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09,
0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x02, 0x4e,
0x59, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55,
0x04, 0x07, 0x0c, 0x08, 0x42, 0x72, 0x6f, 0x6f,
0x6b, 0x6c, 0x79, 0x6e, 0x31, 0x21, 0x30, 0x1f,
0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x18, 0x4d,
0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75,
0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31,
0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03,
0x0c, 0x08, 0x6d, 0x79, 0x63, 0x61, 0x2e, 0x6f,
0x72, 0x67, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x09,
0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09,
0x01, 0x16, 0x12, 0x6a, 0x76, 0x73, 0x68, 0x61,
0x68, 0x69, 0x64, 0x40, 0x67, 0x6d, 0x61, 0x69,
0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x0e, 0x00, 0x00,
0x00,
},
{
0x16, 0x03, 0x01, 0x0a, 0xfb, 0x0b, 0x00, 0x0a,
0xf7, 0x00, 0x0a, 0xf4, 0x00, 0x03, 0x7e, 0x30,
0x82, 0x03, 0x7a, 0x30, 0x82, 0x02, 0x62, 0x02,
0x09, 0x00, 0xb4, 0x47, 0x58, 0x57, 0x2b, 0x67,
0xc8, 0xc2, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
0x00, 0x30, 0x81, 0x80, 0x31, 0x0b, 0x30, 0x09,
0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
0x04, 0x08, 0x0c, 0x02, 0x4e, 0x59, 0x31, 0x11,
0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c,
0x08, 0x42, 0x72, 0x6f, 0x6f, 0x6b, 0x6c, 0x79,
0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55,
0x04, 0x0a, 0x0c, 0x0c, 0x4d, 0x79, 0x20, 0x43,
0x41, 0x20, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04,
0x03, 0x0c, 0x0e, 0x6d, 0x79, 0x63, 0x61, 0x63,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x6f,
0x6d, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x09, 0x2a,
0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01,
0x16, 0x12, 0x6a, 0x76, 0x73, 0x68, 0x61, 0x68,
0x69, 0x64, 0x40, 0x67, 0x6d, 0x61, 0x69, 0x6c,
0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d,
0x31, 0x33, 0x30, 0x35, 0x32, 0x36, 0x32, 0x31,
0x34, 0x34, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31,
0x33, 0x30, 0x36, 0x32, 0x35, 0x32, 0x31, 0x34,
0x34, 0x30, 0x30, 0x5a, 0x30, 0x7d, 0x31, 0x0b,
0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
0x02, 0x55, 0x53, 0x31, 0x11, 0x30, 0x0f, 0x06,
0x03, 0x55, 0x04, 0x08, 0x0c, 0x08, 0x4e, 0x65,
0x77, 0x20, 0x59, 0x6f, 0x72, 0x6b, 0x31, 0x11,
0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c,
0x08, 0x42, 0x72, 0x6f, 0x6f, 0x6b, 0x6c, 0x79,
0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,
0x04, 0x0a, 0x0c, 0x07, 0x4d, 0x79, 0x20, 0x4c,
0x65, 0x61, 0x66, 0x31, 0x13, 0x30, 0x11, 0x06,
0x03, 0x55, 0x04, 0x03, 0x0c, 0x0a, 0x6d, 0x79,
0x6c, 0x65, 0x61, 0x66, 0x2e, 0x63, 0x6f, 0x6d,
0x31, 0x21, 0x30, 0x1f, 0x06, 0x09, 0x2a, 0x86,
0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16,
0x12, 0x6a, 0x76, 0x73, 0x68, 0x61, 0x68, 0x69,
0x64, 0x40, 0x67, 0x6d, 0x61, 0x69, 0x6c, 0x2e,
0x63, 0x6f, 0x6d, 0x30, 0x82, 0x01, 0x22, 0x30,
0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
0x82, 0x01, 0x01, 0x00, 0xa0, 0xa3, 0xef, 0xc1,
0x44, 0x7d, 0xa2, 0xe3, 0x71, 0x98, 0x27, 0x63,
0xb3, 0x1d, 0x71, 0x50, 0xa6, 0x34, 0x15, 0xcb,
0xc9, 0x2a, 0xc3, 0xea, 0xe4, 0x9e, 0x9c, 0x49,
0xa6, 0x01, 0x9b, 0x7e, 0xa9, 0xb5, 0x7a, 0xff,
0x15, 0x92, 0x71, 0xc8, 0x97, 0x9c, 0x25, 0xb7,
0x79, 0x2b, 0xff, 0xab, 0xc6, 0xb1, 0xa7, 0x00,
0x90, 0xb2, 0x8b, 0xd7, 0x71, 0xd5, 0xc2, 0x3a,
0xe6, 0x82, 0x42, 0x37, 0x89, 0x41, 0x04, 0xb0,
0xba, 0xc7, 0x5b, 0x8a, 0x43, 0x9f, 0x97, 0x39,
0x0c, 0x0f, 0xd5, 0x6d, 0x9e, 0x8d, 0xeb, 0xc0,
0x26, 0xc5, 0x18, 0xe8, 0x7a, 0x3d, 0x32, 0x2e,
0x38, 0x90, 0x40, 0x5b, 0x39, 0x2c, 0x07, 0xcb,
0x24, 0x10, 0xc5, 0xc9, 0x3b, 0xe3, 0x66, 0x47,
0x57, 0xb9, 0x6a, 0xad, 0x44, 0xf8, 0xd0, 0x70,
0x62, 0x3b, 0x8e, 0xed, 0x60, 0x5f, 0x22, 0xf8,
0xb8, 0x0c, 0xc9, 0x41, 0x2b, 0xc9, 0x80, 0x6e,
0x4e, 0x1b, 0xe1, 0x20, 0xfc, 0x47, 0xa4, 0xac,
0xc3, 0x3f, 0xe6, 0xc2, 0x81, 0x79, 0x03, 0x37,
0x25, 0x89, 0xca, 0xd6, 0xa5, 0x46, 0x91, 0x63,
0x41, 0xc5, 0x3e, 0xd5, 0xed, 0x7f, 0x4f, 0x8d,
0x06, 0xc0, 0x89, 0x00, 0xbe, 0x37, 0x7b, 0x7e,
0x73, 0xca, 0x70, 0x00, 0x14, 0x34, 0xbe, 0x47,
0xbc, 0xb2, 0x6a, 0x28, 0xa5, 0x29, 0x84, 0xa8,
0x9d, 0xc8, 0x1e, 0x77, 0x66, 0x1f, 0x9f, 0xaa,
0x2b, 0x47, 0xdb, 0xdd, 0x6b, 0x9c, 0xa8, 0xfc,
0x82, 0x36, 0x94, 0x62, 0x0d, 0x5c, 0x3f, 0xb2,
0x01, 0xb4, 0xa5, 0xb8, 0xc6, 0x0e, 0x94, 0x5b,
0xec, 0x5e, 0xbb, 0x7a, 0x63, 0x24, 0xf1, 0xf9,
0xd6, 0x50, 0x08, 0xc1, 0xa3, 0xcc, 0x90, 0x07,
0x5b, 0x04, 0x04, 0x42, 0x74, 0xcf, 0x37, 0xfa,
0xf0, 0xa5, 0xd9, 0xd3, 0x86, 0x89, 0x89, 0x18,
0xf3, 0x4c, 0xe2, 0x11, 0x02, 0x03, 0x01, 0x00,
0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00,
0x03, 0x82, 0x01, 0x01, 0x00, 0x90, 0xbb, 0xf9,
0x5e, 0xba, 0x17, 0x1f, 0xac, 0x21, 0x9f, 0x6b,
0x4a, 0x46, 0xd0, 0x6d, 0x3c, 0x8f, 0x3d, 0xf8,
0x5e, 0x3e, 0x72, 0xaf, 0xa0, 0x1a, 0xf3, 0xff,
0x89, 0xac, 0x5b, 0x7a, 0xe2, 0x91, 0x2a, 0x23,
0x85, 0xc6, 0x4d, 0x47, 0x67, 0x01, 0x08, 0xa8,
0x05, 0x1d, 0x01, 0x60, 0x50, 0x5f, 0x59, 0xad,
0xfe, 0x7b, 0xc6, 0x0c, 0x54, 0x90, 0x68, 0x70,
0x67, 0x2e, 0xed, 0x87, 0xf8, 0x69, 0x8a, 0xac,
0x32, 0xfe, 0x6f, 0x90, 0x19, 0x2a, 0x64, 0x8d,
0x82, 0x66, 0x05, 0x43, 0x88, 0xee, 0xf2, 0x30,
0xed, 0xa4, 0x8f, 0xbf, 0xd6, 0x57, 0x20, 0xd4,
0x43, 0x1d, 0x52, 0x96, 0x6f, 0xae, 0x09, 0x96,
0x01, 0x52, 0x38, 0xe3, 0xaf, 0x99, 0xd7, 0xdc,
0x14, 0x99, 0xc4, 0x8b, 0x0e, 0x04, 0x0f, 0xb3,
0x14, 0x14, 0xd4, 0xa5, 0x93, 0xe1, 0xc9, 0x8a,
0x81, 0xef, 0x63, 0xfc, 0x36, 0x77, 0x05, 0x06,
0xf0, 0x2a, 0x04, 0x0a, 0xbe, 0x2e, 0xce, 0x81,
0x3d, 0x23, 0xa1, 0xda, 0xd8, 0xeb, 0xc6, 0xea,
0x5e, 0xcf, 0x28, 0x36, 0x51, 0x31, 0x95, 0x5e,
0x40, 0x04, 0xed, 0xac, 0xc1, 0xc8, 0x56, 0x69,
0x87, 0xec, 0x3b, 0x03, 0x3e, 0x9d, 0x0f, 0x4c,
0x4c, 0xeb, 0xd7, 0xba, 0x26, 0xdf, 0xe3, 0xde,
0x10, 0xee, 0x93, 0x62, 0x8d, 0x73, 0x52, 0x6e,
0xff, 0x37, 0x36, 0x98, 0x7b, 0x2d, 0x56, 0x4c,
0xba, 0x09, 0xb8, 0xa7, 0xf0, 0x3b, 0x16, 0x81,
0xca, 0xdb, 0x43, 0xab, 0xec, 0x4c, 0x6e, 0x7c,
0xc1, 0x0b, 0x22, 0x22, 0x43, 0x1d, 0xb6, 0x0c,
0xc1, 0xb9, 0xcf, 0xe4, 0x53, 0xee, 0x1d, 0x3e,
0x88, 0xa7, 0x13, 0xbe, 0x7f, 0xbd, 0xae, 0x72,
0xcf, 0xcd, 0x63, 0xd2, 0xc3, 0x18, 0x58, 0x92,
0xa2, 0xad, 0xb5, 0x09, 0x9d, 0x91, 0x03, 0xdd,
0x3c, 0xe2, 0x1c, 0xde, 0x78, 0x00, 0x03, 0x88,
0x30, 0x82, 0x03, 0x84, 0x30, 0x82, 0x02, 0x6c,
0x02, 0x09, 0x00, 0xab, 0xed, 0xa6, 0xe4, 0x4a,
0x2b, 0x2b, 0xf8, 0x30, 0x0d, 0x06, 0x09, 0x2a,
0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05,
0x05, 0x00, 0x30, 0x81, 0x86, 0x31, 0x0b, 0x30,
0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
0x55, 0x04, 0x08, 0x0c, 0x02, 0x4e, 0x59, 0x31,
0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x07,
0x0c, 0x08, 0x42, 0x72, 0x6f, 0x6f, 0x6b, 0x6c,
0x79, 0x6e, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03,
0x55, 0x04, 0x0a, 0x0c, 0x18, 0x4d, 0x79, 0x20,
0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68,
0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x11, 0x30,
0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x08,
0x6d, 0x79, 0x63, 0x61, 0x2e, 0x6f, 0x72, 0x67,
0x31, 0x21, 0x30, 0x1f, 0x06, 0x09, 0x2a, 0x86,
0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16,
0x12, 0x6a, 0x76, 0x73, 0x68, 0x61, 0x68, 0x69,
0x64, 0x40, 0x67, 0x6d, 0x61, 0x69, 0x6c, 0x2e,
0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x31,
0x33, 0x30, 0x35, 0x32, 0x36, 0x32, 0x31, 0x31,
0x38, 0x34, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x33,
0x30, 0x36, 0x32, 0x35, 0x32, 0x31, 0x31, 0x38,
0x34, 0x30, 0x5a, 0x30, 0x81, 0x80, 0x31, 0x0b,
0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06,
0x03, 0x55, 0x04, 0x08, 0x0c, 0x02, 0x4e, 0x59,
0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04,
0x07, 0x0c, 0x08, 0x42, 0x72, 0x6f, 0x6f, 0x6b,
0x6c, 0x79, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06,
0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x4d, 0x79,
0x20, 0x43, 0x41, 0x20, 0x43, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03,
0x55, 0x04, 0x03, 0x0c, 0x0e, 0x6d, 0x79, 0x63,
0x61, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e,
0x63, 0x6f, 0x6d, 0x31, 0x21, 0x30, 0x1f, 0x06,
0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
0x09, 0x01, 0x16, 0x12, 0x6a, 0x76, 0x73, 0x68,
0x61, 0x68, 0x69, 0x64, 0x40, 0x67, 0x6d, 0x61,
0x69, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x82,
0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82,
0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xce,
0x13, 0xf0, 0x72, 0xb0, 0x61, 0xc8, 0x18, 0x37,
0x8a, 0x41, 0x3d, 0x20, 0xa1, 0x1c, 0xcb, 0xbf,
0xf6, 0x3b, 0x74, 0x26, 0x2a, 0x96, 0x11, 0xec,
0x53, 0xa1, 0xcc, 0x7d, 0x77, 0x56, 0x45, 0x0f,
0x36, 0xb7, 0xf2, 0x48, 0x92, 0x1a, 0x62, 0xcc,
0xb6, 0xc0, 0xa1, 0x2f, 0x44, 0x2b, 0xc1, 0x89,
0xcb, 0x6e, 0x1e, 0xdb, 0x57, 0x92, 0xd5, 0x97,
0x60, 0x8c, 0x41, 0x2c, 0xd9, 0x20, 0xfe, 0xe9,
0x1f, 0x8e, 0xfc, 0x7f, 0x02, 0x44, 0x0f, 0x28,
0x81, 0xd6, 0x0c, 0xcd, 0xbc, 0xf0, 0x57, 0x6c,
0xcc, 0xa7, 0xba, 0x06, 0xa0, 0xa6, 0x91, 0xda,
0xef, 0x46, 0x8a, 0x60, 0x0f, 0x52, 0x6c, 0x90,
0x6c, 0x8c, 0x44, 0xaf, 0xb0, 0x9d, 0x90, 0xba,
0x21, 0x58, 0xa0, 0x3c, 0xee, 0x54, 0xb5, 0x29,
0x26, 0x1f, 0x0a, 0xac, 0xef, 0x48, 0x68, 0x33,
0xd0, 0x33, 0xd0, 0x8b, 0x1a, 0xec, 0x6e, 0x2f,
0xb5, 0x4a, 0x53, 0xc2, 0x1a, 0xd2, 0xf1, 0x50,
0x05, 0x59, 0x5c, 0xd9, 0xda, 0x03, 0x0a, 0x47,
0xb7, 0xdd, 0xf7, 0x3a, 0x69, 0xf5, 0x4e, 0xea,
0x4a, 0xc2, 0xca, 0x54, 0xb0, 0x8b, 0x76, 0xe1,
0x02, 0x2d, 0x52, 0x67, 0xb9, 0xdd, 0x50, 0xc9,
0x3b, 0x07, 0x24, 0x22, 0x6a, 0x00, 0x1d, 0x58,
0x83, 0xa8, 0xec, 0x95, 0xf1, 0xda, 0xe2, 0x73,
0xa0, 0xa1, 0x72, 0x60, 0x9e, 0x86, 0x53, 0xcb,
0x45, 0xa8, 0xc2, 0xa0, 0x50, 0xa0, 0x53, 0xd6,
0xfc, 0x18, 0x84, 0xb5, 0x4a, 0x26, 0xd0, 0xa2,
0xaa, 0xd0, 0xff, 0xb6, 0xfe, 0x3a, 0x9c, 0xb5,
0x19, 0x3b, 0x3f, 0xe1, 0x48, 0x0d, 0xa4, 0x09,
0x4f, 0x83, 0xc9, 0xc0, 0xc9, 0xa6, 0x0b, 0x58,
0x1f, 0x1c, 0x7b, 0xac, 0xa2, 0x42, 0xbc, 0x61,
0xf4, 0x21, 0x8a, 0x00, 0xda, 0x14, 0xa0, 0x60,
0x03, 0xfe, 0x93, 0x12, 0x6c, 0x56, 0xcd, 0x02,
0x03, 0x01, 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09,
0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
0x25, 0x29, 0x3b, 0x1e, 0xc3, 0x58, 0x32, 0xe6,
0x23, 0xc8, 0xee, 0x18, 0xf0, 0x1d, 0x62, 0x6d,
0x3b, 0x59, 0x99, 0x3a, 0xfe, 0x49, 0x72, 0x07,
0x3f, 0x58, 0x93, 0xdb, 0xc0, 0xaf, 0xb0, 0xb3,
0x5c, 0xd1, 0x5c, 0x98, 0xc8, 0xea, 0x4a, 0xe4,
0x58, 0x73, 0x0d, 0x57, 0xc5, 0x13, 0x7c, 0x5c,
0x79, 0x66, 0xda, 0x04, 0x1d, 0xe5, 0x98, 0xda,
0x35, 0x47, 0x44, 0xb0, 0xd2, 0x7a, 0x66, 0x9d,
0xcd, 0x41, 0xa5, 0x8f, 0xa1, 0x11, 0xb2, 0x1a,
0x87, 0xc0, 0xcd, 0x55, 0xed, 0xb4, 0x7b, 0x33,
0x72, 0xeb, 0xf7, 0xe3, 0x7b, 0x8b, 0x02, 0x86,
0xe9, 0x2b, 0x26, 0x32, 0x9f, 0x99, 0xf1, 0xcb,
0x93, 0xab, 0xb9, 0x16, 0xb3, 0x9a, 0xb2, 0x22,
0x13, 0x21, 0x1f, 0x5b, 0xcc, 0xa2, 0x59, 0xbb,
0x69, 0xf2, 0xb8, 0x07, 0x80, 0xce, 0x0c, 0xf7,
0x98, 0x4c, 0x85, 0xc2, 0x96, 0x6a, 0x22, 0x05,
0xe9, 0xbe, 0x48, 0xb0, 0x02, 0x5b, 0x69, 0x28,
0x18, 0x88, 0x96, 0xe3, 0xd7, 0xc6, 0x7a, 0xd3,
0xe9, 0x99, 0xff, 0x9d, 0xc3, 0x61, 0x4d, 0x9a,
0x96, 0xf2, 0xc6, 0x33, 0x4d, 0xe5, 0x5d, 0x5a,
0x68, 0x64, 0x5a, 0x82, 0x35, 0x65, 0x25, 0xe3,
0x8c, 0x5b, 0xb0, 0xf6, 0x96, 0x56, 0xbc, 0xbf,
0x97, 0x76, 0x4b, 0x66, 0x44, 0x81, 0xa4, 0xc4,
0xa7, 0x31, 0xc5, 0xa1, 0x4f, 0xe8, 0xa4, 0xca,
0x20, 0xf5, 0x01, 0x5b, 0x99, 0x4f, 0x5a, 0xf4,
0xf0, 0x78, 0xbf, 0x71, 0x49, 0xd5, 0xf1, 0xc1,
0xa2, 0x18, 0xfd, 0x72, 0x5b, 0x16, 0xe8, 0x92,
0xc7, 0x37, 0x48, 0xaf, 0xee, 0x24, 0xfc, 0x35,
0x0b, 0xc2, 0xdd, 0x05, 0xc7, 0x6e, 0xa3, 0x29,
0xbb, 0x29, 0x7d, 0xd3, 0x2b, 0x94, 0x80, 0xc3,
0x40, 0x53, 0x0e, 0x03, 0x54, 0x3d, 0x7b, 0x8b,
0xce, 0xf9, 0xa4, 0x03, 0x27, 0x63, 0xec, 0x51,
0x00, 0x03, 0xe5, 0x30, 0x82, 0x03, 0xe1, 0x30,
0x82, 0x02, 0xc9, 0xa0, 0x03, 0x02, 0x01, 0x02,
0x02, 0x09, 0x00, 0xcc, 0x22, 0x4c, 0x4b, 0x98,
0xa2, 0x88, 0xfc, 0x30, 0x0d, 0x06, 0x09, 0x2a,
0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05,
0x05, 0x00, 0x30, 0x81, 0x86, 0x31, 0x0b, 0x30,
0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
0x55, 0x04, 0x08, 0x0c, 0x02, 0x4e, 0x59, 0x31,
0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x07,
0x0c, 0x08, 0x42, 0x72, 0x6f, 0x6f, 0x6b, 0x6c,
0x79, 0x6e, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03,
0x55, 0x04, 0x0a, 0x0c, 0x18, 0x4d, 0x79, 0x20,
0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68,
0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x11, 0x30,
0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x08,
0x6d, 0x79, 0x63, 0x61, 0x2e, 0x6f, 0x72, 0x67,
0x31, 0x21, 0x30, 0x1f, 0x06, 0x09, 0x2a, 0x86,
0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16,
0x12, 0x6a, 0x76, 0x73, 0x68, 0x61, 0x68, 0x69,
0x64, 0x40, 0x67, 0x6d, 0x61, 0x69, 0x6c, 0x2e,
0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x31,
0x33, 0x30, 0x35, 0x32, 0x36, 0x32, 0x31, 0x30,
0x35, 0x30, 0x31, 0x5a, 0x17, 0x0d, 0x32, 0x33,
0x30, 0x35, 0x32, 0x34, 0x32, 0x31, 0x30, 0x35,
0x30, 0x31, 0x5a, 0x30, 0x81, 0x86, 0x31, 0x0b,
0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06,
0x03, 0x55, 0x04, 0x08, 0x0c, 0x02, 0x4e, 0x59,
0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04,
0x07, 0x0c, 0x08, 0x42, 0x72, 0x6f, 0x6f, 0x6b,
0x6c, 0x79, 0x6e, 0x31, 0x21, 0x30, 0x1f, 0x06,
0x03, 0x55, 0x04, 0x0a, 0x0c, 0x18, 0x4d, 0x79,
0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74,
0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x11,
0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,
0x08, 0x6d, 0x79, 0x63, 0x61, 0x2e, 0x6f, 0x72,
0x67, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x09, 0x2a,
0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01,
0x16, 0x12, 0x6a, 0x76, 0x73, 0x68, 0x61, 0x68,
0x69, 0x64, 0x40, 0x67, 0x6d, 0x61, 0x69, 0x6c,
0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x82, 0x01, 0x22,
0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
0x02, 0x82, 0x01, 0x01, 0x00, 0xf0, 0xfb, 0xad,
0x80, 0x5e, 0x37, 0xd3, 0x6d, 0xee, 0x2e, 0xcc,
0xbc, 0x0c, 0xd7, 0x56, 0x4b, 0x56, 0x45, 0xcd,
0x28, 0xb6, 0x22, 0xe9, 0xe2, 0x0f, 0xd1, 0x87,
0x2a, 0x27, 0xce, 0x77, 0x8d, 0x6e, 0x0e, 0x0f,
0xfb, 0x66, 0xe1, 0xb5, 0x0e, 0x9a, 0xb6, 0x05,
0x8e, 0xb3, 0xe1, 0xc5, 0x77, 0x86, 0x5b, 0x46,
0xd2, 0x0b, 0x92, 0x03, 0x1b, 0x89, 0x0c, 0x1b,
0x10, 0x0e, 0x99, 0x8f, 0xe2, 0x17, 0xe8, 0xc2,
0x30, 0x00, 0x47, 0xd6, 0xfc, 0xf9, 0x0f, 0x3b,
0x75, 0x34, 0x8d, 0x4d, 0xb0, 0x99, 0xb7, 0xa0,
0x6d, 0xa0, 0xb6, 0xad, 0xda, 0x07, 0x5e, 0x38,
0x2e, 0x02, 0xe4, 0x30, 0x6d, 0xae, 0x13, 0x72,
0xd4, 0xc8, 0xce, 0x14, 0x07, 0xae, 0x23, 0x8c,
0x8f, 0x9e, 0x8c, 0x60, 0xd6, 0x06, 0xb9, 0xef,
0x00, 0x18, 0xc0, 0x1d, 0x25, 0x1e, 0xda, 0x3e,
0x2f, 0xcf, 0x2b, 0x56, 0x84, 0x9e, 0x30, 0x21,
0xc7, 0x29, 0xf6, 0x03, 0x8a, 0x24, 0xf9, 0x34,
0xac, 0x65, 0x9d, 0x80, 0x36, 0xc8, 0x3b, 0x15,
0x10, 0xbd, 0x51, 0xe9, 0xbc, 0x02, 0xe1, 0xe9,
0xb3, 0x5a, 0x9a, 0x99, 0x41, 0x1b, 0x27, 0xa0,
0x4d, 0x50, 0x9e, 0x27, 0x7f, 0xa1, 0x7d, 0x09,
0x87, 0xbd, 0x8a, 0xca, 0x5f, 0xb1, 0xa5, 0x08,
0xb8, 0x04, 0xd4, 0x52, 0x89, 0xaa, 0xe0, 0x7d,
0x42, 0x2e, 0x2f, 0x15, 0xee, 0x66, 0x57, 0x0f,
0x13, 0x19, 0x45, 0xa8, 0x4b, 0x5d, 0x81, 0x66,
0xcc, 0x12, 0x37, 0x94, 0x5e, 0xfd, 0x3c, 0x10,
0x81, 0x51, 0x3f, 0xfa, 0x0f, 0xdd, 0xa1, 0x89,
0x03, 0xa9, 0x78, 0x91, 0xf5, 0x3b, 0xf3, 0xbc,
0xac, 0xbe, 0x93, 0x30, 0x2e, 0xbe, 0xca, 0x7f,
0x46, 0xd3, 0x28, 0xb4, 0x4e, 0x91, 0x7b, 0x5b,
0x43, 0x6c, 0xaf, 0x9b, 0x5c, 0x6a, 0x6d, 0x5a,
0xdb, 0x79, 0x5e, 0x6a, 0x6b, 0x02, 0x03, 0x01,
0x00, 0x01, 0xa3, 0x50, 0x30, 0x4e, 0x30, 0x1d,
0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
0x14, 0x6b, 0x1e, 0x00, 0xa8, 0x9f, 0xfa, 0x7d,
0x00, 0xf9, 0xe0, 0x9d, 0x0f, 0x90, 0x8c, 0x90,
0xa8, 0xa1, 0x37, 0x6b, 0xda, 0x30, 0x1f, 0x06,
0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
0x80, 0x14, 0x6b, 0x1e, 0x00, 0xa8, 0x9f, 0xfa,
0x7d, 0x00, 0xf9, 0xe0, 0x9d, 0x0f, 0x90, 0x8c,
0x90, 0xa8, 0xa1, 0x37, 0x6b, 0xda, 0x30, 0x0c,
0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, 0x30,
0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09,
0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
0xcd, 0x6f, 0x73, 0x4d, 0x56, 0x0b, 0xf3, 0x2e,
0x1c, 0xe2, 0x02, 0x0c, 0x14, 0xbb, 0x2f, 0xdd,
0x3c, 0x43, 0xfe, 0xdf, 0x94, 0x2d, 0xa9, 0x89,
0x81, 0x51, 0xf8, 0x5f, 0xa7, 0xa0, 0x13, 0xaa,
0xcc, 0xb0, 0x18, 0xe2, 0x57, 0x3e, 0x0d, 0x29,
0x93, 0xe8, 0x95, 0xd5, 0x1b, 0x53, 0xd2, 0x51,
0xf2, 0xbd, 0xf5, 0x9e, 0x7b, 0x22, 0x65, 0x62,
0x5c, 0xc4, 0x4c, 0x1d, 0xe8, 0xe9, 0xc3, 0xd4,
0x2b, 0xe7, 0x78, 0xcb, 0x10, 0xf3, 0xfe, 0x06,
0x83, 0xdc, 0x3a, 0x1e, 0x62, 0x10, 0xc0, 0x46,
0x77, 0xc6, 0x9d, 0x9f, 0xab, 0x96, 0x25, 0x5c,
0xfb, 0x26, 0xc1, 0x15, 0x1f, 0xa5, 0x33, 0xee,
0x4f, 0x9a, 0x14, 0x6a, 0x14, 0x97, 0x93, 0x2b,
0x95, 0x0b, 0xdc, 0xa8, 0xd7, 0x69, 0x2e, 0xf0,
0x01, 0x0e, 0xfd, 0x4e, 0xd0, 0xd9, 0xa8, 0xe5,
0x65, 0xde, 0xfb, 0xca, 0xca, 0x1c, 0x5f, 0xf9,
0x53, 0xa0, 0x87, 0xe7, 0x33, 0x9b, 0x2f, 0xcf,
0xe4, 0x13, 0xfc, 0xec, 0x7a, 0x6c, 0xb0, 0x90,
0x13, 0x9b, 0xb6, 0xc5, 0x03, 0xf6, 0x0e, 0x5e,
0xe2, 0xe4, 0x26, 0xc1, 0x7e, 0x53, 0xfe, 0x69,
0xa3, 0xc7, 0xd8, 0x8e, 0x6e, 0x94, 0x32, 0xa0,
0xde, 0xca, 0xb6, 0xcc, 0xd6, 0x01, 0xd5, 0x78,
0x40, 0x28, 0x63, 0x9b, 0xee, 0xcf, 0x09, 0x3b,
0x35, 0x04, 0xf0, 0x14, 0x02, 0xf6, 0x80, 0x0e,
0x90, 0xb2, 0x94, 0xd2, 0x25, 0x16, 0xb8, 0x7a,
0x76, 0x87, 0x84, 0x9f, 0x84, 0xc5, 0xaf, 0xc2,
0x6d, 0x68, 0x7a, 0x84, 0x9c, 0xc6, 0x8a, 0x63,
0x60, 0x87, 0x6a, 0x25, 0xc1, 0xa1, 0x78, 0x0f,
0xba, 0xe8, 0x5f, 0xe1, 0xba, 0xac, 0xa4, 0x6f,
0xdd, 0x09, 0x3f, 0x12, 0xcb, 0x1d, 0xf3, 0xcf,
0x48, 0xd7, 0xd3, 0x26, 0xe8, 0x9c, 0xc3, 0x53,
0xb3, 0xba, 0xdc, 0x32, 0x99, 0x98, 0x96, 0xd6,
0x16, 0x03, 0x01, 0x01, 0x06, 0x10, 0x00, 0x01,
0x02, 0x01, 0x00, 0x6e, 0xea, 0x15, 0x6f, 0x21,
0xbd, 0x2d, 0x14, 0xde, 0x9d, 0x02, 0xeb, 0xdf,
0x3b, 0x09, 0x75, 0xaf, 0x32, 0x80, 0x0c, 0xe2,
0xc2, 0x7b, 0x0d, 0xca, 0x24, 0x96, 0xf6, 0x3e,
0xa5, 0x97, 0xba, 0x0c, 0x50, 0x7e, 0xb3, 0x68,
0x58, 0xc6, 0xd8, 0xec, 0xab, 0xa9, 0xd9, 0x3a,
0xb1, 0x49, 0xea, 0x2f, 0xd7, 0xdb, 0x15, 0x1b,
0xb5, 0xaf, 0xec, 0xcc, 0x40, 0x5c, 0xe6, 0x0f,
0xc4, 0x33, 0x71, 0xe7, 0x41, 0xc0, 0x04, 0x89,
0x60, 0x3e, 0xb7, 0xe6, 0xda, 0x38, 0x62, 0x27,
0x6a, 0xd9, 0xfb, 0x93, 0x94, 0x9d, 0xc1, 0x63,
0x92, 0x5c, 0x88, 0x19, 0x38, 0x81, 0x79, 0x9d,
0x59, 0x48, 0x5e, 0xd3, 0xc8, 0xea, 0xcb, 0x6e,
0x66, 0x66, 0x03, 0xdc, 0x0c, 0x2d, 0x95, 0xb1,
0x4d, 0x68, 0xc7, 0xc5, 0x6e, 0xfa, 0x94, 0x14,
0xdf, 0x2c, 0x70, 0x69, 0x04, 0xf4, 0x69, 0xf1,
0xf0, 0x07, 0xbd, 0x23, 0x53, 0x63, 0xb3, 0x41,
0xec, 0xa7, 0x10, 0xa5, 0x04, 0x84, 0x24, 0xb5,
0xf5, 0x0c, 0x0f, 0x5d, 0x02, 0x47, 0x79, 0x60,
0x76, 0xbb, 0xdf, 0x60, 0xa6, 0xd7, 0x4d, 0x08,
0x7d, 0xa6, 0x85, 0x4f, 0x61, 0xac, 0x96, 0x3d,
0xbc, 0xaf, 0x07, 0xb0, 0x7c, 0xb6, 0x23, 0x3e,
0x1f, 0x0a, 0x62, 0x77, 0x97, 0x77, 0xae, 0x33,
0x55, 0x0f, 0x85, 0xdf, 0xdc, 0xbe, 0xc6, 0xe0,
0xe0, 0x14, 0x83, 0x4c, 0x50, 0xf0, 0xe5, 0x2d,
0xdc, 0x0b, 0x74, 0x7f, 0xc3, 0x28, 0x98, 0x16,
0xda, 0x74, 0xe6, 0x40, 0xc2, 0xf0, 0xea, 0xc0,
0x00, 0xd5, 0xfc, 0x16, 0xe4, 0x43, 0xa1, 0xfc,
0x31, 0x19, 0x81, 0x62, 0xec, 0x2b, 0xfe, 0xcc,
0xe8, 0x19, 0xed, 0xa1, 0x1e, 0x6a, 0x49, 0x73,
0xde, 0xc4, 0xe9, 0x22, 0x0a, 0x21, 0xde, 0x45,
0x1e, 0x55, 0x12, 0xd9, 0x44, 0xef, 0x4e, 0xaa,
0x5e, 0x26, 0x57, 0x16, 0x03, 0x01, 0x01, 0x06,
0x0f, 0x00, 0x01, 0x02, 0x01, 0x00, 0x23, 0xde,
0xb0, 0x39, 0x60, 0xe9, 0x82, 0xb8, 0xed, 0x17,
0x78, 0xd2, 0x37, 0x0e, 0x85, 0x69, 0xda, 0xcc,
0x9f, 0x54, 0x4d, 0xda, 0xce, 0xe8, 0x5a, 0xeb,
0x3c, 0x61, 0x4c, 0x7a, 0x84, 0x1f, 0x21, 0x03,
0xb3, 0x8a, 0x74, 0x3b, 0x6a, 0x9e, 0x4f, 0x44,
0xd9, 0x75, 0x0a, 0xd8, 0x7e, 0x56, 0xa3, 0xef,
0x5a, 0xfe, 0x8a, 0x35, 0xce, 0x29, 0x18, 0xfe,
0xa6, 0x61, 0x8e, 0x8f, 0x00, 0x90, 0x2d, 0x85,
0xe3, 0x6c, 0x0e, 0x8d, 0x8c, 0x27, 0x80, 0x8c,
0x9f, 0x51, 0xe9, 0xd3, 0xe6, 0x7d, 0x70, 0xe9,
0xfb, 0xcb, 0xb8, 0x24, 0x94, 0x30, 0x9b, 0xba,
0x01, 0x14, 0x49, 0x9f, 0xaf, 0x09, 0xd8, 0x26,
0x1b, 0x23, 0xa4, 0xb8, 0xd9, 0x44, 0x0a, 0xdc,
0x4e, 0x27, 0xe7, 0x32, 0xf5, 0x9c, 0xf3, 0x8d,
0xa0, 0xc5, 0xc4, 0xbe, 0x92, 0x02, 0x85, 0x4f,
0x33, 0x8f, 0xa7, 0xf7, 0x87, 0xa9, 0x44, 0xf3,
0x64, 0xbd, 0x32, 0x04, 0xeb, 0xc5, 0xc3, 0x62,
0xe9, 0xda, 0x2f, 0x95, 0x5c, 0xf7, 0x58, 0x3e,
0xad, 0x35, 0xd7, 0x7e, 0xad, 0xdd, 0x32, 0x8d,
0xce, 0x81, 0x08, 0xad, 0x49, 0xf7, 0xdb, 0xf7,
0xaf, 0xe3, 0xc6, 0xb2, 0xdd, 0x76, 0x0c, 0xcf,
0x0f, 0x87, 0x79, 0x90, 0x10, 0x79, 0xc6, 0xc8,
0x7b, 0xe6, 0x23, 0xf2, 0xda, 0x33, 0xca, 0xe1,
0xf0, 0x59, 0x42, 0x43, 0x03, 0x56, 0x19, 0xe3,
0x8b, 0xe6, 0xa8, 0x70, 0xbc, 0x80, 0xfa, 0x24,
0xae, 0x03, 0x13, 0x30, 0x0d, 0x1f, 0xab, 0xb7,
0x82, 0xd9, 0x24, 0x90, 0x80, 0xbf, 0x75, 0xe1,
0x0d, 0x1c, 0xb2, 0xfe, 0x92, 0x2c, 0x4d, 0x21,
0xe9, 0x5d, 0xa1, 0x68, 0xf3, 0x16, 0xd8, 0x3f,
0xb2, 0xc3, 0x00, 0x3e, 0xd8, 0x42, 0x25, 0x5c,
0x90, 0x11, 0xc0, 0x1b, 0xd4, 0x26, 0x5c, 0x37,
0x47, 0xbd, 0xf8, 0x1e, 0x34, 0xa9, 0x14, 0x03,
0x01, 0x00, 0x01, 0x01, 0x16, 0x03, 0x01, 0x00,
0x24, 0x8f, 0x94, 0x7e, 0x01, 0xee, 0xd5, 0x4f,
0x83, 0x41, 0x31, 0xc0, 0x36, 0x81, 0x46, 0xc3,
0xc0, 0xcc, 0x9c, 0xea, 0x0f, 0x29, 0x04, 0x10,
0x43, 0x1e, 0x08, 0x6e, 0x08, 0xce, 0xb2, 0x62,
0xa6, 0x0f, 0x68, 0x9f, 0x99,
},
{
0x14, 0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03,
0x01, 0x00, 0x24, 0xd9, 0x46, 0x5b, 0xbf, 0xfd,
0x8a, 0xa1, 0x08, 0xd5, 0xf3, 0x0c, 0x1c, 0xd8,
0xa8, 0xb3, 0xe5, 0x89, 0x83, 0x9e, 0x23, 0x47,
0x81, 0x66, 0x77, 0x11, 0x98, 0xe5, 0xf4, 0xac,
0x06, 0xe9, 0x4c, 0x05, 0x8b, 0xc4, 0x16,
},
{
0x17, 0x03, 0x01, 0x00, 0x1a, 0xc5, 0x28, 0xfd,
0x71, 0xc0, 0xe6, 0x89, 0xb8, 0x82, 0x92, 0x1b,
0xdd, 0x39, 0xe5, 0xbf, 0x41, 0x82, 0x1f, 0xc1,
0xbc, 0x85, 0xe5, 0x32, 0x1b, 0x93, 0x46, 0x15,
0x03, 0x01, 0x00, 0x16, 0x1a, 0x8b, 0x10, 0x42,
0x12, 0xb2, 0xbd, 0xd3, 0xf1, 0x74, 0x1f, 0xc2,
0x10, 0x08, 0xc2, 0x79, 0x99, 0x2c, 0x55, 0xef,
0x4a, 0xbd,
},
}
var testClientChainCertificate = fromHex(
"2d2d2d2d2d424547494e2050524956415445204b" +
"45592d2d2d2d2d0a4d494945766749424144414e" +
"42676b71686b6947397730424151454641415343" +
"424b67776767536b41674541416f494241514367" +
"6f2b2f4252483269343347590a4a324f7a485846" +
"51706a515679386b71772b726b6e70784a706747" +
"6266716d31657638566b6e48496c35776c74336b" +
"722f367647736163416b4c4b4c313348560a776a" +
"726d676b493369554545734c7248573470446e35" +
"633544412f56625a364e3638416d78526a6f656a" +
"30794c6a6951514673354c41664c4a4244467954" +
"766a0a5a6b64587557717452506a51634749376a" +
"75316758794c3475417a4a5153764a6747354f47" +
"2b45672f45656b724d4d2f35734b4265514d334a" +
"596e4b317156470a6b574e427854375637583950" +
"6a5162416951432b4e33742b6338707741425130" +
"766b6538736d6f6f70536d45714a3349486e646d" +
"48352b714b306662335775630a715079434e7052" +
"694456772f7367473070626a4744705262374636" +
"37656d4d6b38666e5755416a426f387951423173" +
"4542454a307a7a6636384b585a3034614a0a6952" +
"6a7a544f495241674d424141454367674542414a" +
"4b613676326b5a3144596146786e586d7369624c" +
"386734426f67514c6a42307362524a6d746b6b4d" +
"54370a685343325873537551522f446c654d7148" +
"664555786731784a717579597643544d44585972" +
"473667354a5051744d4432465a424a7239626c65" +
"467138386c706a0a543766514e793571354c2b4f" +
"682f6b62433835436e623641753641656978776d" +
"2b6e77665a4f3766726b6278306d35516b715975" +
"5739392f452b69502b454e570a76396a68773436" +
"76515065563236494b79717656462b4f7362722f" +
"6152316138707948336361566e3579594a433346" +
"5855756c6f5a77516331714a6b4c434c4c0a375a" +
"49744f525a78514c486d4d4a654d44722f5a4942" +
"34675467645650636145375a4d5141714d6d3066" +
"4c6b6d7671723149526b77642f6831455a645650" +
"79320a742f6b6b43413039566336663749556575" +
"6f67706d705a50303130564e376b6277394a6348" +
"75544561564543675945417a47395679426e6d62" +
"6858496c57764f0a71583747524f2f5231636a2b" +
"6b564e35377876674b54756b35592b7a4d774a48" +
"32626c57435945513251753974446c476854756b" +
"664273385746772b6e6263460a7a6f706d535245" +
"6c6d464d2f6141536d464733574e5a7072696a68" +
"504b77726338376470636b31703131635a415478" +
"5a413168566d43743457616343673634690a4d74" +
"64507a334e2f34416147664956794d2b69624949" +
"35332f515543675945417953693556735a356f6a" +
"644a795077426e6c6142554231686f2b336b7068" +
"70770a7264572b2b4d796b51494a345564534437" +
"3052486e5a315839754359713978616671746c51" +
"664c44395963442f436d665264706461586c5673" +
"5249467a5a556c0a454630557149644e77337046" +
"68634f4a6d6e5a3241434470434342476f763542" +
"6e3068302b3137686a4b376f69315833716e4542" +
"7857326c7462593476556a500a44394c5330666e" +
"4a76703043675942504a527330714c4a4a464333" +
"6669796b712f57574d38727474354b364a584b50" +
"734b674b53644144577a7463316645434d0a7a65" +
"2b394a6a5a376b4d77557063666a644c2b745047" +
"3455563048326c524375635735414131396d7058" +
"50367454494733713737655a6b416e65516f6163" +
"41340a716c3073583051476c6a5763414e30464b" +
"6f4759733975582b6378445a6e7265362f52392f" +
"3930567766443237454c57546373677734633463" +
"514b42675143420a6f5432326e745a5a59396d6e" +
"72455a36752f492f4a332f35664e396737783733" +
"3177746e463745745a5361575453587364597256" +
"466b564f6362505135494a6f0a714a6a7249372b" +
"474a4d69376f6a4c69642f4c45656f31764f3163" +
"454158334f43723236554e38612f6c7434394f5a" +
"69354c337348556b756c475951755671650a6737" +
"6e6e4632437749544c34503645486443575a4461" +
"7a4136626d7375524f2b6462536e335a6c567651" +
"4b42674859524c5a665458536c44755264776977" +
"746b0a513148546b6d6b57694156726c4f577864" +
"5858456d546130303045574c46446145797a7358" +
"7834424863357166776b5a4e746b634a56396e58" +
"63536e647441530a35767a427a676e797a4f7962" +
"68315878484a3966427472414f3847555878446c" +
"6634394457616753393449763072596e616b7656" +
"2f673039786875415763366e0a5365757230576b" +
"5376453847666653734d485149584c456b0a2d2d" +
"2d2d2d454e442050524956415445204b45592d2d" +
"2d2d2d0a2d2d2d2d2d424547494e204345525449" +
"4649434154452d2d2d2d2d0a4d494944656a4343" +
"416d494343514330523168584b326649776a414e" +
"42676b71686b6947397730424151554641444342" +
"6744454c4d416b474131554542684d430a56564d" +
"78437a414a42674e564241674d416b355a4d5245" +
"77447759445651514844416843636d3976613278" +
"35626a45564d424d47413155454367774d54586b" +
"670a51304567513278705a5735304d5263774651" +
"5944565151444441357465574e68593278705a57" +
"35304c6d4e76625445684d423847435371475349" +
"62334451454a0a41525953616e5a7a6147466f61" +
"5752415a32316861577775593239744d42345844" +
"54457a4d4455794e6a49784e4451774d466f5844" +
"54457a4d4459794e5449780a4e4451774d466f77" +
"6654454c4d416b474131554542684d4356564d78" +
"4554415042674e564241674d4345356c6479425a" +
"62334a724d52457744775944565151480a444168" +
"43636d397661327835626a45514d413447413155" +
"454367774854586b67544756685a6a45544d4245" +
"47413155454177774b62586c735a57466d4c6d4e" +
"760a625445684d42384743537147534962334451" +
"454a41525953616e5a7a6147466f615752415a32" +
"316861577775593239744d494942496a414e4267" +
"6b71686b69470a397730424151454641414f4341" +
"5138414d49494243674b43415145416f4b507677" +
"5552396f754e786d43646a73783178554b593046" +
"63764a4b735071354a36630a536159426d333670" +
"7458722f465a4a78794a65634a6264354b2f2b72" +
"7872476e414a43796939647831634936356f4a43" +
"4e346c42424c43367831754b51352b580a4f5177" +
"50315732656a6576414a73555936486f394d6934" +
"346b4542624f5377487979515178636b3734325a" +
"4856376c7172555434304842694f343774594638" +
"690a2b4c674d7955457279594275546876684950" +
"7848704b7a44502b624367586b444e79574a7974" +
"616c5270466a5163552b3165312f543430477749" +
"6b41766a64370a666e504b634141554e4c354876" +
"4c4a714b4b5570684b6964794235335a682b6671" +
"697448323931726e4b6a38676a61555967316350" +
"374942744b5734786736550a572b78657533706a" +
"4a504835316c41497761504d6b41646242415243" +
"644d38332b76436c32644f4769596b5938307a69" +
"45514944415141424d413047435371470a534962" +
"3344514542425155414134494241514351752f6c" +
"65756863667243476661307047304730386a7a33" +
"34586a357972364161382f2b4a72467436347045" +
"710a493458475455646e4151696f425230425946" +
"42665761332b6538594d564a426f634763753759" +
"6634615971734d7635766b426b715a4932435a67" +
"5644694f37790a4d4f326b6a372f575679445551" +
"7831536c6d2b75435a5942556a6a6a72356e5833" +
"42535a7849734f42412b7a46425455705a506879" +
"597142373250384e6e63460a427641714241712b" +
"4c73364250534f6832746a72787570657a796732" +
"55544756586b414537617a4279465a70682b7737" +
"417a36644430784d363965364a742f6a0a336844" +
"756b324b4e63314a752f7a63326d487374566b79" +
"364362696e384473576763726251367673544735" +
"3877517369496b4d6474677a4275632f6b552b34" +
"640a506f696e4537352f766135797a38316a3073" +
"4d59574a4b697262554a6e5a454433547a69484e" +
"35340a2d2d2d2d2d454e44204345525449464943" +
"4154452d2d2d2d2d0a2d2d2d2d2d424547494e20" +
"43455254494649434154452d2d2d2d2d0a4d4949" +
"4468444343416d7743435143723761626b536973" +
"722b44414e42676b71686b694739773042415155" +
"4641444342686a454c4d416b474131554542684d" +
"430a56564d78437a414a42674e564241674d416b" +
"355a4d524577447759445651514844416843636d" +
"397661327835626a45684d423847413155454367" +
"775954586b670a5132567964476c6d61574e6864" +
"4755675158563061473979615852354d52457744" +
"775944565151444441687465574e684c6d39795a" +
"7a45684d423847435371470a534962334451454a" +
"41525953616e5a7a6147466f615752415a323168" +
"61577775593239744d4234584454457a4d445579" +
"4e6a49784d5467304d466f584454457a0a4d4459" +
"794e5449784d5467304d466f7767594178437a41" +
"4a42674e5642415954416c56544d517377435159" +
"445651514944414a4f575445524d413847413155" +
"450a42777749516e4a7662327473655734784654" +
"415442674e5642416f4d4445313549454e424945" +
"4e7361575675644445584d425547413155454177" +
"774f62586c6a0a59574e73615756756443356a62" +
"3230784954416642676b71686b69473977304243" +
"514557456d70326332686861476c6b5147647459" +
"576c734c6d4e76625443430a415349774451594a" +
"4b6f5a496876634e415145424251414467674550" +
"4144434341516f4367674542414d345438484b77" +
"596367594e34704250534368484d752f0a396a74" +
"304a697157456578546f63783964315a46447a61" +
"33386b6953476d4c4d747343684c30517277596e" +
"4c6268376256354c566c32434d51537a5a495037" +
"700a4834373866774a454479694231677a4e7650" +
"4258624d796e75676167707048613730614b5941" +
"3953624a42736a455376734a3251756946596f44" +
"7a75564c55700a4a68384b724f3949614450514d" +
"39434c477578754c37564b553849613076465142" +
"566c6332646f44436b6533336663366166564f36" +
"6b7243796c5377693362680a416931535a376e64" +
"554d6b37427951696167416457494f6f374a5878" +
"32754a7a6f4b4679594a364755387446714d4b67" +
"554b425431767759684c564b4a7443690a717444" +
"2f747634366e4c555a4f7a2f685341326b43552b" +
"447963444a7067745948787837724b4a43764748" +
"3049596f41326853675941502b6b784a73567330" +
"430a417745414154414e42676b71686b69473977" +
"30424151554641414f43415145414a536b374873" +
"4e594d75596a794f3459384231696254745a6d54" +
"722b535849480a5031695432384376734c4e6330" +
"567959794f704b3546687a445666464533786365" +
"5762614242336c6d4e6f3152305377306e706d6e" +
"63314270592b68456249610a6838444e56653230" +
"657a4e79362f666a6534734368756b724a6a4b66" +
"6d66484c6b36753546724f617369495449523962" +
"7a4b4a5a75326e79754165417a677a330a6d4579" +
"4677705a7149675870766b6977416c74704b4269" +
"496c755058786e7254365a6e2f6e634e68545a71" +
"573873597a54655664576d686b576f49315a5358" +
"6a0a6a46757739705a57764c2b58646b746d5249" +
"476b784b637878614650364b544b495055425735" +
"6c5057765477654c397853645878776149592f58" +
"4a62467569530a787a6449722b346b2f44554c77" +
"7430467832366a4b62737066644d726c49444451" +
"464d4f413151396534764f2b6151444a32507355" +
"513d3d0a2d2d2d2d2d454e442043455254494649" +
"434154452d2d2d2d2d0a2d2d2d2d2d424547494e" +
"2043455254494649434154452d2d2d2d2d0a4d49" +
"49443454434341736d67417749424167494a414d" +
"7769544575596f6f6a384d413047435371475349" +
"623344514542425155414d4947474d5173774351" +
"59440a5651514745774a56557a454c4d416b4741" +
"31554543417743546c6b784554415042674e5642" +
"41634d43454a796232397262486c754d53457748" +
"7759445651514b0a4442684e655342445a584a30" +
"61575a70593246305a5342426458526f62334a70" +
"64486b784554415042674e5642414d4d43473135" +
"5932457562334a6e4d5345770a4877594a4b6f5a" +
"496876634e41516b4246684a71646e4e6f595768" +
"705a45426e625746706243356a62323077486863" +
"4e4d544d774e5449324d6a45774e5441780a5768" +
"634e4d6a4d774e5449304d6a45774e544178576a" +
"4342686a454c4d416b474131554542684d435656" +
"4d78437a414a42674e564241674d416b355a4d52" +
"45770a447759445651514844416843636d397661" +
"327835626a45684d423847413155454367775954" +
"586b675132567964476c6d61574e686447556751" +
"585630614739790a615852354d52457744775944" +
"565151444441687465574e684c6d39795a7a4568" +
"4d42384743537147534962334451454a41525953" +
"616e5a7a6147466f615752410a5a323168615777" +
"75593239744d494942496a414e42676b71686b69" +
"47397730424151454641414f43415138414d4949" +
"4243674b434151454138507574674634330a3032" +
"33754c737938444e645753315a467a5369324975" +
"6e69443947484b69664f6434317544672f375a75" +
"4731447071324259367a34635633686c74473067" +
"75530a4178754a4442735144706d503468666f77" +
"6a4141523962382b5138376454534e5462435a74" +
"3642746f4c6174326764654f4334433544427472" +
"684e79314d6a4f0a46416575493479506e6f7867" +
"31676135377741597742306c48746f2b4c383872" +
"566f53654d4348484b665944696954354e4b786c" +
"6e59413279447356454c31520a3662774334656d" +
"7a5770715a5152736e6f4531516e69642f6f5830" +
"4a6837324b796c2b7870516934424e5253696172" +
"67665549754c7858755a6c635045786c460a7145" +
"74646757624d456a65555876303845494652502f" +
"6f503361474a41366c346b665537383779737670" +
"4d774c72374b663062544b4c524f6b5874625132" +
"79760a6d31787162567262655635716177494441" +
"5141426f314177546a416442674e564851344546" +
"67515561783441714a2f3666514435344a30506b" +
"497951714b45330a61396f77487759445652306a" +
"42426777466f415561783441714a2f3666514435" +
"344a30506b497951714b453361396f7744415944" +
"5652305442415577417745420a2f7a414e42676b" +
"71686b6947397730424151554641414f43415145" +
"417a57397a5456594c387934633467494d464c73" +
"76335478442f742b554c616d4a675648340a5836" +
"65674536724d73426a69567a344e4b5a506f6c64" +
"556255394a52387233316e6e73695a574a637845" +
"7764364f6e443143766e654d7351382f34476739" +
"77360a486d495177455a33787032667135596c58" +
"50736d775255667054507554356f55616853586b" +
"7975564339796f31326b753841454f2f55375132" +
"616a6c5a6437370a79736f63582f6c546f49666e" +
"4d3573767a2b51542f4f7836624c435145357532" +
"78515032446c376935436242666c502b61615048" +
"324935756c444b67337371320a7a4e5942315868" +
"414b474f623773384a4f7a554538425143396f41" +
"4f6b4c4b55306955577548703268345366684d57" +
"76776d316f656f5363786f706a594964710a4a63" +
"476865412b3636462f687571796b6239304a5078" +
"4c4c48665050534e66544a75696377314f7a7574" +
"77796d5a695731673d3d0a2d2d2d2d2d454e4420" +
"43455254494649434154452d2d2d2d2d0a",
)