ports/110768: [UPDATE]java/jboss4:fix some FATAL error noticed by portlint -C
nemo
nemoliu at gmail.com
Sun Mar 25 15:50:13 UTC 2007
The following reply was made to PR ports/110768; it has been noted by GNATS.
From: nemo <nemoliu at gmail.com>
To: bug-followup at FreeBSD.org, nemoliu at gmail.com,
"Pav Lucistnik" <pav at freebsd.org>
Cc:
Subject: Re: ports/110768: [UPDATE]java/jboss4:fix some FATAL error noticed by portlint -C
Date: Sun, 25 Mar 2007 23:43:15 +0800
------=_Part_225929_4138004.1174837395459
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 jboss4.sh;
use ant to build src;
use SUB_FILES and SUB_LIST replace use sed manaully.
------=_Part_225929_4138004.1174837395459
Content-Type: text/plain; name=patch-jboss4.txt; charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ezpntd0q
Content-Disposition: attachment; filename="patch-jboss4.txt"
SW5kZXg6IE1ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMvcG9ydHMvamF2
YS9qYm9zczQvTWFrZWZpbGUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzgKZGlmZiAtdSAtcjEu
MzggTWFrZWZpbGUKLS0tIE1ha2VmaWxlCTggTm92IDIwMDYgMTY6MTk6MTcgLTAwMDAJMS4zOAor
KysgTWFrZWZpbGUJMjUgTWFyIDIwMDcgMTU6MjY6NDcgLTAwMDAKQEAgLTIsNyArMiw3IEBACiAj
IERhdGUgY3JlYXRlZDogICAgICAgICAgICAgICAgICAxNiBBcHJpbCAyMDAyCiAjIFdob206ICAg
ICAgICAgICAgICAgICAgICAgICAgICBFcm5zdCBkZSBIYWFuIDx6bmVyZEBGcmVlQlNELm9yZz4K
ICMKLSMgJEZyZWVCU0Q6IHBvcnRzL2phdmEvamJvc3M0L01ha2VmaWxlLHYgMS4zOCAyMDA2LzEx
LzA4IDE2OjE5OjE3IHJhZmFuIEV4cCAkCisjICRGcmVlQlNEJAogIwogCiBQT1JUTkFNRT0JJHtB
UFBfVElUTEU6TH0KQEAgLTIxLDggKzIxLDExIEBACiBMQVRFU1RfTElOSz0JamJvc3M0CiBVU0Vf
SkFWQT0JeWVzCiBKQVZBX1ZFUlNJT049CTEuNCsKK1VTRV9BTlQ9CXllcworTUFLRV9BUkdTPQkt
YnVpbGRmaWxlIGJ1aWxkL2J1aWxkLnhtbAogCi1VU0VfUkNfU1VCUj0JWUVTCitVU0VfUkNfU1VC
Uj0JamJvc3M0LnNoCitTVUJfRklMRVM9CXBrZy1pbnN0YWxsIHBrZy1kZWluc3RhbGwgcGtnLW1l
c3NhZ2UgZGFlbW9uY3RsLjEgZGFlbW9uY3RsLmMKIAogLmlmICFkZWZpbmVkKE5PUE9SVERPQ1Mp
CiBQT1JURE9DUz0JKgpAQCAtNDgsNTUgKzUxLDQ4IEBACiBKQVZBX09QVFM9CiBKQVZBX0NQPQli
aW4vcnVuLmphcjoke0pBVkFfSE9NRX0vbGliL3Rvb2xzLmphcgogSkFWQV9NQUlOPQlvcmcuamJv
c3MuTWFpbgotREFFTU9OQ1RMX0RJUj0JJHtGSUxFU0RJUn0KLURBRU1PTkNUTF9GSUxFUz1kYWVt
b25jdGwuYyBkYWVtb25jdGwuMSBzdGFydHVwLnNoIHBrZy1tZXNzYWdlCiBNQU4xPQkJJHtDT05U
Uk9MX1NDUklQVF9OQU1FfS4xCiAKIEpCT1NTT1VUUFVUPQkke1dSS1NSQ30vYnVpbGQvb3V0cHV0
LyR7UE9SVE5BTUV9LSR7UE9SVFZFUlNJT046Uy8ucy9TUC99CiBBUFBfSE9NRV9GSUxFUz0JYmlu
IGNsaWVudCBsaWIgc2VydmVyCiAKIFBMSVNUX0ZJTEVTPQkke0NPTlRST0xfU0NSSVBUOlMsXiR7
UFJFRklYfS8sLH0gXAotCQkke1NUQVJUVVBfU0NSSVBUOlMsXiR7UFJFRklYfS8sLH0gXAogCQkk
e1NURE9VVF9MT0c6UyxeJHtQUkVGSVh9LywsfSBcCiAJCSR7U1RERVJSX0xPRzpTLF4ke1BSRUZJ
WH0vLCx9CiAKLVBLR01FU1NBR0U9CSR7V1JLRElSfS9wa2ctbWVzc2FnZS5mbXQKK1BLR01FU1NB
R0U9CSR7V1JLRElSfS9wa2ctbWVzc2FnZQorCitTVUJfTElTVD0JQVBQX0hPTUU9JHtBUFBfSE9N
RX0gXAorCQlBUFBfU0hPUlROQU1FPSR7QVBQX1NIT1JUTkFNRX0gXAorCQlBUFBfVElUTEU9JHtB
UFBfVElUTEV9IFwKKwkJQ09OVFJPTF9TQ1JJUFQ9JHtDT05UUk9MX1NDUklQVH0gXAorCQlDT05U
Uk9MX1NDUklQVF9NQU5QQUdFX1RJVExFPSR7Q09OVFJPTF9TQ1JJUFRfTUFOUEFHRV9USVRMRX0g
XAorCQlDT05UUk9MX1NDUklQVF9OQU1FPSR7Q09OVFJPTF9TQ1JJUFRfTkFNRX0gXAorCQlHUk9V
UD0ke0dST1VQfSBcCisJCUpBVkE9JHtKQVZBfSBcCisJCUpBVkFfQ1A9JHtKQVZBX0NQfSBcCisJ
CUpBVkFfSE9NRT0ke0pBVkFfSE9NRX0gXAorCQlKQVZBX01BSU49JHtKQVZBX01BSU59IFwKKwkJ
SkFWQV9PUFRTPSR7SkFWQV9PUFRTfSBcCisJCUpBVkFfUE9SVF9WRVJTSU9OPSR7SkFWQV9QT1JU
X1ZFUlNJT059IFwKKwkJSkFWQV9QT1JUX09TX0RFU0NSSVBUSU9OPSR7SkFWQV9QT1JUX09TX0RF
U0NSSVBUSU9OfSBcCisJCUpBUl9GSUxFPSR7SkFSX0ZJTEV9IFwKKwkJTE9HX0RJUj0ke0xPR19E
SVJ9IFwKKwkJUElEX0ZJTEU9JHtQSURfRklMRX0gXAorCQlQS0dOQU1FPSR7UEtHTkFNRX0gXAor
CQlQT1JUTkFNRT0ke1BPUlROQU1FfSBcCisJCVBPUlRWRVJTSU9OPSR7UE9SVFZFUlNJT059IFwK
KwkJUFJFRklYPSR7UFJFRklYfSBcCisJCVNUQVJUVVBfU0NSSVBUPSR7U1RBUlRVUF9TQ1JJUFR9
IFwKKwkJU1RERVJSX0xPRz0ke1NUREVSUl9MT0d9IFwKKwkJU1RET1VUX0xPRz0ke1NURE9VVF9M
T0d9IFwKKwkJU1RPUF9USU1FT1VUPSR7U1RPUF9USU1FT1VUfSBcCisJCVVTRVI9JHtVU0VSfQog
CiAuaW5jbHVkZSA8YnNkLnBvcnQucHJlLm1rPgogCi1kby1jb25maWd1cmU6Ci0JQChjZCAke0RB
RU1PTkNUTF9ESVJ9ICYmICR7Q1B9ICR7REFFTU9OQ1RMX0ZJTEVTfSAke1dSS0RJUn0pCi0JQChj
ZCAke1dSS0RJUn0gJiYgJHtSRUlOUExBQ0VfQ01EfSBcCi0JCS1lICJzfCUlUkNfU1VCUiUlfCR7
UkNfU1VCUn18ZzsiIFwKLQkJLWUgInN8JSVBUFBfSE9NRSUlfCR7QVBQX0hPTUV9fGc7IiBcCi0J
CS1lICJzfCUlQVBQX1NIT1JUTkFNRSUlfCR7QVBQX1NIT1JUTkFNRX18ZzsiIFwKLQkJLWUgInN8
JSVBUFBfVElUTEUlJXwke0FQUF9USVRMRX18ZzsiIFwKLQkJLWUgInN8JSVDT05UUk9MX1NDUklQ
VCUlfCR7Q09OVFJPTF9TQ1JJUFR9fGc7IiBcCi0JCS1lICJzfCUlQ09OVFJPTF9TQ1JJUFRfTUFO
UEFHRV9USVRMRSUlfCR7Q09OVFJPTF9TQ1JJUFRfTUFOUEFHRV9USVRMRX18ZzsiIFwKLQkJLWUg
InN8JSVDT05UUk9MX1NDUklQVF9OQU1FJSV8JHtDT05UUk9MX1NDUklQVF9OQU1FfXxnOyIgXAot
CQktZSAic3wlJUdST1VQJSV8JHtHUk9VUH18ZzsiIFwKLQkJLWUgInN8JSVKQVZBJSV8JHtKQVZB
fXxnOyIgXAotCQktZSAic3wlJUpBVkFfQ1AlJXwke0pBVkFfQ1B9fGc7IiBcCi0JCS1lICJzfCUl
SkFWQV9IT01FJSV8JHtKQVZBX0hPTUV9fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9NQUlOJSV8JHtK
QVZBX01BSU59fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9PUFRTJSV8JHtKQVZBX09QVFN9fGc7IiBc
Ci0JCS1lICJzfCUlSkFWQV9QT1JUX1ZFUlNJT04lJXwke0pBVkFfUE9SVF9WRVJTSU9OfXxnOyIg
XAotCQktZSAic3wlJUpBVkFfUE9SVF9PU19ERVNDUklQVElPTiUlfCR7SkFWQV9QT1JUX09TX0RF
U0NSSVBUSU9OfXxnOyIgXAotCQktZSAic3wlJUpBUl9GSUxFJSV8JHtKQVJfRklMRX18ZzsiIFwK
LQkJLWUgInN8JSVMT0dfRElSJSV8JHtMT0dfRElSfXxnOyIgXAotCQktZSAic3wlJVBJRF9GSUxF
JSV8JHtQSURfRklMRX18ZzsiIFwKLQkJLWUgInN8JSVQS0dOQU1FJSV8JHtQS0dOQU1FfXxnOyIg
XAotCQktZSAic3wlJVBPUlROQU1FJSV8JHtQT1JUTkFNRX18ZzsiIFwKLQkJLWUgInN8JSVQT1JU
VkVSU0lPTiUlfCR7UE9SVFZFUlNJT059fGc7IiBcCi0JCS1lICJzfCUlUFJFRklYJSV8JHtQUkVG
SVh9fGc7IiBcCi0JCS1lICJzfCUlU1RBUlRVUF9TQ1JJUFQlJXwke1NUQVJUVVBfU0NSSVBUfXxn
OyIgXAotCQktZSAic3wlJVNUREVSUl9MT0clJXwke1NUREVSUl9MT0d9fGc7IiBcCi0JCS1lICJz
fCUlU1RET1VUX0xPRyUlfCR7U1RET1VUX0xPR318ZzsiIFwKLQkJLWUgInN8JSVTVE9QX1RJTUVP
VVQlJXwke1NUT1BfVElNRU9VVH18ZzsiIFwKLQkJLWUgInN8JSVVU0VSJSV8JHtVU0VSfXxnOyIg
JHtEQUVNT05DVExfRklMRVN9KQotCUAke0ZNVH0gLXMgODAgJHtXUktESVJ9L3BrZy1tZXNzYWdl
ID4ke1BLR01FU1NBR0V9CiAKLXBvc3QtY29uZmlndXJlOgorcG9zdC1wYXRjaDoKIAlAJHtFQ0hP
X01TR30gIkluc3RhbGxhdGlvbiBzZXR0aW5nczoiCiAJQCR7RUNIT19NU0d9ICIgICBEZXN0aW5h
dGlvbiBkaXJlY3Rvcnk6ICAgICR7QVBQX0hPTUV9IgogCUAke0VDSE9fTVNHfSAiICAgQ29udHJv
bCBwcm9ncmFtIGxvY2F0aW9uOiAke0NPTlRST0xfU0NSSVBUfSIKQEAgLTExMCwyMSArMTA2LDE4
IEBACiAJQCR7RUNIT19NU0d9ICIgICBTdGFydGluZyBhZnRlciBpbnN0YWxsOiAgICR7QVVUT19T
VEFSVH0iCiAJQCR7RUNIT19NU0d9ICIgICBTdG9wIHRpbWUtb3V0OiAgICAgICAgICAgICR7U1RP
UF9USU1FT1VUfSBzZWMuIgogCi1kby1idWlsZDoKLQkoY2QgJHtXUktESVJ9ICYmICR7Q0N9ICR7
Q0ZMQUdTfSAtbyAke0NPTlRST0xfU0NSSVBUX05BTUV9IGRhZW1vbmN0bC5jKQotCShjZCAke1dS
S1NSQ30vYnVpbGQgJiYgJHtTRVRFTlZ9IEpBVkFfSE9NRT0iJHtKQVZBX0hPTUV9IiBQQVRIPSIk
e0pBVkFfSE9NRX0vYmluOiR7UEFUSH0iICR7U0h9IGJ1aWxkLnNoKQogCiBwcmUtaW5zdGFsbDoK
IAlAJHtTRVRFTlZ9IFBLR19QUkVGSVg9JHtQUkVGSVh9ICR7U0h9ICR7UEtHSU5TVEFMTH0gJHtQ
S0dOQU1FfSBQUkUtSU5TVEFMTAogCiBkby1pbnN0YWxsOgorCWNkICR7V1JLRElSfSAmJiAke0ND
fSAke0NGTEFHU30gLW8gJHtDT05UUk9MX1NDUklQVF9OQU1FfSBkYWVtb25jdGwuYwogCSR7TUtE
SVJ9ICR7QVBQX0hPTUV9ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtBUFBfSE9NRX0K
IAkke01LRElSfSAke0xPR19ESVJ9ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtMT0df
RElSfQogCShjZCAke0pCT1NTT1VUUFVUfSAmJiAke0ZJTkR9ICR7QVBQX0hPTUVfRklMRVN9IHxc
CiAJCSR7Q1BJT30gLXBkbXUgLVIgJHtVU0VSfToke0dST1VQfSAke0FQUF9IT01FfSkKIAkke0lO
U1RBTEx9IC1vICR7VVNFUn0gLWcgJHtHUk9VUH0gLW0gMDY3NTRcCiAJCSR7V1JLRElSfS8ke0NP
TlRST0xfU0NSSVBUX05BTUV9ICR7Q09OVFJPTF9TQ1JJUFR9Ci0JJHtJTlNUQUxMX1NDUklQVH0g
JHtXUktESVJ9L3N0YXJ0dXAuc2ggJHtTVEFSVFVQX1NDUklQVH0KIAkke0lOU1RBTEx9IC1vICR7
VVNFUn0gLWcgJHtHUk9VUH0gLW0gMDY0MCAvZGV2L251bGwgJHtTVERPVVRfTE9HfQogCSR7SU5T
VEFMTH0gLW8gJHtVU0VSfSAtZyAke0dST1VQfSAtbSAwNjQwIC9kZXYvbnVsbCAke1NUREVSUl9M
T0d9CiAJJHtJTlNUQUxMfSAtbyAke1VTRVJ9IC1nICR7R1JPVVB9IC1tIDA2NDAgL2Rldi9udWxs
ICR7UElEX0ZJTEV9CkluZGV4OiBwa2ctZGVpbnN0YWxsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHBr
Zy1kZWluc3RhbGwKZGlmZiAtTiBwa2ctZGVpbnN0YWxsCi0tLSBwa2ctZGVpbnN0YWxsCTE0IEp1
bCAyMDAzIDEwOjAzOjEzIC0wMDAwCTEuMgorKysgL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6
MDAgLTAwMDAKQEAgLTEsMzUgKzAsMCBAQAotIyEvYmluL3NoCi0jCi0jIFRoaXMgc2NyaXB0IGRv
ZXMgdGhlIGZvbGxvd2luZy4KLSMKLSMgKiBDaGVja3MgaWYgdGhlIEpCb3NzIFBJRCBmaWxlIGV4
aXN0cy4gSWYgaXQgZG9lcywgaXQga2lsbHMgdGhlCi0jICAgSkJvc3MgcHJvY2VzcyBhbmQgcmVt
b3ZlcyB0aGUgUElEIGZpbGUuCi0jCi0jICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzNC9wa2ct
ZGVpbnN0YWxsLHYgMS4yIDIwMDMvMDcvMTQgMTA6MDM6MTMgZGVzIEV4cCAkCi0jCi0KLSMgTWFr
ZSBzdXJlIHdlJ3JlIGluIHRoZSByaWdodCBzdGFnZSBvZiB0aGUgcHJvY2VzcwotaWYgWyAiJDIi
ID0gIkRFSU5TVEFMTCIgXTsgdGhlbgotCi0JIyBLaWxsIEpCb3NzIGlmIGl0IGlzIHN0aWxsIHJ1
bm5pbmcKLQlQSURfRklMRT0vdmFyL3J1bi9qYm9zcy5waWQKLQlpZiBbIC1zICR7UElEX0ZJTEV9
IF07IHRoZW4KLQkJUElEPWBjYXQgJHtQSURfRklMRX1gCi0JCWVjaG8gLW4gIj4+IEtpbGxpbmcg
SkJvc3MgU2VydmVyIHByb2Nlc3MgKCR7UElEfSkuLi4iCi0JCS9iaW4va2lsbCAke1BJRH0gPiAv
ZGV2L251bGwgMj4gL2Rldi9udWxsCi0JCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgotCQkJZWNobyAi
IFsgRE9ORSBdIgotCQllbHNlCi0JCQllY2hvICIgWyBGQUlMRUQgXSIKLQkJZmkKLQkJZWNobyAt
biAiPj4gUmVtb3ZpbmcgUElEIGZpbGUgKCR7UElEX0ZJTEV9KS4uLiIKLQkJcm0gJHtQSURfRklM
RX0gPiAvZGV2L251bGwgMj4gL2Rldi9udWxsCi0JCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgotCQkJ
ZWNobyAiIFsgRE9ORSBdIgotCQllbHNlCi0JCQllY2hvICIgWyBGQUlMRUQgXSIKLQkJZmkKLQlm
aQotZmkKLQotZXhpdCAwCkluZGV4OiBwa2ctaW5zdGFsbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBw
a2ctaW5zdGFsbApkaWZmIC1OIHBrZy1pbnN0YWxsCi0tLSBwa2ctaW5zdGFsbAkyNiBBcHIgMjAw
MiAyMTo1NDoxNSAtMDAwMAkxLjEKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0w
MDAwCkBAIC0xLDQ2ICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyBDaGVja3MgaWYgdGhlICd3d3cn
IHVzZXIgYW5kIGdyb3VwIGV4aXN0LiBJZiB0aGV5IGRvbid0LCB0aGVuCi0jIGFuIGF0dGVtcHQg
aXMgbWFkZSB0byBjcmVhdGUgYm90aC4KLSMKLSMgJEZyZWVCU0Q6IHBvcnRzL2phdmEvamJvc3M0
L3BrZy1pbnN0YWxsLHYgMS4xIDIwMDIvMDQvMjYgMjE6NTQ6MTUgem5lcmQgRXhwICQKLSMKLQot
IyBNYWtlIHN1cmUgd2UncmUgY2FsbGVkIGR1cmluZyB0aGUgJ21ha2UgaW5zdGFsbCcgcHJvY2Vz
cwotaWYgWyAiJDIiICE9ICJQUkUtSU5TVEFMTCIgXTsgdGhlbgotICAgIGV4aXQgMAotZmkKLQot
IyBTZXQgc29tZSBjb25zdGFudHMKLVVTRVI9d3d3Ci1HUk9VUD0ke1VTRVJ9Ci1VSUQ9ODAKLUdJ
RD0ke1VJRH0KLQotIyBTZWUgaWYgdGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzCi1pZiAhIHB3IGdy
b3Vwc2hvdyAiJHtHUk9VUH0iIDI+L2Rldi9udWxsIDE+JjI7IHRoZW4KLQotCSMgSWYgbm90LCB0
cnkgdG8gY3JlYXRlIGl0Ci0JaWYgcHcgZ3JvdXBhZGQgJHtHUk9VUH0gLWcgJHtHSUR9OyB0aGVu
Ci0JCWVjaG8gIkFkZGVkIGdyb3VwIFwiJHtHUk9VUH1cIi4iCi0JZWxzZQotCQllY2hvICJBZGRp
bmcgZ3JvdXAgXCIke0dST1VQfVwiIGZhaWxlZC4uLiIKLQkJZXhpdCAxCi0JZmkKLWZpCi0KLSMg
U2VlIGlmIHRoZSB1c2VyIGFscmVhZHkgZXhpc3RzCi1pZiAhIHB3IHVzZXJzaG93ICIke1VTRVJ9
IiAyPi9kZXYvbnVsbCAxPiYyOyB0aGVuCi0KLQkjIElmIG5vdCwgdHJ5IHRvIGNyZWF0ZSBpdAot
CWlmIHB3IHVzZXJhZGQgJHtVU0VSfSAtdSAke1VJRH0gLWcgJHtHUk9VUH0gLWggLSBcCi0JCS1z
ICIvc2Jpbi9ub2xvZ2luIiAtZCAiL25vbmV4aXN0ZW50IiBcCi0JCS1jICJXb3JsZCBXaWRlIFdl
YiBPd25lciI7IFwKLQl0aGVuCi0JCWVjaG8gIkFkZGVkIHVzZXIgXCIke1VTRVJ9XCIuIgotCWVs
c2UKLQkJZWNobyAiQWRkaW5nIHVzZXIgXCIke1VTRVJ9XCIgZmFpbGVkLi4uIgotCQlleGl0IDEK
LQlmaQotZmkKLWV4aXQgMApJbmRleDogZmlsZXMvZGFlbW9uY3RsLjEKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogZmlsZXMvZGFlbW9uY3RsLjEKZGlmZiAtTiBmaWxlcy9kYWVtb25jdGwuMQotLS0gZmls
ZXMvZGFlbW9uY3RsLjEJMjEgSnVuIDIwMDQgMTY6NDI6NTkgLTAwMDAJMS4xCisrKyAvZGV2L251
bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMApAQCAtMSw3OCArMCwwIEBACi0uRGQgRmVicnVh
cnkgMjEsIDIwMDIKLS5EdCAlJUNPTlRST0xfU0NSSVBUX01BTlBBR0VfVElUTEUlJSAxCi0uT3Mg
RnJlZUJTRAotLlNoIE5BTUUKLS5ObSAlJUNPTlRST0xfU0NSSVBUX05BTUUlJQotLk5kICUlQVBQ
X1RJVExFJSUgc2VydmVyIGNvbnRyb2wgaW50ZXJmYWNlCi0uU2ggU1lOT1BTSVMKLS5ObQotLk9w
IEZsIGphdmEtb3B0aW9ucwotLkFyIHtzdGFydHxyZXN0YXJ0fHN0b3B9Ci0uU2ggREVTQ1JJUFRJ
T04KLVRoZQotLk5tCi1wcm9ncmFtIHByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgaW50ZXJmYWNlIHRv
IHRoZSAlJUFQUF9USVRMRSUlCi1hcHBsaWNhdGlvbiBzZXJ2ZXIuIFRoZQotLk5tCi1wcm9ncmFt
IGlzIG9ubHkgYWNjZXNzaWJsZSB0byB1c2VycyBpbiB0aGUgJ3d3dycgZ3JvdXAsIGFuZCB3aWxs
Ci1vbmx5IGludm9rZSB0aGUgJSVKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT04lJSAlJUpBVkFfUE9S
VF9WRVJTSU9OJSUgSlZNLgotLlBwCi1BbnkgSmF2YSBvcHRpb25zIGxpc3RlZCBhcmUgaGFuZGVk
IG9mZiBkaXJlY3RseSB0byB0aGUgSlZNLiBBbnkKLWNsYXNzcGF0aCBvcHRpb25zIHdpbGwgYmUg
aWdub3JlZC4KLS5QcAotVGhlIHByb2dyYW0gZXhwZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgZm9s
bG93aW5nIHRlcm1pbmF0aW5nIGNvbW1hbmRzOgotLkJsIC10YWcgLXdpZHRoIGluZGVudAotLkl0
IEFyIHN0YXJ0Ci1TdGFydCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBydW5u
aW5nLgotLkl0IEFyIHJlc3RhcnQKLVJlc3RhcnQgJSVBUFBfVElUTEUlJS4gSWYgaXQgaXMgYWxy
ZWFkeSBydW5uaW5nLCB0aGVuIGl0IHdpbGwgYmUgc3RvcHBlZCBhbmQKLXRoZW4gc3RhcnRlZCBy
aWdodCBhZnRlciB0aGF0LiBPdGhlcndpc2UgaXQgd2lsbCBqdXN0IGJlIHN0YXJ0ZWQgdXAuCi0u
SXQgQXIgc3RvcAotU3RvcCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBhY3R1YWxseSBydW5uaW5n
LgotLkVsCi0uU2ggRVJST1JTCi1UaGUgZm9sbG93aW5nIGVycm9yIGNvbmRpdGlvbnMgYXJlIGRl
dGVjdGVkLiBUaGV5IHdpbGwgYmUgY2hlY2tlZCBpbiB0aGUKLXNwZWNpZmllZCBvcmRlci4gSW4g
ZWFjaCBjYXNlIGFuIGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCB3aXRoIHRoZSBuYW1lIG9mIHRo
ZQotY29udHJvbCBwcm9ncmFtIHByZXBlbmRlZC4KLS5QcAotSWYgbm8gYXJndW1lbnQgaXMgcGFz
c2VkLCB0aGVuIGEgc2ltcGxlIGhlbHAgbWVzc2FnZSBpcyBwcmludGVkIGFuZCB0aGUKLXByb2dy
YW0gZXhpc3RzIHdpdGggZXJyb3IgY29kZSAwLgotLlBwCi1JZiBhdCBsZWFzdCBvbmUgYXJndW1l
bnQgaXMgcGFzc2VkLCBidXQgaXQgaXMgZGlmZmVyZW50IGZyb20KLS5BciBzdGFydCAsCi0uQXIg
cmVzdGFydAotb3IKLS5BciBzdG9wCi10aGVuIHRoZSBoZWxwIG1lc3NhZ2UgaXMgcHJpbnRlZCBh
cyB3ZWxsLCBhbmQgdGhlIHByb2dyYW0gZXhpdHMgd2l0aCBlcnJvcgotY29kZSAxLgotLlBwCi1U
aGUgZm9sbG93aW5nIGVycm9ycyBjb25kaXRpb25zIGFyZSBkZWZpbmVkOgotLkJsIC10YWcgLXdp
ZHRoIGluZGVudAotLkl0IEVtIElsbGVnYWwgcHJvZ3JhbSBhcmd1bWVudCAoZXJyb3IgY29kZSAx
KQotLkl0IEVtIFBJRCBmaWxlIG5vdCBmb3VuZCAoZXJyb3IgY29kZSAyKQotLkl0IEVtIFBJRCBm
aWxlIHRvbyBsYXJnZSAoZXJyb3IgY29kZSAzKQotLkl0IEVtIFBJRCBmaWxlIGNvbnRhaW5zIGls
bGVnYWwgY2hhcmFjdGVyIChlcnJvciBjb2RlIDQpCi0uSXQgRW0gS2lsbCBvZiBwcm9jZXNzIGZh
aWxlZCAoZXJyb3IgY29kZSA1KQotLkl0IEVtICUlQVBQX1RJVExFJSUgaXMgYWxyZWFkeSBydW5u
aW5nIChlcnJvciBjb2RlIDYpCi0uSXQgRW0gJSVBUFBfVElUTEUlJSBpcyBub3QgcnVubmluZyAo
ZXJyb3IgY29kZSA3KQotLkl0IEVtIFVuYWJsZSB0byBjaGRpciB0byB0aGUgJSVBUFBfVElUTEUl
JSBob21lIGRpcmVjdG9yeSAoZXJyb3IgY29kZSA4KQotLkl0IEVtIFVuYWJsZSB0byBvcGVuIHRo
ZSBzdGRvdXQgbG9nIGZpbGUgKGVycm9yIGNvZGUgOSkKLS5JdCBFbSBVbmFibGUgdG8gb3BlbiB0
aGUgc3RkZXJyIGxvZyBmaWxlIChlcnJvciBjb2RlIDEwKQotLkl0IEVtIFVuYWJsZSB0byBzdGFy
dCAlJUFQUF9USVRMRSUlIChlcnJvciBjb2RlIDExKQotLkVsCi0uU2ggRklMRVMKLS5CbCAtdGFn
IC13aWR0aCAtaW5kZW50Ci0uSXQgUGEgJSVQSURfRklMRSUlCi1UaGUgJSVBUFBfVElUTEUlJSBQ
SUQgZmlsZSB0aGF0IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHByb2Nlc3MgSUQgb2YgdGhlCi1jdXJy
ZW50bHkgcnVubmluZyBwcm9jZXNzIGluLiBJdCBpcyBlbXB0aWVkIGFzIHNvb24gYXMgdGhlIHNl
cnZlciBpcyBzdG9wcGVkCi1hbmQgZmlsbGVkIHdpdGggdGhlIHByb2Nlc3MgSUQgd2hlbiBpdCBp
cyBzdGFydGVkLiBJdCBzaG91bGQgbmV2ZXIgYmUgd3JpdGFibGUKLWZvciBhbnlvbmUgYnV0Ci0u
RW0gd3d3ICwKLS5JdCBQYSAlJVNUQVJUVVBfU0NSSVBUJSUKLUEgc2NyaXB0IHRoYXQgc3RhcnRz
IHRoZQotLk5tCi1wcm9ncmFtLiBJdCBpcyB1c2VkIHRvIHN0YXJ0ICUlQVBQX1RJVExFJSUgYXQg
c3RhcnR1cCB0aW1lLgotLkVsCi0uU2ggQVVUSE9SUwotLkFuIEVybnN0IGRlIEhhYW4gQXEgem5l
cmRARnJlZUJTRC5vcmcKLS5BbiBKb25hdGhhbiBDaGVuIEFxIGpvbmNAY2hlbi5vcmcubnoKSW5k
ZXg6IGZpbGVzL2RhZW1vbmN0bC4xLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGZpbGVzL2RhZW1v
bmN0bC4xLmluCmRpZmYgLU4gZmlsZXMvZGFlbW9uY3RsLjEuaW4KLS0tIC9kZXYvbnVsbAkxIEph
biAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9kYWVtb25jdGwuMS5pbgkyMSBKdW4gMjAw
NCAxNjo0Mjo1OSAtMDAwMApAQCAtMCwwICsxLDc4IEBACisuRGQgRmVicnVhcnkgMjEsIDIwMDIK
Ky5EdCAlJUNPTlRST0xfU0NSSVBUX01BTlBBR0VfVElUTEUlJSAxCisuT3MgRnJlZUJTRAorLlNo
IE5BTUUKKy5ObSAlJUNPTlRST0xfU0NSSVBUX05BTUUlJQorLk5kICUlQVBQX1RJVExFJSUgc2Vy
dmVyIGNvbnRyb2wgaW50ZXJmYWNlCisuU2ggU1lOT1BTSVMKKy5ObQorLk9wIEZsIGphdmEtb3B0
aW9ucworLkFyIHtzdGFydHxyZXN0YXJ0fHN0b3B9CisuU2ggREVTQ1JJUFRJT04KK1RoZQorLk5t
Citwcm9ncmFtIHByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgaW50ZXJmYWNlIHRvIHRoZSAlJUFQUF9U
SVRMRSUlCithcHBsaWNhdGlvbiBzZXJ2ZXIuIFRoZQorLk5tCitwcm9ncmFtIGlzIG9ubHkgYWNj
ZXNzaWJsZSB0byB1c2VycyBpbiB0aGUgJ3d3dycgZ3JvdXAsIGFuZCB3aWxsCitvbmx5IGludm9r
ZSB0aGUgJSVKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT04lJSAlJUpBVkFfUE9SVF9WRVJTSU9OJSUg
SlZNLgorLlBwCitBbnkgSmF2YSBvcHRpb25zIGxpc3RlZCBhcmUgaGFuZGVkIG9mZiBkaXJlY3Rs
eSB0byB0aGUgSlZNLiBBbnkKK2NsYXNzcGF0aCBvcHRpb25zIHdpbGwgYmUgaWdub3JlZC4KKy5Q
cAorVGhlIHByb2dyYW0gZXhwZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHRlcm1p
bmF0aW5nIGNvbW1hbmRzOgorLkJsIC10YWcgLXdpZHRoIGluZGVudAorLkl0IEFyIHN0YXJ0CitT
dGFydCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBydW5uaW5nLgorLkl0IEFy
IHJlc3RhcnQKK1Jlc3RhcnQgJSVBUFBfVElUTEUlJS4gSWYgaXQgaXMgYWxyZWFkeSBydW5uaW5n
LCB0aGVuIGl0IHdpbGwgYmUgc3RvcHBlZCBhbmQKK3RoZW4gc3RhcnRlZCByaWdodCBhZnRlciB0
aGF0LiBPdGhlcndpc2UgaXQgd2lsbCBqdXN0IGJlIHN0YXJ0ZWQgdXAuCisuSXQgQXIgc3RvcAor
U3RvcCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBhY3R1YWxseSBydW5uaW5nLgorLkVsCisuU2gg
RVJST1JTCitUaGUgZm9sbG93aW5nIGVycm9yIGNvbmRpdGlvbnMgYXJlIGRldGVjdGVkLiBUaGV5
IHdpbGwgYmUgY2hlY2tlZCBpbiB0aGUKK3NwZWNpZmllZCBvcmRlci4gSW4gZWFjaCBjYXNlIGFu
IGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZQorY29udHJvbCBw
cm9ncmFtIHByZXBlbmRlZC4KKy5QcAorSWYgbm8gYXJndW1lbnQgaXMgcGFzc2VkLCB0aGVuIGEg
c2ltcGxlIGhlbHAgbWVzc2FnZSBpcyBwcmludGVkIGFuZCB0aGUKK3Byb2dyYW0gZXhpc3RzIHdp
dGggZXJyb3IgY29kZSAwLgorLlBwCitJZiBhdCBsZWFzdCBvbmUgYXJndW1lbnQgaXMgcGFzc2Vk
LCBidXQgaXQgaXMgZGlmZmVyZW50IGZyb20KKy5BciBzdGFydCAsCisuQXIgcmVzdGFydAorb3IK
Ky5BciBzdG9wCit0aGVuIHRoZSBoZWxwIG1lc3NhZ2UgaXMgcHJpbnRlZCBhcyB3ZWxsLCBhbmQg
dGhlIHByb2dyYW0gZXhpdHMgd2l0aCBlcnJvcgorY29kZSAxLgorLlBwCitUaGUgZm9sbG93aW5n
IGVycm9ycyBjb25kaXRpb25zIGFyZSBkZWZpbmVkOgorLkJsIC10YWcgLXdpZHRoIGluZGVudAor
Lkl0IEVtIElsbGVnYWwgcHJvZ3JhbSBhcmd1bWVudCAoZXJyb3IgY29kZSAxKQorLkl0IEVtIFBJ
RCBmaWxlIG5vdCBmb3VuZCAoZXJyb3IgY29kZSAyKQorLkl0IEVtIFBJRCBmaWxlIHRvbyBsYXJn
ZSAoZXJyb3IgY29kZSAzKQorLkl0IEVtIFBJRCBmaWxlIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFj
dGVyIChlcnJvciBjb2RlIDQpCisuSXQgRW0gS2lsbCBvZiBwcm9jZXNzIGZhaWxlZCAoZXJyb3Ig
Y29kZSA1KQorLkl0IEVtICUlQVBQX1RJVExFJSUgaXMgYWxyZWFkeSBydW5uaW5nIChlcnJvciBj
b2RlIDYpCisuSXQgRW0gJSVBUFBfVElUTEUlJSBpcyBub3QgcnVubmluZyAoZXJyb3IgY29kZSA3
KQorLkl0IEVtIFVuYWJsZSB0byBjaGRpciB0byB0aGUgJSVBUFBfVElUTEUlJSBob21lIGRpcmVj
dG9yeSAoZXJyb3IgY29kZSA4KQorLkl0IEVtIFVuYWJsZSB0byBvcGVuIHRoZSBzdGRvdXQgbG9n
IGZpbGUgKGVycm9yIGNvZGUgOSkKKy5JdCBFbSBVbmFibGUgdG8gb3BlbiB0aGUgc3RkZXJyIGxv
ZyBmaWxlIChlcnJvciBjb2RlIDEwKQorLkl0IEVtIFVuYWJsZSB0byBzdGFydCAlJUFQUF9USVRM
RSUlIChlcnJvciBjb2RlIDExKQorLkVsCisuU2ggRklMRVMKKy5CbCAtdGFnIC13aWR0aCAtaW5k
ZW50CisuSXQgUGEgJSVQSURfRklMRSUlCitUaGUgJSVBUFBfVElUTEUlJSBQSUQgZmlsZSB0aGF0
IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHByb2Nlc3MgSUQgb2YgdGhlCitjdXJyZW50bHkgcnVubmlu
ZyBwcm9jZXNzIGluLiBJdCBpcyBlbXB0aWVkIGFzIHNvb24gYXMgdGhlIHNlcnZlciBpcyBzdG9w
cGVkCithbmQgZmlsbGVkIHdpdGggdGhlIHByb2Nlc3MgSUQgd2hlbiBpdCBpcyBzdGFydGVkLiBJ
dCBzaG91bGQgbmV2ZXIgYmUgd3JpdGFibGUKK2ZvciBhbnlvbmUgYnV0CisuRW0gd3d3ICwKKy5J
dCBQYSAlJVNUQVJUVVBfU0NSSVBUJSUKK0Egc2NyaXB0IHRoYXQgc3RhcnRzIHRoZQorLk5tCitw
cm9ncmFtLiBJdCBpcyB1c2VkIHRvIHN0YXJ0ICUlQVBQX1RJVExFJSUgYXQgc3RhcnR1cCB0aW1l
LgorLkVsCisuU2ggQVVUSE9SUworLkFuIEVybnN0IGRlIEhhYW4gQXEgem5lcmRARnJlZUJTRC5v
cmcKKy5BbiBKb25hdGhhbiBDaGVuIEFxIGpvbmNAY2hlbi5vcmcubnoKSW5kZXg6IGZpbGVzL2Rh
ZW1vbmN0bC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGZpbGVzL2RhZW1vbmN0bC5jCmRpZmYgLU4g
ZmlsZXMvZGFlbW9uY3RsLmMKLS0tIGZpbGVzL2RhZW1vbmN0bC5jCTIyIERlYyAyMDA0IDIwOjQ0
OjIzIC0wMDAwCTEuMworKysgL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKQEAg
LTEsNTU3ICswLDAgQEAKLS8qCi0gKiAtKi0gbW9kZTogRnVuZGFtZW50YWw7IHRhYi13aWR0aDog
NDsgLSotCi0gKiBleDp0cz00Ci0gKgotICogRGFlbW9uIGNvbnRyb2wgcHJvZ3JhbSwgd2l0aCBK
YXZhIFN0YXJ0dXAgb3B0aW9ucy4KLSAqCi0gKglPcmlnaW5hbCBieSBFcm5zdCBkZSBIYWFuIDx6
bmVyZEBmcmVlYnNkLm9yZz4KLSAqCXd3dy9qYWthcnRhLXRvbWNhdDQvZmlsZXMvZGFlbW9uY3Rs
LmMKLSAqCi0gKiAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQvZmlsZXMvZGFlbW9uY3RsLmMs
diAxLjMgMjAwNC8xMi8yMiAyMDo0NDoyMyBocSBFeHAgJAotICovCi0KLSNpbmNsdWRlIDxhc3Nl
cnQuaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1ZGUg
PHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5j
bHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3lzbG9nLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+
Ci0jaW5jbHVkZSA8c3lzL2Vycm5vLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRl
IDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0KLSNkZWZpbmUJVFJVRQkxCi0j
ZGVmaW5lCUZBTFNFCTAKLQotLyogVGhlIGludGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiB0aGUg
Y2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgcHJvY2VzcwotICAgZGllZCBhZnRlciBhIGtpbGwgKi8K
LSNkZWZpbmUgU1RPUF9USU1FX0lOVEVSVkFMCQkxCi0KLSNkZWZpbmUgRVJSX0lMTEVHQUxfQVJH
VU1FTlQJCQkJMQotI2RlZmluZSBFUlJfUElEX0ZJTEVfTk9UX0ZPVU5ECQkJCTIKLSNkZWZpbmUg
RVJSX0tJTExfRkFJTEVECQkJCQkJNQotI2RlZmluZSBFUlJfQUxSRUFEWV9SVU5OSU5HCQkJCQk2
Ci0jZGVmaW5lIEVSUl9OT1RfUlVOTklORwkJCQkJCTcKLSNkZWZpbmUgRVJSX0NIRElSX1RPX0FQ
UF9IT01FCQkJCTgKLSNkZWZpbmUgRVJSX0FDQ0VTU19KQVJfRklMRQkJCQkJMTcKLSNkZWZpbmUg
RVJSX1NURE9VVF9MT0dGSUxFX09QRU4JCQkJOQotI2RlZmluZSBFUlJfU1RERVJSX0xPR0ZJTEVf
T1BFTgkJCQkxMAotI2RlZmluZSBFUlJfRk9SS19GQUlMRUQJCQkJCQkxMQotI2RlZmluZSBFUlJf
U1RBVF9KQVZBX0hPTUUJCQkJCTEyCi0jZGVmaW5lIEVSUl9KQVZBX0hPTUVfTk9UX0RJUgkJCQkx
MwotI2RlZmluZSBFUlJfU1RBVF9KQVZBX0NNRAkJCQkJMTQKLSNkZWZpbmUgRVJSX0pBVkFfQ01E
X05PVF9GSUxFCQkJCTE1Ci0jZGVmaW5lIEVSUl9KQVZBX0NNRF9OT1RfRVhFQ1VUQUJMRQkJCTE2
Ci0KLS8qCi0JRnVuY3Rpb24gZGVjbGFyYXRpb25zLgotICovCi1zdGF0aWMgdm9pZCBwcmludFVz
YWdlICh2b2lkKTsKLXN0YXRpYyBpbnQgcmVhZFBJRCAodm9pZCk7Ci1zdGF0aWMgdm9pZCB3cml0
ZVBJRCAoaW50IHBpZCk7Ci1zdGF0aWMgdm9pZCBjbGVhclBJRCAodm9pZCk7Ci1zdGF0aWMgdm9p
ZCBzdGFydCAoaW50IGphdmFPcHQsIGNoYXIgKiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBj
aGFyICogamJvc3NBcmdzIFtdKTsKLXN0YXRpYyB2b2lkIHN0b3AgKHZvaWQpOwotc3RhdGljIHZv
aWQgcmVzdGFydCAoaW50IGphdmFPcHQsIGNoYXIgKiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0
LCBjaGFyICogamJvc3NBcmdzIFtdKTsKLXN0YXRpYyB2b2lkIGxvZ091dHB1dCAoY2hhciAqKTsK
LQotLyoKLQlHbG9iYWxzCi0gKi8KLXN0YXRpYyBpbnQgaXNRdWlldCA9IEZBTFNFOwotc3RhdGlj
IGNoYXIgKiBvcHRRdWlldCA9ICItcSIsCQkJLyogcXVpZXQgb3B0aW9uICovCi0JCQkqIG9wdENv
bmZpZyA9ICItY29uZmlnIjsJLyogamJvc3MgY29uZmlndXJhdGlvbiBvcHRpb24gKi8KLQotLyoq
Ci0gKiBNYWluIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoaXMgcHJv
Z3JhbSBpcyBleGVjdXRlZC4KLSAqCi0gKiBAcGFyYW0gYXJnYwotICogICAgdGhlIG51bWJlciBv
ZiBhcmd1bWVudHMgcGx1cyBvbmUsIHNvIGFsd2F5cyBncmVhdGVyIHRoYW4gMC4KLSAqCi0gKiBA
cGFyYW0gYXJndgotICogICAgdGhlIGFyZ3VtZW50cyBpbiBhbiBhcnJheSBvZiBjaGFyYWN0ZXIg
cG9pbnRlcnMsIHdoZXJlIHRoZSBsYXN0IGFyZ3VtZW50Ci0gKiAgICBlbGVtZW50IGlzIGZvbGxv
d2VkIGJ5IGEgTlVMTCBlbGVtZW50LgotICovCi1pbnQKLW1haW4gKAotIGludCBhcmdjLAotIGNo
YXIgKmFyZ3YgW10pCi17Ci0JLyogRGVjbGFyZSB2YXJpYWJsZXMsIGxpa2UgYWxsIG90aGVyIGdv
b2QgQU5TSSBDIHByb2dyYW1zIGRvIDopICovCi0JaW50IGksIGphdmFPcHQsIGpib3NzT3B0Owot
CWNoYXIgKmFyZ3VtZW50LCAqKmphdmFBcmdzLCAqKmpib3NzQXJnczsKLQotCS8qIFBhcnNlIHRo
ZSBhcmd1bWVudHMgKi8KLQlpZiAoYXJnYyA8IDIpCi0JewotCQlwcmludFVzYWdlICgpOwotCQly
ZXR1cm4gMDsKLQl9Ci0KLQkvKiBYWFg6IEZpeCBmb3Igc2V0dGluZyB1cCB0aGUgZW52aXJvbm1l
bnQgZm9yIHRoZSBqYXZhIHdyYXBwZXIgc2NyaXB0ICovCi0Jc2V0dWlkIChnZXRldWlkICgpKTsK
LQlzZXRnaWQgKGdldGVnaWQgKCkpOwotCi0JLyoKLQkJQnVpbGQgdXAgamF2YSBhbmQgamJvc3Mg
b3B0aW9uIGJsb2Nrcy4KLQkgKi8KLQlqYXZhT3B0ID0gamJvc3NPcHQgPSAwOwotCWZvciAoaSA9
IDE7IGkgPCBhcmdjOyBpKyspCi0JewotCQlpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVpZXQp
ID09IDApCi0JCXsKLQkJCWlzUXVpZXQgPSBUUlVFOwotCi0JCX0gZWxzZSBpZiAoc3RyY21wIChh
cmd2IFtpXSwgb3B0Q29uZmlnKSA9PSAwKQotCQl7Ci0JCQlqYm9zc09wdCArPSAyOwotCQkJaWYg
KCsraSA+PSBhcmdjKQotCQkJewotCQkJCXByaW50VXNhZ2UgKCk7Ci0JCQkJcmV0dXJuIEVSUl9J
TExFR0FMX0FSR1VNRU5UOwotCQkJfQotCi0JCX0gZWxzZSBpZiAoKmFyZ3YgW2ldID09ICctJykK
LQkJewotCQkJamF2YU9wdCsrOwotCQl9Ci0JfQotCWlmIChqYXZhT3B0ID09IDApCi0JCWphdmFB
cmdzID0gTlVMTDsKLQllbHNlCi0JewotCQlpbnQgaiA9IDA7Ci0JCWphdmFBcmdzID0gbWFsbG9j
IChzaXplb2YgKGNoYXIgKikgKiBqYXZhT3B0KTsKLQkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkr
KykKLQkJewotCQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9wdFF1aWV0KSAmJgotCQkJCXN0cmNt
cCAoYXJndiBbaV0sIG9wdENvbmZpZykgJiYKLQkJCQkqYXJndiBbaV0gPT0gJy0nKQotCQkJewot
CQkJCWphdmFBcmdzIFtqKytdID0gYXJndiBbaV07Ci0JCQl9Ci0JCX0KLQl9Ci0JaWYgKGpib3Nz
T3B0ID09IDApCi0JCWpib3NzQXJncyA9IE5VTEw7Ci0JZWxzZQotCXsKLQkJaW50IGogPSAwOwot
CQlqYm9zc0FyZ3MgPSBtYWxsb2MgKHNpemVvZiAoY2hhciAqKSAqIGpib3NzT3B0KTsKLQkJZm9y
IChpID0gMDsgaSA8IGFyZ2M7IGkrKykKLQkJewotCQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9w
dENvbmZpZykgPT0gMCkKLQkJCXsKLQkJCQlqYm9zc0FyZ3MgW2orK10gPSAiLWMiOwotCQkJCWpi
b3NzQXJncyBbaisrXSA9IGFyZ3YgWysraV07Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvKgotCQlEZWNp
ZGUgb24ganVzdCB3aGF0IHRvIGNhbGwuCi0JICovCi0JYXJndW1lbnQgPSBhcmd2IFthcmdjIC0g
MV07Ci0JaWYgKHN0cmNtcCAoInN0YXJ0IiwgYXJndW1lbnQpID09IDApCi0JewotCQlzdGFydCAo
amF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0LCBqYm9zc0FyZ3MpOwotCi0JfSBlbHNlIGlmIChz
dHJjbXAgKCJzdG9wIiwgYXJndW1lbnQpID09IDApCi0JewotCQlzdG9wICgpOwotCi0JfSBlbHNl
IGlmIChzdHJjbXAgKCJyZXN0YXJ0IiwgYXJndW1lbnQpID09IDApCi0JewotCQlyZXN0YXJ0IChq
YXZhT3B0LCBqYXZhQXJncywgamJvc3NPcHQsIGpib3NzQXJncyk7Ci0KLQl9IGVsc2UgewotCQlm
cHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogSWxsZWdhbCBhcmd1bWVu
dCBcIiVzXCIuXG4iLCBhcmd1bWVudCk7Ci0JCXByaW50VXNhZ2UgKCk7Ci0JCWV4aXQgKEVSUl9J
TExFR0FMX0FSR1VNRU5UKTsKLQl9Ci0KLQlyZXR1cm4gRVhJVF9TVUNDRVNTOwotfQotCi0vKioK
LSAqIFByaW50cyB1c2FnZSBpbmZvcm1hdGlvbiB0byBzdGRvdXQuCi0gKi8KLXN0YXRpYyB2b2lk
Ci1wcmludFVzYWdlICh2b2lkKQotewotCXByaW50ZiAoIlVzYWdlOiAlJUNPTlRST0xfU0NSSVBU
X05BTUUlJSBbamF2YS1vcHRpb25zXSBbLWNvbmZpZyBqYm9zc2NvbmZpZ10ge3N0YXJ0fHN0b3B8
cmVzdGFydH1cbiIpOwotfQotCi0vKioKLSAqIFJlYWRzIGEgUElEIGZyb20gdGhlIFBJRCBmaWxl
LgotICoKLSAqIEByZXR1cm4KLSAqICAgIHRoZSBQSUQsIG9yIC0xIGlmIHRoZSBmaWxlIHdhcyBl
bXB0eS4KLSAqLwotc3RhdGljIGludAotcmVhZFBJRCAodm9pZCkKLXsKLQlGSUxFICogZmlsZTsK
LQlpbnQgcGlkOwotCi0JbG9nT3V0cHV0ICgiPj4gUmVhZGluZyBQSUQgZmlsZSAoJSVQSURfRklM
RSUlKS4uLiIpOwotCWZpbGUgPSBmb3BlbiAoIiUlUElEX0ZJTEUlJSIsICJyIik7Ci0JaWYgKCFm
aWxlKQotCXsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlwZXJyb3IgKCIlJUNP
TlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIG9wZW4gJSVQSURfRklMRSUlIGZvciByZWFk
aW5nOiAiKTsKLQkJZXhpdCAoRVJSX1BJRF9GSUxFX05PVF9GT1VORCk7Ci0JfQotCWlmIChmc2Nh
bmYgKGZpbGUsICIlZCIsICZwaWQpIDwgMSkKLQkJcGlkID0gLTE7Ci0JZmNsb3NlIChmaWxlKTsK
LQotCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci0JcmV0dXJuIHBpZDsKLX0KLQotLyoqCi0g
KiBXcml0ZXMgYSBwcm9jZXNzIElEIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4gVGhlIGZpbGUgaXMg
aWRlbnRpZmllZCBieSBhIGZpbGUKLSAqIGhhbmRsZS4KLSAqCi0gKiBAcGFyYW0gcGlkCi0gKiAg
ICB0aGUgUElEIHRvIHN0b3JlLCBhbHdheXMgZ3JlYXRlciB0aGFuIDAuCi0gKi8KLXN0YXRpYyB2
b2lkCi13cml0ZVBJRCAoCi0gaW50IHBpZCkKLXsKLQlGSUxFICogZmlsZTsKLQotCWxvZ091dHB1
dCAoIj4+IFdyaXRpbmcgUElEIGZpbGUuLi4iKTsKLQlmaWxlID0gZm9wZW4gKCIlJVBJRF9GSUxF
JSUiLCAidyIpOwotCWlmICghZmlsZSkKLQl7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4i
KTsKLQkJcGVycm9yICgiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUl
UElEX0ZJTEUlJSBmb3Igd3JpdGluZzogIik7Ci0JCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9V
TkQpOwotCX0KLQlmcHJpbnRmIChmaWxlLCAiJWRcbiIsIHBpZCk7Ci0JZmNsb3NlIChmaWxlKTsK
LQotCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci19Ci0KLS8qKgotCVRydW5jYXRlIHRoZSBQ
SUQgZmlsZS4KLSAqLwotc3RhdGljIHZvaWQKLWNsZWFyUElEICh2b2lkKQotewotCWlmICh0cnVu
Y2F0ZSAoIiUlUElEX0ZJTEUlJSIsIDApICE9IDApCi0JewotCQlwZXJyb3IgKCIlJUNPTlRST0xf
U0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGNsZWFyICUlUElEX0ZJTEUlJTogIik7Ci0JCWV4aXQg
KEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOwotCX0KLX0KLQotLyoqCi0gKiBDaGVja3MgaWYgdGhl
IHNwZWNpZmllZCBwcm9jZXNzIGlzIHJ1bm5pbmcuCi0gKgotICogQHBhcmFtIHBpZAotICogICAg
dGhlIHByb2Nlc3MgaWQsIGdyZWF0ZXIgdGhhbiAwLgotICoKLSAqIEByZXR1cm4KLSAqICAgIDAg
aWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlzIG5vdCBydW5uaW5nLCBhIGRpZmZlcmVudCB2YWx1
ZSBvdGhlcndpc2UuCi0gKi8KLXN0YXRpYyBpbnQKLWV4aXN0c1Byb2Nlc3MgKAotIGludCBwaWQp
Ci17Ci0JaW50IHJlc3VsdDsKLQotCS8qIENoZWNrIHByZWNvbmRpdGlvbnMgKi8KLQlhc3NlcnQg
KHBpZCA+IDApOwotCi0JLyogU2VlIGlmIHRoZSBwcm9jZXNzIGV4aXN0cyAqLwotICAgCXJlc3Vs
dCA9IGtpbGwgKHBpZCwgMCk7Ci0KLQkvKiBJZiB0aGUgcmVzdWx0IGlzIDAsIHRoZW4gdGhlIHBy
b2Nlc3MgZXhpc3RzICovCi0JcmV0dXJuIHJlc3VsdCA9PSAwOwotfQotCi0vKioKLSAqIEtpbGxz
IHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBJRC4KLSAqCi0gKiBAcGFy
YW0gcGlkCi0gKiAgICB0aGUgcHJvY2VzcyBpZCwgZ3JlYXRlciB0aGFuIDAuCi0gKi8KLXN0YXRp
YyB2b2lkCi1raWxsUHJvY2VzcyAoCi0gaW50IHBpZCkKLXsKLQlpbnQgcmVzdWx0OwotCXVuc2ln
bmVkIGludCB3YWl0ZWQ7Ci0JdW5zaWduZWQgaW50IGZvcmNlZDsKLQl1bnNpZ25lZCBpbnQgaW50
ZXJ2YWwgPSBTVE9QX1RJTUVfSU5URVJWQUw7Ci0JdW5zaWduZWQgaW50IHRpbWVvdXQgID0gJSVT
VE9QX1RJTUVPVVQlJTsKLQotCS8qIENoZWNrIHByZWNvbmRpdGlvbnMgKi8KLQlhc3NlcnQgKHBp
ZCA+IDApOwotCi0JaWYgKCFpc1F1aWV0KQotCQlwcmludGYgKCI+PiBUZXJtaW5hdGluZyBwcm9j
ZXNzICVkLi4uIiwgcGlkKTsKLQlyZXN1bHQgPSBraWxsIChwaWQsIFNJR1RFUk0pOwotCWlmIChy
ZXN1bHQgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50ZiAo
c3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3Mg
JWQ6ICIsIHBpZCk7Ci0JCXBlcnJvciAoTlVMTCk7Ci0JCWV4aXQgKEVSUl9LSUxMX0ZBSUxFRCk7
Ci0JfQotCi0JLyogV2FpdCB1bnRpbCB0aGUgcHJvY2VzcyBpcyBhY3R1YWxseSBraWxsZWQgKi8K
LSAgICByZXN1bHQgPSBleGlzdHNQcm9jZXNzIChwaWQpOwotCWZvciAod2FpdGVkPTA7IHJlc3Vs
dCA9PSAxICYmIHdhaXRlZCA8IHRpbWVvdXQ7IHdhaXRlZCArPSBpbnRlcnZhbCkKLQl7Ci0JCWxv
Z091dHB1dCAoIi4iKTsKLQkJZmZsdXNoIChzdGRvdXQpOwotCQlzbGVlcCAoaW50ZXJ2YWwpOwot
ICAgIAlyZXN1bHQgPSBleGlzdHNQcm9jZXNzIChwaWQpOwotCX0KLQotCS8qIElmIHRoZSBwcm9j
ZXNzIHN0aWxsIGV4aXN0cywgdGhlbiBoYXZlIG5vIG1lcmN5IGFuZCBraWxsIGl0ICovCi0JZm9y
Y2VkID0gMDsKLQlpZiAocmVzdWx0ID09IDEpCi0JewotCQkvKiBGb3JjZSB0aGUgcHJvY2VzcyB0
byBkaWUgKi8KLQkJcmVzdWx0ID0ga2lsbCAocGlkLCBTSUdLSUxMKTsKLQkJaWYgKHJlc3VsdCA9
PSAwKSB7Ci0JCQlmb3JjZWQgPSAxOwotCQkJbG9nT3V0cHV0ICgiIFsgS0lMTEVEIF1cbiIpOwot
CQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFByb2Nlc3MgJWQg
ZGlkIG5vdCB0ZXJtaW5hdGUgd2l0aGluICUlU1RPUF9USU1FT1VUJSUgc2VjLiBLaWxsZWQuXG4i
LCBwaWQpOwotCQl9IGVsc2UgaWYgKHJlc3VsdCAhPSBFU1JDSCkgewotCQkJbG9nT3V0cHV0ICgi
IFsgRkFJTEVEIF1cbiIpOwotCQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O
QU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3MgJWQ6ICIsIHBpZCk7Ci0JCQlwZXJyb3IgKE5V
TEwpOwotCQkJZXhpdCAoRVJSX0tJTExfRkFJTEVEKTsKLQkJfQotCX0KLQotCWlmIChmb3JjZWQg
PT0gMCkgewotCQlsb2dPdXRwdXQgKCIgWyBET05FIF1cbiIpOwotCX0KLX0KLQotLyoqCi0gKiBT
dGFydHMgdGhlIGRhZW1vbi4KLSAqLwotc3RhdGljIHZvaWQKLXN0YXJ0ICgKLSBpbnQgamF2YU9w
dCwKLSBjaGFyICogamF2YUFyZ3MgW10sCi0gaW50IGpib3NzT3B0LAotIGNoYXIgKiBqYm9zc0Fy
Z3MgW10pCi17Ci0JaW50IGksIGFyZ2M7Ci0JY2hhciAqKiBhcmd2OwotCWludCBwaWQ7Ci0JaW50
IHJlc3VsdDsKLQlpbnQgc3Rkb3V0TG9nRmlsZTsKLQlpbnQgc3RkZXJyTG9nRmlsZTsKLQlzdHJ1
Y3Qgc3RhdCBzYjsKLQotCXBpZCA9IHJlYWRQSUQgKCk7Ci0KLQlsb2dPdXRwdXQgKCI+PiBTdGFy
dGluZyAlJUFQUF9USVRMRSUlICUlUE9SVFZFUlNJT04lJS4uLiIpOwotCWlmIChwaWQgIT0gLTEp
Ci0JewotCQkvKiBDaGVjayBpZiB0aGUgcHJvY2VzcyBhY3R1YWxseSBleGlzdHMgKi8KLQkJcmVz
dWx0ID0gZXhpc3RzUHJvY2VzcyAocGlkKTsKLQkJaWYgKHJlc3VsdCA9PSAxKQotCQl7Ci0JCQls
b2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRS
T0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgYWxyZWFk
eSBydW5uaW5nLCBQSUQgaXMgJWQuXG4iLCBwaWQpOwotCQkJZXhpdCAoRVJSX0FMUkVBRFlfUlVO
TklORyk7Ci0JCX0KLQl9Ci0KLQkvKiBDaGVjayBpZiB0aGUgSkRLIGhvbWUgZGlyZWN0b3J5IGlz
IGFjdHVhbGx5IGEgZGlyZWN0b3J5ICovCi0JcmVzdWx0ID0gc3RhdCAoIiUlSkFWQV9IT01FJSUi
LCAmc2IpOwotCWlmIChyZXN1bHQgIT0gMCkgewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxu
Iik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUg
dG8gc3RhdCAlJUpBVkFfSE9NRSUlOiAiKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJS
X1NUQVRfSkFWQV9IT01FKTsKLQl9Ci0JaWYgKCFTX0lTRElSIChzYi5zdF9tb2RlKSkgewotCQls
b2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJP
TF9TQ1JJUFRfTkFNRSUlOiBKYXZhIGhvbWUgZGlyZWN0b3J5ICUlSkFWQV9IT01FJSUgaXMgbm90
IGEgZGlyZWN0b3J5LlxuIik7Ci0JCWV4aXQgKEVSUl9KQVZBX0hPTUVfTk9UX0RJUik7Ci0JfQot
Ci0JLyogQ2hlY2sgaWYgdGhlIEphdmEgY29tbWFuZCBpcyBhY3R1YWxseSBhbiBleGVjdXRhYmxl
IHJlZ3VsYXIgZmlsZSAqLwotCXJlc3VsdCA9IHN0YXQgKCIlJUpBVkElJSIsICZzYik7Ci0JaWYg
KHJlc3VsdCAhPSAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50
ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUlSkFW
QSUlOiAiKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJSX1NUQVRfSkFWQV9DTUQpOwot
CX0KLQlpZiAoIVNfSVNSRUcgKHNiLnN0X21vZGUpKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxF
RCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IEph
dmEgY29tbWFuZCAlJUpBVkElJSBpcyBub3QgYSByZWd1bGFyIGZpbGUuXG4iKTsKLQkJZXhpdCAo
RVJSX0pBVkFfQ01EX05PVF9GSUxFKTsKLQl9Ci0JcmVzdWx0ID0gYWNjZXNzICgiJSVKQVZBJSUi
LCBYX09LKTsKLQlpZiAocmVzdWx0ICE9IDApIHsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1c
biIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogSmF2YSBj
b21tYW5kICUlSkFWQSUlIGlzIG5vdCBleGVjdXRhYmxlOiAiKTsKLQkJcGVycm9yIChOVUxMKTsK
LQkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9FWEVDVVRBQkxFKTsKLQl9Ci0KLQkvKiBDaGFuZ2Ug
ZGlyZWN0b3J5ICovCi0JcmVzdWx0ID0gY2hkaXIgKCIlJUFQUF9IT01FJSUiKTsKLQlpZiAocmVz
dWx0IDwgMCkgewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0
ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gYWNjZXNzIGRpcmVjdG9y
eSAlJUFQUF9IT01FJSU6ICIpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlleGl0IChFUlJfQ0hESVJf
VE9fQVBQX0hPTUUpOwotCX0KLQotCS8qIFNlZSBpZiB0aGUgSkFSIGZpbGUgZXhpc3RzICovCi0J
cmVzdWx0ID0gYWNjZXNzICgiJSVBUFBfSE9NRSUlLyUlSkFSX0ZJTEUlJSIsIFJfT0spOwotCWlm
IChyZXN1bHQgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50
ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBhY2Nlc3MgSkFS
IGZpbGUgJSVBUFBfSE9NRSUlLyUlSkFSX0ZJTEUlJTogIik7Ci0JCXBlcnJvciAoTlVMTCk7Ci0J
CWV4aXQgKEVSUl9BQ0NFU1NfSkFSX0ZJTEUpOwotCX0KLQotCS8qIE9wZW4gdGhlIHN0ZG91dCBs
b2cgZmlsZSAqLwotCXN0ZG91dExvZ0ZpbGUgPSBvcGVuICgiJSVTVERPVVRfTE9HJSUiLCBPX1dS
T05MWSk7Ci0JaWYgKHN0ZG91dExvZ0ZpbGUgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxF
RCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVu
YWJsZSB0byBvcGVuICUlU1RET1VUX0xPRyUlIGZvciB3cml0aW5nOiAiKTsKLQkJcGVycm9yIChO
VUxMKTsKLQkJZXhpdCAoRVJSX1NURE9VVF9MT0dGSUxFX09QRU4pOwotCX0KLQlsc2VlayAoc3Rk
b3V0TG9nRmlsZSwgKG9mZl90KSAwLCBTRUVLX0VORCk7Ci0KLQkvKiBPcGVuIHRoZSBzdGRlcnIg
bG9nIGZpbGUgKi8KLQlzdGRlcnJMb2dGaWxlID0gb3BlbiAoIiUlU1RERVJSX0xPRyUlIiwgT19X
Uk9OTFkpOwotCWlmIChzdGRlcnJMb2dGaWxlIDwgMCkgewotCQlsb2dPdXRwdXQgKCIgWyBGQUlM
RUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBV
bmFibGUgdG8gb3BlbiAlJVNUREVSUl9MT0clJSBmb3Igd3JpdGluZzogIik7Ci0JCXBlcnJvciAo
TlVMTCk7Ci0JCWV4aXQgKEVSUl9TVERFUlJfTE9HRklMRV9PUEVOKTsKLQl9Ci0JbHNlZWsgKHN0
ZGVyckxvZ0ZpbGUsIChvZmZfdCkgMCwgU0VFS19FTkQpOwotCi0JLyogU3BsaXQgdGhpcyBwcm9j
ZXNzIGluIHR3byAqLwotCXN3aXRjaCAocGlkID0gZm9yayAoKSkKLQl7Ci0JY2FzZSAtMToKLQkJ
bG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRS
T0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGZvcms6ICIpOwotCQlwZXJyb3IgKE5VTEwpOwot
CQlleGl0IChFUlJfRk9SS19GQUlMRUQpOwotCQlicmVhazsKLQotCWNhc2UgMDoKLQkJLyogUmVk
aXJlY3Qgc3Rkb3V0IHRvIGxvZyBmaWxlICovCi0JCWR1cDIgKHN0ZG91dExvZ0ZpbGUsIFNURE9V
VF9GSUxFTk8pOwotCi0JCS8qIFJlZGlyZWN0IHN0ZGVyciB0byBsb2cgZmlsZSAqLwotCQlkdXAy
IChzdGRlcnJMb2dGaWxlLCBTVERFUlJfRklMRU5PKTsKLQotCQkvKiBUT0RPOiBTdXBwb3J0IHJl
ZGlyZWN0aW9uIG9mIGJvdGggc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIHNhbWUKLQkJCQkgZmls
ZSB1c2luZyBwaXBlICgyKSAqLwotCi0JCS8qCi0JCQlCdWlsZCB0aGUgYXJndW1lbnQgdmVjdG9y
LCB3aXRoIHRoZSBqYXZhL2pib3NzIG9wdGlvbnMgaWYgYW55LgotCQkgKi8KLQkJYXJndiA9IG1h
bGxvYyAoc2l6ZW9mIChjaGFyICopICogKGphdmFPcHQgKyBqYm9zc09wdCArIDUpKTsKLQkJYXJn
YyA9IDA7Ci0JCWFyZ3YgW2FyZ2MrK10gPSAiJSVKQVZBJSUiOwotCQlmb3IgKGkgPSAwOyBpIDwg
amF2YU9wdDsgaSsrKQotCQkJYXJndiBbYXJnYysrXSA9IGphdmFBcmdzIFtpXTsKLQkJYXJndiBb
YXJnYysrXSA9ICItY3AiOwotCQlhcmd2IFthcmdjKytdID0gIiUlSkFWQV9DUCUlIjsKLQkJYXJn
diBbYXJnYysrXSA9ICIlJUpBVkFfTUFJTiUlIjsKLQkJZm9yIChpID0gMDsgaSA8IGpib3NzT3B0
OyBpKyspCi0JCQlhcmd2IFthcmdjKytdID0gamJvc3NBcmdzIFtpXTsKLQkJYXJndiBbYXJnYysr
XSA9IE5VTEw7Ci0KLQkJLyogRXhlY3V0ZSB0aGUgY29tbWFuZCAqLwotCQlleGVjdiAoYXJndiBb
MF0sIGFyZ3YpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlicmVhazsKLQotCWRlZmF1bHQ6Ci0JCWxv
Z091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci0JCXdyaXRlUElEIChwaWQpOwotCX0KLX0KLQotLyoq
Ci0gKiBTdG9wcyB0aGUgZGFlbW9uLgotICovCi1zdGF0aWMgdm9pZAotc3RvcCAodm9pZCkKLXsK
LQlpbnQgcGlkOwotCi0JcGlkID0gcmVhZFBJRCAoKTsKLQotCWxvZ091dHB1dCAoIj4+IENoZWNr
aW5nIGlmICUlQVBQX1RJVExFJSUgJSVQT1JUVkVSU0lPTiUlIGlzIHJ1bm5pbmcuLi4iKTsKLQot
CS8qIElmIHRoZXJlIGlzIGEgUElELCBzZWUgaWYgdGhlIHByb2Nlc3Mgc3RpbGwgZXhpc3RzICov
Ci0JaWYgKHBpZCAhPSAtMSkKLQl7Ci0JCWludCByZXN1bHQgPSBraWxsIChwaWQsIDApOwotCQlp
ZiAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRVNSQ0gpCi0JCXsKLQkJCWNsZWFyUElEICgpOwot
CQkJcGlkID0gLTE7Ci0JCX0KLQl9Ci0KLQkvKiBJZiB0aGVyZSBpcyBubyBydW5uaW5nIHByb2Nl
c3MsIHByb2R1Y2UgYW4gZXJyb3IgKi8KLQlpZiAocGlkID09IC0xKQotCXsKLQkJbG9nT3V0cHV0
ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBU
X05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgY3VycmVudGx5IG5vdCBy
dW5uaW5nLlxuIik7Ci0JCWV4aXQgKEVSUl9OT1RfUlVOTklORyk7Ci0JfQotCWxvZ091dHB1dCAo
IiBbIERPTkUgXVxuIik7Ci0KLQkvKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgKi8KLQlraWxsUHJv
Y2VzcyAocGlkKTsKLQljbGVhclBJRCAoKTsKLX0KLQotCi0vKioKLSAqIFJlc3RhcnRzIHRoZSBw
cm9jZXNzLiBJZiBpdCBub3QgY3VycmVudGx5IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBmYWlsLgot
ICovCi1zdGF0aWMgdm9pZAotcmVzdGFydCAoCi0gaW50IGphdmFPcHQsCi0gY2hhciAqIGphdmFB
cmdzIFtdLAotIGludCBqYm9zc09wdCwKLSBjaGFyICogamJvc3NBcmdzIFtdKQotewotCXN0b3Ag
KCk7Ci0Jc3RhcnQgKGphdmFPcHQsIGphdmFBcmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsKLX0K
LQotLyoqCi0JT3V0cHV0IGxvZyB0byBzdGRvdXQuCi0gKi8KLXN0YXRpYyB2b2lkCi1sb2dPdXRw
dXQgKAotIGNoYXIgKiBzdHJpbmcpCi17Ci0JaWYgKCFpc1F1aWV0KQotCQlwcmludGYgKHN0cmlu
Zyk7Ci19CkluZGV4OiBmaWxlcy9kYWVtb25jdGwuYy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBm
aWxlcy9kYWVtb25jdGwuYy5pbgpkaWZmIC1OIGZpbGVzL2RhZW1vbmN0bC5jLmluCi0tLSAvZGV2
L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZmlsZXMvZGFlbW9uY3RsLmMuaW4J
MjIgRGVjIDIwMDQgMjA6NDQ6MjMgLTAwMDAKQEAgLTAsMCArMSw1NTcgQEAKKy8qCisgKiAtKi0g
bW9kZTogRnVuZGFtZW50YWw7IHRhYi13aWR0aDogNDsgLSotCisgKiBleDp0cz00CisgKgorICog
RGFlbW9uIGNvbnRyb2wgcHJvZ3JhbSwgd2l0aCBKYXZhIFN0YXJ0dXAgb3B0aW9ucy4KKyAqCisg
KglPcmlnaW5hbCBieSBFcm5zdCBkZSBIYWFuIDx6bmVyZEBmcmVlYnNkLm9yZz4KKyAqCXd3dy9q
YWthcnRhLXRvbWNhdDQvZmlsZXMvZGFlbW9uY3RsLmMKKyAqCisgKiAkRnJlZUJTRDogcG9ydHMv
amF2YS9qYm9zczQvZmlsZXMvZGFlbW9uY3RsLmMsdiAxLjMgMjAwNC8xMi8yMiAyMDo0NDoyMyBo
cSBFeHAgJAorICovCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgor
I2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlv
Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
c3lzbG9nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL2Vycm5vLmg+Cisj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxz
eXMvdWlvLmg+CisKKyNkZWZpbmUJVFJVRQkxCisjZGVmaW5lCUZBTFNFCTAKKworLyogVGhlIGlu
dGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiB0aGUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgcHJv
Y2VzcworICAgZGllZCBhZnRlciBhIGtpbGwgKi8KKyNkZWZpbmUgU1RPUF9USU1FX0lOVEVSVkFM
CQkxCisKKyNkZWZpbmUgRVJSX0lMTEVHQUxfQVJHVU1FTlQJCQkJMQorI2RlZmluZSBFUlJfUElE
X0ZJTEVfTk9UX0ZPVU5ECQkJCTIKKyNkZWZpbmUgRVJSX0tJTExfRkFJTEVECQkJCQkJNQorI2Rl
ZmluZSBFUlJfQUxSRUFEWV9SVU5OSU5HCQkJCQk2CisjZGVmaW5lIEVSUl9OT1RfUlVOTklORwkJ
CQkJCTcKKyNkZWZpbmUgRVJSX0NIRElSX1RPX0FQUF9IT01FCQkJCTgKKyNkZWZpbmUgRVJSX0FD
Q0VTU19KQVJfRklMRQkJCQkJMTcKKyNkZWZpbmUgRVJSX1NURE9VVF9MT0dGSUxFX09QRU4JCQkJ
OQorI2RlZmluZSBFUlJfU1RERVJSX0xPR0ZJTEVfT1BFTgkJCQkxMAorI2RlZmluZSBFUlJfRk9S
S19GQUlMRUQJCQkJCQkxMQorI2RlZmluZSBFUlJfU1RBVF9KQVZBX0hPTUUJCQkJCTEyCisjZGVm
aW5lIEVSUl9KQVZBX0hPTUVfTk9UX0RJUgkJCQkxMworI2RlZmluZSBFUlJfU1RBVF9KQVZBX0NN
RAkJCQkJMTQKKyNkZWZpbmUgRVJSX0pBVkFfQ01EX05PVF9GSUxFCQkJCTE1CisjZGVmaW5lIEVS
Ul9KQVZBX0NNRF9OT1RfRVhFQ1VUQUJMRQkJCTE2CisKKy8qCisJRnVuY3Rpb24gZGVjbGFyYXRp
b25zLgorICovCitzdGF0aWMgdm9pZCBwcmludFVzYWdlICh2b2lkKTsKK3N0YXRpYyBpbnQgcmVh
ZFBJRCAodm9pZCk7CitzdGF0aWMgdm9pZCB3cml0ZVBJRCAoaW50IHBpZCk7CitzdGF0aWMgdm9p
ZCBjbGVhclBJRCAodm9pZCk7CitzdGF0aWMgdm9pZCBzdGFydCAoaW50IGphdmFPcHQsIGNoYXIg
KiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBjaGFyICogamJvc3NBcmdzIFtdKTsKK3N0YXRp
YyB2b2lkIHN0b3AgKHZvaWQpOworc3RhdGljIHZvaWQgcmVzdGFydCAoaW50IGphdmFPcHQsIGNo
YXIgKiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBjaGFyICogamJvc3NBcmdzIFtdKTsKK3N0
YXRpYyB2b2lkIGxvZ091dHB1dCAoY2hhciAqKTsKKworLyoKKwlHbG9iYWxzCisgKi8KK3N0YXRp
YyBpbnQgaXNRdWlldCA9IEZBTFNFOworc3RhdGljIGNoYXIgKiBvcHRRdWlldCA9ICItcSIsCQkJ
LyogcXVpZXQgb3B0aW9uICovCisJCQkqIG9wdENvbmZpZyA9ICItY29uZmlnIjsJLyogamJvc3Mg
Y29uZmlndXJhdGlvbiBvcHRpb24gKi8KKworLyoqCisgKiBNYWluIGZ1bmN0aW9uLiBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoaXMgcHJvZ3JhbSBpcyBleGVjdXRlZC4KKyAqCisgKiBA
cGFyYW0gYXJnYworICogICAgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGx1cyBvbmUsIHNvIGFs
d2F5cyBncmVhdGVyIHRoYW4gMC4KKyAqCisgKiBAcGFyYW0gYXJndgorICogICAgdGhlIGFyZ3Vt
ZW50cyBpbiBhbiBhcnJheSBvZiBjaGFyYWN0ZXIgcG9pbnRlcnMsIHdoZXJlIHRoZSBsYXN0IGFy
Z3VtZW50CisgKiAgICBlbGVtZW50IGlzIGZvbGxvd2VkIGJ5IGEgTlVMTCBlbGVtZW50LgorICov
CitpbnQKK21haW4gKAorIGludCBhcmdjLAorIGNoYXIgKmFyZ3YgW10pCit7CisJLyogRGVjbGFy
ZSB2YXJpYWJsZXMsIGxpa2UgYWxsIG90aGVyIGdvb2QgQU5TSSBDIHByb2dyYW1zIGRvIDopICov
CisJaW50IGksIGphdmFPcHQsIGpib3NzT3B0OworCWNoYXIgKmFyZ3VtZW50LCAqKmphdmFBcmdz
LCAqKmpib3NzQXJnczsKKworCS8qIFBhcnNlIHRoZSBhcmd1bWVudHMgKi8KKwlpZiAoYXJnYyA8
IDIpCisJeworCQlwcmludFVzYWdlICgpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBYWFg6IEZp
eCBmb3Igc2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIHRoZSBqYXZhIHdyYXBwZXIgc2Ny
aXB0ICovCisJc2V0dWlkIChnZXRldWlkICgpKTsKKwlzZXRnaWQgKGdldGVnaWQgKCkpOworCisJ
LyoKKwkJQnVpbGQgdXAgamF2YSBhbmQgamJvc3Mgb3B0aW9uIGJsb2Nrcy4KKwkgKi8KKwlqYXZh
T3B0ID0gamJvc3NPcHQgPSAwOworCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCisJeworCQlp
ZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVpZXQpID09IDApCisJCXsKKwkJCWlzUXVpZXQgPSBU
UlVFOworCisJCX0gZWxzZSBpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSA9PSAwKQor
CQl7CisJCQlqYm9zc09wdCArPSAyOworCQkJaWYgKCsraSA+PSBhcmdjKQorCQkJeworCQkJCXBy
aW50VXNhZ2UgKCk7CisJCQkJcmV0dXJuIEVSUl9JTExFR0FMX0FSR1VNRU5UOworCQkJfQorCisJ
CX0gZWxzZSBpZiAoKmFyZ3YgW2ldID09ICctJykKKwkJeworCQkJamF2YU9wdCsrOworCQl9CisJ
fQorCWlmIChqYXZhT3B0ID09IDApCisJCWphdmFBcmdzID0gTlVMTDsKKwllbHNlCisJeworCQlp
bnQgaiA9IDA7CisJCWphdmFBcmdzID0gbWFsbG9jIChzaXplb2YgKGNoYXIgKikgKiBqYXZhT3B0
KTsKKwkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKwkJeworCQkJaWYgKHN0cmNtcCAoYXJn
diBbaV0sIG9wdFF1aWV0KSAmJgorCQkJCXN0cmNtcCAoYXJndiBbaV0sIG9wdENvbmZpZykgJiYK
KwkJCQkqYXJndiBbaV0gPT0gJy0nKQorCQkJeworCQkJCWphdmFBcmdzIFtqKytdID0gYXJndiBb
aV07CisJCQl9CisJCX0KKwl9CisJaWYgKGpib3NzT3B0ID09IDApCisJCWpib3NzQXJncyA9IE5V
TEw7CisJZWxzZQorCXsKKwkJaW50IGogPSAwOworCQlqYm9zc0FyZ3MgPSBtYWxsb2MgKHNpemVv
ZiAoY2hhciAqKSAqIGpib3NzT3B0KTsKKwkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKwkJ
eworCQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9wdENvbmZpZykgPT0gMCkKKwkJCXsKKwkJCQlq
Ym9zc0FyZ3MgW2orK10gPSAiLWMiOworCQkJCWpib3NzQXJncyBbaisrXSA9IGFyZ3YgWysraV07
CisJCQl9CisJCX0KKwl9CisKKwkvKgorCQlEZWNpZGUgb24ganVzdCB3aGF0IHRvIGNhbGwuCisJ
ICovCisJYXJndW1lbnQgPSBhcmd2IFthcmdjIC0gMV07CisJaWYgKHN0cmNtcCAoInN0YXJ0Iiwg
YXJndW1lbnQpID09IDApCisJeworCQlzdGFydCAoamF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0
LCBqYm9zc0FyZ3MpOworCisJfSBlbHNlIGlmIChzdHJjbXAgKCJzdG9wIiwgYXJndW1lbnQpID09
IDApCisJeworCQlzdG9wICgpOworCisJfSBlbHNlIGlmIChzdHJjbXAgKCJyZXN0YXJ0IiwgYXJn
dW1lbnQpID09IDApCisJeworCQlyZXN0YXJ0IChqYXZhT3B0LCBqYXZhQXJncywgamJvc3NPcHQs
IGpib3NzQXJncyk7CisKKwl9IGVsc2UgeworCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xf
U0NSSVBUX05BTUUlJTogSWxsZWdhbCBhcmd1bWVudCBcIiVzXCIuXG4iLCBhcmd1bWVudCk7CisJ
CXByaW50VXNhZ2UgKCk7CisJCWV4aXQgKEVSUl9JTExFR0FMX0FSR1VNRU5UKTsKKwl9CisKKwly
ZXR1cm4gRVhJVF9TVUNDRVNTOworfQorCisvKioKKyAqIFByaW50cyB1c2FnZSBpbmZvcm1hdGlv
biB0byBzdGRvdXQuCisgKi8KK3N0YXRpYyB2b2lkCitwcmludFVzYWdlICh2b2lkKQoreworCXBy
aW50ZiAoIlVzYWdlOiAlJUNPTlRST0xfU0NSSVBUX05BTUUlJSBbamF2YS1vcHRpb25zXSBbLWNv
bmZpZyBqYm9zc2NvbmZpZ10ge3N0YXJ0fHN0b3B8cmVzdGFydH1cbiIpOworfQorCisvKioKKyAq
IFJlYWRzIGEgUElEIGZyb20gdGhlIFBJRCBmaWxlLgorICoKKyAqIEByZXR1cm4KKyAqICAgIHRo
ZSBQSUQsIG9yIC0xIGlmIHRoZSBmaWxlIHdhcyBlbXB0eS4KKyAqLworc3RhdGljIGludAorcmVh
ZFBJRCAodm9pZCkKK3sKKwlGSUxFICogZmlsZTsKKwlpbnQgcGlkOworCisJbG9nT3V0cHV0ICgi
Pj4gUmVhZGluZyBQSUQgZmlsZSAoJSVQSURfRklMRSUlKS4uLiIpOworCWZpbGUgPSBmb3BlbiAo
IiUlUElEX0ZJTEUlJSIsICJyIik7CisJaWYgKCFmaWxlKQorCXsKKwkJbG9nT3V0cHV0ICgiIFsg
RkFJTEVEIF1cbiIpOworCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxl
IHRvIG9wZW4gJSVQSURfRklMRSUlIGZvciByZWFkaW5nOiAiKTsKKwkJZXhpdCAoRVJSX1BJRF9G
SUxFX05PVF9GT1VORCk7CisJfQorCWlmIChmc2NhbmYgKGZpbGUsICIlZCIsICZwaWQpIDwgMSkK
KwkJcGlkID0gLTE7CisJZmNsb3NlIChmaWxlKTsKKworCWxvZ091dHB1dCAoIiBbIERPTkUgXVxu
Iik7CisJcmV0dXJuIHBpZDsKK30KKworLyoqCisgKiBXcml0ZXMgYSBwcm9jZXNzIElEIHRvIHRo
ZSBzcGVjaWZpZWQgZmlsZS4gVGhlIGZpbGUgaXMgaWRlbnRpZmllZCBieSBhIGZpbGUKKyAqIGhh
bmRsZS4KKyAqCisgKiBAcGFyYW0gcGlkCisgKiAgICB0aGUgUElEIHRvIHN0b3JlLCBhbHdheXMg
Z3JlYXRlciB0aGFuIDAuCisgKi8KK3N0YXRpYyB2b2lkCit3cml0ZVBJRCAoCisgaW50IHBpZCkK
K3sKKwlGSUxFICogZmlsZTsKKworCWxvZ091dHB1dCAoIj4+IFdyaXRpbmcgUElEIGZpbGUuLi4i
KTsKKwlmaWxlID0gZm9wZW4gKCIlJVBJRF9GSUxFJSUiLCAidyIpOworCWlmICghZmlsZSkKKwl7
CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJcGVycm9yICgiJSVDT05UUk9MX1ND
UklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlUElEX0ZJTEUlJSBmb3Igd3JpdGluZzogIik7
CisJCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOworCX0KKwlmcHJpbnRmIChmaWxlLCAi
JWRcbiIsIHBpZCk7CisJZmNsb3NlIChmaWxlKTsKKworCWxvZ091dHB1dCAoIiBbIERPTkUgXVxu
Iik7Cit9CisKKy8qKgorCVRydW5jYXRlIHRoZSBQSUQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQK
K2NsZWFyUElEICh2b2lkKQoreworCWlmICh0cnVuY2F0ZSAoIiUlUElEX0ZJTEUlJSIsIDApICE9
IDApCisJeworCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGNs
ZWFyICUlUElEX0ZJTEUlJTogIik7CisJCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOwor
CX0KK30KKworLyoqCisgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlzIHJ1bm5p
bmcuCisgKgorICogQHBhcmFtIHBpZAorICogICAgdGhlIHByb2Nlc3MgaWQsIGdyZWF0ZXIgdGhh
biAwLgorICoKKyAqIEByZXR1cm4KKyAqICAgIDAgaWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlz
IG5vdCBydW5uaW5nLCBhIGRpZmZlcmVudCB2YWx1ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBp
bnQKK2V4aXN0c1Byb2Nlc3MgKAorIGludCBwaWQpCit7CisJaW50IHJlc3VsdDsKKworCS8qIENo
ZWNrIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQgKHBpZCA+IDApOworCisJLyogU2VlIGlmIHRo
ZSBwcm9jZXNzIGV4aXN0cyAqLworICAgCXJlc3VsdCA9IGtpbGwgKHBpZCwgMCk7CisKKwkvKiBJ
ZiB0aGUgcmVzdWx0IGlzIDAsIHRoZW4gdGhlIHByb2Nlc3MgZXhpc3RzICovCisJcmV0dXJuIHJl
c3VsdCA9PSAwOworfQorCisvKioKKyAqIEtpbGxzIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkg
dGhlIHNwZWNpZmllZCBJRC4KKyAqCisgKiBAcGFyYW0gcGlkCisgKiAgICB0aGUgcHJvY2VzcyBp
ZCwgZ3JlYXRlciB0aGFuIDAuCisgKi8KK3N0YXRpYyB2b2lkCitraWxsUHJvY2VzcyAoCisgaW50
IHBpZCkKK3sKKwlpbnQgcmVzdWx0OworCXVuc2lnbmVkIGludCB3YWl0ZWQ7CisJdW5zaWduZWQg
aW50IGZvcmNlZDsKKwl1bnNpZ25lZCBpbnQgaW50ZXJ2YWwgPSBTVE9QX1RJTUVfSU5URVJWQUw7
CisJdW5zaWduZWQgaW50IHRpbWVvdXQgID0gJSVTVE9QX1RJTUVPVVQlJTsKKworCS8qIENoZWNr
IHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQgKHBpZCA+IDApOworCisJaWYgKCFpc1F1aWV0KQor
CQlwcmludGYgKCI+PiBUZXJtaW5hdGluZyBwcm9jZXNzICVkLi4uIiwgcGlkKTsKKwlyZXN1bHQg
PSBraWxsIChwaWQsIFNJR1RFUk0pOworCWlmIChyZXN1bHQgPCAwKSB7CisJCWxvZ091dHB1dCAo
IiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O
QU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3MgJWQ6ICIsIHBpZCk7CisJCXBlcnJvciAoTlVM
TCk7CisJCWV4aXQgKEVSUl9LSUxMX0ZBSUxFRCk7CisJfQorCisJLyogV2FpdCB1bnRpbCB0aGUg
cHJvY2VzcyBpcyBhY3R1YWxseSBraWxsZWQgKi8KKyAgICByZXN1bHQgPSBleGlzdHNQcm9jZXNz
IChwaWQpOworCWZvciAod2FpdGVkPTA7IHJlc3VsdCA9PSAxICYmIHdhaXRlZCA8IHRpbWVvdXQ7
IHdhaXRlZCArPSBpbnRlcnZhbCkKKwl7CisJCWxvZ091dHB1dCAoIi4iKTsKKwkJZmZsdXNoIChz
dGRvdXQpOworCQlzbGVlcCAoaW50ZXJ2YWwpOworICAgIAlyZXN1bHQgPSBleGlzdHNQcm9jZXNz
IChwaWQpOworCX0KKworCS8qIElmIHRoZSBwcm9jZXNzIHN0aWxsIGV4aXN0cywgdGhlbiBoYXZl
IG5vIG1lcmN5IGFuZCBraWxsIGl0ICovCisJZm9yY2VkID0gMDsKKwlpZiAocmVzdWx0ID09IDEp
CisJeworCQkvKiBGb3JjZSB0aGUgcHJvY2VzcyB0byBkaWUgKi8KKwkJcmVzdWx0ID0ga2lsbCAo
cGlkLCBTSUdLSUxMKTsKKwkJaWYgKHJlc3VsdCA9PSAwKSB7CisJCQlmb3JjZWQgPSAxOworCQkJ
bG9nT3V0cHV0ICgiIFsgS0lMTEVEIF1cbiIpOworCQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05U
Uk9MX1NDUklQVF9OQU1FJSU6IFByb2Nlc3MgJWQgZGlkIG5vdCB0ZXJtaW5hdGUgd2l0aGluICUl
U1RPUF9USU1FT1VUJSUgc2VjLiBLaWxsZWQuXG4iLCBwaWQpOworCQl9IGVsc2UgaWYgKHJlc3Vs
dCAhPSBFU1JDSCkgeworCQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQkJZnByaW50
ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nl
c3MgJWQ6ICIsIHBpZCk7CisJCQlwZXJyb3IgKE5VTEwpOworCQkJZXhpdCAoRVJSX0tJTExfRkFJ
TEVEKTsKKwkJfQorCX0KKworCWlmIChmb3JjZWQgPT0gMCkgeworCQlsb2dPdXRwdXQgKCIgWyBE
T05FIF1cbiIpOworCX0KK30KKworLyoqCisgKiBTdGFydHMgdGhlIGRhZW1vbi4KKyAqLworc3Rh
dGljIHZvaWQKK3N0YXJ0ICgKKyBpbnQgamF2YU9wdCwKKyBjaGFyICogamF2YUFyZ3MgW10sCisg
aW50IGpib3NzT3B0LAorIGNoYXIgKiBqYm9zc0FyZ3MgW10pCit7CisJaW50IGksIGFyZ2M7CisJ
Y2hhciAqKiBhcmd2OworCWludCBwaWQ7CisJaW50IHJlc3VsdDsKKwlpbnQgc3Rkb3V0TG9nRmls
ZTsKKwlpbnQgc3RkZXJyTG9nRmlsZTsKKwlzdHJ1Y3Qgc3RhdCBzYjsKKworCXBpZCA9IHJlYWRQ
SUQgKCk7CisKKwlsb2dPdXRwdXQgKCI+PiBTdGFydGluZyAlJUFQUF9USVRMRSUlICUlUE9SVFZF
UlNJT04lJS4uLiIpOworCWlmIChwaWQgIT0gLTEpCisJeworCQkvKiBDaGVjayBpZiB0aGUgcHJv
Y2VzcyBhY3R1YWxseSBleGlzdHMgKi8KKwkJcmVzdWx0ID0gZXhpc3RzUHJvY2VzcyAocGlkKTsK
KwkJaWYgKHJlc3VsdCA9PSAxKQorCQl7CisJCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7
CisJCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElU
TEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgYWxyZWFkeSBydW5uaW5nLCBQSUQgaXMgJWQuXG4iLCBw
aWQpOworCQkJZXhpdCAoRVJSX0FMUkVBRFlfUlVOTklORyk7CisJCX0KKwl9CisKKwkvKiBDaGVj
ayBpZiB0aGUgSkRLIGhvbWUgZGlyZWN0b3J5IGlzIGFjdHVhbGx5IGEgZGlyZWN0b3J5ICovCisJ
cmVzdWx0ID0gc3RhdCAoIiUlSkFWQV9IT01FJSUiLCAmc2IpOworCWlmIChyZXN1bHQgIT0gMCkg
eworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUl
Q09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gc3RhdCAlJUpBVkFfSE9NRSUlOiAiKTsK
KwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX1NUQVRfSkFWQV9IT01FKTsKKwl9CisJaWYg
KCFTX0lTRElSIChzYi5zdF9tb2RlKSkgeworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7
CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBKYXZhIGhvbWUg
ZGlyZWN0b3J5ICUlSkFWQV9IT01FJSUgaXMgbm90IGEgZGlyZWN0b3J5LlxuIik7CisJCWV4aXQg
KEVSUl9KQVZBX0hPTUVfTk9UX0RJUik7CisJfQorCisJLyogQ2hlY2sgaWYgdGhlIEphdmEgY29t
bWFuZCBpcyBhY3R1YWxseSBhbiBleGVjdXRhYmxlIHJlZ3VsYXIgZmlsZSAqLworCXJlc3VsdCA9
IHN0YXQgKCIlJUpBVkElJSIsICZzYik7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCWxvZ091dHB1
dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQ
VF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUlSkFWQSUlOiAiKTsKKwkJcGVycm9yIChOVUxMKTsK
KwkJZXhpdCAoRVJSX1NUQVRfSkFWQV9DTUQpOworCX0KKwlpZiAoIVNfSVNSRUcgKHNiLnN0X21v
ZGUpKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJy
LCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IEphdmEgY29tbWFuZCAlJUpBVkElJSBpcyBub3Qg
YSByZWd1bGFyIGZpbGUuXG4iKTsKKwkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9GSUxFKTsKKwl9
CisJcmVzdWx0ID0gYWNjZXNzICgiJSVKQVZBJSUiLCBYX09LKTsKKwlpZiAocmVzdWx0ICE9IDAp
IHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJpbnRmIChzdGRlcnIsICIl
JUNPTlRST0xfU0NSSVBUX05BTUUlJTogSmF2YSBjb21tYW5kICUlSkFWQSUlIGlzIG5vdCBleGVj
dXRhYmxlOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9F
WEVDVVRBQkxFKTsKKwl9CisKKwkvKiBDaGFuZ2UgZGlyZWN0b3J5ICovCisJcmVzdWx0ID0gY2hk
aXIgKCIlJUFQUF9IT01FJSUiKTsKKwlpZiAocmVzdWx0IDwgMCkgeworCQlsb2dPdXRwdXQgKCIg
WyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFN
RSUlOiBVbmFibGUgdG8gYWNjZXNzIGRpcmVjdG9yeSAlJUFQUF9IT01FJSU6ICIpOworCQlwZXJy
b3IgKE5VTEwpOworCQlleGl0IChFUlJfQ0hESVJfVE9fQVBQX0hPTUUpOworCX0KKworCS8qIFNl
ZSBpZiB0aGUgSkFSIGZpbGUgZXhpc3RzICovCisJcmVzdWx0ID0gYWNjZXNzICgiJSVBUFBfSE9N
RSUlLyUlSkFSX0ZJTEUlJSIsIFJfT0spOworCWlmIChyZXN1bHQgPCAwKSB7CisJCWxvZ091dHB1
dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQ
VF9OQU1FJSU6IFVuYWJsZSB0byBhY2Nlc3MgSkFSIGZpbGUgJSVBUFBfSE9NRSUlLyUlSkFSX0ZJ
TEUlJTogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVSUl9BQ0NFU1NfSkFSX0ZJTEUp
OworCX0KKworCS8qIE9wZW4gdGhlIHN0ZG91dCBsb2cgZmlsZSAqLworCXN0ZG91dExvZ0ZpbGUg
PSBvcGVuICgiJSVTVERPVVRfTE9HJSUiLCBPX1dST05MWSk7CisJaWYgKHN0ZG91dExvZ0ZpbGUg
PCAwKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJy
LCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlU1RET1VUX0xPRyUl
IGZvciB3cml0aW5nOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX1NURE9VVF9M
T0dGSUxFX09QRU4pOworCX0KKwlsc2VlayAoc3Rkb3V0TG9nRmlsZSwgKG9mZl90KSAwLCBTRUVL
X0VORCk7CisKKwkvKiBPcGVuIHRoZSBzdGRlcnIgbG9nIGZpbGUgKi8KKwlzdGRlcnJMb2dGaWxl
ID0gb3BlbiAoIiUlU1RERVJSX0xPRyUlIiwgT19XUk9OTFkpOworCWlmIChzdGRlcnJMb2dGaWxl
IDwgMCkgeworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVy
ciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gb3BlbiAlJVNUREVSUl9MT0cl
JSBmb3Igd3JpdGluZzogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVSUl9TVERFUlJf
TE9HRklMRV9PUEVOKTsKKwl9CisJbHNlZWsgKHN0ZGVyckxvZ0ZpbGUsIChvZmZfdCkgMCwgU0VF
S19FTkQpOworCisJLyogU3BsaXQgdGhpcyBwcm9jZXNzIGluIHR3byAqLworCXN3aXRjaCAocGlk
ID0gZm9yayAoKSkKKwl7CisJY2FzZSAtMToKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIp
OworCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRv
IGZvcms6ICIpOworCQlwZXJyb3IgKE5VTEwpOworCQlleGl0IChFUlJfRk9SS19GQUlMRUQpOwor
CQlicmVhazsKKworCWNhc2UgMDoKKwkJLyogUmVkaXJlY3Qgc3Rkb3V0IHRvIGxvZyBmaWxlICov
CisJCWR1cDIgKHN0ZG91dExvZ0ZpbGUsIFNURE9VVF9GSUxFTk8pOworCisJCS8qIFJlZGlyZWN0
IHN0ZGVyciB0byBsb2cgZmlsZSAqLworCQlkdXAyIChzdGRlcnJMb2dGaWxlLCBTVERFUlJfRklM
RU5PKTsKKworCQkvKiBUT0RPOiBTdXBwb3J0IHJlZGlyZWN0aW9uIG9mIGJvdGggc3Rkb3V0IGFu
ZCBzdGRlcnIgdG8gdGhlIHNhbWUKKwkJCQkgZmlsZSB1c2luZyBwaXBlICgyKSAqLworCisJCS8q
CisJCQlCdWlsZCB0aGUgYXJndW1lbnQgdmVjdG9yLCB3aXRoIHRoZSBqYXZhL2pib3NzIG9wdGlv
bnMgaWYgYW55LgorCQkgKi8KKwkJYXJndiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyICopICogKGph
dmFPcHQgKyBqYm9zc09wdCArIDUpKTsKKwkJYXJnYyA9IDA7CisJCWFyZ3YgW2FyZ2MrK10gPSAi
JSVKQVZBJSUiOworCQlmb3IgKGkgPSAwOyBpIDwgamF2YU9wdDsgaSsrKQorCQkJYXJndiBbYXJn
YysrXSA9IGphdmFBcmdzIFtpXTsKKwkJYXJndiBbYXJnYysrXSA9ICItY3AiOworCQlhcmd2IFth
cmdjKytdID0gIiUlSkFWQV9DUCUlIjsKKwkJYXJndiBbYXJnYysrXSA9ICIlJUpBVkFfTUFJTiUl
IjsKKwkJZm9yIChpID0gMDsgaSA8IGpib3NzT3B0OyBpKyspCisJCQlhcmd2IFthcmdjKytdID0g
amJvc3NBcmdzIFtpXTsKKwkJYXJndiBbYXJnYysrXSA9IE5VTEw7CisKKwkJLyogRXhlY3V0ZSB0
aGUgY29tbWFuZCAqLworCQlleGVjdiAoYXJndiBbMF0sIGFyZ3YpOworCQlwZXJyb3IgKE5VTEwp
OworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7CisJ
CXdyaXRlUElEIChwaWQpOworCX0KK30KKworLyoqCisgKiBTdG9wcyB0aGUgZGFlbW9uLgorICov
CitzdGF0aWMgdm9pZAorc3RvcCAodm9pZCkKK3sKKwlpbnQgcGlkOworCisJcGlkID0gcmVhZFBJ
RCAoKTsKKworCWxvZ091dHB1dCAoIj4+IENoZWNraW5nIGlmICUlQVBQX1RJVExFJSUgJSVQT1JU
VkVSU0lPTiUlIGlzIHJ1bm5pbmcuLi4iKTsKKworCS8qIElmIHRoZXJlIGlzIGEgUElELCBzZWUg
aWYgdGhlIHByb2Nlc3Mgc3RpbGwgZXhpc3RzICovCisJaWYgKHBpZCAhPSAtMSkKKwl7CisJCWlu
dCByZXN1bHQgPSBraWxsIChwaWQsIDApOworCQlpZiAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0g
RVNSQ0gpCisJCXsKKwkJCWNsZWFyUElEICgpOworCQkJcGlkID0gLTE7CisJCX0KKwl9CisKKwkv
KiBJZiB0aGVyZSBpcyBubyBydW5uaW5nIHByb2Nlc3MsIHByb2R1Y2UgYW4gZXJyb3IgKi8KKwlp
ZiAocGlkID09IC0xKQorCXsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJp
bnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBP
UlRWRVJTSU9OJSUgaXMgY3VycmVudGx5IG5vdCBydW5uaW5nLlxuIik7CisJCWV4aXQgKEVSUl9O
T1RfUlVOTklORyk7CisJfQorCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7CisKKwkvKiBUZXJt
aW5hdGUgdGhlIHByb2Nlc3MgKi8KKwlraWxsUHJvY2VzcyAocGlkKTsKKwljbGVhclBJRCAoKTsK
K30KKworCisvKioKKyAqIFJlc3RhcnRzIHRoZSBwcm9jZXNzLiBJZiBpdCBub3QgY3VycmVudGx5
IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBmYWlsLgorICovCitzdGF0aWMgdm9pZAorcmVzdGFydCAo
CisgaW50IGphdmFPcHQsCisgY2hhciAqIGphdmFBcmdzIFtdLAorIGludCBqYm9zc09wdCwKKyBj
aGFyICogamJvc3NBcmdzIFtdKQoreworCXN0b3AgKCk7CisJc3RhcnQgKGphdmFPcHQsIGphdmFB
cmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsKK30KKworLyoqCisJT3V0cHV0IGxvZyB0byBzdGRv
dXQuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dPdXRwdXQgKAorIGNoYXIgKiBzdHJpbmcpCit7CisJ
aWYgKCFpc1F1aWV0KQorCQlwcmludGYgKHN0cmluZyk7Cit9CkluZGV4OiBmaWxlcy9qYm9zczQu
c2guaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvamJvc3M0LnNoLmluCmRpZmYgLU4gZmls
ZXMvamJvc3M0LnNoLmluCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAor
KysgZmlsZXMvamJvc3M0LnNoLmluCTEzIEp1biAyMDA2IDE3OjQzOjE0IC0wMDAwCkBAIC0wLDAg
KzEsNjEgQEAKKyMhL2Jpbi9zaAorIworIyAlJUFQUF9USVRMRSUlIHN0YXJ0dXAgc2NyaXB0Lgor
IworIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQvZmlsZXMvc3RhcnR1cC5zaCx2IDEuNCAy
MDA2LzA2LzEzIDE3OjQzOjE0IGdsZXdpcyBFeHAgJAorIworCisjIFBST1ZJREU6ICUlQVBQX1NI
T1JUTkFNRSUlCisjIFJFUVVJUkU6IE5FVFdPUktJTkcgU0VSVkVSUworCisjIEFkZCB0aGUgZm9s
bG93aW5nIGxpbmVzIHRvIC9ldGMvcmMuY29uZiB0byBlbmFibGUgJSVBUFBfU0hPUlROQU1FJSU6
CisjICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAoYm9vbCk6CQlTZXQgdG8gIk5PIiBieSBkZWZh
dWx0LgorIwkJCQlTZXQgaXQgdG8gIllFUyIgdG8gZW5hYmxlICUlQVBQX1NIT1JUTkFNRSUlCisj
ICUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIChzdHIpOgkJU2V0IHRvICItc2VydmVyIiBieSBkZWZh
dWx0LgorIwkJCQlFeHRyYSBKVk0gZmxhZ3MuCisjICUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZyAo
c3RyKToJCVNldCB0byAiIiBieSBkZWZhdWx0CisjCQkJCUpCb3NzIHNlcnZlciBjb25maWcsIGVn
IHthbGx8ZGVmYXVsdHxtaW5pbWFsfHN0YW5kYXJkfQorIworLiAlJVJDX1NVQlIlJQorCituYW1l
PSIlJUFQUF9TSE9SVE5BTUUlJSIKK3JjdmFyPWBzZXRfcmN2YXJgCisKK3N0YXJ0X2NtZD0iJSVB
UFBfU0hPUlROQU1FJSVfc3RhcnQiCityZXN0YXJ0X2NtZD0iJSVBUFBfU0hPUlROQU1FJSVfcmVz
dGFydCIKK3BpZGZpbGU9IiUlUElEX0ZJTEUlJSIKK3Byb2NuYW1lPSIlJUpBVkElJSIKKworWyAt
eiAiJCUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSIgXQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9lbmFi
bGU9Ik5PIgorWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIiBdCSYmICUlQVBQX1NIT1JU
TkFNRSUlX2ZsYWdzPSItc2VydmVyIgorWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZyIg
XQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWc9IiIKKworJSVBUFBfU0hPUlROQU1FJSVfc3Rh
cnQgKCkKK3sKKwljaGVja3llc25vICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAmJgorCXsKKwkJ
aWYgWyAhIC1mICR7cGlkZmlsZX0gXQorCQl0aGVuCisJCQl0b3VjaCAke3BpZGZpbGV9CisJCQlj
aG93biAlJVVTRVIlJTolJUdST1VQJSUgJHtwaWRmaWxlfQorCQlmaQorCisJCWVjaG8gIlN0YXJ0
aW5nICUlQVBQX1NIT1JUTkFNRSUlLiIKKwkJJSVDT05UUk9MX1NDUklQVCUlIC1xICR7JSVBUFBf
U0hPUlROQU1FJSVfZmxhZ3N9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnZmxhZ30gJHslJUFQ
UF9TSE9SVE5BTUUlJV9jb25maWd9IHN0YXJ0CisJfQorfQorCislJUFQUF9TSE9SVE5BTUUlJV9y
ZXN0YXJ0ICgpCit7CisJY2hlY2t5ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUgJiYKKwl7
CisJCWVjaG8gIlJlc3RhcnRpbmcgJSVBUFBfU0hPUlROQU1FJSUuIgorCQklJUNPTlRST0xfU0NS
SVBUJSUgLXEgJHslJUFQUF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQUF9TSE9SVE5BTUUlJV9j
b25maWdmbGFnfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gcmVzdGFydAorCX0KK30KKwor
bG9hZF9yY19jb25maWcgJG5hbWUKKworWyAtbiAiJHslJUFQUF9TSE9SVE5BTUUlJV9jb25maWd9
IiBdICYmICUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2ZsYWc9Ii1jb25maWciCisKK3J1bl9yY19j
b21tYW5kICIkMSIKSW5kZXg6IGZpbGVzL3BhdGNoLWJ1aWxkLnhtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiBmaWxlcy9wYXRjaC1idWlsZC54bWwKZGlmZiAtTiBmaWxlcy9wYXRjaC1idWlsZC54bWwK
LS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9wYXRjaC1i
dWlsZC54bWwJMjUgTWFyIDIwMDcgMTU6MDk6NTMgLTAwMDAKQEAgLTAsMCArMSwzOCBAQAorLS0t
IC4vYnVpbGQvYnVpbGQueG1sLm9yaWcJU3VuIE1hciAyNSAyMzowNzoxNyAyMDA3CisrKysgLi9i
dWlsZC9idWlsZC54bWwJU3VuIE1hciAyNSAyMzowNzo0NCAyMDA3CitAQCAtNDAsNiArNDAsMzUg
QEAKKyAgICAtLT4KKyAKKyAgIDx0YXJnZXQgbmFtZT0iaW5pdCIgdW5sZXNzPSJpbml0LmRpc2Fi
bGUiIGRlcGVuZHM9Il9idWlsZG1hZ2ljOmluaXQiPgorKzwhLS0gTWFrZSBzdXJlIHdlIGhhdmUg
dGhlIHJpZ2h0IHZlcnNpb24gb2YgQW50IC0tPgorKyAgPHByb3BlcnR5IG5hbWU9ImJ1aWxkbWFn
aWMuYW50MTUuYmFzZXZlcnNpb24iIHZhbHVlPSIxLjUiLz4KKysgIDxwcm9wZXJ0eSBuYW1lPSJi
dWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9uIiB2YWx1ZT0iMS42Ii8+CisrICA8cHJvcGVydHkg
bmFtZT0iYnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNyIvPgorKyAgPCEt
LQorKyAgICAgfCBBZGQgbmV3IGNvbmRpdGlvbnMgZm9yIG90aGVyIHN1cHBvcnRlZCBBbnQgdmVy
c2lvbnMgd2hlbiB0aGV5CisrICAgICB8IGJlY29tZSBhdmFpYWxibGUuCisrICAgLS0+CisrCisr
ICA8Y29uZGl0aW9uIHByb3BlcnR5PSJidWlsZG1hZ2ljLmFudC5jb21wYXRpYmxlIj4KKysgICAg
PG9yPgorKyAgICAgIDxjb250YWlucyBzdHJpbmc9IiR7YW50LnZlcnNpb259IgorKyAgICAgICAg
c3Vic3RyaW5nPSJBbnQgdmVyc2lvbiAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259Ii8+
CisrICAgICAgPGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lvbn0iCisrICAgICAgICBzdWJz
dHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbn0iLz4KKysg
ICAgICA8Y29udGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9ufSIKKysgICAgICAgIHN1YnN0cmlu
Zz0iQW50IHZlcnNpb24gJHtidWlsZG1hZ2ljLmFudDE3LmJhc2V2ZXJzaW9ufSIvPgorKyAgICA8
L29yPgorKyAgPC9jb25kaXRpb24+CisrCisrICA8ZmFpbCB1bmxlc3M9ImJ1aWxkbWFnaWMuYW50
LmNvbXBhdGlibGUiPgorKworKyAgVW5zdXBwb3J0ZWQgQW50IHZlcnNpb246CisrCisrICAgICR7
YW50LnZlcnNpb259CisrCisrICBQbGVhc2UgaW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29t
cGF0aWJsZSB3aXRoIEFudCAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259IG9yICR7YnVp
bGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbn0gb3IgJHtidWlsZG1hZ2ljLmFudDE3LmJhc2V2ZXJz
aW9ufS4KKysKKysgIDwvZmFpbD4KKyAgIDwvdGFyZ2V0PgorIAorIApJbmRleDogZmlsZXMvcGF0
Y2gtYnVpbGRtYWdpYy5lbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGF0Y2gtYnVpbGRt
YWdpYy5lbnQKZGlmZiAtTiBmaWxlcy9wYXRjaC1idWlsZG1hZ2ljLmVudAotLS0gL2Rldi9udWxs
CTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZpbGVzL3BhdGNoLWJ1aWxkbWFnaWMuZW50
CTI1IE1hciAyMDA3IDE1OjEwOjQ1IC0wMDAwCkBAIC0wLDAgKzEsMzcgQEAKKy0tLSAuL3Rvb2xz
L2V0Yy9idWlsZG1hZ2ljL2J1aWxkbWFnaWMuZW50Lm9yaWcJU3VuIE1hciAyNSAyMzowNTo1NSAy
MDA3CisrKysgLi90b29scy9ldGMvYnVpbGRtYWdpYy9idWlsZG1hZ2ljLmVudAlTdW4gTWFyIDI1
IDIzOjA2OjE1IDIwMDcKK0BAIC03LDM0ICs3LDYgQEAKKyA8IS0tIEluaXRpYWxpemUgdGhlIGJ1
aWxkIHN5c3RlbS4gLS0+CisgPHRhcmdldCBuYW1lPSJfYnVpbGRtYWdpYzppbml0IiB1bmxlc3M9
ImluaXQuZGlzYWJsZSI+CisgCistICA8IS0tIE1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCB2
ZXJzaW9uIG9mIEFudCAtLT4KKy0gIDxwcm9wZXJ0eSBuYW1lPSJidWlsZG1hZ2ljLmFudDE1LmJh
c2V2ZXJzaW9uIiB2YWx1ZT0iMS41Ii8+CistICA8cHJvcGVydHkgbmFtZT0iYnVpbGRtYWdpYy5h
bnQxNi5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNiIvPgorLSAgCistICA8IS0tCistICAgICB8IEFk
ZCBuZXcgY29uZGl0aW9ucyBmb3Igb3RoZXIgc3VwcG9ydGVkIEFudCB2ZXJzaW9ucyB3aGVuIHRo
ZXkKKy0gICAgIHwgYmVjb21lIGF2YWlhbGJsZS4KKy0gICAtLT4KKy0KKy0gIDxjb25kaXRpb24g
cHJvcGVydHk9ImJ1aWxkbWFnaWMuYW50LmNvbXBhdGlibGUiPgorLSAgICA8b3I+CistICAgICAg
PGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lvbn0iCistICAgICAgICBzdWJzdHJpbmc9IkFu
dCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNS5iYXNldmVyc2lvbn0iLz4KKy0gICAgICA8Y29u
dGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9ufSIKKy0gICAgICAgIHN1YnN0cmluZz0iQW50IHZl
cnNpb24gJHtidWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9ufSIvPgorLSAgICA8L29yPgorLSAg
PC9jb25kaXRpb24+CistCistICA8ZmFpbCB1bmxlc3M9ImJ1aWxkbWFnaWMuYW50LmNvbXBhdGli
bGUiPgorLQorLSAgVW5zdXBwb3J0ZWQgQW50IHZlcnNpb246CistCistICAgICR7YW50LnZlcnNp
b259CistCistICBQbGVhc2UgaW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29tcGF0aWJsZSB3
aXRoIEFudCAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259IG9yICR7YnVpbGRtYWdpYy5h
bnQxNi5iYXNldmVyc2lvbn0uCistCistICA8L2ZhaWw+CistCisgICA8IS0tIEpESyBEZXRlY3Rp
b24gLS0+CisgICA8YXZhaWxhYmxlIGNsYXNzbmFtZT0iamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVt
ZW50IiBwcm9wZXJ0eT0iSEFWRV9KREtfMS40Ii8+CisgICA8YXZhaWxhYmxlIGNsYXNzbmFtZT0i
amF2YS5sYW5nLkVudW0iIHByb3BlcnR5PSJIQVZFX0pES18xLjUiLz4KSW5kZXg6IGZpbGVzL3Br
Zy1kZWluc3RhbGwuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGtnLWRlaW5zdGFsbC5p
bgpkaWZmIC1OIGZpbGVzL3BrZy1kZWluc3RhbGwuaW4KLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcw
IDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9wa2ctZGVpbnN0YWxsLmluCTE0IEp1bCAyMDAzIDEw
OjAzOjEzIC0wMDAwCkBAIC0wLDAgKzEsMzUgQEAKKyMhL2Jpbi9zaAorIworIyBUaGlzIHNjcmlw
dCBkb2VzIHRoZSBmb2xsb3dpbmcuCisjCisjICogQ2hlY2tzIGlmIHRoZSBKQm9zcyBQSUQgZmls
ZSBleGlzdHMuIElmIGl0IGRvZXMsIGl0IGtpbGxzIHRoZQorIyAgIEpCb3NzIHByb2Nlc3MgYW5k
IHJlbW92ZXMgdGhlIFBJRCBmaWxlLgorIworIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQv
cGtnLWRlaW5zdGFsbCx2IDEuMiAyMDAzLzA3LzE0IDEwOjAzOjEzIGRlcyBFeHAgJAorIworCisj
IE1ha2Ugc3VyZSB3ZSdyZSBpbiB0aGUgcmlnaHQgc3RhZ2Ugb2YgdGhlIHByb2Nlc3MKK2lmIFsg
IiQyIiA9ICJERUlOU1RBTEwiIF07IHRoZW4KKworCSMgS2lsbCBKQm9zcyBpZiBpdCBpcyBzdGls
bCBydW5uaW5nCisJUElEX0ZJTEU9L3Zhci9ydW4vamJvc3MucGlkCisJaWYgWyAtcyAke1BJRF9G
SUxFfSBdOyB0aGVuCisJCVBJRD1gY2F0ICR7UElEX0ZJTEV9YAorCQllY2hvIC1uICI+PiBLaWxs
aW5nIEpCb3NzIFNlcnZlciBwcm9jZXNzICgke1BJRH0pLi4uIgorCQkvYmluL2tpbGwgJHtQSUR9
ID4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbAorCQlpZiBbICQ/IC1lcSAwIF07IHRoZW4KKwkJCWVj
aG8gIiBbIERPTkUgXSIKKwkJZWxzZQorCQkJZWNobyAiIFsgRkFJTEVEIF0iCisJCWZpCisJCWVj
aG8gLW4gIj4+IFJlbW92aW5nIFBJRCBmaWxlICgke1BJRF9GSUxFfSkuLi4iCisJCXJtICR7UElE
X0ZJTEV9ID4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbAorCQlpZiBbICQ/IC1lcSAwIF07IHRoZW4K
KwkJCWVjaG8gIiBbIERPTkUgXSIKKwkJZWxzZQorCQkJZWNobyAiIFsgRkFJTEVEIF0iCisJCWZp
CisJZmkKK2ZpCisKK2V4aXQgMApJbmRleDogZmlsZXMvcGtnLWluc3RhbGwuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogZmlsZXMvcGtnLWluc3RhbGwuaW4KZGlmZiAtTiBmaWxlcy9wa2ctaW5zdGFs
bC5pbgotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZpbGVzL3Br
Zy1pbnN0YWxsLmluCTI2IEFwciAyMDAyIDIxOjU0OjE1IC0wMDAwCkBAIC0wLDAgKzEsNDYgQEAK
KyMhL2Jpbi9zaAorIworIyBDaGVja3MgaWYgdGhlICd3d3cnIHVzZXIgYW5kIGdyb3VwIGV4aXN0
LiBJZiB0aGV5IGRvbid0LCB0aGVuCisjIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjcmVhdGUgYm90
aC4KKyMKKyMgJEZyZWVCU0Q6IHBvcnRzL2phdmEvamJvc3M0L3BrZy1pbnN0YWxsLHYgMS4xIDIw
MDIvMDQvMjYgMjE6NTQ6MTUgem5lcmQgRXhwICQKKyMKKworIyBNYWtlIHN1cmUgd2UncmUgY2Fs
bGVkIGR1cmluZyB0aGUgJ21ha2UgaW5zdGFsbCcgcHJvY2VzcworaWYgWyAiJDIiICE9ICJQUkUt
SU5TVEFMTCIgXTsgdGhlbgorICAgIGV4aXQgMAorZmkKKworIyBTZXQgc29tZSBjb25zdGFudHMK
K1VTRVI9d3d3CitHUk9VUD0ke1VTRVJ9CitVSUQ9ODAKK0dJRD0ke1VJRH0KKworIyBTZWUgaWYg
dGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzCitpZiAhIHB3IGdyb3Vwc2hvdyAiJHtHUk9VUH0iIDI+
L2Rldi9udWxsIDE+JjI7IHRoZW4KKworCSMgSWYgbm90LCB0cnkgdG8gY3JlYXRlIGl0CisJaWYg
cHcgZ3JvdXBhZGQgJHtHUk9VUH0gLWcgJHtHSUR9OyB0aGVuCisJCWVjaG8gIkFkZGVkIGdyb3Vw
IFwiJHtHUk9VUH1cIi4iCisJZWxzZQorCQllY2hvICJBZGRpbmcgZ3JvdXAgXCIke0dST1VQfVwi
IGZhaWxlZC4uLiIKKwkJZXhpdCAxCisJZmkKK2ZpCisKKyMgU2VlIGlmIHRoZSB1c2VyIGFscmVh
ZHkgZXhpc3RzCitpZiAhIHB3IHVzZXJzaG93ICIke1VTRVJ9IiAyPi9kZXYvbnVsbCAxPiYyOyB0
aGVuCisKKwkjIElmIG5vdCwgdHJ5IHRvIGNyZWF0ZSBpdAorCWlmIHB3IHVzZXJhZGQgJHtVU0VS
fSAtdSAke1VJRH0gLWcgJHtHUk9VUH0gLWggLSBcCisJCS1zICIvc2Jpbi9ub2xvZ2luIiAtZCAi
L25vbmV4aXN0ZW50IiBcCisJCS1jICJXb3JsZCBXaWRlIFdlYiBPd25lciI7IFwKKwl0aGVuCisJ
CWVjaG8gIkFkZGVkIHVzZXIgXCIke1VTRVJ9XCIuIgorCWVsc2UKKwkJZWNobyAiQWRkaW5nIHVz
ZXIgXCIke1VTRVJ9XCIgZmFpbGVkLi4uIgorCQlleGl0IDEKKwlmaQorZmkKK2V4aXQgMApJbmRl
eDogZmlsZXMvcGtnLW1lc3NhZ2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGtnLW1lc3Nh
Z2UKZGlmZiAtTiBmaWxlcy9wa2ctbWVzc2FnZQotLS0gZmlsZXMvcGtnLW1lc3NhZ2UJMjIgRGVj
IDIwMDQgMjA6NDQ6MjMgLTAwMDAJMS4xCisrKyAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDow
MCAtMDAwMApAQCAtMSw3ICswLDAgQEAKLSUlUEtHTkFNRSUlIGhhcyBiZWVuIGluc3RhbGxlZCBp
biAlJUFQUF9IT01FJSUuCi0KLUlmIGEgdXNlciBzaG91bGQgYmUgYWJsZSB0byB1c2UgJSVDT05U
Uk9MX1NDUklQVF9OQU1FJSUsIHB1dCBpdCBpbiB0aGUgZ3JvdXAgJyUlR1JPVVAlJScuCi0KLVVz
ZSAnbWFuICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlJyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3Rh
cnRpbmcgYW5kIHN0b3BwaW5nICUlQVBQX1RJVExFJSUuCi0KLVRvIHJ1biB0aGUgJSVBUFBfVElU
TEUlJSBzZXJ2ZXIgZnJvbSBzdGFydHVwLCBhZGQgJSVBUFBfU0hPUlROQU1FJSVfZW5hYmxlPSJZ
RVMiIGluIHlvdXIgL2V0Yy9yYy5jb25mLiBFeHRyYSBvcHRpb25zIGNhbiBiZSBmb3VuZCBpbiB0
aGUgc3RhcnR1cCBzY3JpcHQuCkluZGV4OiBmaWxlcy9wa2ctbWVzc2FnZS5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiBmaWxlcy9wa2ctbWVzc2FnZS5pbgpkaWZmIC1OIGZpbGVzL3BrZy1tZXNzYWdl
LmluCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZmlsZXMvcGtn
LW1lc3NhZ2UuaW4JMjIgRGVjIDIwMDQgMjA6NDQ6MjMgLTAwMDAKQEAgLTAsMCArMSw3IEBACisl
JVBLR05BTUUlJSBoYXMgYmVlbiBpbnN0YWxsZWQgaW4gJSVBUFBfSE9NRSUlLgorCitJZiBhIHVz
ZXIgc2hvdWxkIGJlIGFibGUgdG8gdXNlICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlLCBwdXQgaXQg
aW4gdGhlIGdyb3VwICclJUdST1VQJSUnLgorCitVc2UgJ21hbiAlJUNPTlRST0xfU0NSSVBUX05B
TUUlJScgZm9yIGluZm9ybWF0aW9uIGFib3V0IHN0YXJ0aW5nIGFuZCBzdG9wcGluZyAlJUFQUF9U
SVRMRSUlLgorCitUbyBydW4gdGhlICUlQVBQX1RJVExFJSUgc2VydmVyIGZyb20gc3RhcnR1cCwg
YWRkICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZT0iWUVTIiBpbiB5b3VyIC9ldGMvcmMuY29uZi4g
RXh0cmEgb3B0aW9ucyBjYW4gYmUgZm91bmQgaW4gdGhlIHN0YXJ0dXAgc2NyaXB0LgpJbmRleDog
ZmlsZXMvc3RhcnR1cC5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9zdGFydHVwLnNoCmRp
ZmYgLU4gZmlsZXMvc3RhcnR1cC5zaAotLS0gZmlsZXMvc3RhcnR1cC5zaAkxMyBKdW4gMjAwNiAx
Nzo0MzoxNCAtMDAwMAkxLjQKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAw
CkBAIC0xLDYxICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyAlJUFQUF9USVRMRSUlIHN0YXJ0dXAg
c2NyaXB0LgotIwotIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQvZmlsZXMvc3RhcnR1cC5z
aCx2IDEuNCAyMDA2LzA2LzEzIDE3OjQzOjE0IGdsZXdpcyBFeHAgJAotIwotCi0jIFBST1ZJREU6
ICUlQVBQX1NIT1JUTkFNRSUlCi0jIFJFUVVJUkU6IE5FVFdPUktJTkcgU0VSVkVSUwotCi0jIEFk
ZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIC9ldGMvcmMuY29uZiB0byBlbmFibGUgJSVBUFBfU0hP
UlROQU1FJSU6Ci0jICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAoYm9vbCk6CQlTZXQgdG8gIk5P
IiBieSBkZWZhdWx0LgotIwkJCQlTZXQgaXQgdG8gIllFUyIgdG8gZW5hYmxlICUlQVBQX1NIT1JU
TkFNRSUlCi0jICUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIChzdHIpOgkJU2V0IHRvICItc2VydmVy
IiBieSBkZWZhdWx0LgotIwkJCQlFeHRyYSBKVk0gZmxhZ3MuCi0jICUlQVBQX1NIT1JUTkFNRSUl
X2NvbmZpZyAoc3RyKToJCVNldCB0byAiIiBieSBkZWZhdWx0Ci0jCQkJCUpCb3NzIHNlcnZlciBj
b25maWcsIGVnIHthbGx8ZGVmYXVsdHxtaW5pbWFsfHN0YW5kYXJkfQotIwotLiAlJVJDX1NVQlIl
JQotCi1uYW1lPSIlJUFQUF9TSE9SVE5BTUUlJSIKLXJjdmFyPWBzZXRfcmN2YXJgCi0KLXN0YXJ0
X2NtZD0iJSVBUFBfU0hPUlROQU1FJSVfc3RhcnQiCi1yZXN0YXJ0X2NtZD0iJSVBUFBfU0hPUlRO
QU1FJSVfcmVzdGFydCIKLXBpZGZpbGU9IiUlUElEX0ZJTEUlJSIKLXByb2NuYW1lPSIlJUpBVkEl
JSIKLQotWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSIgXQkmJiAlJUFQUF9TSE9SVE5B
TUUlJV9lbmFibGU9Ik5PIgotWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIiBdCSYmICUl
QVBQX1NIT1JUTkFNRSUlX2ZsYWdzPSItc2VydmVyIgotWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUl
X2NvbmZpZyIgXQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWc9IiIKLQotJSVBUFBfU0hPUlRO
QU1FJSVfc3RhcnQgKCkKLXsKLQljaGVja3llc25vICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAm
JgotCXsKLQkJaWYgWyAhIC1mICR7cGlkZmlsZX0gXQotCQl0aGVuCi0JCQl0b3VjaCAke3BpZGZp
bGV9Ci0JCQljaG93biAlJVVTRVIlJTolJUdST1VQJSUgJHtwaWRmaWxlfQotCQlmaQotCi0JCWVj
aG8gIlN0YXJ0aW5nICUlQVBQX1NIT1JUTkFNRSUlLiIKLQkJJSVDT05UUk9MX1NDUklQVCUlIC1x
ICR7JSVBUFBfU0hPUlROQU1FJSVfZmxhZ3N9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnZmxh
Z30gJHslJUFQUF9TSE9SVE5BTUUlJV9jb25maWd9IHN0YXJ0Ci0JfQotfQotCi0lJUFQUF9TSE9S
VE5BTUUlJV9yZXN0YXJ0ICgpCi17Ci0JY2hlY2t5ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFi
bGUgJiYKLQl7Ci0JCWVjaG8gIlJlc3RhcnRpbmcgJSVBUFBfU0hPUlROQU1FJSUuIgotCQklJUNP
TlRST0xfU0NSSVBUJSUgLXEgJHslJUFQUF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQUF9TSE9S
VE5BTUUlJV9jb25maWdmbGFnfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gcmVzdGFydAot
CX0KLX0KLQotbG9hZF9yY19jb25maWcgJG5hbWUKLQotWyAtbiAiJHslJUFQUF9TSE9SVE5BTUUl
JV9jb25maWd9IiBdICYmICUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2ZsYWc9Ii1jb25maWciCi0K
LXJ1bl9yY19jb21tYW5kICIkMSIK
------=_Part_225929_4138004.1174837395459--
More information about the freebsd-ports-bugs
mailing list