Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Dec 2010 10:00:28 GMT
From:      Oleg Gawriloff <barzog@telecom.by>
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/144041: security/openssh-portable: sftp coredumps when 'ls'ing
Message-ID:  <201012211000.oBLA0S2E033185@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/144041; it has been noted by GNATS.

From: Oleg Gawriloff <barzog@telecom.by>
To: bug-followup@FreeBSD.org, gnrp@physik.tu-berlin.de
Cc:  
Subject: Re: ports/144041: security/openssh-portable: sftp coredumps when
 'ls'ing
Date: Tue, 21 Dec 2010 11:58:36 +0200

 This is a cryptographically signed message in MIME format.
 
 --------------ms040800010301040905010606
 Content-Type: multipart/mixed;
  boundary="------------090401030803030509030101"
 
 This is a multi-part message in MIME format.
 --------------090401030803030509030101
 Content-Type: text/plain; charset=UTF-8; format=flowed
 Content-Transfer-Encoding: quoted-printable
 
 Problem was fixed in 5.3p1.
 Here's port update.
 
 PS: Yes, I know about=20
 http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dports/150493. But there is=20
 very slow progress since september and lpk patch is gone.
 
 --=20
 Signed, Oleg Gawriloff.
 
 
 --------------090401030803030509030101
 Content-Type: text/plain;
  name="openssh-portable-5.3p1.diff"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment;
  filename="openssh-portable-5.3p1.diff"
 
 ZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmls
 ZSAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmlsZQotLS0gL2hvbWUv
 Z2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL01ha2VmaWxlCTIwMTAtMTEtMjIgMDE6
 NDg6NDkuMDAwMDAwMDAwICswMjAwCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0
 YWJsZS9NYWtlZmlsZQkyMDEwLTEyLTIxIDExOjMwOjM2LjAwMDAwMDAwMCArMDIwMApAQCAt
 Niw3ICs2LDcgQEAKICMKIAogUE9SVE5BTUU9CW9wZW5zc2gKLURJU1RWRVJTSU9OPQk1LjJw
 MQorRElTVFZFUlNJT049CTUuM3AxCiBQT1JUUkVWSVNJT049CTMKIFBPUlRFUE9DSD0JMQog
 Q0FURUdPUklFUz0Jc2VjdXJpdHkgaXB2NgpAQCAtMTYxLDcgKzE2MSw3IEBACiAKICMgU2Vl
 IGh0dHA6Ly9kZXYuaW52ZXJzZXBhdGguY29tL3RyYWMvb3BlbnNzaC1scGsKIC5pZiBkZWZp
 bmVkKFdJVEhfTFBLKQotRVhUUkFfUEFUQ0hFUys9CQkke0ZJTEVTRElSfS9jb250cmliLW9w
 ZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaAorRVhUUkFfUEFUQ0hFUys9CQkke0ZJTEVT
 RElSfS9jb250cmliLW9wZW5zc2gtbHBrLTUuM3AxLTAuMy4xMC5wYXRjaAogVVNFX09QRU5M
 REFQPQkJeWVzCiBDUFBGTEFHUys9CQkiLUkke0xPQ0FMQkFTRX0vaW5jbHVkZSAtRFdJVEhf
 TERBUF9QVUJLRVkiCiBDT05GSUdVUkVfQVJHUys9CS0td2l0aC1saWJzPSctbGxkYXAnIC0t
 d2l0aC1sZGZsYWdzPSctTCR7TE9DQUxCQVNFfS9saWInIFwKQEAgLTE3NCwxMiArMTc0LDYg
 QEAKIEVYVFJBX1BBVENIRVMrPQkJJHtGSUxFU0RJUn0vbHBrK2hwbi1zZXJ2Y29uZi5jLnBh
 dGNoCiAuZWxpZiBkZWZpbmVkKFdJVEhfSFBOKSAmJiAhZGVmaW5lZChXSVRIX0xQSykKIEVY
 VFJBX1BBVENIRVMrPQkJJHtGSUxFU0RJUn0vb3BlbnNzaC01LjJwMS1ocG4xM3Y2LXNlcnZj
 b25mLmMuZGlmZgotLmVsaWYgZGVmaW5lZChXSVRIX0xQSykgJiYgIWRlZmluZWQoV0lUSF9I
 UE4pCi1FWFRSQV9QQVRDSEVTKz0JCSR7RklMRVNESVJ9L2NvbnRyaWItb3BlbnNzaC1scGst
 NS4xcDEtMC4zLjEwLXNlcnZjb25mLmMucGF0Y2gKLS5lbmRpZgotCi0uaWYgZGVmaW5lZChX
 SVRIX0xQSykgJiYgJHtBUkNIfSA9PSAiYW1kNjQiCi1FWFRSQV9QQVRDSEVTKz0JCSR7RklM
 RVNESVJ9L2NvbnRyaWItb3BlbnNzaC01LjFfcDEtbHBrLTY0Yml0LnBhdGNoCiAuZW5kaWYK
 IAogIyBTZWUgaHR0cDovL3d3dy5yb3VtZW5wZXRyb3YuaW5mby9vcGVuc3NoLwpkaWZmIC1O
 cnUgL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2Rpc3RpbmZvIC9ob21l
 L2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2Rpc3RpbmZvCi0tLSAvaG9tZS9nYXdyaWxv
 ZmYvbHBrL29wZW5zc2gtcG9ydGFibGUvZGlzdGluZm8JMjAwOS0wOS0xOCAxNzowNTo1Mi4w
 MDAwMDAwMDAgKzAzMDAKKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2Rp
 c3RpbmZvCTIwMTAtMTItMjEgMTE6MTY6MTcuMDAwMDAwMDAwICswMjAwCkBAIC0xLDYgKzEs
 NiBAQAotTUQ1IChvcGVuc3NoLTUuMnAxLnRhci5neikgPSBhZGE3OWM3MzI4YTg1NTFiZGY1
 NWM5NWU2MzFlN2RhZAotU0hBMjU2IChvcGVuc3NoLTUuMnAxLnRhci5neikgPSA0MDIzNzEw
 YzM3ZDBiM2Q3OWU2Mjk5Y2I3OWI2ZGUyYTMxZGI3ZDU4MWZlNTllNzc1YTUzNTE3ODQwMzRl
 Y2FlCi1TSVpFIChvcGVuc3NoLTUuMnAxLnRhci5neikgPSAxMDE2NjEyCitNRDUgKG9wZW5z
 c2gtNS4zcDEudGFyLmd6KSA9IDEzNTYzZGJmNjFmMzZjYTlhMWU0MjU0MjYwMTMxMDQxCitT
 SEEyNTYgKG9wZW5zc2gtNS4zcDEudGFyLmd6KSA9IGQwYzkxNzQ2Mjg5Njk3NDQ4MGIxNDQ1
 NGE4ZTFjYjhiODA5MjkxZjY3ZTViOTc3OWM5YjRkYzQxNTZjNWVmMTIKK1NJWkUgKG9wZW5z
 c2gtNS4zcDEudGFyLmd6KSA9IDEwMjcxMzAKIE1ENSAob3BlbnNzaC01LjJwMSt4NTA5LTYu
 Mi5kaWZmLmd6KSA9IDhkYmJmYjc0MzIyNjg2NGY2YmI0OWI1NmU3Nzc3NmQ5CiBTSEEyNTYg
 KG9wZW5zc2gtNS4ycDEreDUwOS02LjIuZGlmZi5neikgPSA3MmNmYjFlMjMyYjZhZTBhOWRm
 NmU4NTM5YTlmNmI1M2RiN2MwYTIxNDFjZjJlNGRkNjViNDA3NzQ4ZmE5ZjM0CiBTSVpFIChv
 cGVuc3NoLTUuMnAxK3g1MDktNi4yLmRpZmYuZ3opID0gMTUzMDEwCmRpZmYgLU5ydSAvaG9t
 ZS9nYXdyaWxvZmYvbHBrL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29udHJpYi1vcGVuc3No
 LTUuMV9wMS1scGstNjRiaXQucGF0Y2ggL2hvbWUvZ2F3cmlsb2ZmL29wZW5zc2gtcG9ydGFi
 bGUvZmlsZXMvY29udHJpYi1vcGVuc3NoLTUuMV9wMS1scGstNjRiaXQucGF0Y2gKLS0tIC9o
 b21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5z
 c2gtNS4xX3AxLWxway02NGJpdC5wYXRjaAkyMDA5LTA2LTIxIDIzOjM2OjE1LjAwMDAwMDAw
 MCArMDMwMAorKysgL2hvbWUvZ2F3cmlsb2ZmL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29u
 dHJpYi1vcGVuc3NoLTUuMV9wMS1scGstNjRiaXQucGF0Y2gJMTk3MC0wMS0wMSAwMzowMDow
 MC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEsNDQgKzAsMCBAQAotZGlmZiAtTnVhciAtLWV4Y2x1
 ZGUgJyoucmVqJyBzZXJ2Y29uZi5jLm9yaWcgc2VydmNvbmYuYwotLS0tIHNlcnZjb25mLmMu
 b3JpZwkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAotKysrIHNlcnZjb25m
 LmMJMjAwOC0wOC0yMyAxNTowNDoyMS4wMDAwMDAwMDAgLTA3MDAKLUBAIC03MDEsNiArNzAx
 LDcgQEAKLSAJaW50IGNtZGxpbmUgPSAwLCAqaW50cHRyLCB2YWx1ZSwgbjsKLSAJU3lzbG9n
 RmFjaWxpdHkgKmxvZ19mYWNpbGl0eV9wdHI7Ci0gCUxvZ0xldmVsICpsb2dfbGV2ZWxfcHRy
 OwotKyAJdW5zaWduZWQgbG9uZyBsdmFsdWUsICpsb25ncHRyOwotIAlTZXJ2ZXJPcENvZGVz
 IG9wY29kZTsKLSAJdV9zaG9ydCBwb3J0OwotIAl1X2ludCBpLCBmbGFncyA9IDA7Ci1AQCAt
 NzE1LDYgKzcxNiw3IEBACi0gCWlmICghYXJnIHx8ICEqYXJnIHx8ICphcmcgPT0gJyMnKQot
 IAkJcmV0dXJuIDA7Ci0gCWludHB0ciA9IE5VTEw7Ci0rCWxvbmdwdHIgPSBOVUxMOwotIAlj
 aGFycHRyID0gTlVMTDsKLSAJb3Bjb2RlID0gcGFyc2VfdG9rZW4oYXJnLCBmaWxlbmFtZSwg
 bGluZW51bSwgJmZsYWdzKTsKLSAKLUBAIC0xNDQ5LDExICsxNDUxLDIwIEBACi0gCQkJKmlu
 dHB0ciA9IHZhbHVlOwotIAkJYnJlYWs7Ci0gCWNhc2Ugc0JpbmRUaW1lb3V0OgotLQkJaW50
 cHRyID0gKGludCAqKSAmb3B0aW9ucy0+bHBrLmJfdGltZW91dC50dl9zZWM7Ci0tCQlnb3Rv
 IHBhcnNlX2ludDsKLSsJCWxvbmdwdHIgPSAodW5zaWduZWQgbG9uZyAqKSAmb3B0aW9ucy0+
 bHBrLmJfdGltZW91dC50dl9zZWM7Ci0rcGFyc2VfdWxvbmc6Ci0rCQlhcmcgPSBzdHJkZWxp
 bSgmY3ApOwotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQotKwkJCWZhdGFsKCIlcyBs
 aW5lICVkOiBtaXNzaW5nIGludGVnZXIgdmFsdWUuIiwKLSsJCQkgICAgZmlsZW5hbWUsIGxp
 bmVudW0pOwotKwkJbHZhbHVlID0gYXRvbChhcmcpOwotKwkJaWYgKCphY3RpdmVwICYmICps
 b25ncHRyID09IC0xKQotKwkJCSpsb25ncHRyID0gbHZhbHVlOwotKwkJYnJlYWs7Ci0rCi0g
 CWNhc2Ugc1NlYXJjaFRpbWVvdXQ6Ci0tCQlpbnRwdHIgPSAoaW50ICopICZvcHRpb25zLT5s
 cGsuc190aW1lb3V0LnR2X3NlYzsKLS0JCWdvdG8gcGFyc2VfaW50OwotKwkJbG9uZ3B0ciA9
 ICh1bnNpZ25lZCBsb25nICopICZvcHRpb25zLT5scGsuc190aW1lb3V0LnR2X3NlYzsKLSsJ
 CWdvdG8gcGFyc2VfdWxvbmc7Ci0gCQlicmVhazsKLSAJY2FzZSBzTGRhcENvbmY6Ci0gCQlh
 cmcgPSBjcDsKZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJs
 ZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC1zZXJ2Y29uZi5jLnBh
 dGNoIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWItb3Bl
 bnNzaC1scGstNS4xcDEtMC4zLjEwLXNlcnZjb25mLmMucGF0Y2gKLS0tIC9ob21lL2dhd3Jp
 bG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUu
 MXAxLTAuMy4xMC1zZXJ2Y29uZi5jLnBhdGNoCTIwMDktMDYtMjEgMjM6MzY6MTUuMDAwMDAw
 MDAwICswMzAwCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9j
 b250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC1zZXJ2Y29uZi5jLnBhdGNoCTE5NzAt
 MDEtMDEgMDM6MDA6MDAuMDAwMDAwMDAwICswMzAwCkBAIC0xLDIxMyArMCwwIEBACi0tLS0g
 c2VydmNvbmYuYy5vcmlnCTIwMDktMDUtMjYgMTU6MTM6MzIuMDAwMDAwMDAwICswNDAwCi0r
 Kysgc2VydmNvbmYuYwkyMDA5LTA1LTI2IDE1OjI0OjM5LjAwMDAwMDAwMCArMDQwMAotQEAg
 LTQyLDYgKzQyLDEwIEBACi0gI2luY2x1ZGUgImNoYW5uZWxzLmgiCi0gI2luY2x1ZGUgImdy
 b3VwYWNjZXNzLmgiCi0gCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsjaW5jbHVkZSAi
 bGRhcGF1dGguaCIKLSsjZW5kaWYKLSsKLSBzdGF0aWMgdm9pZCBhZGRfbGlzdGVuX2FkZHIo
 U2VydmVyT3B0aW9ucyAqLCBjaGFyICosIGludCk7Ci0gc3RhdGljIHZvaWQgYWRkX29uZV9s
 aXN0ZW5fYWRkcihTZXJ2ZXJPcHRpb25zICosIGNoYXIgKiwgaW50KTsKLSAKLUBAIC0xMjgs
 NiArMTMyLDI0IEBACi0gCW9wdGlvbnMtPmFkbV9mb3JjZWRfY29tbWFuZCA9IE5VTEw7Ci0g
 CW9wdGlvbnMtPmNocm9vdF9kaXJlY3RvcnkgPSBOVUxMOwotIAlvcHRpb25zLT56ZXJvX2tu
 b3dsZWRnZV9wYXNzd29yZF9hdXRoZW50aWNhdGlvbiA9IC0xOwotKyNpZmRlZiBXSVRIX0xE
 QVBfUFVCS0VZCi0rIAkvKiBYWFggZGlydHkgKi8KLSsgCW9wdGlvbnMtPmxway5sZCA9IE5V
 TEw7Ci0rIAlvcHRpb25zLT5scGsub24gPSAtMTsKLSsgCW9wdGlvbnMtPmxway5zZXJ2ZXJz
 ID0gTlVMTDsKLSsgCW9wdGlvbnMtPmxway51X2Jhc2VkbiA9IE5VTEw7Ci0rIAlvcHRpb25z
 LT5scGsuZ19iYXNlZG4gPSBOVUxMOwotKyAJb3B0aW9ucy0+bHBrLmJpbmRkbiA9IE5VTEw7
 Ci0rIAlvcHRpb25zLT5scGsuYmluZHB3ID0gTlVMTDsKLSsgCW9wdGlvbnMtPmxway5zZ3Jv
 dXAgPSBOVUxMOwotKyAJb3B0aW9ucy0+bHBrLmZpbHRlciA9IE5VTEw7Ci0rIAlvcHRpb25z
 LT5scGsuZmdyb3VwID0gTlVMTDsKLSsgCW9wdGlvbnMtPmxway5sX2NvbmYgPSBOVUxMOwot
 KyAJb3B0aW9ucy0+bHBrLnRscyA9IC0xOwotKyAJb3B0aW9ucy0+bHBrLmJfdGltZW91dC50
 dl9zZWMgPSAtMTsKLSsgCW9wdGlvbnMtPmxway5zX3RpbWVvdXQudHZfc2VjID0gLTE7Ci0r
 IAlvcHRpb25zLT5scGsuZmxhZ3MgPSBGTEFHX0VNUFRZOwotKyNlbmRpZgotIH0KLSAKLSB2
 b2lkCi1AQCAtMjY1LDYgKzI4NywzMiBAQAotIAkJb3B0aW9ucy0+cGVybWl0X3R1biA9IFNT
 SF9UVU5NT0RFX05POwotIAlpZiAob3B0aW9ucy0+emVyb19rbm93bGVkZ2VfcGFzc3dvcmRf
 YXV0aGVudGljYXRpb24gPT0gLTEpCi0gCQlvcHRpb25zLT56ZXJvX2tub3dsZWRnZV9wYXNz
 d29yZF9hdXRoZW50aWNhdGlvbiA9IDA7Ci0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsJ
 aWYgKG9wdGlvbnMtPmxway5vbiA9PSAtMSkKLSsJICAgIG9wdGlvbnMtPmxway5vbiA9IF9E
 RUZBVUxUX0xQS19PTjsKLSsJaWYgKG9wdGlvbnMtPmxway5zZXJ2ZXJzID09IE5VTEwpCi0r
 CSAgICBvcHRpb25zLT5scGsuc2VydmVycyA9IF9ERUZBVUxUX0xQS19TRVJWRVJTOwotKwlp
 ZiAob3B0aW9ucy0+bHBrLnVfYmFzZWRuID09IE5VTEwpCi0rCSAgICBvcHRpb25zLT5scGsu
 dV9iYXNlZG4gPSBfREVGQVVMVF9MUEtfVUROOwotKwlpZiAob3B0aW9ucy0+bHBrLmdfYmFz
 ZWRuID09IE5VTEwpCi0rCSAgICBvcHRpb25zLT5scGsuZ19iYXNlZG4gPSBfREVGQVVMVF9M
 UEtfR0ROOwotKwlpZiAob3B0aW9ucy0+bHBrLmJpbmRkbiA9PSBOVUxMKQotKwkgICAgb3B0
 aW9ucy0+bHBrLmJpbmRkbiA9IF9ERUZBVUxUX0xQS19CSU5ERE47Ci0rCWlmIChvcHRpb25z
 LT5scGsuYmluZHB3ID09IE5VTEwpCi0rCSAgICBvcHRpb25zLT5scGsuYmluZHB3ID0gX0RF
 RkFVTFRfTFBLX0JJTkRQVzsKLSsJaWYgKG9wdGlvbnMtPmxway5zZ3JvdXAgPT0gTlVMTCkK
 LSsJICAgIG9wdGlvbnMtPmxway5zZ3JvdXAgPSBfREVGQVVMVF9MUEtfU0dST1VQOwotKwlp
 ZiAob3B0aW9ucy0+bHBrLmZpbHRlciA9PSBOVUxMKQotKwkgICAgb3B0aW9ucy0+bHBrLmZp
 bHRlciA9IF9ERUZBVUxUX0xQS19GSUxURVI7Ci0rCWlmIChvcHRpb25zLT5scGsudGxzID09
 IC0xKQotKwkgICAgb3B0aW9ucy0+bHBrLnRscyA9IF9ERUZBVUxUX0xQS19UTFM7Ci0rCWlm
 IChvcHRpb25zLT5scGsuYl90aW1lb3V0LnR2X3NlYyA9PSAtMSkKLSsJICAgIG9wdGlvbnMt
 Pmxway5iX3RpbWVvdXQudHZfc2VjID0gX0RFRkFVTFRfTFBLX0JUSU1FT1VUOwotKwlpZiAo
 b3B0aW9ucy0+bHBrLnNfdGltZW91dC50dl9zZWMgPT0gLTEpCi0rCSAgICBvcHRpb25zLT5s
 cGsuc190aW1lb3V0LnR2X3NlYyA9IF9ERUZBVUxUX0xQS19TVElNRU9VVDsKLSsJaWYgKG9w
 dGlvbnMtPmxway5sX2NvbmYgPT0gTlVMTCkKLSsJICAgIG9wdGlvbnMtPmxway5sX2NvbmYg
 PSBfREVGQVVMVF9MUEtfTERQOwotKyNlbmRpZgotIAotIAkvKiBUdXJuIHByaXZpbGVnZSBz
 ZXBhcmF0aW9uIG9uIGJ5IGRlZmF1bHQgKi8KLSAJaWYgKHVzZV9wcml2c2VwID09IC0xKQot
 QEAgLTMxMSw2ICszNTksMTIgQEAKLSAJc1VzZVByaXZpbGVnZVNlcGFyYXRpb24sIHNBbGxv
 d0FnZW50Rm9yd2FyZGluZywKLSAJc1plcm9Lbm93bGVkZ2VQYXNzd29yZEF1dGhlbnRpY2F0
 aW9uLAotIAlzRGVwcmVjYXRlZCwgc1Vuc3VwcG9ydGVkCi0rI2lmZGVmIFdJVEhfTERBUF9Q
 VUJLRVkKLSsJLHNMZGFwUHVibGlja2V5LCBzTGRhcFNlcnZlcnMsIHNMZGFwVXNlckROCi0r
 CSxzTGRhcEdyb3VwRE4sIHNCaW5kRE4sIHNCaW5kUHcsIHNNeUdyb3VwCi0rCSxzTGRhcEZp
 bHRlciwgc0ZvcmNlVExTLCBzQmluZFRpbWVvdXQKLSsJLHNTZWFyY2hUaW1lb3V0LCBzTGRh
 cENvbmYKLSsjZW5kaWYKLSB9IFNlcnZlck9wQ29kZXM7Ci0gCi0gI2RlZmluZSBTU0hDRkdf
 R0xPQkFMCTB4MDEJLyogYWxsb3dlZCBpbiBtYWluIHNlY3Rpb24gb2Ygc3NoZF9jb25maWcg
 Ki8KLUBAIC00MjEsNiArNDc1LDIwIEBACi0gCXsgImNsaWVudGFsaXZlY291bnRtYXgiLCBz
 Q2xpZW50QWxpdmVDb3VudE1heCwgU1NIQ0ZHX0dMT0JBTCB9LAotIAl7ICJhdXRob3JpemVk
 a2V5c2ZpbGUiLCBzQXV0aG9yaXplZEtleXNGaWxlLCBTU0hDRkdfR0xPQkFMIH0sCi0gCXsg
 ImF1dGhvcml6ZWRrZXlzZmlsZTIiLCBzQXV0aG9yaXplZEtleXNGaWxlMiwgU1NIQ0ZHX0dM
 T0JBTCB9LAotKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCi0rCXsgX0RFRkFVTFRfTFBLX1RP
 S0VOLCBzTGRhcFB1YmxpY2tleSwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxUX1NS
 Vl9UT0tFTiwgc0xkYXBTZXJ2ZXJzLCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFVTFRf
 VVNSX1RPS0VOLCBzTGRhcFVzZXJETiwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxU
 X0dSUF9UT0tFTiwgc0xkYXBHcm91cEROLCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFV
 TFRfQkROX1RPS0VOLCBzQmluZEROLCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFVTFRf
 QlBXX1RPS0VOLCBzQmluZFB3LCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFVTFRfTVlH
 X1RPS0VOLCBzTXlHcm91cCwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxUX0ZJTF9U
 T0tFTiwgc0xkYXBGaWx0ZXIsIFNTSENGR19HTE9CQUwgfSwKLSsJeyBfREVGQVVMVF9UTFNf
 VE9LRU4sIHNGb3JjZVRMUywgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxUX0JUSV9U
 T0tFTiwgc0JpbmRUaW1lb3V0LCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFVTFRfU1RJ
 X1RPS0VOLCBzU2VhcmNoVGltZW91dCwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxU
 X0xEUF9UT0tFTiwgc0xkYXBDb25mLCBTU0hDRkdfR0xPQkFMIH0sCi0rI2VuZGlmCi0gCXsg
 InVzZXByaXZpbGVnZXNlcGFyYXRpb24iLCBzVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiwgU1NI
 Q0ZHX0dMT0JBTCB9LAotIAl7ICJhY2NlcHRlbnYiLCBzQWNjZXB0RW52LCBTU0hDRkdfR0xP
 QkFMIH0sCi0gCXsgInBlcm1pdHR1bm5lbCIsIHNQZXJtaXRUdW5uZWwsIFNTSENGR19HTE9C
 QUwgfSwKLUBAIC0xMzExLDYgKzEzNzksMTA3IEBACi0gCQl3aGlsZSAoYXJnKQotIAkJICAg
 IGFyZyA9IHN0cmRlbGltKCZjcCk7Ci0gCQlicmVhazsKLSsjaWZkZWYgV0lUSF9MREFQX1BV
 QktFWQotKwljYXNlIHNMZGFwUHVibGlja2V5OgotKwkJaW50cHRyID0gJm9wdGlvbnMtPmxw
 ay5vbjsKLSsJCWdvdG8gcGFyc2VfZmxhZzsKLSsJY2FzZSBzTGRhcFNlcnZlcnM6Ci0rCQkv
 KiBhcmcgPSBzdHJkZWxpbSgmY3ApOyAqLwotKwkJcCA9IGxpbmU7Ci0rCQl3aGlsZSgqcCsr
 KTsKLSsJCWFyZyA9IHA7Ci0rCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCi0rCQkgICAg
 ZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgbGRhcCBzZXJ2ZXIiLGZpbGVuYW1lLGxpbmVu
 dW0pOwotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7Ci0rCQlpZiAoKG9wdGlvbnMtPmxw
 ay5zZXJ2ZXJzID0gbGRhcF9wYXJzZV9zZXJ2ZXJzKGFyZykpID09IE5VTEwpCi0rCQkgICAg
 ZmF0YWwoIiVzIGxpbmUgJWQ6IGVycm9yIGluIGxkYXAgc2VydmVycyIsIGZpbGVuYW1lLCBs
 aW5lbnVtKTsKLSsJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7Ci0rCQlicmVhazsKLSsJ
 Y2FzZSBzTGRhcFVzZXJETjoKLSsJCWFyZyA9IGNwOwotKwkJaWYgKCFhcmcgfHwgKmFyZyA9
 PSAnXDAnKQotKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVy
 IixmaWxlbmFtZSxsaW5lbnVtKTsKLSsJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOwotKwkJ
 b3B0aW9ucy0+bHBrLnVfYmFzZWRuID0geHN0cmR1cChhcmcpOwotKwkJbWVtc2V0KGFyZyww
 LHN0cmxlbihhcmcpKTsKLSsJCWJyZWFrOwotKwljYXNlIHNMZGFwR3JvdXBETjoKLSsJCWFy
 ZyA9IGNwOwotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQotKwkJICAgIGZhdGFsKCIl
 cyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVyIixmaWxlbmFtZSxsaW5lbnVtKTsKLSsJ
 CWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOwotKwkJb3B0aW9ucy0+bHBrLmdfYmFzZWRuID0g
 eHN0cmR1cChhcmcpOwotKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKLSsJCWJyZWFr
 OwotKwljYXNlIHNCaW5kRE46Ci0rCQlhcmcgPSBjcDsKLSsJCWlmICghYXJnIHx8ICphcmcg
 PT0gJ1wwJykKLSsJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBiaW5kZG4iLGZp
 bGVuYW1lLGxpbmVudW0pOwotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7Ci0rCQlvcHRp
 b25zLT5scGsuYmluZGRuID0geHN0cmR1cChhcmcpOwotKwkJbWVtc2V0KGFyZywwLHN0cmxl
 bihhcmcpKTsKLSsJCWJyZWFrOwotKwljYXNlIHNCaW5kUHc6Ci0rCQlhcmcgPSBjcDsKLSsJ
 CWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykKLSsJCSAgICBmYXRhbCgiJXMgbGluZSAlZDog
 bWlzc2luZyBiaW5kcHciLGZpbGVuYW1lLGxpbmVudW0pOwotKwkJYXJnW3N0cmxlbihhcmcp
 XSA9ICdcMCc7Ci0rCQlvcHRpb25zLT5scGsuYmluZHB3ID0geHN0cmR1cChhcmcpOwotKwkJ
 bWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKLSsJCWJyZWFrOwotKwljYXNlIHNNeUdyb3Vw
 OgotKwkJYXJnID0gY3A7Ci0rCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCi0rCQkgICAg
 ZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgZ3JvdXBuYW1lIixmaWxlbmFtZSwgbGluZW51
 bSk7Ci0rCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsKLSsJCW9wdGlvbnMtPmxway5zZ3Jv
 dXAgPSB4c3RyZHVwKGFyZyk7Ci0rCQlpZiAob3B0aW9ucy0+bHBrLnNncm91cCkKLSsJCSAg
 ICBvcHRpb25zLT5scGsuZmdyb3VwID0gbGRhcF9wYXJzZV9ncm91cHMob3B0aW9ucy0+bHBr
 LnNncm91cCk7Ci0rCQltZW1zZXQoYXJnLDAsc3RybGVuKGFyZykpOwotKwkJYnJlYWs7Ci0r
 CWNhc2Ugc0xkYXBGaWx0ZXI6Ci0rCQlhcmcgPSBjcDsKLSsJCWlmICghYXJnIHx8ICphcmcg
 PT0gJ1wwJykKLSsJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBmaWx0ZXIiLGZp
 bGVuYW1lLCBsaW5lbnVtKTsKLSsJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOwotKwkJb3B0
 aW9ucy0+bHBrLmZpbHRlciA9IHhzdHJkdXAoYXJnKTsKLSsJCW1lbXNldChhcmcsMCxzdHJs
 ZW4oYXJnKSk7Ci0rCQlicmVhazsKLSsJY2FzZSBzRm9yY2VUTFM6Ci0rCQlpbnRwdHIgPSAm
 b3B0aW9ucy0+bHBrLnRsczsKLSsJCWFyZyA9IHN0cmRlbGltKCZjcCk7Ci0rCQlpZiAoIWFy
 ZyB8fCAqYXJnID09ICdcMCcpCi0rCQkJZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgeWVz
 L25vIGFyZ3VtZW50LiIsCi0rCQkJICAgIGZpbGVuYW1lLCBsaW5lbnVtKTsKLSsJCXZhbHVl
 ID0gMDsJLyogc2lsZW5jZSBjb21waWxlciAqLwotKwkJaWYgKHN0cmNtcChhcmcsICJ5ZXMi
 KSA9PSAwKQotKwkJCXZhbHVlID0gMTsKLSsJCWVsc2UgaWYgKHN0cmNtcChhcmcsICJubyIp
 ID09IDApCi0rCQkJdmFsdWUgPSAwOwotKwkJZWxzZSBpZiAoc3RyY21wKGFyZywgInRyeSIp
 ID09IDApCi0rCQkJdmFsdWUgPSAtMTsKLSsJCWVsc2UKLSsJCQlmYXRhbCgiJXMgbGluZSAl
 ZDogQmFkIHllcy9ubyBhcmd1bWVudDogJXMiLAotKwkJCQlmaWxlbmFtZSwgbGluZW51bSwg
 YXJnKTsKLSsJCWlmICgqaW50cHRyID09IC0xKQotKwkJCSppbnRwdHIgPSB2YWx1ZTsKLSsJ
 CWJyZWFrOwotKwljYXNlIHNCaW5kVGltZW91dDoKLSsJCWludHB0ciA9IChpbnQgKikgJm9w
 dGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjOwotKwkJZ290byBwYXJzZV9pbnQ7Ci0rCWNh
 c2Ugc1NlYXJjaFRpbWVvdXQ6Ci0rCQlpbnRwdHIgPSAoaW50ICopICZvcHRpb25zLT5scGsu
 c190aW1lb3V0LnR2X3NlYzsKLSsJCWdvdG8gcGFyc2VfaW50OwotKwkJYnJlYWs7Ci0rCWNh
 c2Ugc0xkYXBDb25mOgotKwkJYXJnID0gY3A7Ci0rCQlpZiAoIWFyZyB8fCAqYXJnID09ICdc
 MCcpCi0rCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgTHBrTGRhcENvbmYiLCBm
 aWxlbmFtZSwgbGluZW51bSk7Ci0rCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsKLSsJCW9w
 dGlvbnMtPmxway5sX2NvbmYgPSB4c3RyZHVwKGFyZyk7Ci0rCQltZW1zZXQoYXJnLCAwLCBz
 dHJsZW4oYXJnKSk7Ci0rCQlicmVhazsKLSsjZW5kaWYKLSAKLSAJZGVmYXVsdDoKLSAJCWZh
 dGFsKCIlcyBsaW5lICVkOiBNaXNzaW5nIGhhbmRsZXIgZm9yIG9wY29kZSAlcyAoJWQpIiwK
 ZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9j
 b250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaCAvaG9tZS9nYXdyaWxvZmYv
 b3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4x
 MC5wYXRjaAotLS0gL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVz
 L2NvbnRyaWItb3BlbnNzaC1scGstNS4xcDEtMC4zLjEwLnBhdGNoCTIwMDktMDYtMjEgMjM6
 MzY6MTUuMDAwMDAwMDAwICswMzAwCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0
 YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaAkxOTcw
 LTAxLTAxIDAzOjAwOjAwLjAwMDAwMDAwMCArMDMwMApAQCAtMSwxNjgyICswLDAgQEAKLVRo
 aXMgaXMgYSBmb3J3YXJkLXBvcnQgb2YgdGhlIE9wZW5TU0ggTFBLIHN1cHBvcnQgcGF0Y2gu
 Ci0KLUl0IGFkZHMgc3VwcG9ydCBmb3Igc3RvcmluZyBPcGVuU1NIIHB1YmxpYyBrZXlzIGlu
 IExEQVAuIEl0IGFsc28gc3VwcG9ydHMKLWdyb3VwaW5nIG9mIG1hY2hpbmVzIGluIHRoZSBM
 REFQIGRhdGEgdG8gbGltaXQgdXNlcnMgdG8gc3BlY2lmaWMgbWFjaGluZXMuCi0KLVRoZSBs
 YXRlc3QgaG9tZXBhZ2UgZm9yIHRoZSBMUEsgcHJvamVjdCBpczoKLWh0dHA6Ly9jb2RlLmdv
 b2dsZS5jb20vcC9vcGVuc3NoLWxway8KLQotVGhlIDAuMy4xMCB2ZXJzaW9uIG9mIHRoZSBw
 YXRjaCBpbmNsdWRlcyBhIGZpeCBmb3IgNjQtYml0IHBsYXRmb3JtcywgYXMKLWRpc2NvdmVy
 ZWQgYnkgR2VudG9vLCB3aGVyZSB0aGUgYmluZCB0aW1lb3V0IGFuZCBzZWFyY2ggdGltZW91
 dCB2YWx1ZXMgd2VyZSBub3QKLWJlaW5nIHBhcnNlZCBjb3JyZWN0bHk6IGh0dHA6Ly9idWdz
 LmdlbnRvby5vcmcvMjEwMTEwCi0KLUZvcndhcmQtcG9ydGVkLWZyb206IG9wZW5zc2gtbHBr
 LTUuMXAxLTAuMy45LnBhdGNoCi1TaWduZWQtb2ZmLWJ5OiBSb2JpbiBILiBKb2huc29uIDxy
 b2JiYXQyQGdlbnRvby5vcmc+Ci0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0t
 ZXhjbHVkZSAnKi5yZWonIGF1dGgyLXB1YmtleS5jIGF1dGgyLXB1YmtleS5jCi0tLS0gYXV0
 aDItcHVia2V5LmMJMjAwOC0wNy0wMyAxOTo1NDoyNS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBh
 dXRoMi1wdWJrZXkuYwkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAotQEAg
 LTU1LDYgKzU1LDEwIEBACi0gI2luY2x1ZGUgIm1vbml0b3Jfd3JhcC5oIgotICNpbmNsdWRl
 ICJtaXNjLmgiCi0gCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsjaW5jbHVkZSAibGRh
 cGF1dGguaCIKLSsjZW5kaWYKLSsKLSAvKiBpbXBvcnQgKi8KLSBleHRlcm4gU2VydmVyT3B0
 aW9ucyBvcHRpb25zOwotIGV4dGVybiB1X2NoYXIgKnNlc3Npb25faWQyOwotQEAgLTE4Nywx
 MCArMTkxLDc5IEBACi0gCXVfbG9uZyBsaW5lbnVtID0gMDsKLSAJS2V5ICpmb3VuZDsKLSAJ
 Y2hhciAqZnA7Ci0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsJbGRhcF9rZXlfdCAqIGs7
 Ci0rCXVuc2lnbmVkIGludCBpID0gMDsKLSsjZW5kaWYKLSAKLSAJLyogVGVtcG9yYXJpbHkg
 dXNlIHRoZSB1c2VyJ3MgdWlkLiAqLwotIAl0ZW1wb3JhcmlseV91c2VfdWlkKHB3KTsKLSAK
 LSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQotKyAJZm91bmRfa2V5ID0gMDsKLSsgCS8qIGFs
 bG9jYXRlIGEgbmV3IGtleSB0eXBlICovCi0rIAlmb3VuZCA9IGtleV9uZXcoa2V5LT50eXBl
 KTsKLSsgCi0rIAkvKiBmaXJzdCBjaGVjayBpZiB0aGUgb3B0aW9ucyBpcyBlbmFibGVkLCB0
 aGVuIHRyeS4uICovCi0rCWlmIChvcHRpb25zLmxway5vbikgewotKwkgICAgZGVidWcoIltM
 REFQXSB0cnlpbmcgTERBUCBmaXJzdCB1aWQ9JXMiLHB3LT5wd19uYW1lKTsKLSsJICAgIGlm
 IChsZGFwX2lzbWVtYmVyKCZvcHRpb25zLmxwaywgcHctPnB3X25hbWUpID4gMCkgewotKwkJ
 aWYgKChrID0gbGRhcF9nZXR1c2Vya2V5KCZvcHRpb25zLmxwaywgcHctPnB3X25hbWUpKSAh
 PSBOVUxMKSB7Ci0rCQkgICAgLyogU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UsIGVtcHR5IGFu
 ZCBjb21tZW50IGxpbmVzLiAqLwotKwkJICAgIGZvciAoaSA9IDAgOyBpIDwgay0+bnVtIDsg
 aSsrKSB7Ci0rCQkJLyogZG9udCBmb3JnZXQgaWYgbXVsdGlwbGUga2V5cyB0byByZXNldCBv
 cHRpb25zICovCi0rCQkJY2hhciAqY3AsICpvcHRpb25zID0gTlVMTDsKLSsKLSsJCQlmb3Ig
 KGNwID0gKGNoYXIgKilrLT5rZXlzW2ldLT5idl92YWw7ICpjcCA9PSAnICcgfHwgKmNwID09
 ICdcdCc7IGNwKyspCi0rCQkJICAgIDsKLSsJCQlpZiAoISpjcCB8fCAqY3AgPT0gJ1xuJyB8
 fCAqY3AgPT0gJyMnKQotKwkJCSAgICBjb250aW51ZTsKLSsKLSsJCQlpZiAoa2V5X3JlYWQo
 Zm91bmQsICZjcCkgIT0gMSkgewotKwkJCSAgICAvKiBubyBrZXk/ICBjaGVjayBpZiB0aGVy
 ZSBhcmUgb3B0aW9ucyBmb3IgdGhpcyBrZXkgKi8KLSsJCQkgICAgaW50IHF1b3RlZCA9IDA7
 Ci0rCQkJICAgIGRlYnVnMigiW0xEQVBdIHVzZXJfa2V5X2FsbG93ZWQ6IGNoZWNrIG9wdGlv
 bnM6ICclcyciLCBjcCk7Ci0rCQkJICAgIG9wdGlvbnMgPSBjcDsKLSsJCQkgICAgZm9yICg7
 ICpjcCAmJiAocXVvdGVkIHx8ICgqY3AgIT0gJyAnICYmICpjcCAhPSAnXHQnKSk7IGNwKysp
 IHsKLSsJCQkJaWYgKCpjcCA9PSAnXFwnICYmIGNwWzFdID09ICciJykKLSsJCQkJICAgIGNw
 Kys7CS8qIFNraXAgYm90aCAqLwotKwkJCQllbHNlIGlmICgqY3AgPT0gJyInKQotKwkJCQkg
 ICAgcXVvdGVkID0gIXF1b3RlZDsKLSsJCQkgICAgfQotKwkJCSAgICAvKiBTa2lwIHJlbWFp
 bmluZyB3aGl0ZXNwYWNlLiAqLwotKwkJCSAgICBmb3IgKDsgKmNwID09ICcgJyB8fCAqY3Ag
 PT0gJ1x0JzsgY3ArKykKLSsJCQkJOwotKwkJCSAgICBpZiAoa2V5X3JlYWQoZm91bmQsICZj
 cCkgIT0gMSkgewotKwkJCQlkZWJ1ZzIoIltMREFQXSB1c2VyX2tleV9hbGxvd2VkOiBhZHZh
 bmNlOiAnJXMnIiwgY3ApOwotKwkJCQkvKiBzdGlsbCBubyBrZXk/ICBhZHZhbmNlIHRvIG5l
 eHQgbGluZSovCi0rCQkJCWNvbnRpbnVlOwotKwkJCSAgICB9Ci0rCQkJfQotKwotKwkJCWlm
 IChrZXlfZXF1YWwoZm91bmQsIGtleSkgJiYKLSsJCQkJYXV0aF9wYXJzZV9vcHRpb25zKHB3
 LCBvcHRpb25zLCBmaWxlLCBsaW5lbnVtKSA9PSAxKSB7Ci0rCQkJICAgIGZvdW5kX2tleSA9
 IDE7Ci0rCQkJICAgIGRlYnVnKCJbTERBUF0gbWF0Y2hpbmcga2V5IGZvdW5kIik7Ci0rCQkJ
 ICAgIGZwID0ga2V5X2ZpbmdlcnByaW50KGZvdW5kLCBTU0hfRlBfTUQ1LCBTU0hfRlBfSEVY
 KTsKLSsJCQkgICAgdmVyYm9zZSgiW0xEQVBdIEZvdW5kIG1hdGNoaW5nICVzIGtleTogJXMi
 LCBrZXlfdHlwZShmb3VuZCksIGZwKTsKLSsKLSsJCQkgICAgLyogcmVzdG9yaW5nIG1lbW9y
 eSAqLwotKwkJCSAgICBsZGFwX2tleXNfZnJlZShrKTsKLSsJCQkgICAgeGZyZWUoZnApOwot
 KwkJCSAgICByZXN0b3JlX3VpZCgpOwotKwkJCSAgICBrZXlfZnJlZShmb3VuZCk7Ci0rCQkJ
 ICAgIHJldHVybiBmb3VuZF9rZXk7Ci0rCQkJICAgIGJyZWFrOwotKwkJCX0KLSsJCSAgICB9
 LyogZW5kIG9mIExEQVAgZm9yKCkgKi8KLSsJCX0gZWxzZSB7Ci0rCQkgICAgbG9naXQoIltM
 REFQXSBubyBrZXlzIGZvdW5kIGZvciAnJXMnISIsIHB3LT5wd19uYW1lKTsKLSsJCX0KLSsJ
 ICAgIH0gZWxzZSB7Ci0rCQlsb2dpdCgiW0xEQVBdICclcycgaXMgbm90IGluICclcyciLCBw
 dy0+cHdfbmFtZSwgb3B0aW9ucy5scGsuc2dyb3VwKTsKLSsJICAgIH0KLSsJfQotKyNlbmRp
 ZgotIAlkZWJ1ZygidHJ5aW5nIHB1YmxpYyBrZXkgZmlsZSAlcyIsIGZpbGUpOwotIAlmID0g
 YXV0aF9vcGVua2V5ZmlsZShmaWxlLCBwdywgb3B0aW9ucy5zdHJpY3RfbW9kZXMpOwotIAot
 ZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgYXV0aC1y
 c2EuYyBhdXRoLXJzYS5jCi0tLS0gYXV0aC1yc2EuYwkyMDA4LTA3LTAyIDA1OjM3OjMwLjAw
 MDAwMDAwMCAtMDcwMAotKysrIGF1dGgtcnNhLmMJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAw
 MDAwMDAgLTA3MDAKLUBAIC0xNzQsMTAgKzE3NCw5NiBAQAotIAlGSUxFICpmOwotIAl1X2xv
 bmcgbGluZW51bSA9IDA7Ci0gCUtleSAqa2V5OwotKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZ
 Ci0rCWxkYXBfa2V5X3QgKiBrOwotKwl1bnNpZ25lZCBpbnQgaSA9IDA7Ci0rI2VuZGlmCi0g
 Ci0gCS8qIFRlbXBvcmFyaWx5IHVzZSB0aGUgdXNlcidzIHVpZC4gKi8KLSAJdGVtcG9yYXJp
 bHlfdXNlX3VpZChwdyk7Ci0gCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsJLyogaGVy
 ZSBpcyB0aGUgam9iICovCi0rCWtleSA9IGtleV9uZXcoS0VZX1JTQTEpOwotKwotKwlpZiAo
 b3B0aW9ucy5scGsub24pIHsKLSsJICAgIGRlYnVnKCJbTERBUF0gdHJ5aW5nIExEQVAgZmly
 c3QgdWlkPSVzIiwgcHctPnB3X25hbWUpOwotKwkgICAgaWYgKCBsZGFwX2lzbWVtYmVyKCZv
 cHRpb25zLmxwaywgcHctPnB3X25hbWUpID4gMCkgewotKwkJaWYgKCAoayA9IGxkYXBfZ2V0
 dXNlcmtleSgmb3B0aW9ucy5scGssIHB3LT5wd19uYW1lKSkgIT0gTlVMTCkgewotKwkJICAg
 IGZvciAoaSA9IDAgOyBpIDwgay0+bnVtIDsgaSsrKSB7Ci0rCQkJY2hhciAqY3AsICpvcHRp
 b25zID0gTlVMTDsKLSsKLSsJCQlmb3IgKGNwID0gay0+a2V5c1tpXS0+YnZfdmFsOyAqY3Ag
 PT0gJyAnIHx8ICpjcCA9PSAnXHQnOyBjcCsrKQotKwkJCSAgICA7Ci0rCQkJaWYgKCEqY3Ag
 fHwgKmNwID09ICdcbicgfHwgKmNwID09ICcjJykKLSsJCQkgICAgY29udGludWU7Ci0rCi0r
 CQkJLyoKLSsJCQkqIENoZWNrIGlmIHRoZXJlIGFyZSBvcHRpb25zIGZvciB0aGlzIGtleSwg
 YW5kIGlmIHNvLAotKwkJCSogc2F2ZSB0aGVpciBzdGFydGluZyBhZGRyZXNzIGFuZCBza2lw
 IHRoZSBvcHRpb24gcGFydAotKwkJCSogZm9yIG5vdy4gIElmIHRoZXJlIGFyZSBubyBvcHRp
 b25zLCBzZXQgdGhlIHN0YXJ0aW5nCi0rCQkJKiBhZGRyZXNzIHRvIE5VTEwuCi0rCQkJICov
 Ci0rCQkJaWYgKCpjcCA8ICcwJyB8fCAqY3AgPiAnOScpIHsKLSsJCQkgICAgaW50IHF1b3Rl
 ZCA9IDA7Ci0rCQkJICAgIG9wdGlvbnMgPSBjcDsKLSsJCQkgICAgZm9yICg7ICpjcCAmJiAo
 cXVvdGVkIHx8ICgqY3AgIT0gJyAnICYmICpjcCAhPSAnXHQnKSk7IGNwKyspIHsKLSsJCQkJ
 aWYgKCpjcCA9PSAnXFwnICYmIGNwWzFdID09ICciJykKLSsJCQkJICAgIGNwKys7CS8qIFNr
 aXAgYm90aCAqLwotKwkJCQllbHNlIGlmICgqY3AgPT0gJyInKQotKwkJCQkgICAgcXVvdGVk
 ID0gIXF1b3RlZDsKLSsJCQkgICAgfQotKwkJCX0gZWxzZQotKwkJCSAgICBvcHRpb25zID0g
 TlVMTDsKLSsKLSsJCQkvKiBQYXJzZSB0aGUga2V5IGZyb20gdGhlIGxpbmUuICovCi0rCQkJ
 aWYgKGhvc3RmaWxlX3JlYWRfa2V5KCZjcCwgJmJpdHMsIGtleSkgPT0gMCkgewotKwkJCSAg
 ICBkZWJ1ZygiW0xEQVBdIGxpbmUgJWQ6IG5vbiBzc2gxIGtleSBzeW50YXgiLCBpKTsKLSsJ
 CQkgICAgY29udGludWU7Ci0rCQkJfQotKwkJCS8qIGNwIG5vdyBwb2ludHMgdG8gdGhlIGNv
 bW1lbnQgcGFydC4gKi8KLSsKLSsJCQkvKiBDaGVjayBpZiB0aGUgd2UgaGF2ZSBmb3VuZCB0
 aGUgZGVzaXJlZCBrZXkgKGlkZW50aWZpZWQgYnkgaXRzIG1vZHVsdXMpLiAqLwotKwkJCWlm
 IChCTl9jbXAoa2V5LT5yc2EtPm4sIGNsaWVudF9uKSAhPSAwKQotKwkJCSAgICBjb250aW51
 ZTsKLSsKLSsJCQkvKiBjaGVjayB0aGUgcmVhbCBiaXRzICAqLwotKwkJCWlmIChiaXRzICE9
 ICh1bnNpZ25lZCBpbnQpQk5fbnVtX2JpdHMoa2V5LT5yc2EtPm4pKQotKwkJCSAgICBsb2dp
 dCgiW0xEQVBdIFdhcm5pbmc6IGxkYXAsIGxpbmUgJWx1OiBrZXlzaXplIG1pc21hdGNoOiAi
 Ci0rCQkJCSAgICAiYWN0dWFsICVkIHZzLiBhbm5vdW5jZWQgJWQuIiwgKHVuc2lnbmVkIGxv
 bmcpaSwgQk5fbnVtX2JpdHMoa2V5LT5yc2EtPm4pLCBiaXRzKTsKLSsKLSsJCQkvKiBXZSBo
 YXZlIGZvdW5kIHRoZSBkZXNpcmVkIGtleS4gKi8KLSsJCQkvKgotKwkJCSogSWYgb3VyIG9w
 dGlvbnMgZG8gbm90IGFsbG93IHRoaXMga2V5IHRvIGJlIHVzZWQsCi0rCQkJKiBkbyBub3Qg
 c2VuZCBjaGFsbGVuZ2UuCi0rCQkJICovCi0rCQkJaWYgKCFhdXRoX3BhcnNlX29wdGlvbnMo
 cHcsIG9wdGlvbnMsICJbTERBUF0iLCAodW5zaWduZWQgbG9uZykgaSkpCi0rCQkJICAgIGNv
 bnRpbnVlOwotKwotKwkJCS8qIGJyZWFrIG91dCwgdGhpcyBrZXkgaXMgYWxsb3dlZCAqLwot
 KwkJCWFsbG93ZWQgPSAxOwotKwotKwkJCS8qIGFkZCB0aGUgcmV0dXJuIHN0dWZmIGV0Yy4u
 LiAqLwotKwkJCS8qIFJlc3RvcmUgdGhlIHByaXZpbGVnZWQgdWlkLiAqLwotKwkJCXJlc3Rv
 cmVfdWlkKCk7Ci0rCi0rCQkJLyogcmV0dXJuIGtleSBpZiBhbGxvd2VkICovCi0rCQkJaWYg
 KGFsbG93ZWQgJiYgcmtleSAhPSBOVUxMKQotKwkJCSAgICAqcmtleSA9IGtleTsKLSsJCQll
 bHNlCi0rCQkJICAgIGtleV9mcmVlKGtleSk7Ci0rCi0rCQkJbGRhcF9rZXlzX2ZyZWUoayk7
 Ci0rCQkJcmV0dXJuIChhbGxvd2VkKTsKLSsJCSAgICB9Ci0rCQl9IGVsc2UgewotKwkJICAg
 IGxvZ2l0KCJbTERBUF0gbm8ga2V5cyBmb3VuZCBmb3IgJyVzJyEiLCBwdy0+cHdfbmFtZSk7
 Ci0rCQl9Ci0rCSAgICB9IGVsc2UgewotKwkJbG9naXQoIltMREFQXSAnJXMnIGlzIG5vdCBp
 biAnJXMnIiwgcHctPnB3X25hbWUsIG9wdGlvbnMubHBrLnNncm91cCk7Ci0rCSAgICB9Ci0r
 CX0KLSsjZW5kaWYKLSAJLyogVGhlIGF1dGhvcml6ZWQga2V5cy4gKi8KLSAJZmlsZSA9IGF1
 dGhvcml6ZWRfa2V5c19maWxlKHB3KTsKLSAJZGVidWcoInRyeWluZyBwdWJsaWMgUlNBIGtl
 eSBmaWxlICVzIiwgZmlsZSk7Ci1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4
 Y2x1ZGUgJyoucmVqJyBjb25maWcuaC5pbiBjb25maWcuaC5pbgotLS0tIGNvbmZpZy5oLmlu
 CTIwMDgtMDctMjEgMDE6MzA6NDkuMDAwMDAwMDAwIC0wNzAwCi0rKysgY29uZmlnLmguaW4J
 MjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBAIC01NjAsNiArNTYwLDkg
 QEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2lmX3R1bi5oPiBo
 ZWFkZXIgZmlsZS4gKi8KLSAjdW5kZWYgSEFWRV9MSU5VWF9JRl9UVU5fSAotIAotKy8qIERl
 ZmluZSBpZiB5b3Ugd2FudCBMREFQIHN1cHBvcnQgKi8KLSsjdW5kZWYgV0lUSF9MREFQX1BV
 QktFWQotKwotIC8qIERlZmluZSBpZiB5b3VyIGxpYnJhcmllcyBkZWZpbmUgbG9naW4oKSAq
 LwotICN1bmRlZiBIQVZFX0xPR0lOCi0gCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmln
 JyAtLWV4Y2x1ZGUgJyoucmVqJyBjb25maWd1cmUgY29uZmlndXJlCi0tLS0gY29uZmlndXJl
 CTIwMDgtMDctMjEgMDE6MzA6NTAuMDAwMDAwMDAwIC0wNzAwCi0rKysgY29uZmlndXJlCTIw
 MDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAtMTM0MCw2ICsxMzQwLDcg
 QEAKLSAgIC0td2l0aC10Y3Atd3JhcHBlcnNbPVBBVEhdIEVuYWJsZSB0Y3B3cmFwcGVycyBz
 dXBwb3J0IChvcHRpb25hbGx5IGluIFBBVEgpCi0gICAtLXdpdGgtbGliZWRpdFs9UEFUSF0g
 ICBFbmFibGUgbGliZWRpdCBzdXBwb3J0IGZvciBzZnRwCi0gICAtLXdpdGgtYXVkaXQ9bW9k
 dWxlICAgICBFbmFibGUgRVhQRVJJTUVOVEFMIGF1ZGl0IHN1cHBvcnQgKG1vZHVsZXM9ZGVi
 dWcsYnNtKQotKyAgLS13aXRoLWxkYXBbPVBBVEhdICAgICAgRW5hYmxlIExEQVAgcHVia2V5
 IHN1cHBvcnQgKG9wdGlvbmFsbHkgaW4gUEFUSCkKLSAgIC0td2l0aC1zc2wtZGlyPVBBVEgg
 ICAgIFNwZWNpZnkgcGF0aCB0byBPcGVuU1NMIGluc3RhbGxhdGlvbgotICAgLS13aXRob3V0
 LW9wZW5zc2wtaGVhZGVyLWNoZWNrIERpc2FibGUgT3BlblNTTCB2ZXJzaW9uIGNvbnNpc3Rl
 bmN5IGNoZWNrCi0gICAtLXdpdGgtc3NsLWVuZ2luZSAgICAgICBFbmFibGUgT3BlblNTTCAo
 aGFyZHdhcmUpIEVOR0lORSBzdXBwb3J0Ci1AQCAtMTI1NjgsNiArMTI1NjksODUgQEAKLSBm
 aQotIAotIAotKyMgQ2hlY2sgd2hldGhlciB1c2VyIHdhbnRzIExEQVAgc3VwcG9ydAotK0xE
 QVBfTVNHPSJubyIKLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxkYXAgd2FzIGdpdmVu
 LgotK2lmIHRlc3QgIiR7d2l0aF9sZGFwK3NldH0iID0gc2V0OyB0aGVuCi0rICB3aXRodmFs
 PSR3aXRoX2xkYXA7Ci0rCQlpZiB0ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4bm8iIDsgdGhlbgot
 KwotKwkJCWlmIHRlc3QgIngkd2l0aHZhbCIgIT0gInh5ZXMiIDsgdGhlbgotKwkJCQlDUFBG
 TEFHUz0iJENQUEZMQUdTIC1JJHt3aXRodmFsfS9pbmNsdWRlIgotKwkJCQlMREZMQUdTPSIk
 TERGTEFHUyAtTCR7d2l0aHZhbH0vbGliIgotKwkJCWZpCi0rCi0rCi0rY2F0ID4+Y29uZmRl
 ZnMuaCA8PFxfQUNFT0YKLSsjZGVmaW5lIFdJVEhfTERBUF9QVUJLRVkgMQotK19BQ0VPRgot
 KwotKwkJCUxJQlM9Ii1sbGRhcCAkTElCUyIKLSsJCQlMREFQX01TRz0ieWVzIgotKwotKwkJ
 CXsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBMREFQIHN1cHBvcnQiID4m
 NQotK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIExEQVAgc3VwcG9ydC4uLiAkRUNIT19D
 IiA+JjY7IH0KLSsJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSsvKiBjb25m
 ZGVmcy5oLiAgKi8KLStfQUNFT0YKLStjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19l
 eHQKLStjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyogZW5kIGNvbmZkZWZz
 LmguICAqLwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsJCQkJICNpbmNsdWRlIDxsZGFw
 Lmg+Ci0raW50Ci0rbWFpbiAoKQotK3sKLSsodm9pZClsZGFwX2luaXQoMCwgMCk7Ci0rICA7
 Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0rcm0gLWYgY29uZnRlc3QuJGFjX29iamV4
 dAotK2lmIHsgKGFjX3RyeT0iJGFjX2NvbXBpbGUiCi0rY2FzZSAiKCgkYWNfdHJ5IiBpbgot
 KyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0rICAqKSBh
 Y190cnlfZWNobz0kYWNfdHJ5OzsKLStlc2FjCi0rZXZhbCAiZWNobyBcIlwkYXNfbWU6JExJ
 TkVOTzogJGFjX3RyeV9lY2hvXCIiKSA+JjUKLSsgIChldmFsICIkYWNfY29tcGlsZSIpIDI+
 Y29uZnRlc3QuZXIxCi0rICBhY19zdGF0dXM9JD8KLSsgIGdyZXAgLXYgJ14gKisnIGNvbmZ0
 ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0rICBybSAtZiBjb25mdGVzdC5lcjEKLSsgIGNhdCBj
 b25mdGVzdC5lcnIgPiY1Ci0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0
 YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7Ci0rCSB0ZXN0IC16ICIk
 YWNfY193ZXJyb3JfZmxhZyIgfHwKLSsJIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKLSsgICAg
 ICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQ7IHRoZW4KLSsgIHsgZWNobyAi
 JGFzX21lOiRMSU5FTk86IHJlc3VsdDogeWVzIiA+JjUKLStlY2hvICIke0VDSE9fVH15ZXMi
 ID4mNjsgfQotK2Vsc2UKLSsgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIg
 PiY1Ci0rc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotKwotKwotKwkJCQkg
 ICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1Ci0rZWNobyAiJHtF
 Q0hPX1R9bm8iID4mNjsgfQotKwkJCQkJeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJv
 cjogKiogSW5jb21wbGV0ZSBvciBtaXNzaW5nIGxkYXAgbGlicmFyaWVzICoqIiA+JjUKLStl
 Y2hvICIkYXNfbWU6IGVycm9yOiAqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJy
 YXJpZXMgKioiID4mMjt9Ci0rICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rCi0rCi0r
 ZmkKLSsKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNv
 bmZ0ZXN0LiRhY19leHQKLSsJCWZpCi0rCi0rCi0rZmkKLSsKLSsKLSAKLSAKLSAKLUBAIC0z
 MDEzNSw2ICszMDIxNSw3IEBACi0gZWNobyAiICAgICAgICAgICAgICAgICBTbWFydGNhcmQg
 c3VwcG9ydDogJFNDQVJEX01TRyIKLSBlY2hvICIgICAgICAgICAgICAgICAgICAgICBTL0tF
 WSBzdXBwb3J0OiAkU0tFWV9NU0ciCi0gZWNobyAiICAgICAgICAgICAgICBUQ1AgV3JhcHBl
 cnMgc3VwcG9ydDogJFRDUFdfTVNHIgotK2VjaG8gIiAgICAgICAgICAgICAgICAgICAgICBM
 REFQIHN1cHBvcnQ6ICRMREFQX01TRyIKLSBlY2hvICIgICAgICAgICAgICAgIE1ENSBwYXNz
 d29yZCBzdXBwb3J0OiAkTUQ1X01TRyIKLSBlY2hvICIgICAgICAgICAgICAgICAgICAgbGli
 ZWRpdCBzdXBwb3J0OiAkTElCRURJVF9NU0ciCi0gZWNobyAiICBTb2xhcmlzIHByb2Nlc3Mg
 Y29udHJhY3Qgc3VwcG9ydDogJFNQQ19NU0ciCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5v
 cmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBjb25maWd1cmUuYWMgY29uZmlndXJlLmFjCi0tLS0g
 Y29uZmlndXJlLmFjCTIwMDgtMDctMDkgMDQ6MDc6MTkuMDAwMDAwMDAwIC0wNzAwCi0rKysg
 Y29uZmlndXJlLmFjCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAt
 MTI5OSw2ICsxMjk5LDM3IEBACi0gCWVzYWMgXQotICkKLSAKLSsjIENoZWNrIHdoZXRoZXIg
 dXNlciB3YW50cyBMREFQIHN1cHBvcnQKLStMREFQX01TRz0ibm8iCi0rQUNfQVJHX1dJVEgo
 bGRhcCwKLSsJWyAgLS13aXRoLWxkYXBbWz1QQVRIXV0gICAgICBFbmFibGUgTERBUCBwdWJr
 ZXkgc3VwcG9ydCAob3B0aW9uYWxseSBpbiBQQVRIKV0sCi0rCVsKLSsJCWlmIHRlc3QgIngk
 d2l0aHZhbCIgIT0gInhubyIgOyB0aGVuCi0rCi0rCQkJaWYgdGVzdCAieCR3aXRodmFsIiAh
 PSAieHllcyIgOyB0aGVuCi0rCQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkke3dpdGh2YWx9
 L2luY2x1ZGUiCi0rCQkJCUxERkxBR1M9IiRMREZMQUdTIC1MJHt3aXRodmFsfS9saWIiCi0r
 CQkJZmkKLSsKLSsJCQlBQ19ERUZJTkUoW1dJVEhfTERBUF9QVUJLRVldLCAxLCBbRW5hYmxl
 IExEQVAgcHVia2V5IHN1cHBvcnRdKQotKwkJCUxJQlM9Ii1sbGRhcCAkTElCUyIKLSsJCQlM
 REFQX01TRz0ieWVzIgotKwkKLSsJCQlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBMREFQIHN1cHBv
 cnRdKQotKwkJCUFDX1RSWV9DT01QSUxFKAotKwkJCQlbI2luY2x1ZGUgPHN5cy90eXBlcy5o
 PgotKwkJCQkgI2luY2x1ZGUgPGxkYXAuaD5dLAotKwkJCQlbKHZvaWQpbGRhcF9pbml0KDAs
 IDApO10sCi0rCQkJCVtBQ19NU0dfUkVTVUxUKHllcyldLAotKwkJCQlbCi0rCQkJCSAgICBB
 Q19NU0dfUkVTVUxUKG5vKSAKLSsJCQkJCUFDX01TR19FUlJPUihbKiogSW5jb21wbGV0ZSBv
 ciBtaXNzaW5nIGxkYXAgbGlicmFyaWVzICoqXSkKLSsJCQkJXQotKyAgICAgICAgCSkKLSsJ
 CWZpCi0rCV0KLSspCi0rCi0gZG5sICAgIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMu
 IFBsZWFzZSBrZWVwIGluIGFscGhhYmV0aWNhbCBvcmRlcgotIEFDX0NIRUNLX0ZVTkNTKCBc
 Ci0gCWFyYzRyYW5kb20gXAotQEAgLTQxMzcsNiArNDE2OCw3IEBACi0gZWNobyAiICAgICAg
 ICAgICAgICAgICBTbWFydGNhcmQgc3VwcG9ydDogJFNDQVJEX01TRyIKLSBlY2hvICIgICAg
 ICAgICAgICAgICAgICAgICBTL0tFWSBzdXBwb3J0OiAkU0tFWV9NU0ciCi0gZWNobyAiICAg
 ICAgICAgICAgICBUQ1AgV3JhcHBlcnMgc3VwcG9ydDogJFRDUFdfTVNHIgotK2VjaG8gIiAg
 ICAgICAgICAgICAgICAgICAgICBMREFQIHN1cHBvcnQ6ICRMREFQX01TRyIKLSBlY2hvICIg
 ICAgICAgICAgICAgIE1ENSBwYXNzd29yZCBzdXBwb3J0OiAkTUQ1X01TRyIKLSBlY2hvICIg
 ICAgICAgICAgICAgICAgICAgbGliZWRpdCBzdXBwb3J0OiAkTElCRURJVF9NU0ciCi0gZWNo
 byAiICBTb2xhcmlzIHByb2Nlc3MgY29udHJhY3Qgc3VwcG9ydDogJFNQQ19NU0ciCi1kaWZm
 IC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBsZGFwYXV0aC5j
 IGxkYXBhdXRoLmMKLS0tLSBsZGFwYXV0aC5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAw
 MDAwIC0wODAwCi0rKysgbGRhcGF1dGguYwkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAw
 MCAtMDcwMAotQEAgLTAsMCArMSw1NzUgQEAKLSsvKiAKLSsgKiAkSWQ6IG9wZW5zc2gtbHBr
 LTQuM3AxLTAuMy43LnBhdGNoLHYgMS4zIDIwMDYvMDQvMTggMTU6Mjk6MDkgZWF1IEV4cCAk
 Ci0rICovCi0rCi0rLyoKLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAwNSwgRXJpYyBBVUdF
 IDxlYXVAcGhlYXIub3JnPgotKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBS
 ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
 IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
 dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0rICoKLSsgKiBSZWRpc3RyaWJ1
 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
 b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
 YWltZXIuCi0rICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
 dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
 cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
 ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
 KyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHBoZWFyLm9yZyBub3IgdGhlIG5hbWVzIG9m
 IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
 b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
 b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
 SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
 IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgCi0r
 ICogQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
 QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
 U0NMQUlNRUQuIAotKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
 T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
 Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgCi0rICogT1IgQ09OU0VRVUVOVElBTCBE
 QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
 U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgCi0rICogTE9TUyBPRiBVU0UsIERBVEEs
 IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
 QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
 VFJJQ1QgTElBQklMSVRZLCAKLSsgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
 UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
 IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
 REFNQUdFLgotKyAqCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSAiaW5jbHVkZXMuaCIKLSsK
 LSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNp
 bmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN0
 cmluZy5oPgotKwotKyNpbmNsdWRlICJsZGFwYXV0aC5oIgotKyNpbmNsdWRlICJsb2cuaCIK
 LSsKLStzdGF0aWMgY2hhciAqYXR0cnNbXSA9IHsKLSsgICAgUFVCS0VZQVRUUiwKLSsgICAg
 TlVMTAotK307Ci0rCi0rLyogZmlsdGVyIGJ1aWxkaW5nIGluZm9zICovCi0rI2RlZmluZSBG
 SUxURVJfR1JPVVBfUFJFRklYICIoJihvYmplY3RjbGFzcz1wb3NpeEdyb3VwKSIKLSsjZGVm
 aW5lIEZJTFRFUl9PUl9QUkVGSVggIih8IgotKyNkZWZpbmUgRklMVEVSX09SX1NVRkZJWCAi
 KSIKLSsjZGVmaW5lIEZJTFRFUl9DTl9QUkVGSVggIihjbj0iCi0rI2RlZmluZSBGSUxURVJf
 Q05fU1VGRklYICIpIgotKyNkZWZpbmUgRklMVEVSX1VJRF9GT1JNQVQgIihtZW1iZXJVaWQ9
 JXMpIgotKyNkZWZpbmUgRklMVEVSX0dST1VQX1NVRkZJWCAiKSIKLSsjZGVmaW5lIEZJTFRF
 Ul9HUk9VUF9TSVpFKGdyb3VwKSAoc2l6ZV90KSAoc3RybGVuKGdyb3VwKSsobGRhcF9jb3Vu
 dF9ncm91cChncm91cCkqNSkrNTIpCi0rCi0rLyoganVzdCBmaWx0ZXIgYnVpbGRpbmcgc3R1
 ZmYgKi8KLSsjZGVmaW5lIFJFUVVFU1RfR1JPVVBfU0laRShmaWx0ZXIsIHVpZCkgKHNpemVf
 dCkgKHN0cmxlbihmaWx0ZXIpK3N0cmxlbih1aWQpKzEpCi0rI2RlZmluZSBSRVFVRVNUX0dS
 T1VQKGJ1ZmZlciwgcHJlZmlsdGVyLCBwd25hbWUpIFwKLSsgICAgYnVmZmVyID0gKGNoYXIg
 KikgY2FsbG9jKFJFUVVFU1RfR1JPVVBfU0laRShwcmVmaWx0ZXIsIHB3bmFtZSksIHNpemVv
 ZihjaGFyKSk7IFwKLSsgICAgaWYgKCFidWZmZXIpIHsgXAotKyAgICAgICAgcGVycm9yKCJj
 YWxsb2MoKSIpOyBcCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsgXAotKyAgICB9IFwKLSsg
 ICAgc25wcmludGYoYnVmZmVyLCBSRVFVRVNUX0dST1VQX1NJWkUocHJlZmlsdGVyLHB3bmFt
 ZSksIHByZWZpbHRlciwgcHduYW1lKQotKy8qCi0rWFhYIE9MRCBncm91cCBidWlsZGluZyBt
 YWNyb3MKLSsjZGVmaW5lIFJFUVVFU1RfR1JPVVBfU0laRShncnAsIHVpZCkgKHNpemVfdCkg
 KHN0cmxlbihncnApK3N0cmxlbih1aWQpKzQ2KQotKyNkZWZpbmUgUkVRVUVTVF9HUk9VUChi
 dWZmZXIscHduYW1lLGdycCkgXAotKyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoUkVR
 VUVTVF9HUk9VUF9TSVpFKGdycCwgcHduYW1lKSwgc2l6ZW9mKGNoYXIpKTsgXAotKyAgICBp
 ZiAoIWJ1ZmZlcikgeyBcCi0rICAgICAgICBwZXJyb3IoImNhbGxvYygpIik7IFwKLSsgICAg
 ICAgIHJldHVybiBGQUlMVVJFOyBcCi0rICAgIH0gXAotKyAgICBzbnByaW50ZihidWZmZXIs
 UkVRVUVTVF9HUk9VUF9TSVpFKGdycCxwd25hbWUpLCIoJihvYmplY3RjbGFzcz1wb3NpeEdy
 b3VwKShjbj0lcykobWVtYmVyVWlkPSVzKSkiLGdycCxwd25hbWUpCi0rICAgICovCi0rCi0r
 LyoKLStYWFggc3RvY2sgdXBzdHJlYW0gdmVyc2lvbiB3aXRob3V0IGV4dHJhIGZpbHRlciBz
 dXBwb3J0Ci0rI2RlZmluZSBSRVFVRVNUX1VTRVJfU0laRSh1aWQpIChzaXplX3QpIChzdHJs
 ZW4odWlkKSs2NCkKLSsjZGVmaW5lIFJFUVVFU1RfVVNFUihidWZmZXIsIHB3bmFtZSkgXAot
 KyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoUkVRVUVTVF9VU0VSX1NJWkUocHduYW1l
 KSwgc2l6ZW9mKGNoYXIpKTsgXAotKyAgICBpZiAoIWJ1ZmZlcikgeyBcCi0rICAgICAgICBw
 ZXJyb3IoImNhbGxvYygpIik7IFwKLSsgICAgICAgIHJldHVybiBOVUxMOyBcCi0rICAgIH0g
 XAotKyAgICBzbnByaW50ZihidWZmZXIsUkVRVUVTVF9VU0VSX1NJWkUocHduYW1lKSwiKCYo
 b2JqZWN0Y2xhc3M9cG9zaXhBY2NvdW50KShvYmplY3RjbGFzcz1sZGFwUHVibGljS2V5KSh1
 aWQ9JXMpKSIscHduYW1lKQotKyAgICovCi0rCi0rI2RlZmluZSBSRVFVRVNUX1VTRVJfU0la
 RSh1aWQsIGZpbHRlcikgKHNpemVfdCkgKHN0cmxlbih1aWQpKzY0KyhmaWx0ZXIgIT0gTlVM
 TCA/IHN0cmxlbihmaWx0ZXIpIDogMCkpCi0rI2RlZmluZSBSRVFVRVNUX1VTRVIoYnVmZmVy
 LCBwd25hbWUsIGN1c3RvbWZpbHRlcikgXAotKyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxs
 b2MoUkVRVUVTVF9VU0VSX1NJWkUocHduYW1lLCBjdXN0b21maWx0ZXIpLCBzaXplb2YoY2hh
 cikpOyBcCi0rICAgIGlmICghYnVmZmVyKSB7IFwKLSsgICAgICAgIHBlcnJvcigiY2FsbG9j
 KCkiKTsgXAotKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKLSsgICAgfSBcCi0rICAgIHNucHJp
 bnRmKGJ1ZmZlciwgUkVRVUVTVF9VU0VSX1NJWkUocHduYW1lLCBjdXN0b21maWx0ZXIpLCBc
 Ci0rICAgIAkiKCYob2JqZWN0Y2xhc3M9cG9zaXhBY2NvdW50KShvYmplY3RjbGFzcz1sZGFw
 UHVibGljS2V5KSh1aWQ9JXMpJXMpIiwgXAotKwlwd25hbWUsIChjdXN0b21maWx0ZXIgIT0g
 TlVMTCA/IGN1c3RvbWZpbHRlciA6ICIiKSkKLSsKLSsvKiBzb21lIHBvcnRhYmxlIGFuZCB3
 b3JraW5nIHRva2VuaXplciwgbGFtZSB0aG91Z2ggKi8KLStzdGF0aWMgaW50IHRva2VuaXpl
 KGNoYXIgKiogbywgc2l6ZV90IHNpemUsIGNoYXIgKiBpbnB1dCkgewotKyAgICB1bnNpZ25l
 ZCBpbnQgaSA9IDAsIG51bTsKLSsgICAgY29uc3QgY2hhciAqIGNoYXJzZXQgPSAiIFx0IjsK
 LSsgICAgY2hhciAqIHB0ciA9IGlucHV0OwotKwotKyAgICAvKiBsZWFkaW5nIHdoaXRlIHNw
 YWNlcyBhcmUgaWdub3JlZCAqLwotKyAgICBudW0gPSBzdHJzcG4ocHRyLCBjaGFyc2V0KTsK
 LSsgICAgcHRyICs9IG51bTsKLSsKLSsgICAgd2hpbGUgKChudW0gPSBzdHJjc3BuKHB0ciwg
 Y2hhcnNldCkpKSB7Ci0rICAgICAgICBpZiAoaSA8IHNpemUtMSkgewotKyAgICAgICAgICAg
 IG9baSsrXSA9IHB0cjsKLSsgICAgICAgICAgICBwdHIgKz0gbnVtOwotKyAgICAgICAgICAg
 IGlmICgqcHRyKQotKyAgICAgICAgICAgICAgICAqcHRyKysgPSAnXDAnOwotKyAgICAgICAg
 fQotKyAgICB9Ci0rICAgIG9baV0gPSBOVUxMOwotKyAgICByZXR1cm4gU1VDQ0VTUzsKLSt9
 Ci0rCi0rdm9pZCBsZGFwX2Nsb3NlKGxkYXBfb3B0X3QgKiBsZGFwKSB7Ci0rCi0rICAgIGlm
 ICghbGRhcCkKLSsgICAgICAgIHJldHVybjsKLSsKLSsgICAgaWYgKCBsZGFwX3VuYmluZF9l
 eHQobGRhcC0+bGQsIE5VTEwsIE5VTEwpIDwgMCkKLSsJbGRhcF9wZXJyb3IobGRhcC0+bGQs
 ICJsZGFwX3VuYmluZCgpIik7Ci0rCi0rICAgIGxkYXAtPmxkID0gTlVMTDsKLSsgICAgRkxB
 R19TRVRfRElTQ09OTkVDVEVEKGxkYXAtPmZsYWdzKTsKLSsKLSsgICAgcmV0dXJuOwotK30K
 LSsKLSsvKiBpbml0ICYmIGJpbmQgKi8KLStpbnQgbGRhcF9jb25uZWN0KGxkYXBfb3B0X3Qg
 KiBsZGFwKSB7Ci0rICAgIGludCB2ZXJzaW9uID0gTERBUF9WRVJTSU9OMzsKLSsKLSsgICAg
 aWYgKCFsZGFwLT5zZXJ2ZXJzKQotKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7Ci0rCi0rICAg
 IC8qIENvbm5lY3Rpb24gSW5pdCBhbmQgc2V0dXAgKi8KLSsgICAgbGRhcC0+bGQgPSBsZGFw
 X2luaXQobGRhcC0+c2VydmVycywgTERBUF9QT1JUKTsKLSsgICAgaWYgKCFsZGFwLT5sZCkg
 ewotKyAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX2luaXQoKSIpOwotKyAg
 ICAgICAgcmV0dXJuIEZBSUxVUkU7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCBsZGFwX3NldF9v
 cHRpb24obGRhcC0+bGQsIExEQVBfT1BUX1BST1RPQ09MX1ZFUlNJT04sICZ2ZXJzaW9uKSAh
 PSBMREFQX09QVF9TVUNDRVNTKSB7Ci0rICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5sZCwg
 ImxkYXBfc2V0X29wdGlvbihMREFQX09QVF9QUk9UT0NPTF9WRVJTSU9OKSIpOwotKyAgICAg
 ICAgcmV0dXJuIEZBSUxVUkU7Ci0rICAgIH0KLSsKLSsgICAgLyogVGltZW91dHMgc2V0dXAg
 Ki8KLSsgICAgaWYgKGxkYXBfc2V0X29wdGlvbihsZGFwLT5sZCwgTERBUF9PUFRfTkVUV09S
 S19USU1FT1VULCAmbGRhcC0+Yl90aW1lb3V0KSAhPSBMREFQX1NVQ0NFU1MpIHsKLSsgICAg
 ICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0aW9uKExEQVBfT1BUX05F
 VFdPUktfVElNRU9VVCkiKTsKLSsgICAgfQotKyAgICBpZiAobGRhcF9zZXRfb3B0aW9uKGxk
 YXAtPmxkLCBMREFQX09QVF9USU1FT1VULCAmbGRhcC0+c190aW1lb3V0KSAhPSBMREFQX1NV
 Q0NFU1MpIHsKLSsgICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0
 aW9uKExEQVBfT1BUX1RJTUVPVVQpIik7Ci0rICAgIH0KLSsKLSsgICAgLyogVExTIHN1cHBv
 cnQgKi8KLSsgICAgaWYgKCAobGRhcC0+dGxzID09IC0xKSB8fCAobGRhcC0+dGxzID09IDEp
 ICkgewotKyAgICAgICAgaWYgKGxkYXBfc3RhcnRfdGxzX3MobGRhcC0+bGQsIE5VTEwsIE5V
 TEwgKSAhPSBMREFQX1NVQ0NFU1MpIHsKLSsgICAgICAgICAgICAvKiBmYWlsZWQgdGhlbiBy
 ZWluaXQgdGhlIGluaXRpYWwgY29ubmVjdCAqLwotKyAgICAgICAgICAgIGxkYXBfcGVycm9y
 KGxkYXAtPmxkLCAibGRhcF9jb25uZWN0OiAoVExTKSBsZGFwX3N0YXJ0X3RscygpIik7Ci0r
 ICAgICAgICAgICAgaWYgKGxkYXAtPnRscyA9PSAxKQotKyAgICAgICAgICAgICAgICByZXR1
 cm4gRkFJTFVSRTsKLSsKLSsgICAgICAgICAgICBsZGFwLT5sZCA9IGxkYXBfaW5pdChsZGFw
 LT5zZXJ2ZXJzLCBMREFQX1BPUlQpOwotKyAgICAgICAgICAgIGlmICghbGRhcC0+bGQpIHsg
 Ci0rICAgICAgICAgICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9pbml0KCki
 KTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkU7Ci0rICAgICAgICAgICAgfQot
 KwotKyAgICAgICAgICAgIGlmICggbGRhcF9zZXRfb3B0aW9uKGxkYXAtPmxkLCBMREFQX09Q
 VF9QUk9UT0NPTF9WRVJTSU9OLCAmdmVyc2lvbikgIT0gTERBUF9PUFRfU1VDQ0VTUykgewot
 KyAgICAgICAgICAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3NldF9vcHRp
 b24oKSIpOwotKyAgICAgICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkU7Ci0rICAgICAgICAg
 ICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rCi0rICAgIGlmICggbGRhcF9zaW1wbGVf
 YmluZF9zKGxkYXAtPmxkLCBsZGFwLT5iaW5kZG4sIGxkYXAtPmJpbmRwdykgIT0gTERBUF9T
 VUNDRVNTKSB7Ci0rICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5sZCwgImxkYXBfc2ltcGxl
 X2JpbmRfcygpIik7Ci0rICAgICAgICByZXR1cm4gRkFJTFVSRTsKLSsgICAgfQotKwotKyAg
 ICAvKiBzYXlzIGl0IGlzIGNvbm5lY3RlZCAqLwotKyAgICBGTEFHX1NFVF9DT05ORUNURUQo
 bGRhcC0+ZmxhZ3MpOwotKwotKyAgICByZXR1cm4gU1VDQ0VTUzsKLSt9Ci0rCi0rLyogbXVz
 dCBmcmVlIGFsbG9jYXRlZCByZXNzb3VyY2UgKi8KLStzdGF0aWMgY2hhciAqIGxkYXBfYnVp
 bGRfaG9zdChjaGFyICpob3N0LCBpbnQgcG9ydCkgewotKyAgICB1bnNpZ25lZCBpbnQgc2l6
 ZSA9IHN0cmxlbihob3N0KSsxMTsKLSsgICAgY2hhciAqIGggPSAoY2hhciAqKSBjYWxsb2Mg
 KHNpemUsIHNpemVvZihjaGFyKSk7Ci0rICAgIGludCByYzsKLSsgICAgaWYgKCFoKQotKyAg
 ICAgICAgIHJldHVybiBOVUxMOwotKwotKyAgICByYyA9IHNucHJpbnRmKGgsIHNpemUsICIl
 czolZCAiLCBob3N0LCBwb3J0KTsKLSsgICAgaWYgKHJjID09IC0xKQotKyAgICAgICAgcmV0
 dXJuIE5VTEw7Ci0rICAgIHJldHVybiBoOwotK30KLSsKLStzdGF0aWMgaW50IGxkYXBfY291
 bnRfZ3JvdXAoY29uc3QgY2hhciAqIGlucHV0KSB7Ci0rICAgIGNvbnN0IGNoYXIgKiBjaGFy
 c2V0ID0gIiBcdCI7Ci0rICAgIGNvbnN0IGNoYXIgKiBwdHIgPSBpbnB1dDsKLSsgICAgdW5z
 aWduZWQgaW50IGNvdW50ID0gMDsKLSsgICAgdW5zaWduZWQgaW50IG51bTsKLSsKLSsgICAg
 bnVtID0gc3Ryc3BuKHB0ciwgY2hhcnNldCk7Ci0rICAgIHB0ciArPSBudW07Ci0rCi0rICAg
 IHdoaWxlICgobnVtID0gc3RyY3NwbihwdHIsIGNoYXJzZXQpKSkgewotKyAgICBjb3VudCsr
 OwotKyAgICBwdHIgKz0gbnVtOwotKyAgICBwdHIrKzsKLSsgICAgfQotKwotKyAgICByZXR1
 cm4gY291bnQ7Ci0rfQotKwotKy8qIGZvcm1hdCBmaWx0ZXIgKi8KLStjaGFyICogbGRhcF9w
 YXJzZV9ncm91cHMoY29uc3QgY2hhciAqIGdyb3VwcykgewotKyAgICB1bnNpZ25lZCBpbnQg
 YnVmZmVyX3NpemUgPSBGSUxURVJfR1JPVVBfU0laRShncm91cHMpOwotKyAgICBjaGFyICog
 YnVmZmVyID0gKGNoYXIgKikgY2FsbG9jKGJ1ZmZlcl9zaXplLCBzaXplb2YoY2hhcikpOwot
 KyAgICBjaGFyICogZyA9IE5VTEw7Ci0rICAgIGNoYXIgKiBnYXJyYXlbMzJdOwotKyAgICB1
 bnNpZ25lZCBpbnQgaSA9IDA7Ci0rCi0rICAgIGlmICgoIWdyb3Vwcyl8fCghYnVmZmVyKSkK
 LSsgICAgICAgIHJldHVybiBOVUxMOwotKwotKyAgICBnID0gc3RyZHVwKGdyb3Vwcyk7Ci0r
 ICAgIGlmICghZykgewotKyAgICAgICAgZnJlZShidWZmZXIpOwotKyAgICAgICAgcmV0dXJu
 IE5VTEw7Ci0rICAgIH0KLSsKLSsgICAgLyogZmlyc3Qgc2VwYXJhdGUgaW50byBuIHRva2Vu
 cyAqLwotKyAgICBpZiAoIHRva2VuaXplKGdhcnJheSwgc2l6ZW9mKGdhcnJheSkvc2l6ZW9m
 KCpnYXJyYXkpLCBnKSA8IDApIHsKLSsgICAgICAgIGZyZWUoZyk7Ci0rICAgICAgICBmcmVl
 KGJ1ZmZlcik7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgICAvKiBi
 dWlsZCB0aGUgZmluYWwgZmlsdGVyIGZvcm1hdCAqLwotKyAgICBzdHJsY2F0KGJ1ZmZlciwg
 RklMVEVSX0dST1VQX1BSRUZJWCwgYnVmZmVyX3NpemUpOwotKyAgICBzdHJsY2F0KGJ1ZmZl
 ciwgRklMVEVSX09SX1BSRUZJWCwgYnVmZmVyX3NpemUpOwotKyAgICBpID0gMDsKLSsgICAg
 d2hpbGUgKGdhcnJheVtpXSkgewotKyAgICAgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9D
 Tl9QUkVGSVgsIGJ1ZmZlcl9zaXplKTsKLSsgICAgICAgIHN0cmxjYXQoYnVmZmVyLCBnYXJy
 YXlbaV0sIGJ1ZmZlcl9zaXplKTsKLSsgICAgICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJf
 Q05fU1VGRklYLCBidWZmZXJfc2l6ZSk7Ci0rICAgICAgICBpKys7Ci0rICAgIH0KLSsgICAg
 c3RybGNhdChidWZmZXIsIEZJTFRFUl9PUl9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsKLSsgICAg
 c3RybGNhdChidWZmZXIsIEZJTFRFUl9VSURfRk9STUFULCBidWZmZXJfc2l6ZSk7Ci0rICAg
 IHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfR1JPVVBfU1VGRklYLCBidWZmZXJfc2l6ZSk7Ci0r
 Ci0rICAgIGZyZWUoZyk7Ci0rICAgIHJldHVybiBidWZmZXI7Ci0rfQotKwotKy8qIGEgYml0
 IGRpcnR5IGJ1dCBsZWFrIGZyZWUgICovCi0rY2hhciAqIGxkYXBfcGFyc2Vfc2VydmVycyhj
 b25zdCBjaGFyICogc2VydmVycykgewotKyAgICBjaGFyICogcyA9IE5VTEw7Ci0rICAgIGNo
 YXIgKiB0bXAgPSBOVUxMLCAqdXJsc1szMl07Ci0rICAgIHVuc2lnbmVkIGludCBudW0gPSAw
 ICwgaSA9IDAgLCBhc2l6ZSA9IDA7Ci0rICAgIExEQVBVUkxEZXNjICp1cmxkWzMyXTsKLSsK
 LSsgICAgaWYgKCFzZXJ2ZXJzKQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAgIC8q
 IGxvY2FsIGNvcHkgb2YgdGhlIGFyZyAqLwotKyAgICBzID0gc3RyZHVwKHNlcnZlcnMpOwot
 KyAgICBpZiAoIXMpCi0rICAgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgLyogZmlyc3Qg
 c2VwYXJhdGUgaW50byBVUkwgdG9rZW5zICovCi0rICAgIGlmICggdG9rZW5pemUodXJscywg
 c2l6ZW9mKHVybHMpL3NpemVvZigqdXJscyksIHMpIDwgMCkKLSsgICAgICAgIHJldHVybiBO
 VUxMOwotKwotKyAgICBpID0gMDsKLSsgICAgd2hpbGUgKHVybHNbaV0pIHsKLSsgICAgICAg
 IGlmICghIGxkYXBfaXNfbGRhcF91cmwodXJsc1tpXSkgfHwKLSsgICAgICAgICAgIChsZGFw
 X3VybF9wYXJzZSh1cmxzW2ldLCAmdXJsZFtpXSkgIT0gMCkpIHsKLSsgICAgICAgICAgICAg
 ICAgcmV0dXJuIE5VTEw7Ci0rICAgICAgICB9Ci0rICAgICAgICBpKys7Ci0rICAgIH0KLSsK
 LSsgICAgLyogbm93IGZyZWUocykgKi8KLSsgICAgZnJlZSAocyk7Ci0rCi0rICAgIC8qIGhv
 dyBtdWNoIG1lbW9yeSBkbyB3ZSBuZWVkICovCi0rICAgIG51bSA9IGk7Ci0rICAgIGZvciAo
 aSA9IDAgOyBpIDwgbnVtIDsgaSsrKQotKyAgICAgICAgYXNpemUgKz0gc3RybGVuKHVybGRb
 aV0tPmx1ZF9ob3N0KSsxMTsKLSsKLSsgICAgLyogYWxsb2MgKi8KLSsgICAgcyA9IChjaGFy
 ICopIGNhbGxvYyggYXNpemUrMSAsIHNpemVvZihjaGFyKSk7Ci0rICAgIGlmICghcykgewot
 KyAgICAgICAgZm9yIChpID0gMCA7IGkgPCBudW0gOyBpKyspCi0rICAgICAgICAgICAgbGRh
 cF9mcmVlX3VybGRlc2ModXJsZFtpXSk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAg
 fQotKwotKyAgICAvKiB0aGVuIGJ1aWxkIHRoZSBmaW5hbCBob3N0IHN0cmluZyAqLwotKyAg
 ICBmb3IgKGkgPSAwIDsgaSA8IG51bSA7IGkrKykgewotKyAgICAgICAgLyogYnVpbHQgaG9z
 dCBwYXJ0ICovCi0rICAgICAgICB0bXAgPSBsZGFwX2J1aWxkX2hvc3QodXJsZFtpXS0+bHVk
 X2hvc3QsIHVybGRbaV0tPmx1ZF9wb3J0KTsKLSsgICAgICAgIHN0cm5jYXQocywgdG1wLCBz
 dHJsZW4odG1wKSk7Ci0rICAgICAgICBsZGFwX2ZyZWVfdXJsZGVzYyh1cmxkW2ldKTsKLSsg
 ICAgICAgIGZyZWUodG1wKTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gczsKLSt9Ci0rCi0r
 dm9pZCBsZGFwX29wdGlvbnNfcHJpbnQobGRhcF9vcHRfdCAqIGxkYXApIHsKLSsgICAgZGVi
 dWcoImxkYXAgb3B0aW9uczoiKTsKLSsgICAgZGVidWcoInNlcnZlcnM6ICVzIiwgbGRhcC0+
 c2VydmVycyk7Ci0rICAgIGlmIChsZGFwLT51X2Jhc2VkbikKLSsgICAgICAgIGRlYnVnKCJ1
 c2VyIGJhc2VkbjogJXMiLCBsZGFwLT51X2Jhc2Vkbik7Ci0rICAgIGlmIChsZGFwLT5nX2Jh
 c2VkbikKLSsgICAgICAgIGRlYnVnKCJncm91cCBiYXNlZG46ICVzIiwgbGRhcC0+Z19iYXNl
 ZG4pOwotKyAgICBpZiAobGRhcC0+YmluZGRuKQotKyAgICAgICAgZGVidWcoImJpbmRkbjog
 JXMiLCBsZGFwLT5iaW5kZG4pOwotKyAgICBpZiAobGRhcC0+YmluZHB3KQotKyAgICAgICAg
 ZGVidWcoImJpbmRwdzogJXMiLCBsZGFwLT5iaW5kcHcpOwotKyAgICBpZiAobGRhcC0+c2dy
 b3VwKQotKyAgICAgICAgZGVidWcoImdyb3VwOiAlcyIsIGxkYXAtPnNncm91cCk7Ci0rICAg
 IGlmIChsZGFwLT5maWx0ZXIpCi0rICAgICAgICBkZWJ1ZygiZmlsdGVyOiAlcyIsIGxkYXAt
 PmZpbHRlcik7Ci0rfQotKwotK3ZvaWQgbGRhcF9vcHRpb25zX2ZyZWUobGRhcF9vcHRfdCAq
 IGwpIHsKLSsgICAgaWYgKCFsKQotKyAgICAgICAgcmV0dXJuOwotKyAgICBpZiAobC0+c2Vy
 dmVycykKLSsgICAgICAgIGZyZWUobC0+c2VydmVycyk7Ci0rICAgIGlmIChsLT51X2Jhc2Vk
 bikKLSsgICAgICAgIGZyZWUobC0+dV9iYXNlZG4pOwotKyAgICBpZiAobC0+Z19iYXNlZG4p
 Ci0rICAgICAgICBmcmVlKGwtPmdfYmFzZWRuKTsKLSsgICAgaWYgKGwtPmJpbmRkbikKLSsg
 ICAgICAgIGZyZWUobC0+YmluZGRuKTsKLSsgICAgaWYgKGwtPmJpbmRwdykKLSsgICAgICAg
 IGZyZWUobC0+YmluZHB3KTsKLSsgICAgaWYgKGwtPnNncm91cCkKLSsgICAgICAgIGZyZWUo
 bC0+c2dyb3VwKTsKLSsgICAgaWYgKGwtPmZncm91cCkKLSsgICAgICAgIGZyZWUobC0+Zmdy
 b3VwKTsKLSsgICAgaWYgKGwtPmZpbHRlcikKLSsgICAgICAgIGZyZWUobC0+ZmlsdGVyKTsK
 LSsgICAgaWYgKGwtPmxfY29uZikKLSsgICAgICAgIGZyZWUobC0+bF9jb25mKTsKLSsgICAg
 ZnJlZShsKTsKLSt9Ci0rCi0rLyogZnJlZSBrZXlzICovCi0rdm9pZCBsZGFwX2tleXNfZnJl
 ZShsZGFwX2tleV90ICogaykgewotKyAgICBsZGFwX3ZhbHVlX2ZyZWVfbGVuKGstPmtleXMp
 OwotKyAgICBmcmVlKGspOwotKyAgICByZXR1cm47Ci0rfQotKwotK2xkYXBfa2V5X3QgKiBs
 ZGFwX2dldHVzZXJrZXkobGRhcF9vcHRfdCAqbCwgY29uc3QgY2hhciAqIHVzZXIpIHsKLSsg
 ICAgbGRhcF9rZXlfdCAqIGsgPSAobGRhcF9rZXlfdCAqKSBjYWxsb2MgKDEsIHNpemVvZihs
 ZGFwX2tleV90KSk7Ci0rICAgIExEQVBNZXNzYWdlICpyZXMsICplOwotKyAgICBjaGFyICog
 ZmlsdGVyOwotKyAgICBpbnQgaTsKLSsKLSsgICAgaWYgKCghaykgfHwgKCFsKSkKLSsgICAg
 ICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgLyogQW0gaSBzdGlsbCBjb25uZWN0ZWQgPyBS
 RVRSWSBuIHRpbWVzICovCi0rICAgIC8qIFhYWCBUT0RPOiBzZXR1cCBzb21lIGNvbmYgdmFs
 dWUgZm9yIHJldHJ5aW5nICovCi0rICAgIGlmICghKGwtPmZsYWdzICYgRkxBR19DT05ORUNU
 RUQpKQotKyAgICAgICAgZm9yIChpID0gMCA7IGkgPCAyIDsgaSsrKQotKyAgICAgICAgICAg
 IGlmIChsZGFwX2Nvbm5lY3QobCkgPT0gMCkKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0r
 Ci0rICAgIC8qIHF1aWNrIGNoZWNrIGZvciBhdHRlbXB0cyB0byBiZSBldmlsICovCi0rICAg
 IGlmICgoc3RyY2hyKHVzZXIsICcoJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAnKScp
 ICE9IE5VTEwpIHx8Ci0rICAgICAgICAoc3RyY2hyKHVzZXIsICcqJykgIT0gTlVMTCkgfHwg
 KHN0cmNocih1c2VyLCAnXFwnKSAhPSBOVUxMKSkKLSsgICAgICAgIHJldHVybiBOVUxMOwot
 KwotKyAgICAvKiBidWlsZCAgZmlsdGVyIGZvciBMREFQIHJlcXVlc3QgKi8KLSsgICAgUkVR
 VUVTVF9VU0VSKGZpbHRlciwgdXNlciwgbC0+ZmlsdGVyKTsKLSsKLSsgICAgaWYgKCBsZGFw
 X3NlYXJjaF9zdCggbC0+bGQsCi0rICAgICAgICBsLT51X2Jhc2VkbiwKLSsgICAgICAgIExE
 QVBfU0NPUEVfU1VCVFJFRSwKLSsgICAgICAgIGZpbHRlciwKLSsgICAgICAgIGF0dHJzLCAw
 LCAmbC0+c190aW1lb3V0LCAmcmVzICkgIT0gTERBUF9TVUNDRVNTKSB7Ci0rICAgICAgICAK
 LSsgICAgICAgIGxkYXBfcGVycm9yKGwtPmxkLCAibGRhcF9zZWFyY2hfc3QoKSIpOwotKwot
 KyAgICAgICAgZnJlZShmaWx0ZXIpOwotKyAgICAgICAgZnJlZShrKTsKLSsKLSsgICAgICAg
 IC8qIFhYWCBlcnJvciBvbiBzZWFyY2gsIHRpbWVvdXQgZXRjLi4gY2xvc2UgYXNrIGZvciBy
 ZWNvbm5lY3QgKi8KLSsgICAgICAgIGxkYXBfY2xvc2UobCk7Ci0rCi0rICAgICAgICByZXR1
 cm4gTlVMTDsKLSsgICAgfSAKLSsKLSsgICAgLyogZnJlZSAqLwotKyAgICBmcmVlKGZpbHRl
 cik7Ci0rCi0rICAgIC8qIGNoZWNrIGlmIGFueSByZXN1bHRzICovCi0rICAgIGkgPSBsZGFw
 X2NvdW50X2VudHJpZXMobC0+bGQscmVzKTsKLSsgICAgaWYgKGkgPD0gMCkgewotKyAgICAg
 ICAgbGRhcF9tc2dmcmVlKHJlcyk7Ci0rICAgICAgICBmcmVlKGspOwotKyAgICAgICAgcmV0
 dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGkgPiAxKQotKyAgICAgICAgZGVidWco
 IltMREFQXSBkdXBsaWNhdGUgZW50cmllcywgdXNpbmcgdGhlIEZJUlNUIGVudHJ5IHJldHVy
 bmVkIik7Ci0rCi0rICAgIGUgPSBsZGFwX2ZpcnN0X2VudHJ5KGwtPmxkLCByZXMpOwotKyAg
 ICBrLT5rZXlzID0gbGRhcF9nZXRfdmFsdWVzX2xlbihsLT5sZCwgZSwgUFVCS0VZQVRUUik7
 Ci0rICAgIGstPm51bSA9IGxkYXBfY291bnRfdmFsdWVzX2xlbihrLT5rZXlzKTsKLSsKLSsg
 ICAgbGRhcF9tc2dmcmVlKHJlcyk7Ci0rICAgIHJldHVybiBrOwotK30KLSsKLSsKLSsvKiAt
 MSBpZiB0cm91YmxlCi0rICAgMCBpZiB1c2VyIGlzIE5PVCBtZW1iZXIgb2YgY3VycmVudCBz
 ZXJ2ZXIgZ3JvdXAKLSsgICAxIGlmIHVzZXIgSVMgTUVNQkVSIG9mIGN1cnJlbnQgc2VydmVy
 IGdyb3VwIAotKyAqLwotK2ludCBsZGFwX2lzbWVtYmVyKGxkYXBfb3B0X3QgKiBsLCBjb25z
 dCBjaGFyICogdXNlcikgewotKyAgICBMREFQTWVzc2FnZSAqcmVzOwotKyAgICBjaGFyICog
 ZmlsdGVyOwotKyAgICBpbnQgaTsKLSsKLSsgICAgaWYgKCghbC0+c2dyb3VwKSB8fCAhKGwt
 PmdfYmFzZWRuKSkKLSsgICAgICAgIHJldHVybiAxOwotKwotKyAgICAvKiBBbSBpIHN0aWxs
 IGNvbm5lY3RlZCA/IFJFVFJZIG4gdGltZXMgKi8KLSsgICAgLyogWFhYIFRPRE86IHNldHVw
 IHNvbWUgY29uZiB2YWx1ZSBmb3IgcmV0cnlpbmcgKi8KLSsgICAgaWYgKCEobC0+ZmxhZ3Mg
 JiBGTEFHX0NPTk5FQ1RFRCkpIAotKyAgICAgICAgZm9yIChpID0gMCA7IGkgPCAyIDsgaSsr
 KQotKyAgICAgICAgICAgIGlmIChsZGFwX2Nvbm5lY3QobCkgPT0gMCkKLSsgICAgICAgICAg
 ICAgICAgIGJyZWFrOwotKwotKyAgICAvKiBxdWljayBjaGVjayBmb3IgYXR0ZW1wdHMgdG8g
 YmUgZXZpbCAqLwotKyAgICBpZiAoKHN0cmNocih1c2VyLCAnKCcpICE9IE5VTEwpIHx8IChz
 dHJjaHIodXNlciwgJyknKSAhPSBOVUxMKSB8fAotKyAgICAgICAgKHN0cmNocih1c2VyLCAn
 KicpICE9IE5VTEwpIHx8IChzdHJjaHIodXNlciwgJ1xcJykgIT0gTlVMTCkpCi0rICAgICAg
 ICByZXR1cm4gRkFJTFVSRTsKLSsKLSsgICAgLyogYnVpbGQgZmlsdGVyIGZvciBMREFQIHJl
 cXVlc3QgKi8KLSsgICAgUkVRVUVTVF9HUk9VUChmaWx0ZXIsIGwtPmZncm91cCwgdXNlcik7
 Ci0rCi0rICAgIGlmIChsZGFwX3NlYXJjaF9zdCggbC0+bGQsIAotKyAgICAgICAgbC0+Z19i
 YXNlZG4sCi0rICAgICAgICBMREFQX1NDT1BFX1NVQlRSRUUsCi0rICAgICAgICBmaWx0ZXIs
 Ci0rICAgICAgICBOVUxMLCAwLCAmbC0+c190aW1lb3V0LCAmcmVzKSAhPSBMREFQX1NVQ0NF
 U1MpIHsKLSsgICAgCi0rICAgICAgICBsZGFwX3BlcnJvcihsLT5sZCwgImxkYXBfc2VhcmNo
 X3N0KCkiKTsKLSsKLSsgICAgICAgIGZyZWUoZmlsdGVyKTsKLSsKLSsgICAgICAgIC8qIFhY
 WCBlcnJvciBvbiBzZWFyY2gsIHRpbWVvdXQgZXRjLi4gY2xvc2UgYXNrIGZvciByZWNvbm5l
 Y3QgKi8KLSsgICAgICAgIGxkYXBfY2xvc2UobCk7Ci0rCi0rICAgICAgICByZXR1cm4gRkFJ
 TFVSRTsKLSsgICAgfQotKwotKyAgICBmcmVlKGZpbHRlcik7Ci0rCi0rICAgIC8qIGNoZWNr
 IGlmIGFueSByZXN1bHRzICovCi0rICAgIGlmIChsZGFwX2NvdW50X2VudHJpZXMobC0+bGQs
 IHJlcykgPiAwKSB7Ci0rICAgICAgICBsZGFwX21zZ2ZyZWUocmVzKTsKLSsgICAgICAgIHJl
 dHVybiAxOwotKyAgICB9Ci0rCi0rICAgIGxkYXBfbXNnZnJlZShyZXMpOwotKyAgICByZXR1
 cm4gMDsKLSt9Ci0rCi0rLyoKLSsgKiBsZGFwLmNvbmYgc2ltcGxlIHBhcnNlcgotKyAqIFhY
 WCBUT0RPOiAgc2FuaXR5IGNoZWNrcwotKyAqIG11c3QgZWl0aGVyCi0rICogLSBmcmVlIHRo
 ZSBwcmV2aW91cyBsZGFwX29wdF9iZWZvcmUgcmVwbGFjaW5nIGVudHJpZXMKLSsgKiAtIGZy
 ZWUgZWFjaCBuZWNlc3NhcnkgcHJldmlvdXNseSBwYXJzZWQgZWxlbWVudHMKLSsgKiByZXQ6
 Ci0rICogLTEgb24gRkFJTFVSRSwgMCBvbiBTVUNDRVNTCi0rICovCi0raW50IGxkYXBfcGFy
 c2VfbGNvbmYobGRhcF9vcHRfdCAqIGwpIHsKLSsgICAgRklMRSAqIGxjZDsgLyogbGRhcC5j
 b25mIGRlc2NyaXB0b3IgKi8KLSsgICAgY2hhciBidWZbQlVGU0laXTsKLSsgICAgY2hhciAq
 IHMgPSBOVUxMLCAqIGsgPSBOVUxMLCAqIHYgPSBOVUxMOwotKyAgICBpbnQgbGksIGxlbjsK
 LSsKLSsgICAgbGNkID0gZm9wZW4gKGwtPmxfY29uZiwgInIiKTsKLSsgICAgaWYgKGxjZCA9
 PSBOVUxMKSB7Ci0rICAgICAgICAvKiBkZWJ1ZygiQ2Fubm90IG9wZW4gJXMiLCBsLT5sX2Nv
 bmYpOyAqLwotKyAgICAgICAgcGVycm9yKCJsZGFwX3BhcnNlX2xjb25mKCkiKTsKLSsgICAg
 ICAgIHJldHVybiBGQUlMVVJFOwotKyAgICB9Ci0rICAgIAotKyAgICB3aGlsZSAoZmdldHMg
 KGJ1Ziwgc2l6ZW9mIChidWYpLCBsY2QpICE9IE5VTEwpIHsKLSsKLSsgICAgICAgIGlmICgq
 YnVmID09ICdcbicgfHwgKmJ1ZiA9PSAnIycpCi0rICAgICAgICAgICAgY29udGludWU7Ci0r
 Ci0rICAgICAgICBrID0gYnVmOwotKyAgICAgICAgdiA9IGs7Ci0rICAgICAgICB3aGlsZSAo
 KnYgIT0gJ1wwJyAmJiAqdiAhPSAnICcgJiYgKnYgIT0gJ1x0JykKLSsgICAgICAgICAgICB2
 Kys7Ci0rCi0rICAgICAgICBpZiAoKnYgPT0gJ1wwJykKLSsgICAgICAgICAgICBjb250aW51
 ZTsKLSsKLSsgICAgICAgICoodisrKSA9ICdcMCc7Ci0rCi0rICAgICAgICB3aGlsZSAoKnYg
 PT0gJyAnIHx8ICp2ID09ICdcdCcpCi0rICAgICAgICAgICAgdisrOwotKwotKyAgICAgICAg
 bGkgPSBzdHJsZW4gKHYpIC0gMTsKLSsgICAgICAgIHdoaWxlICh2W2xpXSA9PSAnICcgfHwg
 dltsaV0gPT0gJ1x0JyB8fCB2W2xpXSA9PSAnXG4nKQotKyAgICAgICAgICAgIC0tbGk7Ci0r
 ICAgICAgICB2W2xpICsgMV0gPSAnXDAnOwotKwotKyAgICAgICAgaWYgKCFzdHJjYXNlY21w
 IChrLCAidXJpIikpIHsKLSsgICAgICAgICAgICBpZiAoKGwtPnNlcnZlcnMgPSBsZGFwX3Bh
 cnNlX3NlcnZlcnModikpID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgZmF0YWwoImVy
 cm9yIGluIGxkYXAgc2VydmVycyIpOwotKyAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOwot
 KyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgaWYgKCFzdHJj
 YXNlY21wIChrLCAiYmFzZSIpKSB7IAotKyAgICAgICAgICAgIHMgPSBzdHJjaHIgKHYsICc/
 Jyk7Ci0rICAgICAgICAgICAgaWYgKHMgIT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICBs
 ZW4gPSBzIC0gdjsKLSsgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG4gPSBtYWxsb2MgKGxl
 biArIDEpOwotKyAgICAgICAgICAgICAgICBzdHJuY3B5IChsLT51X2Jhc2VkbiwgdiwgbGVu
 KTsKLSsgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG5bbGVuXSA9ICdcMCc7Ci0rICAgICAg
 ICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG4gPSBzdHJkdXAg
 KHYpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgaWYgKCFz
 dHJjYXNlY21wIChrLCAiYmluZGRuIikpIHsKLSsgICAgICAgICAgICBsLT5iaW5kZG4gPSBz
 dHJkdXAgKHYpOwotKyAgICAgICAgfQotKyAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAg
 KGssICJiaW5kcHciKSkgewotKyAgICAgICAgICAgIGwtPmJpbmRwdyA9IHN0cmR1cCAodik7
 Ci0rICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCAoaywgInRpbWVs
 aW1pdCIpKSB7Ci0rICAgICAgICAgICAgbC0+c190aW1lb3V0LnR2X3NlYyA9IGF0b2kgKHYp
 OwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCAo
 aywgImJpbmRfdGltZWxpbWl0IikpIHsKLSsgICAgICAgICAgICBsLT5iX3RpbWVvdXQudHZf
 c2VjID0gYXRvaSAodik7Ci0rICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmICghc3RyY2Fz
 ZWNtcCAoaywgInNzbCIpKSB7Ci0rICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wICh2LCAi
 c3RhcnRfdGxzIikpCi0rICAgICAgICAgICAgICAgIGwtPnRscyA9IDE7Ci0rICAgICAgICB9
 Ci0rICAgIH0KLSsKLSsgICAgZmNsb3NlIChsY2QpOwotKyAgICByZXR1cm4gU1VDQ0VTUzsK
 LSt9Ci0rCi0rI2VuZGlmIC8qIFdJVEhfTERBUF9QVUJLRVkgKi8KLWRpZmYgLU51YXIgLS1l
 eGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGxkYXBhdXRoLmggbGRhcGF1dGgu
 aAotLS0tIGxkYXBhdXRoLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAK
 LSsrKyBsZGFwYXV0aC5oCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1A
 QCAtMCwwICsxLDEyNCBAQAotKy8qCi0rICogJElkOiBvcGVuc3NoLWxway00LjNwMS0wLjMu
 Ny5wYXRjaCx2IDEuMyAyMDA2LzA0LzE4IDE1OjI5OjA5IGVhdSBFeHAgJCAKLSsgKi8KLSsK
 LSsvKgotKyAqCi0rICogQ29weXJpZ2h0IChjKSAyMDA1LCBFcmljIEFVR0UgPGVhdUBwaGVh
 ci5vcmc+Ci0rICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0
 aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
 dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
 aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
 b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhp
 cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsg
 KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
 b3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
 Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
 IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0rICogTmVpdGhl
 ciB0aGUgbmFtZSBvZiB0aGUgcGhlYXIub3JnIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
 aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
 aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
 IHBlcm1pc3Npb24uCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
 RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBF
 WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCAKLSsgKiBCVVQgTk9U
 IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
 IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
 Ci0rICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklC
 VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
 U1BFQ0lBTCwgRVhFTVBMQVJZLCAKLSsgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
 Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
 IEdPT0RTIE9SIFNFUlZJQ0VTOyAKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
 UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
 IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
 SUxJVFksIAotKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
 RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
 IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0r
 ICoKLSsgKgotKyAqLwotKwotKyNpZm5kZWYgTERBUEFVVEhfSAotKyNkZWZpbmUgTERBUEFV
 VEhfSAotKwotKyNkZWZpbmUgTERBUF9ERVBSRUNBVEVEIDEKLSsKLSsjaW5jbHVkZSA8c3Ry
 aW5nLmg+Ci0rI2luY2x1ZGUgPHRpbWUuaD4KLSsjaW5jbHVkZSA8bGRhcC5oPgotKyNpbmNs
 dWRlIDxsYmVyLmg+Ci0rCi0rLyogdG9rZW5zIGluIHVzZSBmb3IgY29uZmlnICovCi0rI2Rl
 ZmluZSBfREVGQVVMVF9MUEtfVE9LRU4gIlVzZUxQSyIKLSsjZGVmaW5lIF9ERUZBVUxUX1NS
 Vl9UT0tFTiAiTHBrU2VydmVycyIKLSsjZGVmaW5lIF9ERUZBVUxUX1VTUl9UT0tFTiAiTHBr
 VXNlckROIgotKyNkZWZpbmUgX0RFRkFVTFRfR1JQX1RPS0VOICJMcGtHcm91cEROIgotKyNk
 ZWZpbmUgX0RFRkFVTFRfQkROX1RPS0VOICJMcGtCaW5kRE4iCi0rI2RlZmluZSBfREVGQVVM
 VF9CUFdfVE9LRU4gIkxwa0JpbmRQdyIKLSsjZGVmaW5lIF9ERUZBVUxUX01ZR19UT0tFTiAi
 THBrU2VydmVyR3JvdXAiCi0rI2RlZmluZSBfREVGQVVMVF9GSUxfVE9LRU4gIkxwa0ZpbHRl
 ciIKLSsjZGVmaW5lIF9ERUZBVUxUX1RMU19UT0tFTiAiTHBrRm9yY2VUTFMiCi0rI2RlZmlu
 ZSBfREVGQVVMVF9CVElfVE9LRU4gIkxwa0JpbmRUaW1lbGltaXQiCi0rI2RlZmluZSBfREVG
 QVVMVF9TVElfVE9LRU4gIkxwa1NlYXJjaFRpbWVsaW1pdCIKLSsjZGVmaW5lIF9ERUZBVUxU
 X0xEUF9UT0tFTiAiTHBrTGRhcENvbmYiCi0rCi0rLyogZGVmYXVsdCBvcHRpb25zICovCi0r
 I2RlZmluZSBfREVGQVVMVF9MUEtfT04gMAotKyNkZWZpbmUgX0RFRkFVTFRfTFBLX1NFUlZF
 UlMgTlVMTAotKyNkZWZpbmUgX0RFRkFVTFRfTFBLX1VETiBOVUxMCi0rI2RlZmluZSBfREVG
 QVVMVF9MUEtfR0ROIE5VTEwKLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19CSU5ERE4gTlVMTAot
 KyNkZWZpbmUgX0RFRkFVTFRfTFBLX0JJTkRQVyBOVUxMCi0rI2RlZmluZSBfREVGQVVMVF9M
 UEtfU0dST1VQIE5VTEwKLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19GSUxURVIgTlVMTAotKyNk
 ZWZpbmUgX0RFRkFVTFRfTFBLX1RMUyAtMQotKyNkZWZpbmUgX0RFRkFVTFRfTFBLX0JUSU1F
 T1VUIDEwCi0rI2RlZmluZSBfREVGQVVMVF9MUEtfU1RJTUVPVVQgMTAKLSsjZGVmaW5lIF9E
 RUZBVUxUX0xQS19MRFAgTlVMTAotKwotKy8qIGZsYWdzICovCi0rI2RlZmluZSBGTEFHX0VN
 UFRZCSAgICAweDAwMDAwMDAwCi0rI2RlZmluZSBGTEFHX0NPTk5FQ1RFRAkgICAgMHgwMDAw
 MDAwMQotKwotKy8qIGZsYWcgbWFjcm9zICovCi0rI2RlZmluZSBGTEFHX1NFVF9FTVBUWSh4
 KQkJeCY9KEZMQUdfRU1QVFkpCi0rI2RlZmluZSBGTEFHX1NFVF9DT05ORUNURUQoeCkJCXh8
 PShGTEFHX0NPTk5FQ1RFRCkKLSsjZGVmaW5lIEZMQUdfU0VUX0RJU0NPTk5FQ1RFRCh4KQl4
 Jj1+KEZMQUdfQ09OTkVDVEVEKQotKwotKy8qIGRlZmluZXMgKi8KLSsjZGVmaW5lIEZBSUxV
 UkUgLTEKLSsjZGVmaW5lIFNVQ0NFU1MgMAotKyNkZWZpbmUgUFVCS0VZQVRUUiAic3NoUHVi
 bGljS2V5IgotKwotKy8qIAotKyAqCi0rICogZGVmaW5lZCBmaWxlcyBwYXRoIAotKyAqIChz
 aG91bGQgYmUgcmVsb2NhdGVkIHRvIHBhdGhuYW1lcy5oLAotKyAqIGlmIG9uZSBkYXkgaXQn
 cyBpbmNsdWRlZCB3aXRoaW4gdGhlIHRyZWUpIAotKyAqCi0rICovCi0rI2RlZmluZSBfUEFU
 SF9MREFQX0NPTkZJR19GSUxFICIvZXRjL2xkYXAuY29uZiIKLSsKLSsvKiBzdHJ1Y3R1cmVz
 ICovCi0rdHlwZWRlZiBzdHJ1Y3QgbGRhcF9vcHRpb25zIHsKLSsgICAgaW50IG9uOwkJCS8q
 IFVzZSBpdCBvciBOT1QgKi8KLSsgICAgTERBUCAqIGxkOwkJCS8qIExEQVAgZmlsZSBkZXNj
 ICovCi0rICAgIGNoYXIgKiBzZXJ2ZXJzOwkJLyogcGFyc2VkIHNlcnZlcnMgZm9yIGxkYXBs
 aWIgZmFpbG92ZXIgaGFuZGxpbmcgKi8KLSsgICAgY2hhciAqIHVfYmFzZWRuOwkJLyogdXNl
 ciBiYXNlZG4gKi8KLSsgICAgY2hhciAqIGdfYmFzZWRuOwkJLyogZ3JvdXAgYmFzZWRuICov
 Ci0rICAgIGNoYXIgKiBiaW5kZG47CQkvKiBiaW5kZG4gKi8KLSsgICAgY2hhciAqIGJpbmRw
 dzsJCS8qIGJpbmQgcGFzc3dvcmQgKi8KLSsgICAgY2hhciAqIHNncm91cDsJCS8qIHNlcnZl
 ciBncm91cCAqLwotKyAgICBjaGFyICogZmdyb3VwOwkJLyogZ3JvdXAgZmlsdGVyICovCi0r
 ICAgIGNoYXIgKiBmaWx0ZXI7CQkvKiBhZGRpdGlvbmFsIGZpbHRlciAqLwotKyAgICBjaGFy
 ICogbF9jb25mOwkJLyogdXNlIGxkYXAuY29uZiAqLwotKyAgICBpbnQgdGxzOwkJCS8qIFRM
 UyBvbmx5ICovCi0rICAgIHN0cnVjdCB0aW1ldmFsIGJfdGltZW91dDsgICAvKiBiaW5kIHRp
 bWVvdXQgKi8KLSsgICAgc3RydWN0IHRpbWV2YWwgc190aW1lb3V0OyAgIC8qIHNlYXJjaCB0
 aW1lb3V0ICovCi0rICAgIHVuc2lnbmVkIGludCBmbGFnczsJCS8qIG1pc2MgZmxhZ3MgKHJl
 Y29ubmVjdGlvbiwgZnV0dXJlIHVzZT8pICovCi0rfSBsZGFwX29wdF90OwotKwotK3R5cGVk
 ZWYgc3RydWN0IGxkYXBfa2V5cyB7Ci0rICAgIHN0cnVjdCBiZXJ2YWwgKioga2V5czsJLyog
 dGhlIHB1YmxpYyBrZXlzIHJldHJpZXZlZCAqLwotKyAgICB1bnNpZ25lZCBpbnQgbnVtOwkJ
 LyogbnVtYmVyIG9mIGtleXMgKi8KLSt9IGxkYXBfa2V5X3Q7Ci0rCi0rCi0rLyogZnVuY3Rp
 b24gaGVhZGVycyAqLwotK3ZvaWQgbGRhcF9jbG9zZShsZGFwX29wdF90ICopOwotK2ludCBs
 ZGFwX2Nvbm5lY3QobGRhcF9vcHRfdCAqKTsKLStjaGFyICogbGRhcF9wYXJzZV9ncm91cHMo
 Y29uc3QgY2hhciAqKTsKLStjaGFyICogbGRhcF9wYXJzZV9zZXJ2ZXJzKGNvbnN0IGNoYXIg
 Kik7Ci0rdm9pZCBsZGFwX29wdGlvbnNfcHJpbnQobGRhcF9vcHRfdCAqKTsKLSt2b2lkIGxk
 YXBfb3B0aW9uc19mcmVlKGxkYXBfb3B0X3QgKik7Ci0rdm9pZCBsZGFwX2tleXNfZnJlZShs
 ZGFwX2tleV90ICopOwotK2ludCBsZGFwX3BhcnNlX2xjb25mKGxkYXBfb3B0X3QgKik7Ci0r
 bGRhcF9rZXlfdCAqIGxkYXBfZ2V0dXNlcmtleShsZGFwX29wdF90ICosIGNvbnN0IGNoYXIg
 Kik7Ci0raW50IGxkYXBfaXNtZW1iZXIobGRhcF9vcHRfdCAqLCBjb25zdCBjaGFyICopOwot
 KwotKyNlbmRpZgotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcq
 LnJlaicgbHBrLXVzZXItZXhhbXBsZS50eHQgbHBrLXVzZXItZXhhbXBsZS50eHQKLS0tLSBs
 cGstdXNlci1leGFtcGxlLnR4dAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgw
 MAotKysrIGxway11c2VyLWV4YW1wbGUudHh0CTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAw
 MDAwIC0wNzAwCi1AQCAtMCwwICsxLDExNyBAQAotKwotK1Bvc3QgdG8gTUwgLT4gVXNlciBN
 YWRlIFF1aWNrIEluc3RhbGwgRG9jLgotK0NvbnRyaWJ1dGlvbiBmcm9tIEpvaG4gTGFuZSA8
 am9obkBsYW5lLnVrLm5ldD4KLSsKLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
 KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0rCi0rT3Bl
 blNTSCBMREFQIGtleXN0b3JlIFBhdGNoCi0rPT09PT09PT09PT09PT09PT09PT09PT09PT09
 Ci0rCi0rTk9URTogdGhlc2Ugbm90ZXMgYXJlIGEgdHJhbnNjcmlwdCBvZiBhIHNwZWNpZmlj
 IGluc3RhbGxhdGlvbgotKyAgICAgIHRoZXkgd29yayBmb3IgbWUsIHlvdXIgc3BlY2lmaWNz
 IG1heSBiZSBkaWZmZXJlbnQhCi0rICAgICAgZnJvbSBKb2huIExhbmUgTWFyY2ggMTd0aCAy
 MDA1ICAgICAgICAgam9obkBsYW5lLnVrLm5ldAotKwotK1RoaXMgaXMgYSBwYXRjaCB0byBP
 cGVuU1NIIDQuMHAxIHRvIGFsbG93IGl0IHRvIG9idGFpbiB1c2VycycgcHVibGljIGtleXMK
 LStmcm9tIHRoZWlyIExEQVAgcmVjb3JkIGFzIGFuIGFsdGVybmF0aXZlIHRvIH4vLnNzaC9h
 dXRob3JpemVkX2tleXMuCi0rCi0rKEFzc3VtaW5nIGhlcmUgdGhhdCBuZWNlc3NhcnkgYnVp
 bGQgc3R1ZmYgaXMgaW4gJEJVSUxEKQotKwotK2NkICRCVUlMRC9vcGVuc3NoLTQuMHAxCi0r
 cGF0Y2ggLU5wMSAtaSAkQlVJTEQvb3BlbnNzaC1scGstNC4wcDEtMC4zLnBhdGNoCi0rbWtk
 aXIgLXAgL3Zhci9lbXB0eSAmJgotKy4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1zeXNj
 b25mZGlyPS9ldGMvc3NoIFwKLSsgICAgLS1saWJleGVjZGlyPS91c3Ivc2JpbiAtLXdpdGgt
 bWQ1LXBhc3N3b3JkcyAtLXdpdGgtcGFtIFwKLSsgICAgLS13aXRoLWxpYnM9Ii1sbGRhcCIg
 LS13aXRoLWNwcGZsYWdzPSItRFdJVEhfTERBUF9QVUJLRVkiCi0rTm93IGRvLgotK21ha2Ug
 JiYKLSttYWtlIGluc3RhbGwKLSsKLStBZGQgdGhlIGZvbGxvd2luZyBjb25maWcgdG8gL2V0
 Yy9zc2gvc3NoX2NvbmZpZwotK1VzZUxQSyB5ZXMKLStMcGtTZXJ2ZXJzIGxkYXA6Ly9teWhv
 c3QubXlkb21haW4uY29tCi0rTHBrVXNlckROICBvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9
 Y29tCi0rCi0rV2UgbmVlZCB0byB0ZWxsIHNzaGQgYWJvdXQgdGhlIFNTTCBrZXlzIGR1cmlu
 ZyBib290LCBhcyByb290J3MKLStlbnZpcm9ubWVudCBkb2VzIG5vdCBleGlzdCBhdCB0aGF0
 IHRpbWUuIEVkaXQgL2V0Yy9yYy5kL2luaXQuZC9zc2hkLgotK0NoYW5nZSB0aGUgc3RhcnR1
 cCBjb2RlIGZyb20gdGhpczoKLSsgICAgICAgICAgICAgICAgZWNobyAiU3RhcnRpbmcgU1NI
 IFNlcnZlci4uLiIKLSsgICAgICAgICAgICAgICAgbG9hZHByb2MgL3Vzci9zYmluL3NzaGQK
 LSsgICAgICAgICAgICAgICAgOzsKLSt0byB0aGlzOgotKyAgICAgICAgICAgICAgICBlY2hv
 ICJTdGFydGluZyBTU0ggU2VydmVyLi4uIgotKyAgICAgICAgICAgICAgICBMREFQUkM9Ii9y
 b290Ly5sZGFwcmMiIGxvYWRwcm9jIC91c3Ivc2Jpbi9zc2hkCi0rICAgICAgICAgICAgICAg
 IDs7Ci0rCi0rUmUtc3RhcnQgdGhlIHNzaGQgZGFlbW9uOgotKy9ldGMvcmMuZC9pbml0LmQv
 c3NoZCByZXN0YXJ0Ci0rCi0rSW5zdGFsbCB0aGUgYWRkaXRpb25hbCBMREFQIHNjaGVtYQot
 K2NwICRCVUlMRC9vcGVuc3NoLWxway0wLjIuc2NoZW1hICAvZXRjL29wZW5sZGFwL3NjaGVt
 YS9vcGVuc3NoLnNjaGVtYQotKwotK05vdyBhZGQgdGhlIG9wZW5TU0ggTERBUCBzY2hlbWEg
 dG8gL2V0Yy9vcGVubGRhcC9zbGFwZC5jb25mOgotK0FkZCB0aGUgZm9sbG93aW5nIHRvIHRo
 ZSBlbmQgb2YgdGhlIGV4aXN0aW5nIGJsb2NrIG9mIHNjaGVtYSBpbmNsdWRlcwotK2luY2x1
 ZGUgICAgICAgICAvZXRjL29wZW5sZGFwL3NjaGVtYS9vcGVuc3NoLnNjaGVtYQotKwotK1Jl
 LXN0YXJ0IHRoZSBMREFQIHNlcnZlcjoKLSsvZXRjL3JjLmQvaW5pdC5kL3NsYXBkIHJlc3Rh
 cnQKLSsKLStUbyBhZGQgb25lIG9yIG1vcmUgcHVibGljIGtleXMgdG8gYSB1c2VyLCBlZyAi
 dGVzdHVzZXIiIDoKLStsZGFwc2VhcmNoIC14IC1XIC1aIC1MTEwgLWIgInVpZD10ZXN0dXNl
 cixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiAtRAotKyJ1aWQ9dGVzdHVzZXIsb3U9
 UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbSIgPiAvdG1wL3Rlc3R1c2VyCi0rCi0rYXBwZW5k
 IHRoZSBmb2xsb3dpbmcgdG8gdGhpcyAvdG1wL3Rlc3R1c2VyIGZpbGUKLStvYmplY3RjbGFz
 czogbGRhcFB1YmxpY0tleQotK3NzaFB1YmxpY0tleTogc3NoLXJzYQotK0FBQUFCM056YUMx
 eWMyRUFBQUFCSlFBQUFJQjNkc3J3cVhxRDdFNHpZWXJ4d2RES0JVUXhLTWlvWHk5cHhGVmFp
 NjRrQVB4alU5S1MKLStxSW83UWZranNsZnNqZmxrc2pmbGRma2pzbGRmakxYLzV6a3pSbVQy
 OEk1cGlHenVuUHYxN1M4OXo4WHdTc3VBb1IxdDg2dCs1ZGxJCi0rN2VaRS9nVmJuMlVRa1Fx
 NytrZERUUzJ5WFY2Vm5DNTJOL2tLTEczY2lCa0JBdz09IEdlbmVyYWwgUHVycG9zZSBSU0Eg
 S2V5Ci0rCi0rVGhlbiBkbyBhIG1vZGlmeToKLStsZGFwbW9kaWZ5IC14IC1EICJ1aWQ9dGVz
 dHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbSIgLVcgLWYKLSsvdG1wL3Rlc3R1
 c2VyIC1aCi0rRW50ZXIgTERBUCBQYXNzd29yZDoKLSttb2RpZnlpbmcgZW50cnkgInVpZD10
 ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIgotK0FuZCBjaGVjayB0aGUg
 bW9kaWZ5IGlzIG9rOgotK2xkYXBzZWFyY2ggLXggLVcgLVogLWIgInVpZD10ZXN0dXNlcixv
 dT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiAtRAotKyJ1aWQ9dGVzdHVzZXIsb3U9UGVv
 cGxlLGRjPW15ZG9tYWluLGRjPWNvbSIKLStFbnRlciBMREFQIFBhc3N3b3JkOgotKyMgZXh0
 ZW5kZWQgTERJRgotKyMKLSsjIExEQVB2MwotKyMgYmFzZSA8dWlkPXRlc3R1c2VyLG91PVBl
 b3BsZSxkYz1teWRvbWFpbixkYz1jb20+IHdpdGggc2NvcGUgc3ViCi0rIyBmaWx0ZXI6IChv
 YmplY3RjbGFzcz0qKQotKyMgcmVxdWVzdGluZzogQUxMCi0rIwotKwotKyMgdGVzdHVzZXIs
 IFBlb3BsZSwgbXlkb21haW4uY29tCi0rZG46IHVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9
 bXlkb21haW4sZGM9Y29tCi0rdWlkOiB0ZXN0dXNlcgotK2NuOiB0ZXN0dXNlcgotK29iamVj
 dENsYXNzOiBhY2NvdW50Ci0rb2JqZWN0Q2xhc3M6IHBvc2l4QWNjb3VudAotK29iamVjdENs
 YXNzOiB0b3AKLStvYmplY3RDbGFzczogc2hhZG93QWNjb3VudAotK29iamVjdENsYXNzOiBs
 ZGFwUHVibGljS2V5Ci0rc2hhZG93TGFzdENoYW5nZTogMTI3NTcKLStzaGFkb3dNYXg6IDk5
 OTk5Ci0rc2hhZG93V2FybmluZzogNwotK2xvZ2luU2hlbGw6IC9iaW4vYmFzaAotK3VpZE51
 bWJlcjogOTk5OQotK2dpZE51bWJlcjogNTAxCi0raG9tZURpcmVjdG9yeTogL2hvbWUvdGVz
 dHVzZXIKLSt1c2VyUGFzc3dvcmQ6OiBlMU5UU0VGOVVEZ3dWMWhuTTFWalVEUkpLMGsxWW5G
 aUwxZDRaVUpPYlhsWlozWjNVVFU9Ci0rc3NoUHVibGljS2V5OiBzc2gtcnNhCi0rQUFBQUIz
 TnphQzF5YzJFQUFBQUJKUUFBQUlCM2RzcndxWHFEN0U0ellZcnh3ZERLQlVReEtNaW9YeTlw
 eEZWYWk2NGtBUHhqVTlLU3FJbzdRZmtqc2xmc2pmbGtzamZsZGZranNsZGZqTFgvNXprelJt
 VDI4STVwaUd6dW5QdjE3Uzg5egotKzhYd1NzdUFvUjF0ODZ0KzVkbEk3ZVpFL2dWYm4yVVFr
 UXE3K2tkRFRTMnlYVjZWbkM1Mk4va0tMRzNjaUJrQkF3PT0gR2VuZXJhbCBQdXJwb3NlIFJT
 QSBLZXkKLSsKLSsjIHNlYXJjaCByZXN1bHQKLStzZWFyY2g6IDMKLStyZXN1bHQ6IDAgU3Vj
 Y2VzcwotKwotKyMgbnVtUmVzcG9uc2VzOiAyCi0rIyBudW1FbnRyaWVzOiAxCi0rCi0rTm93
 IHN0YXJ0IGEgc3NoIHNlc3Npb24gdG8gdXNlciAidGVzdHVzZXIiIGZyb20gdXN1YWwgc3No
 IGNsaWVudCAoZS5nLgotK3B1VFRZKS4gTG9naW4gc2hvdWxkIHN1Y2NlZWQuCi0rCi0rKysr
 KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
 KysrKysrKysrKysrKysrKysrKwotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1l
 eGNsdWRlICcqLnJlaicgTWFrZWZpbGUuaW4gTWFrZWZpbGUuaW4KLS0tLSBNYWtlZmlsZS5p
 bgkyMDA4LTA3LTA4IDA3OjIxOjEyLjAwMDAwMDAwMCAtMDcwMAotKysrIE1ha2VmaWxlLmlu
 CTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAtODYsNyArODYsNyBA
 QAotIAlhdXRoLWtyYjUubyBcCi0gCWF1dGgyLWdzcy5vIGdzcy1zZXJ2Lm8gZ3NzLXNlcnYt
 a3JiNS5vIFwKLSAJbG9naW5yZWMubyBhdXRoLXBhbS5vIGF1dGgtc2hhZG93Lm8gYXV0aC1z
 aWEubyBtZDVjcnlwdC5vIFwKLS0JYXVkaXQubyBhdWRpdC1ic20ubyBwbGF0Zm9ybS5vIHNm
 dHAtc2VydmVyLm8gc2Z0cC1jb21tb24ubwotKwlhdWRpdC5vIGF1ZGl0LWJzbS5vIHBsYXRm
 b3JtLm8gbGRhcGF1dGgubyBzZnRwLXNlcnZlci5vIHNmdHAtY29tbW9uLm8KLSAKLSBNQU5Q
 QUdFUwk9IG1vZHVsaS41Lm91dCBzY3AuMS5vdXQgc3NoLWFkZC4xLm91dCBzc2gtYWdlbnQu
 MS5vdXQgc3NoLWtleWdlbi4xLm91dCBzc2gta2V5c2Nhbi4xLm91dCBzc2guMS5vdXQgc3No
 ZC44Lm91dCBzZnRwLXNlcnZlci44Lm91dCBzZnRwLjEub3V0IHNzaC1yYW5kLWhlbHBlci44
 Lm91dCBzc2gta2V5c2lnbi44Lm91dCBzc2hkX2NvbmZpZy41Lm91dCBzc2hfY29uZmlnLjUu
 b3V0Ci0gTUFOUEFHRVNfSU4JPSBtb2R1bGkuNSBzY3AuMSBzc2gtYWRkLjEgc3NoLWFnZW50
 LjEgc3NoLWtleWdlbi4xIHNzaC1rZXlzY2FuLjEgc3NoLjEgc3NoZC44IHNmdHAtc2VydmVy
 Ljggc2Z0cC4xIHNzaC1yYW5kLWhlbHBlci44IHNzaC1rZXlzaWduLjggc3NoZF9jb25maWcu
 NSBzc2hfY29uZmlnLjUKLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVk
 ZSAnKi5yZWonIG9wZW5zc2gtbHBrX29wZW5sZGFwLnNjaGVtYSBvcGVuc3NoLWxwa19vcGVu
 bGRhcC5zY2hlbWEKLS0tLSBvcGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEJMTk2OS0xMi0z
 MSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBvcGVuc3NoLWxwa19vcGVubGRhcC5z
 Y2hlbWEJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBAIC0wLDAgKzEs
 MTkgQEAKLSsjCi0rIyBMREFQIFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0
 aCBvcGVuc3NoLWxkYXBwdWJrZXkKLSsjIEF1dGhvcjogRXJpYyBBVUdFIDxlYXVAcGhlYXIu
 b3JnPgotKyMgCi0rIyBCYXNlZCBvbiB0aGUgcHJvcG9zYWwgb2YgOiBNYXJrIFJ1aWp0ZXIK
 LSsjCi0rCi0rCi0rIyBvY3RldFN0cmluZyBTWU5UQVgKLSthdHRyaWJ1dGV0eXBlICggMS4z
 LjYuMS40LjEuMjQ1NTIuNTAwLjEuMS4xLjEzIE5BTUUgJ3NzaFB1YmxpY0tleScgCi0rCURF
 U0MgJ01BTkRBVE9SWTogT3BlblNTSCBQdWJsaWMga2V5JyAKLSsJRVFVQUxJVFkgb2N0ZXRT
 dHJpbmdNYXRjaAotKwlTWU5UQVggMS4zLjYuMS40LjEuMTQ2Ni4xMTUuMTIxLjEuNDAgKQot
 KwotKyMgcHJpbnRhYmxlU3RyaW5nIFNZTlRBWCB5ZXN8bm8KLStvYmplY3RjbGFzcyAoIDEu
 My42LjEuNC4xLjI0NTUyLjUwMC4xLjEuMi4wIE5BTUUgJ2xkYXBQdWJsaWNLZXknIFNVUCB0
 b3AgQVVYSUxJQVJZCi0rCURFU0MgJ01BTkRBVE9SWTogT3BlblNTSCBMUEsgb2JqZWN0Y2xh
 c3MnCi0rCU1VU1QgKCBzc2hQdWJsaWNLZXkgJCB1aWQgKSAKLSsJKQotZGlmZiAtTnVhciAt
 LWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgb3BlbnNzaC1scGtfc3VuLnNj
 aGVtYSBvcGVuc3NoLWxwa19zdW4uc2NoZW1hCi0tLS0gb3BlbnNzaC1scGtfc3VuLnNjaGVt
 YQkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotKysrIG9wZW5zc2gtbHBr
 X3N1bi5zY2hlbWEJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBAIC0w
 LDAgKzEsMjEgQEAKLSsjCi0rIyBMREFQIFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1
 c2Ugd2l0aCBvcGVuc3NoLWxkYXBwdWJrZXkKLSsjIEF1dGhvcjogRXJpYyBBVUdFIDxlYXVA
 cGhlYXIub3JnPgotKyMgCi0rIyBTY2hlbWEgZm9yIFN1biBEaXJlY3RvcnkgU2VydmVyLgot
 KyMgQmFzZWQgb24gdGhlIG9yaWdpbmFsIHNjaGVtYSwgbW9kaWZpZWQgYnkgU3RlZmFuIEZp
 c2NoZXIuCi0rIwotKwotK2RuOiBjbj1zY2hlbWEKLSsKLSsjIG9jdGV0U3RyaW5nIFNZTlRB
 WAotK2F0dHJpYnV0ZVR5cGVzOiAoIDEuMy42LjEuNC4xLjI0NTUyLjUwMC4xLjEuMS4xMyBO
 QU1FICdzc2hQdWJsaWNLZXknIAotKwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggUHVibGlj
 IGtleScgCi0rCUVRVUFMSVRZIG9jdGV0U3RyaW5nTWF0Y2gKLSsJU1lOVEFYIDEuMy42LjEu
 NC4xLjE0NjYuMTE1LjEyMS4xLjQwICkKLSsKLSsjIHByaW50YWJsZVN0cmluZyBTWU5UQVgg
 eWVzfG5vCi0rb2JqZWN0Q2xhc3NlczogKCAxLjMuNi4xLjQuMS4yNDU1Mi41MDAuMS4xLjIu
 MCBOQU1FICdsZGFwUHVibGljS2V5JyBTVVAgdG9wIEFVWElMSUFSWQotKwlERVNDICdNQU5E
 QVRPUlk6IE9wZW5TU0ggTFBLIG9iamVjdGNsYXNzJwotKwlNVVNUICggc3NoUHVibGljS2V5
 ICQgdWlkICkgCi0rCSkKLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVk
 ZSAnKi5yZWonIFJFQURNRS5scGsgUkVBRE1FLmxwawotLS0tIFJFQURNRS5scGsJMTk2OS0x
 Mi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBSRUFETUUubHBrCTIwMDgtMDgt
 MjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAtMCwwICsxLDI2NyBAQAotK09wZW5T
 U0ggTERBUCBQVUJMSUMgS0VZIFBBVENIIAotK0NvcHlyaWdodCAoYykgMjAwMyBFcmljIEFV
 R0UgKGVhdUBwaGVhci5vcmcpCi0rQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsKLStSZWRpc3Ry
 aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
 dGhvdXQKLSttb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
 Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSthcmUgbWV0OgotKzEuIFJlZGlzdHJpYnV0aW9ucyBv
 ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICAgbm90
 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
 bWVyLgotKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
 ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKyAgIGRvY3VtZW50
 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
 dXRpb24uCi0rMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8g
 ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCi0rICAgZGVyaXZlZCBmcm9tIHRoaXMgc29m
 dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0rCi0r
 VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQg
 QU5ZIEVYUFJFU1MgT1IKLStJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
 VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCi0rT0YgTUVSQ0hBTlRBQklM
 SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
 RC4KLStJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJ
 UkVDVCwgSU5ESVJFQ1QsCi0rSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
 T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rTk9UIExJTUlURUQgVE8s
 IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
 VVNFLAotK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
 RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
 SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSsoSU5DTFVESU5HIE5F
 R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
 U0UgT0YKLStUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
 SVRZIE9GIFNVQ0ggREFNQUdFLgotKwotK3B1cnBvc2VzIG9mIHRoaXMgcGF0Y2g6Ci0rCi0r
 VGhpcyBwYXRjaCB3b3VsZCBoZWxwIHRvIGhhdmUgYXV0aGVudGljYXRpb24gY2VudHJhbGl6
 YXRpb24gcG9saWN5Ci0rdXNpbmcgc3NoIHB1YmxpYyBrZXkgYXV0aGVudGljYXRpb24uCi0r
 VGhpcyBwYXRjaCBjb3VsZCBiZSBhbiBhbHRlcm5hdGl2ZSB0byBvdGhlciAic2VjdXJlIiBh
 dXRoZW50aWNhdGlvbiBzeXN0ZW0KLSt3b3JraW5nIGluIGEgc2ltaWxhciB3YXkgKEtlcmJl
 cm9zLCBTZWN1cklELCBldGMuLi4pLCBleGNlcHQgdGhlIGZhY3QgCi0rdGhhdCBpdCdzIGJh
 c2VkIG9uIE9wZW5TU0ggYW5kIGl0cyBwdWJsaWMga2V5IGFiaWxpdGllcy4KLSsKLSs+PiBG
 WUk6IDw8Ci0rJ3VpZCc6IG1lYW5zIHVuaXggYWNjb3VudHMgZXhpc3Rpbmcgb24gdGhlIGN1
 cnJlbnQgc2VydmVyCi0rJ2xwa1NlcnZlckdyb3VwOicgbWVhbiBzZXJ2ZXIgZ3JvdXAgY29u
 ZmlndXJlZCBvbiB0aGUgY3VycmVudCBzZXJ2ZXIgKCdscGtTZXJ2ZXJHcm91cCcgaW4gc3No
 ZF9jb25maWcpCi0rCi0rZXhhbXBsZSBzY2hlbWE6Ci0rCi0rCi0rICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgIHNlcnZlcjEgKHVpZDogZWF1LHJpdmFsLHRvdG8pIChscGtT
 ZXJ2ZXJHcm91cDogdW5peCkKLSsgICAgICAgICAgICAgICAgX19fX19fX19fX18gICAgICAv
 Ci0rICAgICAgICAgICAgICAgLyAgICAgICAgICAgXCAtLS0gLSBzZXJ2ZXIzICh1aWQ6IGVh
 dSwgdGl0aSkgKGxwa1NlcnZlckdyb3VwOiB1bml4KQotKyAgICAgICAgICAgICAgfCBMREFQ
 IFNlcnZlciB8ICAgIFwKLSsJICAgICAgfCBlYXUgICxyaXZhbCB8ICAgICBzZXJ2ZXIyICh1
 aWQ6IHJpdmFsLCBlYXUpIChscGtTZXJ2ZXJHcm91cDogdW5peCkKLSsJICAgICAgfCB0aXRp
 ICx0b3RvICB8Ci0rCSAgICAgIHwgdXNlcngsLi4uLiAgfCAgICAgICAgIHNlcnZlcjUgKHVp
 ZDogZWF1KSAgKGxwa1NlcnZlckdyb3VwOiBtYWlsKQotKyAgICAgICAgICAgICAgIFxfX19f
 X19fX19fXy8gXCAgICAgICAvCi0rCSAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gLSBz
 ZXJ2ZXI0ICh1aWQ6IGVhdSwgcml2YWwpICAobm8gZ3JvdXAgY29uZmlndXJlZCkKLSsJCQkg
 ICAgICAgICAgICAgXAotKwkJCQkgICAgICAgIGV0Yy4uLgotKwotKy0gV0hBVCBXRSBORUVE
 IDoKLSsKLSsgICogY29uZmlndXJlZCBMREFQIHNlcnZlciBzb21ld2hlcmUgb24gdGhlIG5l
 dHdvcmsgKGkuZS4gT3BlbkxEQVApCi0rICAqIHBhdGNoZWQgc3NoZCAod2l0aCB0aGlzIHBh
 dGNoIDspCi0rICAqIExEQVAgdXNlcigvZ3JvdXApIGVudHJ5IChsb29rIGF0IHVzZXJzLmxk
 aWYgKCYgZ3JvdXBzLmxkaWYpKToKLSsgICAgICAgIFVzZXIgZW50cnk6Ci0rCS0gYXR0YWNo
 ZWQgdG8gdGhlICdsZGFwUHVibGljS2V5JyBvYmplY3RjbGFzcwotKwktIGF0dGFjaGVkIHRv
 IHRoZSAncG9zaXhBY2NvdW50JyBvYmplY3RjbGFzcwotKwktIHdpdGggYSBmaWxsZWQgJ3Nz
 aFB1YmxpY0tleScgYXR0cmlidXRlIAotKwlFeGFtcGxlOgotKwkJZG46IHVpZD1lYXUsb3U9
 dXNlcnMsZGM9Y3Vja29vcyxkYz1uZXQKLSsJCW9iamVjdGNsYXNzOiB0b3AKLSsJCW9iamVj
 dGNsYXNzOiBwZXJzb24KLSsJCW9iamVjdGNsYXNzOiBvcmdhbml6YXRpb25hbFBlcnNvbgot
 KwkJb2JqZWN0Y2xhc3M6IHBvc2l4QWNjb3VudAotKwkJb2JqZWN0Y2xhc3M6IGxkYXBQdWJs
 aWNLZXkKLSsJCWRlc2NyaXB0aW9uOiBFcmljIEFVR0UgQWNjb3VudAotKwkJdXNlclBhc3N3
 b3JkOiBibGFoCi0rCQljbjogRXJpYyBBVUdFCi0rCQlzbjogRXJpYyBBVUdFCi0rCQl1aWQ6
 IGVhdQotKwkJdWlkTnVtYmVyOiAxMDM0Ci0rCQlnaWROdW1iZXI6IDEKLSsJCWhvbWVEaXJl
 Y3Rvcnk6IC9leHBvcnQvaG9tZS9lYXUKLSsJCXNzaFB1YmxpY0tleTogc3NoLWRzcyBBQUFB
 QjMuLi4KLSsJCXNzaFB1YmxpY0tleTogc3NoLWRzcyBBQUFBTTUuLi4KLSsKLSsJR3JvdXAg
 ZW50cnk6Ci0rCS0gYXR0YWNoZWQgdG8gdGhlICdwb3NpeEdyb3VwJyBvYmplY3RjbGFzcwot
 KwktIHdpdGggYSAnY24nIGdyb3VwbmFtZSBhdHRyaWJ1dGUKLSsJLSB3aXRoIG11bHRpcGxl
 ICdtZW1iZXJVaWQnIGF0dHJpYnV0ZXMgZmlsbGVkIHdpdGggdXNlcm5hbWVzIGFsbG93ZWQg
 aW4gdGhpcyBncm91cAotKwlFeGFtcGxlOgotKwkJIyBmZXcgbWVtYmVycwotKwkJZG46IGNu
 PXVuaXgsb3U9Z3JvdXBzLGRjPWN1Y2tvb3MsZGM9bmV0Ci0rCQlvYmplY3RjbGFzczogdG9w
 Ci0rCQlvYmplY3RjbGFzczogcG9zaXhHcm91cAotKwkJZGVzY3JpcHRpb246IFVuaXggYmFz
 ZWQgc2VydmVycyBncm91cAotKwkJY246IHVuaXgKLSsJCWdpZE51bWJlcjogMTAwMgotKwkJ
 bWVtYmVyVWlkOiBlYXUKLSsJCW1lbWJlclVpZDogdXNlcjEKLSsJCW1lbWJlclVpZDogdXNl
 cjIKLSsKLSsKLSstIEhPVyBJVCBXT1JLUyA6Ci0rCi0rICAqIHdpdGhvdXQgcGF0Y2gKLSsg
 IElmIGEgdXNlciB3YW50cyB0byBhdXRoZW50aWNhdGUgdG8gbG9nIGluIGEgc2VydmVyIHRo
 ZSBzc2hkLCB3aWxsIGZpcnN0IGxvb2sgZm9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBhbGxv
 d2VkIChSU0FhdXRoLGtlcmJlcm9zLGV0Yy4uKQotKyAgYW5kIGlmIFJTQWF1dGggYW5kIHRp
 Y2tldHMgYmFzZWQgYXV0aCBmYWlscywgaXQgd2lsbCBmYWxsYmFjayB0byBzdGFuZGFyZCBw
 YXNzd29yZCBhdXRoZW50aWNhdGlvbiAoaWYgZW5hYmxlZCkuCi0rCi0rICAqIHdpdGggdGhl
 IHBhdGNoCi0rICBJZiBhIHVzZXIgd2FudCB0byBhdXRoZW50aWNhdGUgdG8gbG9nIGluIGEg
 c2VydmVyLCB0aGUgc3NoZCB3aWxsIGZpcnN0IGxvb2sgZm9yIGF1dGggbWV0aG9kIGluY2x1
 ZGluZyBMREFQIHB1YmtleSwgaWYgdGhlIGxkYXBwdWJrZXkgb3B0aW9ucyBpcyBlbmFibGVk
 LgotKyAgSXQgd2lsbCBkbyBhbiBsZGFwc2VhcmNoIHRvIGdldCB0aGUgcHVibGljIGtleSBk
 aXJlY3RseSBmcm9tIHRoZSBMREFQIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBz
 ZXJ2ZXIgZmlsZXN5c3RlbS4gCi0rICAodXN1YWxseSBpbiAkSE9NRS8uc3NoL2F1dGhvcml6
 ZWRfa2V5cykKLSsKLSsgIElmIGdyb3VwcyBhcmUgZW5hYmxlZCwgaXQgd2lsbCBhbHNvIGNo
 ZWNrIGlmIHRoZSB1c2VyIHRoYXQgd2FudHMgdG8gbG9naW4gaXMgaW4gdGhlIGdyb3VwIG9m
 IHRoZSBzZXJ2ZXIgaGUgaXMgdHJ5aW5nIHRvIGxvZyBpbnRvLgotKyAgSWYgaXQgZmFpbHMs
 IGl0IGZhbGxzIGJhY2sgb24gUlNBIGF1dGggZmlsZXMgKCRIT01FLy5zc2gvYXV0aG9yaXpl
 ZF9rZXlzKSwgZXRjLi4gYW5kIGZpbmFsbHkgdG8gc3RhbmRhcmQgcGFzc3dvcmQgYXV0aGVu
 dGljYXRpb24gKGlmIGVuYWJsZWQpLgotKwotKyAgNyB0b2tlbnMgYXJlIGFkZGVkIHRvIHNz
 aGRfY29uZmlnIDoKLSsgICMgaGVyZSBpcyB0aGUgbmV3IHBhdGNoZWQgbGRhcCByZWxhdGVk
 IHRva2VucwotKyAgIyBlbnRyaWVzIGluIHlvdXIgTERBUCBtdXN0IGJlIHBvc2l4QWNjb3Vu
 dCAmIHN0cm9uZ0F1dGhlbnRpY2F0aW9uVXNlciAmIHBvc2l4R3JvdXAKLSsgIFVzZUxQSyB5
 ZXMJCQkJCQkJCSMgbG9vayB0aGUgcHViIGtleSBpbnRvIExEQVAKLSsgIExwa1NlcnZlcnMg
 bGRhcDovLzEwLjMxLjMyLjUvIGxkYXA6Ly8xMC4zMS4zMi40IGxkYXA6Ly8xMC4zMS4zMi4z
 CSMgd2hpY2ggTERBUCBzZXJ2ZXIgZm9yIHVzZXJzID8gKFVSTCBmb3JtYXQpCi0rICBMcGtV
 c2VyRE4gIG91PXVzZXJzLGRjPWZvb2JhcixkYz1uZXQJCQkJCSMgd2hpY2ggYmFzZSBETiBm
 b3IgdXNlcnMgPwotKyAgTHBrR3JvdXBETiBvdT1ncm91cHMsZGM9Zm9vYmFyLGRjPW5ldAkJ
 CQkJIyB3aGljaCBiYXNlIEROIGZvciBncm91cHMgPyAKLSsgIExwa0JpbmRETiBjbj1tYW5h
 Z2VyLGRjPWZvb2JhcixkYz1uZXQJCQkJCSMgd2hpY2ggYmluZCBETiA/Ci0rICBMcGtCaW5k
 UHcgYXNlY3JldAkJCQkJCQkjIGJpbmQgRE4gY3JlZGlkZW50aWFscwotKyAgTHBrU2VydmVy
 R3JvdXAgYWdyb3VwbmFtZQkJCQkJCSMgdGhlIGdyb3VwIHRoZSBzZXJ2ZXIgaXMgcGFydCBv
 ZgotKwotKyAgUmlnaHQgbm93IGknbSB1c2luZyBhbm9ueW1vdXMgYmluZGluZyB0byBnZXQg
 cHVibGljIGtleXMsIGJlY2F1c2UgZ2V0dGluZyBwdWJsaWMga2V5cyBvZiBzb21lb25lIGRv
 ZXNuJ3QgaW1wZXJzb25hdGUgaGltuCBidXQgdGhlcmUgaXMgc29tZQotKyAgZmxhd3MgeW91
 IGhhdmUgdG8gdGFrZSBjYXJlIG9mLgotKwotKy0gSE9XIFRPIElOU0VSVCBBIFVTRVIvS0VZ
 IElOVE8gQU4gTERBUCBFTlRSWQotKwotKyAgKiBteSB3YXkgKHRoZXJlIGlzIHBsZW50eSA6
 KQotKyAgLSBjcmVhdGUgbGRpZiBmaWxlIChpLmUuIHVzZXJzLmxkaWYpCi0rICAtIGNhdCB+
 Ly5zc2gvaWRfZHNhLnB1YiBPUiBjYXQgfi8uc3NoL2lkX3JzYS5wdWIgT1IgY2F0IH4vLnNz
 aC9pZGVudGl0eS5wdWIKLSsgIC0gbXkgd2F5IGluIDQgc3RlcHMgOgotKyAgRXhhbXBsZToK
 LSsKLSsgICMgeW91IGFkZCB0aGlzIHRvIHRoZSB1c2VyIGVudHJ5IGluIHRoZSBMRElGIGZp
 bGUgOgotKyAgWy4uLl0KLSsgIG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQKLSsgIG9iamVj
 dGNsYXNzOiBsZGFwUHVibGljS2V5Ci0rICBbLi4uXQotKyAgc3NoUHVibGlLZXk6IHNzaC1k
 c3MgQUFBQUJEaDEyRERVUjIuLi4KLSsgIFsuLi5dCi0rCi0rICAjIGluc2VydCB5b3VyIGVu
 dHJ5IGFuZCB5b3UncmUgZG9uZSA6KQotKyAgbGRhcGFkZCAtRCBiYWxibGFibGEgLXcgYmxl
 aCA8IGZpbGUubGRpZiAKLSsgIAotKyAgYWxsIHN0YW5kYXJkIG9wdGlvbnMgY2FuIGJlIHBy
 ZXNlbnQgaW4gdGhlICdzc2hQdWJsaWNLZXknIGF0dHJpYnV0ZS4KLSsKLSstIFdIWSA6Ci0r
 Ci0rICBTaW1wbHkgYmVjYXVzZSwgaSB3YXMgbG9va2luZyBmb3IgYSB3YXkgdG8gY2VudHJh
 bGl6ZSBhbGwgc3lzYWRtaW5zIGF1dGhlbnRpY2F0aW9uLCBlYXNpbHksICB3aXRob3V0IGNv
 bXBsZXRlbHkgdXNpbmcgTERBUCAKLSsgIGFzIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCAobGlr
 ZSBwYW1fbGRhcCBldGMuLikuICAKLSsgIAotKyAgQWZ0ZXIgbG9va2luZyBpbnRvIEtlcmJl
 cm9zLCBTZWN1cklELCBhbmQgb3RoZXIgY2VudHJhbGl6ZWQgc2VjdXJlIGF1dGhlbnRpY2F0
 aW9ucyBzeXN0ZW1zLCB0aGUgdXNlIG9mIFJTQSBhbmQgTERBUCB0byBnZXQgCi0rICBwdWJs
 aWMga2V5IGZvciBhdXRoZW50aWNhdGlvbiBhbGxvd3MgdXMgdG8gY29udHJvbCB3aG8gaGFz
 IGFjY2VzcyB0byB3aGljaCBzZXJ2ZXIgKHRoZSB1c2VyIG5lZWRzIGFuIGFjY291bnQgYW5k
 IHRvIGJlIGluICdzdHJvbmdBdXRoZW50aWNhdGlvblVzZXInCi0rICBvYmplY3RjbGFzcyB3
 aXRoaW4gTERBUCBhbmQgcGFydCBvZiB0aGUgZ3JvdXAgdGhlIFNTSCBzZXJ2ZXIgaXMgaW4p
 LiAKLSsKLSsgIFBhc3N3b3JkcyB1cGRhdGUgYXJlIG5vIGxvbmdlciBhIG5pZ2h0bWFyZSBm
 b3IgYSBzZXJ2ZXIgZmFybSAoa2V5IHBhaXIgcGFzc3BocmFzZSBpcyBzdG9yZWQgb24gZWFj
 aCB1c2VyJ3MgYm94IGFuZCBwcml2YXRlIGtleSBpcyBsb2NhbGx5IGVuY3J5cHRlZCB1c2lu
 ZyBoaXMgcGFzc3BocmFzZSAKLSsgIHNvIGVhY2ggdXNlciBjYW4gY2hhbmdlIGl0IGFzIG11
 Y2ggYXMgaGUgd2FudHMpLiAKLSsKLSsgIEJsb2NraW5nIGEgdXNlciBhY2NvdW50IGNhbiBi
 ZSBkb25lIGRpcmVjdGx5IGZyb20gdGhlIExEQVAgKGlmIHNzaGQgaXMgdXNpbmcgUlNBQXV0
 aCArIGxkYXAgb25seSkuCi0rCi0rLSBSVUxFUyA6ICAKLSsgIEVudHJ5IGluIHRoZSBMREFQ
 IHNlcnZlciBtdXN0IHJlc3BlY3QgJ3Bvc2l4QWNjb3VudCcgYW5kICdsZGFwUHVibGljS2V5
 JyB3aGljaCBhcmUgZGVmaW5lZCBpbiBjb3JlLnNjaGVtYS4gCi0rICBhbmQgdGhlIGFkZGl0
 aW9ubmFsIGxway5zY2hlbWEuCi0rCi0rICBUaGlzIHBhdGNoIGNvdWxkIGFsbG93IGEgc21v
 b3RoIHRyYW5zaXRpb24gYmV0d2VlbiBzdGFuZGFyZCBhdXRoICgvZXRjL3Bhc3N3ZCkgYW5k
 IGNvbXBsZXRlIExEQVAgYmFzZWQgYXV0aGVudGljYXRpb24gCi0rICAocGFtbGRhcCwgbnNz
 X2xkYXAsIGV0Yy4uKS4KLSsKLSsgIFRoaXMgY2FuIGJlIGFuIGFsdGVybmF0aXZlIHRvIG90
 aGVyIChvbGQ/L2V4cGVuc2l2ZT8pIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgKEtlcmJlcm9z
 L1NlY3VySUQvLi4pLgotKyAgCi0rICBSZWZlcnJpbmcgdG8gc2NoZW1hIGF0IHRoZSBiZWdp
 bm5pbmcgb2YgdGhpcyBmaWxlIGlmIHVzZXIgJ2VhdScgaXMgb25seSBpbiBncm91cCAndW5p
 eCcKLSsgICdlYXUnIHdvdWxkIE9OTFkgYWNjZXNzICdzZXJ2ZXIxJywgJ3NlcnZlcjInLCAn
 c2VydmVyMycgQU5EICdzZXJ2ZXI0JyBCVVQgTk9UICdzZXJ2ZXI1Jy4KLSsgIElmIHlvdSB0
 aGVuIG1vZGlmeSB0aGUgTERBUCAnbWFpbCcgZ3JvdXAgZW50cnkgdG8gYWRkICdtZW1iZXJV
 aWQ6IGVhdScgVEhFTiB1c2VyICdlYXUnIHdvdWxkIGJlIGFibGUKLSsgIHRvIGxvZyBpbiAn
 c2VydmVyNScgKGkgaG9wZSB5b3UgZ290IHRoZSBpZGVhLCBteSBlbmdsaXNoIGlzIGJhZCA6
 KS4KLSsKLSsgIEVhY2ggc2VydmVyJ3Mgc3NoZCBpcyBwYXRjaGVkIGFuZCBjb25maWd1cmVk
 IHRvIGFzayB0aGUgcHVibGljIGtleSBhbmQgdGhlIGdyb3VwIGluZm9zIGluIHRoZSBMREFQ
 Ci0rICBzZXJ2ZXIuCi0rICBXaGVuIHlvdSB3YW50IHRvIGFsbG93IGEgbmV3IHVzZXIgdG8g
 aGF2ZSBhY2Nlc3MgdG8gdGhlIHNlcnZlciBwYXJjLCB5b3UganVzdCBhZGQgaGltIGFuIGFj
 Y291bnQgb24gCi0rICB5b3VyIHNlcnZlcnMsIHlvdSBhZGQgaGlzIHB1YmxpYyBrZXkgaW50
 byBoaXMgZW50cnkgb24gdGhlIExEQVAgc2VydmVyLCBpdCdzIGRvbmUuIAotKwotKyAgQmVj
 YXVzZSBzc2hkcyBhcmUgbG9va2luZyBwdWJsaWMga2V5cyBpbnRvIHRoZSBMREFQIGRpcmVj
 dGx5IGluc3RlYWQgb2YgYSBmaWxlICgkSE9NRS8uc3NoL2F1dGhvcml6ZWRfa2V5cykuCi0r
 Ci0rICBXaGVuIHRoZSB1c2VyIG5lZWRzIHRvIGNoYW5nZSBoaXMgcGFzc3BocmFzZSBoZSBj
 YW4gZG8gaXQgZGlyZWN0bHkgZnJvbSBoaXMgd29ya3N0YXRpb24gYnkgY2hhbmdpbmcgCi0r
 ICBoaXMgb3duIGtleSBzZXQgbG9jayBwYXNzcGhyYXNlLCBhbmQgYWxsIHNlcnZlcnMgYXJl
 IGF1dG9tYXRpY2FsbHkgYXdhcmUuCi0rIAotKyAgV2l0aCBhIENBUkVGVUwgTERBUCBzZXJ2
 ZXIgY29uZmlndXJhdGlvbiB5b3UgY291bGQgYWxsb3cgYSB1c2VyIHRvIGFkZC9kZWxldGUv
 bW9kaWZ5IGhpcyBvd24gZW50cnkgaGltc2VsZgotKyAgc28gaGUgY2FuIGFkZC9tb2RpZnkv
 ZGVsZXRlIGhpbXNlbGYgaGlzIHB1YmxpYyBrZXkgd2hlbiBuZWVkZWQuCi0rCi0rrSBGTEFX
 UyA6Ci0rICBMREFQIG11c3QgYmUgd2VsbCBjb25maWd1cmVkLCBnZXR0aW5nIHRoZSBwdWJs
 aWMga2V5IG9mIHNvbWUgdXNlciBpcyBub3QgYSBwcm9ibGVtLCBidXQgaWYgYW5vbnltb3Vz
 IExEQVAgCi0rICBhbGxvdyB3cml0ZSB0byB1c2VycyBkbiwgc29tZWJvZHkgY291bGQgcmVw
 bGFjZSBzb21ldXNlcidzIHB1YmxpYyBrZXkgYnkgaXRzIG93biBhbmQgaW1wZXJzb25hdGUg
 c29tZSAKLSsgIG9mIHlvdXIgdXNlcnMgaW4gYWxsIHlvdXIgc2VydmVyIGZhcm0gYmUgVkVS
 WSBDQVJFRlVMLgotKyAgCi0rICBNSVRNIGF0dGFjayB3aGVuIHNzaGQgaXMgcmVxdWVzdGlu
 ZyB0aGUgcHVibGljIGtleSwgY291bGQgbGVhZCB0byBhIGNvbXByb21pc2Ugb2YgeW91ciBz
 ZXJ2ZXJzIGFsbG93aW5nIGxvZ2luIAotKyAgYXMgdGhlIGltcGVyc29ubmF0ZWQgdXNlci4K
 LSsKLSsgIElmIExEQVAgc2VydmVyIGlzIGRvd24gdGhlbiwgZmFsbGJhY2sgb24gcGFzc3dk
 IGF1dGguCi0rICAKLSsgIHRoZSBsZGFwIGNvZGUgcGFydCBoYXMgbm90IGJlZW4gd2VsbCBh
 dWRpdGVkIHlldC4KLSsKLSstIExEQVAgVVNFUiBFTlRSWSBFWEFNUExFUyAoTERJRiBGb3Jt
 YXQsIGxvb2sgaW4gdXNlcnMubGRpZikKLSsgICAgLS0tIENVVCBIRVJFIC0tLQotKyAgICBk
 bjogdWlkPWpkb2Usb3U9dXNlcnMsZGM9Zm9vYmFyLGRjPW5ldAotKyAgICBvYmplY3RjbGFz
 czogdG9wCi0rICAgIG9iamVjdGNsYXNzOiBwZXJzb24KLSsgICAgb2JqZWN0Y2xhc3M6IG9y
 Z2FuaXphdGlvbmFsUGVyc29uCi0rICAgIG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQKLSsg
 ICAgb2JqZWN0Y2xhc3M6IGxkYXBQdWJsaWNLZXkKLSsgICAgZGVzY3JpcHRpb246IE15IGFj
 Y291bnQKLSsgICAgY246IEpvaG4gRG9lCi0rICAgIHNuOiBKb2huIERvZQotKyAgICB1aWQ6
 IGpkb2UKLSsgICAgdWlkTnVtYmVyOiAxMDAKLSsgICAgZ2lkTnVtYmVyOiAxMDAKLSsgICAg
 aG9tZURpcmVjdG9yeTogL2hvbWUvamRvZQotKyAgICBzc2hQdWJsaWNLZXk6IHNzaC1kc3Mg
 QUFBQUIzTnphQzFrYzNNQUFBRUJBT3ZMOHBSRVVnOXdTeS84K2hRSjU0WUYzQVhrQjBPWnJY
 Qi4uLi4KLSsgICAgWy4uLl0KLSsgICAgLS0tIENVVCBIRVJFIC0tLQotKwotKy0gTERBUCBH
 Uk9VUCBFTlRSWSBFWEFNUExFUyAoTERJRiBGb3JtYXQsIGxvb2sgaW4gZ3JvdXBzLmxkaWYp
 Ci0rICAgIC0tLSBDVVQgSEVSRSAtLS0KLSsgICAgZG46IGNuPXVuaXgsb3U9Z3JvdXBzLGRj
 PWN1Y2tvb3MsZGM9bmV0Ci0rICAgIG9iamVjdGNsYXNzOiB0b3AKLSsgICAgb2JqZWN0Y2xh
 c3M6IHBvc2l4R3JvdXAKLSsgICAgZGVzY3JpcHRpb246IFVuaXggYmFzZWQgc2VydmVycyBn
 cm91cAotKyAgICBjbjogdW5peAotKyAgICBnaWROdW1iZXI6IDEwMDIKLSsgICAgbWVtYmVy
 VWlkOiBqZG9lCi0rICAgIG1lbWJlclVpZDogdXNlcjEKLSsgICAgbWVtYmVyVWlkOiB1c2Vy
 MgotKyAgICBbLi4uXQotKyAgICAtLS0gQ1VUIEhFUkUgLS0tCi0rCi0rPj4gRllJOiA8PCAK
 LStNdWx0aXBsZSAnc3NoUHVibGljS2V5JyBpbiBhIHVzZXIgZW50cnkgYXJlIGFsbG93ZWQs
 IGFzIHdlbGwgYXMgbXVsdGlwbGUgJ21lbWJlclVpZCcgYXR0cmlidXRlcyBpbiBhIGdyb3Vw
 IGVudHJ5Ci0rCi0rLSBDT01QSUxJTkc6Ci0rICAxLiBBcHBseSB0aGUgcGF0Y2gKLSsgIDIu
 IC4vY29uZmlndXJlIC0td2l0aC15b3VyLW9wdGlvbnMgLS13aXRoLWxkYXA9L3ByZWZpeC90
 by9sZGFwX2xpYnNfYW5kX2luY2x1ZGVzCi0rICAzLiBtYWtlCi0rICA0LiBpdCdzIGRvbmUu
 Ci0rCi0rLSBCTEEgOgotKyAgSSBob3BlIHRoaXMgY291bGQgaGVscCwgYW5kIGkgaG9wZSB0
 byBiZSBjbGVhciBlbm91Z2gsLCBvciBnaXZlIGlkZWFzLiAgcXVlc3Rpb25zL2NvbW1lbnRz
 L2ltcHJvdmVtZW50cyBhcmUgd2VsY29tZS4KLSsgIAotKy0gVE9ETyA6Ci0rICBSZWRlc2ln
 biBkaWZmZXJlbnRseS4KLSsKLSstIERPQ1MvTElOSyA6Ci0rICBodHRwOi8vcGFjc2VjLmpw
 L2NvcmUwNS9wc2owNS1iYXJpc2FuaS1lbi5wZGYKLSsgIGh0dHA6Ly9mcml0ei5wb3RzZGFt
 LmVkdS9wcm9qZWN0cy9vcGVuc3NoLWxway8KLSsgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVk
 dS9wcm9qZWN0cy9zc2hnYXRlLwotKyAgaHR0cDovL2Rldi5pbnZlcnNlcGF0aC5jb20vdHJh
 Yy9vcGVuc3NoLWxwawotKyAgaHR0cDovL2xhbS5zZi5uZXQvICggaHR0cDovL2xhbS5zb3Vy
 Y2Vmb3JnZS5uZXQvZG9jdW1lbnRhdGlvbi9zdXBwb3J0ZWRTY2hlbWFzLmh0bSApCi0rCi0r
 LSBDT05UUklCVVRPUlMvSURFQVMvR1JFRVRTIDoKLSsgIC0gRmFsayBTaWVtb25zbWVpZXIu
 Ci0rICAtIEphY29iIFJpZWYuCi0rICAtIE1pY2hhZWwgRHVyY2hncmFmLgotKyAgLSBmcmVk
 ZXJpYyBwZXRlcnMuCi0rICAtIEZpbmxheSBkb2JiaWUuCi0rICAtIFN0ZWZhbiBGaXNoZXIu
 Ci0rICAtIFJvYmluIEguIEpvaG5zb24uCi0rICAtIEFkcmlhbiBCcmlkZ2V0dC4KLSsKLSst
 IENPTlRBQ1QgOgotKyAgLSBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+Ci0rICAtIEFuZHJl
 YSBCYXJpc2FuaSA8YW5kcmVhQGludmVyc2VwYXRoLmNvbT4KLQotZGlmZiAtTnVhciAtLWV4
 Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc2VydmNvbmYuaCBzZXJ2Y29uZi5o
 Ci0tLS0gc2VydmNvbmYuaAkyMDA4LTA2LTEwIDA2OjAxOjUxLjAwMDAwMDAwMCAtMDcwMAot
 KysrIHNlcnZjb25mLmgJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBA
 IC0xNiw2ICsxNiwxMCBAQAotICNpZm5kZWYgU0VSVkNPTkZfSAotICNkZWZpbmUgU0VSVkNP
 TkZfSAotIAotKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCi0rI2luY2x1ZGUgImxkYXBhdXRo
 LmgiCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBNQVhfUE9SVFMJCTI1NgkvKiBNYXggIyBwb3J0
 cy4gKi8KLSAKLSAjZGVmaW5lIE1BWF9BTExPV19VU0VSUwkJMjU2CS8qIE1heCAjIHVzZXJz
 IG9uIGFsbG93IGxpc3QuICovCi1AQCAtMTQ1LDYgKzE0OSw5IEBACi0gCWludAl1c2VfcGFt
 OwkJLyogRW5hYmxlIGF1dGggdmlhIFBBTSAqLwotIAotIAlpbnQJcGVybWl0X3R1bjsKLSsj
 aWZkZWYgV0lUSF9MREFQX1BVQktFWQotKyAgICAgICAgbGRhcF9vcHRfdCBscGs7Ci0rI2Vu
 ZGlmCi0gCi0gCWludAludW1fcGVybWl0dGVkX29wZW5zOwotIAotZGlmZiAtTnVhciAtLWV4
 Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc3NoZC5jIHNzaGQuYwotLS0tIHNz
 aGQuYwkyMDA4LTA3LTExIDAwOjM2OjQ5LjAwMDAwMDAwMCAtMDcwMAotKysrIHNzaGQuYwky
 MDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAotQEAgLTEyNyw2ICsxMjcsMTAg
 QEAKLSBpbnQgZGVueV9zZXZlcml0eTsKLSAjZW5kaWYgLyogTElCV1JBUCAqLwotIAotKyNp
 ZmRlZiBXSVRIX0xEQVBfUFVCS0VZCi0rI2luY2x1ZGUgImxkYXBhdXRoLmgiCi0rI2VuZGlm
 Ci0rCi0gI2lmbmRlZiBPX05PQ1RUWQotICNkZWZpbmUgT19OT0NUVFkJMAotICNlbmRpZgot
 QEAgLTE0ODQsNiArMTQ4OCwxNiBAQAotIAkJZXhpdCgxKTsKLSAJfQotIAotKyNpZmRlZiBX
 SVRIX0xEQVBfUFVCS0VZCi0rICAgIC8qIGxkYXBfb3B0aW9uc19wcmludCgmb3B0aW9ucy5s
 cGspOyAqLwotKyAgICAvKiBYWFggaW5pdGlhbGl6ZS9jaGVjayBsZGFwIGNvbm5lY3Rpb24g
 YW5kIHNldCAqTEQgKi8KLSsgICAgaWYgKG9wdGlvbnMubHBrLm9uKSB7Ci0rICAgICAgICBp
 ZiAob3B0aW9ucy5scGsubF9jb25mICYmIChsZGFwX3BhcnNlX2xjb25mKCZvcHRpb25zLmxw
 aykgPCAwKSApCi0rICAgICAgICAgICAgZXJyb3IoIltMREFQXSBjb3VsZCBub3QgcGFyc2Ug
 JXMiLCBvcHRpb25zLmxway5sX2NvbmYpOwotKyAgICAgICAgaWYgKGxkYXBfY29ubmVjdCgm
 b3B0aW9ucy5scGspIDwgMCkKLSsgICAgICAgICAgICBlcnJvcigiW0xEQVBdIGNvdWxkIG5v
 dCBpbml0aWFsaXplIGxkYXAgY29ubmVjdGlvbiIpOwotKyAgICB9Ci0rI2VuZGlmCi0gCWRl
 YnVnKCJzc2hkIHZlcnNpb24gJS4xMDBzIiwgU1NIX1JFTEVBU0UpOwotIAotIAkvKiBTdG9y
 ZSBwcml2aWxlZ2Ugc2VwYXJhdGlvbiB1c2VyIGZvciBsYXRlciB1c2UgaWYgcmVxdWlyZWQu
 ICovCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBz
 c2hkX2NvbmZpZyBzc2hkX2NvbmZpZwotLS0tIHNzaGRfY29uZmlnCTIwMDgtMDctMDIgMDU6
 MzU6NDMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc3NoZF9jb25maWcJMjAwOC0wOC0yMyAxNTow
 Mjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBAIC0xMDksNiArMTA5LDIxIEBACi0gIyBubyBkZWZh
 dWx0IGJhbm5lciBwYXRoCi0gI0Jhbm5lciBub25lCi0gCi0rIyBoZXJlIGFyZSB0aGUgbmV3
 IHBhdGNoZWQgbGRhcCByZWxhdGVkIHRva2VucwotKyMgZW50cmllcyBpbiB5b3VyIExEQVAg
 bXVzdCBoYXZlIHBvc2l4QWNjb3VudCAmIGxkYXBQdWJsaWNLZXkgb2JqZWN0Y2xhc3MKLSsj
 VXNlTFBLIHllcwotKyNMcGtMZGFwQ29uZiAvZXRjL2xkYXAuY29uZgotKyNMcGtTZXJ2ZXJz
 ICBsZGFwOi8vMTAuMS43LjEvIGxkYXA6Ly8xMC4xLjcuMi8KLSsjTHBrVXNlckROICAgb3U9
 dXNlcnMsZGM9cGhlYXIsZGM9b3JnCi0rI0xwa0dyb3VwRE4gIG91PWdyb3VwcyxkYz1waGVh
 cixkYz1vcmcKLSsjTHBrQmluZEROIGNuPU1hbmFnZXIsZGM9cGhlYXIsZGM9b3JnCi0rI0xw
 a0JpbmRQdyBzZWNyZXQKLSsjTHBrU2VydmVyR3JvdXAgbWFpbAotKyNMcGtGaWx0ZXIgKGhv
 c3RBY2Nlc3M9bWFzdGVyLnBoZWFyLm9yZykKLSsjTHBrRm9yY2VUTFMgbm8KLSsjTHBrU2Vh
 cmNoVGltZWxpbWl0IDMKLSsjTHBrQmluZFRpbWVsaW1pdCAzCi0rCi0gIyBvdmVycmlkZSBk
 ZWZhdWx0IG9mIG5vIHN1YnN5c3RlbXMKLSBTdWJzeXN0ZW0Jc2Z0cAkvdXNyL2xpYmV4ZWMv
 c2Z0cC1zZXJ2ZXIKLSAKLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVk
 ZSAnKi5yZWonIHNzaGRfY29uZmlnLjUgc3NoZF9jb25maWcuNQotLS0tIHNzaGRfY29uZmln
 LjUJMjAwOC0wNy0wMiAwNTozNTo0My4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzc2hkX2NvbmZp
 Zy41CTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAtMTAwMyw2ICsx
 MDAzLDYyIEBACi0gcHJvZ3JhbS4KLSBUaGUgZGVmYXVsdCBpcwotIC5QYSAvdXNyL1gxMVI2
 L2Jpbi94YXV0aCAuCi0rLkl0IENtIFVzZUxQSwotK1NwZWNpZmllcyB3aGV0aGVyIExEQVAg
 cHVibGljIGtleSByZXRyaWV2YWwgbXVzdCBiZSB1c2VkIG9yIG5vdC4gSXQgYWxsb3cKLSth
 biBlYXN5IGNlbnRyYWxpc2F0aW9uIG9mIHB1YmxpYyBrZXlzIHdpdGhpbiBhbiBMREFQIGRp
 cmVjdG9yeS4gVGhlIGFyZ3VtZW50IG11c3QgYmUKLSsuRHEgeWVzCi0rb3IKLSsuRHEgbm8g
 LgotKy5JdCBDbSBMcGtMZGFwQ29uZgotK1NwZWNpZmllcyB3aGV0aGVyIExEQVAgUHVibGlj
 IGtleXMgc2hvdWxkIHBhcnNlIHRoZSBzcGVjaWZpZWQgbGRhcC5jb25mIGZpbGUKLStpbnN0
 ZWFkIG9mIHNzaGRfY29uZmlnIFRva2Vucy4gVGhlIGFyZ3VtZW50IG11c3QgYmUgYSB2YWxp
 ZCBwYXRoIHRvIGFuIGxkYXAuY29uZgotK2ZpbGUgbGlrZQotKy5QYSAvZXRjL2xkYXAuY29u
 ZgotKy5JdCBDbSBMcGtTZXJ2ZXJzCi0rU3BlY2lmaWVzIExEQVAgb25lIG9yIG1vcmUgWzpz
 cGFjZTpdIHNlcGFyYXRlZCBzZXJ2ZXIncyB1cmwgdGhlIGZvbGxvd2luZyBmb3JtIG1heSBi
 ZSB1c2VkOgotKy5QcAotK0xwa1NlcnZlcnMgbGRhcHM6Ly8xMjcuMC4wLjEgbGRhcDovLzEy
 Ny4wLjAuMiBsZGFwOi8vMTI3LjAuMC4zCi0rLkl0IENtIExwa1VzZXJETgotK1NwZWNpZmll
 cyB0aGUgTERBUCB1c2VyIEROLgotKy5QcAotK0xwa1VzZXJETiBvdT11c2VycyxkYz1waGVh
 cixkYz1vcmcKLSsuSXQgQ20gTHBrR3JvdXBETgotK1NwZWNpZmllcyB0aGUgTERBUCBncm91
 cHMgRE4uCi0rLlBwCi0rTHBrR3JvdXBETiBvdT1ncm91cHMsZGM9cGhlYXIsZGM9b3JnCi0r
 Lkl0IENtIExwa0JpbmRETgotK1NwZWNpZmllcyB0aGUgTERBUCBiaW5kIEROIHRvIHVzZSBp
 ZiBuZWNlc3NhcnkuCi0rLlBwCi0rTHBrQmluZEROIGNuPU1hbmFnZXIsZGM9cGhlYXIsZGM9
 b3JnCi0rLkl0IENtIExwa0JpbmRQdwotK1NwZWNpZmllcyB0aGUgTERBUCBiaW5kIGNyZWRl
 bnRpYWwuIAotKy5QcAotK0xwa0JpbmRQdyBzZWNyZXQKLSsuSXQgQ20gTHBrU2VydmVyR3Jv
 dXAKLStTcGVjaWZpZXMgb25lIG9yIG1vcmUgWzpzcGFjZTpdIHNlcGFyYXRlZCBncm91cCB0
 aGUgc2VydmVyIGlzIHBhcnQgb2YuIAotKy5QcAotK0xwa1NlcnZlckdyb3VwIHVuaXggbWFp
 bCBwcm9kCi0rLkl0IENtIExwa0ZpbHRlcgotK1NwZWNpZmllcyBhbiBhZGRpdGlvbmFsIExE
 QVAgZmlsdGVyIHRvIHVzZSBmb3IgZmluZGluZyBTU0gga2V5cwotKy5QcAotK0xwa0ZpbHRl
 ciAoaG9zdEFjY2Vzcz1tYXN0ZXIucGhlYXIub3JnKQotKy5JdCBDbSBMcGtGb3JjZVRMUwot
 K1NwZWNpZmllcyBpZiB0aGUgTERBUCBzZXJ2ZXIgY29ubmVjdGlvbiBtdXN0IGJlIHRyaWVk
 LCBmb3JjZWQgb3Igbm90IHVzZWQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIAotKy5EcSB5ZXMK
 LStvcgotKy5EcSBubwotK29yCi0rLkRxIHRyeSAuCi0rLkl0IENtIExwa1NlYXJjaFRpbWVs
 aW1pdAotK1NlcGNpZmllcyB0aGUgc2VhcmNoIHRpbWUgbGltaXQgYmVmb3JlIHRoZSBzZWFy
 Y2ggaXMgY29uc2lkZXJlZCBvdmVyLiB2YWx1ZSBpcwotK2luIHNlY29uZHMuCi0rLlBwCi0r
 THBrU2VhcmNoVGltZWxpbWl0IDMKLSsuSXQgQ20gTHBrQmluZFRpbWVsaW1pdAotK1NlcGNp
 ZmllcyB0aGUgYmluZCB0aW1lIGxpbWl0IGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyBjb25z
 aWRlcmVkIGRlYWQuIHZhbHVlIGlzCi0raW4gc2Vjb25kcy4KLSsuUHAKLStMcGtCaW5kVGlt
 ZWxpbWl0IDMKLSAuRWwKLSAuU2ggVElNRSBGT1JNQVRTCi0gLlhyIHNzaGQgOApkaWZmIC1O
 cnUgL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWIt
 b3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNoIC9ob21lL2dhd3JpbG9mZi9vcGVuc3No
 LXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNo
 Ci0tLSAvaG9tZS9nYXdyaWxvZmYvbHBrL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29udHJp
 Yi1vcGVuc3NoLWxway01LjNwMS0wLjMuMTAucGF0Y2gJMTk3MC0wMS0wMSAwMzowMDowMC4w
 MDAwMDAwMDAgKzAzMDAKKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2Zp
 bGVzL2NvbnRyaWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNoCTIwMTAtMTItMjEg
 MTE6MzA6MDIuMDAwMDAwMDAwICswMjAwCkBAIC0wLDAgKzEsMTg4MSBAQAorZGlmZiAtTnVh
 ciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgYXV0aDItcHVia2V5LmMg
 YXV0aDItcHVia2V5LmMKKy0tLSBhdXRoMi1wdWJrZXkuYwkyMDA4LTA3LTAzIDE5OjU0OjI1
 LjAwMDAwMDAwMCAtMDcwMAorKysrIGF1dGgyLXB1YmtleS5jCTIwMDgtMDgtMjMgMTU6MDI6
 NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAtNTUsNiArNTUsMTAgQEAKKyAjaW5jbHVkZSAibW9u
 aXRvcl93cmFwLmgiCisgI2luY2x1ZGUgIm1pc2MuaCIKKyAKKysjaWZkZWYgV0lUSF9MREFQ
 X1BVQktFWQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIgorKyNlbmRpZgorKworIC8qIGltcG9y
 dCAqLworIGV4dGVybiBTZXJ2ZXJPcHRpb25zIG9wdGlvbnM7CisgZXh0ZXJuIHVfY2hhciAq
 c2Vzc2lvbl9pZDI7CitAQCAtMTgzLDEwICsxODcsNzkgQEAKKyAJdV9sb25nIGxpbmVudW0g
 PSAwOworIAlLZXkgKmZvdW5kOworIAljaGFyICpmcDsKKysjaWZkZWYgV0lUSF9MREFQX1BV
 QktFWQorKwlsZGFwX2tleV90ICogazsKKysJdW5zaWduZWQgaW50IGkgPSAwOworKyNlbmRp
 ZgorIAorIAkvKiBUZW1wb3JhcmlseSB1c2UgdGhlIHVzZXIncyB1aWQuICovCisgCXRlbXBv
 cmFyaWx5X3VzZV91aWQocHcpOworIAorKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCisrIAlm
 b3VuZF9rZXkgPSAwOworKyAJLyogYWxsb2NhdGUgYSBuZXcga2V5IHR5cGUgKi8KKysgCWZv
 dW5kID0ga2V5X25ldyhrZXktPnR5cGUpOworKyAKKysgCS8qIGZpcnN0IGNoZWNrIGlmIHRo
 ZSBvcHRpb25zIGlzIGVuYWJsZWQsIHRoZW4gdHJ5Li4gKi8KKysJaWYgKG9wdGlvbnMubHBr
 Lm9uKSB7CisrCSAgICBkZWJ1ZygiW0xEQVBdIHRyeWluZyBMREFQIGZpcnN0IHVpZD0lcyIs
 cHctPnB3X25hbWUpOworKwkgICAgaWYgKGxkYXBfaXNtZW1iZXIoJm9wdGlvbnMubHBrLCBw
 dy0+cHdfbmFtZSkgPiAwKSB7CisrCQlpZiAoKGsgPSBsZGFwX2dldHVzZXJrZXkoJm9wdGlv
 bnMubHBrLCBwdy0+cHdfbmFtZSkpICE9IE5VTEwpIHsKKysJCSAgICAvKiBTa2lwIGxlYWRp
 bmcgd2hpdGVzcGFjZSwgZW1wdHkgYW5kIGNvbW1lbnQgbGluZXMuICovCisrCQkgICAgZm9y
 IChpID0gMCA7IGkgPCBrLT5udW0gOyBpKyspIHsKKysJCQkvKiBkb250IGZvcmdldCBpZiBt
 dWx0aXBsZSBrZXlzIHRvIHJlc2V0IG9wdGlvbnMgKi8KKysJCQljaGFyICpjcCwgKm9wdGlv
 bnMgPSBOVUxMOworKworKwkJCWZvciAoY3AgPSAoY2hhciAqKWstPmtleXNbaV0tPmJ2X3Zh
 bDsgKmNwID09ICcgJyB8fCAqY3AgPT0gJ1x0JzsgY3ArKykKKysJCQkgICAgOworKwkJCWlm
 ICghKmNwIHx8ICpjcCA9PSAnXG4nIHx8ICpjcCA9PSAnIycpCisrCQkJICAgIGNvbnRpbnVl
 OworKworKwkJCWlmIChrZXlfcmVhZChmb3VuZCwgJmNwKSAhPSAxKSB7CisrCQkJICAgIC8q
 IG5vIGtleT8gIGNoZWNrIGlmIHRoZXJlIGFyZSBvcHRpb25zIGZvciB0aGlzIGtleSAqLwor
 KwkJCSAgICBpbnQgcXVvdGVkID0gMDsKKysJCQkgICAgZGVidWcyKCJbTERBUF0gdXNlcl9r
 ZXlfYWxsb3dlZDogY2hlY2sgb3B0aW9uczogJyVzJyIsIGNwKTsKKysJCQkgICAgb3B0aW9u
 cyA9IGNwOworKwkJCSAgICBmb3IgKDsgKmNwICYmIChxdW90ZWQgfHwgKCpjcCAhPSAnICcg
 JiYgKmNwICE9ICdcdCcpKTsgY3ArKykgeworKwkJCQlpZiAoKmNwID09ICdcXCcgJiYgY3Bb
 MV0gPT0gJyInKQorKwkJCQkgICAgY3ArKzsJLyogU2tpcCBib3RoICovCisrCQkJCWVsc2Ug
 aWYgKCpjcCA9PSAnIicpCisrCQkJCSAgICBxdW90ZWQgPSAhcXVvdGVkOworKwkJCSAgICB9
 CisrCQkJICAgIC8qIFNraXAgcmVtYWluaW5nIHdoaXRlc3BhY2UuICovCisrCQkJICAgIGZv
 ciAoOyAqY3AgPT0gJyAnIHx8ICpjcCA9PSAnXHQnOyBjcCsrKQorKwkJCQk7CisrCQkJICAg
 IGlmIChrZXlfcmVhZChmb3VuZCwgJmNwKSAhPSAxKSB7CisrCQkJCWRlYnVnMigiW0xEQVBd
 IHVzZXJfa2V5X2FsbG93ZWQ6IGFkdmFuY2U6ICclcyciLCBjcCk7CisrCQkJCS8qIHN0aWxs
 IG5vIGtleT8gIGFkdmFuY2UgdG8gbmV4dCBsaW5lKi8KKysJCQkJY29udGludWU7CisrCQkJ
 ICAgIH0KKysJCQl9CisrCisrCQkJaWYgKGtleV9lcXVhbChmb3VuZCwga2V5KSAmJgorKwkJ
 CQlhdXRoX3BhcnNlX29wdGlvbnMocHcsIG9wdGlvbnMsIGZpbGUsIGxpbmVudW0pID09IDEp
 IHsKKysJCQkgICAgZm91bmRfa2V5ID0gMTsKKysJCQkgICAgZGVidWcoIltMREFQXSBtYXRj
 aGluZyBrZXkgZm91bmQiKTsKKysJCQkgICAgZnAgPSBrZXlfZmluZ2VycHJpbnQoZm91bmQs
 IFNTSF9GUF9NRDUsIFNTSF9GUF9IRVgpOworKwkJCSAgICB2ZXJib3NlKCJbTERBUF0gRm91
 bmQgbWF0Y2hpbmcgJXMga2V5OiAlcyIsIGtleV90eXBlKGZvdW5kKSwgZnApOworKworKwkJ
 CSAgICAvKiByZXN0b3JpbmcgbWVtb3J5ICovCisrCQkJICAgIGxkYXBfa2V5c19mcmVlKGsp
 OworKwkJCSAgICB4ZnJlZShmcCk7CisrCQkJICAgIHJlc3RvcmVfdWlkKCk7CisrCQkJICAg
 IGtleV9mcmVlKGZvdW5kKTsKKysJCQkgICAgcmV0dXJuIGZvdW5kX2tleTsKKysJCQkgICAg
 YnJlYWs7CisrCQkJfQorKwkJICAgIH0vKiBlbmQgb2YgTERBUCBmb3IoKSAqLworKwkJfSBl
 bHNlIHsKKysJCSAgICBsb2dpdCgiW0xEQVBdIG5vIGtleXMgZm91bmQgZm9yICclcychIiwg
 cHctPnB3X25hbWUpOworKwkJfQorKwkgICAgfSBlbHNlIHsKKysJCWxvZ2l0KCJbTERBUF0g
 JyVzJyBpcyBub3QgaW4gJyVzJyIsIHB3LT5wd19uYW1lLCBvcHRpb25zLmxway5zZ3JvdXAp
 OworKwkgICAgfQorKwl9CisrI2VuZGlmCisgCWRlYnVnKCJ0cnlpbmcgcHVibGljIGtleSBm
 aWxlICVzIiwgZmlsZSk7CisgCWYgPSBhdXRoX29wZW5rZXlmaWxlKGZpbGUsIHB3LCBvcHRp
 b25zLnN0cmljdF9tb2Rlcyk7CisgCitkaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAt
 LWV4Y2x1ZGUgJyoucmVqJyBhdXRoLXJzYS5jIGF1dGgtcnNhLmMKKy0tLSBhdXRoLXJzYS5j
 CTIwMDgtMDctMDIgMDU6Mzc6MzAuMDAwMDAwMDAwIC0wNzAwCisrKysgYXV0aC1yc2EuYwky
 MDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAorQEAgLTE3NCwxMCArMTc0LDk2
 IEBACisgCUZJTEUgKmY7CisgCXVfbG9uZyBsaW5lbnVtID0gMDsKKyAJS2V5ICprZXk7Cisr
 I2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKKysJbGRhcF9rZXlfdCAqIGs7CisrCXVuc2lnbmVk
 IGludCBpID0gMDsKKysjZW5kaWYKKyAKKyAJLyogVGVtcG9yYXJpbHkgdXNlIHRoZSB1c2Vy
 J3MgdWlkLiAqLworIAl0ZW1wb3JhcmlseV91c2VfdWlkKHB3KTsKKyAKKysjaWZkZWYgV0lU
 SF9MREFQX1BVQktFWQorKwkvKiBoZXJlIGlzIHRoZSBqb2IgKi8KKysJa2V5ID0ga2V5X25l
 dyhLRVlfUlNBMSk7CisrCisrCWlmIChvcHRpb25zLmxway5vbikgeworKwkgICAgZGVidWco
 IltMREFQXSB0cnlpbmcgTERBUCBmaXJzdCB1aWQ9JXMiLCBwdy0+cHdfbmFtZSk7CisrCSAg
 ICBpZiAoIGxkYXBfaXNtZW1iZXIoJm9wdGlvbnMubHBrLCBwdy0+cHdfbmFtZSkgPiAwKSB7
 CisrCQlpZiAoIChrID0gbGRhcF9nZXR1c2Vya2V5KCZvcHRpb25zLmxwaywgcHctPnB3X25h
 bWUpKSAhPSBOVUxMKSB7CisrCQkgICAgZm9yIChpID0gMCA7IGkgPCBrLT5udW0gOyBpKysp
 IHsKKysJCQljaGFyICpjcCwgKm9wdGlvbnMgPSBOVUxMOworKworKwkJCWZvciAoY3AgPSBr
 LT5rZXlzW2ldLT5idl92YWw7ICpjcCA9PSAnICcgfHwgKmNwID09ICdcdCc7IGNwKyspCisr
 CQkJICAgIDsKKysJCQlpZiAoISpjcCB8fCAqY3AgPT0gJ1xuJyB8fCAqY3AgPT0gJyMnKQor
 KwkJCSAgICBjb250aW51ZTsKKysKKysJCQkvKgorKwkJCSogQ2hlY2sgaWYgdGhlcmUgYXJl
 IG9wdGlvbnMgZm9yIHRoaXMga2V5LCBhbmQgaWYgc28sCisrCQkJKiBzYXZlIHRoZWlyIHN0
 YXJ0aW5nIGFkZHJlc3MgYW5kIHNraXAgdGhlIG9wdGlvbiBwYXJ0CisrCQkJKiBmb3Igbm93
 LiAgSWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMsIHNldCB0aGUgc3RhcnRpbmcKKysJCQkqIGFk
 ZHJlc3MgdG8gTlVMTC4KKysJCQkgKi8KKysJCQlpZiAoKmNwIDwgJzAnIHx8ICpjcCA+ICc5
 JykgeworKwkJCSAgICBpbnQgcXVvdGVkID0gMDsKKysJCQkgICAgb3B0aW9ucyA9IGNwOwor
 KwkJCSAgICBmb3IgKDsgKmNwICYmIChxdW90ZWQgfHwgKCpjcCAhPSAnICcgJiYgKmNwICE9
 ICdcdCcpKTsgY3ArKykgeworKwkJCQlpZiAoKmNwID09ICdcXCcgJiYgY3BbMV0gPT0gJyIn
 KQorKwkJCQkgICAgY3ArKzsJLyogU2tpcCBib3RoICovCisrCQkJCWVsc2UgaWYgKCpjcCA9
 PSAnIicpCisrCQkJCSAgICBxdW90ZWQgPSAhcXVvdGVkOworKwkJCSAgICB9CisrCQkJfSBl
 bHNlCisrCQkJICAgIG9wdGlvbnMgPSBOVUxMOworKworKwkJCS8qIFBhcnNlIHRoZSBrZXkg
 ZnJvbSB0aGUgbGluZS4gKi8KKysJCQlpZiAoaG9zdGZpbGVfcmVhZF9rZXkoJmNwLCAmYml0
 cywga2V5KSA9PSAwKSB7CisrCQkJICAgIGRlYnVnKCJbTERBUF0gbGluZSAlZDogbm9uIHNz
 aDEga2V5IHN5bnRheCIsIGkpOworKwkJCSAgICBjb250aW51ZTsKKysJCQl9CisrCQkJLyog
 Y3Agbm93IHBvaW50cyB0byB0aGUgY29tbWVudCBwYXJ0LiAqLworKworKwkJCS8qIENoZWNr
 IGlmIHRoZSB3ZSBoYXZlIGZvdW5kIHRoZSBkZXNpcmVkIGtleSAoaWRlbnRpZmllZCBieSBp
 dHMgbW9kdWx1cykuICovCisrCQkJaWYgKEJOX2NtcChrZXktPnJzYS0+biwgY2xpZW50X24p
 ICE9IDApCisrCQkJICAgIGNvbnRpbnVlOworKworKwkJCS8qIGNoZWNrIHRoZSByZWFsIGJp
 dHMgICovCisrCQkJaWYgKGJpdHMgIT0gKHVuc2lnbmVkIGludClCTl9udW1fYml0cyhrZXkt
 PnJzYS0+bikpCisrCQkJICAgIGxvZ2l0KCJbTERBUF0gV2FybmluZzogbGRhcCwgbGluZSAl
 bHU6IGtleXNpemUgbWlzbWF0Y2g6ICIKKysJCQkJICAgICJhY3R1YWwgJWQgdnMuIGFubm91
 bmNlZCAlZC4iLCAodW5zaWduZWQgbG9uZylpLCBCTl9udW1fYml0cyhrZXktPnJzYS0+biks
 IGJpdHMpOworKworKwkJCS8qIFdlIGhhdmUgZm91bmQgdGhlIGRlc2lyZWQga2V5LiAqLwor
 KwkJCS8qCisrCQkJKiBJZiBvdXIgb3B0aW9ucyBkbyBub3QgYWxsb3cgdGhpcyBrZXkgdG8g
 YmUgdXNlZCwKKysJCQkqIGRvIG5vdCBzZW5kIGNoYWxsZW5nZS4KKysJCQkgKi8KKysJCQlp
 ZiAoIWF1dGhfcGFyc2Vfb3B0aW9ucyhwdywgb3B0aW9ucywgIltMREFQXSIsICh1bnNpZ25l
 ZCBsb25nKSBpKSkKKysJCQkgICAgY29udGludWU7CisrCisrCQkJLyogYnJlYWsgb3V0LCB0
 aGlzIGtleSBpcyBhbGxvd2VkICovCisrCQkJYWxsb3dlZCA9IDE7CisrCisrCQkJLyogYWRk
 IHRoZSByZXR1cm4gc3R1ZmYgZXRjLi4uICovCisrCQkJLyogUmVzdG9yZSB0aGUgcHJpdmls
 ZWdlZCB1aWQuICovCisrCQkJcmVzdG9yZV91aWQoKTsKKysKKysJCQkvKiByZXR1cm4ga2V5
 IGlmIGFsbG93ZWQgKi8KKysJCQlpZiAoYWxsb3dlZCAmJiBya2V5ICE9IE5VTEwpCisrCQkJ
 ICAgICpya2V5ID0ga2V5OworKwkJCWVsc2UKKysJCQkgICAga2V5X2ZyZWUoa2V5KTsKKysK
 KysJCQlsZGFwX2tleXNfZnJlZShrKTsKKysJCQlyZXR1cm4gKGFsbG93ZWQpOworKwkJICAg
 IH0KKysJCX0gZWxzZSB7CisrCQkgICAgbG9naXQoIltMREFQXSBubyBrZXlzIGZvdW5kIGZv
 ciAnJXMnISIsIHB3LT5wd19uYW1lKTsKKysJCX0KKysJICAgIH0gZWxzZSB7CisrCQlsb2dp
 dCgiW0xEQVBdICclcycgaXMgbm90IGluICclcyciLCBwdy0+cHdfbmFtZSwgb3B0aW9ucy5s
 cGsuc2dyb3VwKTsKKysJICAgIH0KKysJfQorKyNlbmRpZgorIAkvKiBUaGUgYXV0aG9yaXpl
 ZCBrZXlzLiAqLworIAlmaWxlID0gYXV0aG9yaXplZF9rZXlzX2ZpbGUocHcpOworIAlkZWJ1
 ZygidHJ5aW5nIHB1YmxpYyBSU0Ega2V5IGZpbGUgJXMiLCBmaWxlKTsKK2RpZmYgLU51YXIg
 LS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGNvbmZpZy5oLmluIGNvbmZp
 Zy5oLmluCistLS0gY29uZmlnLmguaW4JMjAwOC0wNy0yMSAwMTozMDo0OS4wMDAwMDAwMDAg
 LTA3MDAKKysrKyBjb25maWcuaC5pbgkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAt
 MDcwMAorQEAgLTU3NSw2ICs1NzUsOSBAQAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
 IHRoZSA8bGludXgvaWZfdHVuLmg+IGhlYWRlciBmaWxlLiAqLworICN1bmRlZiBIQVZFX0xJ
 TlVYX0lGX1RVTl9ICisgCisrLyogRGVmaW5lIGlmIHlvdSB3YW50IExEQVAgc3VwcG9ydCAq
 LworKyN1bmRlZiBXSVRIX0xEQVBfUFVCS0VZCisrCisgLyogRGVmaW5lIGlmIHlvdXIgbGli
 cmFyaWVzIGRlZmluZSBsb2dpbigpICovCisgI3VuZGVmIEhBVkVfTE9HSU4KKyAKK2RpZmYg
 LU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGNvbmZpZ3VyZSBj
 b25maWd1cmUKKy0tLSBjb25maWd1cmUJMjAwOC0wNy0yMSAwMTozMDo1MC4wMDAwMDAwMDAg
 LTA3MDAKKysrKyBjb25maWd1cmUJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3
 MDAKK0BAIC0xNDY4LDYgKzE0NjgsNyBAQAorICAgLS13aXRoLXRjcC13cmFwcGVyc1s9UEFU
 SF0gRW5hYmxlIHRjcHdyYXBwZXJzIHN1cHBvcnQgKG9wdGlvbmFsbHkgaW4gUEFUSCkKKyAg
 IC0td2l0aC1saWJlZGl0Wz1QQVRIXSAgIEVuYWJsZSBsaWJlZGl0IHN1cHBvcnQgZm9yIHNm
 dHAKKyAgIC0td2l0aC1hdWRpdD1tb2R1bGUgICAgIEVuYWJsZSBFWFBFUklNRU5UQUwgYXVk
 aXQgc3VwcG9ydCAobW9kdWxlcz1kZWJ1Zyxic20pCisrICAtLXdpdGgtbGRhcFs9UEFUSF0g
 ICAgICBFbmFibGUgTERBUCBwdWJrZXkgc3VwcG9ydCAob3B0aW9uYWxseSBpbiBQQVRIKQor
 ICAgLS13aXRoLXNzbC1kaXI9UEFUSCAgICAgU3BlY2lmeSBwYXRoIHRvIE9wZW5TU0wgaW5z
 dGFsbGF0aW9uCisgICAtLXdpdGhvdXQtb3BlbnNzbC1oZWFkZXItY2hlY2sgRGlzYWJsZSBP
 cGVuU1NMIHZlcnNpb24gY29uc2lzdGVuY3kgY2hlY2sKKyAgIC0td2l0aC1zc2wtZW5naW5l
 ICAgICAgIEVuYWJsZSBPcGVuU1NMIChoYXJkd2FyZSkgRU5HSU5FIHN1cHBvcnQKK0BAIC0x
 MzQxMSw2ICsxMzQxMiw4NSBAQAorIGZpCisgCisgCisrIyBDaGVjayB3aGV0aGVyIHVzZXIg
 d2FudHMgTERBUCBzdXBwb3J0CisrTERBUF9NU0c9Im5vIgorKworKyMgQ2hlY2sgd2hldGhl
 ciAtLXdpdGgtbGRhcCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xkYXArc2V0fSIg
 PSBzZXQ7IHRoZW4KKysgIHdpdGh2YWw9JHdpdGhfbGRhcDsKKysJCWlmIHRlc3QgIngkd2l0
 aHZhbCIgIT0gInhubyIgOyB0aGVuCisrCisrCQkJaWYgdGVzdCAieCR3aXRodmFsIiAhPSAi
 eHllcyIgOyB0aGVuCisrCQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkke3dpdGh2YWx9L2lu
 Y2x1ZGUiCisrCQkJCUxERkxBR1M9IiRMREZMQUdTIC1MJHt3aXRodmFsfS9saWIiCisrCQkJ
 ZmkKKysKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgorKyNkZWZpbmUgV0lUSF9M
 REFQX1BVQktFWSAxCisrX0FDRU9GCisrCisrCQkJTElCUz0iLWxsZGFwICRMSUJTIgorKwkJ
 CUxEQVBfTVNHPSJ5ZXMiCisrCisrCQkJeyBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp
 bmcgZm9yIExEQVAgc3VwcG9ydCIgPiY1CisrZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Ig
 TERBUCBzdXBwb3J0Li4uICRFQ0hPX0MiID4mNjsgfQorKwkJCWNhdCA+Y29uZnRlc3QuJGFj
 X2V4dCA8PF9BQ0VPRgorKy8qIGNvbmZkZWZzLmguICAqLworK19BQ0VPRgorK2NhdCBjb25m
 ZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAorK2NhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxf
 QUNFT0YKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrI2luY2x1ZGUgPHN5cy90eXBlcy5o
 PgorKwkJCQkgI2luY2x1ZGUgPGxkYXAuaD4KKytpbnQKKyttYWluICgpCisreworKyh2b2lk
 KWxkYXBfaW5pdCgwLCAwKTsKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKyty
 bSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CisraWYgeyAoYWNfdHJ5PSIkYWNfY29tcGlsZSIK
 KytjYXNlICIoKCRhY190cnkiIGluCisrICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9l
 Y2hvPVwkYWNfdHJ5OzsKKysgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworK2VzYWMKKytl
 dmFsICJlY2hvIFwiXCRhc19tZTokTElORU5POiAkYWNfdHJ5X2VjaG9cIiIpID4mNQorKyAg
 KGV2YWwgIiRhY19jb21waWxlIikgMj5jb25mdGVzdC5lcjEKKysgIGFjX3N0YXR1cz0kPwor
 KyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKysgIHJtIC1m
 IGNvbmZ0ZXN0LmVyMQorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGVjaG8gIiRhc19t
 ZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIChleGl0ICRhY19zdGF0dXMp
 OyB9ICYmIHsKKysJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fAorKwkgdGVzdCAh
 IC1zIGNvbmZ0ZXN0LmVycgorKyAgICAgICB9ICYmIHRlc3QgLXMgY29uZnRlc3QuJGFjX29i
 amV4dDsgdGhlbgorKyAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiB5ZXMiID4m
 NQorK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2OyB9CisrZWxzZQorKyAgZWNobyAiJGFzX21l
 OiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKytzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRh
 Y19leHQgPiY1CisrCisrCisrCQkJCSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiByZXN1
 bHQ6IG5vIiA+JjUKKytlY2hvICIke0VDSE9fVH1ubyIgPiY2OyB9CisrCQkJCQl7IHsgZWNo
 byAiJGFzX21lOiRMSU5FTk86IGVycm9yOiAqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRh
 cCBsaWJyYXJpZXMgKioiID4mNQorK2VjaG8gIiRhc19tZTogZXJyb3I6ICoqIEluY29tcGxl
 dGUgb3IgbWlzc2luZyBsZGFwIGxpYnJhcmllcyAqKiIgPiYyO30KKysgICB7IChleGl0IDEp
 OyBleGl0IDE7IH07IH0KKysKKysKKytmaQorKworK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy
 IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKwkJZmkKKysKKysKKytm
 aQorKworKworIAorIAorIAorQEAgLTMyMjI1LDYgKzMyMzA1LDcgQEAKKyBlY2hvICIgICAg
 ICAgICAgICAgICAgIFNtYXJ0Y2FyZCBzdXBwb3J0OiAkU0NBUkRfTVNHIgorIGVjaG8gIiAg
 ICAgICAgICAgICAgICAgICAgIFMvS0VZIHN1cHBvcnQ6ICRTS0VZX01TRyIKKyBlY2hvICIg
 ICAgICAgICAgICAgIFRDUCBXcmFwcGVycyBzdXBwb3J0OiAkVENQV19NU0ciCisrZWNobyAi
 ICAgICAgICAgICAgICAgICAgICAgIExEQVAgc3VwcG9ydDogJExEQVBfTVNHIgorIGVjaG8g
 IiAgICAgICAgICAgICAgTUQ1IHBhc3N3b3JkIHN1cHBvcnQ6ICRNRDVfTVNHIgorIGVjaG8g
 IiAgICAgICAgICAgICAgICAgICBsaWJlZGl0IHN1cHBvcnQ6ICRMSUJFRElUX01TRyIKKyBl
 Y2hvICIgIFNvbGFyaXMgcHJvY2VzcyBjb250cmFjdCBzdXBwb3J0OiAkU1BDX01TRyIKK2Rp
 ZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGNvbmZpZ3Vy
 ZS5hYyBjb25maWd1cmUuYWMKKy0tLSBjb25maWd1cmUuYWMJMjAwOC0wNy0wOSAwNDowNzox
 OS4wMDAwMDAwMDAgLTA3MDAKKysrKyBjb25maWd1cmUuYWMJMjAwOC0wOC0yMyAxNTowMjo0
 Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0xMzE5LDYgKzEzMTksMzcgQEAKKyAJZXNhYyBdCisg
 KQorIAorKyMgQ2hlY2sgd2hldGhlciB1c2VyIHdhbnRzIExEQVAgc3VwcG9ydAorK0xEQVBf
 TVNHPSJubyIKKytBQ19BUkdfV0lUSChsZGFwLAorKwlbICAtLXdpdGgtbGRhcFtbPVBBVEhd
 XSAgICAgIEVuYWJsZSBMREFQIHB1YmtleSBzdXBwb3J0IChvcHRpb25hbGx5IGluIFBBVEgp
 XSwKKysJWworKwkJaWYgdGVzdCAieCR3aXRodmFsIiAhPSAieG5vIiA7IHRoZW4KKysKKysJ
 CQlpZiB0ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4eWVzIiA7IHRoZW4KKysJCQkJQ1BQRkxBR1M9
 IiRDUFBGTEFHUyAtSSR7d2l0aHZhbH0vaW5jbHVkZSIKKysJCQkJTERGTEFHUz0iJExERkxB
 R1MgLUwke3dpdGh2YWx9L2xpYiIKKysJCQlmaQorKworKwkJCUFDX0RFRklORShbV0lUSF9M
 REFQX1BVQktFWV0sIDEsIFtFbmFibGUgTERBUCBwdWJrZXkgc3VwcG9ydF0pCisrCQkJTElC
 Uz0iLWxsZGFwICRMSUJTIgorKwkJCUxEQVBfTVNHPSJ5ZXMiCisrCQorKwkJCUFDX01TR19D
 SEVDS0lORyhbZm9yIExEQVAgc3VwcG9ydF0pCisrCQkJQUNfVFJZX0NPTVBJTEUoCisrCQkJ
 CVsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrCQkJCSAjaW5jbHVkZSA8bGRhcC5oPl0sCisr
 CQkJCVsodm9pZClsZGFwX2luaXQoMCwgMCk7XSwKKysJCQkJW0FDX01TR19SRVNVTFQoeWVz
 KV0sCisrCQkJCVsKKysJCQkJICAgIEFDX01TR19SRVNVTFQobm8pIAorKwkJCQkJQUNfTVNH
 X0VSUk9SKFsqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJyYXJpZXMgKipdKQor
 KwkJCQldCisrICAgICAgICAJKQorKwkJZmkKKysJXQorKykKKysKKyBkbmwgICAgQ2hlY2tz
 IGZvciBsaWJyYXJ5IGZ1bmN0aW9ucy4gUGxlYXNlIGtlZXAgaW4gYWxwaGFiZXRpY2FsIG9y
 ZGVyCisgQUNfQ0hFQ0tfRlVOQ1MoIFwKKyAJYXJjNHJhbmRvbSBcCitAQCAtNDIyOSw2ICs0
 MjYwLDcgQEAKKyBlY2hvICIgICAgICAgICAgICAgICAgIFNtYXJ0Y2FyZCBzdXBwb3J0OiAk
 U0NBUkRfTVNHIgorIGVjaG8gIiAgICAgICAgICAgICAgICAgICAgIFMvS0VZIHN1cHBvcnQ6
 ICRTS0VZX01TRyIKKyBlY2hvICIgICAgICAgICAgICAgIFRDUCBXcmFwcGVycyBzdXBwb3J0
 OiAkVENQV19NU0ciCisrZWNobyAiICAgICAgICAgICAgICAgICAgICAgIExEQVAgc3VwcG9y
 dDogJExEQVBfTVNHIgorIGVjaG8gIiAgICAgICAgICAgICAgTUQ1IHBhc3N3b3JkIHN1cHBv
 cnQ6ICRNRDVfTVNHIgorIGVjaG8gIiAgICAgICAgICAgICAgICAgICBsaWJlZGl0IHN1cHBv
 cnQ6ICRMSUJFRElUX01TRyIKKyBlY2hvICIgIFNvbGFyaXMgcHJvY2VzcyBjb250cmFjdCBz
 dXBwb3J0OiAkU1BDX01TRyIKK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhj
 bHVkZSAnKi5yZWonIGxkYXBhdXRoLmMgbGRhcGF1dGguYworLS0tIGxkYXBhdXRoLmMJMTk2
 OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKKysrKyBsZGFwYXV0aC5jCTIwMDgt
 MDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAtMCwwICsxLDU3NSBAQAorKy8q
 IAorKyAqICRJZDogb3BlbnNzaC1scGstNC4zcDEtMC4zLjcucGF0Y2gsdiAxLjMgMjAwNi8w
 NC8xOCAxNToyOTowOSBlYXUgRXhwICQKKysgKi8KKysKKysvKgorKyAqCisrICogQ29weXJp
 Z2h0IChjKSAyMDA1LCBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+CisrICogQWxsIHJpZ2h0
 cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
 IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBw
 ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
 dDoKKysgKgorKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
 biB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
 YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
 YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
 IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
 aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
 aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcGhl
 YXIub3JnIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
 byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh
 cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisrICoKKysg
 KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
 TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
 UkFOVElFUywgSU5DTFVESU5HLCAKKysgKiBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
 SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
 UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gCisrICogSU4gTk8gRVZFTlQgU0hB
 TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
 TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCAK
 KysgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
 VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyAK
 KysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
 VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
 IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIAorKyAqIE9SIFRPUlQg
 KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
 IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
 SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKgorKyAqLworKworKyNp
 bmNsdWRlICJpbmNsdWRlcy5oIgorKworKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCisrCisr
 I2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDx1
 bmlzdGQuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgImxkYXBhdXRo
 LmgiCisrI2luY2x1ZGUgImxvZy5oIgorKworK3N0YXRpYyBjaGFyICphdHRyc1tdID0gewor
 KyAgICBQVUJLRVlBVFRSLAorKyAgICBOVUxMCisrfTsKKysKKysvKiBmaWx0ZXIgYnVpbGRp
 bmcgaW5mb3MgKi8KKysjZGVmaW5lIEZJTFRFUl9HUk9VUF9QUkVGSVggIigmKG9iamVjdGNs
 YXNzPXBvc2l4R3JvdXApIgorKyNkZWZpbmUgRklMVEVSX09SX1BSRUZJWCAiKHwiCisrI2Rl
 ZmluZSBGSUxURVJfT1JfU1VGRklYICIpIgorKyNkZWZpbmUgRklMVEVSX0NOX1BSRUZJWCAi
 KGNuPSIKKysjZGVmaW5lIEZJTFRFUl9DTl9TVUZGSVggIikiCisrI2RlZmluZSBGSUxURVJf
 VUlEX0ZPUk1BVCAiKG1lbWJlclVpZD0lcykiCisrI2RlZmluZSBGSUxURVJfR1JPVVBfU1VG
 RklYICIpIgorKyNkZWZpbmUgRklMVEVSX0dST1VQX1NJWkUoZ3JvdXApIChzaXplX3QpIChz
 dHJsZW4oZ3JvdXApKyhsZGFwX2NvdW50X2dyb3VwKGdyb3VwKSo1KSs1MikKKysKKysvKiBq
 dXN0IGZpbHRlciBidWlsZGluZyBzdHVmZiAqLworKyNkZWZpbmUgUkVRVUVTVF9HUk9VUF9T
 SVpFKGZpbHRlciwgdWlkKSAoc2l6ZV90KSAoc3RybGVuKGZpbHRlcikrc3RybGVuKHVpZCkr
 MSkKKysjZGVmaW5lIFJFUVVFU1RfR1JPVVAoYnVmZmVyLCBwcmVmaWx0ZXIsIHB3bmFtZSkg
 XAorKyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoUkVRVUVTVF9HUk9VUF9TSVpFKHBy
 ZWZpbHRlciwgcHduYW1lKSwgc2l6ZW9mKGNoYXIpKTsgXAorKyAgICBpZiAoIWJ1ZmZlcikg
 eyBcCisrICAgICAgICBwZXJyb3IoImNhbGxvYygpIik7IFwKKysgICAgICAgIHJldHVybiBG
 QUlMVVJFOyBcCisrICAgIH0gXAorKyAgICBzbnByaW50ZihidWZmZXIsIFJFUVVFU1RfR1JP
 VVBfU0laRShwcmVmaWx0ZXIscHduYW1lKSwgcHJlZmlsdGVyLCBwd25hbWUpCisrLyoKKytY
 WFggT0xEIGdyb3VwIGJ1aWxkaW5nIG1hY3JvcworKyNkZWZpbmUgUkVRVUVTVF9HUk9VUF9T
 SVpFKGdycCwgdWlkKSAoc2l6ZV90KSAoc3RybGVuKGdycCkrc3RybGVuKHVpZCkrNDYpCisr
 I2RlZmluZSBSRVFVRVNUX0dST1VQKGJ1ZmZlcixwd25hbWUsZ3JwKSBcCisrICAgIGJ1ZmZl
 ciA9IChjaGFyICopIGNhbGxvYyhSRVFVRVNUX0dST1VQX1NJWkUoZ3JwLCBwd25hbWUpLCBz
 aXplb2YoY2hhcikpOyBcCisrICAgIGlmICghYnVmZmVyKSB7IFwKKysgICAgICAgIHBlcnJv
 cigiY2FsbG9jKCkiKTsgXAorKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7IFwKKysgICAgfSBc
 CisrICAgIHNucHJpbnRmKGJ1ZmZlcixSRVFVRVNUX0dST1VQX1NJWkUoZ3JwLHB3bmFtZSks
 IigmKG9iamVjdGNsYXNzPXBvc2l4R3JvdXApKGNuPSVzKShtZW1iZXJVaWQ9JXMpKSIsZ3Jw
 LHB3bmFtZSkKKysgICAgKi8KKysKKysvKgorK1hYWCBzdG9jayB1cHN0cmVhbSB2ZXJzaW9u
 IHdpdGhvdXQgZXh0cmEgZmlsdGVyIHN1cHBvcnQKKysjZGVmaW5lIFJFUVVFU1RfVVNFUl9T
 SVpFKHVpZCkgKHNpemVfdCkgKHN0cmxlbih1aWQpKzY0KQorKyNkZWZpbmUgUkVRVUVTVF9V
 U0VSKGJ1ZmZlciwgcHduYW1lKSBcCisrICAgIGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhS
 RVFVRVNUX1VTRVJfU0laRShwd25hbWUpLCBzaXplb2YoY2hhcikpOyBcCisrICAgIGlmICgh
 YnVmZmVyKSB7IFwKKysgICAgICAgIHBlcnJvcigiY2FsbG9jKCkiKTsgXAorKyAgICAgICAg
 cmV0dXJuIE5VTEw7IFwKKysgICAgfSBcCisrICAgIHNucHJpbnRmKGJ1ZmZlcixSRVFVRVNU
 X1VTRVJfU0laRShwd25hbWUpLCIoJihvYmplY3RjbGFzcz1wb3NpeEFjY291bnQpKG9iamVj
 dGNsYXNzPWxkYXBQdWJsaWNLZXkpKHVpZD0lcykpIixwd25hbWUpCisrICAgKi8KKysKKysj
 ZGVmaW5lIFJFUVVFU1RfVVNFUl9TSVpFKHVpZCwgZmlsdGVyKSAoc2l6ZV90KSAoc3RybGVu
 KHVpZCkrNjQrKGZpbHRlciAhPSBOVUxMID8gc3RybGVuKGZpbHRlcikgOiAwKSkKKysjZGVm
 aW5lIFJFUVVFU1RfVVNFUihidWZmZXIsIHB3bmFtZSwgY3VzdG9tZmlsdGVyKSBcCisrICAg
 IGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhSRVFVRVNUX1VTRVJfU0laRShwd25hbWUsIGN1
 c3RvbWZpbHRlciksIHNpemVvZihjaGFyKSk7IFwKKysgICAgaWYgKCFidWZmZXIpIHsgXAor
 KyAgICAgICAgcGVycm9yKCJjYWxsb2MoKSIpOyBcCisrICAgICAgICByZXR1cm4gTlVMTDsg
 XAorKyAgICB9IFwKKysgICAgc25wcmludGYoYnVmZmVyLCBSRVFVRVNUX1VTRVJfU0laRShw
 d25hbWUsIGN1c3RvbWZpbHRlciksIFwKKysgICAgCSIoJihvYmplY3RjbGFzcz1wb3NpeEFj
 Y291bnQpKG9iamVjdGNsYXNzPWxkYXBQdWJsaWNLZXkpKHVpZD0lcyklcykiLCBcCisrCXB3
 bmFtZSwgKGN1c3RvbWZpbHRlciAhPSBOVUxMID8gY3VzdG9tZmlsdGVyIDogIiIpKQorKwor
 Ky8qIHNvbWUgcG9ydGFibGUgYW5kIHdvcmtpbmcgdG9rZW5pemVyLCBsYW1lIHRob3VnaCAq
 LworK3N0YXRpYyBpbnQgdG9rZW5pemUoY2hhciAqKiBvLCBzaXplX3Qgc2l6ZSwgY2hhciAq
 IGlucHV0KSB7CisrICAgIHVuc2lnbmVkIGludCBpID0gMCwgbnVtOworKyAgICBjb25zdCBj
 aGFyICogY2hhcnNldCA9ICIgXHQiOworKyAgICBjaGFyICogcHRyID0gaW5wdXQ7CisrCisr
 ICAgIC8qIGxlYWRpbmcgd2hpdGUgc3BhY2VzIGFyZSBpZ25vcmVkICovCisrICAgIG51bSA9
 IHN0cnNwbihwdHIsIGNoYXJzZXQpOworKyAgICBwdHIgKz0gbnVtOworKworKyAgICB3aGls
 ZSAoKG51bSA9IHN0cmNzcG4ocHRyLCBjaGFyc2V0KSkpIHsKKysgICAgICAgIGlmIChpIDwg
 c2l6ZS0xKSB7CisrICAgICAgICAgICAgb1tpKytdID0gcHRyOworKyAgICAgICAgICAgIHB0
 ciArPSBudW07CisrICAgICAgICAgICAgaWYgKCpwdHIpCisrICAgICAgICAgICAgICAgICpw
 dHIrKyA9ICdcMCc7CisrICAgICAgICB9CisrICAgIH0KKysgICAgb1tpXSA9IE5VTEw7Cisr
 ICAgIHJldHVybiBTVUNDRVNTOworK30KKysKKyt2b2lkIGxkYXBfY2xvc2UobGRhcF9vcHRf
 dCAqIGxkYXApIHsKKysKKysgICAgaWYgKCFsZGFwKQorKyAgICAgICAgcmV0dXJuOworKwor
 KyAgICBpZiAoIGxkYXBfdW5iaW5kX2V4dChsZGFwLT5sZCwgTlVMTCwgTlVMTCkgPCAwKQor
 KwlsZGFwX3BlcnJvcihsZGFwLT5sZCwgImxkYXBfdW5iaW5kKCkiKTsKKysKKysgICAgbGRh
 cC0+bGQgPSBOVUxMOworKyAgICBGTEFHX1NFVF9ESVNDT05ORUNURUQobGRhcC0+ZmxhZ3Mp
 OworKworKyAgICByZXR1cm47CisrfQorKworKy8qIGluaXQgJiYgYmluZCAqLworK2ludCBs
 ZGFwX2Nvbm5lY3QobGRhcF9vcHRfdCAqIGxkYXApIHsKKysgICAgaW50IHZlcnNpb24gPSBM
 REFQX1ZFUlNJT04zOworKworKyAgICBpZiAoIWxkYXAtPnNlcnZlcnMpCisrICAgICAgICBy
 ZXR1cm4gRkFJTFVSRTsKKysKKysgICAgLyogQ29ubmVjdGlvbiBJbml0IGFuZCBzZXR1cCAq
 LworKyAgICBsZGFwLT5sZCA9IGxkYXBfaW5pdChsZGFwLT5zZXJ2ZXJzLCBMREFQX1BPUlQp
 OworKyAgICBpZiAoIWxkYXAtPmxkKSB7CisrICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5s
 ZCwgImxkYXBfaW5pdCgpIik7CisrICAgICAgICByZXR1cm4gRkFJTFVSRTsKKysgICAgfQor
 KworKyAgICBpZiAoIGxkYXBfc2V0X29wdGlvbihsZGFwLT5sZCwgTERBUF9PUFRfUFJPVE9D
 T0xfVkVSU0lPTiwgJnZlcnNpb24pICE9IExEQVBfT1BUX1NVQ0NFU1MpIHsKKysgICAgICAg
 IGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0aW9uKExEQVBfT1BUX1BST1RP
 Q09MX1ZFUlNJT04pIik7CisrICAgICAgICByZXR1cm4gRkFJTFVSRTsKKysgICAgfQorKwor
 KyAgICAvKiBUaW1lb3V0cyBzZXR1cCAqLworKyAgICBpZiAobGRhcF9zZXRfb3B0aW9uKGxk
 YXAtPmxkLCBMREFQX09QVF9ORVRXT1JLX1RJTUVPVVQsICZsZGFwLT5iX3RpbWVvdXQpICE9
 IExEQVBfU1VDQ0VTUykgeworKyAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFw
 X3NldF9vcHRpb24oTERBUF9PUFRfTkVUV09SS19USU1FT1VUKSIpOworKyAgICB9CisrICAg
 IGlmIChsZGFwX3NldF9vcHRpb24obGRhcC0+bGQsIExEQVBfT1BUX1RJTUVPVVQsICZsZGFw
 LT5zX3RpbWVvdXQpICE9IExEQVBfU1VDQ0VTUykgeworKyAgICAgICAgbGRhcF9wZXJyb3Io
 bGRhcC0+bGQsICJsZGFwX3NldF9vcHRpb24oTERBUF9PUFRfVElNRU9VVCkiKTsKKysgICAg
 fQorKworKyAgICAvKiBUTFMgc3VwcG9ydCAqLworKyAgICBpZiAoIChsZGFwLT50bHMgPT0g
 LTEpIHx8IChsZGFwLT50bHMgPT0gMSkgKSB7CisrICAgICAgICBpZiAobGRhcF9zdGFydF90
 bHNfcyhsZGFwLT5sZCwgTlVMTCwgTlVMTCApICE9IExEQVBfU1VDQ0VTUykgeworKyAgICAg
 ICAgICAgIC8qIGZhaWxlZCB0aGVuIHJlaW5pdCB0aGUgaW5pdGlhbCBjb25uZWN0ICovCisr
 ICAgICAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX2Nvbm5lY3Q6IChUTFMp
 IGxkYXBfc3RhcnRfdGxzKCkiKTsKKysgICAgICAgICAgICBpZiAobGRhcC0+dGxzID09IDEp
 CisrICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOworKworKyAgICAgICAgICAgIGxk
 YXAtPmxkID0gbGRhcF9pbml0KGxkYXAtPnNlcnZlcnMsIExEQVBfUE9SVCk7CisrICAgICAg
 ICAgICAgaWYgKCFsZGFwLT5sZCkgeyAKKysgICAgICAgICAgICAgICAgbGRhcF9wZXJyb3Io
 bGRhcC0+bGQsICJsZGFwX2luaXQoKSIpOworKyAgICAgICAgICAgICAgICByZXR1cm4gRkFJ
 TFVSRTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaWYgKCBsZGFwX3NldF9v
 cHRpb24obGRhcC0+bGQsIExEQVBfT1BUX1BST1RPQ09MX1ZFUlNJT04sICZ2ZXJzaW9uKSAh
 PSBMREFQX09QVF9TVUNDRVNTKSB7CisrICAgICAgICAgICAgICAgICBsZGFwX3BlcnJvcihs
 ZGFwLT5sZCwgImxkYXBfc2V0X29wdGlvbigpIik7CisrICAgICAgICAgICAgICAgICByZXR1
 cm4gRkFJTFVSRTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKysK
 KysgICAgaWYgKCBsZGFwX3NpbXBsZV9iaW5kX3MobGRhcC0+bGQsIGxkYXAtPmJpbmRkbiwg
 bGRhcC0+YmluZHB3KSAhPSBMREFQX1NVQ0NFU1MpIHsKKysgICAgICAgIGxkYXBfcGVycm9y
 KGxkYXAtPmxkLCAibGRhcF9zaW1wbGVfYmluZF9zKCkiKTsKKysgICAgICAgIHJldHVybiBG
 QUlMVVJFOworKyAgICB9CisrCisrICAgIC8qIHNheXMgaXQgaXMgY29ubmVjdGVkICovCisr
 ICAgIEZMQUdfU0VUX0NPTk5FQ1RFRChsZGFwLT5mbGFncyk7CisrCisrICAgIHJldHVybiBT
 VUNDRVNTOworK30KKysKKysvKiBtdXN0IGZyZWUgYWxsb2NhdGVkIHJlc3NvdXJjZSAqLwor
 K3N0YXRpYyBjaGFyICogbGRhcF9idWlsZF9ob3N0KGNoYXIgKmhvc3QsIGludCBwb3J0KSB7
 CisrICAgIHVuc2lnbmVkIGludCBzaXplID0gc3RybGVuKGhvc3QpKzExOworKyAgICBjaGFy
 ICogaCA9IChjaGFyICopIGNhbGxvYyAoc2l6ZSwgc2l6ZW9mKGNoYXIpKTsKKysgICAgaW50
 IHJjOworKyAgICBpZiAoIWgpCisrICAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgIHJj
 ID0gc25wcmludGYoaCwgc2l6ZSwgIiVzOiVkICIsIGhvc3QsIHBvcnQpOworKyAgICBpZiAo
 cmMgPT0gLTEpCisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgcmV0dXJuIGg7CisrfQor
 KworK3N0YXRpYyBpbnQgbGRhcF9jb3VudF9ncm91cChjb25zdCBjaGFyICogaW5wdXQpIHsK
 KysgICAgY29uc3QgY2hhciAqIGNoYXJzZXQgPSAiIFx0IjsKKysgICAgY29uc3QgY2hhciAq
 IHB0ciA9IGlucHV0OworKyAgICB1bnNpZ25lZCBpbnQgY291bnQgPSAwOworKyAgICB1bnNp
 Z25lZCBpbnQgbnVtOworKworKyAgICBudW0gPSBzdHJzcG4ocHRyLCBjaGFyc2V0KTsKKysg
 ICAgcHRyICs9IG51bTsKKysKKysgICAgd2hpbGUgKChudW0gPSBzdHJjc3BuKHB0ciwgY2hh
 cnNldCkpKSB7CisrICAgIGNvdW50Kys7CisrICAgIHB0ciArPSBudW07CisrICAgIHB0cisr
 OworKyAgICB9CisrCisrICAgIHJldHVybiBjb3VudDsKKyt9CisrCisrLyogZm9ybWF0IGZp
 bHRlciAqLworK2NoYXIgKiBsZGFwX3BhcnNlX2dyb3Vwcyhjb25zdCBjaGFyICogZ3JvdXBz
 KSB7CisrICAgIHVuc2lnbmVkIGludCBidWZmZXJfc2l6ZSA9IEZJTFRFUl9HUk9VUF9TSVpF
 KGdyb3Vwcyk7CisrICAgIGNoYXIgKiBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoYnVmZmVy
 X3NpemUsIHNpemVvZihjaGFyKSk7CisrICAgIGNoYXIgKiBnID0gTlVMTDsKKysgICAgY2hh
 ciAqIGdhcnJheVszMl07CisrICAgIHVuc2lnbmVkIGludCBpID0gMDsKKysKKysgICAgaWYg
 KCghZ3JvdXBzKXx8KCFidWZmZXIpKQorKyAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAg
 IGcgPSBzdHJkdXAoZ3JvdXBzKTsKKysgICAgaWYgKCFnKSB7CisrICAgICAgICBmcmVlKGJ1
 ZmZlcik7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworKyAgICAvKiBmaXJz
 dCBzZXBhcmF0ZSBpbnRvIG4gdG9rZW5zICovCisrICAgIGlmICggdG9rZW5pemUoZ2FycmF5
 LCBzaXplb2YoZ2FycmF5KS9zaXplb2YoKmdhcnJheSksIGcpIDwgMCkgeworKyAgICAgICAg
 ZnJlZShnKTsKKysgICAgICAgIGZyZWUoYnVmZmVyKTsKKysgICAgICAgIHJldHVybiBOVUxM
 OworKyAgICB9CisrCisrICAgIC8qIGJ1aWxkIHRoZSBmaW5hbCBmaWx0ZXIgZm9ybWF0ICov
 CisrICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfR1JPVVBfUFJFRklYLCBidWZmZXJfc2l6
 ZSk7CisrICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfT1JfUFJFRklYLCBidWZmZXJfc2l6
 ZSk7CisrICAgIGkgPSAwOworKyAgICB3aGlsZSAoZ2FycmF5W2ldKSB7CisrICAgICAgICBz
 dHJsY2F0KGJ1ZmZlciwgRklMVEVSX0NOX1BSRUZJWCwgYnVmZmVyX3NpemUpOworKyAgICAg
 ICAgc3RybGNhdChidWZmZXIsIGdhcnJheVtpXSwgYnVmZmVyX3NpemUpOworKyAgICAgICAg
 c3RybGNhdChidWZmZXIsIEZJTFRFUl9DTl9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsKKysgICAg
 ICAgIGkrKzsKKysgICAgfQorKyAgICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX09SX1NVRkZJ
 WCwgYnVmZmVyX3NpemUpOworKyAgICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX1VJRF9GT1JN
 QVQsIGJ1ZmZlcl9zaXplKTsKKysgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9HUk9VUF9T
 VUZGSVgsIGJ1ZmZlcl9zaXplKTsKKysKKysgICAgZnJlZShnKTsKKysgICAgcmV0dXJuIGJ1
 ZmZlcjsKKyt9CisrCisrLyogYSBiaXQgZGlydHkgYnV0IGxlYWsgZnJlZSAgKi8KKytjaGFy
 ICogbGRhcF9wYXJzZV9zZXJ2ZXJzKGNvbnN0IGNoYXIgKiBzZXJ2ZXJzKSB7CisrICAgIGNo
 YXIgKiBzID0gTlVMTDsKKysgICAgY2hhciAqIHRtcCA9IE5VTEwsICp1cmxzWzMyXTsKKysg
 ICAgdW5zaWduZWQgaW50IG51bSA9IDAgLCBpID0gMCAsIGFzaXplID0gMDsKKysgICAgTERB
 UFVSTERlc2MgKnVybGRbMzJdOworKworKyAgICBpZiAoIXNlcnZlcnMpCisrICAgICAgICBy
 ZXR1cm4gTlVMTDsKKysKKysgICAgLyogbG9jYWwgY29weSBvZiB0aGUgYXJnICovCisrICAg
 IHMgPSBzdHJkdXAoc2VydmVycyk7CisrICAgIGlmICghcykKKysgICAgICAgIHJldHVybiBO
 VUxMOworKworKyAgICAvKiBmaXJzdCBzZXBhcmF0ZSBpbnRvIFVSTCB0b2tlbnMgKi8KKysg
 ICAgaWYgKCB0b2tlbml6ZSh1cmxzLCBzaXplb2YodXJscykvc2l6ZW9mKCp1cmxzKSwgcykg
 PCAwKQorKyAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgIGkgPSAwOworKyAgICB3aGls
 ZSAodXJsc1tpXSkgeworKyAgICAgICAgaWYgKCEgbGRhcF9pc19sZGFwX3VybCh1cmxzW2ld
 KSB8fAorKyAgICAgICAgICAgKGxkYXBfdXJsX3BhcnNlKHVybHNbaV0sICZ1cmxkW2ldKSAh
 PSAwKSkgeworKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAgIH0KKysg
 ICAgICAgIGkrKzsKKysgICAgfQorKworKyAgICAvKiBub3cgZnJlZShzKSAqLworKyAgICBm
 cmVlIChzKTsKKysKKysgICAgLyogaG93IG11Y2ggbWVtb3J5IGRvIHdlIG5lZWQgKi8KKysg
 ICAgbnVtID0gaTsKKysgICAgZm9yIChpID0gMCA7IGkgPCBudW0gOyBpKyspCisrICAgICAg
 ICBhc2l6ZSArPSBzdHJsZW4odXJsZFtpXS0+bHVkX2hvc3QpKzExOworKworKyAgICAvKiBh
 bGxvYyAqLworKyAgICBzID0gKGNoYXIgKikgY2FsbG9jKCBhc2l6ZSsxICwgc2l6ZW9mKGNo
 YXIpKTsKKysgICAgaWYgKCFzKSB7CisrICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IG51bSA7
 IGkrKykKKysgICAgICAgICAgICBsZGFwX2ZyZWVfdXJsZGVzYyh1cmxkW2ldKTsKKysgICAg
 ICAgIHJldHVybiBOVUxMOworKyAgICB9CisrCisrICAgIC8qIHRoZW4gYnVpbGQgdGhlIGZp
 bmFsIGhvc3Qgc3RyaW5nICovCisrICAgIGZvciAoaSA9IDAgOyBpIDwgbnVtIDsgaSsrKSB7
 CisrICAgICAgICAvKiBidWlsdCBob3N0IHBhcnQgKi8KKysgICAgICAgIHRtcCA9IGxkYXBf
 YnVpbGRfaG9zdCh1cmxkW2ldLT5sdWRfaG9zdCwgdXJsZFtpXS0+bHVkX3BvcnQpOworKyAg
 ICAgICAgc3RybmNhdChzLCB0bXAsIHN0cmxlbih0bXApKTsKKysgICAgICAgIGxkYXBfZnJl
 ZV91cmxkZXNjKHVybGRbaV0pOworKyAgICAgICAgZnJlZSh0bXApOworKyAgICB9CisrCisr
 ICAgIHJldHVybiBzOworK30KKysKKyt2b2lkIGxkYXBfb3B0aW9uc19wcmludChsZGFwX29w
 dF90ICogbGRhcCkgeworKyAgICBkZWJ1ZygibGRhcCBvcHRpb25zOiIpOworKyAgICBkZWJ1
 Zygic2VydmVyczogJXMiLCBsZGFwLT5zZXJ2ZXJzKTsKKysgICAgaWYgKGxkYXAtPnVfYmFz
 ZWRuKQorKyAgICAgICAgZGVidWcoInVzZXIgYmFzZWRuOiAlcyIsIGxkYXAtPnVfYmFzZWRu
 KTsKKysgICAgaWYgKGxkYXAtPmdfYmFzZWRuKQorKyAgICAgICAgZGVidWcoImdyb3VwIGJh
 c2VkbjogJXMiLCBsZGFwLT5nX2Jhc2Vkbik7CisrICAgIGlmIChsZGFwLT5iaW5kZG4pCisr
 ICAgICAgICBkZWJ1ZygiYmluZGRuOiAlcyIsIGxkYXAtPmJpbmRkbik7CisrICAgIGlmIChs
 ZGFwLT5iaW5kcHcpCisrICAgICAgICBkZWJ1ZygiYmluZHB3OiAlcyIsIGxkYXAtPmJpbmRw
 dyk7CisrICAgIGlmIChsZGFwLT5zZ3JvdXApCisrICAgICAgICBkZWJ1ZygiZ3JvdXA6ICVz
 IiwgbGRhcC0+c2dyb3VwKTsKKysgICAgaWYgKGxkYXAtPmZpbHRlcikKKysgICAgICAgIGRl
 YnVnKCJmaWx0ZXI6ICVzIiwgbGRhcC0+ZmlsdGVyKTsKKyt9CisrCisrdm9pZCBsZGFwX29w
 dGlvbnNfZnJlZShsZGFwX29wdF90ICogbCkgeworKyAgICBpZiAoIWwpCisrICAgICAgICBy
 ZXR1cm47CisrICAgIGlmIChsLT5zZXJ2ZXJzKQorKyAgICAgICAgZnJlZShsLT5zZXJ2ZXJz
 KTsKKysgICAgaWYgKGwtPnVfYmFzZWRuKQorKyAgICAgICAgZnJlZShsLT51X2Jhc2Vkbik7
 CisrICAgIGlmIChsLT5nX2Jhc2VkbikKKysgICAgICAgIGZyZWUobC0+Z19iYXNlZG4pOwor
 KyAgICBpZiAobC0+YmluZGRuKQorKyAgICAgICAgZnJlZShsLT5iaW5kZG4pOworKyAgICBp
 ZiAobC0+YmluZHB3KQorKyAgICAgICAgZnJlZShsLT5iaW5kcHcpOworKyAgICBpZiAobC0+
 c2dyb3VwKQorKyAgICAgICAgZnJlZShsLT5zZ3JvdXApOworKyAgICBpZiAobC0+Zmdyb3Vw
 KQorKyAgICAgICAgZnJlZShsLT5mZ3JvdXApOworKyAgICBpZiAobC0+ZmlsdGVyKQorKyAg
 ICAgICAgZnJlZShsLT5maWx0ZXIpOworKyAgICBpZiAobC0+bF9jb25mKQorKyAgICAgICAg
 ZnJlZShsLT5sX2NvbmYpOworKyAgICBmcmVlKGwpOworK30KKysKKysvKiBmcmVlIGtleXMg
 Ki8KKyt2b2lkIGxkYXBfa2V5c19mcmVlKGxkYXBfa2V5X3QgKiBrKSB7CisrICAgIGxkYXBf
 dmFsdWVfZnJlZV9sZW4oay0+a2V5cyk7CisrICAgIGZyZWUoayk7CisrICAgIHJldHVybjsK
 Kyt9CisrCisrbGRhcF9rZXlfdCAqIGxkYXBfZ2V0dXNlcmtleShsZGFwX29wdF90ICpsLCBj
 b25zdCBjaGFyICogdXNlcikgeworKyAgICBsZGFwX2tleV90ICogayA9IChsZGFwX2tleV90
 ICopIGNhbGxvYyAoMSwgc2l6ZW9mKGxkYXBfa2V5X3QpKTsKKysgICAgTERBUE1lc3NhZ2Ug
 KnJlcywgKmU7CisrICAgIGNoYXIgKiBmaWx0ZXI7CisrICAgIGludCBpOworKworKyAgICBp
 ZiAoKCFrKSB8fCAoIWwpKQorKyAgICAgICAgIHJldHVybiBOVUxMOworKworKyAgICAvKiBB
 bSBpIHN0aWxsIGNvbm5lY3RlZCA/IFJFVFJZIG4gdGltZXMgKi8KKysgICAgLyogWFhYIFRP
 RE86IHNldHVwIHNvbWUgY29uZiB2YWx1ZSBmb3IgcmV0cnlpbmcgKi8KKysgICAgaWYgKCEo
 bC0+ZmxhZ3MgJiBGTEFHX0NPTk5FQ1RFRCkpCisrICAgICAgICBmb3IgKGkgPSAwIDsgaSA8
 IDIgOyBpKyspCisrICAgICAgICAgICAgaWYgKGxkYXBfY29ubmVjdChsKSA9PSAwKQorKyAg
 ICAgICAgICAgICAgICBicmVhazsKKysKKysgICAgLyogcXVpY2sgY2hlY2sgZm9yIGF0dGVt
 cHRzIHRvIGJlIGV2aWwgKi8KKysgICAgaWYgKChzdHJjaHIodXNlciwgJygnKSAhPSBOVUxM
 KSB8fCAoc3RyY2hyKHVzZXIsICcpJykgIT0gTlVMTCkgfHwKKysgICAgICAgIChzdHJjaHIo
 dXNlciwgJyonKSAhPSBOVUxMKSB8fCAoc3RyY2hyKHVzZXIsICdcXCcpICE9IE5VTEwpKQor
 KyAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgIC8qIGJ1aWxkICBmaWx0ZXIgZm9yIExE
 QVAgcmVxdWVzdCAqLworKyAgICBSRVFVRVNUX1VTRVIoZmlsdGVyLCB1c2VyLCBsLT5maWx0
 ZXIpOworKworKyAgICBpZiAoIGxkYXBfc2VhcmNoX3N0KCBsLT5sZCwKKysgICAgICAgIGwt
 PnVfYmFzZWRuLAorKyAgICAgICAgTERBUF9TQ09QRV9TVUJUUkVFLAorKyAgICAgICAgZmls
 dGVyLAorKyAgICAgICAgYXR0cnMsIDAsICZsLT5zX3RpbWVvdXQsICZyZXMgKSAhPSBMREFQ
 X1NVQ0NFU1MpIHsKKysgICAgICAgIAorKyAgICAgICAgbGRhcF9wZXJyb3IobC0+bGQsICJs
 ZGFwX3NlYXJjaF9zdCgpIik7CisrCisrICAgICAgICBmcmVlKGZpbHRlcik7CisrICAgICAg
 ICBmcmVlKGspOworKworKyAgICAgICAgLyogWFhYIGVycm9yIG9uIHNlYXJjaCwgdGltZW91
 dCBldGMuLiBjbG9zZSBhc2sgZm9yIHJlY29ubmVjdCAqLworKyAgICAgICAgbGRhcF9jbG9z
 ZShsKTsKKysKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9IAorKworKyAgICAvKiBm
 cmVlICovCisrICAgIGZyZWUoZmlsdGVyKTsKKysKKysgICAgLyogY2hlY2sgaWYgYW55IHJl
 c3VsdHMgKi8KKysgICAgaSA9IGxkYXBfY291bnRfZW50cmllcyhsLT5sZCxyZXMpOworKyAg
 ICBpZiAoaSA8PSAwKSB7CisrICAgICAgICBsZGFwX21zZ2ZyZWUocmVzKTsKKysgICAgICAg
 IGZyZWUoayk7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworKyAgICBpZiAo
 aSA+IDEpCisrICAgICAgICBkZWJ1ZygiW0xEQVBdIGR1cGxpY2F0ZSBlbnRyaWVzLCB1c2lu
 ZyB0aGUgRklSU1QgZW50cnkgcmV0dXJuZWQiKTsKKysKKysgICAgZSA9IGxkYXBfZmlyc3Rf
 ZW50cnkobC0+bGQsIHJlcyk7CisrICAgIGstPmtleXMgPSBsZGFwX2dldF92YWx1ZXNfbGVu
 KGwtPmxkLCBlLCBQVUJLRVlBVFRSKTsKKysgICAgay0+bnVtID0gbGRhcF9jb3VudF92YWx1
 ZXNfbGVuKGstPmtleXMpOworKworKyAgICBsZGFwX21zZ2ZyZWUocmVzKTsKKysgICAgcmV0
 dXJuIGs7CisrfQorKworKworKy8qIC0xIGlmIHRyb3VibGUKKysgICAwIGlmIHVzZXIgaXMg
 Tk9UIG1lbWJlciBvZiBjdXJyZW50IHNlcnZlciBncm91cAorKyAgIDEgaWYgdXNlciBJUyBN
 RU1CRVIgb2YgY3VycmVudCBzZXJ2ZXIgZ3JvdXAgCisrICovCisraW50IGxkYXBfaXNtZW1i
 ZXIobGRhcF9vcHRfdCAqIGwsIGNvbnN0IGNoYXIgKiB1c2VyKSB7CisrICAgIExEQVBNZXNz
 YWdlICpyZXM7CisrICAgIGNoYXIgKiBmaWx0ZXI7CisrICAgIGludCBpOworKworKyAgICBp
 ZiAoKCFsLT5zZ3JvdXApIHx8ICEobC0+Z19iYXNlZG4pKQorKyAgICAgICAgcmV0dXJuIDE7
 CisrCisrICAgIC8qIEFtIGkgc3RpbGwgY29ubmVjdGVkID8gUkVUUlkgbiB0aW1lcyAqLwor
 KyAgICAvKiBYWFggVE9ETzogc2V0dXAgc29tZSBjb25mIHZhbHVlIGZvciByZXRyeWluZyAq
 LworKyAgICBpZiAoIShsLT5mbGFncyAmIEZMQUdfQ09OTkVDVEVEKSkgCisrICAgICAgICBm
 b3IgKGkgPSAwIDsgaSA8IDIgOyBpKyspCisrICAgICAgICAgICAgaWYgKGxkYXBfY29ubmVj
 dChsKSA9PSAwKQorKyAgICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgIC8qIHF1aWNr
 IGNoZWNrIGZvciBhdHRlbXB0cyB0byBiZSBldmlsICovCisrICAgIGlmICgoc3RyY2hyKHVz
 ZXIsICcoJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAnKScpICE9IE5VTEwpIHx8Cisr
 ICAgICAgICAoc3RyY2hyKHVzZXIsICcqJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAn
 XFwnKSAhPSBOVUxMKSkKKysgICAgICAgIHJldHVybiBGQUlMVVJFOworKworKyAgICAvKiBi
 dWlsZCBmaWx0ZXIgZm9yIExEQVAgcmVxdWVzdCAqLworKyAgICBSRVFVRVNUX0dST1VQKGZp
 bHRlciwgbC0+Zmdyb3VwLCB1c2VyKTsKKysKKysgICAgaWYgKGxkYXBfc2VhcmNoX3N0KCBs
 LT5sZCwgCisrICAgICAgICBsLT5nX2Jhc2VkbiwKKysgICAgICAgIExEQVBfU0NPUEVfU1VC
 VFJFRSwKKysgICAgICAgIGZpbHRlciwKKysgICAgICAgIE5VTEwsIDAsICZsLT5zX3RpbWVv
 dXQsICZyZXMpICE9IExEQVBfU1VDQ0VTUykgeworKyAgICAKKysgICAgICAgIGxkYXBfcGVy
 cm9yKGwtPmxkLCAibGRhcF9zZWFyY2hfc3QoKSIpOworKworKyAgICAgICAgZnJlZShmaWx0
 ZXIpOworKworKyAgICAgICAgLyogWFhYIGVycm9yIG9uIHNlYXJjaCwgdGltZW91dCBldGMu
 LiBjbG9zZSBhc2sgZm9yIHJlY29ubmVjdCAqLworKyAgICAgICAgbGRhcF9jbG9zZShsKTsK
 KysKKysgICAgICAgIHJldHVybiBGQUlMVVJFOworKyAgICB9CisrCisrICAgIGZyZWUoZmls
 dGVyKTsKKysKKysgICAgLyogY2hlY2sgaWYgYW55IHJlc3VsdHMgKi8KKysgICAgaWYgKGxk
 YXBfY291bnRfZW50cmllcyhsLT5sZCwgcmVzKSA+IDApIHsKKysgICAgICAgIGxkYXBfbXNn
 ZnJlZShyZXMpOworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgICAgbGRhcF9t
 c2dmcmVlKHJlcyk7CisrICAgIHJldHVybiAwOworK30KKysKKysvKgorKyAqIGxkYXAuY29u
 ZiBzaW1wbGUgcGFyc2VyCisrICogWFhYIFRPRE86ICBzYW5pdHkgY2hlY2tzCisrICogbXVz
 dCBlaXRoZXIKKysgKiAtIGZyZWUgdGhlIHByZXZpb3VzIGxkYXBfb3B0X2JlZm9yZSByZXBs
 YWNpbmcgZW50cmllcworKyAqIC0gZnJlZSBlYWNoIG5lY2Vzc2FyeSBwcmV2aW91c2x5IHBh
 cnNlZCBlbGVtZW50cworKyAqIHJldDoKKysgKiAtMSBvbiBGQUlMVVJFLCAwIG9uIFNVQ0NF
 U1MKKysgKi8KKytpbnQgbGRhcF9wYXJzZV9sY29uZihsZGFwX29wdF90ICogbCkgeworKyAg
 ICBGSUxFICogbGNkOyAvKiBsZGFwLmNvbmYgZGVzY3JpcHRvciAqLworKyAgICBjaGFyIGJ1
 ZltCVUZTSVpdOworKyAgICBjaGFyICogcyA9IE5VTEwsICogayA9IE5VTEwsICogdiA9IE5V
 TEw7CisrICAgIGludCBsaSwgbGVuOworKworKyAgICBsY2QgPSBmb3BlbiAobC0+bF9jb25m
 LCAiciIpOworKyAgICBpZiAobGNkID09IE5VTEwpIHsKKysgICAgICAgIC8qIGRlYnVnKCJD
 YW5ub3Qgb3BlbiAlcyIsIGwtPmxfY29uZik7ICovCisrICAgICAgICBwZXJyb3IoImxkYXBf
 cGFyc2VfbGNvbmYoKSIpOworKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7CisrICAgIH0KKysg
 ICAgCisrICAgIHdoaWxlIChmZ2V0cyAoYnVmLCBzaXplb2YgKGJ1ZiksIGxjZCkgIT0gTlVM
 TCkgeworKworKyAgICAgICAgaWYgKCpidWYgPT0gJ1xuJyB8fCAqYnVmID09ICcjJykKKysg
 ICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgIGsgPSBidWY7CisrICAgICAgICB2
 ID0gazsKKysgICAgICAgIHdoaWxlICgqdiAhPSAnXDAnICYmICp2ICE9ICcgJyAmJiAqdiAh
 PSAnXHQnKQorKyAgICAgICAgICAgIHYrKzsKKysKKysgICAgICAgIGlmICgqdiA9PSAnXDAn
 KQorKyAgICAgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgICAgKih2KyspID0gJ1wwJzsK
 KysKKysgICAgICAgIHdoaWxlICgqdiA9PSAnICcgfHwgKnYgPT0gJ1x0JykKKysgICAgICAg
 ICAgICB2Kys7CisrCisrICAgICAgICBsaSA9IHN0cmxlbiAodikgLSAxOworKyAgICAgICAg
 d2hpbGUgKHZbbGldID09ICcgJyB8fCB2W2xpXSA9PSAnXHQnIHx8IHZbbGldID09ICdcbicp
 CisrICAgICAgICAgICAgLS1saTsKKysgICAgICAgIHZbbGkgKyAxXSA9ICdcMCc7CisrCisr
 ICAgICAgICBpZiAoIXN0cmNhc2VjbXAgKGssICJ1cmkiKSkgeworKyAgICAgICAgICAgIGlm
 ICgobC0+c2VydmVycyA9IGxkYXBfcGFyc2Vfc2VydmVycyh2KSkgPT0gTlVMTCkgeworKyAg
 ICAgICAgICAgICAgICBmYXRhbCgiZXJyb3IgaW4gbGRhcCBzZXJ2ZXJzIik7CisrICAgICAg
 ICAgICAgcmV0dXJuIEZBSUxVUkU7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgfQor
 KyAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAgKGssICJiYXNlIikpIHsgCisrICAgICAg
 ICAgICAgcyA9IHN0cmNociAodiwgJz8nKTsKKysgICAgICAgICAgICBpZiAocyAhPSBOVUxM
 KSB7CisrICAgICAgICAgICAgICAgIGxlbiA9IHMgLSB2OworKyAgICAgICAgICAgICAgICBs
 LT51X2Jhc2VkbiA9IG1hbGxvYyAobGVuICsgMSk7CisrICAgICAgICAgICAgICAgIHN0cm5j
 cHkgKGwtPnVfYmFzZWRuLCB2LCBsZW4pOworKyAgICAgICAgICAgICAgICBsLT51X2Jhc2Vk
 bltsZW5dID0gJ1wwJzsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAg
 ICBsLT51X2Jhc2VkbiA9IHN0cmR1cCAodik7CisrICAgICAgICAgICAgfQorKyAgICAgICAg
 fQorKyAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAgKGssICJiaW5kZG4iKSkgeworKyAg
 ICAgICAgICAgIGwtPmJpbmRkbiA9IHN0cmR1cCAodik7CisrICAgICAgICB9CisrICAgICAg
 ICBlbHNlIGlmICghc3RyY2FzZWNtcCAoaywgImJpbmRwdyIpKSB7CisrICAgICAgICAgICAg
 bC0+YmluZHB3ID0gc3RyZHVwICh2KTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYg
 KCFzdHJjYXNlY21wIChrLCAidGltZWxpbWl0IikpIHsKKysgICAgICAgICAgICBsLT5zX3Rp
 bWVvdXQudHZfc2VjID0gYXRvaSAodik7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAg
 IGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAiYmluZF90aW1lbGltaXQiKSkgeworKyAgICAg
 ICAgICAgIGwtPmJfdGltZW91dC50dl9zZWMgPSBhdG9pICh2KTsKKysgICAgICAgIH0KKysg
 ICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAic3NsIikpIHsKKysgICAgICAgICAg
 ICBpZiAoIXN0cmNhc2VjbXAgKHYsICJzdGFydF90bHMiKSkKKysgICAgICAgICAgICAgICAg
 bC0+dGxzID0gMTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBmY2xvc2UgKGxjZCk7
 CisrICAgIHJldHVybiBTVUNDRVNTOworK30KKysKKysjZW5kaWYgLyogV0lUSF9MREFQX1BV
 QktFWSAqLworZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJl
 aicgbGRhcGF1dGguaCBsZGFwYXV0aC5oCistLS0gbGRhcGF1dGguaAkxOTY5LTEyLTMxIDE2
 OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysrIGxkYXBhdXRoLmgJMjAwOC0wOC0yMyAxNTow
 Mjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0wLDAgKzEsMTI0IEBACisrLyoKKysgKiAkSWQ6
 IG9wZW5zc2gtbHBrLTQuM3AxLTAuMy43LnBhdGNoLHYgMS4zIDIwMDYvMDQvMTggMTU6Mjk6
 MDkgZWF1IEV4cCAkIAorKyAqLworKworKy8qCisrICoKKysgKiBDb3B5cmlnaHQgKGMpIDIw
 MDUsIEVyaWMgQVVHRSA8ZWF1QHBoZWFyLm9yZz4KKysgKiBBbGwgcmlnaHRzIHJlc2VydmVk
 LgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
 eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
 cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorKyAqCisr
 ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
 ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
 bGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
 bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
 dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
 c3RyaWJ1dGlvbi4KKysgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwaGVhci5vcmcgbm9y
 IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
 b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
 IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKysgKgorKyAqIFRISVMgU09G
 VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
 VVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
 TkNMVURJTkcsIAorKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
 VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
 VVJQT1NFIEFSRSBESVNDTEFJTUVELiAKKysgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
 WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
 IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIAorKyAqIE9SIENP
 TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
 T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IAorKyAqIExPU1Mg
 T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
 V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
 TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgCisrICogT1IgVE9SVCAoSU5DTFVESU5H
 IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
 RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
 TElUWSBPRiBTVUNIIERBTUFHRS4KKysgKgorKyAqCisrICovCisrCisrI2lmbmRlZiBMREFQ
 QVVUSF9ICisrI2RlZmluZSBMREFQQVVUSF9ICisrCisrI2RlZmluZSBMREFQX0RFUFJFQ0FU
 RUQgMQorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8dGltZS5oPgorKyNp
 bmNsdWRlIDxsZGFwLmg+CisrI2luY2x1ZGUgPGxiZXIuaD4KKysKKysvKiB0b2tlbnMgaW4g
 dXNlIGZvciBjb25maWcgKi8KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19UT0tFTiAiVXNlTFBL
 IgorKyNkZWZpbmUgX0RFRkFVTFRfU1JWX1RPS0VOICJMcGtTZXJ2ZXJzIgorKyNkZWZpbmUg
 X0RFRkFVTFRfVVNSX1RPS0VOICJMcGtVc2VyRE4iCisrI2RlZmluZSBfREVGQVVMVF9HUlBf
 VE9LRU4gIkxwa0dyb3VwRE4iCisrI2RlZmluZSBfREVGQVVMVF9CRE5fVE9LRU4gIkxwa0Jp
 bmRETiIKKysjZGVmaW5lIF9ERUZBVUxUX0JQV19UT0tFTiAiTHBrQmluZFB3IgorKyNkZWZp
 bmUgX0RFRkFVTFRfTVlHX1RPS0VOICJMcGtTZXJ2ZXJHcm91cCIKKysjZGVmaW5lIF9ERUZB
 VUxUX0ZJTF9UT0tFTiAiTHBrRmlsdGVyIgorKyNkZWZpbmUgX0RFRkFVTFRfVExTX1RPS0VO
 ICJMcGtGb3JjZVRMUyIKKysjZGVmaW5lIF9ERUZBVUxUX0JUSV9UT0tFTiAiTHBrQmluZFRp
 bWVsaW1pdCIKKysjZGVmaW5lIF9ERUZBVUxUX1NUSV9UT0tFTiAiTHBrU2VhcmNoVGltZWxp
 bWl0IgorKyNkZWZpbmUgX0RFRkFVTFRfTERQX1RPS0VOICJMcGtMZGFwQ29uZiIKKysKKysv
 KiBkZWZhdWx0IG9wdGlvbnMgKi8KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19PTiAwCisrI2Rl
 ZmluZSBfREVGQVVMVF9MUEtfU0VSVkVSUyBOVUxMCisrI2RlZmluZSBfREVGQVVMVF9MUEtf
 VUROIE5VTEwKKysjZGVmaW5lIF9ERUZBVUxUX0xQS19HRE4gTlVMTAorKyNkZWZpbmUgX0RF
 RkFVTFRfTFBLX0JJTkRETiBOVUxMCisrI2RlZmluZSBfREVGQVVMVF9MUEtfQklORFBXIE5V
 TEwKKysjZGVmaW5lIF9ERUZBVUxUX0xQS19TR1JPVVAgTlVMTAorKyNkZWZpbmUgX0RFRkFV
 TFRfTFBLX0ZJTFRFUiBOVUxMCisrI2RlZmluZSBfREVGQVVMVF9MUEtfVExTIC0xCisrI2Rl
 ZmluZSBfREVGQVVMVF9MUEtfQlRJTUVPVVQgMTAKKysjZGVmaW5lIF9ERUZBVUxUX0xQS19T
 VElNRU9VVCAxMAorKyNkZWZpbmUgX0RFRkFVTFRfTFBLX0xEUCBOVUxMCisrCisrLyogZmxh
 Z3MgKi8KKysjZGVmaW5lIEZMQUdfRU1QVFkJICAgIDB4MDAwMDAwMDAKKysjZGVmaW5lIEZM
 QUdfQ09OTkVDVEVECSAgICAweDAwMDAwMDAxCisrCisrLyogZmxhZyBtYWNyb3MgKi8KKysj
 ZGVmaW5lIEZMQUdfU0VUX0VNUFRZKHgpCQl4Jj0oRkxBR19FTVBUWSkKKysjZGVmaW5lIEZM
 QUdfU0VUX0NPTk5FQ1RFRCh4KQkJeHw9KEZMQUdfQ09OTkVDVEVEKQorKyNkZWZpbmUgRkxB
 R19TRVRfRElTQ09OTkVDVEVEKHgpCXgmPX4oRkxBR19DT05ORUNURUQpCisrCisrLyogZGVm
 aW5lcyAqLworKyNkZWZpbmUgRkFJTFVSRSAtMQorKyNkZWZpbmUgU1VDQ0VTUyAwCisrI2Rl
 ZmluZSBQVUJLRVlBVFRSICJzc2hQdWJsaWNLZXkiCisrCisrLyogCisrICoKKysgKiBkZWZp
 bmVkIGZpbGVzIHBhdGggCisrICogKHNob3VsZCBiZSByZWxvY2F0ZWQgdG8gcGF0aG5hbWVz
 LmgsCisrICogaWYgb25lIGRheSBpdCdzIGluY2x1ZGVkIHdpdGhpbiB0aGUgdHJlZSkgCisr
 ICoKKysgKi8KKysjZGVmaW5lIF9QQVRIX0xEQVBfQ09ORklHX0ZJTEUgIi9ldGMvbGRhcC5j
 b25mIgorKworKy8qIHN0cnVjdHVyZXMgKi8KKyt0eXBlZGVmIHN0cnVjdCBsZGFwX29wdGlv
 bnMgeworKyAgICBpbnQgb247CQkJLyogVXNlIGl0IG9yIE5PVCAqLworKyAgICBMREFQICog
 bGQ7CQkJLyogTERBUCBmaWxlIGRlc2MgKi8KKysgICAgY2hhciAqIHNlcnZlcnM7CQkvKiBw
 YXJzZWQgc2VydmVycyBmb3IgbGRhcGxpYiBmYWlsb3ZlciBoYW5kbGluZyAqLworKyAgICBj
 aGFyICogdV9iYXNlZG47CQkvKiB1c2VyIGJhc2VkbiAqLworKyAgICBjaGFyICogZ19iYXNl
 ZG47CQkvKiBncm91cCBiYXNlZG4gKi8KKysgICAgY2hhciAqIGJpbmRkbjsJCS8qIGJpbmRk
 biAqLworKyAgICBjaGFyICogYmluZHB3OwkJLyogYmluZCBwYXNzd29yZCAqLworKyAgICBj
 aGFyICogc2dyb3VwOwkJLyogc2VydmVyIGdyb3VwICovCisrICAgIGNoYXIgKiBmZ3JvdXA7
 CQkvKiBncm91cCBmaWx0ZXIgKi8KKysgICAgY2hhciAqIGZpbHRlcjsJCS8qIGFkZGl0aW9u
 YWwgZmlsdGVyICovCisrICAgIGNoYXIgKiBsX2NvbmY7CQkvKiB1c2UgbGRhcC5jb25mICov
 CisrICAgIGludCB0bHM7CQkJLyogVExTIG9ubHkgKi8KKysgICAgc3RydWN0IHRpbWV2YWwg
 Yl90aW1lb3V0OyAgIC8qIGJpbmQgdGltZW91dCAqLworKyAgICBzdHJ1Y3QgdGltZXZhbCBz
 X3RpbWVvdXQ7ICAgLyogc2VhcmNoIHRpbWVvdXQgKi8KKysgICAgdW5zaWduZWQgaW50IGZs
 YWdzOwkJLyogbWlzYyBmbGFncyAocmVjb25uZWN0aW9uLCBmdXR1cmUgdXNlPykgKi8KKyt9
 IGxkYXBfb3B0X3Q7CisrCisrdHlwZWRlZiBzdHJ1Y3QgbGRhcF9rZXlzIHsKKysgICAgc3Ry
 dWN0IGJlcnZhbCAqKiBrZXlzOwkvKiB0aGUgcHVibGljIGtleXMgcmV0cmlldmVkICovCisr
 ICAgIHVuc2lnbmVkIGludCBudW07CQkvKiBudW1iZXIgb2Yga2V5cyAqLworK30gbGRhcF9r
 ZXlfdDsKKysKKysKKysvKiBmdW5jdGlvbiBoZWFkZXJzICovCisrdm9pZCBsZGFwX2Nsb3Nl
 KGxkYXBfb3B0X3QgKik7CisraW50IGxkYXBfY29ubmVjdChsZGFwX29wdF90ICopOworK2No
 YXIgKiBsZGFwX3BhcnNlX2dyb3Vwcyhjb25zdCBjaGFyICopOworK2NoYXIgKiBsZGFwX3Bh
 cnNlX3NlcnZlcnMoY29uc3QgY2hhciAqKTsKKyt2b2lkIGxkYXBfb3B0aW9uc19wcmludChs
 ZGFwX29wdF90ICopOworK3ZvaWQgbGRhcF9vcHRpb25zX2ZyZWUobGRhcF9vcHRfdCAqKTsK
 Kyt2b2lkIGxkYXBfa2V5c19mcmVlKGxkYXBfa2V5X3QgKik7CisraW50IGxkYXBfcGFyc2Vf
 bGNvbmYobGRhcF9vcHRfdCAqKTsKKytsZGFwX2tleV90ICogbGRhcF9nZXR1c2Vya2V5KGxk
 YXBfb3B0X3QgKiwgY29uc3QgY2hhciAqKTsKKytpbnQgbGRhcF9pc21lbWJlcihsZGFwX29w
 dF90ICosIGNvbnN0IGNoYXIgKik7CisrCisrI2VuZGlmCitkaWZmIC1OdWFyIC0tZXhjbHVk
 ZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBscGstdXNlci1leGFtcGxlLnR4dCBscGst
 dXNlci1leGFtcGxlLnR4dAorLS0tIGxway11c2VyLWV4YW1wbGUudHh0CTE5NjktMTItMzEg
 MTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKysgbHBrLXVzZXItZXhhbXBsZS50eHQJMjAw
 OC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0wLDAgKzEsMTE3IEBACisr
 CisrUG9zdCB0byBNTCAtPiBVc2VyIE1hZGUgUXVpY2sgSW5zdGFsbCBEb2MuCisrQ29udHJp
 YnV0aW9uIGZyb20gSm9obiBMYW5lIDxqb2huQGxhbmUudWsubmV0PgorKworKysrKysrKysr
 KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
 KysrKysrKysrKysrKysKKysKKytPcGVuU1NIIExEQVAga2V5c3RvcmUgUGF0Y2gKKys9PT09
 PT09PT09PT09PT09PT09PT09PT09PT0KKysKKytOT1RFOiB0aGVzZSBub3RlcyBhcmUgYSB0
 cmFuc2NyaXB0IG9mIGEgc3BlY2lmaWMgaW5zdGFsbGF0aW9uCisrICAgICAgdGhleSB3b3Jr
 IGZvciBtZSwgeW91ciBzcGVjaWZpY3MgbWF5IGJlIGRpZmZlcmVudCEKKysgICAgICBmcm9t
 IEpvaG4gTGFuZSBNYXJjaCAxN3RoIDIwMDUgICAgICAgICBqb2huQGxhbmUudWsubmV0Cisr
 CisrVGhpcyBpcyBhIHBhdGNoIHRvIE9wZW5TU0ggNC4wcDEgdG8gYWxsb3cgaXQgdG8gb2J0
 YWluIHVzZXJzJyBwdWJsaWMga2V5cworK2Zyb20gdGhlaXIgTERBUCByZWNvcmQgYXMgYW4g
 YWx0ZXJuYXRpdmUgdG8gfi8uc3NoL2F1dGhvcml6ZWRfa2V5cy4KKysKKysoQXNzdW1pbmcg
 aGVyZSB0aGF0IG5lY2Vzc2FyeSBidWlsZCBzdHVmZiBpcyBpbiAkQlVJTEQpCisrCisrY2Qg
 JEJVSUxEL29wZW5zc2gtNC4wcDEKKytwYXRjaCAtTnAxIC1pICRCVUlMRC9vcGVuc3NoLWxw
 ay00LjBwMS0wLjMucGF0Y2gKKytta2RpciAtcCAvdmFyL2VtcHR5ICYmCisrLi9jb25maWd1
 cmUgLS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0Yy9zc2ggXAorKyAgICAtLWxpYmV4
 ZWNkaXI9L3Vzci9zYmluIC0td2l0aC1tZDUtcGFzc3dvcmRzIC0td2l0aC1wYW0gXAorKyAg
 ICAtLXdpdGgtbGlicz0iLWxsZGFwIiAtLXdpdGgtY3BwZmxhZ3M9Ii1EV0lUSF9MREFQX1BV
 QktFWSIKKytOb3cgZG8uCisrbWFrZSAmJgorK21ha2UgaW5zdGFsbAorKworK0FkZCB0aGUg
 Zm9sbG93aW5nIGNvbmZpZyB0byAvZXRjL3NzaC9zc2hfY29uZmlnCisrVXNlTFBLIHllcwor
 K0xwa1NlcnZlcnMgbGRhcDovL215aG9zdC5teWRvbWFpbi5jb20KKytMcGtVc2VyRE4gIG91
 PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20KKysKKytXZSBuZWVkIHRvIHRlbGwgc3NoZCBh
 Ym91dCB0aGUgU1NMIGtleXMgZHVyaW5nIGJvb3QsIGFzIHJvb3QncworK2Vudmlyb25tZW50
 IGRvZXMgbm90IGV4aXN0IGF0IHRoYXQgdGltZS4gRWRpdCAvZXRjL3JjLmQvaW5pdC5kL3Nz
 aGQuCisrQ2hhbmdlIHRoZSBzdGFydHVwIGNvZGUgZnJvbSB0aGlzOgorKyAgICAgICAgICAg
 ICAgICBlY2hvICJTdGFydGluZyBTU0ggU2VydmVyLi4uIgorKyAgICAgICAgICAgICAgICBs
 b2FkcHJvYyAvdXNyL3NiaW4vc3NoZAorKyAgICAgICAgICAgICAgICA7OworK3RvIHRoaXM6
 CisrICAgICAgICAgICAgICAgIGVjaG8gIlN0YXJ0aW5nIFNTSCBTZXJ2ZXIuLi4iCisrICAg
 ICAgICAgICAgICAgIExEQVBSQz0iL3Jvb3QvLmxkYXByYyIgbG9hZHByb2MgL3Vzci9zYmlu
 L3NzaGQKKysgICAgICAgICAgICAgICAgOzsKKysKKytSZS1zdGFydCB0aGUgc3NoZCBkYWVt
 b246CisrL2V0Yy9yYy5kL2luaXQuZC9zc2hkIHJlc3RhcnQKKysKKytJbnN0YWxsIHRoZSBh
 ZGRpdGlvbmFsIExEQVAgc2NoZW1hCisrY3AgJEJVSUxEL29wZW5zc2gtbHBrLTAuMi5zY2hl
 bWEgIC9ldGMvb3BlbmxkYXAvc2NoZW1hL29wZW5zc2guc2NoZW1hCisrCisrTm93IGFkZCB0
 aGUgb3BlblNTSCBMREFQIHNjaGVtYSB0byAvZXRjL29wZW5sZGFwL3NsYXBkLmNvbmY6Cisr
 QWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZXhpc3RpbmcgYmxvY2sgb2Yg
 c2NoZW1hIGluY2x1ZGVzCisraW5jbHVkZSAgICAgICAgIC9ldGMvb3BlbmxkYXAvc2NoZW1h
 L29wZW5zc2guc2NoZW1hCisrCisrUmUtc3RhcnQgdGhlIExEQVAgc2VydmVyOgorKy9ldGMv
 cmMuZC9pbml0LmQvc2xhcGQgcmVzdGFydAorKworK1RvIGFkZCBvbmUgb3IgbW9yZSBwdWJs
 aWMga2V5cyB0byBhIHVzZXIsIGVnICJ0ZXN0dXNlciIgOgorK2xkYXBzZWFyY2ggLXggLVcg
 LVogLUxMTCAtYiAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20i
 IC1ECisrInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiA+IC90
 bXAvdGVzdHVzZXIKKysKKythcHBlbmQgdGhlIGZvbGxvd2luZyB0byB0aGlzIC90bXAvdGVz
 dHVzZXIgZmlsZQorK29iamVjdGNsYXNzOiBsZGFwUHVibGljS2V5Cisrc3NoUHVibGljS2V5
 OiBzc2gtcnNhCisrQUFBQUIzTnphQzF5YzJFQUFBQUJKUUFBQUlCM2RzcndxWHFEN0U0ellZ
 cnh3ZERLQlVReEtNaW9YeTlweEZWYWk2NGtBUHhqVTlLUworK3FJbzdRZmtqc2xmc2pmbGtz
 amZsZGZranNsZGZqTFgvNXprelJtVDI4STVwaUd6dW5QdjE3Uzg5ejhYd1NzdUFvUjF0ODZ0
 KzVkbEkKKys3ZVpFL2dWYm4yVVFrUXE3K2tkRFRTMnlYVjZWbkM1Mk4va0tMRzNjaUJrQkF3
 PT0gR2VuZXJhbCBQdXJwb3NlIFJTQSBLZXkKKysKKytUaGVuIGRvIGEgbW9kaWZ5OgorK2xk
 YXBtb2RpZnkgLXggLUQgInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9
 Y29tIiAtVyAtZgorKy90bXAvdGVzdHVzZXIgLVoKKytFbnRlciBMREFQIFBhc3N3b3JkOgor
 K21vZGlmeWluZyBlbnRyeSAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixk
 Yz1jb20iCisrQW5kIGNoZWNrIHRoZSBtb2RpZnkgaXMgb2s6CisrbGRhcHNlYXJjaCAteCAt
 VyAtWiAtYiAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20iIC1E
 CisrInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIgorK0VudGVy
 IExEQVAgUGFzc3dvcmQ6CisrIyBleHRlbmRlZCBMRElGCisrIworKyMgTERBUHYzCisrIyBi
 YXNlIDx1aWQ9dGVzdHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbT4gd2l0aCBz
 Y29wZSBzdWIKKysjIGZpbHRlcjogKG9iamVjdGNsYXNzPSopCisrIyByZXF1ZXN0aW5nOiBB
 TEwKKysjCisrCisrIyB0ZXN0dXNlciwgUGVvcGxlLCBteWRvbWFpbi5jb20KKytkbjogdWlk
 PXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20KKyt1aWQ6IHRlc3R1c2Vy
 CisrY246IHRlc3R1c2VyCisrb2JqZWN0Q2xhc3M6IGFjY291bnQKKytvYmplY3RDbGFzczog
 cG9zaXhBY2NvdW50Cisrb2JqZWN0Q2xhc3M6IHRvcAorK29iamVjdENsYXNzOiBzaGFkb3dB
 Y2NvdW50Cisrb2JqZWN0Q2xhc3M6IGxkYXBQdWJsaWNLZXkKKytzaGFkb3dMYXN0Q2hhbmdl
 OiAxMjc1NworK3NoYWRvd01heDogOTk5OTkKKytzaGFkb3dXYXJuaW5nOiA3CisrbG9naW5T
 aGVsbDogL2Jpbi9iYXNoCisrdWlkTnVtYmVyOiA5OTk5CisrZ2lkTnVtYmVyOiA1MDEKKyto
 b21lRGlyZWN0b3J5OiAvaG9tZS90ZXN0dXNlcgorK3VzZXJQYXNzd29yZDo6IGUxTlRTRUY5
 VURnd1YxaG5NMVZqVURSSkswazFZbkZpTDFkNFpVSk9iWGxaWjNaM1VUVT0KKytzc2hQdWJs
 aWNLZXk6IHNzaC1yc2EKKytBQUFBQjNOemFDMXljMkVBQUFBQkpRQUFBSUIzZHNyd3FYcUQ3
 RTR6WVlyeHdkREtCVVF4S01pb1h5OXB4RlZhaTY0a0FQeGpVOUtTcUlvN1Fma2pzbGZzamZs
 a3NqZmxkZmtqc2xkZmpMWC81emt6Um1UMjhJNXBpR3p1blB2MTdTODl6CisrOFh3U3N1QW9S
 MXQ4NnQrNWRsSTdlWkUvZ1ZibjJVUWtRcTcra2REVFMyeVhWNlZuQzUyTi9rS0xHM2NpQmtC
 QXc9PSBHZW5lcmFsIFB1cnBvc2UgUlNBIEtleQorKworKyMgc2VhcmNoIHJlc3VsdAorK3Nl
 YXJjaDogMworK3Jlc3VsdDogMCBTdWNjZXNzCisrCisrIyBudW1SZXNwb25zZXM6IDIKKysj
 IG51bUVudHJpZXM6IDEKKysKKytOb3cgc3RhcnQgYSBzc2ggc2Vzc2lvbiB0byB1c2VyICJ0
 ZXN0dXNlciIgZnJvbSB1c3VhbCBzc2ggY2xpZW50IChlLmcuCisrcHVUVFkpLiBMb2dpbiBz
 aG91bGQgc3VjY2VlZC4KKysKKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
 KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCitkaWZmIC1OdWFy
 IC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBNYWtlZmlsZS5pbiBNYWtl
 ZmlsZS5pbgorLS0tIE1ha2VmaWxlLmluCTIwMDgtMDctMDggMDc6MjE6MTIuMDAwMDAwMDAw
 IC0wNzAwCisrKysgTWFrZWZpbGUuaW4JMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAg
 LTA3MDAKK0BAIC04Nyw3ICs4Nyw3IEBACisgCWF1dGgta3JiNS5vIFwKKyAJYXV0aDItZ3Nz
 Lm8gZ3NzLXNlcnYubyBnc3Mtc2Vydi1rcmI1Lm8gXAorIAlsb2dpbnJlYy5vIGF1dGgtcGFt
 Lm8gYXV0aC1zaGFkb3cubyBhdXRoLXNpYS5vIG1kNWNyeXB0Lm8gXAorLQlhdWRpdC5vIGF1
 ZGl0LWJzbS5vIHBsYXRmb3JtLm8gc2Z0cC1zZXJ2ZXIubyBzZnRwLWNvbW1vbi5vIFwKKysJ
 YXVkaXQubyBhdWRpdC1ic20ubyBwbGF0Zm9ybS5vIGxkYXBhdXRoLm8gc2Z0cC1zZXJ2ZXIu
 byBzZnRwLWNvbW1vbi5vIFwKKyAJcm9hbWluZ19jb21tb24ubworIAorIE1BTlBBR0VTCT0g
 bW9kdWxpLjUub3V0IHNjcC4xLm91dCBzc2gtYWRkLjEub3V0IHNzaC1hZ2VudC4xLm91dCBz
 c2gta2V5Z2VuLjEub3V0IHNzaC1rZXlzY2FuLjEub3V0IHNzaC4xLm91dCBzc2hkLjgub3V0
 IHNmdHAtc2VydmVyLjgub3V0IHNmdHAuMS5vdXQgc3NoLXJhbmQtaGVscGVyLjgub3V0IHNz
 aC1rZXlzaWduLjgub3V0IHNzaGRfY29uZmlnLjUub3V0IHNzaF9jb25maWcuNS5vdXQKK2Rp
 ZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIG9wZW5zc2gt
 bHBrX29wZW5sZGFwLnNjaGVtYSBvcGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEKKy0tLSBv
 cGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAw
 MDAgLTA4MDAKKysrKyBvcGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEJMjAwOC0wOC0yMyAx
 NTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0wLDAgKzEsMTkgQEAKKysjCisrIyBMREFQ
 IFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0aCBvcGVuc3NoLWxkYXBwdWJr
 ZXkKKysjIEF1dGhvcjogRXJpYyBBVUdFIDxlYXVAcGhlYXIub3JnPgorKyMgCisrIyBCYXNl
 ZCBvbiB0aGUgcHJvcG9zYWwgb2YgOiBNYXJrIFJ1aWp0ZXIKKysjCisrCisrCisrIyBvY3Rl
 dFN0cmluZyBTWU5UQVgKKythdHRyaWJ1dGV0eXBlICggMS4zLjYuMS40LjEuMjQ1NTIuNTAw
 LjEuMS4xLjEzIE5BTUUgJ3NzaFB1YmxpY0tleScgCisrCURFU0MgJ01BTkRBVE9SWTogT3Bl
 blNTSCBQdWJsaWMga2V5JyAKKysJRVFVQUxJVFkgb2N0ZXRTdHJpbmdNYXRjaAorKwlTWU5U
 QVggMS4zLjYuMS40LjEuMTQ2Ni4xMTUuMTIxLjEuNDAgKQorKworKyMgcHJpbnRhYmxlU3Ry
 aW5nIFNZTlRBWCB5ZXN8bm8KKytvYmplY3RjbGFzcyAoIDEuMy42LjEuNC4xLjI0NTUyLjUw
 MC4xLjEuMi4wIE5BTUUgJ2xkYXBQdWJsaWNLZXknIFNVUCB0b3AgQVVYSUxJQVJZCisrCURF
 U0MgJ01BTkRBVE9SWTogT3BlblNTSCBMUEsgb2JqZWN0Y2xhc3MnCisrCU1VU1QgKCBzc2hQ
 dWJsaWNLZXkgJCB1aWQgKSAKKysJKQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycg
 LS1leGNsdWRlICcqLnJlaicgb3BlbnNzaC1scGtfc3VuLnNjaGVtYSBvcGVuc3NoLWxwa19z
 dW4uc2NoZW1hCistLS0gb3BlbnNzaC1scGtfc3VuLnNjaGVtYQkxOTY5LTEyLTMxIDE2OjAw
 OjAwLjAwMDAwMDAwMCAtMDgwMAorKysrIG9wZW5zc2gtbHBrX3N1bi5zY2hlbWEJMjAwOC0w
 OC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0wLDAgKzEsMjEgQEAKKysjCisr
 IyBMREFQIFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0aCBvcGVuc3NoLWxk
 YXBwdWJrZXkKKysjIEF1dGhvcjogRXJpYyBBVUdFIDxlYXVAcGhlYXIub3JnPgorKyMgCisr
 IyBTY2hlbWEgZm9yIFN1biBEaXJlY3RvcnkgU2VydmVyLgorKyMgQmFzZWQgb24gdGhlIG9y
 aWdpbmFsIHNjaGVtYSwgbW9kaWZpZWQgYnkgU3RlZmFuIEZpc2NoZXIuCisrIworKworK2Ru
 OiBjbj1zY2hlbWEKKysKKysjIG9jdGV0U3RyaW5nIFNZTlRBWAorK2F0dHJpYnV0ZVR5cGVz
 OiAoIDEuMy42LjEuNC4xLjI0NTUyLjUwMC4xLjEuMS4xMyBOQU1FICdzc2hQdWJsaWNLZXkn
 IAorKwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggUHVibGljIGtleScgCisrCUVRVUFMSVRZ
 IG9jdGV0U3RyaW5nTWF0Y2gKKysJU1lOVEFYIDEuMy42LjEuNC4xLjE0NjYuMTE1LjEyMS4x
 LjQwICkKKysKKysjIHByaW50YWJsZVN0cmluZyBTWU5UQVggeWVzfG5vCisrb2JqZWN0Q2xh
 c3NlczogKCAxLjMuNi4xLjQuMS4yNDU1Mi41MDAuMS4xLjIuMCBOQU1FICdsZGFwUHVibGlj
 S2V5JyBTVVAgdG9wIEFVWElMSUFSWQorKwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggTFBL
 IG9iamVjdGNsYXNzJworKwlNVVNUICggc3NoUHVibGljS2V5ICQgdWlkICkgCisrCSkKK2Rp
 ZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIFJFQURNRS5s
 cGsgUkVBRE1FLmxwaworLS0tIFJFQURNRS5scGsJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAw
 MDAwMDAgLTA4MDAKKysrKyBSRUFETUUubHBrCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAw
 MDAwIC0wNzAwCitAQCAtMCwwICsxLDI2NyBAQAorK09wZW5TU0ggTERBUCBQVUJMSUMgS0VZ
 IFBBVENIIAorK0NvcHlyaWdodCAoYykgMjAwMyBFcmljIEFVR0UgKGVhdUBwaGVhci5vcmcp
 CisrQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysKKytSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
 IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyttb2RpZmljYXRp
 b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
 bnMKKythcmUgbWV0OgorKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
 Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKzIuIFJlZGlzdHJp
 YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
 Z2h0CisrICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
 d2luZyBkaXNjbGFpbWVyIGluIHRoZQorKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
 IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrMy4gVGhlIG5h
 bWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
 IHByb2R1Y3RzCisrICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
 aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisrCisrVEhJUyBTT0ZUV0FSRSBJUyBQ
 Uk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKKytJ
 TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
 SU1QTElFRCBXQVJSQU5USUVTCisrT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
 UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KKytJTiBOTyBFVkVOVCBT
 SEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisr
 SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
 RVMgKElOQ0xVRElORywgQlVUCisrTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
 QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorK0RBVEEsIE9SIFBS
 T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
 IEFOWQorK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
 VCBMSUFCSUxJVFksIE9SIFRPUlQKKysoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
 SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKytUSElTIFNPRlRX
 QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
 LgorKworK3B1cnBvc2VzIG9mIHRoaXMgcGF0Y2g6CisrCisrVGhpcyBwYXRjaCB3b3VsZCBo
 ZWxwIHRvIGhhdmUgYXV0aGVudGljYXRpb24gY2VudHJhbGl6YXRpb24gcG9saWN5CisrdXNp
 bmcgc3NoIHB1YmxpYyBrZXkgYXV0aGVudGljYXRpb24uCisrVGhpcyBwYXRjaCBjb3VsZCBi
 ZSBhbiBhbHRlcm5hdGl2ZSB0byBvdGhlciAic2VjdXJlIiBhdXRoZW50aWNhdGlvbiBzeXN0
 ZW0KKyt3b3JraW5nIGluIGEgc2ltaWxhciB3YXkgKEtlcmJlcm9zLCBTZWN1cklELCBldGMu
 Li4pLCBleGNlcHQgdGhlIGZhY3QgCisrdGhhdCBpdCdzIGJhc2VkIG9uIE9wZW5TU0ggYW5k
 IGl0cyBwdWJsaWMga2V5IGFiaWxpdGllcy4KKysKKys+PiBGWUk6IDw8CisrJ3VpZCc6IG1l
 YW5zIHVuaXggYWNjb3VudHMgZXhpc3Rpbmcgb24gdGhlIGN1cnJlbnQgc2VydmVyCisrJ2xw
 a1NlcnZlckdyb3VwOicgbWVhbiBzZXJ2ZXIgZ3JvdXAgY29uZmlndXJlZCBvbiB0aGUgY3Vy
 cmVudCBzZXJ2ZXIgKCdscGtTZXJ2ZXJHcm91cCcgaW4gc3NoZF9jb25maWcpCisrCisrZXhh
 bXBsZSBzY2hlbWE6CisrCisrCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 IHNlcnZlcjEgKHVpZDogZWF1LHJpdmFsLHRvdG8pIChscGtTZXJ2ZXJHcm91cDogdW5peCkK
 KysgICAgICAgICAgICAgICAgX19fX19fX19fX18gICAgICAvCisrICAgICAgICAgICAgICAg
 LyAgICAgICAgICAgXCAtLS0gLSBzZXJ2ZXIzICh1aWQ6IGVhdSwgdGl0aSkgKGxwa1NlcnZl
 ckdyb3VwOiB1bml4KQorKyAgICAgICAgICAgICAgfCBMREFQIFNlcnZlciB8ICAgIFwKKysJ
 ICAgICAgfCBlYXUgICxyaXZhbCB8ICAgICBzZXJ2ZXIyICh1aWQ6IHJpdmFsLCBlYXUpIChs
 cGtTZXJ2ZXJHcm91cDogdW5peCkKKysJICAgICAgfCB0aXRpICx0b3RvICB8CisrCSAgICAg
 IHwgdXNlcngsLi4uLiAgfCAgICAgICAgIHNlcnZlcjUgKHVpZDogZWF1KSAgKGxwa1NlcnZl
 ckdyb3VwOiBtYWlsKQorKyAgICAgICAgICAgICAgIFxfX19fX19fX19fXy8gXCAgICAgICAv
 CisrCSAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gLSBzZXJ2ZXI0ICh1aWQ6IGVhdSwg
 cml2YWwpICAobm8gZ3JvdXAgY29uZmlndXJlZCkKKysJCQkgICAgICAgICAgICAgXAorKwkJ
 CQkgICAgICAgIGV0Yy4uLgorKworKy0gV0hBVCBXRSBORUVEIDoKKysKKysgICogY29uZmln
 dXJlZCBMREFQIHNlcnZlciBzb21ld2hlcmUgb24gdGhlIG5ldHdvcmsgKGkuZS4gT3BlbkxE
 QVApCisrICAqIHBhdGNoZWQgc3NoZCAod2l0aCB0aGlzIHBhdGNoIDspCisrICAqIExEQVAg
 dXNlcigvZ3JvdXApIGVudHJ5IChsb29rIGF0IHVzZXJzLmxkaWYgKCYgZ3JvdXBzLmxkaWYp
 KToKKysgICAgICAgIFVzZXIgZW50cnk6CisrCS0gYXR0YWNoZWQgdG8gdGhlICdsZGFwUHVi
 bGljS2V5JyBvYmplY3RjbGFzcworKwktIGF0dGFjaGVkIHRvIHRoZSAncG9zaXhBY2NvdW50
 JyBvYmplY3RjbGFzcworKwktIHdpdGggYSBmaWxsZWQgJ3NzaFB1YmxpY0tleScgYXR0cmli
 dXRlIAorKwlFeGFtcGxlOgorKwkJZG46IHVpZD1lYXUsb3U9dXNlcnMsZGM9Y3Vja29vcyxk
 Yz1uZXQKKysJCW9iamVjdGNsYXNzOiB0b3AKKysJCW9iamVjdGNsYXNzOiBwZXJzb24KKysJ
 CW9iamVjdGNsYXNzOiBvcmdhbml6YXRpb25hbFBlcnNvbgorKwkJb2JqZWN0Y2xhc3M6IHBv
 c2l4QWNjb3VudAorKwkJb2JqZWN0Y2xhc3M6IGxkYXBQdWJsaWNLZXkKKysJCWRlc2NyaXB0
 aW9uOiBFcmljIEFVR0UgQWNjb3VudAorKwkJdXNlclBhc3N3b3JkOiBibGFoCisrCQljbjog
 RXJpYyBBVUdFCisrCQlzbjogRXJpYyBBVUdFCisrCQl1aWQ6IGVhdQorKwkJdWlkTnVtYmVy
 OiAxMDM0CisrCQlnaWROdW1iZXI6IDEKKysJCWhvbWVEaXJlY3Rvcnk6IC9leHBvcnQvaG9t
 ZS9lYXUKKysJCXNzaFB1YmxpY0tleTogc3NoLWRzcyBBQUFBQjMuLi4KKysJCXNzaFB1Ymxp
 Y0tleTogc3NoLWRzcyBBQUFBTTUuLi4KKysKKysJR3JvdXAgZW50cnk6CisrCS0gYXR0YWNo
 ZWQgdG8gdGhlICdwb3NpeEdyb3VwJyBvYmplY3RjbGFzcworKwktIHdpdGggYSAnY24nIGdy
 b3VwbmFtZSBhdHRyaWJ1dGUKKysJLSB3aXRoIG11bHRpcGxlICdtZW1iZXJVaWQnIGF0dHJp
 YnV0ZXMgZmlsbGVkIHdpdGggdXNlcm5hbWVzIGFsbG93ZWQgaW4gdGhpcyBncm91cAorKwlF
 eGFtcGxlOgorKwkJIyBmZXcgbWVtYmVycworKwkJZG46IGNuPXVuaXgsb3U9Z3JvdXBzLGRj
 PWN1Y2tvb3MsZGM9bmV0CisrCQlvYmplY3RjbGFzczogdG9wCisrCQlvYmplY3RjbGFzczog
 cG9zaXhHcm91cAorKwkJZGVzY3JpcHRpb246IFVuaXggYmFzZWQgc2VydmVycyBncm91cAor
 KwkJY246IHVuaXgKKysJCWdpZE51bWJlcjogMTAwMgorKwkJbWVtYmVyVWlkOiBlYXUKKysJ
 CW1lbWJlclVpZDogdXNlcjEKKysJCW1lbWJlclVpZDogdXNlcjIKKysKKysKKystIEhPVyBJ
 VCBXT1JLUyA6CisrCisrICAqIHdpdGhvdXQgcGF0Y2gKKysgIElmIGEgdXNlciB3YW50cyB0
 byBhdXRoZW50aWNhdGUgdG8gbG9nIGluIGEgc2VydmVyIHRoZSBzc2hkLCB3aWxsIGZpcnN0
 IGxvb2sgZm9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBhbGxvd2VkIChSU0FhdXRoLGtlcmJl
 cm9zLGV0Yy4uKQorKyAgYW5kIGlmIFJTQWF1dGggYW5kIHRpY2tldHMgYmFzZWQgYXV0aCBm
 YWlscywgaXQgd2lsbCBmYWxsYmFjayB0byBzdGFuZGFyZCBwYXNzd29yZCBhdXRoZW50aWNh
 dGlvbiAoaWYgZW5hYmxlZCkuCisrCisrICAqIHdpdGggdGhlIHBhdGNoCisrICBJZiBhIHVz
 ZXIgd2FudCB0byBhdXRoZW50aWNhdGUgdG8gbG9nIGluIGEgc2VydmVyLCB0aGUgc3NoZCB3
 aWxsIGZpcnN0IGxvb2sgZm9yIGF1dGggbWV0aG9kIGluY2x1ZGluZyBMREFQIHB1YmtleSwg
 aWYgdGhlIGxkYXBwdWJrZXkgb3B0aW9ucyBpcyBlbmFibGVkLgorKyAgSXQgd2lsbCBkbyBh
 biBsZGFwc2VhcmNoIHRvIGdldCB0aGUgcHVibGljIGtleSBkaXJlY3RseSBmcm9tIHRoZSBM
 REFQIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBzZXJ2ZXIgZmlsZXN5c3RlbS4g
 CisrICAodXN1YWxseSBpbiAkSE9NRS8uc3NoL2F1dGhvcml6ZWRfa2V5cykKKysKKysgIElm
 IGdyb3VwcyBhcmUgZW5hYmxlZCwgaXQgd2lsbCBhbHNvIGNoZWNrIGlmIHRoZSB1c2VyIHRo
 YXQgd2FudHMgdG8gbG9naW4gaXMgaW4gdGhlIGdyb3VwIG9mIHRoZSBzZXJ2ZXIgaGUgaXMg
 dHJ5aW5nIHRvIGxvZyBpbnRvLgorKyAgSWYgaXQgZmFpbHMsIGl0IGZhbGxzIGJhY2sgb24g
 UlNBIGF1dGggZmlsZXMgKCRIT01FLy5zc2gvYXV0aG9yaXplZF9rZXlzKSwgZXRjLi4gYW5k
 IGZpbmFsbHkgdG8gc3RhbmRhcmQgcGFzc3dvcmQgYXV0aGVudGljYXRpb24gKGlmIGVuYWJs
 ZWQpLgorKworKyAgNyB0b2tlbnMgYXJlIGFkZGVkIHRvIHNzaGRfY29uZmlnIDoKKysgICMg
 aGVyZSBpcyB0aGUgbmV3IHBhdGNoZWQgbGRhcCByZWxhdGVkIHRva2VucworKyAgIyBlbnRy
 aWVzIGluIHlvdXIgTERBUCBtdXN0IGJlIHBvc2l4QWNjb3VudCAmIHN0cm9uZ0F1dGhlbnRp
 Y2F0aW9uVXNlciAmIHBvc2l4R3JvdXAKKysgIFVzZUxQSyB5ZXMJCQkJCQkJCSMgbG9vayB0
 aGUgcHViIGtleSBpbnRvIExEQVAKKysgIExwa1NlcnZlcnMgbGRhcDovLzEwLjMxLjMyLjUv
 IGxkYXA6Ly8xMC4zMS4zMi40IGxkYXA6Ly8xMC4zMS4zMi4zCSMgd2hpY2ggTERBUCBzZXJ2
 ZXIgZm9yIHVzZXJzID8gKFVSTCBmb3JtYXQpCisrICBMcGtVc2VyRE4gIG91PXVzZXJzLGRj
 PWZvb2JhcixkYz1uZXQJCQkJCSMgd2hpY2ggYmFzZSBETiBmb3IgdXNlcnMgPworKyAgTHBr
 R3JvdXBETiBvdT1ncm91cHMsZGM9Zm9vYmFyLGRjPW5ldAkJCQkJIyB3aGljaCBiYXNlIERO
 IGZvciBncm91cHMgPyAKKysgIExwa0JpbmRETiBjbj1tYW5hZ2VyLGRjPWZvb2JhcixkYz1u
 ZXQJCQkJCSMgd2hpY2ggYmluZCBETiA/CisrICBMcGtCaW5kUHcgYXNlY3JldAkJCQkJCQkj
 IGJpbmQgRE4gY3JlZGlkZW50aWFscworKyAgTHBrU2VydmVyR3JvdXAgYWdyb3VwbmFtZQkJ
 CQkJCSMgdGhlIGdyb3VwIHRoZSBzZXJ2ZXIgaXMgcGFydCBvZgorKworKyAgUmlnaHQgbm93
 IGknbSB1c2luZyBhbm9ueW1vdXMgYmluZGluZyB0byBnZXQgcHVibGljIGtleXMsIGJlY2F1
 c2UgZ2V0dGluZyBwdWJsaWMga2V5cyBvZiBzb21lb25lIGRvZXNuJ3QgaW1wZXJzb25hdGUg
 aGltuCBidXQgdGhlcmUgaXMgc29tZQorKyAgZmxhd3MgeW91IGhhdmUgdG8gdGFrZSBjYXJl
 IG9mLgorKworKy0gSE9XIFRPIElOU0VSVCBBIFVTRVIvS0VZIElOVE8gQU4gTERBUCBFTlRS
 WQorKworKyAgKiBteSB3YXkgKHRoZXJlIGlzIHBsZW50eSA6KQorKyAgLSBjcmVhdGUgbGRp
 ZiBmaWxlIChpLmUuIHVzZXJzLmxkaWYpCisrICAtIGNhdCB+Ly5zc2gvaWRfZHNhLnB1YiBP
 UiBjYXQgfi8uc3NoL2lkX3JzYS5wdWIgT1IgY2F0IH4vLnNzaC9pZGVudGl0eS5wdWIKKysg
 IC0gbXkgd2F5IGluIDQgc3RlcHMgOgorKyAgRXhhbXBsZToKKysKKysgICMgeW91IGFkZCB0
 aGlzIHRvIHRoZSB1c2VyIGVudHJ5IGluIHRoZSBMRElGIGZpbGUgOgorKyAgWy4uLl0KKysg
 IG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQKKysgIG9iamVjdGNsYXNzOiBsZGFwUHVibGlj
 S2V5CisrICBbLi4uXQorKyAgc3NoUHVibGlLZXk6IHNzaC1kc3MgQUFBQUJEaDEyRERVUjIu
 Li4KKysgIFsuLi5dCisrCisrICAjIGluc2VydCB5b3VyIGVudHJ5IGFuZCB5b3UncmUgZG9u
 ZSA6KQorKyAgbGRhcGFkZCAtRCBiYWxibGFibGEgLXcgYmxlaCA8IGZpbGUubGRpZiAKKysg
 IAorKyAgYWxsIHN0YW5kYXJkIG9wdGlvbnMgY2FuIGJlIHByZXNlbnQgaW4gdGhlICdzc2hQ
 dWJsaWNLZXknIGF0dHJpYnV0ZS4KKysKKystIFdIWSA6CisrCisrICBTaW1wbHkgYmVjYXVz
 ZSwgaSB3YXMgbG9va2luZyBmb3IgYSB3YXkgdG8gY2VudHJhbGl6ZSBhbGwgc3lzYWRtaW5z
 IGF1dGhlbnRpY2F0aW9uLCBlYXNpbHksICB3aXRob3V0IGNvbXBsZXRlbHkgdXNpbmcgTERB
 UCAKKysgIGFzIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCAobGlrZSBwYW1fbGRhcCBldGMuLiku
 ICAKKysgIAorKyAgQWZ0ZXIgbG9va2luZyBpbnRvIEtlcmJlcm9zLCBTZWN1cklELCBhbmQg
 b3RoZXIgY2VudHJhbGl6ZWQgc2VjdXJlIGF1dGhlbnRpY2F0aW9ucyBzeXN0ZW1zLCB0aGUg
 dXNlIG9mIFJTQSBhbmQgTERBUCB0byBnZXQgCisrICBwdWJsaWMga2V5IGZvciBhdXRoZW50
 aWNhdGlvbiBhbGxvd3MgdXMgdG8gY29udHJvbCB3aG8gaGFzIGFjY2VzcyB0byB3aGljaCBz
 ZXJ2ZXIgKHRoZSB1c2VyIG5lZWRzIGFuIGFjY291bnQgYW5kIHRvIGJlIGluICdzdHJvbmdB
 dXRoZW50aWNhdGlvblVzZXInCisrICBvYmplY3RjbGFzcyB3aXRoaW4gTERBUCBhbmQgcGFy
 dCBvZiB0aGUgZ3JvdXAgdGhlIFNTSCBzZXJ2ZXIgaXMgaW4pLiAKKysKKysgIFBhc3N3b3Jk
 cyB1cGRhdGUgYXJlIG5vIGxvbmdlciBhIG5pZ2h0bWFyZSBmb3IgYSBzZXJ2ZXIgZmFybSAo
 a2V5IHBhaXIgcGFzc3BocmFzZSBpcyBzdG9yZWQgb24gZWFjaCB1c2VyJ3MgYm94IGFuZCBw
 cml2YXRlIGtleSBpcyBsb2NhbGx5IGVuY3J5cHRlZCB1c2luZyBoaXMgcGFzc3BocmFzZSAK
 KysgIHNvIGVhY2ggdXNlciBjYW4gY2hhbmdlIGl0IGFzIG11Y2ggYXMgaGUgd2FudHMpLiAK
 KysKKysgIEJsb2NraW5nIGEgdXNlciBhY2NvdW50IGNhbiBiZSBkb25lIGRpcmVjdGx5IGZy
 b20gdGhlIExEQVAgKGlmIHNzaGQgaXMgdXNpbmcgUlNBQXV0aCArIGxkYXAgb25seSkuCisr
 CisrLSBSVUxFUyA6ICAKKysgIEVudHJ5IGluIHRoZSBMREFQIHNlcnZlciBtdXN0IHJlc3Bl
 Y3QgJ3Bvc2l4QWNjb3VudCcgYW5kICdsZGFwUHVibGljS2V5JyB3aGljaCBhcmUgZGVmaW5l
 ZCBpbiBjb3JlLnNjaGVtYS4gCisrICBhbmQgdGhlIGFkZGl0aW9ubmFsIGxway5zY2hlbWEu
 CisrCisrICBUaGlzIHBhdGNoIGNvdWxkIGFsbG93IGEgc21vb3RoIHRyYW5zaXRpb24gYmV0
 d2VlbiBzdGFuZGFyZCBhdXRoICgvZXRjL3Bhc3N3ZCkgYW5kIGNvbXBsZXRlIExEQVAgYmFz
 ZWQgYXV0aGVudGljYXRpb24gCisrICAocGFtbGRhcCwgbnNzX2xkYXAsIGV0Yy4uKS4KKysK
 KysgIFRoaXMgY2FuIGJlIGFuIGFsdGVybmF0aXZlIHRvIG90aGVyIChvbGQ/L2V4cGVuc2l2
 ZT8pIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgKEtlcmJlcm9zL1NlY3VySUQvLi4pLgorKyAg
 CisrICBSZWZlcnJpbmcgdG8gc2NoZW1hIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBmaWxl
 IGlmIHVzZXIgJ2VhdScgaXMgb25seSBpbiBncm91cCAndW5peCcKKysgICdlYXUnIHdvdWxk
 IE9OTFkgYWNjZXNzICdzZXJ2ZXIxJywgJ3NlcnZlcjInLCAnc2VydmVyMycgQU5EICdzZXJ2
 ZXI0JyBCVVQgTk9UICdzZXJ2ZXI1Jy4KKysgIElmIHlvdSB0aGVuIG1vZGlmeSB0aGUgTERB
 UCAnbWFpbCcgZ3JvdXAgZW50cnkgdG8gYWRkICdtZW1iZXJVaWQ6IGVhdScgVEhFTiB1c2Vy
 ICdlYXUnIHdvdWxkIGJlIGFibGUKKysgIHRvIGxvZyBpbiAnc2VydmVyNScgKGkgaG9wZSB5
 b3UgZ290IHRoZSBpZGVhLCBteSBlbmdsaXNoIGlzIGJhZCA6KS4KKysKKysgIEVhY2ggc2Vy
 dmVyJ3Mgc3NoZCBpcyBwYXRjaGVkIGFuZCBjb25maWd1cmVkIHRvIGFzayB0aGUgcHVibGlj
 IGtleSBhbmQgdGhlIGdyb3VwIGluZm9zIGluIHRoZSBMREFQCisrICBzZXJ2ZXIuCisrICBX
 aGVuIHlvdSB3YW50IHRvIGFsbG93IGEgbmV3IHVzZXIgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhl
 IHNlcnZlciBwYXJjLCB5b3UganVzdCBhZGQgaGltIGFuIGFjY291bnQgb24gCisrICB5b3Vy
 IHNlcnZlcnMsIHlvdSBhZGQgaGlzIHB1YmxpYyBrZXkgaW50byBoaXMgZW50cnkgb24gdGhl
 IExEQVAgc2VydmVyLCBpdCdzIGRvbmUuIAorKworKyAgQmVjYXVzZSBzc2hkcyBhcmUgbG9v
 a2luZyBwdWJsaWMga2V5cyBpbnRvIHRoZSBMREFQIGRpcmVjdGx5IGluc3RlYWQgb2YgYSBm
 aWxlICgkSE9NRS8uc3NoL2F1dGhvcml6ZWRfa2V5cykuCisrCisrICBXaGVuIHRoZSB1c2Vy
 IG5lZWRzIHRvIGNoYW5nZSBoaXMgcGFzc3BocmFzZSBoZSBjYW4gZG8gaXQgZGlyZWN0bHkg
 ZnJvbSBoaXMgd29ya3N0YXRpb24gYnkgY2hhbmdpbmcgCisrICBoaXMgb3duIGtleSBzZXQg
 bG9jayBwYXNzcGhyYXNlLCBhbmQgYWxsIHNlcnZlcnMgYXJlIGF1dG9tYXRpY2FsbHkgYXdh
 cmUuCisrIAorKyAgV2l0aCBhIENBUkVGVUwgTERBUCBzZXJ2ZXIgY29uZmlndXJhdGlvbiB5
 b3UgY291bGQgYWxsb3cgYSB1c2VyIHRvIGFkZC9kZWxldGUvbW9kaWZ5IGhpcyBvd24gZW50
 cnkgaGltc2VsZgorKyAgc28gaGUgY2FuIGFkZC9tb2RpZnkvZGVsZXRlIGhpbXNlbGYgaGlz
 IHB1YmxpYyBrZXkgd2hlbiBuZWVkZWQuCisrCisrrSBGTEFXUyA6CisrICBMREFQIG11c3Qg
 YmUgd2VsbCBjb25maWd1cmVkLCBnZXR0aW5nIHRoZSBwdWJsaWMga2V5IG9mIHNvbWUgdXNl
 ciBpcyBub3QgYSBwcm9ibGVtLCBidXQgaWYgYW5vbnltb3VzIExEQVAgCisrICBhbGxvdyB3
 cml0ZSB0byB1c2VycyBkbiwgc29tZWJvZHkgY291bGQgcmVwbGFjZSBzb21ldXNlcidzIHB1
 YmxpYyBrZXkgYnkgaXRzIG93biBhbmQgaW1wZXJzb25hdGUgc29tZSAKKysgIG9mIHlvdXIg
 dXNlcnMgaW4gYWxsIHlvdXIgc2VydmVyIGZhcm0gYmUgVkVSWSBDQVJFRlVMLgorKyAgCisr
 ICBNSVRNIGF0dGFjayB3aGVuIHNzaGQgaXMgcmVxdWVzdGluZyB0aGUgcHVibGljIGtleSwg
 Y291bGQgbGVhZCB0byBhIGNvbXByb21pc2Ugb2YgeW91ciBzZXJ2ZXJzIGFsbG93aW5nIGxv
 Z2luIAorKyAgYXMgdGhlIGltcGVyc29ubmF0ZWQgdXNlci4KKysKKysgIElmIExEQVAgc2Vy
 dmVyIGlzIGRvd24gdGhlbiwgZmFsbGJhY2sgb24gcGFzc3dkIGF1dGguCisrICAKKysgIHRo
 ZSBsZGFwIGNvZGUgcGFydCBoYXMgbm90IGJlZW4gd2VsbCBhdWRpdGVkIHlldC4KKysKKyst
 IExEQVAgVVNFUiBFTlRSWSBFWEFNUExFUyAoTERJRiBGb3JtYXQsIGxvb2sgaW4gdXNlcnMu
 bGRpZikKKysgICAgLS0tIENVVCBIRVJFIC0tLQorKyAgICBkbjogdWlkPWpkb2Usb3U9dXNl
 cnMsZGM9Zm9vYmFyLGRjPW5ldAorKyAgICBvYmplY3RjbGFzczogdG9wCisrICAgIG9iamVj
 dGNsYXNzOiBwZXJzb24KKysgICAgb2JqZWN0Y2xhc3M6IG9yZ2FuaXphdGlvbmFsUGVyc29u
 CisrICAgIG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQKKysgICAgb2JqZWN0Y2xhc3M6IGxk
 YXBQdWJsaWNLZXkKKysgICAgZGVzY3JpcHRpb246IE15IGFjY291bnQKKysgICAgY246IEpv
 aG4gRG9lCisrICAgIHNuOiBKb2huIERvZQorKyAgICB1aWQ6IGpkb2UKKysgICAgdWlkTnVt
 YmVyOiAxMDAKKysgICAgZ2lkTnVtYmVyOiAxMDAKKysgICAgaG9tZURpcmVjdG9yeTogL2hv
 bWUvamRvZQorKyAgICBzc2hQdWJsaWNLZXk6IHNzaC1kc3MgQUFBQUIzTnphQzFrYzNNQUFB
 RUJBT3ZMOHBSRVVnOXdTeS84K2hRSjU0WUYzQVhrQjBPWnJYQi4uLi4KKysgICAgWy4uLl0K
 KysgICAgLS0tIENVVCBIRVJFIC0tLQorKworKy0gTERBUCBHUk9VUCBFTlRSWSBFWEFNUExF
 UyAoTERJRiBGb3JtYXQsIGxvb2sgaW4gZ3JvdXBzLmxkaWYpCisrICAgIC0tLSBDVVQgSEVS
 RSAtLS0KKysgICAgZG46IGNuPXVuaXgsb3U9Z3JvdXBzLGRjPWN1Y2tvb3MsZGM9bmV0Cisr
 ICAgIG9iamVjdGNsYXNzOiB0b3AKKysgICAgb2JqZWN0Y2xhc3M6IHBvc2l4R3JvdXAKKysg
 ICAgZGVzY3JpcHRpb246IFVuaXggYmFzZWQgc2VydmVycyBncm91cAorKyAgICBjbjogdW5p
 eAorKyAgICBnaWROdW1iZXI6IDEwMDIKKysgICAgbWVtYmVyVWlkOiBqZG9lCisrICAgIG1l
 bWJlclVpZDogdXNlcjEKKysgICAgbWVtYmVyVWlkOiB1c2VyMgorKyAgICBbLi4uXQorKyAg
 ICAtLS0gQ1VUIEhFUkUgLS0tCisrCisrPj4gRllJOiA8PCAKKytNdWx0aXBsZSAnc3NoUHVi
 bGljS2V5JyBpbiBhIHVzZXIgZW50cnkgYXJlIGFsbG93ZWQsIGFzIHdlbGwgYXMgbXVsdGlw
 bGUgJ21lbWJlclVpZCcgYXR0cmlidXRlcyBpbiBhIGdyb3VwIGVudHJ5CisrCisrLSBDT01Q
 SUxJTkc6CisrICAxLiBBcHBseSB0aGUgcGF0Y2gKKysgIDIuIC4vY29uZmlndXJlIC0td2l0
 aC15b3VyLW9wdGlvbnMgLS13aXRoLWxkYXA9L3ByZWZpeC90by9sZGFwX2xpYnNfYW5kX2lu
 Y2x1ZGVzCisrICAzLiBtYWtlCisrICA0LiBpdCdzIGRvbmUuCisrCisrLSBCTEEgOgorKyAg
 SSBob3BlIHRoaXMgY291bGQgaGVscCwgYW5kIGkgaG9wZSB0byBiZSBjbGVhciBlbm91Z2gs
 LCBvciBnaXZlIGlkZWFzLiAgcXVlc3Rpb25zL2NvbW1lbnRzL2ltcHJvdmVtZW50cyBhcmUg
 d2VsY29tZS4KKysgIAorKy0gVE9ETyA6CisrICBSZWRlc2lnbiBkaWZmZXJlbnRseS4KKysK
 KystIERPQ1MvTElOSyA6CisrICBodHRwOi8vcGFjc2VjLmpwL2NvcmUwNS9wc2owNS1iYXJp
 c2FuaS1lbi5wZGYKKysgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVkdS9wcm9qZWN0cy9vcGVu
 c3NoLWxway8KKysgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVkdS9wcm9qZWN0cy9zc2hnYXRl
 LworKyAgaHR0cDovL2Rldi5pbnZlcnNlcGF0aC5jb20vdHJhYy9vcGVuc3NoLWxwaworKyAg
 aHR0cDovL2xhbS5zZi5uZXQvICggaHR0cDovL2xhbS5zb3VyY2Vmb3JnZS5uZXQvZG9jdW1l
 bnRhdGlvbi9zdXBwb3J0ZWRTY2hlbWFzLmh0bSApCisrCisrLSBDT05UUklCVVRPUlMvSURF
 QVMvR1JFRVRTIDoKKysgIC0gRmFsayBTaWVtb25zbWVpZXIuCisrICAtIEphY29iIFJpZWYu
 CisrICAtIE1pY2hhZWwgRHVyY2hncmFmLgorKyAgLSBmcmVkZXJpYyBwZXRlcnMuCisrICAt
 IEZpbmxheSBkb2JiaWUuCisrICAtIFN0ZWZhbiBGaXNoZXIuCisrICAtIFJvYmluIEguIEpv
 aG5zb24uCisrICAtIEFkcmlhbiBCcmlkZ2V0dC4KKysKKystIENPTlRBQ1QgOgorKyAgLSBF
 cmljIEFVR0UgPGVhdUBwaGVhci5vcmc+CisrICAtIEFuZHJlYSBCYXJpc2FuaSA8YW5kcmVh
 QGludmVyc2VwYXRoLmNvbT4KK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhj
 bHVkZSAnKi5yZWonIHNlcnZjb25mLmMgc2VydmNvbmYuYworLS0tIHNlcnZjb25mLmMJMjAw
 OC0wNy0wMyAyMDo1MToxMi4wMDAwMDAwMDAgLTA3MDAKKysrKyBzZXJ2Y29uZi5jCTIwMDgt
 MDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAtNDIsNiArNDIsMTAgQEAKKyAj
 aW5jbHVkZSAiY2hhbm5lbHMuaCIKKyAjaW5jbHVkZSAiZ3JvdXBhY2Nlc3MuaCIKKyAKKysj
 aWZkZWYgV0lUSF9MREFQX1BVQktFWQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIgorKyNlbmRp
 ZgorKworIHN0YXRpYyB2b2lkIGFkZF9saXN0ZW5fYWRkcihTZXJ2ZXJPcHRpb25zICosIGNo
 YXIgKiwgaW50KTsKKyBzdGF0aWMgdm9pZCBhZGRfb25lX2xpc3Rlbl9hZGRyKFNlcnZlck9w
 dGlvbnMgKiwgY2hhciAqLCBpbnQpOworIAorQEAgLTEyOCw2ICsxMzIsMjUgQEAKKyAJb3B0
 aW9ucy0+YWRtX2ZvcmNlZF9jb21tYW5kID0gTlVMTDsKKyAJb3B0aW9ucy0+Y2hyb290X2Rp
 cmVjdG9yeSA9IE5VTEw7CisgCW9wdGlvbnMtPnplcm9fa25vd2xlZGdlX3Bhc3N3b3JkX2F1
 dGhlbnRpY2F0aW9uID0gLTE7CisrI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKKysgCS8qIFhY
 WCBkaXJ0eSAqLworKyAJb3B0aW9ucy0+bHBrLmxkID0gTlVMTDsKKysgCW9wdGlvbnMtPmxw
 ay5vbiA9IC0xOworKyAJb3B0aW9ucy0+bHBrLnNlcnZlcnMgPSBOVUxMOworKyAJb3B0aW9u
 cy0+bHBrLnVfYmFzZWRuID0gTlVMTDsKKysgCW9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IE5V
 TEw7CisrIAlvcHRpb25zLT5scGsuYmluZGRuID0gTlVMTDsKKysgCW9wdGlvbnMtPmxway5i
 aW5kcHcgPSBOVUxMOworKyAJb3B0aW9ucy0+bHBrLnNncm91cCA9IE5VTEw7CisrIAlvcHRp
 b25zLT5scGsuZmlsdGVyID0gTlVMTDsKKysgCW9wdGlvbnMtPmxway5mZ3JvdXAgPSBOVUxM
 OworKyAJb3B0aW9ucy0+bHBrLmxfY29uZiA9IE5VTEw7CisrIAlvcHRpb25zLT5scGsudGxz
 ID0gLTE7CisrIAlvcHRpb25zLT5scGsuYl90aW1lb3V0LnR2X3NlYyA9IC0xOworKyAJb3B0
 aW9ucy0+bHBrLnNfdGltZW91dC50dl9zZWMgPSAtMTsKKysgCW9wdGlvbnMtPmxway5mbGFn
 cyA9IEZMQUdfRU1QVFk7CisrI2VuZGlmCisrCisgfQorIAorIHZvaWQKK0BAIC0yNjEsNiAr
 Mjg0LDMyIEBACisgCQlvcHRpb25zLT5wZXJtaXRfdHVuID0gU1NIX1RVTk1PREVfTk87Cisg
 CWlmIChvcHRpb25zLT56ZXJvX2tub3dsZWRnZV9wYXNzd29yZF9hdXRoZW50aWNhdGlvbiA9
 PSAtMSkKKyAJCW9wdGlvbnMtPnplcm9fa25vd2xlZGdlX3Bhc3N3b3JkX2F1dGhlbnRpY2F0
 aW9uID0gMDsKKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQorKwlpZiAob3B0aW9ucy0+bHBr
 Lm9uID09IC0xKQorKwkgICAgb3B0aW9ucy0+bHBrLm9uID0gX0RFRkFVTFRfTFBLX09OOwor
 KwlpZiAob3B0aW9ucy0+bHBrLnNlcnZlcnMgPT0gTlVMTCkKKysJICAgIG9wdGlvbnMtPmxw
 ay5zZXJ2ZXJzID0gX0RFRkFVTFRfTFBLX1NFUlZFUlM7CisrCWlmIChvcHRpb25zLT5scGsu
 dV9iYXNlZG4gPT0gTlVMTCkKKysJICAgIG9wdGlvbnMtPmxway51X2Jhc2VkbiA9IF9ERUZB
 VUxUX0xQS19VRE47CisrCWlmIChvcHRpb25zLT5scGsuZ19iYXNlZG4gPT0gTlVMTCkKKysJ
 ICAgIG9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IF9ERUZBVUxUX0xQS19HRE47CisrCWlmIChv
 cHRpb25zLT5scGsuYmluZGRuID09IE5VTEwpCisrCSAgICBvcHRpb25zLT5scGsuYmluZGRu
 ID0gX0RFRkFVTFRfTFBLX0JJTkRETjsKKysJaWYgKG9wdGlvbnMtPmxway5iaW5kcHcgPT0g
 TlVMTCkKKysJICAgIG9wdGlvbnMtPmxway5iaW5kcHcgPSBfREVGQVVMVF9MUEtfQklORFBX
 OworKwlpZiAob3B0aW9ucy0+bHBrLnNncm91cCA9PSBOVUxMKQorKwkgICAgb3B0aW9ucy0+
 bHBrLnNncm91cCA9IF9ERUZBVUxUX0xQS19TR1JPVVA7CisrCWlmIChvcHRpb25zLT5scGsu
 ZmlsdGVyID09IE5VTEwpCisrCSAgICBvcHRpb25zLT5scGsuZmlsdGVyID0gX0RFRkFVTFRf
 TFBLX0ZJTFRFUjsKKysJaWYgKG9wdGlvbnMtPmxway50bHMgPT0gLTEpCisrCSAgICBvcHRp
 b25zLT5scGsudGxzID0gX0RFRkFVTFRfTFBLX1RMUzsKKysJaWYgKG9wdGlvbnMtPmxway5i
 X3RpbWVvdXQudHZfc2VjID09IC0xKQorKwkgICAgb3B0aW9ucy0+bHBrLmJfdGltZW91dC50
 dl9zZWMgPSBfREVGQVVMVF9MUEtfQlRJTUVPVVQ7CisrCWlmIChvcHRpb25zLT5scGsuc190
 aW1lb3V0LnR2X3NlYyA9PSAtMSkKKysJICAgIG9wdGlvbnMtPmxway5zX3RpbWVvdXQudHZf
 c2VjID0gX0RFRkFVTFRfTFBLX1NUSU1FT1VUOworKwlpZiAob3B0aW9ucy0+bHBrLmxfY29u
 ZiA9PSBOVUxMKQorKwkgICAgb3B0aW9ucy0+bHBrLmxfY29uZiA9IF9ERUZBVUxUX0xQS19M
 RFA7CisrI2VuZGlmCisgCisgCS8qIFR1cm4gcHJpdmlsZWdlIHNlcGFyYXRpb24gb24gYnkg
 ZGVmYXVsdCAqLworIAlpZiAodXNlX3ByaXZzZXAgPT0gLTEpCitAQCAtMzA3LDYgKzM1Niwx
 MiBAQAorIAlzVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiwgc0FsbG93QWdlbnRGb3J3YXJkaW5n
 LAorCXNaZXJvS25vd2xlZGdlUGFzc3dvcmRBdXRoZW50aWNhdGlvbiwKKyAJc0RlcHJlY2F0
 ZWQsIHNVbnN1cHBvcnRlZAorKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCisrCSxzTGRhcFB1
 YmxpY2tleSwgc0xkYXBTZXJ2ZXJzLCBzTGRhcFVzZXJETgorKwksc0xkYXBHcm91cEROLCBz
 QmluZEROLCBzQmluZFB3LCBzTXlHcm91cAorKwksc0xkYXBGaWx0ZXIsIHNGb3JjZVRMUywg
 c0JpbmRUaW1lb3V0CisrCSxzU2VhcmNoVGltZW91dCwgc0xkYXBDb25mCisrI2VuZGlmCisg
 fSBTZXJ2ZXJPcENvZGVzOworIAorICNkZWZpbmUgU1NIQ0ZHX0dMT0JBTAkweDAxCS8qIGFs
 bG93ZWQgaW4gbWFpbiBzZWN0aW9uIG9mIHNzaGRfY29uZmlnICovCitAQCAtNDE3LDYgKzQ3
 MiwyMCBAQAorIAl7ICJjbGllbnRhbGl2ZWNvdW50bWF4Iiwgc0NsaWVudEFsaXZlQ291bnRN
 YXgsIFNTSENGR19HTE9CQUwgfSwKKyAJeyAiYXV0aG9yaXplZGtleXNmaWxlIiwgc0F1dGhv
 cml6ZWRLZXlzRmlsZSwgU1NIQ0ZHX0dMT0JBTCB9LAorIAl7ICJhdXRob3JpemVka2V5c2Zp
 bGUyIiwgc0F1dGhvcml6ZWRLZXlzRmlsZTIsIFNTSENGR19HTE9CQUwgfSwKKysjaWZkZWYg
 V0lUSF9MREFQX1BVQktFWQorKwl7IF9ERUZBVUxUX0xQS19UT0tFTiwgc0xkYXBQdWJsaWNr
 ZXksIFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9TUlZfVE9LRU4sIHNMZGFwU2Vy
 dmVycywgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX1VTUl9UT0tFTiwgc0xkYXBV
 c2VyRE4sIFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9HUlBfVE9LRU4sIHNMZGFw
 R3JvdXBETiwgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX0JETl9UT0tFTiwgc0Jp
 bmRETiwgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX0JQV19UT0tFTiwgc0JpbmRQ
 dywgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX01ZR19UT0tFTiwgc015R3JvdXAs
 IFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9GSUxfVE9LRU4sIHNMZGFwRmlsdGVy
 LCBTU0hDRkdfR0xPQkFMIH0sCisrCXsgX0RFRkFVTFRfVExTX1RPS0VOLCBzRm9yY2VUTFMs
 IFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9CVElfVE9LRU4sIHNCaW5kVGltZW91
 dCwgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX1NUSV9UT0tFTiwgc1NlYXJjaFRp
 bWVvdXQsIFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9MRFBfVE9LRU4sIHNMZGFw
 Q29uZiwgU1NIQ0ZHX0dMT0JBTCB9LAorKyNlbmRpZgorIAl7ICJ1c2Vwcml2aWxlZ2VzZXBh
 cmF0aW9uIiwgc1VzZVByaXZpbGVnZVNlcGFyYXRpb24sIFNTSENGR19HTE9CQUx9LAorIAl7
 ICJhY2NlcHRlbnYiLCBzQWNjZXB0RW52LCBTU0hDRkdfR0xPQkFMIH0sCisgCXsgInBlcm1p
 dHR1bm5lbCIsIHNQZXJtaXRUdW5uZWwsIFNTSENGR19HTE9CQUwgfSwKK0BAIC0xMzA3LDYg
 KzEzNzYsMTA3IEBACisgCQl3aGlsZSAoYXJnKQorIAkJICAgIGFyZyA9IHN0cmRlbGltKCZj
 cCk7CisgCQlicmVhazsKKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQorKwljYXNlIHNMZGFw
 UHVibGlja2V5OgorKwkJaW50cHRyID0gJm9wdGlvbnMtPmxway5vbjsKKysJCWdvdG8gcGFy
 c2VfZmxhZzsKKysJY2FzZSBzTGRhcFNlcnZlcnM6CisrCQkvKiBhcmcgPSBzdHJkZWxpbSgm
 Y3ApOyAqLworKwkJcCA9IGxpbmU7CisrCQl3aGlsZSgqcCsrKTsKKysJCWFyZyA9IHA7Cisr
 CQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6
 IG1pc3NpbmcgbGRhcCBzZXJ2ZXIiLGZpbGVuYW1lLGxpbmVudW0pOworKwkJYXJnW3N0cmxl
 bihhcmcpXSA9ICdcMCc7CisrCQlpZiAoKG9wdGlvbnMtPmxway5zZXJ2ZXJzID0gbGRhcF9w
 YXJzZV9zZXJ2ZXJzKGFyZykpID09IE5VTEwpCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6
 IGVycm9yIGluIGxkYXAgc2VydmVycyIsIGZpbGVuYW1lLCBsaW5lbnVtKTsKKysJCW1lbXNl
 dChhcmcsMCxzdHJsZW4oYXJnKSk7CisrCQlicmVhazsKKysJY2FzZSBzTGRhcFVzZXJETjoK
 KysJCWFyZyA9IGNwOworKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQorKwkJICAgIGZh
 dGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVyIixmaWxlbmFtZSxsaW5lbnVt
 KTsKKysJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOworKwkJb3B0aW9ucy0+bHBrLnVfYmFz
 ZWRuID0geHN0cmR1cChhcmcpOworKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKKysJ
 CWJyZWFrOworKwljYXNlIHNMZGFwR3JvdXBETjoKKysJCWFyZyA9IGNwOworKwkJaWYgKCFh
 cmcgfHwgKmFyZyA9PSAnXDAnKQorKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5n
 IGxkYXAgc2VydmVyIixmaWxlbmFtZSxsaW5lbnVtKTsKKysJCWFyZ1tzdHJsZW4oYXJnKV0g
 PSAnXDAnOworKwkJb3B0aW9ucy0+bHBrLmdfYmFzZWRuID0geHN0cmR1cChhcmcpOworKwkJ
 bWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKKysJCWJyZWFrOworKwljYXNlIHNCaW5kRE46
 CisrCQlhcmcgPSBjcDsKKysJCWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykKKysJCSAgICBm
 YXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBiaW5kZG4iLGZpbGVuYW1lLGxpbmVudW0pOwor
 KwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7CisrCQlvcHRpb25zLT5scGsuYmluZGRuID0g
 eHN0cmR1cChhcmcpOworKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKKysJCWJyZWFr
 OworKwljYXNlIHNCaW5kUHc6CisrCQlhcmcgPSBjcDsKKysJCWlmICghYXJnIHx8ICphcmcg
 PT0gJ1wwJykKKysJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBiaW5kcHciLGZp
 bGVuYW1lLGxpbmVudW0pOworKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7CisrCQlvcHRp
 b25zLT5scGsuYmluZHB3ID0geHN0cmR1cChhcmcpOworKwkJbWVtc2V0KGFyZywwLHN0cmxl
 bihhcmcpKTsKKysJCWJyZWFrOworKwljYXNlIHNNeUdyb3VwOgorKwkJYXJnID0gY3A7Cisr
 CQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6
 IG1pc3NpbmcgZ3JvdXBuYW1lIixmaWxlbmFtZSwgbGluZW51bSk7CisrCQlhcmdbc3RybGVu
 KGFyZyldID0gJ1wwJzsKKysJCW9wdGlvbnMtPmxway5zZ3JvdXAgPSB4c3RyZHVwKGFyZyk7
 CisrCQlpZiAob3B0aW9ucy0+bHBrLnNncm91cCkKKysJCSAgICBvcHRpb25zLT5scGsuZmdy
 b3VwID0gbGRhcF9wYXJzZV9ncm91cHMob3B0aW9ucy0+bHBrLnNncm91cCk7CisrCQltZW1z
 ZXQoYXJnLDAsc3RybGVuKGFyZykpOworKwkJYnJlYWs7CisrCWNhc2Ugc0xkYXBGaWx0ZXI6
 CisrCQlhcmcgPSBjcDsKKysJCWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykKKysJCSAgICBm
 YXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBmaWx0ZXIiLGZpbGVuYW1lLCBsaW5lbnVtKTsK
 KysJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOworKwkJb3B0aW9ucy0+bHBrLmZpbHRlciA9
 IHhzdHJkdXAoYXJnKTsKKysJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7CisrCQlicmVh
 azsKKysJY2FzZSBzRm9yY2VUTFM6CisrCQlpbnRwdHIgPSAmb3B0aW9ucy0+bHBrLnRsczsK
 KysJCWFyZyA9IHN0cmRlbGltKCZjcCk7CisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcp
 CisrCQkJZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgeWVzL25vIGFyZ3VtZW50LiIsCisr
 CQkJICAgIGZpbGVuYW1lLCBsaW5lbnVtKTsKKysJCXZhbHVlID0gMDsJLyogc2lsZW5jZSBj
 b21waWxlciAqLworKwkJaWYgKHN0cmNtcChhcmcsICJ5ZXMiKSA9PSAwKQorKwkJCXZhbHVl
 ID0gMTsKKysJCWVsc2UgaWYgKHN0cmNtcChhcmcsICJubyIpID09IDApCisrCQkJdmFsdWUg
 PSAwOworKwkJZWxzZSBpZiAoc3RyY21wKGFyZywgInRyeSIpID09IDApCisrCQkJdmFsdWUg
 PSAtMTsKKysJCWVsc2UKKysJCQlmYXRhbCgiJXMgbGluZSAlZDogQmFkIHllcy9ubyBhcmd1
 bWVudDogJXMiLAorKwkJCQlmaWxlbmFtZSwgbGluZW51bSwgYXJnKTsKKysJCWlmICgqaW50
 cHRyID09IC0xKQorKwkJCSppbnRwdHIgPSB2YWx1ZTsKKysJCWJyZWFrOworKwljYXNlIHNC
 aW5kVGltZW91dDoKKysJCWludHB0ciA9IChpbnQgKikgJm9wdGlvbnMtPmxway5iX3RpbWVv
 dXQudHZfc2VjOworKwkJZ290byBwYXJzZV9pbnQ7CisrCWNhc2Ugc1NlYXJjaFRpbWVvdXQ6
 CisrCQlpbnRwdHIgPSAoaW50ICopICZvcHRpb25zLT5scGsuc190aW1lb3V0LnR2X3NlYzsK
 KysJCWdvdG8gcGFyc2VfaW50OworKwkJYnJlYWs7CisrCWNhc2Ugc0xkYXBDb25mOgorKwkJ
 YXJnID0gY3A7CisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCisrCQkgICAgZmF0YWwo
 IiVzIGxpbmUgJWQ6IG1pc3NpbmcgTHBrTGRhcENvbmYiLCBmaWxlbmFtZSwgbGluZW51bSk7
 CisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsKKysJCW9wdGlvbnMtPmxway5sX2NvbmYg
 PSB4c3RyZHVwKGFyZyk7CisrCQltZW1zZXQoYXJnLCAwLCBzdHJsZW4oYXJnKSk7CisrCQli
 cmVhazsKKysjZW5kaWYKKyAKKyAJZGVmYXVsdDoKKyAJCWZhdGFsKCIlcyBsaW5lICVkOiBN
 aXNzaW5nIGhhbmRsZXIgZm9yIG9wY29kZSAlcyAoJWQpIiwKK2RpZmYgLU51YXIgLS1leGNs
 dWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNlcnZjb25mLmggc2VydmNvbmYuaAor
 LS0tIHNlcnZjb25mLmgJMjAwOC0wNi0xMCAwNjowMTo1MS4wMDAwMDAwMDAgLTA3MDAKKysr
 KyBzZXJ2Y29uZi5oCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAt
 MTYsNiArMTYsMTAgQEAKKyAjaWZuZGVmIFNFUlZDT05GX0gKKyAjZGVmaW5lIFNFUlZDT05G
 X0gKKyAKKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQorKyNpbmNsdWRlICJsZGFwYXV0aC5o
 IgorKyNlbmRpZgorKworICNkZWZpbmUgTUFYX1BPUlRTCQkyNTYJLyogTWF4ICMgcG9ydHMu
 ICovCisgCisgI2RlZmluZSBNQVhfQUxMT1dfVVNFUlMJCTI1NgkvKiBNYXggIyB1c2VycyBv
 biBhbGxvdyBsaXN0LiAqLworQEAgLTE0Nyw2ICsxNTEsOSBAQAorIAlpbnQJdXNlX3BhbTsJ
 CS8qIEVuYWJsZSBhdXRoIHZpYSBQQU0gKi8KKyAKKyAJaW50CXBlcm1pdF90dW47CisrI2lm
 ZGVmIFdJVEhfTERBUF9QVUJLRVkKKysgICAgICAgIGxkYXBfb3B0X3QgbHBrOworKyNlbmRp
 ZgorIAorIAlpbnQJbnVtX3Blcm1pdHRlZF9vcGVuczsKKyAKK2RpZmYgLU51YXIgLS1leGNs
 dWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNzaGQuYyBzc2hkLmMKKy0tLSBzc2hk
 LmMJMjAwOC0wNy0xMSAwMDozNjo0OS4wMDAwMDAwMDAgLTA3MDAKKysrKyBzc2hkLmMJMjAw
 OC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0xMjcsNiArMTI3LDEwIEBA
 CisgaW50IGRlbnlfc2V2ZXJpdHk7CisgI2VuZGlmIC8qIExJQldSQVAgKi8KKyAKKysjaWZk
 ZWYgV0lUSF9MREFQX1BVQktFWQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIgorKyNlbmRpZgor
 KworICNpZm5kZWYgT19OT0NUVFkKKyAjZGVmaW5lIE9fTk9DVFRZCTAKKyAjZW5kaWYKK0BA
 IC0xNDg0LDYgKzE0ODgsMTYgQEAKKyAJCWV4aXQoMSk7CisgCX0KKyAKKysjaWZkZWYgV0lU
 SF9MREFQX1BVQktFWQorKyAgICAvKiBsZGFwX29wdGlvbnNfcHJpbnQoJm9wdGlvbnMubHBr
 KTsgKi8KKysgICAgLyogWFhYIGluaXRpYWxpemUvY2hlY2sgbGRhcCBjb25uZWN0aW9uIGFu
 ZCBzZXQgKkxEICovCisrICAgIGlmIChvcHRpb25zLmxway5vbikgeworKyAgICAgICAgaWYg
 KG9wdGlvbnMubHBrLmxfY29uZiAmJiAobGRhcF9wYXJzZV9sY29uZigmb3B0aW9ucy5scGsp
 IDwgMCkgKQorKyAgICAgICAgICAgIGVycm9yKCJbTERBUF0gY291bGQgbm90IHBhcnNlICVz
 Iiwgb3B0aW9ucy5scGsubF9jb25mKTsKKysgICAgICAgIGlmIChsZGFwX2Nvbm5lY3QoJm9w
 dGlvbnMubHBrKSA8IDApCisrICAgICAgICAgICAgZXJyb3IoIltMREFQXSBjb3VsZCBub3Qg
 aW5pdGlhbGl6ZSBsZGFwIGNvbm5lY3Rpb24iKTsKKysgICAgfQorKyNlbmRpZgorIAlkZWJ1
 Zygic3NoZCB2ZXJzaW9uICUuMTAwcyIsIFNTSF9SRUxFQVNFKTsKKyAKKyAJLyogU3RvcmUg
 cHJpdmlsZWdlIHNlcGFyYXRpb24gdXNlciBmb3IgbGF0ZXIgdXNlIGlmIHJlcXVpcmVkLiAq
 LworZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc3No
 ZF9jb25maWcgc3NoZF9jb25maWcKKy0tLSBzc2hkX2NvbmZpZwkyMDA4LTA3LTAyIDA1OjM1
 OjQzLjAwMDAwMDAwMCAtMDcwMAorKysrIHNzaGRfY29uZmlnCTIwMDgtMDgtMjMgMTU6MDI6
 NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAtMTA5LDYgKzEwOSwyMSBAQAorICMgbm8gZGVmYXVs
 dCBiYW5uZXIgcGF0aAorICNCYW5uZXIgbm9uZQorIAorKyMgaGVyZSBhcmUgdGhlIG5ldyBw
 YXRjaGVkIGxkYXAgcmVsYXRlZCB0b2tlbnMKKysjIGVudHJpZXMgaW4geW91ciBMREFQIG11
 c3QgaGF2ZSBwb3NpeEFjY291bnQgJiBsZGFwUHVibGljS2V5IG9iamVjdGNsYXNzCisrI1Vz
 ZUxQSyB5ZXMKKysjTHBrTGRhcENvbmYgL2V0Yy9sZGFwLmNvbmYKKysjTHBrU2VydmVycyAg
 bGRhcDovLzEwLjEuNy4xLyBsZGFwOi8vMTAuMS43LjIvCisrI0xwa1VzZXJETiAgIG91PXVz
 ZXJzLGRjPXBoZWFyLGRjPW9yZworKyNMcGtHcm91cEROICBvdT1ncm91cHMsZGM9cGhlYXIs
 ZGM9b3JnCisrI0xwa0JpbmRETiBjbj1NYW5hZ2VyLGRjPXBoZWFyLGRjPW9yZworKyNMcGtC
 aW5kUHcgc2VjcmV0CisrI0xwa1NlcnZlckdyb3VwIG1haWwKKysjTHBrRmlsdGVyIChob3N0
 QWNjZXNzPW1hc3Rlci5waGVhci5vcmcpCisrI0xwa0ZvcmNlVExTIG5vCisrI0xwa1NlYXJj
 aFRpbWVsaW1pdCAzCisrI0xwa0JpbmRUaW1lbGltaXQgMworKworICMgb3ZlcnJpZGUgZGVm
 YXVsdCBvZiBubyBzdWJzeXN0ZW1zCisgU3Vic3lzdGVtCXNmdHAJL3Vzci9saWJleGVjL3Nm
 dHAtc2VydmVyCisgCitkaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUg
 JyoucmVqJyBzc2hkX2NvbmZpZy41IHNzaGRfY29uZmlnLjUKKy0tLSBzc2hkX2NvbmZpZy41
 CTIwMDgtMDctMDIgMDU6MzU6NDMuMDAwMDAwMDAwIC0wNzAwCisrKysgc3NoZF9jb25maWcu
 NQkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAorQEAgLTEwMTAsNiArMTAx
 MCw2MiBAQAorIHByb2dyYW0uCisgVGhlIGRlZmF1bHQgaXMKKyAuUGEgL3Vzci9YMTFSNi9i
 aW4veGF1dGggLgorKy5JdCBDbSBVc2VMUEsKKytTcGVjaWZpZXMgd2hldGhlciBMREFQIHB1
 YmxpYyBrZXkgcmV0cmlldmFsIG11c3QgYmUgdXNlZCBvciBub3QuIEl0IGFsbG93CisrYW4g
 ZWFzeSBjZW50cmFsaXNhdGlvbiBvZiBwdWJsaWMga2V5cyB3aXRoaW4gYW4gTERBUCBkaXJl
 Y3RvcnkuIFRoZSBhcmd1bWVudCBtdXN0IGJlCisrLkRxIHllcworK29yCisrLkRxIG5vIC4K
 KysuSXQgQ20gTHBrTGRhcENvbmYKKytTcGVjaWZpZXMgd2hldGhlciBMREFQIFB1YmxpYyBr
 ZXlzIHNob3VsZCBwYXJzZSB0aGUgc3BlY2lmaWVkIGxkYXAuY29uZiBmaWxlCisraW5zdGVh
 ZCBvZiBzc2hkX2NvbmZpZyBUb2tlbnMuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgdmFsaWQg
 cGF0aCB0byBhbiBsZGFwLmNvbmYKKytmaWxlIGxpa2UKKysuUGEgL2V0Yy9sZGFwLmNvbmYK
 KysuSXQgQ20gTHBrU2VydmVycworK1NwZWNpZmllcyBMREFQIG9uZSBvciBtb3JlIFs6c3Bh
 Y2U6XSBzZXBhcmF0ZWQgc2VydmVyJ3MgdXJsIHRoZSBmb2xsb3dpbmcgZm9ybSBtYXkgYmUg
 dXNlZDoKKysuUHAKKytMcGtTZXJ2ZXJzIGxkYXBzOi8vMTI3LjAuMC4xIGxkYXA6Ly8xMjcu
 MC4wLjIgbGRhcDovLzEyNy4wLjAuMworKy5JdCBDbSBMcGtVc2VyRE4KKytTcGVjaWZpZXMg
 dGhlIExEQVAgdXNlciBETi4KKysuUHAKKytMcGtVc2VyRE4gb3U9dXNlcnMsZGM9cGhlYXIs
 ZGM9b3JnCisrLkl0IENtIExwa0dyb3VwRE4KKytTcGVjaWZpZXMgdGhlIExEQVAgZ3JvdXBz
 IEROLgorKy5QcAorK0xwa0dyb3VwRE4gb3U9Z3JvdXBzLGRjPXBoZWFyLGRjPW9yZworKy5J
 dCBDbSBMcGtCaW5kRE4KKytTcGVjaWZpZXMgdGhlIExEQVAgYmluZCBETiB0byB1c2UgaWYg
 bmVjZXNzYXJ5LgorKy5QcAorK0xwa0JpbmRETiBjbj1NYW5hZ2VyLGRjPXBoZWFyLGRjPW9y
 ZworKy5JdCBDbSBMcGtCaW5kUHcKKytTcGVjaWZpZXMgdGhlIExEQVAgYmluZCBjcmVkZW50
 aWFsLiAKKysuUHAKKytMcGtCaW5kUHcgc2VjcmV0CisrLkl0IENtIExwa1NlcnZlckdyb3Vw
 CisrU3BlY2lmaWVzIG9uZSBvciBtb3JlIFs6c3BhY2U6XSBzZXBhcmF0ZWQgZ3JvdXAgdGhl
 IHNlcnZlciBpcyBwYXJ0IG9mLiAKKysuUHAKKytMcGtTZXJ2ZXJHcm91cCB1bml4IG1haWwg
 cHJvZAorKy5JdCBDbSBMcGtGaWx0ZXIKKytTcGVjaWZpZXMgYW4gYWRkaXRpb25hbCBMREFQ
 IGZpbHRlciB0byB1c2UgZm9yIGZpbmRpbmcgU1NIIGtleXMKKysuUHAKKytMcGtGaWx0ZXIg
 KGhvc3RBY2Nlc3M9bWFzdGVyLnBoZWFyLm9yZykKKysuSXQgQ20gTHBrRm9yY2VUTFMKKytT
 cGVjaWZpZXMgaWYgdGhlIExEQVAgc2VydmVyIGNvbm5lY3Rpb24gbXVzdCBiZSB0cmllZCwg
 Zm9yY2VkIG9yIG5vdCB1c2VkLiBUaGUgYXJndW1lbnQgbXVzdCBiZSAKKysuRHEgeWVzCisr
 b3IKKysuRHEgbm8KKytvcgorKy5EcSB0cnkgLgorKy5JdCBDbSBMcGtTZWFyY2hUaW1lbGlt
 aXQKKytTZXBjaWZpZXMgdGhlIHNlYXJjaCB0aW1lIGxpbWl0IGJlZm9yZSB0aGUgc2VhcmNo
 IGlzIGNvbnNpZGVyZWQgb3Zlci4gdmFsdWUgaXMKKytpbiBzZWNvbmRzLgorKy5QcAorK0xw
 a1NlYXJjaFRpbWVsaW1pdCAzCisrLkl0IENtIExwa0JpbmRUaW1lbGltaXQKKytTZXBjaWZp
 ZXMgdGhlIGJpbmQgdGltZSBsaW1pdCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgY29uc2lk
 ZXJlZCBkZWFkLiB2YWx1ZSBpcworK2luIHNlY29uZHMuCisrLlBwCisrTHBrQmluZFRpbWVs
 aW1pdCAzCisgLkVsCisgLlNoIFRJTUUgRk9STUFUUworIC5YciBzc2hkIDgKZGlmZiAtTnJ1
 IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9wYXRjaC1zc2hk
 X2NvbmZpZy41IC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL3BhdGNo
 LXNzaGRfY29uZmlnLjUKLS0tIC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJs
 ZS9maWxlcy9wYXRjaC1zc2hkX2NvbmZpZy41CTIwMDYtMTAtMDEgMDU6MTU6MDAuMDAwMDAw
 MDAwICswMzAwCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9w
 YXRjaC1zc2hkX2NvbmZpZy41CTIwMTAtMTItMjEgMTE6MzY6MDYuMDAwMDAwMDAwICswMjAw
 CkBAIC0xLDI1ICsxLDUgQEAKIC0tLSBzc2hkX2NvbmZpZy41Lm9yaWcJVHVlIEF1ZyAyOSAy
 MjowNjozNCAyMDA2CiArKysgc3NoZF9jb25maWcuNQlTYXQgU2VwIDMwIDEwOjM5OjA3IDIw
 MDYKLUBAIC0xNjksOSArMTcwLDE2IEBACi0gQnkgZGVmYXVsdCwgbm8gYmFubmVyIGlzIGRp
 c3BsYXllZC4KLSAuSXQgQ20gQ2hhbGxlbmdlUmVzcG9uc2VBdXRoZW50aWNhdGlvbgotIFNw
 ZWNpZmllcyB3aGV0aGVyIGNoYWxsZW5nZS1yZXNwb25zZSBhdXRoZW50aWNhdGlvbiBpcyBh
 bGxvd2VkLgotLUFsbCBhdXRoZW50aWNhdGlvbiBzdHlsZXMgZnJvbQotLS5YciBsb2dpbi5j
 b25mIDUKLS1hcmUgc3VwcG9ydGVkLgotK1NwZWNpZmljYWxseSwgaW4KLSsuRnggLAotK3Ro
 aXMgY29udHJvbHMgdGhlIHVzZSBvZiBQQU0gKHNlZQotKy5YciBwYW0gMyApCi0rZm9yIGF1
 dGhlbnRpY2F0aW9uLgotK05vdGUgdGhhdCB0aGlzIGFmZmVjdHMgdGhlIGVmZmVjdGl2ZW5l
 c3Mgb2YgdGhlCi0rLkNtIFBhc3N3b3JkQXV0aGVudGljYXRpb24KLSthbmQKLSsuQ20gUGVy
 bWl0Um9vdExvZ2luCi0rdmFyaWFibGVzLgotIFRoZSBkZWZhdWx0IGlzCi0gLkRxIHllcyAu
 Ci0gLkl0IENtIENpcGhlcnMKIEBAIC01NTQsNyArNTYwLDIyIEBACiAgLkl0IENtIFBhc3N3
 b3JkQXV0aGVudGljYXRpb24KICBTcGVjaWZpZXMgd2hldGhlciBwYXNzd29yZCBhdXRoZW50
 aWNhdGlvbiBpcyBhbGxvd2VkLgo=
 --------------090401030803030509030101--
 
 --------------ms040800010301040905010606
 Content-Type: application/pkcs7-signature; name="smime.p7s"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename="smime.p7s"
 Content-Description: S/MIME Cryptographic Signature
 
 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIITbDCC
 BjQwggQcoAMCAQICAR4wDQYJKoZIhvcNAQEFBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoT
 DVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNp
 Z25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA3
 MTAyNDIxMDE1NVoXDTE3MTAyNDIxMDE1NVowgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1T
 dGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWdu
 aW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENs
 aWVudCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMcJg8zOLdgasSmkLhOr
 lr6KMoOMpohBllVHrdRvEg/q6r8jR+EK75xCGhR8ToREoqe7zM9/UnC6TS2y9UKTpT1v7RSM
 zR0t6ndl0TWBuUr/UXBhPk+Kmy7bI4yW4urC+y7P3/1/X7U8ocb8VpH/Clt+4iq7nirMcNh6
 qJR+xjOhV+VHzQMALuGYn5KZmc1NbJQYclsGkDxDz2UbFqE2+6vIZoL+jb9x4Pa5gNf1TwSD
 kOkikZB1xtB4ZqtXThaABSONdfmv/Z1pua3FYxnCFmdr/+N2JLKutIxMYqQOJebr/f/h5t95
 m4JgrM3Y/w7YX9d7YAL9jvN4SydHsU6n65cCAwEAAaOCAa0wggGpMA8GA1UdEwEB/wQFMAMB
 Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRTcu2SnODaywFcfH6WNU7y1LhRgjAfBgNV
 HSMEGDAWgBROC+8apEBbpRdphzDKNGhD0EGu8jBmBggrBgEFBQcBAQRaMFgwJwYIKwYBBQUH
 MAGGG2h0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbS9jYTAtBggrBgEFBQcwAoYhaHR0cDovL3d3
 dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6AloCOGIWh0dHA6Ly93d3cu
 c3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20v
 c2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysGAQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0
 dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93
 d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwDQYJKoZIhvcNAQEFBQADggIBAAqD
 CH14qywGXLhjjF6uHLkjd02hcdh9hrw+VUsv+q1eeQWB21jWj3kJ96AUlPCoEGZ/ynJNScWy
 6QMVQjbbMXltUfO4n4bGGdKo3awPWp61tjAFgraLJgDk+DsSvUD6EowjMTNx25GQgyYJ5RPI
 zKKR9tQW8gGK+2+RHxkUCTbYFnL6kl8Ch507rUdPPipJ9CgJFws3kDS3gOS5WFMxcjO5DwKf
 KSETEPrHh7p5shuuNktvsv6hxHTLhiMKX893gxdT3XLS9OKmCv87vkINQcNEcIIoFWbP9HOR
 z9v3vQwR4e3ksLc2JZOAFK+ssS5XMEoznzpihEP0PLc4dCBYjbvSD7kxgDwZ+Aj8Q9PkbvE9
 sIPP7ON0fz095HdThKjiVJe6vofq+n6b1NBc8XdrQvBmunwxD5nvtTW4vtN6VY7mUCmxsCie
 uoBJ9OlqmsVWQvifIYf40dJPZkk9YgGTzWLpXDSfLSplbY2LL9C9U0ptvjcDjefLTvqSFc7t
 w1sEhF0n/qpA2r0GpvkLRDmcSwVyPvmjFBGqUp/pNy8ZuPGQmHwFi2/14+xeSUDG2bwnsYJQ
 G2EdJCB6luQ57GEnTA/yKZSTKI8dDQa8Sd3zfXb19mOgSF0bBdXbuKhEpuP9wirslFe6fQ1t
 5j5R0xi72MZ8ikMu1RQZKCyDbMwazlHiMIIGljCCBX6gAwIBAgIDAb7OMA0GCSqGSIb3DQEB
 BQUAMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
 U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20g
 Q2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwHhcNMTAxMDIyMDcwNjU0
 WhcNMTExMDIzMDQ0MjE0WjCBjzEgMB4GA1UEDRMXMjc5NzY1LW9JYUoyZzVWbFlOMkIxMHYx
 HjAcBgNVBAoTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDEpMCcGA1UEAxMgU3RhcnRDb20gRnJl
 ZSBDZXJ0aWZpY2F0ZSBNZW1iZXIxIDAeBgkqhkiG9w0BCQEWEWJhcnpvZ0B0ZWxlY29tLmJ5
 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqNuuLPvrhyATcaXqYPmx3ZnDuFut
 5stBO/WRcGXglYk1RDr5LUeY40HLNOHEVRmQlZ0kAmm8K3W3pwICQZ93LDMEsi5IUWpd2azw
 QaIvzkA3fXRk+aVUYWbFAm8rcHbbEzYmDEfegs+oocriK5AQEpMs7HjbRwHj+nb2Fk1aiaRP
 vxThAILKqjAXGcr2K1qRsWV7Kf4bp36EhAzOTf8mazbsOXEqagkIfnwFDqEd0bJ2XhJMnwBt
 SXOnulSRuYFfQ/kP3IQd7vZZimikcx9z2LJB4lDr/422Lh/G4cMteqHKZhAVUCDGP0E6uzEj
 kFRUkGb4AIbcUp5QpYD/FQxgdwIDAQABo4IC+jCCAvYwCQYDVR0TBAIwADALBgNVHQ8EBAMC
 BLAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBSV0VEMqvSMGFoV
 4sk6rIxeUbJnQzAfBgNVHSMEGDAWgBRTcu2SnODaywFcfH6WNU7y1LhRgjAcBgNVHREEFTAT
 gRFiYXJ6b2dAdGVsZWNvbS5ieTCCAUIGA1UdIASCATkwggE1MIIBMQYLKwYBBAGBtTcBAgIw
 ggEgMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQG
 CCsGAQUFBwIBFihodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMIG3
 BggrBgEFBQcCAjCBqjAUFg1TdGFydENvbSBMdGQuMAMCAQEagZFMaW1pdGVkIExpYWJpbGl0
 eSwgc2VlIHNlY3Rpb24gKkxlZ2FsIExpbWl0YXRpb25zKiBvZiB0aGUgU3RhcnRDb20gQ2Vy
 dGlmaWNhdGlvbiBBdXRob3JpdHkgUG9saWN5IGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnN0
 YXJ0c3NsLmNvbS9wb2xpY3kucGRmMGMGA1UdHwRcMFowK6ApoCeGJWh0dHA6Ly93d3cuc3Rh
 cnRzc2wuY29tL2NydHUxLWNybC5jcmwwK6ApoCeGJWh0dHA6Ly9jcmwuc3RhcnRzc2wuY29t
 L2NydHUxLWNybC5jcmwwgY4GCCsGAQUFBwEBBIGBMH8wOQYIKwYBBQUHMAGGLWh0dHA6Ly9v
 Y3NwLnN0YXJ0c3NsLmNvbS9zdWIvY2xhc3MxL2NsaWVudC9jYTBCBggrBgEFBQcwAoY2aHR0
 cDovL3d3dy5zdGFydHNzbC5jb20vY2VydHMvc3ViLmNsYXNzMS5jbGllbnQuY2EuY3J0MCMG
 A1UdEgQcMBqGGGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tLzANBgkqhkiG9w0BAQUFAAOCAQEA
 n+1siaVAwT+f6HNr6rws73QegfthCYrLPy3Ep7nEqM5NCWLNfRh+lhmF8TsvCyPqnIzRMcPZ
 zFTJ3OverwgP/+tW5X2TtRRtl9gZRfo1uKCB4faRtAHMm1gogjm/SmzuHtH7dFd+dA8+pRbW
 inpAd3+jjw1zmMoBfq4PoQMK8W8UIRgCUFWrjvBgvNxNrFHw/+wVyirC6Bqu4IWkR3ccrWva
 VC2MJ3zBKf5rcELYFGubVr1qt4Fc2BS2AI2wD+F/YXgxqzzgjj9I8MYj56qpdEcPT89XHZxO
 Dg4zl1OLjKDeIa5VIcKCDsqvbV/unbrvLocpNY6vq5pxoS46D//JGjCCBpYwggV+oAMCAQIC
 AwG+zjANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29t
 IEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2
 BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENB
 MB4XDTEwMTAyMjA3MDY1NFoXDTExMTAyMzA0NDIxNFowgY8xIDAeBgNVBA0TFzI3OTc2NS1v
 SWFKMmc1VmxZTjJCMTB2MR4wHAYDVQQKExVQZXJzb25hIE5vdCBWYWxpZGF0ZWQxKTAnBgNV
 BAMTIFN0YXJ0Q29tIEZyZWUgQ2VydGlmaWNhdGUgTWVtYmVyMSAwHgYJKoZIhvcNAQkBFhFi
 YXJ6b2dAdGVsZWNvbS5ieTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKjbriz7
 64cgE3Gl6mD5sd2Zw7hbrebLQTv1kXBl4JWJNUQ6+S1HmONByzThxFUZkJWdJAJpvCt1t6cC
 AkGfdywzBLIuSFFqXdms8EGiL85AN310ZPmlVGFmxQJvK3B22xM2JgxH3oLPqKHK4iuQEBKT
 LOx420cB4/p29hZNWomkT78U4QCCyqowFxnK9itakbFleyn+G6d+hIQMzk3/Jms27DlxKmoJ
 CH58BQ6hHdGydl4STJ8AbUlzp7pUkbmBX0P5D9yEHe72WYpopHMfc9iyQeJQ6/+Nti4fxuHD
 LXqhymYQFVAgxj9BOrsxI5BUVJBm+ACG3FKeUKWA/xUMYHcCAwEAAaOCAvowggL2MAkGA1Ud
 EwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNV
 HQ4EFgQUldFRDKr0jBhaFeLJOqyMXlGyZ0MwHwYDVR0jBBgwFoAUU3Ltkpzg2ssBXHx+ljVO
 8tS4UYIwHAYDVR0RBBUwE4ERYmFyem9nQHRlbGVjb20uYnkwggFCBgNVHSAEggE5MIIBNTCC
 ATEGCysGAQQBgbU3AQICMIIBIDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5j
 b20vcG9saWN5LnBkZjA0BggrBgEFBQcCARYoaHR0cDovL3d3dy5zdGFydHNzbC5jb20vaW50
 ZXJtZWRpYXRlLnBkZjCBtwYIKwYBBQUHAgIwgaowFBYNU3RhcnRDb20gTHRkLjADAgEBGoGR
 TGltaXRlZCBMaWFiaWxpdHksIHNlZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg
 dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUg
 YXQgaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjBjBgNVHR8EXDBaMCugKaAn
 hiVodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9jcnR1MS1jcmwuY3JsMCugKaAnhiVodHRwOi8v
 Y3JsLnN0YXJ0c3NsLmNvbS9jcnR1MS1jcmwuY3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsG
 AQUFBzABhi1odHRwOi8vb2NzcC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMS9jbGllbnQvY2Ew
 QgYIKwYBBQUHMAKGNmh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczEu
 Y2xpZW50LmNhLmNydDAjBgNVHRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJ
 KoZIhvcNAQEFBQADggEBAJ/tbImlQME/n+hza+q8LO90HoH7YQmKyz8txKe5xKjOTQlizX0Y
 fpYZhfE7Lwsj6pyM0THD2cxUydzr3q8ID//rVuV9k7UUbZfYGUX6NbiggeH2kbQBzJtYKII5
 v0ps7h7R+3RXfnQPPqUW1op6QHd/o48Nc5jKAX6uD6EDCvFvFCEYAlBVq47wYLzcTaxR8P/s
 FcoqwugaruCFpEd3HK1r2lQtjCd8wSn+a3BC2BRrm1a9areBXNgUtgCNsA/hf2F4Mas84I4/
 SPDGI+eqqXRHD0/PVx2cTg4OM5dTi4yg3iGuVSHCgg7Kr21f7p267y6HKTWOr6uacaEuOg//
 yRoxggPQMIIDzAIBATCBlDCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0
 ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNV
 BAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBAgMB
 vs4wCQYFKw4DAhoFAKCCAhAwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
 CQUxDxcNMTAxMjIxMDk1ODM2WjAjBgkqhkiG9w0BCQQxFgQUDxS+v9VVzcQnPeXOcNZQhHzi
 oYUwXwYJKoZIhvcNAQkPMVIwUDALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcN
 AwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGlBgkrBgEE
 AYI3EAQxgZcwgZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSsw
 KQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9T
 dGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQIDAb7OMIGn
 BgsqhkiG9w0BCRACCzGBl6CBlDCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29t
 IEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2
 BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENB
 AgMBvs4wDQYJKoZIhvcNAQEBBQAEggEAiOmZH/WmErhgUKsNxFwgdipLPE4anw3Lr0wSMa9K
 nikmruaDLgZ2YUmO6IxElqghPkVRxGgqX/zWwpgy1diM8XUGJeJ97ztxQhKmfJcC9hsKkFn+
 wvQagDmmkmggshWbUUn6htTzFCV3v2OYqf00zxMwAE0ZUQ1ZureXNGpPHjNUOLGoAiCmQQej
 Goaj934IJucpzA4voO1TzWDi+ZeT/wrBoEigt6VQ4AmTqNriyCmpEv0DKhjwojcBLd1LcfUv
 VERyj83r7ug/wIzmVp0H9ps8gttZpbuXJiGjdqr1v77e5llAAuhJGSaRgoYOQQ8uQDS30FZ7
 7oU3q7WdeefODQAAAAAAAA==
 --------------ms040800010301040905010606--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201012211000.oBLA0S2E033185>