removing NeedFunctionPrototypes and NeedNestedPrototypes patch (1/3)

Ely Levy elylevy-xserver@cs.huji.ac.il
Sun, 15 Feb 2004 15:05:15 +0200 (IST)


  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.

--1099172128-599954911-1076850315=:16324
Content-Type: TEXT/PLAIN; charset=US-ASCII

this one does the dix dir and few other files

Ely Levy
System group
Hebrew University
Jerusalem Israel


--1099172128-599954911-1076850315=:16324
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch1
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.56.0402151501551.16324@pita.cs.huji.ac.il>
Content-Description: 
Content-Disposition: attachment; filename=patch1

SW5kZXg6IGRpeC9jb2xvcm1hcC5jDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQpSQ1MgZmlsZTogL2N2cy94c2VydmVyL3hzZXJ2ZXIvZGl4L2NvbG9ybWFw
LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAzLjE0DQpkaWZmIC11IC1yMy4x
NCBjb2xvcm1hcC5jDQotLS0gZGl4L2NvbG9ybWFwLmMJMTQgRmViIDIwMDQg
MTU6MTk6NTQgLTAwMDAJMy4xNA0KKysrIGRpeC9jb2xvcm1hcC5jCTE1IEZl
YiAyMDA0IDAyOjI5OjM2IC0wMDAwDQpAQCAtNjgsMTI2ICs2OCwzOSBAQA0K
IGV4dGVybiBYSUQgY2xpZW50RXJyb3JWYWx1ZTsNCiBleHRlcm4gaW50IGNv
bG9ybWFwUHJpdmF0ZUNvdW50Ow0KIA0KLXN0YXRpYyBQaXhlbCBGaW5kQmVz
dFBpeGVsKA0KLSAgICBFbnRyeVB0ciAvKnBlbnRGaXJzdCovLA0KLSAgICBp
bnQgLypzaXplKi8sDQotICAgIHhyZ2IgKiAvKnByZ2IqLywNCi0gICAgaW50
IC8qY2hhbm5lbCovDQotKTsNCi0NCi1zdGF0aWMgaW50IEFsbENvbXAoDQot
ICAgIEVudHJ5UHRyIC8qcGVudCovLA0KLSAgICB4cmdiICogLypwcmdiKi8N
Ci0pOw0KLQ0KLXN0YXRpYyBpbnQgUmVkQ29tcCgNCi0gICAgRW50cnlQdHIg
LypwZW50Ki8sDQotICAgIHhyZ2IgKiAvKnByZ2IqLw0KLSk7DQotDQotc3Rh
dGljIGludCBHcmVlbkNvbXAoDQotICAgIEVudHJ5UHRyIC8qcGVudCovLA0K
LSAgICB4cmdiICogLypwcmdiKi8NCi0pOw0KLQ0KLXN0YXRpYyBpbnQgQmx1
ZUNvbXAoDQotICAgIEVudHJ5UHRyIC8qcGVudCovLA0KLSAgICB4cmdiICog
LypwcmdiKi8NCi0pOw0KLQ0KLXN0YXRpYyB2b2lkIEZyZWVQaXhlbHMoDQot
ICAgIHJlZ2lzdGVyIENvbG9ybWFwUHRyIC8qcG1hcCovLA0KLSAgICByZWdp
c3RlciBpbnQgLypjbGllbnQqLw0KLSk7DQotDQotc3RhdGljIHZvaWQgQ29w
eUZyZWUoDQotICAgIGludCAvKmNoYW5uZWwqLywNCi0gICAgaW50IC8qY2xp
ZW50Ki8sDQotICAgIENvbG9ybWFwUHRyIC8qcG1hcFNyYyovLA0KLSAgICBD
b2xvcm1hcFB0ciAvKnBtYXBEc3QqLw0KLSk7DQotDQotc3RhdGljIHZvaWQg
RnJlZUNlbGwoDQotICAgIENvbG9ybWFwUHRyIC8qcG1hcCovLA0KLSAgICBQ
aXhlbCAvKmkqLywNCi0gICAgaW50IC8qY2hhbm5lbCovDQotKTsNCi0NCi1z
dGF0aWMgdm9pZCBVcGRhdGVDb2xvcnMoDQotICAgIENvbG9ybWFwUHRyIC8q
cG1hcCovDQotKTsNCi0NCi1zdGF0aWMgaW50IEFsbG9jRGlyZWN0KA0KLSAg
ICBpbnQgLypjbGllbnQqLywNCi0gICAgQ29sb3JtYXBQdHIgLypwbWFwKi8s
DQotICAgIGludCAvKmMqLywNCi0gICAgaW50IC8qciovLA0KLSAgICBpbnQg
LypnKi8sDQotICAgIGludCAvKmIqLywNCi0gICAgQm9vbCAvKmNvbnRpZyov
LA0KLSAgICBQaXhlbCAqIC8qcGl4ZWxzKi8sDQotICAgIFBpeGVsICogLypw
cm1hc2sqLywNCi0gICAgUGl4ZWwgKiAvKnBnbWFzayovLA0KLSAgICBQaXhl
bCAqIC8qcGJtYXNrKi8NCi0pOw0KLQ0KLXN0YXRpYyBpbnQgQWxsb2NQc2V1
ZG8oDQotICAgIGludCAvKmNsaWVudCovLA0KLSAgICBDb2xvcm1hcFB0ciAv
KnBtYXAqLywNCi0gICAgaW50IC8qYyovLA0KLSAgICBpbnQgLypyKi8sDQot
ICAgIEJvb2wgLypjb250aWcqLywNCi0gICAgUGl4ZWwgKiAvKnBpeGVscyov
LA0KLSAgICBQaXhlbCAqIC8qcG1hc2sqLywNCi0gICAgUGl4ZWwgKiogLypw
cHBpeEZpcnN0Ki8NCi0pOw0KLQ0KLXN0YXRpYyBCb29sIEFsbG9jQ1AoDQot
ICAgIENvbG9ybWFwUHRyIC8qcG1hcCovLA0KLSAgICBFbnRyeVB0ciAvKnBl
bnRGaXJzdCovLA0KLSAgICBpbnQgLypjb3VudCovLA0KLSAgICBpbnQgLypw
bGFuZXMqLywNCi0gICAgQm9vbCAvKmNvbnRpZyovLA0KLSAgICBQaXhlbCAq
IC8qcGl4ZWxzKi8sDQotICAgIFBpeGVsICogLypwTWFzayovDQotKTsNCi0N
Ci1zdGF0aWMgQm9vbCBBbGxvY1NoYXJlZCgNCi0gICAgQ29sb3JtYXBQdHIg
LypwbWFwKi8sDQotICAgIFBpeGVsICogLypwcGl4Ki8sDQotICAgIGludCAv
KmMqLywNCi0gICAgaW50IC8qciovLA0KLSAgICBpbnQgLypnKi8sDQotICAg
IGludCAvKmIqLywNCi0gICAgUGl4ZWwgLypybWFzayovLA0KLSAgICBQaXhl
bCAvKmdtYXNrKi8sDQotICAgIFBpeGVsIC8qYm1hc2sqLywNCi0gICAgUGl4
ZWwgKiAvKnBwaXhGaXJzdCovDQotKTsNCi0NCi1zdGF0aWMgaW50IEZyZWVD
bygNCi0gICAgQ29sb3JtYXBQdHIgLypwbWFwKi8sDQotICAgIGludCAvKmNs
aWVudCovLA0KLSAgICBpbnQgLypjb2xvciovLA0KLSAgICBpbnQgLypucGl4
SW4qLywNCi0gICAgUGl4ZWwgKiAvKnBwaXhJbiovLA0KLSAgICBQaXhlbCAv
Km1hc2sqLw0KLSk7DQotDQotc3RhdGljIGludCAgIFRlbGxOb01hcCgNCi0g
ICAgV2luZG93UHRyCS8qcHdpbiovLA0KLSAgICBDb2xvcm1hcCAJKiAvKnBt
aWQqLw0KLSk7DQotDQotc3RhdGljIHZvaWQgRmluZENvbG9ySW5Sb290Q21h
cCAoDQotICAgIENvbG9ybWFwUHRyCS8qIHBtYXAgKi8sDQotICAgIEVudHJ5
UHRyCS8qIHBlbnRGaXJzdCAqLywNCi0gICAgaW50CQkvKiBzaXplICovLA0K
LSAgICB4cmdiKgkvKiBwcmdiICovLA0KLSAgICBQaXhlbCoJLyogcFBpeGVs
ICovLA0KLSAgICBpbnQJCS8qIGNoYW5uZWwgKi8sDQotICAgIENvbG9yQ29t
cGFyZVByb2NQdHIgLyogY29tcCAqLw0KLSk7DQorc3RhdGljIFBpeGVsIEZp
bmRCZXN0UGl4ZWwoRW50cnlQdHIgcGVudEZpcnN0LCBpbnQgc2l6ZSwgeHJn
YiAqcHJnYiwgaW50IGNoYW5uZWwpOw0KK3N0YXRpYyBpbnQgQWxsQ29tcChF
bnRyeVB0ciBwZW50LCB4cmdiICpwcmdiKTsNCitzdGF0aWMgaW50IFJlZENv
bXAoRW50cnlQdHIgcGVudCwgeHJnYiAqcHJnYik7DQorc3RhdGljIGludCBH
cmVlbkNvbXAoRW50cnlQdHIgcGVudCwgeHJnYiAqcHJnYik7DQorc3RhdGlj
IGludCBCbHVlQ29tcChFbnRyeVB0ciBwZW50LCB4cmdiICpwcmdiKTsNCitz
dGF0aWMgdm9pZCBGcmVlUGl4ZWxzKHJlZ2lzdGVyIENvbG9ybWFwUHRyIHBt
YXAscmVnaXN0ZXIgaW50IGNsaWVudCk7DQorc3RhdGljIHZvaWQgQ29weUZy
ZWUoaW50IGNoYW5uZWwsIGludCBjbGllbnQsIENvbG9ybWFwUHRyIHBtYXBT
cmMsIENvbG9ybWFwUHRyIHBtYXBEc3QpOw0KK3N0YXRpYyB2b2lkIEZyZWVD
ZWxsKENvbG9ybWFwUHRyIHBtYXAsIFBpeGVsIGksaW50IGNoYW5uZWwpOw0K
K3N0YXRpYyB2b2lkIFVwZGF0ZUNvbG9ycyhDb2xvcm1hcFB0ciBwbWFwKTsN
CisNCitzdGF0aWMgaW50IEFsbG9jRGlyZWN0KGludCBjbGllbnQsIENvbG9y
bWFwUHRyIHBtYXAsIGludCBjICxpbnQgciwgDQorCQkgICAgICAgaW50IGcs
IGludCBiLCBCb29sIGNvbnRpZywgUGl4ZWwgKnBpeGVscywgDQorCQkgICAg
ICAgUGl4ZWwgKnBybWFzaywgUGl4ZWwgKnBnbWFzaywgUGl4ZWwgKnBibWFz
ayk7DQorDQorc3RhdGljIGludCBBbGxvY1BzZXVkbyhpbnQgY2xpZW50LCBD
b2xvcm1hcFB0ciBwbWFwLCBpbnQgYywgaW50IHIsDQorCQkgICAgICAgQm9v
bCBjb250aWcsIFBpeGVsICpwaXhlbHMsIFBpeGVsICpwbWFzaywNCisJCSAg
ICAgICBQaXhlbCAqKnBwcGl4Rmlyc3QpOw0KKw0KK3N0YXRpYyBCb29sIEFs
bG9jQ1AoQ29sb3JtYXBQdHIgcG1hcCwgRW50cnlQdHIgcGVudEZpcnN0LCBp
bnQgY291bnQsDQorCQkgICAgaW50IHBsYW5lcywgQm9vbCBjb250aWcsIFBp
eGVsICpwaXhlbHMsIFBpeGVsICpwTWFzayk7DQorDQorc3RhdGljIEJvb2wg
QWxsb2NTaGFyZWQoQ29sb3JtYXBQdHIgcG1hcCwgUGl4ZWwgKnBwaXgsIGlu
dCBjLA0KKwkJCWludCByLCBpbnQgZywgaW50IGIsIFBpeGVsIHJtYXNrLA0K
KwkJCVBpeGVsIGdtYXNrLCBQaXhlbCBibWFzaywgUGl4ZWwgKnBwaXhGaXJz
dCk7DQorDQorc3RhdGljIGludCBGcmVlQ28oQ29sb3JtYXBQdHIgcG1hcCwg
aW50IGNsaWVudCwgaW50IGNvbG9yLA0KKwkJICBpbnQgbnBpeEluLCBQaXhl
bCAqcHBpeEluLCBQaXhlbCBtYXNrKTsNCisNCitzdGF0aWMgaW50IFRlbGxO
b01hcChXaW5kb3dQdHIgcHdpbixDb2xvcm1hcCAqcG1pZCk7DQorDQorc3Rh
dGljIHZvaWQgRmluZENvbG9ySW5Sb290Q21hcChDb2xvcm1hcFB0ciBwbWFw
LCBFbnRyeVB0ciBwZW50Rmlyc3QsIGludCBzaXplLA0KKwkJCQl4cmdiICpw
cmdiLCBQaXhlbCAqcFBpeGVsLCBpbnQgY2hhbm5lbCwNCisJCQkJQ29sb3JD
b21wYXJlUHJvY1B0ciBjb21wKTsNCiANCiAjZGVmaW5lIE5VTVJFRCh2aXMp
ICgodmlzLT5yZWRNYXNrID4+IHZpcy0+b2Zmc2V0UmVkKSArIDEpDQogI2Rl
ZmluZSBOVU1HUkVFTih2aXMpICgodmlzLT5ncmVlbk1hc2sgPj4gdmlzLT5v
ZmZzZXRHcmVlbikgKyAxKQ0KSW5kZXg6IGRpeC9jdXJzb3IuYw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMveHNlcnZlci94c2Vy
dmVyL2RpeC9jdXJzb3IuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDMuMTIN
CmRpZmYgLXUgLXIzLjEyIGN1cnNvci5jDQotLS0gZGl4L2N1cnNvci5jCTIg
Tm92IDIwMDMgMTk6NTY6MTAgLTAwMDAJMy4xMg0KKysrIGRpeC9jdXJzb3Iu
YwkxNSBGZWIgMjAwNCAwMjoyOTozNyAtMDAwMA0KQEAgLTc2LDEyICs3Niw3
IEBADQogI2VuZGlmDQogDQogc3RhdGljIHZvaWQNCi0jaWYgTmVlZEZ1bmN0
aW9uUHJvdG90eXBlcw0KIEZyZWVDdXJzb3JCaXRzKEN1cnNvckJpdHNQdHIg
Yml0cykNCi0jZWxzZQ0KLUZyZWVDdXJzb3JCaXRzKGJpdHMpDQotICAgIEN1
cnNvckJpdHNQdHIgYml0czsNCi0jZW5kaWYNCiB7DQogICAgIGlmICgtLWJp
dHMtPnJlZmNudCA+IDApDQogCXJldHVybjsNCkluZGV4OiBkaXgvZGV2aWNl
cy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy94
c2VydmVyL3hzZXJ2ZXIvZGl4L2RldmljZXMuYyx2DQpyZXRyaWV2aW5nIHJl
dmlzaW9uIDMuMjINCmRpZmYgLXUgLXIzLjIyIGRldmljZXMuYw0KLS0tIGRp
eC9kZXZpY2VzLmMJMTEgU2VwIDIwMDMgMDU6MTI6NTAgLTAwMDAJMy4yMg0K
KysrIGRpeC9kZXZpY2VzLmMJMTUgRmViIDIwMDQgMDI6Mjk6NDIgLTAwMDAN
CkBAIC0yMDAsMTIgKzIwMCw3IEBADQogfQ0KIA0KIHN0YXRpYyB2b2lkDQot
I2lmIE5lZWRGdW5jdGlvblByb3RvdHlwZXMNCiBDbG9zZURldmljZShyZWdp
c3RlciBEZXZpY2VJbnRQdHIgZGV2KQ0KLSNlbHNlDQotQ2xvc2VEZXZpY2Uo
ZGV2KQ0KLSAgICByZWdpc3RlciBEZXZpY2VJbnRQdHIgZGV2Ow0KLSNlbmRp
Zg0KIHsNCiAgICAgS2JkRmVlZGJhY2tQdHIgaywga25leHQ7DQogICAgIFB0
ckZlZWRiYWNrUHRyIHAsIHBuZXh0Ow0KQEAgLTUwNCwxMiArNDk5LDcgQEAN
CiB9DQogDQogc3RhdGljIEJvb2wNCi0jaWYgTmVlZEZ1bmN0aW9uUHJvdG90
eXBlcw0KIEluaXRNb2RNYXAocmVnaXN0ZXIgS2V5Q2xhc3NQdHIga2V5YykN
Ci0jZWxzZQ0KLUluaXRNb2RNYXAoa2V5YykNCi0gICAgcmVnaXN0ZXIgS2V5
Q2xhc3NQdHIga2V5YzsNCi0jZW5kaWYNCiB7DQogICAgIGludCBpLCBqOw0K
ICAgICBDQVJEOCBrZXlzUGVyTW9kaWZpZXJbOF07DQpAQCAtMTcxNSwxNyAr
MTcwNSw4IEBADQogI2lmZGVmIEFkZElucHV0RGV2aWNlDQogI3VuZGVmIEFk
ZElucHV0RGV2aWNlDQogDQotI2lmIE5lZWRGdW5jdGlvblByb3RvdHlwZXMN
Ci1EZXZpY2VQdHINCi1BZGRJbnB1dERldmljZSgNCi0gICAgRGV2aWNlUHJv
YyBkZXZpY2VQcm9jLA0KLSAgICBCb29sIGF1dG9TdGFydCkNCi0jZWxzZQ0K
IERldmljZVB0cg0KLUFkZElucHV0RGV2aWNlKGRldmljZVByb2MsIGF1dG9T
dGFydCkNCi0gICAgRGV2aWNlUHJvYyBkZXZpY2VQcm9jOw0KLSAgICBCb29s
IGF1dG9TdGFydDsNCi0jZW5kaWYNCitBZGRJbnB1dERldmljZShEZXZpY2VQ
cm9jIGRldmljZVByb2MsQm9vbCBhdXRvU3RhcnQpDQogew0KICAgICByZXR1
cm4gKERldmljZVB0cilfQWRkSW5wdXREZXZpY2UoZGV2aWNlUHJvYywgYXV0
b1N0YXJ0KTsNCiB9DQpAQCAtMTczNCwxNCArMTcxNSw4IEBADQogI2lmZGVm
IFJlZ2lzdGVyUG9pbnRlckRldmljZQ0KICN1bmRlZiBSZWdpc3RlclBvaW50
ZXJEZXZpY2UNCiANCi0jaWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcw0KIHZv
aWQNCiBSZWdpc3RlclBvaW50ZXJEZXZpY2UoRGV2aWNlUHRyIGRldmljZSkN
Ci0jZWxzZQ0KLXZvaWQNCi1SZWdpc3RlclBvaW50ZXJEZXZpY2UoZGV2aWNl
KQ0KLSAgICBEZXZpY2VQdHIgZGV2aWNlOw0KLSNlbmRpZg0KIHsNCiAgICAg
X1JlZ2lzdGVyUG9pbnRlckRldmljZSgoRGV2aWNlSW50UHRyKWRldmljZSk7
DQogfQ0KQEAgLTE3NTAsMTQgKzE3MjUsOCBAQA0KICNpZmRlZiBSZWdpc3Rl
cktleWJvYXJkRGV2aWNlDQogI3VuZGVmIFJlZ2lzdGVyS2V5Ym9hcmREZXZp
Y2UNCiANCi0jaWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcw0KIHZvaWQNCiBS
ZWdpc3RlcktleWJvYXJkRGV2aWNlKERldmljZVB0ciBkZXZpY2UpDQotI2Vs
c2UNCi12b2lkDQotUmVnaXN0ZXJLZXlib2FyZERldmljZShkZXZpY2UpDQot
ICAgIERldmljZVB0ciBkZXZpY2U7DQotI2VuZGlmDQogew0KICAgICBfUmVn
aXN0ZXJLZXlib2FyZERldmljZSgoRGV2aWNlSW50UHRyKWRldmljZSk7DQog
fQ0KSW5kZXg6IGRpeC9kaXNwYXRjaC5jDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQpSQ1MgZmlsZTogL2N2cy94c2VydmVyL3hzZXJ2ZXIvZGl4L2Rpc3Bh
dGNoLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAzLjM0DQpkaWZmIC11IC1y
My4zNCBkaXNwYXRjaC5jDQotLS0gZGl4L2Rpc3BhdGNoLmMJMTIgRmViIDIw
MDQgMTg6NTg6NDkgLTAwMDAJMy4zNA0KKysrIGRpeC9kaXNwYXRjaC5jCTE1
IEZlYiAyMDA0IDAyOjI5OjUyIC0wMDAwDQpAQCAtMTM5LDE3ICsxMzksOCBA
QA0KIEhXRXZlbnRRdWV1ZVB0ciBjaGVja0ZvcklucHV0WzJdOw0KIGV4dGVy
biBpbnQgY29ubkJsb2NrU2NyZWVuU3RhcnQ7DQogDQotc3RhdGljIHZvaWQg
S2lsbEFsbENsaWVudHMoDQotI2lmIE5lZWRGdW5jdGlvblByb3RvdHlwZXMN
Ci0gICAgdm9pZA0KLSNlbmRpZg0KLSk7DQotDQotc3RhdGljIHZvaWQgRGVs
ZXRlQ2xpZW50RnJvbUFueVNlbGVjdGlvbnMoDQotI2lmIE5lZWRGdW5jdGlv
blByb3RvdHlwZXMNCi0gICAgQ2xpZW50UHRyIC8qY2xpZW50Ki8NCi0jZW5k
aWYNCi0pOw0KK3N0YXRpYyB2b2lkIEtpbGxBbGxDbGllbnRzKHZvaWQpOw0K
K3N0YXRpYyB2b2lkIERlbGV0ZUNsaWVudEZyb21BbnlTZWxlY3Rpb25zKENs
aWVudFB0ciBjbGllbnQpOw0KIA0KIHN0YXRpYyBpbnQgbmV4dEZyZWVDbGll
bnRJRDsgLyogYWx3YXlzIE1JTiBmcmVlIGNsaWVudCBJRCAqLw0KIA0KQEAg
LTExODcsMTIgKzExNzgsNyBAQA0KIH0NCiANCiBzdGF0aWMgdm9pZA0KLSNp
ZiBOZWVkRnVuY3Rpb25Qcm90b3R5cGVzDQogVW5ncmFiU2VydmVyKENsaWVu
dFB0ciBjbGllbnQpDQotI2Vsc2UNCi1VbmdyYWJTZXJ2ZXIoY2xpZW50KQ0K
LSAgICBDbGllbnRQdHIgY2xpZW50Ow0KLSNlbmRpZg0KIHsNCiAgICAgaW50
IGk7DQogDQpJbmRleDogZGl4L2RpeGZvbnRzLmMNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3hzZXJ2ZXIveHNlcnZlci9kaXgv
ZGl4Zm9udHMuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDMuMzENCmRpZmYg
LXUgLXIzLjMxIGRpeGZvbnRzLmMNCi0tLSBkaXgvZGl4Zm9udHMuYwkyIE9j
dCAyMDAzIDAyOjMwOjEyIC0wMDAwCTMuMzENCisrKyBkaXgvZGl4Zm9udHMu
YwkxNSBGZWIgMjAwNCAwMjoyOTo1OCAtMDAwMA0KQEAgLTE5NiwyMyArMTk2
LDEzIEBADQogDQogLyogWFhYIC0tIHRoZXNlIHR3byBmdW5jcyBtYXkgd2Fu
dCB0byBiZSBicm9rZW4gaW50byBtYWNyb3MgKi8NCiBzdGF0aWMgdm9pZA0K
LSNpZiBOZWVkRnVuY3Rpb25Qcm90b3R5cGVzDQogVXNlRlBFKEZvbnRQYXRo
RWxlbWVudFB0ciBmcGUpDQotI2Vsc2UNCi1Vc2VGUEUoZnBlKQ0KLSAgICBG
b250UGF0aEVsZW1lbnRQdHIgZnBlOw0KLSNlbmRpZg0KIHsNCiAgICAgZnBl
LT5yZWZjb3VudCsrOw0KIH0NCiANCiBzdGF0aWMgdm9pZA0KLSNpZiBOZWVk
RnVuY3Rpb25Qcm90b3R5cGVzDQogRnJlZUZQRSAoRm9udFBhdGhFbGVtZW50
UHRyIGZwZSkNCi0jZWxzZQ0KLUZyZWVGUEUgKGZwZSkNCi0gICAgRm9udFBh
dGhFbGVtZW50UHRyCWZwZTsNCi0jZW5kaWYNCiB7DQogICAgIGZwZS0+cmVm
Y291bnQtLTsNCiAgICAgaWYgKGZwZS0+cmVmY291bnQgPT0gMCkgew0KQEAg
LTIyMywxMyArMjEzLDcgQEANCiB9DQogDQogc3RhdGljIEJvb2wNCi0jaWYg
TmVlZEZ1bmN0aW9uUHJvdG90eXBlcw0KIGRvT3BlbkZvbnQoQ2xpZW50UHRy
IGNsaWVudCwgT0ZjbG9zdXJlUHRyIGMpDQotI2Vsc2UNCi1kb09wZW5Gb250
KGNsaWVudCwgYykNCi0gICAgQ2xpZW50UHRyICAgY2xpZW50Ow0KLSAgICBP
RmNsb3N1cmVQdHIgYzsNCi0jZW5kaWYNCiB7DQogICAgIEZvbnRQdHIgICAg
IHBmb250ID0gTnVsbEZvbnQ7DQogICAgIEZvbnRQYXRoRWxlbWVudFB0ciBm
cGUgPSBOVUxMOw0KQEAgLTU3OSwxMyArNTYzLDcgQEANCiB9DQogDQogc3Rh
dGljIEJvb2wNCi0jaWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcw0KIGRvTGlz
dEZvbnRzQW5kQWxpYXNlcyhDbGllbnRQdHIgY2xpZW50LCBMRmNsb3N1cmVQ
dHIgYykNCi0jZWxzZQ0KLWRvTGlzdEZvbnRzQW5kQWxpYXNlcyhjbGllbnQs
IGMpDQotICAgIENsaWVudFB0ciAgIGNsaWVudDsNCi0gICAgTEZjbG9zdXJl
UHRyIGM7DQotI2VuZGlmDQogew0KICAgICBGb250UGF0aEVsZW1lbnRQdHIg
ZnBlOw0KICAgICBpbnQgICAgICAgICBlcnIgPSBTdWNjZXNzZnVsOw0KQEAg
LTE2NDUsMTIgKzE2MjMsNyBAQA0KIA0KIC8qIGRvZXMgdGhlIG5lY2Vzc2Fy
eSBtYWdpYyB0byBmaWd1cmUgb3V0IHRoZSBmcGUgdHlwZSAqLw0KIHN0YXRp
YyBpbnQNCi0jaWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcw0KIERldGVybWlu
ZUZQRVR5cGUoY2hhciAqcGF0aG5hbWUpDQotI2Vsc2UNCi1EZXRlcm1pbmVG
UEVUeXBlKHBhdGhuYW1lKQ0KLSAgICBjaGFyICAgICAgICpwYXRobmFtZTsN
Ci0jZW5kaWYNCiB7DQogICAgIGludCAgICAgICAgIGk7DQogDQpAQCAtMTY2
MywxNCArMTYzNiw3IEBADQogDQogDQogc3RhdGljIHZvaWQNCi0jaWYgTmVl
ZEZ1bmN0aW9uUHJvdG90eXBlcw0KIEZyZWVGb250UGF0aChGb250UGF0aEVs
ZW1lbnRQdHIgKmxpc3QsIGludCBuLCBCb29sIGZvcmNlKQ0KLSNlbHNlDQot
RnJlZUZvbnRQYXRoKGxpc3QsIG4sIGZvcmNlKQ0KLSAgICBGb250UGF0aEVs
ZW1lbnRQdHIJKmxpc3Q7DQotICAgIEJvb2wJCWZvcmNlOw0KLSAgICBpbnQg
ICAgICAgICBuOw0KLSNlbmRpZg0KIHsNCiAgICAgaW50ICAgICAgICAgaTsN
CiANCkBAIC0xNjk3LDE1ICsxNjYzLDggQEANCiB9DQogDQogc3RhdGljIEZv
bnRQYXRoRWxlbWVudFB0cg0KLSNpZiBOZWVkRnVuY3Rpb25Qcm90b3R5cGVz
DQotZmluZF9leGlzdGluZ19mcGUoRm9udFBhdGhFbGVtZW50UHRyICpsaXN0
LCBpbnQgbnVtLCB1bnNpZ25lZCBjaGFyICpuYW1lLCBpbnQgbGVuKQ0KLSNl
bHNlDQotZmluZF9leGlzdGluZ19mcGUobGlzdCwgbnVtLCBuYW1lLCBsZW4p
DQotICAgIEZvbnRQYXRoRWxlbWVudFB0ciAqbGlzdDsNCi0gICAgaW50ICAg
ICAgICAgbnVtOw0KLSAgICB1bnNpZ25lZCBjaGFyICpuYW1lOw0KLSAgICBp
bnQgICAgICAgICBsZW47DQotI2VuZGlmDQorZmluZF9leGlzdGluZ19mcGUo
Rm9udFBhdGhFbGVtZW50UHRyICpsaXN0LCBpbnQgbnVtLCANCisJCSAgdW5z
aWduZWQgY2hhciAqbmFtZSwgaW50IGxlbikNCiB7DQogICAgIEZvbnRQYXRo
RWxlbWVudFB0ciBmcGU7DQogICAgIGludCAgICAgICAgIGk7DQpAQCAtMTcy
MCwxNSArMTY3OSw3IEBADQogDQogDQogc3RhdGljIGludA0KLSNpZiBOZWVk
RnVuY3Rpb25Qcm90b3R5cGVzDQogU2V0Rm9udFBhdGhFbGVtZW50cyhpbnQg
bnBhdGhzLCB1bnNpZ25lZCBjaGFyICpwYXRocywgaW50ICpiYWQsIEJvb2wg
cGVyc2lzdCkNCi0jZWxzZQ0KLVNldEZvbnRQYXRoRWxlbWVudHMobnBhdGhz
LCBwYXRocywgYmFkLCBwZXJzaXN0KQ0KLSAgICBpbnQgICAgICAgICBucGF0
aHM7DQotICAgIHVuc2lnbmVkIGNoYXIgKnBhdGhzOw0KLSAgICBpbnQgICAg
ICAgICpiYWQ7DQotICAgIEJvb2wJcGVyc2lzdDsNCi0jZW5kaWYNCiB7DQog
ICAgIGludCAgICAgICAgIGksIGVyciA9IDA7DQogICAgIGludCAgICAgICAg
IHZhbGlkX3BhdGhzID0gMDsNCkluZGV4OiBkaXgvZGl4dXRpbHMuYw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMveHNlcnZlci94
c2VydmVyL2RpeC9kaXh1dGlscy5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g
My4xNw0KZGlmZiAtdSAtcjMuMTcgZGl4dXRpbHMuYw0KLS0tIGRpeC9kaXh1
dGlscy5jCTE1IEphbiAyMDA0IDA5OjAzOjQ2IC0wMDAwCTMuMTcNCisrKyBk
aXgvZGl4dXRpbHMuYwkxNSBGZWIgMjAwNCAwMjozMDowMCAtMDAwMA0KQEAg
LTYzNSwyMiArNjM1LDggQEANCiB9DQogDQogQm9vbA0KLSNpZiBOZWVkRnVu
Y3Rpb25Qcm90b3R5cGVzDQotUXVldWVXb3JrUHJvYyAoDQotICAgIEJvb2wJ
KCpmdW5jdGlvbikoDQotI2lmIE5lZWROZXN0ZWRQcm90b3R5cGVzDQotCQlD
bGllbnRQdHIJLyogcENsaWVudCAqLywNCi0JCXBvaW50ZXIJCS8qIGNsb3N1
cmUgKi8NCi0jZW5kaWYNCi0JCSksDQotICAgIENsaWVudFB0cgljbGllbnQs
DQotICAgIHBvaW50ZXIJY2xvc3VyZSkNCi0jZWxzZQ0KLVF1ZXVlV29ya1By
b2MgKGZ1bmN0aW9uLCBjbGllbnQsIGNsb3N1cmUpDQotICAgIEJvb2wJKCpm
dW5jdGlvbikoKTsNCi0gICAgQ2xpZW50UHRyCWNsaWVudDsNCi0gICAgcG9p
bnRlcgljbG9zdXJlOw0KLSNlbmRpZg0KK1F1ZXVlV29ya1Byb2MgKEJvb2wg
KCpmdW5jdGlvbikoQ2xpZW50UHRyIHBDbGllbnQscG9pbnRlciBjbG9zdXJl
KSwNCisJICAgICAgIENsaWVudFB0ciBjbGllbnQsIHBvaW50ZXIgY2xvc3Vy
ZSkNCiB7DQogICAgIFdvcmtRdWV1ZVB0ciAgICBxOw0KIA0KQEAgLTc2Nywx
NyArNzUzLDggQEANCiBzdGF0aWMgQ2FsbGJhY2tMaXN0UHRyICoqbGlzdHNU
b0NsZWFudXAgPSBOVUxMOw0KIA0KIHN0YXRpYyBCb29sIA0KLSNpZiBOZWVk
RnVuY3Rpb25Qcm90b3R5cGVzDQotX0FkZENhbGxiYWNrKA0KLSAgICBDYWxs
YmFja0xpc3RQdHIgKnBjYmwsDQotICAgIENhbGxiYWNrUHJvY1B0ciBjYWxs
YmFjaywNCi0gICAgcG9pbnRlciAgICAgICAgIGRhdGEpDQotI2Vsc2UNCi1f
QWRkQ2FsbGJhY2socGNibCwgY2FsbGJhY2ssIGRhdGEpDQotICAgIENhbGxi
YWNrTGlzdFB0ciAqcGNibDsNCi0gICAgQ2FsbGJhY2tQcm9jUHRyIGNhbGxi
YWNrOw0KLSAgICBwb2ludGVyICAgICAgICAgZGF0YTsNCi0jZW5kaWYNCitf
QWRkQ2FsbGJhY2soQ2FsbGJhY2tMaXN0UHRyICpwY2JsLCBDYWxsYmFja1By
b2NQdHIgY2FsbGJhY2ssDQorCSAgICAgcG9pbnRlciBkYXRhKQ0KIHsNCiAg
ICAgQ2FsbGJhY2tQdHIgICAgIGNicjsNCiANCkBAIC03OTMsMTcgKzc3MCw4
IEBADQogfQ0KIA0KIHN0YXRpYyBCb29sIA0KLSNpZiBOZWVkRnVuY3Rpb25Q
cm90b3R5cGVzDQotX0RlbGV0ZUNhbGxiYWNrKA0KLSAgICBDYWxsYmFja0xp
c3RQdHIgKnBjYmwsDQotICAgIENhbGxiYWNrUHJvY1B0ciBjYWxsYmFjaywN
Ci0gICAgcG9pbnRlciAgICAgICAgIGRhdGEpDQotI2Vsc2UNCi1fRGVsZXRl
Q2FsbGJhY2socGNibCwgY2FsbGJhY2ssIGRhdGEpDQotICAgIENhbGxiYWNr
TGlzdFB0ciAqcGNibDsNCi0gICAgQ2FsbGJhY2tQcm9jUHRyIGNhbGxiYWNr
Ow0KLSAgICBwb2ludGVyICAgICAgICAgZGF0YTsNCi0jZW5kaWYNCitfRGVs
ZXRlQ2FsbGJhY2soQ2FsbGJhY2tMaXN0UHRyICpwY2JsLCBDYWxsYmFja1By
b2NQdHIgY2FsbGJhY2ssDQorCQlwb2ludGVyIGRhdGEpDQogew0KICAgICBD
YWxsYmFja0xpc3RQdHIgY2JsID0gKnBjYmw7DQogICAgIENhbGxiYWNrUHRy
ICAgICBjYnIsIHBjYnI7DQpAQCAtODM2LDE1ICs4MDQsNyBAQA0KIH0NCiAN
CiBzdGF0aWMgdm9pZCANCi0jaWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcw0K
LV9DYWxsQ2FsbGJhY2tzKA0KLSAgICBDYWxsYmFja0xpc3RQdHIgICAgKnBj
YmwsDQotICAgIHBvaW50ZXIJICAgIGNhbGxfZGF0YSkNCi0jZWxzZQ0KLV9D
YWxsQ2FsbGJhY2tzKHBjYmwsIGNhbGxfZGF0YSkNCi0gICAgQ2FsbGJhY2tM
aXN0UHRyICAgICpwY2JsOw0KLSAgICBwb2ludGVyCSAgICBjYWxsX2RhdGE7
DQotI2VuZGlmDQorX0NhbGxDYWxsYmFja3MoQ2FsbGJhY2tMaXN0UHRyICpw
Y2JsLHBvaW50ZXIgY2FsbF9kYXRhKQ0KIHsNCiAgICAgQ2FsbGJhY2tMaXN0
UHRyIGNibCA9ICpwY2JsOw0KICAgICBDYWxsYmFja1B0ciAgICAgY2JyLCBw
Y2JyOw0KQEAgLTg5OSwxMyArODU5LDcgQEANCiB9DQogDQogc3RhdGljIHZv
aWQNCi0jaWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcw0KLV9EZWxldGVDYWxs
YmFja0xpc3QoDQotICAgIENhbGxiYWNrTGlzdFB0ciAgICAqcGNibCkNCi0j
ZWxzZQ0KLV9EZWxldGVDYWxsYmFja0xpc3QocGNibCkNCi0gICAgQ2FsbGJh
Y2tMaXN0UHRyICAgICpwY2JsOw0KLSNlbmRpZg0KK19EZWxldGVDYWxsYmFj
a0xpc3QoQ2FsbGJhY2tMaXN0UHRyICpwY2JsKQ0KIHsNCiAgICAgQ2FsbGJh
Y2tMaXN0UHRyIGNibCA9ICpwY2JsOw0KICAgICBDYWxsYmFja1B0ciAgICAg
Y2JyLCBuZXh0Y2JyOw0KSW5kZXg6IGRpeC9nYy5jDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy94c2VydmVyL3hzZXJ2ZXIvZGl4
L2djLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAzLjExDQpkaWZmIC11IC1y
My4xMSBnYy5jDQotLS0gZGl4L2djLmMJMTEgU2VwIDIwMDMgMDU6MTI6NTAg
LTAwMDAJMy4xMQ0KKysrIGRpeC9nYy5jCTE1IEZlYiAyMDA0IDAyOjMwOjAz
IC0wMDAwDQpAQCAtNjgsMTEgKzY4LDcgQEANCiBleHRlcm4gWElEIGNsaWVu
dEVycm9yVmFsdWU7DQogZXh0ZXJuIEZvbnRQdHIgZGVmYXVsdEZvbnQ7DQog
DQotc3RhdGljIEJvb2wgQ3JlYXRlRGVmYXVsdFRpbGUoDQotI2lmIE5lZWRG
dW5jdGlvblByb3RvdHlwZXMNCi0gICAgR0NQdHIgLypwR0MqLw0KLSNlbmRp
Zg0KLSk7DQorc3RhdGljIEJvb2wgQ3JlYXRlRGVmYXVsdFRpbGUoR0NQdHIp
OyAvKnBHQyovDQogDQogdW5zaWduZWQgY2hhciBEZWZhdWx0RGFzaFsyXSA9
IHs0LCA0fTsNCiANCkBAIC01ODgsMTIgKzU4NCw3IEBADQogKi8NCiANCiBz
dGF0aWMgR0NQdHINCi0jaWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcw0KIEFs
bG9jYXRlR0MoU2NyZWVuUHRyIHBTY3JlZW4pDQotI2Vsc2UNCi1BbGxvY2F0
ZUdDKHBTY3JlZW4pDQotICAgIFNjcmVlblB0ciBwU2NyZWVuOw0KLSNlbmRp
Zg0KIHsNCiAgICAgR0NQdHIgcEdDOw0KICAgICByZWdpc3RlciBjaGFyICpw
dHI7DQpJbmRleDogZGl4L2dyYWJzLmMNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NClJDUyBmaWxlOiAvY3ZzL3hzZXJ2ZXIveHNlcnZlci9kaXgvZ3JhYnMu
Yyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDMuNg0KZGlmZiAtdSAtcjMuNiBn
cmFicy5jDQotLS0gZGl4L2dyYWJzLmMJMTEgU2VwIDIwMDMgMDU6MTI6NTAg
LTAwMDAJMy42DQorKysgZGl4L2dyYWJzLmMJMTUgRmViIDIwMDQgMDI6MzA6
MDUgLTAwMDANCkBAIC02OCwzNCArNjgsMTIgQEANCiAjZGVmaW5lIEdFVEJJ
VChidWYsIGkpIChNQVNLV09SRChidWYsIGkpICYgQklUTUFTSyhpKSkNCiAN
CiBHcmFiUHRyDQotI2lmIE5lZWRGdW5jdGlvblByb3RvdHlwZXMNCi1DcmVh
dGVHcmFiKA0KLSAgICBpbnQgY2xpZW50LA0KLSAgICBEZXZpY2VJbnRQdHIg
ZGV2aWNlLA0KLSAgICBXaW5kb3dQdHIgd2luZG93LA0KLSAgICBNYXNrIGV2
ZW50TWFzaywNCi0gICAgQm9vbCBvd25lckV2ZW50cywgQm9vbCBrZXlib2Fy
ZE1vZGUsIEJvb2wgcG9pbnRlck1vZGUsDQotICAgIERldmljZUludFB0ciBt
b2REZXZpY2UsDQotICAgIHVuc2lnbmVkIHNob3J0IG1vZGlmaWVycywNCi0g
ICAgaW50IHR5cGUsDQotICAgIEtleUNvZGUga2V5YnV0LAkvKiBrZXkgb3Ig
YnV0dG9uICovDQotICAgIFdpbmRvd1B0ciBjb25maW5lVG8sDQotICAgIEN1
cnNvclB0ciBjdXJzb3IpDQotI2Vsc2UNCi1DcmVhdGVHcmFiKGNsaWVudCwg
ZGV2aWNlLCB3aW5kb3csIGV2ZW50TWFzaywgb3duZXJFdmVudHMsIGtleWJv
YXJkTW9kZSwNCi0JICAgcG9pbnRlck1vZGUsIG1vZERldmljZSwgbW9kaWZp
ZXJzLCB0eXBlLCBrZXlidXQsIGNvbmZpbmVUbywgY3Vyc29yKQ0KLSAgICBp
bnQgY2xpZW50Ow0KLSAgICBEZXZpY2VJbnRQdHIgZGV2aWNlOw0KLSAgICBX
aW5kb3dQdHIgd2luZG93Ow0KLSAgICBNYXNrIGV2ZW50TWFzazsNCi0gICAg
Qm9vbCBvd25lckV2ZW50cywga2V5Ym9hcmRNb2RlLCBwb2ludGVyTW9kZTsN
Ci0gICAgRGV2aWNlSW50UHRyIG1vZERldmljZTsNCi0gICAgdW5zaWduZWQg
c2hvcnQgbW9kaWZpZXJzOw0KLSAgICBpbnQgdHlwZTsNCi0gICAgS2V5Q29k
ZSBrZXlidXQ7CS8qIGtleSBvciBidXR0b24gKi8NCi0gICAgV2luZG93UHRy
IGNvbmZpbmVUbzsNCi0gICAgQ3Vyc29yUHRyIGN1cnNvcjsNCi0jZW5kaWYN
CitDcmVhdGVHcmFiKGludCBjbGllbnQsIERldmljZUludFB0ciBkZXZpY2Us
V2luZG93UHRyIHdpbmRvdywNCisJICAgTWFzayBldmVudE1hc2ssIEJvb2wg
b3duZXJFdmVudHMsIEJvb2wga2V5Ym9hcmRNb2RlLCANCisJICAgQm9vbCBw
b2ludGVyTW9kZSwgRGV2aWNlSW50UHRyIG1vZERldmljZSwNCisJICAgdW5z
aWduZWQgc2hvcnQgbW9kaWZpZXJzLCBpbnQgdHlwZSwgDQorCSAgIEtleUNv
ZGUga2V5YnV0LAkvKiBrZXkgb3IgYnV0dG9uICovDQorCSAgIFdpbmRvd1B0
ciBjb25maW5lVG8sIEN1cnNvclB0ciBjdXJzb3IpDQogew0KICAgICBHcmFi
UHRyIGdyYWI7DQogDQpAQCAtMTI4LDEyICsxMDYsNyBAQA0KIH0NCiANCiBz
dGF0aWMgdm9pZA0KLSNpZiBOZWVkRnVuY3Rpb25Qcm90b3R5cGVzDQogRnJl
ZUdyYWIoR3JhYlB0ciBwR3JhYikNCi0jZWxzZQ0KLUZyZWVHcmFiKHBHcmFi
KQ0KLSAgICBHcmFiUHRyIHBHcmFiOw0KLSNlbmRpZg0KIHsNCiAgICAgaWYg
KHBHcmFiLT5tb2RpZmllcnNEZXRhaWwucE1hc2sgIT0gTlVMTCkNCiAJeGZy
ZWUocEdyYWItPm1vZGlmaWVyc0RldGFpbC5wTWFzayk7DQpAQCAtMTc2LDEz
ICsxNDksNyBAQA0KIH0NCiANCiBzdGF0aWMgTWFzayAqDQotI2lmIE5lZWRG
dW5jdGlvblByb3RvdHlwZXMNCiBEZWxldGVEZXRhaWxGcm9tTWFzayhNYXNr
ICpwRGV0YWlsTWFzaywgdW5zaWduZWQgc2hvcnQgZGV0YWlsKQ0KLSNlbHNl
DQotRGVsZXRlRGV0YWlsRnJvbU1hc2socERldGFpbE1hc2ssIGRldGFpbCkN
Ci0gICAgTWFzayAqcERldGFpbE1hc2s7DQotICAgIHVuc2lnbmVkIHNob3J0
IGRldGFpbDsNCi0jZW5kaWYNCiB7DQogICAgIHJlZ2lzdGVyIE1hc2sgKm1h
c2s7DQogICAgIHJlZ2lzdGVyIGludCBpOw0KQEAgLTIwMiwxNiArMTY5LDEw
IEBADQogfQ0KIA0KIHN0YXRpYyBCb29sDQotI2lmIE5lZWRGdW5jdGlvblBy
b3RvdHlwZXMNCiBJc0luR3JhYk1hc2soDQogICAgIERldGFpbFJlYyBmaXJz
dERldGFpbCwNCiAgICAgRGV0YWlsUmVjIHNlY29uZERldGFpbCwNCiAgICAg
dW5zaWduZWQgc2hvcnQgZXhjZXB0aW9uKQ0KLSNlbHNlDQotSXNJbkdyYWJN
YXNrKGZpcnN0RGV0YWlsLCBzZWNvbmREZXRhaWwsIGV4Y2VwdGlvbikNCi0g
ICAgRGV0YWlsUmVjIGZpcnN0RGV0YWlsLCBzZWNvbmREZXRhaWw7DQotICAg
IHVuc2lnbmVkIHNob3J0IGV4Y2VwdGlvbjsNCi0jZW5kaWYNCiB7DQogICAg
IGlmIChmaXJzdERldGFpbC5leGFjdCA9PSBleGNlcHRpb24pDQogICAgIHsN
CkBAIC0yMzAsMTUgKzE5MSw4IEBADQogfQ0KIA0KIHN0YXRpYyBCb29sIA0K
LSNpZiBOZWVkRnVuY3Rpb25Qcm90b3R5cGVzDQotSWRlbnRpY2FsRXhhY3RE
ZXRhaWxzKA0KLSAgICB1bnNpZ25lZCBzaG9ydCBmaXJzdEV4YWN0LA0KLSAg
ICB1bnNpZ25lZCBzaG9ydCBzZWNvbmRFeGFjdCwNCi0gICAgdW5zaWduZWQg
c2hvcnQgZXhjZXB0aW9uKQ0KLSNlbHNlDQotSWRlbnRpY2FsRXhhY3REZXRh
aWxzKGZpcnN0RXhhY3QsIHNlY29uZEV4YWN0LCBleGNlcHRpb24pDQotICAg
IHVuc2lnbmVkIHNob3J0IGZpcnN0RXhhY3QsIHNlY29uZEV4YWN0LCBleGNl
cHRpb247DQotI2VuZGlmDQorSWRlbnRpY2FsRXhhY3REZXRhaWxzKHVuc2ln
bmVkIHNob3J0IGZpcnN0RXhhY3QsIHVuc2lnbmVkIHNob3J0IHNlY29uZEV4
YWN0LA0KKwkJICAgICAgdW5zaWduZWQgc2hvcnQgZXhjZXB0aW9uKQ0KIHsN
CiAgICAgaWYgKChmaXJzdEV4YWN0ID09IGV4Y2VwdGlvbikgfHwgKHNlY29u
ZEV4YWN0ID09IGV4Y2VwdGlvbikpDQogCXJldHVybiBGQUxTRTsNCkBAIC0y
NTAsMTYgKzIwNCw4IEBADQogfQ0KIA0KIHN0YXRpYyBCb29sIA0KLSNpZiBO
ZWVkRnVuY3Rpb25Qcm90b3R5cGVzDQotRGV0YWlsU3VwZXJzZWRlc1NlY29u
ZCgNCi0gICAgRGV0YWlsUmVjIGZpcnN0RGV0YWlsLA0KLSAgICBEZXRhaWxS
ZWMgc2Vjb25kRGV0YWlsLA0KLSAgICB1bnNpZ25lZCBzaG9ydCBleGNlcHRp
b24pDQotI2Vsc2UNCi1EZXRhaWxTdXBlcnNlZGVzU2Vjb25kKGZpcnN0RGV0
YWlsLCBzZWNvbmREZXRhaWwsIGV4Y2VwdGlvbikNCi0gICAgRGV0YWlsUmVj
IGZpcnN0RGV0YWlsLCBzZWNvbmREZXRhaWw7DQotICAgIHVuc2lnbmVkIHNo
b3J0IGV4Y2VwdGlvbjsNCi0jZW5kaWYNCitEZXRhaWxTdXBlcnNlZGVzU2Vj
b25kKERldGFpbFJlYyBmaXJzdERldGFpbCwgRGV0YWlsUmVjIHNlY29uZERl
dGFpbCwNCisJCSAgICAgICB1bnNpZ25lZCBzaG9ydCBleGNlcHRpb24pDQog
ew0KICAgICBpZiAoSXNJbkdyYWJNYXNrKGZpcnN0RGV0YWlsLCBzZWNvbmRE
ZXRhaWwsIGV4Y2VwdGlvbikpDQogCXJldHVybiBUUlVFOw0KQEAgLTI3Miwx
MiArMjE4LDcgQEANCiB9DQogDQogc3RhdGljIEJvb2wNCi0jaWYgTmVlZEZ1
bmN0aW9uUHJvdG90eXBlcw0KIEdyYWJTdXBlcnNlZGVzU2Vjb25kKEdyYWJQ
dHIgcEZpcnN0R3JhYiwgR3JhYlB0ciBwU2Vjb25kR3JhYikNCi0jZWxzZQ0K
LUdyYWJTdXBlcnNlZGVzU2Vjb25kKHBGaXJzdEdyYWIsIHBTZWNvbmRHcmFi
KQ0KLSAgICBHcmFiUHRyIHBGaXJzdEdyYWIsIHBTZWNvbmRHcmFiOw0KLSNl
bmRpZg0KIHsNCiAgICAgaWYgKCFEZXRhaWxTdXBlcnNlZGVzU2Vjb25kKHBG
aXJzdEdyYWItPm1vZGlmaWVyc0RldGFpbCwNCiAJCQkJcFNlY29uZEdyYWIt
Pm1vZGlmaWVyc0RldGFpbCwgDQpJbmRleDogZGl4L21haW4uYw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMveHNlcnZlci94c2Vy
dmVyL2RpeC9tYWluLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAzLjQzDQpk
aWZmIC11IC1yMy40MyBtYWluLmMNCi0tLSBkaXgvbWFpbi5jCTQgRmViIDIw
MDQgMTU6NTY6MDcgLTAwMDAJMy40Mw0KKysrIGRpeC9tYWluLmMJMTUgRmVi
IDIwMDQgMDI6MzA6MDcgLTAwMDANCkBAIC0xMDgsMTcgKzEwOCw5IEBADQog
I2luY2x1ZGUgImRwbXNwcm9jLmgiDQogI2VuZGlmDQogDQotZXh0ZXJuIGlu
dCBJbml0Q2xpZW50UHJpdmF0ZXMoDQotI2lmIE5lZWRGdW5jdGlvblByb3Rv
dHlwZXMNCi0gICAgQ2xpZW50UHRyIC8qY2xpZW50Ki8NCi0jZW5kaWYNCi0p
Ow0KK2V4dGVybiBpbnQgSW5pdENsaWVudFByaXZhdGVzKENsaWVudFB0ciBj
bGllbnQpOw0KIA0KLWV4dGVybiB2b2lkIERpc3BhdGNoKA0KLSNpZiBOZWVk
RnVuY3Rpb25Qcm90b3R5cGVzDQotICAgIHZvaWQNCi0jZW5kaWYNCi0pOw0K
K2V4dGVybiB2b2lkIERpc3BhdGNoKHZvaWQpOw0KIA0KIGNoYXIgKkNvbm5l
Y3Rpb25JbmZvOw0KIHhDb25uU2V0dXBQcmVmaXggY29ublNldHVwUHJlZml4
Ow0KQEAgLTE1MywxMyArMTQ1LDcgQEANCiAgKi8NCiAvKkFSR1NVU0VEKi8N
CiB2b2lkDQotUmVwbHlOb3RTd2FwcGQoDQotI2lmIE5lZWROZXN0ZWRQcm90
b3R5cGVzDQotCUNsaWVudFB0ciBwQ2xpZW50ICwNCi0JaW50IHNpemUgLA0K
LQl2b2lkICogcGJ1Zg0KLSNlbmRpZg0KLQkpDQorUmVwbHlOb3RTd2FwcGQo
CUNsaWVudFB0ciBwQ2xpZW50ICxpbnQgc2l6ZSAsdm9pZCAqIHBidWYpDQog
ew0KICAgICBGYXRhbEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKTsNCiB9DQpA
QCAtNjQ2LDI0ICs2MzIsMTAgQEANCiAqLw0KIA0KIGludA0KLSNpZiBOZWVk
RnVuY3Rpb25Qcm90b3R5cGVzDQogQWRkU2NyZWVuKA0KLSAgICBCb29sCSgq
IHBmbkluaXQpKA0KLSNpZiBOZWVkTmVzdGVkUHJvdG90eXBlcw0KLQlpbnQg
LyppbmRleCovLA0KLQlTY3JlZW5QdHIgLypwU2NyZWVuKi8sDQotCWludCAv
KmFyZ2MqLywNCi0JY2hhciAqKiAvKmFyZ3YqLw0KLSNlbmRpZg0KLQkJKSwN
CisgICAgQm9vbCAoKiBwZm5Jbml0KShpbnQgaW5kZXgsCVNjcmVlblB0ciBw
U2NyZWVuLGludCBhcmdjLGNoYXIgKiogYXJndiksDQogICAgIGludCBhcmdj
LA0KICAgICBjaGFyICoqYXJndikNCi0jZWxzZQ0KLUFkZFNjcmVlbihwZm5J
bml0LCBhcmdjLCBhcmd2KQ0KLSAgICBCb29sCSgqIHBmbkluaXQpKCk7DQot
ICAgIGludCBhcmdjOw0KLSAgICBjaGFyICoqYXJndjsNCi0jZW5kaWYNCiB7
DQogDQogICAgIGludCBpOw0KSW5kZXg6IGRpeC9yZXNvdXJjZS5jDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy94c2VydmVyL3hz
ZXJ2ZXIvZGl4L3Jlc291cmNlLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAz
LjE1DQpkaWZmIC11IC1yMy4xNSByZXNvdXJjZS5jDQotLS0gZGl4L3Jlc291
cmNlLmMJMzAgU2VwIDIwMDMgMDY6MDI6NDEgLTAwMDAJMy4xNQ0KKysrIGRp
eC9yZXNvdXJjZS5jCTE1IEZlYiAyMDA0IDAyOjMwOjA5IC0wMDAwDQpAQCAt
OTcsMTEgKzk3LDcgQEANCiAjZW5kaWYNCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+
DQogDQotc3RhdGljIHZvaWQgUmVidWlsZFRhYmxlKA0KLSNpZiBOZWVkRnVu
Y3Rpb25Qcm90b3R5cGVzDQotICAgIGludCAvKmNsaWVudCovDQotI2VuZGlm
DQotKTsNCitzdGF0aWMgdm9pZCBSZWJ1aWxkVGFibGUoaW50IGNsaWVudCk7
DQogDQogI2RlZmluZSBTRVJWRVJfTUlOSUQgMzINCiANCkBAIC0yNTYsMTMg
KzI1Miw3IEBADQogDQogDQogc3RhdGljIGludA0KLSNpZiBOZWVkRnVuY3Rp
b25Qcm90b3R5cGVzDQogSGFzaChpbnQgY2xpZW50LCByZWdpc3RlciBYSUQg
aWQpDQotI2Vsc2UNCi1IYXNoKGNsaWVudCwgaWQpDQotICAgIGludCBjbGll
bnQ7DQotICAgIHJlZ2lzdGVyIFhJRCBpZDsNCi0jZW5kaWYNCiB7DQogICAg
IGlkICY9IFJFU09VUkNFX0lEX01BU0s7DQogICAgIHN3aXRjaCAoY2xpZW50
VGFibGVbY2xpZW50XS5oYXNoc2l6ZSkNCkBAIC0yODQsMTcgKzI3NCwxMSBA
QA0KIH0NCiANCiBzdGF0aWMgWElEDQotI2lmIE5lZWRGdW5jdGlvblByb3Rv
dHlwZXMNCiBBdmFpbGFibGVJRCgNCiAgICAgcmVnaXN0ZXIgaW50IGNsaWVu
dCwNCiAgICAgcmVnaXN0ZXIgWElEIGlkLA0KICAgICByZWdpc3RlciBYSUQg
bWF4aWQsDQogICAgIHJlZ2lzdGVyIFhJRCBnb29kaWQpDQotI2Vsc2UNCi1B
dmFpbGFibGVJRChjbGllbnQsIGlkLCBtYXhpZCwgZ29vZGlkKQ0KLSAgICBy
ZWdpc3RlciBpbnQgY2xpZW50Ow0KLSAgICByZWdpc3RlciBYSUQgaWQsIG1h
eGlkLCBnb29kaWQ7DQotI2VuZGlmDQogew0KICAgICByZWdpc3RlciBSZXNv
dXJjZVB0ciByZXM7DQogDQpAQCAtNjI4LDEyICs2MTIsOSBAQA0KICAqLw0K
IA0KIHZvaWQNCi1GaW5kQ2xpZW50UmVzb3VyY2VzQnlUeXBlKA0KLSAgICBD
bGllbnRQdHIgY2xpZW50LA0KLSAgICBSRVNUWVBFIHR5cGUsDQotICAgIEZp
bmRSZXNUeXBlIGZ1bmMsDQotICAgIHBvaW50ZXIgY2RhdGENCi0pew0KK0Zp
bmRDbGllbnRSZXNvdXJjZXNCeVR5cGUoQ2xpZW50UHRyIGNsaWVudCxSRVNU
WVBFIHR5cGUsDQorCQkJICBGaW5kUmVzVHlwZSBmdW5jLHBvaW50ZXIgY2Rh
dGEpDQorew0KICAgICByZWdpc3RlciBSZXNvdXJjZVB0ciAqcmVzb3VyY2Vz
Ow0KICAgICByZWdpc3RlciBSZXNvdXJjZVB0ciB0aGlzLCBuZXh0Ow0KICAg
ICBpbnQgaSwgZWxlbWVudHM7DQpJbmRleDogZGl4L3N3YXByZXAuYw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMveHNlcnZlci94
c2VydmVyL2RpeC9zd2FwcmVwLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAz
LjkNCmRpZmYgLXUgLXIzLjkgc3dhcHJlcC5jDQotLS0gZGl4L3N3YXByZXAu
YwkxMSBTZXAgMjAwMyAwNToxMjo1MCAtMDAwMAkzLjkNCisrKyBkaXgvc3dh
cHJlcC5jCTE1IEZlYiAyMDA0IDAyOjMwOjEzIC0wMDAwDQpAQCAtNjIsMjUg
KzYyLDExIEBADQogI2luY2x1ZGUgInN3YXByZXAuaCINCiAjaW5jbHVkZSAi
Z2xvYmFscy5oIg0KIA0KLXN0YXRpYyB2b2lkIFN3YXBGb250SW5mbygNCi0j
aWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcw0KLSAgICB4UXVlcnlGb250UmVw
bHkgKiAvKiBwciAqLw0KLSNlbmRpZg0KLSk7DQorc3RhdGljIHZvaWQgU3dh
cEZvbnRJbmZvKHhRdWVyeUZvbnRSZXBseSAqcHIpOw0KIA0KICNpZm5kZWYg
TEJYDQotc3RhdGljIHZvaWQgU3dhcENoYXJJbmZvKA0KLSNpZiBOZWVkRnVu
Y3Rpb25Qcm90b3R5cGVzDQotICAgIHhDaGFySW5mbyAqIC8qIHBJbmZvICov
DQotI2VuZGlmDQotICAgICk7DQotDQotc3RhdGljIHZvaWQgU3dhcEZvbnQo
DQotI2lmIE5lZWRGdW5jdGlvblByb3RvdHlwZXMNCi0gICAgeFF1ZXJ5Rm9u
dFJlcGx5ICogLyogcHIgKi8sDQotICAgIEJvb2wgLyogaGFzR2x5cGhzICov
DQotI2VuZGlmDQotICAgICk7DQorc3RhdGljIHZvaWQgU3dhcENoYXJJbmZv
KHhDaGFySW5mbyAqcEluZm8pOw0KK3N0YXRpYyB2b2lkIFN3YXBGb250KFF1
ZXJ5Rm9udFJlcGx5ICpwciwgQm9vbCBoYXNHbHlwaHMpOw0KICNlbmRpZg0K
IA0KIC8qIFRoYW5rcyB0byBKYWNrIFBhbGV2aWNoIGZvciB0ZXN0aW5nIGFu
ZCBzdWJzZXF1ZW50bHkgcmV3cml0aW5nIGFsbCB0aGlzICovDQpJbmRleDog
ZGl4L3RhYmxlcy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmls
ZTogL2N2cy94c2VydmVyL3hzZXJ2ZXIvZGl4L3RhYmxlcy5jLHYNCnJldHJp
ZXZpbmcgcmV2aXNpb24gMy43DQpkaWZmIC11IC1yMy43IHRhYmxlcy5jDQot
LS0gZGl4L3RhYmxlcy5jCTExIFNlcCAyMDAzIDA1OjEyOjUwIC0wMDAwCTMu
Nw0KKysrIGRpeC90YWJsZXMuYwkxNSBGZWIgMjAwNCAwMjozMDoxNSAtMDAw
MA0KQEAgLTY3LDIyICs2NywxNCBAQA0KICAgICBrNV9zdGFnZTEoKSwgazVf
c3RhZ2UyKCksIGs1X3N0YWdlMygpLCBrNV9iYWQoKTsNCiAjZW5kaWYNCiAN
Ci1pbnQgKCogSW5pdGlhbFZlY3RvclszXSkgKA0KLSNpZiBOZWVkTmVzdGVk
UHJvdG90eXBlcw0KLQlDbGllbnRQdHIgLyogY2xpZW50ICovDQotI2VuZGlm
DQotICAgICkgPQ0KK2ludCAoKiBJbml0aWFsVmVjdG9yWzNdKSAoQ2xpZW50
UHRyIGNsaWVudCkgPQ0KIHsNCiAgICAgMCwNCiAgICAgUHJvY0luaXRpYWxD
b25uZWN0aW9uLA0KICAgICBQcm9jRXN0YWJsaXNoQ29ubmVjdGlvbg0KIH07
DQogDQotaW50ICgqIFByb2NWZWN0b3JbMjU2XSkgKA0KLSNpZiBOZWVkTmVz
dGVkUHJvdG90eXBlcw0KLQlDbGllbnRQdHIgLyogY2xpZW50ICovDQotI2Vu
ZGlmDQotICAgICkgPQ0KK2ludCAoKiBQcm9jVmVjdG9yWzI1Nl0pIChDbGll
bnRQdHIgY2xpZW50KSA9DQogew0KICAgICBQcm9jQmFkUmVxdWVzdCwNCiAg
ICAgUHJvY0NyZWF0ZVdpbmRvdywNCkBAIC0yMTQsMTEgKzIwNiw3IEBADQog
ICAgIFByb2NOb09wZXJhdGlvbiAgICANCiB9Ow0KIA0KLWludCAoKiBTd2Fw
cGVkUHJvY1ZlY3RvclsyNTZdKSAoDQotI2lmIE5lZWROZXN0ZWRQcm90b3R5
cGVzDQotCUNsaWVudFB0ciAvKiBjbGllbnQgKi8NCi0jZW5kaWYNCi0gICAg
KSA9DQoraW50ICgqIFN3YXBwZWRQcm9jVmVjdG9yWzI1Nl0pIChDbGllbnRQ
dHIgY2xpZW50KSA9DQogew0KICAgICBQcm9jQmFkUmVxdWVzdCwNCiAgICAg
U1Byb2NDcmVhdGVXaW5kb3csDQpJbmRleDogaHcva2RyaXZlL3NyYy9rbm9v
cC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy94
c2VydmVyL3hzZXJ2ZXIvaHcva2RyaXZlL3NyYy9rbm9vcC5jLHYNCnJldHJp
ZXZpbmcgcmV2aXNpb24gMS41DQpkaWZmIC11IC1yMS41IGtub29wLmMNCi0t
LSBody9rZHJpdmUvc3JjL2tub29wLmMJMiBOb3YgMjAwMyAxOTo1NjoxMCAt
MDAwMAkxLjUNCisrKyBody9rZHJpdmUvc3JjL2tub29wLmMJMTUgRmViIDIw
MDQgMDI6MzA6MTUgLTAwMDANCkBAIC0zMywyMjcgKzMzLDY0IEBADQogI2lu
Y2x1ZGUgImtkcml2ZS5oIg0KICNpbmNsdWRlIDxnY3N0cnVjdC5oPg0KIA0K
LXR5cGVkZWYgdm9pZAkoKiB0eXBlRmlsbFNwYW5zKSgNCi0jaWYgTmVlZE5l
c3RlZFByb3RvdHlwZXMNCi0JCURyYXdhYmxlUHRyIC8qcERyYXdhYmxlKi8s
DQotCQlHQ1B0ciAvKnBHQyovLA0KLQkJaW50IC8qbkluaXQqLywNCi0JCURE
WFBvaW50UHRyIC8qcHB0SW5pdCovLA0KLQkJaW50ICogLypwd2lkdGhJbml0
Ki8sDQotCQlpbnQgLypmU29ydGVkKi8NCi0jZW5kaWYNCi0pOw0KK3R5cGVk
ZWYgdm9pZCAoKiB0eXBlRmlsbFNwYW5zKShEcmF3YWJsZVB0ciBwRHJhd2Fi
bGUsIEdDUHRyIHBHQywgaW50IG5Jbml0LA0KKwkJCSAgICAgICBERFhQb2lu
dFB0ciBwcHRJbml0LCBpbnQgKnB3aWR0aEluaXQsaW50IGZTb3J0ZWQpOw0K
IA0KLXR5cGVkZWYgdm9pZAkoKiB0eXBlU2V0U3BhbnMpKA0KLSNpZiBOZWVk
TmVzdGVkUHJvdG90eXBlcw0KLQkJRHJhd2FibGVQdHIgLypwRHJhd2FibGUq
LywNCi0JCUdDUHRyIC8qcEdDKi8sDQotCQljaGFyICogLypwc3JjKi8sDQot
CQlERFhQb2ludFB0ciAvKnBwdCovLA0KLQkJaW50ICogLypwd2lkdGgqLywN
Ci0JCWludCAvKm5zcGFucyovLA0KLQkJaW50IC8qZlNvcnRlZCovDQotI2Vu
ZGlmDQotKTsNCit0eXBlZGVmIHZvaWQgKCogdHlwZVNldFNwYW5zKShEcmF3
YWJsZVB0ciBwRHJhd2FibGUsIEdDUHRyIHBHQywgY2hhciAqcHNyYywNCisJ
CQkgICAgICBERFhQb2ludFB0ciBwcHQsIGludCAqcHdpZHRoLCBpbnQgbnNw
YW5zLCBpbnQgZlNvcnRlZCk7DQogDQotdHlwZWRlZiB2b2lkCSgqIHR5cGVQ
dXRJbWFnZSkoDQotI2lmIE5lZWROZXN0ZWRQcm90b3R5cGVzDQotCQlEcmF3
YWJsZVB0ciAvKnBEcmF3YWJsZSovLA0KLQkJR0NQdHIgLypwR0MqLywNCi0J
CWludCAvKmRlcHRoKi8sDQotCQlpbnQgLyp4Ki8sDQotCQlpbnQgLyp5Ki8s
DQotCQlpbnQgLyp3Ki8sDQotCQlpbnQgLypoKi8sDQotCQlpbnQgLypsZWZ0
UGFkKi8sDQotCQlpbnQgLypmb3JtYXQqLywNCi0JCWNoYXIgKiAvKnBCaXRz
Ki8NCi0jZW5kaWYNCi0pOw0KK3R5cGVkZWYgdm9pZCAoKiB0eXBlUHV0SW1h
Z2UpKERyYXdhYmxlUHRyIHBEcmF3YWJsZSwgR0NQdHIgcEdDLCBpbnQgZGVw
dGgsIGludCB4LCANCisJCQkgICAgICBpbnQgeSwgaW50IHcsIGludCBoLCBp
bnQgbGVmdFBhZCwgaW50IGZvcm1hdCwgY2hhciAqcEJpdHMpOw0KIA0KLXR5
cGVkZWYgUmVnaW9uUHRyCSgqIHR5cGVDb3B5QXJlYSkoDQotI2lmIE5lZWRO
ZXN0ZWRQcm90b3R5cGVzDQotCQlEcmF3YWJsZVB0ciAvKnBTcmMqLywNCi0J
CURyYXdhYmxlUHRyIC8qcERzdCovLA0KLQkJR0NQdHIgLypwR0MqLywNCi0J
CWludCAvKnNyY3gqLywNCi0JCWludCAvKnNyY3kqLywNCi0JCWludCAvKncq
LywNCi0JCWludCAvKmgqLywNCi0JCWludCAvKmRzdHgqLywNCi0JCWludCAv
KmRzdHkqLw0KLSNlbmRpZg0KLSk7DQordHlwZWRlZiBSZWdpb25QdHIgKCog
dHlwZUNvcHlBcmVhKShEcmF3YWJsZVB0ciBwU3JjLCBEcmF3YWJsZVB0ciBw
RHN0LCBHQ1B0ciBwRywgDQorCQkJCSAgIGludCBzcmN4LCBpbnQgc3JjeSwg
aW50IHcsIGludCBoLCBpbnQgZHN0eCwgaW50IGRzdHkpOw0KIA0KLXR5cGVk
ZWYgUmVnaW9uUHRyCSgqIHR5cGVDb3B5UGxhbmUpKA0KLSNpZiBOZWVkTmVz
dGVkUHJvdG90eXBlcw0KLQkJRHJhd2FibGVQdHIgLypwU3JjRHJhd2FibGUq
LywNCi0JCURyYXdhYmxlUHRyIC8qcERzdERyYXdhYmxlKi8sDQotCQlHQ1B0
ciAvKnBHQyovLA0KLQkJaW50IC8qc3JjeCovLA0KLQkJaW50IC8qc3JjeSov
LA0KLQkJaW50IC8qd2lkdGgqLywNCi0JCWludCAvKmhlaWdodCovLA0KLQkJ
aW50IC8qZHN0eCovLA0KLQkJaW50IC8qZHN0eSovLA0KLQkJdW5zaWduZWQg
bG9uZyAvKmJpdFBsYW5lKi8NCi0jZW5kaWYNCi0pOw0KLXR5cGVkZWYgdm9p
ZAkoKiB0eXBlUG9seVBvaW50KSgNCi0jaWYgTmVlZE5lc3RlZFByb3RvdHlw
ZXMNCi0JCURyYXdhYmxlUHRyIC8qcERyYXdhYmxlKi8sDQotCQlHQ1B0ciAv
KnBHQyovLA0KLQkJaW50IC8qbW9kZSovLA0KLQkJaW50IC8qbnB0Ki8sDQot
CQlERFhQb2ludFB0ciAvKnBwdEluaXQqLw0KLSNlbmRpZg0KLSk7DQordHlw
ZWRlZiBSZWdpb25QdHIgKCogdHlwZUNvcHlQbGFuZSkoRHJhd2FibGVQdHIg
cFNyY0RyYXdhYmxlLCBEcmF3YWJsZVB0ciBwRHN0RHJhd2FibGUsDQorCQkJ
CSAgICBHQ1B0ciBwR0MsIGludCBzcmN4LCBpbnQgc3JjeSwgaW50IHdpZHRo
LA0KKwkJCQkgICAgaW50IGhlaWdoLywgaW50IGRzdHgsIGludCBkc3R5LCB1
bnNpZ25lZCBsb25nIGJpdFBsYW5lKTsNCiANCi10eXBlZGVmIHZvaWQJKCog
dHlwZVBvbHlsaW5lcykoDQotI2lmIE5lZWROZXN0ZWRQcm90b3R5cGVzDQot
CQlEcmF3YWJsZVB0ciAvKnBEcmF3YWJsZSovLA0KLQkJR0NQdHIgLypwR0Mq
LywNCi0JCWludCAvKm1vZGUqLywNCi0JCWludCAvKm5wdCovLA0KLQkJRERY
UG9pbnRQdHIgLypwcHRJbml0Ki8NCi0jZW5kaWYNCi0pOw0KK3R5cGVkZWYg
dm9pZCAoKiB0eXBlUG9seVBvaW50KShEcmF3YWJsZVB0ciBwRHJhd2FibGUs
IEdDUHRyIHBHQywgDQorCQkJICAgICAgIGludCBtb2RlLCBpbnQgbnB0LCBE
RFhQb2ludFB0ciBwcHRJbml0KTsNCiANCi10eXBlZGVmIHZvaWQJKCogdHlw
ZVBvbHlTZWdtZW50KSgNCi0jaWYgTmVlZE5lc3RlZFByb3RvdHlwZXMNCi0J
CURyYXdhYmxlUHRyIC8qcERyYXdhYmxlKi8sDQotCQlHQ1B0ciAvKnBHQyov
LA0KLQkJaW50IC8qbnNlZyovLA0KLQkJeFNlZ21lbnQgKiAvKnBTZWdzKi8N
Ci0jZW5kaWYNCi0pOw0KK3R5cGVkZWYgdm9pZCAoKiB0eXBlUG9seWxpbmVz
KShEcmF3YWJsZVB0ciBwRHJhd2FibGUsIEdDUHRyIHBHQywgaW50IG1vZGUs
DQorCQkJICAgICAgIGludCBucHQsRERYUG9pbnRQdHIgcHB0SW5pdCk7DQog
DQotdHlwZWRlZiB2b2lkCSgqIHR5cGVQb2x5UmVjdGFuZ2xlKSgNCi0jaWYg
TmVlZE5lc3RlZFByb3RvdHlwZXMNCi0JCURyYXdhYmxlUHRyIC8qcERyYXdh
YmxlKi8sDQotCQlHQ1B0ciAvKnBHQyovLA0KLQkJaW50IC8qbnJlY3RzKi8s
DQotCQl4UmVjdGFuZ2xlICogLypwUmVjdHMqLw0KLSNlbmRpZg0KLSk7DQor
dHlwZWRlZiB2b2lkICgqIHR5cGVQb2x5U2VnbWVudCkoRHJhd2FibGVQdHIg
cERyYXdhYmxlLCBHQ1B0ciBwR0MsIGludCBuc2VnLCB4U2VnbWVudCAqcFNl
Z3MpOw0KIA0KLXR5cGVkZWYgdm9pZAkoKiB0eXBlUG9seUFyYykoDQotI2lm
IE5lZWROZXN0ZWRQcm90b3R5cGVzDQotCQlEcmF3YWJsZVB0ciAvKnBEcmF3
YWJsZSovLA0KLQkJR0NQdHIgLypwR0MqLywNCi0JCWludCAvKm5hcmNzKi8s
DQotCQl4QXJjICogLypwYXJjcyovDQotI2VuZGlmDQotKTsNCit0eXBlZGVm
IHZvaWQgKCogdHlwZVBvbHlSZWN0YW5nbGUpKERyYXdhYmxlUHRyIHBEcmF3
YWJsZSwgR0NQdHIgcEdDLCBpbnQgbnJlY3RzLCB4UmVjdGFuZ2xlICpwUmVj
dHMpOw0KIA0KLXR5cGVkZWYgdm9pZAkoKiB0eXBlRmlsbFBvbHlnb24pKA0K
LSNpZiBOZWVkTmVzdGVkUHJvdG90eXBlcw0KLQkJRHJhd2FibGVQdHIgLypw
RHJhd2FibGUqLywNCi0JCUdDUHRyIC8qcEdDKi8sDQotCQlpbnQgLypzaGFw
ZSovLA0KLQkJaW50IC8qbW9kZSovLA0KLQkJaW50IC8qY291bnQqLywNCi0J
CUREWFBvaW50UHRyIC8qcFB0cyovDQotI2VuZGlmDQotKTsNCit0eXBlZGVm
IHZvaWQgKCogdHlwZVBvbHlBcmMpKERyYXdhYmxlUHRyIHBEcmF3YWJsZSwg
R0NQdHIgcEdDLCBpbnQgbmFyY3MsIHhBcmMgKnBhcmNzKTsNCiANCi10eXBl
ZGVmIHZvaWQJKCogdHlwZVBvbHlGaWxsUmVjdCkoDQotI2lmIE5lZWROZXN0
ZWRQcm90b3R5cGVzDQotCQlEcmF3YWJsZVB0ciAvKnBEcmF3YWJsZSovLA0K
LQkJR0NQdHIgLypwR0MqLywNCi0JCWludCAvKm5yZWN0RmlsbCovLA0KLQkJ
eFJlY3RhbmdsZSAqIC8qcHJlY3RJbml0Ki8NCi0jZW5kaWYNCi0pOw0KK3R5
cGVkZWYgdm9pZCAoKiB0eXBlRmlsbFBvbHlnb24pKERyYXdhYmxlUHRyIHBE
cmF3YWJsZSwgR0NQdHIgcEdDLCBpbnQgc2hhcGUsDQorCQkJCSBpbnQgbW9k
ZSwgaW50IGNvdW50LCBERFhQb2ludFB0ciBwUHRzKTsNCiANCi10eXBlZGVm
IHZvaWQJKCogdHlwZVBvbHlGaWxsQXJjKSgNCi0jaWYgTmVlZE5lc3RlZFBy
b3RvdHlwZXMNCi0JCURyYXdhYmxlUHRyIC8qcERyYXdhYmxlKi8sDQotCQlH
Q1B0ciAvKnBHQyovLA0KLQkJaW50IC8qbmFyY3MqLywNCi0JCXhBcmMgKiAv
KnBhcmNzKi8NCi0jZW5kaWYNCi0pOw0KK3R5cGVkZWYgdm9pZCAoKiB0eXBl
UG9seUZpbGxSZWN0KShEcmF3YWJsZVB0ciBwRHJhd2FibGUsIEdDUHRyIHBH
QywgaW50IG5yZWN0RmlsbCwNCisJCQkJICB4UmVjdGFuZ2xlICogcHJlY3RJ
bml0KTsNCiANCi10eXBlZGVmIGludAkJKCogdHlwZVBvbHlUZXh0OCkoDQot
I2lmIE5lZWROZXN0ZWRQcm90b3R5cGVzDQotCQlEcmF3YWJsZVB0ciAvKnBE
cmF3YWJsZSovLA0KLQkJR0NQdHIgLypwR0MqLywNCi0JCWludCAvKngqLywN
Ci0JCWludCAvKnkqLywNCi0JCWludCAvKmNvdW50Ki8sDQotCQljaGFyICog
LypjaGFycyovDQotI2VuZGlmDQotKTsNCit0eXBlZGVmIHZvaWQgKCogdHlw
ZVBvbHlGaWxsQXJjKShEcmF3YWJsZVB0ciBwRHJhd2FibGUsIEdDUHRyIHBH
QywgaW50IG5hcmNzLCB4QXJjICpwYXJjcyk7DQogDQotdHlwZWRlZiBpbnQJ
CSgqIHR5cGVQb2x5VGV4dDE2KSgNCi0jaWYgTmVlZE5lc3RlZFByb3RvdHlw
ZXMNCi0JCURyYXdhYmxlUHRyIC8qcERyYXdhYmxlKi8sDQotCQlHQ1B0ciAv
KnBHQyovLA0KLQkJaW50IC8qeCovLA0KLQkJaW50IC8qeSovLA0KLQkJaW50
IC8qY291bnQqLywNCi0JCXVuc2lnbmVkIHNob3J0ICogLypjaGFycyovDQot
I2VuZGlmDQotKTsNCit0eXBlZGVmIGludCAoKiB0eXBlUG9seVRleHQ4KShE
cmF3YWJsZVB0ciBwRHJhd2FibGUsIEdDUHRyIHBHQywgaW50IHgsDQorCQkJ
ICAgICAgaW50IHksIGludCBjb3VudCwgY2hhciAqY2hhcnMpOw0KIA0KLXR5
cGVkZWYgdm9pZAkoKiB0eXBlSW1hZ2VUZXh0OCkoDQotI2lmIE5lZWROZXN0
ZWRQcm90b3R5cGVzDQotCQlEcmF3YWJsZVB0ciAvKnBEcmF3YWJsZSovLA0K
LQkJR0NQdHIgLypwR0MqLywNCi0JCWludCAvKngqLywNCi0JCWludCAvKnkq
LywNCi0JCWludCAvKmNvdW50Ki8sDQotCQljaGFyICogLypjaGFycyovDQot
I2VuZGlmDQotKTsNCit0eXBlZGVmIGludCAoKiB0eXBlUG9seVRleHQxNiko
RHJhd2FibGVQdHIgcERyYXdhYmxlLCBHQ1B0ciBwR0MsIGludCB4LA0KKwkJ
CSAgICAgICBpbnQgeSwgaW50IGNvdW50LCB1bnNpZ25lZCBzaG9ydCAqIGNo
YXJzKTsNCiANCi10eXBlZGVmIHZvaWQJKCogdHlwZUltYWdlVGV4dDE2KSgN
Ci0jaWYgTmVlZE5lc3RlZFByb3RvdHlwZXMNCi0JCURyYXdhYmxlUHRyIC8q
cERyYXdhYmxlKi8sDQotCQlHQ1B0ciAvKnBHQyovLA0KLQkJaW50IC8qeCov
LA0KLQkJaW50IC8qeSovLA0KLQkJaW50IC8qY291bnQqLywNCi0JCXVuc2ln
bmVkIHNob3J0ICogLypjaGFycyovDQotI2VuZGlmDQotKTsNCit0eXBlZGVm
IHZvaWQgKCogdHlwZUltYWdlVGV4dDgpKERyYXdhYmxlUHRyIHBEcmF3YWJs
ZSwgR0NQdHIgcEdDLCBpbnQgeCwNCisJCQkJaW50IHksIGludCBjb3VudCwg
Y2hhciAqY2hhcnMpOw0KIA0KLXR5cGVkZWYgdm9pZAkoKiB0eXBlSW1hZ2VH
bHlwaEJsdCkoDQotI2lmIE5lZWROZXN0ZWRQcm90b3R5cGVzDQotCQlEcmF3
YWJsZVB0ciAvKnBEcmF3YWJsZSovLA0KLQkJR0NQdHIgLypwR0MqLywNCi0J
CWludCAvKngqLywNCi0JCWludCAvKnkqLywNCi0JCXVuc2lnbmVkIGludCAv
Km5nbHlwaCovLA0KLQkJQ2hhckluZm9QdHIgKiAvKnBwY2kqLywNCi0JCXBv
aW50ZXIgLypwZ2x5cGhCYXNlKi8NCi0jZW5kaWYNCi0pOw0KK3R5cGVkZWYg
dm9pZCAoKiB0eXBlSW1hZ2VUZXh0MTYpKERyYXdhYmxlUHRyIHBEcmF3YWJs
ZSwgR0NQdHIgcEdDLCBpbnQgeCwNCisJCQkJIGludCB5LCBpbnQgY291bnQs
IHVuc2lnbmVkIHNob3J0ICogY2hhcnMpOw0KIA0KLXR5cGVkZWYgdm9pZAko
KiB0eXBlUG9seUdseXBoQmx0KSgNCi0jaWYgTmVlZE5lc3RlZFByb3RvdHlw
ZXMNCi0JCURyYXdhYmxlUHRyIC8qcERyYXdhYmxlKi8sDQotCQlHQ1B0ciAv
KnBHQyovLA0KLQkJaW50IC8qeCovLA0KLQkJaW50IC8qeSovLA0KLQkJdW5z
aWduZWQgaW50IC8qbmdseXBoKi8sDQotCQlDaGFySW5mb1B0ciAqIC8qcHBj
aSovLA0KLQkJcG9pbnRlciAvKnBnbHlwaEJhc2UqLw0KLSNlbmRpZg0KLSk7
DQordHlwZWRlZiB2b2lkICgqIHR5cGVJbWFnZUdseXBoQmx0KShEcmF3YWJs
ZVB0ciBwRHJhd2FibGUsIEdDUHRyIHBHQywgaW50IHgsDQorCQkJCSAgIGlu
dCB5LCB1bnNpZ25lZCBpbnQgbmdseXBoLCBDaGFySW5mb1B0ciAqcHBjaSwN
CisJCQkJICAgcG9pbnRlciBwZ2x5cGhCYXNlKTsNCiANCi10eXBlZGVmIHZv
aWQJKCogdHlwZVB1c2hQaXhlbHMpKA0KLSNpZiBOZWVkTmVzdGVkUHJvdG90
eXBlcw0KLQkJR0NQdHIgLypwR0MqLywNCi0JCVBpeG1hcFB0ciAvKnBCaXRN
YXAqLywNCi0JCURyYXdhYmxlUHRyIC8qcERzdCovLA0KLQkJaW50IC8qdyov
LA0KLQkJaW50IC8qaCovLA0KLQkJaW50IC8qeCovLA0KLQkJaW50IC8qeSov
DQotI2VuZGlmDQotKTsNCit0eXBlZGVmIHZvaWQgKCogdHlwZVBvbHlHbHlw
aEJsdCkoRHJhd2FibGVQdHIgcERyYXdhYmxlLCBHQ1B0ciBwR0MsIGludCB4
LA0KKwkJCQkgIGludCB5LCB1bnNpZ25lZCBpbnQgbmdseXBoLCBDaGFySW5m
b1B0ciAqcHBjaSwNCisJCQkJICBwb2ludGVyIHBnbHlwaEJhc2UpOw0KKw0K
K3R5cGVkZWYgdm9pZCAoKiB0eXBlUHVzaFBpeGVscykoR0NQdHIgcEdDLCBQ
aXhtYXBQdHIgcEJpdE1hcCwgRHJhd2FibGVQdHIgcERzdCwNCisJCQkJaW50
IHcsIGludCBoLCBpbnQgeCwgaW50IHkpOw0KIA0KIHN0YXRpYyBSZWdpb25Q
dHINCiBLZE5vb3BDb3B5QXJlYShEcmF3YWJsZVB0ciBwU3JjRHJhd2FibGUs
IERyYXdhYmxlUHRyIHBEc3REcmF3YWJsZSwgR0NQdHIgcEdDLA0KSW5kZXg6
IEdML2dseC9nbHhleHQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNT
IGZpbGU6IC9jdnMveHNlcnZlci94c2VydmVyL0dML2dseC9nbHhleHQuaCx2
DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNA0KZGlmZiAtdSAtcjEuNCBnbHhl
eHQuaA0KLS0tIEdML2dseC9nbHhleHQuaAkzIEp1bCAyMDAzIDE4OjA1OjEz
IC0wMDAwCTEuNA0KKysrIEdML2dseC9nbHhleHQuaAkxNSBGZWIgMjAwNCAw
MjozMDoxNiAtMDAwMA0KQEAgLTgxLDcgKzgxLDYgQEANCiBleHRlcm4gQm9v
bCBfX2dsWENvcmVUeXBlKHZvaWQpOw0KIA0KIGV4dGVybiBpbnQgR2x4SW5p
dFZpc3VhbHMoDQotI2lmIE5lZWRGdW5jdGlvblByb3RvdHlwZXMNCiAgICAg
VmlzdWFsUHRyICogICAgICAgdmlzdWFscCwNCiAgICAgRGVwdGhQdHIgKiAg
ICAgICAgZGVwdGhwLA0KICAgICBpbnQgKiAgICAgICAgICAgICBudmlzdWFs
cCwNCkBAIC05MSw3ICs5MCw2IEBADQogICAgIHVuc2lnbmVkIGxvbmcgICAg
IHNpemVzLA0KICAgICBpbnQgICAgICAgICAgICAgICBiaXRzUGVyUkdCLA0K
ICAgICBpbnQgICAgICAgICAgICAgICBwcmVmZXJyZWRWaXMNCi0jZW5kaWYN
CiApOw0KIA0KICNlbmRpZiAvKiBfZ2x4ZXh0X2hfICovDQpJbmRleDogaHcv
eG5lc3QvS2V5Ym9hcmQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNT
IGZpbGU6IC9jdnMveHNlcnZlci94c2VydmVyL2h3L3huZXN0L0tleWJvYXJk
LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEyDQpkaWZmIC11IC1yMS4x
MiBLZXlib2FyZC5jDQotLS0gaHcveG5lc3QvS2V5Ym9hcmQuYwk0IEZlYiAy
MDA0IDE1OjUxOjIwIC0wMDAwCTEuMTINCisrKyBody94bmVzdC9LZXlib2Fy
ZC5jCTE1IEZlYiAyMDA0IDAyOjMwOjE2IC0wMDAwDQpAQCAtMzksMzAgKzM5
LDI0IEBADQogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hLQmNvbmZpZy5o
Pg0KIA0KIGV4dGVybglCb29sCVhrYlF1ZXJ5RXh0ZW5zaW9uKA0KLSNpZiBO
ZWVkRnVuY3Rpb25Qcm90b3R5cGVzDQogCURpc3BsYXkgKgkJLyogZHB5ICov
LA0KIAlpbnQgKgkJCS8qIG9wY29kZVJldHVybiAqLywNCiAJaW50ICoJCQkv
KiBldmVudEJhc2VSZXR1cm4gKi8sDQogCWludCAqCQkJLyogZXJyb3JCYXNl
UmV0dXJuICovLA0KIAlpbnQgKgkJCS8qIG1ham9yUnRybiAqLywNCiAJaW50
ICoJCQkvKiBtaW5vclJ0cm4gKi8NCi0jZW5kaWYNCiApOw0KIA0KIGV4dGVy
bglYa2JEZXNjUHRyIFhrYkdldEtleWJvYXJkKA0KLSNpZiBOZWVkRnVuY3Rp
b25Qcm90b3R5cGVzDQogCURpc3BsYXkgKgkJLyogZHB5ICovLA0KIAl1bnNp
Z25lZCBpbnQJCS8qIHdoaWNoICovLA0KIAl1bnNpZ25lZCBpbnQJCS8qIGRl
dmljZVNwZWMgKi8NCi0jZW5kaWYNCiApOw0KIA0KIGV4dGVybglTdGF0dXMJ
WGtiR2V0Q29udHJvbHMoDQotI2lmIE5lZWRGdW5jdGlvblByb3RvdHlwZXMN
CiAJRGlzcGxheSAqCQkvKiBkcHkgKi8sDQogCXVuc2lnbmVkIGxvbmcJCS8q
IHdoaWNoICovLA0KIAlYa2JEZXNjUHRyCQkvKiBkZXNjICovDQotI2VuZGlm
DQogKTsNCiANCiAjaWZuZGVmIFhLQl9CQVNFX0RJUkVDVE9SWQ0K

--1099172128-599954911-1076850315=:16324--