Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Mar 2007 15:50:08 GMT
From:      nemo <nemoliu@gmail.com>
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/110767: [UPDATE]java/jboss3:update to jboss3.2.8
Message-ID:  <200703251550.l2PFo8iD079715@freefall.freebsd.org>

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

From: nemo <nemoliu@gmail.com>
To: bug-followup@FreeBSD.org, nemoliu@gmail.com, pav@freebsd.org
Cc:  
Subject: Re: ports/110767: [UPDATE]java/jboss3:update to jboss3.2.8
Date: Sun, 25 Mar 2007 23:41:50 +0800

 ------=_Part_225893_17557009.1174837310764
 Content-Type: text/plain; charset=UTF-8; format=flowed
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline
 
 I rewrite the patch .this one should be better.
 such as:
 change USE_RC_SUBR value to jboss3.sh;
 use ant to build src;
 use SUB_FILES and SUB_LIST replace use sed manaully.
 
 I rewrite another patch in the same way.
 http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/110768
 
 ------=_Part_225893_17557009.1174837310764
 Content-Type: text/plain; name=patch-jboss3.txt; charset=ANSI_X3.4-1968
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_ezpnm5j5
 Content-Disposition: attachment; filename="patch-jboss3.txt"
 
 SW5kZXg6IE1ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMvcG9ydHMvamF2
 YS9qYm9zczMvTWFrZWZpbGUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzAKZGlmZiAtdSAtcjEu
 MzAgTWFrZWZpbGUKLS0tIE1ha2VmaWxlCTkgTWF5IDIwMDYgMDA6MTg6MDQgLTAwMDAJMS4zMAor
 KysgTWFrZWZpbGUJMjUgTWFyIDIwMDcgMTM6NTU6NTcgLTAwMDAKQEAgLTIsMTEgKzIsMTEgQEAK
 ICMgRGF0ZSBjcmVhdGVkOiAgICAgICAgICAgICAgICAgIDE2IEFwcmlsIDIwMDIKICMgV2hvbTog
 ICAgICAgICAgICAgICAgICAgICAgICAgIEVybnN0IGRlIEhhYW4gPHpuZXJkQEZyZWVCU0Qub3Jn
 PgogIwotIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczMvTWFrZWZpbGUsdiAxLjMwIDIwMDYv
 MDUvMDkgMDA6MTg6MDQgZWR3aW4gRXhwICQKKyMgJEZyZWVCU0QkCiAjCiAKIFBPUlROQU1FPQkk
 e0FQUF9USVRMRTpMfQotUE9SVFZFUlNJT049CTMuMi43CitQT1JUVkVSU0lPTj0JMy4yLjguU1Ax
 CiBDQVRFR09SSUVTPQlqYXZhIGRldmVsCiBNQVNURVJfU0lURVM9CSR7TUFTVEVSX1NJVEVfU09V
 UkNFRk9SR0V9CiBNQVNURVJfU0lURV9TVUJESVI9CSR7UE9SVE5BTUV9CkBAIC0xNSwxNCArMTUs
 MTUgQEAKIE1BSU5UQUlORVI9CWpvbmNAY2hlbi5vcmcubnoKIENPTU1FTlQ9CUpCb3NzIDMueCwg
 YW4gb3Blbi1zb3VyY2UgSjJFRSBhcHBsaWNhdGlvbiBzZXJ2ZXIKIAotQlVJTERfREVQRU5EUz0J
 YW50OiR7UE9SVFNESVJ9L2RldmVsL2FwYWNoZS1hbnQKLQogTEFURVNUX0xJTks9CWpib3NzMwog
 VVNFX0pBVkE9CXllcwogSkFWQV9WRVJTSU9OPQkxLjQKK1VTRV9BTlQ9CXllcworTUFLRV9BUkdT
 PQktYnVpbGRmaWxlIGJ1aWxkL2J1aWxkLnhtbAogCi1VU0VfUkNfU1VCUj0JWUVTCitVU0VfUkNf
 U1VCUj0JamJvc3MzLnNoCiBVU0VfQlpJUDI9CVlFUworU1VCX0ZJTEVTPQlwa2ctaW5zdGFsbCBw
 a2ctZGVpbnN0YWxsIHBrZy1tZXNzYWdlIGRhZW1vbmN0bC4xIGRhZW1vbmN0bC5jCiAKIC5pZiAh
 ZGVmaW5lZChOT1BPUlRET0NTKQogUE9SVERPQ1M9CSoKQEAgLTU3LDQ3ICs1OCw0MSBAQAogQVBQ
 X0hPTUVfRklMRVM9CWJpbiBjbGllbnQgbGliIHNlcnZlcgogCiBQTElTVF9GSUxFUz0JJHtDT05U
 Uk9MX1NDUklQVDpTLF4ke1BSRUZJWH0vLCx9IFwKLQkJJHtTVEFSVFVQX1NDUklQVDpTLF4ke1BS
 RUZJWH0vLCx9IFwKIAkJJHtTVERPVVRfTE9HOlMsXiR7UFJFRklYfS8sLH0gXAogCQkke1NUREVS
 Ul9MT0c6UyxeJHtQUkVGSVh9LywsfQogCi1QS0dNRVNTQUdFPQkke1dSS0RJUn0vcGtnLW1lc3Nh
 Z2UuZm10CitQS0dNRVNTQUdFPQkke1dSS0RJUn0vcGtnLW1lc3NhZ2UKIAotLmluY2x1ZGUgPGJz
 ZC5wb3J0LnByZS5taz4KK1NVQl9MSVNUPQlBUFBfSE9NRT0ke0FQUF9IT01FfSBcCisJCUFQUF9T
 SE9SVE5BTUU9JHtBUFBfU0hPUlROQU1FfSBcCisJCUFQUF9USVRMRT0ke0FQUF9USVRMRX0gXAor
 CQlDT05UUk9MX1NDUklQVD0ke0NPTlRST0xfU0NSSVBUfSBcCisJCUNPTlRST0xfU0NSSVBUX01B
 TlBBR0VfVElUTEU9JHtDT05UUk9MX1NDUklQVF9NQU5QQUdFX1RJVExFfSBcCisJCUNPTlRST0xf
 U0NSSVBUX05BTUU9JHtDT05UUk9MX1NDUklQVF9OQU1FfSBcCisJCUdST1VQPSR7R1JPVVB9IFwK
 KwkJSkFWQT0ke0pBVkF9IFwKKwkJSkFWQV9DUD0ke0pBVkFfQ1B9IFwKKwkJSkFWQV9IT01FPSR7
 SkFWQV9IT01FfSBcCisJCUpBVkFfTUFJTj0ke0pBVkFfTUFJTn0gXAorCQlKQVZBX09QVFM9JHtK
 QVZBX09QVFN9IFwKKwkJSkFWQV9QT1JUX1ZFUlNJT049JHtKQVZBX1BPUlRfVkVSU0lPTn0gXAor
 CQlKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT049JHtKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT059IFwK
 KwkJSkFSX0ZJTEU9JHtKQVJfRklMRX0gXAorCQlMT0dfRElSPSR7TE9HX0RJUn0gXAorCQlQSURf
 RklMRT0ke1BJRF9GSUxFfSBcCisJCVBLR05BTUU9JHtQS0dOQU1FfSBcCisJCVBPUlROQU1FPSR7
 UE9SVE5BTUV9IFwKKwkJUE9SVFZFUlNJT049JHtQT1JUVkVSU0lPTn0gXAorCQlQUkVGSVg9JHtQ
 UkVGSVh9IFwKKwkJU1RBUlRVUF9TQ1JJUFQ9JHtTVEFSVFVQX1NDUklQVH0gXAorCQlTVERFUlJf
 TE9HPSR7U1RERVJSX0xPR30gXAorCQlTVERPVVRfTE9HPSR7U1RET1VUX0xPR30gXAorCQlTVE9Q
 X1RJTUVPVVQ9JHtTVE9QX1RJTUVPVVR9IFwKKwkJVVNFUj0ke1VTRVJ9CiAKLWRvLWNvbmZpZ3Vy
 ZToKLQlAKGNkICR7REFFTU9OQ1RMX0RJUn0gJiYgJHtDUH0gJHtEQUVNT05DVExfRklMRVN9ICR7
 V1JLRElSfSkKLQlAKGNkICR7V1JLRElSfSAmJiAke1JFSU5QTEFDRV9DTUR9IFwKLQkJLWUgInN8
 JSVSQ19TVUJSJSV8JHtSQ19TVUJSfXxnOyIgXAotCQktZSAic3wlJUFQUF9IT01FJSV8JHtBUFBf
 SE9NRX18ZzsiIFwKLQkJLWUgInN8JSVBUFBfU0hPUlROQU1FJSV8JHtBUFBfU0hPUlROQU1FfXxn
 OyIgXAotCQktZSAic3wlJUFQUF9USVRMRSUlfCR7QVBQX1RJVExFfXxnOyIgXAotCQktZSAic3wl
 JUNPTlRST0xfU0NSSVBUJSV8JHtDT05UUk9MX1NDUklQVH18ZzsiIFwKLQkJLWUgInN8JSVDT05U
 Uk9MX1NDUklQVF9NQU5QQUdFX1RJVExFJSV8JHtDT05UUk9MX1NDUklQVF9NQU5QQUdFX1RJVExF
 fXxnOyIgXAotCQktZSAic3wlJUNPTlRST0xfU0NSSVBUX05BTUUlJXwke0NPTlRST0xfU0NSSVBU
 X05BTUV9fGc7IiBcCi0JCS1lICJzfCUlR1JPVVAlJXwke0dST1VQfXxnOyIgXAotCQktZSAic3wl
 JUpBVkElJXwke0pBVkF9fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9DUCUlfCR7SkFWQV9DUH18Zzsi
 IFwKLQkJLWUgInN8JSVKQVZBX0hPTUUlJXwke0pBVkFfSE9NRX18ZzsiIFwKLQkJLWUgInN8JSVK
 QVZBX01BSU4lJXwke0pBVkFfTUFJTn18ZzsiIFwKLQkJLWUgInN8JSVKQVZBX09QVFMlJXwke0pB
 VkFfT1BUU318ZzsiIFwKLQkJLWUgInN8JSVKQVZBX1BPUlRfVkVSU0lPTiUlfCR7SkFWQV9QT1JU
 X1ZFUlNJT059fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9QT1JUX09TX0RFU0NSSVBUSU9OJSV8JHtK
 QVZBX1BPUlRfT1NfREVTQ1JJUFRJT059fGc7IiBcCi0JCS1lICJzfCUlSkFSX0ZJTEUlJXwke0pB
 Ul9GSUxFfXxnOyIgXAotCQktZSAic3wlJUxPR19ESVIlJXwke0xPR19ESVJ9fGc7IiBcCi0JCS1l
 ICJzfCUlUElEX0ZJTEUlJXwke1BJRF9GSUxFfXxnOyIgXAotCQktZSAic3wlJVBLR05BTUUlJXwk
 e1BLR05BTUV9fGc7IiBcCi0JCS1lICJzfCUlUE9SVE5BTUUlJXwke1BPUlROQU1FfXxnOyIgXAot
 CQktZSAic3wlJVBPUlRWRVJTSU9OJSV8JHtQT1JUVkVSU0lPTn18ZzsiIFwKLQkJLWUgInN8JSVQ
 UkVGSVglJXwke1BSRUZJWH18ZzsiIFwKLQkJLWUgInN8JSVTVEFSVFVQX1NDUklQVCUlfCR7U1RB
 UlRVUF9TQ1JJUFR9fGc7IiBcCi0JCS1lICJzfCUlU1RERVJSX0xPRyUlfCR7U1RERVJSX0xPR318
 ZzsiIFwKLQkJLWUgInN8JSVTVERPVVRfTE9HJSV8JHtTVERPVVRfTE9HfXxnOyIgXAotCQktZSAi
 c3wlJVNUT1BfVElNRU9VVCUlfCR7U1RPUF9USU1FT1VUfXxnOyIgXAotCQktZSAic3wlJVVTRVIl
 JXwke1VTRVJ9fGc7IiAke0RBRU1PTkNUTF9GSUxFU30pCi0JQCR7Rk1UfSAtcyA4MCAke1dSS0RJ
 Un0vcGtnLW1lc3NhZ2UgPiR7UEtHTUVTU0FHRX0KKy5pbmNsdWRlIDxic2QucG9ydC5wcmUubWs+
 CiAKLXBvc3QtY29uZmlndXJlOgorcG9zdC1wYXRjaDoKIAlAJHtFQ0hPX01TR30gIkluc3RhbGxh
 dGlvbiBzZXR0aW5nczoiCiAJQCR7RUNIT19NU0d9ICIgICBEZXN0aW5hdGlvbiBkaXJlY3Rvcnk6
 ICAgICR7QVBQX0hPTUV9IgogCUAke0VDSE9fTVNHfSAiICAgQ29udHJvbCBwcm9ncmFtIGxvY2F0
 aW9uOiAke0NPTlRST0xfU0NSSVBUfSIKQEAgLTExMSwyMSArMTA2LDE3IEBACiAJQCR7RUNIT19N
 U0d9ICIgICBTdGFydGluZyBhZnRlciBpbnN0YWxsOiAgICR7QVVUT19TVEFSVH0iCiAJQCR7RUNI
 T19NU0d9ICIgICBTdG9wIHRpbWUtb3V0OiAgICAgICAgICAgICR7U1RPUF9USU1FT1VUfSBzZWMu
 IgogCi1kby1idWlsZDoKLQkoY2QgJHtXUktESVJ9ICYmICR7Q0N9ICR7Q0ZMQUdTfSAtbyAke0NP
 TlRST0xfU0NSSVBUX05BTUV9IGRhZW1vbmN0bC5jKQotCShjZCAke1dSS1NSQ30vYnVpbGQgJiYg
 JHtTRVRFTlZ9IEpBVkFfSE9NRT0iJHtKQVZBX0hPTUV9IiBQQVRIPSIke0pBVkFfSE9NRX0vYmlu
 OiR7UEFUSH0iICR7U0h9IGJ1aWxkLnNoKQotCiBwcmUtaW5zdGFsbDoKIAlAJHtTRVRFTlZ9IFBL
 R19QUkVGSVg9JHtQUkVGSVh9ICR7U0h9ICR7UEtHSU5TVEFMTH0gJHtQS0dOQU1FfSBQUkUtSU5T
 VEFMTAogCiBkby1pbnN0YWxsOgorCWNkICR7V1JLRElSfSAmJiAke0NDfSAke0NGTEFHU30gLW8g
 JHtDT05UUk9MX1NDUklQVF9OQU1FfSBkYWVtb25jdGwuYwogCSR7TUtESVJ9ICR7QVBQX0hPTUV9
 ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtBUFBfSE9NRX0KIAkke01LRElSfSAke0xP
 R19ESVJ9ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtMT0dfRElSfQogCShjZCAke0pC
 T1NTT1VUUFVUfSAmJiAke0ZJTkR9ICR7QVBQX0hPTUVfRklMRVN9IHxcCiAJCSR7Q1BJT30gLXBk
 bXUgLVIgJHtVU0VSfToke0dST1VQfSAke0FQUF9IT01FfSkKIAkke0lOU1RBTEx9IC1vICR7VVNF
 Un0gLWcgJHtHUk9VUH0gLW0gMDY3NTRcCiAJCSR7V1JLRElSfS8ke0NPTlRST0xfU0NSSVBUX05B
 TUV9ICR7Q09OVFJPTF9TQ1JJUFR9Ci0JJHtJTlNUQUxMX1NDUklQVH0gJHtXUktESVJ9L3N0YXJ0
 dXAuc2ggJHtTVEFSVFVQX1NDUklQVH0KIAkke0lOU1RBTEx9IC1vICR7VVNFUn0gLWcgJHtHUk9V
 UH0gLW0gMDY0MCAvZGV2L251bGwgJHtTVERPVVRfTE9HfQogCSR7SU5TVEFMTH0gLW8gJHtVU0VS
 fSAtZyAke0dST1VQfSAtbSAwNjQwIC9kZXYvbnVsbCAke1NUREVSUl9MT0d9CiAJJHtJTlNUQUxM
 fSAtbyAke1VTRVJ9IC1nICR7R1JPVVB9IC1tIDA2NDAgL2Rldi9udWxsICR7UElEX0ZJTEV9Cklu
 ZGV4OiBkaXN0aW5mbwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3BvcnRzL2phdmEv
 amJvc3MzL2Rpc3RpbmZvLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEzCmRpZmYgLXUgLXIxLjEz
 IGRpc3RpbmZvCi0tLSBkaXN0aW5mbwkyMiBKYW4gMjAwNiAxMjozOTo1NCAtMDAwMAkxLjEzCisr
 KyBkaXN0aW5mbwkyNSBNYXIgMjAwNyAwODozMzoyNCAtMDAwMApAQCAtMSwzICsxLDMgQEAKLU1E
 NSAoamJvc3MtMy4yLjctc3JjLnRhci5iejIpID0gMWQzZDY2ZDFkNzc5YWYwZDQ3ZWYwYmExYzE4
 OWJmZmMKLVNIQTI1NiAoamJvc3MtMy4yLjctc3JjLnRhci5iejIpID0gMWRhMGRmYjU5MmU1YmFh
 NGU0MWYyNzJjZTNkY2I2NWYwZjY1ZTI5MGNlZjllMDA5Zjk2NDQ1MjdiYWQ4NmM1NAotU0laRSAo
 amJvc3MtMy4yLjctc3JjLnRhci5iejIpID0gNDg2ODgxMzMKK01ENSAoamJvc3MtMy4yLjguU1Ax
 LXNyYy50YXIuYnoyKSA9IGEzZTJjMjQwOTQ2NWEyMjc2YWE1ODRkOTEwMDAyNmI3CitTSEEyNTYg
 KGpib3NzLTMuMi44LlNQMS1zcmMudGFyLmJ6MikgPSBlZDRlNDVmYTVmNTFjZDhhMmEzNjQzZjM2
 NzY1ODA3MjRiNWM2YmY2OGEzNDdiYjNhZWUxNzAyZDRkMzg0OTE0CitTSVpFIChqYm9zcy0zLjIu
 OC5TUDEtc3JjLnRhci5iejIpID0gMzc5OTUyMjcKSW5kZXg6IHBrZy1kZWluc3RhbGwKPT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PQpSQ1MgZmlsZTogcGtnLWRlaW5zdGFsbApkaWZmIC1OIHBrZy1kZWluc3RhbGwKLS0tIHBr
 Zy1kZWluc3RhbGwJMTQgSnVsIDIwMDMgMTA6MDM6MTMgLTAwMDAJMS4yCisrKyAvZGV2L251bGwJ
 MSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMApAQCAtMSwzNSArMCwwIEBACi0jIS9iaW4vc2gKLSMK
 LSMgVGhpcyBzY3JpcHQgZG9lcyB0aGUgZm9sbG93aW5nLgotIwotIyAqIENoZWNrcyBpZiB0aGUg
 SkJvc3MgUElEIGZpbGUgZXhpc3RzLiBJZiBpdCBkb2VzLCBpdCBraWxscyB0aGUKLSMgICBKQm9z
 cyBwcm9jZXNzIGFuZCByZW1vdmVzIHRoZSBQSUQgZmlsZS4KLSMKLSMgJEZyZWVCU0Q6IHBvcnRz
 L2phdmEvamJvc3MzL3BrZy1kZWluc3RhbGwsdiAxLjIgMjAwMy8wNy8xNCAxMDowMzoxMyBkZXMg
 RXhwICQKLSMKLQotIyBNYWtlIHN1cmUgd2UncmUgaW4gdGhlIHJpZ2h0IHN0YWdlIG9mIHRoZSBw
 cm9jZXNzCi1pZiBbICIkMiIgPSAiREVJTlNUQUxMIiBdOyB0aGVuCi0KLQkjIEtpbGwgSkJvc3Mg
 aWYgaXQgaXMgc3RpbGwgcnVubmluZwotCVBJRF9GSUxFPS92YXIvcnVuL2pib3NzLnBpZAotCWlm
 IFsgLXMgJHtQSURfRklMRX0gXTsgdGhlbgotCQlQSUQ9YGNhdCAke1BJRF9GSUxFfWAKLQkJZWNo
 byAtbiAiPj4gS2lsbGluZyBKQm9zcyBTZXJ2ZXIgcHJvY2VzcyAoJHtQSUR9KS4uLiIKLQkJL2Jp
 bi9raWxsICR7UElEfSA+IC9kZXYvbnVsbCAyPiAvZGV2L251bGwKLQkJaWYgWyAkPyAtZXEgMCBd
 OyB0aGVuCi0JCQllY2hvICIgWyBET05FIF0iCi0JCWVsc2UKLQkJCWVjaG8gIiBbIEZBSUxFRCBd
 IgotCQlmaQotCQllY2hvIC1uICI+PiBSZW1vdmluZyBQSUQgZmlsZSAoJHtQSURfRklMRX0pLi4u
 IgotCQlybSAke1BJRF9GSUxFfSA+IC9kZXYvbnVsbCAyPiAvZGV2L251bGwKLQkJaWYgWyAkPyAt
 ZXEgMCBdOyB0aGVuCi0JCQllY2hvICIgWyBET05FIF0iCi0JCWVsc2UKLQkJCWVjaG8gIiBbIEZB
 SUxFRCBdIgotCQlmaQotCWZpCi1maQotCi1leGl0IDAKSW5kZXg6IHBrZy1pbnN0YWxsCj09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT0KUkNTIGZpbGU6IHBrZy1pbnN0YWxsCmRpZmYgLU4gcGtnLWluc3RhbGwKLS0tIHBrZy1p
 bnN0YWxsCTI2IEFwciAyMDAyIDIxOjU0OjE1IC0wMDAwCTEuMQorKysgL2Rldi9udWxsCTEgSmFu
 IDE5NzAgMDA6MDA6MDAgLTAwMDAKQEAgLTEsNDYgKzAsMCBAQAotIyEvYmluL3NoCi0jCi0jIENo
 ZWNrcyBpZiB0aGUgJ3d3dycgdXNlciBhbmQgZ3JvdXAgZXhpc3QuIElmIHRoZXkgZG9uJ3QsIHRo
 ZW4KLSMgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNyZWF0ZSBib3RoLgotIwotIyAkRnJlZUJTRDog
 cG9ydHMvamF2YS9qYm9zczMvcGtnLWluc3RhbGwsdiAxLjEgMjAwMi8wNC8yNiAyMTo1NDoxNSB6
 bmVyZCBFeHAgJAotIwotCi0jIE1ha2Ugc3VyZSB3ZSdyZSBjYWxsZWQgZHVyaW5nIHRoZSAnbWFr
 ZSBpbnN0YWxsJyBwcm9jZXNzCi1pZiBbICIkMiIgIT0gIlBSRS1JTlNUQUxMIiBdOyB0aGVuCi0g
 ICAgZXhpdCAwCi1maQotCi0jIFNldCBzb21lIGNvbnN0YW50cwotVVNFUj13d3cKLUdST1VQPSR7
 VVNFUn0KLVVJRD04MAotR0lEPSR7VUlEfQotCi0jIFNlZSBpZiB0aGUgZ3JvdXAgYWxyZWFkeSBl
 eGlzdHMKLWlmICEgcHcgZ3JvdXBzaG93ICIke0dST1VQfSIgMj4vZGV2L251bGwgMT4mMjsgdGhl
 bgotCi0JIyBJZiBub3QsIHRyeSB0byBjcmVhdGUgaXQKLQlpZiBwdyBncm91cGFkZCAke0dST1VQ
 fSAtZyAke0dJRH07IHRoZW4KLQkJZWNobyAiQWRkZWQgZ3JvdXAgXCIke0dST1VQfVwiLiIKLQll
 bHNlCi0JCWVjaG8gIkFkZGluZyBncm91cCBcIiR7R1JPVVB9XCIgZmFpbGVkLi4uIgotCQlleGl0
 IDEKLQlmaQotZmkKLQotIyBTZWUgaWYgdGhlIHVzZXIgYWxyZWFkeSBleGlzdHMKLWlmICEgcHcg
 dXNlcnNob3cgIiR7VVNFUn0iIDI+L2Rldi9udWxsIDE+JjI7IHRoZW4KLQotCSMgSWYgbm90LCB0
 cnkgdG8gY3JlYXRlIGl0Ci0JaWYgcHcgdXNlcmFkZCAke1VTRVJ9IC11ICR7VUlEfSAtZyAke0dS
 T1VQfSAtaCAtIFwKLQkJLXMgIi9zYmluL25vbG9naW4iIC1kICIvbm9uZXhpc3RlbnQiIFwKLQkJ
 LWMgIldvcmxkIFdpZGUgV2ViIE93bmVyIjsgXAotCXRoZW4KLQkJZWNobyAiQWRkZWQgdXNlciBc
 IiR7VVNFUn1cIi4iCi0JZWxzZQotCQllY2hvICJBZGRpbmcgdXNlciBcIiR7VVNFUn1cIiBmYWls
 ZWQuLi4iCi0JCWV4aXQgMQotCWZpCi1maQotZXhpdCAwCkluZGV4OiBmaWxlcy9kYWVtb25jdGwu
 MQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9kYWVtb25jdGwuMQpkaWZmIC1OIGZpbGVzL2Rh
 ZW1vbmN0bC4xCi0tLSBmaWxlcy9kYWVtb25jdGwuMQkyMSBKdW4gMjAwNCAxNjo0Mjo1OSAtMDAw
 MAkxLjEKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDc4ICsw
 LDAgQEAKLS5EZCBGZWJydWFyeSAyMSwgMjAwMgotLkR0ICUlQ09OVFJPTF9TQ1JJUFRfTUFOUEFH
 RV9USVRMRSUlIDEKLS5PcyBGcmVlQlNECi0uU2ggTkFNRQotLk5tICUlQ09OVFJPTF9TQ1JJUFRf
 TkFNRSUlCi0uTmQgJSVBUFBfVElUTEUlJSBzZXJ2ZXIgY29udHJvbCBpbnRlcmZhY2UKLS5TaCBT
 WU5PUFNJUwotLk5tCi0uT3AgRmwgamF2YS1vcHRpb25zCi0uQXIge3N0YXJ0fHJlc3RhcnR8c3Rv
 cH0KLS5TaCBERVNDUklQVElPTgotVGhlCi0uTm0KLXByb2dyYW0gcHJvdmlkZXMgYW4gcmVzdHJp
 Y3RlZCBpbnRlcmZhY2UgdG8gdGhlICUlQVBQX1RJVExFJSUKLWFwcGxpY2F0aW9uIHNlcnZlci4g
 VGhlCi0uTm0KLXByb2dyYW0gaXMgb25seSBhY2Nlc3NpYmxlIHRvIHVzZXJzIGluIHRoZSAnd3d3
 JyBncm91cCwgYW5kIHdpbGwKLW9ubHkgaW52b2tlIHRoZSAlJUpBVkFfUE9SVF9PU19ERVNDUklQ
 VElPTiUlICUlSkFWQV9QT1JUX1ZFUlNJT04lJSBKVk0uCi0uUHAKLUFueSBKYXZhIG9wdGlvbnMg
 bGlzdGVkIGFyZSBoYW5kZWQgb2ZmIGRpcmVjdGx5IHRvIHRoZSBKVk0uIEFueQotY2xhc3NwYXRo
 IG9wdGlvbnMgd2lsbCBiZSBpZ25vcmVkLgotLlBwCi1UaGUgcHJvZ3JhbSBleHBlY3RzIGV4YWN0
 bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGVybWluYXRpbmcgY29tbWFuZHM6Ci0uQmwgLXRhZyAt
 d2lkdGggaW5kZW50Ci0uSXQgQXIgc3RhcnQKLVN0YXJ0ICUlQVBQX1RJVExFJSUsIGlmIGl0IGlz
 IG5vdCBhbHJlYWR5IHJ1bm5pbmcuCi0uSXQgQXIgcmVzdGFydAotUmVzdGFydCAlJUFQUF9USVRM
 RSUlLiBJZiBpdCBpcyBhbHJlYWR5IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBiZSBzdG9wcGVkIGFu
 ZAotdGhlbiBzdGFydGVkIHJpZ2h0IGFmdGVyIHRoYXQuIE90aGVyd2lzZSBpdCB3aWxsIGp1c3Qg
 YmUgc3RhcnRlZCB1cC4KLS5JdCBBciBzdG9wCi1TdG9wICUlQVBQX1RJVExFJSUsIGlmIGl0IGlz
 IGFjdHVhbGx5IHJ1bm5pbmcuCi0uRWwKLS5TaCBFUlJPUlMKLVRoZSBmb2xsb3dpbmcgZXJyb3Ig
 Y29uZGl0aW9ucyBhcmUgZGV0ZWN0ZWQuIFRoZXkgd2lsbCBiZSBjaGVja2VkIGluIHRoZQotc3Bl
 Y2lmaWVkIG9yZGVyLiBJbiBlYWNoIGNhc2UgYW4gZXJyb3IgbWVzc2FnZSBpcyBwcmludGVkIHdp
 dGggdGhlIG5hbWUgb2YgdGhlCi1jb250cm9sIHByb2dyYW0gcHJlcGVuZGVkLgotLlBwCi1JZiBu
 byBhcmd1bWVudCBpcyBwYXNzZWQsIHRoZW4gYSBzaW1wbGUgaGVscCBtZXNzYWdlIGlzIHByaW50
 ZWQgYW5kIHRoZQotcHJvZ3JhbSBleGlzdHMgd2l0aCBlcnJvciBjb2RlIDAuCi0uUHAKLUlmIGF0
 IGxlYXN0IG9uZSBhcmd1bWVudCBpcyBwYXNzZWQsIGJ1dCBpdCBpcyBkaWZmZXJlbnQgZnJvbQot
 LkFyIHN0YXJ0ICwKLS5BciByZXN0YXJ0Ci1vcgotLkFyIHN0b3AKLXRoZW4gdGhlIGhlbHAgbWVz
 c2FnZSBpcyBwcmludGVkIGFzIHdlbGwsIGFuZCB0aGUgcHJvZ3JhbSBleGl0cyB3aXRoIGVycm9y
 Ci1jb2RlIDEuCi0uUHAKLVRoZSBmb2xsb3dpbmcgZXJyb3JzIGNvbmRpdGlvbnMgYXJlIGRlZmlu
 ZWQ6Ci0uQmwgLXRhZyAtd2lkdGggaW5kZW50Ci0uSXQgRW0gSWxsZWdhbCBwcm9ncmFtIGFyZ3Vt
 ZW50IChlcnJvciBjb2RlIDEpCi0uSXQgRW0gUElEIGZpbGUgbm90IGZvdW5kIChlcnJvciBjb2Rl
 IDIpCi0uSXQgRW0gUElEIGZpbGUgdG9vIGxhcmdlIChlcnJvciBjb2RlIDMpCi0uSXQgRW0gUElE
 IGZpbGUgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXIgKGVycm9yIGNvZGUgNCkKLS5JdCBFbSBL
 aWxsIG9mIHByb2Nlc3MgZmFpbGVkIChlcnJvciBjb2RlIDUpCi0uSXQgRW0gJSVBUFBfVElUTEUl
 JSBpcyBhbHJlYWR5IHJ1bm5pbmcgKGVycm9yIGNvZGUgNikKLS5JdCBFbSAlJUFQUF9USVRMRSUl
 IGlzIG5vdCBydW5uaW5nIChlcnJvciBjb2RlIDcpCi0uSXQgRW0gVW5hYmxlIHRvIGNoZGlyIHRv
 IHRoZSAlJUFQUF9USVRMRSUlIGhvbWUgZGlyZWN0b3J5IChlcnJvciBjb2RlIDgpCi0uSXQgRW0g
 VW5hYmxlIHRvIG9wZW4gdGhlIHN0ZG91dCBsb2cgZmlsZSAoZXJyb3IgY29kZSA5KQotLkl0IEVt
 IFVuYWJsZSB0byBvcGVuIHRoZSBzdGRlcnIgbG9nIGZpbGUgKGVycm9yIGNvZGUgMTApCi0uSXQg
 RW0gVW5hYmxlIHRvIHN0YXJ0ICUlQVBQX1RJVExFJSUgKGVycm9yIGNvZGUgMTEpCi0uRWwKLS5T
 aCBGSUxFUwotLkJsIC10YWcgLXdpZHRoIC1pbmRlbnQKLS5JdCBQYSAlJVBJRF9GSUxFJSUKLVRo
 ZSAlJUFQUF9USVRMRSUlIFBJRCBmaWxlIHRoYXQgaXMgdXNlZCB0byBzdG9yZSB0aGUgcHJvY2Vz
 cyBJRCBvZiB0aGUKLWN1cnJlbnRseSBydW5uaW5nIHByb2Nlc3MgaW4uIEl0IGlzIGVtcHRpZWQg
 YXMgc29vbiBhcyB0aGUgc2VydmVyIGlzIHN0b3BwZWQKLWFuZCBmaWxsZWQgd2l0aCB0aGUgcHJv
 Y2VzcyBJRCB3aGVuIGl0IGlzIHN0YXJ0ZWQuIEl0IHNob3VsZCBuZXZlciBiZSB3cml0YWJsZQot
 Zm9yIGFueW9uZSBidXQKLS5FbSB3d3cgLAotLkl0IFBhICUlU1RBUlRVUF9TQ1JJUFQlJQotQSBz
 Y3JpcHQgdGhhdCBzdGFydHMgdGhlCi0uTm0KLXByb2dyYW0uIEl0IGlzIHVzZWQgdG8gc3RhcnQg
 JSVBUFBfVElUTEUlJSBhdCBzdGFydHVwIHRpbWUuCi0uRWwKLS5TaCBBVVRIT1JTCi0uQW4gRXJu
 c3QgZGUgSGFhbiBBcSB6bmVyZEBGcmVlQlNELm9yZwotLkFuIEpvbmF0aGFuIENoZW4gQXEgam9u
 Y0BjaGVuLm9yZy5uegpJbmRleDogZmlsZXMvZGFlbW9uY3RsLjEuaW4KPT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
 ZmlsZTogZmlsZXMvZGFlbW9uY3RsLjEuaW4KZGlmZiAtTiBmaWxlcy9kYWVtb25jdGwuMS5pbgot
 LS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZpbGVzL2RhZW1vbmN0
 bC4xLmluCTIxIEp1biAyMDA0IDE2OjQyOjU5IC0wMDAwCkBAIC0wLDAgKzEsNzggQEAKKy5EZCBG
 ZWJydWFyeSAyMSwgMjAwMgorLkR0ICUlQ09OVFJPTF9TQ1JJUFRfTUFOUEFHRV9USVRMRSUlIDEK
 Ky5PcyBGcmVlQlNECisuU2ggTkFNRQorLk5tICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlCisuTmQg
 JSVBUFBfVElUTEUlJSBzZXJ2ZXIgY29udHJvbCBpbnRlcmZhY2UKKy5TaCBTWU5PUFNJUworLk5t
 CisuT3AgRmwgamF2YS1vcHRpb25zCisuQXIge3N0YXJ0fHJlc3RhcnR8c3RvcH0KKy5TaCBERVND
 UklQVElPTgorVGhlCisuTm0KK3Byb2dyYW0gcHJvdmlkZXMgYW4gcmVzdHJpY3RlZCBpbnRlcmZh
 Y2UgdG8gdGhlICUlQVBQX1RJVExFJSUKK2FwcGxpY2F0aW9uIHNlcnZlci4gVGhlCisuTm0KK3By
 b2dyYW0gaXMgb25seSBhY2Nlc3NpYmxlIHRvIHVzZXJzIGluIHRoZSAnd3d3JyBncm91cCwgYW5k
 IHdpbGwKK29ubHkgaW52b2tlIHRoZSAlJUpBVkFfUE9SVF9PU19ERVNDUklQVElPTiUlICUlSkFW
 QV9QT1JUX1ZFUlNJT04lJSBKVk0uCisuUHAKK0FueSBKYXZhIG9wdGlvbnMgbGlzdGVkIGFyZSBo
 YW5kZWQgb2ZmIGRpcmVjdGx5IHRvIHRoZSBKVk0uIEFueQorY2xhc3NwYXRoIG9wdGlvbnMgd2ls
 bCBiZSBpZ25vcmVkLgorLlBwCitUaGUgcHJvZ3JhbSBleHBlY3RzIGV4YWN0bHkgb25lIG9mIHRo
 ZSBmb2xsb3dpbmcgdGVybWluYXRpbmcgY29tbWFuZHM6CisuQmwgLXRhZyAtd2lkdGggaW5kZW50
 CisuSXQgQXIgc3RhcnQKK1N0YXJ0ICUlQVBQX1RJVExFJSUsIGlmIGl0IGlzIG5vdCBhbHJlYWR5
 IHJ1bm5pbmcuCisuSXQgQXIgcmVzdGFydAorUmVzdGFydCAlJUFQUF9USVRMRSUlLiBJZiBpdCBp
 cyBhbHJlYWR5IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBiZSBzdG9wcGVkIGFuZAordGhlbiBzdGFy
 dGVkIHJpZ2h0IGFmdGVyIHRoYXQuIE90aGVyd2lzZSBpdCB3aWxsIGp1c3QgYmUgc3RhcnRlZCB1
 cC4KKy5JdCBBciBzdG9wCitTdG9wICUlQVBQX1RJVExFJSUsIGlmIGl0IGlzIGFjdHVhbGx5IHJ1
 bm5pbmcuCisuRWwKKy5TaCBFUlJPUlMKK1RoZSBmb2xsb3dpbmcgZXJyb3IgY29uZGl0aW9ucyBh
 cmUgZGV0ZWN0ZWQuIFRoZXkgd2lsbCBiZSBjaGVja2VkIGluIHRoZQorc3BlY2lmaWVkIG9yZGVy
 LiBJbiBlYWNoIGNhc2UgYW4gZXJyb3IgbWVzc2FnZSBpcyBwcmludGVkIHdpdGggdGhlIG5hbWUg
 b2YgdGhlCitjb250cm9sIHByb2dyYW0gcHJlcGVuZGVkLgorLlBwCitJZiBubyBhcmd1bWVudCBp
 cyBwYXNzZWQsIHRoZW4gYSBzaW1wbGUgaGVscCBtZXNzYWdlIGlzIHByaW50ZWQgYW5kIHRoZQor
 cHJvZ3JhbSBleGlzdHMgd2l0aCBlcnJvciBjb2RlIDAuCisuUHAKK0lmIGF0IGxlYXN0IG9uZSBh
 cmd1bWVudCBpcyBwYXNzZWQsIGJ1dCBpdCBpcyBkaWZmZXJlbnQgZnJvbQorLkFyIHN0YXJ0ICwK
 Ky5BciByZXN0YXJ0CitvcgorLkFyIHN0b3AKK3RoZW4gdGhlIGhlbHAgbWVzc2FnZSBpcyBwcmlu
 dGVkIGFzIHdlbGwsIGFuZCB0aGUgcHJvZ3JhbSBleGl0cyB3aXRoIGVycm9yCitjb2RlIDEuCisu
 UHAKK1RoZSBmb2xsb3dpbmcgZXJyb3JzIGNvbmRpdGlvbnMgYXJlIGRlZmluZWQ6CisuQmwgLXRh
 ZyAtd2lkdGggaW5kZW50CisuSXQgRW0gSWxsZWdhbCBwcm9ncmFtIGFyZ3VtZW50IChlcnJvciBj
 b2RlIDEpCisuSXQgRW0gUElEIGZpbGUgbm90IGZvdW5kIChlcnJvciBjb2RlIDIpCisuSXQgRW0g
 UElEIGZpbGUgdG9vIGxhcmdlIChlcnJvciBjb2RlIDMpCisuSXQgRW0gUElEIGZpbGUgY29udGFp
 bnMgaWxsZWdhbCBjaGFyYWN0ZXIgKGVycm9yIGNvZGUgNCkKKy5JdCBFbSBLaWxsIG9mIHByb2Nl
 c3MgZmFpbGVkIChlcnJvciBjb2RlIDUpCisuSXQgRW0gJSVBUFBfVElUTEUlJSBpcyBhbHJlYWR5
 IHJ1bm5pbmcgKGVycm9yIGNvZGUgNikKKy5JdCBFbSAlJUFQUF9USVRMRSUlIGlzIG5vdCBydW5u
 aW5nIChlcnJvciBjb2RlIDcpCisuSXQgRW0gVW5hYmxlIHRvIGNoZGlyIHRvIHRoZSAlJUFQUF9U
 SVRMRSUlIGhvbWUgZGlyZWN0b3J5IChlcnJvciBjb2RlIDgpCisuSXQgRW0gVW5hYmxlIHRvIG9w
 ZW4gdGhlIHN0ZG91dCBsb2cgZmlsZSAoZXJyb3IgY29kZSA5KQorLkl0IEVtIFVuYWJsZSB0byBv
 cGVuIHRoZSBzdGRlcnIgbG9nIGZpbGUgKGVycm9yIGNvZGUgMTApCisuSXQgRW0gVW5hYmxlIHRv
 IHN0YXJ0ICUlQVBQX1RJVExFJSUgKGVycm9yIGNvZGUgMTEpCisuRWwKKy5TaCBGSUxFUworLkJs
 IC10YWcgLXdpZHRoIC1pbmRlbnQKKy5JdCBQYSAlJVBJRF9GSUxFJSUKK1RoZSAlJUFQUF9USVRM
 RSUlIFBJRCBmaWxlIHRoYXQgaXMgdXNlZCB0byBzdG9yZSB0aGUgcHJvY2VzcyBJRCBvZiB0aGUK
 K2N1cnJlbnRseSBydW5uaW5nIHByb2Nlc3MgaW4uIEl0IGlzIGVtcHRpZWQgYXMgc29vbiBhcyB0
 aGUgc2VydmVyIGlzIHN0b3BwZWQKK2FuZCBmaWxsZWQgd2l0aCB0aGUgcHJvY2VzcyBJRCB3aGVu
 IGl0IGlzIHN0YXJ0ZWQuIEl0IHNob3VsZCBuZXZlciBiZSB3cml0YWJsZQorZm9yIGFueW9uZSBi
 dXQKKy5FbSB3d3cgLAorLkl0IFBhICUlU1RBUlRVUF9TQ1JJUFQlJQorQSBzY3JpcHQgdGhhdCBz
 dGFydHMgdGhlCisuTm0KK3Byb2dyYW0uIEl0IGlzIHVzZWQgdG8gc3RhcnQgJSVBUFBfVElUTEUl
 JSBhdCBzdGFydHVwIHRpbWUuCisuRWwKKy5TaCBBVVRIT1JTCisuQW4gRXJuc3QgZGUgSGFhbiBB
 cSB6bmVyZEBGcmVlQlNELm9yZworLkFuIEpvbmF0aGFuIENoZW4gQXEgam9uY0BjaGVuLm9yZy5u
 egpJbmRleDogZmlsZXMvZGFlbW9uY3RsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvZGFl
 bW9uY3RsLmMKZGlmZiAtTiBmaWxlcy9kYWVtb25jdGwuYwotLS0gZmlsZXMvZGFlbW9uY3RsLmMJ
 MTMgSmFuIDIwMDUgMDE6NTU6MTMgLTAwMDAJMS4yCisrKyAvZGV2L251bGwJMSBKYW4gMTk3MCAw
 MDowMDowMCAtMDAwMApAQCAtMSw1NTcgKzAsMCBAQAotLyoKLSAqIC0qLSBtb2RlOiBGdW5kYW1l
 bnRhbDsgdGFiLXdpZHRoOiA0OyAtKi0KLSAqIGV4OnRzPTQKLSAqCi0gKiBEYWVtb24gY29udHJv
 bCBwcm9ncmFtLCB3aXRoIEphdmEgU3RhcnR1cCBvcHRpb25zLgotICoKLSAqCU9yaWdpbmFsIGJ5
 IEVybnN0IGRlIEhhYW4gPHpuZXJkQGZyZWVic2Qub3JnPgotICoJd3d3L2pha2FydGEtdG9tY2F0
 NC9maWxlcy9kYWVtb25jdGwuYwotICoKLSAqICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzMy9m
 aWxlcy9kYWVtb25jdGwuYyx2IDEuMiAyMDA1LzAxLzEzIDAxOjU1OjEzIGhxIEV4cCAkCi0gKi8K
 LQotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c2ln
 bmFsLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRl
 IDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzeXNsb2cuaD4KLSNp
 bmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxzeXMvZXJybm8uaD4KLSNpbmNsdWRlIDxzeXMv
 c3RhdC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy91aW8uaD4KLQot
 I2RlZmluZQlUUlVFCTEKLSNkZWZpbmUJRkFMU0UJMAotCi0vKiBUaGUgaW50ZXJ2YWwgaW4gc2Vj
 b25kcyBiZXR3ZWVuIHRoZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZSBwcm9jZXNzCi0gICBkaWVk
 IGFmdGVyIGEga2lsbCAqLwotI2RlZmluZSBTVE9QX1RJTUVfSU5URVJWQUwJCTEKLQotI2RlZmlu
 ZSBFUlJfSUxMRUdBTF9BUkdVTUVOVAkJCQkxCi0jZGVmaW5lIEVSUl9QSURfRklMRV9OT1RfRk9V
 TkQJCQkJMgotI2RlZmluZSBFUlJfS0lMTF9GQUlMRUQJCQkJCQk1Ci0jZGVmaW5lIEVSUl9BTFJF
 QURZX1JVTk5JTkcJCQkJCTYKLSNkZWZpbmUgRVJSX05PVF9SVU5OSU5HCQkJCQkJNwotI2RlZmlu
 ZSBFUlJfQ0hESVJfVE9fQVBQX0hPTUUJCQkJOAotI2RlZmluZSBFUlJfQUNDRVNTX0pBUl9GSUxF
 CQkJCQkxNwotI2RlZmluZSBFUlJfU1RET1VUX0xPR0ZJTEVfT1BFTgkJCQk5Ci0jZGVmaW5lIEVS
 Ul9TVERFUlJfTE9HRklMRV9PUEVOCQkJCTEwCi0jZGVmaW5lIEVSUl9GT1JLX0ZBSUxFRAkJCQkJ
 CTExCi0jZGVmaW5lIEVSUl9TVEFUX0pBVkFfSE9NRQkJCQkJMTIKLSNkZWZpbmUgRVJSX0pBVkFf
 SE9NRV9OT1RfRElSCQkJCTEzCi0jZGVmaW5lIEVSUl9TVEFUX0pBVkFfQ01ECQkJCQkxNAotI2Rl
 ZmluZSBFUlJfSkFWQV9DTURfTk9UX0ZJTEUJCQkJMTUKLSNkZWZpbmUgRVJSX0pBVkFfQ01EX05P
 VF9FWEVDVVRBQkxFCQkJMTYKLQotLyoKLQlGdW5jdGlvbiBkZWNsYXJhdGlvbnMuCi0gKi8KLXN0
 YXRpYyB2b2lkIHByaW50VXNhZ2UgKHZvaWQpOwotc3RhdGljIGludCByZWFkUElEICh2b2lkKTsK
 LXN0YXRpYyB2b2lkIHdyaXRlUElEIChpbnQgcGlkKTsKLXN0YXRpYyB2b2lkIGNsZWFyUElEICh2
 b2lkKTsKLXN0YXRpYyB2b2lkIHN0YXJ0IChpbnQgamF2YU9wdCwgY2hhciAqIGphdmFBcmdzIFtd
 LCBpbnQgamJvc3NPcHQsIGNoYXIgKiBqYm9zc0FyZ3MgW10pOwotc3RhdGljIHZvaWQgc3RvcCAo
 dm9pZCk7Ci1zdGF0aWMgdm9pZCByZXN0YXJ0IChpbnQgamF2YU9wdCwgY2hhciAqIGphdmFBcmdz
 IFtdLCBpbnQgamJvc3NPcHQsIGNoYXIgKiBqYm9zc0FyZ3MgW10pOwotc3RhdGljIHZvaWQgbG9n
 T3V0cHV0IChjaGFyICopOwotCi0vKgotCUdsb2JhbHMKLSAqLwotc3RhdGljIGludCBpc1F1aWV0
 ID0gRkFMU0U7Ci1zdGF0aWMgY2hhciAqIG9wdFF1aWV0ID0gIi1xIiwJCQkvKiBxdWlldCBvcHRp
 b24gKi8KLQkJCSogb3B0Q29uZmlnID0gIi1jb25maWciOwkvKiBqYm9zcyBjb25maWd1cmF0aW9u
 IG9wdGlvbiAqLwotCi0vKioKLSAqIE1haW4gZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgY2Fs
 bGVkIHdoZW4gdGhpcyBwcm9ncmFtIGlzIGV4ZWN1dGVkLgotICoKLSAqIEBwYXJhbSBhcmdjCi0g
 KiAgICB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwbHVzIG9uZSwgc28gYWx3YXlzIGdyZWF0ZXIg
 dGhhbiAwLgotICoKLSAqIEBwYXJhbSBhcmd2Ci0gKiAgICB0aGUgYXJndW1lbnRzIGluIGFuIGFy
 cmF5IG9mIGNoYXJhY3RlciBwb2ludGVycywgd2hlcmUgdGhlIGxhc3QgYXJndW1lbnQKLSAqICAg
 IGVsZW1lbnQgaXMgZm9sbG93ZWQgYnkgYSBOVUxMIGVsZW1lbnQuCi0gKi8KLWludAotbWFpbiAo
 Ci0gaW50IGFyZ2MsCi0gY2hhciAqYXJndiBbXSkKLXsKLQkvKiBEZWNsYXJlIHZhcmlhYmxlcywg
 bGlrZSBhbGwgb3RoZXIgZ29vZCBBTlNJIEMgcHJvZ3JhbXMgZG8gOikgKi8KLQlpbnQgaSwgamF2
 YU9wdCwgamJvc3NPcHQ7Ci0JY2hhciAqYXJndW1lbnQsICoqamF2YUFyZ3MsICoqamJvc3NBcmdz
 OwotCi0JLyogUGFyc2UgdGhlIGFyZ3VtZW50cyAqLwotCWlmIChhcmdjIDwgMikKLQl7Ci0JCXBy
 aW50VXNhZ2UgKCk7Ci0JCXJldHVybiAwOwotCX0KLQotCS8qIFhYWDogRml4IGZvciBzZXR0aW5n
 IHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIGphdmEgd3JhcHBlciBzY3JpcHQgKi8KLQlzZXR1
 aWQgKGdldGV1aWQgKCkpOwotCXNldGdpZCAoZ2V0ZWdpZCAoKSk7Ci0KLQkvKgotCQlCdWlsZCB1
 cCBqYXZhIGFuZCBqYm9zcyBvcHRpb24gYmxvY2tzLgotCSAqLwotCWphdmFPcHQgPSBqYm9zc09w
 dCA9IDA7Ci0JZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLQl7Ci0JCWlmIChzdHJjbXAgKGFy
 Z3YgW2ldLCBvcHRRdWlldCkgPT0gMCkKLQkJewotCQkJaXNRdWlldCA9IFRSVUU7Ci0KLQkJfSBl
 bHNlIGlmIChzdHJjbXAgKGFyZ3YgW2ldLCBvcHRDb25maWcpID09IDApCi0JCXsKLQkJCWpib3Nz
 T3B0ICs9IDI7Ci0JCQlpZiAoKytpID49IGFyZ2MpCi0JCQl7Ci0JCQkJcHJpbnRVc2FnZSAoKTsK
 LQkJCQlyZXR1cm4gRVJSX0lMTEVHQUxfQVJHVU1FTlQ7Ci0JCQl9Ci0KLQkJfSBlbHNlIGlmICgq
 YXJndiBbaV0gPT0gJy0nKQotCQl7Ci0JCQlqYXZhT3B0Kys7Ci0JCX0KLQl9Ci0JaWYgKGphdmFP
 cHQgPT0gMCkKLQkJamF2YUFyZ3MgPSBOVUxMOwotCWVsc2UKLQl7Ci0JCWludCBqID0gMDsKLQkJ
 amF2YUFyZ3MgPSBtYWxsb2MgKHNpemVvZiAoY2hhciAqKSAqIGphdmFPcHQpOwotCQlmb3IgKGkg
 PSAwOyBpIDwgYXJnYzsgaSsrKQotCQl7Ci0JCQlpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVp
 ZXQpICYmCi0JCQkJc3RyY21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSAmJgotCQkJCSphcmd2IFtp
 XSA9PSAnLScpCi0JCQl7Ci0JCQkJamF2YUFyZ3MgW2orK10gPSBhcmd2IFtpXTsKLQkJCX0KLQkJ
 fQotCX0KLQlpZiAoamJvc3NPcHQgPT0gMCkKLQkJamJvc3NBcmdzID0gTlVMTDsKLQllbHNlCi0J
 ewotCQlpbnQgaiA9IDA7Ci0JCWpib3NzQXJncyA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyICopICog
 amJvc3NPcHQpOwotCQlmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQotCQl7Ci0JCQlpZiAoc3Ry
 Y21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSA9PSAwKQotCQkJewotCQkJCWpib3NzQXJncyBbaisr
 XSA9ICItYyI7Ci0JCQkJamJvc3NBcmdzIFtqKytdID0gYXJndiBbKytpXTsKLQkJCX0KLQkJfQot
 CX0KLQotCS8qCi0JCURlY2lkZSBvbiBqdXN0IHdoYXQgdG8gY2FsbC4KLQkgKi8KLQlhcmd1bWVu
 dCA9IGFyZ3YgW2FyZ2MgLSAxXTsKLQlpZiAoc3RyY21wICgic3RhcnQiLCBhcmd1bWVudCkgPT0g
 MCkKLQl7Ci0JCXN0YXJ0IChqYXZhT3B0LCBqYXZhQXJncywgamJvc3NPcHQsIGpib3NzQXJncyk7
 Ci0KLQl9IGVsc2UgaWYgKHN0cmNtcCAoInN0b3AiLCBhcmd1bWVudCkgPT0gMCkKLQl7Ci0JCXN0
 b3AgKCk7Ci0KLQl9IGVsc2UgaWYgKHN0cmNtcCAoInJlc3RhcnQiLCBhcmd1bWVudCkgPT0gMCkK
 LQl7Ci0JCXJlc3RhcnQgKGphdmFPcHQsIGphdmFBcmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsK
 LQotCX0gZWxzZSB7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUl
 OiBJbGxlZ2FsIGFyZ3VtZW50IFwiJXNcIi5cbiIsIGFyZ3VtZW50KTsKLQkJcHJpbnRVc2FnZSAo
 KTsKLQkJZXhpdCAoRVJSX0lMTEVHQUxfQVJHVU1FTlQpOwotCX0KLQotCXJldHVybiBFWElUX1NV
 Q0NFU1M7Ci19Ci0KLS8qKgotICogUHJpbnRzIHVzYWdlIGluZm9ybWF0aW9uIHRvIHN0ZG91dC4K
 LSAqLwotc3RhdGljIHZvaWQKLXByaW50VXNhZ2UgKHZvaWQpCi17Ci0JcHJpbnRmICgiVXNhZ2U6
 ICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlIFtqYXZhLW9wdGlvbnNdIFstY29uZmlnIGpib3NzY29u
 ZmlnXSB7c3RhcnR8c3RvcHxyZXN0YXJ0fVxuIik7Ci19Ci0KLS8qKgotICogUmVhZHMgYSBQSUQg
 ZnJvbSB0aGUgUElEIGZpbGUuCi0gKgotICogQHJldHVybgotICogICAgdGhlIFBJRCwgb3IgLTEg
 aWYgdGhlIGZpbGUgd2FzIGVtcHR5LgotICovCi1zdGF0aWMgaW50Ci1yZWFkUElEICh2b2lkKQot
 ewotCUZJTEUgKiBmaWxlOwotCWludCBwaWQ7Ci0KLQlsb2dPdXRwdXQgKCI+PiBSZWFkaW5nIFBJ
 RCBmaWxlICglJVBJRF9GSUxFJSUpLi4uIik7Ci0JZmlsZSA9IGZvcGVuICgiJSVQSURfRklMRSUl
 IiwgInIiKTsKLQlpZiAoIWZpbGUpCi0JewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7
 Ci0JCXBlcnJvciAoIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gb3BlbiAlJVBJ
 RF9GSUxFJSUgZm9yIHJlYWRpbmc6ICIpOwotCQlleGl0IChFUlJfUElEX0ZJTEVfTk9UX0ZPVU5E
 KTsKLQl9Ci0JaWYgKGZzY2FuZiAoZmlsZSwgIiVkIiwgJnBpZCkgPCAxKQotCQlwaWQgPSAtMTsK
 LQlmY2xvc2UgKGZpbGUpOwotCi0JbG9nT3V0cHV0ICgiIFsgRE9ORSBdXG4iKTsKLQlyZXR1cm4g
 cGlkOwotfQotCi0vKioKLSAqIFdyaXRlcyBhIHByb2Nlc3MgSUQgdG8gdGhlIHNwZWNpZmllZCBm
 aWxlLiBUaGUgZmlsZSBpcyBpZGVudGlmaWVkIGJ5IGEgZmlsZQotICogaGFuZGxlLgotICoKLSAq
 IEBwYXJhbSBwaWQKLSAqICAgIHRoZSBQSUQgdG8gc3RvcmUsIGFsd2F5cyBncmVhdGVyIHRoYW4g
 MC4KLSAqLwotc3RhdGljIHZvaWQKLXdyaXRlUElEICgKLSBpbnQgcGlkKQotewotCUZJTEUgKiBm
 aWxlOwotCi0JbG9nT3V0cHV0ICgiPj4gV3JpdGluZyBQSUQgZmlsZS4uLiIpOwotCWZpbGUgPSBm
 b3BlbiAoIiUlUElEX0ZJTEUlJSIsICJ3Iik7Ci0JaWYgKCFmaWxlKQotCXsKLQkJbG9nT3V0cHV0
 ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTog
 VW5hYmxlIHRvIG9wZW4gJSVQSURfRklMRSUlIGZvciB3cml0aW5nOiAiKTsKLQkJZXhpdCAoRVJS
 X1BJRF9GSUxFX05PVF9GT1VORCk7Ci0JfQotCWZwcmludGYgKGZpbGUsICIlZFxuIiwgcGlkKTsK
 LQlmY2xvc2UgKGZpbGUpOwotCi0JbG9nT3V0cHV0ICgiIFsgRE9ORSBdXG4iKTsKLX0KLQotLyoq
 Ci0JVHJ1bmNhdGUgdGhlIFBJRCBmaWxlLgotICovCi1zdGF0aWMgdm9pZAotY2xlYXJQSUQgKHZv
 aWQpCi17Ci0JaWYgKHRydW5jYXRlICgiJSVQSURfRklMRSUlIiwgMCkgIT0gMCkKLQl7Ci0JCXBl
 cnJvciAoIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gY2xlYXIgJSVQSURfRklM
 RSUlOiAiKTsKLQkJZXhpdCAoRVJSX1BJRF9GSUxFX05PVF9GT1VORCk7Ci0JfQotfQotCi0vKioK
 LSAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgaXMgcnVubmluZy4KLSAqCi0gKiBA
 cGFyYW0gcGlkCi0gKiAgICB0aGUgcHJvY2VzcyBpZCwgZ3JlYXRlciB0aGFuIDAuCi0gKgotICog
 QHJldHVybgotICogICAgMCBpZiB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmcs
 IGEgZGlmZmVyZW50IHZhbHVlIG90aGVyd2lzZS4KLSAqLwotc3RhdGljIGludAotZXhpc3RzUHJv
 Y2VzcyAoCi0gaW50IHBpZCkKLXsKLQlpbnQgcmVzdWx0OwotCi0JLyogQ2hlY2sgcHJlY29uZGl0
 aW9ucyAqLwotCWFzc2VydCAocGlkID4gMCk7Ci0KLQkvKiBTZWUgaWYgdGhlIHByb2Nlc3MgZXhp
 c3RzICovCi0gICAJcmVzdWx0ID0ga2lsbCAocGlkLCAwKTsKLQotCS8qIElmIHRoZSByZXN1bHQg
 aXMgMCwgdGhlbiB0aGUgcHJvY2VzcyBleGlzdHMgKi8KLQlyZXR1cm4gcmVzdWx0ID09IDA7Ci19
 Ci0KLS8qKgotICogS2lsbHMgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVk
 IElELgotICoKLSAqIEBwYXJhbSBwaWQKLSAqICAgIHRoZSBwcm9jZXNzIGlkLCBncmVhdGVyIHRo
 YW4gMC4KLSAqLwotc3RhdGljIHZvaWQKLWtpbGxQcm9jZXNzICgKLSBpbnQgcGlkKQotewotCWlu
 dCByZXN1bHQ7Ci0JdW5zaWduZWQgaW50IHdhaXRlZDsKLQl1bnNpZ25lZCBpbnQgZm9yY2VkOwot
 CXVuc2lnbmVkIGludCBpbnRlcnZhbCA9IFNUT1BfVElNRV9JTlRFUlZBTDsKLQl1bnNpZ25lZCBp
 bnQgdGltZW91dCAgPSAlJVNUT1BfVElNRU9VVCUlOwotCi0JLyogQ2hlY2sgcHJlY29uZGl0aW9u
 cyAqLwotCWFzc2VydCAocGlkID4gMCk7Ci0KLQlpZiAoIWlzUXVpZXQpCi0JCXByaW50ZiAoIj4+
 IFRlcm1pbmF0aW5nIHByb2Nlc3MgJWQuLi4iLCBwaWQpOwotCXJlc3VsdCA9IGtpbGwgKHBpZCwg
 U0lHVEVSTSk7Ci0JaWYgKHJlc3VsdCA8IDApIHsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1c
 biIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxl
 IHRvIGtpbGwgcHJvY2VzcyAlZDogIiwgcGlkKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAo
 RVJSX0tJTExfRkFJTEVEKTsKLQl9Ci0KLQkvKiBXYWl0IHVudGlsIHRoZSBwcm9jZXNzIGlzIGFj
 dHVhbGx5IGtpbGxlZCAqLwotICAgIHJlc3VsdCA9IGV4aXN0c1Byb2Nlc3MgKHBpZCk7Ci0JZm9y
 ICh3YWl0ZWQ9MDsgcmVzdWx0ID09IDEgJiYgd2FpdGVkIDwgdGltZW91dDsgd2FpdGVkICs9IGlu
 dGVydmFsKQotCXsKLQkJbG9nT3V0cHV0ICgiLiIpOwotCQlmZmx1c2ggKHN0ZG91dCk7Ci0JCXNs
 ZWVwIChpbnRlcnZhbCk7Ci0gICAgCXJlc3VsdCA9IGV4aXN0c1Byb2Nlc3MgKHBpZCk7Ci0JfQot
 Ci0JLyogSWYgdGhlIHByb2Nlc3Mgc3RpbGwgZXhpc3RzLCB0aGVuIGhhdmUgbm8gbWVyY3kgYW5k
 IGtpbGwgaXQgKi8KLQlmb3JjZWQgPSAwOwotCWlmIChyZXN1bHQgPT0gMSkKLQl7Ci0JCS8qIEZv
 cmNlIHRoZSBwcm9jZXNzIHRvIGRpZSAqLwotCQlyZXN1bHQgPSBraWxsIChwaWQsIFNJR0tJTEwp
 OwotCQlpZiAocmVzdWx0ID09IDApIHsKLQkJCWZvcmNlZCA9IDE7Ci0JCQlsb2dPdXRwdXQgKCIg
 WyBLSUxMRUQgXVxuIik7Ci0JCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05B
 TUUlJTogUHJvY2VzcyAlZCBkaWQgbm90IHRlcm1pbmF0ZSB3aXRoaW4gJSVTVE9QX1RJTUVPVVQl
 JSBzZWMuIEtpbGxlZC5cbiIsIHBpZCk7Ci0JCX0gZWxzZSBpZiAocmVzdWx0ICE9IEVTUkNIKSB7
 Ci0JCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCQlmcHJpbnRmIChzdGRlcnIsICIl
 JUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGtpbGwgcHJvY2VzcyAlZDogIiwgcGlk
 KTsKLQkJCXBlcnJvciAoTlVMTCk7Ci0JCQlleGl0IChFUlJfS0lMTF9GQUlMRUQpOwotCQl9Ci0J
 fQotCi0JaWYgKGZvcmNlZCA9PSAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci0J
 fQotfQotCi0vKioKLSAqIFN0YXJ0cyB0aGUgZGFlbW9uLgotICovCi1zdGF0aWMgdm9pZAotc3Rh
 cnQgKAotIGludCBqYXZhT3B0LAotIGNoYXIgKiBqYXZhQXJncyBbXSwKLSBpbnQgamJvc3NPcHQs
 Ci0gY2hhciAqIGpib3NzQXJncyBbXSkKLXsKLQlpbnQgaSwgYXJnYzsKLQljaGFyICoqIGFyZ3Y7
 Ci0JaW50IHBpZDsKLQlpbnQgcmVzdWx0OwotCWludCBzdGRvdXRMb2dGaWxlOwotCWludCBzdGRl
 cnJMb2dGaWxlOwotCXN0cnVjdCBzdGF0IHNiOwotCi0JcGlkID0gcmVhZFBJRCAoKTsKLQotCWxv
 Z091dHB1dCAoIj4+IFN0YXJ0aW5nICUlQVBQX1RJVExFJSUgJSVQT1JUVkVSU0lPTiUlLi4uIik7
 Ci0JaWYgKHBpZCAhPSAtMSkKLQl7Ci0JCS8qIENoZWNrIGlmIHRoZSBwcm9jZXNzIGFjdHVhbGx5
 IGV4aXN0cyAqLwotCQlyZXN1bHQgPSBleGlzdHNQcm9jZXNzIChwaWQpOwotCQlpZiAocmVzdWx0
 ID09IDEpCi0JCXsKLQkJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJCWZwcmludGYg
 KHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiAlJUFQUF9USVRMRSUlICUlUE9SVFZF
 UlNJT04lJSBpcyBhbHJlYWR5IHJ1bm5pbmcsIFBJRCBpcyAlZC5cbiIsIHBpZCk7Ci0JCQlleGl0
 IChFUlJfQUxSRUFEWV9SVU5OSU5HKTsKLQkJfQotCX0KLQotCS8qIENoZWNrIGlmIHRoZSBKREsg
 aG9tZSBkaXJlY3RvcnkgaXMgYWN0dWFsbHkgYSBkaXJlY3RvcnkgKi8KLQlyZXN1bHQgPSBzdGF0
 ICgiJSVKQVZBX0hPTUUlJSIsICZzYik7Ci0JaWYgKHJlc3VsdCAhPSAwKSB7Ci0JCWxvZ091dHB1
 dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQ
 VF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUlSkFWQV9IT01FJSU6ICIpOwotCQlwZXJyb3IgKE5V
 TEwpOwotCQlleGl0IChFUlJfU1RBVF9KQVZBX0hPTUUpOwotCX0KLQlpZiAoIVNfSVNESVIgKHNi
 LnN0X21vZGUpKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50ZiAo
 c3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IEphdmEgaG9tZSBkaXJlY3RvcnkgJSVK
 QVZBX0hPTUUlJSBpcyBub3QgYSBkaXJlY3RvcnkuXG4iKTsKLQkJZXhpdCAoRVJSX0pBVkFfSE9N
 RV9OT1RfRElSKTsKLQl9Ci0KLQkvKiBDaGVjayBpZiB0aGUgSmF2YSBjb21tYW5kIGlzIGFjdHVh
 bGx5IGFuIGV4ZWN1dGFibGUgcmVndWxhciBmaWxlICovCi0JcmVzdWx0ID0gc3RhdCAoIiUlSkFW
 QSUlIiwgJnNiKTsKLQlpZiAocmVzdWx0ICE9IDApIHsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVE
 IF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5h
 YmxlIHRvIHN0YXQgJSVKQVZBJSU6ICIpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlleGl0IChFUlJf
 U1RBVF9KQVZBX0NNRCk7Ci0JfQotCWlmICghU19JU1JFRyAoc2Iuc3RfbW9kZSkpIHsKLQkJbG9n
 T3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xf
 U0NSSVBUX05BTUUlJTogSmF2YSBjb21tYW5kICUlSkFWQSUlIGlzIG5vdCBhIHJlZ3VsYXIgZmls
 ZS5cbiIpOwotCQlleGl0IChFUlJfSkFWQV9DTURfTk9UX0ZJTEUpOwotCX0KLQlyZXN1bHQgPSBh
 Y2Nlc3MgKCIlJUpBVkElJSIsIFhfT0spOwotCWlmIChyZXN1bHQgIT0gMCkgewotCQlsb2dPdXRw
 dXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJ
 UFRfTkFNRSUlOiBKYXZhIGNvbW1hbmQgJSVKQVZBJSUgaXMgbm90IGV4ZWN1dGFibGU6ICIpOwot
 CQlwZXJyb3IgKE5VTEwpOwotCQlleGl0IChFUlJfSkFWQV9DTURfTk9UX0VYRUNVVEFCTEUpOwot
 CX0KLQotCS8qIENoYW5nZSBkaXJlY3RvcnkgKi8KLQlyZXN1bHQgPSBjaGRpciAoIiUlQVBQX0hP
 TUUlJSIpOwotCWlmIChyZXN1bHQgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4i
 KTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0
 byBhY2Nlc3MgZGlyZWN0b3J5ICUlQVBQX0hPTUUlJTogIik7Ci0JCXBlcnJvciAoTlVMTCk7Ci0J
 CWV4aXQgKEVSUl9DSERJUl9UT19BUFBfSE9NRSk7Ci0JfQotCi0JLyogU2VlIGlmIHRoZSBKQVIg
 ZmlsZSBleGlzdHMgKi8KLQlyZXN1bHQgPSBhY2Nlc3MgKCIlJUFQUF9IT01FJSUvJSVKQVJfRklM
 RSUlIiwgUl9PSyk7Ci0JaWYgKHJlc3VsdCA8IDApIHsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVE
 IF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5h
 YmxlIHRvIGFjY2VzcyBKQVIgZmlsZSAlJUFQUF9IT01FJSUvJSVKQVJfRklMRSUlOiAiKTsKLQkJ
 cGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJSX0FDQ0VTU19KQVJfRklMRSk7Ci0JfQotCi0JLyog
 T3BlbiB0aGUgc3Rkb3V0IGxvZyBmaWxlICovCi0Jc3Rkb3V0TG9nRmlsZSA9IG9wZW4gKCIlJVNU
 RE9VVF9MT0clJSIsIE9fV1JPTkxZKTsKLQlpZiAoc3Rkb3V0TG9nRmlsZSA8IDApIHsKLQkJbG9n
 T3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xf
 U0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIG9wZW4gJSVTVERPVVRfTE9HJSUgZm9yIHdyaXRpbmc6
 ICIpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlleGl0IChFUlJfU1RET1VUX0xPR0ZJTEVfT1BFTik7
 Ci0JfQotCWxzZWVrIChzdGRvdXRMb2dGaWxlLCAob2ZmX3QpIDAsIFNFRUtfRU5EKTsKLQotCS8q
 IE9wZW4gdGhlIHN0ZGVyciBsb2cgZmlsZSAqLwotCXN0ZGVyckxvZ0ZpbGUgPSBvcGVuICgiJSVT
 VERFUlJfTE9HJSUiLCBPX1dST05MWSk7Ci0JaWYgKHN0ZGVyckxvZ0ZpbGUgPCAwKSB7Ci0JCWxv
 Z091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9M
 X1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlU1RERVJSX0xPRyUlIGZvciB3cml0aW5n
 OiAiKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJSX1NUREVSUl9MT0dGSUxFX09QRU4p
 OwotCX0KLQlsc2VlayAoc3RkZXJyTG9nRmlsZSwgKG9mZl90KSAwLCBTRUVLX0VORCk7Ci0KLQkv
 KiBTcGxpdCB0aGlzIHByb2Nlc3MgaW4gdHdvICovCi0Jc3dpdGNoIChwaWQgPSBmb3JrICgpKQot
 CXsKLQljYXNlIC0xOgotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYg
 KHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gZm9yazogIik7Ci0J
 CXBlcnJvciAoTlVMTCk7Ci0JCWV4aXQgKEVSUl9GT1JLX0ZBSUxFRCk7Ci0JCWJyZWFrOwotCi0J
 Y2FzZSAwOgotCQkvKiBSZWRpcmVjdCBzdGRvdXQgdG8gbG9nIGZpbGUgKi8KLQkJZHVwMiAoc3Rk
 b3V0TG9nRmlsZSwgU1RET1VUX0ZJTEVOTyk7Ci0KLQkJLyogUmVkaXJlY3Qgc3RkZXJyIHRvIGxv
 ZyBmaWxlICovCi0JCWR1cDIgKHN0ZGVyckxvZ0ZpbGUsIFNUREVSUl9GSUxFTk8pOwotCi0JCS8q
 IFRPRE86IFN1cHBvcnQgcmVkaXJlY3Rpb24gb2YgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciB0byB0
 aGUgc2FtZQotCQkJCSBmaWxlIHVzaW5nIHBpcGUgKDIpICovCi0KLQkJLyoKLQkJCUJ1aWxkIHRo
 ZSBhcmd1bWVudCB2ZWN0b3IsIHdpdGggdGhlIGphdmEvamJvc3Mgb3B0aW9ucyBpZiBhbnkuCi0J
 CSAqLwotCQlhcmd2ID0gbWFsbG9jIChzaXplb2YgKGNoYXIgKikgKiAoamF2YU9wdCArIGpib3Nz
 T3B0ICsgNSkpOwotCQlhcmdjID0gMDsKLQkJYXJndiBbYXJnYysrXSA9ICIlJUpBVkElJSI7Ci0J
 CWZvciAoaSA9IDA7IGkgPCBqYXZhT3B0OyBpKyspCi0JCQlhcmd2IFthcmdjKytdID0gamF2YUFy
 Z3MgW2ldOwotCQlhcmd2IFthcmdjKytdID0gIi1jcCI7Ci0JCWFyZ3YgW2FyZ2MrK10gPSAiJSVK
 QVZBX0NQJSUiOwotCQlhcmd2IFthcmdjKytdID0gIiUlSkFWQV9NQUlOJSUiOwotCQlmb3IgKGkg
 PSAwOyBpIDwgamJvc3NPcHQ7IGkrKykKLQkJCWFyZ3YgW2FyZ2MrK10gPSBqYm9zc0FyZ3MgW2ld
 OwotCQlhcmd2IFthcmdjKytdID0gTlVMTDsKLQotCQkvKiBFeGVjdXRlIHRoZSBjb21tYW5kICov
 Ci0JCWV4ZWN2IChhcmd2IFswXSwgYXJndik7Ci0JCXBlcnJvciAoTlVMTCk7Ci0JCWJyZWFrOwot
 Ci0JZGVmYXVsdDoKLQkJbG9nT3V0cHV0ICgiIFsgRE9ORSBdXG4iKTsKLQkJd3JpdGVQSUQgKHBp
 ZCk7Ci0JfQotfQotCi0vKioKLSAqIFN0b3BzIHRoZSBkYWVtb24uCi0gKi8KLXN0YXRpYyB2b2lk
 Ci1zdG9wICh2b2lkKQotewotCWludCBwaWQ7Ci0KLQlwaWQgPSByZWFkUElEICgpOwotCi0JbG9n
 T3V0cHV0ICgiPj4gQ2hlY2tpbmcgaWYgJSVBUFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMg
 cnVubmluZy4uLiIpOwotCi0JLyogSWYgdGhlcmUgaXMgYSBQSUQsIHNlZSBpZiB0aGUgcHJvY2Vz
 cyBzdGlsbCBleGlzdHMgKi8KLQlpZiAocGlkICE9IC0xKQotCXsKLQkJaW50IHJlc3VsdCA9IGtp
 bGwgKHBpZCwgMCk7Ci0JCWlmIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFU1JDSCkKLQkJewot
 CQkJY2xlYXJQSUQgKCk7Ci0JCQlwaWQgPSAtMTsKLQkJfQotCX0KLQotCS8qIElmIHRoZXJlIGlz
 IG5vIHJ1bm5pbmcgcHJvY2VzcywgcHJvZHVjZSBhbiBlcnJvciAqLwotCWlmIChwaWQgPT0gLTEp
 Ci0JewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwg
 IiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiAlJUFQUF9USVRMRSUlICUlUE9SVFZFUlNJT04lJSBp
 cyBjdXJyZW50bHkgbm90IHJ1bm5pbmcuXG4iKTsKLQkJZXhpdCAoRVJSX05PVF9SVU5OSU5HKTsK
 LQl9Ci0JbG9nT3V0cHV0ICgiIFsgRE9ORSBdXG4iKTsKLQotCS8qIFRlcm1pbmF0ZSB0aGUgcHJv
 Y2VzcyAqLwotCWtpbGxQcm9jZXNzIChwaWQpOwotCWNsZWFyUElEICgpOwotfQotCi0KLS8qKgot
 ICogUmVzdGFydHMgdGhlIHByb2Nlc3MuIElmIGl0IG5vdCBjdXJyZW50bHkgcnVubmluZywgdGhl
 biBpdCB3aWxsIGZhaWwuCi0gKi8KLXN0YXRpYyB2b2lkCi1yZXN0YXJ0ICgKLSBpbnQgamF2YU9w
 dCwKLSBjaGFyICogamF2YUFyZ3MgW10sCi0gaW50IGpib3NzT3B0LAotIGNoYXIgKiBqYm9zc0Fy
 Z3MgW10pCi17Ci0Jc3RvcCAoKTsKLQlzdGFydCAoamF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0
 LCBqYm9zc0FyZ3MpOwotfQotCi0vKioKLQlPdXRwdXQgbG9nIHRvIHN0ZG91dC4KLSAqLwotc3Rh
 dGljIHZvaWQKLWxvZ091dHB1dCAoCi0gY2hhciAqIHN0cmluZykKLXsKLQlpZiAoIWlzUXVpZXQp
 Ci0JCXByaW50ZiAoc3RyaW5nKTsKLX0KSW5kZXg6IGZpbGVzL2RhZW1vbmN0bC5jLmluCj09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT0KUkNTIGZpbGU6IGZpbGVzL2RhZW1vbmN0bC5jLmluCmRpZmYgLU4gZmlsZXMvZGFlbW9u
 Y3RsLmMuaW4KLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxl
 cy9kYWVtb25jdGwuYy5pbgkxMyBKYW4gMjAwNSAwMTo1NToxMyAtMDAwMApAQCAtMCwwICsxLDU1
 NyBAQAorLyoKKyAqIC0qLSBtb2RlOiBGdW5kYW1lbnRhbDsgdGFiLXdpZHRoOiA0OyAtKi0KKyAq
 IGV4OnRzPTQKKyAqCisgKiBEYWVtb24gY29udHJvbCBwcm9ncmFtLCB3aXRoIEphdmEgU3RhcnR1
 cCBvcHRpb25zLgorICoKKyAqCU9yaWdpbmFsIGJ5IEVybnN0IGRlIEhhYW4gPHpuZXJkQGZyZWVi
 c2Qub3JnPgorICoJd3d3L2pha2FydGEtdG9tY2F0NC9maWxlcy9kYWVtb25jdGwuYworICoKKyAq
 ICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzMy9maWxlcy9kYWVtb25jdGwuYyx2IDEuMiAyMDA1
 LzAxLzEzIDAxOjU1OjEzIGhxIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2lu
 Y2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+
 CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJp
 bmcuaD4KKyNpbmNsdWRlIDxzeXNsb2cuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRl
 IDxzeXMvZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBl
 cy5oPgorI2luY2x1ZGUgPHN5cy91aW8uaD4KKworI2RlZmluZQlUUlVFCTEKKyNkZWZpbmUJRkFM
 U0UJMAorCisvKiBUaGUgaW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHRoZSBjaGVja3MgdG8g
 bWFrZSBzdXJlIHRoZSBwcm9jZXNzCisgICBkaWVkIGFmdGVyIGEga2lsbCAqLworI2RlZmluZSBT
 VE9QX1RJTUVfSU5URVJWQUwJCTEKKworI2RlZmluZSBFUlJfSUxMRUdBTF9BUkdVTUVOVAkJCQkx
 CisjZGVmaW5lIEVSUl9QSURfRklMRV9OT1RfRk9VTkQJCQkJMgorI2RlZmluZSBFUlJfS0lMTF9G
 QUlMRUQJCQkJCQk1CisjZGVmaW5lIEVSUl9BTFJFQURZX1JVTk5JTkcJCQkJCTYKKyNkZWZpbmUg
 RVJSX05PVF9SVU5OSU5HCQkJCQkJNworI2RlZmluZSBFUlJfQ0hESVJfVE9fQVBQX0hPTUUJCQkJ
 OAorI2RlZmluZSBFUlJfQUNDRVNTX0pBUl9GSUxFCQkJCQkxNworI2RlZmluZSBFUlJfU1RET1VU
 X0xPR0ZJTEVfT1BFTgkJCQk5CisjZGVmaW5lIEVSUl9TVERFUlJfTE9HRklMRV9PUEVOCQkJCTEw
 CisjZGVmaW5lIEVSUl9GT1JLX0ZBSUxFRAkJCQkJCTExCisjZGVmaW5lIEVSUl9TVEFUX0pBVkFf
 SE9NRQkJCQkJMTIKKyNkZWZpbmUgRVJSX0pBVkFfSE9NRV9OT1RfRElSCQkJCTEzCisjZGVmaW5l
 IEVSUl9TVEFUX0pBVkFfQ01ECQkJCQkxNAorI2RlZmluZSBFUlJfSkFWQV9DTURfTk9UX0ZJTEUJ
 CQkJMTUKKyNkZWZpbmUgRVJSX0pBVkFfQ01EX05PVF9FWEVDVVRBQkxFCQkJMTYKKworLyoKKwlG
 dW5jdGlvbiBkZWNsYXJhdGlvbnMuCisgKi8KK3N0YXRpYyB2b2lkIHByaW50VXNhZ2UgKHZvaWQp
 Oworc3RhdGljIGludCByZWFkUElEICh2b2lkKTsKK3N0YXRpYyB2b2lkIHdyaXRlUElEIChpbnQg
 cGlkKTsKK3N0YXRpYyB2b2lkIGNsZWFyUElEICh2b2lkKTsKK3N0YXRpYyB2b2lkIHN0YXJ0IChp
 bnQgamF2YU9wdCwgY2hhciAqIGphdmFBcmdzIFtdLCBpbnQgamJvc3NPcHQsIGNoYXIgKiBqYm9z
 c0FyZ3MgW10pOworc3RhdGljIHZvaWQgc3RvcCAodm9pZCk7CitzdGF0aWMgdm9pZCByZXN0YXJ0
 IChpbnQgamF2YU9wdCwgY2hhciAqIGphdmFBcmdzIFtdLCBpbnQgamJvc3NPcHQsIGNoYXIgKiBq
 Ym9zc0FyZ3MgW10pOworc3RhdGljIHZvaWQgbG9nT3V0cHV0IChjaGFyICopOworCisvKgorCUds
 b2JhbHMKKyAqLworc3RhdGljIGludCBpc1F1aWV0ID0gRkFMU0U7CitzdGF0aWMgY2hhciAqIG9w
 dFF1aWV0ID0gIi1xIiwJCQkvKiBxdWlldCBvcHRpb24gKi8KKwkJCSogb3B0Q29uZmlnID0gIi1j
 b25maWciOwkvKiBqYm9zcyBjb25maWd1cmF0aW9uIG9wdGlvbiAqLworCisvKioKKyAqIE1haW4g
 ZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhpcyBwcm9ncmFtIGlzIGV4
 ZWN1dGVkLgorICoKKyAqIEBwYXJhbSBhcmdjCisgKiAgICB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50
 cyBwbHVzIG9uZSwgc28gYWx3YXlzIGdyZWF0ZXIgdGhhbiAwLgorICoKKyAqIEBwYXJhbSBhcmd2
 CisgKiAgICB0aGUgYXJndW1lbnRzIGluIGFuIGFycmF5IG9mIGNoYXJhY3RlciBwb2ludGVycywg
 d2hlcmUgdGhlIGxhc3QgYXJndW1lbnQKKyAqICAgIGVsZW1lbnQgaXMgZm9sbG93ZWQgYnkgYSBO
 VUxMIGVsZW1lbnQuCisgKi8KK2ludAorbWFpbiAoCisgaW50IGFyZ2MsCisgY2hhciAqYXJndiBb
 XSkKK3sKKwkvKiBEZWNsYXJlIHZhcmlhYmxlcywgbGlrZSBhbGwgb3RoZXIgZ29vZCBBTlNJIEMg
 cHJvZ3JhbXMgZG8gOikgKi8KKwlpbnQgaSwgamF2YU9wdCwgamJvc3NPcHQ7CisJY2hhciAqYXJn
 dW1lbnQsICoqamF2YUFyZ3MsICoqamJvc3NBcmdzOworCisJLyogUGFyc2UgdGhlIGFyZ3VtZW50
 cyAqLworCWlmIChhcmdjIDwgMikKKwl7CisJCXByaW50VXNhZ2UgKCk7CisJCXJldHVybiAwOwor
 CX0KKworCS8qIFhYWDogRml4IGZvciBzZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgdGhl
 IGphdmEgd3JhcHBlciBzY3JpcHQgKi8KKwlzZXR1aWQgKGdldGV1aWQgKCkpOworCXNldGdpZCAo
 Z2V0ZWdpZCAoKSk7CisKKwkvKgorCQlCdWlsZCB1cCBqYXZhIGFuZCBqYm9zcyBvcHRpb24gYmxv
 Y2tzLgorCSAqLworCWphdmFPcHQgPSBqYm9zc09wdCA9IDA7CisJZm9yIChpID0gMTsgaSA8IGFy
 Z2M7IGkrKykKKwl7CisJCWlmIChzdHJjbXAgKGFyZ3YgW2ldLCBvcHRRdWlldCkgPT0gMCkKKwkJ
 eworCQkJaXNRdWlldCA9IFRSVUU7CisKKwkJfSBlbHNlIGlmIChzdHJjbXAgKGFyZ3YgW2ldLCBv
 cHRDb25maWcpID09IDApCisJCXsKKwkJCWpib3NzT3B0ICs9IDI7CisJCQlpZiAoKytpID49IGFy
 Z2MpCisJCQl7CisJCQkJcHJpbnRVc2FnZSAoKTsKKwkJCQlyZXR1cm4gRVJSX0lMTEVHQUxfQVJH
 VU1FTlQ7CisJCQl9CisKKwkJfSBlbHNlIGlmICgqYXJndiBbaV0gPT0gJy0nKQorCQl7CisJCQlq
 YXZhT3B0Kys7CisJCX0KKwl9CisJaWYgKGphdmFPcHQgPT0gMCkKKwkJamF2YUFyZ3MgPSBOVUxM
 OworCWVsc2UKKwl7CisJCWludCBqID0gMDsKKwkJamF2YUFyZ3MgPSBtYWxsb2MgKHNpemVvZiAo
 Y2hhciAqKSAqIGphdmFPcHQpOworCQlmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQorCQl7CisJ
 CQlpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVpZXQpICYmCisJCQkJc3RyY21wIChhcmd2IFtp
 XSwgb3B0Q29uZmlnKSAmJgorCQkJCSphcmd2IFtpXSA9PSAnLScpCisJCQl7CisJCQkJamF2YUFy
 Z3MgW2orK10gPSBhcmd2IFtpXTsKKwkJCX0KKwkJfQorCX0KKwlpZiAoamJvc3NPcHQgPT0gMCkK
 KwkJamJvc3NBcmdzID0gTlVMTDsKKwllbHNlCisJeworCQlpbnQgaiA9IDA7CisJCWpib3NzQXJn
 cyA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyICopICogamJvc3NPcHQpOworCQlmb3IgKGkgPSAwOyBp
 IDwgYXJnYzsgaSsrKQorCQl7CisJCQlpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSA9
 PSAwKQorCQkJeworCQkJCWpib3NzQXJncyBbaisrXSA9ICItYyI7CisJCQkJamJvc3NBcmdzIFtq
 KytdID0gYXJndiBbKytpXTsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJCURlY2lkZSBvbiBqdXN0
 IHdoYXQgdG8gY2FsbC4KKwkgKi8KKwlhcmd1bWVudCA9IGFyZ3YgW2FyZ2MgLSAxXTsKKwlpZiAo
 c3RyY21wICgic3RhcnQiLCBhcmd1bWVudCkgPT0gMCkKKwl7CisJCXN0YXJ0IChqYXZhT3B0LCBq
 YXZhQXJncywgamJvc3NPcHQsIGpib3NzQXJncyk7CisKKwl9IGVsc2UgaWYgKHN0cmNtcCAoInN0
 b3AiLCBhcmd1bWVudCkgPT0gMCkKKwl7CisJCXN0b3AgKCk7CisKKwl9IGVsc2UgaWYgKHN0cmNt
 cCAoInJlc3RhcnQiLCBhcmd1bWVudCkgPT0gMCkKKwl7CisJCXJlc3RhcnQgKGphdmFPcHQsIGph
 dmFBcmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsKKworCX0gZWxzZSB7CisJCWZwcmludGYgKHN0
 ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBJbGxlZ2FsIGFyZ3VtZW50IFwiJXNcIi5c
 biIsIGFyZ3VtZW50KTsKKwkJcHJpbnRVc2FnZSAoKTsKKwkJZXhpdCAoRVJSX0lMTEVHQUxfQVJH
 VU1FTlQpOworCX0KKworCXJldHVybiBFWElUX1NVQ0NFU1M7Cit9CisKKy8qKgorICogUHJpbnRz
 IHVzYWdlIGluZm9ybWF0aW9uIHRvIHN0ZG91dC4KKyAqLworc3RhdGljIHZvaWQKK3ByaW50VXNh
 Z2UgKHZvaWQpCit7CisJcHJpbnRmICgiVXNhZ2U6ICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlIFtq
 YXZhLW9wdGlvbnNdIFstY29uZmlnIGpib3NzY29uZmlnXSB7c3RhcnR8c3RvcHxyZXN0YXJ0fVxu
 Iik7Cit9CisKKy8qKgorICogUmVhZHMgYSBQSUQgZnJvbSB0aGUgUElEIGZpbGUuCisgKgorICog
 QHJldHVybgorICogICAgdGhlIFBJRCwgb3IgLTEgaWYgdGhlIGZpbGUgd2FzIGVtcHR5LgorICov
 CitzdGF0aWMgaW50CityZWFkUElEICh2b2lkKQoreworCUZJTEUgKiBmaWxlOworCWludCBwaWQ7
 CisKKwlsb2dPdXRwdXQgKCI+PiBSZWFkaW5nIFBJRCBmaWxlICglJVBJRF9GSUxFJSUpLi4uIik7
 CisJZmlsZSA9IGZvcGVuICgiJSVQSURfRklMRSUlIiwgInIiKTsKKwlpZiAoIWZpbGUpCisJewor
 CQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCXBlcnJvciAoIiUlQ09OVFJPTF9TQ1JJ
 UFRfTkFNRSUlOiBVbmFibGUgdG8gb3BlbiAlJVBJRF9GSUxFJSUgZm9yIHJlYWRpbmc6ICIpOwor
 CQlleGl0IChFUlJfUElEX0ZJTEVfTk9UX0ZPVU5EKTsKKwl9CisJaWYgKGZzY2FuZiAoZmlsZSwg
 IiVkIiwgJnBpZCkgPCAxKQorCQlwaWQgPSAtMTsKKwlmY2xvc2UgKGZpbGUpOworCisJbG9nT3V0
 cHV0ICgiIFsgRE9ORSBdXG4iKTsKKwlyZXR1cm4gcGlkOworfQorCisvKioKKyAqIFdyaXRlcyBh
 IHByb2Nlc3MgSUQgdG8gdGhlIHNwZWNpZmllZCBmaWxlLiBUaGUgZmlsZSBpcyBpZGVudGlmaWVk
 IGJ5IGEgZmlsZQorICogaGFuZGxlLgorICoKKyAqIEBwYXJhbSBwaWQKKyAqICAgIHRoZSBQSUQg
 dG8gc3RvcmUsIGFsd2F5cyBncmVhdGVyIHRoYW4gMC4KKyAqLworc3RhdGljIHZvaWQKK3dyaXRl
 UElEICgKKyBpbnQgcGlkKQoreworCUZJTEUgKiBmaWxlOworCisJbG9nT3V0cHV0ICgiPj4gV3Jp
 dGluZyBQSUQgZmlsZS4uLiIpOworCWZpbGUgPSBmb3BlbiAoIiUlUElEX0ZJTEUlJSIsICJ3Iik7
 CisJaWYgKCFmaWxlKQorCXsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlwZXJy
 b3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIG9wZW4gJSVQSURfRklMRSUl
 IGZvciB3cml0aW5nOiAiKTsKKwkJZXhpdCAoRVJSX1BJRF9GSUxFX05PVF9GT1VORCk7CisJfQor
 CWZwcmludGYgKGZpbGUsICIlZFxuIiwgcGlkKTsKKwlmY2xvc2UgKGZpbGUpOworCisJbG9nT3V0
 cHV0ICgiIFsgRE9ORSBdXG4iKTsKK30KKworLyoqCisJVHJ1bmNhdGUgdGhlIFBJRCBmaWxlLgor
 ICovCitzdGF0aWMgdm9pZAorY2xlYXJQSUQgKHZvaWQpCit7CisJaWYgKHRydW5jYXRlICgiJSVQ
 SURfRklMRSUlIiwgMCkgIT0gMCkKKwl7CisJCXBlcnJvciAoIiUlQ09OVFJPTF9TQ1JJUFRfTkFN
 RSUlOiBVbmFibGUgdG8gY2xlYXIgJSVQSURfRklMRSUlOiAiKTsKKwkJZXhpdCAoRVJSX1BJRF9G
 SUxFX05PVF9GT1VORCk7CisJfQorfQorCisvKioKKyAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVk
 IHByb2Nlc3MgaXMgcnVubmluZy4KKyAqCisgKiBAcGFyYW0gcGlkCisgKiAgICB0aGUgcHJvY2Vz
 cyBpZCwgZ3JlYXRlciB0aGFuIDAuCisgKgorICogQHJldHVybgorICogICAgMCBpZiB0aGUgc3Bl
 Y2lmaWVkIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmcsIGEgZGlmZmVyZW50IHZhbHVlIG90aGVyd2lz
 ZS4KKyAqLworc3RhdGljIGludAorZXhpc3RzUHJvY2VzcyAoCisgaW50IHBpZCkKK3sKKwlpbnQg
 cmVzdWx0OworCisJLyogQ2hlY2sgcHJlY29uZGl0aW9ucyAqLworCWFzc2VydCAocGlkID4gMCk7
 CisKKwkvKiBTZWUgaWYgdGhlIHByb2Nlc3MgZXhpc3RzICovCisgICAJcmVzdWx0ID0ga2lsbCAo
 cGlkLCAwKTsKKworCS8qIElmIHRoZSByZXN1bHQgaXMgMCwgdGhlbiB0aGUgcHJvY2VzcyBleGlz
 dHMgKi8KKwlyZXR1cm4gcmVzdWx0ID09IDA7Cit9CisKKy8qKgorICogS2lsbHMgdGhlIHByb2Nl
 c3MgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIElELgorICoKKyAqIEBwYXJhbSBwaWQKKyAq
 ICAgIHRoZSBwcm9jZXNzIGlkLCBncmVhdGVyIHRoYW4gMC4KKyAqLworc3RhdGljIHZvaWQKK2tp
 bGxQcm9jZXNzICgKKyBpbnQgcGlkKQoreworCWludCByZXN1bHQ7CisJdW5zaWduZWQgaW50IHdh
 aXRlZDsKKwl1bnNpZ25lZCBpbnQgZm9yY2VkOworCXVuc2lnbmVkIGludCBpbnRlcnZhbCA9IFNU
 T1BfVElNRV9JTlRFUlZBTDsKKwl1bnNpZ25lZCBpbnQgdGltZW91dCAgPSAlJVNUT1BfVElNRU9V
 VCUlOworCisJLyogQ2hlY2sgcHJlY29uZGl0aW9ucyAqLworCWFzc2VydCAocGlkID4gMCk7CisK
 KwlpZiAoIWlzUXVpZXQpCisJCXByaW50ZiAoIj4+IFRlcm1pbmF0aW5nIHByb2Nlc3MgJWQuLi4i
 LCBwaWQpOworCXJlc3VsdCA9IGtpbGwgKHBpZCwgU0lHVEVSTSk7CisJaWYgKHJlc3VsdCA8IDAp
 IHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJpbnRmIChzdGRlcnIsICIl
 JUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGtpbGwgcHJvY2VzcyAlZDogIiwgcGlk
 KTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX0tJTExfRkFJTEVEKTsKKwl9CisKKwkv
 KiBXYWl0IHVudGlsIHRoZSBwcm9jZXNzIGlzIGFjdHVhbGx5IGtpbGxlZCAqLworICAgIHJlc3Vs
 dCA9IGV4aXN0c1Byb2Nlc3MgKHBpZCk7CisJZm9yICh3YWl0ZWQ9MDsgcmVzdWx0ID09IDEgJiYg
 d2FpdGVkIDwgdGltZW91dDsgd2FpdGVkICs9IGludGVydmFsKQorCXsKKwkJbG9nT3V0cHV0ICgi
 LiIpOworCQlmZmx1c2ggKHN0ZG91dCk7CisJCXNsZWVwIChpbnRlcnZhbCk7CisgICAgCXJlc3Vs
 dCA9IGV4aXN0c1Byb2Nlc3MgKHBpZCk7CisJfQorCisJLyogSWYgdGhlIHByb2Nlc3Mgc3RpbGwg
 ZXhpc3RzLCB0aGVuIGhhdmUgbm8gbWVyY3kgYW5kIGtpbGwgaXQgKi8KKwlmb3JjZWQgPSAwOwor
 CWlmIChyZXN1bHQgPT0gMSkKKwl7CisJCS8qIEZvcmNlIHRoZSBwcm9jZXNzIHRvIGRpZSAqLwor
 CQlyZXN1bHQgPSBraWxsIChwaWQsIFNJR0tJTEwpOworCQlpZiAocmVzdWx0ID09IDApIHsKKwkJ
 CWZvcmNlZCA9IDE7CisJCQlsb2dPdXRwdXQgKCIgWyBLSUxMRUQgXVxuIik7CisJCQlmcHJpbnRm
 IChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogUHJvY2VzcyAlZCBkaWQgbm90IHRl
 cm1pbmF0ZSB3aXRoaW4gJSVTVE9QX1RJTUVPVVQlJSBzZWMuIEtpbGxlZC5cbiIsIHBpZCk7CisJ
 CX0gZWxzZSBpZiAocmVzdWx0ICE9IEVTUkNIKSB7CisJCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQg
 XVxuIik7CisJCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5h
 YmxlIHRvIGtpbGwgcHJvY2VzcyAlZDogIiwgcGlkKTsKKwkJCXBlcnJvciAoTlVMTCk7CisJCQll
 eGl0IChFUlJfS0lMTF9GQUlMRUQpOworCQl9CisJfQorCisJaWYgKGZvcmNlZCA9PSAwKSB7CisJ
 CWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7CisJfQorfQorCisvKioKKyAqIFN0YXJ0cyB0aGUg
 ZGFlbW9uLgorICovCitzdGF0aWMgdm9pZAorc3RhcnQgKAorIGludCBqYXZhT3B0LAorIGNoYXIg
 KiBqYXZhQXJncyBbXSwKKyBpbnQgamJvc3NPcHQsCisgY2hhciAqIGpib3NzQXJncyBbXSkKK3sK
 KwlpbnQgaSwgYXJnYzsKKwljaGFyICoqIGFyZ3Y7CisJaW50IHBpZDsKKwlpbnQgcmVzdWx0Owor
 CWludCBzdGRvdXRMb2dGaWxlOworCWludCBzdGRlcnJMb2dGaWxlOworCXN0cnVjdCBzdGF0IHNi
 OworCisJcGlkID0gcmVhZFBJRCAoKTsKKworCWxvZ091dHB1dCAoIj4+IFN0YXJ0aW5nICUlQVBQ
 X1RJVExFJSUgJSVQT1JUVkVSU0lPTiUlLi4uIik7CisJaWYgKHBpZCAhPSAtMSkKKwl7CisJCS8q
 IENoZWNrIGlmIHRoZSBwcm9jZXNzIGFjdHVhbGx5IGV4aXN0cyAqLworCQlyZXN1bHQgPSBleGlz
 dHNQcm9jZXNzIChwaWQpOworCQlpZiAocmVzdWx0ID09IDEpCisJCXsKKwkJCWxvZ091dHB1dCAo
 IiBbIEZBSUxFRCBdXG4iKTsKKwkJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRf
 TkFNRSUlOiAlJUFQUF9USVRMRSUlICUlUE9SVFZFUlNJT04lJSBpcyBhbHJlYWR5IHJ1bm5pbmcs
 IFBJRCBpcyAlZC5cbiIsIHBpZCk7CisJCQlleGl0IChFUlJfQUxSRUFEWV9SVU5OSU5HKTsKKwkJ
 fQorCX0KKworCS8qIENoZWNrIGlmIHRoZSBKREsgaG9tZSBkaXJlY3RvcnkgaXMgYWN0dWFsbHkg
 YSBkaXJlY3RvcnkgKi8KKwlyZXN1bHQgPSBzdGF0ICgiJSVKQVZBX0hPTUUlJSIsICZzYik7CisJ
 aWYgKHJlc3VsdCAhPSAwKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnBy
 aW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUl
 SkFWQV9IT01FJSU6ICIpOworCQlwZXJyb3IgKE5VTEwpOworCQlleGl0IChFUlJfU1RBVF9KQVZB
 X0hPTUUpOworCX0KKwlpZiAoIVNfSVNESVIgKHNiLnN0X21vZGUpKSB7CisJCWxvZ091dHB1dCAo
 IiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O
 QU1FJSU6IEphdmEgaG9tZSBkaXJlY3RvcnkgJSVKQVZBX0hPTUUlJSBpcyBub3QgYSBkaXJlY3Rv
 cnkuXG4iKTsKKwkJZXhpdCAoRVJSX0pBVkFfSE9NRV9OT1RfRElSKTsKKwl9CisKKwkvKiBDaGVj
 ayBpZiB0aGUgSmF2YSBjb21tYW5kIGlzIGFjdHVhbGx5IGFuIGV4ZWN1dGFibGUgcmVndWxhciBm
 aWxlICovCisJcmVzdWx0ID0gc3RhdCAoIiUlSkFWQSUlIiwgJnNiKTsKKwlpZiAocmVzdWx0ICE9
 IDApIHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJpbnRmIChzdGRlcnIs
 ICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIHN0YXQgJSVKQVZBJSU6ICIpOwor
 CQlwZXJyb3IgKE5VTEwpOworCQlleGl0IChFUlJfU1RBVF9KQVZBX0NNRCk7CisJfQorCWlmICgh
 U19JU1JFRyAoc2Iuc3RfbW9kZSkpIHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwor
 CQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogSmF2YSBjb21tYW5k
 ICUlSkFWQSUlIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZS5cbiIpOworCQlleGl0IChFUlJfSkFWQV9D
 TURfTk9UX0ZJTEUpOworCX0KKwlyZXN1bHQgPSBhY2Nlc3MgKCIlJUpBVkElJSIsIFhfT0spOwor
 CWlmIChyZXN1bHQgIT0gMCkgeworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCWZw
 cmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBKYXZhIGNvbW1hbmQgJSVK
 QVZBJSUgaXMgbm90IGV4ZWN1dGFibGU6ICIpOworCQlwZXJyb3IgKE5VTEwpOworCQlleGl0IChF
 UlJfSkFWQV9DTURfTk9UX0VYRUNVVEFCTEUpOworCX0KKworCS8qIENoYW5nZSBkaXJlY3Rvcnkg
 Ki8KKwlyZXN1bHQgPSBjaGRpciAoIiUlQVBQX0hPTUUlJSIpOworCWlmIChyZXN1bHQgPCAwKSB7
 CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVD
 T05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBhY2Nlc3MgZGlyZWN0b3J5ICUlQVBQX0hP
 TUUlJTogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVSUl9DSERJUl9UT19BUFBfSE9N
 RSk7CisJfQorCisJLyogU2VlIGlmIHRoZSBKQVIgZmlsZSBleGlzdHMgKi8KKwlyZXN1bHQgPSBh
 Y2Nlc3MgKCIlJUFQUF9IT01FJSUvJSVKQVJfRklMRSUlIiwgUl9PSyk7CisJaWYgKHJlc3VsdCA8
 IDApIHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJpbnRmIChzdGRlcnIs
 ICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGFjY2VzcyBKQVIgZmlsZSAlJUFQ
 UF9IT01FJSUvJSVKQVJfRklMRSUlOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJS
 X0FDQ0VTU19KQVJfRklMRSk7CisJfQorCisJLyogT3BlbiB0aGUgc3Rkb3V0IGxvZyBmaWxlICov
 CisJc3Rkb3V0TG9nRmlsZSA9IG9wZW4gKCIlJVNURE9VVF9MT0clJSIsIE9fV1JPTkxZKTsKKwlp
 ZiAoc3Rkb3V0TG9nRmlsZSA8IDApIHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwor
 CQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIG9w
 ZW4gJSVTVERPVVRfTE9HJSUgZm9yIHdyaXRpbmc6ICIpOworCQlwZXJyb3IgKE5VTEwpOworCQll
 eGl0IChFUlJfU1RET1VUX0xPR0ZJTEVfT1BFTik7CisJfQorCWxzZWVrIChzdGRvdXRMb2dGaWxl
 LCAob2ZmX3QpIDAsIFNFRUtfRU5EKTsKKworCS8qIE9wZW4gdGhlIHN0ZGVyciBsb2cgZmlsZSAq
 LworCXN0ZGVyckxvZ0ZpbGUgPSBvcGVuICgiJSVTVERFUlJfTE9HJSUiLCBPX1dST05MWSk7CisJ
 aWYgKHN0ZGVyckxvZ0ZpbGUgPCAwKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsK
 KwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBv
 cGVuICUlU1RERVJSX0xPRyUlIGZvciB3cml0aW5nOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJ
 ZXhpdCAoRVJSX1NUREVSUl9MT0dGSUxFX09QRU4pOworCX0KKwlsc2VlayAoc3RkZXJyTG9nRmls
 ZSwgKG9mZl90KSAwLCBTRUVLX0VORCk7CisKKwkvKiBTcGxpdCB0aGlzIHByb2Nlc3MgaW4gdHdv
 ICovCisJc3dpdGNoIChwaWQgPSBmb3JrICgpKQorCXsKKwljYXNlIC0xOgorCQlsb2dPdXRwdXQg
 KCIgWyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRf
 TkFNRSUlOiBVbmFibGUgdG8gZm9yazogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVS
 Ul9GT1JLX0ZBSUxFRCk7CisJCWJyZWFrOworCisJY2FzZSAwOgorCQkvKiBSZWRpcmVjdCBzdGRv
 dXQgdG8gbG9nIGZpbGUgKi8KKwkJZHVwMiAoc3Rkb3V0TG9nRmlsZSwgU1RET1VUX0ZJTEVOTyk7
 CisKKwkJLyogUmVkaXJlY3Qgc3RkZXJyIHRvIGxvZyBmaWxlICovCisJCWR1cDIgKHN0ZGVyckxv
 Z0ZpbGUsIFNUREVSUl9GSUxFTk8pOworCisJCS8qIFRPRE86IFN1cHBvcnQgcmVkaXJlY3Rpb24g
 b2YgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciB0byB0aGUgc2FtZQorCQkJCSBmaWxlIHVzaW5nIHBp
 cGUgKDIpICovCisKKwkJLyoKKwkJCUJ1aWxkIHRoZSBhcmd1bWVudCB2ZWN0b3IsIHdpdGggdGhl
 IGphdmEvamJvc3Mgb3B0aW9ucyBpZiBhbnkuCisJCSAqLworCQlhcmd2ID0gbWFsbG9jIChzaXpl
 b2YgKGNoYXIgKikgKiAoamF2YU9wdCArIGpib3NzT3B0ICsgNSkpOworCQlhcmdjID0gMDsKKwkJ
 YXJndiBbYXJnYysrXSA9ICIlJUpBVkElJSI7CisJCWZvciAoaSA9IDA7IGkgPCBqYXZhT3B0OyBp
 KyspCisJCQlhcmd2IFthcmdjKytdID0gamF2YUFyZ3MgW2ldOworCQlhcmd2IFthcmdjKytdID0g
 Ii1jcCI7CisJCWFyZ3YgW2FyZ2MrK10gPSAiJSVKQVZBX0NQJSUiOworCQlhcmd2IFthcmdjKytd
 ID0gIiUlSkFWQV9NQUlOJSUiOworCQlmb3IgKGkgPSAwOyBpIDwgamJvc3NPcHQ7IGkrKykKKwkJ
 CWFyZ3YgW2FyZ2MrK10gPSBqYm9zc0FyZ3MgW2ldOworCQlhcmd2IFthcmdjKytdID0gTlVMTDsK
 KworCQkvKiBFeGVjdXRlIHRoZSBjb21tYW5kICovCisJCWV4ZWN2IChhcmd2IFswXSwgYXJndik7
 CisJCXBlcnJvciAoTlVMTCk7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJbG9nT3V0cHV0ICgi
 IFsgRE9ORSBdXG4iKTsKKwkJd3JpdGVQSUQgKHBpZCk7CisJfQorfQorCisvKioKKyAqIFN0b3Bz
 IHRoZSBkYWVtb24uCisgKi8KK3N0YXRpYyB2b2lkCitzdG9wICh2b2lkKQoreworCWludCBwaWQ7
 CisKKwlwaWQgPSByZWFkUElEICgpOworCisJbG9nT3V0cHV0ICgiPj4gQ2hlY2tpbmcgaWYgJSVB
 UFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgcnVubmluZy4uLiIpOworCisJLyogSWYgdGhl
 cmUgaXMgYSBQSUQsIHNlZSBpZiB0aGUgcHJvY2VzcyBzdGlsbCBleGlzdHMgKi8KKwlpZiAocGlk
 ICE9IC0xKQorCXsKKwkJaW50IHJlc3VsdCA9IGtpbGwgKHBpZCwgMCk7CisJCWlmIChyZXN1bHQg
 IT0gMCAmJiBlcnJubyA9PSBFU1JDSCkKKwkJeworCQkJY2xlYXJQSUQgKCk7CisJCQlwaWQgPSAt
 MTsKKwkJfQorCX0KKworCS8qIElmIHRoZXJlIGlzIG5vIHJ1bm5pbmcgcHJvY2VzcywgcHJvZHVj
 ZSBhbiBlcnJvciAqLworCWlmIChwaWQgPT0gLTEpCisJeworCQlsb2dPdXRwdXQgKCIgWyBGQUlM
 RUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiAl
 JUFQUF9USVRMRSUlICUlUE9SVFZFUlNJT04lJSBpcyBjdXJyZW50bHkgbm90IHJ1bm5pbmcuXG4i
 KTsKKwkJZXhpdCAoRVJSX05PVF9SVU5OSU5HKTsKKwl9CisJbG9nT3V0cHV0ICgiIFsgRE9ORSBd
 XG4iKTsKKworCS8qIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyAqLworCWtpbGxQcm9jZXNzIChwaWQp
 OworCWNsZWFyUElEICgpOworfQorCisKKy8qKgorICogUmVzdGFydHMgdGhlIHByb2Nlc3MuIElm
 IGl0IG5vdCBjdXJyZW50bHkgcnVubmluZywgdGhlbiBpdCB3aWxsIGZhaWwuCisgKi8KK3N0YXRp
 YyB2b2lkCityZXN0YXJ0ICgKKyBpbnQgamF2YU9wdCwKKyBjaGFyICogamF2YUFyZ3MgW10sCisg
 aW50IGpib3NzT3B0LAorIGNoYXIgKiBqYm9zc0FyZ3MgW10pCit7CisJc3RvcCAoKTsKKwlzdGFy
 dCAoamF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0LCBqYm9zc0FyZ3MpOworfQorCisvKioKKwlP
 dXRwdXQgbG9nIHRvIHN0ZG91dC4KKyAqLworc3RhdGljIHZvaWQKK2xvZ091dHB1dCAoCisgY2hh
 ciAqIHN0cmluZykKK3sKKwlpZiAoIWlzUXVpZXQpCisJCXByaW50ZiAoc3RyaW5nKTsKK30KSW5k
 ZXg6IGZpbGVzL2pib3NzMy5zaC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9qYm9zczMu
 c2guaW4KZGlmZiAtTiBmaWxlcy9qYm9zczMuc2guaW4KLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcw
 IDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9qYm9zczMuc2guaW4JMTMgSmFuIDIwMDUgMDE6NTU6
 MTMgLTAwMDAKQEAgLTAsMCArMSw1OCBAQAorIyEvYmluL3NoCisjCisjICUlQVBQX1RJVExFJSUg
 c3RhcnR1cCBzY3JpcHQuCisjCisjICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzMy9maWxlcy9z
 dGFydHVwLnNoLHYgMS4yIDIwMDUvMDEvMTMgMDE6NTU6MTMgaHEgRXhwICQKKyMKKworIyBQUk9W
 SURFOiAlJUFQUF9TSE9SVE5BTUUlJQorIyBSRVFVSVJFOiBORVRXT1JLSU5HIFNFUlZFUlMKKwor
 IyBBZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byAvZXRjL3JjLmNvbmYgdG8gZW5hYmxlICUlQVBQ
 X1NIT1JUTkFNRSUlOgorIyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUgKGJvb2wpOgkJU2V0IHRv
 ICJOTyIgYnkgZGVmYXVsdC4KKyMJCQkJU2V0IGl0IHRvICJZRVMiIHRvIGVuYWJsZSAlJUFQUF9T
 SE9SVE5BTUUlJQorIyAlJUFQUF9TSE9SVE5BTUUlJV9mbGFncyAoc3RyKToJCVNldCB0byAiLXNl
 cnZlciIgYnkgZGVmYXVsdC4KKyMJCQkJRXh0cmEgSlZNIGZsYWdzLgorIyAlJUFQUF9TSE9SVE5B
 TUUlJV9jb25maWcgKHN0cik6CQlTZXQgdG8gIiIgYnkgZGVmYXVsdAorIwkJCQlKQm9zcyBzZXJ2
 ZXIgY29uZmlnLCBlZyB7YWxsfGRlZmF1bHR8bWluaW1hbHxzdGFuZGFyZH0KKyMKKy4gJSVSQ19T
 VUJSJSUKKworbmFtZT0iJSVBUFBfU0hPUlROQU1FJSUiCityY3Zhcj1gc2V0X3JjdmFyYAorCitz
 dGFydF9jbWQ9IiUlQVBQX1NIT1JUTkFNRSUlX3N0YXJ0IgorcmVzdGFydF9jbWQ9IiUlQVBQX1NI
 T1JUTkFNRSUlX3Jlc3RhcnQiCitwaWRmaWxlPSIlJVBJRF9GSUxFJSUiCitwcm9jbmFtZT0iJSVK
 QVZBJSUiCisKK1sgLXogIiQlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUiIF0JJiYgJSVBUFBfU0hP
 UlROQU1FJSVfZW5hYmxlPSJOTyIKK1sgLXogIiQlJUFQUF9TSE9SVE5BTUUlJV9mbGFncyIgXQkm
 JiAlJUFQUF9TSE9SVE5BTUUlJV9mbGFncz0iLXNlcnZlciIKK1sgLXogIiQlJUFQUF9TSE9SVE5B
 TUUlJV9jb25maWciIF0JJiYgJSVBUFBfU0hPUlROQU1FJSVfY29uZmlnPSIiCisKKyUlQVBQX1NI
 T1JUTkFNRSUlX3N0YXJ0ICgpCit7CisJY2hlY2t5ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFi
 bGUgJiYKKwl7CisJCWlmIFsgISAtZiAke3BpZGZpbGV9IF0KKwkJdGhlbgorCQkJdG91Y2ggJHtw
 aWRmaWxlfQorCQkJY2hvd24gJSVVU0VSJSU6JSVHUk9VUCUlICR7cGlkZmlsZX0KKwkJZmkKKwor
 CQklJUNPTlRST0xfU0NSSVBUJSUgLXEgJHslJUFQUF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQ
 UF9TSE9SVE5BTUUlJV9jb25maWdmbGFnfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gc3Rh
 cnQgJiYKKwkJZWNobyAtbiAiICUlQVBQX1NIT1JUTkFNRSUlIgorCX0KK30KKworJSVBUFBfU0hP
 UlROQU1FJSVfcmVzdGFydCAoKQoreworCWNoZWNreWVzbm8gJSVBUFBfU0hPUlROQU1FJSVfZW5h
 YmxlICYmCisJCSUlQ09OVFJPTF9TQ1JJUFQlJSAtcSAkeyUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdz
 fSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2ZsYWd9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29u
 ZmlnfSByZXN0YXJ0Cit9CisKK2xvYWRfcmNfY29uZmlnICRuYW1lCisKK1sgLW4gIiR7JSVBUFBf
 U0hPUlROQU1FJSVfY29uZmlnfSIgXSAmJiAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWdmbGFnPSIt
 Y29uZmlnIgorCitydW5fcmNfY29tbWFuZCAiJDEiCkluZGV4OiBmaWxlcy9wYXRjaC1idWlsZC54
 bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGF0Y2gtYnVpbGQueG1sCmRpZmYgLU4gZmls
 ZXMvcGF0Y2gtYnVpbGQueG1sCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAw
 MAorKysgZmlsZXMvcGF0Y2gtYnVpbGQueG1sCTI1IE1hciAyMDA3IDE1OjA1OjIzIC0wMDAwCkBA
 IC0wLDAgKzEsMzggQEAKKy0tLSAuL2J1aWxkL2J1aWxkLnhtbC5vcmlnCVN1biBNYXIgMjUgMjI6
 NTU6MjAgMjAwNworKysrIC4vYnVpbGQvYnVpbGQueG1sCVN1biBNYXIgMjUgMjI6NTg6NTcgMjAw
 NworQEAgLTQzLDYgKzQzLDM1IEBACisgICAgLS0+CisgCisgICA8dGFyZ2V0IG5hbWU9ImluaXQi
 IHVubGVzcz0iaW5pdC5kaXNhYmxlIiBkZXBlbmRzPSJfYnVpbGRtYWdpYzppbml0Ij4KKysgIDwh
 LS0gTWFrZSBzdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IHZlcnNpb24gb2YgQW50IC0tPgorKyAgPHBy
 b3BlcnR5IG5hbWU9ImJ1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb24iIHZhbHVlPSIxLjUiLz4K
 KysgIDxwcm9wZXJ0eSBuYW1lPSJidWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9uIiB2YWx1ZT0i
 MS42Ii8+CisrICA8cHJvcGVydHkgbmFtZT0iYnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbiIg
 dmFsdWU9IjEuNyIvPgorKyAgPCEtLQorKyAgICAgIHwgQWRkIG5ldyBjb25kaXRpb25zIGZvciBv
 dGhlciBzdXBwb3J0ZWQgQW50IHZlcnNpb25zIHdoZW4gdGhleQorKyAgICAgIHwgYmVjb21lIGF2
 YWlhbGJsZS4KKysgICAtLT4KKysKKysgICA8Y29uZGl0aW9uIHByb3BlcnR5PSJidWlsZG1hZ2lj
 LmFudC5jb21wYXRpYmxlIj4KKysgICAgIDxvcj4KKysgICAgICAgIDxjb250YWlucyBzdHJpbmc9
 IiR7YW50LnZlcnNpb259IgorKwkJICBzdWJzdHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdp
 Yy5hbnQxNS5iYXNldmVyc2lvbn0iLz4KKysJPGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lv
 bn0iCisrCSAgICAJICBzdWJzdHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNi5i
 YXNldmVyc2lvbn0iLz4KKysJPGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lvbn0iCisrCSAg
 ICAgICAgICBzdWJzdHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNy5iYXNldmVy
 c2lvbn0iLz4KKysgICAgIDwvb3I+CisrICAgPC9jb25kaXRpb24+CisrCisrICAgPGZhaWwgdW5s
 ZXNzPSJidWlsZG1hZ2ljLmFudC5jb21wYXRpYmxlIj4KKysKKysgICAgICBVbnN1cHBvcnRlZCBB
 bnQgdmVyc2lvbjoKKysKKysgICAgICAgJHthbnQudmVyc2lvbn0KKysKKysgICAgICBQbGVhc2Ug
 aW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIEFudCAke2J1aWxkbWFn
 aWMuYW50MTUuYmFzZXZlcnNpb259IG9yICR7YnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbn0g
 b3IgJHtidWlsZG1hZ2ljLmFudDE3LmJhc2V2ZXJzaW9ufS4KKysKKysgICA8L2ZhaWw+CisgICA8
 L3RhcmdldD4KKyAKKyAKSW5kZXg6IGZpbGVzL3BhdGNoLWJ1aWxkbWFnaWMuZW50Cj09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT0KUkNTIGZpbGU6IGZpbGVzL3BhdGNoLWJ1aWxkbWFnaWMuZW50CmRpZmYgLU4gZmlsZXMvcGF0
 Y2gtYnVpbGRtYWdpYy5lbnQKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAw
 CisrKyBmaWxlcy9wYXRjaC1idWlsZG1hZ2ljLmVudAkyNSBNYXIgMjAwNyAxNTowMTo1OCAtMDAw
 MApAQCAtMCwwICsxLDM3IEBACistLS0gLi90b29scy9ldGMvYnVpbGRtYWdpYy9idWlsZG1hZ2lj
 LmVudC5vcmlnCVN1biBNYXIgMjUgMjI6NTM6NTEgMjAwNworKysrIC4vdG9vbHMvZXRjL2J1aWxk
 bWFnaWMvYnVpbGRtYWdpYy5lbnQJU3VuIE1hciAyNSAyMjo1NDoyMSAyMDA3CitAQCAtNywzNCAr
 Nyw2IEBACisgPCEtLSBJbml0aWFsaXplIHRoZSBidWlsZCBzeXN0ZW0uIC0tPgorIDx0YXJnZXQg
 bmFtZT0iX2J1aWxkbWFnaWM6aW5pdCIgdW5sZXNzPSJpbml0LmRpc2FibGUiPgorIAorLSAgPCEt
 LSBNYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgdmVyc2lvbiBvZiBBbnQgLS0+CistICA8cHJv
 cGVydHkgbmFtZT0iYnVpbGRtYWdpYy5hbnQxNS5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNSIvPgor
 LSAgPHByb3BlcnR5IG5hbWU9ImJ1aWxkbWFnaWMuYW50MTYuYmFzZXZlcnNpb24iIHZhbHVlPSIx
 LjYiLz4KKy0KKy0gIDwhLS0KKy0gICAgIHwgQWRkIG5ldyBjb25kaXRpb25zIGZvciBvdGhlciBz
 dXBwb3J0ZWQgQW50IHZlcnNpb25zIHdoZW4gdGhleQorLSAgICAgfCBiZWNvbWUgYXZhaWFsYmxl
 LgorLSAgIC0tPgorLQorLSAgPGNvbmRpdGlvbiBwcm9wZXJ0eT0iYnVpbGRtYWdpYy5hbnQuY29t
 cGF0aWJsZSI+CistICAgIDxvcj4KKy0gICAgICA8Y29udGFpbnMgc3RyaW5nPSIke2FudC52ZXJz
 aW9ufSIKKy0gICAgICAgIHN1YnN0cmluZz0iQW50IHZlcnNpb24gJHtidWlsZG1hZ2ljLmFudDE1
 LmJhc2V2ZXJzaW9ufSIvPgorLSAgICAgIDxjb250YWlucyBzdHJpbmc9IiR7YW50LnZlcnNpb259
 IgorLSAgICAgICAgc3Vic3RyaW5nPSJBbnQgdmVyc2lvbiAke2J1aWxkbWFnaWMuYW50MTYuYmFz
 ZXZlcnNpb259Ii8+CistICAgIDwvb3I+CistICA8L2NvbmRpdGlvbj4KKy0KKy0gIDxmYWlsIHVu
 bGVzcz0iYnVpbGRtYWdpYy5hbnQuY29tcGF0aWJsZSI+CistCistICBVbnN1cHBvcnRlZCBBbnQg
 dmVyc2lvbjoKKy0KKy0gICAgJHthbnQudmVyc2lvbn0KKy0KKy0gIFBsZWFzZSBpbnN0YWxsIGEg
 dmVyc2lvbiB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGggQW50ICR7YnVpbGRtYWdpYy5hbnQxNS5i
 YXNldmVyc2lvbn0gb3IgJHtidWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9ufS4KKy0KKy0gIDwv
 ZmFpbD4KKy0KKyAgIDwhLS0gSkRLIERldGVjdGlvbiAtLT4KKyAgIDxhdmFpbGFibGUgY2xhc3Nu
 YW1lPSJqYXZhLmxhbmcuU3RyaWN0TWF0aCIgcHJvcGVydHk9IkhBVkVfSkRLXzEuMyIvPgorICAg
 PGF2YWlsYWJsZSBjbGFzc25hbWU9ImphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudCIgcHJvcGVy
 dHk9IkhBVkVfSkRLXzEuNCIvPgpJbmRleDogZmlsZXMvcGtnLWRlaW5zdGFsbC5pbgo9PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09ClJDUyBmaWxlOiBmaWxlcy9wa2ctZGVpbnN0YWxsLmluCmRpZmYgLU4gZmlsZXMvcGtnLWRl
 aW5zdGFsbC5pbgotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZp
 bGVzL3BrZy1kZWluc3RhbGwuaW4JMTQgSnVsIDIwMDMgMTA6MDM6MTMgLTAwMDAKQEAgLTAsMCAr
 MSwzNSBAQAorIyEvYmluL3NoCisjCisjIFRoaXMgc2NyaXB0IGRvZXMgdGhlIGZvbGxvd2luZy4K
 KyMKKyMgKiBDaGVja3MgaWYgdGhlIEpCb3NzIFBJRCBmaWxlIGV4aXN0cy4gSWYgaXQgZG9lcywg
 aXQga2lsbHMgdGhlCisjICAgSkJvc3MgcHJvY2VzcyBhbmQgcmVtb3ZlcyB0aGUgUElEIGZpbGUu
 CisjCisjICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzMy9wa2ctZGVpbnN0YWxsLHYgMS4yIDIw
 MDMvMDcvMTQgMTA6MDM6MTMgZGVzIEV4cCAkCisjCisKKyMgTWFrZSBzdXJlIHdlJ3JlIGluIHRo
 ZSByaWdodCBzdGFnZSBvZiB0aGUgcHJvY2VzcworaWYgWyAiJDIiID0gIkRFSU5TVEFMTCIgXTsg
 dGhlbgorCisJIyBLaWxsIEpCb3NzIGlmIGl0IGlzIHN0aWxsIHJ1bm5pbmcKKwlQSURfRklMRT0v
 dmFyL3J1bi9qYm9zcy5waWQKKwlpZiBbIC1zICR7UElEX0ZJTEV9IF07IHRoZW4KKwkJUElEPWBj
 YXQgJHtQSURfRklMRX1gCisJCWVjaG8gLW4gIj4+IEtpbGxpbmcgSkJvc3MgU2VydmVyIHByb2Nl
 c3MgKCR7UElEfSkuLi4iCisJCS9iaW4va2lsbCAke1BJRH0gPiAvZGV2L251bGwgMj4gL2Rldi9u
 dWxsCisJCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgorCQkJZWNobyAiIFsgRE9ORSBdIgorCQllbHNl
 CisJCQllY2hvICIgWyBGQUlMRUQgXSIKKwkJZmkKKwkJZWNobyAtbiAiPj4gUmVtb3ZpbmcgUElE
 IGZpbGUgKCR7UElEX0ZJTEV9KS4uLiIKKwkJcm0gJHtQSURfRklMRX0gPiAvZGV2L251bGwgMj4g
 L2Rldi9udWxsCisJCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgorCQkJZWNobyAiIFsgRE9ORSBdIgor
 CQllbHNlCisJCQllY2hvICIgWyBGQUlMRUQgXSIKKwkJZmkKKwlmaQorZmkKKworZXhpdCAwCklu
 ZGV4OiBmaWxlcy9wa2ctaW5zdGFsbC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9wa2ct
 aW5zdGFsbC5pbgpkaWZmIC1OIGZpbGVzL3BrZy1pbnN0YWxsLmluCi0tLSAvZGV2L251bGwJMSBK
 YW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZmlsZXMvcGtnLWluc3RhbGwuaW4JMjYgQXByIDIw
 MDIgMjE6NTQ6MTUgLTAwMDAKQEAgLTAsMCArMSw0NiBAQAorIyEvYmluL3NoCisjCisjIENoZWNr
 cyBpZiB0aGUgJ3d3dycgdXNlciBhbmQgZ3JvdXAgZXhpc3QuIElmIHRoZXkgZG9uJ3QsIHRoZW4K
 KyMgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNyZWF0ZSBib3RoLgorIworIyAkRnJlZUJTRDogcG9y
 dHMvamF2YS9qYm9zczMvcGtnLWluc3RhbGwsdiAxLjEgMjAwMi8wNC8yNiAyMTo1NDoxNSB6bmVy
 ZCBFeHAgJAorIworCisjIE1ha2Ugc3VyZSB3ZSdyZSBjYWxsZWQgZHVyaW5nIHRoZSAnbWFrZSBp
 bnN0YWxsJyBwcm9jZXNzCitpZiBbICIkMiIgIT0gIlBSRS1JTlNUQUxMIiBdOyB0aGVuCisgICAg
 ZXhpdCAwCitmaQorCisjIFNldCBzb21lIGNvbnN0YW50cworVVNFUj13d3cKK0dST1VQPSR7VVNF
 Un0KK1VJRD04MAorR0lEPSR7VUlEfQorCisjIFNlZSBpZiB0aGUgZ3JvdXAgYWxyZWFkeSBleGlz
 dHMKK2lmICEgcHcgZ3JvdXBzaG93ICIke0dST1VQfSIgMj4vZGV2L251bGwgMT4mMjsgdGhlbgor
 CisJIyBJZiBub3QsIHRyeSB0byBjcmVhdGUgaXQKKwlpZiBwdyBncm91cGFkZCAke0dST1VQfSAt
 ZyAke0dJRH07IHRoZW4KKwkJZWNobyAiQWRkZWQgZ3JvdXAgXCIke0dST1VQfVwiLiIKKwllbHNl
 CisJCWVjaG8gIkFkZGluZyBncm91cCBcIiR7R1JPVVB9XCIgZmFpbGVkLi4uIgorCQlleGl0IDEK
 KwlmaQorZmkKKworIyBTZWUgaWYgdGhlIHVzZXIgYWxyZWFkeSBleGlzdHMKK2lmICEgcHcgdXNl
 cnNob3cgIiR7VVNFUn0iIDI+L2Rldi9udWxsIDE+JjI7IHRoZW4KKworCSMgSWYgbm90LCB0cnkg
 dG8gY3JlYXRlIGl0CisJaWYgcHcgdXNlcmFkZCAke1VTRVJ9IC11ICR7VUlEfSAtZyAke0dST1VQ
 fSAtaCAtIFwKKwkJLXMgIi9zYmluL25vbG9naW4iIC1kICIvbm9uZXhpc3RlbnQiIFwKKwkJLWMg
 IldvcmxkIFdpZGUgV2ViIE93bmVyIjsgXAorCXRoZW4KKwkJZWNobyAiQWRkZWQgdXNlciBcIiR7
 VVNFUn1cIi4iCisJZWxzZQorCQllY2hvICJBZGRpbmcgdXNlciBcIiR7VVNFUn1cIiBmYWlsZWQu
 Li4iCisJCWV4aXQgMQorCWZpCitmaQorZXhpdCAwCkluZGV4OiBmaWxlcy9wa2ctbWVzc2FnZQo9
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9wa2ctbWVzc2FnZQpkaWZmIC1OIGZpbGVzL3BrZy1t
 ZXNzYWdlCi0tLSBmaWxlcy9wa2ctbWVzc2FnZQkxMyBKYW4gMjAwNSAwMTo1NToxMyAtMDAwMAkx
 LjEKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDcgKzAsMCBA
 QAotJSVQS0dOQU1FJSUgaGFzIGJlZW4gaW5zdGFsbGVkIGluICUlQVBQX0hPTUUlJS4KLQotSWYg
 YSB1c2VyIHNob3VsZCBiZSBhYmxlIHRvIHVzZSAlJUNPTlRST0xfU0NSSVBUX05BTUUlJSwgcHV0
 IGl0IGluIHRoZSBncm91cCAnJSVHUk9VUCUlJy4KLQotVXNlICdtYW4gJSVDT05UUk9MX1NDUklQ
 VF9OQU1FJSUnIGZvciBpbmZvcm1hdGlvbiBhYm91dCBzdGFydGluZyBhbmQgc3RvcHBpbmcgJSVB
 UFBfVElUTEUlJS4KLQotVG8gcnVuIHRoZSAlJUFQUF9USVRMRSUlIHNlcnZlciBmcm9tIHN0YXJ0
 dXAsIGFkZCAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGU9IllFUyIgaW4geW91ciAvZXRjL3JjLmNv
 bmYuIEV4dHJhIG9wdGlvbnMgY2FuIGJlIGZvdW5kIGluIHRoZSBzdGFydHVwIHNjcmlwdC4KSW5k
 ZXg6IGZpbGVzL3BrZy1tZXNzYWdlLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGZpbGVzL3BrZy1t
 ZXNzYWdlLmluCmRpZmYgLU4gZmlsZXMvcGtnLW1lc3NhZ2UuaW4KLS0tIC9kZXYvbnVsbAkxIEph
 biAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9wa2ctbWVzc2FnZS5pbgkxMyBKYW4gMjAw
 NSAwMTo1NToxMyAtMDAwMApAQCAtMCwwICsxLDcgQEAKKyUlUEtHTkFNRSUlIGhhcyBiZWVuIGlu
 c3RhbGxlZCBpbiAlJUFQUF9IT01FJSUuCisKK0lmIGEgdXNlciBzaG91bGQgYmUgYWJsZSB0byB1
 c2UgJSVDT05UUk9MX1NDUklQVF9OQU1FJSUsIHB1dCBpdCBpbiB0aGUgZ3JvdXAgJyUlR1JPVVAl
 JScuCisKK1VzZSAnbWFuICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlJyBmb3IgaW5mb3JtYXRpb24g
 YWJvdXQgc3RhcnRpbmcgYW5kIHN0b3BwaW5nICUlQVBQX1RJVExFJSUuCisKK1RvIHJ1biB0aGUg
 JSVBUFBfVElUTEUlJSBzZXJ2ZXIgZnJvbSBzdGFydHVwLCBhZGQgJSVBUFBfU0hPUlROQU1FJSVf
 ZW5hYmxlPSJZRVMiIGluIHlvdXIgL2V0Yy9yYy5jb25mLiBFeHRyYSBvcHRpb25zIGNhbiBiZSBm
 b3VuZCBpbiB0aGUgc3RhcnR1cCBzY3JpcHQuCkluZGV4OiBmaWxlcy9zdGFydHVwLnNoCj09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT0KUkNTIGZpbGU6IGZpbGVzL3N0YXJ0dXAuc2gKZGlmZiAtTiBmaWxlcy9zdGFydHVwLnNo
 Ci0tLSBmaWxlcy9zdGFydHVwLnNoCTEzIEphbiAyMDA1IDAxOjU1OjEzIC0wMDAwCTEuMgorKysg
 L2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKQEAgLTEsNTggKzAsMCBAQAotIyEv
 YmluL3NoCi0jCi0jICUlQVBQX1RJVExFJSUgc3RhcnR1cCBzY3JpcHQuCi0jCi0jICRGcmVlQlNE
 OiBwb3J0cy9qYXZhL2pib3NzMy9maWxlcy9zdGFydHVwLnNoLHYgMS4yIDIwMDUvMDEvMTMgMDE6
 NTU6MTMgaHEgRXhwICQKLSMKLQotIyBQUk9WSURFOiAlJUFQUF9TSE9SVE5BTUUlJQotIyBSRVFV
 SVJFOiBORVRXT1JLSU5HIFNFUlZFUlMKLQotIyBBZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byAv
 ZXRjL3JjLmNvbmYgdG8gZW5hYmxlICUlQVBQX1NIT1JUTkFNRSUlOgotIyAlJUFQUF9TSE9SVE5B
 TUUlJV9lbmFibGUgKGJvb2wpOgkJU2V0IHRvICJOTyIgYnkgZGVmYXVsdC4KLSMJCQkJU2V0IGl0
 IHRvICJZRVMiIHRvIGVuYWJsZSAlJUFQUF9TSE9SVE5BTUUlJQotIyAlJUFQUF9TSE9SVE5BTUUl
 JV9mbGFncyAoc3RyKToJCVNldCB0byAiLXNlcnZlciIgYnkgZGVmYXVsdC4KLSMJCQkJRXh0cmEg
 SlZNIGZsYWdzLgotIyAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWcgKHN0cik6CQlTZXQgdG8gIiIg
 YnkgZGVmYXVsdAotIwkJCQlKQm9zcyBzZXJ2ZXIgY29uZmlnLCBlZyB7YWxsfGRlZmF1bHR8bWlu
 aW1hbHxzdGFuZGFyZH0KLSMKLS4gJSVSQ19TVUJSJSUKLQotbmFtZT0iJSVBUFBfU0hPUlROQU1F
 JSUiCi1yY3Zhcj1gc2V0X3JjdmFyYAotCi1zdGFydF9jbWQ9IiUlQVBQX1NIT1JUTkFNRSUlX3N0
 YXJ0IgotcmVzdGFydF9jbWQ9IiUlQVBQX1NIT1JUTkFNRSUlX3Jlc3RhcnQiCi1waWRmaWxlPSIl
 JVBJRF9GSUxFJSUiCi1wcm9jbmFtZT0iJSVKQVZBJSUiCi0KLVsgLXogIiQlJUFQUF9TSE9SVE5B
 TUUlJV9lbmFibGUiIF0JJiYgJSVBUFBfU0hPUlROQU1FJSVfZW5hYmxlPSJOTyIKLVsgLXogIiQl
 JUFQUF9TSE9SVE5BTUUlJV9mbGFncyIgXQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9mbGFncz0iLXNl
 cnZlciIKLVsgLXogIiQlJUFQUF9TSE9SVE5BTUUlJV9jb25maWciIF0JJiYgJSVBUFBfU0hPUlRO
 QU1FJSVfY29uZmlnPSIiCi0KLSUlQVBQX1NIT1JUTkFNRSUlX3N0YXJ0ICgpCi17Ci0JY2hlY2t5
 ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUgJiYKLQl7Ci0JCWlmIFsgISAtZiAke3BpZGZp
 bGV9IF0KLQkJdGhlbgotCQkJdG91Y2ggJHtwaWRmaWxlfQotCQkJY2hvd24gJSVVU0VSJSU6JSVH
 Uk9VUCUlICR7cGlkZmlsZX0KLQkJZmkKLQotCQklJUNPTlRST0xfU0NSSVBUJSUgLXEgJHslJUFQ
 UF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQUF9TSE9SVE5BTUUlJV9jb25maWdmbGFnfSAkeyUl
 QVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gc3RhcnQgJiYKLQkJZWNobyAtbiAiICUlQVBQX1NIT1JU
 TkFNRSUlIgotCX0KLX0KLQotJSVBUFBfU0hPUlROQU1FJSVfcmVzdGFydCAoKQotewotCWNoZWNr
 eWVzbm8gJSVBUFBfU0hPUlROQU1FJSVfZW5hYmxlICYmCi0JCSUlQ09OVFJPTF9TQ1JJUFQlJSAt
 cSAkeyUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2Zs
 YWd9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnfSByZXN0YXJ0Ci19Ci0KLWxvYWRfcmNfY29u
 ZmlnICRuYW1lCi0KLVsgLW4gIiR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnfSIgXSAmJiAlJUFQ
 UF9TSE9SVE5BTUUlJV9jb25maWdmbGFnPSItY29uZmlnIgotCi1ydW5fcmNfY29tbWFuZCAiJDEi
 Cg==
 ------=_Part_225893_17557009.1174837310764--



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