[parisc-linux-cvs] diff for 2.4.17-pa25

Brian S. Julin bri@mojo.calyx.net
Thu, 14 Feb 2002 14:44:00 -0500 (EST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-1182547428-1013715840=:10883
Content-Type: TEXT/PLAIN; charset=US-ASCII


This is my first commit, so please do complain if I've done anything at
all wrong.

--
Brian S. Julin

--0-1182547428-1013715840=:10883
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=diff-pa25
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSO.4.33.0202141444000.10883@mojo.calyx.net>
Content-Description: diff 2.4.17-pa24 to 2.4.17-pa25
Content-Disposition: attachment; filename=diff-pa25

SW5kZXg6IE1ha2VmaWxlDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
ZmlsZTogL3Zhci9jdnMvbGludXgvTWFrZWZpbGUsdg0KcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjI2Mg0KZGlmZiAtVTIgLXIxLjI2MiBNYWtlZmlsZQ0KLS0t
IE1ha2VmaWxlCTIwMDIvMDIvMTQgMTQ6MTQ6MTcJMS4yNjINCisrKyBNYWtl
ZmlsZQkyMDAyLzAyLzE0IDE5OjI5OjUzDQpAQCAtMiw1ICsyLDUgQEANCiBQ
QVRDSExFVkVMID0gNA0KIFNVQkxFVkVMID0gMTcNCi1FWFRSQVZFUlNJT04g
PSAtcGEyNA0KK0VYVFJBVkVSU0lPTiA9IC1wYTI1DQogDQogS0VSTkVMUkVM
RUFTRT0kKFZFUlNJT04pLiQoUEFUQ0hMRVZFTCkuJChTVUJMRVZFTCkkKEVY
VFJBVkVSU0lPTikNCkluZGV4OiBEb2N1bWVudGF0aW9uL0NvbmZpZ3VyZS5o
ZWxwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3Zhci9j
dnMvbGludXgvRG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscCx2DQpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMjENCmRpZmYgLVUyIC1yMS4yMSBDb25maWd1
cmUuaGVscA0KLS0tIERvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHAJMjAw
Mi8wMS8wMyAyMjozNjo0MwkxLjIxDQorKysgRG9jdW1lbnRhdGlvbi9Db25m
aWd1cmUuaGVscAkyMDAyLzAyLzE0IDE5OjMwOjAzDQpAQCAtMTU2NTYsMTUg
KzE1NjU2LDM0IEBADQogQ09ORklHX0hJTA0KICAgVGhlICJIdW1hbiBJbnRl
cmZhY2UgTG9vcCIgaXMgYSBvbGRlciwgOC1jaGFubmVsIFVTQi1saWtlIGNv
bnRyb2xsZXINCi0gIHVzZWQgaW4gSGV3bGV0dGUgUGFja2FyZCBQQS1SSVND
IGJhc2VkIG1hY2hpbmVzLiAgVGhlcmUgYXJlIGEgZmV3DQotICBjYXNlcyB3
aGVyZSBpdCBpcyBzZWVuIG9uIFBDL01BQyBhcmNoaXRlY3R1cmVzIGFzIHdl
bGwsIHVzdWFsbHkgYWxzbw0KLSAgbWFudWZhY3R1cmVkIGJ5IEhQLiAgVGhp
cyBkcml2ZXIgaXMgYmFzZWQgb2ZmIE1BQ0ggYW5kIEJTRCBkcml2ZXJzLA0K
LSAgYW5kIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgYSBrZXlib2FyZCBhdHRh
Y2hlZCB0byB0aGUgSElMIHBvcnQuDQorICB1c2VkIGluIHNldmVyYWwgSGV3
bGV0dGUgUGFja2FyZCBtb2RlbHMuICBUaGlzIGRyaXZlciBpcyBiYXNlZCBv
ZmYgDQorICBNQUNIIGFuZCBCU0QgZHJpdmVycywgYW5kIGltcGxlbWVudHMg
c3VwcG9ydCBmb3IgYSBrZXlib2FyZCBhdHRhY2hlZCANCisgIHRvIHRoZSBI
SUwgcG9ydCwgYnV0IG5vdCBmb3IgYW55IG90aGVyIHR5cGVzIG9mIEhJTCBp
bnB1dCBkZXZpY2VzIA0KKyAgbGlrZSBtaWNlIG9yIHRhYmxldHMuICBIb3dl
dmVyLCBpdCBoYXMgYmVlbiB0aG9yb3VnaGx5IHRlc3RlZCBhbmQgaXMgDQor
ICBzdGFibGUuDQorDQogICBGdWxsIHN1cHBvcnQgZm9yIHRoZSBVU0ItbGlr
ZSBmdW5jdGlvbnMgYW5kIG5vbi1rZXlib2FyZCBjaGFubmVscyBvZg0KLSAg
dGhlIEhJTCBpcyBub3QgcHJvdmlkZWQgZm9yIGluIHRoaXMgZHJpdmVyLiAg
VGhlcmUgYXJlIHZlc3RpZ2VzIG9mDQotICBtb3VzZSBzdXBwb3J0IGluIHRo
ZSBkcml2ZXIsIGJ1dCBpdCBpcyBwcm9iYWJseSBub3Qgd29ya2luZy4gIFRo
ZQ0KLSAgbmVjZXNzYXJ5IGhhcmR3YXJlIGRvY3VtZW50YXRpb24gdG8gZnVs
bHkgc3VwcG9ydCB0aGUgSElMIGNvbnRyb2xsZXINCi0gIGFuZCBpbnRlcmZh
Y2UgaXQgdG8gdGhlIGxpbnV4LWlucHV0IEFQSSBpcyBsYWNraW5nLg0KKyAg
dGhlIEhJTCBpcyBjdXJyZW50bHkgYmVpbmcgYWRkZWQgdG8gdGhlIFBBLVJJ
U0MgcG9ydCBhbmQgd2lsbA0KKyAgYmUgYmFja3BvcnRlZCB0byB3b3JrIG9u
IHRoZSBtNjhrIHBvcnQgYXMgd2VsbC4NCisNCisgIEVuYWJsZSB0aGlzIG9w
dGlvbiBpZiB5b3UgaW50ZW5kIHRvIHVzZSBhIEhJTCBrZXlib2FyZCBhcyB5
b3VyDQorICBwcmltYXJ5IGtleWJvYXJkIGFuZC9vciBkbyBub3Qgd2lzaCB0
byB0ZXN0IHRoZSBuZXcgSElMIGRyaXZlci4NCisNCitIUCBTeXN0ZW0gRGV2
aWNlIENvbnRyb2xsZXIgc3VwcG9ydA0KK0NPTkZJR19IUF9TREMNCisgIFRo
aXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydHMgZm9yIHRoZSB0aGUgIlN5c3Rl
bSBEZXZpY2UgQ29udHJvbGxlciIsDQorICBhbiBpODA0MiBjYXJyeWluZyBt
aWNyb2NvZGUgdG8gbWFuYWdlIGEgZmV3IG1pc2NlbGxhbm91cyBkZXZpY2Vz
DQorICBvbiBzb21lIEhld2xldHRlIFBhY2thcmQgc3lzdGVtcy4gIFRoZSBT
REMgaXRzZWxmIGNvbnRhaW5zIGEgMTBtcw0KKyAgcmVzb2x1dGlvbiB0aW1l
ci9jbG9jayBjYXBhYmxlIG9mIGRlbGl2ZXJpbmcgaW50ZXJydXB0cyBvbiBw
ZXJpb2RpYyANCisgIGFuZCBvbmUtc2hvdCBiYXNpcy4gIFRoZSBTREMgbWF5
IGFsc28gYmUgY29ubmVjdGVkIHRvIGEgYmF0dGVyeS1iYWNrZWQNCisgIHJl
YWwtdGltZSBjbG9jaywgYSBiYXNpYyBhdWRpbyB3YXZlZm9ybSBnZW5lcmF0
b3IsIGFuZCBhbiBIUC1ISUwNCisgIE1hc3RlciBMaW5rIENvbnRyb2xsZXIg
c2VydmluZyB1cCB0byBzZXZlbiBpbnB1dCBkZXZpY2VzLg0KIA0KLSAgRW5h
YmxlIHRoaXMgb3B0aW9uIGlmIHlvdSBpbnRlbmQgdG8gdXNlIGEgSElMIGtl
eWJvYXJkLg0KKyAgQnkgaXRzZWxmIHRoaXMgb3B0aW9uIGlzIHJhdGhlciB1
c2VsZXNzLCBidXQgZW5hYmxpbmcgaXQgd2lsbA0KKyAgZW5hYmxlIHNlbGVj
dGlvbiBvZiBkcml2ZXJzIGZvciB0aGUgYWJvdmVtZW50aW9uZWQgZGV2aWNl
cy4NCisgIEl0IGlzLCBob3dldmVyLCBpbmNvbXBhdGlibGUgd2l0aCB0aGUg
b2xkLCByZWxpYWJsZSBISUwga2V5Ym9hcmQNCisgIGRyaXZlciwgYW5kIHRo
ZSBuZXcgSElMIGRyaXZlciBpcyBleHBlcmltZW50YWwsIHNvIGlmIHlvdSBw
bGFuIHRvDQorICB1c2UgYSBISUwga2V5Ym9hcmQgYXMgeW91ciBwcmltYXJ5
IGtleWJvYXJkLCB5b3UgbWF5IHdpc2ggdG8NCisgIGtlZXAgdXNpbmcgdGhh
dCBkcml2ZXIgdW50aWwgdGhlIG5ldyBISUwgZHJpdmVycyBoYXZlIGhhZCBt
b3JlIA0KKyAgdGVzdGluZy4NCiANCiBJbmNsdWRlIElPUCAoSUlmeC9RdWFk
cmEgOXgwKSBBREIgZHJpdmVyDQpJbmRleDogYXJjaC9wYXJpc2MvZGVmY29u
ZmlnDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3Zhci9j
dnMvbGludXgvYXJjaC9wYXJpc2MvZGVmY29uZmlnLHYNCnJldHJpZXZpbmcg
cmV2aXNpb24gMS40OQ0KZGlmZiAtVTIgLXIxLjQ5IGRlZmNvbmZpZw0KLS0t
IGFyY2gvcGFyaXNjL2RlZmNvbmZpZwkyMDAyLzAyLzA4IDIzOjU1OjQ5CTEu
NDkNCisrKyBhcmNoL3BhcmlzYy9kZWZjb25maWcJMjAwMi8wMi8xNCAxOToz
MDoxMg0KQEAgLTQ0Nyw0ICs0NDcsNSBAQA0KIENPTkZJR19HU0NfUFMyPXkN
CiBDT05GSUdfSElMPXkNCisjQ09ORklHX0hQX1NEQyBpcyBub3Qgc2V0DQog
Q09ORklHX1NFUklBTD15DQogQ09ORklHX1NFUklBTF9DT05TT0xFPXkNCklu
ZGV4OiBhcmNoL3BhcmlzYy9rZXJuZWwvdGltZS5jDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQpSQ1MgZmlsZTogL3Zhci9jdnMvbGludXgvYXJjaC9wYXJp
c2Mva2VybmVsL3RpbWUuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjAN
CmRpZmYgLVUyIC1yMS4yMCB0aW1lLmMNCi0tLSBhcmNoL3BhcmlzYy9rZXJu
ZWwvdGltZS5jCTIwMDEvMTIvMDQgMDI6MTI6NDAJMS4yMA0KKysrIGFyY2gv
cGFyaXNjL2tlcm5lbC90aW1lLmMJMjAwMi8wMi8xNCAxOTozMDoxMg0KQEAg
LTIwOSwzICsyMDksNiBAQA0KIAkJeHRpbWUudHZfdXNlYyA9IDA7DQogCX0N
CisNCisJZG9fZ2V0X2Zhc3RfdGltZSA9IGRvX2dldHRpbWVvZmRheTsNCisN
CiB9DQpJbmRleDogZHJpdmVycy9jaGFyL0NvbmZpZy5pbg0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC92YXIvY3ZzL2xpbnV4L2RyaXZl
cnMvY2hhci9Db25maWcuaW4sdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjE4
DQpkaWZmIC1VMiAtcjEuMTggQ29uZmlnLmluDQotLS0gZHJpdmVycy9jaGFy
L0NvbmZpZy5pbgkyMDAxLzExLzI5IDE1OjQ5OjI3CTEuMTgNCisrKyBkcml2
ZXJzL2NoYXIvQ29uZmlnLmluCTIwMDIvMDIvMTQgMTk6MzA6MTUNCkBAIC0x
Miw1ICsxMiwxMCBAQA0KICAgIGZpDQogICAgaWYgWyAiJENPTkZJR19HU0Nf
V0FYIiA9ICJ5IiBdOyB0aGVuDQotICAgICAgYm9vbCAnICAgIEhJTCBrZXli
b2FyZCBzdXBwb3J0JyBDT05GSUdfSElMIG4NCisgICAgICBpZiBbICIkQ09O
RklHX0hQX1NEQyIgIT0gInkiIC1hICIkQ09ORklHX0hQX1NEQyIgIT0gIm0i
IF07IHRoZW4NCisgICAgICAgICBib29sICcgICAgSElMIGtleWJvYXJkIHN1
cHBvcnQnIENPTkZJR19ISUwgbg0KKyAgICAgIGZpDQorICAgICAgaWYgWyAi
JENPTkZJR19ISUwiICE9ICJ5IiBdOyB0aGVuDQorICAgICAgICAgdHJpc3Rh
dGUgJ0hQIFN5c3RlbSBEZXZpY2UgQ29udHJvbGxlciBpODA0MiBTdXBwb3J0
JyBDT05GSUdfSFBfU0RDIG4NCisgICAgICBmaQ0KICAgIGZpDQogZmkNCklu
ZGV4OiBkcml2ZXJzL2NoYXIvTWFrZWZpbGUNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NClJDUyBmaWxlOiAvdmFyL2N2cy9saW51eC9kcml2ZXJzL2NoYXIv
TWFrZWZpbGUsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjI1DQpkaWZmIC1V
MiAtcjEuMjUgTWFrZWZpbGUNCi0tLSBkcml2ZXJzL2NoYXIvTWFrZWZpbGUJ
MjAwMS8xMS8yOSAxNTo0OToyNwkxLjI1DQorKysgZHJpdmVycy9jaGFyL01h
a2VmaWxlCTIwMDIvMDIvMTQgMTk6MzA6MTUNCkBAIC0yMiw1ICsyMiw1IEBA
DQogIyBUaGlzIGxpc3QgY29tZXMgZnJvbSAnZ3JlcCAtbCBFWFBPUlRfU1lN
Qk9MICouW2hjXScuDQogDQotZXhwb3J0LW9ianMgICAgIDo9CWJ1c21vdXNl
Lm8gY29uc29sZS5vIGtleWJvYXJkLm8gc3lzcnEubyBcDQorZXhwb3J0LW9i
anMgICAgIDo9CWJ1c21vdXNlLm8gY29uc29sZS5vIGhwX3NkYy5vIGtleWJv
YXJkLm8gc3lzcnEubyBcDQogCQkJbWlzYy5vIHB0eS5vIHJhbmRvbS5vIHNl
bGVjdGlvbi5vIHNlcmlhbC5vIFwNCiAJCQlzb255cGkubyB0dHlfaW8ubyB0
dHlfaW9jdGwubyBnZW5lcmljX3NlcmlhbC5vDQpAQCAtMTUwLDQgKzE1MCw1
IEBADQogDQogb2JqLSQoQ09ORklHX0hJTCkgKz0gaGlsa2JkLm8NCitvYmot
JChDT05GSUdfSFBfU0RDKSArPSBocF9zZGMubw0KIG9iai0kKENPTkZJR19N
QUdJQ19TWVNSUSkgKz0gc3lzcnEubw0KIG9iai0kKENPTkZJR19BVEFSSV9E
U1A1NkspICs9IGRzcDU2ay5vDQpJbmRleDogZHJpdmVycy9jaGFyL2hwX3Nk
Yy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogaHBfc2Rj
LmMNCmRpZmYgLU4gaHBfc2RjLmMNCi0tLSAvZGV2L251bGwJVGh1IE5vdiAz
MCAxNDowMTozOCAyMDAwDQorKysgaHBfc2RjLmMJVGh1IEZlYiAxNCAxMjoz
MDoxNiAyMDAyDQpAQCAtMCwwICsxLDEwMTcgQEANCisvKg0KKyAqIEhQIGk4
MDQyLWJhc2VkIFN5c3RlbSBEZXZpY2UgQ29udHJvbGxlciBkcml2ZXIuDQor
ICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEgQnJpYW4gUy4gSnVsaW4NCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJl
IG1ldDoNCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMsIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIsDQorICogICAgd2l0aG91dCBtb2RpZmljYXRpb24uDQor
ICogMi4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzDQorICogICAgZGVyaXZl
ZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBBbHRlcm5hdGl2ZWx5LCB0
aGlzIHNvZnR3YXJlIG1heSBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlDQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKCJH
UEwiKS4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQNCisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQ0KKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SDQorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTA0KKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTDQorICogT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pDQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QN
CisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQorICoNCisgKiBS
ZWZlcmVuY2VzOg0KKyAqIFN5c3RlbSBEZXZpY2UgQ29udHJvbGxlciBNaWNy
b3Byb2Nlc3NvciBGaXJtd2FyZSBUaGVvcnkgb2YgT3BlcmF0aW9uDQorICog
ICAgICBmb3IgUGFydCBOdW1iZXIgMTgyMC00Nzg0IFJldmlzaW9uIEIuICBE
d2cgTm8uIEEtMTgyMC00Nzg0LTINCisgKiBIZWxnZSBEZWxsZXIncyBvcmln
aW5hbCBoaWxrYmQuYyBwb3J0IGZvciBQQS1SSVNDLg0KKyAqDQorICoNCisg
KiBEcml2ZXIgdGhlb3J5IG9mIG9wZXJhdGlvbjoNCisgKg0KKyAqIGhwX3Nk
Y19wdXQgZG9lcyBhbGwgd3JpdGluZyB0byB0aGUgU0RDLiAgSVNSIGNhbiBy
dW4gb24gYSBkaWZmZXJlbnQgDQorICogQ1BVIHRoYW4gaHBfc2RjX3B1dCwg
YnV0IG9ubHkgb25lIENQVSBydW5zIGhwX3NkY19wdXQgYXQgYSB0aW1lIA0K
KyAqIChpdCBjYW5ub3QgcmVhbGx5IGJlbmVmaXQgZnJvbSBTTVAgYW55d2F5
LikgIEEgdGFza2V0IGZpdCB0aGlzIHBlcmZlY3RseS4NCisgKg0KKyAqIEFs
bCBkYXRhIGNvbWluZyBiYWNrIGZyb20gdGhlIFNEQyBpcyBzZW50IHZpYSBp
bnRlcnJ1cHQgYW5kIGNhbiBiZSByZWFkIA0KKyAqIGZ1bGx5IGluIHRoZSBJ
U1IsIHNvIHRoZXJlIGFyZSBubyBsYXRlbmN5L3Rocm91Z2hwdXQgcHJvYmxl
bXMgdGhlcmUuICANCisgKiBUaGUgcHJvYmxlbSBpcyB3aXRoIG91dHB1dCwg
ZHVlIHRvIHRoZSBzbG93IGNsb2NrIHNwZWVkIG9mIHRoZSBTREMgDQorICog
Y29tcGFyZWQgdG8gdGhlIENQVS4gIFRoaXMgc2hvdWxkIG5vdCBiZSB0b28g
aG9ycmlibGUgbW9zdCBvZiB0aGUgdGltZSwgDQorICogYnV0IGlmIHVzZWQg
d2l0aCBISUwgZGV2aWNlcyB0aGF0IHN1cHBvcnQgdGhlIG11bHRpYnl0ZSB0
cmFuc2ZlciBjb21tYW5kLCANCisgKiBrZWVwaW5nIG91dGJvdW5kIHRocm91
Z2hwdXQgZmxvd2luZyBhdCB0aGUgNjUwMEtCcHMgdGhhdCB0aGUgSElMIGlz
IA0KKyAqIGNhcGFibGUgb2YgaXMgbW9yZSB0aGFuIGNhbiBiZSBkb25lIGF0
IEhaPTEwMC4NCisgKg0KKyAqIEJ1c3kgcG9sbGluZyBmb3IgSUJGIGNsZWFy
IHdhc3RlcyBDUFUgY3ljbGVzIGFuZCBidXMgY3ljbGVzLiAgaHBfc2RjLmli
ZiANCisgKiBpcyBzZXQgdG8gMCB3aGVuIHRoZSBJQkYgZmxhZyBpbiB0aGUg
c3RhdHVzIHJlZ2lzdGVyIGhhcyBjbGVhcmVkLiAgSVNSIA0KKyAqIG1heSBk
byB0aGlzLCBhbmQgbWF5IGFsc28gYWNjZXNzIHRoZSBwYXJ0cyBvZiBxdWV1
ZWQgdHJhbnNhY3Rpb25zIHJlbGF0ZWQgDQorICogdG8gcmVhZGluZyBkYXRh
IGJhY2sgZnJvbSB0aGUgU0RDLCBidXQgb3RoZXJ3aXNlIHdpbGwgbm90IHRv
dWNoIHRoZSANCisgKiBocF9zZGMgc3RhdGUuIFdoZW5ldmVyIGEgcmVnaXN0
ZXIgaXMgd3JpdHRlbiBocF9zZGMuaWJmIGlzIHNldCB0byAxLg0KKyAqDQor
ICogVGhlIGk4MDQyIHdyaXRlIGluZGV4IGFuZCB0aGUgdmFsdWVzIGluIHRo
ZSA0LWJ5dGUgaW5wdXQgYnVmZmVyDQorICogc3RhcnRpbmcgYXQgMHg3MCBh
cmUga2VwdCB0cmFjayBvZiBpbiBocF9zZGMud2ksIGFuZCAucjdbXSwgcmVz
cGVjdGl2ZWx5LA0KKyAqIHRvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgSU8g
bmVlZGVkIHRvIHRoZSBTREMuICBIb3dldmVyIHRoZXNlIHZhbHVlcyANCisg
KiBkbyBub3QgbmVlZCB0byBiZSBsb2NrZWQgc2luY2UgdGhleSBhcmUgb25s
eSBldmVyIGFjY2Vzc2VkIGJ5IGhwX3NkY19wdXQuDQorICoNCisgKiBBIHRp
bWVyIHRhc2sgc2NoZWR1bGVzIHRoZSB0YXNrbGV0IG9uY2UgcGVyIHNlY29u
ZCBqdXN0IHRvIG1ha2UNCisgKiBzdXJlIGl0IGRvZXNuJ3QgZnJlZXplIHVw
IGFuZCB0byBhbGxvdyBmb3IgYmFkIHJlYWRzIHRvIHRpbWUgb3V0Lg0KKyAq
Lw0KKw0KKyNpbmNsdWRlIDxsaW51eC9ocF9zZGMuaD4NCisjaW5jbHVkZSA8
bGludXgvc2NoZWQuaD4NCisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4NCisj
aW5jbHVkZSA8bGludXgvaW5pdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1
bGUuaD4NCisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+DQorI2luY2x1ZGUg
PGxpbnV4L3RpbWUuaD4NCisjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KKyNp
bmNsdWRlIDxhc20vaW8uaD4NCisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPg0K
Kw0KKyNpbmNsdWRlIDxhc20vZ3NjLmg+DQorDQorTU9EVUxFX0FVVEhPUigi
QnJpYW4gUy4gSnVsaW4gPGJyaUBjYWx5eC5jb20+Iik7DQorTU9EVUxFX0RF
U0NSSVBUSU9OKCJIUCBpODA0Mi1iYXNlZCBTREMgRHJpdmVyIik7DQorTU9E
VUxFX0xJQ0VOU0UoIkR1YWwgQlNEL0dQTCIpOw0KKw0KK0VYUE9SVF9TWU1C
T0woaHBfc2RjX3JlcXVlc3RfdGltZXJfaXJxKTsNCitFWFBPUlRfU1lNQk9M
KGhwX3NkY19yZXF1ZXN0X2hpbF9pcnEpOw0KK0VYUE9SVF9TWU1CT0woaHBf
c2RjX3JlcXVlc3RfY29va2VkX2lycSk7DQorDQorRVhQT1JUX1NZTUJPTCho
cF9zZGNfcmVsZWFzZV90aW1lcl9pcnEpOw0KK0VYUE9SVF9TWU1CT0woaHBf
c2RjX3JlbGVhc2VfaGlsX2lycSk7DQorRVhQT1JUX1NZTUJPTChocF9zZGNf
cmVsZWFzZV9jb29rZWRfaXJxKTsNCisNCitFWFBPUlRfU1lNQk9MKGhwX3Nk
Y19lbnF1ZXVlX3RyYW5zYWN0aW9uKTsNCitFWFBPUlRfU1lNQk9MKGhwX3Nk
Y19kZXF1ZXVlX3RyYW5zYWN0aW9uKTsNCisNCitzdGF0aWMgaHBfaTgwNDJf
c2RjCWhwX3NkYzsJLyogQWxsIGRyaXZlciBzdGF0ZSBpcyBrZXB0IGluIGhl
cmUuICovDQorDQorLyoqKioqKioqKioqKioqKiBwcmltaXRpdmVzIGZvciB1
c2UgaW4gYW55IGNvbnRleHQgKioqKioqKioqKioqKioqKioqKioqLw0KK3N0
YXRpYyBpbmxpbmUgdWludDhfdCBocF9zZGNfc3RhdHVzX2luOCAodm9pZCkg
ew0KKwl1aW50OF90IHN0YXR1czsNCisJdW5zaWduZWQgbG9uZyBmbGFnczsN
CisNCisJd3JpdGVfbG9ja19pcnFzYXZlKCZocF9zZGMuaWJmX2xvY2ssIGZs
YWdzKTsNCisJc3RhdHVzID0gZ3NjX3JlYWRiKGhwX3NkYy5zdGF0dXNfaW8p
Ow0KKwlpZiAoIShzdGF0dXMgJiBIUF9TRENfU1RBVFVTX0lCRikpIGhwX3Nk
Yy5pYmYgPSAwOw0KKwl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmaHBfc2Rj
LmliZl9sb2NrLCBmbGFncyk7DQorDQorCXJldHVybiBzdGF0dXM7DQorfQ0K
Kw0KK3N0YXRpYyBpbmxpbmUgdWludDhfdCBocF9zZGNfZGF0YV9pbjggKHZv
aWQpIHsNCisJcmV0dXJuIGdzY19yZWFkYihocF9zZGMuZGF0YV9pbyk7IA0K
K30NCisNCitzdGF0aWMgaW5saW5lIHZvaWQgaHBfc2RjX3N0YXR1c19vdXQ4
ICh1aW50OF90IHZhbCkgew0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKw0K
KwkvLwlwcmludGsoIlxuc3RhdCA8ICUyLjJ4ICglbHUpICIsIHZhbCwgbWZj
dGwoMTYpKTsNCisNCisJd3JpdGVfbG9ja19pcnFzYXZlKCZocF9zZGMuaWJm
X2xvY2ssIGZsYWdzKTsNCisJaHBfc2RjLmliZiA9IDE7DQorCWlmICgodmFs
ICYgMHhmMCkgPT0gMHhlMCkgaHBfc2RjLndpID0gMHhmZjsNCisJZ3NjX3dy
aXRlYih2YWwsIGhwX3NkYy5zdGF0dXNfaW8pOw0KKwl3cml0ZV91bmxvY2tf
aXJxcmVzdG9yZSgmaHBfc2RjLmliZl9sb2NrLCBmbGFncyk7DQorfQ0KKw0K
K3N0YXRpYyBpbmxpbmUgdm9pZCBocF9zZGNfZGF0YV9vdXQ4ICh1aW50OF90
IHZhbCkgew0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKw0KKwkvLwlwcmlu
dGsoIlxuZGF0YSA8ICUyLjJ4ICglbHUpICIsIHZhbCwgbWZjdGwoMTYpKTsN
CisNCisJd3JpdGVfbG9ja19pcnFzYXZlKCZocF9zZGMuaWJmX2xvY2ssIGZs
YWdzKTsNCisJaHBfc2RjLmliZiA9IDE7DQorCWdzY193cml0ZWIodmFsLCBo
cF9zZGMuZGF0YV9pbyk7DQorCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZo
cF9zZGMuaWJmX2xvY2ssIGZsYWdzKTsNCit9DQorDQorLyoJQ2FyZSBtdXN0
IGJlIHRha2VuIHRvIG9ubHkgaW52b2tlIGhwX3NkY19zcGluX2liZiB3aGVu
IA0KKyAqCWFic29sdXRlbHkgbmVlZGVkLCBvciBpbiByYXJlbHkgaW52b2tl
ZCBzdWJyb3V0aW5lcy4gIA0KKyAqCU5vdCBvbmx5IGRvZXMgaXQgd2FzdGUg
Q1BVIGN5Y2xlcywgaXQgYWxzbyB3YXN0ZXMgYnVzIGN5Y2xlcy4gDQorICov
DQorc3RhdGljIGlubGluZSB2b2lkIGhwX3NkY19zcGluX2liZih2b2lkKSB7
DQorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQorCXJ3bG9ja190ICpsb2NrOw0K
Kw0KKwlsb2NrID0gJmhwX3NkYy5pYmZfbG9jazsNCisNCisJcmVhZF9sb2Nr
X2lycXNhdmUobG9jaywgZmxhZ3MpOw0KKwlpZiAoIWhwX3NkYy5pYmYpIHsN
CisJCXJlYWRfdW5sb2NrX2lycXJlc3RvcmUobG9jaywgZmxhZ3MpOw0KKwkJ
cmV0dXJuOw0KKwl9DQorCXJlYWRfdW5sb2NrKGxvY2spOw0KKwl3cml0ZV9s
b2NrKGxvY2spOw0KKwl3aGlsZSAoZ3NjX3JlYWRiKGhwX3NkYy5zdGF0dXNf
aW8pICYgSFBfU0RDX1NUQVRVU19JQkYpIHt9Ow0KKwlocF9zZGMuaWJmID0g
MDsNCisJd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUobG9jaywgZmxhZ3MpOw0K
K30NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqIEludGVycnVw
dCBjb250ZXh0IGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiov
DQorc3RhdGljIHZvaWQgaHBfc2RjX3Rha2UgKGludCBpcnEsIHZvaWQgKmRl
dl9pZCwgdWludDhfdCBzdGF0dXMsIHVpbnQ4X3QgZGF0YSkgew0KKwlocF9z
ZGNfdHJhbnNhY3Rpb24gKmN1cnI7DQorDQorCXJlYWRfbG9jaygmaHBfc2Rj
LnJ0cV9sb2NrKTsNCisJaWYgKGhwX3NkYy5yY3VyciA8IDApIHsNCisJICAJ
cmVhZF91bmxvY2soJmhwX3NkYy5ydHFfbG9jayk7DQorCQlyZXR1cm47DQor
CX0NCisJY3VyciA9IGhwX3NkYy50cVtocF9zZGMucmN1cnJdOw0KKwlyZWFk
X3VubG9jaygmaHBfc2RjLnJ0cV9sb2NrKTsNCisNCisJY3Vyci0+c2VxW2N1
cnItPmlkeCsrXSA9IHN0YXR1czsNCisJY3Vyci0+c2VxW2N1cnItPmlkeCsr
XSA9IGRhdGE7DQorCWhwX3NkYy5ycXR5IC09IDI7DQorCWdldF9mYXN0X3Rp
bWUoJmhwX3NkYy5ydHYpOw0KKw0KKwlpZiAoaHBfc2RjLnJxdHkgPD0gMCkg
ew0KKwkJLyogQWxsIGRhdGEgaGFzIGJlZW4gZ2F0aGVyZWQuICovDQorCQlp
ZihjdXJyLT5zZXFbY3Vyci0+YWN0aWR4XSAmIEhQX1NEQ19BQ1RfU0VNQVBI
T1JFKSB7DQorCQkJaWYgKGN1cnItPmFjdC5zZW1hcGhvcmUpIHVwKGN1cnIt
PmFjdC5zZW1hcGhvcmUpOw0KKwkJfQ0KKwkJaWYoY3Vyci0+c2VxW2N1cnIt
PmFjdGlkeF0gJiBIUF9TRENfQUNUX0NBTExCQUNLKSB7DQorCQkJaWYgKGN1
cnItPmFjdC5pcnFob29rKQ0KKwkJCQljdXJyLT5hY3QuaXJxaG9vayhpcnEs
IGRldl9pZCwgc3RhdHVzLCBkYXRhKTsNCisJCX0NCisJCWN1cnItPmFjdGlk
eCA9IGN1cnItPmlkeDsNCisJCWN1cnItPmlkeCsrOw0KKwkJLyogUmV0dXJu
IGNvbnRyb2wgb2YgdGhpcyB0cmFuc2FjdGlvbiAqLw0KKwkJd3JpdGVfbG9j
aygmaHBfc2RjLnJ0cV9sb2NrKTsNCisJCWhwX3NkYy5yY3VyciA9IC0xOyAN
CisJCWhwX3NkYy5ycXR5ID0gMDsNCisJCXdyaXRlX3VubG9jaygmaHBfc2Rj
LnJ0cV9sb2NrKTsNCisJCXRhc2tsZXRfc2NoZWR1bGUoJmhwX3NkYy50YXNr
KTsNCisJfQ0KK30NCisNCitzdGF0aWMgdm9pZCBocF9zZGNfaXNyKGludCBp
cnEsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKSB7DQor
CXVpbnQ4X3Qgc3RhdHVzLCBkYXRhOw0KKw0KKwlzdGF0dXMgPSBocF9zZGNf
c3RhdHVzX2luOCgpOw0KKwkvKiBSZWFkIGRhdGEgdW5jb25kaXRpb25hbGx5
IHRvIGFkdmFuY2UgaTgwNDIuICovDQorCWRhdGEgPSAgIGhwX3NkY19kYXRh
X2luOCgpOw0KKw0KKwkvKiBGb3Igbm93IHdlIGFyZSBpZ25vcmluZyB0aGVz
ZSB1bnRpbCB3ZSBnZXQgdGhlIFNEQyB0byBiZWhhdmUuICovDQorCWlmICgo
KHN0YXR1cyAmIDB4ZjEpID09IDB4NTEpICYmIGRhdGEgPT0gMHg4Mikgew0K
KwkgIHJldHVybjsNCisJfQ0KKwkvLyBwcmludGsoIlxuPlslMi4yeCwlMi4y
eF0gKCVsdSkgIiwgc3RhdHVzLCBkYXRhLCBtZmN0bCgxNikpOw0KKw0KKwlz
d2l0Y2goc3RhdHVzICYgSFBfU0RDX1NUQVRVU19JUlFNQVNLKSB7DQorCSAg
ICAgIGNhc2UgMDogLyogVGhpcyBjYXNlIGlzIG5vdCBkb2N1bWVudGVkLiAq
Lw0KKwkJYnJlYWs7DQorCSAgICAgIGNhc2UgSFBfU0RDX1NUQVRVU19VU0VS
VElNRVI6DQorCSAgICAgIGNhc2UgSFBfU0RDX1NUQVRVU19QRVJJT0RJQzoN
CisJICAgICAgY2FzZSBIUF9TRENfU1RBVFVTX1RJTUVSOg0KKwkJcmVhZF9s
b2NrKCZocF9zZGMuaG9va19sb2NrKTsNCisJICAgICAgCWlmIChocF9zZGMu
dGltZXIgIT0gTlVMTCkNCisJCQlocF9zZGMudGltZXIoaXJxLCBkZXZfaWQs
IHN0YXR1cywgZGF0YSk7DQorCQlyZWFkX3VubG9jaygmaHBfc2RjLmhvb2tf
bG9jayk7DQorCQlicmVhazsNCisJICAgICAgY2FzZSBIUF9TRENfU1RBVFVT
X1JFRzoNCisJCWhwX3NkY190YWtlKGlycSwgZGV2X2lkLCBzdGF0dXMsIGRh
dGEpOw0KKwkJYnJlYWs7DQorCSAgICAgIGNhc2UgSFBfU0RDX1NUQVRVU19I
SUxDTUQ6DQorCSAgICAgIGNhc2UgSFBfU0RDX1NUQVRVU19ISUxEQVRBOg0K
KwkJcmVhZF9sb2NrKCZocF9zZGMuaG9va19sb2NrKTsNCisJCWlmIChocF9z
ZGMuaGlsICE9IE5VTEwpDQorCQkJaHBfc2RjLmhpbChpcnEsIGRldl9pZCwg
c3RhdHVzLCBkYXRhKTsNCisJCXJlYWRfdW5sb2NrKCZocF9zZGMuaG9va19s
b2NrKTsNCisJCWJyZWFrOw0KKwkgICAgICBjYXNlIEhQX1NEQ19TVEFUVVNf
UFVQOg0KKwkJcmVhZF9sb2NrKCZocF9zZGMuaG9va19sb2NrKTsNCisJCWlm
IChocF9zZGMucHVwICE9IE5VTEwpDQorCQkJaHBfc2RjLnB1cChpcnEsIGRl
dl9pZCwgc3RhdHVzLCBkYXRhKTsNCisJCWVsc2UgcHJpbnRrKCJIUCBTREMg
cmVwb3J0cyBzdWNjZXNzZnVsIFBVUC5cbiIpOw0KKwkJcmVhZF91bmxvY2so
JmhwX3NkYy5ob29rX2xvY2spOw0KKwkJYnJlYWs7DQorCSAgICAgIGRlZmF1
bHQ6DQorCQlyZWFkX2xvY2soJmhwX3NkYy5ob29rX2xvY2spOw0KKwkJaWYg
KGhwX3NkYy5jb29rZWQgIT0gTlVMTCkNCisJCQlocF9zZGMuY29va2VkKGly
cSwgZGV2X2lkLCBzdGF0dXMsIGRhdGEpOw0KKwkJcmVhZF91bmxvY2soJmhw
X3NkYy5ob29rX2xvY2spOw0KKwkJYnJlYWs7DQorCX0NCit9DQorDQorDQor
c3RhdGljIHZvaWQgaHBfc2RjX25taXNyKGludCBpcnEsIHZvaWQgKmRldl9p
ZCwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKSB7DQorCWludCBzdGF0dXM7DQor
CQ0KKwlzdGF0dXMgPSBocF9zZGNfc3RhdHVzX2luOCgpOw0KKw0KKwlyZXR1
cm47DQorDQorCWlmIChzdGF0dXMgJiBIUF9TRENfTk1JU1RBVFVTX0ZIUykg
ew0KKwkJcmVhZF9sb2NrKCZocF9zZGMuaG9va19sb2NrKTsNCisJICAgICAg
CWlmIChocF9zZGMudGltZXIgIT0gTlVMTCkNCisJCQlocF9zZGMudGltZXIo
aXJxLCBkZXZfaWQsIHN0YXR1cywgMCk7DQorCQlyZWFkX3VubG9jaygmaHBf
c2RjLmhvb2tfbG9jayk7DQorCX0NCisJZWxzZSB7DQorCQkvKiBUT0RPOiBw
YXNzIHRoaXMgb24gdG8gdGhlIEhJTCBoYW5kbGVyLCBvciBkbyBTQUsgaGVy
ZT8gKi8NCisJCXByaW50aygiSElMIE5NSVxuIik7DQorCX0NCit9DQorDQor
DQorLyoqKioqKioqKioqKioqKioqIEtlcm5lbCAodGFza2xldCkgY29udGV4
dCBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKi8NCisNCit1bnNpZ25lZCBs
b25nIGhwX3NkY19wdXQodm9pZCk7DQorDQorc3RhdGljIHZvaWQgaHBfc2Rj
X3Rhc2tsZXQodW5zaWduZWQgbG9uZyBmb28pIHsNCisNCisJd3JpdGVfbG9j
a19pcnEoJmhwX3NkYy5ydHFfbG9jayk7DQorCWlmIChocF9zZGMucmN1cnIg
Pj0gMCkgew0KKwkJc3RydWN0IHRpbWV2YWwgdHY7DQorCQlnZXRfZmFzdF90
aW1lKCZ0dik7DQorCQlpZiAodHYudHZfc2VjID4gaHBfc2RjLnJ0di50dl9z
ZWMpIHR2LnR2X3VzZWMgKz0gMTAwMDAwMDsNCisJCWlmICh0di50dl91c2Vj
IC0gaHBfc2RjLnJ0di50dl91c2VjID4gSFBfU0RDX01BWF9SRUdfREVMQVkp
IHsNCisJCQlocF9zZGNfdHJhbnNhY3Rpb24gKmN1cnI7DQorCQkJdWludDhf
dCB0bXA7DQorDQorCQkJY3VyciA9IGhwX3NkYy50cVtocF9zZGMucmN1cnJd
Ow0KKwkJCS8qIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIGEgbm9ybWFsIGZh
aWx1cmUgbW9kZQ0KKwkJCSAqIHdlJ2xsIG5lZWQgdG8gZmlndXJlIG91dCBh
IHdheSB0byBjb21tdW5pY2F0ZQ0KKwkJCSAqIGl0IGJhY2sgdG8gdGhlIGFw
cGxpY2F0aW9uLiBhbmQgYmUgbGVzcyB2ZXJib3NlLg0KKwkJCSAqLw0KKwkJ
CXByaW50aygiSFAgU0RDIHJlYWQgdGltZW91dCAoJWl1cykhXG4iLA0KKwkJ
CSAgICAgICB0di50dl91c2VjIC0gaHBfc2RjLnJ0di50dl91c2VjKTsNCisJ
CQljdXJyLT5pZHggKz0gaHBfc2RjLnJxdHk7DQorCQkJaHBfc2RjLnJxdHkg
PSAwOw0KKwkJCXRtcCA9IGN1cnItPnNlcVtjdXJyLT5hY3RpZHhdOw0KKwkJ
CWN1cnItPnNlcVtjdXJyLT5hY3RpZHhdIHw9IEhQX1NEQ19BQ1RfREVBRDsN
CisJCQlpZih0bXAgJiBIUF9TRENfQUNUX1NFTUFQSE9SRSkgew0KKwkJCQlp
ZiAoY3Vyci0+YWN0LnNlbWFwaG9yZSkgDQorCQkJCQl1cChjdXJyLT5hY3Qu
c2VtYXBob3JlKTsNCisJCQl9DQorCQkJaWYodG1wICYgSFBfU0RDX0FDVF9D
QUxMQkFDSykgew0KKwkJCQkvKiBOb3RlIHRoaXMgbWVhbnMgdGhhdCBpcnFo
b29rcyBtYXkgYmUgY2FsbGVkDQorCQkJCSAqIGluIHRhc2tsZXQvYmggY29u
dGV4dC4NCisJCQkJICovDQorCQkJCWlmIChjdXJyLT5hY3QuaXJxaG9vaykg
DQorCQkJCQljdXJyLT5hY3QuaXJxaG9vaygwLCAwLCAwLCAwKTsNCisJCQl9
DQorCQkJY3Vyci0+YWN0aWR4ID0gY3Vyci0+aWR4Ow0KKwkJCWN1cnItPmlk
eCsrOw0KKwkJCWhwX3NkYy5yY3VyciA9IC0xOyANCisJCX0NCisJfQ0KKwl3
cml0ZV91bmxvY2tfaXJxKCZocF9zZGMucnRxX2xvY2spOw0KKwlocF9zZGNf
cHV0KCk7DQorfQ0KKw0KK3Vuc2lnbmVkIGxvbmcgaHBfc2RjX3B1dCh2b2lk
KSB7DQorCWhwX3NkY190cmFuc2FjdGlvbiAqY3VycjsNCisJdWludDhfdCBh
Y3Q7DQorCWludCBpZHgsIGN1cnJpZHg7DQorDQorCWludCBsaW1pdCA9IDA7
DQorDQorCXdyaXRlX2xvY2soJmhwX3NkYy5sb2NrKTsNCisNCisJLyogSWYg
aTgwNDIgYnVmZmVycyBhcmUgZnVsbCwgd2UgY2Fubm90IGRvIGFueXRoaW5n
IHRoYXQNCisJICAgcmVxdWlyZXMgb3V0cHV0LCBzbyB3ZSBza2lwIHRvIHRo
ZSBhZG1pbmlzdHJhdGl2YS4gKi8NCisJaWYgKGhwX3NkYy5pYmYpIHsNCisJ
CWhwX3NkY19zdGF0dXNfaW44KCk7DQorCQlpZiAoaHBfc2RjLmliZikgZ290
byBmaW5pc2g7DQorCX0NCisNCisgYW5ldzoNCisJLyogU2VlIGlmIHdlIGFy
ZSBpbiB0aGUgbWlkZGxlIG9mIGEgc2VxdWVuY2UuICovDQorCWlmIChocF9z
ZGMud2N1cnIgPCAwKSBocF9zZGMud2N1cnIgPSAwOw0KKwlyZWFkX2xvY2tf
aXJxKCZocF9zZGMucnRxX2xvY2spOw0KKwlpZiAoaHBfc2RjLnJjdXJyID09
IGhwX3NkYy53Y3VycikgaHBfc2RjLndjdXJyKys7DQorCXJlYWRfdW5sb2Nr
X2lycSgmaHBfc2RjLnJ0cV9sb2NrKTsNCisJaWYgKGhwX3NkYy53Y3VyciA+
PSBIUF9TRENfUVVFVUVfTEVOKSBocF9zZGMud2N1cnIgPSAwOw0KKwljdXJy
aWR4ID0gaHBfc2RjLndjdXJyOw0KKw0KKwlpZiAoaHBfc2RjLnRxW2N1cnJp
ZHhdICE9IE5VTEwpIGdvdG8gc3RhcnQ7DQorDQorCXdoaWxlICgrK2N1cnJp
ZHggIT0gaHBfc2RjLndjdXJyKSB7DQorCQlpZiAoY3VycmlkeCA+PSBIUF9T
RENfUVVFVUVfTEVOKSB7DQorCQkJY3VycmlkeCA9IC0xOyAvKiBXcmFwIHRv
IHRvcCAqLw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KKwkJcmVhZF9sb2NrX2ly
cSgmaHBfc2RjLnJ0cV9sb2NrKTsNCisJCWlmIChocF9zZGMucmN1cnIgPT0g
Y3VycmlkeCkgew0KKwkJCXJlYWRfdW5sb2NrX2lycSgmaHBfc2RjLnJ0cV9s
b2NrKTsNCisJCQljb250aW51ZTsNCisJCX0NCisJCXJlYWRfdW5sb2NrX2ly
cSgmaHBfc2RjLnJ0cV9sb2NrKTsNCisJCWlmIChocF9zZGMudHFbY3Vycmlk
eF0gIT0gTlVMTCkgYnJlYWs7IC8qIEZvdW5kIG9uZS4gKi8NCisJfQ0KKwlp
ZiAoY3VycmlkeCA9PSBocF9zZGMud2N1cnIpIHsgLyogVGhlcmUncyBub3Ro
aW5nIHF1ZXVlZCB0byBkby4gKi8NCisJCWN1cnJpZHggPSAtMTsNCisJfQ0K
KwlocF9zZGMud2N1cnIgPSBjdXJyaWR4Ow0KKw0KKyBzdGFydDoNCisNCisJ
LyogQ2hlY2sgdG8gc2VlIGlmIHRoZSBpbnRlcnJ1cHQgbWFzayBuZWVkcyB0
byBiZSBzZXQuICovDQorCWlmIChocF9zZGMuc2V0X2ltKSB7DQorCQlocF9z
ZGNfc3RhdHVzX291dDgoaHBfc2RjLmltIHwgSFBfU0RDX0NNRF9TRVRfSU0p
Ow0KKwkJaHBfc2RjLnNldF9pbSA9IDA7DQorCQlnb3RvIGZpbmlzaDsNCisJ
fQ0KKw0KKwlpZiAoaHBfc2RjLndjdXJyID09IC0xKSBnb3RvIGRvbmU7DQor
DQorCWN1cnIgPSBocF9zZGMudHFbY3VycmlkeF07DQorCWlkeCA9IGN1cnIt
PmFjdGlkeDsNCisNCisJaWYgKGN1cnItPmFjdGlkeCA+PSBjdXJyLT5lbmRp
ZHgpIHsNCisJCWhwX3NkYy50cVtjdXJyaWR4XSA9IE5VTEw7DQorCQkvKiBJ
bnRlcmxlYXZlIG91dGJvdW5kIGRhdGEgYmV0d2VlbiB0aGUgdHJhbnNhY3Rp
b25zLiAqLw0KKwkJaHBfc2RjLndjdXJyKys7DQorCQlpZiAoaHBfc2RjLndj
dXJyID49IEhQX1NEQ19RVUVVRV9MRU4pIGhwX3NkYy53Y3VyciA9IDA7DQor
CQlnb3RvIGZpbmlzaDsJDQorCX0NCisNCisJYWN0ID0gY3Vyci0+c2VxW2lk
eF07DQorCWlkeCsrOw0KKw0KKwlpZiAoY3Vyci0+aWR4ID49IGN1cnItPmVu
ZGlkeCkgew0KKwkJaWYgKGFjdCAmIEhQX1NEQ19BQ1RfREVBTExPQykga2Zy
ZWUoY3Vycik7DQorCQlocF9zZGMudHFbY3VycmlkeF0gPSBOVUxMOw0KKwkJ
LyogSW50ZXJsZWF2ZSBvdXRib3VuZCBkYXRhIGJldHdlZW4gdGhlIHRyYW5z
YWN0aW9ucy4gKi8NCisJCWhwX3NkYy53Y3VycisrOw0KKwkJaWYgKGhwX3Nk
Yy53Y3VyciA+PSBIUF9TRENfUVVFVUVfTEVOKSBocF9zZGMud2N1cnIgPSAw
Ow0KKwkJZ290byBmaW5pc2g7CQ0KKwl9DQorDQorCXdoaWxlIChhY3QgJiBI
UF9TRENfQUNUX1BSRUNNRCkgew0KKwkJaWYgKGN1cnItPmlkeCAhPSBpZHgp
IHsNCisJCQlpZHgrKzsNCisJCQlhY3QgJj0gfkhQX1NEQ19BQ1RfUFJFQ01E
Ow0KKwkJCWJyZWFrOw0KKwkJfQ0KKwkJaHBfc2RjX3N0YXR1c19vdXQ4KGN1
cnItPnNlcVtpZHhdKTsNCisJCWN1cnItPmlkeCsrOw0KKwkJLyogYWN0IGZp
bmlzaGVkPyAqLw0KKwkJaWYgKChhY3QgJiBIUF9TRENfQUNUX0RVUklORykg
PT0gSFBfU0RDX0FDVF9QUkVDTUQpDQorCQkgIGdvdG8gYWN0ZG9uZTsNCisJ
CS8qIHNraXAgcXVhbnRpdHkgZmllbGQgaWYgZGF0YS1vdXQgc2VxdWVuY2Ug
Zm9sbG93cy4gKi8NCisJCWlmIChhY3QgJiBIUF9TRENfQUNUX0RBVEFPVVQp
IGN1cnItPmlkeCsrOw0KKwkJZ290byBmaW5pc2g7DQorCX0NCisJaWYgKGFj
dCAmIEhQX1NEQ19BQ1RfREFUQU9VVCkgew0KKwkJaW50IHF0eTsNCisNCisJ
CXF0eSA9IGN1cnItPnNlcVtpZHhdOw0KKwkJaWR4Kys7DQorCQlpZiAoY3Vy
ci0+aWR4IC0gaWR4IDwgcXR5KSB7DQorCQkJaHBfc2RjX2RhdGFfb3V0OChj
dXJyLT5zZXFbY3Vyci0+aWR4XSk7DQorCQkJY3Vyci0+aWR4Kys7DQorCQkJ
LyogYWN0IGZpbmlzaGVkPyAqLw0KKwkJCWlmICgoY3Vyci0+aWR4IC0gaWR4
ID49IHF0eSkgJiYgDQorCQkJICAgICgoYWN0ICYgSFBfU0RDX0FDVF9EVVJJ
TkcpID09IEhQX1NEQ19BQ1RfREFUQU9VVCkpDQorCQkJCWdvdG8gYWN0ZG9u
ZTsNCisJCQlnb3RvIGZpbmlzaDsNCisJCX0NCisJCWlkeCArPSBxdHk7DQor
CQlhY3QgJj0gfkhQX1NEQ19BQ1RfREFUQU9VVDsNCisJfQ0KKwllbHNlIHdo
aWxlIChhY3QgJiBIUF9TRENfQUNUX0RBVEFSRUcpIHsNCisJCWludCBtYXNr
Ow0KKwkJdWludDhfdCB3N1s0XTsNCisNCisJCW1hc2sgPSBjdXJyLT5zZXFb
aWR4XTsNCisJCWlmIChpZHggIT0gY3Vyci0+aWR4KSB7DQorCQkJaWR4Kys7
DQorCQkJaWR4ICs9ICEhKG1hc2sgJiAxKTsNCisJCQlpZHggKz0gISEobWFz
ayAmIDIpOw0KKwkJCWlkeCArPSAhIShtYXNrICYgNCk7DQorCQkJaWR4ICs9
ICEhKG1hc2sgJiA4KTsNCisJCQlhY3QgJj0gfkhQX1NEQ19BQ1RfREFUQVJF
RzsNCisJCQlicmVhazsNCisJCX0NCisJCQ0KKwkJdzdbMF0gPSAobWFzayAm
IDEpID8gY3Vyci0+c2VxWysraWR4XSA6IGhwX3NkYy5yN1swXTsNCisJCXc3
WzFdID0gKG1hc2sgJiAyKSA/IGN1cnItPnNlcVsrK2lkeF0gOiBocF9zZGMu
cjdbMV07DQorCQl3N1syXSA9IChtYXNrICYgNCkgPyBjdXJyLT5zZXFbKytp
ZHhdIDogaHBfc2RjLnI3WzJdOw0KKwkJdzdbM10gPSAobWFzayAmIDgpID8g
Y3Vyci0+c2VxWysraWR4XSA6IGhwX3NkYy5yN1szXTsNCisJCQ0KKwkJaWYg
KGhwX3NkYy53aSA+IDB4NzMgfHwgaHBfc2RjLndpIDwgMHg3MCB8fA0KKwkJ
ICAgICAgICB3N1tocF9zZGMud2ktMHg3MF0gPT0gaHBfc2RjLnI3W2hwX3Nk
Yy53aS0weDcwXSkgew0KKwkJCWludCBpID0gMDsNCisNCisJCQkvKiBOZWVk
IHRvIHBvaW50IHRoZSB3cml0ZSBpbmRleCByZWdpc3RlciAqLwkNCisJCQl3
aGlsZSAoKGkgPCA0KSAmJiB3N1tpXSA9PSBocF9zZGMucjdbaV0pIGkrKzsN
CisJCQlpZiAoaSA8IDQpIHsNCisJCQkJaHBfc2RjX3N0YXR1c19vdXQ4KEhQ
X1NEQ19DTURfU0VUX0QwICsgaSk7DQorCQkJCWhwX3NkYy53aSA9IDB4NzAg
KyBpOw0KKwkJCQlnb3RvIGZpbmlzaDsNCisJCQl9DQorCQkJaWR4Kys7DQor
CQkJaWYgKChhY3QgJiBIUF9TRENfQUNUX0RVUklORykgPT0gSFBfU0RDX0FD
VF9EQVRBUkVHKQ0KKwkJCQlnb3RvIGFjdGRvbmU7DQorCQkJY3Vyci0+aWR4
ID0gaWR4Ow0KKwkJCWFjdCAmPSB+SFBfU0RDX0FDVF9EQVRBUkVHOw0KKwkJ
CWJyZWFrOw0KKwkJfQ0KKw0KKwkJaHBfc2RjX2RhdGFfb3V0OCh3N1tocF9z
ZGMud2kgLSAweDcwXSk7DQorCQlocF9zZGMucjdbaHBfc2RjLndpIC0gMHg3
MF0gPSB3N1tocF9zZGMud2kgLSAweDcwXTsNCisJCWhwX3NkYy53aSsrOyAv
KiB3cml0ZSBpbmRleCByZWdpc3RlciBhdXRvaW5jcmVtZW50cyAqLw0KKwkJ
ew0KKwkJCWludCBpID0gMDsNCisNCisJCQl3aGlsZSAoKGkgPCA0KSAmJiB3
N1tpXSA9PSBocF9zZGMucjdbaV0pIGkrKzsNCisJCQlpZiAoaSA+PSA0KSB7
DQorCQkJCWN1cnItPmlkeCA9IGlkeCArIDE7DQorCQkJCWlmICgoYWN0ICYg
SFBfU0RDX0FDVF9EVVJJTkcpID09IA0KKwkJCQkgICAgSFBfU0RDX0FDVF9E
QVRBUkVHKQ0KKwkJCQkgICAgICAgIGdvdG8gYWN0ZG9uZTsNCisJCQl9DQor
CQl9DQorCQlnb3RvIGZpbmlzaDsNCisJfQ0KKwkvKiBXZSBkb24ndCBnbyBh
bnkgZnVydGhlciBpbiB0aGUgY29tbWFuZCBpZiB0aGVyZSBpcyBhIHBlbmRp
bmcgcmVhZCwNCisJICAgYmVjYXVzZSB3ZSBkb24ndCB3YW50IGludGVybGVh
dmVkIHJlc3VsdHMuICovDQorCXJlYWRfbG9ja19pcnEoJmhwX3NkYy5ydHFf
bG9jayk7DQorCWlmIChocF9zZGMucmN1cnIgPj0gMCkgew0KKwkJcmVhZF91
bmxvY2tfaXJxKCZocF9zZGMucnRxX2xvY2spOw0KKwkJZ290byBmaW5pc2g7
DQorCX0NCisJcmVhZF91bmxvY2tfaXJxKCZocF9zZGMucnRxX2xvY2spOw0K
Kw0KKw0KKwlpZiAoYWN0ICYgSFBfU0RDX0FDVF9QT1NUQ01EKSB7DQorCSAg
CXVpbnQ4X3QgcG9zdGNtZDsNCisNCisJCS8qIGN1cnItPmlkeCBzaG91bGQg
PT0gaWR4IGF0IHRoaXMgcG9pbnQuICovDQorCQlwb3N0Y21kID0gY3Vyci0+
c2VxW2lkeF07DQorCQljdXJyLT5pZHgrKzsNCisJCWlmIChhY3QgJiBIUF9T
RENfQUNUX0RBVEFJTikgew0KKw0KKwkJCS8qIFN0YXJ0IGEgbmV3IHJlYWQg
Ki8NCisJICAJCWhwX3NkYy5ycXR5ID0gY3Vyci0+c2VxW2N1cnItPmlkeF07
DQorCQkJZ2V0X2Zhc3RfdGltZSgmaHBfc2RjLnJ0dik7DQorCQkJY3Vyci0+
aWR4Kys7DQorCQkJLyogU3RpbGwgbmVlZCB0byBsb2NrIGhlcmUgaW4gY2Fz
ZSBvZiBzcHVyaW91cyBpcnEuICovDQorCQkJd3JpdGVfbG9ja19pcnEoJmhw
X3NkYy5ydHFfbG9jayk7DQorCQkJaHBfc2RjLnJjdXJyID0gY3VycmlkeDsg
DQorCQkJd3JpdGVfdW5sb2NrX2lycSgmaHBfc2RjLnJ0cV9sb2NrKTsNCisJ
CQlocF9zZGNfc3RhdHVzX291dDgocG9zdGNtZCk7DQorCQkJZ290byBmaW5p
c2g7DQorCQl9DQorCQlocF9zZGNfc3RhdHVzX291dDgocG9zdGNtZCk7DQor
CQlnb3RvIGFjdGRvbmU7DQorCX0NCisNCithY3Rkb25lOg0KKwlpZiAoYWN0
ICYgSFBfU0RDX0FDVF9TRU1BUEhPUkUpIHsNCisJCXVwKGN1cnItPmFjdC5z
ZW1hcGhvcmUpOw0KKwl9DQorCWVsc2UgaWYgKGFjdCAmIEhQX1NEQ19BQ1Rf
Q0FMTEJBQ0spIHsNCisJCWN1cnItPmFjdC5pcnFob29rKDAsMCwwLDApOw0K
Kwl9DQorCWlmIChjdXJyLT5pZHggPj0gY3Vyci0+ZW5kaWR4KSB7IC8qIFRo
aXMgdHJhbnNhY3Rpb24gaXMgb3Zlci4gKi8NCisJCWlmIChhY3QgJiBIUF9T
RENfQUNUX0RFQUxMT0MpIGtmcmVlKGN1cnIpOw0KKwkJaHBfc2RjLnRxW2N1
cnJpZHhdID0gTlVMTDsNCisJfQ0KKwllbHNlIHsNCisJCWN1cnItPmFjdGlk
eCA9IGlkeCArIDE7DQorCQljdXJyLT5pZHggPSBpZHggKyAyOw0KKwl9DQor
CS8qIEludGVybGVhdmUgb3V0Ym91bmQgZGF0YSBiZXR3ZWVuIHRoZSB0cmFu
c2FjdGlvbnMuICovDQorCWhwX3NkYy53Y3VycisrOw0KKwlpZiAoaHBfc2Rj
LndjdXJyID49IEhQX1NEQ19RVUVVRV9MRU4pIGhwX3NkYy53Y3VyciA9IDA7
DQorDQorIGZpbmlzaDoNCisJLyogSWYgYnkgc29tZSBxdWlyayBJQkYgaGFz
IGNsZWFyZWQgYW5kIG91ciBJU1IgaGFzIHJ1biB0byANCisJICAgc2VlIHRo
YXQgdGhhdCBoYXMgaGFwcGVuZWQsIGRvIGl0IGFsbCBhZ2Fpbi4gKi8NCisJ
aWYgKCFocF9zZGMuaWJmICYmIGxpbWl0KysgPCAyMCkgZ290byBhbmV3Ow0K
Kw0KKyBkb25lOg0KKwlpZiAoaHBfc2RjLndjdXJyID49IDApIHRhc2tsZXRf
c2NoZWR1bGUoJmhwX3NkYy50YXNrKTsNCisJd3JpdGVfdW5sb2NrKCZocF9z
ZGMubG9jayk7DQorCXJldHVybiAwOw0KK30NCisNCisvKioqKioqKiBGdW5j
dGlvbnMgY2FsbGVkIGluIGVpdGhlciB1c2VyIG9yIGtlcm5lbCBjb250ZXh0
ICoqKiovDQoraW50IGhwX3NkY19lbnF1ZXVlX3RyYW5zYWN0aW9uKGhwX3Nk
Y190cmFuc2FjdGlvbiAqdGhpcykgew0KKwlpbnQgaTsNCisNCisJaWYgKHRo
aXMgPT0gTlVMTCkgew0KKwkJdGFza2xldF9zY2hlZHVsZSgmaHBfc2RjLnRh
c2spOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX07DQorDQorCXdyaXRlX2xv
Y2tfYmgoJmhwX3NkYy5sb2NrKTsNCisNCisJLyogQ2FuJ3QgaGF2ZSBzYW1l
IHRyYW5zYWN0aW9uIG9uIHF1ZXVlIHR3aWNlICovDQorCWZvciAoaT0wOyBp
IDwgSFBfU0RDX1FVRVVFX0xFTjsgaSsrKQ0KKwkJaWYgKGhwX3NkYy50cVtp
XSA9PSB0aGlzKSBnb3RvIGZhaWw7DQorDQorCXRoaXMtPmFjdGlkeCA9IDA7
DQorCXRoaXMtPmlkeCA9IDE7DQorDQorCS8qIFNlYXJjaCBmb3IgZW1wdHkg
c2xvdCAqLw0KKwlmb3IgKGk9MDsgaSA8IEhQX1NEQ19RVUVVRV9MRU47IGkr
Kykgew0KKwkJaWYgKGhwX3NkYy50cVtpXSA9PSBOVUxMKSB7DQorCQkJaHBf
c2RjLnRxW2ldID0gdGhpczsNCisJCQl0YXNrbGV0X3NjaGVkdWxlKCZocF9z
ZGMudGFzayk7DQorCQkJd3JpdGVfdW5sb2NrX2JoKCZocF9zZGMubG9jayk7
DQorCQkJcmV0dXJuIDA7DQorCQl9DQorCX0NCisJd3JpdGVfdW5sb2NrX2Jo
KCZocF9zZGMubG9jayk7DQorCXByaW50aygiTm8gZnJlZSBzbG90IHRvIGFk
ZCB0cmFuc2FjdGlvbi5cbiIpOw0KKwlyZXR1cm4gLUVCVVNZOw0KKw0KKyBm
YWlsOg0KKwl3cml0ZV91bmxvY2tfYmgoJmhwX3NkYy5sb2NrKTsNCisJcHJp
bnRrKCJUcmFuc2FjdGlvbiBhZGQgZmFpbGVkOiB0cmFuc2FjdGlvbiBhbHJl
YWR5IHF1ZXVlZD9cbiIpOw0KKwlyZXR1cm4gLUVJTlZBTDsNCit9DQorDQor
aW50IGhwX3NkY19kZXF1ZXVlX3RyYW5zYWN0aW9uKGhwX3NkY190cmFuc2Fj
dGlvbiAqdGhpcykgew0KKwlpbnQgaTsNCisNCisJd3JpdGVfbG9ja19iaCgm
aHBfc2RjLmxvY2spOw0KKw0KKwkvKiBUT0RPOiBkb24ndCByZW1vdmUgaXQg
aWYgaXQncyBub3QgZG9uZS4gKi8NCisNCisJZm9yIChpPTA7IGkgPCBIUF9T
RENfUVVFVUVfTEVOOyBpKyspDQorCQlpZiAoaHBfc2RjLnRxW2ldID09IHRo
aXMpIGhwX3NkYy50cVtpXSA9IE5VTEw7DQorDQorCXdyaXRlX3VubG9ja19i
aCgmaHBfc2RjLmxvY2spOw0KKwlyZXR1cm4gMDsNCit9DQorDQorDQorDQor
LyoqKioqKioqKioqKioqKioqKioqKiogVXNlciBjb250ZXh0IGZ1bmN0aW9u
cyAqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitpbnQgaHBfc2RjX3Jl
cXVlc3RfdGltZXJfaXJxKGhwX3NkY19pcnFob29rICpjYWxsYmFjaykgew0K
Kw0KKwlNT0RfSU5DX1VTRV9DT1VOVDsNCisJaWYgKGNhbGxiYWNrID09IE5V
TEwpIHsNCisJCU1PRF9ERUNfVVNFX0NPVU5UOw0KKwkJcmV0dXJuIC1FSU5W
QUw7DQorCX0NCisJd3JpdGVfbG9ja19pcnEoJmhwX3NkYy5ob29rX2xvY2sp
Ow0KKwlpZiAoaHBfc2RjLnRpbWVyICE9IE5VTEwpIHsNCisJCXdyaXRlX3Vu
bG9ja19pcnEoJmhwX3NkYy5ob29rX2xvY2spOw0KKwkJTU9EX0RFQ19VU0Vf
Q09VTlQ7DQorCQlyZXR1cm4gLUVCVVNZOw0KKwl9DQorDQorCWhwX3NkYy50
aW1lciA9IGNhbGxiYWNrOw0KKwkvKiBFbmFibGUgaW50ZXJydXB0cyBmcm9t
IHRoZSB0aW1lcnMgKi8NCisJaHBfc2RjLmltICY9IH5IUF9TRENfSU1fRkg7
DQorICAgICAgICBocF9zZGMuaW0gJj0gfkhQX1NEQ19JTV9QVDsNCisJaHBf
c2RjLmltICY9IH5IUF9TRENfSU1fVElNRVJTOw0KKwlocF9zZGMuc2V0X2lt
ID0gMTsNCisJd3JpdGVfdW5sb2NrX2lycSgmaHBfc2RjLmhvb2tfbG9jayk7
DQorDQorCXRhc2tsZXRfc2NoZWR1bGUoJmhwX3NkYy50YXNrKTsNCisNCisJ
cmV0dXJuIDA7DQorfQ0KKw0KK2ludCBocF9zZGNfcmVxdWVzdF9oaWxfaXJx
KGhwX3NkY19pcnFob29rICpjYWxsYmFjaykgew0KKw0KKwlNT0RfSU5DX1VT
RV9DT1VOVDsNCisJaWYgKGNhbGxiYWNrID09IE5VTEwpIHsNCisJCU1PRF9E
RUNfVVNFX0NPVU5UOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisJd3Jp
dGVfbG9ja19pcnEoJmhwX3NkYy5ob29rX2xvY2spOw0KKwlpZiAoaHBfc2Rj
LmhpbCAhPSBOVUxMKSB7DQorCQl3cml0ZV91bmxvY2tfaXJxKCZocF9zZGMu
aG9va19sb2NrKTsNCisJCU1PRF9ERUNfVVNFX0NPVU5UOw0KKwkJcmV0dXJu
IC1FQlVTWTsNCisJfQ0KKw0KKwlocF9zZGMuaGlsID0gY2FsbGJhY2s7DQor
CWhwX3NkYy5pbSAmPSB+SFBfU0RDX0lNX0hJTDsNCisJaHBfc2RjLnNldF9p
bSA9IDE7DQorCXdyaXRlX3VubG9ja19pcnEoJmhwX3NkYy5ob29rX2xvY2sp
Ow0KKw0KKwl0YXNrbGV0X3NjaGVkdWxlKCZocF9zZGMudGFzayk7DQorDQor
CXJldHVybiAwOw0KK30NCisNCitpbnQgaHBfc2RjX3JlcXVlc3RfY29va2Vk
X2lycShocF9zZGNfaXJxaG9vayAqY2FsbGJhY2spIHsNCisNCisJTU9EX0lO
Q19VU0VfQ09VTlQ7DQorCWlmIChjYWxsYmFjayA9PSBOVUxMKSB7DQorCQlN
T0RfREVDX1VTRV9DT1VOVDsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQor
CXdyaXRlX2xvY2tfaXJxKCZocF9zZGMuaG9va19sb2NrKTsNCisJaWYgKGhw
X3NkYy5jb29rZWQgIT0gTlVMTCkgew0KKwkJd3JpdGVfdW5sb2NrX2lycSgm
aHBfc2RjLmhvb2tfbG9jayk7DQorCQlNT0RfREVDX1VTRV9DT1VOVDsNCisJ
CXJldHVybiAtRUJVU1k7DQorCX0NCisNCisJLyogRW5hYmxlIGludGVycnVw
dHMgZnJvbSB0aGUgSElMIE1MQyAqLw0KKwlocF9zZGMuY29va2VkID0gY2Fs
bGJhY2s7DQorCWhwX3NkYy5pbSAmPSB+SFBfU0RDX0lNX0hJTDsNCisJaHBf
c2RjLnNldF9pbSA9IDE7DQorCXdyaXRlX3VubG9ja19pcnEoJmhwX3NkYy5o
b29rX2xvY2spOw0KKw0KKwl0YXNrbGV0X3NjaGVkdWxlKCZocF9zZGMudGFz
ayk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitpbnQgaHBfc2RjX3JlbGVh
c2VfdGltZXJfaXJxKGhwX3NkY19pcnFob29rICpjYWxsYmFjaykgew0KKw0K
Kw0KKwl3cml0ZV9sb2NrX2lycSgmaHBfc2RjLmhvb2tfbG9jayk7DQorCWlm
ICgoY2FsbGJhY2sgIT0gaHBfc2RjLnRpbWVyKSB8fA0KKwkgICAgKGhwX3Nk
Yy50aW1lciA9PSBOVUxMKSkgew0KKwkJd3JpdGVfdW5sb2NrX2lycSgmaHBf
c2RjLmhvb2tfbG9jayk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0K
KwkvKiBEaXNhYmxlIGludGVycnVwdHMgZnJvbSB0aGUgdGltZXJzICovDQor
CWhwX3NkYy50aW1lciA9IE5VTEw7DQorCWhwX3NkYy5pbSB8PSBIUF9TRENf
SU1fVElNRVJTOw0KKwlocF9zZGMuaW0gfD0gSFBfU0RDX0lNX0ZIOw0KKwlo
cF9zZGMuaW0gfD0gSFBfU0RDX0lNX1BUOw0KKwlocF9zZGMuc2V0X2ltID0g
MTsNCisJd3JpdGVfdW5sb2NrX2lycSgmaHBfc2RjLmhvb2tfbG9jayk7DQor
CXRhc2tsZXRfc2NoZWR1bGUoJmhwX3NkYy50YXNrKTsNCisNCisJTU9EX0RF
Q19VU0VfQ09VTlQ7DQorCXJldHVybiAwOw0KK30NCisNCitpbnQgaHBfc2Rj
X3JlbGVhc2VfaGlsX2lycShocF9zZGNfaXJxaG9vayAqY2FsbGJhY2spIHsN
CisNCisJd3JpdGVfbG9ja19pcnEoJmhwX3NkYy5ob29rX2xvY2spOw0KKwlp
ZiAoKGNhbGxiYWNrICE9IGhwX3NkYy5oaWwpIHx8DQorCSAgICAoaHBfc2Rj
LmhpbCA9PSBOVUxMKSkgew0KKwkJd3JpdGVfdW5sb2NrX2lycSgmaHBfc2Rj
Lmhvb2tfbG9jayk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlo
cF9zZGMuaGlsID0gTlVMTDsNCisJLyogRGlzYWJsZSBpbnRlcnJ1cHRzIGZy
b20gSElMIG9ubHkgaWYgdGhlcmUgaXMgbm8gY29va2VkIGRyaXZlci4gKi8N
CisJaWYoaHBfc2RjLmNvb2tlZCA9PSBOVUxMKSB7DQorCQlocF9zZGMuaW0g
fD0gSFBfU0RDX0lNX0hJTDsNCisJCWhwX3NkYy5zZXRfaW0gPSAxOw0KKwl9
DQorCXdyaXRlX3VubG9ja19pcnEoJmhwX3NkYy5ob29rX2xvY2spOw0KKwl0
YXNrbGV0X3NjaGVkdWxlKCZocF9zZGMudGFzayk7DQorDQorCU1PRF9ERUNf
VVNFX0NPVU5UOw0KKwlyZXR1cm4gMDsNCit9DQorDQoraW50IGhwX3NkY19y
ZWxlYXNlX2Nvb2tlZF9pcnEoaHBfc2RjX2lycWhvb2sgKmNhbGxiYWNrKSB7
DQorDQorCXdyaXRlX2xvY2tfaXJxKCZocF9zZGMuaG9va19sb2NrKTsNCisJ
aWYgKChjYWxsYmFjayAhPSBocF9zZGMuY29va2VkKSB8fA0KKwkgICAgKGhw
X3NkYy5jb29rZWQgPT0gTlVMTCkpIHsNCisJCXdyaXRlX3VubG9ja19pcnEo
JmhwX3NkYy5ob29rX2xvY2spOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0N
CisNCisJaHBfc2RjLmNvb2tlZCA9IE5VTEw7DQorCS8qIERpc2FibGUgaW50
ZXJydXB0cyBmcm9tIEhJTCBvbmx5IGlmIHRoZXJlIGlzIG5vIHJhdyBISUwg
ZHJpdmVyLiAqLw0KKwlpZihocF9zZGMuaGlsID09IE5VTEwpIHsNCisJCWhw
X3NkYy5pbSB8PSBIUF9TRENfSU1fSElMOw0KKwkJaHBfc2RjLnNldF9pbSA9
IDE7DQorCX0NCisJd3JpdGVfdW5sb2NrX2lycSgmaHBfc2RjLmhvb2tfbG9j
ayk7DQorCXRhc2tsZXRfc2NoZWR1bGUoJmhwX3NkYy50YXNrKTsNCisNCisJ
TU9EX0RFQ19VU0VfQ09VTlQ7DQorCXJldHVybiAwOw0KK30NCisNCisvKioq
KioqKioqKioqKioqKioqKioqKioqKiBLZWVwYWxpdmUgdGltZXIgdGFzayAq
KioqKioqKioqKioqKioqKioqKiovDQorDQordm9pZCBocF9zZGNfa2lja2Vy
ICh1bnNpZ25lZCBsb25nIGRhdGEpIHsNCisJdGFza2xldF9zY2hlZHVsZSgm
aHBfc2RjLnRhc2spOw0KKwkvKiBSZS1pbnNlcnQgdGhlIHBlcmlvZGljIHRh
c2suICovDQorCW1vZF90aW1lcigmaHBfc2RjLmtpY2tlciwgamlmZmllcyAr
IEhaKTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqIE1v
ZHVsZSBJbml0aWFsaXphdGlvbiAqKioqKioqKioqKioqKioqKioqKioqKioq
KiovDQorDQorc3RhdGljIHN0cnVjdCBwYXJpc2NfZGV2aWNlX2lkIGhwX3Nk
Y190YmxbXSA9IHsNCisJew0KKwkJaHdfdHlwZToJSFBIV19GSU8sIA0KKwkJ
aHZlcnNpb25fcmV2OglIVkVSU0lPTl9SRVZfQU5ZX0lELA0KKwkJaHZlcnNp
b246CUhWRVJTSU9OX0FOWV9JRCwNCisJCXN2ZXJzaW9uOgkweDczLCANCisJ
IH0sDQorCXsgMCwgfQ0KK307DQorDQorTU9EVUxFX0RFVklDRV9UQUJMRShw
YXJpc2MsIGhwX3NkY190YmwpOw0KKw0KK3N0YXRpYyBpbnQgX19pbml0IGhw
X3NkY19pbml0KHN0cnVjdCBwYXJpc2NfZGV2aWNlICpkKTsNCisNCitzdGF0
aWMgc3RydWN0IHBhcmlzY19kcml2ZXIgaHBfc2RjX2RyaXZlciA9IHsNCisJ
bmFtZToJCSJIUCBTREMiLA0KKwlpZF90YWJsZToJaHBfc2RjX3RibCwNCisJ
cHJvYmU6CQlocF9zZGNfaW5pdCwNCisJbmV4dDoJCU5VTEwsDQorfTsNCisN
CitzdGF0aWMgaW50IF9faW5pdCBocF9zZGNfaW5pdChzdHJ1Y3QgcGFyaXNj
X2RldmljZSAqZCkNCit7DQorCWludCBpOw0KKwljaGFyICplcnJzdHIgPSBO
VUxMOw0KKwlocF9zZGNfdHJhbnNhY3Rpb24gdF9zeW5jOw0KKwl1aW50OF90
IHRzX3N5bmNbNl07DQorCXN0cnVjdCBzZW1hcGhvcmUgc19zeW5jOw0KKw0K
Kw0KKwllcnJzdHIgPSAiZm9vXG4iOw0KKw0KKwlpZiAoIWQpIHJldHVybiAx
Ow0KKwlpZiAoaHBfc2RjLmRldiAhPSBOVUxMKSByZXR1cm4gMTsJLyogV2Ug
b25seSBleHBlY3Qgb25lIFNEQyAqLw0KKw0KKwlocF9zZGMuZGV2ID0gZDsN
CisJaHBfc2RjLmlycQkJPSBkLT5pcnE7DQorCS8qIFRPRE86IElzIE5NSSA9
PSBJUlEgLSAxIGFsbCBjYXNlcywgb3IgaXMgdGhlcmUgYSB3YXkgdG8gcXVl
cnk/ICovDQorCWhwX3NkYy5ubWkJCT0gZC0+aXJxIC0gMTsNCisJaHBfc2Rj
LmJhc2VfaW8JCT0gKHVuc2lnbmVkIGxvbmcpIGQtPmhwYTsNCisJaHBfc2Rj
LmRhdGFfaW8JCT0gKHVuc2lnbmVkIGxvbmcpIGQtPmhwYSArIDB4ODAwOw0K
KwlocF9zZGMuc3RhdHVzX2lvCT0gKHVuc2lnbmVkIGxvbmcpIGQtPmhwYSAr
IDB4ODAxOw0KKw0KKyAgCWhwX3NkYy5sb2NrCQk9IFJXX0xPQ0tfVU5MT0NL
RUQ7DQorICAJaHBfc2RjLmliZl9sb2NrCQk9IFJXX0xPQ0tfVU5MT0NLRUQ7
DQorICAJaHBfc2RjLnJ0cV9sb2NrCQk9IFJXX0xPQ0tfVU5MT0NLRUQ7DQor
ICAJaHBfc2RjLmhvb2tfbG9jawk9IFJXX0xPQ0tfVU5MT0NLRUQ7DQorDQor
CWhwX3NkYy50aW1lcgkJPSBOVUxMOw0KKwlocF9zZGMuaGlsCQk9IE5VTEw7
DQorCWhwX3NkYy5wdXAJCT0gTlVMTDsNCisJaHBfc2RjLmNvb2tlZAkJPSBO
VUxMOw0KKwlocF9zZGMuaW0JCT0gSFBfU0RDX0lNX01BU0s7ICAvKiBNYXNr
IG1hc2thYmxlIGlycXMgKi8NCisJaHBfc2RjLnNldF9pbQkJPSAxOw0KKwlo
cF9zZGMud2kJCT0gMHhmZjsNCisJaHBfc2RjLnI3WzBdCQk9IDB4ZmY7DQor
CWhwX3NkYy5yN1sxXQkJPSAweGZmOw0KKwlocF9zZGMucjdbMl0JCT0gMHhm
ZjsNCisJaHBfc2RjLnI3WzNdCQk9IDB4ZmY7DQorCWhwX3NkYy5pYmYJCT0g
MTsNCisNCisJZm9yIChpID0gMDsgaSA8IEhQX1NEQ19RVUVVRV9MRU47IGkr
KykgaHBfc2RjLnRxW2ldID0gTlVMTDsNCisJaHBfc2RjLndjdXJyCQk9IC0x
Ow0KKyAgICAgICAgaHBfc2RjLnJjdXJyCQk9IC0xOw0KKwlocF9zZGMucnF0
eQkJPSAwOw0KKw0KKwlocF9zZGMuZGV2X2VyciA9IC1FTk9ERVY7DQorDQor
CWVycnN0ciA9ICJJTyBub3QgZm91bmQgZm9yIjsNCisJaWYgKCFocF9zZGMu
YmFzZV9pbykgZ290byBlcnIwOw0KKw0KKwllcnJzdHIgPSAiSVJRIG5vdCBm
b3VuZCBmb3IiOw0KKwlpZiAoIWhwX3NkYy5pcnEpIGdvdG8gZXJyMDsNCisN
CisJaHBfc2RjLmRldl9lcnIgPSAtRUJVU1k7DQorDQorCWVycnN0ciA9ICJJ
TyBub3QgYXZhaWxhYmxlIGZvciI7DQorICAgICAgICBpZiAocmVxdWVzdF9y
ZWdpb24oaHBfc2RjLmRhdGFfaW8sIDIsIGhwX3NkY19kcml2ZXIubmFtZSkp
IGdvdG8gZXJyMDsNCisNCisJZXJyc3RyID0gIklSUSBub3QgYXZhaWxhYmxl
IGZvciI7DQorICAgICAgICBpZihyZXF1ZXN0X2lycShocF9zZGMuaXJxLCAm
aHBfc2RjX2lzciwgMCwgaHBfc2RjX2RyaXZlci5uYW1lLCANCisJCSAgICAg
ICAodm9pZCAqKSBocF9zZGMuYmFzZV9pbykpIGdvdG8gZXJyMTsNCisNCisJ
ZXJyc3RyID0gIk5NSSBub3QgYXZhaWxhYmxlIGZvciI7DQorICAgICAgICBp
ZiAocmVxdWVzdF9pcnEoaHBfc2RjLm5taSwgJmhwX3NkY19ubWlzciwgMCwg
IkhQIFNEQyBOTUkiLCANCisJCQkodm9pZCopZC0+aHBhKSkgZ290byBlcnIy
Ow0KKw0KKwlwcmludGsoS0VSTl9JTkZPICJIUCBTREMgYXQgMHglcCwgSVJR
ICVkIChOTUkgSVJRICVkKVxuIiwgDQorCSAgICAgICAodm9pZCAqKWhwX3Nk
Yy5iYXNlX2lvLCBocF9zZGMuaXJxLCBocF9zZGMubm1pKTsNCisNCisJaHBf
c2RjX3N0YXR1c19pbjgoKTsNCisJaHBfc2RjX2RhdGFfaW44KCk7DQorDQor
CXRhc2tsZXRfaW5pdCgmaHBfc2RjLnRhc2ssIGhwX3NkY190YXNrbGV0LCAw
KTsNCisNCisJLyogU3luYyB0aGUgb3V0cHV0IGJ1ZmZlciByZWdpc3RlcnMs
IHRodXMgc2NoZWR1bGluZyBocF9zZGNfdGFza2xldC4gKi8NCisJdF9zeW5j
LmFjdGlkeAk9IDA7DQorCXRfc3luYy5pZHgJPSAxOw0KKwl0X3N5bmMuZW5k
aWR4CT0gNjsNCisJdF9zeW5jLnNlcQk9IHRzX3N5bmM7DQorCXRzX3N5bmNb
MF0JPSBIUF9TRENfQUNUX0RBVEFSRUcgfCBIUF9TRENfQUNUX1NFTUFQSE9S
RTsNCisJdHNfc3luY1sxXQk9IDB4MGY7DQorCXRzX3N5bmNbMl0gPSB0c19z
eW5jWzNdCT0gdHNfc3luY1s0XSA9IHRzX3N5bmNbNV0gPSAwOw0KKwl0X3N5
bmMuYWN0LnNlbWFwaG9yZSA9ICZzX3N5bmM7DQorCWluaXRfTVVURVhfTE9D
S0VEKCZzX3N5bmMpOw0KKwlocF9zZGNfZW5xdWV1ZV90cmFuc2FjdGlvbigm
dF9zeW5jKTsNCisJZG93bigmc19zeW5jKTsgLyogV2FpdCBmb3IgdF9zeW5j
IHRvIGNvbXBsZXRlICovDQorDQorCS8qIENyZWF0ZSB0aGUga2VlcGFsaXZl
IHRhc2sgKi8NCisJaW5pdF90aW1lcigmaHBfc2RjLmtpY2tlcik7DQorCWhw
X3NkYy5raWNrZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBIWjsNCisJaHBfc2Rj
LmtpY2tlci5mdW5jdGlvbiA9ICZocF9zZGNfa2lja2VyOw0KKwlhZGRfdGlt
ZXIoJmhwX3NkYy5raWNrZXIpOw0KKw0KKwlocF9zZGMuZGV2X2VyciA9IDA7
DQorCXJldHVybiAwOw0KKyBlcnIyOg0KKwlmcmVlX2lycShocF9zZGMuaXJx
LCAodm9pZCAqKWhwX3NkYy5iYXNlX2lvKTsNCisgZXJyMToNCisJcmVsZWFz
ZV9yZWdpb24oaHBfc2RjLmRhdGFfaW8sIDIpOw0KKyBlcnIwOg0KKwlwcmlu
dGsoX19GSUxFX18gIjogJXMgU0RDIElPPTB4JXAgSVJRPTB4JXggTk1JPTB4
JXhcbiIsIGVycnN0ciwNCisJICAgICAgICh2b2lkICopaHBfc2RjLmJhc2Vf
aW8sIGhwX3NkYy5pcnEsIGhwX3NkYy5ubWkpOw0KKwlocF9zZGMuZGV2ID0g
TlVMTDsNCisJcmV0dXJuIGhwX3NkYy5kZXZfZXJyOw0KK30NCisNCitzdGF0
aWMgdm9pZCBfX2V4aXQgaHBfc2RjX2V4aXQodm9pZCkNCit7DQorCXdyaXRl
X2xvY2tfaXJxKCZocF9zZGMubG9jayk7DQorDQorCS8qIFR1cm4gb2ZmIGFs
bCBtYXNrYWJsZSAic3ViLWZ1bmN0aW9uIiBpcnEncy4gKi8NCisJaHBfc2Rj
X3NwaW5faWJmKCk7DQorCWdzY193cml0ZWIoSFBfU0RDX0NNRF9TRVRfSU0g
fCBIUF9TRENfSU1fTUFTSywgaHBfc2RjLnN0YXR1c19pbyk7DQorDQorCS8q
IFdhaXQgdW50aWwgd2Uga25vdyB0aGlzIGhhcyBiZWVuIHByb2Nlc3NlZCBi
eSB0aGUgaTgwNDIgKi8NCisJaHBfc2RjX3NwaW5faWJmKCk7DQorDQorCWZy
ZWVfaXJxKGhwX3NkYy5ubWksICh2b2lkICopKGhwX3NkYy5iYXNlX2lvKSk7
DQorCWZyZWVfaXJxKGhwX3NkYy5pcnEsICh2b2lkICopKGhwX3NkYy5iYXNl
X2lvKSk7DQorCXdyaXRlX3VubG9ja19pcnEoJmhwX3NkYy5sb2NrKTsNCisN
CisJZGVsX3RpbWVyKCZocF9zZGMua2lja2VyKTsNCisNCisJdGFza2xldF9r
aWxsKCZocF9zZGMudGFzayk7DQorDQorICAgICAgICByZWxlYXNlX3JlZ2lv
bihocF9zZGMuZGF0YV9pbywgMik7DQorDQorCWlmICh1bnJlZ2lzdGVyX3Bh
cmlzY19kcml2ZXIoJmhwX3NkY19kcml2ZXIpKSANCisJCXByaW50aygiRXJy
b3IgdW5yZWdpc3RlcmluZyBIUCBTREMiKTsNCisNCisJcHJpbnRrKCJIUCBT
REMgc3VwcG9ydCB1bmxvYWRlZC5cbiIpOw0KK30NCisNCitzdGF0aWMgaW50
IF9faW5pdCBocF9zZGNfcmVnaXN0ZXIodm9pZCkNCit7DQorCWhwX3NkYy5k
ZXYgPSBOVUxMOw0KKwlocF9zZGMuZGV2X2VyciA9IDA7DQorCWhwX3NkY190
cmFuc2FjdGlvbiB0cV9pbml0Ow0KKwl1aW50OF90IHRxX2luaXRfc2VxWzVd
Ow0KKwlzdHJ1Y3Qgc2VtYXBob3JlIHRxX2luaXRfc2VtOw0KKw0KKwlpZiAo
cmVnaXN0ZXJfcGFyaXNjX2RyaXZlcigmaHBfc2RjX2RyaXZlcikpIHsNCisJ
CXByaW50aygiRXJyb3IgcmVnaXN0ZXJpbmcgU0RDIHdpdGggc3lzdGVtIGJ1
cyB0cmVlLlxuIik7DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0KKwlpZiAo
aHBfc2RjLmRldiA9PSBOVUxMKSB7DQorCQlwcmludGsoIkZhaWx1cmUgdG8g
ZmluZCBjb21wYXRpYmxlIFNEQy5cbiIpOw0KKwkJcmV0dXJuIGhwX3NkYy5k
ZXZfZXJyOw0KKwl9DQorCXByaW50aygiSFAgU0RDIHN1cHBvcnQgbG9hZGVk
LlxuIik7DQorDQorCWluaXRfTVVURVhfTE9DS0VEKCZ0cV9pbml0X3NlbSk7
DQorDQorCXRxX2luaXQuYWN0aWR4CQk9IDA7DQorCXRxX2luaXQuaWR4CQk9
IDE7DQorCXRxX2luaXQuZW5kaWR4CQk9IDU7DQorCXRxX2luaXQuc2VxCQk9
IHRxX2luaXRfc2VxOw0KKwl0cV9pbml0LmFjdC5zZW1hcGhvcmUJPSAmdHFf
aW5pdF9zZW07DQorDQorCXRxX2luaXRfc2VxWzBdID0gDQorCSAgSFBfU0RD
X0FDVF9QT1NUQ01EIHwgSFBfU0RDX0FDVF9EQVRBSU4gfCBIUF9TRENfQUNU
X1NFTUFQSE9SRTsNCisJdHFfaW5pdF9zZXFbMV0gPSBIUF9TRENfQ01EX1JF
QURfS0NDOw0KKwl0cV9pbml0X3NlcVsyXSA9IDE7DQorCXRxX2luaXRfc2Vx
WzNdID0gMDsNCisJdHFfaW5pdF9zZXFbNF0gPSAwOw0KKw0KKwlocF9zZGNf
ZW5xdWV1ZV90cmFuc2FjdGlvbigmdHFfaW5pdCk7DQorDQorCWRvd24oJnRx
X2luaXRfc2VtKTsNCisJdXAoJnRxX2luaXRfc2VtKTsNCisNCisJaWYgKCh0
cV9pbml0X3NlcVswXSAmIEhQX1NEQ19BQ1RfREVBRCkgPT0gSFBfU0RDX0FD
VF9ERUFEKSB7DQorCQlwcmludGsoIkVycm9yIHJlYWRpbmcgY29uZmlnIGJ5
dGUuXG4iKTsNCisJCWhwX3NkY19leGl0KCk7DQorCQlyZXR1cm4gLUVOT0RF
VjsNCisJfQ0KKwlocF9zZGMucjExID0gdHFfaW5pdF9zZXFbNF07DQorCWlm
IChocF9zZGMucjExICYgSFBfU0RDX0NGR19ORVcpIHsNCisJCWNoYXIgKnN0
cjsNCisJCXByaW50aygiTmV3IHN0eWxlIFNEQ1xuIik7DQorCQl0cV9pbml0
X3NlcVsxXSA9IEhQX1NEQ19DTURfUkVBRF9YVEQ7DQorCQl0cV9pbml0LmFj
dGlkeAkJPSAwOw0KKwkJdHFfaW5pdC5pZHgJCT0gMTsNCisJCWRvd24oJnRx
X2luaXRfc2VtKTsNCisJCWhwX3NkY19lbnF1ZXVlX3RyYW5zYWN0aW9uKCZ0
cV9pbml0KTsJCQ0KKwkJZG93bigmdHFfaW5pdF9zZW0pOw0KKwkJdXAoJnRx
X2luaXRfc2VtKTsNCisJCWlmICgodHFfaW5pdF9zZXFbMF0gJiBIUF9TRENf
QUNUX0RFQUQpID09IEhQX1NEQ19BQ1RfREVBRCkgew0KKwkJCXByaW50aygi
RXJyb3IgcmVhZGluZyBleHRlbmRlZCBjb25maWcgYnl0ZS5cbiIpOw0KKwkJ
CXJldHVybiAtRU5PREVWOw0KKwkJfQ0KKwkJaHBfc2RjLnI3ZSA9IHRxX2lu
aXRfc2VxWzRdOw0KKwkJSFBfU0RDX1hURF9SRVZfU1RSSU5HUyhocF9zZGMu
cjdlICYgSFBfU0RDX1hURF9SRVYsIHN0cikNCisJCXByaW50aygiUmV2aXNp
b246ICVzXG4iLCBzdHIpOw0KKwkJaWYgKGhwX3NkYy5yN2UgJiBIUF9TRENf
WFREX0JFRVBFUikgew0KKwkJCXByaW50aygiVEkgU043NjQ5NCBiZWVwZXIg
cHJlc2VudFxuIik7DQorCQl9DQorCQlpZiAoaHBfc2RjLnI3ZSAmIEhQX1NE
Q19YVERfQkJSVEMpIHsNCisJCQlwcmludGsoIk9LSSBNU00tNTgzMjEgQkJS
VEMgcHJlc2VudFxuIik7DQorCQl9DQorCQlwcmludGsoIlNwdW5raW5nIHRo
ZSBzZWxmIHRlc3QgcmVnaXN0ZXIgdG8gZm9yY2UgUFVQICINCisJCSAgICAg
ICAib24gbmV4dCBmaXJtd2FyZSByZXNldC5cbiIpOw0KKwkJdHFfaW5pdF9z
ZXFbMF0gPSBIUF9TRENfQUNUX1BSRUNNRCB8IA0KKwkJCUhQX1NEQ19BQ1Rf
REFUQU9VVCB8IEhQX1NEQ19BQ1RfU0VNQVBIT1JFOw0KKwkJdHFfaW5pdF9z
ZXFbMV0gPSBIUF9TRENfQ01EX1NFVF9TVFI7DQorCQl0cV9pbml0X3NlcVsy
XSA9IDE7DQorCQl0cV9pbml0X3NlcVszXSA9IDA7DQorCQl0cV9pbml0LmFj
dGlkeAkJPSAwOw0KKwkJdHFfaW5pdC5pZHgJCT0gMTsNCisJCXRxX2luaXQu
ZW5kaWR4CQk9IDQ7DQorCQlkb3duKCZ0cV9pbml0X3NlbSk7DQorCQlocF9z
ZGNfZW5xdWV1ZV90cmFuc2FjdGlvbigmdHFfaW5pdCk7CQkNCisJCWRvd24o
JnRxX2luaXRfc2VtKTsNCisJCXVwKCZ0cV9pbml0X3NlbSk7DQorCX0NCisJ
ZWxzZSB7DQorCQlwcmludGsoIk9sZCBzdHlsZSBTREMgKDE4MjAtJXMpLlxu
IiwgDQorCQkgICAgICAgKGhwX3NkYy5yMTEgJiBIUF9TRENfQ0ZHX1JFVikg
PyAiMzMwMCIgOiAiMjU2NC8zMDg3Iik7DQorCX0NCisNCisgICAgICAgIHJl
dHVybiAwOw0KK30NCisNCittb2R1bGVfaW5pdChocF9zZGNfcmVnaXN0ZXIp
Ow0KK21vZHVsZV9leGl0KGhwX3NkY19leGl0KTsNCisNCisvKiBUaW1pbmcg
bm90ZXM6ICBUaGVzZSBtZWFzdXJlbWVudHMgdGFrZW4gb24gbXkgNjRNSHog
NzEwMC1MQyAoNzE1LzY0KSANCisgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjeWNsZXMgY3ljbGVzLWFkaiAgICB0
aW1lDQorICogYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgbWZjdGwoMTYpJ3M6
ICAgICAgICAgICAgICA0ICAgICAgICBuL2EgICAgNjNucw0KKyAqIGhwX3Nk
Y19zcGluX2liZiB3aGVuIGlkbGU6ICAgICAgICAgICAgICAgICAgICAgIDEx
OSAgICAgICAgMTE1ICAgMS43dXMNCisgKiBnc2Nfd3JpdGViIHN0YXR1cyBy
ZWdpc3RlcjogICAgICAgICAgICAgICAgICAgICAgODMgICAgICAgICA3OSAg
IDEuMnVzDQorICogSUJGIHRvIGNsZWFyIGFmdGVyIHNlbmRpbmcgU0VUX0lN
OiAgICAgICAgICAgICA2MjA0ICAgICAgIDYwMDYgICAgOTN1cw0KKyAqIElC
RiB0byBjbGVhciBhZnRlciBzZW5kaW5nIExPQURfUlQ6ICAgICAgICAgICAg
NDQ2NyAgICAgICA0MzUyICAgIDY4dXMgIA0KKyAqIElCRiB0byBjbGVhciBh
ZnRlciBzZW5kaW5nIHR3byBMT0FEX1JUczogICAgICAxODk3NCAgICAgIDE4
ODU5ICAgMjk1dXMNCisgKiBSRUFEX1QxLCByZWFkIHN0YXR1cy9kYXRhLCBJ
UlEsIGNhbGwgaGFuZGxlcjogMzU1NjQgICAgICAgIG4vYSAgIDU1NnVzDQor
ICogY21kIHRvIH5JQkYgUkVBRF9UMSAybmQgdGltZSByaWdodCBhZnRlcjog
ICA1MTU4NDAzICAgICAgICBuL2EgICAgODFtcw0KKyAqIGJldHdlZW4gSVJR
IHJlY2VpdmVkIGFuZCB+SUJGIGZvciBhYm92ZTogICAgMjU3ODg3NyAgICAg
ICAgbi9hICAgIDQwbXMNCisgKg0KKyAqIFBlcmZvcm1hbmNlIHN0YXRzIGFm
dGVyIGEgcnVuIG9mIHRoaXMgbW9kdWxlIGNvbmZpZ3VyaW5nIEhJTCBhbmQN
CisgKiByZWNlaXZpbmcgYSBmZXcgbW91c2UgZXZlbnRzOg0KKyAqDQorICog
c3RhdHVzIGluOCAgMjgyNTA4IGN5Y2xlcyA3MTI4IGNhbGxzDQorICogc3Rh
dHVzIG91dDggICA4NDA0IGN5Y2xlcyAgMzQxIGNhbGxzDQorICogZGF0YSBv
dXQ4ICAgICAxNzM0IGN5Y2xlcyAgIDc4IGNhbGxzDQorICogaXNyICAgICAg
ICAgMTc0MzI0IGN5Y2xlcyAgNjE3IGNhbGxzIChpbmNsdWRlcyB0YWtlKQ0K
KyAqIHRha2UgICAgICAgICAgMTI0MSBjeWNsZXMgICAgMiBjYWxscw0KKyAq
IHB1dCAgICAgICAgMTQxMTUwNCBjeWNsZXMgNjkzNyBjYWxscw0KKyAqIHRh
c2sgICAgICAgMTY1NTIwOSBjeWNsZXMgNjkzNyBjYWxscyAoaW5jbHVkZXMg
cHV0KQ0KKyAqDQorICovDQpJbmRleDogaW5jbHVkZS9saW51eC9ocF9zZGMu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IGhwX3NkYy5o
DQpkaWZmIC1OIGhwX3NkYy5oDQotLS0gL2Rldi9udWxsCVRodSBOb3YgMzAg
MTQ6MDE6MzggMjAwMA0KKysrIGhwX3NkYy5oCVRodSBGZWIgMTQgMTI6MzA6
MzUgMjAwMg0KQEAgLTAsMCArMSwyOTYgQEANCisvKg0KKyAqIEhQIGk4MDQy
IFN5c3RlbSBEZXZpY2UgQ29udHJvbGxlciAtLSBoZWFkZXINCisgKg0KKyAq
IENvcHlyaWdodCAoYykgMjAwMSBCcmlhbiBTLiBKdWxpbg0KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0K
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucywgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciwNCisgKiAgICB3aXRob3V0IG1vZGlmaWNhdGlvbi4NCisgKiAyLiBU
aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMNCisgKiAgICBkZXJpdmVkIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4NCisgKg0KKyAqIEFsdGVybmF0aXZlbHksIHRoaXMgc29m
dHdhcmUgbWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUNCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoIkdQTCIpLg0K
KyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORA0KKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQ0KKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFDQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IN
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMDQorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMNCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikNCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVA0KKyAqIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkNCisgKg0KKyAqIFJlZmVyZW5j
ZXM6DQorICogDQorICogSFAtSElMIFRlY2huaWNhbCBSZWZlcmVuY2UgTWFu
dWFsLiAgSGV3bGV0dCBQYWNrYXJkIFByb2R1Y3QgTm8uIDQ1OTE4QQ0KKyAq
DQorICogU3lzdGVtIERldmljZSBDb250cm9sbGVyIE1pY3JvcHJvY2Vzc29y
IEZpcm13YXJlIFRoZW9yeSBvZiBPcGVyYXRpb24NCisgKiAJZm9yIFBhcnQg
TnVtYmVyIDE4MjAtNDc4NCBSZXZpc2lvbiBCLiAgRHdnIE5vLiBBLTE4MjAt
NDc4NC0yDQorICoNCisgKi8NCisNCisjaWZuZGVmIF9MSU5VWF9IUF9TRENf
SA0KKyNkZWZpbmUgX0xJTlVYX0hQX1NEQ19IDQorDQorI2luY2x1ZGUgPGxp
bnV4L2ludGVycnVwdC5oPg0KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0K
KyNpbmNsdWRlIDxsaW51eC90aW1lLmg+DQorI2luY2x1ZGUgPGxpbnV4L3Rp
bWVyLmg+DQorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPg0KKw0KKw0KKy8q
IE5vIDRYIHN0YXR1cyByZWFkcyB0YWtlIGxvbmdlciB0aGFuIHRoaXMgKGlu
IHVzZWMpLg0KKyAqLw0KKyNkZWZpbmUgSFBfU0RDX01BWF9SRUdfREVMQVkg
MjAwMDANCisNCit0eXBlZGVmIHZvaWQgKGhwX3NkY19pcnFob29rKSAoaW50
IGlycSwgdm9pZCAqZGV2X2lkLCANCisJCQkgICAgICAgdWludDhfdCBzdGF0
dXMsIHVpbnQ4X3QgZGF0YSk7DQorDQoraW50IGhwX3NkY19yZXF1ZXN0X3Rp
bWVyX2lycShocF9zZGNfaXJxaG9vayAqY2FsbGJhY2spOw0KK2ludCBocF9z
ZGNfcmVxdWVzdF9oaWxfaXJxKGhwX3NkY19pcnFob29rICpjYWxsYmFjayk7
DQoraW50IGhwX3NkY19yZXF1ZXN0X2Nvb2tlZF9pcnEoaHBfc2RjX2lycWhv
b2sgKmNhbGxiYWNrKTsNCitpbnQgaHBfc2RjX3JlbGVhc2VfdGltZXJfaXJx
KGhwX3NkY19pcnFob29rICpjYWxsYmFjayk7DQoraW50IGhwX3NkY19yZWxl
YXNlX2hpbF9pcnEoaHBfc2RjX2lycWhvb2sgKmNhbGxiYWNrKTsNCitpbnQg
aHBfc2RjX3JlbGVhc2VfY29va2VkX2lycShocF9zZGNfaXJxaG9vayAqY2Fs
bGJhY2spOw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisJaW50IGFjdGlkeDsJ
LyogU3RhcnQgb2YgYWN0LiAgQWN0cyBhcmUgYXRvbWljIFdSVCBJL08gdG8g
U0RDICovDQorCWludCBpZHg7CS8qIEluZGV4IHdpdGhpbiB0aGUgYWN0ICov
DQorCWludCBlbmRpZHg7CS8qIHRyYW5zYWN0aW9uIGlzIG92ZXIgYW5kIGRv
bmUgaWYgaWR4ID09IGVuZGlkeCAqLw0KKwl1aW50OF90ICpzZXE7CS8qIGNv
bW1hbmRzL2RhdGEgZm9yIHRoZSB0cmFuc2FjdGlvbiAqLw0KKwl1bmlvbiB7
DQorCSAgaHBfc2RjX2lycWhvb2sgICAqaXJxaG9vazsJLyogQ2FsbGJhY2ss
IGlzciBvciB0YXNrbGV0IGNvbnRleHQgKi8NCisJICBzdHJ1Y3Qgc2VtYXBo
b3JlICpzZW1hcGhvcmU7CS8qIFNlbWFwaG9yZSB0byBzbGVlcCBvbi4gKi8N
CisJfSBhY3Q7DQorfSBocF9zZGNfdHJhbnNhY3Rpb247DQoraW50IGhwX3Nk
Y19lbnF1ZXVlX3RyYW5zYWN0aW9uKGhwX3NkY190cmFuc2FjdGlvbiAqdGhp
cyk7DQoraW50IGhwX3NkY19kZXF1ZXVlX3RyYW5zYWN0aW9uKGhwX3NkY190
cmFuc2FjdGlvbiAqdGhpcyk7DQorDQorLyogVGhlIEhQX1NEQ19BQ1QqIHZh
bHVlcyBhcmUgcGVjdWxpYXIgdG8gdGhpcyBkcml2ZXIuDQorICogTnVhbmNl
OiBuZXZlciBIUF9TRENfQUNUX0RBVEFJTiB8IEhQX1NEQ19BQ1RfREVBTExP
QywgdXNlIGFub3RoZXINCisgKiBhY3QgdG8gcGVyZm9ybSB0aGUgZGVhbGxv
Yy4NCisgKi8NCisjZGVmaW5lIEhQX1NEQ19BQ1RfUFJFQ01ECTB4MDEJCS8q
IFNlbmQgYSBjb21tYW5kIGZpcnN0ICovDQorI2RlZmluZSBIUF9TRENfQUNU
X0RBVEFSRUcJMHgwMgkJLyogU2V0IGRhdGEgcmVnaXN0ZXJzICovDQorI2Rl
ZmluZSBIUF9TRENfQUNUX0RBVEFPVVQJMHgwNAkJLyogU2VuZCBkYXRhIGJ5
dGVzICovDQorI2RlZmluZSBIUF9TRENfQUNUX1BPU1RDTUQgICAgICAweDA4
ICAgICAgICAgICAgLyogU2VuZCBjb21tYW5kIGFmdGVyICovDQorI2RlZmlu
ZSBIUF9TRENfQUNUX0RBVEFJTgkweDEwCQkvKiBDb2xsZWN0IGRhdGEgYWZ0
ZXIgKi8NCisjZGVmaW5lIEhQX1NEQ19BQ1RfRFVSSU5HCTB4MWYNCisjZGVm
aW5lIEhQX1NEQ19BQ1RfU0VNQVBIT1JFICAgIDB4MjAgICAgICAgICAgICAv
KiBSYWlzZSBzZW1hcGhvcmUgYWZ0ZXIgKi8NCisjZGVmaW5lIEhQX1NEQ19B
Q1RfQ0FMTEJBQ0sJMHg0MAkJLyogUGFzcyBkYXRhIHRvIElSUSBoYW5kbGVy
ICovDQorI2RlZmluZSBIUF9TRENfQUNUX0RFQUxMT0MJMHg4MAkJLyogRGVz
dHJveSB0cmFuc2FjdGlvbiBhZnRlciAqLw0KKyNkZWZpbmUgSFBfU0RDX0FD
VF9BRlRFUgkweGUwDQorI2RlZmluZSBIUF9TRENfQUNUX0RFQUQJCTB4NjAJ
CS8qIEFjdCB0aW1lZCBvdXQuICovDQorDQorLyogUmVzdCBvZiB0aGUgZmxh
Z3MgYXJlIHN0cmFpZ2h0Zm9yd2FyZCByZXByZXNlbnRhdGlvbiBvZiB0aGUg
U0RDIGludGVyZmFjZSAqLw0KKyNkZWZpbmUgSFBfU0RDX1NUQVRVU19JQkYJ
MHgwMgkvKiBJbnB1dCBidWZmZXIgZnVsbCAqLw0KKw0KKyNkZWZpbmUgSFBf
U0RDX1NUQVRVU19JUlFNQVNLCTB4ZjAJLyogQml0cyBjb250YWluaW5nICJs
ZXZlbCAxIiBpcnEgKi8NCisjZGVmaW5lIEhQX1NEQ19TVEFUVVNfUEVSSU9E
SUMgIDB4MTAgICAgLyogUGVyaW9kaWMgMTBtcyB0aW1lciAqLw0KKyNkZWZp
bmUgSFBfU0RDX1NUQVRVU19VU0VSVElNRVIgMHgyMCAgICAvKiAiU3BlY2lh
bCBwdXJwb3NlIiB0aW1lciAqLw0KKyNkZWZpbmUgSFBfU0RDX1NUQVRVU19U
SU1FUiAgICAgMHgzMCAgICAvKiBCb3RoIFBFUklPRElDIGFuZCBVU0VSVElN
RVIgKi8NCisjZGVmaW5lIEhQX1NEQ19TVEFUVVNfUkVHCTB4NDAJLyogRGF0
YSBmcm9tIGFuIGk4MDQyIHJlZ2lzdGVyICovDQorI2RlZmluZSBIUF9TRENf
U1RBVFVTX0hJTENNRCAgICAweDUwCS8qIENvbW1hbmQgZnJvbSBISUwgTUxD
ICovDQorI2RlZmluZSBIUF9TRENfU1RBVFVTX0hJTERBVEEgICAweDYwCS8q
IERhdGEgZnJvbSBISUwgTUxDICovDQorI2RlZmluZSBIUF9TRENfU1RBVFVT
X1BVUAkweDcwCS8qIFN1Y2Vzc2Z1bCBwb3dlci11cCBzZWxmIHRlc3QgKi8N
CisjZGVmaW5lIEhQX1NEQ19TVEFUVVNfS0NPT0tFRAkweDgwCS8qIEtleSBm
cm9tIGNvb2tlZCBrYmQgKi8NCisjZGVmaW5lIEhQX1NEQ19TVEFUVVNfS1JQ
RwkweGMwCS8qIEtleSBmcm9tIFJlcGVhdCBHZW4gKi8NCisjZGVmaW5lIEhQ
X1NEQ19TVEFUVVNfS01PRF9TVVAJMHgxMAkvKiBTaGlmdCBrZXkgaXMgdXAg
Ki8NCisjZGVmaW5lIEhQX1NEQ19TVEFUVVNfS01PRF9DVVAJMHgyMAkvKiBD
b250cm9sIGtleSBpcyB1cCAqLw0KKw0KKyNkZWZpbmUgSFBfU0RDX05NSVNU
QVRVU19GSFMJMHg0MAkvKiBOTUkgaXMgYSBmYXN0IGhhbmRzaGFrZSBpcnEg
Ki8NCisNCisvKiBJbnRlcm5hbCBpODA0MiByZWdpc3RlcnMgKHRoZXJlIGFy
ZSBtb3JlLCBidXQgdGhleSBhcmUgbm90IHRvbyB1c2VmdWwpLiAqLw0KKw0K
KyNkZWZpbmUgSFBfU0RDX1VTRQkJMHgwMgkvKiBSZXNvdXJjZSB1c2FnZSAo
aW5jbHVkaW5nIE9CIGJpdCkgKi8NCisjZGVmaW5lIEhQX1NEQ19JTQkJMHgw
NAkvKiBJbnRlcnJ1cHQgbWFzayAqLw0KKyNkZWZpbmUgSFBfU0RDX0NGRwkJ
MHgxMQkvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyICovDQorI2RlZmluZSBI
UF9TRENfS0JMQU5HVUFHRQkweDEyCS8qIEtleWJvYXJkIGxhbmd1YWdlICov
DQorDQorI2RlZmluZSBIUF9TRENfRDAJCTB4NzAJLyogR2VuZXJhbCBwdXJw
b3NlIGRhdGEgYnVmZmVyIDAgKi8NCisjZGVmaW5lIEhQX1NEQ19EMQkJMHg3
MQkvKiBHZW5lcmFsIHB1cnBvc2UgZGF0YSBidWZmZXIgMSAqLw0KKyNkZWZp
bmUgSFBfU0RDX0QyCQkweDcyCS8qIEdlbmVyYWwgcHVycG9zZSBkYXRhIGJ1
ZmZlciAyICovDQorI2RlZmluZSBIUF9TRENfRDMJCTB4NzMJLyogR2VuZXJh
bCBwdXJwb3NlIGRhdGEgYnVmZmVyIDMgKi8NCisjZGVmaW5lIEhQX1NEQ19W
VDEJCTB4NzQJLyogVGltZXIgZm9yIHZvaWNlIDEgKi8NCisjZGVmaW5lIEhQ
X1NEQ19WVDIJCTB4NzUJLyogVGltZXIgZm9yIHZvaWNlIDIgKi8NCisjZGVm
aW5lIEhQX1NEQ19WVDMJCTB4NzYJLyogVGltZXIgZm9yIHZvaWNlIDMgKi8N
CisjZGVmaW5lIEhQX1NEQ19WVDQJCTB4NzcJLyogVGltZXIgZm9yIHZvaWNl
IDQgKi8NCisjZGVmaW5lIEhQX1NEQ19LQk4JCTB4NzgJLyogV2hpY2ggSElM
IGRldnMgYXJlIE5pbWl0eiAqLw0KKyNkZWZpbmUgSFBfU0RDX0tCQwkJMHg3
OQkvKiBXaGljaCBISUwgZGV2cyBhcmUgY29va2VkIGtiZHMgKi8NCisjZGVm
aW5lIEhQX1NEQ19MUFMJCTB4N2EJLyogaTgwNDIncyB2aWV3IG9mIEhJTCBz
dGF0dXMgKi8NCisjZGVmaW5lIEhQX1NEQ19MUEMJCTB4N2IJLyogaTgwNDIn
cyB2aWV3IG9mIEhJTCAiY29udHJvbCIgKi8NCisjZGVmaW5lIEhQX1NEQ19S
U1YgIAkJMHg3YwkvKiBSZXNlcnZlZCAiZm9yIHRlc3RpbmciICovDQorI2Rl
ZmluZSBIUF9TRENfTFBSCQkweDdkICAgIC8qIGk4MDQyIGNvdW50IG9mIEhJ
TCByZWNvbmZpZ3MgKi8NCisjZGVmaW5lIEhQX1NEQ19YVEQJCTB4N2UgICAg
LyogIkV4dGVuZGVkIENvbmZpZ3VyYXRpb24iIHJlZ2lzdGVyICovDQorI2Rl
ZmluZSBIUF9TRENfU1RSCQkweDdmICAgIC8qIGk4MDQyIHNlbGYtdGVzdCBy
ZXN1bHQgKi8NCisNCisvKiBCaXRmaWVsZHMgZm9yIGFib3ZlIHJlZ2lzdGVy
cyAqLw0KKyNkZWZpbmUgSFBfU0RDX1VTRV9MT09QCQkweDA0CS8qIENvbW1h
bmQgaXMgY3VycmVudGx5IG9uIHRoZSBsb29wLiAqLw0KKw0KKyNkZWZpbmUg
SFBfU0RDX0lNX01BU0sgICAgICAgICAgMHgxZiAgICAvKiB0aGVzZSBiaXRz
IG5vdCBwYXJ0IG9mIGNtZC9zdGF0dXMgKi8NCisjZGVmaW5lIEhQX1NEQ19J
TV9GSAkJMHgxMAkvKiBNYXNrIHRoZSBmYXN0IGhhbmRzaGFrZSBpcnEgKi8N
CisjZGVmaW5lIEhQX1NEQ19JTV9QVAkJMHgwOAkvKiBNYXNrIHRoZSBwZXJp
b2RpYyB0aW1lciBpcnEgKi8NCisjZGVmaW5lIEhQX1NEQ19JTV9USU1FUlMJ
MHgwNAkvKiBNYXNrIHRoZSBNVC9EVC9DVCBpcnEgKi8NCisjZGVmaW5lIEhQ
X1NEQ19JTV9SRVNFVAkJMHgwMgkvKiBNYXNrIHRoZSByZXNldCBrZXkgaXJx
ICovDQorI2RlZmluZSBIUF9TRENfSU1fSElMCQkweDAxCS8qIE1hc2sgdGhl
IEhJTCBNTEMgaXJxICovDQorDQorI2RlZmluZSBIUF9TRENfQ0ZHX1JPTExP
VkVSCTB4MDgJLyogV1RGIGlzICJOLWtleSByb2xsb3ZlciI/ICovDQorI2Rl
ZmluZSBIUF9TRENfQ0ZHX0tCRAkJMHgxMAkvKiBUaGVyZSBpcyBhIGtleWJv
YXJkICovDQorI2RlZmluZSBIUF9TRENfQ0ZHX05FVwkJMHgyMAkvKiBTdXBw
b3J0cy91c2VzIEhJTCBNTEMgKi8NCisjZGVmaW5lIEhQX1NEQ19DRkdfS0JE
X09MRAkweDAzCS8qIGtleWJvYXJkIGNvZGUgZm9yIG5vbi1ISUwgKi8NCisj
ZGVmaW5lIEhQX1NEQ19DRkdfS0JEX05FVwkweDA3CS8qIGtleWJvYXJkIGNv
ZGUgZnJvbSBISUwgYXV0b2NvbmZpZyAqLw0KKyNkZWZpbmUgSFBfU0RDX0NG
R19SRVYJCTB4NDAJLyogQ29kZSByZXZpc2lvbiBiaXQgKi8NCisjZGVmaW5l
IEhQX1NEQ19DRkdfSURQUk9NCTB4ODAJLyogSURQUk9NIHByZXNlbnQgaW4g
a2JkIChub3QgSElMKSAqLw0KKw0KKyNkZWZpbmUgSFBfU0RDX0xQU19OREVW
CQkweDA3CS8qICMgZGV2aWNlcyBhdXRvY29uZmlndXJlZCBvbiBISUwgKi8N
CisjZGVmaW5lIEhQX1NEQ19MUFNfQUNTVUNDCTB4MDgJLyogbG9vcCBhdXRv
Y29uZmlndXJlZCBzdWNjZXNzZnVsbHkgKi8NCisjZGVmaW5lIEhQX1NEQ19M
UFNfQUNGQUlMCTB4ODAJLyogbGFzdCBsb29wIGF1dG9jb25maWd1cmUgZmFp
bGVkICovDQorDQorI2RlZmluZSBIUF9TRENfTFBDX0FQRV9JUEYJMHgwMQkv
KiBISUwgTUxDIEFQRS9JUEYgKGF1dG9wb2xsKSBzZXQgKi8NCisjZGVmaW5l
IEhQX1NEQ19MUENfQVJDT05FUlIJMHgwMgkvKiBpODA0MiBhdXRvcmVjb25m
aWdzIGxvb3Agb24gZXJyICovDQorI2RlZmluZSBIUF9TRENfTFBDX0FSQ1FV
SUVUCTB4MDMJLyogaTgwNDIgZG9lc24ndCByZXBvcnQgYXV0b3JlY29uZmln
cyovDQorI2RlZmluZSBIUF9TRENfTFBDX0NPT0sJCTB4MTAJLyogaTgwNDIg
Y29va3MgZGV2aWNlcyBpbiBfS0JOICovDQorI2RlZmluZSBIUF9TRENfTFBD
X1JDCQkweDgwCS8qIGNhdXNlcyBhdXRvcmVjb25maWcgKi8NCisNCisjZGVm
aW5lIEhQX1NEQ19YVERfUkVWCQkweDA3CS8qIGNvbnRhaW5zIHJldmlzaW9u
IGNvZGUgKi8NCisjZGVmaW5lIEhQX1NEQ19YVERfUkVWX1NUUklOR1ModmFs
LCBzdHIpIFwNCitzd2l0Y2ggKHZhbCkgewkJCQkJCVwNCisJY2FzZSAweDE6
IHN0ciA9ICIxODIwLTM3MTIiOyBicmVhazsJCVwNCisJY2FzZSAweDI6IHN0
ciA9ICIxODIwLTQzNzkiOyBicmVhazsJCVwNCisJY2FzZSAweDM6IHN0ciA9
ICIxODIwLTQ3ODQiOyBicmVhazsJCVwNCisJZGVmYXVsdDogc3RyID0gInVu
a25vd24iOwkJCVwNCit9Ow0KKyNkZWZpbmUgSFBfU0RDX1hURF9CRUVQRVIJ
MHgwOAkvKiBUSSBTTjc2NDk0IGJlZXBlciBhdmFpbGFibGUgKi8NCisjZGVm
aW5lIEhQX1NEQ19YVERfQkJSVEMJMHgyMAkvKiBPS0kgTVNNLTU4MzIxIEJC
UlRDIHByZXNlbnQgKi8NCisNCisjZGVmaW5lIEhQX1NEQ19DTURfTE9BRF9S
VAkweDMxCS8qIExvYWQgcmVhbCB0aW1lIChmcm9tIDgwNDIpICovDQorI2Rl
ZmluZSBIUF9TRENfQ01EX0xPQURfRkhTCTB4MzYJLyogTG9hZCB0aGUgZmFz
dCBoYW5kc2hha2UgdGltZXIgKi8NCisjZGVmaW5lIEhQX1NEQ19DTURfTE9B
RF9NVAkweDM4CS8qIExvYWQgdGhlIG1hdGNoIHRpbWVyICovDQorI2RlZmlu
ZSBIUF9TRENfQ01EX0xPQURfRFQJMHgzQgkvKiBMb2FkIHRoZSBkZWxheSB0
aW1lciAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9MT0FEX0NUCTB4M0UJLyog
TG9hZCB0aGUgY3ljbGUgdGltZXIgKi8NCisNCisjZGVmaW5lIEhQX1NEQ19D
TURfU0VUX0lNCTB4NDAgICAgLyogMDEweHh4eHggPT0gc2V0IGlycSBtYXNr
ICovDQorDQorLyogVGhlIGRvY3VtZW50cyBwcm92aWRlZCBkbyBub3QgZXhw
bGljaXRseSBzdGF0ZSB0aGF0IGFsbCByZWdpc3RlcnMgYmV0d2VlbSANCisg
KiAweDAxIGFuZCAweDFmIGluY2x1c2l2ZSBjYW4gYmUgcmVhZCBieSBzZW5k
aW5nIHRoZWlyIHJlZ2lzdGVyIGluZGV4IGFzIGEgDQorICogY29tbWFuZCwg
YnV0IHRoaXMgaXMgaW1wbGllZCBhbmQgYXBwZWFycyB0byBiZSB0aGUgY2Fz
ZS4NCisgKi8NCisjZGVmaW5lIEhQX1NEQ19DTURfUkVBRF9SQU0JMHgwMAkv
KiBMb2FkIGZyb20gaTgwNDIgUkFNIChhdXRvaW5jKSAqLw0KKyNkZWZpbmUg
SFBfU0RDX0NNRF9SRUFEX1VTRQkweDAyCS8qIFVuZG9jdW1lbnRlZCEgTG9h
ZCBmcm9tIHVzYWdlIHJlZyAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9SRUFE
X0lNCTB4MDQJLyogTG9hZCBjdXJyZW50IGludGVycnVwdCBtYXNrICovDQor
I2RlZmluZSBIUF9TRENfQ01EX1JFQURfS0NDCTB4MTEJLyogTG9hZCBwcmlt
YXJ5IGtiZCBjb25maWcgY29kZSAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9S
RUFEX0tMQwkweDEyCS8qIExvYWQgcHJpbWFyeSBrYmQgbGFuZ3VhZ2UgY29k
ZSAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9SRUFEX1QxCTB4MTMJLyogTG9h
ZCB0aW1lciBvdXRwdXQgYnVmZmVyIGJ5dGUgMSAqLw0KKyNkZWZpbmUgSFBf
U0RDX0NNRF9SRUFEX1QyCTB4MTQJLyogTG9hZCB0aW1lciBvdXRwdXQgYnVm
ZmVyIGJ5dGUgMSAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9SRUFEX1QzCTB4
MTUJLyogTG9hZCB0aW1lciBvdXRwdXQgYnVmZmVyIGJ5dGUgMSAqLw0KKyNk
ZWZpbmUgSFBfU0RDX0NNRF9SRUFEX1Q0CTB4MTYJLyogTG9hZCB0aW1lciBv
dXRwdXQgYnVmZmVyIGJ5dGUgMSAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9S
RUFEX1Q1CTB4MTcJLyogTG9hZCB0aW1lciBvdXRwdXQgYnVmZmVyIGJ5dGUg
MSAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9SRUFEX0QwCTB4ZjAJLyogTG9h
ZCBmcm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDcwICovDQorI2RlZmluZSBI
UF9TRENfQ01EX1JFQURfRDEJMHhmMQkvKiBMb2FkIGZyb20gaTgwNDIgUkFN
IGxvY2F0aW9uIDB4NzEgKi8NCisjZGVmaW5lIEhQX1NEQ19DTURfUkVBRF9E
MgkweGYyCS8qIExvYWQgZnJvbSBpODA0MiBSQU0gbG9jYXRpb24gMHg3MiAq
Lw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9SRUFEX0QzCTB4ZjMJLyogTG9hZCBm
cm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDczICovDQorI2RlZmluZSBIUF9T
RENfQ01EX1JFQURfVlQxCTB4ZjQJLyogTG9hZCBmcm9tIGk4MDQyIFJBTSBs
b2NhdGlvbiAweDc0ICovDQorI2RlZmluZSBIUF9TRENfQ01EX1JFQURfVlQy
CTB4ZjUJLyogTG9hZCBmcm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDc1ICov
DQorI2RlZmluZSBIUF9TRENfQ01EX1JFQURfVlQzCTB4ZjYJLyogTG9hZCBm
cm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDc2ICovDQorI2RlZmluZSBIUF9T
RENfQ01EX1JFQURfVlQ0CTB4ZjcJLyogTG9hZCBmcm9tIGk4MDQyIFJBTSBs
b2NhdGlvbiAweDc3ICovDQorI2RlZmluZSBIUF9TRENfQ01EX1JFQURfS0JO
CTB4ZjgJLyogTG9hZCBmcm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDc4ICov
DQorI2RlZmluZSBIUF9TRENfQ01EX1JFQURfS0JDCTB4ZjkJLyogTG9hZCBm
cm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDc5ICovDQorI2RlZmluZSBIUF9T
RENfQ01EX1JFQURfTFBTCTB4ZmEJLyogTG9hZCBmcm9tIGk4MDQyIFJBTSBs
b2NhdGlvbiAweDdhICovDQorI2RlZmluZSBIUF9TRENfQ01EX1JFQURfTFBD
CTB4ZmIJLyogTG9hZCBmcm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDdiICov
DQorI2RlZmluZSBIUF9TRENfQ01EX1JFQURfUlNWCTB4ZmMJLyogTG9hZCBm
cm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDdjICovDQorI2RlZmluZSBIUF9T
RENfQ01EX1JFQURfTFBSCTB4ZmQJLyogTG9hZCBmcm9tIGk4MDQyIFJBTSBs
b2NhdGlvbiAweDdkICovDQorI2RlZmluZSBIUF9TRENfQ01EX1JFQURfWFRE
CTB4ZmUJLyogTG9hZCBmcm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDdlICov
DQorI2RlZmluZSBIUF9TRENfQ01EX1JFQURfU1RSCTB4ZmYJLyogTG9hZCBm
cm9tIGk4MDQyIFJBTSBsb2NhdGlvbiAweDdmICovDQorDQorI2RlZmluZSBI
UF9TRENfQ01EX1NFVF9BUkQJMHhBMAkvKiBTZXQgZW11bGF0ZWQgYXV0b3Jl
cGVhdCBkZWxheSAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRfQVJSCTB4
QTIJLyogU2V0IGVtdWxhdGVkIGF1dG9yZXBlYXQgcmF0ZSAqLw0KKyNkZWZp
bmUgSFBfU0RDX0NNRF9TRVRfQkVMTAkweEEzCS8qIFNldCB2b2ljZSAzIHBh
cmFtcyBmb3IgImJlZXAiIGNtZCAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9T
RVRfUlBHUgkweEE2CS8qIFNldCAiUlBHIiBpcnEgcmF0ZSAoZG9lc24ndCB3
b3JrKSAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRfUlRNUwkweEFECS8q
IFNldCB0aGUgUlRDIHRpbWUgKG1pbGxpc2Vjb25kcykgKi8NCisjZGVmaW5l
IEhQX1NEQ19DTURfU0VUX1JURAkweEFGCS8qIFNldCB0aGUgUlRDIHRpbWUg
KGRheXMpICovDQorI2RlZmluZSBIUF9TRENfQ01EX1NFVF9GSFMJMHhCMgkv
KiBTZXQgZmFzdCBoYW5kc2hha2UgdGltZXIgKi8NCisjZGVmaW5lIEhQX1NE
Q19DTURfU0VUX01UCTB4QjQJLyogU2V0IG1hdGNoIHRpbWVyICovDQorI2Rl
ZmluZSBIUF9TRENfQ01EX1NFVF9EVAkweEI3CS8qIFNldCBkZWxheSB0aW1l
ciAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRfQ1QJMHhCQQkvKiBTZXQg
Y3ljbGUgdGltZXIgKi8NCisjZGVmaW5lIEhQX1NEQ19DTURfU0VUX1JBTVAJ
MHhDMQkvKiBSZXNldCBSRUFEX1JBTSBhdXRvaW5jIGNvdW50ZXIgKi8NCisj
ZGVmaW5lIEhQX1NEQ19DTURfU0VUX0QwCTB4ZTAJLyogTG9hZCB0byBpODA0
MiBSQU0gbG9jYXRpb24gMHg3MCAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9T
RVRfRDEJMHhlMQkvKiBMb2FkIHRvIGk4MDQyIFJBTSBsb2NhdGlvbiAweDcx
ICovDQorI2RlZmluZSBIUF9TRENfQ01EX1NFVF9EMgkweGUyCS8qIExvYWQg
dG8gaTgwNDIgUkFNIGxvY2F0aW9uIDB4NzIgKi8NCisjZGVmaW5lIEhQX1NE
Q19DTURfU0VUX0QzCTB4ZTMJLyogTG9hZCB0byBpODA0MiBSQU0gbG9jYXRp
b24gMHg3MyAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRfVlQxCTB4ZTQJ
LyogTG9hZCB0byBpODA0MiBSQU0gbG9jYXRpb24gMHg3NCAqLw0KKyNkZWZp
bmUgSFBfU0RDX0NNRF9TRVRfVlQyCTB4ZTUJLyogTG9hZCB0byBpODA0MiBS
QU0gbG9jYXRpb24gMHg3NSAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRf
VlQzCTB4ZTYJLyogTG9hZCB0byBpODA0MiBSQU0gbG9jYXRpb24gMHg3NiAq
Lw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRfVlQ0CTB4ZTcJLyogTG9hZCB0
byBpODA0MiBSQU0gbG9jYXRpb24gMHg3NyAqLw0KKyNkZWZpbmUgSFBfU0RD
X0NNRF9TRVRfS0JOCTB4ZTgJLyogTG9hZCB0byBpODA0MiBSQU0gbG9jYXRp
b24gMHg3OCAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRfS0JDCTB4ZTkJ
LyogTG9hZCB0byBpODA0MiBSQU0gbG9jYXRpb24gMHg3OSAqLw0KKyNkZWZp
bmUgSFBfU0RDX0NNRF9TRVRfTFBTCTB4ZWEJLyogTG9hZCB0byBpODA0MiBS
QU0gbG9jYXRpb24gMHg3YSAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRf
TFBDCTB4ZWIJLyogTG9hZCB0byBpODA0MiBSQU0gbG9jYXRpb24gMHg3YiAq
Lw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRfUlNWCTB4ZWMJLyogTG9hZCB0
byBpODA0MiBSQU0gbG9jYXRpb24gMHg3YyAqLw0KKyNkZWZpbmUgSFBfU0RD
X0NNRF9TRVRfTFBSCTB4ZWQJLyogTG9hZCB0byBpODA0MiBSQU0gbG9jYXRp
b24gMHg3ZCAqLw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9TRVRfWFRECTB4ZWUJ
LyogTG9hZCB0byBpODA0MiBSQU0gbG9jYXRpb24gMHg3ZSAqLw0KKyNkZWZp
bmUgSFBfU0RDX0NNRF9TRVRfU1RSCTB4ZWYJLyogTG9hZCB0byBpODA0MiBS
QU0gbG9jYXRpb24gMHg3ZiAqLw0KKw0KKyNkZWZpbmUgSFBfU0RDX0NNRF9E
T19SVENXCTB4YzIJLyogaTgwNDIgUkFNIDB4NzAgLS0+IFJUQyAqLw0KKyNk
ZWZpbmUgSFBfU0RDX0NNRF9ET19SVENSCTB4YzMJLyogUlRDWzB4NzAgMDoz
XSAtLT4gaXJxL3N0YXR1cy9kYXRhICovDQorI2RlZmluZSBIUF9TRENfQ01E
X0RPX0JFRVAJMHhjNAkvKiBpODA0MiBSQU0gMHg3MC03NCAgLS0+IGJlZXBl
cixWVDMgKi8NCisjZGVmaW5lIEhQX1NEQ19DTURfRE9fSElMCTB4YzUJLyog
aTgwNDIgUkFNIDB4NzAtNzMgLS0+IA0KKwkJCQkJICAgSElMIE1MQyBSMCxS
MSBpODA0MiBISUwgd2F0Y2hkb2cgKi8NCisNCisvKiBWYWx1ZXMgdXNlZCB0
byAoZGUpbWFuZ2xlIGlucHV0L291dHB1dCB0by9mcm9tIHRoZSBISUwgTUxD
ICovDQorI2RlZmluZSBIUF9TRENfREFUQQkJMHg0MAkvKiBEYXRhIGZyb20g
YW4gODA0MiByZWdpc3RlciAqLw0KKyNkZWZpbmUgSFBfU0RDX0hJTF9DTUQJ
CTB4NTAJLyogRGF0YSBmcm9tIEhJTCBNTEMgUjEvODA0MiAqLw0KKyNkZWZp
bmUgSFBfU0RDX0hJTF9SMU1BU0sJMHgwZgkvKiBDb250ZW50cyBvZiBISUwg
TUxDIFIxIDA6MyAqLw0KKyNkZWZpbmUgSFBfU0RDX0hJTF9BVVRPCQkweDEw
CS8qIFNldCBpZiBQT0wgcmVzdWx0cyBmcm9tIGk4MDQyICovICAgDQorI2Rl
ZmluZSBIUF9TRENfSElMX0lTRVJSCTB4ODAJLyogSGFzIG1lYW5pbmcgYXMg
aW4gbmV4dCA0IHZhbHVlcyAqLw0KKyNkZWZpbmUgSFBfU0RDX0hJTF9SQ19E
T05FCTB4ODAJLyogaTgwNDIgYXV0by1jb25maWd1cmVkIGxvb3AgKi8NCisj
ZGVmaW5lIEhQX1NEQ19ISUxfRVJSCQkweDgxCS8qIEhJTCBNTEMgUjIgaGFk
IGEgYml0IHNldCAqLw0KKyNkZWZpbmUgSFBfU0RDX0hJTF9UTwkJMHg4Mgkv
KiBpODA0MiBISUwgd2F0Y2hkb2cgZXhwaXJlZCAqLw0KKyNkZWZpbmUgSFBf
U0RDX0hJTF9SQwkJMHg4NAkvKiBpODA0MiBpcyBhdXRvLWNvbmZpZ3VyaW5n
IGxvb3AgKi8NCisjZGVmaW5lIEhQX1NEQ19ISUxfREFUCQkweDYwCS8qIERh
dGEgZnJvbSBISUwgTUxDIFIwICovDQorDQorDQordHlwZWRlZiBzdHJ1Y3Qg
ew0KKwlyd2xvY2tfdAlpYmZfbG9jazsNCisJcndsb2NrX3QJbG9jazsJCS8q
IHVzZXIvdGFza2xldCBsb2NrICovDQorCXJ3bG9ja190CXJ0cV9sb2NrOwkv
KiBpc3IvdGFza2xldCBsb2NrICovDQorCXJ3bG9ja190CWhvb2tfbG9jazsJ
LyogaXNyL3VzZXIgbG9jayBmb3IgaGFuZGxlciBhZGQvZGVsICovDQorDQor
CXVuc2lnbmVkIGludAlpcnEsIG5taTsJLyogT3VyIElSUSBsaW5lcyAqLw0K
Kwl1bnNpZ25lZCBsb25nCWJhc2VfaW8sIHN0YXR1c19pbywgZGF0YV9pbzsg
LyogT3VyIElPIHBvcnRzICovDQorDQorCXVpbnQ4X3QJCWltOwkJLyogSW50
ZXJydXB0IG1hc2sgKi8NCisJaW50CQlzZXRfaW07IAkvKiBJbnRlcnJ1cHQg
bWFzayBuZWVkcyB0byBiZSBzZXQuICovDQorDQorCWludAkJaWJmOwkJLyog
TGFzdCBrbm93biBzdGF0dXMgb2YgSUJGIGZsYWcgKi8NCisJdWludDhfdAkJ
d2k7CQkvKiBjdXJyZW50IGk4MDQyIHdyaXRlIGluZGV4ICovDQorCXVpbnQ4
X3QJCXI3WzRdOyAgICAgICAgICAvKiBjdXJyZW50IGk4MDQyWzB4NzAgLSAw
eDc0XSB2YWx1ZXMgKi8NCisJdWludDhfdAkJcjExLCByN2U7CS8qIFZhbHVl
cyBmcm9tIHZlcnNpb24vcmV2aXNpb24gcmVncyAqLw0KKw0KKwlocF9zZGNf
aXJxaG9vawkqdGltZXIsICpyZWcsICpoaWwsICpwdXAsICpjb29rZWQ7DQor
DQorI2RlZmluZSBIUF9TRENfUVVFVUVfTEVOIDE2DQorCWhwX3NkY190cmFu
c2FjdGlvbiAqdHFbSFBfU0RDX1FVRVVFX0xFTl07IC8qIEFsbCBwZW5kaW5n
IHJlYWQvd3JpdGVzICovDQorDQorCWludAkJcmN1cnIsIHJxdHk7CS8qIEN1
cnJlbnQgcmVhZCB0cmFuc2FjdCBpbiBwcm9jZXNzICovDQorCXN0cnVjdCB0
aW1ldmFsCXJ0djsJCS8qIFRpbWUgd2hlbiBjdXJyZW50IHJlYWQgc3RhcnRl
ZCAqLw0KKwlpbnQJCXdjdXJyOwkJLyogQ3VycmVudCB3cml0ZSB0cmFuc2Fj
dCBpbiBwcm9jZXNzICovDQorDQorI2lmZGVmIF9faHBwYV9fDQorCXN0cnVj
dCBwYXJpc2NfZGV2aWNlCSpkZXY7DQorCWludAkJZGV2X2VycjsJLyogY2Fy
cmllcyBzdGF0dXMgZnJvbSByZWdpc3RyYXRpb24gKi8NCisjZWxzZQ0KKyNl
cnJvciBObyBzdXBwb3J0IGZvciBkZXZpY2UgcmVnaXN0cmF0aW9uIG9uIHRo
aXMgYXJjaCB5ZXQuDQorI2VuZGlmDQorDQorCXN0cnVjdCB0aW1lcl9saXN0
IGtpY2tlcjsJLyogS2VlcHMgYmVsb3cgdGFzayBhbGl2ZSAqLw0KKwlzdHJ1
Y3QgdGFza2xldF9zdHJ1Y3QJdGFzazsNCisNCit9IGhwX2k4MDQyX3NkYzsN
CisNCisjZW5kaWYgLyogX0xJTlVYX0hQX1NEQ19IICovDQo=
--0-1182547428-1013715840=:10883--