Re: [PATCH] remove IO APIC newline

Diego Calleja García (diegocg@teleline.es)
Fri, 27 Jun 2003 20:57:42 +0200


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-803-1056740461-0001-2
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

On Fri, 27 Jun 2003 14:41:11 -0400
Jeff Garzik <jgarzik@pobox.com> wrote:

> Personally the IO-APIC gunk is gunk that should be hidden behind
> DPRINTK... SMP machines spam dmesg _way_ too much. Especially once you
> get above 4 processors.

I did a patch wich makes dmesg output of SMP machines better. Well, it doesn't
adds or removes any line; but it says "CPUX:". The patch ugly, basically
it adds smp_processor_id() output in every printk i found. I did it because
IMHO messages like "Intel machine check architecture supported" in a SMP machine
are ugly. I'd found it specially nice for big SMP boxes because this does dmesg
easily grep'able.

-Initializing CPU#0
+CPU0: Initializing
[...]
-Calibrating delay loop... 1602.35 BogoMIPS
+CPU0: Calibrating delay loop... 1602.35 BogoMIPS
[...]
-CPU: L1 I cache: 16K, L1 D cache: 16K
-CPU: L2 cache: 256K
-CPU: After generic, caps: 0383fbff 00000000 00000000 00000040
-Intel machine check architecture supported.
-Intel machine check reporting enabled on CPU#0.
-Enabling fast FPU save and restore... done.
-Enabling unmasked SIMD FPU exception support... done.
-Checking 'hlt' instruction... OK.
+CPU0: L1 I cache: 16K, L1 D cache: 16K
+CPU0: L2 cache: 256K
+CPU0: After generic, caps: 0383fbff 00000000 00000000 00000040
+CPU0: Intel machine check architecture supported.
+CPU0: Intel machine check reporting enabled.
+CPU0: Enabling fast FPU save and restore... done.
+CPU0: Enabling unmasked SIMD FPU exception support... done.
+CPU0: Checking 'hlt' instruction... OK.
[...]
-enabled ExtINT on CPU#0
-ESR value before enabling vector: 00000000
-ESR value after enabling vector: 00000000
+CPU0: enabled ExtINT.
+CPU0: ESR value before enabling vector: 00000000
+CPU0: ESR value after enabling vector: 00000000
[...]
-Initializing CPU#1
-masked ExtINT on CPU#1
-ESR value before enabling vector: 00000000
-ESR value after enabling vector: 00000000
-Calibrating delay loop... 1605.63 BogoMIPS
-CPU: L1 I cache: 16K, L1 D cache: 16K
-CPU: L2 cache: 256K
-CPU: After generic, caps: 0383fbff 00000000 00000000 00000040
-Intel machine check architecture supported.
-Intel machine check reporting enabled on CPU#1.
+CPU1: Initializing
+CPU1: masked ExtINT.
+CPU1: ESR value before enabling vector: 00000000
+CPU1: ESR value after enabling vector: 00000000
+CPU1: Calibrating delay loop... 1605.63 BogoMIPS
+CPU1: L1 I cache: 16K, L1 D cache: 16K
+CPU1: L2 cache: 256K
+CPU1: After generic, caps: 0383fbff 00000000 00000000 00000040
+CPU1: Intel machine check architecture supported.
+CPU1: Intel machine check reporting enabled.
[...]
-Enabling SEP on CPU 1
-Enabling SEP on CPU 0
+CPU1: Enabling SEP
+CPU0: Enabling SEP

--=_courier-803-1056740461-0001-2
Content-Type: application/octet-stream; name="dmesg-cleanup.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="dmesg-cleanup.patch"

ZGlmZiAtTnVyIHVuc3RhL2FyY2gvaTM4Ni9rZXJuZWwvYXBpYy5jIHVuc3RhLm1vby9hcmNoL2kz
ODYva2VybmVsL2FwaWMuYwotLS0gdW5zdGEvYXJjaC9pMzg2L2tlcm5lbC9hcGljLmMJMjAwMy0w
Ni0yNCAyMDo1NDoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIHVuc3RhLm1vby9hcmNoL2kzODYva2Vy
bmVsL2FwaWMuYwkyMDAzLTA2LTI2IDE3OjMxOjQ5LjAwMDAwMDAwMCArMDIwMApAQCAtNDA4LDEw
ICs0MDgsMTAgQEAKIAl2YWx1ZSA9IGFwaWNfcmVhZChBUElDX0xWVDApICYgQVBJQ19MVlRfTUFT
S0VEOwogCWlmICghc21wX3Byb2Nlc3Nvcl9pZCgpICYmIChwaWNfbW9kZSB8fCAhdmFsdWUpKSB7
CiAJCXZhbHVlID0gQVBJQ19ETV9FWFRJTlQ7Ci0JCXByaW50aygiZW5hYmxlZCBFeHRJTlQgb24g
Q1BVIyVkXG4iLCBzbXBfcHJvY2Vzc29yX2lkKCkpOworCQlwcmludGsoIkNQVSVkOiBlbmFibGVk
IEV4dElOVC5cbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJfSBlbHNlIHsKIAkJdmFsdWUgPSBB
UElDX0RNX0VYVElOVCB8IEFQSUNfTFZUX01BU0tFRDsKLQkJcHJpbnRrKCJtYXNrZWQgRXh0SU5U
IG9uIENQVSMlZFxuIiwgc21wX3Byb2Nlc3Nvcl9pZCgpKTsKKwkJcHJpbnRrKCJDUFUlZDogbWFz
a2VkIEV4dElOVC5cbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJfQogCWFwaWNfd3JpdGVfYXJv
dW5kKEFQSUNfTFZUMCwgdmFsdWUpOwogCkBAIC00MzEsNyArNDMxLDggQEAKIAkJaWYgKG1heGx2
dCA+IDMpCQkvKiBEdWUgdG8gdGhlIFBlbnRpdW0gZXJyYXR1bSAzQVAuICovCiAJCQlhcGljX3dy
aXRlKEFQSUNfRVNSLCAwKTsKIAkJdmFsdWUgPSBhcGljX3JlYWQoQVBJQ19FU1IpOwotCQlwcmlu
dGsoIkVTUiB2YWx1ZSBiZWZvcmUgZW5hYmxpbmcgdmVjdG9yOiAlMDhseFxuIiwgdmFsdWUpOwor
CQlwcmludGsoIkNQVSVkOiBFU1IgdmFsdWUgYmVmb3JlIGVuYWJsaW5nIHZlY3RvcjogJTA4bHhc
biIsCisJCQlzbXBfcHJvY2Vzc29yX2lkKCksIHZhbHVlKTsKIAogCQl2YWx1ZSA9IEVSUk9SX0FQ
SUNfVkVDVE9SOyAgICAgIC8vIGVuYWJsZXMgc2VuZGluZyBlcnJvcnMKIAkJYXBpY193cml0ZV9h
cm91bmQoQVBJQ19MVlRFUlIsIHZhbHVlKTsKQEAgLTQ0MSw3ICs0NDIsOCBAQAogCQlpZiAobWF4
bHZ0ID4gMykKIAkJCWFwaWNfd3JpdGUoQVBJQ19FU1IsIDApOwogCQl2YWx1ZSA9IGFwaWNfcmVh
ZChBUElDX0VTUik7Ci0JCXByaW50aygiRVNSIHZhbHVlIGFmdGVyIGVuYWJsaW5nIHZlY3Rvcjog
JTA4bHhcbiIsIHZhbHVlKTsKKwkJcHJpbnRrKCJDUFUlZDogRVNSIHZhbHVlIGFmdGVyIGVuYWJs
aW5nIHZlY3RvcjogJTA4bHhcbiIsCisJCQlzbXBfcHJvY2Vzc29yX2lkKCksIHZhbHVlKTsKIAl9
IGVsc2UgewogCQlpZiAoZXNyX2Rpc2FibGUpCQogCQkJLyogCkBAIC00NTAsOSArNDUyLDkgQEAK
IAkJCSAqIEVTUiBkaXNhYmxlZCAtIHdlIGNhbid0IGRvIGFueXRoaW5nIHVzZWZ1bCB3aXRoIHRo
ZQogCQkJICogZXJyb3JzIGFueXdheSAtIG1ibGlnaAogCQkJICovCi0JCQlwcmludGsoIkxlYXZp
bmcgRVNSIGRpc2FibGVkLlxuIik7CisJCQlwcmludGsoIkNQVSVkOiBMZWF2aW5nIEVTUiBkaXNh
YmxlZC5cbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJCWVsc2UgCi0JCQlwcmludGsoIk5vIEVT
UiBmb3IgODI0ODlEWC5cbiIpOworCQkJcHJpbnRrKCJDUFUlZDogTm8gRVNSIGZvciA4MjQ4OURY
LlxuIiwgc21wX3Byb2Nlc3Nvcl9pZCgpKTsKIAl9CiAKIAlpZiAobm1pX3dhdGNoZG9nID09IE5N
SV9MT0NBTF9BUElDKQpkaWZmIC1OdXIgdW5zdGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvYW1kLmMg
dW5zdGEubW9vL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2FtZC5jCi0tLSB1bnN0YS9hcmNoL2kzODYv
a2VybmVsL2NwdS9hbWQuYwkyMDAzLTA1LTA1IDIxOjAwOjAyLjAwMDAwMDAwMCArMDIwMAorKysg
dW5zdGEubW9vL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2FtZC5jCTIwMDMtMDYtMjYgMTc6MTE6NDQu
MDAwMDAwMDAwICswMjAwCkBAIC03NCw3ICs3NCw3IEBACiAJCQkJdm9pZCAoKmZfdmlkZSkodm9p
ZCk7CiAJCQkJdW5zaWduZWQgbG9uZyBkLCBkMjsKIAkJCQkKLQkJCQlwcmludGsoS0VSTl9JTkZP
ICJBTUQgSzYgc3RlcHBpbmcgQiBkZXRlY3RlZCAtICIpOworCQkJCXByaW50ayhLRVJOX0lORk8g
IkNQVSVkOiBBTUQgSzYgc3RlcHBpbmcgQiBkZXRlY3RlZCAtICIsIHNtcF9wcm9jZXNzb3JfaWQo
KSk7CiAJCQkJCiAJCQkJLyoKIAkJCQkgKiBJdCBsb29rcyBsaWtlIEFNRCBmaXhlZCB0aGUgMi42
LjIgYnVnIGFuZCBpbXByb3ZlZCBpbmRpcmVjdCAKQEAgLTkwLDcgKzkwLDcgQEAKIAkJCQlkID0g
ZDItZDsKIAkJCQkKIAkJCQkvKiBLbm9jayB0aGVzZSB0d28gbGluZXMgb3V0IGlmIGl0IGRlYnVn
cyBvdXQgb2sgKi8KLQkJCQlwcmludGsoS0VSTl9JTkZPICJBTUQgSzYgc3RlcHBpbmcgQiBkZXRl
Y3RlZCAtICIpOworCQkJCXByaW50ayhLRVJOX0lORk8gIkNQVSVkOiBBTUQgSzYgc3RlcHBpbmcg
QiBkZXRlY3RlZCAtICIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJCQkJLyogLS0gY3V0IGhlcmUg
LS0gKi8KIAkJCQlpZiAoZCA+IDIwKks2X0JVR19MT09QKSAKIAkJCQkJcHJpbnRrKCJzeXN0ZW0g
c3RhYmlsaXR5IG1heSBiZSBpbXBhaXJlZCB3aGVuIG1vcmUgdGhhbiAzMiBNQiBhcmUgdXNlZC5c
biIpOwpAQCAtMTE0LDggKzExNCw4IEBACiAJCQkJCXdiaW52ZCgpOwogCQkJCQl3cm1zcihNU1Jf
SzZfV0hDUiwgbCwgaCk7CiAJCQkJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKLQkJCQkJcHJp
bnRrKEtFUk5fSU5GTyAiRW5hYmxpbmcgb2xkIHN0eWxlIEs2IHdyaXRlIGFsbG9jYXRpb24gZm9y
ICVkIE1iXG4iLAotCQkJCQkJbWJ5dGVzKTsKKwkJCQkJcHJpbnRrKEtFUk5fSU5GTyAiQ1BVJWQ6
IEVuYWJsaW5nIG9sZCBzdHlsZSBLNiB3cml0ZSBhbGxvY2F0aW9uIGZvciAlZCBNYlxuIiwKKwkJ
CQkJCXNtcF9wcm9jZXNzb3JfaWQoKSwgbWJ5dGVzKTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQl9
CkBAIC0xMzUsOCArMTM1LDggQEAKIAkJCQkJd2JpbnZkKCk7CiAJCQkJCXdybXNyKE1TUl9LNl9X
SENSLCBsLCBoKTsKIAkJCQkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwotCQkJCQlwcmludGso
S0VSTl9JTkZPICJFbmFibGluZyBuZXcgc3R5bGUgSzYgd3JpdGUgYWxsb2NhdGlvbiBmb3IgJWQg
TWJcbiIsCi0JCQkJCQltYnl0ZXMpOworCQkJCQlwcmludGsoS0VSTl9JTkZPICJDUFUlZDogRW5h
YmxpbmcgbmV3IHN0eWxlIEs2IHdyaXRlIGFsbG9jYXRpb24gZm9yICVkIE1iXG4iLAorCQkJCQkJ
c21wX3Byb2Nlc3Nvcl9pZCgpLCBtYnl0ZXMpOwogCQkJCX0KIAogCQkJCS8qICBTZXQgTVRSUiBj
YXBhYmlsaXR5IGZsYWcgaWYgYXBwcm9wcmlhdGUgKi8KQEAgLTE1NSw3ICsxNTUsOCBAQAogCQkJ
ICovCiAJCQlpZiAoYy0+eDg2X21vZGVsID49IDYgJiYgYy0+eDg2X21vZGVsIDw9IDEwKSB7CiAJ
CQkJaWYgKCFjcHVfaGFzKGMsIFg4Nl9GRUFUVVJFX1hNTSkpIHsKLQkJCQkJcHJpbnRrKEtFUk5f
SU5GTyAiRW5hYmxpbmcgZGlzYWJsZWQgSzcvU1NFIFN1cHBvcnQuXG4iKTsKKwkJCQkJcHJpbnRr
KEtFUk5fSU5GTyAiQ1BVJWQ6IEVuYWJsaW5nIGRpc2FibGVkIEs3L1NTRSBTdXBwb3J0LlxuIiwK
KwkJCQkJCXNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJCQkJCXJkbXNyKE1TUl9LN19IV0NSLCBsLCBo
KTsKIAkJCQkJbCAmPSB+MHgwMDAwODAwMDsKIAkJCQkJd3Jtc3IoTVNSX0s3X0hXQ1IsIGwsIGgp
OwpAQCAtMTcwLDggKzE3MSw4IEBACiAJCQlpZiAoKGMtPng4Nl9tb2RlbCA9PSA4ICYmIGMtPng4
Nl9tYXNrPj0xKSB8fCAoYy0+eDg2X21vZGVsID4gOCkpIHsKIAkJCQlyZG1zcihNU1JfSzdfQ0xL
X0NUTCwgbCwgaCk7CiAJCQkJaWYgKChsICYgMHhmZmYwMDAwMCkgIT0gMHgyMDAwMDAwMCkgewot
CQkJCQlwcmludGsgKCJDUFU6IENMS19DVEwgTVNSIHdhcyAleC4gUmVwcm9ncmFtbWluZyB0byAl
eFxuIiwgbCwKLQkJCQkJCSgobCAmIDB4MDAwZmZmZmYpfDB4MjAwMDAwMDApKTsKKwkJCQkJcHJp
bnRrICgiQ1BVJWQ6IENMS19DVEwgTVNSIHdhcyAleC4gUmVwcm9ncmFtbWluZyB0byAleFxuIiwK
KwkJCQkJCXNtcF9wcm9jZXNzb3JfaWQoKSwgbCwgKChsICYgMHgwMDBmZmZmZil8MHgyMDAwMDAw
MCkpOwogCQkJCQl3cm1zcihNU1JfSzdfQ0xLX0NUTCwgKGwgJiAweDAwMGZmZmZmKXwweDIwMDAw
MDAwLCBoKTsKIAkJCQl9CiAJCQl9CmRpZmYgLU51ciB1bnN0YS9hcmNoL2kzODYva2VybmVsL2Nw
dS9jZW50YXVyLmMgdW5zdGEubW9vL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2NlbnRhdXIuYwotLS0g
dW5zdGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY2VudGF1ci5jCTIwMDMtMDMtMTggMTk6MDE6MzUu
MDAwMDAwMDAwICswMTAwCisrKyB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5lbC9jcHUvY2VudGF1
ci5jCTIwMDMtMDYtMjYgMTY6NTU6MzMuMDAwMDAwMDAwICswMjAwCkBAIC0xLDYgKzEsNyBAQAog
I2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNs
dWRlIDxsaW51eC9iaXRvcHMuaD4KKyNpbmNsdWRlIDxsaW51eC9zbXAuaD4KICNpbmNsdWRlIDxh
c20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL21zci5oPgogI2luY2x1ZGUgPGFzbS9lODIw
Lmg+CkBAIC0zMjAsNyArMzIxLDcgQEAKIAkJCQluYW1lPSJDNiI7CiAJCQkJZmNyX3NldD1FQ1g4
fERTTUN8RURDVExCfEVNTVh8RVJFVFNUSzsKIAkJCQlmY3JfY2xyPURQREM7Ci0JCQkJcHJpbnRr
KEtFUk5fTk9USUNFICJEaXNhYmxpbmcgYnVnZ2VkIFRTQy5cbiIpOworCQkJCXByaW50ayhLRVJO
X05PVElDRSAiQ1BVJWQ6IERpc2FibGluZyBidWdnZWQgVFNDLlxuIiwgc21wX3Byb2Nlc3Nvcl9p
ZCgpKTsKIAkJCQljbGVhcl9iaXQoWDg2X0ZFQVRVUkVfVFNDLCBjLT54ODZfY2FwYWJpbGl0eSk7
CiAjaWZkZWYgQ09ORklHX1g4Nl9PT1NUT1JFCiAJCQkJY2VudGF1cl9jcmVhdGVfb3B0aW1hbF9t
Y3IoKTsKQEAgLTM5NCwxMCArMzk1LDEyIEBACiAJCQluZXdsbz0obG98ZmNyX3NldCkgJiAofmZj
cl9jbHIpOwogCiAJCQlpZiAobmV3bG8hPWxvKSB7Ci0JCQkJcHJpbnRrKEtFUk5fSU5GTyAiQ2Vu
dGF1ciBGQ1Igd2FzIDB4JVggbm93IDB4JVhcbiIsIGxvLCBuZXdsbyApOworCQkJCXByaW50ayhL
RVJOX0lORk8gIkNQVSVkOiBDZW50YXVyIEZDUiB3YXMgMHglWCBub3cgMHglWFxuIiwgCisJCQkJ
CXNtcF9wcm9jZXNzb3JfaWQoKSwgbG8sIG5ld2xvICk7CiAJCQkJd3Jtc3IoTVNSX0lEVF9GQ1Ix
LCBuZXdsbywgaGkgKTsKIAkJCX0gZWxzZSB7Ci0JCQkJcHJpbnRrKEtFUk5fSU5GTyAiQ2VudGF1
ciBGQ1IgaXMgMHglWFxuIixsbyk7CisJCQkJcHJpbnRrKEtFUk5fSU5GTyAiQ1BVJWQ6IENlbnRh
dXIgRkNSIGlzIDB4JVhcbiIsCisJCQkJCXNtcF9wcm9jZXNzb3JfaWQoKSwgbG8pOwogCQkJfQog
CQkJLyogRW11bGF0ZSBNVFJScyB1c2luZyBDZW50YXVyJ3MgTUNSLiAqLwogCQkJc2V0X2JpdChY
ODZfRkVBVFVSRV9DRU5UQVVSX01DUiwgYy0+eDg2X2NhcGFiaWxpdHkpOwpkaWZmIC1OdXIgdW5z
dGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY29tbW9uLmMgdW5zdGEubW9vL2FyY2gvaTM4Ni9rZXJu
ZWwvY3B1L2NvbW1vbi5jCi0tLSB1bnN0YS9hcmNoL2kzODYva2VybmVsL2NwdS9jb21tb24uYwky
MDAzLTA2LTI1IDE3OjA5OjEzLjAwMDAwMDAwMCArMDIwMAorKysgdW5zdGEubW9vL2FyY2gvaTM4
Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCTIwMDMtMDYtMjYgMTc6Mjg6MzguMDAwMDAwMDAwICswMjAw
CkBAIC04Myw4ICs4Myw4IEBACiAKIAlpZiAobiA+PSAweDgwMDAwMDA1KSB7CiAJCWNwdWlkKDB4
ODAwMDAwMDUsICZkdW1teSwgJmR1bW15LCAmZWN4LCAmZWR4KTsKLQkJcHJpbnRrKEtFUk5fSU5G
TyAiQ1BVOiBMMSBJIENhY2hlOiAlZEsgKCVkIGJ5dGVzL2xpbmUpLCBEIGNhY2hlICVkSyAoJWQg
Ynl0ZXMvbGluZSlcbiIsCi0JCQllZHg+PjI0LCBlZHgmMHhGRiwgZWN4Pj4yNCwgZWN4JjB4RkYp
OworCQlwcmludGsoS0VSTl9JTkZPICJDUFUlZDogTDEgSSBDYWNoZTogJWRLICglZCBieXRlcy9s
aW5lKSwgRCBjYWNoZSAlZEsgKCVkIGJ5dGVzL2xpbmUpXG4iLAorCQkJc21wX3Byb2Nlc3Nvcl9p
ZCgpLCBlZHg+PjI0LCBlZHgmMHhGRiwgZWN4Pj4yNCwgZWN4JjB4RkYpOwogCQljLT54ODZfY2Fj
aGVfc2l6ZT0oZWN4Pj4yNCkrKGVkeD4+MjQpOwkKIAl9CiAKQEAgLTEwNyw4ICsxMDcsOCBAQAog
CiAJYy0+eDg2X2NhY2hlX3NpemUgPSBsMnNpemU7CiAKLQlwcmludGsoS0VSTl9JTkZPICJDUFU6
IEwyIENhY2hlOiAlZEsgKCVkIGJ5dGVzL2xpbmUpXG4iLAotCSAgICAgICBsMnNpemUsIGVjeCAm
IDB4RkYpOworCXByaW50ayhLRVJOX0lORk8gIkNQVSVkOiBMMiBDYWNoZTogJWRLICglZCBieXRl
cy9saW5lKVxuIiwKKwkgICAgICAgc21wX3Byb2Nlc3Nvcl9pZCgpLCBsMnNpemUsIGVjeCAmIDB4
RkYpOwogfQogCiAvKiBOYW1pbmcgY29udmVudGlvbiBzaG91bGQgYmU6IDxOYW1lPiBbKDxDb2Rl
bmFtZT4pXSAqLwpAQCAtMjQ2LDcgKzI0Niw3IEBACiAJCXJkbXNyKE1TUl9JQTMyX0JCTF9DUl9D
VEwsbG8saGkpOwogCQlsbyB8PSAweDIwMDAwMDsKIAkJd3Jtc3IoTVNSX0lBMzJfQkJMX0NSX0NU
TCxsbyxoaSk7Ci0JCXByaW50ayhLRVJOX05PVElDRSAiQ1BVIHNlcmlhbCBudW1iZXIgZGlzYWJs
ZWQuXG4iKTsKKwkJcHJpbnRrKEtFUk5fTk9USUNFICJDUFUlZDogc2VyaWFsIG51bWJlciBkaXNh
YmxlZC5cbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJCWNsZWFyX2JpdChYODZfRkVBVFVSRV9Q
TiwgYy0+eDg2X2NhcGFiaWxpdHkpOwogCiAJCS8qIERpc2FibGluZyB0aGUgc2VyaWFsIG51bWJl
ciBtYXkgYWZmZWN0IHRoZSBjcHVpZCBsZXZlbCAqLwpAQCAtMzQxLDcgKzM0MSw4IEBACiAKIAkv
KiBOb3cgdGhlIGZlYXR1cmUgZmxhZ3MgYmV0dGVyIHJlZmxlY3QgYWN0dWFsIENQVSBmZWF0dXJl
cyEgKi8KIAotCXByaW50ayhLRVJOX0RFQlVHICJDUFU6ICAgICBBZnRlciBnZW5lcmljLCBjYXBz
OiAlMDhseCAlMDhseCAlMDhseCAlMDhseFxuIiwKKwlwcmludGsoS0VSTl9ERUJVRyAiQ1BVJWQ6
ICAgICBBZnRlciBnZW5lcmljLCBjYXBzOiAlMDhseCAlMDhseCAlMDhseCAlMDhseFxuIiwKKwkg
ICAgICAgc21wX3Byb2Nlc3Nvcl9pZCgpLAogCSAgICAgICBjLT54ODZfY2FwYWJpbGl0eVswXSwK
IAkgICAgICAgYy0+eDg2X2NhcGFiaWxpdHlbMV0sCiAJICAgICAgIGMtPng4Nl9jYXBhYmlsaXR5
WzJdLApAQCAtNDUyLDE1ICs0NTMsMTUgQEAKIAlzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAqdGhyZWFk
ID0gJmN1cnJlbnQtPnRocmVhZDsKIAogCWlmICh0ZXN0X2FuZF9zZXRfYml0KGNwdSwgJmNwdV9p
bml0aWFsaXplZCkpIHsKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiQ1BVIyVkIGFscmVhZHkgaW5p
dGlhbGl6ZWQhXG4iLCBjcHUpOworCQlwcmludGsoS0VSTl9XQVJOSU5HICJDUFUlZDogYWxyZWFk
eSBpbml0aWFsaXplZCFcbiIsIGNwdSk7CiAJCWZvciAoOzspIGxvY2FsX2lycV9lbmFibGUoKTsK
IAl9Ci0JcHJpbnRrKEtFUk5fSU5GTyAiSW5pdGlhbGl6aW5nIENQVSMlZFxuIiwgY3B1KTsKKwlw
cmludGsoS0VSTl9JTkZPICJDUFUlZDogSW5pdGlhbGl6aW5nXG4iLCBjcHUpOwogCiAJaWYgKGNw
dV9oYXNfdm1lIHx8IGNwdV9oYXNfdHNjIHx8IGNwdV9oYXNfZGUpCiAJCWNsZWFyX2luX2NyNChY
ODZfQ1I0X1ZNRXxYODZfQ1I0X1BWSXxYODZfQ1I0X1RTRHxYODZfQ1I0X0RFKTsKIAlpZiAodHNj
X2Rpc2FibGUgJiYgY3B1X2hhc190c2MpIHsKLQkJcHJpbnRrKEtFUk5fTk9USUNFICJEaXNhYmxp
bmcgVFNDLi4uXG4iKTsKKwkJcHJpbnRrKEtFUk5fTk9USUNFICJDUFUlZDogRGlzYWJsaW5nIFRT
Qy4uLlxuIiwgY3B1KTsKIAkJLyoqKiogRklYLUhQQTogRE9FUyBUSElTIFJFQUxMWSBCRUxPTkcg
SEVSRT8gKioqKi8KIAkJY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1RTQywgYm9vdF9jcHVfZGF0YS54
ODZfY2FwYWJpbGl0eSk7CiAJCXNldF9pbl9jcjQoWDg2X0NSNF9UU0QpOwpkaWZmIC1OdXIgdW5z
dGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3lyaXguYyB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5l
bC9jcHUvY3lyaXguYwotLS0gdW5zdGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3lyaXguYwkyMDAz
LTA2LTI2IDE2OjIyOjM4LjAwMDAwMDAwMCArMDIwMAorKysgdW5zdGEubW9vL2FyY2gvaTM4Ni9r
ZXJuZWwvY3B1L2N5cml4LmMJMjAwMy0wNi0yNiAxNjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKQEAg
LTk5LDcgKzk5LDggQEAKIAkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogCiAJCWlmIChjY3I1
ICYgMikgeyAvKiBwb3NzaWJsZSB3cm9uZyBjYWxpYnJhdGlvbiBkb25lICovCi0JCQlwcmludGso
S0VSTl9JTkZPICJSZWNhbGlicmF0aW5nIGRlbGF5IGxvb3Agd2l0aCBTTE9QIGJpdCByZXNldFxu
Iik7CisJCQlwcmludGsoS0VSTl9JTkZPICJDUFUlZDogUmVjYWxpYnJhdGluZyBkZWxheSBsb29w
IHdpdGggU0xPUCBiaXQgcmVzZXRcbiIsCisJCQkJc21wX3Byb2Nlc3Nvcl9pZCgpKTsKIAkJCWNh
bGlicmF0ZV9kZWxheSgpOwogCQkJYy0+bG9vcHNfcGVyX2ppZmZ5ID0gbG9vcHNfcGVyX2ppZmZ5
OwogCQl9CkBAIC0xMTIsNyArMTEzLDggQEAKICNpZmRlZiBDT05GSUdfT09TVE9SRQogCXU4IGNj
cjM7CiAKLQlwcmludGsoS0VSTl9JTkZPICJFbmFibGUgTWVtb3J5IGFjY2VzcyByZW9yZGVyIG9u
IEN5cml4L05TQyBwcm9jZXNzb3IuXG4iKTsKKwlwcmludGsoS0VSTl9JTkZPICJDUFUlZDogRW5h
YmxlIE1lbW9yeSBhY2Nlc3MgcmVvcmRlciBvbiBDeXJpeC9OU0MgcHJvY2Vzc29yLlxuIiwKKwkJ
c21wX3Byb2Nlc3Nvcl9pZCgpKTsKIAljY3IzID0gZ2V0Q3g4NihDWDg2X0NDUjMpOwogCXNldEN4
ODYoQ1g4Nl9DQ1IzLCAoY2NyMyAmIDB4MGYpIHwgMHgxMCk7IC8qIGVuYWJsZSBNQVBFTqAgKi8K
IApAQCAtMjY3LDcgKzI2OSw4IEBACiAJCSAgIFZTQTEgd2Ugd29yayBhcm91bmQgaG93ZXZlci4K
IAkJKi8KIAotCQlwcmludGsoS0VSTl9JTkZPICJXb3JraW5nIGFyb3VuZCBDeXJpeCBNZWRpYUdY
IHZpcnR1YWwgRE1BIGJ1Z3MuXG4iKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiQ1BVJWQ6IFdvcmtp
bmcgYXJvdW5kIEN5cml4IE1lZGlhR1ggdmlydHVhbCBETUEgYnVncy5cbiIsCisJCQlzbXBfcHJv
Y2Vzc29yX2lkKCkpOwogCQlpc2FfZG1hX2JyaWRnZV9idWdneSA9IDI7CiAjZW5kaWYJCQogCQlj
LT54ODZfY2FjaGVfc2l6ZT0xNjsJLyogWWVwIDE2SyBpbnRlZ3JhdGVkIGNhY2hlIHRoYXRzIGl0
ICovCkxvcyBmaWNoZXJvcyBiaW5hcmlvcyB1bnN0YS9hcmNoL2kzODYva2VybmVsL2NwdS8uY3ly
aXguYy5zd3AgeSB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5lbC9jcHUvLmN5cml4LmMuc3dwIHNv
biBkaXN0aW50b3MKZGlmZiAtTnVyIHVuc3RhL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2ludGVsLmMg
dW5zdGEubW9vL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2ludGVsLmMKLS0tIHVuc3RhL2FyY2gvaTM4
Ni9rZXJuZWwvY3B1L2ludGVsLmMJMjAwMy0wNi0yNiAxNjoyMjozOC4wMDAwMDAwMDAgKzAyMDAK
KysrIHVuc3RhLm1vby9hcmNoL2kzODYva2VybmVsL2NwdS9pbnRlbC5jCTIwMDMtMDYtMjYgMTY6
NTU6NTcuMDAwMDAwMDAwICswMjAwCkBAIC02MSwxMCArNjEsMTEgQEAKIAkKIAlpZigoaWRlbnQm
MTUpIDwgOCkKIAl7Ci0JCXByaW50ayhLRVJOX0lORk8gIlBlbnRpdW0gUHJvIHdpdGggRXJyYXRh
IzUwIGRldGVjdGVkLiBUYWtpbmcgZXZhc2l2ZSBhY3Rpb24uXG4iKTsKKwkJcHJpbnRrKEtFUk5f
SU5GTyAiQ1BVJWQ6IFBlbnRpdW0gUHJvIHdpdGggRXJyYXRhIzUwIGRldGVjdGVkLiBUYWtpbmcg
ZXZhc2l2ZSBhY3Rpb24uXG4iLAorCQkJc21wX3Byb2Nlc3Nvcl9pZCgpKTsKIAkJcmV0dXJuIDE7
CiAJfQotCXByaW50ayhLRVJOX0lORk8gIllvdXIgUGVudGl1bSBQcm8gc2VlbXMgb2suXG4iKTsK
KwlwcmludGsoS0VSTl9JTkZPICJDUFUlZDogWW91ciBQZW50aXVtIFBybyBzZWVtcyBvay5cbiIs
IHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJcmV0dXJuIDA7CiB9CiAJCkBAIC0xMzksOCArMTQwLDEw
IEBACiAJaWYgKChjLT54ODYgPT0gMTUpICYmIChjLT54ODZfbW9kZWwgPT0gMSkgJiYgKGMtPng4
Nl9tYXNrID09IDEpKSB7CiAJCXJkbXNyIChNU1JfSUEzMl9NSVNDX0VOQUJMRSwgbG8sIGhpKTsK
IAkJaWYgKChsbyAmICgxPDw5KSkgPT0gMCkgewotCQkJcHJpbnRrIChLRVJOX0lORk8gIkNQVTog
QzAgc3RlcHBpbmcgUDQgWGVvbiBkZXRlY3RlZC5cbiIpOwotCQkJcHJpbnRrIChLRVJOX0lORk8g
IkNQVTogRGlzYWJsaW5nIGhhcmR3YXJlIHByZWZldGNoaW5nIChFcnJhdGEgMDM3KVxuIik7CisJ
CQlwcmludGsgKEtFUk5fSU5GTyAiQ1BVJWQ6IEMwIHN0ZXBwaW5nIFA0IFhlb24gZGV0ZWN0ZWQu
XG4iLAorCQkJCXNtcF9wcm9jZXNzb3JfaWQoKSk7CisJCQlwcmludGsgKEtFUk5fSU5GTyAiQ1BV
JWQ6IERpc2FibGluZyBoYXJkd2FyZSBwcmVmZXRjaGluZyAoRXJyYXRhIDAzNylcbiIsCisJCQkJ
c21wX3Byb2Nlc3Nvcl9pZCgpKTsKIAkJCWxvIHw9ICgxPDw5KTsJLyogRGlzYWJsZSBodyBwcmVm
ZXRjaGluZyAqLwogCQkJd3Jtc3IgKE1TUl9JQTMyX01JU0NfRU5BQkxFLCBsbywgaGkpOwogCQl9
CkBAIC0xNjYsNyArMTY5LDggQEAKIAkJYy0+ZjAwZl9idWcgPSAxOwogCQlpZiAoICFmMDBmX3dv
cmthcm91bmRfZW5hYmxlZCApIHsKIAkJCXRyYXBfaW5pdF9mMDBmX2J1ZygpOwotCQkJcHJpbnRr
KEtFUk5fTk9USUNFICJJbnRlbCBQZW50aXVtIHdpdGggRjAgMEYgYnVnIC0gd29ya2Fyb3VuZCBl
bmFibGVkLlxuIik7CisJCQlwcmludGsoS0VSTl9OT1RJQ0UgIkNQVSVkOiBJbnRlbCBQZW50aXVt
IHdpdGggRjAgMEYgYnVnIC0gd29ya2Fyb3VuZCBlbmFibGVkLlxuIiwKKwkJCQlzbXBfcHJvY2Vz
c29yX2lkKCkpOwogCQkJZjAwZl93b3JrYXJvdW5kX2VuYWJsZWQgPSAxOwogCQl9CiAJfQpAQCAt
MjI2LDE1ICsyMzAsMTYgQEAKIAkJfQogCiAJCWlmICggdHJhY2UgKQotCQkJcHJpbnRrIChLRVJO
X0lORk8gIkNQVTogVHJhY2UgY2FjaGU6ICVkSyB1b3BzIiwgdHJhY2UpOworCQkJcHJpbnRrIChL
RVJOX0lORk8gIkNQVSVkOiBUcmFjZSBjYWNoZTogJWRLIHVvcHMiLAorCQkJCXNtcF9wcm9jZXNz
b3JfaWQoKSwgdHJhY2UpOwogCQllbHNlIGlmICggbDFpICkKLQkJCXByaW50ayAoS0VSTl9JTkZP
ICJDUFU6IEwxIEkgY2FjaGU6ICVkSyIsIGwxaSk7CisJCQlwcmludGsgKEtFUk5fSU5GTyAiQ1BV
JWQ6IEwxIEkgY2FjaGU6ICVkSyIsIHNtcF9wcm9jZXNzb3JfaWQoKSwgbDFpKTsKIAkJaWYgKCBs
MWQgKQogCQkJcHJpbnRrKCIsIEwxIEQgY2FjaGU6ICVkS1xuIiwgbDFkKTsKIAkJaWYgKCBsMiAp
Ci0JCQlwcmludGsoS0VSTl9JTkZPICJDUFU6IEwyIGNhY2hlOiAlZEtcbiIsIGwyKTsKKwkJCXBy
aW50ayhLRVJOX0lORk8gIkNQVSVkOiBMMiBjYWNoZTogJWRLXG4iLCBzbXBfcHJvY2Vzc29yX2lk
KCksIGwyKTsKIAkJaWYgKCBsMyApCi0JCQlwcmludGsoS0VSTl9JTkZPICJDUFU6IEwzIGNhY2hl
OiAlZEtcbiIsIGwzKTsKKwkJCXByaW50ayhLRVJOX0lORk8gIkNQVSVkOiBMMyBjYWNoZTogJWRL
XG4iLCBzbXBfcHJvY2Vzc29yX2lkKCksIGwzKTsKIAogCQkvKgogCQkgKiBUaGlzIGFzc3VtZXMg
dGhlIEwzIGNhY2hlIGlzIHNoYXJlZDsgaXQgdHlwaWNhbGx5IGxpdmVzIGluCkBAIC0yOTMsNyAr
Mjk4LDcgQEAKIAkJc21wX251bV9zaWJsaW5ncyA9IChlYnggJiAweGZmMDAwMCkgPj4gMTY7CiAK
IAkJaWYgKHNtcF9udW1fc2libGluZ3MgPT0gMSkgewotCQkJcHJpbnRrKEtFUk5fSU5GTyAgIkNQ
VTogSHlwZXItVGhyZWFkaW5nIGlzIGRpc2FibGVkXG4iKTsKKwkJCXByaW50ayhLRVJOX0lORk8g
ICJDUFUlZDogSHlwZXItVGhyZWFkaW5nIGlzIGRpc2FibGVkXG4iLCBjcHUpOwogCQl9IGVsc2Ug
aWYgKHNtcF9udW1fc2libGluZ3MgPiAxICkgewogCQkJaW5kZXhfbHNiID0gMDsKIAkJCWluZGV4
X21zYiA9IDMxOwpAQCAtMzAzLDcgKzMwOCw4IEBACiAJCQkgKi8KICNkZWZpbmUgTlJfU0lCTElO
R1MJMgogCQkJaWYgKHNtcF9udW1fc2libGluZ3MgIT0gTlJfU0lCTElOR1MpIHsKLQkJCQlwcmlu
dGsoS0VSTl9XQVJOSU5HICJDUFU6IFVuc3VwcG9ydGVkIG51bWJlciBvZiB0aGUgc2libGluZ3Mg
JWQiLCBzbXBfbnVtX3NpYmxpbmdzKTsKKwkJCQlwcmludGsoS0VSTl9XQVJOSU5HICJDUFUlZDog
VW5zdXBwb3J0ZWQgbnVtYmVyIG9mIHRoZSBzaWJsaW5ncyAlZCIsCisJCQkJCWNwdSwgc21wX251
bV9zaWJsaW5ncyk7CiAJCQkJc21wX251bV9zaWJsaW5ncyA9IDE7CiAJCQkJZ290byB0b29fbWFu
eV9zaWJsaW5nczsKIAkJCX0KQEAgLTMyMiw4ICszMjgsOCBAQAogCQkJaW5pdGlhbF9hcGljX2lk
ID0gZWJ4ID4+IDI0ICYgMHhmZjsKIAkJCXBoeXNfcHJvY19pZFtjcHVdID0gaW5pdGlhbF9hcGlj
X2lkID4+IGluZGV4X21zYjsKIAotCQkJcHJpbnRrKEtFUk5fSU5GTyAgIkNQVTogUGh5c2ljYWwg
UHJvY2Vzc29yIElEOiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaHlz
X3Byb2NfaWRbY3B1XSk7CisJCQlwcmludGsoS0VSTl9JTkZPICAiQ1BVJWQ6IFBoeXNpY2FsIFBy
b2Nlc3NvciBJRDogJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LCBw
aHlzX3Byb2NfaWRbY3B1XSk7CiAJCX0KIAogCX0KZGlmZiAtTnVyIHVuc3RhL2FyY2gvaTM4Ni9r
ZXJuZWwvY3B1L21jaGVjay9rNy5jIHVuc3RhLm1vby9hcmNoL2kzODYva2VybmVsL2NwdS9tY2hl
Y2svazcuYwotLS0gdW5zdGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvbWNoZWNrL2s3LmMJMjAwMy0w
NS0wNSAyMTowMDowMi4wMDAwMDAwMDAgKzAyMDAKKysrIHVuc3RhLm1vby9hcmNoL2kzODYva2Vy
bmVsL2NwdS9tY2hlY2svazcuYwkyMDAzLTA2LTI2IDE3OjEzOjI1LjAwMDAwMDAwMCArMDIwMApA
QCAtMjgsNyArMjgsNyBAQAogCWlmIChtY2dzdGwgJiAoMTw8MCkpCS8qIFJlY292ZXJhYmxlID8g
Ki8KIAkJcmVjb3Zlcj0wOwogCi0JcHJpbnRrIChLRVJOX0VNRVJHICJDUFUgJWQ6IE1hY2hpbmUg
Q2hlY2sgRXhjZXB0aW9uOiAlMDh4JTA4eFxuIiwKKwlwcmludGsgKEtFUk5fRU1FUkcgIkNQVSVk
OiBNYWNoaW5lIENoZWNrIEV4Y2VwdGlvbjogJTA4eCUwOHhcbiIsCiAJCXNtcF9wcm9jZXNzb3Jf
aWQoKSwgbWNnc3RoLCBtY2dzdGwpOwogCiAJZm9yIChpPTA7IGk8bnJfbWNlX2JhbmtzOyBpKysp
IHsKQEAgLTM4LDcgKzM4LDggQEAKIAkJCQlyZWNvdmVyIHw9IDE7CiAJCQlpZiAoaGlnaCAmICgx
PDwyNSkpCiAJCQkJcmVjb3ZlciB8PSAyOwotCQkJcHJpbnRrIChLRVJOX0VNRVJHICJCYW5rICVk
OiAlMDh4JTA4eCIsIGksIGhpZ2gsIGxvdyk7CisJCQlwcmludGsgKEtFUk5fRU1FUkcgIkNQVSVk
OiBCYW5rICVkOiAlMDh4JTA4eCIsCisJCQkJc21wX3Byb2Nlc3Nvcl9pZCgpLCBpLCBoaWdoLCBs
b3cpOwogCQkJaGlnaCAmPSB+KDE8PDMxKTsKIAkJCWlmIChoaWdoICYgKDE8PDI3KSkgewogCQkJ
CXJkbXNyIChNU1JfSUEzMl9NQzBfTUlTQytpKjQsIGFsb3csIGFoaWdoKTsKQEAgLTU3LDcgKzU4
LDcgQEAKIAl9CiAKIAlpZiAocmVjb3ZlciYyKQotCQlwYW5pYyAoIkNQVSBjb250ZXh0IGNvcnJ1
cHQiKTsKKwkJcGFuaWMgKCJDUFUlZDogY29udGV4dCBjb3JydXB0Iiwgc21wX3Byb2Nlc3Nvcl9p
ZCgpKTsKIAlpZiAocmVjb3ZlciYxKQogCQlwYW5pYyAoIlVuYWJsZSB0byBjb250aW51ZSIpOwog
CXByaW50ayAoS0VSTl9FTUVSRyAiQXR0ZW1wdGluZyB0byBjb250aW51ZS5cbiIpOwpAQCAtNzUs
NyArNzYsOCBAQAogCW1hY2hpbmVfY2hlY2tfdmVjdG9yID0gazdfbWFjaGluZV9jaGVjazsKIAl3
bWIoKTsKIAotCXByaW50ayAoS0VSTl9JTkZPICJJbnRlbCBtYWNoaW5lIGNoZWNrIGFyY2hpdGVj
dHVyZSBzdXBwb3J0ZWQuXG4iKTsKKwlwcmludGsgKEtFUk5fSU5GTyAiQ1BVJWQ6IEludGVsIG1h
Y2hpbmUgY2hlY2sgYXJjaGl0ZWN0dXJlIHN1cHBvcnRlZC5cbiIsCisJCXNtcF9wcm9jZXNzb3Jf
aWQoKSk7CiAJcmRtc3IgKE1TUl9JQTMyX01DR19DQVAsIGwsIGgpOwogCWlmIChsICYgKDE8PDgp
KQkvKiBDb250cm9sIHJlZ2lzdGVyIHByZXNlbnQgPyAqLwogCQl3cm1zciAoTVNSX0lBMzJfTUNH
X0NUTCwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZik7CkBAIC04Nyw2ICs4OSw2IEBACiAJfQogCiAJ
c2V0X2luX2NyNCAoWDg2X0NSNF9NQ0UpOwotCXByaW50ayAoS0VSTl9JTkZPICJJbnRlbCBtYWNo
aW5lIGNoZWNrIHJlcG9ydGluZyBlbmFibGVkIG9uIENQVSMlZC5cbiIsCisJcHJpbnRrIChLRVJO
X0lORk8gIkNQVSVkOiBJbnRlbCBtYWNoaW5lIGNoZWNrIHJlcG9ydGluZyBlbmFibGVkLlxuIiwK
IAkJc21wX3Byb2Nlc3Nvcl9pZCgpKTsKIH0KZGlmZiAtTnVyIHVuc3RhL2FyY2gvaTM4Ni9rZXJu
ZWwvY3B1L21jaGVjay9tY2UuYyB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5lbC9jcHUvbWNoZWNr
L21jZS5jCi0tLSB1bnN0YS9hcmNoL2kzODYva2VybmVsL2NwdS9tY2hlY2svbWNlLmMJMjAwMi0x
Mi0xNiAwMzowODoxNC4wMDAwMDAwMDAgKzAxMDAKKysrIHVuc3RhLm1vby9hcmNoL2kzODYva2Vy
bmVsL2NwdS9tY2hlY2svbWNlLmMJMjAwMy0wNi0yNiAxNjozOToxMC4wMDAwMDAwMDAgKzAyMDAK
QEAgLTIwLDcgKzIwLDggQEAKIC8qIEhhbmRsZSB1bmNvbmZpZ3VyZWQgaW50MTggKHNob3VsZCBu
ZXZlciBoYXBwZW4pICovCiBzdGF0aWMgdm9pZCB1bmV4cGVjdGVkX21hY2hpbmVfY2hlY2soc3Ry
dWN0IHB0X3JlZ3MgKiByZWdzLCBsb25nIGVycm9yX2NvZGUpCiB7CQotCXByaW50ayhLRVJOX0VS
UiAiQ1BVIyVkOiBVbmV4cGVjdGVkIGludDE4IChNYWNoaW5lIENoZWNrKS5cbiIsIHNtcF9wcm9j
ZXNzb3JfaWQoKSk7CisJcHJpbnRrKEtFUk5fRVJSICJDUFUlZDogVW5leHBlY3RlZCBpbnQxOCAo
TWFjaGluZSBDaGVjaykuXG4iLAorCQlzbXBfcHJvY2Vzc29yX2lkKCkpOwogfQogCiAvKiBDYWxs
IHRoZSBpbnN0YWxsZWQgbWFjaGluZSBjaGVjayBoYW5kbGVyIGZvciB0aGlzIENQVSBzZXR1cC4g
Ki8KZGlmZiAtTnVyIHVuc3RhL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L21jaGVjay9ub24tZmF0YWwu
YyB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5lbC9jcHUvbWNoZWNrL25vbi1mYXRhbC5jCi0tLSB1
bnN0YS9hcmNoL2kzODYva2VybmVsL2NwdS9tY2hlY2svbm9uLWZhdGFsLmMJMjAwMy0wNC0yMCAx
MzowMDoxOC4wMDAwMDAwMDAgKzAyMDAKKysrIHVuc3RhLm1vby9hcmNoL2kzODYva2VybmVsL2Nw
dS9tY2hlY2svbm9uLWZhdGFsLmMJMjAwMy0wNi0yNiAxNjozOToyNy4wMDAwMDAwMDAgKzAyMDAK
QEAgLTM0LDkgKzM0LDEwIEBACiAJCXJkbXNyIChNU1JfSUEzMl9NQzBfU1RBVFVTK2kqNCwgbG93
LCBoaWdoKTsKIAogCQlpZiAoaGlnaCAmICgxPDwzMSkpIHsKLQkJCXByaW50ayAoS0VSTl9FTUVS
RyAiTUNFOiBUaGUgaGFyZHdhcmUgcmVwb3J0cyBhIG5vbiBmYXRhbCwgY29ycmVjdGFibGUgaW5j
aWRlbnQgb2NjdXJyZWQgb24gQ1BVICVkLlxuIiwKKwkJCXByaW50ayAoS0VSTl9FTUVSRyAiQ1BV
JWQ6IENvcnJlY3RhYmxlIGluY2lkZW50OyBNQ0U6IFRoZSBoYXJkd2FyZSByZXBvcnRzIGEgbm9u
IGZhdGFsLlxuIiwKIAkJCQlzbXBfcHJvY2Vzc29yX2lkKCkpOwotCQkJcHJpbnRrIChLRVJOX0VN
RVJHICJCYW5rICVkOiAlMDh4JTA4eFxuIiwgaSwgaGlnaCwgbG93KTsKKwkJCXByaW50ayAoS0VS
Tl9FTUVSRyAiQ1BVJWQ6IEJhbmsgJWQ6ICUwOHglMDh4XG4iLAorCQkJCXNtcF9wcm9jZXNzb3Jf
aWQoKSwgaSwgaGlnaCwgbG93KTsKIAogCQkJLyogU2NydWIgdGhlIGVycm9yIHNvIHdlIGRvbid0
IHBpY2sgaXQgdXAgaW4gTUNFX1JBVEUgc2Vjb25kcyB0aW1lLiAqLwogCQkJd3Jtc3IgKE1TUl9J
QTMyX01DMF9TVEFUVVMraSo0LCAwVUwsIDBVTCk7CkBAIC03Nyw3ICs3OCw4IEBACiAJCW1jZV90
aW1lci5mdW5jdGlvbiA9ICZtY2VfdGltZXJmdW5jOwogCQlhZGRfdGltZXIgKCZtY2VfdGltZXIp
OwogCQl0aW1lcnNldCA9IDE7Ci0JCXByaW50ayhLRVJOX0lORk8gIk1hY2hpbmUgY2hlY2sgZXhj
ZXB0aW9uIHBvbGxpbmcgdGltZXIgc3RhcnRlZC5cbiIpOworCQlwcmludGsoS0VSTl9JTkZPICJD
UFUlZDogTWFjaGluZSBjaGVjayBleGNlcHRpb24gcG9sbGluZyB0aW1lciBzdGFydGVkLlxuIiwK
KwkJCXNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJfQogCXJldHVybiAwOwogfQpkaWZmIC1OdXIgdW5z
dGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvbWNoZWNrL3A0LmMgdW5zdGEubW9vL2FyY2gvaTM4Ni9r
ZXJuZWwvY3B1L21jaGVjay9wNC5jCi0tLSB1bnN0YS9hcmNoL2kzODYva2VybmVsL2NwdS9tY2hl
Y2svcDQuYwkyMDAzLTA0LTIwIDEzOjAwOjE4LjAwMDAwMDAwMCArMDIwMAorKysgdW5zdGEubW9v
L2FyY2gvaTM4Ni9rZXJuZWwvY3B1L21jaGVjay9wNC5jCTIwMDMtMDYtMjYgMTY6NTc6MTUuMDAw
MDAwMDAwICswMjAwCkBAIC0zOCw3ICszOCw3IEBACiAjaWZkZWYgQ09ORklHX1g4Nl9NQ0VfUDRU
SEVSTUFMCiBzdGF0aWMgdm9pZCB1bmV4cGVjdGVkX3RoZXJtYWxfaW50ZXJydXB0KHN0cnVjdCBw
dF9yZWdzICpyZWdzKQogewkKLQlwcmludGsoS0VSTl9FUlIgIkNQVSMlZDogVW5leHBlY3RlZCBM
VlQgVE1SIGludGVycnVwdCFcbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisJcHJpbnRrKEtFUk5f
RVJSICJDUFUlZDogVW5leHBlY3RlZCBMVlQgVE1SIGludGVycnVwdCFcbiIsIHNtcF9wcm9jZXNz
b3JfaWQoKSk7CiB9CiAKIC8qIFA0L1hlb24gVGhlcm1hbCB0cmFuc2l0aW9uIGludGVycnVwdCBo
YW5kbGVyICovCkBAIC01MSwxMCArNTEsMTAgQEAKIAogCXJkbXNyIChNU1JfSUEzMl9USEVSTV9T
VEFUVVMsIGwsIGgpOwogCWlmIChsICYgMSkgewotCQlwcmludGsoS0VSTl9FTUVSRyAiQ1BVIyVk
OiBUZW1wZXJhdHVyZSBhYm92ZSB0aHJlc2hvbGRcbiIsIGNwdSk7Ci0JCXByaW50ayhLRVJOX0VN
RVJHICJDUFUjJWQ6IFJ1bm5pbmcgaW4gbW9kdWxhdGVkIGNsb2NrIG1vZGVcbiIsIGNwdSk7CisJ
CXByaW50ayhLRVJOX0VNRVJHICJDUFUlZDogVGVtcGVyYXR1cmUgYWJvdmUgdGhyZXNob2xkXG4i
LCBjcHUpOworCQlwcmludGsoS0VSTl9FTUVSRyAiQ1BVJWQ6IFJ1bm5pbmcgaW4gbW9kdWxhdGVk
IGNsb2NrIG1vZGVcbiIsIGNwdSk7CiAJfSBlbHNlIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAiQ1BV
IyVkOiBUZW1wZXJhdHVyZS9zcGVlZCBub3JtYWxcbiIsIGNwdSk7CisJCXByaW50ayhLRVJOX0lO
Rk8gIkNQVSVkOiBUZW1wZXJhdHVyZS9zcGVlZCBub3JtYWxcbiIsIGNwdSk7CiAJfQogfQogCkBA
IC04OSwxMyArODksMTMgQEAKIAlyZG1zciAoTVNSX0lBMzJfTUlTQ19FTkFCTEUsIGwsIGgpOwog
CWggPSBhcGljX3JlYWQoQVBJQ19MVlRUSE1SKTsKIAlpZiAoKGwgJiAoMTw8MykpICYmIChoICYg
QVBJQ19ETV9TTUkpKSB7Ci0JCXByaW50ayhLRVJOX0RFQlVHICJDUFUjJWQ6IFRoZXJtYWwgbW9u
aXRvcmluZyBoYW5kbGVkIGJ5IFNNSVxuIiwgY3B1KTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgIkNQ
VSVkOiBUaGVybWFsIG1vbml0b3JpbmcgaGFuZGxlZCBieSBTTUlcbiIsIGNwdSk7CiAJCXJldHVy
bjsgLyogLUVCVVNZICovCiAJfQogCiAJLyogY2hlY2sgd2hldGhlciBhIHZlY3RvciBhbHJlYWR5
IGV4aXN0cywgdGVtcG9yYXJpbHkgbWFza2VkPyAqLwkKIAlpZiAoaCAmIEFQSUNfVkVDVE9SX01B
U0spIHsKLQkJcHJpbnRrKEtFUk5fREVCVUcgIkNQVSMlZDogVGhlcm1hbCBMVlQgdmVjdG9yICgl
I3gpIGFscmVhZHkgaW5zdGFsbGVkXG4iLAorCQlwcmludGsoS0VSTl9ERUJVRyAiQ1BVJWQ6IFRo
ZXJtYWwgTFZUIHZlY3RvciAoJSN4KSBhbHJlYWR5IGluc3RhbGxlZFxuIiwKIAkJCWNwdSwgKGgg
JiBBUElDX1ZFQ1RPUl9NQVNLKSk7CiAJCXJldHVybjsgLyogLUVCVVNZICovCiAJfQpAQCAtMTE2
LDcgKzExNiw3IEBACiAJCiAJbCA9IGFwaWNfcmVhZCAoQVBJQ19MVlRUSE1SKTsKIAlhcGljX3dy
aXRlX2Fyb3VuZCAoQVBJQ19MVlRUSE1SLCBsICYgfkFQSUNfTFZUX01BU0tFRCk7Ci0JcHJpbnRr
IChLRVJOX0lORk8gIkNQVSMlZDogVGhlcm1hbCBtb25pdG9yaW5nIGVuYWJsZWRcbiIsIGNwdSk7
CisJcHJpbnRrIChLRVJOX0lORk8gIkNQVSVkOiBUaGVybWFsIG1vbml0b3JpbmcgZW5hYmxlZFxu
IiwgY3B1KTsKIAlyZXR1cm47CiB9CiAjZW5kaWYgLyogQ09ORklHX1g4Nl9NQ0VfUDRUSEVSTUFM
ICovCkBAIC0xNjAsNyArMTYwLDcgQEAKIAlpZiAobWNnc3RsICYgKDE8PDApKQkvKiBSZWNvdmVy
YWJsZSA/ICovCiAJCXJlY292ZXI9MDsKIAotCXByaW50ayAoS0VSTl9FTUVSRyAiQ1BVICVkOiBN
YWNoaW5lIENoZWNrIEV4Y2VwdGlvbjogJTA4eCUwOHhcbiIsCisJcHJpbnRrIChLRVJOX0VNRVJH
ICJDUFUlZDogTWFjaGluZSBDaGVjayBFeGNlcHRpb246ICUwOHglMDh4XG4iLAogCQlzbXBfcHJv
Y2Vzc29yX2lkKCksIG1jZ3N0aCwgbWNnc3RsKTsKIAogCWlmIChpbnRlbF9nZXRfZXh0ZW5kZWRf
bXNycygmZGJnKSkgewpAQCAtMTc5LDcgKzE3OSw4IEBACiAJCQkJcmVjb3ZlciB8PSAxOwogCQkJ
aWYgKGhpZ2ggJiAoMTw8MjUpKQogCQkJCXJlY292ZXIgfD0gMjsKLQkJCXByaW50ayAoS0VSTl9F
TUVSRyAiQmFuayAlZDogJTA4eCUwOHgiLCBpLCBoaWdoLCBsb3cpOworCQkJcHJpbnRrIChLRVJO
X0VNRVJHICJDUFUlZDogQmFuayAlZDogJTA4eCUwOHgiLAorCQkJCXNtcF9wcm9jZXNzb3JfaWQo
KSwgaSwgaGlnaCwgbG93KTsKIAkJCWhpZ2ggJj0gfigxPDwzMSk7CiAJCQlpZiAoaGlnaCAmICgx
PDwyNykpIHsKIAkJCQlyZG1zciAoTVNSX0lBMzJfTUMwX01JU0MraSo0LCBhbG93LCBhaGlnaCk7
CkBAIC0xOTQsMTEgKzE5NSwxMSBAQAogCX0KIAogCWlmIChyZWNvdmVyICYgMikKLQkJcGFuaWMg
KCJDUFUgY29udGV4dCBjb3JydXB0Iik7CisJCXBhbmljICgiQ1BVJWQ6IENvbnRleHQgY29ycnVw
dCIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJaWYgKHJlY292ZXIgJiAxKQotCQlwYW5pYyAoIlVu
YWJsZSB0byBjb250aW51ZSIpOworCQlwYW5pYyAoIkNQVSVkOiBVbmFibGUgdG8gY29udGludWUi
LCBzbXBfcHJvY2Vzc29yX2lkKCkpOwogCi0JcHJpbnRrKEtFUk5fRU1FUkcgIkF0dGVtcHRpbmcg
dG8gY29udGludWUuXG4iKTsKKwlwcmludGsoS0VSTl9FTUVSRyAiQ1BVJWQ6IEF0dGVtcHRpbmcg
dG8gY29udGludWUuXG4iLCBzbXBfcHJvY2Vzc29yX2lkKCkpOwogCS8qIAogCSAqIERvIG5vdCBj
bGVhciB0aGUgTVNSX0lBMzJfTUNpX1NUQVRVUyBpZiB0aGUgZXJyb3IgaXMgbm90IAogCSAqIHJl
Y292ZXJhYmxlL2NvbnRpbnVhYmxlLlRoaXMgd2lsbCBhbGxvdyBCSU9TIHRvIGxvb2sgYXQgdGhl
IE1TUnMKQEAgLTIyOCw3ICsyMjksOCBAQAogCW1hY2hpbmVfY2hlY2tfdmVjdG9yID0gaW50ZWxf
bWFjaGluZV9jaGVjazsKIAl3bWIoKTsKIAotCXByaW50ayAoS0VSTl9JTkZPICJJbnRlbCBtYWNo
aW5lIGNoZWNrIGFyY2hpdGVjdHVyZSBzdXBwb3J0ZWQuXG4iKTsKKwlwcmludGsgKEtFUk5fSU5G
TyAiQ1BVJWQ6IEludGVsIG1hY2hpbmUgY2hlY2sgYXJjaGl0ZWN0dXJlIHN1cHBvcnRlZC5cbiIs
CisJCXNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJcmRtc3IgKE1TUl9JQTMyX01DR19DQVAsIGwsIGgp
OwogCWlmIChsICYgKDE8PDgpKQkvKiBDb250cm9sIHJlZ2lzdGVyIHByZXNlbnQgPyAqLwogCQl3
cm1zciAoTVNSX0lBMzJfTUNHX0NUTCwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZik7CkBAIC0yNDAs
NyArMjQyLDcgQEAKIAl9CiAKIAlzZXRfaW5fY3I0IChYODZfQ1I0X01DRSk7Ci0JcHJpbnRrIChL
RVJOX0lORk8gIkludGVsIG1hY2hpbmUgY2hlY2sgcmVwb3J0aW5nIGVuYWJsZWQgb24gQ1BVIyVk
LlxuIiwKKwlwcmludGsgKEtFUk5fSU5GTyAiQ1BVJWQ6IEludGVsIG1hY2hpbmUgY2hlY2sgcmVw
b3J0aW5nIGVuYWJsZWQuXG4iLAogCQlzbXBfcHJvY2Vzc29yX2lkKCkpOwogCiAJLyogQ2hlY2sg
Zm9yIFA0L1hlb24gZXh0ZW5kZWQgTUNFIE1TUnMgKi8KZGlmZiAtTnVyIHVuc3RhL2FyY2gvaTM4
Ni9rZXJuZWwvY3B1L21jaGVjay9wNS5jIHVuc3RhLm1vby9hcmNoL2kzODYva2VybmVsL2NwdS9t
Y2hlY2svcDUuYwotLS0gdW5zdGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvbWNoZWNrL3A1LmMJMjAw
Mi0xMi0xNiAwMzowODoxMS4wMDAwMDAwMDAgKzAxMDAKKysrIHVuc3RhLm1vby9hcmNoL2kzODYv
a2VybmVsL2NwdS9tY2hlY2svcDUuYwkyMDAzLTA2LTI2IDE2OjQzOjIwLjAwMDAwMDAwMCArMDIw
MApAQCAtMjEsOSArMjEsMTEgQEAKIAl1MzIgbG9hZGRyLCBoaSwgbG90eXBlOwogCXJkbXNyKE1T
Ul9JQTMyX1A1X01DX0FERFIsIGxvYWRkciwgaGkpOwogCXJkbXNyKE1TUl9JQTMyX1A1X01DX1RZ
UEUsIGxvdHlwZSwgaGkpOwotCXByaW50ayhLRVJOX0VNRVJHICJDUFUjJWQ6IE1hY2hpbmUgQ2hl
Y2sgRXhjZXB0aW9uOiAgMHglOFggKHR5cGUgMHglOFgpLlxuIiwgc21wX3Byb2Nlc3Nvcl9pZCgp
LCBsb2FkZHIsIGxvdHlwZSk7CisJcHJpbnRrKEtFUk5fRU1FUkcgIkNQVSVkOiBNYWNoaW5lIENo
ZWNrIEV4Y2VwdGlvbjogIDB4JThYICh0eXBlIDB4JThYKS5cbiIsCisJCXNtcF9wcm9jZXNzb3Jf
aWQoKSwgbG9hZGRyLCBsb3R5cGUpOwogCWlmKGxvdHlwZSYoMTw8NSkpCi0JCXByaW50ayhLRVJO
X0VNRVJHICJDUFUjJWQ6IFBvc3NpYmxlIHRoZXJtYWwgZmFpbHVyZSAoQ1BVIG9uIGZpcmUgPyku
XG4iLCBzbXBfcHJvY2Vzc29yX2lkKCkpOworCQlwcmludGsoS0VSTl9FTUVSRyAiQ1BVJWQ6IFBv
c3NpYmxlIHRoZXJtYWwgZmFpbHVyZSAoQ1BVIG9uIGZpcmUgPykuXG4iLAorCQkJc21wX3Byb2Nl
c3Nvcl9pZCgpKTsKIH0KIAogLyogU2V0IHVwIG1hY2hpbmUgY2hlY2sgcmVwb3J0aW5nIGZvciBw
cm9jZXNzb3JzIHdpdGggSW50ZWwgc3R5bGUgTUNFICovCkBAIC00NCw5ICs0NiwxMSBAQAogCS8q
IFJlYWQgcmVnaXN0ZXJzIGJlZm9yZSBlbmFibGluZyAqLwogCXJkbXNyKE1TUl9JQTMyX1A1X01D
X0FERFIsIGwsIGgpOwogCXJkbXNyKE1TUl9JQTMyX1A1X01DX1RZUEUsIGwsIGgpOwotCXByaW50
ayhLRVJOX0lORk8gIkludGVsIG9sZCBzdHlsZSBtYWNoaW5lIGNoZWNrIGFyY2hpdGVjdHVyZSBz
dXBwb3J0ZWQuXG4iKTsKKwlwcmludGsoS0VSTl9JTkZPICJDUFUlZDogSW50ZWwgb2xkIHN0eWxl
IG1hY2hpbmUgY2hlY2sgYXJjaGl0ZWN0dXJlIHN1cHBvcnRlZC5cbiIsCisJCXNtcF9wcm9jZXNz
b3JfaWQoKSk7CiAKICAJLyogRW5hYmxlIE1DRSAqLwogCXNldF9pbl9jcjQoWDg2X0NSNF9NQ0Up
OwotCXByaW50ayhLRVJOX0lORk8gIkludGVsIG9sZCBzdHlsZSBtYWNoaW5lIGNoZWNrIHJlcG9y
dGluZyBlbmFibGVkIG9uIENQVSMlZC5cbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisJcHJpbnRr
KEtFUk5fSU5GTyAiQ1BVJWQ6IEludGVsIG9sZCBzdHlsZSBtYWNoaW5lIGNoZWNrIHJlcG9ydGlu
ZyBlbmFibGVkLlxuIiwKKwkJc21wX3Byb2Nlc3Nvcl9pZCgpKTsKIH0KZGlmZiAtTnVyIHVuc3Rh
L2FyY2gvaTM4Ni9rZXJuZWwvY3B1L21jaGVjay9wNi5jIHVuc3RhLm1vby9hcmNoL2kzODYva2Vy
bmVsL2NwdS9tY2hlY2svcDYuYwotLS0gdW5zdGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvbWNoZWNr
L3A2LmMJMjAwMy0wNi0yNSAxNjo1MToyNS4wMDAwMDAwMDAgKzAyMDAKKysrIHVuc3RhLm1vby9h
cmNoL2kzODYva2VybmVsL2NwdS9tY2hlY2svcDYuYwkyMDAzLTA2LTI2IDE2OjQ1OjU3LjAwMDAw
MDAwMCArMDIwMApAQCAtMjcsNyArMjcsNyBAQAogCWlmIChtY2dzdGwgJiAoMTw8MCkpCS8qIFJl
Y292ZXJhYmxlID8gKi8KIAkJcmVjb3Zlcj0wOwogCi0JcHJpbnRrIChLRVJOX0VNRVJHICJDUFUg
JWQ6IE1hY2hpbmUgQ2hlY2sgRXhjZXB0aW9uOiAlMDh4JTA4eFxuIiwKKwlwcmludGsgKEtFUk5f
RU1FUkcgIkNQVSVkOiBNYWNoaW5lIENoZWNrIEV4Y2VwdGlvbjogJTA4eCUwOHhcbiIsCiAJCXNt
cF9wcm9jZXNzb3JfaWQoKSwgbWNnc3RoLCBtY2dzdGwpOwogCiAJZm9yIChpPTA7IGk8bnJfbWNl
X2JhbmtzOyBpKyspIHsKQEAgLTM3LDcgKzM3LDggQEAKIAkJCQlyZWNvdmVyIHw9IDE7CiAJCQlp
ZiAoaGlnaCAmICgxPDwyNSkpCiAJCQkJcmVjb3ZlciB8PSAyOwotCQkJcHJpbnRrIChLRVJOX0VN
RVJHICJCYW5rICVkOiAlMDh4JTA4eCIsIGksIGhpZ2gsIGxvdyk7CisJCQlwcmludGsgKEtFUk5f
RU1FUkcgIkNQVSVkOiBCYW5rICVkOiAlMDh4JTA4eCIsCisJCQkJc21wX3Byb2Nlc3Nvcl9pZCgp
LCBpLCBoaWdoLCBsb3cpOwogCQkJaGlnaCAmPSB+KDE8PDMxKTsKIAkJCWlmIChoaWdoICYgKDE8
PDI3KSkgewogCQkJCXJkbXNyIChNU1JfSUEzMl9NQzBfTUlTQytpKjQsIGFsb3csIGFoaWdoKTsK
QEAgLTUyLDExICs1MywxMSBAQAogCX0KIAogCWlmIChyZWNvdmVyICYgMikKLQkJcGFuaWMgKCJD
UFUgY29udGV4dCBjb3JydXB0Iik7CisJCXBhbmljICgiQ1BVJWQ6IENvbnRleHQgY29ycnVwdCIs
IHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJaWYgKHJlY292ZXIgJiAxKQotCQlwYW5pYyAoIlVuYWJs
ZSB0byBjb250aW51ZSIpOworCQlwYW5pYyAoIkNQVSVkOiBVbmFibGUgdG8gY29udGludWUiLCBz
bXBfcHJvY2Vzc29yX2lkKCkpOwogCi0JcHJpbnRrIChLRVJOX0VNRVJHICJBdHRlbXB0aW5nIHRv
IGNvbnRpbnVlLlxuIik7CisJcHJpbnRrIChLRVJOX0VNRVJHICJDUFUlZDogQXR0ZW1wdGluZyB0
byBjb250aW51ZS5cbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJLyogCiAJICogRG8gbm90IGNs
ZWFyIHRoZSBNU1JfSUEzMl9NQ2lfU1RBVFVTIGlmIHRoZSBlcnJvciBpcyBub3QgCiAJICogcmVj
b3ZlcmFibGUvY29udGludWFibGUuVGhpcyB3aWxsIGFsbG93IEJJT1MgdG8gbG9vayBhdCB0aGUg
TVNScwpAQCAtOTUsNyArOTYsOCBAQAogCW1hY2hpbmVfY2hlY2tfdmVjdG9yID0gaW50ZWxfbWFj
aGluZV9jaGVjazsKIAl3bWIoKTsKIAotCXByaW50ayAoS0VSTl9JTkZPICJJbnRlbCBtYWNoaW5l
IGNoZWNrIGFyY2hpdGVjdHVyZSBzdXBwb3J0ZWQuXG4iKTsKKwlwcmludGsgKEtFUk5fSU5GTyAi
Q1BVJWQ6IEludGVsIG1hY2hpbmUgY2hlY2sgYXJjaGl0ZWN0dXJlIHN1cHBvcnRlZC5cbiIsCisJ
CXNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJcmRtc3IgKE1TUl9JQTMyX01DR19DQVAsIGwsIGgpOwog
CWlmIChsICYgKDE8PDgpKQkvKiBDb250cm9sIHJlZ2lzdGVyIHByZXNlbnQgPyAqLwogCQl3cm1z
cihNU1JfSUEzMl9NQ0dfQ1RMLCAweGZmZmZmZmZmLCAweGZmZmZmZmZmKTsKQEAgLTEwOCw2ICsx
MTAsNiBAQAogCX0KIAogCXNldF9pbl9jcjQgKFg4Nl9DUjRfTUNFKTsKLQlwcmludGsgKEtFUk5f
SU5GTyAiSW50ZWwgbWFjaGluZSBjaGVjayByZXBvcnRpbmcgZW5hYmxlZCBvbiBDUFUjJWQuXG4i
LAorCXByaW50ayAoS0VSTl9JTkZPICJDUFUlZDogSW50ZWwgbWFjaGluZSBjaGVjayByZXBvcnRp
bmcgZW5hYmxlZC5cbiIsCiAJCXNtcF9wcm9jZXNzb3JfaWQoKSk7CiB9CmRpZmYgLU51ciB1bnN0
YS9hcmNoL2kzODYva2VybmVsL2NwdS9tY2hlY2svd2luY2hpcC5jIHVuc3RhLm1vby9hcmNoL2kz
ODYva2VybmVsL2NwdS9tY2hlY2svd2luY2hpcC5jCi0tLSB1bnN0YS9hcmNoL2kzODYva2VybmVs
L2NwdS9tY2hlY2svd2luY2hpcC5jCTIwMDItMTItMTYgMDM6MDc6NTkuMDAwMDAwMDAwICswMTAw
CisrKyB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5lbC9jcHUvbWNoZWNrL3dpbmNoaXAuYwkyMDAz
LTA2LTI2IDE2OjQ3OjQwLjAwMDAwMDAwMCArMDIwMApAQCAtMTcsNyArMTcsOCBAQAogLyogTWFj
aGluZSBjaGVjayBoYW5kbGVyIGZvciBXaW5DaGlwIEM2ICovCiBzdGF0aWMgdm9pZCB3aW5jaGlw
X21hY2hpbmVfY2hlY2soc3RydWN0IHB0X3JlZ3MgKiByZWdzLCBsb25nIGVycm9yX2NvZGUpCiB7
Ci0JcHJpbnRrKEtFUk5fRU1FUkcgIkNQVTA6IE1hY2hpbmUgQ2hlY2sgRXhjZXB0aW9uLlxuIik7
CisJcHJpbnRrKEtFUk5fRU1FUkcgIkNQVSVkOiBNYWNoaW5lIENoZWNrIEV4Y2VwdGlvbi5cbiIs
CisJCXNtcF9wcm9jZXNzb3JfaWQoKSk7CiB9CiAKIC8qIFNldCB1cCBtYWNoaW5lIGNoZWNrIHJl
cG9ydGluZyBvbiB0aGUgV2luY2hpcCBDNiBzZXJpZXMgKi8KQEAgLTMxLDUgKzMyLDYgQEAKIAls
byY9IH4oMTw8NCk7CS8qIEVuYWJsZSBNQ0UgKi8KIAl3cm1zcihNU1JfSURUX0ZDUjEsIGxvLCBo
aSk7CiAJc2V0X2luX2NyNChYODZfQ1I0X01DRSk7Ci0JcHJpbnRrKEtFUk5fSU5GTyAiV2luY2hp
cCBtYWNoaW5lIGNoZWNrIHJlcG9ydGluZyBlbmFibGVkIG9uIENQVSMwLlxuIik7CisJcHJpbnRr
KEtFUk5fSU5GTyAiQ1BVJWQ6IFdpbmNoaXAgbWFjaGluZSBjaGVjayByZXBvcnRpbmcgZW5hYmxl
ZC5cbiIsCisJCXNtcF9wcm9jZXNzb3JfaWQoKSk7CiB9CmRpZmYgLU51ciB1bnN0YS9hcmNoL2kz
ODYva2VybmVsL2NwdS9yaXNlLmMgdW5zdGEubW9vL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L3Jpc2Uu
YwotLS0gdW5zdGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvcmlzZS5jCTIwMDItMTItMTYgMDM6MDc6
NDguMDAwMDAwMDAwICswMTAwCisrKyB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5lbC9jcHUvcmlz
ZS5jCTIwMDMtMDYtMjYgMTY6NTY6MjAuMDAwMDAwMDAwICswMjAwCkBAIC0xLDEzICsxLDE0IEBA
CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2lu
Y2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NtcC5oPgogI2luY2x1ZGUg
PGFzbS9wcm9jZXNzb3IuaD4KIAogI2luY2x1ZGUgImNwdS5oIgogCiBzdGF0aWMgdm9pZCBfX2lu
aXQgaW5pdF9yaXNlKHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIHsKLQlwcmludGsoIkNQVTogUmlz
ZSBpRHJhZ29uIik7CisJcHJpbnRrKCJDUFUlZDogUmlzZSBpRHJhZ29uIiwgc21wX3Byb2Nlc3Nv
cl9pZCgpKTsKIAlpZiAoYy0+eDg2X21vZGVsID4gMikKIAkJcHJpbnRrKCIgSUkiKTsKIAlwcmlu
dGsoIlxuIik7CmRpZmYgLU51ciB1bnN0YS9hcmNoL2kzODYva2VybmVsL2NwdS90cmFuc21ldGEu
YyB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5lbC9jcHUvdHJhbnNtZXRhLmMKLS0tIHVuc3RhL2Fy
Y2gvaTM4Ni9rZXJuZWwvY3B1L3RyYW5zbWV0YS5jCTIwMDItMTItMTYgMDM6MDc6NDYuMDAwMDAw
MDAwICswMTAwCisrKyB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5lbC9jcHUvdHJhbnNtZXRhLmMJ
MjAwMy0wNi0yNiAxNzoxMDo1NC4wMDAwMDAwMDAgKzAyMDAKQEAgLTEsNSArMSw2IEBACiAjaW5j
bHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUg
PGxpbnV4L3NtcC5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxhc20v
bXNyLmg+CiAjaW5jbHVkZSAiY3B1LmgiCkBAIC0xOCw3ICsxOSw4IEBACiAJbWF4ID0gY3B1aWRf
ZWF4KDB4ODA4NjAwMDApOwogCWlmICggbWF4ID49IDB4ODA4NjAwMDEgKSB7CiAJCWNwdWlkKDB4
ODA4NjAwMDEsICZkdW1teSwgJmNwdV9yZXYsICZjcHVfZnJlcSwgJmNwdV9mbGFncyk7IAotCQlw
cmludGsoS0VSTl9JTkZPICJDUFU6IFByb2Nlc3NvciByZXZpc2lvbiAldS4ldS4ldS4ldSwgJXUg
TUh6XG4iLAorCQlwcmludGsoS0VSTl9JTkZPICJDUFUlZDogUHJvY2Vzc29yIHJldmlzaW9uICV1
LiV1LiV1LiV1LCAldSBNSHpcbiIsCisJCSAgICAgICBzbXBfcHJvY2Vzc29yX2lkKCksCiAJCSAg
ICAgICAoY3B1X3JldiA+PiAyNCkgJiAweGZmLAogCQkgICAgICAgKGNwdV9yZXYgPj4gMTYpICYg
MHhmZiwKIAkJICAgICAgIChjcHVfcmV2ID4+IDgpICYgMHhmZiwKQEAgLTI3LDcgKzI5LDggQEAK
IAl9CiAJaWYgKCBtYXggPj0gMHg4MDg2MDAwMiApIHsKIAkJY3B1aWQoMHg4MDg2MDAwMiwgJmR1
bW15LCAmY21zX3JldjEsICZjbXNfcmV2MiwgJmR1bW15KTsKLQkJcHJpbnRrKEtFUk5fSU5GTyAi
Q1BVOiBDb2RlIE1vcnBoaW5nIFNvZnR3YXJlIHJldmlzaW9uICV1LiV1LiV1LSV1LSV1XG4iLAor
CQlwcmludGsoS0VSTl9JTkZPICJDUFUlZDogQ29kZSBNb3JwaGluZyBTb2Z0d2FyZSByZXZpc2lv
biAldS4ldS4ldS0ldS0ldVxuIiwKKwkJICAgICAgIHNtcF9wcm9jZXNzb3JfaWQoKSwKIAkJICAg
ICAgIChjbXNfcmV2MSA+PiAyNCkgJiAweGZmLAogCQkgICAgICAgKGNtc19yZXYxID4+IDE2KSAm
IDB4ZmYsCiAJCSAgICAgICAoY21zX3JldjEgPj4gOCkgJiAweGZmLApAQCAtNTYsNyArNTksNyBA
QAogCQkgICAgICAodm9pZCAqKSZjcHVfaW5mb1s1Nl0sCiAJCSAgICAgICh2b2lkICopJmNwdV9p
bmZvWzYwXSk7CiAJCWNwdV9pbmZvWzY0XSA9ICdcMCc7Ci0JCXByaW50ayhLRVJOX0lORk8gIkNQ
VTogJXNcbiIsIGNwdV9pbmZvKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiQ1BVJWQ6ICVzXG4iLCBz
bXBfcHJvY2Vzc29yX2lkKCksIGNwdV9pbmZvKTsKIAl9CiAKIAkvKiBVbmhpZGUgcG9zc2libHkg
aGlkZGVuIGNhcGFiaWxpdHkgZmxhZ3MgKi8KZGlmZiAtTnVyIHVuc3RhL2FyY2gvaTM4Ni9rZXJu
ZWwvaW9fYXBpYy5jIHVuc3RhLm1vby9hcmNoL2kzODYva2VybmVsL2lvX2FwaWMuYwotLS0gdW5z
dGEvYXJjaC9pMzg2L2tlcm5lbC9pb19hcGljLmMJMjAwMy0wNi0yNCAyMDo1NDoyMS4wMDAwMDAw
MDAgKzAyMDAKKysrIHVuc3RhLm1vby9hcmNoL2kzODYva2VybmVsL2lvX2FwaWMuYwkyMDAzLTA2
LTI2IDE3OjQ5OjIzLjAwMDAwMDAwMCArMDIwMApAQCAtMTI5OCw3ICsxMjk4LDYgQEAKIAkJKihp
bnQgKikmcmVnXzAyID0gaW9fYXBpY19yZWFkKGFwaWMsIDIpOwogCXNwaW5fdW5sb2NrX2lycXJl
c3RvcmUoJmlvYXBpY19sb2NrLCBmbGFncyk7CiAKLQlwcmludGsoIlxuIik7CiAJcHJpbnRrKEtF
Uk5fREVCVUcgIklPIEFQSUMgIyVkLi4uLi4uXG4iLCBtcF9pb2FwaWNzW2FwaWNdLm1wY19hcGlj
aWQpOwogCXByaW50ayhLRVJOX0RFQlVHICIuLi4uIHJlZ2lzdGVyICMwMDogJTA4WFxuIiwgKihp
bnQgKikmcmVnXzAwKTsKIAlwcmludGsoS0VSTl9ERUJVRyAiLi4uLi4uLiAgICA6IHBoeXNpY2Fs
IEFQSUMgaWQ6ICUwMlhcbiIsIHJlZ18wMC5JRCk7CmRpZmYgLU51ciB1bnN0YS9hcmNoL2kzODYv
a2VybmVsL3N5c2VudGVyLmMgdW5zdGEubW9vL2FyY2gvaTM4Ni9rZXJuZWwvc3lzZW50ZXIuYwot
LS0gdW5zdGEvYXJjaC9pMzg2L2tlcm5lbC9zeXNlbnRlci5jCTIwMDMtMDUtMjcgMjE6MDM6MTYu
MDAwMDAwMDAwICswMjAwCisrKyB1bnN0YS5tb28vYXJjaC9pMzg2L2tlcm5lbC9zeXNlbnRlci5j
CTIwMDMtMDYtMjYgMTc6MjQ6NDQuMDAwMDAwMDAwICswMjAwCkBAIC0zMiw3ICszMiw3IEBACiAJ
d3Jtc3IoTVNSX0lBMzJfU1lTRU5URVJfRVNQLCB0c3MtPmVzcDEsIDApOwogCXdybXNyKE1TUl9J
QTMyX1NZU0VOVEVSX0VJUCwgKHVuc2lnbmVkIGxvbmcpIHN5c2VudGVyX2VudHJ5LCAwKTsKIAot
CXByaW50aygiRW5hYmxpbmcgU0VQIG9uIENQVSAlZFxuIiwgY3B1KTsKKwlwcmludGsoIkNQVSVk
OiBFbmFibGluZyBTRVBcbiIsIGNwdSk7CiAJcHV0X2NwdSgpOwkKIH0KIApkaWZmIC1OdXIgdW5z
dGEvaW5jbHVkZS9hc20taTM4Ni9idWdzLmggdW5zdGEubW9vL2luY2x1ZGUvYXNtLWkzODYvYnVn
cy5oCi0tLSB1bnN0YS9pbmNsdWRlL2FzbS1pMzg2L2J1Z3MuaAkyMDAzLTA2LTI1IDE3OjQwOjUy
LjAwMDAwMDAwMCArMDIwMAorKysgdW5zdGEubW9vL2luY2x1ZGUvYXNtLWkzODYvYnVncy5oCTIw
MDMtMDYtMjYgMTc6MTg6NTcuMDAwMDAwMDAwICswMjAwCkBAIC05OCwxMiArOTgsMTQgQEAKIAkJ
X19idWdneV9meHNyX2FsaWdubWVudCgpOwogCX0KIAlpZiAoY3B1X2hhc19meHNyKSB7Ci0JCXBy
aW50ayhLRVJOX0lORk8gIkVuYWJsaW5nIGZhc3QgRlBVIHNhdmUgYW5kIHJlc3RvcmUuLi4gIik7
CisJCXByaW50ayhLRVJOX0lORk8gIkNQVSVkOiBFbmFibGluZyBmYXN0IEZQVSBzYXZlIGFuZCBy
ZXN0b3JlLi4uICIsCisJCQlzbXBfcHJvY2Vzc29yX2lkKCkpOwogCQlzZXRfaW5fY3I0KFg4Nl9D
UjRfT1NGWFNSKTsKIAkJcHJpbnRrKCJkb25lLlxuIik7CiAJfQogCWlmIChjcHVfaGFzX3htbSkg
ewotCQlwcmludGsoS0VSTl9JTkZPICJFbmFibGluZyB1bm1hc2tlZCBTSU1EIEZQVSBleGNlcHRp
b24gc3VwcG9ydC4uLiAiKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiQ1BVJWQ6IEVuYWJsaW5nIHVu
bWFza2VkIFNJTUQgRlBVIGV4Y2VwdGlvbiBzdXBwb3J0Li4uICIsCisJCQlzbXBfcHJvY2Vzc29y
X2lkKCkpOwogCQlzZXRfaW5fY3I0KFg4Nl9DUjRfT1NYTU1FWENQVCk7CiAJCXByaW50aygiZG9u
ZS5cbiIpOwogCX0KQEAgLTEyNiw3ICsxMjgsNyBAQAogCiBzdGF0aWMgdm9pZCBfX2luaXQgY2hl
Y2tfaGx0KHZvaWQpCiB7Ci0JcHJpbnRrKEtFUk5fSU5GTyAiQ2hlY2tpbmcgJ2hsdCcgaW5zdHJ1
Y3Rpb24uLi4gIik7CisJcHJpbnRrKEtFUk5fSU5GTyAiQ1BVJWQ6IENoZWNraW5nICdobHQnIGlu
c3RydWN0aW9uLi4uICIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJaWYgKCFib290X2NwdV9kYXRh
LmhsdF93b3Jrc19vaykgewogCQlwcmludGsoImRpc2FibGVkXG4iKTsKIAkJcmV0dXJuOwpAQCAt
MTQ1LDcgKzE0Nyw3IEBACiAjaWZuZGVmIENPTkZJR19YODZfUE9QQURfT0sKIAlpbnQgcmVzLCBp
bnAgPSAoaW50KSAmcmVzOwogCi0JcHJpbnRrKEtFUk5fSU5GTyAiQ2hlY2tpbmcgZm9yIHBvcGFk
IGJ1Zy4uLiAiKTsKKwlwcmludGsoS0VSTl9JTkZPICJDUFUlZDogQ2hlY2tpbmcgZm9yIHBvcGFk
IGJ1Zy4uLiAiLCBzbXBfcHJvY2Vzc29yX2lkKCkpOwogCV9fYXNtX18gX192b2xhdGlsZV9fKCAK
IAkgICJtb3ZsICQxMjM0NTY3OCwlJWVheDsgbW92bCAkMCwlJWVkaTsgcHVzaGE7IHBvcGE7IG1v
dmwgKCUlZWR4LCUlZWRpKSwlJWVjeCAiCiAJICA6ICI9JmEiIChyZXMpCmRpZmYgLU51ciB1bnN0
YS9pbml0L21haW4uYyB1bnN0YS5tb28vaW5pdC9tYWluLmMKLS0tIHVuc3RhL2luaXQvbWFpbi5j
CTIwMDMtMDYtMjQgMjA6NTQ6MzUuMDAwMDAwMDAwICswMjAwCisrKyB1bnN0YS5tb28vaW5pdC9t
YWluLmMJMjAwMy0wNi0yNiAxNzozODowOS4wMDAwMDAwMDAgKzAyMDAKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgogI2luY2x1ZGUgPGxpbnV4L3dyaXRl
YmFjay5oPgogI2luY2x1ZGUgPGxpbnV4L2NwdS5oPgorI2luY2x1ZGUgPGxpbnV4L3NtcC5oPgog
CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL2J1Z3MuaD4KQEAgLTE5NCw3ICsx
OTUsNyBAQAogCiAJbG9vcHNfcGVyX2ppZmZ5ID0gKDE8PDEyKTsKIAotCXByaW50aygiQ2FsaWJy
YXRpbmcgZGVsYXkgbG9vcC4uLiAiKTsKKwlwcmludGsoIkNQVSVkOiBDYWxpYnJhdGluZyBkZWxh
eSBsb29wLi4uICIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAJd2hpbGUgKGxvb3BzX3Blcl9qaWZm
eSA8PD0gMSkgewogCQkvKiB3YWl0IGZvciAic3RhcnQgb2YiIGNsb2NrIHRpY2sgKi8KIAkJdGlj
a3MgPSBqaWZmaWVzOwo=

--=_courier-803-1056740461-0001-2--