Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Aug 2003 03:09:41 -0500 (CDT)
From:      Mike Silbersack <silby@silby.com>
To:        Mike Tancsa <mike@sentex.net>
Cc:        re@freebsd.org
Subject:   PAE removal patch for testing
Message-ID:  <20030822030729.A7877@odysseus.silby.com>

next in thread | raw e-mail | index | archive | help
  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-1454759381-1061539781=:7877
Content-Type: TEXT/PLAIN; charset=US-ASCII


If you're one of the people who has cvsup'd to 4.8-stable since August 8th
and you've since begun to experience panics on a previously stable system,
please apply the attached patch and see if your previous stability has
been restored.

Please tell me your results.

Thanks,

Mike "Silby" Silbersack
--0-1454759381-1061539781=:7877
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="pae-backout.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <20030822030941.I7877@odysseus.silby.com>
Content-Description: 
Content-Disposition: attachment; filename="pae-backout.patch"

ZGlmZiAtdSAtciAvdXNyL3NyYy9zeXMub2xkL2kzODYvaTM4Ni9iaW9zLmMg
L3Vzci9zcmMvc3lzL2kzODYvaTM4Ni9iaW9zLmMNCi0tLSAvdXNyL3NyYy9z
eXMub2xkL2kzODYvaTM4Ni9iaW9zLmMJVGh1IEF1ZyAyMSAxODozNTozMyAy
MDAzDQorKysgL3Vzci9zcmMvc3lzL2kzODYvaTM4Ni9iaW9zLmMJRnJpIEF1
ZyAyMiAwMjoxNzowMyAyMDAzDQpAQCAtMzEyLDggKzMxMiw3IEBADQogICAg
IHZhX2xpc3QgCWFwOw0KICAgICBpbnQgCWZsYWdzID0gQklPU0NPREVfRkxB
RyB8IEJJT1NEQVRBX0ZMQUc7DQogICAgIHVfaW50IAlpLCBhcmdfc3RhcnQs
IGFyZ19lbmQ7DQotICAgIHB0X2VudHJ5X3QgCSpwdGU7DQotICAgIHBkX2Vu
dHJ5X3QJKnB0ZDsNCisgICAgdV9pbnQgCSpwdGUsICpwdGQ7DQogDQogICAg
IGFyZ19zdGFydCA9IDB4ZmZmZmZmZmY7DQogICAgIGFyZ19lbmQgPSAwOw0K
QEAgLTM3MiwyMiArMzcxLDE5IEBADQogICAgIGFyZ3MtPnNlZy5jb2RlMzIu
YmFzZSA9ICh1X2ludCkmYmlvczE2X2ptcCAmIFBHX0ZSQU1FOw0KICAgICBh
cmdzLT5zZWcuY29kZTMyLmxpbWl0ID0gMHhmZmZmOwkNCiANCi0gICAgcHRk
ID0gKHBkX2VudHJ5X3QgKilyY3IzKCk7DQotI2lmZGVmIFBBRQ0KLSAgICBw
dGQgPSAocGRfZW50cnlfdCAqKSgqcHRkICYgUEdfRlJBTUUpOw0KLSNlbmRp
Zg0KKyAgICBwdGQgPSAodV9pbnQgKilyY3IzKCk7DQogICAgIGlmIChwdGQg
PT0gSWRsZVBURCkgew0KIAkvKg0KIAkgKiBubyBwYWdlIHRhYmxlLCBzbyBj
cmVhdGUgb25lIGFuZCBpbnN0YWxsIGl0Lg0KIAkgKi8NCi0JcHRlID0gKHB0
X2VudHJ5X3QgKiltYWxsb2MoUEFHRV9TSVpFLCBNX1RFTVAsIE1fV0FJVE9L
KTsNCi0JcHRkID0gKHBkX2VudHJ5X3QgKikoS0VSTkJBU0UgKyBJZGxlUFRE
KTsNCisJcHRlID0gKHVfaW50ICopbWFsbG9jKFBBR0VfU0laRSwgTV9URU1Q
LCBNX1dBSVRPSyk7DQorCXB0ZCA9ICh1X2ludCAqKSgodV9pbnQpcHRkICsg
S0VSTkJBU0UpOw0KIAkqcHRkID0gdnRvcGh5cyhwdGUpIHwgUEdfUlcgfCBQ
R19WOw0KICAgICB9IGVsc2Ugew0KIAkvKg0KIAkgKiB0aGlzIGlzIGEgdXNl
ci1sZXZlbCBwYWdlIHRhYmxlIA0KIAkgKi8NCi0JcHRlID0gUFRtYXA7DQor
CXB0ZSA9ICh1X2ludCAqKSZQVG1hcDsNCiAgICAgfQ0KICAgICAvKg0KICAg
ICAgKiBpbnN0YWxsIHBvaW50ZXIgdG8gcGFnZSAwLiAgd2UgZG9uJ3QgbmVl
ZCB0byBmbHVzaCB0aGUgdGxiLA0KQEAgLTQ0NCw3ICs0NDAsNyBAQA0KIA0K
ICAgICBpID0gYmlvczE2X2NhbGwoJmFyZ3MtPnIsIHN0YWNrX3RvcCk7DQog
ICAgIA0KLSAgICBpZiAocHRlID09IFBUbWFwKSB7DQorICAgIGlmIChwdGUg
PT0gKHVfaW50ICopJlBUbWFwKSB7DQogCSpwdGUgPSAwOwkJCS8qIHJlbW92
ZSBlbnRyeSAqLw0KICAgICB9IGVsc2Ugew0KIAkqcHRkID0gMDsJCQkvKiBy
ZW1vdmUgcGFnZSB0YWJsZSAqLw0KT25seSBpbiAvdXNyL3NyYy9zeXMvaTM4
Ni9pMzg2OiBiaW9zLmMub3JpZw0KT25seSBpbiAvdXNyL3NyYy9zeXMvaTM4
Ni9pMzg2OiBiaW9zLmMucmVqDQpPbmx5IGluIC91c3Ivc3JjL3N5cy9pMzg2
L2kzODY6IGJsYWgucGF0Y2gNCmRpZmYgLXUgLXIgL3Vzci9zcmMvc3lzLm9s
ZC9pMzg2L2kzODYvZGJfaW50ZXJmYWNlLmMgL3Vzci9zcmMvc3lzL2kzODYv
aTM4Ni9kYl9pbnRlcmZhY2UuYw0KLS0tIC91c3Ivc3JjL3N5cy5vbGQvaTM4
Ni9pMzg2L2RiX2ludGVyZmFjZS5jCVRodSBBdWcgMjEgMTg6MzU6MzMgMjAw
Mw0KKysrIC91c3Ivc3JjL3N5cy9pMzg2L2kzODYvZGJfaW50ZXJmYWNlLmMJ
RnJpIEF1ZyAyMiAwMjoxNToyNCAyMDAzDQpAQCAtMjUxLDcgKzI1MSw3IEBA
DQogCWlmIChhZGRyID4gdHJ1bmNfcGFnZSgodm1fb2Zmc2V0X3QpYnRleHQp
IC0gc2l6ZSAmJg0KIAkgICAgYWRkciA8IHJvdW5kX3BhZ2UoKHZtX29mZnNl
dF90KWV0ZXh0KSkgew0KIA0KLQkgICAgcHRlcDAgPSB2dG9wdGUoYWRkcik7
DQorCSAgICBwdGVwMCA9IHBtYXBfcHRlKGtlcm5lbF9wbWFwLCBhZGRyKTsN
CiAJICAgIG9sZG1hcDAgPSAqcHRlcDA7DQogCSAgICAqcHRlcDAgfD0gUEdf
Ulc7DQogDQpAQCAtMjU5LDE0ICsyNTksMTQgQEANCiAJICAgIGlmICgoKnB0
ZXAwICYgUEdfUFMpID09IDApIHsNCiAJICAgIAlhZGRyMSA9IHRydW5jX3Bh
Z2UoYWRkciArIHNpemUgLSAxKTsNCiAJICAgIAlpZiAodHJ1bmNfcGFnZShh
ZGRyKSAhPSBhZGRyMSkgew0KLQkJICAgIHB0ZXAxID0gdnRvcHRlKGFkZHIx
KTsNCisJCSAgICBwdGVwMSA9IHBtYXBfcHRlKGtlcm5lbF9wbWFwLCBhZGRy
MSk7DQogCQkgICAgb2xkbWFwMSA9ICpwdGVwMTsNCiAJCSAgICAqcHRlcDEg
fD0gUEdfUlc7DQogCSAgICAJfQ0KIAkgICAgfSBlbHNlIHsNCiAJCWFkZHIx
ID0gdHJ1bmNfNG1wYWdlKGFkZHIgKyBzaXplIC0gMSk7DQogCQlpZiAodHJ1
bmNfNG1wYWdlKGFkZHIpICE9IGFkZHIxKSB7DQotCQkgICAgcHRlcDEgPSB2
dG9wdGUoYWRkcjEpOw0KKwkJICAgIHB0ZXAxID0gcG1hcF9wdGUoa2VybmVs
X3BtYXAsIGFkZHIxKTsNCiAJCSAgICBvbGRtYXAxID0gKnB0ZXAxOw0KIAkJ
ICAgICpwdGVwMSB8PSBQR19SVzsNCiAJCX0NCk9ubHkgaW4gL3Vzci9zcmMv
c3lzL2kzODYvaTM4NjogZGJfaW50ZXJmYWNlLmMub3JpZw0KT25seSBpbiAv
dXNyL3NyYy9zeXMvaTM4Ni9pMzg2OiBkYl9pbnRlcmZhY2UuYy5yZWoNCmRp
ZmYgLXUgLXIgL3Vzci9zcmMvc3lzLm9sZC9pMzg2L2kzODYvZ2VuYXNzeW0u
YyAvdXNyL3NyYy9zeXMvaTM4Ni9pMzg2L2dlbmFzc3ltLmMNCi0tLSAvdXNy
L3NyYy9zeXMub2xkL2kzODYvaTM4Ni9nZW5hc3N5bS5jCVRodSBBdWcgMjEg
MTg6MzU6MzMgMjAwMw0KKysrIC91c3Ivc3JjL3N5cy9pMzg2L2kzODYvZ2Vu
YXNzeW0uYwlGcmkgQXVnIDIyIDAyOjE1OjAyIDIwMDMNCkBAIC05NiwxMCAr
OTYsNiBAQA0KIEFTU1lNKE5QREVQRywgTlBERVBHKTsNCiBBU1NZTShQREVT
SVpFLCBQREVTSVpFKTsNCiBBU1NZTShQVEVTSVpFLCBQVEVTSVpFKTsNCi1B
U1NZTShQREVTSElGVCwgUERFU0hJRlQpOw0KLUFTU1lNKFBURVNISUZULCBQ
VEVTSElGVCk7DQotQVNTWU0oTlBHUFRELCBOUEdQVEQpOw0KLUFTU1lNKE5Q
REVQVEQsIE5QREVQVEQpOw0KIEFTU1lNKFBBR0VfU0hJRlQsIFBBR0VfU0hJ
RlQpOw0KIEFTU1lNKFBBR0VfTUFTSywgUEFHRV9NQVNLKTsNCiBBU1NZTShQ
RFJTSElGVCwgUERSU0hJRlQpOw0KT25seSBpbiAvdXNyL3NyYy9zeXMvaTM4
Ni9pMzg2OiBnZW5hc3N5bS5jLm9yaWcNCk9ubHkgaW4gL3Vzci9zcmMvc3lz
L2kzODYvaTM4NjogZ2VuYXNzeW0uYy5yZWoNCmRpZmYgLXUgLXIgL3Vzci9z
cmMvc3lzLm9sZC9pMzg2L2kzODYvbG9jb3JlLnMgL3Vzci9zcmMvc3lzL2kz
ODYvaTM4Ni9sb2NvcmUucw0KLS0tIC91c3Ivc3JjL3N5cy5vbGQvaTM4Ni9p
Mzg2L2xvY29yZS5zCVRodSBBdWcgMjEgMTg6MzU6MzMgMjAwMw0KKysrIC91
c3Ivc3JjL3N5cy9pMzg2L2kzODYvbG9jb3JlLnMJRnJpIEF1ZyAyMiAwMjox
NDo0MiAyMDAzDQpAQCAtNzUsNiArNzUsMTUgQEANCiAJLnNldAlfUFREcGRl
LF9QVEQgKyAoUFREUFRESSAqIFBERVNJWkUpDQogDQogLyoNCisgKiBBUFRt
YXAsIEFQVEQgaXMgdGhlIGFsdGVybmF0ZSByZWN1cnNpdmUgcGFnZW1hcC4N
CisgKiBJdCdzIHVzZWQgd2hlbiBtb2RpZnlpbmcgYW5vdGhlciBwcm9jZXNz
J3MgcGFnZSB0YWJsZXMuDQorICovDQorCS5nbG9ibAlfQVBUbWFwLF9BUFRE
LF9BUFREcGRlDQorCS5zZXQJX0FQVG1hcCxBUFREUFRESSA8PCBQRFJTSElG
VA0KKwkuc2V0CV9BUFRELF9BUFRtYXAgKyAoQVBURFBUREkgKiBQQUdFX1NJ
WkUpDQorCS5zZXQJX0FQVERwZGUsX1BURCArIChBUFREUFRESSAqIFBERVNJ
WkUpDQorDQorLyoNCiAgKiBDb21waWxlZCBLRVJOQkFTRSBsb2NhdGlvbg0K
ICAqLw0KIAkuZ2xvYmwJX2tlcm5iYXNlDQpAQCAtMTAzLDE2ICsxMTIsMTUg
QEANCiBfY3B1X3ZlbmRvcjoJLnNwYWNlCTIwCQkJLyogQ1BVIG9yaWdpbiBj
b2RlICovDQogX2Jvb3RpbmZvOgkuc3BhY2UJQk9PVElORk9fU0laRQkJLyog
Ym9vdGluZm8gdGhhdCB3ZSBjYW4gaGFuZGxlICovDQogDQotCSAgICAuZ2xv
YmwJX0tFUk5lbmQNCiBfS0VSTmVuZDoJLmxvbmcJMAkJCS8qIHBoeXMgYWRk
ciBlbmQgb2Yga2VybmVsIChqdXN0IGFmdGVyIGJzcykgKi8NCiBwaHlzZnJl
ZToJLmxvbmcJMAkJCS8qIHBoeXMgYWRkciBvZiBuZXh0IGZyZWUgcGFnZSAq
Lw0KIA0KICNpZmRlZiBTTVANCi0JICAgIC5nbG9ibAlfY3B1MHBydnBhZ2UN
CisJCS5nbG9ibAlfY3B1MHBydnBhZ2UNCiBjcHUwcHA6CQkubG9uZwkwCQkJ
LyogcGh5cyBhZGRyIGNwdTAgcHJpdmF0ZSBwZyAqLw0KIF9jcHUwcHJ2cGFn
ZToJLmxvbmcJMAkJCS8qIHJlbG9jYXRlZCB2ZXJzaW9uICovDQogDQotCSAg
ICAuZ2xvYmwJX1NNUHB0DQorCQkuZ2xvYmwJX1NNUHB0DQogU01QcHRwYToJ
LmxvbmcJMAkJCS8qIHBoeXMgYWRkciBTTVAgcGFnZSB0YWJsZSAqLw0KIF9T
TVBwdDoJCS5sb25nCTAJCQkvKiByZWxvY2F0ZWQgdmVyc2lvbiAqLw0KICNl
bmRpZiAvKiBTTVAgKi8NCkBAIC0xMjAsMTIgKzEyOCw2IEBADQogCS5nbG9i
bAlfSWRsZVBURA0KIF9JZGxlUFREOgkubG9uZwkwCQkJLyogcGh5cyBhZGRy
IG9mIGtlcm5lbCBQVEQgKi8NCiANCi0jaWZkZWYgUEFFDQotCS5nbG9ibAlf
SWRsZVBEUFQNCi0JLnAyYWxpZ24gNQ0KLV9JZGxlUERQVDoJLnNwYWNlCTMy
DQotI2VuZGlmDQotDQogI2lmZGVmIFNNUA0KIAkuZ2xvYmwJX0tQVHBoeXMN
CiAjZW5kaWYNCkBAIC0xODEsMTMgKzE4MywxMyBAQA0KICAqCXByb3QgPSBw
cm90ZWN0aW9uIGJpdHMNCiAgKi8NCiAjZGVmaW5lCWZpbGxrcHQoYmFzZSwg
cHJvdCkJCSAgXA0KLQlzaGxsCSRQVEVTSElGVCwlZWJ4CQk7IFwNCisJc2hs
bAkkMiwlZWJ4CQkJOyBcDQogCWFkZGwJYmFzZSwlZWJ4CQk7IFwNCiAJb3Js
CSRQR19WLCVlYXgJCTsgXA0KIAlvcmwJcHJvdCwlZWF4CQk7IFwNCiAxOglt
b3ZsCSVlYXgsKCVlYngpCQk7IFwNCiAJYWRkbAkkUEFHRV9TSVpFLCVlYXgJ
CTsgLyogaW5jcmVtZW50IHBoeXNpY2FsIGFkZHJlc3MgKi8gXA0KLQlhZGRs
CSRQVEVTSVpFLCVlYngJCTsgLyogbmV4dCBwdGUgKi8gXA0KKwlhZGRsCSQ0
LCVlYngJCQk7IC8qIG5leHQgcHRlICovIFwNCiAJbG9vcAkxYg0KIA0KIC8q
DQpAQCAtMzI4LDE0ICszMzAsNyBAQA0KICNlbmRpZg0KIA0KIC8qIE5vdyBl
bmFibGUgcGFnaW5nICovDQotI2lmZGVmIFBBRQ0KLQltb3ZsCSVjcjQsJWVh
eA0KLQlvcmwJJENSNF9QQUUsJWVheA0KLQltb3ZsCSVlYXgsJWNyNA0KLQlt
b3ZsCSRSKF9JZGxlUERQVCksJWVheA0KLSNlbHNlDQotCW1vdmwJUihfSWRs
ZVBURCksJWVheA0KLSNlbmRpZg0KKwltb3ZsCVIoX0lkbGVQVEQpLCAlZWF4
DQogCW1vdmwJJWVheCwlY3IzCQkJLyogbG9hZCBwdGQgYWRkciBpbnRvIG1t
dSAqLw0KIAltb3ZsCSVjcjAsJWVheAkJCS8qIGdldCBjb250cm9sIHdvcmQg
Ki8NCiAJb3JsCSRDUjBfUEV8Q1IwX1BHLCVlYXgJCS8qIGVuYWJsZSBwYWdp
bmcgKi8NCkBAIC0zNTgsMTAgKzM1MywxMCBAQA0KIAkvKiBzZXQgdXAgYm9v
dHN0cmFwIHN0YWNrICovDQogCW1vdmwJX3Byb2MwcGFkZHIsJWVzcAkvKiBs
b2NhdGlvbiBvZiBpbi1rZXJuZWwgcGFnZXMgKi8NCiAJYWRkbAkkVVBBR0VT
KlBBR0VfU0laRSwlZXNwCS8qIGJvb3RzdHJhcCBzdGFjayBlbmQgbG9jYXRp
b24gKi8NCi0JeG9ybAklZWF4LCVlYXgJCS8qIG1hcmsgZW5kIG9mIGZyYW1l
cyAqLw0KKwl4b3JsCSVlYXgsJWVheAkJCS8qIG1hcmsgZW5kIG9mIGZyYW1l
cyAqLw0KIAltb3ZsCSVlYXgsJWVicA0KIAltb3ZsCV9wcm9jMHBhZGRyLCVl
YXgNCi0JbW92bAklY3IzLCVlc2kNCisJbW92bAlfSWRsZVBURCwgJWVzaQ0K
IAltb3ZsCSVlc2ksUENCX0NSMyglZWF4KQ0KIA0KIAl0ZXN0bAkkQ1BVSURf
UEdFLCBSKF9jcHVfZmVhdHVyZSkNCkBAIC0zNzIsMTEgKzM2NywxMSBAQA0K
IDE6DQogDQogCW1vdmwJcGh5c2ZyZWUsICVlc2kNCi0JcHVzaGwJJWVzaQkJ
CS8qIHZhbHVlIG9mIGZpcnN0IGZvciBpbml0Mzg2KGZpcnN0KSAqLw0KLQlj
YWxsCV9pbml0Mzg2CQkvKiB3aXJlIDM4NiBjaGlwIGZvciB1bml4IG9wZXJh
dGlvbiAqLw0KKwlwdXNobAklZXNpCQkJCS8qIHZhbHVlIG9mIGZpcnN0IGZv
ciBpbml0Mzg2KGZpcnN0KSAqLw0KKwljYWxsCV9pbml0Mzg2CQkJLyogd2ly
ZSAzODYgY2hpcCBmb3IgdW5peCBvcGVyYXRpb24gKi8NCiAJcG9wbAklZXNp
DQogDQotCWNhbGwJX21pX3N0YXJ0dXAJCS8qIGF1dG9jb25maWd1cmF0aW9u
LCBtb3VudHJvb3QgZXRjICovDQorCWNhbGwJX21pX3N0YXJ0dXAJCQkvKiBh
dXRvY29uZmlndXJhdGlvbiwgbW91bnRyb290IGV0YyAqLw0KIA0KIAlobHQJ
CS8qIG5ldmVyIHJldHVybnMgdG8gaGVyZSAqLw0KIA0KQEAgLTc0Miw3ICs3
MzcsNyBAQA0KIAltb3ZsCSVlc2ksUihfS1BUcGh5cykNCiANCiAvKiBBbGxv
Y2F0ZSBQYWdlIFRhYmxlIERpcmVjdG9yeSAqLw0KLQlBTExPQ1BBR0VTKE5Q
R1BURCkNCisJQUxMT0NQQUdFUygxKQ0KIAltb3ZsCSVlc2ksUihfSWRsZVBU
RCkNCiANCiAvKiBBbGxvY2F0ZSBVUEFHRVMgKi8NCkBAIC04MTIsNyArODA3
LDcgQEANCiANCiAvKiBNYXAgcGFnZSBkaXJlY3RvcnkuICovDQogCW1vdmwJ
UihfSWRsZVBURCksICVlYXgNCi0JbW92bAkkTlBHUFRELCAlZWN4DQorCW1v
dmwJJDEsICVlY3gNCiAJZmlsbGtwdHBoeXMoJFBHX1JXKQ0KIA0KIC8qIE1h
cCBwcm9jMCdzIFVQQUdFUyBpbiB0aGUgcGh5c2ljYWwgd2F5IC4uLiAqLw0K
QEAgLTg5MSwxNSArODg2LDkgQEANCiAvKiBpbnN0YWxsIGEgcGRlIHJlY3Vy
c2l2ZWx5IG1hcHBpbmcgcGFnZSBkaXJlY3RvcnkgYXMgYSBwYWdlIHRhYmxl
ICovDQogCW1vdmwJUihfSWRsZVBURCksICVlYXgNCiAJbW92bAkkUFREUFRE
SSwgJWVieA0KLQltb3ZsCSROUEdQVEQsICVlY3gNCisJbW92bAkkMSwlZWN4
DQogCWZpbGxrcHQoUihfSWRsZVBURCksICRQR19SVykNCiANCi0jaWZkZWYg
UEFFDQotCW1vdmwJUihfSWRsZVBURCksJWVheA0KLQl4b3JsCSVlYngsJWVi
eA0KLQltb3ZsCSROUEdQVEQsJWVjeA0KLQlmaWxsa3B0KCRSKF9JZGxlUERQ
VCksICQwKQ0KLSNlbmRpZg0KIAlyZXQNCiANCiAjaWZkZWYgQkRFX0RFQlVH
R0VSDQpPbmx5IGluIC91c3Ivc3JjL3N5cy9pMzg2L2kzODY6IGxvY29yZS5z
Lm9yaWcNCk9ubHkgaW4gL3Vzci9zcmMvc3lzL2kzODYvaTM4NjogbG9jb3Jl
LnMucmVqDQpkaWZmIC11IC1yIC91c3Ivc3JjL3N5cy5vbGQvaTM4Ni9pMzg2
L21hY2hkZXAuYyAvdXNyL3NyYy9zeXMvaTM4Ni9pMzg2L21hY2hkZXAuYw0K
LS0tIC91c3Ivc3JjL3N5cy5vbGQvaTM4Ni9pMzg2L21hY2hkZXAuYwlUaHUg
QXVnIDIxIDE4OjM1OjMzIDIwMDMNCisrKyAvdXNyL3NyYy9zeXMvaTM4Ni9p
Mzg2L21hY2hkZXAuYwlGcmkgQXVnIDIyIDAyOjM3OjE2IDIwMDMNCkBAIC0y
NzEsOCArMjcxLDcgQEANCiAjaWZkZWYgUEVSRk1PTg0KIAlwZXJmbW9uX2lu
aXQoKTsNCiAjZW5kaWYNCi0JcHJpbnRmKCJyZWFsIG1lbW9yeSAgPSAlbGx1
ICglbGx1SyBieXRlcylcbiIsDQotCSAgICBwdG9hKCh1X2ludDY0X3QpTWF4
bWVtKSwgcHRvYSgodV9pbnQ2NF90KU1heG1lbSkgLyAxMDI0KTsNCisJcHJp
bnRmKCJyZWFsIG1lbW9yeSAgPSAldSAoJXVLIGJ5dGVzKVxuIiwgcHRvYShN
YXhtZW0pLCBwdG9hKE1heG1lbSkgLyAxMDI0KTsNCiAJLyoNCiAJICogRGlz
cGxheSBhbnkgaG9sZXMgYWZ0ZXIgdGhlIGZpcnN0IGNodW5rIG9mIGV4dGVu
ZGVkIG1lbW9yeS4NCiAJICovDQpAQCAtMjgxLDE0ICsyODAsMTEgQEANCiAN
CiAJCXByaW50ZigiUGh5c2ljYWwgbWVtb3J5IGNodW5rKHMpOlxuIik7DQog
CQlmb3IgKGluZHggPSAwOyBwaHlzX2F2YWlsW2luZHggKyAxXSAhPSAwOyBp
bmR4ICs9IDIpIHsNCi0JCQl2bV9wYWRkcl90IHNpemUxOw0KKwkJCXVuc2ln
bmVkIGludCBzaXplMSA9IHBoeXNfYXZhaWxbaW5keCArIDFdIC0gcGh5c19h
dmFpbFtpbmR4XTsNCiANCi0JCQlzaXplMSA9IHBoeXNfYXZhaWxbaW5keCAr
IDFdIC0gcGh5c19hdmFpbFtpbmR4XTsNCi0JCQlwcmludGYoIjB4JTA5bGx4
IC0gMHglMDlsbHgsICVsbHUgYnl0ZXMgKCVsbHUgcGFnZXMpXG4iLA0KLQkJ
CSAgICAodV9pbnQ2NF90KXBoeXNfYXZhaWxbaW5keF0sDQotCQkJICAgICh1
X2ludDY0X3QpcGh5c19hdmFpbFtpbmR4ICsgMV0gLSAxLA0KLQkJCSAgICAo
dV9pbnQ2NF90KXNpemUxLA0KLQkJCSAgICAodV9pbnQ2NF90KXNpemUxIC8g
UEFHRV9TSVpFKTsNCisJCQlwcmludGYoIjB4JTA4eCAtIDB4JTA4eCwgJXUg
Ynl0ZXMgKCV1IHBhZ2VzKVxuIiwNCisJCQkgICAgcGh5c19hdmFpbFtpbmR4
XSwgcGh5c19hdmFpbFtpbmR4ICsgMV0gLSAxLCBzaXplMSwNCisJCQkgICAg
c2l6ZTEgLyBQQUdFX1NJWkUpOw0KIAkJfQ0KIAl9DQogDQpAQCAtNDM5LDkg
KzQzNSw4IEBADQogCWNuaW5pdCgpOwkJLyogdGhlIHByZWZlcnJlZCBjb25z
b2xlIG1heSBoYXZlIGNoYW5nZWQgKi8NCiAjZW5kaWYNCiANCi0JcHJpbnRm
KCJhdmFpbCBtZW1vcnkgPSAlbGx1ICglbGx1SyBieXRlcylcbiIsDQotCSAg
ICBwdG9hKCh1X2ludDY0X3QpY250LnZfZnJlZV9jb3VudCksDQotCSAgICBw
dG9hKCh1X2ludDY0X3QpY250LnZfZnJlZV9jb3VudCkgLyAxMDI0KTsNCisJ
cHJpbnRmKCJhdmFpbCBtZW1vcnkgPSAldSAoJXVLIGJ5dGVzKVxuIiwgcHRv
YShjbnQudl9mcmVlX2NvdW50KSwNCisJICAgIHB0b2EoY250LnZfZnJlZV9j
b3VudCkgLyAxMDI0KTsNCiANCiAJLyoNCiAJICogU2V0IHVwIGJ1ZmZlcnMs
IHNvIHRoZXkgY2FuIGJlIHVzZWQgdG8gcmVhZCBkaXNrIGxhYmVscy4NCkBA
IC0xNDIyLDggKzE0MTcsNiBAQA0KICAqDQogICogVG90YWwgbWVtb3J5IHNp
emUgbWF5IGJlIHNldCBieSB0aGUga2VybmVsIGVudmlyb25tZW50IHZhcmlh
YmxlDQogICogaHcucGh5c21lbSBvciB0aGUgY29tcGlsZS10aW1lIGRlZmlu
ZSBNQVhNRU0uDQotICoNCi0gKiBYWFggZmlyc3Qgc2hvdWxkIGJlIHZtX3Bh
ZGRyX3QuDQogICovDQogc3RhdGljIHZvaWQNCiBnZXRtZW1zaXplKGludCBm
aXJzdCkNCkBAIC0xNDMzLDggKzE0MjYsOCBAQA0KIAl1X2ludCBiYXNlbWVt
LCBleHRtZW07DQogCXN0cnVjdCB2bTg2ZnJhbWUgdm1mOw0KIAlzdHJ1Y3Qg
dm04NmNvbnRleHQgdm1jOw0KLQl2bV9wYWRkcl90IHBhLCBwaHlzbWFwW1BI
WVNNQVBfU0laRV07DQotCXB0X2VudHJ5X3QgKnB0ZTsNCisJdm1fb2Zmc2V0
X3QgcGEsIHBoeXNtYXBbUEhZU01BUF9TSVpFXTsNCisJcHRfZW50cnlfdCBw
dGU7DQogCWNvbnN0IGNoYXIgKmNwOw0KIAlzdHJ1Y3Qgew0KIAkJdV9pbnQ2
NF90IGJhc2U7DQpAQCAtMTQ5MCw3ICsxNDgzLDcgQEANCiAJICovDQogCWZv
ciAocGEgPSB0cnVuY19wYWdlKGJhc2VtZW0gKiAxMDI0KTsNCiAJICAgICBw
YSA8IElTQV9IT0xFX1NUQVJUOyBwYSArPSBQQUdFX1NJWkUpIHsNCi0JCXB0
ZSA9IHZ0b3B0ZShwYSArIEtFUk5CQVNFKTsNCisJCXB0ZSA9IChwdF9lbnRy
eV90KXZ0b3B0ZShwYSArIEtFUk5CQVNFKTsNCiAJCSpwdGUgPSBwYSB8IFBH
X1JXIHwgUEdfVjsNCiAJfQ0KIA0KQEAgLTE0OTgsNyArMTQ5MSw3IEBADQog
CSAqIGlmIGJhc2VtZW0gIT0gNjQwLCBtYXAgcGFnZXMgci93IGludG8gdm04
NiBwYWdlIHRhYmxlIHNvIA0KIAkgKiB0aGF0IHRoZSBiaW9zIGNhbiBzY3Jp
YmJsZSBvbiBpdC4NCiAJICovDQotCXB0ZSA9IChwdF9lbnRyeV90ICopdm04
NnBhZGRyOw0KKwlwdGUgPSAocHRfZW50cnlfdCl2bTg2cGFkZHI7DQogCWZv
ciAoaSA9IGJhc2VtZW0gLyA0OyBpIDwgMTYwOyBpKyspDQogCQlwdGVbaV0g
PSAoaSA8PCBQQUdFX1NISUZUKSB8IFBHX1YgfCBQR19SVyB8IFBHX1U7DQog
DQpAQCAtMTUwNyw3ICsxNTAwLDcgQEANCiAJICogbWFwIHBhZ2UgMSBSL1cg
aW50byB0aGUga2VybmVsIHBhZ2UgdGFibGUgc28gd2UgY2FuIHVzZSBpdA0K
IAkgKiBhcyBhIGJ1ZmZlci4gIFRoZSBrZXJuZWwgd2lsbCB1bm1hcCB0aGlz
IHBhZ2UgbGF0ZXIuDQogCSAqLw0KLQlwdGUgPSB2dG9wdGUoS0VSTkJBU0Ug
KyAoMSA8PCBQQUdFX1NISUZUKSk7DQorCXB0ZSA9IChwdF9lbnRyeV90KXZ0
b3B0ZShLRVJOQkFTRSArICgxIDw8IFBBR0VfU0hJRlQpKTsNCiAJKnB0ZSA9
ICgxIDw8IFBBR0VfU0hJRlQpIHwgUEdfUlcgfCBQR19WOw0KIA0KIAkvKg0K
QEAgLTE1MzAsOCArMTUyMywxMiBAQA0KIAkJaWYgKGkgfHwgdm1mLnZtZl9l
YXggIT0gU01BUF9TSUcpDQogCQkJYnJlYWs7DQogCQlpZiAoYm9vdGhvd3Rv
ICYgUkJfVkVSQk9TRSkNCi0JCQlwcmludGYoIlNNQVAgdHlwZT0lMDJ4IGJh
c2U9JTAxNmxseCBsZW49JTAxNmxseFxuIiwNCi0JCQkgICAgc21hcC0+dHlw
ZSwgc21hcC0+YmFzZSwgc21hcC0+bGVuZ3RoKTsNCisJCQlwcmludGYoIlNN
QVAgdHlwZT0lMDJ4IGJhc2U9JTA4eCAlMDh4IGxlbj0lMDh4ICUwOHhcbiIs
DQorCQkJCXNtYXAtPnR5cGUsDQorCQkJCSoodV9pbnQzMl90ICopKChjaGFy
ICopJnNtYXAtPmJhc2UgKyA0KSwNCisJCQkJKHVfaW50MzJfdClzbWFwLT5i
YXNlLA0KKwkJCQkqKHVfaW50MzJfdCAqKSgoY2hhciAqKSZzbWFwLT5sZW5n
dGggKyA0KSwNCisJCQkJKHVfaW50MzJfdClzbWFwLT5sZW5ndGgpOw0KIA0K
IAkJaWYgKHNtYXAtPnR5cGUgIT0gMHgwMSkNCiAJCQlnb3RvIG5leHRfcnVu
Ow0KQEAgLTE1MzksMTMgKzE1MzYsMTEgQEANCiAJCWlmIChzbWFwLT5sZW5n
dGggPT0gMCkNCiAJCQlnb3RvIG5leHRfcnVuOw0KIA0KLSNpZm5kZWYgUEFF
DQogCQlpZiAoc21hcC0+YmFzZSA+PSAweGZmZmZmZmZmKSB7DQogCQkJcHJp
bnRmKCIldUsgb2YgbWVtb3J5IGFib3ZlIDRHQiBpZ25vcmVkXG4iLA0KIAkJ
CSAgICAodV9pbnQpKHNtYXAtPmxlbmd0aCAvIDEwMjQpKTsNCiAJCQlnb3Rv
IG5leHRfcnVuOw0KIAkJfQ0KLSNlbmRpZg0KIA0KIAkJZm9yIChpID0gMDsg
aSA8PSBwaHlzbWFwX2lkeDsgaSArPSAyKSB7DQogCQkJaWYgKHNtYXAtPmJh
c2UgPCBwaHlzbWFwW2kgKyAxXSkgew0KQEAgLTE1OTUsMTEgKzE1OTAsMTEg
QEANCiANCiAJCWZvciAocGEgPSB0cnVuY19wYWdlKGJhc2VtZW0gKiAxMDI0
KTsNCiAJCSAgICAgcGEgPCBJU0FfSE9MRV9TVEFSVDsgcGEgKz0gUEFHRV9T
SVpFKSB7DQotCQkJcHRlID0gdnRvcHRlKHBhICsgS0VSTkJBU0UpOw0KKwkJ
CXB0ZSA9IChwdF9lbnRyeV90KXZ0b3B0ZShwYSArIEtFUk5CQVNFKTsNCiAJ
CQkqcHRlID0gcGEgfCBQR19SVyB8IFBHX1Y7DQogCQl9DQogDQotCQlwdGUg
PSAocHRfZW50cnlfdCAqKXZtODZwYWRkcjsNCisJCXB0ZSA9IChwdF9lbnRy
eV90KXZtODZwYWRkcjsNCiAJCWZvciAoaSA9IGJhc2VtZW0gLyA0OyBpIDwg
MTYwOyBpKyspDQogCQkJcHRlW2ldID0gKGkgPDwgUEFHRV9TSElGVCkgfCBQ
R19WIHwgUEdfUlcgfCBQR19VOw0KIAl9DQpAQCAtMTcxMiw3ICsxNzA3LDEw
IEBADQogCSAqIGV4dGVuZCB0aGUgbGFzdCBtZW1vcnkgc2VnbWVudCB0byB0
aGUgbmV3IGxpbWl0Lg0KIAkgKi8gDQogCWlmIChhdG9wKHBoeXNtYXBbcGh5
c21hcF9pZHggKyAxXSkgPCBNYXhtZW0pDQotCQlwaHlzbWFwW3BoeXNtYXBf
aWR4ICsgMV0gPSBwdG9hKCh2bV9wYWRkcl90KU1heG1lbSk7DQorCQlwaHlz
bWFwW3BoeXNtYXBfaWR4ICsgMV0gPSBwdG9hKE1heG1lbSk7DQorDQorCS8q
IGNhbGwgcG1hcCBpbml0aWFsaXphdGlvbiB0byBtYWtlIG5ldyBrZXJuZWwg
YWRkcmVzcyBzcGFjZSAqLw0KKwlwbWFwX2Jvb3RzdHJhcChmaXJzdCwgMCk7
DQogDQogCS8qDQogCSAqIFNpemUgdXAgZWFjaCBhdmFpbGFibGUgY2h1bmsg
b2YgcGh5c2ljYWwgbWVtb3J5Lg0KQEAgLTE3MjEsMjEgKzE3MTksMjkgQEAN
CiAJcGFfaW5keCA9IDA7DQogCXBoeXNfYXZhaWxbcGFfaW5keCsrXSA9IHBo
eXNtYXBbMF07DQogCXBoeXNfYXZhaWxbcGFfaW5keF0gPSBwaHlzbWFwWzBd
Ow0KLQlwdGUgPSB2dG9wdGUoS0VSTkJBU0UgKyBQQUdFX1NJWkUpOw0KKyNp
ZiAwDQorCXB0ZSA9IChwdF9lbnRyeV90KXZ0b3B0ZShLRVJOQkFTRSk7DQor
I2Vsc2UNCisJcHRlID0gKHB0X2VudHJ5X3QpQ01BUDE7DQorI2VuZGlmDQog
DQogCS8qDQogCSAqIHBoeXNtYXAgaXMgaW4gYnl0ZXMsIHNvIHdoZW4gY29u
dmVydGluZyB0byBwYWdlIGJvdW5kYXJpZXMsDQogCSAqIHJvdW5kIHVwIHRo
ZSBzdGFydCBhZGRyZXNzIGFuZCByb3VuZCBkb3duIHRoZSBlbmQgYWRkcmVz
cy4NCiAJICovDQogCWZvciAoaSA9IDA7IGkgPD0gcGh5c21hcF9pZHg7IGkg
Kz0gMikgew0KLQkJdm1fcGFkZHJfdCBlbmQ7DQorCQl2bV9vZmZzZXRfdCBl
bmQ7DQogDQotCQllbmQgPSBwdG9hKCh2bV9wYWRkcl90KU1heG1lbSk7DQor
CQllbmQgPSBwdG9hKE1heG1lbSk7DQogCQlpZiAocGh5c21hcFtpICsgMV0g
PCBlbmQpDQogCQkJZW5kID0gdHJ1bmNfcGFnZShwaHlzbWFwW2kgKyAxXSk7
DQogCQlmb3IgKHBhID0gcm91bmRfcGFnZShwaHlzbWFwW2ldKTsgcGEgPCBl
bmQ7IHBhICs9IFBBR0VfU0laRSkgew0KIAkJCWludCB0bXAsIHBhZ2VfYmFk
Ow0KLQkJCXZvbGF0aWxlIGludCAqcHRyID0gKGludCAqKShLRVJOQkFTRSAr
IFBBR0VfU0laRSk7DQorI2lmIDANCisJCQlpbnQgKnB0ciA9IDA7DQorI2Vs
c2UNCisJCQlpbnQgKnB0ciA9IChpbnQgKilDQUREUjE7DQorI2VuZGlmDQog
DQogCQkJLyoNCiAJCQkgKiBibG9jayBvdXQga2VybmVsIG1lbW9yeSBhcyBu
b3QgYXZhaWxhYmxlLg0KQEAgLTE3NTEsMzkgKzE3NTcsMzkgQEANCiAJCQkq
cHRlID0gcGEgfCBQR19WIHwgUEdfUlcgfCBQR19OOw0KIAkJCWludmx0bGIo
KTsNCiANCi0JCQl0bXAgPSAqcHRyOw0KKwkJCXRtcCA9ICooaW50ICopcHRy
Ow0KIAkJCS8qDQogCQkJICogVGVzdCBmb3IgYWx0ZXJuYXRpbmcgMSdzIGFu
ZCAwJ3MNCiAJCQkgKi8NCi0JCQkqcHRyID0gMHhhYWFhYWFhYTsNCi0JCQlp
ZiAoKnB0ciAhPSAweGFhYWFhYWFhKSB7DQorCQkJKih2b2xhdGlsZSBpbnQg
KilwdHIgPSAweGFhYWFhYWFhOw0KKwkJCWlmICgqKHZvbGF0aWxlIGludCAq
KXB0ciAhPSAweGFhYWFhYWFhKSB7DQogCQkJCXBhZ2VfYmFkID0gVFJVRTsN
CiAJCQl9DQogCQkJLyoNCiAJCQkgKiBUZXN0IGZvciBhbHRlcm5hdGluZyAw
J3MgYW5kIDEncw0KIAkJCSAqLw0KLQkJCSpwdHIgPSAweDU1NTU1NTU1Ow0K
LQkJCWlmICgqcHRyICE9IDB4NTU1NTU1NTUpIHsNCi0JCQkJcGFnZV9iYWQg
PSBUUlVFOw0KKwkJCSoodm9sYXRpbGUgaW50ICopcHRyID0gMHg1NTU1NTU1
NTsNCisJCQlpZiAoKih2b2xhdGlsZSBpbnQgKilwdHIgIT0gMHg1NTU1NTU1
NSkgew0KKwkJCXBhZ2VfYmFkID0gVFJVRTsNCiAJCQl9DQogCQkJLyoNCiAJ
CQkgKiBUZXN0IGZvciBhbGwgMSdzDQogCQkJICovDQotCQkJKnB0ciA9IDB4
ZmZmZmZmZmY7DQotCQkJaWYgKCpwdHIgIT0gMHhmZmZmZmZmZikgew0KKwkJ
CSoodm9sYXRpbGUgaW50ICopcHRyID0gMHhmZmZmZmZmZjsNCisJCQlpZiAo
Kih2b2xhdGlsZSBpbnQgKilwdHIgIT0gMHhmZmZmZmZmZikgew0KIAkJCQlw
YWdlX2JhZCA9IFRSVUU7DQogCQkJfQ0KIAkJCS8qDQogCQkJICogVGVzdCBm
b3IgYWxsIDAncw0KIAkJCSAqLw0KLQkJCSpwdHIgPSAweDA7DQotCQkJaWYg
KCpwdHIgIT0gMHgwKSB7DQorCQkJKih2b2xhdGlsZSBpbnQgKilwdHIgPSAw
eDA7DQorCQkJaWYgKCoodm9sYXRpbGUgaW50ICopcHRyICE9IDB4MCkgew0K
IAkJCQlwYWdlX2JhZCA9IFRSVUU7DQogCQkJfQ0KIAkJCS8qDQogCQkJICog
UmVzdG9yZSBvcmlnaW5hbCB2YWx1ZS4NCiAJCQkgKi8NCi0JCQkqcHRyID0g
dG1wOw0KKwkJCSooaW50ICopcHRyID0gdG1wOw0KIA0KIAkJCS8qDQogCQkJ
ICogQWRqdXN0IGFycmF5IG9mIHZhbGlkL2dvb2QgcGFnZXMuDQpAQCAtMTk5
NSwxMSArMjAwMSw3IEBADQogCSAgICBkYmxmYXVsdF90c3MudHNzX2VzcDIg
PSAoaW50KSAmZGJsZmF1bHRfc3RhY2tbc2l6ZW9mKGRibGZhdWx0X3N0YWNr
KV07DQogCWRibGZhdWx0X3Rzcy50c3Nfc3MgPSBkYmxmYXVsdF90c3MudHNz
X3NzMCA9IGRibGZhdWx0X3Rzcy50c3Nfc3MxID0NCiAJICAgIGRibGZhdWx0
X3Rzcy50c3Nfc3MyID0gR1NFTChHREFUQV9TRUwsIFNFTF9LUEwpOw0KLSNp
ZmRlZiBQQUUNCi0JZGJsZmF1bHRfdHNzLnRzc19jcjMgPSAoaW50KUlkbGVQ
RFBUIC0gS0VSTkJBU0U7DQotI2Vsc2UNCiAJZGJsZmF1bHRfdHNzLnRzc19j
cjMgPSAoaW50KUlkbGVQVEQ7DQotI2VuZGlmDQogCWRibGZhdWx0X3Rzcy50
c3NfZWlwID0gKGludCkgZGJsZmF1bHRfaGFuZGxlcjsNCiAJZGJsZmF1bHRf
dHNzLnRzc19lZmxhZ3MgPSBQU0xfS0VSTkVMOw0KIAlkYmxmYXVsdF90c3Mu
dHNzX2RzID0gZGJsZmF1bHRfdHNzLnRzc19lcyA9DQpAQCAtMjAxMCw3ICsy
MDEyLDYgQEANCiANCiAJdm04Nl9pbml0aWFsaXplKCk7DQogCWdldG1lbXNp
emUoZmlyc3QpOw0KLQlwbWFwX2Jvb3RzdHJhcChmaXJzdCwgMCk7DQogCWlu
aXRfcGFyYW0yKHBoeXNtZW0pOw0KIA0KIAkvKiBub3cgcnVubmluZyBvbiBu
ZXcgcGFnZSB0YWJsZXMsIGNvbmZpZ3VyZWQsYW5kIHUvaW9tIGlzIGFjY2Vz
c2libGUgKi8NCkBAIC0yMDQ0LDExICsyMDQ1LDcgQEANCiANCiAJLyogc2V0
dXAgcHJvYyAwJ3MgcGNiICovDQogCXByb2MwLnBfYWRkci0+dV9wY2IucGNi
X2ZsYWdzID0gMDsNCi0jaWZkZWYgUEFFDQotICAgICAgICBwcm9jMC5wX2Fk
ZHItPnVfcGNiLnBjYl9jcjMgPSAoaW50KUlkbGVQRFBUIC0gS0VSTkJBU0U7
DQotI2Vsc2UNCi0gICAgICAgIHByb2MwLnBfYWRkci0+dV9wY2IucGNiX2Ny
MyA9IChpbnQpSWRsZVBURDsNCi0jZW5kaWYNCisJcHJvYzAucF9hZGRyLT51
X3BjYi5wY2JfY3IzID0gKGludClJZGxlUFREOw0KICNpZmRlZiBTTVANCiAJ
cHJvYzAucF9hZGRyLT51X3BjYi5wY2JfbXBuZXN0ID0gMTsNCiAjZW5kaWYN
Ck9ubHkgaW4gL3Vzci9zcmMvc3lzL2kzODYvaTM4NjogbWFjaGRlcC5jLm9y
aWcNCk9ubHkgaW4gL3Vzci9zcmMvc3lzL2kzODYvaTM4NjogbWFjaGRlcC5j
LnJlag0KZGlmZiAtdSAtciAvdXNyL3NyYy9zeXMub2xkL2kzODYvaTM4Ni9t
ZW0uYyAvdXNyL3NyYy9zeXMvaTM4Ni9pMzg2L21lbS5jDQotLS0gL3Vzci9z
cmMvc3lzLm9sZC9pMzg2L2kzODYvbWVtLmMJVGh1IEF1ZyAyMSAxODozNToz
MyAyMDAzDQorKysgL3Vzci9zcmMvc3lzL2kzODYvaTM4Ni9tZW0uYwlGcmkg
QXVnIDIyIDAyOjEwOjQxIDIwMDMNCkBAIC0xNTksNyArMTU5LDcgQEANCiAJ
aW50IGZsYWdzOw0KIHsNCiAJcmVnaXN0ZXIgaW50IG87DQotCXJlZ2lzdGVy
IHVfaW50IGM7DQorCXJlZ2lzdGVyIHVfaW50IGMsIHY7DQogCXVfaW50IHBv
b2xzaXplOw0KIAlyZWdpc3RlciBzdHJ1Y3QgaW92ZWMgKmlvdjsNCiAJaW50
IGVycm9yID0gMDsNCkBAIC0xNzgsOCArMTc4LDkgQEANCiANCiAvKiBtaW5v
ciBkZXZpY2UgMCBpcyBwaHlzaWNhbCBtZW1vcnkgKi8NCiAJCWNhc2UgMDoN
Ci0JCQlwbWFwX2tlbnRlcigodm1fb2Zmc2V0X3QpcHR2bW1hcCwgDQotCQkJ
ICAgIHVpby0+dWlvX29mZnNldCAmIH5QQUdFX01BU0spOw0KKwkJCXYgPSB1
aW8tPnVpb19vZmZzZXQ7DQorCQkJdiAmPSB+UEFHRV9NQVNLOw0KKwkJCXBt
YXBfa2VudGVyKCh2bV9vZmZzZXRfdClwdHZtbWFwLCB2KTsNCiAJCQlvID0g
KGludCl1aW8tPnVpb19vZmZzZXQgJiBQQUdFX01BU0s7DQogCQkJYyA9ICh1
X2ludCkoUEFHRV9TSVpFIC0gKChpbnQpaW92LT5pb3ZfYmFzZSAmIFBBR0Vf
TUFTSykpOw0KIAkJCWMgPSBtaW4oYywgKHVfaW50KShQQUdFX1NJWkUgLSBv
KSk7DQpAQCAtMjAxLDYgKzIwMiw4IEBADQogCQkJZWFkZHIgPSByb3VuZF9w
YWdlKHVpby0+dWlvX29mZnNldCArIGMpOw0KIA0KIAkJCWlmIChhZGRyIDwg
KHZtX29mZnNldF90KVZBRERSKFBURFBUREksIDApKQ0KKwkJCQlyZXR1cm4g
RUZBVUxUOw0KKwkJCWlmIChlYWRkciA+PSAodm1fb2Zmc2V0X3QpVkFERFIo
QVBURFBUREksIDApKQ0KIAkJCQlyZXR1cm4gRUZBVUxUOw0KIAkJCWZvciAo
OyBhZGRyIDwgZWFkZHI7IGFkZHIgKz0gUEFHRV9TSVpFKSANCiAJCQkJaWYg
KHBtYXBfZXh0cmFjdChrZXJuZWxfcG1hcCwgYWRkcikgPT0gMCkNCk9ubHkg
aW4gL3Vzci9zcmMvc3lzL2kzODYvaTM4NjogbWVtLmMub3JpZw0KT25seSBp
biAvdXNyL3NyYy9zeXMvaTM4Ni9pMzg2OiBtZW0uYy5yZWoNCmRpZmYgLXUg
LXIgL3Vzci9zcmMvc3lzLm9sZC9pMzg2L2kzODYvbXBfbWFjaGRlcC5jIC91
c3Ivc3JjL3N5cy9pMzg2L2kzODYvbXBfbWFjaGRlcC5jDQotLS0gL3Vzci9z
cmMvc3lzLm9sZC9pMzg2L2kzODYvbXBfbWFjaGRlcC5jCVRodSBBdWcgMjEg
MTg6MzU6MzMgMjAwMw0KKysrIC91c3Ivc3JjL3N5cy9pMzg2L2kzODYvbXBf
bWFjaGRlcC5jCUZyaSBBdWcgMjIgMDI6MTA6MTYgMjAwMw0KQEAgLTIxNDcs
MTEgKzIxNDcsMTEgQEANCiAJCWdkLT5nZF9wcnZfQ01BUDEgPSAmU01QcHRb
cGcgKyAxXTsNCiAJCWdkLT5nZF9wcnZfQ01BUDIgPSAmU01QcHRbcGcgKyAy
XTsNCiAJCWdkLT5nZF9wcnZfQ01BUDMgPSAmU01QcHRbcGcgKyAzXTsNCi0J
CWdkLT5nZF9wcnZfUE1BUDEgPSAocGRfZW50cnlfdCAqKSZTTVBwdFtwZyAr
IDRdOw0KKwkJZ2QtPmdkX3Bydl9QTUFQMSA9ICZTTVBwdFtwZyArIDRdOw0K
IAkJZ2QtPmdkX3Bydl9DQUREUjEgPSBTTVBfcHJ2c3BhY2VbeF0uQ1BBR0Ux
Ow0KIAkJZ2QtPmdkX3Bydl9DQUREUjIgPSBTTVBfcHJ2c3BhY2VbeF0uQ1BB
R0UyOw0KIAkJZ2QtPmdkX3Bydl9DQUREUjMgPSBTTVBfcHJ2c3BhY2VbeF0u
Q1BBR0UzOw0KLQkJZ2QtPmdkX3Bydl9QQUREUjEgPSAocHRfZW50cnlfdCAq
KVNNUF9wcnZzcGFjZVt4XS5QUEFHRTE7DQorCQlnZC0+Z2RfcHJ2X1BBRERS
MSA9ICh1bnNpZ25lZCAqKVNNUF9wcnZzcGFjZVt4XS5QUEFHRTE7DQogDQog
CQkvKiBzZXR1cCBhIHZlY3RvciB0byBvdXIgYm9vdCBjb2RlICovDQogCQkq
KCh2b2xhdGlsZSB1X3Nob3J0ICopIFdBUk1CT09UX09GRikgPSBXQVJNQk9P
VF9UQVJHRVQ7DQpAQCAtMjUzNiw3ICsyNTM2LDcgQEANCiAJaWYgKGNwdWlk
ICE9IGFwaWNfaWQpIHsNCiAJCXByaW50ZigiU01QOiBjcHVpZCA9ICVkXG4i
LCBjcHVpZCk7DQogCQlwcmludGYoIlNNUDogYXBpY19pZCA9ICVkXG4iLCBh
cGljX2lkKTsNCi0JCXByaW50ZigiUFREW01QUFRESV0gPSAlbGx4XG4iLCAo
dV9pbnQ2NF90KVBURFtNUFBUREldKTsNCisJCXByaW50ZigiUFREW01QUFRE
SV0gPSAlcFxuIiwgKHZvaWQgKilQVERbTVBQVERJXSk7DQogCQlwYW5pYygi
Y3B1aWQgbWlzbWF0Y2ghIGJvb20hISIpOw0KIAl9DQogDQpPbmx5IGluIC91
c3Ivc3JjL3N5cy9pMzg2L2kzODY6IG1wX21hY2hkZXAuYy5vcmlnDQpPbmx5
IGluIC91c3Ivc3JjL3N5cy9pMzg2L2kzODY6IG1wX21hY2hkZXAuYy5yZWoN
CmRpZmYgLXUgLXIgL3Vzci9zcmMvc3lzLm9sZC9pMzg2L2kzODYvbXBib290
LnMgL3Vzci9zcmMvc3lzL2kzODYvaTM4Ni9tcGJvb3Qucw0KLS0tIC91c3Iv
c3JjL3N5cy5vbGQvaTM4Ni9pMzg2L21wYm9vdC5zCVRodSBBdWcgMjEgMTg6
MzU6MzMgMjAwMw0KKysrIC91c3Ivc3JjL3N5cy9pMzg2L2kzODYvbXBib290
LnMJRnJpIEF1ZyAyMiAwMjowOToyOCAyMDAzDQpAQCAtNDAsOCArNDAsNiBA
QA0KIA0KICNpbmNsdWRlICJhc3N5bS5zIg0KIA0KLSNkZWZpbmUJUih4KQko
KHgpLUtFUk5CQVNFKQ0KLQ0KIC8qDQogICogdGhpcyBjb2RlIE1VU1QgYmUg
ZW5hYmxlZCBoZXJlIGFuZCBpbiBtcF9tYWNoZGVwLmMNCiAgKiBpdCBmb2xs
b3dzIHRoZSB2ZXJ5IGVhcmx5IHN0YWdlcyBvZiBBUCBib290IGJ5IHBsYWNp
bmcgdmFsdWVzIGluIENNT1MgcmFtLg0KQEAgLTc2LDE0ICs3NCw3IEBADQog
Tk9OX0dQUk9GX0VOVFJZKE1QZW50cnkpDQogCUNIRUNLUE9JTlQoMHgzNiwg
MykNCiAJLyogTm93IGVuYWJsZSBwYWdpbmcgbW9kZSAqLw0KLSNpZmRlZiBQ
QUUNCi0JbW92bAklY3I0LCVlYXgNCi0Jb3JsCSRDUjRfUEFFLCVlYXgNCi0J
bW92bAklZWF4LCVjcjQNCi0JbW92bAkkUihfSWRsZVBEUFQpLCVlYXgNCi0j
ZWxzZQ0KLQltb3ZsCVIoX0lkbGVQVEQpLCVlYXgNCi0jZW5kaWYNCisJbW92
bAlfSWRsZVBURC1LRVJOQkFTRSwgJWVheA0KIAltb3ZsCSVlYXgsJWNyMwkN
CiAJbW92bAklY3IwLCVlYXgNCiAJb3JsCSRDUjBfUEV8Q1IwX1BHLCVlYXgJ
CS8qIGVuYWJsZSBwYWdpbmcgKi8NCk9ubHkgaW4gL3Vzci9zcmMvc3lzL2kz
ODYvaTM4NjogbXBib290LnMub3JpZw0KT25seSBpbiAvdXNyL3NyYy9zeXMv
aTM4Ni9pMzg2OiBtcGJvb3Qucy5yZWoNCmRpZmYgLXUgLXIgL3Vzci9zcmMv
c3lzLm9sZC9pMzg2L2kzODYvcG1hcC5jIC91c3Ivc3JjL3N5cy9pMzg2L2kz
ODYvcG1hcC5jDQotLS0gL3Vzci9zcmMvc3lzLm9sZC9pMzg2L2kzODYvcG1h
cC5jCVRodSBBdWcgMjEgMTg6MzU6MzQgMjAwMw0KKysrIC91c3Ivc3JjL3N5
cy9pMzg2L2kzODYvcG1hcC5jCVdlZCBNYXIgIDYgMTY6NDg6NTMgMjAwMg0K
QEAgLTM5LDM5ICszOSw3IEBADQogICogU1VDSCBEQU1BR0UuDQogICoNCiAg
Kglmcm9tOglAKCMpcG1hcC5jCTcuNyAoQmVya2VsZXkpCTUvMTIvOTENCi0g
KiAkRnJlZUJTRDogc3JjL3N5cy9pMzg2L2kzODYvcG1hcC5jLHYgMS4yNTAu
Mi4xOSAyMDAzLzA4LzA5IDE2OjIxOjE4IGx1b3FpIEV4cCAkDQotICovDQot
DQotLyotDQotICogQ29weXJpZ2h0IChjKSAyMDAzIE5ldHdvcmtzIEFzc29j
aWF0ZXMgVGVjaG5vbG9neSwgSW5jLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuDQotICoNCi0gKiBUaGlzIHNvZnR3YXJlIHdhcyBkZXZlbG9wZWQgZm9y
IHRoZSBGcmVlQlNEIFByb2plY3QgYnkgSmFrZSBCdXJraG9sZGVyLA0KLSAq
IFNhZmVwb3J0IE5ldHdvcmsgU2VydmljZXMsIGFuZCBOZXR3b3JrIEFzc29j
aWF0ZXMgTGFib3JhdG9yaWVzLCB0aGUNCi0gKiBTZWN1cml0eSBSZXNlYXJj
aCBEaXZpc2lvbiBvZiBOZXR3b3JrIEFzc29jaWF0ZXMsIEluYy4gdW5kZXIN
Ci0gKiBEQVJQQS9TUEFXQVIgY29udHJhY3QgTjY2MDAxLTAxLUMtODAzNSAo
IkNCT1NTIiksIGFzIHBhcnQgb2YgdGhlIERBUlBBDQotICogQ0hBVFMgcmVz
ZWFyY2ggcHJvZ3JhbS4NCi0gKg0KLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dA0KLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSAqIGFyZSBtZXQ6DQot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCi0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuDQotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCi0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlDQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4NCi0gKg0KLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQNCi0g
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQ0KLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFDQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCi0gKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUw0KLSAqIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQ0KLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
DQotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQ0KLSAqIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YNCi0gKiBTVUNIIERBTUFHRS4NCisgKiAk
RnJlZUJTRDogL3JlcG9tYW4vci9uY3ZzL3NyYy9zeXMvaTM4Ni9pMzg2L3Bt
YXAuYyx2IDEuMjUwLjIuMTggMjAwMi8wMy8wNiAyMjo0ODo1MyBzaWxieSBF
eHAgJA0KICAqLw0KIA0KIC8qDQpAQCAtMTEyLDcgKzgwLDYgQEANCiAjaW5j
bHVkZSA8c3lzL21zZ2J1Zi5oPg0KICNpbmNsdWRlIDxzeXMvdm1tZXRlci5o
Pg0KICNpbmNsdWRlIDxzeXMvbW1hbi5oPg0KLSNpbmNsdWRlIDxzeXMvbWFs
bG9jLmg+DQogDQogI2luY2x1ZGUgPHZtL3ZtLmg+DQogI2luY2x1ZGUgPHZt
L3ZtX3BhcmFtLmg+DQpAQCAtMTI5LDcgKzk2LDYgQEANCiANCiAjaW5jbHVk
ZSA8c3lzL3VzZXIuaD4NCiANCi0jaW5jbHVkZSA8bWFjaGluZS9jcHUuaD4N
CiAjaW5jbHVkZSA8bWFjaGluZS9jcHV0eXBlcy5oPg0KICNpbmNsdWRlIDxt
YWNoaW5lL21kX3Zhci5oPg0KICNpbmNsdWRlIDxtYWNoaW5lL3NwZWNpYWxy
ZWcuaD4NCkBAIC0xNjIsMTYgKzEyOCwxNiBAQA0KICAqIEdldCBQREVzIGFu
ZCBQVEVzIGZvciB1c2VyL2tlcm5lbCBhZGRyZXNzIHNwYWNlDQogICovDQog
I2RlZmluZQlwbWFwX3BkZShtLCB2KQkoJigobSktPnBtX3BkaXJbKHZtX29m
ZnNldF90KSh2KSA+PiBQRFJTSElGVF0pKQ0KLSNkZWZpbmUgcGRpcl9wZGUo
bSwgdikJKG1bKHZtX29mZnNldF90KSh2KSA+PiBQRFJTSElGVF0pDQorI2Rl
ZmluZSBwZGlyX3BkZShtLCB2KSAobVsodm1fb2Zmc2V0X3QpKHYpID4+IFBE
UlNISUZUXSkNCiANCi0jZGVmaW5lIHBtYXBfcGRlX3YocHRlKQkJKCgqcHRl
ICYgUEdfVikgIT0gMCkNCi0jZGVmaW5lIHBtYXBfcHRlX3cocHRlKQkJKCgq
cHRlICYgUEdfVykgIT0gMCkNCi0jZGVmaW5lIHBtYXBfcHRlX20ocHRlKQkJ
KCgqcHRlICYgUEdfTSkgIT0gMCkNCi0jZGVmaW5lIHBtYXBfcHRlX3UocHRl
KQkJKCgqcHRlICYgUEdfQSkgIT0gMCkNCi0jZGVmaW5lIHBtYXBfcHRlX3Yo
cHRlKQkJKCgqcHRlICYgUEdfVikgIT0gMCkNCisjZGVmaW5lIHBtYXBfcGRl
X3YocHRlKQkJKCgqKGludCAqKXB0ZSAmIFBHX1YpICE9IDApDQorI2RlZmlu
ZSBwbWFwX3B0ZV93KHB0ZSkJCSgoKihpbnQgKilwdGUgJiBQR19XKSAhPSAw
KQ0KKyNkZWZpbmUgcG1hcF9wdGVfbShwdGUpCQkoKCooaW50ICopcHRlICYg
UEdfTSkgIT0gMCkNCisjZGVmaW5lIHBtYXBfcHRlX3UocHRlKQkJKCgqKGlu
dCAqKXB0ZSAmIFBHX0EpICE9IDApDQorI2RlZmluZSBwbWFwX3B0ZV92KHB0
ZSkJCSgoKihpbnQgKilwdGUgJiBQR19WKSAhPSAwKQ0KIA0KLSNkZWZpbmUg
cG1hcF9wdGVfc2V0X3cocHRlLCB2KQkoKHYpID8gKCpwdGUgfD0gUEdfVykg
OiAoKnB0ZSAmPSB+UEdfVykpDQotI2RlZmluZSBwbWFwX3B0ZV9zZXRfcHJv
dChwdGUsIHYpICgqcHRlID0gKCpwdGUgJiB+UEdfUFJPVCkgfCAodikpDQor
I2RlZmluZSBwbWFwX3B0ZV9zZXRfdyhwdGUsIHYpICgodik/KCooaW50ICop
cHRlIHw9IFBHX1cpOigqKGludCAqKXB0ZSAmPSB+UEdfVykpDQorI2RlZmlu
ZSBwbWFwX3B0ZV9zZXRfcHJvdChwdGUsIHYpICgoKihpbnQgKilwdGUgJj0g
flBHX1BST1QpLCAoKihpbnQgKilwdGUgfD0gKHYpKSkNCiANCiAvKg0KICAq
IEdpdmVuIGEgbWFwIGFuZCBhIG1hY2hpbmUgaW5kZXBlbmRlbnQgcHJvdGVj
dGlvbiBjb2RlLA0KQEAgLTE4Myw4ICsxNDksOCBAQA0KIHN0YXRpYyBzdHJ1
Y3QgcG1hcCBrZXJuZWxfcG1hcF9zdG9yZTsNCiBwbWFwX3Qga2VybmVsX3Bt
YXA7DQogDQotdm1fcGFkZHJfdCBhdmFpbF9zdGFydDsJLyogUEEgb2YgZmly
c3QgYXZhaWxhYmxlIHBoeXNpY2FsIHBhZ2UgKi8NCi12bV9wYWRkcl90IGF2
YWlsX2VuZDsJLyogUEEgb2YgbGFzdCBhdmFpbGFibGUgcGh5c2ljYWwgcGFn
ZSAqLw0KK3ZtX29mZnNldF90IGF2YWlsX3N0YXJ0OwkvKiBQQSBvZiBmaXJz
dCBhdmFpbGFibGUgcGh5c2ljYWwgcGFnZSAqLw0KK3ZtX29mZnNldF90IGF2
YWlsX2VuZDsJCS8qIFBBIG9mIGxhc3QgYXZhaWxhYmxlIHBoeXNpY2FsIHBh
Z2UgKi8NCiB2bV9vZmZzZXRfdCB2aXJ0dWFsX2F2YWlsOwkvKiBWQSBvZiBm
aXJzdCBhdmFpbCBwYWdlIChhZnRlciBrZXJuZWwgYnNzKSAqLw0KIHZtX29m
ZnNldF90IHZpcnR1YWxfZW5kOwkvKiBWQSBvZiBsYXN0IGF2YWlsIHBhZ2Ug
KGVuZCBvZiBrZXJuZWwgQVMpICovDQogc3RhdGljIGJvb2xlYW5fdCBwbWFw
X2luaXRpYWxpemVkID0gRkFMU0U7CS8qIEhhcyBwbWFwX2luaXQgY29tcGxl
dGVkPyAqLw0KQEAgLTIwMiwzNCArMTY4LDE5IEBADQogc3RhdGljIHZtX3pv
bmVfdCBwdnpvbmU7DQogc3RhdGljIHN0cnVjdCB2bV96b25lIHB2em9uZV9z
dG9yZTsNCiBzdGF0aWMgc3RydWN0IHZtX29iamVjdCBwdnpvbmVfb2JqOw0K
LXN0YXRpYyBpbnQgcHZfZW50cnlfY291bnQgPSAwLCBwdl9lbnRyeV9tYXgg
PSAwLCBwdl9lbnRyeV9oaWdoX3dhdGVyID0gMDsNCitzdGF0aWMgaW50IHB2
X2VudHJ5X2NvdW50PTAsIHB2X2VudHJ5X21heD0wLCBwdl9lbnRyeV9oaWdo
X3dhdGVyPTA7DQogc3RhdGljIGludCBwbWFwX3BhZ2VkYWVtb25fd2FrZW4g
PSAwOw0KIHN0YXRpYyBzdHJ1Y3QgcHZfZW50cnkgKnB2aW5pdDsNCiANCiAv
Kg0KICAqIEFsbCB0aG9zZSBrZXJuZWwgUFQgc3VibWFwcyB0aGF0IEJTRCBp
cyBzbyBmb25kIG9mDQogICovDQotI2lmZGVmIFNNUA0KLWV4dGVybiBwdF9l
bnRyeV90ICpTTVBwdDsNCi0jZGVmaW5lCUNNQVAxCXBydl9DTUFQMQ0KLSNk
ZWZpbmUJQ01BUDIJcHJ2X0NNQVAyDQotI2RlZmluZQlDTUFQMwlwcnZfQ01B
UDMNCi0jZGVmaW5lCVBNQVAxCXBydl9QTUFQMQ0KLSNkZWZpbmUJQ0FERFIx
CXBydl9DQUREUjENCi0jZGVmaW5lCUNBRERSMglwcnZfQ0FERFIyDQotI2Rl
ZmluZQlDQUREUjMJcHJ2X0NBRERSMw0KLSNkZWZpbmUJUEFERFIxCXBydl9Q
QUREUjENCi0jZWxzZQ0KLXN0YXRpYyBwdF9lbnRyeV90ICpDTUFQMSwgKkNN
QVAyLCAqQ01BUDM7DQotc3RhdGljIGNhZGRyX3QgQ0FERFIxLCBDQUREUjIs
IENBRERSMzsNCi1zdGF0aWMgcGRfZW50cnlfdCAqUE1BUDE7DQotc3RhdGlj
IHB0X2VudHJ5X3QgKlBBRERSMTsNCi0jZW5kaWYNCi0NCi1zdGF0aWMgcHRf
ZW50cnlfdCAqcHRtbWFwOw0KLWNhZGRyX3QgcHR2bW1hcCA9IDA7DQorcHRf
ZW50cnlfdCAqQ01BUDEgPSAwOw0KK3N0YXRpYyBwdF9lbnRyeV90ICpDTUFQ
MiwgKnB0bW1hcDsNCitjYWRkcl90IENBRERSMSA9IDAsIHB0dm1tYXAgPSAw
Ow0KK3N0YXRpYyBjYWRkcl90IENBRERSMjsNCiBzdGF0aWMgcHRfZW50cnlf
dCAqbXNnYnVmbWFwOw0KLXN0cnVjdCBtc2didWYgKm1zZ2J1ZnAgPSAwOw0K
K3N0cnVjdCBtc2didWYgKm1zZ2J1ZnA9MDsNCiANCiAvKg0KICAqIENyYXNo
ZHVtcCBtYXBzLg0KQEAgLTIzNywzNiArMTg4LDY2IEBADQogc3RhdGljIHB0
X2VudHJ5X3QgKnB0X2NyYXNoZHVtcG1hcDsNCiBzdGF0aWMgY2FkZHJfdCBj
cmFzaGR1bXBtYXA7DQogDQotc3RhdGljIHBkX2VudHJ5X3QgcGRpcjRtYjsN
CisjaWZkZWYgU01QDQorZXh0ZXJuIHB0X2VudHJ5X3QgKlNNUHB0Ow0KKyNl
bHNlDQorc3RhdGljIHB0X2VudHJ5X3QgKlBNQVAxID0gMDsNCitzdGF0aWMg
dW5zaWduZWQgKlBBRERSMSA9IDA7DQorI2VuZGlmDQogDQogc3RhdGljIFBN
QVBfSU5MSU5FIHZvaWQJZnJlZV9wdl9lbnRyeSBfX1AoKHB2X2VudHJ5X3Qg
cHYpKTsNCitzdGF0aWMgdW5zaWduZWQgKiBnZXRfcHRiYXNlIF9fUCgocG1h
cF90IHBtYXApKTsNCiBzdGF0aWMgcHZfZW50cnlfdCBnZXRfcHZfZW50cnkg
X19QKCh2b2lkKSk7DQogc3RhdGljIHZvaWQJaTM4Nl9wcm90ZWN0aW9uX2lu
aXQgX19QKCh2b2lkKSk7DQogc3RhdGljIF9faW5saW5lIHZvaWQJcG1hcF9j
aGFuZ2ViaXQgX19QKCh2bV9wYWdlX3QgbSwgaW50IGJpdCwgYm9vbGVhbl90
IHNldGVtKSk7DQorDQogc3RhdGljIHZvaWQJcG1hcF9yZW1vdmVfYWxsIF9f
UCgodm1fcGFnZV90IG0pKTsNCiBzdGF0aWMgdm1fcGFnZV90IHBtYXBfZW50
ZXJfcXVpY2sgX19QKChwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsDQog
CQkJCSAgICAgIHZtX3BhZ2VfdCBtLCB2bV9wYWdlX3QgbXB0ZSkpOw0KLXN0
YXRpYyBpbnQgcG1hcF9yZW1vdmVfcHRlIF9fUCgocG1hcF90IHBtYXAsIHB0
X2VudHJ5X3QqIHB0cSwNCitzdGF0aWMgaW50IHBtYXBfcmVtb3ZlX3B0ZSBf
X1AoKHN0cnVjdCBwbWFwICpwbWFwLCB1bnNpZ25lZCAqcHRxLA0KIAkJCQkJ
dm1fb2Zmc2V0X3Qgc3ZhKSk7DQotc3RhdGljIHZvaWQgcG1hcF9yZW1vdmVf
cGFnZSBfX1AoKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSkpOw0KLXN0
YXRpYyBpbnQgcG1hcF9yZW1vdmVfZW50cnkgX19QKChwbWFwX3QgcG1hcCwg
dm1fcGFnZV90IG0sDQorc3RhdGljIHZvaWQgcG1hcF9yZW1vdmVfcGFnZSBf
X1AoKHN0cnVjdCBwbWFwICpwbWFwLCB2bV9vZmZzZXRfdCB2YSkpOw0KK3N0
YXRpYyBpbnQgcG1hcF9yZW1vdmVfZW50cnkgX19QKChzdHJ1Y3QgcG1hcCAq
cG1hcCwgdm1fcGFnZV90IG0sDQogCQkJCQl2bV9vZmZzZXRfdCB2YSkpOw0K
IHN0YXRpYyBib29sZWFuX3QgcG1hcF90ZXN0Yml0IF9fUCgodm1fcGFnZV90
IG0sIGludCBiaXQpKTsNCiBzdGF0aWMgdm9pZCBwbWFwX2luc2VydF9lbnRy
eSBfX1AoKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwNCiAJCXZtX3Bh
Z2VfdCBtcHRlLCB2bV9wYWdlX3QgbSkpOw0KIA0KIHN0YXRpYyB2bV9wYWdl
X3QgcG1hcF9hbGxvY3B0ZSBfX1AoKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRf
dCB2YSkpOw0KKw0KK3N0YXRpYyBpbnQgcG1hcF9yZWxlYXNlX2ZyZWVfcGFn
ZSBfX1AoKHBtYXBfdCBwbWFwLCB2bV9wYWdlX3QgcCkpOw0KIHN0YXRpYyB2
bV9wYWdlX3QgX3BtYXBfYWxsb2NwdGUgX19QKChwbWFwX3QgcG1hcCwgdW5z
aWduZWQgcHRlcGluZGV4KSk7DQorc3RhdGljIHVuc2lnbmVkICogcG1hcF9w
dGVfcXVpY2sgX19QKChwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEpKTsN
CiBzdGF0aWMgdm1fcGFnZV90IHBtYXBfcGFnZV9sb29rdXAgX19QKCh2bV9v
YmplY3RfdCBvYmplY3QsIHZtX3BpbmRleF90IHBpbmRleCkpOw0KIHN0YXRp
YyBpbnQgcG1hcF91bnVzZV9wdCBfX1AoKHBtYXBfdCwgdm1fb2Zmc2V0X3Qs
IHZtX3BhZ2VfdCkpOw0KIHN0YXRpYyB2bV9vZmZzZXRfdCBwbWFwX2ttZW1f
Y2hvb3NlKHZtX29mZnNldF90IGFkZHIpOw0KIA0KLXN0YXRpYyBpbnQJcG1h
cF9pc19jdXJyZW50KHBtYXBfdCk7DQorc3RhdGljIHVuc2lnbmVkIHBkaXI0
bWI7DQogDQotI2lmZGVmIFBBRQ0KLXN0YXRpYyBwZHB0X2VudHJ5X3QgKnBt
YXBfYWxsb2NfcGRwdCh2b2lkKTsNCi1zdGF0aWMgdm9pZAlwbWFwX2ZyZWVf
cGRwdChwZHB0X2VudHJ5X3QgKik7DQotI2VuZGlmDQorLyoNCisgKglSb3V0
aW5lOglwbWFwX3B0ZQ0KKyAqCUZ1bmN0aW9uOg0KKyAqCQlFeHRyYWN0IHRo
ZSBwYWdlIHRhYmxlIGVudHJ5IGFzc29jaWF0ZWQNCisgKgkJd2l0aCB0aGUg
Z2l2ZW4gbWFwL3ZpcnR1YWxfYWRkcmVzcyBwYWlyLg0KKyAqLw0KKw0KK1BN
QVBfSU5MSU5FIHVuc2lnbmVkICoNCitwbWFwX3B0ZShwbWFwLCB2YSkNCisJ
cmVnaXN0ZXIgcG1hcF90IHBtYXA7DQorCXZtX29mZnNldF90IHZhOw0KK3sN
CisJdW5zaWduZWQgKnBkZWFkZHI7DQorDQorCWlmIChwbWFwKSB7DQorCQlw
ZGVhZGRyID0gKHVuc2lnbmVkICopIHBtYXBfcGRlKHBtYXAsIHZhKTsNCisJ
CWlmICgqcGRlYWRkciAmIFBHX1BTKQ0KKwkJCXJldHVybiBwZGVhZGRyOw0K
KwkJaWYgKCpwZGVhZGRyKSB7DQorCQkJcmV0dXJuIGdldF9wdGJhc2UocG1h
cCkgKyBpMzg2X2J0b3AodmEpOw0KKwkJfQ0KKwl9DQorCXJldHVybiAoMCk7
DQorfQ0KIA0KIC8qDQogICogTW92ZSB0aGUga2VybmVsIHZpcnR1YWwgZnJl
ZSBwb2ludGVyIHRvIHRoZSBuZXh0DQpAQCAtMjk3LDcgKzI3OCw5IEBADQog
ICoJKHBoeXNpY2FsKSBhZGRyZXNzIHN0YXJ0aW5nIHJlbGF0aXZlIHRvIDBd
DQogICovDQogdm9pZA0KLXBtYXBfYm9vdHN0cmFwKHZtX3BhZGRyX3QgZmly
c3RhZGRyLCB2bV9wYWRkcl90IGxvYWRhZGRyKQ0KK3BtYXBfYm9vdHN0cmFw
KGZpcnN0YWRkciwgbG9hZGFkZHIpDQorCXZtX29mZnNldF90IGZpcnN0YWRk
cjsNCisJdm1fb2Zmc2V0X3QgbG9hZGFkZHI7DQogew0KIAl2bV9vZmZzZXRf
dCB2YTsNCiAJcHRfZW50cnlfdCAqcHRlOw0KQEAgLTMwOSw3ICsyOTIsNyBA
QA0KIAlhdmFpbF9zdGFydCA9IGZpcnN0YWRkcjsNCiANCiAJLyoNCi0JICog
VGhlIGNhbGN1bGF0aW9uIG9mIHZpcnR1YWxfYXZhaWwgaXMgd3JvbmcuIEl0
J3MgTktQVCpQQUdFX1NJWkUgdG9vDQorCSAqIFhYWCBUaGUgY2FsY3VsYXRp
b24gb2YgdmlydHVhbF9hdmFpbCBpcyB3cm9uZy4gSXQncyBOS1BUKlBBR0Vf
U0laRSB0b28NCiAJICogbGFyZ2UuIEl0IHNob3VsZCBpbnN0ZWFkIGJlIGNv
cnJlY3RseSBjYWxjdWxhdGVkIGluIGxvY29yZS5zIGFuZA0KIAkgKiBub3Qg
YmFzZWQgb24gJ2ZpcnN0JyAod2hpY2ggaXMgYSBwaHlzaWNhbCBhZGRyZXNz
LCBub3QgYSB2aXJ0dWFsDQogCSAqIGFkZHJlc3MsIGZvciB0aGUgc3RhcnQg
b2YgdW51c2VkIHBoeXNpY2FsIG1lbW9yeSkuIFRoZSBrZXJuZWwNCkBAIC0z
MzMsMTEgKzMxNiw5IEBADQogCSAqLw0KIAlrZXJuZWxfcG1hcCA9ICZrZXJu
ZWxfcG1hcF9zdG9yZTsNCiANCi0Ja2VybmVsX3BtYXAtPnBtX3BkaXIgPSAo
cGRfZW50cnlfdCAqKSAoS0VSTkJBU0UgKyBJZGxlUFREKTsNCisJa2VybmVs
X3BtYXAtPnBtX3BkaXIgPSAocGRfZW50cnlfdCAqKSAoS0VSTkJBU0UgKyAo
dV9pbnQpSWRsZVBURCk7DQorCWtlcm5lbF9wbWFwLT5wbV9jb3VudCA9IDE7
DQogCWtlcm5lbF9wbWFwLT5wbV9hY3RpdmUgPSAtMTsJLyogZG9uJ3QgYWxs
b3cgZGVhY3RpdmF0aW9uICovDQotI2lmZGVmIFBBRQ0KLQlrZXJuZWxfcG1h
cC0+cG1fcGRwdCA9IElkbGVQRFBUOw0KLSNlbmRpZg0KIAlUQUlMUV9JTklU
KCZrZXJuZWxfcG1hcC0+cG1fcHZsaXN0KTsNCiAJbmtwdCA9IE5LUFQ7DQog
DQpAQCAtMzQ5LDIyICszMzAsMTMgQEANCiAJdiA9IChjKXZhOyB2YSArPSAo
KG4pKlBBR0VfU0laRSk7IHAgPSBwdGU7IHB0ZSArPSAobik7DQogDQogCXZh
ID0gdmlydHVhbF9hdmFpbDsNCi0JcHRlID0gdnRvcHRlKHZhKTsNCisJcHRl
ID0gKHB0X2VudHJ5X3QgKikgcG1hcF9wdGUoa2VybmVsX3BtYXAsIHZhKTsN
CiANCi0jaWZuZGVmIFNNUA0KIAkvKg0KLQkgKiBDTUFQMS9DTUFQMi9DTUFQ
MyBhcmUgdXNlZCBmb3IgemVyb2luZyBhbmQgY29weWluZyBwYWdlcy4NCisJ
ICogQ01BUDEvQ01BUDIgYXJlIHVzZWQgZm9yIHplcm9pbmcgYW5kIGNvcHlp
bmcgcGFnZXMuDQogCSAqLw0KIAlTWVNNQVAoY2FkZHJfdCwgQ01BUDEsIENB
RERSMSwgMSkNCiAJU1lTTUFQKGNhZGRyX3QsIENNQVAyLCBDQUREUjIsIDEp
DQotCVNZU01BUChjYWRkcl90LCBDTUFQMywgQ0FERFIzLCAxKQ0KLQkqQ01B
UDEgPSAqQ01BUDIgPSAqQ01BUDMgPSAwOw0KLQ0KLQkvKg0KLQkgKiBwdGVt
YXAgaXMgdXNlZCBmb3IgcG1hcF9wdGUNCi0JICovDQotCVNZU01BUChwZF9l
bnRyeV90ICosIFBNQVAxLCBQQUREUjEsIDEpOw0KLSNlbmRpZg0KIA0KIAkv
Kg0KIAkgKiBDcmFzaGR1bXAgbWFwcy4NCkBAIC0zODQsMzggKzM1Niw0NCBA
QA0KIAlTWVNNQVAoc3RydWN0IG1zZ2J1ZiAqLCBtc2didWZtYXAsIG1zZ2J1
ZnAsDQogCSAgICAgICBhdG9wKHJvdW5kX3BhZ2UoTVNHQlVGX1NJWkUpKSkN
CiANCisjaWYgIWRlZmluZWQoU01QKQ0KKwkvKg0KKwkgKiBwdGVtYXAgaXMg
dXNlZCBmb3IgcG1hcF9wdGVfcXVpY2sNCisJICovDQorCVNZU01BUCh1bnNp
Z25lZCAqLCBQTUFQMSwgUEFERFIxLCAxKTsNCisjZW5kaWYNCisNCiAJdmly
dHVhbF9hdmFpbCA9IHZhOw0KIA0KKwkqKGludCAqKSBDTUFQMSA9ICooaW50
ICopIENNQVAyID0gMDsNCiAJZm9yIChpID0gMDsgaSA8IE5LUFQ7IGkrKykN
CiAJCVBURFtpXSA9IDA7DQogDQotCS8qDQotCSAqIEluaXRpYWxpemUgdGhl
IGdsb2JhbCBwYWdlIGZsYWcNCi0JICovDQogCXBnZWZsYWcgPSAwOw0KICNp
ZiAhZGVmaW5lZChTTVApCQkJLyogWFhYIC0gc2VlIGFsc28gbXBfbWFjaGRl
cC5jICovDQotCWlmIChjcHVfZmVhdHVyZSAmIENQVUlEX1BHRSkNCi0gCQlw
Z2VmbGFnID0gUEdfRzsNCisJaWYgKGNwdV9mZWF0dXJlICYgQ1BVSURfUEdF
KSB7DQorCQlwZ2VmbGFnID0gUEdfRzsNCisJfQ0KICNlbmRpZg0KLQ0KLQkv
Kg0KLQkgKiBJbml0aWFsaXplIHRoZSA0TUIgcGFnZSBzaXplIGZsYWcNCi0J
ICovDQorCQ0KKy8qDQorICogSW5pdGlhbGl6ZSB0aGUgNE1CIHBhZ2Ugc2l6
ZSBmbGFnDQorICovDQogCXBzZWZsYWcgPSAwOw0KLSNpZm5kZWYgRElTQUJM
RV9QU0UNCi0JaWYgKGNwdV9mZWF0dXJlICYgQ1BVSURfUFNFKQ0KLQkJcHNl
ZmxhZyA9IFBHX1BTOw0KLSNlbmRpZg0KLQkvKg0KLQkgKiBUaGUgNE1CIHBh
Z2UgdmVyc2lvbiBvZiB0aGUgaW5pdGlhbA0KLQkgKiBrZXJuZWwgcGFnZSBt
YXBwaW5nLg0KLQkgKi8NCi0JaWYgKHBzZWZsYWcpIHsNCi0JCXBkX2VudHJ5
X3QgcHRkaXRtcDsNCisvKg0KKyAqIFRoZSA0TUIgcGFnZSB2ZXJzaW9uIG9m
IHRoZSBpbml0aWFsDQorICoga2VybmVsIHBhZ2UgbWFwcGluZy4NCisgKi8N
CisJcGRpcjRtYiA9IDA7DQorDQorI2lmICFkZWZpbmVkKERJU0FCTEVfUFNF
KQ0KKwlpZiAoY3B1X2ZlYXR1cmUgJiBDUFVJRF9QU0UpIHsNCisJCXVuc2ln
bmVkIHB0ZGl0bXA7DQogCQkvKg0KIAkJICogTm90ZSB0aGF0IHdlIGhhdmUg
ZW5hYmxlZCBQU0UgbW9kZQ0KIAkJICovDQotCQlwdGRpdG1wID0gKihQVG1h
cCArIGkzODZfYnRvcChLRVJOQkFTRSkpOw0KKwkJcHNlZmxhZyA9IFBHX1BT
Ow0KKwkJcHRkaXRtcCA9ICooKHVuc2lnbmVkICopUFRtYXAgKyBpMzg2X2J0
b3AoS0VSTkJBU0UpKTsNCiAJCXB0ZGl0bXAgJj0gfihOQlBEUiAtIDEpOw0K
IAkJcHRkaXRtcCB8PSBQR19WIHwgUEdfUlcgfCBQR19QUyB8IFBHX1UgfCBw
Z2VmbGFnOw0KIAkJcGRpcjRtYiA9IHB0ZGl0bXA7DQpAQCAtNDM1LDE4ICs0
MTMsMjAgQEANCiAJCSAqIEZvciBTTVAsIHdlIHN0aWxsIG5lZWQgNEsgcGFn
ZXMgdG8gYm9vdHN0cmFwIEFQcywNCiAJCSAqIFBTRSB3aWxsIGJlIGVuYWJs
ZWQgYXMgc29vbiBhcyBhbGwgQVBzIGFyZSB1cC4NCiAJCSAqLw0KLQkJa2Vy
bmVsX3BtYXAtPnBtX3BkaXJbS1BUREldID0gUFREW0tQVERJXSA9IHBkaXI0
bWI7DQorCQlQVERbS1BUREldID0gKHBkX2VudHJ5X3QpIHB0ZGl0bXA7DQor
CQlrZXJuZWxfcG1hcC0+cG1fcGRpcltLUFRESV0gPSAocGRfZW50cnlfdCkg
cHRkaXRtcDsNCiAJCWludmx0bGIoKTsNCiAjZW5kaWYNCiAJfQ0KKyNlbmRp
Zg0KIA0KICNpZmRlZiBTTVANCiAJaWYgKGNwdV9hcGljX2FkZHJlc3MgPT0g
MCkNCiAJCXBhbmljKCJwbWFwX2Jvb3RzdHJhcDogbm8gbG9jYWwgYXBpYyEi
KTsNCiANCiAJLyogbG9jYWwgYXBpYyBpcyBtYXBwZWQgb24gbGFzdCBwYWdl
ICovDQotCVNNUHB0W05QVEVQRyAtIDFdID0gUEdfViB8IFBHX1JXIHwgUEdf
TiB8IHBnZWZsYWcgfA0KLQkgICAgKGNwdV9hcGljX2FkZHJlc3MgJiBQR19G
UkFNRSk7DQorCVNNUHB0W05QVEVQRyAtIDFdID0gKHB0X2VudHJ5X3QpKFBH
X1YgfCBQR19SVyB8IFBHX04gfCBwZ2VmbGFnIHwNCisJICAgIChjcHVfYXBp
Y19hZGRyZXNzICYgUEdfRlJBTUUpKTsNCiANCiAJLyogQlNQIGRvZXMgdGhp
cyBpdHNlbGYsIEFQJ3MgZ2V0IGl0IHByZS1zZXQgKi8NCiAJZ2QgPSAmU01Q
X3BydnNwYWNlWzBdLmdsb2JhbGRhdGE7DQpAQCAtNDU3LDcgKzQzNyw3IEBA
DQogCWdkLT5nZF9wcnZfQ0FERFIxID0gU01QX3BydnNwYWNlWzBdLkNQQUdF
MTsNCiAJZ2QtPmdkX3Bydl9DQUREUjIgPSBTTVBfcHJ2c3BhY2VbMF0uQ1BB
R0UyOw0KIAlnZC0+Z2RfcHJ2X0NBRERSMyA9IFNNUF9wcnZzcGFjZVswXS5D
UEFHRTM7DQotCWdkLT5nZF9wcnZfUEFERFIxID0gKHB0X2VudHJ5X3QgKilT
TVBfcHJ2c3BhY2VbMF0uUFBBR0UxOw0KKwlnZC0+Z2RfcHJ2X1BBRERSMSA9
ICh1bnNpZ25lZCAqKVNNUF9wcnZzcGFjZVswXS5QUEFHRTE7DQogI2VuZGlm
DQogDQogCWludmx0bGIoKTsNCkBAIC00NzMsNyArNDUzLDggQEANCiAJaWYg
KHBzZWZsYWcgJiYgKGNwdV9mZWF0dXJlICYgQ1BVSURfUFNFKSkgew0KIAkJ
bG9hZF9jcjQocmNyNCgpIHwgQ1I0X1BTRSk7DQogCQlpZiAocGRpcjRtYiAm
JiBjcHVpZCA9PSAwKSB7CS8qIG9ubHkgb24gQlNQICovDQotCQkJa2VybmVs
X3BtYXAtPnBtX3BkaXJbS1BUREldID0gUFREW0tQVERJXSA9IHBkaXI0bWI7
DQorCQkJa2VybmVsX3BtYXAtPnBtX3BkaXJbS1BUREldID0NCisJCQkgICAg
UFREW0tQVERJXSA9IChwZF9lbnRyeV90KXBkaXI0bWI7DQogCQkJY3B1X2lu
dmx0bGIoKTsNCiAJCX0NCiAJfQ0KQEAgLTQ4OCw3ICs0NjksOCBAQA0KICAq
CXdheSwgZGlzY29udGlndW91cyBwaHlzaWNhbCBtZW1vcnkuDQogICovDQog
dm9pZA0KLXBtYXBfaW5pdCh2bV9wYWRkcl90IHBoeXNfc3RhcnQsIHZtX3Bh
ZGRyX3QgcGh5c19lbmQpDQorcG1hcF9pbml0KHBoeXNfc3RhcnQsIHBoeXNf
ZW5kKQ0KKwl2bV9vZmZzZXRfdCBwaHlzX3N0YXJ0LCBwaHlzX2VuZDsNCiB7
DQogCWludCBpOw0KIAlpbnQgaW5pdGlhbF9wdnM7DQpAQCAtNTUyLDE3ICs1
MzQsMjYgQEANCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLw0KIA0KICNpZiBkZWZpbmVkKFBNQVBfRElB
R05PU1RJQykNCisNCiAvKg0KICAqIFRoaXMgY29kZSBjaGVja3MgZm9yIG5v
bi13cml0ZWFibGUvbW9kaWZpZWQgcGFnZXMuDQogICogVGhpcyBzaG91bGQg
YmUgYW4gaW52YWxpZCBjb25kaXRpb24uDQogICovDQogc3RhdGljIGludA0K
LXBtYXBfbndfbW9kaWZpZWQocHRfZW50cnlfdCBwdGUpDQorcG1hcF9ud19t
b2RpZmllZChwdF9lbnRyeV90IHB0ZWEpDQogew0KLQlyZXR1cm4gKChwdGUg
JiAoUEdfTXxQR19SVykpID09IFBHX00pOw0KKwlpbnQgcHRlOw0KKw0KKwlw
dGUgPSAoaW50KSBwdGVhOw0KKw0KKwlpZiAoKHB0ZSAmIChQR19NfFBHX1JX
KSkgPT0gUEdfTSkNCisJCXJldHVybiAxOw0KKwllbHNlDQorCQlyZXR1cm4g
MDsNCiB9DQogI2VuZGlmDQogDQorDQogLyoNCiAgKiB0aGlzIHJvdXRpbmUg
ZGVmaW5lcyB0aGUgcmVnaW9uKHMpIG9mIG1lbW9yeSB0aGF0IHNob3VsZA0K
ICAqIG5vdCBiZSB0ZXN0ZWQgZm9yIHRoZSBtb2RpZmllZCBiaXQuDQpAQCAt
NTcwLDcgKzU2MSwxMCBAQA0KIHN0YXRpYyBQTUFQX0lOTElORSBpbnQNCiBw
bWFwX3RyYWNrX21vZGlmaWVkKHZtX29mZnNldF90IHZhKQ0KIHsNCi0JcmV0
dXJuICh2YSA8IGNsZWFuX3N2YSkgfHwgKHZhID49IGNsZWFuX2V2YSk7DQor
CWlmICgodmEgPCBjbGVhbl9zdmEpIHx8ICh2YSA+PSBjbGVhbl9ldmEpKSAN
CisJCXJldHVybiAxOw0KKwllbHNlDQorCQlyZXR1cm4gMDsNCiB9DQogDQog
c3RhdGljIFBNQVBfSU5MSU5FIHZvaWQNCkBAIC02MTQsNzggKzYwOCw2NSBA
QA0KICNlbmRpZg0KIH0NCiANCi0jaWZkZWYgUEFFDQotc3RhdGljIF9faW5s
aW5lIHB0X2VudHJ5X3QNCi1wdGVfbG9hZChwdF9lbnRyeV90ICpwdGUpDQot
ew0KLQlwdF9lbnRyeV90IHJ2ID0gMDsNCi0JX19hc20gX192b2xhdGlsZShN
UExPQ0tFRCAiY21weGNoZzhiICUxIg0KLQkgICAgOiAiK0EiIChydikgOiAi
bSIgKCpwdGUpLCAiYiIgKDApLCAiYyIgKDApKTsNCi0JcmV0dXJuIHJ2Ow0K
LX0NCi0NCi1zdGF0aWMgX19pbmxpbmUgcHRfZW50cnlfdA0KLXB0ZV9zdG9y
ZShwdF9lbnRyeV90ICpwdGUsIHB0X2VudHJ5X3QgdikNCi17DQotCXB0X2Vu
dHJ5X3QgcnYgPSAqcHRlOw0KLQlfX2FzbSBfX3ZvbGF0aWxlKCIxOjsiIE1Q
TE9DS0VEICJjbXB4Y2hnOGIgJTE7IGpueiAxYiINCi0JICAgIDogIitBIiAo
cnYpDQotCSAgICA6ICJtIiAoKnB0ZSksICJiIiAoKHVfaW50MzJfdCl2KSwg
ImMiICgodV9pbnQzMl90KSh2ID4+IDMyKSkpOw0KLQlyZXR1cm4gcnY7DQot
fQ0KLSNlbHNlDQotc3RhdGljIF9faW5saW5lIHB0X2VudHJ5X3QNCi1wdGVf
bG9hZChwdF9lbnRyeV90ICpwdGUpDQorc3RhdGljIHVuc2lnbmVkICoNCitn
ZXRfcHRiYXNlKHBtYXApDQorCXBtYXBfdCBwbWFwOw0KIHsNCi0JcmV0dXJu
ICpwdGU7DQotfQ0KKwl1bnNpZ25lZCBmcmFtZSA9ICh1bnNpZ25lZCkgcG1h
cC0+cG1fcGRpcltQVERQVERJXSAmIFBHX0ZSQU1FOw0KIA0KLXN0YXRpYyBf
X2lubGluZSBwdF9lbnRyeV90DQotcHRlX3N0b3JlKHB0X2VudHJ5X3QgKnB0
ZSwgcHRfZW50cnlfdCB2KQ0KLXsNCi0JX19hc20gX192b2xhdGlsZSgieGNo
Z2wgJTEsJTAiIDogIityIiAodikgOiAibSIgKCpwdGUpKTsNCi0JcmV0dXJu
IHY7DQotfQ0KKwkvKiBhcmUgd2UgY3VycmVudCBhZGRyZXNzIHNwYWNlIG9y
IGtlcm5lbD8gKi8NCisJaWYgKHBtYXAgPT0ga2VybmVsX3BtYXAgfHwgZnJh
bWUgPT0gKCgodW5zaWduZWQpIFBURHBkZSkgJiBQR19GUkFNRSkpIHsNCisJ
CXJldHVybiAodW5zaWduZWQgKikgUFRtYXA7DQorCX0NCisJLyogb3RoZXJ3
aXNlLCB3ZSBhcmUgYWx0ZXJuYXRlIGFkZHJlc3Mgc3BhY2UgKi8NCisJaWYg
KGZyYW1lICE9ICgoKHVuc2lnbmVkKSBBUFREcGRlKSAmIFBHX0ZSQU1FKSkg
ew0KKwkJQVBURHBkZSA9IChwZF9lbnRyeV90KSAoZnJhbWUgfCBQR19SVyB8
IFBHX1YpOw0KKyNpZiBkZWZpbmVkKFNNUCkNCisJCS8qIFRoZSBwYWdlIGRp
cmVjdG9yeSBpcyBub3Qgc2hhcmVkIGJldHdlZW4gQ1BVcyAqLw0KKwkJY3B1
X2ludmx0bGIoKTsNCisjZWxzZQ0KKwkJaW52bHRsYigpOw0KICNlbmRpZg0K
LQ0KLS8qDQotICogQXJlIHdlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSBvciBr
ZXJuZWw/DQotICovDQotc3RhdGljIF9faW5saW5lIGludA0KLXBtYXBfaXNf
Y3VycmVudChwbWFwX3QgcG1hcCkNCi17DQotCXJldHVybiAocG1hcCA9PSBr
ZXJuZWxfcG1hcCB8fA0KLQkgICAgKHBtYXAtPnBtX3BkaXJbUFREUFRESV0g
JiBQR19GUkFNRSkgPT0gKFBURHBkZVswXSAmIFBHX0ZSQU1FKSk7DQorCX0N
CisJcmV0dXJuICh1bnNpZ25lZCAqKSBBUFRtYXA7DQogfQ0KIA0KIC8qDQot
ICoJUm91dGluZToJcG1hcF9wdGUNCi0gKglGdW5jdGlvbjoNCi0gKgkJRXh0
cmFjdCB0aGUgcGFnZSB0YWJsZSBlbnRyeSBhc3NvY2lhdGVkDQotICoJCXdp
dGggdGhlIGdpdmVuIG1hcC92aXJ0dWFsX2FkZHJlc3MgcGFpci4NCisgKiBT
dXBlciBmYXN0IHBtYXBfcHRlIHJvdXRpbmUgYmVzdCB1c2VkIHdoZW4gc2Nh
bm5pbmcNCisgKiB0aGUgcHYgbGlzdHMuICBUaGlzIGVsaW1pbmF0ZXMgbWFu
eSBjb2Fyc2UtZ3JhaW5lZA0KKyAqIGludmx0bGIgY2FsbHMuICBOb3RlIHRo
YXQgbWFueSBvZiB0aGUgcHYgbGlzdA0KKyAqIHNjYW5zIGFyZSBhY3Jvc3Mg
ZGlmZmVyZW50IHBtYXBzLiAgSXQgaXMgdmVyeSB3YXN0ZWZ1bA0KKyAqIHRv
IGRvIGFuIGVudGlyZSBpbnZsdGxiIGZvciBjaGVja2luZyBhIHNpbmdsZSBt
YXBwaW5nLg0KICAqLw0KIA0KLXB0X2VudHJ5X3QgKg0KLXBtYXBfcHRlKHBt
YXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSkNCitzdGF0aWMgdW5zaWduZWQg
KiANCitwbWFwX3B0ZV9xdWljayhwbWFwLCB2YSkNCisJcmVnaXN0ZXIgcG1h
cF90IHBtYXA7DQorCXZtX29mZnNldF90IHZhOw0KIHsNCi0JcGRfZW50cnlf
dCAqcGRlLCBuZXdwZjsNCi0NCi0JcGRlID0gcG1hcF9wZGUocG1hcCwgdmEp
Ow0KLQlpZiAoKnBkZSAmIFBHX1YpIHsNCi0JCWlmICgqcGRlICYgUEdfUFMp
DQotCQkJcmV0dXJuIChwdF9lbnRyeV90ICopcGRlOw0KLQkJaWYgKHBtYXBf
aXNfY3VycmVudChwbWFwKSkNCi0JCQlyZXR1cm4gdnRvcHRlKHZhKTsNCi0J
CW5ld3BmID0gKnBkZSAmIFBHX0ZSQU1FOw0KLQkJaWYgKCgqUE1BUDEgJiBQ
R19GUkFNRSkgIT0gbmV3cGYpIHsNCi0JCQkqUE1BUDEgPSBuZXdwZiB8IFBH
X1JXIHwgUEdfVjsNCisJdW5zaWduZWQgcGRlLCBuZXdwZjsNCisJaWYgKChw
ZGUgPSAodW5zaWduZWQpIHBtYXAtPnBtX3BkaXJbdmEgPj4gUERSU0hJRlRd
KSAhPSAwKSB7DQorCQl1bnNpZ25lZCBmcmFtZSA9ICh1bnNpZ25lZCkgcG1h
cC0+cG1fcGRpcltQVERQVERJXSAmIFBHX0ZSQU1FOw0KKwkJdW5zaWduZWQg
aW5kZXggPSBpMzg2X2J0b3AodmEpOw0KKwkJLyogYXJlIHdlIGN1cnJlbnQg
YWRkcmVzcyBzcGFjZSBvciBrZXJuZWw/ICovDQorCQlpZiAoKHBtYXAgPT0g
a2VybmVsX3BtYXApIHx8DQorCQkJKGZyYW1lID09ICgoKHVuc2lnbmVkKSBQ
VERwZGUpICYgUEdfRlJBTUUpKSkgew0KKwkJCXJldHVybiAodW5zaWduZWQg
KikgUFRtYXAgKyBpbmRleDsNCisJCX0NCisJCW5ld3BmID0gcGRlICYgUEdf
RlJBTUU7DQogI2lmZGVmIFNNUA0KLQkJCWNwdV9pbnZscGcoUEFERFIxKTsN
CisJCWlmICggKCgqICh1bnNpZ25lZCAqKSBwcnZfUE1BUDEpICYgUEdfRlJB
TUUpICE9IG5ld3BmKSB7DQorCQkJKiAodW5zaWduZWQgKikgcHJ2X1BNQVAx
ID0gbmV3cGYgfCBQR19SVyB8IFBHX1Y7DQorCQkJY3B1X2ludmxwZyhwcnZf
UEFERFIxKTsNCisJCX0NCisJCXJldHVybiBwcnZfUEFERFIxICsgKCh1bnNp
Z25lZCkgaW5kZXggJiAoTlBURVBHIC0gMSkpOw0KICNlbHNlDQorCQlpZiAo
ICgoKiAodW5zaWduZWQgKikgUE1BUDEpICYgUEdfRlJBTUUpICE9IG5ld3Bm
KSB7DQorCQkJKiAodW5zaWduZWQgKikgUE1BUDEgPSBuZXdwZiB8IFBHX1JX
IHwgUEdfVjsNCiAJCQlpbnZsdGxiXzFwZygodm1fb2Zmc2V0X3QpIFBBRERS
MSk7DQotI2VuZGlmDQogCQl9DQotCQlyZXR1cm4gUEFERFIxICsgKGkzODZf
YnRvcCh2YSkgJiAoTlBURVBHIC0gMSkpOw0KKwkJcmV0dXJuIFBBRERSMSAr
ICgodW5zaWduZWQpIGluZGV4ICYgKE5QVEVQRyAtIDEpKTsNCisjZW5kaWYN
CiAJfQ0KIAlyZXR1cm4gKDApOw0KIH0NCkBAIC02OTYsMjAgKzY3NywyNyBA
QA0KICAqCQlFeHRyYWN0IHRoZSBwaHlzaWNhbCBwYWdlIGFkZHJlc3MgYXNz
b2NpYXRlZA0KICAqCQl3aXRoIHRoZSBnaXZlbiBtYXAvdmlydHVhbF9hZGRy
ZXNzIHBhaXIuDQogICovDQotdm1fcGFkZHJfdCANCi1wbWFwX2V4dHJhY3Qo
cG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhKQ0KK3ZtX29mZnNldF90IA0K
K3BtYXBfZXh0cmFjdChwbWFwLCB2YSkNCisJcmVnaXN0ZXIgcG1hcF90IHBt
YXA7DQorCXZtX29mZnNldF90IHZhOw0KIHsNCi0JcHRfZW50cnlfdCAqcHRl
Ow0KLQ0KLQlpZiAocG1hcCA9PSAwKQ0KLQkJcmV0dXJuIDA7DQotCXB0ZSA9
IHBtYXBfcHRlKHBtYXAsIHZhKTsNCi0JaWYgKHB0ZSkgew0KLQkJaWYgKCpw
dGUgJiBQR19QUykNCi0JCQlyZXR1cm4gKCpwdGUgJiB+UERSTUFTSykgfCAo
dmEgJiBQRFJNQVNLKTsNCi0JCXJldHVybiAoKnB0ZSAmIFBHX0ZSQU1FKSB8
ICh2YSAmIFBBR0VfTUFTSyk7DQorCXZtX29mZnNldF90IHJ0dmFsOw0KKwl2
bV9vZmZzZXRfdCBwZGlyaW5kZXg7DQorCXBkaXJpbmRleCA9IHZhID4+IFBE
UlNISUZUOw0KKwlpZiAocG1hcCAmJiAocnR2YWwgPSAodW5zaWduZWQpIHBt
YXAtPnBtX3BkaXJbcGRpcmluZGV4XSkpIHsNCisJCXVuc2lnbmVkICpwdGU7
DQorCQlpZiAoKHJ0dmFsICYgUEdfUFMpICE9IDApIHsNCisJCQlydHZhbCAm
PSB+KE5CUERSIC0gMSk7DQorCQkJcnR2YWwgfD0gdmEgJiAoTkJQRFIgLSAx
KTsNCisJCQlyZXR1cm4gcnR2YWw7DQorCQl9DQorCQlwdGUgPSBnZXRfcHRi
YXNlKHBtYXApICsgaTM4Nl9idG9wKHZhKTsNCisJCXJ0dmFsID0gKCgqcHRl
ICYgUEdfRlJBTUUpIHwgKHZhICYgUEFHRV9NQVNLKSk7DQorCQlyZXR1cm4g
cnR2YWw7DQogCX0NCiAJcmV0dXJuIDA7DQorDQogfQ0KIA0KIC8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN
CkBAIC03MjIsMTIgKzcxMCwxNyBAQA0KICAqIHNob3VsZCBkbyBhIGludmx0
bGIgYWZ0ZXIgZG9pbmcgdGhlIHBtYXBfa2VudGVyLi4uDQogICovDQogUE1B
UF9JTkxJTkUgdm9pZCANCi1wbWFwX2tlbnRlcih2bV9vZmZzZXRfdCB2YSwg
dm1fcGFkZHJfdCBwYSkNCitwbWFwX2tlbnRlcih2YSwgcGEpDQorCXZtX29m
ZnNldF90IHZhOw0KKwlyZWdpc3RlciB2bV9vZmZzZXRfdCBwYTsNCiB7DQot
CXB0X2VudHJ5X3QgKnB0ZTsNCisJcmVnaXN0ZXIgdW5zaWduZWQgKnB0ZTsN
CisJdW5zaWduZWQgbnB0ZSwgb3B0ZTsNCiANCi0JcHRlID0gdnRvcHRlKHZh
KTsNCi0JKnB0ZSA9IHBhIHwgUEdfUlcgfCBQR19WIHwgcGdlZmxhZzsNCisJ
bnB0ZSA9IHBhIHwgUEdfUlcgfCBQR19WIHwgcGdlZmxhZzsNCisJcHRlID0g
KHVuc2lnbmVkICopdnRvcHRlKHZhKTsNCisJb3B0ZSA9ICpwdGU7DQorCSpw
dGUgPSBucHRlOw0KIAlpbnZsdGxiXzFwZyh2YSk7DQogfQ0KIA0KQEAgLTcz
NSwxMSArNzI4LDEyIEBADQogICogcmVtb3ZlIGEgcGFnZSBmcm9tIHRoZSBr
ZXJuZWwgcGFnZXRhYmxlcw0KICAqLw0KIFBNQVBfSU5MSU5FIHZvaWQNCi1w
bWFwX2tyZW1vdmUodm1fb2Zmc2V0X3QgdmEpDQorcG1hcF9rcmVtb3ZlKHZh
KQ0KKwl2bV9vZmZzZXRfdCB2YTsNCiB7DQotCXB0X2VudHJ5X3QgKnB0ZTsN
CisJcmVnaXN0ZXIgdW5zaWduZWQgKnB0ZTsNCiANCi0JcHRlID0gdnRvcHRl
KHZhKTsNCisJcHRlID0gKHVuc2lnbmVkICopdnRvcHRlKHZhKTsNCiAJKnB0
ZSA9IDA7DQogCWludmx0bGJfMXBnKHZhKTsNCiB9DQpAQCAtNzUyLDcgKzc0
NiwxMSBAQA0KICAqCXNwZWNpZmllZCBtZW1vcnkuDQogICovDQogdm1fb2Zm
c2V0X3QNCi1wbWFwX21hcCh2bV9vZmZzZXRfdCB2aXJ0LCB2bV9wYWRkcl90
IHN0YXJ0LCB2bV9wYWRkcl90IGVuZCwgaW50IHByb3QpDQorcG1hcF9tYXAo
dmlydCwgc3RhcnQsIGVuZCwgcHJvdCkNCisJdm1fb2Zmc2V0X3QgdmlydDsN
CisJdm1fb2Zmc2V0X3Qgc3RhcnQ7DQorCXZtX29mZnNldF90IGVuZDsNCisJ
aW50IHByb3Q7DQogew0KIAl3aGlsZSAoc3RhcnQgPCBlbmQpIHsNCiAJCXBt
YXBfa2VudGVyKHZpcnQsIHN0YXJ0KTsNCkBAIC03NzIsMTAgKzc3MCwxOSBA
QA0KICAqIG92ZXIuICBUaGUgcGFnZSAqbXVzdCogYmUgd2lyZWQuDQogICov
DQogdm9pZA0KLXBtYXBfcWVudGVyKHZtX29mZnNldF90IHZhLCB2bV9wYWdl
X3QgKm0sIGludCBjb3VudCkNCitwbWFwX3FlbnRlcih2YSwgbSwgY291bnQp
DQorCXZtX29mZnNldF90IHZhOw0KKwl2bV9wYWdlX3QgKm07DQorCWludCBj
b3VudDsNCiB7DQotCXdoaWxlIChjb3VudC0tID4gMCkgew0KLQkJcHRfZW50
cnlfdCAqcHRlID0gdnRvcHRlKHZhKTsNCisJdm1fb2Zmc2V0X3QgZW5kX3Zh
Ow0KKw0KKwllbmRfdmEgPSB2YSArIGNvdW50ICogUEFHRV9TSVpFOw0KKwkJ
DQorCXdoaWxlICh2YSA8IGVuZF92YSkgew0KKwkJdW5zaWduZWQgKnB0ZTsN
CisNCisJCXB0ZSA9ICh1bnNpZ25lZCAqKXZ0b3B0ZSh2YSk7DQogCQkqcHRl
ID0gVk1fUEFHRV9UT19QSFlTKCptKSB8IFBHX1JXIHwgUEdfViB8IHBnZWZs
YWc7DQogI2lmZGVmIFNNUA0KIAkJY3B1X2ludmxwZygodm9pZCAqKXZhKTsN
CkBAIC03OTUsMTAgKzgwMiwxOCBAQA0KICAqIGtlcm5lbCAtLSBpdCBpcyBt
ZWFudCBvbmx5IGZvciB0ZW1wb3JhcnkgbWFwcGluZ3MuDQogICovDQogdm9p
ZA0KLXBtYXBfcXJlbW92ZSh2bV9vZmZzZXRfdCB2YSwgaW50IGNvdW50KQ0K
K3BtYXBfcXJlbW92ZSh2YSwgY291bnQpDQorCXZtX29mZnNldF90IHZhOw0K
KwlpbnQgY291bnQ7DQogew0KLQl3aGlsZSAoY291bnQtLSA+IDApIHsNCi0J
CXB0X2VudHJ5X3QgKnB0ZSA9IHZ0b3B0ZSh2YSk7DQorCXZtX29mZnNldF90
IGVuZF92YTsNCisNCisJZW5kX3ZhID0gdmEgKyBjb3VudCpQQUdFX1NJWkU7
DQorDQorCXdoaWxlICh2YSA8IGVuZF92YSkgew0KKwkJdW5zaWduZWQgKnB0
ZTsNCisNCisJCXB0ZSA9ICh1bnNpZ25lZCAqKXZ0b3B0ZSh2YSk7DQogCQkq
cHRlID0gMDsNCiAjaWZkZWYgU01QDQogCQljcHVfaW52bHBnKCh2b2lkICop
dmEpOw0KQEAgLTgxMyw3ICs4MjgsOSBAQA0KIH0NCiANCiBzdGF0aWMgdm1f
cGFnZV90DQotcG1hcF9wYWdlX2xvb2t1cCh2bV9vYmplY3RfdCBvYmplY3Qs
IHZtX3BpbmRleF90IHBpbmRleCkNCitwbWFwX3BhZ2VfbG9va3VwKG9iamVj
dCwgcGluZGV4KQ0KKwl2bV9vYmplY3RfdCBvYmplY3Q7DQorCXZtX3BpbmRl
eF90IHBpbmRleDsNCiB7DQogCXZtX3BhZ2VfdCBtOw0KIHJldHJ5Og0KQEAg
LTgyOCwxMiArODQ1LDE0IEBADQogICogVGhpcyByb3V0aW5lIGRpcmVjdGx5
IGFmZmVjdHMgdGhlIGZvcmsgcGVyZiBmb3IgYSBwcm9jZXNzLg0KICAqLw0K
IHZvaWQNCi1wbWFwX25ld19wcm9jKHN0cnVjdCBwcm9jICpwKQ0KK3BtYXBf
bmV3X3Byb2MocCkNCisJc3RydWN0IHByb2MgKnA7DQogew0KLQlpbnQgaTsN
CisJaW50IGksIHVwZGF0ZW5lZWRlZDsNCiAJdm1fb2JqZWN0X3QgdXBvYmo7
DQotCXZtX3BhZ2VfdCBtLCBtYVtVUEFHRVNdOw0KLQl2bV9vZmZzZXRfdCB1
cDsNCisJdm1fcGFnZV90IG07DQorCXN0cnVjdCB1c2VyICp1cDsNCisJdW5z
aWduZWQgKnB0ZWssIG9sZHB0ZTsNCiANCiAJLyoNCiAJICogYWxsb2NhdGUg
b2JqZWN0IGZvciB0aGUgdXBhZ2VzDQpAQCAtODQ0LDE5ICs4NjMsMjIgQEAN
CiAJfQ0KIA0KIAkvKiBnZXQgYSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIGZv
ciB0aGUgVVBBR0VTIGZvciB0aGlzIHByb2MgKi8NCi0JaWYgKCh1cCA9ICh2
bV9vZmZzZXRfdCkgcC0+cF9hZGRyKSA9PSAwKSB7DQotCQl1cCA9IGttZW1f
YWxsb2Nfbm9mYXVsdChrZXJuZWxfbWFwLCBVUEFHRVMgKiBQQUdFX1NJWkUp
Ow0KLQkJaWYgKHVwID09IDApDQorCWlmICgodXAgPSBwLT5wX2FkZHIpID09
IE5VTEwpIHsNCisJCXVwID0gKHN0cnVjdCB1c2VyICopIGttZW1fYWxsb2Nf
bm9mYXVsdChrZXJuZWxfbWFwLA0KKwkJCQlVUEFHRVMgKiBQQUdFX1NJWkUp
Ow0KKwkJaWYgKHVwID09IE5VTEwpDQogCQkJcGFuaWMoInBtYXBfbmV3X3By
b2M6IHVfbWFwIGFsbG9jYXRpb24gZmFpbGVkIik7DQotCQlwLT5wX2FkZHIg
PSAoc3RydWN0IHVzZXIgKikgdXA7DQorCQlwLT5wX2FkZHIgPSB1cDsNCiAJ
fQ0KIA0KLQlmb3IoaSA9IDA7IGkgPCBVUEFHRVM7IGkrKykgew0KKwlwdGVr
ID0gKHVuc2lnbmVkICopIHZ0b3B0ZSgodm1fb2Zmc2V0X3QpIHVwKTsNCisN
CisJdXBkYXRlbmVlZGVkID0gMDsNCisJZm9yKGk9MDtpPFVQQUdFUztpKysp
IHsNCiAJCS8qDQogCQkgKiBHZXQgYSBrZXJuZWwgc3RhY2sgcGFnZQ0KIAkJ
ICovDQogCQltID0gdm1fcGFnZV9ncmFiKHVwb2JqLCBpLCBWTV9BTExPQ19O
T1JNQUwgfCBWTV9BTExPQ19SRVRSWSk7DQotCQltYVtpXSA9IG07DQogDQog
CQkvKg0KIAkJICogV2lyZSB0aGUgcGFnZQ0KQEAgLTg2NCwxMiArODg2LDI2
IEBADQogCQltLT53aXJlX2NvdW50Kys7DQogCQljbnQudl93aXJlX2NvdW50
Kys7DQogDQorCQlvbGRwdGUgPSAqKHB0ZWsgKyBpKTsNCisJCS8qDQorCQkg
KiBFbnRlciB0aGUgcGFnZSBpbnRvIHRoZSBrZXJuZWwgYWRkcmVzcyBzcGFj
ZS4NCisJCSAqLw0KKwkJKihwdGVrICsgaSkgPSBWTV9QQUdFX1RPX1BIWVMo
bSkgfCBQR19SVyB8IFBHX1YgfCBwZ2VmbGFnOw0KKwkJaWYgKG9sZHB0ZSkg
ew0KKwkJCWlmICgob2xkcHRlICYgUEdfRykgfHwgKGNwdV9jbGFzcyA+IENQ
VUNMQVNTXzM4NikpIHsNCisJCQkJaW52bHBnKCh2bV9vZmZzZXRfdCkgdXAg
KyBpICogUEFHRV9TSVpFKTsNCisJCQl9IGVsc2Ugew0KKwkJCQl1cGRhdGVu
ZWVkZWQgPSAxOw0KKwkJCX0NCisJCX0NCisNCiAJCXZtX3BhZ2Vfd2FrZXVw
KG0pOw0KIAkJdm1fcGFnZV9mbGFnX2NsZWFyKG0sIFBHX1pFUk8pOw0KIAkJ
dm1fcGFnZV9mbGFnX3NldChtLCBQR19NQVBQRUQgfCBQR19XUklURUFCTEUp
Ow0KIAkJbS0+dmFsaWQgPSBWTV9QQUdFX0JJVFNfQUxMOw0KIAl9DQotCXBt
YXBfcWVudGVyKHVwLCBtYSwgVVBBR0VTKTsNCisJaWYgKHVwZGF0ZW5lZWRl
ZCkNCisJCWludmx0bGIoKTsNCiB9DQogDQogLyoNCkBAIC04NzcsMjMgKzkx
MywzNSBAQA0KICAqIFRoaXMgcm91dGluZSBkaXJlY3RseSBpbXBhY3RzIHRo
ZSBleGl0IHBlcmYgb2YgYSBwcm9jZXNzLg0KICAqLw0KIHZvaWQNCi1wbWFw
X2Rpc3Bvc2VfcHJvYyhzdHJ1Y3QgcHJvYyAqcCkNCitwbWFwX2Rpc3Bvc2Vf
cHJvYyhwKQ0KKwlzdHJ1Y3QgcHJvYyAqcDsNCiB7DQogCWludCBpOw0KIAl2
bV9vYmplY3RfdCB1cG9iajsNCiAJdm1fcGFnZV90IG07DQorCXVuc2lnbmVk
ICpwdGVrLCBvbGRwdGU7DQogDQogCXVwb2JqID0gcC0+cF91cGFnZXNfb2Jq
Ow0KLQlwbWFwX3FyZW1vdmUoKHZtX29mZnNldF90KSBwLT5wX2FkZHIsIFVQ
QUdFUyk7DQogDQotCWZvcihpID0gMDsgaSA8IFVQQUdFUzsgaSsrKSB7DQor
CXB0ZWsgPSAodW5zaWduZWQgKikgdnRvcHRlKCh2bV9vZmZzZXRfdCkgcC0+
cF9hZGRyKTsNCisJZm9yKGk9MDtpPFVQQUdFUztpKyspIHsNCisNCiAJCWlm
ICgobSA9IHZtX3BhZ2VfbG9va3VwKHVwb2JqLCBpKSkgPT0gTlVMTCkNCiAJ
CQlwYW5pYygicG1hcF9kaXNwb3NlX3Byb2M6IHVwYWdlIGFscmVhZHkgbWlz
c2luZz8/PyIpOw0KIA0KIAkJdm1fcGFnZV9idXN5KG0pOw0KKw0KKwkJb2xk
cHRlID0gKihwdGVrICsgaSk7DQorCQkqKHB0ZWsgKyBpKSA9IDA7DQorCQlp
ZiAoKG9sZHB0ZSAmIFBHX0cpIHx8IChjcHVfY2xhc3MgPiBDUFVDTEFTU18z
ODYpKQ0KKwkJCWludmxwZygodm1fb2Zmc2V0X3QpIHAtPnBfYWRkciArIGkg
KiBQQUdFX1NJWkUpOw0KIAkJdm1fcGFnZV91bndpcmUobSwgMCk7DQogCQl2
bV9wYWdlX2ZyZWUobSk7DQogCX0NCisjaWYgZGVmaW5lZChJMzg2X0NQVSkN
CisJaWYgKGNwdV9jbGFzcyA8PSBDUFVDTEFTU18zODYpDQorCQlpbnZsdGxi
KCk7DQorI2VuZGlmDQogDQogCS8qDQogCSAqIElmIHRoZSBwcm9jZXNzIGdv
dCBzd2FwcGVkIG91dCBzb21lIG9mIGl0cyBVUEFHRVMgbWlnaHQgaGF2ZSBn
b3R0ZW4NCkBAIC05MTAsMjMgKzk1OCwyMyBAQA0KICAqIEFsbG93IHRoZSBV
UEFHRVMgZm9yIGEgcHJvY2VzcyB0byBiZSBwcmVqdWRpY2lhbGx5IHBhZ2Vk
IG91dC4NCiAgKi8NCiB2b2lkDQotcG1hcF9zd2Fwb3V0X3Byb2Moc3RydWN0
IHByb2MgKnApDQorcG1hcF9zd2Fwb3V0X3Byb2MocCkNCisJc3RydWN0IHBy
b2MgKnA7DQogew0KIAlpbnQgaTsNCiAJdm1fb2JqZWN0X3QgdXBvYmo7DQog
CXZtX3BhZ2VfdCBtOw0KIA0KIAl1cG9iaiA9IHAtPnBfdXBhZ2VzX29iajsN
Ci0JcG1hcF9xcmVtb3ZlKCh2bV9vZmZzZXRfdCkgcC0+cF9hZGRyLCBVUEFH
RVMpOw0KLQ0KIAkvKg0KIAkgKiBsZXQgdGhlIHVwYWdlcyBiZSBwYWdlZA0K
IAkgKi8NCi0JZm9yKGkgPSAwOyBpIDwgVVBBR0VTOyBpKyspIHsNCisJZm9y
KGk9MDtpPFVQQUdFUztpKyspIHsNCiAJCWlmICgobSA9IHZtX3BhZ2VfbG9v
a3VwKHVwb2JqLCBpKSkgPT0gTlVMTCkNCiAJCQlwYW5pYygicG1hcF9zd2Fw
b3V0X3Byb2M6IHVwYWdlIGFscmVhZHkgbWlzc2luZz8/PyIpOw0KIAkJdm1f
cGFnZV9kaXJ0eShtKTsNCiAJCXZtX3BhZ2VfdW53aXJlKG0sIDApOw0KKwkJ
cG1hcF9rcmVtb3ZlKCAodm1fb2Zmc2V0X3QpIHAtPnBfYWRkciArIFBBR0Vf
U0laRSAqIGkpOw0KIAl9DQogfQ0KIA0KQEAgLTkzNCwxNyArOTgyLDIwIEBA
DQogICogQnJpbmcgdGhlIFVQQUdFUyBmb3IgYSBzcGVjaWZpZWQgcHJvY2Vz
cyBiYWNrIGluLg0KICAqLw0KIHZvaWQNCi1wbWFwX3N3YXBpbl9wcm9jKHN0
cnVjdCBwcm9jICpwKQ0KK3BtYXBfc3dhcGluX3Byb2MocCkNCisJc3RydWN0
IHByb2MgKnA7DQogew0KLQlpbnQgaSwgcnY7DQorCWludCBpLHJ2Ow0KIAl2
bV9vYmplY3RfdCB1cG9iajsNCi0Jdm1fcGFnZV90IG0sIG1hW1VQQUdFU107
DQorCXZtX3BhZ2VfdCBtOw0KIA0KIAl1cG9iaiA9IHAtPnBfdXBhZ2VzX29i
ajsNCisJZm9yKGk9MDtpPFVQQUdFUztpKyspIHsNCiANCi0JZm9yKGkgPSAw
OyBpIDwgVVBBR0VTOyBpKyspIHsNCiAJCW0gPSB2bV9wYWdlX2dyYWIodXBv
YmosIGksIFZNX0FMTE9DX05PUk1BTCB8IFZNX0FMTE9DX1JFVFJZKTsNCi0J
CW1hW2ldID0gbTsNCisNCisJCXBtYXBfa2VudGVyKCgodm1fb2Zmc2V0X3Qp
IHAtPnBfYWRkcikgKyBpICogUEFHRV9TSVpFLA0KKwkJCVZNX1BBR0VfVE9f
UEhZUyhtKSk7DQogDQogCQlpZiAobS0+dmFsaWQgIT0gVk1fUEFHRV9CSVRT
X0FMTCkgew0KIAkJCXJ2ID0gdm1fcGFnZXJfZ2V0X3BhZ2VzKHVwb2JqLCAm
bSwgMSwgMCk7DQpAQCAtOTU4LDggKzEwMDksNiBAQA0KIAkJdm1fcGFnZV93
YWtldXAobSk7DQogCQl2bV9wYWdlX2ZsYWdfc2V0KG0sIFBHX01BUFBFRCB8
IFBHX1dSSVRFQUJMRSk7DQogCX0NCi0NCi0JcG1hcF9xZW50ZXIoKHZtX29m
ZnNldF90KSBwLT5wX2FkZHIsIG1hLCBVUEFHRVMpOw0KIH0NCiANCiAvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqDQpAQCAtOTcxLDggKzEwMjAsOCBAQA0KICAqIGRyb3BzIHRvIHplcm8s
IHRoZW4gaXQgZGVjcmVtZW50cyB0aGUgd2lyZSBjb3VudC4NCiAgKi8NCiBz
dGF0aWMgaW50IA0KLV9wbWFwX3Vud2lyZV9wdGVfaG9sZChwbWFwX3QgcG1h
cCwgdm1fcGFnZV90IG0pDQotew0KK19wbWFwX3Vud2lyZV9wdGVfaG9sZChw
bWFwX3QgcG1hcCwgdm1fcGFnZV90IG0pIHsNCisNCiAJd2hpbGUgKHZtX3Bh
Z2Vfc2xlZXBfYnVzeShtLCBGQUxTRSwgInBtdXdwdCIpKQ0KIAkJOw0KIA0K
QEAgLTk4Myw3ICsxMDMyLDggQEANCiAJCSAqLw0KIAkJcG1hcC0+cG1fcGRp
clttLT5waW5kZXhdID0gMDsNCiAJCS0tcG1hcC0+cG1fc3RhdHMucmVzaWRl
bnRfY291bnQ7DQotCQlpZiAocG1hcF9pc19jdXJyZW50KHBtYXApKSB7DQor
CQlpZiAoKCgodW5zaWduZWQpcG1hcC0+cG1fcGRpcltQVERQVERJXSkgJiBQ
R19GUkFNRSkgPT0NCisJCQkoKCh1bnNpZ25lZCkgUFREcGRlKSAmIFBHX0ZS
QU1FKSkgew0KIAkJCS8qDQogCQkJICogRG8gYSBpbnZsdGxiIHRvIG1ha2Ug
dGhlIGludmFsaWRhdGVkIG1hcHBpbmcNCiAJCQkgKiB0YWtlIGVmZmVjdCBp
bW1lZGlhdGVseS4NCkBAIC0xMDAwLDYgKzEwNTAsNyBAQA0KIAkJICovDQog
CQktLW0tPndpcmVfY291bnQ7DQogCQlpZiAobS0+d2lyZV9jb3VudCA9PSAw
KSB7DQorDQogCQkJdm1fcGFnZV9mbGFzaChtKTsNCiAJCQl2bV9wYWdlX2J1
c3kobSk7DQogCQkJdm1fcGFnZV9mcmVlX3plcm8obSk7DQpAQCAtMTAyNSwy
MCArMTA3NiwyMiBAQA0KICAqIGNvbmRpdGlvbmFsbHkgZnJlZSB0aGUgcGFn
ZSwgYW5kIG1hbmFnZSB0aGUgaG9sZC93aXJlIGNvdW50cy4NCiAgKi8NCiBz
dGF0aWMgaW50DQotcG1hcF91bnVzZV9wdChwbWFwX3QgcG1hcCwgdm1fb2Zm
c2V0X3QgdmEsIHZtX3BhZ2VfdCBtcHRlKQ0KK3BtYXBfdW51c2VfcHQocG1h
cCwgdmEsIG1wdGUpDQorCXBtYXBfdCBwbWFwOw0KKwl2bV9vZmZzZXRfdCB2
YTsNCisJdm1fcGFnZV90IG1wdGU7DQogew0KIAl1bnNpZ25lZCBwdGVwaW5k
ZXg7DQotDQogCWlmICh2YSA+PSBVUFRfTUlOX0FERFJFU1MpDQogCQlyZXR1
cm4gMDsNCiANCiAJaWYgKG1wdGUgPT0gTlVMTCkgew0KIAkJcHRlcGluZGV4
ID0gKHZhID4+IFBEUlNISUZUKTsNCiAJCWlmIChwbWFwLT5wbV9wdHBoaW50
ICYmDQotCQkgICAgKHBtYXAtPnBtX3B0cGhpbnQtPnBpbmRleCA9PSBwdGVw
aW5kZXgpKSB7DQorCQkJKHBtYXAtPnBtX3B0cGhpbnQtPnBpbmRleCA9PSBw
dGVwaW5kZXgpKSB7DQogCQkJbXB0ZSA9IHBtYXAtPnBtX3B0cGhpbnQ7DQog
CQl9IGVsc2Ugew0KLQkJCW1wdGUgPSBwbWFwX3BhZ2VfbG9va3VwKHBtYXAt
PnBtX3B0ZW9iaiwgcHRlcGluZGV4KTsNCisJCQltcHRlID0gcG1hcF9wYWdl
X2xvb2t1cCggcG1hcC0+cG1fcHRlb2JqLCBwdGVwaW5kZXgpOw0KIAkJCXBt
YXAtPnBtX3B0cGhpbnQgPSBtcHRlOw0KIAkJfQ0KIAl9DQpAQCAtMTA0Nywx
NiArMTEwMCwxNyBAQA0KIH0NCiANCiB2b2lkDQotcG1hcF9waW5pdDAocG1h
cF90IHBtYXApDQorcG1hcF9waW5pdDAocG1hcCkNCisJc3RydWN0IHBtYXAg
KnBtYXA7DQogew0KLQlwbWFwLT5wbV9wZGlyID0gKHBkX2VudHJ5X3QgKiko
S0VSTkJBU0UgKyBJZGxlUFREKTsNCisJcG1hcC0+cG1fcGRpciA9DQorCQko
cGRfZW50cnlfdCAqKWttZW1fYWxsb2NfcGFnZWFibGUoa2VybmVsX21hcCwg
UEFHRV9TSVpFKTsNCisJcG1hcF9rZW50ZXIoKHZtX29mZnNldF90KSBwbWFw
LT5wbV9wZGlyLCAodm1fb2Zmc2V0X3QpIElkbGVQVEQpOw0KKwlwbWFwLT5w
bV9jb3VudCA9IDE7DQogCXBtYXAtPnBtX2FjdGl2ZSA9IDA7DQogCXBtYXAt
PnBtX3B0cGhpbnQgPSBOVUxMOw0KIAlUQUlMUV9JTklUKCZwbWFwLT5wbV9w
dmxpc3QpOw0KIAliemVybygmcG1hcC0+cG1fc3RhdHMsIHNpemVvZiBwbWFw
LT5wbV9zdGF0cyk7DQotI2lmZGVmIFBBRQ0KLQlwbWFwLT5wbV9wZHB0ID0g
SWRsZVBEUFQ7DQotI2VuZGlmDQogfQ0KIA0KIC8qDQpAQCAtMTA2NCw2NiAr
MTExOCw1MSBAQA0KICAqIHN1Y2ggYXMgb25lIGluIGEgdm1zcGFjZSBzdHJ1
Y3R1cmUuDQogICovDQogdm9pZA0KLXBtYXBfcGluaXQocG1hcF90IHBtYXAp
DQorcG1hcF9waW5pdChwbWFwKQ0KKwlyZWdpc3RlciBzdHJ1Y3QgcG1hcCAq
cG1hcDsNCiB7DQotCXZtX3BhZ2VfdCBtLCBtYVtOUEdQVERdOw0KLQl2bV9w
YWRkcl90IHBhOw0KLQlpbnQgaTsNCisJdm1fcGFnZV90IHB0ZHBnOw0KIA0K
IAkvKg0KIAkgKiBObyBuZWVkIHRvIGFsbG9jYXRlIHBhZ2UgdGFibGUgc3Bh
Y2UgeWV0IGJ1dCB3ZSBkbyBuZWVkIGEgdmFsaWQNCiAJICogcGFnZSBkaXJl
Y3RvcnkgdGFibGUuDQogCSAqLw0KLQlpZiAocG1hcC0+cG1fcGRpciA9PSBO
VUxMKSB7DQotCQlwbWFwLT5wbV9wZGlyID0gKHBkX2VudHJ5X3QgKilrbWVt
X2FsbG9jX3BhZ2VhYmxlKGtlcm5lbF9tYXAsDQotCQkgICAgTlBHUFREICog
UEFHRV9TSVpFKTsNCi0jaWZkZWYgUEFFDQotCQlwbWFwLT5wbV9wZHB0ID0g
cG1hcF9hbGxvY19wZHB0KCk7DQotI2VuZGlmDQotCX0NCisJaWYgKHBtYXAt
PnBtX3BkaXIgPT0gTlVMTCkNCisJCXBtYXAtPnBtX3BkaXIgPQ0KKwkJCShw
ZF9lbnRyeV90ICopa21lbV9hbGxvY19wYWdlYWJsZShrZXJuZWxfbWFwLCBQ
QUdFX1NJWkUpOw0KIA0KIAkvKg0KIAkgKiBhbGxvY2F0ZSBvYmplY3QgZm9y
IHRoZSBwdGVzDQogCSAqLw0KIAlpZiAocG1hcC0+cG1fcHRlb2JqID09IE5V
TEwpDQotCQlwbWFwLT5wbV9wdGVvYmogPSB2bV9vYmplY3RfYWxsb2NhdGUo
T0JKVF9ERUZBVUxULA0KLQkJICAgIFBURFBUREkgKyBOUEdQVEQpOw0KKwkJ
cG1hcC0+cG1fcHRlb2JqID0gdm1fb2JqZWN0X2FsbG9jYXRlKCBPQkpUX0RF
RkFVTFQsIFBURFBUREkgKyAxKTsNCiANCiAJLyoNCiAJICogYWxsb2NhdGUg
dGhlIHBhZ2UgZGlyZWN0b3J5IHBhZ2UNCiAJICovDQotCWZvciAoaSA9IDA7
IGkgPCBOUEdQVEQ7IGkrKykgew0KLQkJbSA9IHZtX3BhZ2VfZ3JhYihwbWFw
LT5wbV9wdGVvYmosIFBURFBUREkgKyBpLA0KLQkJICAgIFZNX0FMTE9DX05P
Uk1BTCB8IFZNX0FMTE9DX1JFVFJZKTsNCi0JCW1hW2ldID0gbTsNCisJcHRk
cGcgPSB2bV9wYWdlX2dyYWIoIHBtYXAtPnBtX3B0ZW9iaiwgUFREUFRESSwN
CisJCQlWTV9BTExPQ19OT1JNQUwgfCBWTV9BTExPQ19SRVRSWSk7DQogDQot
CQltLT53aXJlX2NvdW50ID0gMTsNCi0JCSsrY250LnZfd2lyZV9jb3VudDsN
CisJcHRkcGctPndpcmVfY291bnQgPSAxOw0KKwkrK2NudC52X3dpcmVfY291
bnQ7DQogDQotCQl2bV9wYWdlX2ZsYWdfY2xlYXIobSwgUEdfTUFQUEVEIHwg
UEdfQlVTWSk7DQotCQltLT52YWxpZCA9IFZNX1BBR0VfQklUU19BTEw7DQot
CX0NCiANCi0JcG1hcF9xZW50ZXIoKHZtX29mZnNldF90KXBtYXAtPnBtX3Bk
aXIsIG1hLCBOUEdQVEQpOw0KKwl2bV9wYWdlX2ZsYWdfY2xlYXIocHRkcGcs
IFBHX01BUFBFRCB8IFBHX0JVU1kpOyAvKiBub3QgdXN1YWxseSBtYXBwZWQq
Lw0KKwlwdGRwZy0+dmFsaWQgPSBWTV9QQUdFX0JJVFNfQUxMOw0KIA0KLQlm
b3IgKGkgPSAwOyBpIDwgTlBHUFREOyBpKyspIHsNCi0JCWlmICgobWFbaV0t
PmZsYWdzICYgUEdfWkVSTykgPT0gMCkNCi0JCQliemVybyhwbWFwLT5wbV9w
ZGlyICsgaSAqIE5QREVQRywgUEFHRV9TSVpFKTsNCi0JfQ0KKwlwbWFwX2tl
bnRlcigodm1fb2Zmc2V0X3QpIHBtYXAtPnBtX3BkaXIsIFZNX1BBR0VfVE9f
UEhZUyhwdGRwZykpOw0KKwlpZiAoKHB0ZHBnLT5mbGFncyAmIFBHX1pFUk8p
ID09IDApDQorCQliemVybyhwbWFwLT5wbV9wZGlyLCBQQUdFX1NJWkUpOw0K
IA0KICNpZmRlZiBTTVANCiAJcG1hcC0+cG1fcGRpcltNUFBUREldID0gUFRE
W01QUFRESV07DQogI2VuZGlmDQogDQogCS8qIGluc3RhbGwgc2VsZi1yZWZl
cmVudGlhbCBhZGRyZXNzIG1hcHBpbmcgZW50cnkgKi8NCi0JZm9yIChpID0g
MDsgaSA8IE5QR1BURDsgaSsrKSB7DQotCQlwYSA9IFZNX1BBR0VfVE9fUEhZ
UyhtYVtpXSk7DQotCQlwbWFwLT5wbV9wZGlyW1BURFBUREkgKyBpXSA9IHBh
IHwgUEdfViB8IFBHX1JXIHwgUEdfQSB8IFBHX007DQotI2lmZGVmIFBBRQ0K
LQkJcG1hcC0+cG1fcGRwdFtpXSA9IHBhIHwgUEdfVjsNCi0jZW5kaWYNCi0J
fQ0KKwkqKHVuc2lnbmVkICopIChwbWFwLT5wbV9wZGlyICsgUFREUFRESSkg
PQ0KKwkJVk1fUEFHRV9UT19QSFlTKHB0ZHBnKSB8IFBHX1YgfCBQR19SVyB8
IFBHX0EgfCBQR19NOw0KIA0KKwlwbWFwLT5wbV9jb3VudCA9IDE7DQogCXBt
YXAtPnBtX2FjdGl2ZSA9IDA7DQogCXBtYXAtPnBtX3B0cGhpbnQgPSBOVUxM
Ow0KIAlUQUlMUV9JTklUKCZwbWFwLT5wbV9wdmxpc3QpOw0KQEAgLTExMzcs
MTAgKzExNzYsNTggQEANCiAgKiBidXQgYmVmb3JlIHRoaXMgcG1hcCBpcyBh
Y3RpdmF0ZWQuDQogICovDQogdm9pZA0KLXBtYXBfcGluaXQyKHBtYXBfdCBw
bWFwKQ0KK3BtYXBfcGluaXQyKHBtYXApDQorCXN0cnVjdCBwbWFwICpwbWFw
Ow0KIHsNCiAJLyogWFhYIGNvcGllcyBjdXJyZW50IHByb2Nlc3MsIGRvZXMg
bm90IGZpbGwgaW4gTVBQVERJICovDQotCWJjb3B5KFBURCArIEtQVERJLCBw
bWFwLT5wbV9wZGlyICsgS1BUREksIG5rcHQgKiBQREVTSVpFKTsNCisJYmNv
cHkoUFREICsgS1BUREksIHBtYXAtPnBtX3BkaXIgKyBLUFRESSwgbmtwdCAq
IFBURVNJWkUpOw0KK30NCisNCitzdGF0aWMgaW50DQorcG1hcF9yZWxlYXNl
X2ZyZWVfcGFnZShwbWFwLCBwKQ0KKwlzdHJ1Y3QgcG1hcCAqcG1hcDsNCisJ
dm1fcGFnZV90IHA7DQorew0KKwl1bnNpZ25lZCAqcGRlID0gKHVuc2lnbmVk
ICopIHBtYXAtPnBtX3BkaXI7DQorCS8qDQorCSAqIFRoaXMgY29kZSBvcHRp
bWl6ZXMgdGhlIGNhc2Ugb2YgZnJlZWluZyBub24tYnVzeQ0KKwkgKiBwYWdl
LXRhYmxlIHBhZ2VzLiAgVGhvc2UgcGFnZXMgYXJlIHplcm8gbm93LCBhbmQN
CisJICogbWlnaHQgYXMgd2VsbCBiZSBwbGFjZWQgZGlyZWN0bHkgaW50byB0
aGUgemVybyBxdWV1ZS4NCisJICovDQorCWlmICh2bV9wYWdlX3NsZWVwX2J1
c3kocCwgRkFMU0UsICJwbWFwcmwiKSkNCisJCXJldHVybiAwOw0KKw0KKwl2
bV9wYWdlX2J1c3kocCk7DQorDQorCS8qDQorCSAqIFJlbW92ZSB0aGUgcGFn
ZSB0YWJsZSBwYWdlIGZyb20gdGhlIHByb2Nlc3NlcyBhZGRyZXNzIHNwYWNl
Lg0KKwkgKi8NCisJcGRlW3AtPnBpbmRleF0gPSAwOw0KKwlwbWFwLT5wbV9z
dGF0cy5yZXNpZGVudF9jb3VudC0tOw0KKw0KKwlpZiAocC0+aG9sZF9jb3Vu
dCkgIHsNCisJCXBhbmljKCJwbWFwX3JlbGVhc2U6IGZyZWVpbmcgaGVsZCBw
YWdlIHRhYmxlIHBhZ2UiKTsNCisJfQ0KKwkvKg0KKwkgKiBQYWdlIGRpcmVj
dG9yeSBwYWdlcyBuZWVkIHRvIGhhdmUgdGhlIGtlcm5lbA0KKwkgKiBzdHVm
ZiBjbGVhcmVkLCBzbyB0aGV5IGNhbiBnbyBpbnRvIHRoZSB6ZXJvIHF1ZXVl
IGFsc28uDQorCSAqLw0KKwlpZiAocC0+cGluZGV4ID09IFBURFBUREkpIHsN
CisJCWJ6ZXJvKHBkZSArIEtQVERJLCBua3B0ICogUFRFU0laRSk7DQorI2lm
ZGVmIFNNUA0KKwkJcGRlW01QUFRESV0gPSAwOw0KKyNlbmRpZg0KKwkJcGRl
W0FQVERQVERJXSA9IDA7DQorCQlwbWFwX2tyZW1vdmUoKHZtX29mZnNldF90
KSBwbWFwLT5wbV9wZGlyKTsNCisJfQ0KKw0KKwlpZiAocG1hcC0+cG1fcHRw
aGludCAmJiAocG1hcC0+cG1fcHRwaGludC0+cGluZGV4ID09IHAtPnBpbmRl
eCkpDQorCQlwbWFwLT5wbV9wdHBoaW50ID0gTlVMTDsNCisNCisJcC0+d2ly
ZV9jb3VudC0tOw0KKwljbnQudl93aXJlX2NvdW50LS07DQorCXZtX3BhZ2Vf
ZnJlZV96ZXJvKHApOw0KKwlyZXR1cm4gMTsNCiB9DQogDQogLyoNCkBAIC0x
MTQ4LDEwICsxMjM1LDExIEBADQogICogbWFwcGVkIGNvcnJlY3RseS4NCiAg
Ki8NCiBzdGF0aWMgdm1fcGFnZV90DQotX3BtYXBfYWxsb2NwdGUocG1hcF90
IHBtYXAsIHVuc2lnbmVkIHB0ZXBpbmRleCkNCitfcG1hcF9hbGxvY3B0ZShw
bWFwLCBwdGVwaW5kZXgpDQorCXBtYXBfdAlwbWFwOw0KKwl1bnNpZ25lZCBw
dGVwaW5kZXg7DQogew0KLQl2bV9vZmZzZXRfdCBwdGV2YTsNCi0Jdm1fcGFk
ZHJfdCBwdGVwYTsNCisJdm1fb2Zmc2V0X3QgcHRldmEsIHB0ZXBhOw0KIAl2
bV9wYWdlX3QgbTsNCiANCiAJLyoNCkBAIC0xMTgxLDcgKzEyNjksOCBAQA0K
IAlwbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCsrOw0KIA0KIAlwdGVw
YSA9IFZNX1BBR0VfVE9fUEhZUyhtKTsNCi0JcG1hcC0+cG1fcGRpcltwdGVw
aW5kZXhdID0gcHRlcGEgfCBQR19VIHwgUEdfUlcgfCBQR19WIHwgUEdfQSB8
IFBHX007DQorCXBtYXAtPnBtX3BkaXJbcHRlcGluZGV4XSA9DQorCQkocGRf
ZW50cnlfdCkgKHB0ZXBhIHwgUEdfVSB8IFBHX1JXIHwgUEdfViB8IFBHX0Eg
fCBQR19NKTsNCiANCiAJLyoNCiAJICogU2V0IHRoZSBwYWdlIHRhYmxlIGhp
bnQNCkBAIC0xMTkzLDcgKzEyODIsOCBAQA0KIAkgKiBkbyBpdCB3aXRoIHRo
ZSByb3V0aW5lIHRoYXQgbWFwcyB0aGUgcGFnZSBleHBsaWNpdGx5Lg0KIAkg
Ki8NCiAJaWYgKChtLT5mbGFncyAmIFBHX1pFUk8pID09IDApIHsNCi0JCWlm
IChwbWFwX2lzX2N1cnJlbnQocG1hcCkpIHsNCisJCWlmICgoKCh1bnNpZ25l
ZClwbWFwLT5wbV9wZGlyW1BURFBUREldKSAmIFBHX0ZSQU1FKSA9PQ0KKwkJ
CSgoKHVuc2lnbmVkKSBQVERwZGUpICYgUEdfRlJBTUUpKSB7DQogCQkJcHRl
dmEgPSBVUFRfTUlOX0FERFJFU1MgKyBpMzg2X3B0b2IocHRlcGluZGV4KTsN
CiAJCQliemVybygoY2FkZHJfdCkgcHRldmEsIFBBR0VfU0laRSk7DQogCQl9
IGVsc2Ugew0KQEAgLTEyMTAsMTAgKzEzMDAsMTIgQEANCiB9DQogDQogc3Rh
dGljIHZtX3BhZ2VfdA0KLXBtYXBfYWxsb2NwdGUocG1hcF90IHBtYXAsIHZt
X29mZnNldF90IHZhKQ0KK3BtYXBfYWxsb2NwdGUocG1hcCwgdmEpDQorCXBt
YXBfdAlwbWFwOw0KKwl2bV9vZmZzZXRfdCB2YTsNCiB7DQogCXVuc2lnbmVk
IHB0ZXBpbmRleDsNCi0JcGRfZW50cnlfdCBwZGU7DQorCXZtX29mZnNldF90
IHB0ZXBhOw0KIAl2bV9wYWdlX3QgbTsNCiANCiAJLyoNCkBAIC0xMjI0LDE1
ICsxMzE2LDE1IEBADQogCS8qDQogCSAqIEdldCB0aGUgcGFnZSBkaXJlY3Rv
cnkgZW50cnkNCiAJICovDQotCXBkZSA9IHBtYXAtPnBtX3BkaXJbcHRlcGlu
ZGV4XTsNCisJcHRlcGEgPSAodm1fb2Zmc2V0X3QpIHBtYXAtPnBtX3BkaXJb
cHRlcGluZGV4XTsNCiANCiAJLyoNCiAJICogVGhpcyBzdXBwb3J0cyBzd2l0
Y2hpbmcgZnJvbSBhIDRNQiBwYWdlIHRvIGENCiAJICogbm9ybWFsIDRLIHBh
Z2UuDQogCSAqLw0KLQlpZiAocGRlICYgUEdfUFMpIHsNCisJaWYgKHB0ZXBh
ICYgUEdfUFMpIHsNCiAJCXBtYXAtPnBtX3BkaXJbcHRlcGluZGV4XSA9IDA7
DQotCQlwZGUgPSAwOw0KKwkJcHRlcGEgPSAwOw0KIAkJaW52bHRsYigpOw0K
IAl9DQogDQpAQCAtMTI0MCwxNSArMTMzMiwxNiBAQA0KIAkgKiBJZiB0aGUg
cGFnZSB0YWJsZSBwYWdlIGlzIG1hcHBlZCwgd2UganVzdCBpbmNyZW1lbnQg
dGhlDQogCSAqIGhvbGQgY291bnQsIGFuZCBhY3RpdmF0ZSBpdC4NCiAJICov
DQotCWlmIChwZGUgJiBQR19WKSB7DQorCWlmIChwdGVwYSkgew0KIAkJLyoN
CiAJCSAqIEluIG9yZGVyIHRvIGdldCB0aGUgcGFnZSB0YWJsZSBwYWdlLCB0
cnkgdGhlDQogCQkgKiBoaW50IGZpcnN0Lg0KIAkJICovDQotCQlpZiAocG1h
cC0+cG1fcHRwaGludCAmJiBwbWFwLT5wbV9wdHBoaW50LT5waW5kZXggPT0g
cHRlcGluZGV4KSB7DQorCQlpZiAocG1hcC0+cG1fcHRwaGludCAmJg0KKwkJ
CShwbWFwLT5wbV9wdHBoaW50LT5waW5kZXggPT0gcHRlcGluZGV4KSkgew0K
IAkJCW0gPSBwbWFwLT5wbV9wdHBoaW50Ow0KIAkJfSBlbHNlIHsNCi0JCQlt
ID0gcG1hcF9wYWdlX2xvb2t1cChwbWFwLT5wbV9wdGVvYmosIHB0ZXBpbmRl
eCk7DQorCQkJbSA9IHBtYXBfcGFnZV9sb29rdXAoIHBtYXAtPnBtX3B0ZW9i
aiwgcHRlcGluZGV4KTsNCiAJCQlwbWFwLT5wbV9wdHBoaW50ID0gbTsNCiAJ
CX0NCiAJCW0tPmhvbGRfY291bnQrKzsNCkBAIC0xMjcxLDI3ICsxMzY0LDM3
IEBADQogICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSBtYXAgY29u
dGFpbnMgbm8gdmFsaWQgbWFwcGluZ3MuDQogICovDQogdm9pZA0KLXBtYXBf
cmVsZWFzZShwbWFwX3QgcG1hcCkNCitwbWFwX3JlbGVhc2UocG1hcCkNCisJ
cmVnaXN0ZXIgc3RydWN0IHBtYXAgKnBtYXA7DQogew0KLQl2bV9wYWdlX3Qg
bTsNCisJdm1fcGFnZV90IHAsbixwdGRwZzsNCiAJdm1fb2JqZWN0X3Qgb2Jq
ZWN0ID0gcG1hcC0+cG1fcHRlb2JqOw0KKwlpbnQgY3VyZ2VuZXJhdGlvbjsN
CiANCi0JYnplcm8ocG1hcC0+cG1fcGRpciArIFBURFBUREksIChua3B0ICsg
TlBHUFREKSAqIFBERVNJWkUpOw0KLSNpZmRlZiBTTVANCi0JcG1hcC0+cG1f
cGRpcltNUFBUREldID0gMDsNCisjaWYgZGVmaW5lZChESUFHTk9TVElDKQ0K
KwlpZiAob2JqZWN0LT5yZWZfY291bnQgIT0gMSkNCisJCXBhbmljKCJwbWFw
X3JlbGVhc2U6IHB0ZW9iaiByZWZlcmVuY2UgY291bnQgIT0gMSIpOw0KICNl
bmRpZg0KLQlwbWFwX3FyZW1vdmUoKHZtX29mZnNldF90KXBtYXAtPnBtX3Bk
aXIsIE5QR1BURCk7DQotDQotCXdoaWxlICgobSA9IFRBSUxRX0ZJUlNUKCZv
YmplY3QtPm1lbXEpKSkgew0KLQkJaWYgKG0tPnBpbmRleCA8IFBURFBUREkg
fHwgbS0+cGluZGV4ID49IEtQVERJKQ0KLQkJCXBhbmljKCJwbWFwX3JlbGVh
c2U6IG5vbiBwdGQgcGFnZSIpOw0KLQkJbS0+d2lyZV9jb3VudC0tOw0KLQkJ
Y250LnZfd2lyZV9jb3VudC0tOw0KLQkJdm1fcGFnZV9idXN5KG0pOw0KLQkJ
dm1fcGFnZV9mcmVlX3plcm8obSk7DQorCQ0KKwlwdGRwZyA9IE5VTEw7DQor
cmV0cnk6DQorCWN1cmdlbmVyYXRpb24gPSBvYmplY3QtPmdlbmVyYXRpb247
DQorCWZvciAocCA9IFRBSUxRX0ZJUlNUKCZvYmplY3QtPm1lbXEpOyBwICE9
IE5VTEw7IHAgPSBuKSB7DQorCQluID0gVEFJTFFfTkVYVChwLCBsaXN0cSk7
DQorCQlpZiAocC0+cGluZGV4ID09IFBURFBUREkpIHsNCisJCQlwdGRwZyA9
IHA7DQorCQkJY29udGludWU7DQorCQl9DQorCQl3aGlsZSAoMSkgew0KKwkJ
CWlmICghcG1hcF9yZWxlYXNlX2ZyZWVfcGFnZShwbWFwLCBwKSAmJg0KKwkJ
CQkob2JqZWN0LT5nZW5lcmF0aW9uICE9IGN1cmdlbmVyYXRpb24pKQ0KKwkJ
CQlnb3RvIHJldHJ5Ow0KKwkJfQ0KIAl9DQotfQ0KIA0KKwlpZiAocHRkcGcg
JiYgIXBtYXBfcmVsZWFzZV9mcmVlX3BhZ2UocG1hcCwgcHRkcGcpKQ0KKwkJ
Z290byByZXRyeTsNCit9DQogDA0KIHN0YXRpYyBpbnQNCiBrdm1fc2l6ZShT
WVNDVExfSEFORExFUl9BUkdTKQ0KQEAgLTEzMjIsNyArMTQyNSw3IEBADQog
CXN0cnVjdCBwcm9jICpwOw0KIAlzdHJ1Y3QgcG1hcCAqcG1hcDsNCiAJaW50
IHM7DQotCXZtX3BhZGRyX3QgcHRwcGFkZHI7DQorCXZtX29mZnNldF90IHB0
cHBhZGRyOw0KIAl2bV9wYWdlX3QgbmtwZzsNCiAJcGRfZW50cnlfdCBuZXdw
ZGlyOw0KIA0KQEAgLTEzMzAsMTcgKzE0MzMsMTUgQEANCiAJaWYgKGtlcm5l
bF92bV9lbmQgPT0gMCkgew0KIAkJa2VybmVsX3ZtX2VuZCA9IEtFUk5CQVNF
Ow0KIAkJbmtwdCA9IDA7DQotCQl3aGlsZSAocGRpcl9wZGUoUFRELCBrZXJu
ZWxfdm1fZW5kKSAmIFBHX1YpIHsNCi0JCQlrZXJuZWxfdm1fZW5kID0gKGtl
cm5lbF92bV9lbmQgKyBQQUdFX1NJWkUgKiBOUFRFUEcpICYNCi0JCQkgICAg
fihQQUdFX1NJWkUgKiBOUFRFUEcgLSAxKTsNCisJCXdoaWxlIChwZGlyX3Bk
ZShQVEQsIGtlcm5lbF92bV9lbmQpKSB7DQorCQkJa2VybmVsX3ZtX2VuZCA9
IChrZXJuZWxfdm1fZW5kICsgUEFHRV9TSVpFICogTlBURVBHKSAmIH4oUEFH
RV9TSVpFICogTlBURVBHIC0gMSk7DQogCQkJbmtwdCsrOw0KIAkJfQ0KIAl9
DQogCWFkZHIgPSAoYWRkciArIFBBR0VfU0laRSAqIE5QVEVQRykgJiB+KFBB
R0VfU0laRSAqIE5QVEVQRyAtIDEpOw0KIAl3aGlsZSAoa2VybmVsX3ZtX2Vu
ZCA8IGFkZHIpIHsNCi0JCWlmIChwZGlyX3BkZShQVEQsIGtlcm5lbF92bV9l
bmQpICYgUEdfVikgew0KLQkJCWtlcm5lbF92bV9lbmQgPSAoa2VybmVsX3Zt
X2VuZCArIFBBR0VfU0laRSAqIE5QVEVQRykgJg0KLQkJCSAgICB+KFBBR0Vf
U0laRSAqIE5QVEVQRyAtIDEpOw0KKwkJaWYgKHBkaXJfcGRlKFBURCwga2Vy
bmVsX3ZtX2VuZCkpIHsNCisJCQlrZXJuZWxfdm1fZW5kID0gKGtlcm5lbF92
bV9lbmQgKyBQQUdFX1NJWkUgKiBOUFRFUEcpICYgfihQQUdFX1NJWkUgKiBO
UFRFUEcgLSAxKTsNCiAJCQljb250aW51ZTsNCiAJCX0NCiANCkBAIC0xMzU2
LDcgKzE0NTcsNyBAQA0KIAkJdm1fcGFnZV93aXJlKG5rcGcpOw0KIAkJcHRw
cGFkZHIgPSBWTV9QQUdFX1RPX1BIWVMobmtwZyk7DQogCQlwbWFwX3plcm9f
cGFnZShwdHBwYWRkcik7DQotCQluZXdwZGlyID0gcHRwcGFkZHIgfCBQR19W
IHwgUEdfUlcgfCBQR19BIHwgUEdfTTsNCisJCW5ld3BkaXIgPSAocGRfZW50
cnlfdCkgKHB0cHBhZGRyIHwgUEdfViB8IFBHX1JXIHwgUEdfQSB8IFBHX00p
Ow0KIAkJcGRpcl9wZGUoUFRELCBrZXJuZWxfdm1fZW5kKSA9IG5ld3BkaXI7
DQogDQogCQlMSVNUX0ZPUkVBQ0gocCwgJmFsbHByb2MsIHBfbGlzdCkgew0K
QEAgLTEzNjYsMTIgKzE0NjcsNDQgQEANCiAJCQl9DQogCQl9DQogCQkqcG1h
cF9wZGUoa2VybmVsX3BtYXAsIGtlcm5lbF92bV9lbmQpID0gbmV3cGRpcjsN
Ci0JCWtlcm5lbF92bV9lbmQgPSAoa2VybmVsX3ZtX2VuZCArIFBBR0VfU0la
RSAqIE5QVEVQRykgJg0KLQkJICAgIH4oUEFHRV9TSVpFICogTlBURVBHIC0g
MSk7DQorCQlrZXJuZWxfdm1fZW5kID0gKGtlcm5lbF92bV9lbmQgKyBQQUdF
X1NJWkUgKiBOUFRFUEcpICYgfihQQUdFX1NJWkUgKiBOUFRFUEcgLSAxKTsN
CiAJfQ0KIAlzcGx4KHMpOw0KIH0NCiANCisvKg0KKyAqCVJldGlyZSB0aGUg
Z2l2ZW4gcGh5c2ljYWwgbWFwIGZyb20gc2VydmljZS4NCisgKglTaG91bGQg
b25seSBiZSBjYWxsZWQgaWYgdGhlIG1hcCBjb250YWlucw0KKyAqCW5vIHZh
bGlkIG1hcHBpbmdzLg0KKyAqLw0KK3ZvaWQNCitwbWFwX2Rlc3Ryb3kocG1h
cCkNCisJcmVnaXN0ZXIgcG1hcF90IHBtYXA7DQorew0KKwlpbnQgY291bnQ7
DQorDQorCWlmIChwbWFwID09IE5VTEwpDQorCQlyZXR1cm47DQorDQorCWNv
dW50ID0gLS1wbWFwLT5wbV9jb3VudDsNCisJaWYgKGNvdW50ID09IDApIHsN
CisJCXBtYXBfcmVsZWFzZShwbWFwKTsNCisJCXBhbmljKCJkZXN0cm95aW5n
IGEgcG1hcCBpcyBub3QgeWV0IGltcGxlbWVudGVkIik7DQorCX0NCit9DQor
DQorLyoNCisgKglBZGQgYSByZWZlcmVuY2UgdG8gdGhlIHNwZWNpZmllZCBw
bWFwLg0KKyAqLw0KK3ZvaWQNCitwbWFwX3JlZmVyZW5jZShwbWFwKQ0KKwlw
bWFwX3QgcG1hcDsNCit7DQorCWlmIChwbWFwICE9IE5VTEwpIHsNCisJCXBt
YXAtPnBtX2NvdW50Kys7DQorCX0NCit9DQorDQogLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogcGFn
ZSBtYW5hZ2VtZW50IHJvdXRpbmVzLg0KICAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpAQCAtMTM4MCw3
ICsxNTEzLDggQEANCiAgKiBmcmVlIHRoZSBwdl9lbnRyeSBiYWNrIHRvIHRo
ZSBmcmVlIGxpc3QNCiAgKi8NCiBzdGF0aWMgUE1BUF9JTkxJTkUgdm9pZA0K
LWZyZWVfcHZfZW50cnkocHZfZW50cnlfdCBwdikNCitmcmVlX3B2X2VudHJ5
KHB2KQ0KKwlwdl9lbnRyeV90IHB2Ow0KIHsNCiAJcHZfZW50cnlfY291bnQt
LTsNCiAJemZyZWVpKHB2em9uZSwgcHYpOw0KQEAgLTEzOTYsOCArMTUzMCw5
IEBADQogZ2V0X3B2X2VudHJ5KHZvaWQpDQogew0KIAlwdl9lbnRyeV9jb3Vu
dCsrOw0KLQlpZiAocHZfZW50cnlfaGlnaF93YXRlciAmJiAocHZfZW50cnlf
Y291bnQgPiBwdl9lbnRyeV9oaWdoX3dhdGVyKSAmJg0KLQkgICAgKHBtYXBf
cGFnZWRhZW1vbl93YWtlbiA9PSAwKSkgew0KKwlpZiAocHZfZW50cnlfaGln
aF93YXRlciAmJg0KKwkJKHB2X2VudHJ5X2NvdW50ID4gcHZfZW50cnlfaGln
aF93YXRlcikgJiYNCisJCShwbWFwX3BhZ2VkYWVtb25fd2FrZW4gPT0gMCkp
IHsNCiAJCXBtYXBfcGFnZWRhZW1vbl93YWtlbiA9IDE7DQogCQl3YWtldXAg
KCZ2bV9wYWdlc19uZWVkZWQpOw0KIAl9DQpAQCAtMTQ0Miw3ICsxNTc3LDEw
IEBADQogICovDQogDQogc3RhdGljIGludA0KLXBtYXBfcmVtb3ZlX2VudHJ5
KHBtYXBfdCBwbWFwLCB2bV9wYWdlX3QgbSwgdm1fb2Zmc2V0X3QgdmEpDQor
cG1hcF9yZW1vdmVfZW50cnkocG1hcCwgbSwgdmEpDQorCXN0cnVjdCBwbWFw
ICpwbWFwOw0KKwl2bV9wYWdlX3QgbTsNCisJdm1fb2Zmc2V0X3QgdmE7DQog
ew0KIAlwdl9lbnRyeV90IHB2Ow0KIAlpbnQgcnR2YWw7DQpAQCAtMTQ2Myw2
ICsxNjAxLDcgQEANCiANCiAJcnR2YWwgPSAwOw0KIAlpZiAocHYpIHsNCisN
CiAJCXJ0dmFsID0gcG1hcF91bnVzZV9wdChwbWFwLCB2YSwgcHYtPnB2X3B0
ZW0pOw0KIAkJVEFJTFFfUkVNT1ZFKCZtLT5tZC5wdl9saXN0LCBwdiwgcHZf
bGlzdCk7DQogCQltLT5tZC5wdl9saXN0X2NvdW50LS07DQpAQCAtMTQ4Miw4
ICsxNjIxLDEzIEBADQogICogKHBtYXAsIHZhKS4NCiAgKi8NCiBzdGF0aWMg
dm9pZA0KLXBtYXBfaW5zZXJ0X2VudHJ5KHBtYXBfdCBwbWFwLCB2bV9vZmZz
ZXRfdCB2YSwgdm1fcGFnZV90IG1wdGUsIHZtX3BhZ2VfdCBtKQ0KK3BtYXBf
aW5zZXJ0X2VudHJ5KHBtYXAsIHZhLCBtcHRlLCBtKQ0KKwlwbWFwX3QgcG1h
cDsNCisJdm1fb2Zmc2V0X3QgdmE7DQorCXZtX3BhZ2VfdCBtcHRlOw0KKwl2
bV9wYWdlX3QgbTsNCiB7DQorDQogCWludCBzOw0KIAlwdl9lbnRyeV90IHB2
Ow0KIA0KQEAgLTE1MDQsMTIgKzE2NDgsMTUgQEANCiAgKiBwbWFwX3JlbW92
ZV9wdGU6IGRvIHRoZSB0aGluZ3MgdG8gdW5tYXAgYSBwYWdlIGluIGEgcHJv
Y2Vzcw0KICAqLw0KIHN0YXRpYyBpbnQNCi1wbWFwX3JlbW92ZV9wdGUocG1h
cF90IHBtYXAsIHB0X2VudHJ5X3QgKnB0cSwgdm1fb2Zmc2V0X3QgdmEpDQor
cG1hcF9yZW1vdmVfcHRlKHBtYXAsIHB0cSwgdmEpDQorCXN0cnVjdCBwbWFw
ICpwbWFwOw0KKwl1bnNpZ25lZCAqcHRxOw0KKwl2bV9vZmZzZXRfdCB2YTsN
CiB7DQotCXB0X2VudHJ5X3Qgb2xkcHRlOw0KKwl1bnNpZ25lZCBvbGRwdGU7
DQogCXZtX3BhZ2VfdCBtOw0KIA0KLQlvbGRwdGUgPSBwdGVfc3RvcmUocHRx
LCAwKTsNCisJb2xkcHRlID0gbG9hZGFuZGNsZWFyKHB0cSk7DQogCWlmIChv
bGRwdGUgJiBQR19XKQ0KIAkJcG1hcC0+cG1fc3RhdHMud2lyZWRfY291bnQg
LT0gMTsNCiAJLyoNCkBAIC0xNTIzLDcgKzE2NzAsNyBAQA0KIAkJbSA9IFBI
WVNfVE9fVk1fUEFHRShvbGRwdGUpOw0KIAkJaWYgKG9sZHB0ZSAmIFBHX00p
IHsNCiAjaWYgZGVmaW5lZChQTUFQX0RJQUdOT1NUSUMpDQotCQkJaWYgKHBt
YXBfbndfbW9kaWZpZWQob2xkcHRlKSkgew0KKwkJCWlmIChwbWFwX253X21v
ZGlmaWVkKChwdF9lbnRyeV90KSBvbGRwdGUpKSB7DQogCQkJCXByaW50ZigN
CiAJInBtYXBfcmVtb3ZlOiBtb2RpZmllZCBwYWdlIG5vdCB3cml0YWJsZTog
dmE6IDB4JXgsIHB0ZTogMHgleFxuIiwNCiAJCQkJICAgIHZhLCBvbGRwdGUp
Ow0KQEAgLTE1NDYsMTggKzE2OTMsMjUgQEANCiAgKiBSZW1vdmUgYSBzaW5n
bGUgcGFnZSBmcm9tIGEgcHJvY2VzcyBhZGRyZXNzIHNwYWNlDQogICovDQog
c3RhdGljIHZvaWQNCi1wbWFwX3JlbW92ZV9wYWdlKHBtYXBfdCBwbWFwLCB2
bV9vZmZzZXRfdCB2YSkNCitwbWFwX3JlbW92ZV9wYWdlKHBtYXAsIHZhKQ0K
KwlzdHJ1Y3QgcG1hcCAqcG1hcDsNCisJcmVnaXN0ZXIgdm1fb2Zmc2V0X3Qg
dmE7DQogew0KLQlwdF9lbnRyeV90ICpwdGU7DQorCXJlZ2lzdGVyIHVuc2ln
bmVkICpwdHE7DQogDQogCS8qDQotCSAqIGdldCBhIGxvY2FsIHZhIGZvciBt
YXBwaW5ncyBmb3IgdGhpcyBwbWFwLg0KKwkgKiBpZiB0aGVyZSBpcyBubyBw
dGUgZm9yIHRoaXMgYWRkcmVzcywganVzdCBza2lwIGl0ISEhDQogCSAqLw0K
LQlwdGUgPSBwbWFwX3B0ZShwbWFwLCB2YSk7DQotCWlmICghcHRlKQ0KKwlp
ZiAoKnBtYXBfcGRlKHBtYXAsIHZhKSA9PSAwKSB7DQogCQlyZXR1cm47DQot
CWlmICgqcHRlICYgUEdfVikgew0KLQkJKHZvaWQpIHBtYXBfcmVtb3ZlX3B0
ZShwbWFwLCBwdGUsIHZhKTsNCisJfQ0KKw0KKwkvKg0KKwkgKiBnZXQgYSBs
b2NhbCB2YSBmb3IgbWFwcGluZ3MgZm9yIHRoaXMgcG1hcC4NCisJICovDQor
CXB0cSA9IGdldF9wdGJhc2UocG1hcCkgKyBpMzg2X2J0b3AodmEpOw0KKwlp
ZiAoKnB0cSkgew0KKwkJKHZvaWQpIHBtYXBfcmVtb3ZlX3B0ZShwbWFwLCBw
dHEsIHZhKTsNCiAJCXBtYXBfVExCX2ludmFsaWRhdGUocG1hcCwgdmEpOw0K
IAl9DQogCXJldHVybjsNCkBAIC0xNTcwLDExICsxNzI0LDE1IEBADQogICoJ
cm91bmRlZCB0byB0aGUgcGFnZSBzaXplLg0KICAqLw0KIHZvaWQNCi1wbWFw
X3JlbW92ZShwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3Qgc3ZhLCB2bV9vZmZz
ZXRfdCBldmEpDQorcG1hcF9yZW1vdmUocG1hcCwgc3ZhLCBldmEpDQorCXN0
cnVjdCBwbWFwICpwbWFwOw0KKwlyZWdpc3RlciB2bV9vZmZzZXRfdCBzdmE7
DQorCXJlZ2lzdGVyIHZtX29mZnNldF90IGV2YTsNCiB7DQotCXB0X2VudHJ5
X3QgKnB0ZTsNCi0JcGRfZW50cnlfdCBwZGU7DQotCXZtX29mZnNldF90IG52
YTsNCisJcmVnaXN0ZXIgdW5zaWduZWQgKnB0YmFzZTsNCisJdm1fb2Zmc2V0
X3QgcGRueHQ7DQorCXZtX29mZnNldF90IHB0cGFkZHI7DQorCXZtX29mZnNl
dF90IHNpbmRleCwgZWluZGV4Ow0KIAlpbnQgYW55dmFsaWQ7DQogDQogCWlm
IChwbWFwID09IE5VTEwpDQpAQCAtMTU4OCw4ICsxNzQ2LDggQEANCiAJICog
Y29tbW9uIG9wZXJhdGlvbiBhbmQgZWFzeSB0byBzaG9ydCBjaXJjdWl0IHNv
bWUNCiAJICogY29kZS4NCiAJICovDQotCWlmIChzdmEgKyBQQUdFX1NJWkUg
PT0gZXZhICYmIA0KLQkgICAgKHBtYXAtPnBtX3BkaXJbc3ZhID4+IFBEUlNI
SUZUXSAmIFBHX1BTKSA9PSAwKSB7DQorCWlmICgoKHN2YSArIFBBR0VfU0la
RSkgPT0gZXZhKSAmJiANCisJCSgoKHVuc2lnbmVkKSBwbWFwLT5wbV9wZGly
WyhzdmEgPj4gUERSU0hJRlQpXSAmIFBHX1BTKSA9PSAwKSkgew0KIAkJcG1h
cF9yZW1vdmVfcGFnZShwbWFwLCBzdmEpOw0KIAkJcmV0dXJuOw0KIAl9DQpA
QCAtMTYwMCwyMCArMTc1OCwyMyBAQA0KIAkgKiBHZXQgYSBsb2NhbCB2aXJ0
dWFsIGFkZHJlc3MgZm9yIHRoZSBtYXBwaW5ncyB0aGF0IGFyZSBiZWluZw0K
IAkgKiB3b3JrZWQgd2l0aC4NCiAJICovDQorCXB0YmFzZSA9IGdldF9wdGJh
c2UocG1hcCk7DQorDQorCXNpbmRleCA9IGkzODZfYnRvcChzdmEpOw0KKwll
aW5kZXggPSBpMzg2X2J0b3AoZXZhKTsNCiANCi0JZm9yICg7IHN2YSA8IGV2
YTsgc3ZhID0gbnZhKSB7DQorCWZvciAoOyBzaW5kZXggPCBlaW5kZXg7IHNp
bmRleCA9IHBkbnh0KSB7DQogCQl1bnNpZ25lZCBwZGlyaW5kZXg7DQogDQog
CQkvKg0KLQkJICogQ2FsY3VsYXRlIGFkZHJlc3MgZm9yIG5leHQgcGFnZSB0
YWJsZS4NCisJCSAqIENhbGN1bGF0ZSBpbmRleCBmb3IgbmV4dCBwYWdlIHRh
YmxlLg0KIAkJICovDQotCQludmEgPSAoc3ZhICsgTkJQRFIpICYgflBEUk1B
U0s7DQotDQorCQlwZG54dCA9ICgoc2luZGV4ICsgTlBURVBHKSAmIH4oTlBU
RVBHIC0gMSkpOw0KIAkJaWYgKHBtYXAtPnBtX3N0YXRzLnJlc2lkZW50X2Nv
dW50ID09IDApDQogCQkJYnJlYWs7DQogDQotCQlwZGlyaW5kZXggPSBzdmEg
Pj4gUERSU0hJRlQ7DQotCQlpZiAoKChwZGUgPSBwbWFwLT5wbV9wZGlyW3Bk
aXJpbmRleF0pICYgUEdfUFMpICE9IDApIHsNCisJCXBkaXJpbmRleCA9IHNp
bmRleCAvIE5QREVQRzsNCisJCWlmICgoKHB0cGFkZHIgPSAodW5zaWduZWQp
IHBtYXAtPnBtX3BkaXJbcGRpcmluZGV4XSkgJiBQR19QUykgIT0gMCkgew0K
IAkJCXBtYXAtPnBtX3BkaXJbcGRpcmluZGV4XSA9IDA7DQogCQkJcG1hcC0+
cG1fc3RhdHMucmVzaWRlbnRfY291bnQgLT0gTkJQRFIgLyBQQUdFX1NJWkU7
DQogCQkJYW55dmFsaWQrKzsNCkBAIC0xNjI0LDcgKzE3ODUsNyBAQA0KIAkJ
ICogV2VlZCBvdXQgaW52YWxpZCBtYXBwaW5ncy4gTm90ZTogd2UgYXNzdW1l
IHRoYXQgdGhlIHBhZ2UNCiAJCSAqIGRpcmVjdG9yeSB0YWJsZSBpcyBhbHdh
eXMgYWxsb2NhdGVkLCBhbmQgaW4ga2VybmVsIHZpcnR1YWwuDQogCQkgKi8N
Ci0JCWlmICgocGRlICYgUEdfVikgPT0gMCkNCisJCWlmIChwdHBhZGRyID09
IDApDQogCQkJY29udGludWU7DQogDQogCQkvKg0KQEAgLTE2MzIsMTYgKzE3
OTMsMjAgQEANCiAJCSAqIGJ5IHRoZSBjdXJyZW50IHBhZ2UgdGFibGUgcGFn
ZSwgb3IgdG8gdGhlIGVuZCBvZiB0aGUNCiAJCSAqIHJhbmdlIGJlaW5nIHJl
bW92ZWQuDQogCQkgKi8NCi0JCWlmIChudmEgPiBldmEpDQotCQkJbnZhID0g
ZXZhOw0KKwkJaWYgKHBkbnh0ID4gZWluZGV4KSB7DQorCQkJcGRueHQgPSBl
aW5kZXg7DQorCQl9DQogDQotCQlwdGUgPSBwbWFwX3B0ZShwbWFwLCBzdmEp
Ow0KLQkJZm9yICg7IHN2YSA8IG52YTsgc3ZhICs9IFBBR0VfU0laRSwgcHRl
KyspIHsNCi0JCQlpZiAoKCpwdGUgJiBQR19WKSA9PSAwKQ0KKwkJZm9yICgg
O3NpbmRleCAhPSBwZG54dDsgc2luZGV4KyspIHsNCisJCQl2bV9vZmZzZXRf
dCB2YTsNCisJCQlpZiAocHRiYXNlW3NpbmRleF0gPT0gMCkgew0KIAkJCQlj
b250aW51ZTsNCisJCQl9DQorCQkJdmEgPSBpMzg2X3B0b2Ioc2luZGV4KTsN
CiAJCQkNCiAJCQlhbnl2YWxpZCsrOw0KLQkJCWlmIChwbWFwX3JlbW92ZV9w
dGUocG1hcCwgcHRlLCBzdmEpKQ0KKwkJCWlmIChwbWFwX3JlbW92ZV9wdGUo
cG1hcCwNCisJCQkJcHRiYXNlICsgc2luZGV4LCB2YSkpDQogCQkJCWJyZWFr
Ow0KIAkJfQ0KIAl9DQpAQCAtMTY2NCwxMCArMTgyOSwxMSBAQA0KICAqLw0K
IA0KIHN0YXRpYyB2b2lkDQotcG1hcF9yZW1vdmVfYWxsKHZtX3BhZ2VfdCBt
KQ0KK3BtYXBfcmVtb3ZlX2FsbChtKQ0KKwl2bV9wYWdlX3QgbTsNCiB7DQot
CXB2X2VudHJ5X3QgcHY7DQotCXB0X2VudHJ5X3QgKnB0ZSwgdHB0ZTsNCisJ
cmVnaXN0ZXIgcHZfZW50cnlfdCBwdjsNCisJcmVnaXN0ZXIgdW5zaWduZWQg
KnB0ZSwgdHB0ZTsNCiAJaW50IHM7DQogDQogI2lmIGRlZmluZWQoUE1BUF9E
SUFHTk9TVElDKQ0KQEAgLTE2ODQsOSArMTg1MCw5IEBADQogCXdoaWxlICgo
cHYgPSBUQUlMUV9GSVJTVCgmbS0+bWQucHZfbGlzdCkpICE9IE5VTEwpIHsN
CiAJCXB2LT5wdl9wbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudC0tOw0K
IA0KLQkJcHRlID0gcG1hcF9wdGUocHYtPnB2X3BtYXAsIHB2LT5wdl92YSk7
DQorCQlwdGUgPSBwbWFwX3B0ZV9xdWljayhwdi0+cHZfcG1hcCwgcHYtPnB2
X3ZhKTsNCiANCi0JCXRwdGUgPSBwdGVfc3RvcmUocHRlLCAwKTsNCisJCXRw
dGUgPSBsb2FkYW5kY2xlYXIocHRlKTsNCiAJCWlmICh0cHRlICYgUEdfVykN
CiAJCQlwdi0+cHZfcG1hcC0+cG1fc3RhdHMud2lyZWRfY291bnQtLTsNCiAN
CkBAIC0xNjk4LDcgKzE4NjQsNyBAQA0KIAkJICovDQogCQlpZiAodHB0ZSAm
IFBHX00pIHsNCiAjaWYgZGVmaW5lZChQTUFQX0RJQUdOT1NUSUMpDQotCQkJ
aWYgKHBtYXBfbndfbW9kaWZpZWQodHB0ZSkpIHsNCisJCQlpZiAocG1hcF9u
d19tb2RpZmllZCgocHRfZW50cnlfdCkgdHB0ZSkpIHsNCiAJCQkJcHJpbnRm
KA0KIAkicG1hcF9yZW1vdmVfYWxsOiBtb2RpZmllZCBwYWdlIG5vdCB3cml0
YWJsZTogdmE6IDB4JXgsIHB0ZTogMHgleFxuIiwNCiAJCQkJICAgIHB2LT5w
dl92YSwgdHB0ZSk7DQpAQCAtMTcyOCw5ICsxODk0LDkgQEANCiB2b2lkDQog
cG1hcF9wcm90ZWN0KHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCBzdmEsIHZt
X29mZnNldF90IGV2YSwgdm1fcHJvdF90IHByb3QpDQogew0KLQlwdF9lbnRy
eV90ICpwdGU7DQotCXBkX2VudHJ5X3QgcGRlOw0KLQl2bV9vZmZzZXRfdCBu
dmE7DQorCXJlZ2lzdGVyIHVuc2lnbmVkICpwdGJhc2U7DQorCXZtX29mZnNl
dF90IHBkbnh0LCBwdHBhZGRyOw0KKwl2bV9waW5kZXhfdCBzaW5kZXgsIGVp
bmRleDsNCiAJaW50IGFueWNoYW5nZWQ7DQogDQogCWlmIChwbWFwID09IE5V
TEwpDQpAQCAtMTc0NiwxNSArMTkxMiwyMCBAQA0KIA0KIAlhbnljaGFuZ2Vk
ID0gMDsNCiANCi0JZm9yICg7IHN2YSA8IGV2YTsgc3ZhID0gbnZhKSB7DQor
CXB0YmFzZSA9IGdldF9wdGJhc2UocG1hcCk7DQorDQorCXNpbmRleCA9IGkz
ODZfYnRvcChzdmEpOw0KKwllaW5kZXggPSBpMzg2X2J0b3AoZXZhKTsNCisN
CisJZm9yICg7IHNpbmRleCA8IGVpbmRleDsgc2luZGV4ID0gcGRueHQpIHsN
CiANCiAJCXVuc2lnbmVkIHBkaXJpbmRleDsNCiANCi0JCW52YSA9IChzdmEg
KyBOQlBEUikgJiB+UERSTUFTSzsNCisJCXBkbnh0ID0gKChzaW5kZXggKyBO
UFRFUEcpICYgfihOUFRFUEcgLSAxKSk7DQogDQotCQlwZGlyaW5kZXggPSBz
dmEgPj4gUERSU0hJRlQ7DQotCQlpZiAoKChwZGUgPSBwbWFwLT5wbV9wZGly
W3BkaXJpbmRleF0pICYgUEdfUFMpICE9IDApIHsNCi0JCQlwbWFwLT5wbV9w
ZGlyW3BkaXJpbmRleF0gJj0gfihQR19NfFBHX1JXKTsNCisJCXBkaXJpbmRl
eCA9IHNpbmRleCAvIE5QREVQRzsNCisJCWlmICgoKHB0cGFkZHIgPSAodW5z
aWduZWQpIHBtYXAtPnBtX3BkaXJbcGRpcmluZGV4XSkgJiBQR19QUykgIT0g
MCkgew0KKwkJCSh1bnNpZ25lZCkgcG1hcC0+cG1fcGRpcltwZGlyaW5kZXhd
ICY9IH4oUEdfTXxQR19SVyk7DQogCQkJcG1hcC0+cG1fc3RhdHMucmVzaWRl
bnRfY291bnQgLT0gTkJQRFIgLyBQQUdFX1NJWkU7DQogCQkJYW55Y2hhbmdl
ZCsrOw0KIAkJCWNvbnRpbnVlOw0KQEAgLTE3NjQsMTggKzE5MzUsMTkgQEAN
CiAJCSAqIFdlZWQgb3V0IGludmFsaWQgbWFwcGluZ3MuIE5vdGU6IHdlIGFz
c3VtZSB0aGF0IHRoZSBwYWdlDQogCQkgKiBkaXJlY3RvcnkgdGFibGUgaXMg
YWx3YXlzIGFsbG9jYXRlZCwgYW5kIGluIGtlcm5lbCB2aXJ0dWFsLg0KIAkJ
ICovDQotCQlpZiAoKHBkZSAmIFBHX1YpID09IDApDQorCQlpZiAocHRwYWRk
ciA9PSAwKQ0KIAkJCWNvbnRpbnVlOw0KIA0KLQkJaWYgKG52YSA+IGV2YSkN
Ci0JCQludmEgPSBldmE7DQorCQlpZiAocGRueHQgPiBlaW5kZXgpIHsNCisJ
CQlwZG54dCA9IGVpbmRleDsNCisJCX0NCisNCisJCWZvciAoOyBzaW5kZXgg
IT0gcGRueHQ7IHNpbmRleCsrKSB7DQogDQotCQlwdGUgPSBwbWFwX3B0ZShw
bWFwLCBzdmEpOw0KLQkJZm9yICg7IHN2YSA8IG52YTsgc3ZhICs9IFBBR0Vf
U0laRSwgcHRlKyspIHsNCi0JCQlwdF9lbnRyeV90IHBiaXRzOw0KKwkJCXVu
c2lnbmVkIHBiaXRzOw0KIAkJCXZtX3BhZ2VfdCBtOw0KIA0KLQkJCXBiaXRz
ID0gKnB0ZTsNCisJCQlwYml0cyA9IHB0YmFzZVtzaW5kZXhdOw0KIA0KIAkJ
CWlmIChwYml0cyAmIFBHX01BTkFHRUQpIHsNCiAJCQkJbSA9IE5VTEw7DQpA
QCAtMTc4NSw3ICsxOTU3LDcgQEANCiAJCQkJCXBiaXRzICY9IH5QR19BOw0K
IAkJCQl9DQogCQkJCWlmIChwYml0cyAmIFBHX00pIHsNCi0JCQkJCWlmIChw
bWFwX3RyYWNrX21vZGlmaWVkKHN2YSkpIHsNCisJCQkJCWlmIChwbWFwX3Ry
YWNrX21vZGlmaWVkKGkzODZfcHRvYihzaW5kZXgpKSkgew0KIAkJCQkJCWlm
IChtID09IE5VTEwpDQogCQkJCQkJCW0gPSBQSFlTX1RPX1ZNX1BBR0UocGJp
dHMpOw0KIAkJCQkJCXZtX3BhZ2VfZGlydHkobSk7DQpAQCAtMTc5Niw4ICsx
OTY4LDggQEANCiANCiAJCQlwYml0cyAmPSB+UEdfUlc7DQogDQotCQkJaWYg
KHBiaXRzICE9ICpwdGUpIHsNCi0JCQkJKnB0ZSA9IHBiaXRzOw0KKwkJCWlm
IChwYml0cyAhPSBwdGJhc2Vbc2luZGV4XSkgew0KKwkJCQlwdGJhc2Vbc2lu
ZGV4XSA9IHBiaXRzOw0KIAkJCQlhbnljaGFuZ2VkID0gMTsNCiAJCQl9DQog
CQl9DQpAQCAtMTgyMiw4ICsxOTk0LDEwIEBADQogcG1hcF9lbnRlcihwbWFw
X3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIHZtX3BhZ2VfdCBtLCB2bV9wcm90
X3QgcHJvdCwNCiAJICAgYm9vbGVhbl90IHdpcmVkKQ0KIHsNCi0Jdm1fcGFk
ZHJfdCBwYSwgb3BhOw0KLQlwdF9lbnRyeV90ICpwdGUsIG9yaWdwdGUsIG5l
d3B0ZTsNCisJdm1fb2Zmc2V0X3QgcGE7DQorCXJlZ2lzdGVyIHVuc2lnbmVk
ICpwdGU7DQorCXZtX29mZnNldF90IG9wYTsNCisJdm1fb2Zmc2V0X3Qgb3Jp
Z3B0ZSwgbmV3cHRlOw0KIAl2bV9wYWdlX3QgbXB0ZTsNCiANCiAJaWYgKHBt
YXAgPT0gTlVMTCkNCkBAIC0xODQ3LDE1ICsyMDIxLDE1IEBADQogCX0NCiAj
aWYgMCAmJiBkZWZpbmVkKFBNQVBfRElBR05PU1RJQykNCiAJZWxzZSB7DQot
CQlwZF9lbnRyeV90ICpwZGVhZGRyID0gcG1hcF9wZGUocG1hcCwgdmEpOw0K
LQkJaWYgKCgob3JpZ3B0ZSA9ICpwZGVhZGRyKSAmIFBHX1YpID09IDApIHsg
DQorCQl2bV9vZmZzZXRfdCAqcGRlYWRkciA9ICh2bV9vZmZzZXRfdCAqKXBt
YXBfcGRlKHBtYXAsIHZhKTsNCisJCWlmICgoKG9yaWdwdGUgPSAodm1fb2Zm
c2V0X3QpICpwZGVhZGRyKSAmIFBHX1YpID09IDApIHsgDQogCQkJcGFuaWMo
InBtYXBfZW50ZXI6IGludmFsaWQga2VybmVsIHBhZ2UgdGFibGUgcGFnZSgw
KSwgcGRpcj0lcCwgcGRlPSVwLCB2YT0lcFxuIiwNCiAJCQkJcG1hcC0+cG1f
cGRpcltQVERQVERJXSwgb3JpZ3B0ZSwgdmEpOw0KIAkJfQ0KIAkJaWYgKHNt
cF9hY3RpdmUpIHsNCi0JCQlwZGVhZGRyID0gSWRsZVBURFNbY3B1aWRdOw0K
KwkJCXBkZWFkZHIgPSAodm1fb2Zmc2V0X3QgKikgSWRsZVBURFNbY3B1aWRd
Ow0KIAkJCWlmICgoKG5ld3B0ZSA9IHBkZWFkZHJbdmEgPj4gUERSU0hJRlRd
KSAmIFBHX1YpID09IDApIHsNCi0JCQkJaWYgKG15X2lkbGVQVEQgIT0gdnRv
cGh5cyhwZGVhZGRyKSkNCisJCQkJaWYgKCh2bV9vZmZzZXRfdCkgbXlfaWRs
ZVBURCAhPSAodm1fb2Zmc2V0X3QpIHZ0b3BoeXMocGRlYWRkcikpDQogCQkJ
CQlwcmludGYoInBkZSBtaXNtYXRjaDogJXgsICV4XG4iLCBteV9pZGxlUFRE
LCBwZGVhZGRyKTsNCiAJCQkJcHJpbnRmKCJjcHVpZDogJWQsIHBkZWFkZHI6
IDB4JXhcbiIsIGNwdWlkLCBwZGVhZGRyKTsNCiAJCQkJcGFuaWMoInBtYXBf
ZW50ZXI6IGludmFsaWQga2VybmVsIHBhZ2UgdGFibGUgcGFnZSgxKSwgcGRp
cj0lcCwgbnBkZT0lcCwgcGRlPSVwLCB2YT0lcFxuIiwNCkBAIC0xODcxLDEy
ICsyMDQ1LDEyIEBADQogCSAqIFBhZ2UgRGlyZWN0b3J5IHRhYmxlIGVudHJ5
IG5vdCB2YWxpZCwgd2UgbmVlZCBhIG5ldyBQVCBwYWdlDQogCSAqLw0KIAlp
ZiAocHRlID09IE5VTEwpIHsNCi0JCXBhbmljKCJwbWFwX2VudGVyOiBpbnZh
bGlkIHBhZ2UgZGlyZWN0b3J5IHBkaXI9JSNsbHgsIHZhPSUjeFxuIiwNCi0J
CQkodV9pbnQ2NF90KXBtYXAtPnBtX3BkaXJbUFREUFRESV0sIHZhKTsNCisJ
CXBhbmljKCJwbWFwX2VudGVyOiBpbnZhbGlkIHBhZ2UgZGlyZWN0b3J5LCBw
ZGlyPSVwLCB2YT0weCV4XG4iLA0KKwkJCSh2b2lkICopcG1hcC0+cG1fcGRp
cltQVERQVERJXSwgdmEpOw0KIAl9DQogDQogCXBhID0gVk1fUEFHRV9UT19Q
SFlTKG0pICYgUEdfRlJBTUU7DQotCW9yaWdwdGUgPSAqcHRlOw0KKwlvcmln
cHRlID0gKih2bV9vZmZzZXRfdCAqKXB0ZTsNCiAJb3BhID0gb3JpZ3B0ZSAm
IFBHX0ZSQU1FOw0KIA0KIAlpZiAob3JpZ3B0ZSAmIFBHX1BTKQ0KQEAgLTE4
ODUsNyArMjA1OSw3IEBADQogCS8qDQogCSAqIE1hcHBpbmcgaGFzIG5vdCBj
aGFuZ2VkLCBtdXN0IGJlIHByb3RlY3Rpb24gb3Igd2lyaW5nIGNoYW5nZS4N
CiAJICovDQotCWlmICgob3JpZ3B0ZSAmIFBHX1YpICYmIChvcGEgPT0gcGEp
KSB7DQorCWlmIChvcmlncHRlICYmIChvcGEgPT0gcGEpKSB7DQogCQkvKg0K
IAkJICogV2lyaW5nIGNoYW5nZSwganVzdCB1cGRhdGUgc3RhdHMuIFdlIGRv
bid0IHdvcnJ5IGFib3V0DQogCQkgKiB3aXJpbmcgUFQgcGFnZXMgYXMgdGhl
eSByZW1haW4gcmVzaWRlbnQgYXMgbG9uZyBhcyB0aGVyZQ0KQEAgLTE5MTEs
MTAgKzIwODUsMTYgQEANCiAJCWlmIChtcHRlKQ0KIAkJCW1wdGUtPmhvbGRf
Y291bnQtLTsNCiANCi0JCWlmICgocHJvdCAmIFZNX1BST1RfV1JJVEUpKSB7
DQorCQlpZiAoKHByb3QgJiBWTV9QUk9UX1dSSVRFKSAmJiAob3JpZ3B0ZSAm
IFBHX1YpKSB7DQogCQkJaWYgKChvcmlncHRlICYgUEdfUlcpID09IDApIHsN
CiAJCQkJKnB0ZSB8PSBQR19SVzsNCi0JCQkJcG1hcF9UTEJfaW52YWxpZGF0
ZShwbWFwLCB2YSk7DQorI2lmZGVmIFNNUA0KKwkJCQljcHVfaW52bHBnKCh2
b2lkICopdmEpOw0KKwkJCQlpZiAocG1hcC0+cG1fYWN0aXZlICYgb3RoZXJf
Y3B1cykNCisJCQkJCXNtcF9pbnZsdGxiKCk7DQorI2Vsc2UNCisJCQkJaW52
bHRsYl8xcGcodmEpOw0KKyNlbmRpZg0KIAkJCX0NCiAJCQlyZXR1cm47DQog
CQl9DQpAQCAtMTkzMiwxMiArMjExMiwxMiBAQA0KIAkJCXBhIHw9IFBHX01B
TkFHRUQ7DQogCQl9DQogCQlnb3RvIHZhbGlkYXRlOw0KLQl9DQorCX0gDQog
CS8qDQogCSAqIE1hcHBpbmcgaGFzIGNoYW5nZWQsIGludmFsaWRhdGUgb2xk
IHJhbmdlIGFuZCBmYWxsIHRocm91Z2ggdG8NCiAJICogaGFuZGxlIHZhbGlk
YXRpbmcgbmV3IG1hcHBpbmcuDQogCSAqLw0KLQlpZiAoKG9yaWdwdGUgJiBQ
R19WKSkgew0KKwlpZiAob3BhKSB7DQogCQlpbnQgZXJyOw0KIAkJZXJyID0g
cG1hcF9yZW1vdmVfcHRlKHBtYXAsIHB0ZSwgdmEpOw0KIAkJaWYgKGVycikN
CkBAIC0xOTQ5LDcgKzIxMjksOCBAQA0KIAkgKiByYWlzZSBJUEwgd2hpbGUg
bWFuaXB1bGF0aW5nIHB2X3RhYmxlIHNpbmNlIHBtYXBfZW50ZXIgY2FuIGJl
DQogCSAqIGNhbGxlZCBhdCBpbnRlcnJ1cHQgdGltZS4NCiAJICovDQotCWlm
IChwbWFwX2luaXRpYWxpemVkICYmICEobS0+ZmxhZ3MgJiAoUEdfRklDVElU
SU9VU3xQR19VTk1BTkFHRUQpKSkgew0KKwlpZiAocG1hcF9pbml0aWFsaXpl
ZCAmJiANCisJICAgIChtLT5mbGFncyAmIChQR19GSUNUSVRJT1VTfFBHX1VO
TUFOQUdFRCkpID09IDApIHsNCiAJCXBtYXBfaW5zZXJ0X2VudHJ5KHBtYXAs
IHZhLCBtcHRlLCBtKTsNCiAJCXBhIHw9IFBHX01BTkFHRUQ7DQogCX0NCkBA
IC0xOTY1LDcgKzIxNDYsNyBAQA0KIAkvKg0KIAkgKiBOb3cgdmFsaWRhdGUg
bWFwcGluZyB3aXRoIGRlc2lyZWQgcHJvdGVjdGlvbi93aXJpbmcuDQogCSAq
Lw0KLQluZXdwdGUgPSBwYSB8IHB0ZV9wcm90KHBtYXAsIHByb3QpIHwgUEdf
VjsNCisJbmV3cHRlID0gKHZtX29mZnNldF90KSAocGEgfCBwdGVfcHJvdChw
bWFwLCBwcm90KSB8IFBHX1YpOw0KIA0KIAlpZiAod2lyZWQpDQogCQluZXdw
dGUgfD0gUEdfVzsNCkBAIC0xOTgwLDcgKzIxNjEsMTUgQEANCiAJICovDQog
CWlmICgob3JpZ3B0ZSAmIH4oUEdfTXxQR19BKSkgIT0gbmV3cHRlKSB7DQog
CQkqcHRlID0gbmV3cHRlIHwgUEdfQTsNCi0JCXBtYXBfVExCX2ludmFsaWRh
dGUocG1hcCwgdmEpOw0KKwkJLyppZiAob3JpZ3B0ZSkqLyB7DQorI2lmZGVm
IFNNUA0KKwkJCWNwdV9pbnZscGcoKHZvaWQgKil2YSk7DQorCQkJaWYgKHBt
YXAtPnBtX2FjdGl2ZSAmIG90aGVyX2NwdXMpDQorCQkJCXNtcF9pbnZsdGxi
KCk7DQorI2Vsc2UNCisJCQlpbnZsdGxiXzFwZyh2YSk7DQorI2VuZGlmDQor
CQl9DQogCX0NCiB9DQogDQpAQCAtMTk5NiwxMCArMjE4NSwxNCBAQA0KICAq
Lw0KIA0KIHN0YXRpYyB2bV9wYWdlX3QNCi1wbWFwX2VudGVyX3F1aWNrKHBt
YXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgdm1fcGFnZV90IG0sIHZtX3Bh
Z2VfdCBtcHRlKQ0KK3BtYXBfZW50ZXJfcXVpY2socG1hcCwgdmEsIG0sIG1w
dGUpDQorCXJlZ2lzdGVyIHBtYXBfdCBwbWFwOw0KKwl2bV9vZmZzZXRfdCB2
YTsNCisJdm1fcGFnZV90IG07DQorCXZtX3BhZ2VfdCBtcHRlOw0KIHsNCi0J
cHRfZW50cnlfdCAqcHRlOw0KLQl2bV9wYWRkcl90IHBhOw0KKwl1bnNpZ25l
ZCAqcHRlOw0KKwl2bV9vZmZzZXRfdCBwYTsNCiANCiAJLyoNCiAJICogSW4g
dGhlIGNhc2UgdGhhdCBhIHBhZ2UgdGFibGUgcGFnZSBpcyBub3QNCkBAIC0y
MDA3LDcgKzIyMDAsNyBAQA0KIAkgKi8NCiAJaWYgKHZhIDwgVVBUX01JTl9B
RERSRVNTKSB7DQogCQl1bnNpZ25lZCBwdGVwaW5kZXg7DQotCQlwZF9lbnRy
eV90IHBkZTsNCisJCXZtX29mZnNldF90IHB0ZXBhOw0KIA0KIAkJLyoNCiAJ
CSAqIENhbGN1bGF0ZSBwYWdldGFibGUgcGFnZSBpbmRleA0KQEAgLTIwMjAs
MjAgKzIyMTMsMjAgQEANCiAJCQkvKg0KIAkJCSAqIEdldCB0aGUgcGFnZSBk
aXJlY3RvcnkgZW50cnkNCiAJCQkgKi8NCi0JCQlwZGUgPSBwbWFwLT5wbV9w
ZGlyW3B0ZXBpbmRleF07DQorCQkJcHRlcGEgPSAodm1fb2Zmc2V0X3QpIHBt
YXAtPnBtX3BkaXJbcHRlcGluZGV4XTsNCiANCiAJCQkvKg0KIAkJCSAqIElm
IHRoZSBwYWdlIHRhYmxlIHBhZ2UgaXMgbWFwcGVkLCB3ZSBqdXN0IGluY3Jl
bWVudA0KIAkJCSAqIHRoZSBob2xkIGNvdW50LCBhbmQgYWN0aXZhdGUgaXQu
DQogCQkJICovDQotCQkJaWYgKChwZGUgJiBQR19WKSkgew0KLQkJCQlpZiAo
cGRlICYgUEdfUFMpDQorCQkJaWYgKHB0ZXBhKSB7DQorCQkJCWlmIChwdGVw
YSAmIFBHX1BTKQ0KIAkJCQkJcGFuaWMoInBtYXBfZW50ZXJfcXVpY2s6IHVu
ZXhwZWN0ZWQgbWFwcGluZyBpbnRvIDRNQiBwYWdlIik7DQogCQkJCWlmIChw
bWFwLT5wbV9wdHBoaW50ICYmDQotCQkJCSAgICAocG1hcC0+cG1fcHRwaGlu
dC0+cGluZGV4ID09IHB0ZXBpbmRleCkpIHsNCisJCQkJCShwbWFwLT5wbV9w
dHBoaW50LT5waW5kZXggPT0gcHRlcGluZGV4KSkgew0KIAkJCQkJbXB0ZSA9
IHBtYXAtPnBtX3B0cGhpbnQ7DQogCQkJCX0gZWxzZSB7DQotCQkJCQltcHRl
ID0gcG1hcF9wYWdlX2xvb2t1cChwbWFwLT5wbV9wdGVvYmosIHB0ZXBpbmRl
eCk7DQorCQkJCQltcHRlID0gcG1hcF9wYWdlX2xvb2t1cCggcG1hcC0+cG1f
cHRlb2JqLCBwdGVwaW5kZXgpOw0KIAkJCQkJcG1hcC0+cG1fcHRwaGludCA9
IG1wdGU7DQogCQkJCX0NCiAJCQkJaWYgKG1wdGUgPT0gTlVMTCkNCkBAIC0y
MDUwLDEwICsyMjQzLDEwIEBADQogCS8qDQogCSAqIFRoaXMgY2FsbCB0byB2
dG9wdGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCB3ZSBhcmUNCiAJICog
ZW50ZXJpbmcgdGhlIHBhZ2UgaW50byB0aGUgY3VycmVudCBwbWFwLiAgSW4g
b3JkZXIgdG8gc3VwcG9ydA0KLQkgKiBxdWljayBlbnRyeSBpbnRvIGFueSBw
bWFwLCBvbmUgd291bGQgbGlrZWx5IHVzZSBwbWFwX3B0ZS4NCisJICogcXVp
Y2sgZW50cnkgaW50byBhbnkgcG1hcCwgb25lIHdvdWxkIGxpa2VseSB1c2Ug
cG1hcF9wdGVfcXVpY2suDQogCSAqIEJ1dCB0aGF0IGlzbid0IGFzIHF1aWNr
IGFzIHZ0b3B0ZS4NCiAJICovDQotCXB0ZSA9IHZ0b3B0ZSh2YSk7DQorCXB0
ZSA9ICh1bnNpZ25lZCAqKXZ0b3B0ZSh2YSk7DQogCWlmICgqcHRlKSB7DQog
CQlpZiAobXB0ZSkNCiAJCQlwbWFwX3Vud2lyZV9wdGVfaG9sZChwbWFwLCBt
cHRlKTsNCkBAIC0yMDkxLDcgKzIyODQsNyBAQA0KICAqIHRvIGJlIHVzZWQg
Zm9yIHBhbmljIGR1bXBzLg0KICAqLw0KIHZvaWQgKg0KLXBtYXBfa2VudGVy
X3RlbXBvcmFyeSh2bV9wYWRkcl90IHBhLCBpbnQgaSkNCitwbWFwX2tlbnRl
cl90ZW1wb3Jhcnkodm1fb2Zmc2V0X3QgcGEsIGludCBpKQ0KIHsNCiAJcG1h
cF9rZW50ZXIoKHZtX29mZnNldF90KWNyYXNoZHVtcG1hcCArIChpICogUEFH
RV9TSVpFKSwgcGEpOw0KIAlyZXR1cm4gKCh2b2lkICopY3Jhc2hkdW1wbWFw
KTsNCkBAIC0yMTI2LDE2ICsyMzE5LDE2IEBADQogCSAqIGFyZSB0YWtlbiwg
YnV0IHRoZSBjb2RlIHdvcmtzLg0KIAkgKi8NCiAJaWYgKHBzZWZsYWcgJiYN
Ci0JICAgIChvYmplY3QtPnR5cGUgPT0gT0JKVF9ERVZJQ0UpICYmDQotCSAg
ICAoKGFkZHIgJiAoTkJQRFIgLSAxKSkgPT0gMCkgJiYNCi0JICAgICgoc2l6
ZSAmIChOQlBEUiAtIDEpKSA9PSAwKSApIHsNCisJCShvYmplY3QtPnR5cGUg
PT0gT0JKVF9ERVZJQ0UpICYmDQorCQkoKGFkZHIgJiAoTkJQRFIgLSAxKSkg
PT0gMCkgJiYNCisJCSgoc2l6ZSAmIChOQlBEUiAtIDEpKSA9PSAwKSApIHsN
CiAJCWludCBpOw0KIAkJdm1fcGFnZV90IG1bMV07DQogCQl1bnNpZ25lZCBp
bnQgcHRlcGluZGV4Ow0KIAkJaW50IG5wZGVzOw0KLQkJcGRfZW50cnlfdCBw
dGVwYTsNCisJCXZtX29mZnNldF90IHB0ZXBhOw0KIA0KLQkJaWYgKHBtYXAt
PnBtX3BkaXJbcHRlcGluZGV4ID0gKGFkZHIgPj4gUERSU0hJRlQpXSAmIFBH
X1YpDQorCQlpZiAocG1hcC0+cG1fcGRpcltwdGVwaW5kZXggPSAoYWRkciA+
PiBQRFJTSElGVCldKQ0KIAkJCXJldHVybjsNCiANCiByZXRyeToNCkBAIC0y
MTU4LDcgKzIzNTEsNyBAQA0KIAkJCXZtX3BhZ2Vfd2FrZXVwKHApOw0KIAkJ
fQ0KIA0KLQkJcHRlcGEgPSBWTV9QQUdFX1RPX1BIWVMocCk7DQorCQlwdGVw
YSA9ICh2bV9vZmZzZXRfdCkgVk1fUEFHRV9UT19QSFlTKHApOw0KIAkJaWYg
KHB0ZXBhICYgKE5CUERSIC0gMSkpIHsNCiAJCQlyZXR1cm47DQogCQl9DQpA
QCAtMjE2Nyw5ICsyMzYwLDkgQEANCiANCiAJCXBtYXAtPnBtX3N0YXRzLnJl
c2lkZW50X2NvdW50ICs9IHNpemUgPj4gUEFHRV9TSElGVDsNCiAJCW5wZGVz
ID0gc2l6ZSA+PiBQRFJTSElGVDsNCi0JCWZvcihpID0gMDsgaSA8IG5wZGVz
OyBpKyspIHsNCisJCWZvcihpPTA7aTxucGRlcztpKyspIHsNCiAJCQlwbWFw
LT5wbV9wZGlyW3B0ZXBpbmRleF0gPQ0KLQkJCQlwdGVwYSB8IFBHX1UgfCBQ
R19SVyB8IFBHX1YgfCBQR19QUzsNCisJCQkJKHBkX2VudHJ5X3QpIChwdGVw
YSB8IFBHX1UgfCBQR19SVyB8IFBHX1YgfCBQR19QUyk7DQogCQkJcHRlcGEg
Kz0gTkJQRFI7DQogCQkJcHRlcGluZGV4ICs9IDE7DQogCQl9DQpAQCAtMjIy
MCw3ICsyNDEzLDcgQEANCiAJCQkgICAgY250LnZfZnJlZV9jb3VudCA8IGNu
dC52X2ZyZWVfcmVzZXJ2ZWQpIHsNCiAJCQkJYnJlYWs7DQogCQkJfQ0KLQkJ
CWlmICgocC0+dmFsaWQgJiBWTV9QQUdFX0JJVFNfQUxMKSA9PSBWTV9QQUdF
X0JJVFNfQUxMICYmDQorCQkJaWYgKCgocC0+dmFsaWQgJiBWTV9QQUdFX0JJ
VFNfQUxMKSA9PSBWTV9QQUdFX0JJVFNfQUxMKSAmJg0KIAkJCQkocC0+YnVz
eSA9PSAwKSAmJg0KIAkJCSAgICAocC0+ZmxhZ3MgJiAoUEdfQlVTWSB8IFBH
X0ZJQ1RJVElPVVMpKSA9PSAwKSB7DQogCQkJCWlmICgocC0+cXVldWUgLSBw
LT5wYykgPT0gUFFfQ0FDSEUpDQpAQCAtMjI0OCw3ICsyNDQxLDcgQEANCiAJ
CQl9DQogCQkJcCA9IHZtX3BhZ2VfbG9va3VwKG9iamVjdCwgdG1waWR4ICsg
cGluZGV4KTsNCiAJCQlpZiAocCAmJg0KLQkJCSAgICAocC0+dmFsaWQgJiBW
TV9QQUdFX0JJVFNfQUxMKSA9PSBWTV9QQUdFX0JJVFNfQUxMICYmDQorCQkJ
ICAgICgocC0+dmFsaWQgJiBWTV9QQUdFX0JJVFNfQUxMKSA9PSBWTV9QQUdF
X0JJVFNfQUxMKSAmJg0KIAkJCQkocC0+YnVzeSA9PSAwKSAmJg0KIAkJCSAg
ICAocC0+ZmxhZ3MgJiAoUEdfQlVTWSB8IFBHX0ZJQ1RJVElPVVMpKSA9PSAw
KSB7DQogCQkJCWlmICgocC0+cXVldWUgLSBwLT5wYykgPT0gUFFfQ0FDSEUp
DQpAQCAtMjI2MSw2ICsyNDU0LDcgQEANCiAJCQl9DQogCQl9DQogCX0NCisJ
cmV0dXJuOw0KIH0NCiANCiAvKg0KQEAgLTIzMDgsNyArMjUwMiw3IEBADQog
CW1wdGUgPSBOVUxMOw0KIAlmb3IgKGkgPSAwOyBpIDwgUEFHRU9SREVSX1NJ
WkU7IGkrKykgew0KIAkJdm1fb2JqZWN0X3QgbG9iamVjdDsNCi0JCXB0X2Vu
dHJ5X3QgKnB0ZTsNCisJCXVuc2lnbmVkICpwdGU7DQogDQogCQlhZGRyID0g
YWRkcmEgKyBwbWFwX3ByZWZhdWx0X3BhZ2VvcmRlcltpXTsNCiAJCWlmIChh
ZGRyID4gYWRkcmEgKyAoUEZGT1IgKiBQQUdFX1NJWkUpKQ0KQEAgLTIzMTcs
MTEgKzI1MTEsMTEgQEANCiAJCWlmIChhZGRyIDwgc3RhcnRhIHx8IGFkZHIg
Pj0gZW50cnktPmVuZCkNCiAJCQljb250aW51ZTsNCiANCi0JCWlmICgoKnBt
YXBfcGRlKHBtYXAsIGFkZHIpICYgUEdfVikgPT0gMCkgDQorCQlpZiAoKCpw
bWFwX3BkZShwbWFwLCBhZGRyKSkgPT0gTlVMTCkgDQogCQkJY29udGludWU7
DQogDQotCQlwdGUgPSB2dG9wdGUoYWRkcik7DQotCQlpZiAoKCpwdGUgJiBQ
R19WKSkNCisJCXB0ZSA9ICh1bnNpZ25lZCAqKSB2dG9wdGUoYWRkcik7DQor
CQlpZiAoKnB0ZSkNCiAJCQljb250aW51ZTsNCiANCiAJCXBpbmRleCA9ICgo
YWRkciAtIGVudHJ5LT5zdGFydCkgKyBlbnRyeS0+b2Zmc2V0KSA+PiBQQUdF
X1NISUZUOw0KQEAgLTIzNDEsNyArMjUzNSw3IEBADQogCQlpZiAobSA9PSBO
VUxMKQ0KIAkJCWJyZWFrOw0KIA0KLQkJaWYgKChtLT52YWxpZCAmIFZNX1BB
R0VfQklUU19BTEwpID09IFZNX1BBR0VfQklUU19BTEwgJiYNCisJCWlmICgo
KG0tPnZhbGlkICYgVk1fUEFHRV9CSVRTX0FMTCkgPT0gVk1fUEFHRV9CSVRT
X0FMTCkgJiYNCiAJCQkobS0+YnVzeSA9PSAwKSAmJg0KIAkJICAgIChtLT5m
bGFncyAmIChQR19CVVNZIHwgUEdfRklDVElUSU9VUykpID09IDApIHsNCiAN
CkBAIC0yMzY0LDkgKzI1NTgsMTIgQEANCiAgKgkJCVRoZSBtYXBwaW5nIG11
c3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgcG1hcC4NCiAgKi8NCiB2b2lkDQot
cG1hcF9jaGFuZ2Vfd2lyaW5nKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2
YSwgYm9vbGVhbl90IHdpcmVkKQ0KK3BtYXBfY2hhbmdlX3dpcmluZyhwbWFw
LCB2YSwgd2lyZWQpDQorCXJlZ2lzdGVyIHBtYXBfdCBwbWFwOw0KKwl2bV9v
ZmZzZXRfdCB2YTsNCisJYm9vbGVhbl90IHdpcmVkOw0KIHsNCi0JcHRfZW50
cnlfdCAqcHRlOw0KKwlyZWdpc3RlciB1bnNpZ25lZCAqcHRlOw0KIA0KIAlp
ZiAocG1hcCA9PSBOVUxMKQ0KIAkJcmV0dXJuOw0KQEAgLTI0MDUsMjEgKzI2
MDIsMzIgQEANCiAJdm1fb2Zmc2V0X3QgYWRkcjsNCiAJdm1fb2Zmc2V0X3Qg
ZW5kX2FkZHIgPSBzcmNfYWRkciArIGxlbjsNCiAJdm1fb2Zmc2V0X3QgcGRu
eHQ7DQotCXZtX3BhZGRyX3Qgc3JjX2ZyYW1lOw0KKwl1bnNpZ25lZCBzcmNf
ZnJhbWUsIGRzdF9mcmFtZTsNCiAJdm1fcGFnZV90IG07DQogDQogCWlmIChk
c3RfYWRkciAhPSBzcmNfYWRkcikNCiAJCXJldHVybjsNCiANCi0Jc3JjX2Zy
YW1lID0gc3JjX3BtYXAtPnBtX3BkaXJbUFREUFRESV0gJiBQR19GUkFNRTsN
Ci0JaWYgKHNyY19mcmFtZSAhPSAoUFREcGRlWzBdICYgUEdfRlJBTUUpKSB7
DQorCXNyY19mcmFtZSA9ICgodW5zaWduZWQpIHNyY19wbWFwLT5wbV9wZGly
W1BURFBUREldKSAmIFBHX0ZSQU1FOw0KKwlpZiAoc3JjX2ZyYW1lICE9ICgo
KHVuc2lnbmVkKSBQVERwZGUpICYgUEdfRlJBTUUpKSB7DQogCQlyZXR1cm47
DQogCX0NCiANCisJZHN0X2ZyYW1lID0gKCh1bnNpZ25lZCkgZHN0X3BtYXAt
PnBtX3BkaXJbUFREUFRESV0pICYgUEdfRlJBTUU7DQorCWlmIChkc3RfZnJh
bWUgIT0gKCgodW5zaWduZWQpIEFQVERwZGUpICYgUEdfRlJBTUUpKSB7DQor
CQlBUFREcGRlID0gKHBkX2VudHJ5X3QpIChkc3RfZnJhbWUgfCBQR19SVyB8
IFBHX1YpOw0KKyNpZiBkZWZpbmVkKFNNUCkNCisJCS8qIFRoZSBwYWdlIGRp
cmVjdG9yeSBpcyBub3Qgc2hhcmVkIGJldHdlZW4gQ1BVcyAqLw0KKwkJY3B1
X2ludmx0bGIoKTsNCisjZWxzZQ0KKwkJaW52bHRsYigpOw0KKyNlbmRpZg0K
Kwl9DQorDQogCWZvcihhZGRyID0gc3JjX2FkZHI7IGFkZHIgPCBlbmRfYWRk
cjsgYWRkciA9IHBkbnh0KSB7DQotCQlwdF9lbnRyeV90ICpzcmNfcHRlLCAq
ZHN0X3B0ZTsNCisJCXVuc2lnbmVkICpzcmNfcHRlLCAqZHN0X3B0ZTsNCiAJ
CXZtX3BhZ2VfdCBkc3RtcHRlLCBzcmNtcHRlOw0KLQkJcGRfZW50cnlfdCBz
cmNwdGVwYWRkcjsNCisJCXZtX29mZnNldF90IHNyY3B0ZXBhZGRyOw0KIAkJ
dW5zaWduZWQgcHRlcGluZGV4Ow0KIA0KIAkJaWYgKGFkZHIgPj0gVVBUX01J
Tl9BRERSRVNTKQ0KQEAgLTI0MzQsMzIgKzI2NDIsMzMgQEANCiAJCSAgICBw
dl9lbnRyeV9jb3VudCA+IHB2X2VudHJ5X2hpZ2hfd2F0ZXIpDQogCQkJYnJl
YWs7DQogCQkNCi0JCXBkbnh0ID0gKGFkZHIgKyBOQlBEUikgJiB+KE5CUERS
IC0gMSk7DQorCQlwZG54dCA9ICgoYWRkciArIFBBR0VfU0laRSpOUFRFUEcp
ICYgfihQQUdFX1NJWkUqTlBURVBHIC0gMSkpOw0KIAkJcHRlcGluZGV4ID0g
YWRkciA+PiBQRFJTSElGVDsNCiANCi0JCXNyY3B0ZXBhZGRyID0gc3JjX3Bt
YXAtPnBtX3BkaXJbcHRlcGluZGV4XTsNCisJCXNyY3B0ZXBhZGRyID0gKHZt
X29mZnNldF90KSBzcmNfcG1hcC0+cG1fcGRpcltwdGVwaW5kZXhdOw0KIAkJ
aWYgKHNyY3B0ZXBhZGRyID09IDApDQogCQkJY29udGludWU7DQogCQkJDQog
CQlpZiAoc3JjcHRlcGFkZHIgJiBQR19QUykgew0KIAkJCWlmIChkc3RfcG1h
cC0+cG1fcGRpcltwdGVwaW5kZXhdID09IDApIHsNCi0JCQkJZHN0X3BtYXAt
PnBtX3BkaXJbcHRlcGluZGV4XSA9IHNyY3B0ZXBhZGRyOw0KLQkJCQlkc3Rf
cG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQgKz0gTlBERVBHOw0KKwkJ
CQlkc3RfcG1hcC0+cG1fcGRpcltwdGVwaW5kZXhdID0gKHBkX2VudHJ5X3Qp
IHNyY3B0ZXBhZGRyOw0KKwkJCQlkc3RfcG1hcC0+cG1fc3RhdHMucmVzaWRl
bnRfY291bnQgKz0gTkJQRFIgLyBQQUdFX1NJWkU7DQogCQkJfQ0KIAkJCWNv
bnRpbnVlOw0KIAkJfQ0KIA0KIAkJc3JjbXB0ZSA9IHZtX3BhZ2VfbG9va3Vw
KHNyY19wbWFwLT5wbV9wdGVvYmosIHB0ZXBpbmRleCk7DQogCQlpZiAoKHNy
Y21wdGUgPT0gTlVMTCkgfHwNCi0JCSAgICAoc3JjbXB0ZS0+aG9sZF9jb3Vu
dCA9PSAwKSB8fCAoc3JjbXB0ZS0+ZmxhZ3MgJiBQR19CVVNZKSkNCisJCQko
c3JjbXB0ZS0+aG9sZF9jb3VudCA9PSAwKSB8fCAoc3JjbXB0ZS0+ZmxhZ3Mg
JiBQR19CVVNZKSkNCiAJCQljb250aW51ZTsNCiANCiAJCWlmIChwZG54dCA+
IGVuZF9hZGRyKQ0KIAkJCXBkbnh0ID0gZW5kX2FkZHI7DQogDQotCQlzcmNf
cHRlID0gdnRvcHRlKGFkZHIpOw0KKwkJc3JjX3B0ZSA9ICh1bnNpZ25lZCAq
KSB2dG9wdGUoYWRkcik7DQorCQlkc3RfcHRlID0gKHVuc2lnbmVkICopIGF2
dG9wdGUoYWRkcik7DQogCQl3aGlsZSAoYWRkciA8IHBkbnh0KSB7DQotCQkJ
cHRfZW50cnlfdCBwdGV0ZW1wOw0KKwkJCXVuc2lnbmVkIHB0ZXRlbXA7DQog
CQkJcHRldGVtcCA9ICpzcmNfcHRlOw0KIAkJCS8qDQogCQkJICogd2Ugb25s
eSB2aXJ0dWFsIGNvcHkgbWFuYWdlZCBwYWdlcw0KQEAgLTI0NzEsNyArMjY4
MCw2IEBADQogCQkJCSAqIGJsb2NrLg0KIAkJCQkgKi8NCiAJCQkJZHN0bXB0
ZSA9IHBtYXBfYWxsb2NwdGUoZHN0X3BtYXAsIGFkZHIpOw0KLQkJCQlkc3Rf
cHRlID0gcG1hcF9wdGUoZHN0X3BtYXAsIGFkZHIpOw0KIAkJCQlpZiAoKCpk
c3RfcHRlID09IDApICYmIChwdGV0ZW1wID0gKnNyY19wdGUpKSB7DQogCQkJ
CQkvKg0KIAkJCQkJICogQ2xlYXIgdGhlIG1vZGlmaWVkIGFuZA0KQEAgLTI0
OTEsOSArMjY5OSwxMCBAQA0KIAkJCX0NCiAJCQlhZGRyICs9IFBBR0VfU0la
RTsNCiAJCQlzcmNfcHRlKys7DQorCQkJZHN0X3B0ZSsrOw0KIAkJfQ0KIAl9
DQotfQ0KK30JDQogDQogLyoNCiAgKglSb3V0aW5lOglwbWFwX2tlcm5lbA0K
QEAgLTI1MTEsMjUgKzI3MjAsMzkgQEANCiAgKgl0aGUgcGFnZSBpbnRvIEtW
TSBhbmQgdXNpbmcgYnplcm8gdG8gY2xlYXIgaXRzIGNvbnRlbnRzLg0KICAq
Lw0KIHZvaWQNCi1wbWFwX3plcm9fcGFnZSh2bV9wYWRkcl90IHBoeXMpDQor
cG1hcF96ZXJvX3BhZ2UocGh5cykNCisJdm1fb2Zmc2V0X3QgcGh5czsNCiB7
DQotCWlmICgqQ01BUDMpDQotCQlwYW5pYygicG1hcF96ZXJvX3BhZ2U6IENN
QVAzIGJ1c3kiKTsNCi0NCi0JKkNNQVAzID0gUEdfViB8IFBHX1JXIHwgKHBo
eXMgJiBQR19GUkFNRSkgfCBQR19BIHwgUEdfTTsNCiAjaWZkZWYgU01QDQot
CWNwdV9pbnZscGcoQ0FERFIzKTsNCi0jZWxzZQ0KLQlpbnZsdGxiXzFwZygo
dm1fb2Zmc2V0X3QpQ0FERFIzKTsNCisJaWYgKCooaW50ICopIHBydl9DTUFQ
MykNCisJCXBhbmljKCJwbWFwX3plcm9fcGFnZTogcHJ2X0NNQVAzIGJ1c3ki
KTsNCisNCisJKihpbnQgKikgcHJ2X0NNQVAzID0gUEdfViB8IFBHX1JXIHwg
KHBoeXMgJiBQR19GUkFNRSkgfCBQR19BIHwgUEdfTTsNCisJY3B1X2ludmxw
ZyhwcnZfQ0FERFIzKTsNCisNCisjaWYgZGVmaW5lZChJNjg2X0NQVSkNCisJ
aWYgKGNwdV9jbGFzcyA9PSBDUFVDTEFTU182ODYpDQorCQlpNjg2X3BhZ2V6
ZXJvKHBydl9DQUREUjMpOw0KKwllbHNlDQogI2VuZGlmDQorCQliemVybyhw
cnZfQ0FERFIzLCBQQUdFX1NJWkUpOw0KKw0KKwkqKGludCAqKSBwcnZfQ01B
UDMgPSAwOw0KKyNlbHNlDQorCWlmICgqKGludCAqKSBDTUFQMikNCisJCXBh
bmljKCJwbWFwX3plcm9fcGFnZTogQ01BUDIgYnVzeSIpOw0KKw0KKwkqKGlu
dCAqKSBDTUFQMiA9IFBHX1YgfCBQR19SVyB8IChwaHlzICYgUEdfRlJBTUUp
IHwgUEdfQSB8IFBHX007DQorCWludmx0bGJfMXBnKCh2bV9vZmZzZXRfdClD
QUREUjIpOw0KIA0KICNpZiBkZWZpbmVkKEk2ODZfQ1BVKQ0KIAlpZiAoY3B1
X2NsYXNzID09IENQVUNMQVNTXzY4NikNCi0JCWk2ODZfcGFnZXplcm8oQ0FE
RFIzKTsNCisJCWk2ODZfcGFnZXplcm8oQ0FERFIyKTsNCiAJZWxzZQ0KICNl
bmRpZg0KLQkJYnplcm8oQ0FERFIzLCBQQUdFX1NJWkUpOw0KLQkqQ01BUDMg
PSAwOw0KKwkJYnplcm8oQ0FERFIyLCBQQUdFX1NJWkUpOw0KKwkqKGludCAq
KSBDTUFQMiA9IDA7DQorI2VuZGlmDQogfQ0KIA0KIC8qDQpAQCAtMjUzOSwy
NSArMjc2Miw0MSBAQA0KICAqCW9mZiBhbmQgc2l6ZSBtYXkgbm90IGNvdmVy
IGFuIGFyZWEgYmV5b25kIGEgc2luZ2xlIGhhcmR3YXJlIHBhZ2UuDQogICov
DQogdm9pZA0KLXBtYXBfemVyb19wYWdlX2FyZWEodm1fcGFkZHJfdCBwaHlz
LCBpbnQgb2ZmLCBpbnQgc2l6ZSkNCitwbWFwX3plcm9fcGFnZV9hcmVhKHBo
eXMsIG9mZiwgc2l6ZSkNCisJdm1fb2Zmc2V0X3QgcGh5czsNCisJaW50IG9m
ZjsNCisJaW50IHNpemU7DQogew0KLQlpZiAoKkNNQVAzKQ0KLQkJcGFuaWMo
InBtYXBfemVyb19wYWdlOiBDTUFQMyBidXN5Iik7DQotDQotCSpDTUFQMyA9
IFBHX1YgfCBQR19SVyB8IChwaHlzICYgUEdfRlJBTUUpIHwgUEdfQSB8IFBH
X007DQogI2lmZGVmIFNNUA0KLQljcHVfaW52bHBnKENBRERSMyk7DQotI2Vs
c2UNCi0JaW52bHRsYl8xcGcoKHZtX29mZnNldF90KUNBRERSMyk7DQorCWlm
ICgqKGludCAqKSBwcnZfQ01BUDMpDQorCQlwYW5pYygicG1hcF96ZXJvX3Bh
Z2U6IHBydl9DTUFQMyBidXN5Iik7DQorDQorCSooaW50ICopIHBydl9DTUFQ
MyA9IFBHX1YgfCBQR19SVyB8IChwaHlzICYgUEdfRlJBTUUpIHwgUEdfQSB8
IFBHX007DQorCWNwdV9pbnZscGcocHJ2X0NBRERSMyk7DQorDQorI2lmIGRl
ZmluZWQoSTY4Nl9DUFUpDQorCWlmIChjcHVfY2xhc3MgPT0gQ1BVQ0xBU1Nf
Njg2ICYmIG9mZiA9PSAwICYmIHNpemUgPT0gUEFHRV9TSVpFKQ0KKwkJaTY4
Nl9wYWdlemVybyhwcnZfQ0FERFIzKTsNCisJZWxzZQ0KICNlbmRpZg0KKwkJ
Ynplcm8oKGNoYXIgKilwcnZfQ0FERFIzICsgb2ZmLCBzaXplKTsNCisNCisJ
KihpbnQgKikgcHJ2X0NNQVAzID0gMDsNCisjZWxzZQ0KKwlpZiAoKihpbnQg
KikgQ01BUDIpDQorCQlwYW5pYygicG1hcF96ZXJvX3BhZ2U6IENNQVAyIGJ1
c3kiKTsNCisNCisJKihpbnQgKikgQ01BUDIgPSBQR19WIHwgUEdfUlcgfCAo
cGh5cyAmIFBHX0ZSQU1FKSB8IFBHX0EgfCBQR19NOw0KKwlpbnZsdGxiXzFw
Zygodm1fb2Zmc2V0X3QpQ0FERFIyKTsNCiANCiAjaWYgZGVmaW5lZChJNjg2
X0NQVSkNCiAJaWYgKGNwdV9jbGFzcyA9PSBDUFVDTEFTU182ODYgJiYgb2Zm
ID09IDAgJiYgc2l6ZSA9PSBQQUdFX1NJWkUpDQotCQlpNjg2X3BhZ2V6ZXJv
KENBRERSMyk7DQorCQlpNjg2X3BhZ2V6ZXJvKENBRERSMik7DQogCWVsc2UN
CiAjZW5kaWYNCi0JCWJ6ZXJvKENBRERSMyArIG9mZiwgc2l6ZSk7DQotCSpD
TUFQMyA9IDA7DQorCQliemVybygoY2hhciAqKUNBRERSMiArIG9mZiwgc2l6
ZSk7DQorCSooaW50ICopIENNQVAyID0gMDsNCisjZW5kaWYNCiB9DQogDQog
LyoNCkBAIC0yNTY3LDI4ICsyODA2LDQ3IEBADQogICoJdGltZS4NCiAgKi8N
CiB2b2lkDQotcG1hcF9jb3B5X3BhZ2Uodm1fcGFkZHJfdCBzcmMsIHZtX3Bh
ZGRyX3QgZHN0KQ0KK3BtYXBfY29weV9wYWdlKHNyYywgZHN0KQ0KKwl2bV9v
ZmZzZXRfdCBzcmM7DQorCXZtX29mZnNldF90IGRzdDsNCiB7DQotCWlmICgq
Q01BUDEpDQotCQlwYW5pYygicG1hcF9jb3B5X3BhZ2U6IENNQVAxIGJ1c3ki
KTsNCi0JaWYgKCpDTUFQMikNCi0JCXBhbmljKCJwbWFwX2NvcHlfcGFnZTog
Q01BUDIgYnVzeSIpOw0KKyNpZmRlZiBTTVANCisJaWYgKCooaW50ICopIHBy
dl9DTUFQMSkNCisJCXBhbmljKCJwbWFwX2NvcHlfcGFnZTogcHJ2X0NNQVAx
IGJ1c3kiKTsNCisJaWYgKCooaW50ICopIHBydl9DTUFQMikNCisJCXBhbmlj
KCJwbWFwX2NvcHlfcGFnZTogcHJ2X0NNQVAyIGJ1c3kiKTsNCiANCi0JKkNN
QVAxID0gUEdfViB8IChzcmMgJiBQR19GUkFNRSkgfCBQR19BOw0KLQkqQ01B
UDIgPSBQR19WIHwgUEdfUlcgfCAoZHN0ICYgUEdfRlJBTUUpIHwgUEdfQSB8
IFBHX007DQorCSooaW50ICopIHBydl9DTUFQMSA9IFBHX1YgfCAoc3JjICYg
UEdfRlJBTUUpIHwgUEdfQTsNCisJKihpbnQgKikgcHJ2X0NNQVAyID0gUEdf
ViB8IFBHX1JXIHwgKGRzdCAmIFBHX0ZSQU1FKSB8IFBHX0EgfCBQR19NOw0K
IA0KLSNpZmRlZiBTTVANCi0JY3B1X2ludmxwZyhDQUREUjEpOw0KLQljcHVf
aW52bHBnKENBRERSMik7DQorCWNwdV9pbnZscGcocHJ2X0NBRERSMSk7DQor
CWNwdV9pbnZscGcocHJ2X0NBRERSMik7DQorDQorCWJjb3B5KHBydl9DQURE
UjEsIHBydl9DQUREUjIsIFBBR0VfU0laRSk7DQorDQorCSooaW50ICopIHBy
dl9DTUFQMSA9IDA7DQorCSooaW50ICopIHBydl9DTUFQMiA9IDA7DQogI2Vs
c2UNCi0JaW52bHRsYl8xcGcoKHZtX29mZnNldF90KUNBRERSMSk7DQotCWlu
dmx0bGJfMXBnKCh2bV9vZmZzZXRfdClDQUREUjIpOw0KKwlpZiAoKihpbnQg
KikgQ01BUDEgfHwgKihpbnQgKikgQ01BUDIpDQorCQlwYW5pYygicG1hcF9j
b3B5X3BhZ2U6IENNQVAgYnVzeSIpOw0KKw0KKwkqKGludCAqKSBDTUFQMSA9
IFBHX1YgfCAoc3JjICYgUEdfRlJBTUUpIHwgUEdfQTsNCisJKihpbnQgKikg
Q01BUDIgPSBQR19WIHwgUEdfUlcgfCAoZHN0ICYgUEdfRlJBTUUpIHwgUEdf
QSB8IFBHX007DQorI2lmIGRlZmluZWQoSTM4Nl9DUFUpDQorCWlmIChjcHVf
Y2xhc3MgPT0gQ1BVQ0xBU1NfMzg2KSB7DQorCQlpbnZsdGxiKCk7DQorCX0g
ZWxzZQ0KICNlbmRpZg0KKwl7DQorCQlpbnZscGcoKHVfaW50KUNBRERSMSk7
DQorCQlpbnZscGcoKHVfaW50KUNBRERSMik7DQorCX0NCiANCiAJYmNvcHko
Q0FERFIxLCBDQUREUjIsIFBBR0VfU0laRSk7DQogDQotCSpDTUFQMSA9IDA7
DQotCSpDTUFQMiA9IDA7DQorCSooaW50ICopIENNQVAxID0gMDsNCisJKihp
bnQgKikgQ01BUDIgPSAwOw0KKyNlbmRpZg0KIH0NCiANCiANCkBAIC0yNjIy
LDcgKzI4ODAsOSBAQA0KICAqIHN1YnNldCBvZiBwbWFwcyBmb3IgcHJvcGVy
IHBhZ2UgYWdpbmcuDQogICovDQogYm9vbGVhbl90DQotcG1hcF9wYWdlX2V4
aXN0c19xdWljayhwbWFwX3QgcG1hcCwgdm1fcGFnZV90IG0pDQorcG1hcF9w
YWdlX2V4aXN0c19xdWljayhwbWFwLCBtKQ0KKwlwbWFwX3QgcG1hcDsNCisJ
dm1fcGFnZV90IG07DQogew0KIAlwdl9lbnRyeV90IHB2Ow0KIAlpbnQgbG9v
cHMgPSAwOw0KQEAgLTI2NTYsOSArMjkxNiwxMSBAQA0KICAqIGluIHRoZSBj
YXNlIG9mIHJ1bm5pbmcgZG93biBhbiBlbnRpcmUgYWRkcmVzcyBzcGFjZS4N
CiAgKi8NCiB2b2lkDQotcG1hcF9yZW1vdmVfcGFnZXMocG1hcF90IHBtYXAs
IHZtX29mZnNldF90IHN2YSwgdm1fb2Zmc2V0X3QgZXZhKQ0KK3BtYXBfcmVt
b3ZlX3BhZ2VzKHBtYXAsIHN2YSwgZXZhKQ0KKwlwbWFwX3QgcG1hcDsNCisJ
dm1fb2Zmc2V0X3Qgc3ZhLCBldmE7DQogew0KLQlwdF9lbnRyeV90ICpwdGUs
IHRwdGU7DQorCXVuc2lnbmVkICpwdGUsIHRwdGU7DQogCXB2X2VudHJ5X3Qg
cHYsIG5wdjsNCiAJaW50IHM7DQogCXZtX3BhZ2VfdCBtOw0KQEAgLTI2NzEs
NyArMjkzMyw5IEBADQogI2VuZGlmDQogDQogCXMgPSBzcGx2bSgpOw0KLQlm
b3IocHYgPSBUQUlMUV9GSVJTVCgmcG1hcC0+cG1fcHZsaXN0KTsgcHY7IHB2
ID0gbnB2KSB7DQorCWZvcihwdiA9IFRBSUxRX0ZJUlNUKCZwbWFwLT5wbV9w
dmxpc3QpOw0KKwkJcHY7DQorCQlwdiA9IG5wdikgew0KIA0KIAkJaWYgKHB2
LT5wdl92YSA+PSBldmEgfHwgcHYtPnB2X3ZhIDwgc3ZhKSB7DQogCQkJbnB2
ID0gVEFJTFFfTkVYVChwdiwgcHZfcGxpc3QpOw0KQEAgLTI2NzksOSArMjk0
Myw5IEBADQogCQl9DQogDQogI2lmZGVmIFBNQVBfUkVNT1ZFX1BBR0VTX0NV
UlBST0NfT05MWQ0KLQkJcHRlID0gdnRvcHRlKHB2LT5wdl92YSk7DQorCQlw
dGUgPSAodW5zaWduZWQgKil2dG9wdGUocHYtPnB2X3ZhKTsNCiAjZWxzZQ0K
LQkJcHRlID0gcG1hcF9wdGUocHYtPnB2X3BtYXAsIHB2LT5wdl92YSk7DQor
CQlwdGUgPSBwbWFwX3B0ZV9xdWljayhwdi0+cHZfcG1hcCwgcHYtPnB2X3Zh
KTsNCiAjZW5kaWYNCiAJCXRwdGUgPSAqcHRlOw0KIA0KQEAgLTI3MzEsMTAg
KzI5OTUsMTIgQEANCiAgKiBhbmQgYSBsb3Qgb2YgdGhpbmdzIGNvbXBpbGUt
dGltZSBldmFsdWF0ZS4NCiAgKi8NCiBzdGF0aWMgYm9vbGVhbl90DQotcG1h
cF90ZXN0Yml0KHZtX3BhZ2VfdCBtLCBpbnQgYml0KQ0KK3BtYXBfdGVzdGJp
dChtLCBiaXQpDQorCXZtX3BhZ2VfdCBtOw0KKwlpbnQgYml0Ow0KIHsNCiAJ
cHZfZW50cnlfdCBwdjsNCi0JcHRfZW50cnlfdCAqcHRlOw0KKwl1bnNpZ25l
ZCAqcHRlOw0KIAlpbnQgczsNCiANCiAJaWYgKCFwbWFwX2luaXRpYWxpemVk
IHx8IChtLT5mbGFncyAmIFBHX0ZJQ1RJVElPVVMpKQ0KQEAgLTI3NjIsNyAr
MzAyOCw3IEBADQogCQkJY29udGludWU7DQogCQl9DQogI2VuZGlmDQotCQlw
dGUgPSBwbWFwX3B0ZShwdi0+cHZfcG1hcCwgcHYtPnB2X3ZhKTsNCisJCXB0
ZSA9IHBtYXBfcHRlX3F1aWNrKHB2LT5wdl9wbWFwLCBwdi0+cHZfdmEpOw0K
IAkJaWYgKCpwdGUgJiBiaXQpIHsNCiAJCQlzcGx4KHMpOw0KIAkJCXJldHVy
biBUUlVFOw0KQEAgLTI3NzYsMTAgKzMwNDIsMTMgQEANCiAgKiB0aGlzIHJv
dXRpbmUgaXMgdXNlZCB0byBtb2RpZnkgYml0cyBpbiBwdGVzDQogICovDQog
c3RhdGljIF9faW5saW5lIHZvaWQNCi1wbWFwX2NoYW5nZWJpdCh2bV9wYWdl
X3QgbSwgaW50IGJpdCwgYm9vbGVhbl90IHNldGVtKQ0KK3BtYXBfY2hhbmdl
Yml0KG0sIGJpdCwgc2V0ZW0pDQorCXZtX3BhZ2VfdCBtOw0KKwlpbnQgYml0
Ow0KKwlib29sZWFuX3Qgc2V0ZW07DQogew0KLQlwdl9lbnRyeV90IHB2Ow0K
LQlwdF9lbnRyeV90ICpwdGU7DQorCXJlZ2lzdGVyIHB2X2VudHJ5X3QgcHY7
DQorCXJlZ2lzdGVyIHVuc2lnbmVkICpwdGU7DQogCWludCBzOw0KIA0KIAlp
ZiAoIXBtYXBfaW5pdGlhbGl6ZWQgfHwgKG0tPmZsYWdzICYgUEdfRklDVElU
SU9VUykpDQpAQCAtMjgwNywyMSArMzA3NiwyMSBAQA0KIAkJfQ0KICNlbmRp
Zg0KIA0KLQkJcHRlID0gcG1hcF9wdGUocHYtPnB2X3BtYXAsIHB2LT5wdl92
YSk7DQorCQlwdGUgPSBwbWFwX3B0ZV9xdWljayhwdi0+cHZfcG1hcCwgcHYt
PnB2X3ZhKTsNCiANCiAJCWlmIChzZXRlbSkgew0KLQkJCSpwdGUgfD0gYml0
Ow0KKwkJCSooaW50ICopcHRlIHw9IGJpdDsNCiAJCQlwbWFwX1RMQl9pbnZh
bGlkYXRlKHB2LT5wdl9wbWFwLCBwdi0+cHZfdmEpOw0KIAkJfSBlbHNlIHsN
Ci0JCQlwdF9lbnRyeV90IHBiaXRzID0gKnB0ZTsNCisJCQl2bV9vZmZzZXRf
dCBwYml0cyA9ICoodm1fb2Zmc2V0X3QgKilwdGU7DQogCQkJaWYgKHBiaXRz
ICYgYml0KSB7DQogCQkJCWlmIChiaXQgPT0gUEdfUlcpIHsNCiAJCQkJCWlm
IChwYml0cyAmIFBHX00pIHsNCiAJCQkJCQl2bV9wYWdlX2RpcnR5KG0pOw0K
IAkJCQkJfQ0KLQkJCQkJKnB0ZSA9IHBiaXRzICYgfihQR19NfFBHX1JXKTsN
CisJCQkJCSooaW50ICopcHRlID0gcGJpdHMgJiB+KFBHX018UEdfUlcpOw0K
IAkJCQl9IGVsc2Ugew0KLQkJCQkJKnB0ZSA9IHBiaXRzICYgfmJpdDsNCisJ
CQkJCSooaW50ICopcHRlID0gcGJpdHMgJiB+Yml0Ow0KIAkJCQl9DQogCQkJ
CXBtYXBfVExCX2ludmFsaWRhdGUocHYtPnB2X3BtYXAsIHB2LT5wdl92YSk7
DQogCQkJfQ0KQEAgLTI4NDcsMTEgKzMxMTYsMTEgQEANCiAJfQ0KIH0NCiAN
Ci12bV9wYWRkcl90DQordm1fb2Zmc2V0X3QNCiBwbWFwX3BoeXNfYWRkcmVz
cyhwcG4pDQogCWludCBwcG47DQogew0KLQlyZXR1cm4gKGkzODZfcHRvYigo
dm1fcGFkZHJfdClwcG4pKTsNCisJcmV0dXJuIChpMzg2X3B0b2IocHBuKSk7
DQogfQ0KIA0KIC8qDQpAQCAtMjg2OSw4ICszMTM4LDggQEANCiBpbnQNCiBw
bWFwX3RzX3JlZmVyZW5jZWQodm1fcGFnZV90IG0pDQogew0KLQlwdl9lbnRy
eV90IHB2LCBwdmYsIHB2bjsNCi0JcHRfZW50cnlfdCAqcHRlOw0KKwlyZWdp
c3RlciBwdl9lbnRyeV90IHB2LCBwdmYsIHB2bjsNCisJdW5zaWduZWQgKnB0
ZTsNCiAJaW50IHM7DQogCWludCBydHZhbCA9IDA7DQogDQpAQCAtMjg5Myw3
ICszMTYyLDcgQEANCiAJCQlpZiAoIXBtYXBfdHJhY2tfbW9kaWZpZWQocHYt
PnB2X3ZhKSkNCiAJCQkJY29udGludWU7DQogDQotCQkJcHRlID0gcG1hcF9w
dGUocHYtPnB2X3BtYXAsIHB2LT5wdl92YSk7DQorCQkJcHRlID0gcG1hcF9w
dGVfcXVpY2socHYtPnB2X3BtYXAsIHB2LT5wdl92YSk7DQogDQogCQkJaWYg
KHB0ZSAmJiAoKnB0ZSAmIFBHX0EpKSB7DQogCQkJCSpwdGUgJj0gflBHX0E7
DQpAQCAtMjk4MywxMCArMzI1MiwxMiBAQA0KICAqIE5PVCByZWFsIG1lbW9y
eS4NCiAgKi8NCiB2b2lkICoNCi1wbWFwX21hcGRldih2bV9wYWRkcl90IHBh
LCB2bV9zaXplX3Qgc2l6ZSkNCitwbWFwX21hcGRldihwYSwgc2l6ZSkNCisJ
dm1fb2Zmc2V0X3QgcGE7DQorCXZtX3NpemVfdCBzaXplOw0KIHsNCiAJdm1f
b2Zmc2V0X3QgdmEsIHRtcHZhLCBvZmZzZXQ7DQotCXB0X2VudHJ5X3QgKnB0
ZTsNCisJdW5zaWduZWQgKnB0ZTsNCiANCiAJb2Zmc2V0ID0gcGEgJiBQQUdF
X01BU0s7DQogCXNpemUgPSByb3VuZHVwKG9mZnNldCArIHNpemUsIFBBR0Vf
U0laRSk7DQpAQCAtMjk5Nyw3ICszMjY4LDcgQEANCiANCiAJcGEgPSBwYSAm
IFBHX0ZSQU1FOw0KIAlmb3IgKHRtcHZhID0gdmE7IHNpemUgPiAwOykgew0K
LQkJcHRlID0gdnRvcHRlKHRtcHZhKTsNCisJCXB0ZSA9ICh1bnNpZ25lZCAq
KXZ0b3B0ZSh0bXB2YSk7DQogCQkqcHRlID0gcGEgfCBQR19SVyB8IFBHX1Yg
fCBwZ2VmbGFnOw0KIAkJc2l6ZSAtPSBQQUdFX1NJWkU7DQogCQl0bXB2YSAr
PSBQQUdFX1NJWkU7DQpAQCAtMzAwOSw3ICszMjgwLDkgQEANCiB9DQogDQog
dm9pZA0KLXBtYXBfdW5tYXBkZXYodm1fb2Zmc2V0X3QgdmEsIHZtX3NpemVf
dCBzaXplKQ0KK3BtYXBfdW5tYXBkZXYodmEsIHNpemUpDQorCXZtX29mZnNl
dF90IHZhOw0KKwl2bV9zaXplX3Qgc2l6ZTsNCiB7DQogCXZtX29mZnNldF90
IGJhc2UsIG9mZnNldDsNCiANCkBAIC0zMDIzLDkgKzMyOTYsMTIgQEANCiAg
KiBwZXJmb3JtIHRoZSBwbWFwIHdvcmsgZm9yIG1pbmNvcmUNCiAgKi8NCiBp
bnQNCi1wbWFwX21pbmNvcmUocG1hcF90IHBtYXAsIHZtX29mZnNldF90IGFk
ZHIpDQorcG1hcF9taW5jb3JlKHBtYXAsIGFkZHIpDQorCXBtYXBfdCBwbWFw
Ow0KKwl2bV9vZmZzZXRfdCBhZGRyOw0KIHsNCi0JcHRfZW50cnlfdCAqcHRl
cCwgcHRlOw0KKwkNCisJdW5zaWduZWQgKnB0ZXAsIHB0ZTsNCiAJdm1fcGFn
ZV90IG07DQogCWludCB2YWwgPSAwOw0KIAkNCkBAIC0zMDM1LDcgKzMzMTEs
NyBAQA0KIAl9DQogDQogCWlmICgocHRlID0gKnB0ZXApICE9IDApIHsNCi0J
CXZtX3BhZGRyX3QgcGE7DQorCQl2bV9vZmZzZXRfdCBwYTsNCiANCiAJCXZh
bCA9IE1JTkNPUkVfSU5DT1JFOw0KIAkJaWYgKChwdGUgJiBQR19NQU5BR0VE
KSA9PSAwKQ0KQEAgLTMwODYsMTEgKzMzNjIsNyBAQA0KICNpZiBkZWZpbmVk
KFNXVENIX09QVElNX1NUQVRTKQ0KIAl0bGJfZmx1c2hfY291bnQrKzsNCiAj
ZW5kaWYNCi0jaWZkZWYgUEFFDQotCWxvYWRfY3IzKHAtPnBfYWRkci0+dV9w
Y2IucGNiX2NyMyA9IHZ0b3BoeXMocG1hcC0+cG1fcGRwdCkpOw0KLSNlbHNl
DQogCWxvYWRfY3IzKHAtPnBfYWRkci0+dV9wY2IucGNiX2NyMyA9IHZ0b3Bo
eXMocG1hcC0+cG1fcGRpcikpOw0KLSNlbmRpZg0KIH0NCiANCiB2bV9vZmZz
ZXRfdA0KQEAgLTMxMDUsNzMgKzMzNzcsNiBAQA0KIAlyZXR1cm4gYWRkcjsN
CiB9DQogDQotI2lmZGVmIFBBRQ0KLS8qDQotICogQWxsb2NhdGUgUERQVCBp
biBsb3dlciAzMi1iaXQgcGFnZXMNCi0gKi8NCi1zdHJ1Y3QgcGRwdF9wYWdl
IHsNCi0JU0xJU1RfRU5UUlkocGRwdF9wYWdlKQlsaW5rOw0KLQl1X2ludDMy
X3QJCWF2YWlsOw0KLQl2bV9wYWRkcl90CQlwaHlzOw0KLQl1X2ludDMyX3QJ
CWJpdHNbNF07DQotfTsNCi0NCi1TTElTVF9IRUFEKCxwZHB0X3BhZ2UpIHBk
cHRfcGFnZXMgPSBTTElTVF9IRUFEX0lOSVRJQUxJWkVSKCZwZHB0X3BhZ2Vz
KTsNCi1pbnQgcGRwdF9hdmFpbCA9IDA7DQotDQotc3RhdGljIHBkcHRfZW50
cnlfdCAqDQotcG1hcF9hbGxvY19wZHB0KCkNCi17DQotCXN0cnVjdCBwZHB0
X3BhZ2UgKnBwOw0KLQlwZHB0X2VudHJ5X3QgKnBkcHQgPSAwOw0KLQlpbnQg
aTsNCi0NCi0JaWYgKHBkcHRfYXZhaWwgPT0gMCkgew0KLQkJcHAgPSAoc3Ry
dWN0IHBkcHRfcGFnZSAqKWNvbnRpZ21hbGxvYyhQQUdFX1NJWkUsIE1fREVW
QlVGLA0KLQkJICAgIE1fV0FJVE9LLCAwdWxsLCAweGZmZmZmZmZmdWxsLCBQ
QUdFX1NJWkUsIDApOw0KLQkJaWYgKCFwcCkNCi0JCQlwYW5pYygicG1hcF9h
bGxvY19wZHB0OiBhbGxvYyBmYWlsZWQiKTsNCi0JCXBwLT5waHlzID0gdnRv
cGh5cyhwcCk7DQotCQlwcC0+YXZhaWwgPSBQQUdFX1NJWkUgLyAzMiAtIDE7
DQotCQlwcC0+Yml0c1swXSA9IDE7DQotCQlwcC0+Yml0c1sxXSA9IHBwLT5i
aXRzWzJdID0gcHAtPmJpdHNbM10gPSAwOw0KLQkJU0xJU1RfSU5TRVJUX0hF
QUQoJnBkcHRfcGFnZXMsIHBwLCBsaW5rKTsNCi0JCXBkcHRfYXZhaWwgKz0g
cHAtPmF2YWlsOw0KLQl9IGVsc2Ugew0KLQkJU0xJU1RfRk9SRUFDSChwcCwg
JnBkcHRfcGFnZXMsIGxpbmspIHsNCi0JCQlpZiAocHAtPmF2YWlsID4gMCkN
Ci0JCQkJYnJlYWs7DQotCQl9DQotCX0NCi0NCi0JZm9yIChpID0gMDsgaSA8
IDQ7IGkrKykgew0KLQkJaW50IGogPSBmZnMofnBwLT5iaXRzW2ldKTsNCi0J
CWlmIChqID09IDApDQotCQkJY29udGludWU7DQotCQlwcC0+Yml0c1tpXSB8
PSAxIDw8IChqIC0gMSk7DQotCQlwcC0+YXZhaWwtLTsNCi0JCXBkcHRfYXZh
aWwtLTsNCi0JCXBkcHQgPSAocGRwdF9lbnRyeV90ICopcHAgKyAoMzIgKiBp
ICsgaiAtIDEpICogTlBHUFREOw0KLQl9DQotDQotCXJldHVybiBwZHB0Ow0K
LX0NCi0NCi0jaWYgMA0KLXN0YXRpYyB2b2lkDQotcG1hcF9mcmVlX3BkcHQo
cGRwdF9lbnRyeV90ICpwZHB0KQ0KLXsNCi0Jc3RydWN0IHBkcHRfcGFnZSAq
cHA7DQotCWludCBpOw0KLQ0KLQlwcCA9IChzdHJ1Y3QgcGRwdF9wYWdlICop
KCh2bV9vZmZzZXRfdClwZHB0ICYgflBBR0VfTUFTSyk7DQotCWkgPSAocGRw
dCAtIChwZHB0X2VudHJ5X3QgKilwcCkgLyBOUEdQVEQ7DQotCXBwLT5iaXRz
W2kgLyAzMl0gJj0gfigxIDw8IChpICUgMzIpKTsNCi0JcHAtPmF2YWlsKys7
DQotCXBkcHRfYXZhaWwrKzsNCi19DQotI2VuZGlmDQotI2VuZGlmDQogDQog
I2lmIGRlZmluZWQoUE1BUF9ERUJVRykNCiBwbWFwX3BpZF9kdW1wKGludCBw
aWQpDQpAQCAtMzIwNCw3ICszNDA5LDcgQEANCiAJCQkJCQkJfQ0KIAkJCQkJ
CQlyZXR1cm4gbnB0ZTsNCiAJCQkJCQl9DQotCQkJCQkJcHRlID0gcG1hcF9w
dGUoIHBtYXAsIHZhKTsNCisJCQkJCQlwdGUgPSBwbWFwX3B0ZV9xdWljaygg
cG1hcCwgdmEpOw0KIAkJCQkJCWlmIChwdGUgJiYgcG1hcF9wdGVfdihwdGUp
KSB7DQogCQkJCQkJCXZtX29mZnNldF90IHBhOw0KIAkJCQkJCQl2bV9wYWdl
X3QgbTsNCkBAIC0zMjUzLDcgKzM0NTgsNyBAQA0KIAkJCQkJY29udGludWU7
DQogCQkJCWlmIChwbSAhPSBrZXJuZWxfcG1hcCAmJiB2YSA+IFVQVF9NQVhf
QUREUkVTUykNCiAJCQkJCWNvbnRpbnVlOw0KLQkJCQlwdGVwID0gcG1hcF9w
dGUocG0sIHZhKTsNCisJCQkJcHRlcCA9IHBtYXBfcHRlX3F1aWNrKHBtLCB2
YSk7DQogCQkJCWlmIChwbWFwX3B0ZV92KHB0ZXApKQ0KIAkJCQkJcHJpbnRm
KCIleDoleCAiLCB2YSwgKihpbnQgKikgcHRlcCk7DQogCQkJfTsNCkBAIC0z
MjYyLDcgKzM0NjcsNyBAQA0KIA0KIHZvaWQNCiBwbWFwX3B2ZHVtcChwYSkN
Ci0Jdm1fcGFkZHJfdCBwYTsNCisJdm1fb2Zmc2V0X3QgcGE7DQogew0KIAly
ZWdpc3RlciBwdl9lbnRyeV90IHB2Ow0KIAl2bV9wYWdlX3QgbTsNCmRpZmYg
LXUgLXIgL3Vzci9zcmMvc3lzLm9sZC9pMzg2L2kzODYvdm04Ni5jIC91c3Iv
c3JjL3N5cy9pMzg2L2kzODYvdm04Ni5jDQotLS0gL3Vzci9zcmMvc3lzLm9s
ZC9pMzg2L2kzODYvdm04Ni5jCVRodSBBdWcgMjEgMTg6MzU6MzQgMjAwMw0K
KysrIC91c3Ivc3JjL3N5cy9pMzg2L2kzODYvdm04Ni5jCUZyaSBBdWcgMjIg
MDI6MDk6MDAgMjAwMw0KQEAgLTU4NCw3ICs1ODQsNyBAQA0KIAlzdHJ1Y3Qg
dm04NmZyYW1lICp2bWY7DQogCXN0cnVjdCB2bTg2Y29udGV4dCAqdm1jOw0K
IHsNCi0JcHRfZW50cnlfdCAqcHRlID0gKHB0X2VudHJ5X3QgKil2bTg2cGFk
ZHI7DQorCXB0X2VudHJ5X3QgcHRlID0gKHB0X2VudHJ5X3Qpdm04NnBhZGRy
Ow0KIAl2bV9wYWRkcl90IHBhZ2U7DQogCWludCBpLCBlbnRyeSwgcmV0dmFs
Ow0KIA0KZGlmZiAtdSAtciAvdXNyL3NyYy9zeXMub2xkL2kzODYvaW5jbHVk
ZS9hc25hbWVzLmggL3Vzci9zcmMvc3lzL2kzODYvaW5jbHVkZS9hc25hbWVz
LmgNCi0tLSAvdXNyL3NyYy9zeXMub2xkL2kzODYvaW5jbHVkZS9hc25hbWVz
LmgJVGh1IEF1ZyAyMSAxODozNTozNiAyMDAzDQorKysgL3Vzci9zcmMvc3lz
L2kzODYvaW5jbHVkZS9hc25hbWVzLmgJRnJpIEF1ZyAyMiAwMjowNzoyMyAy
MDAzDQpAQCAtNTIsMTAgKzUyLDExIEBADQogDQogI2lmZGVmIF9fRUxGX18N
CiANCisjZGVmaW5lIF9BUFRECQkJCUFQVEQNCisjZGVmaW5lIF9BUFREcGRl
CQkJQVBURHBkZQ0KKyNkZWZpbmUgX0FQVG1hcAkJCQlBUFRtYXANCiAjZGVm
aW5lIF9DT05TVF9RTmFOCQkJQ09OU1RfUU5hTg0KLSNkZWZpbmUgX0lkbGVQ
RFBUCQkJSWRsZVBEUFQNCiAjZGVmaW5lIF9JZGxlUFRECQkJSWRsZVBURA0K
LSNkZWZpbmUgX0tFUk5lbmQJCQlLRVJOZW5kDQogI2RlZmluZSBfS1BUcGh5
cwkJCUtQVHBoeXMNCiAjZGVmaW5lIF9NUF9HRFQJCQkJTVBfR0RUDQogI2Rl
ZmluZSBfTVBnZXRsb2NrCQkJTVBnZXRsb2NrDQpPbmx5IGluIC91c3Ivc3Jj
L3N5cy9pMzg2L2luY2x1ZGU6IGFzbmFtZXMuaC5vcmlnDQpPbmx5IGluIC91
c3Ivc3JjL3N5cy9pMzg2L2luY2x1ZGU6IGFzbmFtZXMuaC5yZWoNCmRpZmYg
LXUgLXIgL3Vzci9zcmMvc3lzLm9sZC9pMzg2L2luY2x1ZGUvY3B1LmggL3Vz
ci9zcmMvc3lzL2kzODYvaW5jbHVkZS9jcHUuaA0KLS0tIC91c3Ivc3JjL3N5
cy5vbGQvaTM4Ni9pbmNsdWRlL2NwdS5oCVRodSBBdWcgMjEgMTg6MzU6MzYg
MjAwMw0KKysrIC91c3Ivc3JjL3N5cy9pMzg2L2luY2x1ZGUvY3B1LmgJRnJp
IEF1ZyAyMiAwMjowNjoyNiAyMDAzDQpAQCAtMTM1LDcgKzEzNSw2IEBADQog
I2lmZGVmIF9LRVJORUwNCiBleHRlcm4gY2hhcglidGV4dFtdOw0KIGV4dGVy
biBjaGFyCWV0ZXh0W107DQotZXh0ZXJuIGNoYXIJS0VSTmVuZFtdOw0KIGV4
dGVybiB1X2NoYXIJaW50cl9uZXN0aW5nX2xldmVsOw0KIA0KIHZvaWQJZm9y
a190cmFtcG9saW5lIF9fUCgodm9pZCkpOw0KZGlmZiAtdSAtciAvdXNyL3Ny
Yy9zeXMub2xkL2kzODYvaW5jbHVkZS9nbG9iYWxkYXRhLmggL3Vzci9zcmMv
c3lzL2kzODYvaW5jbHVkZS9nbG9iYWxkYXRhLmgNCi0tLSAvdXNyL3NyYy9z
eXMub2xkL2kzODYvaW5jbHVkZS9nbG9iYWxkYXRhLmgJVGh1IEF1ZyAyMSAx
ODozNTozNiAyMDAzDQorKysgL3Vzci9zcmMvc3lzL2kzODYvaW5jbHVkZS9n
bG9iYWxkYXRhLmgJRnJpIEF1ZyAyMiAwMjowNjoxMCAyMDAzDQpAQCAtNjAs
MTEgKzYwLDExIEBADQogCXB0X2VudHJ5X3QJKmdkX3Bydl9DTUFQMTsNCiAJ
cHRfZW50cnlfdAkqZ2RfcHJ2X0NNQVAyOw0KIAlwdF9lbnRyeV90CSpnZF9w
cnZfQ01BUDM7DQotCXBkX2VudHJ5X3QJKmdkX3Bydl9QTUFQMTsNCisJcHRf
ZW50cnlfdAkqZ2RfcHJ2X1BNQVAxOw0KIAljYWRkcl90CQlnZF9wcnZfQ0FE
RFIxOw0KIAljYWRkcl90CQlnZF9wcnZfQ0FERFIyOw0KIAljYWRkcl90CQln
ZF9wcnZfQ0FERFIzOw0KLQlwdF9lbnRyeV90CSpnZF9wcnZfUEFERFIxOw0K
Kwl1bnNpZ25lZAkqZ2RfcHJ2X1BBRERSMTsNCiAjZW5kaWYNCiAJdV9pbnQJ
CWdkX2FzdHBlbmRpbmc7DQogfTsNCmRpZmYgLXUgLXIgL3Vzci9zcmMvc3lz
Lm9sZC9pMzg2L2luY2x1ZGUvZ2xvYmFscy5oIC91c3Ivc3JjL3N5cy9pMzg2
L2luY2x1ZGUvZ2xvYmFscy5oDQotLS0gL3Vzci9zcmMvc3lzLm9sZC9pMzg2
L2luY2x1ZGUvZ2xvYmFscy5oCVRodSBBdWcgMjEgMTg6MzU6MzYgMjAwMw0K
KysrIC91c3Ivc3JjL3N5cy9pMzg2L2luY2x1ZGUvZ2xvYmFscy5oCUZyaSBB
dWcgMjIgMDI6MDU6NDAgMjAwMw0KQEAgLTEwMywxMSArMTAzLDExIEBADQog
I2RlZmluZQlwcnZfQ01BUDEJR0xPQkFMX0xWQUxVRShwcnZfQ01BUDEsIHB0
X2VudHJ5X3QgKikNCiAjZGVmaW5lCXBydl9DTUFQMglHTE9CQUxfTFZBTFVF
KHBydl9DTUFQMiwgcHRfZW50cnlfdCAqKQ0KICNkZWZpbmUJcHJ2X0NNQVAz
CUdMT0JBTF9MVkFMVUUocHJ2X0NNQVAzLCBwdF9lbnRyeV90ICopDQotI2Rl
ZmluZQlwcnZfUE1BUDEJR0xPQkFMX0xWQUxVRShwcnZfUE1BUDEsIHBkX2Vu
dHJ5X3QgKikNCisjZGVmaW5lCXBydl9QTUFQMQlHTE9CQUxfTFZBTFVFKHBy
dl9QTUFQMSwgcHRfZW50cnlfdCAqKQ0KICNkZWZpbmUJcHJ2X0NBRERSMQlH
TE9CQUxfUlZBTFVFKHBydl9DQUREUjEsIGNhZGRyX3QpDQogI2RlZmluZQlw
cnZfQ0FERFIyCUdMT0JBTF9SVkFMVUUocHJ2X0NBRERSMiwgY2FkZHJfdCkN
CiAjZGVmaW5lCXBydl9DQUREUjMJR0xPQkFMX1JWQUxVRShwcnZfQ0FERFIz
LCBjYWRkcl90KQ0KLSNkZWZpbmUJcHJ2X1BBRERSMQlHTE9CQUxfUlZBTFVF
KHBydl9QQUREUjEsIHB0X2VudHJ5X3QgKikNCisjZGVmaW5lCXBydl9QQURE
UjEJR0xPQkFMX1JWQUxVRShwcnZfUEFERFIxLCB1bnNpZ25lZCAqKQ0KICNl
bmRpZg0KICNlbmRpZgkvKlVQIGtlcm5lbCovDQogDQpPbmx5IGluIC91c3Iv
c3JjL3N5cy9pMzg2L2luY2x1ZGU6IGdsb2JhbHMuaC5vcmlnDQpPbmx5IGlu
IC91c3Ivc3JjL3N5cy9pMzg2L2luY2x1ZGU6IGdsb2JhbHMuaC5yZWoNCmRp
ZmYgLXUgLXIgL3Vzci9zcmMvc3lzLm9sZC9pMzg2L2luY2x1ZGUvbWRfdmFy
LmggL3Vzci9zcmMvc3lzL2kzODYvaW5jbHVkZS9tZF92YXIuaA0KLS0tIC91
c3Ivc3JjL3N5cy5vbGQvaTM4Ni9pbmNsdWRlL21kX3Zhci5oCVRodSBBdWcg
MjEgMTg6MzU6MzYgMjAwMw0KKysrIC91c3Ivc3JjL3N5cy9pMzg2L2luY2x1
ZGUvbWRfdmFyLmgJRnJpIEF1ZyAyMiAwMjowNToxMSAyMDAzDQpAQCAtNzIs
NyArNzIsNiBAQA0KIHZvaWQJYmNvcHliIF9fUCgoY29uc3Qgdm9pZCAqZnJv
bSwgdm9pZCAqdG8sIHNpemVfdCBsZW4pKTsNCiB2b2lkCWJ1c2RtYV9zd2kg
X19QKCh2b2lkKSk7DQogdm9pZAljcHVfaGFsdCBfX1AoKHZvaWQpKTsNCi12
b2lkCWNwdV9pZGxlIF9fUCgodm9pZCkpOw0KIHZvaWQJY3B1X3Jlc2V0IF9f
UCgodm9pZCkpOw0KIHZvaWQJY3B1X3NldHJlZ3MgX19QKCh2b2lkKSk7DQog
dm9pZAljcHVfc3dpdGNoX2xvYWRfZ3MgX19QKCh2b2lkKSkgX19hc20oX19T
VFJJTkcoY3B1X3N3aXRjaF9sb2FkX2dzKSk7DQpkaWZmIC11IC1yIC91c3Iv
c3JjL3N5cy5vbGQvaTM4Ni9pbmNsdWRlL3BhcmFtLmggL3Vzci9zcmMvc3lz
L2kzODYvaW5jbHVkZS9wYXJhbS5oDQotLS0gL3Vzci9zcmMvc3lzLm9sZC9p
Mzg2L2luY2x1ZGUvcGFyYW0uaAlUaHUgQXVnIDIxIDE4OjM1OjM2IDIwMDMN
CisrKyAvdXNyL3NyYy9zeXMvaTM4Ni9pbmNsdWRlL3BhcmFtLmgJRnJpIEF1
ZyAyMiAwMjowNDo0MyAyMDAzDQpAQCAtOTQsMTggKzk0LDEwIEBADQogI2Rl
ZmluZSBQQUdFX01BU0sJKFBBR0VfU0laRS0xKQ0KICNkZWZpbmUgTlBURVBH
CQkoUEFHRV9TSVpFLyhzaXplb2YgKHB0X2VudHJ5X3QpKSkNCiANCi0jaWZk
ZWYgUEFFDQotI2RlZmluZSBOUEdQVEQJCTQNCi0jZGVmaW5lIFBEUlNISUZU
CTIxCQkvKiBMT0cyKE5CUERSKSAqLw0KLSNlbHNlDQotI2RlZmluZSBOUEdQ
VEQJCTENCisjZGVmaW5lIE5QREVQRwkJKFBBR0VfU0laRS8oc2l6ZW9mIChw
ZF9lbnRyeV90KSkpDQogI2RlZmluZSBQRFJTSElGVAkyMgkJLyogTE9HMihO
QlBEUikgKi8NCi0jZW5kaWYNCi0NCiAjZGVmaW5lIE5CUERSCQkoMTw8UERS
U0hJRlQpCS8qIGJ5dGVzL3BhZ2UgZGlyICovDQogI2RlZmluZSBQRFJNQVNL
CQkoTkJQRFItMSkNCi0jZGVmaW5lIE5QREVQRwkJKFBBR0VfU0laRS8oc2l6
ZW9mIChwZF9lbnRyeV90KSkpDQotI2RlZmluZSBOUERFUFRECQkoTlBERVBH
Kk5QR1BURCkNCiANCiAjZGVmaW5lIERFVl9CU0hJRlQJOQkJLyogbG9nMihE
RVZfQlNJWkUpICovDQogI2RlZmluZSBERVZfQlNJWkUJKDE8PERFVl9CU0hJ
RlQpDQpPbmx5IGluIC91c3Ivc3JjL3N5cy9pMzg2L2luY2x1ZGU6IHBhcmFt
Lmgub3JpZw0KZGlmZiAtdSAtciAvdXNyL3NyYy9zeXMub2xkL2kzODYvaW5j
bHVkZS9wbWFwLmggL3Vzci9zcmMvc3lzL2kzODYvaW5jbHVkZS9wbWFwLmgN
Ci0tLSAvdXNyL3NyYy9zeXMub2xkL2kzODYvaW5jbHVkZS9wbWFwLmgJVGh1
IEF1ZyAyMSAxODozNTozNiAyMDAzDQorKysgL3Vzci9zcmMvc3lzL2kzODYv
aW5jbHVkZS9wbWFwLmgJRnJpIEF1ZyAyMiAwMjowMzo1MiAyMDAzDQpAQCAt
NzAsNyArNzAsNyBAQA0KIC8qIE91ciB2YXJpb3VzIGludGVycHJldGF0aW9u
cyBvZiB0aGUgYWJvdmUgKi8NCiAjZGVmaW5lIFBHX1cJCVBHX0FWQUlMMQkv
KiAiV2lyZWQiIHBzZXVkb2ZsYWcgKi8NCiAjZGVmaW5lCVBHX01BTkFHRUQJ
UEdfQVZBSUwyDQotI2RlZmluZQlQR19GUkFNRQkofigodm1fcGFkZHJfdClQ
QUdFX01BU0spKQ0KKyNkZWZpbmUJUEdfRlJBTUUJKH5QQUdFX01BU0spDQog
I2RlZmluZQlQR19QUk9UCQkoUEdfUld8UEdfVSkJLyogYWxsIHByb3RlY3Rp
b24gYml0cyAuICovDQogI2RlZmluZSBQR19OCQkoUEdfTkNfUFdUfFBHX05D
X1BDRCkJLyogTm9uLWNhY2hlYWJsZSAqLw0KIA0KQEAgLTg4LDcgKzg4LDcg
QEANCiAgKiBUaGlzICoqTVVTVCoqIGJlIGEgbXVsdGlwbGUgb2YgNCAoZWc6
IDI1MiwgMjU2LCAyNjAsIGV0YykuDQogICovDQogI2lmbmRlZiBLVkFfUEFH
RVMNCi0jZGVmaW5lIEtWQV9QQUdFUwkoMSA8PCAoMzAgLSBQRFJTSElGVCkp
DQorI2RlZmluZSBLVkFfUEFHRVMJMjU2DQogI2VuZGlmDQogDQogLyoNCkBA
IC05NywxNyArOTcsMTMgQEANCiAjZGVmaW5lIFZBRERSKHBkaSwgcHRpKSAo
KHZtX29mZnNldF90KSgoKHBkaSk8PFBEUlNISUZUKXwoKHB0aSk8PFBBR0Vf
U0hJRlQpKSkNCiANCiAjaWZuZGVmIE5LUFQNCi0jaWZkZWYgUEFFDQotI2Rl
ZmluZQlOS1BUCTEyMAkJLyogYWN0dWFsIG51bWJlciBvZiBrZXJuZWwgcGFn
ZSB0YWJsZXMgKi8NCi0jZWxzZQ0KLSNkZWZpbmUJTktQVAkzMAkJLyogYWN0
dWFsIG51bWJlciBvZiBrZXJuZWwgcGFnZSB0YWJsZXMgKi8NCi0jZW5kaWYN
CisjZGVmaW5lCU5LUFQJCTMwCS8qIGFjdHVhbCBudW1iZXIgb2Yga2VybmVs
IHBhZ2UgdGFibGVzICovDQogI2VuZGlmDQogI2lmbmRlZiBOS1BERQ0KICNp
ZmRlZiBTTVANCi0jZGVmaW5lIE5LUERFCShLVkFfUEFHRVMgLSAxKQkvKiBh
ZGRyZXNzYWJsZSBudW1iZXIgb2YgcGFnZSB0YWJsZXMvcGRlJ3MgKi8NCisj
ZGVmaW5lIE5LUERFCShLVkFfUEFHRVMgLSAyKQkvKiBhZGRyZXNzYWJsZSBu
dW1iZXIgb2YgcGFnZSB0YWJsZXMvcGRlJ3MgKi8NCiAjZWxzZQ0KLSNkZWZp
bmUgTktQREUJKEtWQV9QQUdFUykJLyogYWRkcmVzc2FibGUgbnVtYmVyIG9m
IHBhZ2UgdGFibGVzL3BkZSdzICovDQorI2RlZmluZSBOS1BERQkoS1ZBX1BB
R0VTIC0gMSkJLyogYWRkcmVzc2FibGUgbnVtYmVyIG9mIHBhZ2UgdGFibGVz
L3BkZSdzICovDQogI2VuZGlmDQogI2VuZGlmDQogDQpAQCAtMTE5LDEzICsx
MTUsMTYgQEANCiAgKg0KICAqIFNNUF9QUklWUEFHRVM6IFRoZSBwZXItY3B1
IGFkZHJlc3Mgc3BhY2UgaXMgMHhmZjgwMDAwIC0+IDB4ZmZiZmZmZmYNCiAg
Ki8NCisjZGVmaW5lCUFQVERQVERJCShOUERFUEctMSkJLyogYWx0IHB0ZCBl
bnRyeSB0aGF0IHBvaW50cyB0byBBUFREICovDQogI2lmZGVmIFNNUA0KLSNk
ZWZpbmUgTVBQVERJCQkoTlBERVBURC0xKQkvKiBwZXIgY3B1IHB0ZCBlbnRy
eSAqLw0KKyNkZWZpbmUgTVBQVERJCQkoQVBURFBUREktMSkJLyogcGVyIGNw
dSBwdGQgZW50cnkgKi8NCiAjZGVmaW5lCUtQVERJCQkoTVBQVERJLU5LUERF
KQkvKiBzdGFydCBvZiBrZXJuZWwgdmlydHVhbCBwZGUncyAqLw0KICNlbHNl
DQotI2RlZmluZQlLUFRESQkJKE5QREVQVEQtTktQREUpCS8qIHN0YXJ0IG9m
IGtlcm5lbCB2aXJ0dWFsIHBkZSdzICovDQorI2RlZmluZQlLUFRESQkJKEFQ
VERQVERJLU5LUERFKS8qIHN0YXJ0IG9mIGtlcm5lbCB2aXJ0dWFsIHBkZSdz
ICovDQogI2VuZGlmCS8qIFNNUCAqLw0KLSNkZWZpbmUJUFREUFRESQkJKEtQ
VERJLU5QR1BURCkJLyogcHRkIGVudHJ5IHRoYXQgcG9pbnRzIHRvIHB0ZCEg
Ki8NCisjZGVmaW5lCVBURFBUREkJCShLUFRESS0xKQkvKiBwdGQgZW50cnkg
dGhhdCBwb2ludHMgdG8gcHRkISAqLw0KKyNkZWZpbmUJVU1BWFBUREkJKFBU
RFBUREktMSkJLyogcHRkIGVudHJ5IGZvciB1c2VyIHNwYWNlIGVuZCAqLw0K
KyNkZWZpbmUJVU1BWFBURU9GRgkoTlBURVBHKQkvKiBwdGUgZW50cnkgZm9y
IHVzZXIgc3BhY2UgZW5kICovDQogDQogLyoNCiAgKiBYWFggZG9lc24ndCBy
ZWFsbHkgYmVsb25nIGhlcmUgSSBndWVzcy4uLg0KQEAgLTEzNywxOCArMTM2
LDggQEANCiANCiAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+DQogDQotI2lmZGVm
IFBBRQ0KLXR5cGVkZWYgdV9pbnQ2NF90CXBkcHRfZW50cnlfdDsNCi10eXBl
ZGVmIHVfaW50NjRfdAlwZF9lbnRyeV90Ow0KLXR5cGVkZWYgdV9pbnQ2NF90
CXB0X2VudHJ5X3Q7DQotI2RlZmluZSBQVEVTSElGVAkzDQotI2RlZmluZSBQ
REVTSElGVAkzDQotI2Vsc2UNCi10eXBlZGVmIHVfaW50MzJfdAlwZF9lbnRy
eV90Ow0KLXR5cGVkZWYgdV9pbnQzMl90CXB0X2VudHJ5X3Q7DQotI2RlZmlu
ZSBQVEVTSElGVAkyDQotI2RlZmluZSBQREVTSElGVAkyDQotI2VuZGlmDQor
dHlwZWRlZiB1bnNpZ25lZCBpbnQgKnBkX2VudHJ5X3Q7DQordHlwZWRlZiB1
bnNpZ25lZCBpbnQgKnB0X2VudHJ5X3Q7DQogDQogI2RlZmluZSBQREVTSVpF
CQlzaXplb2YocGRfZW50cnlfdCkgLyogZm9yIGFzc2VtYmx5IGZpbGVzICov
DQogI2RlZmluZSBQVEVTSVpFCQlzaXplb2YocHRfZW50cnlfdCkgLyogZm9y
IGFzc2VtYmx5IGZpbGVzICovDQpAQCAtMTU4LDEzICsxNDcsMTAgQEANCiAg
KiBhbmQgZGlyZWN0b3JpZXMuDQogICovDQogI2lmZGVmIF9LRVJORUwNCi1l
eHRlcm4gcHRfZW50cnlfdCBQVG1hcFtdOw0KLWV4dGVybiBwZF9lbnRyeV90
IFBURFtdLCBQVERwZGVbXTsNCitleHRlcm4gcHRfZW50cnlfdCBQVG1hcFtd
LCBBUFRtYXBbXSwgVXB0ZTsNCitleHRlcm4gcGRfZW50cnlfdCBQVERbXSwg
QVBURFtdLCBQVERwZGUsIEFQVERwZGUsIFVwZGU7DQogDQotZXh0ZXJuIHVf
aW50MzJfdCBJZGxlUFREOwkvKiBwaHlzaWNhbCBhZGRyZXNzIG9mICJJZGxl
IiBzdGF0ZSBkaXJlY3RvcnkgKi8NCi0jaWZkZWYgUEFFDQotZXh0ZXJuIHBk
cHRfZW50cnlfdCBJZGxlUERQVFtdOw0KLSNlbmRpZg0KK2V4dGVybiBwZF9l
bnRyeV90IElkbGVQVEQ7CS8qIHBoeXNpY2FsIGFkZHJlc3Mgb2YgIklkbGUi
IHN0YXRlIGRpcmVjdG9yeSAqLw0KICNlbmRpZg0KIA0KICNpZmRlZiBfS0VS
TkVMDQpAQCAtMTc2LDYgKzE2Miw4IEBADQogICovDQogI2RlZmluZQl2dG9w
dGUodmEpCShQVG1hcCArIGkzODZfYnRvcCh2YSkpDQogDQorI2RlZmluZQlh
dnRvcHRlKHZhKQkoQVBUbWFwICsgaTM4Nl9idG9wKHZhKSkNCisNCiAvKg0K
ICAqCVJvdXRpbmU6CXBtYXBfa2V4dHJhY3QNCiAgKglGdW5jdGlvbjoNCkBA
IC0xODYsMTcgKzE3NCwyMiBAQA0KIHBtYXBfa2V4dHJhY3Qodm1fb2Zmc2V0
X3QgdmEpDQogew0KIAl2bV9wYWRkcl90IHBhOw0KLQ0KLQlpZiAoKHBhID0g
UFREW3ZhID4+IFBEUlNISUZUXSkgJiBQR19QUykgew0KKwlpZiAoKHBhID0g
KHZtX29mZnNldF90KSBQVERbdmEgPj4gUERSU0hJRlRdKSAmIFBHX1BTKSB7
DQogCQlwYSA9IChwYSAmIH4oTkJQRFIgLSAxKSkgfCAodmEgJiAoTkJQRFIg
LSAxKSk7DQogCX0gZWxzZSB7DQotCQlwYSA9ICp2dG9wdGUodmEpOw0KKwkJ
cGEgPSAqKHZtX29mZnNldF90ICopdnRvcHRlKHZhKTsNCiAJCXBhID0gKHBh
ICYgUEdfRlJBTUUpIHwgKHZhICYgUEFHRV9NQVNLKTsNCiAJfQ0KIAlyZXR1
cm4gcGE7DQogfQ0KIA0KLSNkZWZpbmUJdnRvcGh5cyh2YSkJcG1hcF9rZXh0
cmFjdCgodm1fb2Zmc2V0X3QpICh2YSkpDQorI2lmIDANCisjZGVmaW5lCXZ0
b3BoeXModmEpCSgoKHZtX29mZnNldF90KSAoKnZ0b3B0ZSh2YSkpJlBHX0ZS
QU1FKSB8ICgodm1fb2Zmc2V0X3QpKHZhKSAmIFBBR0VfTUFTSykpDQorI2Vs
c2UNCisjZGVmaW5lCXZ0b3BoeXModmEpCXBtYXBfa2V4dHJhY3QoKCh2bV9v
ZmZzZXRfdCkgKHZhKSkpDQorI2VuZGlmDQorDQorI2RlZmluZQlhdnRvcGh5
cyh2YSkJKCgodm1fb2Zmc2V0X3QpICgqYXZ0b3B0ZSh2YSkpJlBHX0ZSQU1F
KSB8ICgodm1fb2Zmc2V0X3QpKHZhKSAmIFBBR0VfTUFTSykpDQogDQogI2Vu
ZGlmDQogDQpAQCAtMjE0LDE0ICsyMDcsMTAgQEANCiAJcGRfZW50cnlfdAkJ
KnBtX3BkaXI7CS8qIEtWQSBvZiBwYWdlIGRpcmVjdG9yeSAqLw0KIAl2bV9v
YmplY3RfdAkJcG1fcHRlb2JqOwkvKiBDb250YWluZXIgZm9yIHB0ZSdzICov
DQogCVRBSUxRX0hFQUQoLHB2X2VudHJ5KQlwbV9wdmxpc3Q7CS8qIGxpc3Qg
b2YgbWFwcGluZ3MgaW4gcG1hcCAqLw0KKwlpbnQJCQlwbV9jb3VudDsJLyog
cmVmZXJlbmNlIGNvdW50ICovDQogCWludAkJCXBtX2FjdGl2ZTsJLyogYWN0
aXZlIG9uIGNwdXMgKi8NCiAJc3RydWN0IHBtYXBfc3RhdGlzdGljcwlwbV9z
dGF0czsJLyogcG1hcCBzdGF0aXN0aWNzICovDQogCXN0cnVjdAl2bV9wYWdl
CQkqcG1fcHRwaGludDsJLyogcG1hcCBwdHAgaGludCAqLw0KLSNpZmRlZiBQ
QUUNCi0JcGRwdF9lbnRyeV90CQkqcG1fcGRwdDsJLyogS1ZBIG9mIHBhZ2Ug
ZGlyIHB0ciB0YWJsZSAqLw0KLSNlbHNlDQotCXZvaWQJCQkqcG1fcGRwdF9k
b250dXNlOw0KLSNlbmRpZg0KIH07DQogDQogI2RlZmluZSBwbWFwX3Jlc2lk
ZW50X2NvdW50KHBtYXApIChwbWFwKS0+cG1fc3RhdHMucmVzaWRlbnRfY291
bnQNCkBAIC0yNDQsNiArMjMzLDExIEBADQogCXZtX3BhZ2VfdAlwdl9wdGVt
OwkvKiBWTSBwYWdlIGZvciBwdGUgKi8NCiB9ICpwdl9lbnRyeV90Ow0KIA0K
KyNkZWZpbmUJUFZfRU5UUllfTlVMTAkoKHB2X2VudHJ5X3QpIDApDQorDQor
I2RlZmluZQlQVl9DSQkJMHgwMQkvKiBhbGwgZW50cmllcyBtdXN0IGJlIGNh
Y2hlIGluaGliaXRlZCAqLw0KKyNkZWZpbmUJUFZfUFRQQUdFCTB4MDIJLyog
ZW50cnkgbWFwcyBhIHBhZ2UgdGFibGUgcGFnZSAqLw0KKw0KICNpZmRlZglf
S0VSTkVMDQogDQogI2RlZmluZSBOUFBST1ZNVFJSCQk4DQpAQCAtMjU0LDYg
KzI0OCw4IEBADQogfTsNCiBleHRlcm4gc3RydWN0IHBwcm9fdm10cnIgUFBy
b192bXRycltOUFBST1ZNVFJSXTsNCiANCitleHRlcm4gY2FkZHJfdAlDQURE
UjE7DQorZXh0ZXJuIHB0X2VudHJ5X3QgKkNNQVAxOw0KIGV4dGVybiB2bV9w
YWRkcl90IGF2YWlsX2VuZDsNCiBleHRlcm4gdm1fcGFkZHJfdCBhdmFpbF9z
dGFydDsNCiBleHRlcm4gdm1fb2Zmc2V0X3QgY2xlYW5fZXZhOw0KQEAgLTI2
MywxMSArMjU5LDEyIEBADQogZXh0ZXJuIHZtX29mZnNldF90IHZpcnR1YWxf
YXZhaWw7DQogZXh0ZXJuIHZtX29mZnNldF90IHZpcnR1YWxfZW5kOw0KIA0K
LXZvaWQJcG1hcF9ib290c3RyYXAgX19QKCh2bV9wYWRkcl90LCB2bV9wYWRk
cl90KSk7DQordm9pZAlwbWFwX2Jvb3RzdHJhcCBfX1AoKCB2bV9wYWRkcl90
LCB2bV9wYWRkcl90KSk7DQogcG1hcF90CXBtYXBfa2VybmVsIF9fUCgodm9p
ZCkpOw0KIHZvaWQJKnBtYXBfbWFwZGV2IF9fUCgodm1fcGFkZHJfdCwgdm1f
c2l6ZV90KSk7DQogdm9pZAlwbWFwX3VubWFwZGV2IF9fUCgodm1fb2Zmc2V0
X3QsIHZtX3NpemVfdCkpOw0KLXB0X2VudHJ5X3QgKnBtYXBfcHRlIF9fUCgo
cG1hcF90LCB2bV9vZmZzZXRfdCkpOw0KK3Vuc2lnbmVkICpwbWFwX3B0ZSBf
X1AoKHBtYXBfdCwgdm1fb2Zmc2V0X3QpKSBfX3B1cmUyOw0KK3ZtX3BhZ2Vf
dCBwbWFwX3VzZV9wdCBfX1AoKHBtYXBfdCwgdm1fb2Zmc2V0X3QpKTsNCiAj
aWZkZWYgU01QDQogdm9pZAlwbWFwX3NldF9vcHQgX19QKCh2b2lkKSk7DQog
I2VuZGlmDQpPbmx5IGluIC91c3Ivc3JjL3N5cy9pMzg2L2luY2x1ZGU6IHBt
YXAuaC5vcmlnDQpkaWZmIC11IC1yIC91c3Ivc3JjL3N5cy5vbGQvaTM4Ni9p
bmNsdWRlL3ZtcGFyYW0uaCAvdXNyL3NyYy9zeXMvaTM4Ni9pbmNsdWRlL3Zt
cGFyYW0uaA0KLS0tIC91c3Ivc3JjL3N5cy5vbGQvaTM4Ni9pbmNsdWRlL3Zt
cGFyYW0uaAlUaHUgQXVnIDIxIDE4OjM1OjM3IDIwMDMNCisrKyAvdXNyL3Ny
Yy9zeXMvaTM4Ni9pbmNsdWRlL3ZtcGFyYW0uaAlGcmkgQXVnIDIyIDAyOjAw
OjA4IDIwMDMNCkBAIC05MCw3ICs5MCw3IEBADQogICogbWVzc3kgYXQgdGlt
ZXMsIGJ1dCBoZXksIHdlJ2xsIGRvIGFueXRoaW5nIHRvIHNhdmUgYSBwYWdl
IDotKQ0KICAqLw0KIA0KLSNkZWZpbmUgVk1fTUFYX0tFUk5FTF9BRERSRVNT
CVZBRERSKEtQVERJK05LUERFLTEsIE5QVEVQRy0xKQ0KKyNkZWZpbmUgVk1f
TUFYX0tFUk5FTF9BRERSRVNTCVZBRERSKEtQVERJK05LUERFLCAwKQ0KICNk
ZWZpbmUgVk1fTUlOX0tFUk5FTF9BRERSRVNTCVZBRERSKFBURFBUREksIFBU
RFBUREkpDQogDQogI2RlZmluZQlLRVJOQkFTRQkJVkFERFIoS1BUREksIDAp
DQpAQCAtMTAxLDcgKzEwMSw3IEBADQogI2RlZmluZSBVUFRfTUFYX0FERFJF
U1MJCVZBRERSKFBURFBUREksIFBURFBUREkpDQogI2RlZmluZSBVUFRfTUlO
X0FERFJFU1MJCVZBRERSKFBURFBUREksIDApDQogDQotI2RlZmluZSBWTV9N
QVhVU0VSX0FERFJFU1MJVkFERFIoUFREUFRESSwgMCkNCisjZGVmaW5lIFZN
X01BWFVTRVJfQUREUkVTUwlWQUREUihVTUFYUFRESSwgVU1BWFBURU9GRikN
CiANCiAjZGVmaW5lIFVTUlNUQUNLCQlWTV9NQVhVU0VSX0FERFJFU1MNCiAN
Ck9ubHkgaW4gL3Vzci9zcmMvc3lzL2kzODYvaW5jbHVkZTogdm1wYXJhbS5o
Lm9yaWcNCmRpZmYgLXUgLXIgL3Vzci9zcmMvc3lzLm9sZC9pMzg2L2lzYS93
ZC5jIC91c3Ivc3JjL3N5cy9pMzg2L2lzYS93ZC5jDQotLS0gL3Vzci9zcmMv
c3lzLm9sZC9pMzg2L2lzYS93ZC5jCVRodSBBdWcgMjEgMTg6MzU6NDAgMjAw
Mw0KKysrIC91c3Ivc3JjL3N5cy9pMzg2L2lzYS93ZC5jCUZyaSBBdWcgMjIg
MDE6NTk6MjQgMjAwMw0KQEAgLTE5MjcsMTQgKzE5MjcsMTIgQEANCiAJCQly
ZXR1cm4gKEVJTyk7DQogCQl9DQogCQl3aGlsZSAoYmxrY250ICE9IDApIHsN
Ci0JCQljYWRkcl90IHZhOw0KLQ0KIAkJCWlmIChpc19waHlzaWNhbF9tZW1v
cnkoKHZtX29mZnNldF90KWFkZHIpKQ0KLQkJCQl2YSA9IHBtYXBfa2VudGVy
X3RlbXBvcmFyeSgNCi0JCQkJCXRydW5jX3BhZ2UoKHZtX29mZnNldF90KWFk
ZHIpLCAwKTsNCisJCQkJcG1hcF9rZW50ZXIoKHZtX29mZnNldF90KUNBRERS
MSwNCisJCQkJCSAgIHRydW5jX3BhZ2UoKHZtX29mZnNldF90KWFkZHIpKTsN
CiAJCQllbHNlDQotCQkJCXZhID0gcG1hcF9rZW50ZXJfdGVtcG9yYXJ5KA0K
LQkJCQkJdHJ1bmNfcGFnZSgwKSwgMCk7DQorCQkJCXBtYXBfa2VudGVyKCh2
bV9vZmZzZXRfdClDQUREUjEsDQorCQkJCQkgICB0cnVuY19wYWdlKDApKTsN
CiANCiAJCQkvKiBSZWFkeSB0byBzZW5kIGRhdGE/ICovDQogCQkJREVMQVko
NSk7CS8qIEFUQSBzcGVjICovDQpAQCAtMTk0NiwxMSArMTk0NCwxMSBAQA0K
IAkJCX0NCiAJCQlpZiAoZHUtPmRrX2ZsYWdzICYgREtGTF8zMkJJVCkNCiAJ
CQkJb3V0c2woZHUtPmRrX3BvcnQgKyB3ZF9kYXRhLA0KLQkJCQkgICAgICB2
YSArICgoaW50KWFkZHIgJiBQQUdFX01BU0spLA0KKwkJCQkgICAgICBDQURE
UjEgKyAoKGludClhZGRyICYgUEFHRV9NQVNLKSwNCiAJCQkJICAgICAgREVW
X0JTSVpFIC8gc2l6ZW9mKGxvbmcpKTsNCiAJCQllbHNlDQogCQkJCW91dHN3
KGR1LT5ka19wb3J0ICsgd2RfZGF0YSwNCi0JCQkJICAgICAgdmEgKyAoKGlu
dClhZGRyICYgUEFHRV9NQVNLKSwNCisJCQkJICAgICAgQ0FERFIxICsgKChp
bnQpYWRkciAmIFBBR0VfTUFTSyksDQogCQkJCSAgICAgIERFVl9CU0laRSAv
IHNpemVvZihzaG9ydCkpOw0KIAkJCWFkZHIgKz0gREVWX0JTSVpFOw0KIAkJ
CS8qDQpPbmx5IGluIC91c3Ivc3JjL3N5cy9pMzg2L2lzYTogd2QuYy5vcmln
DQpPbmx5IGluIC91c3Ivc3JjL3N5cy9pMzg2L2lzYTogd2QuYy5yZWoNCk9u
bHkgaW4gL3Vzci9zcmMvc3lzL2kzODYvaXNhOiB3ZC5jLnJlai5vcmlnDQpk
aWZmIC11IC1yIC91c3Ivc3JjL3N5cy5vbGQvdm0vcG1hcC5oIC91c3Ivc3Jj
L3N5cy92bS9wbWFwLmgNCi0tLSAvdXNyL3NyYy9zeXMub2xkL3ZtL3BtYXAu
aAlUaHUgQXVnIDIxIDE4OjM2OjI1IDIwMDMNCisrKyAvdXNyL3NyYy9zeXMv
dm0vcG1hcC5oCUZyaSBBdWcgMjIgMDE6NTY6NTkgMjAwMw0KQEAgLTEyNSw2
ICsxMjUsNyBAQA0KIAkJICAgIHZtX3Byb3RfdCkpOw0KIHZvaWQJCSBwbWFw
X3FlbnRlciBfX1AoKHZtX29mZnNldF90LCB2bV9wYWdlX3QgKiwgaW50KSk7
DQogdm9pZAkJIHBtYXBfcXJlbW92ZSBfX1AoKHZtX29mZnNldF90LCBpbnQp
KTsNCit2b2lkCQkgcG1hcF9yZWZlcmVuY2UgX19QKChwbWFwX3QpKTsNCiB2
b2lkCQkgcG1hcF9yZWxlYXNlIF9fUCgocG1hcF90KSk7DQogdm9pZAkJIHBt
YXBfcmVtb3ZlIF9fUCgocG1hcF90LCB2bV9vZmZzZXRfdCwgdm1fb2Zmc2V0
X3QpKTsNCiB2b2lkCQkgcG1hcF9yZW1vdmVfcGFnZXMgX19QKChwbWFwX3Qs
IHZtX29mZnNldF90LCB2bV9vZmZzZXRfdCkpOw0KZGlmZiAtdSAtciAvdXNy
L3NyYy9zeXMub2xkL3ZtL3ZtX2tlcm4uYyAvdXNyL3NyYy9zeXMvdm0vdm1f
a2Vybi5jDQotLS0gL3Vzci9zcmMvc3lzLm9sZC92bS92bV9rZXJuLmMJVGh1
IEF1ZyAyMSAxODozNjoyNSAyMDAzDQorKysgL3Vzci9zcmMvc3lzL3ZtL3Zt
X2tlcm4uYwlGcmkgQXVnIDIyIDAxOjU2OjA5IDIwMDMNCkBAIC0yNjUsNiAr
MjY1LDcgQEANCiAJCXBhbmljKCJrbWVtX3N1YmFsbG9jIik7DQogCX0NCiAJ
Km1heCA9ICptaW4gKyBzaXplOw0KKwlwbWFwX3JlZmVyZW5jZSh2bV9tYXBf
cG1hcChwYXJlbnQpKTsNCiAJcmVzdWx0ID0gdm1fbWFwX2NyZWF0ZSh2bV9t
YXBfcG1hcChwYXJlbnQpLCAqbWluLCAqbWF4KTsNCiAJaWYgKHJlc3VsdCA9
PSBOVUxMKQ0KIAkJcGFuaWMoImttZW1fc3ViYWxsb2M6IGNhbm5vdCBjcmVh
dGUgc3VibWFwIik7DQo=

--0-1454759381-1061539781=:7877--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030822030729.A7877>