[Lcdproc] Update to lcdproc-iface 2nd try
Markus Dolze
bsdfan@nurfuerspam.de
Sun May 7 22:28:01 2006
This is a MIME encapsulated multipart message -
please use a MIME-compliant e-mail program to open it.
Dies ist eine mehrteilige Nachricht im MIME-Format -
bitte verwenden Sie zum Lesen ein MIME-konformes Mailprogramm.
--========GMXBoundary83921147040861
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Ok, here is the second try.
In addition to the first patch I moved the statistics gathering part into
machine_*.c files for Linux and FreeBSD. For the other systems I added a
dummy function, which simply returns an error.
It compiles and works on FreeBSD. Please try and test on Linux. If anyone
feels able to add the missing parts for the other operating systems, please
help.
Regards
Markus
--========GMXBoundary83921147040861
Content-Type: text/plain; name="patch-iface-update2.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="patch-iface-update2.txt"
ZGlmZiAtciAtdSAuLi9sY2Rwcm9jLUNWUy1jdXJyZW50LTIwMDYwNTA2L2NsaWVudHMvbGNkcHJv
Yy9pZmFjZS5jIC4vY2xpZW50cy9sY2Rwcm9jL2lmYWNlLmMKLS0tIC4uL2xjZHByb2MtQ1ZTLWN1
cnJlbnQtMjAwNjA1MDYvY2xpZW50cy9sY2Rwcm9jL2lmYWNlLmMJRnJpIE1heSAgNSAwOTowMDo0
MiAyMDA2CisrKyAuL2NsaWVudHMvbGNkcHJvYy9pZmFjZS5jCVN1biBNYXkgIDcgMjM6NDk6NDcg
MjAwNgpAQCAtMzAsMjkgKzMwLDE4IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8
dGltZS5oPgogCi0jaW5jbHVkZSAiaWZhY2UuaCIKLSNpZmRlZiBORVRMQ0RDTElFTlQKLSNpbmNs
dWRlICJzb2NrZXRzLmgiCi0jZWxzZQogI2luY2x1ZGUgInNoYXJlZC9zb2NrZXRzLmgiCiAjaW5j
bHVkZSAic2hhcmVkL2RlYnVnLmgiCiAjaW5jbHVkZSAic2hhcmVkL3JlcG9ydC5oIgogI2luY2x1
ZGUgInNoYXJlZC9jb25maWdmaWxlLmgiCiAjaW5jbHVkZSAibWFpbi5oIgorI2luY2x1ZGUgInV0
aWwuaCIKKyNpbmNsdWRlICJpZmFjZS5oIgorI2luY2x1ZGUgIm1hY2hpbmUuaCIKKwogI2RlZmlu
ZSBVTlNFVF9JTlQgLTEJIAogI2RlZmluZSBVTlNFVF9TVFIgIlwwMSIKLSNlbmRpZiAvL05FVExD
RENMSUVOVAotCi0KLSNpZmRlZiBORVRMQ0RDTElFTlQKLS8qIE9wdGlvbiBmbGFncyBhbmQgZ2xv
YmFsIHZhcmlhYmxlcyAqLwogCi1jaGFyICpwcm9ncmFtX25hbWU7ICAvKiB0aGUgbmFtZSB0aGUg
cHJvZ3JhbSB3YXMgcnVuIHdpdGggKi8KLWludCBwb3J0ID0gMTM2NjY7ICAvKiBkZWZhdWx0IHBv
cnQgKi8KLWNoYXIgc2VydmVyWzI1Nl0gPSAibG9jYWxob3N0IjsgIC8qIGRlZmF1bHQgc2VydmVy
ICovCi1pbnQgZGFlbW9uX21vZGUgPSAwOyAgLyogYnkgZGVmYXVsdCwgbm8gZGFlbW9uIG1vZGUg
Ki8KLWludCBzb2NrID0gMDsgIC8qIHNvY2tldCBoYW5kbGVyICovCi0jZW5kaWYgLy9ORVRMQ0RD
TElFTlQKIAogaW50IGlmYWNlX2NvdW50ID0gMDsgIC8qIG51bWJlciBvZiBpbnRlcmZhY2VzICov
CiAKQEAgLTc1LDI1NSArNjQsNiBAQAogfTsKIAogCi0jaWZkZWYgTkVUTENEQ0xJRU5UCi0vKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgotICogTUFJTiBQUk9HUkFNIEZVTkNUSU9OCi0gKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgotICovCi0KLWludAotbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotCi0JSWZhY2VJ
bmZvIGlmYWNlW01BWF9JTlRFUkZBQ0VTXTsgIC8qIGludGVyZmFjZSBpbmZvICovCi0KLQlpbnQg
bGVuOyAgLyogYnl0ZXMgcmVhZCBmcm9tIHNlcnZlciAqLwotCi0JY2hhciByZWFkYnVmZltNQVhN
U0ddOyAgLyogcmVhZCBidWZmZXIgZnJvbSBzZXJ2ZXIgKi8KLQotCXVuc2lnbmVkIGludCBzbGVl
cF90aW1lID0gMTsgIC8qIGludGVydmFsIGJldHdlZW4gdXBkYXRlcyAoMSBzZWNvbmQpICovCi0K
LQlpbnQgcGlkOyAvKiBjaGlsZCBwcm9jZXNzIGlkZW50aWZpY2F0b3IgZm9yIGRhZW1vbiBtb2Rl
ICovCi0KLQlpbnQgaWZhY2Vfbm1icjsgLyogbG9vcCB2YXJpYWJsZSBmb3IgdGhlIGludGVyZmFj
ZSAqLwotCi0JLyogQ2FwdHVyZSBzaWduYWxzIHRvIGV4aXQgcHJvZ3JhbSBjbGVhbmx5ICovCi0J
c2lnbmFsKFNJR0lOVCwgZXhpdF9wcm9ncmFtKTsJLyogQ3RybC1DICovCi0Jc2lnbmFsKFNJR1RF
Uk0sIGV4aXRfcHJvZ3JhbSk7CS8qIGtpbGwgKi8KLQlzaWduYWwoU0lHSFVQLCBleGl0X3Byb2dy
YW0pOwkvKiBraWxsIC1IVVAgKi8KLQlzaWduYWwoU0lHS0lMTCwgZXhpdF9wcm9ncmFtKTsJLyog
a2lsbCAtS0lMTCAqLwotCi0JLyogZ2V0IHByb2dyYW0gbmFtZSBmcm9tIGNvbW1hbmQgbGluZSAq
LwotCXByb2dyYW1fbmFtZSA9IGFyZ3ZbMF07Ci0KLQkvKiBwYXJzZSBjb21tYW5kIGxpbmUgcGFy
YW1ldGVycyAqLwotCWRlY29kZV9zd2l0Y2hlcyAoYXJnYywgYXJndik7Ci0KLQkvKiBjaGVjayBp
ZiBhbnkgaW50ZXJmYWNlIG5hbWUgaGFzIGJlZW4gaW50cm9kdWNlZCAqLwotCi0JaWYgKGlmYWNl
X2NvdW50ID09IDApIHsKLQkJLyogbm8gb25lIGhhcyBiZWVuIGludHJvZHVjZWQsIHNvIGV4aXQg
dGhlIHByb2dyYW0gc2hvd2luZyBoZWxwICovCi0JCXByaW50ZigiTm8gaW50ZXJmYWNlIHNlbGVj
dGVkLCBwbGVhc2UsIHVzZSAtLWludGVyZmFjZSBvcHRpb25cbiIpOwotCQl1c2FnZSAoMSk7Ci0J
fQotCi0JLyogY2hlY2sgaWYgd2UgZ28gdG8gZGFlbW9uIG1vZGUgKi8KLQlpZiAoZGFlbW9uX21v
ZGUpIHsKLQkJc2lnbmFsKFNJR1RUT1UsIFNJR19JR04pOwotCQlzaWduYWwoU0lHVFRJTiwgU0lH
X0lHTik7Ci0JCXNpZ25hbChTSUdUU1RQLCBTSUdfSUdOKTsKLQotCQkvKiBjcmVhdGUgY2hpbGQg
cHJvY2VzcyAqLwotCQlwaWQgPSBmb3JrKCk7Ci0JCS8qIGNyZWF0ZSBuZXcgc2Vzc2lvbiAqLwot
CQlzZXRzaWQoKTsKLQkJc2lnbmFsKFNJR0hVUCwgU0lHX0lHTik7Ci0KLSAgICAJCWlmIChwaWQg
IT0gMCkgeyAvKiB3ZSBhcmUgdGhlIHBhcmVudCBwcm9jZXNzIGFuZCBleGl0ICovCi0gICAgICAg
IAkJZXhpdCgwKTsKLSAgICAJCX0KLSAgICAJCS8qIGZyb20gaGVyZSwgd2UgYXJlIHRoZSBjaGls
ZCBwcm9jZXNzICovCi0JfQotCi0JLyogVHJ5IHRvIGNvbm5lY3QgdG8gc2VydmVyICovCi0Jc29j
ayA9IHNvY2tfY29ubmVjdChzZXJ2ZXIsIHBvcnQpOwotCi0JaWYgKHNvY2sgPD0gMCkgeyAgLyog
dGhlcmUgd2FzIHNvbWUgZXJyb3IgYW5kIGV4aXQgKi8KLQkJZnByaW50ZihzdGRlcnIsICJFcnJv
cjogQ291bGQgbm90IGNvbm5lY3QgdG8gJXM6JWRcbiIsIHNlcnZlciwgcG9ydCk7Ci0JCWV4aXQo
MCk7Ci0JfQotCi0JLyogU2F5ICJoZWxsbyIgdG8gc2VydmVyICovCi0Jc29ja19zZW5kX3N0cmlu
Zyhzb2NrLCAiaGVsbG9cbiIpOwotCi0JLyogV2FpdCB0aGUgc2VydmVyIHRvIGJlIHByZXBhcmVk
ICovCi0JdXNsZWVwKDUwMDAwMCk7Ci0KLQkvKiBSZWFkIHNlcnZlciByZXNwb25zZSAqLwotCWxl
biA9IHNvY2tfcmVjdihzb2NrLCByZWFkYnVmZiwgTUFYTVNHKTsKLQotCS8qIE5vdyB3ZSBhcmUg
cmVhZHkgdG8gc2VuZCBjb21tYW5kcyB0byBzZXJ2ZXIgKi8KLQotCS8qIHNldCBpbml0aWFsIHNw
ZWVkIHNjcmVlbiB3aXRoIHdpZGdldHMgKi8KLQlpbml0aWFsaXplX3NwZWVkX3NjcmVlbigpOwot
Ci0JLyogc2V0IGluaXRpYWwgdHJhbnNmZXIgc2NyZWVuIGlmIG5lZWRlZCAqLwotCWlmICh0cmFu
c2Zlcl9zY3JlZW4pIHsKLQkJaW5pdGlhbGl6ZV90cmFuc2Zlcl9zY3JlZW4oKTsKLQl9Ci0KLQkv
KiBpbml0aWFsaXplIGFsbCBpbnRlcmZhY2Ugc3RydWN0cyAqLwotCWZvciAoaWZhY2Vfbm1iciA9
IDA7IGlmYWNlX25tYnIgPCBpZmFjZV9jb3VudDsgaWZhY2Vfbm1icisrKSB7Ci0JCWlmYWNlW2lm
YWNlX25tYnJdLmxhc3Rfb25saW5lID0gMDsKLQkJaWZhY2VbaWZhY2Vfbm1icl0uc3RhdHVzID0g
ZG93bjsKLQl9Ci0KLQotCS8qIG1haW4gbG9vcCAqLwotCXdoaWxlICgxKSB7Ci0JCS8qIHJlYWQg
c2VydmVyIHJlc3BvbnNlcyAqLwotCQlsZW4gPSBzb2NrX3JlY3Yoc29jaywgcmVhZGJ1ZmYsIE1B
WE1TRyk7Ci0JICAKLQkJLyogZm9yIGVhY2ggaW50ZXJmYWNlIGRvICovCi0JCWZvciAoaWZhY2Vf
bm1iciA9IDA7IGlmYWNlX25tYnIgPCBpZmFjZV9jb3VudDsgaWZhY2Vfbm1icisrKSB7Ci0JCQkv
KnJlYWQgaWZhY2VfcGFyYW1ldGVyIHN0YXRzICovCi0JCQlpZiAoIWdldF9pZmFjZV9zdGF0cygm
aWZhY2VbaWZhY2Vfbm1icl0pKSB7Ci0JCQkJLyogdGhlcmUgd2FzIGFuIGVycm9yLCBzbyB3ZSBl
eGl0IHRoZSBsb29wICovCi0JCSAgICAJCWJyZWFrOwotCQkgICAgCX0KLQotCQkJLyogYWN0dWFs
aXplIHNwZWVkIHZhbHVlcyBpbiBkaXNwbGF5ICovCi0JCQlhY3R1YWxpemVfc3BlZWRfc2NyZWVu
KCZpZmFjZVtpZmFjZV9ubWJyXSwgc2xlZXBfdGltZSwgaWZhY2Vfbm1icik7Ci0JICAgIAotCQkJ
LyogaWYgbmVlZGVkLCBhY3R1YWxpemUgdHJhbnNmZXIgdmFsdWVzIGluIGRpc3BsYXkgKi8KLQkJ
CWlmICh0cmFuc2Zlcl9zY3JlZW4pCi0JCQkJYWN0dWFsaXplX3RyYW5zZmVyX3NjcmVlbigmaWZh
Y2VbaWZhY2Vfbm1icl0sIGlmYWNlX25tYnIpOwotCSAgCi0JCQkvKiBBY3R1YWwgdmFsdWVzIGFy
ZSB0aGUgb2xkIG9uZXMgaW4gdGhlIG5leHQgbG9vcCAqLwotCQkJaWZhY2VbaWZhY2Vfbm1icl0u
cmNfYnl0ZV9vbGQgPSBpZmFjZVtpZmFjZV9ubWJyXS5yY19ieXRlOwotCQkJaWZhY2VbaWZhY2Vf
bm1icl0udHJfYnl0ZV9vbGQgPSBpZmFjZVtpZmFjZV9ubWJyXS50cl9ieXRlOwotCQkJaWZhY2Vb
aWZhY2Vfbm1icl0ucmNfcGt0X29sZCA9IGlmYWNlW2lmYWNlX25tYnJdLnJjX3BrdDsKLQkJCWlm
YWNlW2lmYWNlX25tYnJdLnRyX3BrdF9vbGQgPSBpZmFjZVtpZmFjZV9ubWJyXS50cl9wa3Q7Ci0J
CX0KLQotCQkvKiBXYWl0IHNvbWUgdGltZSB0byBkbyB0aGUgbWFpbiBsb29wIGFnYWluICovCi0J
CXNsZWVwKHNsZWVwX3RpbWUpOwotCX0KLQotCS8qIEJlZm9yZSBleGl0IHRoZSBwcm9ncmFtLCBj
bG9zZSB0aGUgc29ja2V0ICovCi0Jc29ja19jbG9zZShzb2NrKTsKLQotCWV4aXQgKDApOwotCi19
IC8qIG1haW4oKSAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogRU5EIE1BSU4gUFJPR1JBTSBG
VU5DVElPTgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLS8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBT
ZXQgYWxsIHRoZSBvcHRpb24gZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZSBzd2l0Y2hlcyBzcGVjaWZp
ZWQuCi0gKiBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50
LgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKLSAqLwotCi1zdGF0aWMgaW50Ci1kZWNvZGVfc3dpdGNoZXMg
KGludCBhcmdjLCBjaGFyICoqYXJndikKLXsKLQlpbnQgYzsKLQotCXdoaWxlICgoYyA9IGdldG9w
dF9sb25nIChhcmdjLCBhcmd2LCAiaTphOnM6cDp1OnRkaFYiLCBcCi0JCQkJCQkJCWxvbmdfb3B0
aW9ucywgKGludCAqKSAwKSkgIT0gRU9GKSB7Ci0gICAgCi0gICAgCXN3aXRjaCAoYykgewotCQkJ
Y2FzZSAnaSc6Ci0JCQkJLyogQ2hlY2sgbnVtYmVyIG9mIGludGVyZmFjZXMgaW50cm9kdWNlZCAq
LwotCQkJCWlmIChpZmFjZV9jb3VudCA+PSBNQVhfSU5URVJGQUNFUykgewotCQkJCQlmcHJpbnRm
KHN0ZGVyciwgIlRvbyBtYW55IGludGVyZmFjZXMgaW50cm9kdWNlZC4gIiAKLQkJCQkJCQkiT25s
eSAlZCBhcmUgc3VwcG9ydGVkLlxuIiwgTUFYX0lOVEVSRkFDRVMpOwotCQkJCQlleGl0KDApOwot
CQkJCX0KLQkJCQlpZmFjZVtpZmFjZV9jb3VudF0ubmFtZSA9IHN0cmR1cChvcHRhcmcpOwotCQkJ
CS8vIG1ha2UgYWxpYXMgcG9pbnQgdG8gdGhlIHNhbWUgc3RyaW5nIGFzIHRoZSBpbnRlcmZhY2Ug
bmFtZQotCQkJCWlmYWNlW2lmYWNlX2NvdW50XS5hbGlhcyA9IGlmYWNlW2lmYWNlX2NvdW50XS5u
YW1lOwotCQkJCWlmYWNlX2NvdW50Kys7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlICdhJzoKLQkJCQlp
ZmFjZVtpZmFjZV9jb3VudC0xXS5hbGlhcyA9IHN0cmR1cChvcHRhcmcpOwotCQkJCWJyZWFrOwot
CQkJY2FzZSAncyc6Ci0JCQkJc3RybmNweShzZXJ2ZXIsIG9wdGFyZywgc2l6ZW9mKHNlcnZlcikp
OwotCQkJCXNlcnZlcltzaXplb2Yoc2VydmVyKS0xXSA9ICdcMCc7Ci0JCQkJYnJlYWs7Ci0JCQlj
YXNlICdwJzoKLQkJCQlwb3J0ID0gYXRvaShvcHRhcmcpOwotCQkJCWJyZWFrOwotCQkJY2FzZSAn
dSc6Ci0JCQkJLyogY2hlY2sgZm9yIHZhbGlkIHZhbHVlcyAqLwotCQkJCWlmIChzdHJzdHIob3B0
YXJnLCAiYnl0ZSIpKQotCQkJCQlzdHJuY3B5KHVuaXRfbGFiZWwsICJCIiwgc2l6ZW9mKHVuaXRf
bGFiZWwpKTsKLQkJCQllbHNlIGlmIChzdHJzdHIob3B0YXJnLCAiYml0IikpCi0JCQkJCXN0cm5j
cHkodW5pdF9sYWJlbCwgImIiLCBzaXplb2YodW5pdF9sYWJlbCkpOwotCQkJCWVsc2UgaWYgKHN0
cnN0cihvcHRhcmcsICJwYWNrZXQiKSkKLQkJCQkJc3RybmNweSh1bml0X2xhYmVsLCAicGt0Iiwg
c2l6ZW9mKHVuaXRfbGFiZWwpKTsKLQkJCQllbHNlIHsKLQkJCQkJZnByaW50ZihzdGRlcnIsICJu
ZXRsY2RjbGllbnQ6IGFyZ3VtZW50ICclcycgZm9yIC11IHBhcmFtZXRlciBpcyBub3QgdmFsaWRc
biIsIG9wdGFyZyk7Ci0JCQkJCXVzYWdlKDApOwotCQkJCX0KLQkJCQl1bml0X2xhYmVsW3NpemVv
Zih1bml0X2xhYmVsKS0xXSA9ICdcMCc7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlICd0JzoKLQkJCQl0
cmFuc2Zlcl9zY3JlZW4gPSAxOyAgLyogc2hvdyB0cmFuc2ZlciBzY3JlZW4gKi8KLQkJCQlicmVh
azsgIAotCQkJY2FzZSAnZCc6Ci0JCQkJZGFlbW9uX21vZGUgPSAxOyAgLyogZ28gdG8gZGFlbW9u
IG1vZGUgKi8KLQkJCQlicmVhazsKLQkJCWNhc2UgJ1YnOiAgLyogc2hvdyB2ZXJzaW9uICovCi0J
CQkJZnByaW50ZihzdGRvdXQsICJuZXRsY2RjbGllbnQgdiVzXG4iLCBWRVJTSU9OKTsKLQkJCQll
eGl0KDApOwotCQkJY2FzZSAnaCc6IC8qIHNob3cgaGVscCAqLwotCQkJCXVzYWdlKDApOwotCQkJ
CWV4aXQoMCk7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gb3B0aW5kOwotCQotfSAvKiBkZWNvZGVfc3dp
dGNoZXMoKSAqLwotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIAotICogU2hvdyBwcm9ncmFtIGhlbHAg
YW5kIGV4aXQuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiAKLSAqLwotCi1zdGF0aWMgdm9pZAotdXNhZ2Ug
KGludCBzdGF0dXMpCi17Ci0JcHJpbnRmICgiXG4iCi0ibmV0bGNkY2xpZW50IHYlcyBmb3IgTENE
cHJvYywgYnkgTHVpcyBMbG9yZW50ZVxuIiwgVkVSU0lPTik7Ci0JcHJpbnRmICgiXG4iCi0iVXNh
Z2U6ICVzIC1pIDxpbnRlcmZhY2U+IFstYSBhbGlhc10gWyAtdGRoViBdIFsgLXMgc2VydmVyIF0g
WyAtcCBwb3J0IF0gWy11IHVuaXRdXG4iLCBwcm9ncmFtX25hbWUpOwotCXByaW50ZiAoIlxuIgot
Ik9wdGlvbnMgaW4gW10ncyBhcmUgb3B0aW9uYWwuXG4iCi0iICAtaSAsIC0taW50ZXJmYWNlPUlO
VEVSRkFDRSAgICAgICAgIHNob3cgSU5URVJGQUNFIHN0YXRpc3RpY3NcbiIKLSIgIC1hICwgLS1h
bGlhcz1BTElBUyAgICAgICAgICAgICAgICAgYWxpYXMgbmFtZSBmb3IgdGhlIGludGVyZmFjZSAo
LWEgaGFzIHRvIFxuIgotIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
bGxvdyAtaSlcbiIKLSIgIC1zLCAtLXNlcnZlcj1TRVJWRVIgICAgICAgICAgICAgICAgY29ubmVj
dCB0byBTRVJWRVIgKGRlZmF1bHQgaXMgbG9jYWxob3N0KVxuIgotIiAgLXAsIC0tcG9ydD1OVU1C
RVIgICAgICAgICAgICAgICAgICBjb25uZWN0IHRvIHNwZWNpZmllZCBwb3J0IG51bWJlciAoZGVm
YXVsdFxuIgotIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIDEzNjY2
KVxuIgotIiAgLXUsIC0tdW5pdD1UWVBFICAgICAgICAgICAgICAgICAgICBzcGVlZCBtZWFzdXJl
IHVuaXQuIEF2YWlsYWJsZSB1bml0cyBhcmU6XG4iCi0iICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnl0ZSAoZGVmYXVsdClcbiIKLSIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiaXRcbiIKLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYWNrZXRcbiIKLSIgIC10LCAtLXRyYW5zZmVyICAgICAgICAgICAgICAgICAgICAg
YWRkIHNjcmVlbiB3aXRoIHRyYW5zZmVycmVkIHRyYWZmaWNcbiIKLSIgIC1kLCAtLWRhZW1vbiAg
ICAgICAgICAgICAgICAgICAgICAgcnVuIGluIHRoZSBiYWNrZ3JvdW5kXG4iCi0iICAtaCwgLS1o
ZWxwICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0XG4i
Ci0iICAtViwgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGlu
Zm9ybWF0aW9uIGFuZCBleGl0XG4iCi0pOwotCXByaW50ZigiXG4iCi0iRXhhbXBsZTpcbiIKLSIg
ICVzIC1zIG15LnNlcnZlci5vcmcgLXAgMjMwMCAtdSBiaXQgLWkgZXRoMCAtYSBMQU5cbiIsIHBy
b2dyYW1fbmFtZSk7Ci0JCQotCWV4aXQgKHN0YXR1cyk7Ci0KLX0gLyogdXNhZ2UoKSAqLwotCi0K
LSNlbHNlCi0KLQogLyogcmVhZHMgYW5kIHBhcnNlcyBjb25maWd1cmF0aW9uIGZpbGUgKi8KIHN0
YXRpYyBpbnQKIGlmYWNlX3Byb2Nlc3NfY29uZmlnZmlsZSgpCkBAIC00MjIsNyArMTYyLDcgQEAK
IAkvKiBmb3IgZWFjaCBpbnRlcmZhY2UgZG8gKi8KIAlmb3IgKGlmYWNlX25tYnIgPSAwOyBpZmFj
ZV9ubWJyIDwgaWZhY2VfY291bnQ7IGlmYWNlX25tYnIrKykgewogCQkvKnJlYWQgaWZhY2VfcGFy
YW1ldGVyIHN0YXRzICovCi0JCWlmICghZ2V0X2lmYWNlX3N0YXRzKCZpZmFjZVtpZmFjZV9ubWJy
XSkpIHsKKwkJaWYgKCFtYWNoaW5lX2dldF9pZmFjZV9zdGF0cygmaWZhY2VbaWZhY2Vfbm1icl0p
KSB7CiAJCQkvKiB0aGVyZSB3YXMgYW4gZXJyb3IsIHNvIHdlIGV4aXQgdGhlIGxvb3AgKi8KIAkg
ICAgCQlicmVhazsKIAkgICAgCX0KQEAgLTQ0NCwxNDAgKzE4NCw2IEBACiAJcmV0dXJuIDA7CiB9
CSAgLy8gRW5kIGlmYWNlX3NjcmVlbigpCiAKLSNlbmRpZiAvL05FVExDRENMSUVOVAotCi0vKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgotICogUmVhZCBpbnRlcmZhY2Ugc3RhdGlzdGljcyBmcm9tIHN5c3RlbSBh
bmQgIHN0b3JlIGluIHRoZSBzdHJ1Y3QgCi0gKiBwYXNzZWQgYXMgYSBwb2ludGVyLiBJZiB0aGVy
ZSBhcmUgbm8gZXJyb3JzLCBpdCByZXR1cm5zIDEuIElmIGVycm9ycywgCi0gKiByZXR1cm5zIDAu
Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiAKLSAqLwotCi1pbnQKLWdldF9pZmFjZV9zdGF0cyAoSWZhY2VJ
bmZvICppbnRlcmZhY2UpCi17Ci0jaWZkZWYgbGludXgKLQlGSUxFICpmaWxlOyAgIC8qIGZpbGUg
aGFuZGxlciAqLwotCWNoYXIgYnVmZmVyWzEwMjRdOyAgLyogYnVmZmVyIHRvIHdvcmsgd2l0aCB0
aGUgZmlsZSAqLwotCXN0YXRpYyBpbnQgZmlyc3RfdGltZSA9IDE7ICAvKiBpcyBpdCBmaXJzdCB0
aW1lIHdlIGNhbGwgdGhpcyBmdW5jdGlvbj8gKi8KLQljaGFyICpjaF9wb2ludGVyID0gTlVMTDsg
IC8qIHBvaW50ZXIgdG8gd2hlcmUgaW50ZXJmYWNlIHZhbHVlcyBhcmUgaW4gZmlsZSAqLwotCi0J
LyogT3BlbiB0aGUgZmlsZSBpbiByZWFkLW9ubHkgbW9kZSBhbmQgcGFyc2UgKi8KLQotCWlmICgo
ZmlsZSA9IGZvcGVuKERFVkZJTEUsICJyIikpICE9IE5VTEwpIHsKLQkJLyogU2tpcCBmaXJzdCAy
IGhlYWRlciBsaW5lcyBvZiBmaWxlICovCi0JCWZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciks
IGZpbGUpOwotCQlmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmaWxlKTsKLQkJCi0JCS8q
IEJ5IGRlZmF1bHQsIHRyZWF0IGludGVyZmFjZSBhcyBkb3duICovCi0JCWludGVyZmFjZS0+c3Rh
dHVzID0gZG93bjsKLQkJCi0JCS8qIFNlYXJjaCBpZmFjZV9uYW1lIGFuZCBzY2FuIHZhbHVlcyAq
LwotCQl3aGlsZSAoKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGZpbGUpICE9IE5VTEwp
KSB7Ci0JCQlpZiAoc3Ryc3RyKGJ1ZmZlciwgaW50ZXJmYWNlLT5uYW1lKSkgewotCQkJCS8qIGlu
dGVyZmFjZSBleGlzdHMgKi8KLQkJCQlpbnRlcmZhY2UtPnN0YXR1cyA9IHVwOyAvKiBpcyB1cCAq
LwotCQkJCWludGVyZmFjZS0+bGFzdF9vbmxpbmUgPSB0aW1lKE5VTEwpOyAvKiBzYXZlIGFjdHVh
bCB0aW1lICovCi0JCQkJCi0JCQkJLyogc2VhcmNoICc6JyBhbmQgc2tpcCBvdmVyIGl0ICovCi0J
CQkJY2hfcG9pbnRlciA9IHN0cmNocihidWZmZXIsICc6Jyk7Ci0JCQkJY2hfcG9pbnRlcisrOwot
CQkJCQotCQkJCS8qIE5vdyBjaF9wb2ludGVyIHBvaW50cyB0byB2YWx1ZXMgb2YgaWZhY2VfbmFt
ZSAqLwotCQkJCS8qIFNjYW4gdmFsdWVzIGZyb20gaGVyZSAqLwotCQkJCXNzY2FuZihjaF9wb2lu
dGVyLCAiJWxmICVsZiAlKnMgJSpzICUqcyAlKnMgJSpzICUqcyAlbGYgJWxmIiwKLQkJCQkJJmlu
dGVyZmFjZS0+cmNfYnl0ZSwKLQkJCQkJJmludGVyZmFjZS0+cmNfcGt0LAotCQkJCQkmaW50ZXJm
YWNlLT50cl9ieXRlLAotCQkJCQkmaW50ZXJmYWNlLT50cl9wa3QpOwotCi0JCQkJLyogaWYgaXMg
dGhlIGZpcnN0IHRpbWUgd2UgY2FsbCB0aGlzIGZ1bmN0aW9uLCAKLQkJCQkgKiBvbGQgdmFsdWVz
IGFyZSB0aGUgc2FtZSBhcyBuZXcgc28gd2UgZG9uJ3QgCi0JCQkJICogZ2V0IGJpZyBzcGVlZHMg
d2hlbiBjYWxjdWxhdGluZwotCQkJCSAqLwotCQkJCWlmIChmaXJzdF90aW1lKSB7Ci0JCQkJCWlu
dGVyZmFjZS0+cmNfYnl0ZV9vbGQgPSBpbnRlcmZhY2UtPnJjX2J5dGU7Ci0JCQkJCWludGVyZmFj
ZS0+dHJfYnl0ZV9vbGQgPSBpbnRlcmZhY2UtPnRyX2J5dGU7Ci0JCQkJCWludGVyZmFjZS0+cmNf
cGt0X29sZCA9IGludGVyZmFjZS0+cmNfcGt0OwotCQkJCQlpbnRlcmZhY2UtPnRyX3BrdF9vbGQg
PSBpbnRlcmZhY2UtPnRyX3BrdDsKLQkJCQkJZmlyc3RfdGltZSA9IDA7ICAvKiBub3cgaXQgaXNu
J3QgZmlyc3QgdGltZSAqLwotCQkJCX0KLQkJCX0KLQkJfSAvKiB3aGlsZSAqLwotCi0JCWZjbG9z
ZShmaWxlKTsgIC8qIGNsb3NlIGZpbGUgKi8KLQkJcmV0dXJuIDE7ICAvKiBldmVyeXRoaW5nIHdl
bnQgT0sgKi8KLQotCX0KLQllbHNlIHsgIC8qIGVycm9yIHdoZW4gb3BlbmluZyB0aGUgZmlsZSAq
LwotCQlmcHJpbnRmKHN0ZGVyciwiRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzXG4iLCBERVZGSUxF
KTsKLQkJcmV0dXJuIDA7IC8qIHNvbWV0aGluZyB3ZW50IHdyb25nICovCi0JfQotI2VuZGlmCi0K
LSNpZmRlZiBfX0ZyZWVCU0RfXwotCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8
c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSNpbmNsdWRlIDxuZXQvaWYu
aD4KLSNpbmNsdWRlIDxuZXQvaWZfbWliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8c3RkaW8uaD4KLQotCXN0YXRpYyBpbnQgICAgICBmaXJzdF90aW1lID0gMTsJLyogaXMgaXQg
Zmlyc3QgdGltZSB3ZSBjYWxsIHRoaXMgZnVuY3Rpb24/ICovCi0JaW50ICAgICAgICAgICAgIHJv
d3M7Ci0JaW50ICAgICAgICAgICAgIG5hbWVbNl0gPSB7Q1RMX05FVCwgUEZfTElOSywgTkVUTElO
S19HRU5FUklDLCBJRk1JQl9JRkRBVEEsIDAsIElGREFUQV9HRU5FUkFMfTsKLQlzaXplX3QgICAg
ICAgICAgbGVuOwotCXN0cnVjdCBpZm1pYmRhdGEgaWZtZDsgLyogaWZtaWJkYXRhIGNvbnRhaW5z
IHRoZSBuZXR3b3JrIHN0YXRpc3RpY3MgKi8KLQotCWxlbiA9IHNpemVvZihyb3dzKTsKLQkvKiBn
ZXQgbnVtYmVyIG9mIGludGVyZmFjZXMgKi8KLQlpZiAoc3lzY3RsYnluYW1lKCJuZXQubGluay5n
ZW5lcmljLnN5c3RlbS5pZmNvdW50IiwgJnJvd3MsICZsZW4sIE5VTEwsIDApID09IDApIHsKLQkJ
aW50ZXJmYWNlLT5zdGF0dXMgPSBkb3duOyAvKiBzZXQgc3RhdHVzIGRvd24gYnkgZGVmYXVsdCAq
LwotCi0JCWxlbiA9IHNpemVvZihpZm1kKTsKLQkJLyogd2FsayB0aHJvdWdoIGFsbCBpbnRlcmZh
Y2VzIGluIHRoZSBpZm1pYiB0YWJsZSBmcm9tIGxhc3QgdG8gZmlyc3QgKi8KLQkJZm9yICggOyBy
b3dzID4gMDsgcm93cy0tKSB7Ci0JCQluYW1lWzRdID0gcm93czsgLyogc2V0IHRoZSBpbnRlcmZh
Y2UgaW5kZXggKi8KLQkJCS8qIHJldHJpdmUgdGhlIGlmbWliZGF0YSBmb3IgdGhlIGN1cnJlbnQg
aW5kZXggKi8KLQkJCWlmIChzeXNjdGwobmFtZSwgNiwgJmlmbWQsICZsZW4sIE5VTEwsIDApID09
IC0xKSB7Ci0JCQkJcGVycm9yKCJzeXNjdGxfcmVhZCIpOwotCQkJCWJyZWFrOwotCQkJfQotCQkJ
LyogY2hlY2sgaWYgaXRzIGludGVyZmFjZSBuYW1lIG1hdGNoZXMgKi8KLQkJCWlmIChzdHJjbXAo
aWZtZC5pZm1kX25hbWUsIGludGVyZmFjZS0+bmFtZSkgPT0gMCkgewotCQkJCWludGVyZmFjZS0+
bGFzdF9vbmxpbmUgPSB0aW1lKE5VTEwpOwkvKiBzYXZlIGFjdHVhbCB0aW1lICovCi0KLQkJCQlp
ZiAoKGlmbWQuaWZtZF9mbGFncyAmIElGRl9VUCkgPT0gSUZGX1VQKQotCQkJCQlpbnRlcmZhY2Ut
PnN0YXR1cyA9IHVwOwkvKiBpcyB1cCAqLwotCi0JCQkJaW50ZXJmYWNlLT5yY19ieXRlID0gaWZt
ZC5pZm1kX2RhdGEuaWZpX2lieXRlczsKLQkJCQlpbnRlcmZhY2UtPnRyX2J5dGUgPSBpZm1kLmlm
bWRfZGF0YS5pZmlfb2J5dGVzOwotCQkJCWludGVyZmFjZS0+cmNfcGt0ID0gaWZtZC5pZm1kX2Rh
dGEuaWZpX2lwYWNrZXRzOwotCQkJCWludGVyZmFjZS0+dHJfcGt0ID0gaWZtZC5pZm1kX2RhdGEu
aWZpX29wYWNrZXRzOwotCi0JCQkJaWYgKGZpcnN0X3RpbWUpIHsKLQkJCQkJaW50ZXJmYWNlLT5y
Y19ieXRlX29sZCA9IGludGVyZmFjZS0+cmNfYnl0ZTsKLQkJCQkJaW50ZXJmYWNlLT50cl9ieXRl
X29sZCA9IGludGVyZmFjZS0+dHJfYnl0ZTsKLQkJCQkJaW50ZXJmYWNlLT5yY19wa3Rfb2xkID0g
aW50ZXJmYWNlLT5yY19wa3Q7Ci0JCQkJCWludGVyZmFjZS0+dHJfcGt0X29sZCA9IGludGVyZmFj
ZS0+dHJfcGt0OwotCQkJCQlmaXJzdF90aW1lID0gMDsJLyogbm93IGl0IGlzbid0IGZpcnN0IHRp
bWUgKi8KLQkJCQl9Ci0JCQkJcmV0dXJuIDE7Ci0JCQl9Ci0JCX0KLQkJLyogaWYgd2UgYXJlIGhl
cmUgdGhlcmUgaXMgbm8gaW50ZXJmYWNlIHdpdGggdGhlIGdpdmVuIG5hbWUgKi8KLQkJZnByaW50
ZihzdGRlcnIsICJUaGVyZSBpcyBubyBpbnRlcmZhY2UgbmFtZWQgJXNcbiIsIGludGVyZmFjZS0+
bmFtZSk7Ci0JCXJldHVybiAwOwotCX0gZWxzZSB7Ci0JCXBlcnJvcigiZ2V0X2lmYWNlX3N0YXRz
Iik7Ci0JCXJldHVybiAwOwotCX0KLQotI2VuZGlmCQkJCS8qIF9fRnJlZUJTRF9fICovCi0KLX0g
LyogZ2V0X2lmYWNlX3N0YXRzKCkgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIFNlbmQgY29t
bWFuZHMgdG8gc2VydmVyIHRvIGFkZCBzcGVlZCBzY3JlZW4gd2l0aCBhbGwgcmVxdWlyZWQgd2lk
Z2V0cwpAQCAtNjQ5LDcyICsyNTUsMjIgQEAKIHZvaWQgCiBmb3JtYXRfdmFsdWUgKGNoYXIgKmJ1
ZmYsIGRvdWJsZSB2YWx1ZSwgY2hhciAqdW5pdCkKIHsKLQlmbG9hdCBmb3JtYXRlZF92YWx1ZTsK
LQotCS8qIGlmIHRoZSBtZWFzdXJlIHVuaXQgaXMgaW4gJ2InIChiaXRzKSwgdGhlIHZhbHVlIHBh
c3NlZCBtdXN0Ci0JICogYmUgY29udmVydGVkIHRvIGJpdHMgKGZyb20gYnl0ZXMpCi0JICovCi0J
aWYgKHN0cnN0cih1bml0LCAiYiIpKSB7CisJLyogQ29udmVydCBieXRlcyB0byBiaXRzLCBpZiBu
ZWNlc3NhcnkgKi8KKwlpZiAoc3Ryc3RyKHVuaXQsICJiIikpCiAJCXZhbHVlICo9IDg7Ci0JfQot
Ci0JLyogYnl0ZXMsIGJpdHMgb3IgcGFja2V0cyAqLwotCWlmICh2YWx1ZSA8IDEwMjQpIHsKLQkJ
c3ByaW50ZihidWZmLCAiJThsZCAlcyIsKGxvbmcpdmFsdWUsIHVuaXQpOwotCQlyZXR1cm47Ci0J
fQotCQotCS8qIEtpbG9ieXRlcywgS2lsb2JpdHMgb2YgS2lsb3BhY2tldHMgKi8KLQlpZiAodmFs
dWUgPCAxMDAwMDAwLjBmKSB7Ci0JCWlmIChzdHJzdHIodW5pdCwgIkIiKSkgeyAvKiAxIEtCID0g
MTAyNCAqLwotCQkJZm9ybWF0ZWRfdmFsdWUgPSAoZmxvYXQpIHZhbHVlIC8gMTAyNC4wZjsKLQkJ
fQotCQllbHNlIHsgLyogMSBLID0gMTAwMCAqLwotCQkJZm9ybWF0ZWRfdmFsdWUgPSAoZmxvYXQp
IHZhbHVlIC8gMTAwMC4wZjsKLQkJfQotCi0JCXNwcmludGYoYnVmZiwgIiU4LjNmIEslcyIsIGZv
cm1hdGVkX3ZhbHVlLCB1bml0KTsKLQkJcmV0dXJuOwotCX0KIAotCS8qIE1lZ2FieXRlcywgTWVn
YWJpdHMgb3IgTWVnYXBhY2tldHMgKi8KLQlpZiAodmFsdWUgPCAxMDAwMDAwMDAwLjBmKSB7Ci0J
CWlmIChzdHJzdHIodW5pdCwgIkIiKSkgeyAvKiAxIE1CID0gMTAyNCBLQiAqLwotCQkJZm9ybWF0
ZWRfdmFsdWUgPSAoZmxvYXQpIHZhbHVlIC8gMTA0ODU3Ni4wZjsgLyogMTAyNCBeIDIgKi8KLQkJ
fQotCQllbHNlIHsgLyogMSBNID0gMTAwMCBLICovCi0JCQlmb3JtYXRlZF92YWx1ZSA9IChmbG9h
dCkgdmFsdWUgLyAxMDAwMDAwLjBmOyAvKiAxMDAwIF4gMiAqLwotCQl9Ci0JCQkKLQkJc3ByaW50
ZihidWZmLCAiJTguM2YgTSVzIiwgZm9ybWF0ZWRfdmFsdWUsIHVuaXQpOwotCQlyZXR1cm47Ci0J
fQorCS8qIElmIHVuaXRzIGFyZSBieXRlcywgdGhlbiBkaXZpZGUgYnkgMl4xMCwgb3RoZXJ3aXNl
IGJ5IDEwXjMgKi8KKwljaGFyICptYWcgPSBjb252ZXJ0X2RvdWJsZSgmdmFsdWUsIChzdHJzdHIo
dW5pdCwgIkIiKSkgPyAxMDI0IDogMTAwMCwgMS4wZik7CiAKLQkvKiBHaWdhYnl0ZXMsIEdpZ2Fi
aXRzIG9yIEdpZ2FwYWNrZXRzICovCi0JaWYgKHZhbHVlIDwgMTAwMDAwMDAwMDAwMC4wZikgewot
CQlpZiAoc3Ryc3RyKHVuaXQsICJCIikpIHsgLyogMSBHQiA9IDEwMjQgTUIgKi8KLQkJCWZvcm1h
dGVkX3ZhbHVlID0gKGZsb2F0KSB2YWx1ZSAvIDEwNzM3NDE4MjQuMGY7IC8qIDEwMjQgXiAzICov
Ci0JCX0KLQkJZWxzZSB7IC8qIDEgRyA9IDEwMDAgTSAqLwotCQkJZm9ybWF0ZWRfdmFsdWUgPSAo
ZmxvYXQpIHZhbHVlIC8gMTAwMDAwMDAwMC4wZjsgLyogMTAwMCBeIDMgKi8KLQkJfQotCQkJCi0J
CXNwcmludGYoYnVmZiwgIiU4LjNmIEclcyIsIGZvcm1hdGVkX3ZhbHVlLCB1bml0KTsKLQkJcmV0
dXJuOwotCX0KKwkvKiBGb3JtYXR0aW5nIHJ1bGVzOgorCSAqIC0gaWYgb3JpZ2luYWwgdmFsdWUg
d2FzIDwgMTAwMCwgb3V0cHV0IGRlY2ltYWwgdmFsdWUgb25seQorCSAqIC0gb3RoZXJ3aXNlIGZv
cm1hdCB3aXRoIDMgcHJlY2lzaW9uCisJICovCisJaWYgKG1hZ1swXSA9PSAwKQorCQlzcHJpbnRm
KGJ1ZmYsICIlOGxkICVzIiwgKGxvbmcpIHZhbHVlLCB1bml0KTsKKwllbHNlCisJCXNwcmludGYo
YnVmZiwgIiU3LjNmICVzJXMiLCB2YWx1ZSwgbWFnLCB1bml0KTsKIAotCS8qIFRlcmFieXRlcywg
VGVyYWJpdHMgb3IgVGVyYXBhY2tldHMgKi8KLQlpZiAodmFsdWUgPj0gMTAwMDAwMDAwMDAwMC4w
ZikgewotCQlpZiAoc3Ryc3RyKHVuaXQsICJCIikpIHsgLyogMSBUQiA9IDEwMjQgR0IgKi8KLQkJ
CWZvcm1hdGVkX3ZhbHVlID0gKGZsb2F0KSB2YWx1ZSAvIDEwOTk1MTE2Mjc3NzYuMGY7IC8qIDEw
MjQgXiA0ICovCi0JCX0KLQkJZWxzZSB7IC8qIDEgVCA9IDEwMDAgRyAqLwotCQkJZm9ybWF0ZWRf
dmFsdWUgPSAoZmxvYXQpIHZhbHVlIC8gMTAwMDAwMDAwMDAwMC4wZjsgLyogMTAwMCBeIDQgKi8K
LQkJfQotCQkJCi0JCXNwcmludGYoYnVmZiwgIiU4LjNmIFQlcyIsIGZvcm1hdGVkX3ZhbHVlLCB1
bml0KTsKLQkJcmV0dXJuOwotCX0KIH0gLyogZm9ybWF0X3ZhbHVlKCkgKi8KIAogLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKQEAgLTcyNiw5NyArMjgyLDIzIEBACiB2b2lkIAogZm9ybWF0X3ZhbHVlX211bHRp
X2ludGVyZmFjZSAoY2hhciAqYnVmZiwgZG91YmxlIHZhbHVlLCBjaGFyICp1bml0KQogewotCWNo
YXIgbXlidWZmWzIwXTsgIC8qIHRlbXAgYnVmZmVyICovCi0JZmxvYXQgZm9ybWF0ZWRfdmFsdWU7
Ci0KLQkvKiBpZiB0aGUgbWVhc3VyZSB1bml0IGlzIGluICdiJyAoYml0cyksIHRoZSB2YWx1ZSBw
YXNzZWQgbXVzdAotCSAqIGJlIGNvbnZlcnRlZCB0byBiaXRzIChmcm9tIGJ5dGVzKQotCSAqLwot
CWlmIChzdHJzdHIodW5pdCwgImIiKSkgeworCWlmIChzdHJzdHIodW5pdCwgImIiKSkKIAkJdmFs
dWUgKj0gODsKLQl9Ci0KLQkvKiBieXRlcywgYml0cyBvciBwYWNrZXRzICovCi0JaWYgKHZhbHVl
IDwgMTAwMCkgewotCQlzcHJpbnRmKGJ1ZmYsICIlM2xkICIsIChsb25nKXZhbHVlKTsKLQkJcmV0
dXJuOwotCX0KLQkKLQkvKiBLaWxvYnl0ZXMsIEtpbG9iaXRzIG9mIEtpbG9wYWNrZXRzICovCi0J
aWYgKHZhbHVlIDwgMTAwMDAwMCkgewotCQlpZiAoc3Ryc3RyKHVuaXQsICJCIikpIHsgLyogMSBL
QiA9IDEwMjQgKi8KLQkJCWZvcm1hdGVkX3ZhbHVlID0gKGZsb2F0KSB2YWx1ZSAvIDEwMjQuMGY7
Ci0JCX0KLQkJZWxzZSB7IC8qIDEgSyA9IDEwMDAgKi8KLQkJCWZvcm1hdGVkX3ZhbHVlID0gKGZs
b2F0KSB2YWx1ZSAvIDEwMDAuMGY7Ci0JCX0KLQotCQlzcHJpbnRmKG15YnVmZiwgIiUzLjFmIiwg
Zm9ybWF0ZWRfdmFsdWUpOwotCQlpZiAobXlidWZmWzJdICE9ICcuJykgewotCQkJc3ByaW50Zihi
dWZmLCAiJS4zc0siLCBteWJ1ZmYpOwotCQl9Ci0JCWVsc2UgewotCQkJc3ByaW50ZihidWZmLCAi
ICUuMnNLIiwgbXlidWZmKTsKLQkJfQotCQlyZXR1cm47Ci0JfQogCi0JLyogTWVnYWJ5dGVzLCBN
ZWdhYml0cyBvciBNZWdhcGFja2V0cyAqLwotCWlmICh2YWx1ZSA8IDEwMDAwMDAwMDAuMGYpIHsK
LQkJaWYgKHN0cnN0cih1bml0LCAiQiIpKSB7IC8qIDEgTUIgPSAxMDI0IEtCICovCi0JCQlmb3Jt
YXRlZF92YWx1ZSA9IChmbG9hdCkgdmFsdWUgLyAxMDQ4NTc2LjBmOyAvKiAxMDI0IF4gMiAqLwot
CQl9Ci0JCWVsc2UgeyAvKiAxIE0gPSAxMDAwIEsgKi8KLQkJCWZvcm1hdGVkX3ZhbHVlID0gKGZs
b2F0KSB2YWx1ZSAvIDEwMDAwMDAuMGY7IC8qIDEwMDAgXiAyICovCi0JCX0KLQkJCQotCQlzcHJp
bnRmKG15YnVmZiwgIiUzLjFmIiwgZm9ybWF0ZWRfdmFsdWUpOwotCQlpZiAobXlidWZmWzJdICE9
ICcuJykgewotCQkJc3ByaW50ZihidWZmLCAiJS4zc00iLCBteWJ1ZmYpOwotCQl9Ci0JCWVsc2Ug
ewotCQkJc3ByaW50ZihidWZmLCAiICUuMnNNIiwgbXlidWZmKTsKLQkJfQotCQlyZXR1cm47Ci0J
fQorCWNoYXIgKm1hZyA9IGNvbnZlcnRfZG91YmxlKCZ2YWx1ZSwgKHN0cnN0cih1bml0LCAiQiIp
KSA/IDEwMjQgOiAxMDAwLCAxLjBmKTsKIAotCS8qIEdpZ2FieXRlcywgR2lnYWJpdHMgb3IgR2ln
YXBhY2tldHMgKi8KLQlpZiAodmFsdWUgPCAxMDAwMDAwMDAwMDAwLjBmKSB7Ci0JCWlmIChzdHJz
dHIodW5pdCwgIkIiKSkgeyAvKiAxIEdCID0gMTAyNCBNQiAqLwotCQkJZm9ybWF0ZWRfdmFsdWUg
PSAoZmxvYXQpIHZhbHVlIC8gMTA3Mzc0MTgyNC4wZjsgLyogMTAyNCBeIDMgKi8KLQkJfQotCQll
bHNlIHsgLyogMSBHID0gMTAwMCBNICovCi0JCQlmb3JtYXRlZF92YWx1ZSA9IChmbG9hdCkgdmFs
dWUgLyAxMDAwMDAwMDAwLjBmOyAvKiAxMDAwIF4gMyAqLwotCQl9Ci0JCQkKLQkJc3ByaW50Ziht
eWJ1ZmYsICIlMy4xZiIsIGZvcm1hdGVkX3ZhbHVlKTsKLQkJaWYgKG15YnVmZlsyXSAhPSAnLicp
IHsKLQkJCXNwcmludGYoYnVmZiwgIiUuM3NHIiwgbXlidWZmKTsKLQkJfQotCQllbHNlIHsKLQkJ
CXNwcmludGYoYnVmZiwgIiAlLjJzRyIsIG15YnVmZik7Ci0JCX0KLQkJcmV0dXJuOwotCX0KKwkv
KiBGb3JtYXR0aW5nIHJ1bGVzOgorCSAqIC0gaWYgb3JpZ2luYWwgdmFsdWUgd2FzIDwgMTAwMCwg
b3V0cHV0IGRlY2ltYWwgdmFsdWUgb25seQorCSAqIC0gd2l0aCAxIHByZWNpc2lvbiBpZiA8MTAK
KwkgKiAtIGRlY2ltYWwgdmFsdWUgd2l0aCBtYWduaXR1ZGUgb3RoZXJ3aXNlCisJICovCisJaWYg
KG1hZ1swXSA9PSAwKQorCQlzcHJpbnRmKGJ1ZmYsICIlNGxkIiwgKGxvbmcpIHZhbHVlKTsKKwll
bHNlIGlmICh2YWx1ZSA8IDEwKQorCQlzcHJpbnRmKGJ1ZmYsICIlMy4xZiVzIiwgdmFsdWUsIG1h
Zyk7CisJZWxzZQorCQlzcHJpbnRmKGJ1ZmYsICIlMy5mJXMiLCB2YWx1ZSwgbWFnKTsKIAotCS8q
IFRlcmFieXRlcywgVGVyYWJpdHMgb3IgVGVyYXBhY2tldHMgKi8KLQlpZiAodmFsdWUgPj0gMTAw
MDAwMDAwMDAwMC4wZikgewotCQlpZiAoc3Ryc3RyKHVuaXQsICJCIikpIHsgLyogMSBUQiA9IDEw
MjQgR0IgKi8KLQkJCWZvcm1hdGVkX3ZhbHVlID0gKGZsb2F0KSB2YWx1ZSAvIDEwOTk1MTE2Mjc3
NzYuMGY7IC8qIDEwMjQgXiA0ICovCi0JCX0KLQkJZWxzZSB7IC8qIDEgVCA9IDEwMDAgRyAqLwot
CQkJZm9ybWF0ZWRfdmFsdWUgPSAoZmxvYXQpIHZhbHVlIC8gMTAwMDAwMDAwMDAwMC4wZjsgLyog
MTAwMCBeIDQgKi8KLQkJfQotCQkJCi0JCXNwcmludGYobXlidWZmLCAiJTMuMWYiLCBmb3JtYXRl
ZF92YWx1ZSk7Ci0JCWlmIChteWJ1ZmZbMl0gIT0gJy4nKSB7Ci0JCQlzcHJpbnRmKGJ1ZmYsICIl
LjNzVCIsIG15YnVmZik7Ci0JCX0KLQkJZWxzZSB7Ci0JCQlzcHJpbnRmKGJ1ZmYsICIgJS4yc1Qi
LCBteWJ1ZmYpOwotCQl9Ci0JCXJldHVybjsKLQl9CiB9IC8qIGZvcm1hdF92YWx1ZV9tdWx0aV9p
bnRlcmZhY2UoKSAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTAzMiwyMyArNTE0LDMgQEAK
IAkJfQogCX0KIH0gLyogYWN0dWFsaXplX3RyYW5zZmVyX3NjcmVlbigpICovCi0KLSNpZmRlZiBO
RVRMQ0RDTElFTlQKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFeGl0IHRoZSBwcm9ncmFtIGluIGEg
Y2xlYW4gd2F5Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICovCi12b2lkCi1leGl0X3Byb2dyYW0gKGlu
dCB2YWwpCi17Ci0JLyogY2hlY2sgaWYgc29ja2V0IGlzIG9wZW4gYW5kIGNsb3NlIGl0ICovCi0J
aWYgKHNvY2sgIT0gMCkgewotCQlzb2NrX2Nsb3NlKHNvY2spOwotCX0KLQkKLQlmcHJpbnRmKHN0
ZGVyciwgIlxuRXhpdGluZyBuZXRsY2RjbGllbnQuLi4uXG4iKTsKLQotCWV4aXQoMCk7Ci0JCi19
IC8qIGV4aXRfcHJvZ3JhbSgpICovCi0jZW5kaWYgLy9ORVRMQ0RDTElFTlQKZGlmZiAtciAtdSAu
Li9sY2Rwcm9jLUNWUy1jdXJyZW50LTIwMDYwNTA2L2NsaWVudHMvbGNkcHJvYy9pZmFjZS5oIC4v
Y2xpZW50cy9sY2Rwcm9jL2lmYWNlLmgKLS0tIC4uL2xjZHByb2MtQ1ZTLWN1cnJlbnQtMjAwNjA1
MDYvY2xpZW50cy9sY2Rwcm9jL2lmYWNlLmgJRnJpIEFwciAyOCAxMDowMTo0MCAyMDA2CisrKyAu
L2NsaWVudHMvbGNkcHJvYy9pZmFjZS5oCVN1biBNYXkgIDcgMjM6NTA6MDIgMjAwNgpAQCAtMTIs
NDggKzEyLDEwIEBACiAJCSAgCiAKICNpbmNsdWRlIDx0aW1lLmg+Ci0KLSNkZWZpbmUgREVWRklM
RSAiL3Byb2MvbmV0L2RldiIgIC8qIGZpbGUgdG8gcmVhZCBzdGF0aXN0aWNzIGZyb20gKi8KLQot
Lyogc3RhdHVzIGRlZmluaXRpb25zICovCi0KLXR5cGVkZWYgZW51bSB7Ci0JZG93biA9IDAsCi0J
dXAgPSAxLAotfSBJZmFjZVN0YXR1czsKKyNpbmNsdWRlICJtYWNoaW5lLmgiCiAKICNkZWZpbmUg
TUFYX0lOVEVSRkFDRVMgMyAgLyogbWF4IG51bWJlciBvZiBpbnRlcmZhY2VzIGluIG11bHRpLWlu
dGVyZmFjZSBtb2RlICovCiAKLS8qIFN0cnVjdCBmb3IgaW50ZXJmYWNlIHZhbHVlcyAodHJhbnNt
aXNpb24sIHJlY2VwdGlvbiwgZXRjLi4pICovCi0KLXR5cGVkZWYgc3RydWN0IGlmYWNlX2luZm8K
LXsKLQkvKiBpbnRlcmZhY2UgbmFtZSBhbmQgYWxpYXMgKD1kaXNwbGF5IG5hbWUpICovCi0JY2hh
ciAqbmFtZTsKLQljaGFyICphbGlhczsKLQotCUlmYWNlU3RhdHVzIHN0YXR1czsKLQotCXRpbWVf
dCBsYXN0X29ubGluZTsKLQotCS8qIHJlY2VpdmVkIGJ5dGVzICovCi0JZG91YmxlIHJjX2J5dGU7
Ci0JZG91YmxlIHJjX2J5dGVfb2xkOwotCi0JLyogdHJhbnNtaXRlZCBieXRlcyAqLwotCWRvdWJs
ZSB0cl9ieXRlOwotCWRvdWJsZSB0cl9ieXRlX29sZDsKLQotCS8qIHJlY2VpdmVkIHBhY2tldHMg
Ki8KLQlkb3VibGUgcmNfcGt0OwotCWRvdWJsZSByY19wa3Rfb2xkOwotCi0JLyogdHJhbnNtaXRl
ZCBwYWNrZXRzICovCi0JZG91YmxlIHRyX3BrdDsKLQlkb3VibGUgdHJfcGt0X29sZDsKLX0gSWZh
Y2VJbmZvOwotCi0KIGludCBpZmFjZV9zY3JlZW4gKGludCByZXAsIGludCBkaXNwbGF5LCBpbnQg
KmZsYWdzX3B0cik7CiBJZmFjZUluZm8gaWZhY2VbTUFYX0lOVEVSRkFDRVNdOyAgLyogaW50ZXJm
YWNlIGluZm8gKi8KIApAQCAtNjEsMTUgKzIzLDYgQEAKIC8qIEZ1bmN0aW9ucyBwcm90b3RpcGVz
ICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiBzaG93IHVzYWdlIG9wdGlvbnMg
Ki8KLXN0YXRpYyB2b2lkIHVzYWdlIChpbnQgc3RhdHVzKTsKLQotLyogcGFyc2UgY29tbWFuZCBs
aW5lIHBhcmFtZXRlcnMgKi8KLXN0YXRpYyBpbnQgZGVjb2RlX3N3aXRjaGVzIChpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpOwotCi0vKiByZWFkIGludGVyZmFjZSBzdGF0cyBmcm9tIC9wcm9jL25ldC9k
ZXYgKi8KLWludCBnZXRfaWZhY2Vfc3RhdHMgKElmYWNlSW5mbyAqaW50ZXJmYWNlKTsKLQogLyog
c2VuZCBpbml0aWFsIGNvbW1hbmRzIHRvIHNlcnZlciB0byBhZGQgdGhlIHNwZWVkIHNjcmVlbiAq
Lwogdm9pZCBpbml0aWFsaXplX3NwZWVkX3NjcmVlbiAodm9pZCk7CiAKQEAgLTkxLDEwICs0NCw1
IEBACiAKIC8qIGFjdHVhbGl6ZSB3aWRnZXRzIHZhbHVlcyBpbiB0cmFuc2ZlciBzY3JlZW4gKi8K
IHZvaWQgYWN0dWFsaXplX3RyYW5zZmVyX3NjcmVlbiAoSWZhY2VJbmZvICppZmFjZSwgaW50IGlu
ZGV4KTsKLQotI2lmZGVmIE5FVExDRENMSUVOVAotLyogZXhpdCB0aGUgcHJvZ3JhbSBjbGVhbmx5
ICovCi12b2lkIGV4aXRfcHJvZ3JhbSAoaW50IHZhbCk7Ci0jZW5kaWYgLy9ORVRMQ0RDTElFTlQK
IAogI2VuZGlmCmRpZmYgLXIgLXUgLi4vbGNkcHJvYy1DVlMtY3VycmVudC0yMDA2MDUwNi9jbGll
bnRzL2xjZHByb2MvbWFjaGluZS5oIC4vY2xpZW50cy9sY2Rwcm9jL21hY2hpbmUuaAotLS0gLi4v
bGNkcHJvYy1DVlMtY3VycmVudC0yMDA2MDUwNi9jbGllbnRzL2xjZHByb2MvbWFjaGluZS5oCVdl
ZCBEZWMgMjQgMjA6NDc6NTUgMjAwMworKysgLi9jbGllbnRzL2xjZHByb2MvbWFjaGluZS5oCVN1
biBNYXkgIDcgMjM6Mjg6MDcgMjAwNgpAQCAtMjcsNiArMjcsNDAgQEAKIAlpbnQgbnVtYmVyOwog
fSBwcm9jaW5mb190eXBlOwogCisvKiBzdGF0dXMgZGVmaW5pdGlvbnMgZm9yIG5ldHdvcmsgaW50
ZXJmYWNlcyAqLwordHlwZWRlZiBlbnVtIHsKKwlkb3duID0gMCwKKwl1cCA9IDEsCit9IElmYWNl
U3RhdHVzOworCisvKiBTdHJ1Y3QgZm9yIG5ldHdvcmsgaW50ZXJmYWNlIHZhbHVlcyAodHJhbnNt
aXNpb24sIHJlY2VwdGlvbiwgZXRjLi4pICovCit0eXBlZGVmIHN0cnVjdCBpZmFjZV9pbmZvCit7
CisJLyogaW50ZXJmYWNlIG5hbWUgYW5kIGFsaWFzICg9ZGlzcGxheSBuYW1lKSAqLworCWNoYXIg
Km5hbWU7CisJY2hhciAqYWxpYXM7CisKKwlJZmFjZVN0YXR1cyBzdGF0dXM7CisKKwl0aW1lX3Qg
bGFzdF9vbmxpbmU7CisKKwkvKiByZWNlaXZlZCBieXRlcyAqLworCWRvdWJsZSByY19ieXRlOwor
CWRvdWJsZSByY19ieXRlX29sZDsKKworCS8qIHRyYW5zbWl0ZWQgYnl0ZXMgKi8KKwlkb3VibGUg
dHJfYnl0ZTsKKwlkb3VibGUgdHJfYnl0ZV9vbGQ7CisKKwkvKiByZWNlaXZlZCBwYWNrZXRzICov
CisJZG91YmxlIHJjX3BrdDsKKwlkb3VibGUgcmNfcGt0X29sZDsKKworCS8qIHRyYW5zbWl0ZWQg
cGFja2V0cyAqLworCWRvdWJsZSB0cl9wa3Q7CisJZG91YmxlIHRyX3BrdF9vbGQ7Cit9IElmYWNl
SW5mbzsKKwogaW50IG1hY2hpbmVfaW5pdCgpOwogaW50IG1hY2hpbmVfY2xvc2UoKTsKIApAQCAt
MzgsNSArNzIsNyBAQAogaW50IG1hY2hpbmVfZ2V0X3Byb2NzKExpbmtlZExpc3QgKnByb2NzKTsK
IGludCBtYWNoaW5lX2dldF9zbXBsb2FkKGxvYWRfdHlwZSAqcmVzdWx0LCBpbnQgKm51bWNwdXMp
OwogaW50IG1hY2hpbmVfZ2V0X3VwdGltZShkb3VibGUgKnVwLCBkb3VibGUgKmlkbGUpOworaW50
IG1hY2hpbmVfZ2V0X2lmYWNlX3N0YXRzIChJZmFjZUluZm8gKmludGVyZmFjZSk7CisKIAogI2Vu
ZGlmIC8qIF9sY2Rwcm9jX21hY2hpbmVfaF8gKi8KZGlmZiAtciAtdSAuLi9sY2Rwcm9jLUNWUy1j
dXJyZW50LTIwMDYwNTA2L2NsaWVudHMvbGNkcHJvYy9tYWNoaW5lX0Rhcndpbi5jIC4vY2xpZW50
cy9sY2Rwcm9jL21hY2hpbmVfRGFyd2luLmMKLS0tIC4uL2xjZHByb2MtQ1ZTLWN1cnJlbnQtMjAw
NjA1MDYvY2xpZW50cy9sY2Rwcm9jL21hY2hpbmVfRGFyd2luLmMJRnJpIEFwciAyOCAwOTowMDoz
MiAyMDA2CisrKyAuL2NsaWVudHMvbGNkcHJvYy9tYWNoaW5lX0Rhcndpbi5jCVN1biBNYXkgIDcg
MjM6NTM6MzMgMjAwNgpAQCAtNDI4LDQgKzQyOCwxMSBAQAogCXJldHVybihGQUxTRSk7CiB9CiAK
Ky8qIEdldCBuZXR3b3JrIHN0YXRpc3RpY3MgKi8KK2ludCBtYWNoaW5lX2dldF9pZmFjZV9zdGF0
cyAoSWZhY2VJbmZvICppbnRlcmZhY2UpCit7CisJLyogSW1wbGVtZW50YXRpb24gbWlzc2luZyAq
LworCXJldHVybiAwOworfQorCiAjZW5kaWYgLyogX19BUFBMRV9fICovCmRpZmYgLXIgLXUgLi4v
bGNkcHJvYy1DVlMtY3VycmVudC0yMDA2MDUwNi9jbGllbnRzL2xjZHByb2MvbWFjaGluZV9GcmVl
QlNELmMgLi9jbGllbnRzL2xjZHByb2MvbWFjaGluZV9GcmVlQlNELmMKLS0tIC4uL2xjZHByb2Mt
Q1ZTLWN1cnJlbnQtMjAwNjA1MDYvY2xpZW50cy9sY2Rwcm9jL21hY2hpbmVfRnJlZUJTRC5jCUZy
aSBBcHIgMjggMDk6MDA6MzIgMjAwNgorKysgLi9jbGllbnRzL2xjZHByb2MvbWFjaGluZV9GcmVl
QlNELmMJU3VuIE1heSAgNyAyMzozNToyMSAyMDA2CkBAIC00OCw2ICs0OCw5IEBACiAjaW5jbHVk
ZSA8bWFjaGluZS9hcG1fYmlvcy5oPgogI2luY2x1ZGUgPGt2bS5oPgogI2luY2x1ZGUgPGVycm5v
Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1
ZGUgPG5ldC9pZl9taWIuaD4KIAogI2luY2x1ZGUgIm1haW4uaCIKICNpbmNsdWRlICJtYWNoaW5l
LmgiCkBAIC00MTUsNSArNDE4LDY0IEBACiAKIAlyZXR1cm4obik7CiB9CisKKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisgKiBSZWFkIGludGVyZmFjZSBzdGF0aXN0aWNzIGZyb20gc3lzdGVtIGFuZCAgc3Rv
cmUgaW4gdGhlIHN0cnVjdCAKKyAqIHBhc3NlZCBhcyBhIHBvaW50ZXIuIElmIHRoZXJlIGFyZSBu
byBlcnJvcnMsIGl0IHJldHVybnMgMS4gSWYgZXJyb3JzLCAKKyAqIHJldHVybnMgMC4KKyAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqIAorICovCitpbnQgbWFjaGluZV9nZXRfaWZhY2Vfc3RhdHMgKElmYWNlSW5m
byAqaW50ZXJmYWNlKQoreworCXN0YXRpYyBpbnQgICAgICBmaXJzdF90aW1lID0gMTsJLyogaXMg
aXQgZmlyc3QgdGltZSB3ZSBjYWxsIHRoaXMgZnVuY3Rpb24/ICovCisJaW50ICAgICAgICAgICAg
IHJvd3M7CisJaW50ICAgICAgICAgICAgIG5hbWVbNl0gPSB7Q1RMX05FVCwgUEZfTElOSywgTkVU
TElOS19HRU5FUklDLCBJRk1JQl9JRkRBVEEsIDAsIElGREFUQV9HRU5FUkFMfTsKKwlzaXplX3Qg
ICAgICAgICAgbGVuOworCXN0cnVjdCBpZm1pYmRhdGEgaWZtZDsgLyogaWZtaWJkYXRhIGNvbnRh
aW5zIHRoZSBuZXR3b3JrIHN0YXRpc3RpY3MgKi8KKworCWxlbiA9IHNpemVvZihyb3dzKTsKKwkv
KiBnZXQgbnVtYmVyIG9mIGludGVyZmFjZXMgKi8KKwlpZiAoc3lzY3RsYnluYW1lKCJuZXQubGlu
ay5nZW5lcmljLnN5c3RlbS5pZmNvdW50IiwgJnJvd3MsICZsZW4sIE5VTEwsIDApID09IDApIHsK
KwkJaW50ZXJmYWNlLT5zdGF0dXMgPSBkb3duOyAvKiBzZXQgc3RhdHVzIGRvd24gYnkgZGVmYXVs
dCAqLworCisJCWxlbiA9IHNpemVvZihpZm1kKTsKKwkJLyogd2FsayB0aHJvdWdoIGFsbCBpbnRl
cmZhY2VzIGluIHRoZSBpZm1pYiB0YWJsZSBmcm9tIGxhc3QgdG8gZmlyc3QgKi8KKwkJZm9yICgg
OyByb3dzID4gMDsgcm93cy0tKSB7CisJCQluYW1lWzRdID0gcm93czsgLyogc2V0IHRoZSBpbnRl
cmZhY2UgaW5kZXggKi8KKwkJCS8qIHJldHJpdmUgdGhlIGlmbWliZGF0YSBmb3IgdGhlIGN1cnJl
bnQgaW5kZXggKi8KKwkJCWlmIChzeXNjdGwobmFtZSwgNiwgJmlmbWQsICZsZW4sIE5VTEwsIDAp
ID09IC0xKSB7CisJCQkJcGVycm9yKCJyZWFkIHN5c2N0bCIpOworCQkJCWJyZWFrOworCQkJfQor
CQkJLyogY2hlY2sgaWYgaXRzIGludGVyZmFjZSBuYW1lIG1hdGNoZXMgKi8KKwkJCWlmIChzdHJj
bXAoaWZtZC5pZm1kX25hbWUsIGludGVyZmFjZS0+bmFtZSkgPT0gMCkgeworCQkJCWludGVyZmFj
ZS0+bGFzdF9vbmxpbmUgPSB0aW1lKE5VTEwpOwkvKiBzYXZlIGFjdHVhbCB0aW1lICovCisKKwkJ
CQlpZiAoKGlmbWQuaWZtZF9mbGFncyAmIElGRl9VUCkgPT0gSUZGX1VQKQorCQkJCQlpbnRlcmZh
Y2UtPnN0YXR1cyA9IHVwOwkvKiBpcyB1cCAqLworCisJCQkJaW50ZXJmYWNlLT5yY19ieXRlID0g
aWZtZC5pZm1kX2RhdGEuaWZpX2lieXRlczsKKwkJCQlpbnRlcmZhY2UtPnRyX2J5dGUgPSBpZm1k
LmlmbWRfZGF0YS5pZmlfb2J5dGVzOworCQkJCWludGVyZmFjZS0+cmNfcGt0ID0gaWZtZC5pZm1k
X2RhdGEuaWZpX2lwYWNrZXRzOworCQkJCWludGVyZmFjZS0+dHJfcGt0ID0gaWZtZC5pZm1kX2Rh
dGEuaWZpX29wYWNrZXRzOworCisJCQkJaWYgKGZpcnN0X3RpbWUpIHsKKwkJCQkJaW50ZXJmYWNl
LT5yY19ieXRlX29sZCA9IGludGVyZmFjZS0+cmNfYnl0ZTsKKwkJCQkJaW50ZXJmYWNlLT50cl9i
eXRlX29sZCA9IGludGVyZmFjZS0+dHJfYnl0ZTsKKwkJCQkJaW50ZXJmYWNlLT5yY19wa3Rfb2xk
ID0gaW50ZXJmYWNlLT5yY19wa3Q7CisJCQkJCWludGVyZmFjZS0+dHJfcGt0X29sZCA9IGludGVy
ZmFjZS0+dHJfcGt0OworCQkJCQlmaXJzdF90aW1lID0gMDsJLyogbm93IGl0IGlzbid0IGZpcnN0
IHRpbWUgKi8KKwkJCQl9CisJCQkJcmV0dXJuIDE7CisJCQl9CisJCX0KKwkJLyogaWYgd2UgYXJl
IGhlcmUgdGhlcmUgaXMgbm8gaW50ZXJmYWNlIHdpdGggdGhlIGdpdmVuIG5hbWUgKi8KKwkJcmV0
dXJuIDA7CisJfSBlbHNlIHsKKwkJcGVycm9yKCJyZWFkIHN5c2N0bGJ5bmFtZSIpOworCQlyZXR1
cm4gMDsKKwl9Cit9IC8qIGdldF9pZmFjZV9zdGF0cygpICovCisKIAogI2VuZGlmIC8qIF9fRnJl
ZUJTRF9fICovCmRpZmYgLXIgLXUgLi4vbGNkcHJvYy1DVlMtY3VycmVudC0yMDA2MDUwNi9jbGll
bnRzL2xjZHByb2MvbWFjaGluZV9MaW51eC5jIC4vY2xpZW50cy9sY2Rwcm9jL21hY2hpbmVfTGlu
dXguYwotLS0gLi4vbGNkcHJvYy1DVlMtY3VycmVudC0yMDA2MDUwNi9jbGllbnRzL2xjZHByb2Mv
bWFjaGluZV9MaW51eC5jCUZyaSBBcHIgMjggMDk6MDA6MzIgMjAwNgorKysgLi9jbGllbnRzL2xj
ZHByb2MvbWFjaGluZV9MaW51eC5jCVN1biBNYXkgIDcgMjM6NDk6MzUgMjAwNgpAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgInNoYXJlZC9MTC5oIgogCiAjZGVmaW5lIE1BWF9DUFVTIDgKKyNk
ZWZpbmUgREVWRklMRSAiL3Byb2MvbmV0L2RldiIgIC8qIGZpbGUgdG8gcmVhZCBuZXR3b3JrIHN0
YXRpc3RpY3MgZnJvbSAqLwogCiBzdGF0aWMgaW50IGJhdHRfZmQ7CiBzdGF0aWMgaW50IGxvYWRf
ZmQ7CkBAIC01MTEsNSArNTEyLDcyIEBACiAKIAlyZXR1cm4oVFJVRSk7CiB9CisKKworLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKyAqIFJlYWQgaW50ZXJmYWNlIHN0YXRpc3RpY3MgZnJvbSBzeXN0ZW0gYW5k
ICBzdG9yZSBpbiB0aGUgc3RydWN0IAorICogcGFzc2VkIGFzIGEgcG9pbnRlci4gSWYgdGhlcmUg
YXJlIG5vIGVycm9ycywgaXQgcmV0dXJucyAxLiBJZiBlcnJvcnMsIAorICogcmV0dXJucyAwLgor
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiogCisgKi8KK2ludCBtYWNoaW5lX2dldF9pZmFjZV9zdGF0cyAoSWZh
Y2VJbmZvICppbnRlcmZhY2UpCit7CisJRklMRSAqZmlsZTsgICAvKiBmaWxlIGhhbmRsZXIgKi8K
KwljaGFyIGJ1ZmZlclsxMDI0XTsgIC8qIGJ1ZmZlciB0byB3b3JrIHdpdGggdGhlIGZpbGUgKi8K
KwlzdGF0aWMgaW50IGZpcnN0X3RpbWUgPSAxOyAgLyogaXMgaXQgZmlyc3QgdGltZSB3ZSBjYWxs
IHRoaXMgZnVuY3Rpb24/ICovCisJY2hhciAqY2hfcG9pbnRlciA9IE5VTEw7ICAvKiBwb2ludGVy
IHRvIHdoZXJlIGludGVyZmFjZSB2YWx1ZXMgYXJlIGluIGZpbGUgKi8KKworCS8qIE9wZW4gdGhl
IGZpbGUgaW4gcmVhZC1vbmx5IG1vZGUgYW5kIHBhcnNlICovCisKKwlpZiAoKGZpbGUgPSBmb3Bl
bihERVZGSUxFLCAiciIpKSAhPSBOVUxMKSB7CisJCS8qIFNraXAgZmlyc3QgMiBoZWFkZXIgbGlu
ZXMgb2YgZmlsZSAqLworCQlmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmaWxlKTsKKwkJ
ZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZmlsZSk7CisJCQorCQkvKiBCeSBkZWZhdWx0
LCB0cmVhdCBpbnRlcmZhY2UgYXMgZG93biAqLworCQlpbnRlcmZhY2UtPnN0YXR1cyA9IGRvd247
CisJCQorCQkvKiBTZWFyY2ggaWZhY2VfbmFtZSBhbmQgc2NhbiB2YWx1ZXMgKi8KKwkJd2hpbGUg
KChmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmaWxlKSAhPSBOVUxMKSkgeworCQkJaWYg
KHN0cnN0cihidWZmZXIsIGludGVyZmFjZS0+bmFtZSkpIHsKKwkJCQkvKiBpbnRlcmZhY2UgZXhp
c3RzICovCisJCQkJaW50ZXJmYWNlLT5zdGF0dXMgPSB1cDsgLyogaXMgdXAgKi8KKwkJCQlpbnRl
cmZhY2UtPmxhc3Rfb25saW5lID0gdGltZShOVUxMKTsgLyogc2F2ZSBhY3R1YWwgdGltZSAqLwor
CQkJCQorCQkJCS8qIHNlYXJjaCAnOicgYW5kIHNraXAgb3ZlciBpdCAqLworCQkJCWNoX3BvaW50
ZXIgPSBzdHJjaHIoYnVmZmVyLCAnOicpOworCQkJCWNoX3BvaW50ZXIrKzsKKwkJCQkKKwkJCQkv
KiBOb3cgY2hfcG9pbnRlciBwb2ludHMgdG8gdmFsdWVzIG9mIGlmYWNlX25hbWUgKi8KKwkJCQkv
KiBTY2FuIHZhbHVlcyBmcm9tIGhlcmUgKi8KKwkJCQlzc2NhbmYoY2hfcG9pbnRlciwgIiVsZiAl
bGYgJSpzICUqcyAlKnMgJSpzICUqcyAlKnMgJWxmICVsZiIsCisJCQkJCSZpbnRlcmZhY2UtPnJj
X2J5dGUsCisJCQkJCSZpbnRlcmZhY2UtPnJjX3BrdCwKKwkJCQkJJmludGVyZmFjZS0+dHJfYnl0
ZSwKKwkJCQkJJmludGVyZmFjZS0+dHJfcGt0KTsKKworCQkJCS8qIGlmIGlzIHRoZSBmaXJzdCB0
aW1lIHdlIGNhbGwgdGhpcyBmdW5jdGlvbiwgCisJCQkJICogb2xkIHZhbHVlcyBhcmUgdGhlIHNh
bWUgYXMgbmV3IHNvIHdlIGRvbid0IAorCQkJCSAqIGdldCBiaWcgc3BlZWRzIHdoZW4gY2FsY3Vs
YXRpbmcKKwkJCQkgKi8KKwkJCQlpZiAoZmlyc3RfdGltZSkgeworCQkJCQlpbnRlcmZhY2UtPnJj
X2J5dGVfb2xkID0gaW50ZXJmYWNlLT5yY19ieXRlOworCQkJCQlpbnRlcmZhY2UtPnRyX2J5dGVf
b2xkID0gaW50ZXJmYWNlLT50cl9ieXRlOworCQkJCQlpbnRlcmZhY2UtPnJjX3BrdF9vbGQgPSBp
bnRlcmZhY2UtPnJjX3BrdDsKKwkJCQkJaW50ZXJmYWNlLT50cl9wa3Rfb2xkID0gaW50ZXJmYWNl
LT50cl9wa3Q7CisJCQkJCWZpcnN0X3RpbWUgPSAwOyAgLyogbm93IGl0IGlzbid0IGZpcnN0IHRp
bWUgKi8KKwkJCQl9CisJCQl9CisJCX0gLyogd2hpbGUgKi8KKworCQlmY2xvc2UoZmlsZSk7ICAv
KiBjbG9zZSBmaWxlICovCisJCXJldHVybiAxOyAgLyogZXZlcnl0aGluZyB3ZW50IE9LICovCisK
Kwl9CisJZWxzZSB7ICAvKiBlcnJvciB3aGVuIG9wZW5pbmcgdGhlIGZpbGUgKi8KKwkJcGVycm9y
KCJFcnJvcjogQ291bGQgbm90IG9wZW4gREVWRklMRSIpOworCQlyZXR1cm4gMDsgLyogc29tZXRo
aW5nIHdlbnQgd3JvbmcgKi8KKwl9Cit9IC8qIGdldF9pZmFjZV9zdGF0cygpICovCiAKICNlbmRp
ZiAvKiBsaW51eCAqLwpkaWZmIC1yIC11IC4uL2xjZHByb2MtQ1ZTLWN1cnJlbnQtMjAwNjA1MDYv
Y2xpZW50cy9sY2Rwcm9jL21hY2hpbmVfTmV0QlNELmMgLi9jbGllbnRzL2xjZHByb2MvbWFjaGlu
ZV9OZXRCU0QuYwotLS0gLi4vbGNkcHJvYy1DVlMtY3VycmVudC0yMDA2MDUwNi9jbGllbnRzL2xj
ZHByb2MvbWFjaGluZV9OZXRCU0QuYwlGcmkgQXByIDI4IDA5OjAwOjMyIDIwMDYKKysrIC4vY2xp
ZW50cy9sY2Rwcm9jL21hY2hpbmVfTmV0QlNELmMJU3VuIE1heSAgNyAyMzo1Mzo1MiAyMDA2CkBA
IC0zNzAsNSArMzcwLDEyIEBACiAJcmV0dXJuKFRSVUUpOyAKIH0KIAorLyogR2V0IG5ldHdvcmsg
c3RhdGlzdGljcyAqLworaW50IG1hY2hpbmVfZ2V0X2lmYWNlX3N0YXRzIChJZmFjZUluZm8gKmlu
dGVyZmFjZSkKK3sKKwkvKiBJbXBsZW1lbnRhdGlvbiBtaXNzaW5nICovCisJcmV0dXJuIDA7Cit9
CisKICNlbmRpZiAvKiBfX05ldEJTRF9fICovCiAKZGlmZiAtciAtdSAuLi9sY2Rwcm9jLUNWUy1j
dXJyZW50LTIwMDYwNTA2L2NsaWVudHMvbGNkcHJvYy9tYWNoaW5lX09wZW5CU0QuYyAuL2NsaWVu
dHMvbGNkcHJvYy9tYWNoaW5lX09wZW5CU0QuYwotLS0gLi4vbGNkcHJvYy1DVlMtY3VycmVudC0y
MDA2MDUwNi9jbGllbnRzL2xjZHByb2MvbWFjaGluZV9PcGVuQlNELmMJRnJpIEFwciAyOCAwOTow
MDozMiAyMDA2CisrKyAuL2NsaWVudHMvbGNkcHJvYy9tYWNoaW5lX09wZW5CU0QuYwlTdW4gTWF5
ICA3IDIzOjU0OjExIDIwMDYKQEAgLTM3OCw0ICszNzgsMTEgQEAKIAlyZXR1cm4oVFJVRSk7IAog
fQogCisvKiBHZXQgbmV0d29yayBzdGF0aXN0aWNzICovCitpbnQgbWFjaGluZV9nZXRfaWZhY2Vf
c3RhdHMgKElmYWNlSW5mbyAqaW50ZXJmYWNlKQoreworCS8qIEltcGxlbWVudGF0aW9uIG1pc3Np
bmcgKi8KKwlyZXR1cm4gMDsKK30KKwogI2VuZGlmIC8qIF9fT3BlbkJTRF9fICovCmRpZmYgLXIg
LXUgLi4vbGNkcHJvYy1DVlMtY3VycmVudC0yMDA2MDUwNi9jbGllbnRzL2xjZHByb2MvbWFjaGlu
ZV9TdW5PUy5jIC4vY2xpZW50cy9sY2Rwcm9jL21hY2hpbmVfU3VuT1MuYwotLS0gLi4vbGNkcHJv
Yy1DVlMtY3VycmVudC0yMDA2MDUwNi9jbGllbnRzL2xjZHByb2MvbWFjaGluZV9TdW5PUy5jCVN1
biBGZWIgMTkgMDk6MDA6MTEgMjAwNgorKysgLi9jbGllbnRzL2xjZHByb2MvbWFjaGluZV9TdW5P
Uy5jCVN1biBNYXkgIDcgMjM6NTQ6MjMgMjAwNgpAQCAtNDM5LDUgKzQzOSwxMiBAQAogCXJldHVy
bihUUlVFKTsgCiB9CiAKKy8qIEdldCBuZXR3b3JrIHN0YXRpc3RpY3MgKi8KK2ludCBtYWNoaW5l
X2dldF9pZmFjZV9zdGF0cyAoSWZhY2VJbmZvICppbnRlcmZhY2UpCit7CisJLyogSW1wbGVtZW50
YXRpb24gbWlzc2luZyAqLworCXJldHVybiAwOworfQorCiAjZW5kaWYgLyogc3VuICovCiAKZGlm
ZiAtciAtdSAuLi9sY2Rwcm9jLUNWUy1jdXJyZW50LTIwMDYwNTA2L2NsaWVudHMvbGNkcHJvYy91
dGlsLmMgLi9jbGllbnRzL2xjZHByb2MvdXRpbC5jCi0tLSAuLi9sY2Rwcm9jLUNWUy1jdXJyZW50
LTIwMDYwNTA2L2NsaWVudHMvbGNkcHJvYy91dGlsLmMJRnJpIEFwciAyOCAwOTowMDozMiAyMDA2
CisrKyAuL2NsaWVudHMvbGNkcHJvYy91dGlsLmMJU3VuIE1heSAgNyAxNTo1NTozOSAyMDA2CkBA
IC0zNSwyNSArMzUsMTYgQEAKIHNwcmludGZfbWVtb3J5KGNoYXIgKmRzdCwgZG91YmxlIHZhbHVl
LCBkb3VibGUgcm91bmRsaW1pdCkKIHsKIAlpZiAoZHN0ICE9IE5VTEwpIHsKLQkJc3RhdGljIGNo
YXIgKnVuaXRzW10gPSB7ICIiLCAiayIsICJNIiwgIkciLCAiVCIsICJQIiwgIkUiLCAiWiIsICJZ
IiwgTlVMTCB9OwotCQlpbnQgb2ZmcyA9IDA7CiAJCWNoYXIgKmZvcm1hdCA9ICIlLjFmJXMiOwog
Ci0JCWlmICgocm91bmRsaW1pdCA8PSAwLjApIHx8IChyb3VuZGxpbWl0ID4gMS4wKSkKLQkJCXJv
dW5kbGltaXQgPSAwLjU7CisJCWNoYXIgKnVuaXQgPSBjb252ZXJ0X2RvdWJsZSgmdmFsdWUsIDEw
MjQsIHJvdW5kbGltaXQpOwogCi0JCXdoaWxlICh1bml0c1tvZmZzXSAhPSBOVUxMKSB7Ci0JCQlp
ZiAodmFsdWUgPD0gMTAyNCAqIHJvdW5kbGltaXQpCi0JCQkJYnJlYWs7Ci0JCQlvZmZzKys7Ci0J
CQl2YWx1ZSAvPSAxMDI0OwotCQl9CiAJCWlmICh2YWx1ZSA8IDEwMCkKIAkJCWZvcm1hdCA9ICIl
LjJmJXMiOwogCQlpZiAodmFsdWUgPCAxMCkKIAkJCWZvcm1hdCA9ICIlLjNmJXMiOwogCi0JCXNw
cmludGYoZHN0LCBmb3JtYXQsIHZhbHVlLCB1bml0c1tvZmZzXSk7CisJCXNwcmludGYoZHN0LCBm
b3JtYXQsIHZhbHVlLCB1bml0KTsKIAl9CQogCXJldHVybiBkc3Q7CQogfQpAQCAtNzAsNiArNjEs
MzMgQEAKIAkJCXNwcmludGYoZHN0LCAiJS4xZiUlIiwgKHBlcmNlbnQgPj0gMCkgPyBwZXJjZW50
IDogMCk7CiAJfQkKIAlyZXR1cm4gZHN0OworfQorCisvKiogY29udmVydHMgYSB2YWx1ZSB3aXRo
IHVuaXQgdmFsdWUKKyAqIGRvZXMgbm90IGRvIGZvcm1hdHRpbmcKKyAqIGJhc2UgOiBzaG91bGQg
YmUgMTAwMCBmb3IgZGVjaW1hbCBhbmQgMTAyNCBmb3IgYmluYXJ5IHVuaXRzCisgKiByb3VuZGxp
bWl0IDogc2V0IDwgMS4wIGlmIHByZWNpc2lvbiBvZiBvcmlnaW5hbCBpbnB1dCB2YWx1ZSBpcyBu
b3Qgc3VmZmljaWVudAorICovCitjaGFyICoKK2NvbnZlcnRfZG91YmxlKGRvdWJsZSAqdmFsdWUs
IGludCBiYXNlLCBkb3VibGUgcm91bmRsaW1pdCkKK3sKKwlzdGF0aWMgY2hhciAqdW5pdHNbXSA9
IHsgIiIsICJrIiwgIk0iLCAiRyIsICJUIiwgIlAiLCAiRSIsICJaIiwgIlkiLCBOVUxMIH07CisJ
aW50IG9mZiA9IDA7CisKKwlpZiAoKHJvdW5kbGltaXQgPD0gMC4wKSB8fCAocm91bmRsaW1pdCA+
IDEuMCkpCisJCXJvdW5kbGltaXQgPSAwLjU7CisKKwkvKiBHZXQgdmFsdWUncyBvcmRlciBvZiBt
YWduaXR1ZGUgKi8KKwl3aGlsZSAodW5pdHNbb2ZmXSAhPSBOVUxMKSB7CisJCS8qIE5vdGU6IHRo
ZSBjaGVjayBmb3IgMTAwMCBpcyB0byBpZGVuZml0eSB0aGUgbnVtYmVyIG9mCisJCSAqIGNoYXJh
Y3RlcnMgaW4gdGhlIG91dHB1dCBuZWVkZWQsIG5vdCB0byBkZWNpZGUgaWYgdG8gc2NhbGUgdmFs
dWUuCisJCSAqLworCQlpZiAoKnZhbHVlIDwgMTAwMCAqIHJvdW5kbGltaXQpCisJCQlicmVhazsK
KwkJb2ZmKys7CisJCSp2YWx1ZSAvPSBiYXNlOworCX0KKwlyZXR1cm4gdW5pdHNbb2ZmXTsJCiB9
CiAKIC8qIEVPRiAqLwpkaWZmIC1yIC11IC4uL2xjZHByb2MtQ1ZTLWN1cnJlbnQtMjAwNjA1MDYv
Y2xpZW50cy9sY2Rwcm9jL3V0aWwuaCAuL2NsaWVudHMvbGNkcHJvYy91dGlsLmgKLS0tIC4uL2xj
ZHByb2MtQ1ZTLWN1cnJlbnQtMjAwNjA1MDYvY2xpZW50cy9sY2Rwcm9jL3V0aWwuaAlTdW4gTWF5
IDIyIDE3OjI4OjA1IDIwMDUKKysrIC4vY2xpZW50cy9sY2Rwcm9jL3V0aWwuaAlTdW4gTWF5ICA3
IDE1OjU1OjM5IDIwMDYKQEAgLTQwLDYgKzQwLDkgQEAKIC8qKiBwcmludCBhIHBlcmNlbnRhZ2Ug
dmFsdWUgdG8gYSBnaXZlbiBzdHJpbmcgKi8KIGNoYXIgKnNwcmludGZfcGVyY2VudChjaGFyICpk
c3QsIGRvdWJsZSBwZXJjZW50KTsKIAorLyoqIGNvbnZlcnRzIHZhbHVlIGludG8gcG93ZXItb2Yt
eCByZXByZXNlbnRhdGlvbiAqLworY2hhciAqY29udmVydF9kb3VibGUoZG91YmxlICp2YWx1ZSwg
aW50IGJhc2UsIGRvdWJsZSByb3VuZGxpbWl0KTsKKwogI2VuZGlmIC8qIExDRFBST0NfVVRJTF9I
ICovCiAKIC8qIEVPRiAqLwo=
--========GMXBoundary83921147040861--