Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Aug 2010 13:34:47 +0400
From:      pluknet <pluknet@gmail.com>
To:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   [patch] big whitespace cleanup in sys/kern/*
Message-ID:  <AANLkTi=E%2Bzg5rNSv0Dg6uG%2Baxxvz=vrRVdug0JiNhbHG@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--00c09f93d63c341395048ce80794
Content-Type: text/plain; charset=ISO-8859-1

Hi.

I looked into sys/kern/* files to fix a bunch of common w/s style issues (221):
- leading space before label;
- leading space(s) before <tab>;
- space(s) instead of <tab>(s);
- space(s) in blank like.

I tried to be conservative and didn't touch semi-contrib files and
those with its own style.
Here is a diff I'd like someone look into and check in if there will
no objections.

-- 
wbr,
pluknet

--00c09f93d63c341395048ce80794
Content-Type: application/octet-stream; name="ws_kern.diff"
Content-Disposition: attachment; filename="ws_kern.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gcejq73j0

SW5kZXg6IGtlcm5famFpbC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5famFpbC5jCShyZXZpc2lvbiAy
MTA3NjgpCisrKyBrZXJuX2phaWwuYwkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw3ICsxMDQzLDcg
QEAKIAkJaWYgKG5hbWVbMF0gIT0gJ1wwJykgewogCQkJbmFtZWxlbiA9CiAJCQkgICAgKHBwciA9
PSAmcHJpc29uMCkgPyAwIDogc3RybGVuKHBwci0+cHJfbmFtZSkgKyAxOwotIG5hbWVfYWdhaW46
CituYW1lX2FnYWluOgogCQkJZGVhZHByID0gTlVMTDsKIAkJCUZPUkVBQ0hfUFJJU09OX0NISUxE
KHBwciwgdHByKSB7CiAJCQkJaWYgKHRwciAhPSBwciAmJiB0cHItPnByX3JlZiA+IDAgJiYKQEAg
LTExMzQsNyArMTEzNCw3IEBACiAJCWlmIChqaWQgPT0gMCkgewogCQkJLyogRmluZCB0aGUgbmV4
dCBmcmVlIGppZC4gKi8KIAkJCWppZCA9IGxhc3RwcmlkICsgMTsKLSBmaW5kbmV4dDoKK2ZpbmRu
ZXh0OgogCQkJaWYgKGppZCA9PSBKQUlMX01BWCkKIAkJCQlqaWQgPSAxOwogCQkJVEFJTFFfRk9S
RUFDSCh0cHIsICZhbGxwcmlzb24sIHByX2xpc3QpIHsKQEAgLTE3NDYsMjAgKzE3NDYsMjAgQEAK
IAl0ZC0+dGRfcmV0dmFsWzBdID0gcHItPnByX2lkOwogCWdvdG8gZG9uZV9lcnJtc2c7CiAKLSBk
b25lX2RlcmVmX2xvY2tlZDoKK2RvbmVfZGVyZWZfbG9ja2VkOgogCXByaXNvbl9kZXJlZihwciwg
Y3JlYXRlZAogCSAgICA/IFBEX0xPQ0tFRCB8IFBEX0xJU1RfWExPQ0tFRAogCSAgICA6IFBEX0RF
UkVGIHwgUERfTE9DS0VEIHwgUERfTElTVF9YTE9DS0VEKTsKIAlnb3RvIGRvbmVfcmVsZXJvb3Q7
Ci0gZG9uZV91bmxvY2tfbGlzdDoKK2RvbmVfdW5sb2NrX2xpc3Q6CiAJc3hfeHVubG9jaygmYWxs
cHJpc29uX2xvY2spOwotIGRvbmVfcmVsZXJvb3Q6Citkb25lX3JlbGVyb290OgogCWlmIChyb290
ICE9IE5VTEwpIHsKIAkJdmZzbG9ja2VkID0gVkZTX0xPQ0tfR0lBTlQocm9vdC0+dl9tb3VudCk7
CiAJCXZyZWxlKHJvb3QpOwogCQlWRlNfVU5MT0NLX0dJQU5UKHZmc2xvY2tlZCk7CiAJfQotIGRv
bmVfZXJybXNnOgorZG9uZV9lcnJtc2c6CiAJaWYgKGVycm9yKSB7CiAJCXZmc19nZXRvcHQob3B0
cywgImVycm1zZyIsICh2b2lkICoqKSZlcnJtc2csICZlcnJtc2dfbGVuKTsKIAkJaWYgKGVycm1z
Z19sZW4gPiAwKSB7CkBAIC0xNzc2LDcgKzE3NzYsNyBAQAogCQkJfQogCQl9CiAJfQotIGRvbmVf
ZnJlZToKK2RvbmVfZnJlZToKICNpZmRlZiBJTkVUCiAJZnJlZShpcDQsIE1fUFJJU09OKTsKICNl
bmRpZgpAQCAtMTkwNiw3ICsxOTA2LDcgQEAKIAllcnJvciA9IEVOT0VOVDsKIAlnb3RvIGRvbmVf
dW5sb2NrX2xpc3Q7CiAKLSBmb3VuZF9wcmlzb246Citmb3VuZF9wcmlzb246CiAJLyogR2V0IHRo
ZSBwYXJhbWV0ZXJzIG9mIHRoZSBwcmlzb24uICovCiAJcHItPnByX3JlZisrOwogCWxvY2tlZCA9
IFBEX0xPQ0tFRDsKQEAgLTIwNjQsMTMgKzIwNjQsMTMgQEAKIAl9CiAJZ290byBkb25lX2Vycm1z
ZzsKIAotIGRvbmVfZGVyZWY6Citkb25lX2RlcmVmOgogCXByaXNvbl9kZXJlZihwciwgbG9ja2Vk
IHwgUERfREVSRUYgfCBQRF9MSVNUX1NMT0NLRUQpOwogCWdvdG8gZG9uZV9lcnJtc2c7CiAKLSBk
b25lX3VubG9ja19saXN0OgorZG9uZV91bmxvY2tfbGlzdDoKIAlzeF9zdW5sb2NrKCZhbGxwcmlz
b25fbG9jayk7Ci0gZG9uZV9lcnJtc2c6Citkb25lX2Vycm1zZzoKIAlpZiAoZXJyb3IgJiYgZXJy
bXNnX3BvcyA+PSAwKSB7CiAJCXZmc19nZXRvcHQob3B0cywgImVycm1zZyIsICh2b2lkICoqKSZl
cnJtc2csICZlcnJtc2dfbGVuKTsKIAkJZXJybXNnX3BvcyA9IDIgKiBlcnJtc2dfcG9zICsgMTsK
QEAgLTIyODgsMTEgKzIyODgsMTEgQEAKIAljcmZyZWUob2xkY3JlZCk7CiAJcHJpc29uX2RlcmVm
KHBwciwgUERfREVSRUYgfCBQRF9ERVVSRUYpOwogCXJldHVybiAoMCk7Ci0gZV91bmxvY2s6Citl
X3VubG9jazoKIAlWT1BfVU5MT0NLKHByLT5wcl9yb290LCAwKTsKLSBlX3VubG9ja19naWFudDoK
K2VfdW5sb2NrX2dpYW50OgogCVZGU19VTkxPQ0tfR0lBTlQodmZzbG9ja2VkKTsKLSBlX3JldmVy
dF9vc2Q6CitlX3JldmVydF9vc2Q6CiAJLyogVGVsbCBtb2R1bGVzIHRoaXMgdGhyZWFkIGlzIHN0
aWxsIGluIGl0cyBvbGQgamFpbCBhZnRlciBhbGwuICovCiAJKHZvaWQpb3NkX2phaWxfY2FsbChw
cHIsIFBSX01FVEhPRF9BVFRBQ0gsIHRkKTsKIAlwcmlzb25fZGVyZWYocHIsIFBEX0RFUkVGIHwg
UERfREVVUkVGKTsKQEAgLTIzNTMsNyArMjM1Myw3IEBACiAKIAlzeF9hc3NlcnQoJmFsbHByaXNv
bl9sb2NrLCBTWF9MT0NLRUQpOwogCW15bGVuID0gKG15cHIgPT0gJnByaXNvbjApID8gMCA6IHN0
cmxlbihteXByLT5wcl9uYW1lKSArIDE7Ci0gYWdhaW46CithZ2FpbjoKIAlkZWFkcHIgPSBOVUxM
OwogCUZPUkVBQ0hfUFJJU09OX0RFU0NFTkRBTlQobXlwciwgcHIsIGRlc2NlbmQpIHsKIAkJaWYg
KCFzdHJjbXAocHItPnByX25hbWUgKyBteWxlbiwgbmFtZSkpIHsKQEAgLTM5NTIsNyArMzk1Miw3
IEBACiAJc3hfc2xvY2soJmFsbHByaXNvbl9sb2NrKTsKIAlGT1JFQUNIX1BSSVNPTl9ERVNDRU5E
QU5UKHByLCBjcHIsIGRlc2NlbmQpIHsKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5F
VDYpCi0gYWdhaW46CithZ2FpbjoKICNlbmRpZgogCQltdHhfbG9jaygmY3ByLT5wcl9tdHgpOwog
I2lmZGVmIElORVQKSW5kZXg6IGtlcm5fY29uZi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fY29uZi5j
CShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX2NvbmYuYwkod29ya2luZyBjb3B5KQpAQCAtNDAy
LDcgKzQwMiw3IEBACiAJZGV2X3JlbHRocmVhZChkZXYpOwogCXJldHVybiAocmV0dmFsKTsKIH0K
LSAgCisKIHN0YXRpYyBpbnQKIGdpYW50X3JlYWQoc3RydWN0IGNkZXYgKmRldiwgc3RydWN0IHVp
byAqdWlvLCBpbnQgaW9mbGFnKQogewpJbmRleDogc3Vicl9ldmVudGhhbmRsZXIuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzdWJyX2V2ZW50aGFuZGxlci5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBzdWJyX2V2
ZW50aGFuZGxlci5jCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBACiB7CiAgICAgc3Ry
dWN0IGV2ZW50aGFuZGxlcl9saXN0CQkqbmV3X2xpc3Q7CiAgICAgc3RydWN0IGV2ZW50aGFuZGxl
cl9lbnRyeQkJKmVwOwotICAgIAorCiAgICAgS0FTU0VSVChldmVudGhhbmRsZXJfbGlzdHNfaW5p
dHRlZCwgKCJldmVudGhhbmRsZXIgcmVnaXN0ZXJlZCB0b28gZWFybHkiKSk7CiAgICAgS0FTU0VS
VChlcG4gIT0gTlVMTCwgKCIlczogY2Fubm90IHJlZ2lzdGVyIE5VTEwgZXZlbnQiLCBfX2Z1bmNf
XykpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAKIAkJICAgICAgdm9pZCAqZnVuYywgdm9pZCAqYXJn
LCBpbnQgcHJpb3JpdHkpCiB7CiAgICAgc3RydWN0IGV2ZW50aGFuZGxlcl9lbnRyeV9nZW5lcmlj
CSplZzsKLSAgICAKKwogICAgIC8qIGFsbG9jYXRlIGFuIGVudHJ5IGZvciB0aGlzIGhhbmRsZXIs
IHBvcHVsYXRlIGl0ICovCiAgICAgZWcgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBldmVudGhhbmRs
ZXJfZW50cnlfZ2VuZXJpYyksIE1fRVZFTlRIQU5ETEVSLAogCU1fV0FJVE9LIHwgTV9aRVJPKTsK
QEAgLTE2Niw3ICsxNjYsNyBAQAogICAgIHZvaWQgKmZ1bmMsIHZvaWQgKmFyZywgaW50IHByaW9y
aXR5LCB2aW1hZ2VfaXRlcmF0b3JfZnVuY190IGl0ZXJmdW5jKQogewogICAgIHN0cnVjdCBldmVu
dGhhbmRsZXJfZW50cnlfZ2VuZXJpY192aW1hZ2UJKmVnOwotICAgIAorCiAgICAgLyogYWxsb2Nh
dGUgYW4gZW50cnkgZm9yIHRoaXMgaGFuZGxlciwgcG9wdWxhdGUgaXQgKi8KICAgICBlZyA9IG1h
bGxvYyhzaXplb2Yoc3RydWN0IGV2ZW50aGFuZGxlcl9lbnRyeV9nZW5lcmljX3ZpbWFnZSksCiAJ
TV9FVkVOVEhBTkRMRVIsIE1fV0FJVE9LIHwgTV9aRVJPKTsKQEAgLTI0NiwxNCArMjQ2LDE0IEBA
CiAKICAgICBpZiAoIWV2ZW50aGFuZGxlcl9saXN0c19pbml0dGVkKQogCXJldHVybihOVUxMKTsK
LSAgICAKKwogICAgIC8qIHNjYW4gbG9va2luZyBmb3IgdGhlIHJlcXVlc3RlZCBsaXN0ICovCiAg
ICAgbXR4X2xvY2soJmV2ZW50aGFuZGxlcl9tdXRleCk7CiAgICAgbGlzdCA9IF9ldmVudGhhbmRs
ZXJfZmluZF9saXN0KG5hbWUpOwogICAgIGlmIChsaXN0ICE9IE5VTEwpCiAJRUhMX0xPQ0sobGlz
dCk7CiAgICAgbXR4X3VubG9jaygmZXZlbnRoYW5kbGVyX211dGV4KTsKLSAgICAKKwogICAgIHJl
dHVybihsaXN0KTsKIH0KIApJbmRleDogc3lzdl9tc2cuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXN2X21z
Zy5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBzeXN2X21zZy5jCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjIsNyArMjIyLDcgQEAKIAlpID0gODsKIAl3aGlsZSAoaSA8IDEwMjQgJiYgaSAhPSBtc2dpbmZv
Lm1zZ3NzeikKIAkJaSA8PD0gMTsKLSAgICAJaWYgKGkgIT0gbXNnaW5mby5tc2dzc3opIHsKKwlp
ZiAoaSAhPSBtc2dpbmZvLm1zZ3NzeikgewogCQlEUFJJTlRGKCgibXNnaW5mby5tc2dzc3o9JWQg
KDB4JXgpXG4iLCBtc2dpbmZvLm1zZ3NzeiwKIAkJICAgIG1zZ2luZm8ubXNnc3N6KSk7CiAJCXBh
bmljKCJtc2dpbmZvLm1zZ3NzeiBub3QgYSBzbWFsbCBwb3dlciBvZiAyIik7CkBAIC0yNTUsNyAr
MjU1LDcgQEAKICNpZmRlZiBNQUMKIAkJbWFjX3N5c3Ztc2dfaW5pdCgmbXNnaGRyc1tpXSk7CiAj
ZW5kaWYKLSAgICAJfQorCX0KIAlmcmVlX21zZ2hkcnMgPSAmbXNnaGRyc1swXTsKIAogCWlmICht
c3FpZHMgPT0gTlVMTCkKSW5kZXg6IGtlcm5fdGltZS5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fdGlt
ZS5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX3RpbWUuYwkod29ya2luZyBjb3B5KQpAQCAt
MTAyOCw3ICsxMDI4LDcgQEAKIAkJCWl0LT5pdF9zaWdldi5zaWdldl9zaWdubyA9IFNJR0FMUk07
CiAJCQlicmVhazsKIAkJY2FzZSBDTE9DS19WSVJUVUFMOgotIAkJCWl0LT5pdF9zaWdldi5zaWdl
dl9zaWdubyA9IFNJR1ZUQUxSTTsKKwkJCWl0LT5pdF9zaWdldi5zaWdldl9zaWdubyA9IFNJR1ZU
QUxSTTsKIAkJCWJyZWFrOwogCQljYXNlIENMT0NLX1BST0Y6CiAJCQlpdC0+aXRfc2lnZXYuc2ln
ZXZfc2lnbm8gPSBTSUdQUk9GOwpAQCAtMTM5NCw3ICsxMzk0LDcgQEAKIAkJdGltZXNwZWNzdWIo
JnRzLCAmY3RzKTsKIAkJVElNRVNQRUNfVE9fVElNRVZBTCgmdHYsICZ0cyk7CiAJCWNhbGxvdXRf
cmVzZXQoJml0LT5pdF9jYWxsb3V0LCB0dnRvaHooJnR2KSwgcmVhbHRpbWVyX2V4cGlyZSwKLSAJ
CQlpdCk7CisJCQlpdCk7CiAJfQogfQogCkluZGV4OiBzdWJyX2tvYmouYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzdWJyX2tvYmouYwkocmV2aXNpb24gMjEwNzY4KQorKysgc3Vicl9rb2JqLmMJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMiw3ICszMTIsNyBAQAoga29ial9pbml0KGtvYmpfdCBvYmosIGtvYmpfY2xh
c3NfdCBjbHMpCiB7CiAJS09CSl9BU1NFUlQoTUFfTk9UT1dORUQpOwotICByZXRyeToKK3JldHJ5
OgogCUtPQkpfTE9DSygpOwogCiAJLyoKSW5kZXg6IHVpcGNfbXF1ZXVlLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdWlwY19tcXVldWUuYwkocmV2aXNpb24gMjEwNzY4KQorKysgdWlwY19tcXVldWUuYwkod29y
a2luZyBjb3B5KQpAQCAtMTA0MSw3ICsxMDQxLDcgQEAKIAlpbnQgZXJyb3I7CiAKIAlpZiAoYXAt
PmFfdnAtPnZfdHlwZSA9PSBWRElSKQotICAgICAgICAgICAgICAgIHJldHVybiAoRVBFUk0pOwor
CQlyZXR1cm4gKEVQRVJNKTsKIAlwbiA9IFZUT04oYXAtPmFfdnApOwogCXN4X3hsb2NrKCZtcWZz
LT5taV9sb2NrKTsKIAllcnJvciA9IGRvX3VubGluayhwbiwgYXAtPmFfY25wLT5jbl9jcmVkKTsK
QEAgLTEzNzgsNyArMTM3OCw3IEBACiAJCXRtcF9uY29va2llcyA9IGFwLT5hX25jb29raWVzOwog
CQkqYXAtPmFfbmNvb2tpZXMgPSAwOwogCQlhcC0+YV9uY29va2llcyA9IE5VTEw7Ci0gICAgICAg
IH0KKwl9CiAKIAllcnJvciA9IDA7CiAJb2Zmc2V0ID0gMDsKQEAgLTE0MTIsMTMgKzE0MTIsMTMg
QEAKIAkJCQlwbi0+bW5fdHlwZSk7CiAJCX0KIAkJaWYgKGVudHJ5LmRfcmVjbGVuID4gdWlvLT51
aW9fcmVzaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkJCWJyZWFrOwogCQlp
ZiAob2Zmc2V0ID49IHVpby0+dWlvX29mZnNldCkgewogCQkJZXJyb3IgPSB2ZnNfcmVhZF9kaXJl
bnQoYXAsICZlbnRyeSwgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJv
cikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIG9mZnNldCArPSBlbnRyeS5kX3JlY2xlbjsKKwkJCWlmIChl
cnJvcikKKwkJCQlicmVhazsKKwkJfQorCQlvZmZzZXQgKz0gZW50cnkuZF9yZWNsZW47CiAJfQog
CXN4X3h1bmxvY2soJm1pLT5taV9sb2NrKTsKIApAQCAtMTk1Miw3ICsxOTUyLDcgQEAKIAl9CiAK
IAllcnJvciA9IGNvcHlpbnN0cih1cGF0aCwgcGF0aCwgTVFGU19OQU1FTEVOICsgMSwgTlVMTCk7
Ci0gICAgICAgIGlmIChlcnJvcikKKwlpZiAoZXJyb3IpCiAJCXJldHVybiAoZXJyb3IpOwogCiAJ
LyoKQEAgLTIwNjAsNyArMjA2MCw3IEBACiAJaW50IGVycm9yLCBsZW47CiAKIAllcnJvciA9IGNv
cHlpbnN0cih1YXAtPnBhdGgsIHBhdGgsIE1RRlNfTkFNRUxFTiArIDEsIE5VTEwpOwotICAgICAg
ICBpZiAoZXJyb3IpCisJaWYgKGVycm9yKQogCQlyZXR1cm4gKGVycm9yKTsKIAogCWxlbiA9IHN0
cmxlbihwYXRoKTsKQEAgLTIzMjQsNyArMjMyNCw3IEBACiB7CiAJc3RydWN0IGZpbGVkZXNjICpm
ZHA7CiAJc3RydWN0IG1xdWV1ZSAqbXE7Ci0gCisKIAlmZHAgPSB0ZC0+dGRfcHJvYy0+cF9mZDsK
IAlGSUxFREVTQ19MT0NLX0FTU0VSVChmZHApOwogCkBAIC0yNDEyLDcgKzI0MTIsNyBAQAogCQl9
IGVsc2UgewogCQkJbXEtPm1xX2ZsYWdzIHw9IE1RX1JTRUw7CiAJCQlzZWxyZWNvcmQodGQsICZt
cS0+bXFfcnNlbCk7Ci0gCQl9CisJCX0KIAl9CiAJaWYgKGV2ZW50cyAmIFBPTExPVVQpIHsKIAkJ
aWYgKG1xLT5tcV9jdXJtc2dzIDwgbXEtPm1xX21heG1zZykKSW5kZXg6IHZmc192bm9wcy5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHZmc192bm9wcy5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyB2ZnNfdm5vcHMu
Ywkod29ya2luZyBjb3B5KQpAQCAtNzg4LDcgKzc4OCw3IEBACiAJc2ItPnN0X2N0aW0gPSB2YXAt
PnZhX2N0aW1lOwogCXNiLT5zdF9iaXJ0aHRpbSA9IHZhcC0+dmFfYmlydGh0aW1lOwogCi0gICAg
ICAgIC8qCisJLyoKIAkgKiBBY2NvcmRpbmcgdG8gd3d3Lm9wZW5ncm91cC5vcmcsIHRoZSBtZWFu
aW5nIG9mIHN0X2Jsa3NpemUgaXMgCiAJICogICAiYSBmaWxlc3lzdGVtLXNwZWNpZmljIHByZWZl
cnJlZCBJL08gYmxvY2sgc2l6ZSBmb3IgdGhpcyAKIAkgKiAgICBvYmplY3QuICBJbiBzb21lIGZp
bGVzeXN0ZW0gdHlwZXMsIHRoaXMgbWF5IHZhcnkgZnJvbSBmaWxlCkBAIC0xMDI4LDcgKzEwMjgs
NyBAQAogCXN0cnVjdCBtb3VudCAqbXA7CiAJaW50IGVycm9yOwogCi0gcmV0cnk6CityZXRyeToK
IAlpZiAodnAgIT0gTlVMTCkgewogCQlpZiAoKGVycm9yID0gVk9QX0dFVFdSSVRFTU9VTlQodnAs
IG1wcCkpICE9IDApIHsKIAkJCSptcHAgPSBOVUxMOwpJbmRleDoga2Vybl90aHJlYWQuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBrZXJuX3RocmVhZC5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX3RocmVh
ZC5jCSh3b3JraW5nIGNvcHkpCkBAIC04NTIsNyArODUyLDcgQEAKIAlQUk9DX1NMT0NLX0FTU0VS
VChwLCBNQV9PV05FRCk7CiAJd2FrZXVwX3N3YXBwZXIgPSAwOwogCWlmICghUF9TSE9VTERTVE9Q
KHApKSB7Ci0gICAgICAgICAgICAgICAgRk9SRUFDSF9USFJFQURfSU5fUFJPQyhwLCB0ZCkgewor
CQlGT1JFQUNIX1RIUkVBRF9JTl9QUk9DKHAsIHRkKSB7CiAJCQl0aHJlYWRfbG9jayh0ZCk7CiAJ
CQlpZiAoVERfSVNfU1VTUEVOREVEKHRkKSkgewogCQkJCXdha2V1cF9zd2FwcGVyIHw9IHRocmVh
ZF91bnN1c3BlbmRfb25lKHRkKTsKQEAgLTg5OCw3ICs4OTgsNyBAQAogCSAqIHRvIGNvbnRpbnVl
IGhvd2V2ZXIgYXMgdGhpcyBpcyBhIGJhZCBwbGFjZSB0byBzdG9wLgogCSAqLwogCWlmICgocC0+
cF9udW10aHJlYWRzICE9IDEpICYmICghUF9TSE9VTERTVE9QKHApKSkgewotICAgICAgICAgICAg
ICAgIEZPUkVBQ0hfVEhSRUFEX0lOX1BST0MocCwgdGQpIHsKKwkJRk9SRUFDSF9USFJFQURfSU5f
UFJPQyhwLCB0ZCkgewogCQkJdGhyZWFkX2xvY2sodGQpOwogCQkJaWYgKFREX0lTX1NVU1BFTkRF
RCh0ZCkpIHsKIAkJCQl3YWtldXBfc3dhcHBlciB8PSB0aHJlYWRfdW5zdXNwZW5kX29uZSh0ZCk7
CkluZGV4OiBzdWJyX3NtcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN1YnJfc21wLmMJKHJldmlzaW9uIDIx
MDc2OCkKKysrIHN1YnJfc21wLmMJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBAQAog
CQkvKiBzcGluIG9uIGVudHJ5IHJlbmRlenZvdXMgKi8KIAkJYXRvbWljX2FkZF9pbnQoJnNtcF9y
dl93YWl0ZXJzWzFdLCAxKTsKIAkJd2hpbGUgKHNtcF9ydl93YWl0ZXJzWzFdIDwgc21wX3J2X25j
cHVzKQotICAgICAgICAgICAgICAgIAljcHVfc3BpbndhaXQoKTsKKwkJCWNwdV9zcGlud2FpdCgp
OwogCX0KIAogCS8qIGFjdGlvbiBmdW5jdGlvbiAqLwpAQCAtMzY3LDcgKzM2Nyw3IEBACiAJLyog
c3BpbiBvbiBleGl0IHJlbmRlenZvdXMgKi8KIAlhdG9taWNfYWRkX2ludCgmc21wX3J2X3dhaXRl
cnNbMl0sIDEpOwogCWlmIChsb2NhbF90ZWFyZG93bl9mdW5jID09IHNtcF9ub19yZW5kZXZvdXNf
YmFycmllcikKLSAgICAgICAgICAgICAgICByZXR1cm47CisJCXJldHVybjsKIAl3aGlsZSAoc21w
X3J2X3dhaXRlcnNbMl0gPCBzbXBfcnZfbmNwdXMpCiAJCWNwdV9zcGlud2FpdCgpOwogCkluZGV4
OiBzdWJyX2tkYi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN1YnJfa2RiLmMJKHJldmlzaW9uIDIxMDc2OCkK
KysrIHN1YnJfa2RiLmMJKHdvcmtpbmcgY29weSkKQEAgLTQxMiw4ICs0MTIsOCBAQAogI2lmIGRl
ZmluZWQoU01QKSAmJiBkZWZpbmVkKEtEQl9TVE9QUEVEUENCKQogCXN0cnVjdCBwY3B1ICpwYzsK
ICNlbmRpZgotIAotCWlmICh0aHIgPT0gY3VydGhyZWFkKSAKKworCWlmICh0aHIgPT0gY3VydGhy
ZWFkKQogCQlyZXR1cm4gKCZrZGJfcGNiKTsKIAogI2lmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVk
KEtEQl9TVE9QUEVEUENCKQpJbmRleDogc2NoZWRfdWxlLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc2NoZWRf
dWxlLmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHNjaGVkX3VsZS5jCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjgyLDcgKzE2ODIsNyBAQAogCiAJdGQtPnRkX2Jhc2VfdXNlcl9wcmkgPSBwcmlvOwogCWlm
ICh0ZC0+dGRfZmxhZ3MgJiBUREZfVUJPUlJPV0lORyAmJiB0ZC0+dGRfdXNlcl9wcmkgPD0gcHJp
bykKLSAgICAgICAgICAgICAgICByZXR1cm47CisJCXJldHVybjsKIAlvbGRwcmlvID0gdGQtPnRk
X3VzZXJfcHJpOwogCXRkLT50ZF91c2VyX3ByaSA9IHByaW87CiB9CkBAIC0yMDg5LDcgKzIwODks
NyBAQAogCQl0ZC0+dGRfYmFzZV9wcmkgPSB0ZC0+dGRfdXNlcl9wcmk7CiAJCXRkcV9zZXRsb3dw
cmkoVERRX1NFTEYoKSwgdGQpOwogCQl0aHJlYWRfdW5sb2NrKHRkKTsKLSAgICAgICAgfQorCX0K
IH0KIAogLyoKSW5kZXg6IGtlcm5fdW10eC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fdW10eC5jCShy
ZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX3VtdHguYwkod29ya2luZyBjb3B5KQpAQCAtMTA0MSw3
ICsxMDQxLDcgQEAKIAl1bXR4cV91bmxvY2soJnVxLT51cV9rZXkpOwogCWlmIChjb21wYXQzMiA9
PSAwKQogCQl0bXAgPSBmdXdvcmQoYWRkcik7Ci0gICAgICAgIGVsc2UKKwllbHNlCiAJCXRtcCA9
ICh1bnNpZ25lZCBpbnQpZnV3b3JkMzIoYWRkcik7CiAJaWYgKHRtcCAhPSBpZCkgewogCQl1bXR4
cV9sb2NrKCZ1cS0+dXFfa2V5KTsKSW5kZXg6IGxpbmtfZWxmX29iai5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGxpbmtfZWxmX29iai5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBsaW5rX2VsZl9vYmouYwkod29y
a2luZyBjb3B5KQpAQCAtMTM3NiwxNSArMTM3NiwxNSBAQAogbGlua19lbGZfc3ltdGFiX2dldChs
aW5rZXJfZmlsZV90IGxmLCBjb25zdCBFbGZfU3ltICoqc3ltdGFiKQogewogICAgIGVsZl9maWxl
X3QgZWYgPSAoZWxmX2ZpbGVfdClsZjsKLSAgICAKKwogICAgICpzeW10YWIgPSBlZi0+ZGRic3lt
dGFiOwotICAgIAorCiAgICAgaWYgKCpzeW10YWIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuICgw
KTsKIAogICAgIHJldHVybiAoZWYtPmRkYnN5bWNudCk7CiB9Ci0gICAgCisKIHN0YXRpYyBsb25n
CiBsaW5rX2VsZl9zdHJ0YWJfZ2V0KGxpbmtlcl9maWxlX3QgbGYsIGNhZGRyX3QgKnN0cnRhYikK
IHsKSW5kZXg6IHVpcGNfc3lzY2FsbHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1aXBjX3N5c2NhbGxzLmMJ
KHJldmlzaW9uIDIxMDc2OCkKKysrIHVpcGNfc3lzY2FsbHMuYwkod29ya2luZyBjb3B5KQpAQCAt
MjMyMSw5ICsyMzIxLDkgQEAKIAkgKiByZWZlcmVuY2UgY291bnQuICBPdGhlcndpc2UsIGlmIHRo
ZSBwcm90b2NvbCBjYWxscyBzb2ZyZWUoKSwKIAkgKiB0aGUgc29ja2V0IHdpbGwgYmUgcmVsZWFz
ZWQgZHVlIHRvIGEgemVybyByZWZjb3VudC4KIAkgKi8KLSAgICAgICAgU09DS19MT0NLKHNvKTsK
LSAgICAgICAgc29yZWYoc28pOyAgICAgICAgICAgICAgICAgICAgICAvKiBmaWxlIGRlc2NyaXB0
b3IgcmVmZXJlbmNlICovCi0gICAgICAgIFNPQ0tfVU5MT0NLKHNvKTsKKwlTT0NLX0xPQ0soc28p
OworCXNvcmVmKHNvKTsJCQkvKiBmaWxlIGRlc2NyaXB0b3IgcmVmZXJlbmNlICovCisJU09DS19V
TkxPQ0soc28pOwogCiAJQUNDRVBUX0xPQ0soKTsKIApAQCAtMjY1OCw3ICsyNjU4LDcgQEAKIAl9
CiAJYXVpby51aW9faW92ID0gaW92OwogCWF1aW8udWlvX2lvdmNudCA9IHVhcC0+aW92bGVuOwot
ICAJYXVpby51aW9fc2VnZmxnID0gVUlPX1VTRVJTUEFDRTsKKwlhdWlvLnVpb19zZWdmbGcgPSBV
SU9fVVNFUlNQQUNFOwogCWF1aW8udWlvX3J3ID0gVUlPX1JFQUQ7CiAJYXVpby51aW9fdGQgPSB0
ZDsKIAlhdWlvLnVpb19vZmZzZXQgPSAwOwkJCS8qIFhYWCAqLwpJbmRleDoga2Vybl9zd2l0Y2gu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBrZXJuX3N3aXRjaC5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJu
X3N3aXRjaC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTYgKzExNSwxNiBAQAogewogCXN0cnVj
dCBzeXNjdGxfb2lkICpwOwogCXVpbnRwdHJfdCBjb3VudGVyOwotICAgICAgICBpbnQgZXJyb3I7
CisJaW50IGVycm9yOwogCWludCB2YWw7CiAJaW50IGk7CiAKLSAgICAgICAgdmFsID0gMDsKLSAg
ICAgICAgZXJyb3IgPSBzeXNjdGxfaGFuZGxlX2ludChvaWRwLCAmdmFsLCAwLCByZXEpOwotICAg
ICAgICBpZiAoZXJyb3IgIT0gMCB8fCByZXEtPm5ld3B0ciA9PSBOVUxMKQotICAgICAgICAgICAg
ICAgIHJldHVybiAoZXJyb3IpOwotICAgICAgICBpZiAodmFsID09IDApCi0gICAgICAgICAgICAg
ICAgcmV0dXJuICgwKTsKKwl2YWwgPSAwOworCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lk
cCwgJnZhbCwgMCwgcmVxKTsKKwlpZiAoZXJyb3IgIT0gMCB8fCByZXEtPm5ld3B0ciA9PSBOVUxM
KQorCQlyZXR1cm4gKGVycm9yKTsKKwlpZiAodmFsID09IDApCisJCXJldHVybiAoMCk7CiAJLyoK
IAkgKiBUcmF2ZXJzZSB0aGUgbGlzdCBvZiBjaGlsZHJlbiBvZiBfa2Vybl9zY2hlZF9zdGF0cyBh
bmQgcmVzZXQgZWFjaAogCSAqIHRvIDAuICBTa2lwIHRoZSByZXNldCBlbnRyeS4KSW5kZXg6IHZm
c19iaW8uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB2ZnNfYmlvLmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHZm
c19iaW8uYwkod29ya2luZyBjb3B5KQpAQCAtMzE3OSw5ICszMTc5LDkgQEAKIAl9CiB9CiAKLSAv
KgotICAqIENhbGwgYmFjayBmdW5jdGlvbiBmcm9tIHN0cnVjdCBiaW8gYmFjayB1cCB0byBzdHJ1
Y3QgYnVmLgotICAqLworLyoKKyAqIENhbGwgYmFjayBmdW5jdGlvbiBmcm9tIHN0cnVjdCBiaW8g
YmFjayB1cCB0byBzdHJ1Y3QgYnVmLgorICovCiBzdGF0aWMgdm9pZAogYnVmZG9uZWJpbyhzdHJ1
Y3QgYmlvICpiaXApCiB7CkluZGV4OiBrZXJuX3NpZy5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fc2ln
LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIGtlcm5fc2lnLmMJKHdvcmtpbmcgY29weSkKQEAgLTI3
MTksNyArMjcxOSw3IEBACiAJCVBST0NfU0xPQ0socCk7CiAJfQogfQotIAorCiAvKgogICogVGFr
ZSB0aGUgYWN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHNpZ25hbAogICogZnJvbSB0aGUgY3VycmVu
dCBzZXQgb2YgcGVuZGluZyBzaWduYWxzLgpAQCAtMjk5MCw3ICsyOTkwLDcgQEAKICNpZiBkZWZp
bmVkKENPTVBSRVNTX1VTRVJfQ09SRVMpCiBpbnQgY29tcHJlc3NfdXNlcl9jb3JlcyA9IDE7CiBT
WVNDVExfSU5UKF9rZXJuLCBPSURfQVVUTywgY29tcHJlc3NfdXNlcl9jb3JlcywgQ1RMRkxBR19S
VywKLSAgICAgICAgJmNvbXByZXNzX3VzZXJfY29yZXMsIDAsICIiKTsKKyAgICAmY29tcHJlc3Nf
dXNlcl9jb3JlcywgMCwgIiIpOwogCiBpbnQgY29tcHJlc3NfdXNlcl9jb3Jlc19nemxldmVsID0g
LTE7IC8qIGRlZmF1bHQgbGV2ZWwgKi8KIFNZU0NUTF9JTlQoX2tlcm4sIE9JRF9BVVRPLCBjb21w
cmVzc191c2VyX2NvcmVzX2d6bGV2ZWwsIENUTEZMQUdfUlcsCkBAIC0zMDUyLDkgKzMwNTIsOSBA
QAogCQkJCQkJICAgICJmb3IgY29yZWZpbGUgaG9zdG5hbWVcbiIsCiAJCQkJCQkgICAgKGxvbmcp
cGlkLCBuYW1lLAogCQkJCQkJICAgICh1X2xvbmcpdWlkKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbm9tZW07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisJCQkJCQlnb3RvIG5vbWVtOworCQkJCQl9CisJCQkJfQogCQkJCWdldGNyZWRob3N0bmFt
ZSh0ZC0+dGRfdWNyZWQsIGhvc3RuYW1lLAogCQkJCSAgICBNQVhIT1NUTkFNRUxFTik7CiAJCQkJ
c2J1Zl9wcmludGYoJnNiLCAiJXMiLCBob3N0bmFtZSk7CkBAIC0zMTIzLDcgKzMxMjMsNyBAQAog
CQkJCX0KIAkJCQlsb2coTE9HX0VSUiwKIAkJCQkgICAgInBpZCAlZCAoJXMpLCB1aWQgKCV1KTog
IFBhdGggYCVzJyBmYWlsZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Im9uIGluaXRpYWwgb3BlbiB0ZXN0LCBlcnJvciA9ICVkXG4iLAorCQkJCSAgICAib24gaW5pdGlh
bCBvcGVuIHRlc3QsIGVycm9yID0gJWRcbiIsCiAJCQkJICAgIHBpZCwgbmFtZSwgdWlkLCB0ZW1w
LCBlcnJvcik7CiAJCQkJZnJlZSh0ZW1wLCBNX1RFTVApOwogCQkJCXJldHVybiAoTlVMTCk7CkBA
IC0zMTM2LDggKzMxMzYsOCBAQAogCQkJaWYgKGVycm9yKSB7CiAJCQkJbG9nKExPR19FUlIsCiAJ
CQkJICAgICJwaWQgJWQgKCVzKSwgdWlkICgldSk6ICBQYXRoIGAlcycgZmFpbGVkICIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBjbG9zZSBhZnRlciBpbml0aWFsIG9w
ZW4gdGVzdCwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yID0g
JWRcbiIsCisJCQkJICAgICJvbiBjbG9zZSBhZnRlciBpbml0aWFsIG9wZW4gdGVzdCwgIgorCQkJ
CSAgICAiZXJyb3IgPSAlZFxuIiwKIAkJCQkgICAgcGlkLCBuYW1lLCB1aWQsIHRlbXAsIGVycm9y
KTsKIAkJCQlmcmVlKHRlbXAsIE1fVEVNUCk7CiAJCQkJcmV0dXJuIChOVUxMKTsKSW5kZXg6IHVp
cGNfdXNycmVxLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gdWlwY191c3JyZXEuYwkocmV2aXNpb24gMjEwNzY4
KQorKysgdWlwY191c3JyZXEuYwkod29ya2luZyBjb3B5KQpAQCAtMTkzNSw5ICsxOTM1LDkgQEAK
IAlpZiAoY29udHJvbCAhPSBOVUxMKQogCQlmb3IgKG4gPSBjb250cm9sLCBuX3ByZXYgPSBOVUxM
OyBuICE9IE5VTEw7KSB7CiAJCQljbSA9IG10b2Qobiwgc3RydWN0IGNtc2doZHIgKik7Ci0gICAg
CQkJaWYgKGNtLT5jbXNnX2xldmVsID09IFNPTF9TT0NLRVQgJiYKKwkJCWlmIChjbS0+Y21zZ19s
ZXZlbCA9PSBTT0xfU09DS0VUICYmCiAJCQkgICAgY20tPmNtc2dfdHlwZSA9PSBTQ01fQ1JFRFMp
IHsKLSAgICAJCQkJaWYgKG5fcHJldiA9PSBOVUxMKQorCQkJCWlmIChuX3ByZXYgPT0gTlVMTCkK
IAkJCQkJY29udHJvbCA9IG4tPm1fbmV4dDsKIAkJCQllbHNlCiAJCQkJCW5fcHJldi0+bV9uZXh0
ID0gbi0+bV9uZXh0OwpAQCAtMjI5MywxMSArMjI5MywxMSBAQAogewogCXN0cnVjdCB1bnBjYiAq
dW5wOwogCi0gICAgICAgIGlmICghaGF2ZV9hZGRyKSB7Ci0gICAgICAgICAgICAgICAgZGJfcHJp
bnRmKCJ1c2FnZTogc2hvdyB1bnBjYiA8YWRkcj5cbiIpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICB1bnAgPSAoc3RydWN0IHVucGNiICopYWRkcjsKKwlpZiAo
IWhhdmVfYWRkcikgeworCQlkYl9wcmludGYoInVzYWdlOiBzaG93IHVucGNiIDxhZGRyPlxuIik7
CisJCXJldHVybjsKKwl9CisJdW5wID0gKHN0cnVjdCB1bnBjYiAqKWFkZHI7CiAKIAlkYl9wcmlu
dGYoInVucF9zb2NrZXQ6ICVwICAgdW5wX3Zub2RlOiAlcFxuIiwgdW5wLT51bnBfc29ja2V0LAog
CSAgICB1bnAtPnVucF92bm9kZSk7CkluZGV4OiB2ZnNfZGVmYXVsdC5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHZmc19kZWZhdWx0LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHZmc19kZWZhdWx0LmMJKHdvcmtp
bmcgY29weSkKQEAgLTYyNSw4ICs2MjUsOCBAQAogCS8qCiAJICogTUFSSy9TQ0FOIGluaXRpYWxp
emF0aW9uIHRvIGF2b2lkIGluZmluaXRlIGxvb3BzLgogCSAqLwotICAgICAgICBUQUlMUV9GT1JF
QUNIKGJwLCAmYm8tPmJvX2RpcnR5LmJ2X2hkLCBiX2JvYnVmcykgewotICAgICAgICAgICAgICAg
IGJwLT5iX3ZmbGFncyAmPSB+QlZfU0NBTk5FRDsKKwlUQUlMUV9GT1JFQUNIKGJwLCAmYm8tPmJv
X2RpcnR5LmJ2X2hkLCBiX2JvYnVmcykgeworCQlicC0+Yl92ZmxhZ3MgJj0gfkJWX1NDQU5ORUQ7
CiAJCWJwLT5iX2Vycm9yID0gMDsKIAl9CiAKSW5kZXg6IGluaXRfbWFpbi5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGluaXRfbWFpbi5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBpbml0X21haW4uYwkod29ya2lu
ZyBjb3B5KQpAQCAtNzEwLDcgKzcxMCw3IEBACiAJCQlvcHRpb25zID0gMTsKIAkJfQogI2lmZGVm
IG5vdHlldAotICAgICAgICAgICAgICAgIGlmIChib290aG93dG8gJiBSQl9GQVNUQk9PVCkgewor
CQlpZiAoYm9vdGhvd3RvICYgUkJfRkFTVEJPT1QpIHsKIAkJCSh2b2lkKXN1Ynl0ZSgtLXVjcCwg
J2YnKTsKIAkJCW9wdGlvbnMgPSAxOwogCQl9CkluZGV4OiB1aXBjX3NvY2tldC5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHVpcGNfc29ja2V0LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHVpcGNfc29ja2V0LmMJ
KHdvcmtpbmcgY29weSkKQEAgLTEzODUsMTcgKzEzODUsMTcgQEAKIAllbHNlCiAJCXNiLT5zYl9t
YiA9IG5leHRyZWNvcmQ7CiAKLSAgICAgICAgLyoKKwkvKgogICAgICAgICAgKiBOb3cgdXBkYXRl
IGFueSBkZXBlbmRlbnQgc29ja2V0IGJ1ZmZlciBmaWVsZHMgdG8gcmVmbGVjdCB0aGUgbmV3CiAg
ICAgICAgICAqIHN0YXRlLiAgVGhpcyBpcyBhbiBleHBhbmRlZCBpbmxpbmUgb2YgU0JfRU1QVFlf
RklYVVAoKSwgd2l0aCB0aGUKIAkgKiBhZGRpdGlvbiBvZiBhIHNlY29uZCBjbGF1c2UgdGhhdCB0
YWtlcyBjYXJlIG9mIHRoZSBjYXNlIHdoZXJlCiAJICogc2JfbWIgaGFzIGJlZW4gdXBkYXRlZCwg
YnV0IHJlbWFpbnMgdGhlIGxhc3QgcmVjb3JkLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKHNi
LT5zYl9tYiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgc2ItPnNiX21idGFpbCA9IE5VTEw7
Ci0gICAgICAgICAgICAgICAgc2ItPnNiX2xhc3RyZWNvcmQgPSBOVUxMOwotICAgICAgICB9IGVs
c2UgaWYgKHNiLT5zYl9tYi0+bV9uZXh0cGt0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgc2It
PnNiX2xhc3RyZWNvcmQgPSBzYi0+c2JfbWI7CisJaWYgKHNiLT5zYl9tYiA9PSBOVUxMKSB7CisJ
CXNiLT5zYl9tYnRhaWwgPSBOVUxMOworCQlzYi0+c2JfbGFzdHJlY29yZCA9IE5VTEw7CisJfSBl
bHNlIGlmIChzYi0+c2JfbWItPm1fbmV4dHBrdCA9PSBOVUxMKQorCQlzYi0+c2JfbGFzdHJlY29y
ZCA9IHNiLT5zYl9tYjsKIH0KIAogCkBAIC0xNzUxLDggKzE3NTEsOCBAQAogCQkJCQkqbXAgPSBt
X2NvcHltKG0sIDAsIGxlbiwgY29weV9mbGFnKTsKIAkJCQkJaWYgKGNvcHlfZmxhZyA9PSBNX1dB
SVQpCiAJCQkJCQlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpOwotIAkJCQkJaWYgKCptcCA9PSBO
VUxMKSB7Ci0gCQkJCQkJLyoKKwkJCQkJaWYgKCptcCA9PSBOVUxMKSB7CisJCQkJCQkvKgogIAkJ
CQkJCSAqIG1fY29weW0oKSBjb3VsZG4ndAogCQkJCQkJICogYWxsb2NhdGUgYW4gbWJ1Zi4gIEFk
anVzdAogCQkJCQkJICogdWlvX3Jlc2lkIGJhY2sgKGl0IHdhcwpAQCAtMTc2MCw5ICsxNzYwLDkg
QEAKIAkJCQkJCSAqIGJ5dGVzLCB3aGljaCB3ZSBkaWRuJ3QgZW5kCiAJCQkJCQkgKiB1cCAiY29w
eWluZyIgb3ZlcikuCiAgCQkJCQkJICovCi0gCQkJCQkJdWlvLT51aW9fcmVzaWQgKz0gbGVuOwot
IAkJCQkJCWJyZWFrOwotIAkJCQkJfQorCQkJCQkJdWlvLT51aW9fcmVzaWQgKz0gbGVuOworCQkJ
CQkJYnJlYWs7CisJCQkJCX0KIAkJCQl9CiAJCQkJbS0+bV9kYXRhICs9IGxlbjsKIAkJCQltLT5t
X2xlbiAtPSBsZW47CkluZGV4OiBrZXJuX2NvbnMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrZXJuX2NvbnMu
YwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9jb25zLmMJKHdvcmtpbmcgY29weSkKQEAgLTEx
Miw3ICsxMTIsNyBAQAogCSAqIG9uY2Ugd2UgYXJlIHVwIGFuZCBnb2luZy4KIAkgKiAKIAkgKi8K
LSAgICAgICAgY25fbXV0ZSA9ICgoYm9vdGhvd3RvICYgKFJCX01VVEUKKwljbl9tdXRlID0gKChi
b290aG93dG8gJiAoUkJfTVVURQogCQkJfFJCX1NJTkdMRQogCQkJfFJCX1ZFUkJPU0UKIAkJCXxS
Ql9BU0tOQU1FKSkgPT0gUkJfTVVURSk7CkluZGV4OiBpbWdhY3RfZWxmLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gaW1nYWN0X2VsZi5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBpbWdhY3RfZWxmLmMJKHdvcmtp
bmcgY29weSkKQEAgLTY0NSwxMSArNjQ1LDExIEBACiAJCQkvKiBMb2FkYWJsZSBzZWdtZW50ICov
CiAJCQlwcm90ID0gMDsKIAkJCWlmIChwaGRyW2ldLnBfZmxhZ3MgJiBQRl9YKQotICAJCQkJcHJv
dCB8PSBWTV9QUk9UX0VYRUNVVEU7CisJCQkJcHJvdCB8PSBWTV9QUk9UX0VYRUNVVEU7CiAJCQlp
ZiAocGhkcltpXS5wX2ZsYWdzICYgUEZfVykKLSAgCQkJCXByb3QgfD0gVk1fUFJPVF9XUklURTsK
KwkJCQlwcm90IHw9IFZNX1BST1RfV1JJVEU7CiAJCQlpZiAocGhkcltpXS5wX2ZsYWdzICYgUEZf
UikKLSAgCQkJCXByb3QgfD0gVk1fUFJPVF9SRUFEOworCQkJCXByb3QgfD0gVk1fUFJPVF9SRUFE
OwogCiAJCQlpZiAoKGVycm9yID0gX19lbGZOKGxvYWRfc2VjdGlvbikodm1zcGFjZSwKIAkJCSAg
ICBpbWdwLT5vYmplY3QsIHBoZHJbaV0ucF9vZmZzZXQsCkBAIC02NjIsNyArNjYyLDcgQEAKIAkJ
CSAqIGZpcnN0IHNlZ21lbnQuCiAJCQkgKi8KIAkJCWlmIChudW1zZWdzID09IDApCi0gIAkJCQli
YXNlX2FkZHIgPSB0cnVuY19wYWdlKHBoZHJbaV0ucF92YWRkciArCisJCQkJYmFzZV9hZGRyID0g
dHJ1bmNfcGFnZShwaGRyW2ldLnBfdmFkZHIgKwogCQkJCSAgICByYmFzZSk7CiAJCQludW1zZWdz
Kys7CiAJCX0KQEAgLTc5MywxMSArNzkzLDExIEBACiAJCQkJYnJlYWs7CiAJCQlwcm90ID0gMDsK
IAkJCWlmIChwaGRyW2ldLnBfZmxhZ3MgJiBQRl9YKQotICAJCQkJcHJvdCB8PSBWTV9QUk9UX0VY
RUNVVEU7CisJCQkJcHJvdCB8PSBWTV9QUk9UX0VYRUNVVEU7CiAJCQlpZiAocGhkcltpXS5wX2Zs
YWdzICYgUEZfVykKLSAgCQkJCXByb3QgfD0gVk1fUFJPVF9XUklURTsKKwkJCQlwcm90IHw9IFZN
X1BST1RfV1JJVEU7CiAJCQlpZiAocGhkcltpXS5wX2ZsYWdzICYgUEZfUikKLSAgCQkJCXByb3Qg
fD0gVk1fUFJPVF9SRUFEOworCQkJCXByb3QgfD0gVk1fUFJPVF9SRUFEOwogCiAjaWYgZGVmaW5l
ZChfX2lhNjRfXykgJiYgX19FTEZfV09SRF9TSVpFID09IDMyICYmIGRlZmluZWQoSUEzMl9NRV9I
QVJERVIpCiAJCQkvKgpAQCAtMTA1NSwyNCArMTA1NSwyNCBAQAogCWhkciA9IE5VTEw7CiAKICNp
ZmRlZiBDT01QUkVTU19VU0VSX0NPUkVTCi0gICAgICAgIGlmIChkb2luZ19jb21wcmVzcykgewot
ICAgICAgICAgICAgICAgIHAgPSBnem9wZW5fZmxhZ3M7Ci0gICAgICAgICAgICAgICAgKnArKyA9
ICd3JzsKLSAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NfdXNlcl9jb3Jlc19nemxldmVsID49
IDAgJiYKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NfdXNlcl9jb3Jlc19nemxldmVsIDw9
IDkpCi0gICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gJzAnICsgY29tcHJlc3NfdXNlcl9j
b3Jlc19nemxldmVsOwotICAgICAgICAgICAgICAgICpwID0gMDsKLSAgICAgICAgICAgICAgICBn
emZpbGUgPSBnel9vcGVuKCIiLCBnem9wZW5fZmxhZ3MsIHZwKTsKLSAgICAgICAgICAgICAgICBp
ZiAoZ3pmaWxlID09IFpfTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBF
RkFVTFQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGNvcmVfYnVmID0gbWFsbG9jKENPUkVfQlVGX1NJWkUsIE1f
VEVNUCwgTV9XQUlUT0sgfCBNX1pFUk8pOwotICAgICAgICAgICAgICAgIGlmICghY29yZV9idWYp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gRU5PTUVNOwotICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQorCWlm
IChkb2luZ19jb21wcmVzcykgeworCQlwID0gZ3pvcGVuX2ZsYWdzOworCQkqcCsrID0gJ3cnOwor
CQlpZiAoY29tcHJlc3NfdXNlcl9jb3Jlc19nemxldmVsID49IDAgJiYKKwkJICAgIGNvbXByZXNz
X3VzZXJfY29yZXNfZ3psZXZlbCA8PSA5KQorCQkJKnArKyA9ICcwJyArIGNvbXByZXNzX3VzZXJf
Y29yZXNfZ3psZXZlbDsKKwkJKnAgPSAwOworCQlnemZpbGUgPSBnel9vcGVuKCIiLCBnem9wZW5f
ZmxhZ3MsIHZwKTsKKwkJaWYgKGd6ZmlsZSA9PSBaX05VTEwpIHsKKwkJCWVycm9yID0gRUZBVUxU
OworCQkJZ290byBkb25lOworCQl9CisJCWNvcmVfYnVmID0gbWFsbG9jKENPUkVfQlVGX1NJWkUs
IE1fVEVNUCwgTV9XQUlUT0sgfCBNX1pFUk8pOworCQlpZiAoIWNvcmVfYnVmKSB7CisJCQllcnJv
ciA9IEVOT01FTTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCX0KICNlbmRpZgogCiAJLyogU2l6ZSB0
aGUgcHJvZ3JhbSBzZWdtZW50cy4gKi8KSW5kZXg6IHN1YnJfc3RhY2suYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzdWJyX3N0YWNrLmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHN1YnJfc3RhY2suYwkod29ya2lu
ZyBjb3B5KQpAQCAtMjcwLDcgKzI3MCw3IEBACiAJCSpuYW1lID0gc3ltdmFsLm5hbWU7CiAJCXJl
dHVybiAoMCk7CiAJfQotIG91dDoKK291dDoKIAkqb2Zmc2V0ID0gMDsKIAkqbmFtZSA9ICI/PyI7
CiAJcmV0dXJuIChFTk9FTlQpOwpJbmRleDogc3Vicl90cmFwLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Vi
cl90cmFwLmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHN1YnJfdHJhcC5jCSh3b3JraW5nIGNvcHkp
CkBAIC05Miw3ICs5Miw3IEBACiAJc3RydWN0IHByb2MgKnAgPSB0ZC0+dGRfcHJvYzsKIAogCUNU
UjMoS1RSX1NZU0MsICJ1c2VycmV0OiB0aHJlYWQgJXAgKHBpZCAlZCwgJXMpIiwgdGQsIHAtPnBf
cGlkLAotICAgICAgICAgICAgdGQtPnRkX25hbWUpOworCSAgICB0ZC0+dGRfbmFtZSk7CiAjaWYg
MAogI2lmZGVmIERJQUdOT1NUSUMKIAkvKiBDaGVjayB0aGF0IHdlIGNhbGxlZCBzaWdub3RpZnko
KSBlbm91Z2guICovCkBAIC0xNDksNyArMTQ5LDcgQEAKIAlwID0gdGQtPnRkX3Byb2M7CiAKIAlD
VFIzKEtUUl9TWVNDLCAiYXN0OiB0aHJlYWQgJXAgKHBpZCAlZCwgJXMpIiwgdGQsIHAtPnBfcGlk
LAotICAgICAgICAgICAgcC0+cF9jb21tKTsKKwkgICAgcC0+cF9jb21tKTsKIAlLQVNTRVJUKFRS
QVBGX1VTRVJNT0RFKGZyYW1lcCksICgiYXN0IGluIGtlcm5lbCBtb2RlIikpOwogCVdJVE5FU1Nf
V0FSTihXQVJOX1BBTklDLCBOVUxMLCAiUmV0dXJuaW5nIHRvIHVzZXIgbW9kZSIpOwogCW10eF9h
c3NlcnQoJkdpYW50LCBNQV9OT1RPV05FRCk7CkBAIC0zMzYsNyArMzM2LDcgQEAKIAkJQ1RSNChL
VFJfU1lTQywgInN5c2NhbGw6IHA9JXAgZXJyb3I9JWQgcmV0dXJuICUjbHggJSNseCIsCiAJCSAg
ICBwLCBlcnJvciwgdGQtPnRkX3JldHZhbFswXSwgdGQtPnRkX3JldHZhbFsxXSk7CiAJfQotIHJl
dHZhbDoKK3JldHZhbDoKIAlpZiAodHJhY2VkKSB7CiAJCVBST0NfTE9DSyhwKTsKIAkJdGQtPnRk
X2RiZ2ZsYWdzICY9IH5UREJfU0NFOwpJbmRleDogc2NoZWRfNGJzZC5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHNjaGVkXzRic2QuYwkocmV2aXNpb24gMjEwNzY4KQorKysgc2NoZWRfNGJzZC5jCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzYsOSArMTM2LDkgQEAKICNlbmRpZgogCiBzdGF0aWMgc3RydWN0IGtwcm9j
X2Rlc2Mgc2NoZWRfa3AgPSB7Ci0gICAgICAgICJzY2hlZGNwdSIsCi0gICAgICAgIHNjaGVkY3B1
X3RocmVhZCwKLSAgICAgICAgTlVMTAorCSJzY2hlZGNwdSIsCisJc2NoZWRjcHVfdGhyZWFkLAor
CU5VTEwKIH07CiBTWVNJTklUKHNjaGVkY3B1LCBTSV9TVUJfUlVOX1NDSEVEVUxFUiwgU0lfT1JE
RVJfRklSU1QsIGtwcm9jX3N0YXJ0LAogICAgICZzY2hlZF9rcCk7CkBAIC0xNzcsNyArMTc3LDcg
QEAKIAogCW5ld192YWwgPSBzY2hlZF9xdWFudHVtICogdGljazsKIAllcnJvciA9IHN5c2N0bF9o
YW5kbGVfaW50KG9pZHAsICZuZXdfdmFsLCAwLCByZXEpOwotICAgICAgICBpZiAoZXJyb3IgIT0g
MCB8fCByZXEtPm5ld3B0ciA9PSBOVUxMKQorCWlmIChlcnJvciAhPSAwIHx8IHJlcS0+bmV3cHRy
ID09IE5VTEwpCiAJCXJldHVybiAoZXJyb3IpOwogCWlmIChuZXdfdmFsIDwgdGljaykKIAkJcmV0
dXJuIChFSU5WQUwpOwpAQCAtOTg0LDcgKzk4NCw3IEBACiAJCUtBU1NFUlQoKG5ld3RkLT50ZF9p
bmhpYml0b3JzID09IDApLAogCQkJKCJ0cnlpbmcgdG8gcnVuIGluaGliaXRlZCB0aHJlYWQiKSk7
CiAJCW5ld3RkLT50ZF9mbGFncyB8PSBUREZfRElEUlVOOwotICAgICAgICAJVERfU0VUX1JVTk5J
TkcobmV3dGQpOworCQlURF9TRVRfUlVOTklORyhuZXd0ZCk7CiAJCWlmICgobmV3dGQtPnRkX2Zs
YWdzICYgVERGX05PTE9BRCkgPT0gMCkKIAkJCXNjaGVkX2xvYWRfYWRkKCk7CiAJfSBlbHNlIHsK
SW5kZXg6IGtlcm5fbGlua2VyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2Vybl9saW5rZXIuYwkocmV2aXNp
b24gMjEwNzY4KQorKysga2Vybl9saW5rZXIuYwkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUs
NyBAQAogI2lmZGVmIEtMRF9ERUJVRwogaW50IGtsZF9kZWJ1ZyA9IDA7CiBTWVNDVExfSU5UKF9k
ZWJ1ZywgT0lEX0FVVE8sIGtsZF9kZWJ1ZywgQ1RMRkxBR19SVywKLSAgICAgICAgJmtsZF9kZWJ1
ZywgMCwgIlNldCB2YXJpb3VzIGxldmVscyBvZiBLTEQgZGVidWciKTsKKyAgICAma2xkX2RlYnVn
LCAwLCAiU2V0IHZhcmlvdXMgbGV2ZWxzIG9mIEtMRCBkZWJ1ZyIpOwogI2VuZGlmCiAKICNkZWZp
bmUJS0xEX0xPQ0soKQkJc3hfeGxvY2soJmtsZF9zeCkKSW5kZXg6IGtlcm5fY3B1LmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2Vybl9jcHUuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9jcHUuYwkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCw5IEBACiAJREVWTUVUSE9EKGRldmljZV9hdHRhY2gs
CWNwdWZyZXFfYXR0YWNoKSwKIAlERVZNRVRIT0QoZGV2aWNlX2RldGFjaCwJY3B1ZnJlcV9kZXRh
Y2gpLAogCi0gICAgICAgIERFVk1FVEhPRChjcHVmcmVxX3NldCwJCWNmX3NldF9tZXRob2QpLAot
ICAgICAgICBERVZNRVRIT0QoY3B1ZnJlcV9nZXQsCQljZl9nZXRfbWV0aG9kKSwKLSAgICAgICAg
REVWTUVUSE9EKGNwdWZyZXFfbGV2ZWxzLAljZl9sZXZlbHNfbWV0aG9kKSwKKwlERVZNRVRIT0Qo
Y3B1ZnJlcV9zZXQsCQljZl9zZXRfbWV0aG9kKSwKKwlERVZNRVRIT0QoY3B1ZnJlcV9nZXQsCQlj
Zl9nZXRfbWV0aG9kKSwKKwlERVZNRVRIT0QoY3B1ZnJlcV9sZXZlbHMsCWNmX2xldmVsc19tZXRo
b2QpLAogCXswLCAwfQogfTsKIHN0YXRpYyBkcml2ZXJfdCBjcHVmcmVxX2RyaXZlciA9IHsKSW5k
ZXg6IHN5c3Zfc2htLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzdl9zaG0uYwkocmV2aXNpb24gMjEwNzY4
KQorKysgc3lzdl9zaG0uYwkod29ya2luZyBjb3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBACiAJCXJl
dHVybiAoRU5PU1lTKTsKIAltdHhfbG9jaygmR2lhbnQpOwogCXNobW1hcF9zID0gcC0+cF92bXNw
YWNlLT52bV9zaG07Ci0gCWlmIChzaG1tYXBfcyA9PSBOVUxMKSB7CisJaWYgKHNobW1hcF9zID09
IE5VTEwpIHsKIAkJZXJyb3IgPSBFSU5WQUw7CiAJCWdvdG8gZG9uZTI7CiAJfQpJbmRleDogc3Vi
cl9tc2didWYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdWJyX21zZ2J1Zi5jCShyZXZpc2lvbiAyMTA3Njgp
CisrKyBzdWJyX21zZ2J1Zi5jCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBACiAJbWJw
LT5tc2dfc2VxbW9kID0gU0VRTU9EKHNpemUpOwogCW1icC0+bXNnX3dzZXEgPSBNU0dCVUZfU0VR
Tk9STShtYnAsIG1icC0+bXNnX3dzZXEpOwogCW1icC0+bXNnX3JzZXEgPSBNU0dCVUZfU0VRTk9S
TShtYnAsIG1icC0+bXNnX3JzZXEpOwotICAgICAgICBtYnAtPm1zZ19wdHIgPSBwdHI7CisJbWJw
LT5tc2dfcHRyID0gcHRyOwogCWNrc3VtID0gbXNnYnVmX2Nrc3VtKG1icCk7CiAJaWYgKGNrc3Vt
ICE9IG1icC0+bXNnX2Nrc3VtKSB7CiAJCWlmIChib290dmVyYm9zZSkgewpJbmRleDogc3Vicl9t
b2R1bGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBzdWJyX21vZHVsZS5jCShyZXZpc2lvbiAyMTA3NjgpCisr
KyBzdWJyX21vZHVsZS5jCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAgICAgY2Fk
ZHJfdAljdXJwOwogICAgIHVpbnQzMl90CSpoZHI7CiAgICAgaW50CQluZXh0OwotICAgIAorCiAg
ICAgaWYgKHByZWxvYWRfbWV0YWRhdGEgIT0gTlVMTCkgewogCQogCWN1cnAgPSBwcmVsb2FkX21l
dGFkYXRhOwpAQCAtMTE1LDcgKzExNSw3IEBACiAgICAgY2FkZHJfdAljdXJwOwogICAgIHVpbnQz
Ml90CSpoZHI7CiAgICAgaW50CQluZXh0OwotICAgIAorCiAgICAgaWYgKHByZWxvYWRfbWV0YWRh
dGEgIT0gTlVMTCkgewogCQogCS8qIFBpY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYgbGFzdCB0aW1l
ICovCkBAIC0yMDIsNyArMjAyLDcgQEAKICAgICB1aW50MzJfdAkqaGRyOwogICAgIGludAkJbmV4
dDsKICAgICBpbnQJCWNsZWFyaW5nOwotICAgIAorCiAgICAgaWYgKHByZWxvYWRfbWV0YWRhdGEg
IT0gTlVMTCkgewogCQogCWNsZWFyaW5nID0gMDsKQEAgLTIzOCw3ICsyMzgsNyBAQAogICAgIHVp
bnQzMl90CSpoZHI7CiAgICAgdm1fb2Zmc2V0X3QJKnB0cjsKICAgICBpbnQJCW5leHQ7Ci0gICAg
CisKICAgICBpZiAocHJlbG9hZF9tZXRhZGF0YSAhPSBOVUxMKSB7CiAJCiAJY3VycCA9IHByZWxv
YWRfbWV0YWRhdGE7CkluZGV4OiB0dHkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0dHkuYwkocmV2aXNpb24g
MjEwNzY4KQorKysgdHR5LmMJKHdvcmtpbmcgY29weSkKQEAgLTQ2OCwxMCArNDY4LDEwIEBACiAJ
CQlpZiAoZXJyb3IpCiAJCQkJZ290byBkb25lOwogCQl9Ci0gCi0gCQl0cC0+dF9mbGFncyB8PSBU
Rl9CVVNZX09VVDsKKworCQl0cC0+dF9mbGFncyB8PSBURl9CVVNZX09VVDsKIAkJZXJyb3IgPSB0
dHlkaXNjX3dyaXRlKHRwLCB1aW8sIGlvZmxhZyk7Ci0gCQl0cC0+dF9mbGFncyAmPSB+VEZfQlVT
WV9PVVQ7CisJCXRwLT50X2ZsYWdzICY9IH5URl9CVVNZX09VVDsKIAkJY3Zfc2lnbmFsKCZ0cC0+
dF9vdXRzZXJ3YWl0KTsKIAl9CiAKSW5kZXg6IHZmc19tb3VudC5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHZm
c19tb3VudC5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyB2ZnNfbW91bnQuYwkod29ya2luZyBjb3B5
KQpAQCAtOTg1LDcgKzk4NSw3IEBACiAJICogWFhYIFRoZSBmaW5hbCByZWNpcGllbnRzIG9mIFZG
U19NT1VOVCBqdXN0IG92ZXJ3cml0ZSB0aGUgbmRwIHRoZXkKIAkgKiBnZXQuICBObyBmcmVlaW5n
IG9mIGNuX3BuYnVmLgogCSAqLwotICAgICAgICBlcnJvciA9IFZGU19NT1VOVChtcCk7CisJZXJy
b3IgPSBWRlNfTU9VTlQobXApOwogCiAJLyoKIAkgKiBQcm9jZXNzIHRoZSBleHBvcnQgb3B0aW9u
IG9ubHkgaWYgd2UgYXJlCkluZGV4OiBsaW5rX2VsZi5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbmtfZWxm
LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIGxpbmtfZWxmLmMJKHdvcmtpbmcgY29weSkKQEAgLTE1
MDUsOSArMTUwNSw5IEBACiBsaW5rX2VsZl9zeW10YWJfZ2V0KGxpbmtlcl9maWxlX3QgbGYsIGNv
bnN0IEVsZl9TeW0gKipzeW10YWIpCiB7CiAgICAgZWxmX2ZpbGVfdCBlZiA9IChlbGZfZmlsZV90
KWxmOwotICAgIAorCiAgICAgKnN5bXRhYiA9IGVmLT5kZGJzeW10YWI7Ci0gICAgCisKICAgICBp
ZiAoKnN5bXRhYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gKDApOwogCkluZGV4OiBrZXJuX21h
bGxvYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fbWFsbG9jLmMJKHJldmlzaW9uIDIxMDc2OCkKKysr
IGtlcm5fbWFsbG9jLmMJKHdvcmtpbmcgY29weSkKQEAgLTYyNyw3ICs2MjcsNyBAQAogCXVpbnQ4
X3QgaW5keDsKIAl1X2xvbmcgbWVtX3NpemU7CiAJaW50IGk7Ci0gCisKIAltdHhfaW5pdCgmbWFs
bG9jX210eCwgIm1hbGxvYyIsIE5VTEwsIE1UWF9ERUYpOwogCiAJLyoKSW5kZXg6IGtlcm5fZ3pp
by5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtlcm5fZ3ppby5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJu
X2d6aW8uYwkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBACiAgICAgICAgIGxvZyhM
T0dfRVJSLCAiZ3pfb3BlbjogbW9kZSBpcyBub3QgdyAoJWMpXG4iLCBzLT5tb2RlKTsKICAgICAg
ICAgcmV0dXJuIGRlc3Ryb3kocyksIChnekZpbGUpWl9OVUxMOwogICAgIH0KLSAgICAKKwogICAg
IGVyciA9IGRlZmxhdGVJbml0MigmKHMtPnN0cmVhbSksIGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICBaX0RFRkxBVEVELCAtTUFYX1dCSVRTLCBERUZfTUVNX0xFVkVMLCBzdHJhdGVneSk7
CiAgICAgLyogd2luZG93Qml0cyBpcyBwYXNzZWQgPCAwIHRvIHN1cHByZXNzIHpsaWIgaGVhZGVy
ICovCkBAIC0xNzMsNyArMTczLDcgQEAKICAgICB9CiAgICAgcy0+b3V0b2ZmICs9IEdaX0hFQURF
Ul9MRU47CiAgICAgcy0+c3RhcnRwb3MgPSAxMEw7Ci0gICAgCisKICAgICByZXR1cm4gKGd6Rmls
ZSlzOwogfQogCkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICAgICAgICogYWxsIHRoZSBhdmFpbGFi
bGUgc3BhY2UgaW4gdGhlIG91dHB1dCBidWZmZXI6IAogICAgICAgICAgKi8KICAgICAgICAgZG9u
ZSA9IChzLT5zdHJlYW0uYXZhaWxfb3V0ICE9IDAgfHwgcy0+el9lcnIgPT0gWl9TVFJFQU1fRU5E
KTsKLSAKKwogICAgICAgICBpZiAocy0+el9lcnIgIT0gWl9PSyAmJiBzLT56X2VyciAhPSBaX1NU
UkVBTV9FTkQpIGJyZWFrOwogICAgIH0KICAgICBzLT5vdXRvZmYgPSBjdXJvZmY7CkBAIC0zOTcs
NyArMzk3LDcgQEAKICAgICBNQUxMT0MocHRyLCB2b2lkICosIGl0ZW1zICogc2l6ZSwgTV9URU1Q
LCBNX05PV0FJVCB8IE1fWkVSTyk7CiAgICAgcmV0dXJuIHB0cjsKIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKKwogc3RhdGljIHZvaWQKIGd6X2ZyZWUodm9pZCAqb3Bh
cXVlIF9fdW51c2VkLCB2b2lkICpwdHIpCiB7CkluZGV4OiBrZXJuX2ZhaWwuYwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrZXJuX2ZhaWwuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9mYWlsLmMJKHdvcmtp
bmcgY29weSkKQEAgLTM0MSw3ICszNDEsNyBAQAogCiAJRlBfVU5MT0NLKCk7CiAKLSBlbmQ6Citl
bmQ6CiAjaWZkZWYgSVdBUk5JTkcKIAlpZiAoZXJyb3IpCiAJCUlXQVJOSU5HKCJGYWlsZWQgdG8g
c2V0ICVzICglcykgdG8gJXMiLApAQCAtMzkwLDcgKzM5MCw3IEBACiAJCWJ1ZltyZXEtPm5ld2xl
bl0gPSAnXDAnOwogCiAJCWVycm9yID0gZmFpbF9wb2ludF9zZXQoZnAsIGJ1Zik7Ci0gICAgICAg
IH0KKwl9CiAKIG91dDoKIAlpZiAoYnVmKQpJbmRleDoga2Vybl9ldmVudC5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtlcm5fZXZlbnQuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9ldmVudC5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NTgsNyArNjU4LDcgQEAKIAkJfQogCQlicmVhazsKIAotICAgICAgICBj
YXNlIEVWRU5UX1BST0NFU1M6CisJY2FzZSBFVkVOVF9QUk9DRVNTOgogCQkqa2V2ID0ga24tPmtu
X2tldmVudDsKIAkJa2V2LT5mZmxhZ3MgPSBrbi0+a25fc2ZmbGFnczsKIAkJa2V2LT5kYXRhID0g
a24tPmtuX3NkYXRhOwpJbmRleDogdWlwY19zZW0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1aXBjX3NlbS5j
CShyZXZpc2lvbiAyMTA3NjgpCisrKyB1aXBjX3NlbS5jCSh3b3JraW5nIGNvcHkpCkBAIC05ODMs
MTYgKzk4MywxNiBAQAogc3RhdGljIGludAogc2VtX21vZGxvYWQoc3RydWN0IG1vZHVsZSAqbW9k
dWxlLCBpbnQgY21kLCB2b2lkICphcmcpCiB7Ci0gICAgICAgIGludCBlcnJvciA9IDA7CisJaW50
IGVycm9yID0gMDsKIAotICAgICAgICBzd2l0Y2ggKGNtZCkgewotICAgICAgICBjYXNlIE1PRF9M
T0FEOgorCXN3aXRjaCAoY21kKSB7CisJY2FzZSBNT0RfTE9BRDoKIAkJZXJyb3IgPSBrc2VtX21v
ZHVsZV9pbml0KCk7CiAJCWlmIChlcnJvcikKIAkJCWtzZW1fbW9kdWxlX2Rlc3Ryb3koKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKKwkJYnJlYWs7CiAKLSAgICAgICAgY2FzZSBNT0RfVU5MT0FE
OgorCWNhc2UgTU9EX1VOTE9BRDoKIAkJbXR4X2xvY2soJmtzZW1fY291bnRfbG9jayk7CiAJCWlm
IChuc2VtcyAhPSAwKSB7CiAJCQllcnJvciA9IEVPUE5PVFNVUFA7CkBAIC0xMDAyLDIxICsxMDAy
LDIxIEBACiAJCWtzZW1fZGVhZCA9IDE7CiAJCW10eF91bmxvY2soJmtzZW1fY291bnRfbG9jayk7
CiAJCWtzZW1fbW9kdWxlX2Rlc3Ryb3koKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKwkJYnJl
YWs7CiAKLSAgICAgICAgY2FzZSBNT0RfU0hVVERPV046Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIChlcnJvcik7CisJ
Y2FzZSBNT0RfU0hVVERPV046CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWVycm9yID0gRUlOVkFM
OworCQlicmVhazsKKwl9CisJcmV0dXJuIChlcnJvcik7CiB9CiAKIHN0YXRpYyBtb2R1bGVkYXRh
X3Qgc2VtX21vZCA9IHsKLSAgICAgICAgInNlbSIsCi0gICAgICAgICZzZW1fbW9kbG9hZCwKLSAg
ICAgICAgTlVMTAorCSJzZW0iLAorCSZzZW1fbW9kbG9hZCwKKwlOVUxMCiB9OwogCiBERUNMQVJF
X01PRFVMRShzZW0sIHNlbV9tb2QsIFNJX1NVQl9TWVNWX1NFTSwgU0lfT1JERVJfRklSU1QpOwpJ
bmRleDoga2Vybl9zeC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fc3guYwkocmV2aXNpb24gMjEwNzY4
KQorKysga2Vybl9zeC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAKIAl1aW50
cHRyX3QgeCA9IHN4LT5zeF9sb2NrOwogCiAgICAgICAgICpvd25lciA9IChzdHJ1Y3QgdGhyZWFk
ICopU1hfT1dORVIoeCk7Ci0gICAgICAgIHJldHVybiAoKHggJiBTWF9MT0NLX1NIQVJFRCkgIT0g
MCA/IChTWF9TSEFSRVJTKHgpICE9IDApIDoKKwlyZXR1cm4gKCh4ICYgU1hfTE9DS19TSEFSRUQp
ICE9IDAgPyAoU1hfU0hBUkVSUyh4KSAhPSAwKSA6CiAJICAgICgqb3duZXIgIT0gTlVMTCkpOwog
fQogI2VuZGlmCkluZGV4OiBidXNfaWYubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBidXNfaWYubQkocmV2aXNp
b24gMjEwNzY4KQorKysgYnVzX2lmLm0JKHdvcmtpbmcgY29weSkKQEAgLTg3LDggKzg3LDggQEAK
ICAqIEBwYXJhbSBfY2hpbGQJdGhlIGNoaWxkIGRldmljZSB3aGljaCBmYWlsZWQgdG8gcHJvYmUK
ICAqLyAgIAogTUVUSE9EIHZvaWQgcHJvYmVfbm9tYXRjaCB7Ci0gICAgICAgIGRldmljZV90IF9k
ZXY7Ci0gICAgICAgIGRldmljZV90IF9jaGlsZDsKKwlkZXZpY2VfdCBfZGV2OworCWRldmljZV90
IF9jaGlsZDsKIH07CiAKIC8qKgpJbmRleDogc3Vicl9wb3dlci5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN1
YnJfcG93ZXIuYwkocmV2aXNpb24gMjEwNzY4KQorKysgc3Vicl9wb3dlci5jCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDMsNyArMTAzLDcgQEAKIHBvd2VyX3Byb2ZpbGVfc2V0X3N0YXRlKGludCBzdGF0
ZSkgCiB7CiAJaW50CQljaGFuZ2VkOwotICAgIAorCiAJaWYgKHN0YXRlICE9IHBvd2VyX3Byb2Zp
bGVfc3RhdGUpIHsKIAkJcG93ZXJfcHJvZmlsZV9zdGF0ZSA9IHN0YXRlOwogCQljaGFuZ2VkID0g
MTsKSW5kZXg6IGtlcm5fcHJvdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fcHJvdC5jCShyZXZpc2lv
biAyMTA3NjgpCisrKyBrZXJuX3Byb3QuYwkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3
IEBACiAKICNpZm5kZWYgX1NZU19TWVNQUk9UT19IXwogc3RydWN0IGdldHBwaWRfYXJncyB7Ci0g
ICAgICAgIGludCAgICAgZHVtbXk7CisJaW50ICAgICBkdW1teTsKIH07CiAjZW5kaWYKIC8qIEFS
R1NVU0VEICovCkBAIC0xMjcsNyArMTI3LDcgQEAKICAqLwogI2lmbmRlZiBfU1lTX1NZU1BST1RP
X0hfCiBzdHJ1Y3QgZ2V0cGdycF9hcmdzIHsKLSAgICAgICAgaW50ICAgICBkdW1teTsKKwlpbnQg
ICAgIGR1bW15OwogfTsKICNlbmRpZgogaW50CkBAIC0yMDUsNyArMjA1LDcgQEAKIAogI2lmbmRl
ZiBfU1lTX1NZU1BST1RPX0hfCiBzdHJ1Y3QgZ2V0dWlkX2FyZ3MgewotICAgICAgICBpbnQgICAg
IGR1bW15OworCWludCAgICAgZHVtbXk7CiB9OwogI2VuZGlmCiAvKiBBUkdTVVNFRCAqLwpAQCAt
MjIyLDcgKzIyMiw3IEBACiAKICNpZm5kZWYgX1NZU19TWVNQUk9UT19IXwogc3RydWN0IGdldGV1
aWRfYXJncyB7Ci0gICAgICAgIGludCAgICAgZHVtbXk7CisJaW50ICAgICBkdW1teTsKIH07CiAj
ZW5kaWYKIC8qIEFSR1NVU0VEICovCkBAIC0yMzYsNyArMjM2LDcgQEAKIAogI2lmbmRlZiBfU1lT
X1NZU1BST1RPX0hfCiBzdHJ1Y3QgZ2V0Z2lkX2FyZ3MgewotICAgICAgICBpbnQgICAgIGR1bW15
OworCWludCAgICAgZHVtbXk7CiB9OwogI2VuZGlmCiAvKiBBUkdTVVNFRCAqLwpAQCAtMjU4LDcg
KzI1OCw3IEBACiAgKi8KICNpZm5kZWYgX1NZU19TWVNQUk9UT19IXwogc3RydWN0IGdldGVnaWRf
YXJncyB7Ci0gICAgICAgIGludCAgICAgZHVtbXk7CisJaW50ICAgICBkdW1teTsKIH07CiAjZW5k
aWYKIC8qIEFSR1NVU0VEICovCkBAIC0zMjIsNyArMzIyLDcgQEAKIAogI2lmbmRlZiBfU1lTX1NZ
U1BST1RPX0hfCiBzdHJ1Y3Qgc2V0c2lkX2FyZ3MgewotICAgICAgICBpbnQgICAgIGR1bW15Owor
CWludCAgICAgZHVtbXk7CiB9OwogI2VuZGlmCiAvKiBBUkdTVVNFRCAqLwpJbmRleDoga2Vybl9k
ZXNjcmlwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2Vybl9kZXNjcmlwLmMJKHJldmlzaW9uIDIxMDc2OCkK
KysrIGtlcm5fZGVzY3JpcC5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsOCArMjE4LDggQEAKIHN0
YXRpYyBpbnQKIGZkaXN1c2VkKHN0cnVjdCBmaWxlZGVzYyAqZmRwLCBpbnQgZmQpCiB7Ci0gICAg
ICAgIEtBU1NFUlQoZmQgPj0gMCAmJiBmZCA8IGZkcC0+ZmRfbmZpbGVzLAotICAgICAgICAgICAg
KCJmaWxlIGRlc2NyaXB0b3IgJWQgb3V0IG9mIHJhbmdlICgwLCAlZCkiLCBmZCwgZmRwLT5mZF9u
ZmlsZXMpKTsKKwlLQVNTRVJUKGZkID49IDAgJiYgZmQgPCBmZHAtPmZkX25maWxlcywKKwkgICAg
KCJmaWxlIGRlc2NyaXB0b3IgJWQgb3V0IG9mIHJhbmdlICgwLCAlZCkiLCBmZCwgZmRwLT5mZF9u
ZmlsZXMpKTsKIAlyZXR1cm4gKChmZHAtPmZkX21hcFtORFNMT1QoZmQpXSAmIE5EQklUKGZkKSkg
IT0gMCk7CiB9CiAKQEAgLTM2OSwxMyArMzY5LDEzIEBACiAJCX0KIAkJYXJnID0gKGludHB0cl90
KSZmbDsKIAkJYnJlYWs7Ci0gICAgICAgIGNhc2UgRl9HRVRMSzoKLSAgICAgICAgY2FzZSBGX1NF
VExLOgotICAgICAgICBjYXNlIEZfU0VUTEtXOgorCWNhc2UgRl9HRVRMSzoKKwljYXNlIEZfU0VU
TEs6CisJY2FzZSBGX1NFVExLVzoKIAljYXNlIEZfU0VUTEtfUkVNT1RFOgogICAgICAgICAgICAg
ICAgIGVycm9yID0gY29weWluKCh2b2lkICopKGludHB0cl90KXVhcC0+YXJnLCAmZmwsIHNpemVv
ZihmbCkpOwotICAgICAgICAgICAgICAgIGFyZyA9IChpbnRwdHJfdCkmZmw7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7CisJCWFyZyA9IChpbnRwdHJfdCkmZmw7CisJCWJyZWFrOwogCWRlZmF1bHQ6
CiAJCWFyZyA9IHVhcC0+YXJnOwogCQlicmVhazsKSW5kZXg6IGtlcm5fbG9jay5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtlcm5fbG9jay5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX2xvY2suYwkod29y
a2luZyBjb3B5KQpAQCAtMzcxLDggKzM3MSw4IEBACiAKIAlNUEFTUygoZmxhZ3MgJiB+TEtfSU5J
VF9NQVNLKSA9PSAwKTsKIAlBU1NFUlRfQVRPTUlDX0xPQURfUFRSKGxrLT5sa19sb2NrLAotICAg
ICAgICAgICAgKCIlczogbG9ja21nciBub3QgYWxpZ25lZCBmb3IgJXM6ICVwIiwgX19mdW5jX18s
IHdtZXNnLAotICAgICAgICAgICAgJmxrLT5sa19sb2NrKSk7CisJICAgICgiJXM6IGxvY2ttZ3Ig
bm90IGFsaWduZWQgZm9yICVzOiAlcCIsIF9fZnVuY19fLCB3bWVzZywKKwkgICAgJmxrLT5sa19s
b2NrKSk7CiAKIAlpZmxhZ3MgPSBMT19TTEVFUEFCTEUgfCBMT19VUEdSQURBQkxFOwogCWlmIChm
bGFncyAmIExLX0NBTlJFQ1VSU0UpCkluZGV4OiB1aXBjX2Nvdy5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHVp
cGNfY293LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHVpcGNfY293LmMJKHdvcmtpbmcgY29weSkK
QEAgLTExNiw5ICsxMTYsOSBAQAogCWlmICh2bV9mYXVsdF9xdWljaygoY2FkZHJfdCl1dmEsIFZN
X1BST1RfUkVBRCkgPCAwKQogCQlyZXR1cm4gKDApOwogCi0gICAgICAgLyogCi0JKiB2ZXJpZnkg
cGFnZSBpcyBtYXBwZWQgJiBub3QgYWxyZWFkeSB3aXJlZCBmb3IgaS9vCi0JKi8KKwkvKiAKKwkg
KiB2ZXJpZnkgcGFnZSBpcyBtYXBwZWQgJiBub3QgYWxyZWFkeSB3aXJlZCBmb3IgaS9vCisJICov
CiAJcHAgPSBwbWFwX2V4dHJhY3RfYW5kX2hvbGQobWFwLT5wbWFwLCB1dmEsIFZNX1BST1RfUkVB
RCk7CiAJaWYgKHBwID09IE5VTEwpIHsKIAkJc29jb3dfc3RhdHMuZmFpbF9ub3RfbWFwcGVkKys7
CkluZGV4OiB1aXBjX21idWYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1aXBjX21idWYuYwkocmV2aXNpb24g
MjEwNzY4KQorKysgdWlwY19tYnVmLmMJKHdvcmtpbmcgY29weSkKQEAgLTExMDMsNyArMTEwMyw3
IEBACiAJfQogCW0tPm1fbmV4dCA9IG47CiAJcmV0dXJuIChtKTsKLSBiYWQ6CitiYWQ6CiAJbV9m
cmVlbShuKTsKIAlNU0ZhaWwrKzsKIAlyZXR1cm4gKE5VTEwpOwpAQCAtMjA5OCwxNiArMjA5OCwx
NiBAQAogbWJwcm9mX2Nscl9oYW5kbGVyKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiB7CiAJaW50IGNs
ZWFyLCBlcnJvcjsKLSAKKwogCWNsZWFyID0gMDsKIAllcnJvciA9IHN5c2N0bF9oYW5kbGVfaW50
KG9pZHAsICZjbGVhciwgMCwgcmVxKTsKIAlpZiAoZXJyb3IgfHwgIXJlcS0+bmV3cHRyKQogCQly
ZXR1cm4gKGVycm9yKTsKLSAKKwogCWlmIChjbGVhcikgewogCQliemVybygmbWJwcm9mLCBzaXpl
b2YobWJwcm9mKSk7CiAJfQotIAorCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKSW5kZXg6IGtlcm5f
YWxxLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga2Vybl9hbHEuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vy
bl9hbHEuYwkod29ya2luZyBjb3B5KQpAQCAtNDE0LDkgKzQxNCw5IEBACiB9CiAKIHN0YXRpYyBz
dHJ1Y3Qga3Byb2NfZGVzYyBhbGRfa3AgPSB7Ci0gICAgICAgICJBTFEgRGFlbW9uIiwKLSAgICAg
ICAgYWxkX2RhZW1vbiwKLSAgICAgICAgJmFsZF9wcm9jCisJIkFMUSBEYWVtb24iLAorCWFsZF9k
YWVtb24sCisJJmFsZF9wcm9jCiB9OwogCiBTWVNJTklUKGFsZHRocmVhZCwgU0lfU1VCX0tUSFJF
QURfSURMRSwgU0lfT1JERVJfQU5ZLCBrcHJvY19zdGFydCwgJmFsZF9rcCk7CkluZGV4OiBpbWdh
Y3RfYW91dC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGltZ2FjdF9hb3V0LmMJKHJldmlzaW9uIDIxMDc2OCkK
KysrIGltZ2FjdF9hb3V0LmMJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQAogCWlm
ICgoKGFfb3V0LT5hX21hZ2ljID4+IDE2KSAmIDB4ZmYpICE9IDB4ODYgJiYKIAkgICAgKChhX291
dC0+YV9tYWdpYyA+PiAxNikgJiAweGZmKSAhPSAwICYmCiAJICAgICgoKChpbnQpbnRvaGwoYV9v
dXQtPmFfbWFnaWMpKSA+PiAxNikgJiAweGZmKSAhPSAweDg2KQotICAgICAgICAgICAgICAgIHJl
dHVybiAtMTsKKwkJcmV0dXJuIC0xOwogCiAJLyoKIAkgKiBTZXQgZmlsZS92aXJ0dWFsIG9mZnNl
dCBiYXNlZCBvbiBhLm91dCB2YXJpYW50LgpJbmRleDoga2Vybl9zeXNjdGwuYwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrZXJuX3N5c2N0bC5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX3N5c2N0bC5jCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTk5LDggKzExOTksOCBAQAoga2VybmVsX3N5c2N0bGJ5bmFtZShz
dHJ1Y3QgdGhyZWFkICp0ZCwgY2hhciAqbmFtZSwgdm9pZCAqb2xkLCBzaXplX3QgKm9sZGxlbnAs
CiAgICAgdm9pZCAqbmV3LCBzaXplX3QgbmV3bGVuLCBzaXplX3QgKnJldHZhbCwgaW50IGZsYWdz
KQogewotICAgICAgICBpbnQgb2lkW0NUTF9NQVhOQU1FXTsKLSAgICAgICAgc2l6ZV90IG9pZGxl
biwgcGxlbjsKKwlpbnQgb2lkW0NUTF9NQVhOQU1FXTsKKwlzaXplX3Qgb2lkbGVuLCBwbGVuOwog
CWludCBlcnJvcjsKIAogCW9pZFswXSA9IDA7CQkvKiBzeXNjdGwgaW50ZXJuYWwgbWFnaWMgKi8K
QEAgLTE0NDIsNyArMTQ0Miw3IEBACiAJCXJldHVybiAoRUlOVkFMKTsKIAogIAllcnJvciA9IGNv
cHlpbih1YXAtPm5hbWUsICZuYW1lLCB1YXAtPm5hbWVsZW4gKiBzaXplb2YoaW50KSk7Ci0gCWlm
IChlcnJvcikKKwlpZiAoZXJyb3IpCiAJCXJldHVybiAoZXJyb3IpOwogCiAJZXJyb3IgPSB1c2Vy
bGFuZF9zeXNjdGwodGQsIG5hbWUsIHVhcC0+bmFtZWxlbiwKSW5kZXg6IGtlcm5fbW9kdWxlLmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga2Vybl9tb2R1bGUuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9t
b2R1bGUuYwkod29ya2luZyBjb3B5KQpAQCAtMjM0LDE0ICsyMzQsMTQgQEAKIG1vZHVsZV90CiBt
b2R1bGVfbG9va3VwYnlpZChpbnQgbW9kaWQpCiB7Ci0gICAgICAgIG1vZHVsZV90IG1vZDsKKwlt
b2R1bGVfdCBtb2Q7CiAKLSAgICAgICAgTU9EX0xPQ0tfQVNTRVJUOworCU1PRF9MT0NLX0FTU0VS
VDsKIAotICAgICAgICBUQUlMUV9GT1JFQUNIKG1vZCwgJm1vZHVsZXMsIGxpbmspCi0gICAgICAg
ICAgICAgICAgaWYgKG1vZC0+aWQgPT0gbW9kaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4obW9kKTsKLSAgICAgICAgcmV0dXJuIChOVUxMKTsKKwlUQUlMUV9GT1JFQUNIKG1vZCwg
Jm1vZHVsZXMsIGxpbmspCisJCWlmIChtb2QtPmlkID09IG1vZGlkKQorCQkJcmV0dXJuKG1vZCk7
CisJcmV0dXJuIChOVUxMKTsKIH0KIAogaW50CkluZGV4OiBzdWJyX3dpdG5lc3MuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzdWJyX3dpdG5lc3MuYwkocmV2aXNpb24gMjEwNzY4KQorKysgc3Vicl93aXRuZXNz
LmMJKHdvcmtpbmcgY29weSkKQEAgLTkxNCwxNiArOTE0LDE2IEBACiB7CiAJaW50IGk7CiAKLSAJ
Zm9yIChpID0gMDsgaSA8IGluZGVudDsgaSsrKQotIAkJcHJudCgiICIpOworCWZvciAoaSA9IDA7
IGkgPCBpbmRlbnQ7IGkrKykKKwkJcHJudCgiICIpOwogCXBybnQoIiVzICh0eXBlOiAlcywgZGVw
dGg6ICVkLCBhY3RpdmUgcmVmczogJWQpIiwKIAkgICAgIHctPndfbmFtZSwgdy0+d19jbGFzcy0+
bGNfbmFtZSwKIAkgICAgIHctPndfZGRiX2xldmVsLCB3LT53X3JlZmNvdW50KTsKLSAJaWYgKHct
PndfZGlzcGxheWVkKSB7Ci0gCQlwcm50KCIgLS0gKGFscmVhZHkgZGlzcGxheWVkKVxuIik7Ci0g
CQlyZXR1cm47Ci0gCX0KLSAJdy0+d19kaXNwbGF5ZWQgPSAxOworCWlmICh3LT53X2Rpc3BsYXll
ZCkgeworCQlwcm50KCIgLS0gKGFscmVhZHkgZGlzcGxheWVkKVxuIik7CisJCXJldHVybjsKKwl9
CisJdy0+d19kaXNwbGF5ZWQgPSAxOwogCWlmICh3LT53X2ZpbGUgIT0gTlVMTCAmJiB3LT53X2xp
bmUgIT0gMCkKIAkJcHJudCgiIC0tIGxhc3QgYWNxdWlyZWQgQCAlczolZFxuIiwgdy0+d19maWxl
LAogCQkgICAgdy0+d19saW5lKTsKQEAgLTI0NzksMTAgKzI0NzksMTAgQEAKIAkJCSAgICB0bXBf
dzEtPndfbmFtZSwgdG1wX3cxLT53X2NsYXNzLT5sY19uYW1lLCAKIAkJCSAgICB0bXBfdzItPndf
bmFtZSwgdG1wX3cyLT53X2NsYXNzLT5sY19uYW1lKTsKICNpZiAwCi0gCQkJc2J1Zl9wcmludGYo
c2IsCisJCQlzYnVmX3ByaW50ZihzYiwKIAkJCSJ3X3JtYXRyaXhbJXNdWyVzXSA9PSAleCwgd19y
bWF0cml4WyVzXVslc10gPT0gJXhcbiIsCi0gCQkJICAgIHRtcF93MS0+bmFtZSwgdG1wX3cyLT53
X25hbWUsIHdfcm1hdHJpeDEsCi0gCQkJICAgIHRtcF93Mi0+bmFtZSwgdG1wX3cxLT53X25hbWUs
IHdfcm1hdHJpeDIpOworCQkJICAgIHRtcF93MS0+bmFtZSwgdG1wX3cyLT53X25hbWUsIHdfcm1h
dHJpeDEsCisJCQkgICAgdG1wX3cyLT5uYW1lLCB0bXBfdzEtPndfbmFtZSwgd19ybWF0cml4Mik7
CiAjZW5kaWYKIAkJCWlmIChkYXRhMSkgewogCQkJCXNidWZfcHJpbnRmKHNiLApJbmRleDogdmZz
X3N1YnIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB2ZnNfc3Vici5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyB2
ZnNfc3Vici5jCSh3b3JraW5nIGNvcHkpCkBAIC04MjEsNyArODIxLDcgQEAKIH07CiBTWVNJTklU
KHZubHJ1LCBTSV9TVUJfS1RIUkVBRF9VUERBVEUsIFNJX09SREVSX0ZJUlNULCBrcHJvY19zdGFy
dCwKICAgICAmdm5scnVfa3ApOwotIAorCiAvKgogICogUm91dGluZXMgaGF2aW5nIHRvIGRvIHdp
dGggdGhlIG1hbmFnZW1lbnQgb2YgdGhlIHZub2RlIHRhYmxlLgogICovCg==
--00c09f93d63c341395048ce80794--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=E%2Bzg5rNSv0Dg6uG%2Baxxvz=vrRVdug0JiNhbHG>