Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Aug 2003 22:05:23 +0000
From:      "hGPG GPG" <gpg__gpg@hotmail.com>
To:        questions@FreeBSD.org
Subject:   troubleshooting with SafeWay network drivers
Message-ID:  <BAY1-F40W1MsB5ReKQt000473c2@hotmail.com>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.

------=_NextPart_000_6671_3eb_241d
Content-Type: text/plain; charset=iso-8859-1; format=flowed

j'ai installer FreeBSD 5.1 sur une machine PII 300 MHz qui dispose d'une 
carte réseau de marque SafeWay (chip us_bc001). inclus avec ce mail, le 
drivers (.c et .h) et l'expliquations fournie par le SafeWay (qui ne 
correspond a rien). pouvez-vous m'aider a resoudre ce problême, a faire 
fonctionner cette carte réseau?

merci

_________________________________________________________________
Hotmail: votre e-mail gratuit ! http://www.fr.msn.be/hotmail

------=_NextPart_000_6671_3eb_241d
Content-Type: application/octet-stream; name="IF_FET.C"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="IF_FET.C"

LyoKICogZmFzdCBldGhlcm5ldCBQQ0kgTklDIGRyaXZlcgogKi8KCiNpbmNs
dWRlICJicGZpbHRlci5oIgoKI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgojaW5j
bHVkZSA8c3lzL3N5c3RtLmg+CiNpbmNsdWRlIDxzeXMvc29ja2lvLmg+CiNp
bmNsdWRlIDxzeXMvbWJ1Zi5oPgojaW5jbHVkZSA8c3lzL21hbGxvYy5oPgoj
aW5jbHVkZSA8c3lzL2tlcm5lbC5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgoKI2luY2x1ZGUgPG5ldC9pZi5oPgojaW5jbHVkZSA8bmV0L2lmX2FycC5o
PgojaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CiNpbmNsdWRlIDxuZXQvaWZf
ZGwuaD4KI2luY2x1ZGUgPG5ldC9pZl9tZWRpYS5oPgoKI2lmIE5CUEZJTFRF
UiA+IDAKI2luY2x1ZGUgPG5ldC9icGYuaD4KI2VuZGlmCgojaW5jbHVkZSA8
dm0vdm0uaD4gICAgICAgICAgICAgIC8qIGZvciB2dG9waHlzICovCiNpbmNs
dWRlIDx2bS9wbWFwLmg+ICAgICAgICAgICAgLyogZm9yIHZ0b3BoeXMgKi8K
I2luY2x1ZGUgPG1hY2hpbmUvY2xvY2suaD4gICAgICAvKiBmb3IgREVMQVkg
Ki8KI2luY2x1ZGUgPG1hY2hpbmUvYnVzX21lbWlvLmg+CiNpbmNsdWRlIDxt
YWNoaW5lL2J1c19waW8uaD4KI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+Cgoj
aW5jbHVkZSA8cGNpL3BjaXJlZy5oPgojaW5jbHVkZSA8cGNpL3BjaXZhci5o
PgoKI2RlZmluZSBGRVRfVVNFSU9TUEFDRQoKI2luY2x1ZGUgPHBjaS9pZmZl
dHJlZy5oPgoKI2lmbmRlZiBsaW50CnN0YXRpYyBjb25zdCBjaGFyIHJjc2lk
W10gPQogICAgICAgICIkSWQ6IGlmX2ZldC5jLHYgMS4xMCAyMDAwLzA3LzI2
IDA5OjI4OjUyIHdwYXVsIEV4cCAkIjsKI2VuZGlmCgovKgogKiBWYXJpb3Vz
IHN1cHBvcnRlZCBkZXZpY2UgdmVuZG9ycy90eXBlcyBhbmQgdGhlaXIgbmFt
ZXMuCiAqLwpzdHJ1Y3QgZmV0X3R5cGUgKmZldF9pbmZvX3RtcDsKc3RhdGlj
IHN0cnVjdCBmZXRfdHlwZSBmZXRfZGV2c1tdID0gewogICAgICAgIHsgRkVU
VkVORE9SSUQsIElEMCwgIjEwMC8xME0gRXRoZXJuZXQgUENJIEFkYXB0ZXIi
IH0sCiAgICAgICAgeyBGRVRWRU5ET1JJRCwgSUQxLCAiMTAwLzEwTSBFdGhl
cm5ldCBQQ0kgQWRhcHRlciIgfSwKICAgICAgICB7IEZFVFZFTkRPUklELCBJ
RDIsICIxMDAwLzEwMC8xME0gRXRoZXJuZXQgUENJIEFkYXB0ZXIiIH0sCiAg
ICAgICAgeyAwLCAwLCBOVUxMIH0KfTsKCi8qCiAqIFZhcmlvdXMgc3VwcG9y
dGVkIFBIWSB2ZW5kb3JzL3R5cGVzIGFuZCB0aGVpciBuYW1lcy4gTm90ZSB0
aGF0CiAqIHRoaXMgZHJpdmVyIHdpbGwgd29yayB3aXRoIHByZXR0eSBtdWNo
IGFueSBNSUktY29tcGxpYW50IFBIWSwKICogc28gZmFpbHVyZSB0byBwb3Np
dGl2ZWx5IGlkZW50aWZ5IHRoZSBjaGlwIGlzIG5vdCBhIGZhdGFsIGVycm9y
LgogKi8Kc3RhdGljIHN0cnVjdCBmZXRfdHlwZSBmZXRfcGh5c1tdID0gewog
ICAgICAgIHsgUEhZSUQwLCBQSFlJRDAsICI8TVREOTgxPiJ9LAogICAgICAg
IHsgU2VlcVBIWUlEMCwgU2VlcVBIWUlEMCwgIjxTRUVRIDgwMjI1PiIgfSwK
ICAgICAgICB7IEFoZG9jUEhZSUQwLCBBaGRvY1BIWUlEMCwgIjxBSERPQyAx
MDE+IiB9LAogICAgICAgIHsgTWFydmVsbFBIWUlEMCwgTWFydmVsbFBIWUlE
MCwgIjxNQVJWRUxMIDg4RTEwMDA+In0sCiAgICAgICAgeyAwLCAwLCAiPE1J
SS1jb21wbGlhbnQgcGh5c2ljYWwgaW50ZXJmYWNlPiIgfQp9OwoKc3RhdGlj
IHVuc2lnbmVkIGxvbmcgZmV0X2NvdW50ID0gMDsKCnN0YXRpYyBjb25zdCBj
aGFyICpmZXRfcHJvYmUgX19QKChwY2ljaV90LCBwY2lkaV90KSk7CnN0YXRp
YyB2b2lkIGZldF9hdHRhY2ggX19QKChwY2ljaV90LCBpbnQpKTsKc3RhdGlj
IGludCBmZXRfbmV3YnVmIF9fUCgoc3RydWN0IGZldF9zb2Z0YyAqLCBzdHJ1
Y3QgZmV0X2NoYWluX29uZWZyYWcgKikpOwpzdGF0aWMgaW50IGZldF9lbmNh
cCBfX1AoKHN0cnVjdCBmZXRfc29mdGMgKiwgc3RydWN0IGZldF9jaGFpbiAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnVmICop
KTsKc3RhdGljIHZvaWQgZmV0X3J4ZW9mIF9fUCgoc3RydWN0IGZldF9zb2Z0
YyAqKSk7CnN0YXRpYyB2b2lkIGZldF90eGVvZiBfX1AoKHN0cnVjdCBmZXRf
c29mdGMgKikpOwpzdGF0aWMgdm9pZCBmZXRfdHhlb2MgX19QKChzdHJ1Y3Qg
ZmV0X3NvZnRjICopKTsKc3RhdGljIHZvaWQgZmV0X2ludHIgX19QKCh2b2lk
ICopKTsKc3RhdGljIHZvaWQgZmV0X3N0YXJ0IF9fUCgoc3RydWN0IGlmbmV0
ICopKTsKc3RhdGljIGludCBmZXRfaW9jdGwgX19QKChzdHJ1Y3QgaWZuZXQg
KiwgdV9sb25nLCBjYWRkcl90KSk7CnN0YXRpYyB2b2lkIGZldF9pbml0IF9f
UCgodm9pZCAqKSk7CnN0YXRpYyB2b2lkIGZldF9zdG9wIF9fUCgoc3RydWN0
IGZldF9zb2Z0YyAqKSk7CnN0YXRpYyB2b2lkIGZldF93YXRjaGRvZyBfX1Ao
KHN0cnVjdCBpZm5ldCAqKSk7CnN0YXRpYyB2b2lkIGZldF9zaHV0ZG93biBf
X1AoKGludCwgdm9pZCAqKSk7CnN0YXRpYyBpbnQgZmV0X2lmbWVkaWFfdXBk
IF9fUCgoc3RydWN0IGlmbmV0ICopKTsKc3RhdGljIHZvaWQgZmV0X2lmbWVk
aWFfc3RzIF9fUCgoc3RydWN0IGlmbmV0ICosIHN0cnVjdCBpZm1lZGlhcmVx
ICopKTsKc3RhdGljIHVfaW50MTZfdCBmZXRfcGh5X3JlYWRyZWcgX19QKChz
dHJ1Y3QgZmV0X3NvZnRjICosIGludCkpOwpzdGF0aWMgdm9pZCBmZXRfcGh5
X3dyaXRlcmVnIF9fUCgoc3RydWN0IGZldF9zb2Z0YyAqLCBpbnQsIGludCkp
OwpzdGF0aWMgdm9pZCBmZXRfYXV0b25lZ194bWl0IF9fUCgoc3RydWN0IGZl
dF9zb2Z0YyAqKSk7CnN0YXRpYyB2b2lkIGZldF9hdXRvbmVnX21paSBfX1Ao
KHN0cnVjdCBmZXRfc29mdGMgKiwgaW50LCBpbnQpKTsKc3RhdGljIHZvaWQg
ZmV0X3NldG1vZGVfbWlpIF9fUCgoc3RydWN0IGZldF9zb2Z0YyAqLCBpbnQp
KTsKc3RhdGljIHZvaWQgZmV0X2dldG1vZGVfbWlpIF9fUCgoc3RydWN0IGZl
dF9zb2Z0YyAqKSk7CnN0YXRpYyB2b2lkIGZldF9zZXRjZmcgX19QKChzdHJ1
Y3QgZmV0X3NvZnRjICosIGludCkpOwpzdGF0aWMgdV9pbnQ4X3QgZmV0X2Nh
bGNoYXNoIF9fUCgoY2FkZHJfdCkpOwpzdGF0aWMgdm9pZCBmZXRfc2V0bXVs
dGkgX19QKChzdHJ1Y3QgZmV0X3NvZnRjICopKTsKc3RhdGljIHZvaWQgZmV0
X3Jlc2V0IF9fUCgoc3RydWN0IGZldF9zb2Z0YyAqKSk7CnN0YXRpYyBpbnQg
ZmV0X2xpc3RfcnhfaW5pdCBfX1AoKHN0cnVjdCBmZXRfc29mdGMgKikpOwpz
dGF0aWMgaW50IGZldF9saXN0X3R4X2luaXQgX19QKChzdHJ1Y3QgZmV0X3Nv
ZnRjICopKTsKc3RhdGljIGxvbmcgZmV0X3NlbmRfY21kX3RvX3BoeSBfX1Ao
KHN0cnVjdCBmZXRfc29mdGMgKiwgaW50LCBpbnQpKTsKCiNkZWZpbmUgRkVU
X1NFVEJJVChzYywgcmVnLCB4KSBDU1JfV1JJVEVfNChzYywgcmVnLCBDU1Jf
UkVBRF80KHNjLCByZWcpIHwgeCkKI2RlZmluZSBGRVRfQ0xSQklUKHNjLCBy
ZWcsIHgpIENTUl9XUklURV80KHNjLCByZWcsIENTUl9SRUFEXzQoc2MsIHJl
ZykgJiB+eCkKCgpzdGF0aWMgbG9uZyBmZXRfc2VuZF9jbWRfdG9fcGh5KHNj
LCBvcGNvZGUsIHJlZ2FkKQpzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKaW50IG9w
Y29kZTsKaW50IHJlZ2FkOwp7CiAgIGxvbmcgbWlpcjsKICAgaW50ICBpOwog
ICBpbnQgbWFzaywgZGF0YTsKCiAgIC8qIGVuYWJsZSBNSUkgb3V0cHV0ICov
CiAgIG1paXI9Q1NSX1JFQURfNChzYywgRkVUX01BTkFHRU1FTlQpOwogICBt
aWlyJj0weGZmZmZmZmYwOwoKICAgbWlpcnw9RkVUX01BU0tfTUlJUl9NSUlf
V1JJVEUrRkVUX01BU0tfTUlJUl9NSUlfTURPOwoKICAgLyogc2VuZCAzMiAx
J3MgcHJlYW1ibGUgKi8KICAgZm9yIChpPTA7aTwzMjtpKyspCiAgIHsKICAg
ICAgLyogbG93IE1EQzsgTURPIGlzIGFscmVhZHkgaGlnaCAobWlpcikgKi8K
ICAgICAgbWlpciY9fkZFVF9NQVNLX01JSVJfTUlJX01EQzsKICAgICAgQ1NS
X1dSSVRFXzQoc2MsIEZFVF9NQU5BR0VNRU5ULCBtaWlyKTsKCiAgICAgIC8q
IGhpZ2ggTURDICovCiAgICAgIG1paXJ8PUZFVF9NQVNLX01JSVJfTUlJX01E
QzsKICAgICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9NQU5BR0VNRU5ULCBtaWly
KTsKICAgfQoKICAgLyogY2FsY3VsYXRlIFNUK09QK1BIWUFEK1JFR0FEK1RB
ICovCiAgIGRhdGE9b3Bjb2RlfChzYy0+ZmV0X3BoeV9hZGRyPDw3KXwocmVn
YWQ8PDIpOwoKICAgLyogc2VudCBvdXQgKi8KICAgbWFzaz0weDgwMDA7CiAg
IHdoaWxlIChtYXNrKQogICB7CiAgICAgIC8qIGxvdyBNREMsIHByZXBhcmUg
TURPICovCiAgICAgIG1paXImPX4oRkVUX01BU0tfTUlJUl9NSUlfTURDK0ZF
VF9NQVNLX01JSVJfTUlJX01ETyk7CiAgICAgIGlmIChtYXNrICYgZGF0YSkK
ICAgICAgICBtaWlyfD1GRVRfTUFTS19NSUlSX01JSV9NRE87CgogICAgICBD
U1JfV1JJVEVfNChzYywgRkVUX01BTkFHRU1FTlQsIG1paXIpOwogICAgICAv
KiBoaWdoIE1EQyAqLwogICAgICBtaWlyfD1GRVRfTUFTS19NSUlSX01JSV9N
REM7CiAgICAgIENTUl9XUklURV80KHNjLCBGRVRfTUFOQUdFTUVOVCwgbWlp
cik7CiAgICAgIERFTEFZKDMwKTsKCiAgICAgIC8qIG5leHQgKi8KICAgICAg
bWFzaz4+PTE7CiAgICAgIGlmIChtYXNrPT0weDIgJiYgb3Bjb2RlPT1GRVRf
T1BfUkVBRCkKICAgICAgICBtaWlyJj1+RkVUX01BU0tfTUlJUl9NSUlfV1JJ
VEU7CiAgIH0KICAgcmV0dXJuIG1paXI7Cn0KCgpzdGF0aWMgdV9pbnQxNl90
IGZldF9waHlfcmVhZHJlZyhzYywgcmVnKQpzdHJ1Y3QgZmV0X3NvZnRjICpz
YzsKaW50IHJlZzsKewogICBsb25nIG1paXI7CiAgIGludCBtYXNrLCBkYXRh
OwoKICAgaWYgKHNjLT5mZXRfaW5mby0+ZmV0X2RpZCA9PSBJRDEpCiAgICAg
ZGF0YSA9IENTUl9SRUFEXzIoc2MsIEZFVF9QSFlCQVNFK3JlZyoyKTsKICAg
ZWxzZQogICB7CiAgICAgIG1paXI9ZmV0X3NlbmRfY21kX3RvX3BoeShzYywg
RkVUX09QX1JFQUQsIHJlZyk7CgogICAgICAvKiByZWFkIGRhdGEgKi8KICAg
ICAgbWFzaz0weDgwMDA7CiAgICAgIGRhdGE9MDsKICAgICAgd2hpbGUgKG1h
c2spCiAgICAgIHsKICAgICAgICAgLyogbG93IE1EQyAqLwogICAgICAgICBt
aWlyJj1+RkVUX01BU0tfTUlJUl9NSUlfTURDOwogICAgICAgICBDU1JfV1JJ
VEVfNChzYywgRkVUX01BTkFHRU1FTlQsIG1paXIpOwoKICAgICAgICAgLyog
cmVhZCBNREkgKi8KICAgICAgICAgbWlpcj1DU1JfUkVBRF80KHNjLCBGRVRf
TUFOQUdFTUVOVCk7CiAgICAgICAgIGlmIChtaWlyICYgRkVUX01BU0tfTUlJ
Ul9NSUlfTURJKQogICAgICAgICAgIGRhdGF8PW1hc2s7CgogICAgICAgICAv
KiBoaWdoIE1EQywgYW5kIHdhaXQgKi8KICAgICAgICAgbWlpcnw9RkVUX01B
U0tfTUlJUl9NSUlfTURDOwogICAgICAgICBDU1JfV1JJVEVfNChzYywgRkVU
X01BTkFHRU1FTlQsIG1paXIpOwogICAgICAgICBERUxBWSgzMCk7CgogICAg
ICAgICAvKiBuZXh0ICovCiAgICAgICAgIG1hc2s+Pj0xOwogICAgICB9Cgog
ICAgICAvKiBsb3cgTURDICovCiAgICAgIG1paXImPX5GRVRfTUFTS19NSUlS
X01JSV9NREM7CiAgICAgIENTUl9XUklURV80KHNjLCBGRVRfTUFOQUdFTUVO
VCwgbWlpcik7CiAgIH0KCiAgIHJldHVybiAodV9pbnQxNl90KWRhdGE7Cn0K
CgpzdGF0aWMgdm9pZCBmZXRfcGh5X3dyaXRlcmVnKHNjLCByZWcsIGRhdGEp
CnN0cnVjdCBmZXRfc29mdGMgKnNjOwppbnQgcmVnOwppbnQgZGF0YTsKewog
ICBsb25nIG1paXI7CiAgIGludCBtYXNrOwoKICAgaWYgKHNjLT5mZXRfaW5m
by0+ZmV0X2RpZCA9PSBJRDEpCiAgICAgQ1NSX1dSSVRFXzIoc2MsIEZFVF9Q
SFlCQVNFK3JlZyoyLCBkYXRhKTsKICAgZWxzZQogICB7CiAgICAgIG1paXI9
ZmV0X3NlbmRfY21kX3RvX3BoeShzYywgRkVUX09QX1dSSVRFLCByZWcpOwoK
ICAgICAgLyogd3JpdGUgZGF0YSAqLwogICAgICBtYXNrPTB4ODAwMDsKICAg
ICAgd2hpbGUgKG1hc2spCiAgICAgIHsKICAgICAgICAgLyogbG93IE1EQywg
cHJlcGFyZSBNRE8gKi8KICAgICAgICAgbWlpciY9fihGRVRfTUFTS19NSUlS
X01JSV9NREMrRkVUX01BU0tfTUlJUl9NSUlfTURPKTsKICAgICAgICAgaWYg
KG1hc2smZGF0YSkKICAgICAgICAgICBtaWlyfD1GRVRfTUFTS19NSUlSX01J
SV9NRE87CiAgICAgICAgIENTUl9XUklURV80KHNjLCBGRVRfTUFOQUdFTUVO
VCwgbWlpcik7CgogICAgICAgICAvKiBoaWdoIE1EQyAqLwogICAgICAgICBt
aWlyfD1GRVRfTUFTS19NSUlSX01JSV9NREM7CiAgICAgICAgIENTUl9XUklU
RV80KHNjLCBGRVRfTUFOQUdFTUVOVCwgbWlpcik7CgogICAgICAgICAvKiBu
ZXh0ICovCiAgICAgICAgIG1hc2s+Pj0xOwogICAgICB9CgogICAgICAvKiBs
b3cgTURDICovCiAgICAgIG1paXImPX5GRVRfTUFTS19NSUlSX01JSV9NREM7
CiAgICAgIENTUl9XUklURV80KHNjLCBGRVRfTUFOQUdFTUVOVCwgbWlpcik7
CiAgIH0KCiAgIHJldHVybjsKfQoKCnN0YXRpYyB1X2ludDhfdCBmZXRfY2Fs
Y2hhc2goYWRkcikKY2FkZHJfdCBhZGRyOwp7CiAgIHVfaW50MzJfdCBjcmMs
IGNhcnJ5OwogICBpbnQgaSwgajsKICAgdV9pbnQ4X3QgYzsKCiAgIC8qIENv
bXB1dGUgQ1JDIGZvciB0aGUgYWRkcmVzcyB2YWx1ZS4gKi8KICAgY3JjID0g
MHhGRkZGRkZGRjsgLyogaW5pdGlhbCB2YWx1ZSAqLwoKICAgZm9yIChpID0g
MDsgaSA8IDY7IGkrKykKICAgewogICAgICBjID0gKihhZGRyICsgaSk7CiAg
ICAgIGZvciAoaiA9IDA7IGogPCA4OyBqKyspCiAgICAgIHsKICAgICAgICAg
Y2FycnkgPSAoKGNyYyAmIDB4ODAwMDAwMDApID8gMSA6IDApIF4gKGMgJiAw
eDAxKTsKICAgICAgICAgY3JjIDw8PSAxOwogICAgICAgICBjID4+PSAxOwog
ICAgICAgICBpZiAoY2FycnkpCiAgICAgICAgICAgY3JjID0gKGNyYyBeIDB4
MDRjMTFkYjYpIHwgY2Fycnk7CiAgICAgIH0KICAgfQoKICAgLyoKICAgICog
cmV0dXJuIHRoZSBmaWx0ZXIgYml0IHBvc2l0aW9uCiAgICAqIE5vdGU6IEkg
YXJyaXZlZCBhdCB0aGUgZm9sbG93aW5nIG5vbnNlbnNlCiAgICAqIHRocm91
Z2ggZXhwZXJpbWVudGF0aW9uLiBJdCdzIG5vdCB0aGUgdXN1YWwgd2F5IHRv
CiAgICAqIGdlbmVyYXRlIHRoZSBiaXQgcG9zaXRpb24gYnV0IGl0J3MgdGhl
IG9ubHkgdGhpbmcKICAgICogSSBjb3VsZCBjb21lIHVwIHdpdGggdGhhdCB3
b3Jrcy4KICAgICovCiAgIHJldHVybih+KGNyYyA+PiAyNikgJiAweDAwMDAw
MDNGKTsKfQoKCi8qCiAqIFByb2dyYW0gdGhlIDY0LWJpdCBtdWx0aWNhc3Qg
aGFzaCBmaWx0ZXIuCiAqLwpzdGF0aWMgdm9pZCBmZXRfc2V0bXVsdGkoc2Mp
CnN0cnVjdCBmZXRfc29mdGMgKnNjOwp7CiAgIHN0cnVjdCBpZm5ldCAqaWZw
OwogICBpbnQgaCA9IDA7CiAgIHVfaW50MzJfdCBoYXNoZXNbMl0gPSB7IDAs
IDAgfTsKICAgc3RydWN0IGlmbXVsdGlhZGRyICppZm1hOwogICB1X2ludDMy
X3QgcnhmaWx0OwogICBpbnQgbWNudCA9IDA7CgogICBpZnAgPSAmc2MtPmFy
cGNvbS5hY19pZjsKCiAgIHJ4ZmlsdCA9IENTUl9SRUFEXzQoc2MsIEZFVF9U
Q1JSQ1IpOwoKICAgaWYgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfQUxMTVVMVEkg
fHwgaWZwLT5pZl9mbGFncyAmIElGRl9QUk9NSVNDKQogICB7CiAgICAgIHJ4
ZmlsdCB8PSBGRVRfQU07CiAgICAgIENTUl9XUklURV80KHNjLCBGRVRfVENS
UkNSLCByeGZpbHQpOwogICAgICBDU1JfV1JJVEVfNChzYywgRkVUX01BUjAs
IDB4RkZGRkZGRkYpOwogICAgICBDU1JfV1JJVEVfNChzYywgRkVUX01BUjEs
IDB4RkZGRkZGRkYpOwogICAgICByZXR1cm47CiAgIH0KCiAgIC8qIGZpcnN0
LCB6b3QgYWxsIHRoZSBleGlzdGluZyBoYXNoIGJpdHMgKi8KICAgQ1NSX1dS
SVRFXzQoc2MsIEZFVF9NQVIwLCAwKTsKICAgQ1NSX1dSSVRFXzQoc2MsIEZF
VF9NQVIxLCAwKTsKCiAgIC8qIG5vdyBwcm9ncmFtIG5ldyBvbmVzICovCiAg
IGZvciAoaWZtYSA9IGlmcC0+aWZfbXVsdGlhZGRycy5saF9maXJzdDsgaWZt
YSAhPSBOVUxMOwogICAgICAgIGlmbWEgPSBpZm1hLT5pZm1hX2xpbmsubGVf
bmV4dCkKICAgewogICAgICBpZiAoaWZtYS0+aWZtYV9hZGRyLT5zYV9mYW1p
bHkgIT0gQUZfTElOSykKICAgICAgICBjb250aW51ZTsKICAgICAgaCA9IGZl
dF9jYWxjaGFzaChMTEFERFIoKHN0cnVjdCBzb2NrYWRkcl9kbCAqKWlmbWEt
PmlmbWFfYWRkcikpOwogICAgICBpZiAoaCA8IDMyKQogICAgICAgIGhhc2hl
c1swXSB8PSAoMSA8PCBoKTsKICAgICAgZWxzZQogICAgICAgIGhhc2hlc1sx
XSB8PSAoMSA8PCAoaCAtIDMyKSk7CiAgICAgIG1jbnQrKzsKICAgfQoKICAg
aWYgKG1jbnQpCiAgICAgcnhmaWx0IHw9IEZFVF9BTTsKICAgZWxzZQogICAg
IHJ4ZmlsdCAmPSB+RkVUX0FNOwoKICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9N
QVIwLCBoYXNoZXNbMF0pOwogICBDU1JfV1JJVEVfNChzYywgRkVUX01BUjEs
IGhhc2hlc1sxXSk7CiAgIENTUl9XUklURV80KHNjLCBGRVRfVENSUkNSLCBy
eGZpbHQpOwoKICAgcmV0dXJuOwp9CgoKLyoKICogSW5pdGlhdGUgYW4gYXV0
b25lZ290aWF0aW9uIHNlc3Npb24uCiAqLwpzdGF0aWMgdm9pZCBmZXRfYXV0
b25lZ194bWl0KHNjKQpzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKewogICB1X2lu
dDE2X3QgcGh5X3N0czsKCiAgIGZldF9waHlfd3JpdGVyZWcoc2MsIFBIWV9C
TUNSLCBQSFlfQk1DUl9SRVNFVCk7CiAgIERFTEFZKDUwMCk7CiAgIHdoaWxl
KGZldF9waHlfcmVhZHJlZyhzYywgUEhZX0JNQ1IpICYgUEhZX0JNQ1JfUkVT
RVQpOwoKICAgcGh5X3N0cyA9IGZldF9waHlfcmVhZHJlZyhzYywgUEhZX0JN
Q1IpOwogICBwaHlfc3RzIHw9IFBIWV9CTUNSX0FVVE9ORUdFTkJMfFBIWV9C
TUNSX0FVVE9ORUdSU1RSOwogICBmZXRfcGh5X3dyaXRlcmVnKHNjLCBQSFlf
Qk1DUiwgcGh5X3N0cyk7CgogICByZXR1cm47Cn0KCgovKgogKiBJbnZva2Ug
YXV0b25lZ290aWF0aW9uIG9uIGEgUEhZLgogKi8Kc3RhdGljIHZvaWQgZmV0
X2F1dG9uZWdfbWlpKHNjLCBmbGFnLCB2ZXJib3NlKQpzdHJ1Y3QgZmV0X3Nv
ZnRjICpzYzsKaW50IGZsYWc7CmludCB2ZXJib3NlOwp7CiAgIHVfaW50MTZf
dCBwaHlfc3RzID0gMCwgbWVkaWEsIGFkdmVydCwgYWJpbGl0eTsKICAgdV9p
bnQxNl90IGFiaWxpdHkyID0gMDsKICAgc3RydWN0IGlmbmV0ICppZnA7CiAg
IHN0cnVjdCBpZm1lZGlhICppZm07CgogICBpZm0gPSAmc2MtPmlmbWVkaWE7
CiAgIGlmcCA9ICZzYy0+YXJwY29tLmFjX2lmOwoKICAgaWZtLT5pZm1fbWVk
aWEgPSBJRk1fRVRIRVIgfCBJRk1fQVVUTzsKCiNpZm5kZWYgRk9SQ0VfQVVU
T05FR19URk9VUgogICAvKgogICAgKiBGaXJzdCwgc2VlIGlmIGF1dG9uZWcg
aXMgc3VwcG9ydGVkLiBJZiBub3QsIHRoZXJlJ3MKICAgICogbm8gcG9pbnQg
aW4gY29udGludWluZy4KICAgICovCiAgIHBoeV9zdHMgPSBmZXRfcGh5X3Jl
YWRyZWcoc2MsIFBIWV9CTVNSKTsKICAgaWYgKCEocGh5X3N0cyAmIFBIWV9C
TVNSX0NBTkFVVE9ORUcpKQogICB7CiAgICAgIGlmICh2ZXJib3NlKQogICAg
ICAgIHByaW50ZigiZmV0JWQ6IGF1dG9uZWdvdGlhdGlvbiBub3Qgc3VwcG9y
dGVkXG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgaWZtLT5pZm1fbWVkaWEg
PSBJRk1fRVRIRVJ8SUZNXzEwX1R8SUZNX0hEWDsKICAgICAgcmV0dXJuOwog
ICB9CiNlbmRpZgoKICAgc3dpdGNoIChmbGFnKQogICB7CiAgICAgIGNhc2Ug
RkVUX0ZMQUdfRk9SQ0VERUxBWToKICAgICAgICAvKgogICAgICAgICAqIFhY
WCBOZXZlciB1c2UgdGhpcyBvcHRpb24gYW55d2hlcmUgYnV0IGluIHRoZSBw
cm9iZQogICAgICAgICAqIHJvdXRpbmU6IG1ha2luZyB0aGUga2VybmVsIHN0
b3AgZGVhZCBpbiBpdHMgdHJhY2tzCiAgICAgICAgICogZm9yIHRocmVlIHdo
b2xlIHNlY29uZHMgYWZ0ZXIgd2UndmUgZ29uZSBtdWx0aS11c2VyCiAgICAg
ICAgICogaXMgcmVhbGx5IGJhZCBtYW5uZXJzLgogICAgICAgICAqLwogICAg
ICAgIGZldF9hdXRvbmVnX3htaXQoc2MpOwogICAgICAgIERFTEFZKDUwMDAw
MDApOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIEZFVF9GTEFHX1NDSEVE
REVMQVk6CiAgICAgICAgLyoKICAgICAgICAgKiBXYWl0IGZvciB0aGUgdHJh
bnNtaXR0ZXIgdG8gZ28gaWRsZSBiZWZvcmUgc3RhcnRpbmcKICAgICAgICAg
KiBhbiBhdXRvbmVnIHNlc3Npb24sIG90aGVyd2lzZSBmZXRfc3RhcnQoKSBt
YXkgY2xvYmJlcgogICAgICAgICAqIG91ciB0aW1lb3V0LCBhbmQgd2UgZG9u
J3Qgd2FudCB0byBhbGxvdyB0cmFuc21pc3Npb24KICAgICAgICAgKiBkdXJp
bmcgYW4gYXV0b25lZyBzZXNzaW9uIHNpbmNlIHRoYXQgY2FuIHNjcmV3IGl0
IHVwLgogICAgICAgICAqLwogICAgICAgIGlmIChzYy0+ZmV0X2NkYXRhLmZl
dF90eF9oZWFkICE9IE5VTEwpCiAgICAgICAgewogICAgICAgICAgIHNjLT5m
ZXRfd2FudF9hdXRvID0gMTsKICAgICAgICAgICByZXR1cm47CiAgICAgICAg
fQogICAgICAgIGZldF9hdXRvbmVnX3htaXQoc2MpOwogICAgICAgIGlmcC0+
aWZfdGltZXIgPSA1OwogICAgICAgIHNjLT5mZXRfYXV0b25lZyA9IDE7CiAg
ICAgICAgc2MtPmZldF93YW50X2F1dG8gPSAwOwogICAgICAgIHJldHVybjsK
ICAgICAgY2FzZSBGRVRfRkxBR19ERUxBWVRJTUVPOgogICAgICAgIGlmcC0+
aWZfdGltZXIgPSAwOwogICAgICAgIHNjLT5mZXRfYXV0b25lZyA9IDA7CiAg
ICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgcHJpbnRmKCJm
ZXQlZDogaW52YWxpZCBhdXRvbmVnIGZsYWc6ICVkXG4iLCBzYy0+ZmV0X3Vu
aXQsIGZsYWcpOwogICAgICAgIHJldHVybjsKICAgfQoKICAgaWYgKGZldF9w
aHlfcmVhZHJlZyhzYywgUEhZX0JNU1IpICYgUEhZX0JNU1JfQVVUT05FR0NP
TVApCiAgIHsKICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgcHJpbnRmKCJm
ZXQlZDogYXV0b25lZyBjb21wbGV0ZSwgIiwgc2MtPmZldF91bml0KTsKCiAg
ICAgIHBoeV9zdHMgPSBmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9CTVNSKTsK
ICAgfQogICBlbHNlCiAgIHsKICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
cHJpbnRmKCJmZXQlZDogYXV0b25lZyBub3QgY29tcGxldGUsICIsIHNjLT5m
ZXRfdW5pdCk7CiAgIH0KCiAgIG1lZGlhID0gZmV0X3BoeV9yZWFkcmVnKHNj
LCBQSFlfQk1DUik7CgogICAvKiBMaW5rIGlzIGdvb2QuIFJlcG9ydCBtb2Rl
cyBhbmQgc2V0IGR1cGxleCBtb2RlLiAqLwogICBpZiAoZmV0X3BoeV9yZWFk
cmVnKHNjLCBQSFlfQk1TUikgJiBQSFlfQk1TUl9MSU5LU1RBVCkKICAgewog
ICAgICBpZiAodmVyYm9zZSkKICAgICAgICBwcmludGYoImZldCVkOiBsaW5r
IHN0YXR1cyBnb29kLiAiLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgYWR2ZXJ0
ID0gZmV0X3BoeV9yZWFkcmVnKHNjLCBQSFlfQU5BUik7CiAgICAgIGFiaWxp
dHkgPSBmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9MUEFSKTsKCiAgICAgIGlm
IChzYy0+ZmV0X3BpbmZvLT5mZXRfdmlkID09IE1hcnZlbGxQSFlJRDApCiAg
ICAgIHsKICAgICAgICAgYWJpbGl0eTIgPSBmZXRfcGh5X3JlYWRyZWcoc2Ms
IFBIWV8xMDAwU1IpOwoKICAgICAgICAgaWYgKGFiaWxpdHkyICYgUEhZXzEw
MDBTUl8xMDAwQlRYRlVMTCkKICAgICAgICAgewogICAgICAgICAgICBhZHZl
cnQgPSAwOwogICAgICAgICAgICBhYmlsaXR5ID0gMDsKLyogdGhpcyB2ZXJz
aW9uIGRpZCBub3Qgc3VwcG9ydCAxMDAwTSwKICAgICAgICAgICAgaWZtLT5p
Zm1fbWVkaWEgPSBJRk1fRVRIRVJ8SUZNXzEwMDBfVFh8SUZNX0ZEWDsKKi8K
CSAgICBpZm0tPmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fMTAwX1RYfElG
TV9GRFg7CiAgICAgICAgICAgIG1lZGlhICY9IH5QSFlfQk1DUl9TUEVFRFNF
TDsKICAgICAgICAgICAgbWVkaWEgfD0gUEhZX0JNQ1JfMTAwMDsKICAgICAg
ICAgICAgbWVkaWEgfD0gUEhZX0JNQ1JfRFVQTEVYOwogICAgICAgICAgICBw
cmludGYoIihmdWxsLWR1cGxleCwgMTAwME1icHMpXG4iKTsKICAgICAgICAg
fQogICAgICAgICBlbHNlIGlmIChhYmlsaXR5MiAmIFBIWV8xMDAwU1JfMTAw
MEJUWEhBTEYpCiAgICAgICAgIHsKICAgICAgICAgICAgYWR2ZXJ0ID0gMDsK
ICAgICAgICAgICAgYWJpbGl0eSA9IDA7Ci8qIHRoaXMgdmVyc2lvbiBkaWQg
bm90IHN1cHBvcnQgMTAwME0sCiAgICAgICAgICAgIGlmbS0+aWZtX21lZGlh
ID0gSUZNX0VUSEVSfElGTV8xMDAwX1RYOwoqLwoJICAgIGlmbS0+aWZtX21l
ZGlhID0gSUZNX0VUSEVSfElGTV8xMDBfVFg7CQogICAgICAgICAgICBtZWRp
YSAmPSB+UEhZX0JNQ1JfU1BFRURTRUw7CiAgICAgICAgICAgIG1lZGlhICY9
IH5QSFlfQk1DUl9EVVBMRVg7CiAgICAgICAgICAgIG1lZGlhIHw9IFBIWV9C
TUNSXzEwMDA7CiAgICAgICAgICAgIHByaW50ZigiKGhhbGYtZHVwbGV4LCAx
MDAwTWJwcylcbiIpOwogICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChh
ZHZlcnQgJiBQSFlfQU5BUl8xMDBCVDQgJiYgYWJpbGl0eSAmIFBIWV9BTkFS
XzEwMEJUNCkKICAgICAgewogICAgICAgICBpZm0tPmlmbV9tZWRpYSA9IElG
TV9FVEhFUnxJRk1fMTAwX1Q0OwogICAgICAgICBtZWRpYSB8PSBQSFlfQk1D
Ul9TUEVFRFNFTDsKICAgICAgICAgbWVkaWEgJj0gflBIWV9CTUNSX0RVUExF
WDsKICAgICAgICAgcHJpbnRmKCIoMTAwYmFzZVQ0KVxuIik7CiAgICAgIH0K
ICAgICAgZWxzZSBpZiAoYWR2ZXJ0ICYgUEhZX0FOQVJfMTAwQlRYRlVMTCAm
JiBhYmlsaXR5ICYgUEhZX0FOQVJfMTAwQlRYRlVMTCkKICAgICAgewogICAg
ICAgICBpZm0tPmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fMTAwX1RYfElG
TV9GRFg7CiAgICAgICAgIG1lZGlhIHw9IFBIWV9CTUNSX1NQRUVEU0VMOwog
ICAgICAgICBtZWRpYSB8PSBQSFlfQk1DUl9EVVBMRVg7CiAgICAgICAgIHBy
aW50ZigiKGZ1bGwtZHVwbGV4LCAxMDBNYnBzKVxuIik7CiAgICAgIH0KICAg
ICAgZWxzZSBpZiAoYWR2ZXJ0ICYgUEhZX0FOQVJfMTAwQlRYSEFMRiAmJiBh
YmlsaXR5ICYgUEhZX0FOQVJfMTAwQlRYSEFMRikKICAgICAgewogICAgICAg
ICBpZm0tPmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fMTAwX1RYfElGTV9I
RFg7CiAgICAgICAgIG1lZGlhIHw9IFBIWV9CTUNSX1NQRUVEU0VMOwogICAg
ICAgICBtZWRpYSAmPSB+UEhZX0JNQ1JfRFVQTEVYOwogICAgICAgICBwcmlu
dGYoIihoYWxmLWR1cGxleCwgMTAwTWJwcylcbiIpOwogICAgICB9CiAgICAg
IGVsc2UgaWYgKGFkdmVydCAmIFBIWV9BTkFSXzEwQlRGVUxMICYmIGFiaWxp
dHkgJiBQSFlfQU5BUl8xMEJURlVMTCkKICAgICAgewogICAgICAgICBpZm0t
PmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fMTBfVHxJRk1fRkRYOwogICAg
ICAgICBtZWRpYSAmPSB+UEhZX0JNQ1JfU1BFRURTRUw7CiAgICAgICAgIG1l
ZGlhIHw9IFBIWV9CTUNSX0RVUExFWDsKICAgICAgICAgcHJpbnRmKCIoZnVs
bC1kdXBsZXgsIDEwTWJwcylcbiIpOwogICAgICB9CiAgICAgIGVsc2UKICAg
ICAgewogICAgICAgICBpZm0tPmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1f
MTBfVHxJRk1fSERYOwogICAgICAgICBtZWRpYSAmPSB+UEhZX0JNQ1JfU1BF
RURTRUw7CiAgICAgICAgIG1lZGlhICY9IH5QSFlfQk1DUl9EVVBMRVg7CiAg
ICAgICAgIHByaW50ZigiKGhhbGYtZHVwbGV4LCAxME1icHMpXG4iKTsKICAg
ICAgfQoKICAgICAgbWVkaWEgJj0gflBIWV9CTUNSX0FVVE9ORUdFTkJMOwoK
ICAgICAgLyogU2V0IEFTSUMncyBkdXBsZXggbW9kZSB0byBtYXRjaCB0aGUg
UEhZLiAqLwogICAgICBmZXRfcGh5X3dyaXRlcmVnKHNjLCBQSFlfQk1DUiwg
bWVkaWEpOwogICAgICBmZXRfc2V0Y2ZnKHNjLCBtZWRpYSk7CiAgIH0KICAg
ZWxzZQogICB7CiAgICAgIGlmICh2ZXJib3NlKQogICAgICAgIHByaW50Zigi
ZmV0JWQ6IG5vIGNhcnJpZXJcbiIsIHNjLT5mZXRfdW5pdCk7CiAgIH0KCiAg
IGZldF9pbml0KHNjKTsKCiAgIGlmIChzYy0+ZmV0X3R4X3BlbmQpCiAgIHsK
ICAgICAgc2MtPmZldF9hdXRvbmVnID0gMDsKICAgICAgc2MtPmZldF90eF9w
ZW5kID0gMDsKICAgICAgZmV0X3N0YXJ0KGlmcCk7CiAgIH0KCiAgIHJldHVy
bjsKfQoKCi8qCiAqIFRvIGdldCBQSFkgYWJpbGl0eS4KICovCnN0YXRpYyB2
b2lkIGZldF9nZXRtb2RlX21paShzYykKc3RydWN0IGZldF9zb2Z0YyAqc2M7
CnsKICAgdV9pbnQxNl90IGJtc3I7CiAgIHN0cnVjdCBpZm5ldCAqaWZwOwoK
ICAgaWZwID0gJnNjLT5hcnBjb20uYWNfaWY7CgogICBibXNyID0gZmV0X3Bo
eV9yZWFkcmVnKHNjLCBQSFlfQk1TUik7CiAgIGlmIChib290dmVyYm9zZSkK
ICAgICBwcmludGYoImZldCVkOiBQSFkgc3RhdHVzIHdvcmQ6ICV4XG4iLCBz
Yy0+ZmV0X3VuaXQsIGJtc3IpOwoKICAgLyogZmFsbGJhY2sgKi8KICAgc2Mt
PmlmbWVkaWEuaWZtX21lZGlhID0gSUZNX0VUSEVSfElGTV8xMF9UfElGTV9I
RFg7CgogICBpZiAoYm1zciAmIFBIWV9CTVNSXzEwQlRIQUxGKQogICB7CiAg
ICAgIGlmIChib290dmVyYm9zZSkKICAgICAgICBwcmludGYoImZldCVkOiAx
ME1icHMgaGFsZi1kdXBsZXggbW9kZSBzdXBwb3J0ZWRcbiIsIHNjLT5mZXRf
dW5pdCk7CgogICAgICBpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEsIElGTV9F
VEhFUnxJRk1fMTBfVHxJRk1fSERYLCAwLCBOVUxMKTsKICAgICAgaWZtZWRp
YV9hZGQoJnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNXzEwX1QsIDAsIE5V
TEwpOwogICB9CgogICBpZiAoYm1zciAmIFBIWV9CTVNSXzEwQlRGVUxMKQog
ICB7CiAgICAgIGlmIChib290dmVyYm9zZSkKICAgICAgICBwcmludGYoImZl
dCVkOiAxME1icHMgZnVsbC1kdXBsZXggbW9kZSBzdXBwb3J0ZWRcbiIsIHNj
LT5mZXRfdW5pdCk7CgogICAgICBpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEs
IElGTV9FVEhFUnxJRk1fMTBfVHxJRk1fRkRYLCAwLCBOVUxMKTsKICAgICAg
c2MtPmlmbWVkaWEuaWZtX21lZGlhID0gSUZNX0VUSEVSfElGTV8xMF9UfElG
TV9GRFg7CiAgIH0KCiAgIGlmIChibXNyICYgUEhZX0JNU1JfMTAwQlRYSEFM
RikKICAgewogICAgICBpZiAoYm9vdHZlcmJvc2UpCiAgICAgICAgcHJpbnRm
KCJmZXQlZDogMTAwTWJwcyBoYWxmLWR1cGxleCBtb2RlIHN1cHBvcnRlZFxu
Iiwgc2MtPmZldF91bml0KTsKCiAgICAgIGlmcC0+aWZfYmF1ZHJhdGUgPSAx
MDAwMDAwMDA7CiAgICAgIGlmbWVkaWFfYWRkKCZzYy0+aWZtZWRpYSwgSUZN
X0VUSEVSfElGTV8xMDBfVFgsIDAsIE5VTEwpOwogICAgICBpZm1lZGlhX2Fk
ZCgmc2MtPmlmbWVkaWEsIElGTV9FVEhFUnxJRk1fMTAwX1RYfElGTV9IRFgs
IDAsIE5VTEwpOwogICAgICBzYy0+aWZtZWRpYS5pZm1fbWVkaWEgPSBJRk1f
RVRIRVJ8SUZNXzEwMF9UWHxJRk1fSERYOwogICB9CgogICBpZiAoYm1zciAm
IFBIWV9CTVNSXzEwMEJUWEZVTEwpCiAgIHsKICAgICAgaWYgKGJvb3R2ZXJi
b3NlKQogICAgICAgIHByaW50ZigiZmV0JWQ6IDEwME1icHMgZnVsbC1kdXBs
ZXggbW9kZSBzdXBwb3J0ZWRcbiIsIHNjLT5mZXRfdW5pdCk7CgogICAgICBp
ZnAtPmlmX2JhdWRyYXRlID0gMTAwMDAwMDAwOwogICAgICBpZm1lZGlhX2Fk
ZCgmc2MtPmlmbWVkaWEsIElGTV9FVEhFUnxJRk1fMTAwX1RYfElGTV9GRFgs
IDAsIE5VTEwpOwogICAgICBzYy0+aWZtZWRpYS5pZm1fbWVkaWEgPSBJRk1f
RVRIRVJ8SUZNXzEwMF9UWHxJRk1fRkRYOwogICB9CgogICAvKiBTb21lIGFs
c28gc3VwcG9ydCAxMDBCYXNlVDQuICovCiAgIGlmIChibXNyICYgUEhZX0JN
U1JfMTAwQlQ0KQogICB7CiAgICAgIGlmIChib290dmVyYm9zZSkKICAgICAg
ICBwcmludGYoImZldCVkOiAxMDBiYXNlVDQgbW9kZSBzdXBwb3J0ZWRcbiIs
IHNjLT5mZXRfdW5pdCk7CgogICAgICBpZnAtPmlmX2JhdWRyYXRlID0gMTAw
MDAwMDAwOwogICAgICBpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEsIElGTV9F
VEhFUnxJRk1fMTAwX1Q0LCAwLCBOVUxMKTsKICAgICAgc2MtPmlmbWVkaWEu
aWZtX21lZGlhID0gSUZNX0VUSEVSfElGTV8xMDBfVDQ7CiNpZmRlZiBGT1JD
RV9BVVRPTkVHX1RGT1VSCiAgICAgIGlmIChib290dmVyYm9zZSkKICAgICAg
ICBwcmludGYoImZldCVkOiBmb3JjaW5nIG9uIGF1dG9uZWcgc3VwcG9ydCBm
b3IgQlQ0XG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgaWZtZWRpYV9hZGQo
JnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNX0FVVE8sIDAgTlVMTCk6CiAg
ICAgIHNjLT5pZm1lZGlhLmlmbV9tZWRpYSA9IElGTV9FVEhFUnxJRk1fQVVU
TzsKI2VuZGlmCiAgIH0KCi8qIHRoaXMgdmVyc2lvbiBkaWQgbm90IHN1cHBv
cnQgMTAwME0sCiAgIGlmIChzYy0+ZmV0X3BpbmZvLT5mZXRfdmlkID09IE1h
cnZlbGxQSFlJRDApCiAgIHsKICAgICAgaWYgKGJvb3R2ZXJib3NlKQogICAg
ICAgIHByaW50ZigiZmV0JWQ6IDEwMDBNYnBzIGhhbGYtZHVwbGV4IG1vZGUg
c3VwcG9ydGVkXG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgaWZwLT5pZl9i
YXVkcmF0ZSA9IDEwMDAwMDAwMDA7CiAgICAgIGlmbWVkaWFfYWRkKCZzYy0+
aWZtZWRpYSwgSUZNX0VUSEVSfElGTV8xMDAwX1RYLCAwLCBOVUxMKTsKICAg
ICAgaWZtZWRpYV9hZGQoJnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNXzEw
MDBfVFh8SUZNX0hEWCwgMCwgTlVMTCk7CgogICAgICBpZiAoYm9vdHZlcmJv
c2UpCiAgICAgICAgcHJpbnRmKCJmZXQlZDogMTAwME1icHMgZnVsbC1kdXBs
ZXggbW9kZSBzdXBwb3J0ZWRcbiIsIHNjLT5mZXRfdW5pdCk7CgogICAgICBp
ZnAtPmlmX2JhdWRyYXRlID0gMTAwMDAwMDAwMDsKICAgICAgaWZtZWRpYV9h
ZGQoJnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNXzEwMDBfVFh8SUZNX0ZE
WCwgMCwgTlVMTCk7CiAgICAgIHNjLT5pZm1lZGlhLmlmbV9tZWRpYSA9IElG
TV9FVEhFUnxJRk1fMTAwMF9UWHxJRk1fRkRYOwogICB9CiovCgogICBpZiAo
Ym1zciAmIFBIWV9CTVNSX0NBTkFVVE9ORUcpCiAgIHsKICAgICAgaWYgKGJv
b3R2ZXJib3NlKQogICAgICAgIHByaW50ZigiZmV0JWQ6IGF1dG9uZWcgc3Vw
cG9ydGVkXG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgICAgaWZtZWRpYV9hZGQo
JnNjLT5pZm1lZGlhLCBJRk1fRVRIRVJ8SUZNX0FVVE8sIDAsIE5VTEwpOwog
ICAgICBzYy0+aWZtZWRpYS5pZm1fbWVkaWEgPSBJRk1fRVRIRVJ8SUZNX0FV
VE87CiAgIH0KCiAgIHJldHVybjsKfQoKCi8qCiAqIFNldCBzcGVlZCBhbmQg
ZHVwbGV4IG1vZGUuCiAqLwpzdGF0aWMgdm9pZCBmZXRfc2V0bW9kZV9taWko
c2MsIG1lZGlhKQpzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKaW50IG1lZGlhOwp7
CiAgIHVfaW50MTZfdCBibWNyOwogICBzdHJ1Y3QgaWZuZXQgKmlmcDsKCiAg
IGlmcCA9ICZzYy0+YXJwY29tLmFjX2lmOwoKICAgLyoKICAgICogSWYgYW4g
YXV0b25lZyBzZXNzaW9uIGlzIGluIHByb2dyZXNzLCBzdG9wIGl0LgogICAg
Ki8KICAgaWYgKHNjLT5mZXRfYXV0b25lZykKICAgewogICAgICBwcmludGYo
ImZldCVkOiBjYW5jZWxpbmcgYXV0b25lZyBzZXNzaW9uXG4iLCBzYy0+ZmV0
X3VuaXQpOwogICAgICBpZnAtPmlmX3RpbWVyID0gc2MtPmZldF9hdXRvbmVn
ID0gc2MtPmZldF93YW50X2F1dG8gPSAwOwogICAgICBibWNyID0gZmV0X3Bo
eV9yZWFkcmVnKHNjLCBQSFlfQk1DUik7CiAgICAgIGJtY3IgJj0gflBIWV9C
TUNSX0FVVE9ORUdFTkJMOwogICAgICBmZXRfcGh5X3dyaXRlcmVnKHNjLCBQ
SFlfQk1DUiwgYm1jcik7CiAgIH0KCiAgIHByaW50ZigiZmV0JWQ6IHNlbGVj
dGluZyBNSUksICIsIHNjLT5mZXRfdW5pdCk7CgogICBibWNyID0gZmV0X3Bo
eV9yZWFkcmVnKHNjLCBQSFlfQk1DUik7CgogICBibWNyICY9IH4oUEhZX0JN
Q1JfQVVUT05FR0VOQkx8UEhZX0JNQ1JfU1BFRURTRUx8UEhZX0JNQ1JfMTAw
MHwKICAgICAgICAgICAgIFBIWV9CTUNSX0RVUExFWHxQSFlfQk1DUl9MT09Q
QkspOwoKLyogdGhpcyB2ZXJzaW9uIGRpZCBub3Qgc3VwcG9ydCAxMDAwTSwK
ICAgaWYgKElGTV9TVUJUWVBFKG1lZGlhKSA9PSBJRk1fMTAwMF9UWCkKICAg
ewogICAgICBwcmludGYoIjEwMDBNYnBzL1Q0LCBoYWxmLWR1cGxleFxuIik7
CiAgICAgIGJtY3IgJj0gflBIWV9CTUNSX1NQRUVEU0VMOwogICAgICBibWNy
ICY9IH5QSFlfQk1DUl9EVVBMRVg7CiAgICAgIGJtY3IgfD0gUEhZX0JNQ1Jf
MTAwMDsKICAgfQoqLwoKICAgaWYgKElGTV9TVUJUWVBFKG1lZGlhKSA9PSBJ
Rk1fMTAwX1Q0KQogICB7CiAgICAgIHByaW50ZigiMTAwTWJwcy9UNCwgaGFs
Zi1kdXBsZXhcbiIpOwogICAgICBibWNyIHw9IFBIWV9CTUNSX1NQRUVEU0VM
OwogICAgICBibWNyICY9IH5QSFlfQk1DUl9EVVBMRVg7CiAgIH0KCiAgIGlm
IChJRk1fU1VCVFlQRShtZWRpYSkgPT0gSUZNXzEwMF9UWCkKICAgewogICAg
ICBwcmludGYoIjEwME1icHMsICIpOwogICAgICBibWNyIHw9IFBIWV9CTUNS
X1NQRUVEU0VMOwogICB9CgogICBpZiAoSUZNX1NVQlRZUEUobWVkaWEpID09
IElGTV8xMF9UKQogICB7CiAgICAgIHByaW50ZigiMTBNYnBzLCAiKTsKICAg
ICAgYm1jciAmPSB+UEhZX0JNQ1JfU1BFRURTRUw7CiAgIH0KCiAgIGlmICgo
bWVkaWEgJiBJRk1fR01BU0spID09IElGTV9GRFgpCiAgIHsKICAgICAgcHJp
bnRmKCJmdWxsIGR1cGxleFxuIik7CiAgICAgIGJtY3IgfD0gUEhZX0JNQ1Jf
RFVQTEVYOwogICB9CiAgIGVsc2UKICAgewogICAgICBwcmludGYoImhhbGYg
ZHVwbGV4XG4iKTsKICAgICAgYm1jciAmPSB+UEhZX0JNQ1JfRFVQTEVYOwog
ICB9CgogICBmZXRfcGh5X3dyaXRlcmVnKHNjLCBQSFlfQk1DUiwgYm1jcik7
CiAgIGZldF9zZXRjZmcoc2MsIGJtY3IpOwoKICAgcmV0dXJuOwp9CgoKLyoK
ICogVGhlIG1hbnVhbCBzdGF0ZXMgdGhhdCBpbiBvcmRlciB0byBmaWRkbGUg
d2l0aCB0aGUKICogJ2Z1bGwtZHVwbGV4JyBhbmQgJzEwME1icHMnIGJpdHMg
aW4gdGhlIG5ldGNvbmZpZyByZWdpc3Rlciwgd2UKICogZmlyc3QgaGF2ZSB0
byBwdXQgdGhlIHRyYW5zbWl0IGFuZC9vciByZWNlaXZlIGxvZ2ljIGluIHRo
ZSBpZGxlIHN0YXRlLgogKi8Kc3RhdGljIHZvaWQgZmV0X3NldGNmZyhzYywg
Ym1jcikKc3RydWN0IGZldF9zb2Z0YyAqc2M7CmludCBibWNyOwp7CiAgIGlu
dCBpLCByZXN0YXJ0ID0gMDsKCiAgIGlmIChDU1JfUkVBRF80KHNjLCBGRVRf
VENSUkNSKSAmIChGRVRfVEV8RkVUX1JFKSkKICAgewogICAgICByZXN0YXJ0
ID0gMTsKICAgICAgRkVUX0NMUkJJVChzYywgRkVUX1RDUlJDUiwgKEZFVF9U
RXxGRVRfUkUpKTsKCiAgICAgIGZvciAoaSA9IDA7IGkgPCBGRVRfVElNRU9V
VDsgaSsrKQogICAgICB7CiAgICAgICAgIERFTEFZKDEwKTsKICAgICAgICAg
aWYgKCEoQ1NSX1JFQURfNChzYywgRkVUX1RDUlJDUikmKEZFVF9UWFJVTnxG
RVRfUlhSVU4pKSkKICAgICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAg
aWYgKGkgPT0gRkVUX1RJTUVPVVQpCiAgICAgICAgcHJpbnRmKCJmZXQlZDog
ZmFpbGVkIHRvIGZvcmNlIHR4IGFuZCByeCB0byBpZGxlIHN0YXRlXG4iLAog
ICAgICAgICAgICAgICAgc2MtPmZldF91bml0KTsKICAgfQoKICAgRkVUX0NM
UkJJVChzYywgRkVUX1RDUlJDUiwgRkVUX1BTMTAwMCk7CiAgIEZFVF9DTFJC
SVQoc2MsIEZFVF9UQ1JSQ1IsIEZFVF9QUzEwKTsKICAgaWYgKGJtY3IgJiBQ
SFlfQk1DUl8xMDAwKQogICAgIEZFVF9TRVRCSVQoc2MsIEZFVF9UQ1JSQ1Is
IEZFVF9QUzEwMDApOwogICBlbHNlIGlmICghKGJtY3IgJiBQSFlfQk1DUl9T
UEVFRFNFTCkpCiAgICAgRkVUX1NFVEJJVChzYywgRkVUX1RDUlJDUiwgRkVU
X1BTMTApOwoKICAgaWYgKGJtY3IgJiBQSFlfQk1DUl9EVVBMRVgpCiAgICAg
RkVUX1NFVEJJVChzYywgRkVUX1RDUlJDUiwgRkVUX0ZEKTsKICAgZWxzZQog
ICAgIEZFVF9DTFJCSVQoc2MsIEZFVF9UQ1JSQ1IsIEZFVF9GRCk7CgogICBp
ZiAocmVzdGFydCkKICAgICBGRVRfU0VUQklUKHNjLCBGRVRfVENSUkNSLCBG
RVRfVEV8RkVUX1JFKTsKCiAgIHJldHVybjsKfQoKCnN0YXRpYyB2b2lkIGZl
dF9yZXNldChzYykKc3RydWN0IGZldF9zb2Z0YyAqc2M7CnsKICAgcmVnaXN0
ZXIgaW50IGk7CgogICBGRVRfU0VUQklUKHNjLCBGRVRfQkNSLCBGRVRfU1dS
KTsKCiAgIGZvciAoaSA9IDA7IGkgPCBGRVRfVElNRU9VVDsgaSsrKQogICB7
CiAgICAgIERFTEFZKDEwKTsKICAgICAgaWYgKCEoQ1NSX1JFQURfNChzYywg
RkVUX0JDUikgJiBGRVRfU1dSKSkKICAgICAgICBicmVhazsKICAgfQogICBp
ZiAoaSA9PSBGRVRfVElNRU9VVCkKICAgICBwcmludGYoIm0weCVkOiByZXNl
dCBuZXZlciBjb21wbGV0ZWQhXG4iLCBzYy0+ZmV0X3VuaXQpOwoKICAgLyog
V2FpdCBhIGxpdHRsZSB3aGlsZSBmb3IgdGhlIGNoaXAgdG8gZ2V0IGl0cyBi
cmFpbnMgaW4gb3JkZXIuICovCiAgIERFTEFZKDEwMDApOwoKICAgcmV0dXJu
Owp9CgoKLyoKICogUHJvYmUgZm9yIGEgc3BlY2lmaWMgY2hpcC4gQ2hlY2sg
dGhlIFBDSSB2ZW5kb3IgYW5kIGRldmljZQogKiBJRHMgYWdhaW5zdCBvdXIg
bGlzdCBhbmQgcmV0dXJuIGEgZGV2aWNlIG5hbWUgaWYgd2UgZmluZCBhIG1h
dGNoLgogKi8Kc3RhdGljIGNvbnN0IGNoYXIgKmZldF9wcm9iZShjb25maWdf
aWQsIGRldmljZV9pZCkKcGNpY2lfdCBjb25maWdfaWQ7CnBjaWRpX3QgZGV2
aWNlX2lkOwp7CiAgIHN0cnVjdCBmZXRfdHlwZSAqdDsKCiAgIHQgPSBmZXRf
ZGV2czsKCiAgIHdoaWxlKHQtPmZldF9uYW1lICE9IE5VTEwpCiAgIHsKICAg
ICAgaWYgKChkZXZpY2VfaWQgJiAweEZGRkYpID09IHQtPmZldF92aWQgJiYK
ICAgICAgICAgICgoZGV2aWNlX2lkID4+IDE2KSAmIDB4RkZGRikgPT0gdC0+
ZmV0X2RpZCkKICAgICAgewogICAgICAgICBmZXRfaW5mb190bXAgPSB0Owog
ICAgICAgICByZXR1cm4odC0+ZmV0X25hbWUpOwogICAgICB9CiAgICAgIHQr
KzsKICAgfQoKICAgcmV0dXJuKE5VTEwpOwp9CgoKLyoKICogQXR0YWNoIHRo
ZSBpbnRlcmZhY2UuIEFsbG9jYXRlIHNvZnRjIHN0cnVjdHVyZXMsIGRvIGlm
bWVkaWEKICogc2V0dXAgYW5kIGV0aGVybmV0L0JQRiBhdHRhY2guCiAqLwpz
dGF0aWMgdm9pZCBmZXRfYXR0YWNoKGNvbmZpZ19pZCwgdW5pdCkKcGNpY2lf
dCBjb25maWdfaWQ7CmludCB1bml0Owp7CiAgIGludCBzLCBpOwojaWZuZGVm
IEZFVF9VU0VJT1NQQUNFCiAgIHZtX29mZnNldF90IHBiYXNlLCB2YmFzZTsK
I2VuZGlmCiAgIHVfY2hhciBlYWRkcltFVEhFUl9BRERSX0xFTl07CiAgIHVf
aW50MzJfdCBjb21tYW5kOwogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKICAg
c3RydWN0IGlmbmV0ICppZnA7CiAgIGludCBtZWRpYSA9IElGTV9FVEhFUnxJ
Rk1fMTAwX1RYfElGTV9GRFg7CiAgIHVuc2lnbmVkIGludCByb3VuZDsKICAg
Y2FkZHJfdCByb3VuZHB0cjsKICAgc3RydWN0IGZldF90eXBlICpwOwogICB1
X2ludDE2X3QgcGh5X3ZpZCwgcGh5X2RpZCwgcGh5X3N0czsKCiAgIHMgPSBz
cGxpbXAoKTsKCiAgIHNjID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZmV0X3Nv
ZnRjKSwgTV9ERVZCVUYsIE1fTk9XQUlUKTsKICAgaWYgKHNjID09IE5VTEwp
CiAgIHsKICAgICAgcHJpbnRmKCJmZXQlZDogbm8gbWVtb3J5IGZvciBzb2Z0
YyBzdHJ1Y3QhXG4iLCB1bml0KTsKICAgICAgcmV0dXJuOwogICB9CiAgIGJ6
ZXJvKHNjLCBzaXplb2Yoc3RydWN0IGZldF9zb2Z0YykpOwoKICAgLyoKICAg
ICogTWFwIGNvbnRyb2wvc3RhdHVzIHJlZ2lzdGVycy4KICAgICovCiAgIGNv
bW1hbmQgPSBwY2lfY29uZl9yZWFkKGNvbmZpZ19pZCwgUENJX0NPTU1BTkRf
U1RBVFVTX1JFRyk7CiAgIGNvbW1hbmQgfD0gKFBDSU1fQ01EX1BPUlRFTnxQ
Q0lNX0NNRF9NRU1FTnxQQ0lNX0NNRF9CVVNNQVNURVJFTik7CiAgIHBjaV9j
b25mX3dyaXRlKGNvbmZpZ19pZCwgUENJX0NPTU1BTkRfU1RBVFVTX1JFRywg
Y29tbWFuZCk7CiAgIGNvbW1hbmQgPSBwY2lfY29uZl9yZWFkKGNvbmZpZ19p
ZCwgUENJX0NPTU1BTkRfU1RBVFVTX1JFRyk7CgojaWZkZWYgRkVUX1VTRUlP
U1BBQ0UKICAgaWYgKCEoY29tbWFuZCAmIFBDSU1fQ01EX1BPUlRFTikpCiAg
IHsKICAgICAgcHJpbnRmKCJmZXQlZDogZmFpbGVkIHRvIGVuYWJsZSBJL08g
cG9ydHMhXG4iLCB1bml0KTsKICAgICAgZnJlZShzYywgTV9ERVZCVUYpOwog
ICAgICBnb3RvIGZhaWw7CiAgIH0KCiAgIGlmICghcGNpX21hcF9wb3J0KGNv
bmZpZ19pZCwgRkVUX1BDSV9MT0lPLCAodV9pbnQxNl90ICopJihzYy0+ZmV0
X2JoYW5kbGUpKSkKICAgewogICAgICBwcmludGYgKCJmZXQlZDogY291bGRu
J3QgbWFwIHBvcnRzXG4iLCB1bml0KTsKICAgICAgZ290byBmYWlsOwogICB9
CiAgIHNjLT5mZXRfYnRhZyA9IEkzODZfQlVTX1NQQUNFX0lPOwojZWxzZQog
ICBpZiAoIShjb21tYW5kICYgUENJTV9DTURfTUVNRU4pKQogICB7CiAgICAg
IHByaW50ZigiZmV0JWQ6IGZhaWxlZCB0byBlbmFibGUgbWVtb3J5IG1hcHBp
bmchXG4iLCB1bml0KTsKICAgICAgZ290byBmYWlsOwogICB9CgogICBpZiAo
IXBjaV9tYXBfbWVtKGNvbmZpZ19pZCwgRkVUX1BDSV9MT01FTSwgJnZiYXNl
LCAmcGJhc2UpKQogICB7CiAgICAgIHByaW50ZiAoImZldCVkOiBjb3VsZG4n
dCBtYXAgbWVtb3J5XG4iLCB1bml0KTsKICAgICAgZ290byBmYWlsOwogICB9
CiAgIHNjLT5jc3IgPSAodm9sYXRpbGUgY2FkZHJfdCl2YmFzZTsKICAgc2Mt
PmZldF9idGFnID0gSTM4Nl9CVVNfU1BBQ0VfTUVNOwogICBzYy0+ZmV0X2Jo
YW5kbGUgPSB2YmFzZTsKI2VuZGlmCgogICAvKiBBbGxvY2F0ZSBpbnRlcnJ1
cHQgKi8KICAgaWYgKCFwY2lfbWFwX2ludChjb25maWdfaWQsIGZldF9pbnRy
LCBzYywgJm5ldF9pbWFzaykpCiAgIHsKICAgICAgcHJpbnRmKCJmZXQlZDog
Y291bGRuJ3QgbWFwIGludGVycnVwdFxuIiwgdW5pdCk7CiAgICAgIGdvdG8g
ZmFpbDsKICAgfQoKICAgc2MtPmZldF9pbmZvID0gZmV0X2luZm9fdG1wOwoK
ICAgLyogUmVzZXQgdGhlIGFkYXB0ZXIuICovCiAgIGZldF9yZXNldChzYyk7
CgogICAvKgogICAgKiBHZXQgc3RhdGlvbiBhZGRyZXNzCiAgICAqLwogICBm
b3IgKGkgPSAwOyBpIDwgRVRIRVJfQUREUl9MRU47ICsraSkKICAgICBlYWRk
cltpXSA9IENTUl9SRUFEXzEoc2MsIEZFVF9QQVIwK2kpOwoKICAgLyoKICAg
ICogQSBzcGVjaWZpYyBjaGlwIHdhcyBkZXRlY3RlZC4gSW5mb3JtIHRoZSB3
b3JsZC4KICAgICovCiAgIHByaW50ZigiZmV0JWQ6IEV0aGVybmV0IGFkZHJl
c3M6ICU2RFxuIiwgdW5pdCwgZWFkZHIsICI6Iik7CgogICBzYy0+ZmV0X3Vu
aXQgPSB1bml0OwogICBiY29weShlYWRkciwgKGNoYXIgKikmc2MtPmFycGNv
bS5hY19lbmFkZHIsIEVUSEVSX0FERFJfTEVOKTsKCiAgIHNjLT5mZXRfbGRh
dGFfcHRyID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZmV0X2xpc3RfZGF0YSkg
KyA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1fREVWQlVGLCBN
X05PV0FJVCk7CiAgIGlmIChzYy0+ZmV0X2xkYXRhX3B0ciA9PSBOVUxMKQog
ICB7CiAgICAgIGZyZWUoc2MsIE1fREVWQlVGKTsKICAgICAgcHJpbnRmKCJm
ZXQlZDogbm8gbWVtb3J5IGZvciBsaXN0IGJ1ZmZlcnMhXG4iLCB1bml0KTsK
ICAgICAgcmV0dXJuOwogICB9CgogICBzYy0+ZmV0X2xkYXRhID0gKHN0cnVj
dCBmZXRfbGlzdF9kYXRhICopc2MtPmZldF9sZGF0YV9wdHI7CiAgIHJvdW5k
ID0gKHVuc2lnbmVkIGludClzYy0+ZmV0X2xkYXRhX3B0ciAmIDB4RjsKICAg
cm91bmRwdHIgPSBzYy0+ZmV0X2xkYXRhX3B0cjsKICAgZm9yIChpID0gMDsg
aSA8IDg7IGkrKykKICAgewogICAgICBpZiAocm91bmQgJSA4KQogICAgICB7
CiAgICAgICAgIHJvdW5kKys7CiAgICAgICAgIHJvdW5kcHRyKys7CiAgICAg
IH0KICAgICAgZWxzZQogICAgICAgIGJyZWFrOwogICB9CiAgIHNjLT5mZXRf
bGRhdGEgPSAoc3RydWN0IGZldF9saXN0X2RhdGEgKilyb3VuZHB0cjsKICAg
Ynplcm8oc2MtPmZldF9sZGF0YSwgc2l6ZW9mKHN0cnVjdCBmZXRfbGlzdF9k
YXRhKSk7CgogICBpZnAgPSAmc2MtPmFycGNvbS5hY19pZjsKICAgaWZwLT5p
Zl9zb2Z0YyA9IHNjOwogICBpZnAtPmlmX3VuaXQgPSB1bml0OwogICBpZnAt
PmlmX25hbWUgPSAiZmV0IjsKICAgaWZwLT5pZl9tdHUgPSBFVEhFUk1UVTsK
ICAgaWZwLT5pZl9mbGFncyA9IElGRl9CUk9BRENBU1QgfCBJRkZfU0lNUExF
WCB8IElGRl9NVUxUSUNBU1Q7CiAgIGlmcC0+aWZfaW9jdGwgPSBmZXRfaW9j
dGw7CiAgIGlmcC0+aWZfb3V0cHV0ID0gZXRoZXJfb3V0cHV0OwogICBpZnAt
PmlmX3N0YXJ0ID0gZmV0X3N0YXJ0OwogICBpZnAtPmlmX3dhdGNoZG9nID0g
ZmV0X3dhdGNoZG9nOwogICBpZnAtPmlmX2luaXQgPSBmZXRfaW5pdDsKICAg
aWZwLT5pZl9iYXVkcmF0ZSA9IDEwMDAwMDAwOwoKICAgaWYgKHNjLT5mZXRf
aW5mby0+ZmV0X2RpZCA9PSBJRDEpCiAgICAgc2MtPmZldF9waW5mbyA9IGZl
dF9waHlzOwogICBlbHNlCiAgIHsKICAgICAgaWYgKGJvb3R2ZXJib3NlKQog
ICAgICAgIHByaW50ZigiZmV0JWQ6IHByb2JpbmcgZm9yIGEgUEhZXG4iLCBz
Yy0+ZmV0X3VuaXQpOwogICAgICBmb3IgKGkgPSBGRVRfUEhZQUREUl9NSU47
IGkgPCBGRVRfUEhZQUREUl9NQVggKyAxOyBpKyspCiAgICAgIHsKICAgICAg
ICAgaWYgKGJvb3R2ZXJib3NlKQogICAgICAgICAgIHByaW50ZigiZmV0JWQ6
IGNoZWNraW5nIGFkZHJlc3M6ICVkXG4iLCBzYy0+ZmV0X3VuaXQsIGkpOwog
ICAgICAgICBzYy0+ZmV0X3BoeV9hZGRyID0gaTsKICAgICAgICAgcGh5X3N0
cyA9IGZldF9waHlfcmVhZHJlZyhzYywgUEhZX0JNU1IpOwogICAgICAgICAg
aWYgKCAocGh5X3N0cyE9MCkmJihwaHlfc3RzIT0weGZmZmYpICkKICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHBoeV9z
dHMgPSAwOwogICAgICB9CiAgICAgIGlmIChwaHlfc3RzKQogICAgICB7CiAg
ICAgICAgIHBoeV92aWQgPSBmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9WRU5J
RCk7CiAgICAgICAgIHBoeV9kaWQgPSBmZXRfcGh5X3JlYWRyZWcoc2MsIFBI
WV9ERVZJRCk7CiAgICAgICAgIGlmIChib290dmVyYm9zZSkKICAgICAgICAg
ewogICAgICAgICAgICBwcmludGYoImZldCVkOiBmb3VuZCBQSFkgYXQgYWRk
cmVzcyAlZCwgIiwKICAgICAgICAgICAgICAgICAgICBzYy0+ZmV0X3VuaXQs
IHNjLT5mZXRfcGh5X2FkZHIpOwogICAgICAgICAgICBwcmludGYoInZlbmRv
ciBpZDogJXggZGV2aWNlIGlkOiAleFxuIiwgcGh5X3ZpZCwgcGh5X2RpZCk7
CiAgICAgICAgIH0KCiAgICAgICAgIHAgPSBmZXRfcGh5czsKICAgICAgICAg
d2hpbGUocC0+ZmV0X3ZpZCkKICAgICAgICAgewogICAgICAgICAgICBpZiAo
cGh5X3ZpZCA9PSBwLT5mZXRfdmlkKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgIHNjLT5mZXRfcGluZm8gPSBwOwogICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgfQogICAgICAgICAgICBwKys7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHNjLT5mZXRfcGluZm8gPT0gTlVMTCkKICAgICAgICAg
ICBzYy0+ZmV0X3BpbmZvID0gJmZldF9waHlzW1BIWV9VTktOT1dOXTsKICAg
ICAgICAgaWYgKGJvb3R2ZXJib3NlKQogICAgICAgICAgIHByaW50ZigiZmV0
JWQ6IFBIWSB0eXBlOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgIHNjLT5m
ZXRfdW5pdCwgc2MtPmZldF9waW5mby0+ZmV0X25hbWUpOwogICAgICB9CiAg
ICAgIGVsc2UKICAgICAgewogICAgICAgICBwcmludGYoImZldCVkOiBNSUkg
d2l0aG91dCBhbnkgcGh5IVxuIiwgc2MtPmZldF91bml0KTsKICAgICAgICAg
Z290byBmYWlsOwogICAgICB9CiAgIH0KCiAgIC8qCiAgICAqIERvIGlmbWVk
aWEgc2V0dXAuCiAgICAqLwogICBpZm1lZGlhX2luaXQoJnNjLT5pZm1lZGlh
LCAwLCBmZXRfaWZtZWRpYV91cGQsIGZldF9pZm1lZGlhX3N0cyk7CgogICBm
ZXRfZ2V0bW9kZV9taWkoc2MpOwogICBmZXRfYXV0b25lZ19taWkoc2MsIEZF
VF9GTEFHX0ZPUkNFREVMQVksIDEpOwogICBtZWRpYSA9IHNjLT5pZm1lZGlh
LmlmbV9tZWRpYTsKICAgZmV0X3N0b3Aoc2MpOwoKICAgaWZtZWRpYV9zZXQo
JnNjLT5pZm1lZGlhLCBtZWRpYSk7CgogICAvKgogICAgKiBDYWxsIE1JIGF0
dGFjaCByb3V0aW5lcy4KICAgICovCiAgIGlmX2F0dGFjaChpZnApOwogICBl
dGhlcl9pZmF0dGFjaChpZnApOwoKI2lmIE5CUEZJTFRFUiA+IDAKICAgYnBm
YXR0YWNoKGlmcCwgRExUX0VOMTBNQiwgc2l6ZW9mKHN0cnVjdCBldGhlcl9o
ZWFkZXIpKTsKI2VuZGlmCiAgIGF0X3NodXRkb3duKGZldF9zaHV0ZG93biwg
c2MsIFNIVVRET1dOX1BPU1RfU1lOQyk7CgpmYWlsOgogICBzcGx4KHMpOwog
ICByZXR1cm47Cn0KCgovKgogKiBJbml0aWFsaXplIHRoZSB0cmFuc21pdCBk
ZXNjcmlwdG9ycy4KICovCnN0YXRpYyBpbnQgZmV0X2xpc3RfdHhfaW5pdChz
YykKc3RydWN0IGZldF9zb2Z0YyAqc2M7CnsKICAgc3RydWN0IGZldF9jaGFp
bl9kYXRhICpjZDsKICAgc3RydWN0IGZldF9saXN0X2RhdGEgKmxkOwogICBp
bnQgaTsKCiAgIGNkID0gJnNjLT5mZXRfY2RhdGE7CiAgIGxkID0gc2MtPmZl
dF9sZGF0YTsKCiAgIGZvciAoaSA9IDA7IGkgPCBGRVRfVFhfTElTVF9DTlQ7
IGkrKykKICAgewogICAgICBjZC0+ZmV0X3R4X2NoYWluW2ldLmZldF9wdHIg
PSAmbGQtPmZldF90eF9saXN0W2ldOwogICAgICBpZiAoaSA9PSAoRkVUX1RY
X0xJU1RfQ05UIC0gMSkpCiAgICAgICAgY2QtPmZldF90eF9jaGFpbltpXS5m
ZXRfbmV4dGRlc2MgPSAmY2QtPmZldF90eF9jaGFpblswXTsKICAgICAgZWxz
ZQogICAgICAgIGNkLT5mZXRfdHhfY2hhaW5baV0uZmV0X25leHRkZXNjID0g
JmNkLT5mZXRfdHhfY2hhaW5baSArIDFdOwogICB9CgogICBjZC0+ZmV0X3R4
X2ZyZWUgPSAmY2QtPmZldF90eF9jaGFpblswXTsKICAgY2QtPmZldF90eF90
YWlsID0gY2QtPmZldF90eF9oZWFkID0gTlVMTDsKCiAgIHJldHVybigwKTsK
fQoKCi8qCiAqIEluaXRpYWxpemUgdGhlIFJYIGRlc2NyaXB0b3JzIGFuZCBh
bGxvY2F0ZSBtYnVmcyBmb3IgdGhlbS4gTm90ZSB0aGF0CiAqIHdlIGFycmFu
Z2UgdGhlIGRlc2NyaXB0b3JzIGluIGEgY2xvc2VkIHJpbmcsIHNvIHRoYXQg
dGhlIGxhc3QgZGVzY3JpcHRvcgogKiBwb2ludHMgYmFjayB0byB0aGUgZmly
c3QuCiAqLwpzdGF0aWMgaW50IGZldF9saXN0X3J4X2luaXQoc2MpCnN0cnVj
dCBmZXRfc29mdGMgKnNjOwp7CiAgIHN0cnVjdCBmZXRfY2hhaW5fZGF0YSAq
Y2Q7CiAgIHN0cnVjdCBmZXRfbGlzdF9kYXRhICpsZDsKICAgaW50IGk7Cgog
ICBjZCA9ICZzYy0+ZmV0X2NkYXRhOwogICBsZCA9IHNjLT5mZXRfbGRhdGE7
CgogICBmb3IgKGkgPSAwOyBpIDwgRkVUX1JYX0xJU1RfQ05UOyBpKyspCiAg
IHsKICAgICAgY2QtPmZldF9yeF9jaGFpbltpXS5mZXRfcHRyID0gKHN0cnVj
dCBmZXRfZGVzYyAqKSZsZC0+ZmV0X3J4X2xpc3RbaV07CgogICAgICBpZiAo
ZmV0X25ld2J1ZihzYywgJmNkLT5mZXRfcnhfY2hhaW5baV0pID09IEVOT0JV
RlMpCiAgICAgICAgcmV0dXJuKEVOT0JVRlMpOwoKICAgICAgaWYgKGkgPT0g
KEZFVF9SWF9MSVNUX0NOVCAtIDEpKQogICAgICB7CiAgICAgICAgIGNkLT5m
ZXRfcnhfY2hhaW5baV0uZmV0X25leHRkZXNjID0gJmNkLT5mZXRfcnhfY2hh
aW5bMF07CiAgICAgICAgIGxkLT5mZXRfcnhfbGlzdFtpXS5mZXRfbmV4dCA9
IHZ0b3BoeXMoJmxkLT5mZXRfcnhfbGlzdFswXSk7CiAgICAgIH0KICAgICAg
ZWxzZQogICAgICB7CiAgICAgICAgIGNkLT5mZXRfcnhfY2hhaW5baV0uZmV0
X25leHRkZXNjID0gJmNkLT5mZXRfcnhfY2hhaW5baSArIDFdOwogICAgICAg
ICBsZC0+ZmV0X3J4X2xpc3RbaV0uZmV0X25leHQgPSB2dG9waHlzKCZsZC0+
ZmV0X3J4X2xpc3RbaSArIDFdKTsKICAgICAgfQogICB9CgogICBjZC0+ZmV0
X3J4X2hlYWQgPSAmY2QtPmZldF9yeF9jaGFpblswXTsKCiAgIHJldHVybigw
KTsKfQoKCi8qCiAqIEluaXRpYWxpemUgYW4gUlggZGVzY3JpcHRvciBhbmQg
YXR0YWNoIGFuIE1CVUYgY2x1c3Rlci4KICovCnN0YXRpYyBpbnQgZmV0X25l
d2J1ZihzYywgYykKc3RydWN0IGZldF9zb2Z0YyAqc2M7CnN0cnVjdCBmZXRf
Y2hhaW5fb25lZnJhZyAqYzsKewogICBzdHJ1Y3QgbWJ1ZiAqbV9uZXcgPSBO
VUxMOwoKICAgTUdFVEhEUihtX25ldywgTV9ET05UV0FJVCwgTVRfREFUQSk7
CiAgIGlmIChtX25ldyA9PSBOVUxMKQogICB7CiAgICAgIHByaW50ZigiZmV0
JWQ6IG5vIG1lbW9yeSBmb3IgcnggbGlzdCAtLSBwYWNrZXQgZHJvcHBlZCFc
biIsCiAgICAgICAgICAgICAgc2MtPmZldF91bml0KTsKICAgICAgcmV0dXJu
KEVOT0JVRlMpOwogICB9CgogICBNQ0xHRVQobV9uZXcsIE1fRE9OVFdBSVQp
OwogICBpZiAoIShtX25ldy0+bV9mbGFncyAmIE1fRVhUKSkKICAgewogICAg
ICBwcmludGYoImZldCVkOiBubyBtZW1vcnkgZm9yIHJ4IGxpc3QgLS0gcGFj
a2V0IGRyb3BwZWQhXG4iLAogICAgICAgICAgICAgIHNjLT5mZXRfdW5pdCk7
CiAgICAgIG1fZnJlZW0obV9uZXcpOwogICAgICByZXR1cm4oRU5PQlVGUyk7
CiAgIH0KCiAgIGMtPmZldF9tYnVmID0gbV9uZXc7CiAgIGMtPmZldF9wdHIt
PmZldF9kYXRhID0gdnRvcGh5cyhtdG9kKG1fbmV3LCBjYWRkcl90KSk7CiAg
IGMtPmZldF9wdHItPmZldF9jdGwgPSAoTUNMQllURVMgLSAxKTw8RkVUX1JC
U1NoaWZ0OwogICBjLT5mZXRfcHRyLT5mZXRfc3RhdHVzID0gRkVUX09XTkJ5
TklDOwoKICAgcmV0dXJuKDApOwp9CgoKLyoKICogQSBmcmFtZSBoYXMgYmVl
biB1cGxvYWRlZDogcGFzcyB0aGUgcmVzdWx0aW5nIG1idWYgY2hhaW4gdXAg
dG8KICogdGhlIGhpZ2hlciBsZXZlbCBwcm90b2NvbHMuCiAqLwpzdGF0aWMg
dm9pZCBmZXRfcnhlb2Yoc2MpCnN0cnVjdCBmZXRfc29mdGMgKnNjOwp7CiAg
IHN0cnVjdCBldGhlcl9oZWFkZXIgKmVoOwogICBzdHJ1Y3QgbWJ1ZiAqbTsK
ICAgc3RydWN0IGlmbmV0ICppZnA7CiAgIHN0cnVjdCBmZXRfY2hhaW5fb25l
ZnJhZyAqY3VyX3J4OwogICBpbnQgdG90YWxfbGVuID0gMDsKICAgdV9pbnQz
Ml90IHJ4c3RhdDsKCiAgIGlmcCA9ICZzYy0+YXJwY29tLmFjX2lmOwoKICAg
d2hpbGUgKCEoKHJ4c3RhdCA9IHNjLT5mZXRfY2RhdGEuZmV0X3J4X2hlYWQt
PmZldF9wdHItPmZldF9zdGF0dXMpJkZFVF9PV05CeU5JQykpCiAgIHsKICAg
ICAgY3VyX3J4ID0gc2MtPmZldF9jZGF0YS5mZXRfcnhfaGVhZDsKICAgICAg
c2MtPmZldF9jZGF0YS5mZXRfcnhfaGVhZCA9IGN1cl9yeC0+ZmV0X25leHRk
ZXNjOwoKICAgICAgaWYgKHJ4c3RhdCAmIEZFVF9FUykgICAgICAgLyogZXJy
b3Igc3VtbWFyeSAqLwogICAgICB7ICAvKiBnaXZlIHVwIHRoaXMgcnggcGt0
ICovCiAgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOwogICAgICAgICBjdXJf
cngtPmZldF9wdHItPmZldF9zdGF0dXMgPSBGRVRfT1dOQnlOSUM7CiAgICAg
ICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICAvKiBObyBlcnJvcnM7IHJl
Y2VpdmUgdGhlIHBhY2tldC4gKi8KICAgICAgdG90YWxfbGVuID0gKHJ4c3Rh
dCAmIEZFVF9GTE5HTUFTSykgPj4gRkVUX0ZMTkdTaGlmdDsKICAgICAgdG90
YWxfbGVuIC09IEVUSEVSX0NSQ19MRU47CgogICAgICBpZiAodG90YWxfbGVu
IDwgTUlOQ0xTSVpFKQogICAgICB7CiAgICAgICAgIG0gPSBtX2RldmdldCht
dG9kKGN1cl9yeC0+ZmV0X21idWYsIGNoYXIgKiksIHRvdGFsX2xlbiwgMCwg
aWZwLCBOVUxMKTsKICAgICAgICAgY3VyX3J4LT5mZXRfcHRyLT5mZXRfc3Rh
dHVzID0gRkVUX09XTkJ5TklDOwogICAgICAgICBpZiAobSA9PSBOVUxMKQog
ICAgICAgICB7CiAgICAgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOwogICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICB9CiAgICAgIGVs
c2UKICAgICAgewogICAgICAgICBtID0gY3VyX3J4LT5mZXRfbWJ1ZjsKCiAg
ICAgICAgIC8qCiAgICAgICAgICAqIFRyeSB0byBjb25qdXJlIHVwIGEgbmV3
IG1idWYgY2x1c3Rlci4gSWYgdGhhdAogICAgICAgICAgKiBmYWlscywgaXQg
bWVhbnMgd2UgaGF2ZSBhbiBvdXQgb2YgbWVtb3J5IGNvbmRpdGlvbiBhbmQK
ICAgICAgICAgICogc2hvdWxkIGxlYXZlIHRoZSBidWZmZXIgaW4gcGxhY2Ug
YW5kIGNvbnRpbnVlLiBUaGlzIHdpbGwKICAgICAgICAgICogcmVzdWx0IGlu
IGEgbG9zdCBwYWNrZXQsIGJ1dCB0aGVyZSdzIGxpdHRsZSBlbHNlIHdlCiAg
ICAgICAgICAqIGNhbiBkbyBpbiB0aGlzIHNpdHVhdGlvbi4KICAgICAgICAg
ICovCiAgICAgICAgIGlmIChmZXRfbmV3YnVmKHNjLCBjdXJfcngpID09IEVO
T0JVRlMpCiAgICAgICAgIHsKICAgICAgICAgICAgaWZwLT5pZl9pZXJyb3Jz
Kys7CiAgICAgICAgICAgIGN1cl9yeC0+ZmV0X3B0ci0+ZmV0X3N0YXR1cyA9
IEZFVF9PV05CeU5JQzsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgbS0+bV9wa3RoZHIucmN2aWYgPSBpZnA7CiAgICAgICAg
IG0tPm1fcGt0aGRyLmxlbiA9IG0tPm1fbGVuID0gdG90YWxfbGVuOwogICAg
ICB9CgogICAgICBpZnAtPmlmX2lwYWNrZXRzKys7CiAgICAgIGVoID0gbXRv
ZChtLCBzdHJ1Y3QgZXRoZXJfaGVhZGVyICopOwoKI2lmIE5CUEZJTFRFUiA+
IDAKICAgICAgLyoKICAgICAgICogSGFuZGxlIEJQRiBsaXN0ZW5lcnMuIExl
dCB0aGUgQlBGIHVzZXIgc2VlIHRoZSBwYWNrZXQsIGJ1dAogICAgICAgKiBk
b24ndCBwYXNzIGl0IHVwIHRvIHRoZSBldGhlcl9pbnB1dCgpIGxheWVyIHVu
bGVzcyBpdCdzCiAgICAgICAqIGEgYnJvYWRjYXN0IHBhY2tldCwgbXVsdGlj
YXN0IHBhY2tldCwgbWF0Y2hlcyBvdXIgZXRoZXJuZXQKICAgICAgICogYWRk
cmVzcyBvciB0aGUgaW50ZXJmYWNlIGlzIGluIHByb21pc2N1b3VzIG1vZGUu
CiAgICAgICAqLwogICAgICBpZiAoaWZwLT5pZl9icGYpCiAgICAgIHsKICAg
ICAgICAgYnBmX210YXAoaWZwLCBtKTsKICAgICAgICAgaWYgKGlmcC0+aWZf
ZmxhZ3MgJiBJRkZfUFJPTUlTQyAmJgogICAgICAgICAgICAgKGJjbXAoZWgt
PmV0aGVyX2Rob3N0LCBzYy0+YXJwY29tLmFjX2VuYWRkciwgRVRIRVJfQURE
Ul9MRU4pICYmCiAgICAgICAgICAgICAoZWgtPmV0aGVyX2Rob3N0WzBdICYg
MSkgPT0gMCkpCiAgICAgICAgIHsKICAgICAgICAgICAgbV9mcmVlbShtKTsK
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgfQojZW5k
aWYKICAgICAgLyogUmVtb3ZlIGhlYWRlciBmcm9tIG1idWYgYW5kIHBhc3Mg
aXQgb24uICovCiAgICAgIG1fYWRqKG0sIHNpemVvZihzdHJ1Y3QgZXRoZXJf
aGVhZGVyKSk7CiAgICAgIGV0aGVyX2lucHV0KGlmcCwgZWgsIG0pOwogICB9
CgogICByZXR1cm47Cn0KCgovKgogKiBBIGZyYW1lIHdhcyBkb3dubG9hZGVk
IHRvIHRoZSBjaGlwLiBJdCdzIHNhZmUgZm9yIHVzIHRvIGNsZWFuIHVwCiAq
IHRoZSBsaXN0IGJ1ZmZlcnMuCiAqLwpzdGF0aWMgdm9pZCBmZXRfdHhlb2Yo
c2MpCnN0cnVjdCBmZXRfc29mdGMgKnNjOwp7CiAgIHN0cnVjdCBmZXRfY2hh
aW4gKmN1cl90eDsKICAgc3RydWN0IGlmbmV0ICppZnA7CgogICBpZnAgPSAm
c2MtPmFycGNvbS5hY19pZjsKCiAgIC8qIENsZWFyIHRoZSB0aW1lb3V0IHRp
bWVyLiAqLwogICBpZnAtPmlmX3RpbWVyID0gMDsKCiAgIGlmIChzYy0+ZmV0
X2NkYXRhLmZldF90eF9oZWFkID09IE5VTEwpCiAgICAgcmV0dXJuOwoKICAg
LyoKICAgICogR28gdGhyb3VnaCBvdXIgdHggbGlzdCBhbmQgZnJlZSBtYnVm
cyBmb3IgdGhvc2UKICAgICogZnJhbWVzIHRoYXQgaGF2ZSBiZWVuIHRyYW5z
bWl0dGVkLgogICAgKi8KICAgd2hpbGUgKHNjLT5mZXRfY2RhdGEuZmV0X3R4
X2hlYWQtPmZldF9tYnVmICE9IE5VTEwpCiAgIHsKICAgICAgdV9pbnQzMl90
IHR4c3RhdDsKCiAgICAgIGN1cl90eCA9IHNjLT5mZXRfY2RhdGEuZmV0X3R4
X2hlYWQ7CiAgICAgIHR4c3RhdCA9IEZFVF9UWFNUQVRVUyhjdXJfdHgpOwoK
ICAgICAgaWYgKCh0eHN0YXQgJiBGRVRfT1dOQnlOSUMpIHx8IHR4c3RhdCA9
PSBGRVRfVU5TRU5UKQogICAgICAgIGJyZWFrOwoKICAgICAgaWYgKHR4c3Rh
dCAmIEZFVF9UWEVSUikKICAgICAgewogICAgICAgICBpZnAtPmlmX29lcnJv
cnMrKzsKICAgICAgICAgaWYgKHR4c3RhdCAmIEZFVF9FQykgICAgLyogZXhj
ZXNzaXZlIGNvbGxpc2lvbiAqLwogICAgICAgICAgIGlmcC0+aWZfY29sbGlz
aW9ucysrOwogICAgICAgICBpZiAodHhzdGF0ICYgRkVUX0xDKSAgICAvKiBs
YXRlIGNvbGxpc2lvbiAqLwogICAgICAgICAgIGlmcC0+aWZfY29sbGlzaW9u
cysrOwogICAgICB9CgogICAgICBpZnAtPmlmX2NvbGxpc2lvbnMgKz0gKHR4
c3RhdCAmIEZFVF9OQ1JNQVNLKSA+PiBGRVRfTkNSU2hpZnQ7CgogICAgICBp
ZnAtPmlmX29wYWNrZXRzKys7CiAgICAgIG1fZnJlZW0oY3VyX3R4LT5mZXRf
bWJ1Zik7CiAgICAgIGN1cl90eC0+ZmV0X21idWYgPSBOVUxMOwoKICAgICAg
aWYgKHNjLT5mZXRfY2RhdGEuZmV0X3R4X2hlYWQgPT0gc2MtPmZldF9jZGF0
YS5mZXRfdHhfdGFpbCkKICAgICAgewogICAgICAgICBzYy0+ZmV0X2NkYXRh
LmZldF90eF9oZWFkID0gTlVMTDsKICAgICAgICAgc2MtPmZldF9jZGF0YS5m
ZXRfdHhfdGFpbCA9IE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgICB9Cgog
ICAgICBzYy0+ZmV0X2NkYXRhLmZldF90eF9oZWFkID0gY3VyX3R4LT5mZXRf
bmV4dGRlc2M7CiAgIH0KCiAgIHJldHVybjsKfQoKCi8qCiAqIFRYICdlbmQg
b2YgY2hhbm5lbCcgaW50ZXJydXB0IGhhbmRsZXIuCiAqLwpzdGF0aWMgdm9p
ZCBmZXRfdHhlb2Moc2MpCnN0cnVjdCBmZXRfc29mdGMgKnNjOwp7CiAgIHN0
cnVjdCBpZm5ldCAqaWZwOwoKICAgaWZwID0gJnNjLT5hcnBjb20uYWNfaWY7
CgogICBpZnAtPmlmX3RpbWVyID0gMDsKCiAgIGlmIChzYy0+ZmV0X2NkYXRh
LmZldF90eF9oZWFkID09IE5VTEwpCiAgIHsKICAgICAgaWZwLT5pZl9mbGFn
cyAmPSB+SUZGX09BQ1RJVkU7CiAgICAgIHNjLT5mZXRfY2RhdGEuZmV0X3R4
X3RhaWwgPSBOVUxMOwogICAgICBpZiAoc2MtPmZldF93YW50X2F1dG8pCiAg
ICAgICAgZmV0X2F1dG9uZWdfbWlpKHNjLCBGRVRfRkxBR19TQ0hFRERFTEFZ
LCAxKTsKICAgfQogICBlbHNlCiAgIHsKICAgICAgaWYgKEZFVF9UWE9XTihz
Yy0+ZmV0X2NkYXRhLmZldF90eF9oZWFkKSA9PSBGRVRfVU5TRU5UKQogICAg
ICB7CiAgICAgICAgIEZFVF9UWE9XTihzYy0+ZmV0X2NkYXRhLmZldF90eF9o
ZWFkKSA9IEZFVF9PV05CeU5JQzsKICAgICAgICAgaWZwLT5pZl90aW1lciA9
IDU7CiAgICAgICAgIENTUl9XUklURV80KHNjLCBGRVRfVFhQRFIsIDB4RkZG
RkZGRkYpOwogICAgICB9CiAgIH0KCiAgIHJldHVybjsKfQoKCnN0YXRpYyB2
b2lkIGZldF9pbnRyKGFyZykKdm9pZCAqYXJnOwp7CiAgIHN0cnVjdCBmZXRf
c29mdGMgKnNjOwogICBzdHJ1Y3QgaWZuZXQgKmlmcDsKICAgdV9pbnQzMl90
IHN0YXR1czsKCiAgIHNjID0gYXJnOwogICBpZnAgPSAmc2MtPmFycGNvbS5h
Y19pZjsKCiAgIGlmICghKGlmcC0+aWZfZmxhZ3MgJiBJRkZfVVApKQogICAg
IHJldHVybjsKCiAgIC8qIERpc2FibGUgaW50ZXJydXB0cy4gKi8KICAgQ1NS
X1dSSVRFXzQoc2MsIEZFVF9JTVIsIDB4MDAwMDAwMDApOwoKICAgZm9yICg7
OykKICAgewogICAgICBzdGF0dXMgPSBDU1JfUkVBRF80KHNjLCBGRVRfSVNS
KTsKICAgICAgc3RhdHVzICY9IEZFVF9JTlRSUzsKICAgICAgaWYgKHN0YXR1
cykKICAgICAgICBDU1JfV1JJVEVfNChzYywgRkVUX0lTUiwgc3RhdHVzKTsK
ICAgICAgZWxzZQogICAgICAgIGJyZWFrOwoKICAgICAgaWYgKHN0YXR1cyAm
IEZFVF9SSSkgICAgICAgLyogcmVjZWl2ZSBpbnRlcnJ1cHQgKi8KICAgICAg
ICBmZXRfcnhlb2Yoc2MpOwoKICAgICAgaWYgKChzdGF0dXMgJiBGRVRfUkJV
KSB8fCAoc3RhdHVzICYgRkVUX1J4RXJyKSkKICAgICAgeyAgLyogcnggYnVm
ZmVyIHVuYXZhaWxhYmxlIG9yIHJ4IGVycm9yICovCiAgICAgICAgIGlmcC0+
aWZfaWVycm9ycysrOwojaWZkZWYgZm9vCiAgICAgICAgIGZldF9zdG9wKHNj
KTsKICAgICAgICAgZmV0X3Jlc2V0KHNjKTsKICAgICAgICAgZmV0X2luaXQo
c2MpOwojZW5kaWYKICAgICAgfQoKICAgICAgaWYgKHN0YXR1cyAmIEZFVF9U
SSkgICAgICAgLyogdHggaW50ZXJydXB0ICovCiAgICAgICAgZmV0X3R4ZW9m
KHNjKTsKCiAgICAgIGlmIChzdGF0dXMgJiBGRVRfVEJVKSAgICAgIC8qIHR4
IGJ1ZmZlciB1bmF2YWlsYWJsZSAqLwogICAgICAgIGZldF90eGVvYyhzYyk7
CgogICAgICBpZiAoc3RhdHVzICYgRkVUX0ZCRSkgICAgICAvKiBmYXRhbCBi
dXMgZXJyb3IgKi8KICAgICAgewogICAgICAgICBmZXRfcmVzZXQoc2MpOwog
ICAgICAgICBmZXRfaW5pdChzYyk7CiAgICAgIH0KCiAgIH0KCiAgIC8qIFJl
LWVuYWJsZSBpbnRlcnJ1cHRzLiAqLwogICBDU1JfV1JJVEVfNChzYywgRkVU
X0lNUiwgRkVUX0lOVFJTKTsKCiAgIGlmIChpZnAtPmlmX3NuZC5pZnFfaGVh
ZCAhPSBOVUxMKQogICAgIGZldF9zdGFydChpZnApOwoKICAgcmV0dXJuOwp9
CgoKLyoKICogRW5jYXBzdWxhdGUgYW4gbWJ1ZiBjaGFpbiBpbiBhIGRlc2Ny
aXB0b3IgYnkgY291cGxpbmcgdGhlIG1idWYgZGF0YQogKiBwb2ludGVycyB0
byB0aGUgZnJhZ21lbnQgcG9pbnRlcnMuCiAqLwpzdGF0aWMgaW50IGZldF9l
bmNhcChzYywgYywgbV9oZWFkKQpzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKc3Ry
dWN0IGZldF9jaGFpbiAqYzsKc3RydWN0IG1idWYgKm1faGVhZDsKewogICBz
dHJ1Y3QgZmV0X2Rlc2MgKmYgPSBOVUxMOwogICBpbnQgdG90YWxfbGVuOwog
ICBzdHJ1Y3QgbWJ1ZiAqbSwgKm1fbmV3PU5VTEw7CgogICAvKiBjYWxjdWxh
dGUgdGhlIHRvdGFsIHR4IHBrdCBsZW5ndGggKi8KICAgdG90YWxfbGVuID0g
MDsKICAgZm9yIChtID0gbV9oZWFkOyAgbSAhPSBOVUxMOyBtID0gbS0+bV9u
ZXh0KQogICAgIHRvdGFsX2xlbiArPSBtLT5tX2xlbjsKCiAgIC8qCiAgICAq
IFN0YXJ0IHBhY2tpbmcgdGhlIG1idWZzIGluIHRoaXMgY2hhaW4gaW50bwog
ICAgKiB0aGUgZnJhZ21lbnQgcG9pbnRlcnMuIFN0b3Agd2hlbiB3ZSBydW4g
b3V0CiAgICAqIG9mIGZyYWdtZW50cyBvciBoaXQgdGhlIGVuZCBvZiB0aGUg
bWJ1ZiBjaGFpbi4KICAgICovCiAgIG0gPSBtX2hlYWQ7CgogICBNR0VUSERS
KG1fbmV3LCBNX0RPTlRXQUlULCBNVF9EQVRBKTsKICAgaWYgKG1fbmV3ID09
IE5VTEwpCiAgIHsKICAgICAgcHJpbnRmKCJmZXQlZDogbm8gbWVtb3J5IGZv
ciB0eCBsaXN0Iiwgc2MtPmZldF91bml0KTsKICAgICAgcmV0dXJuKDEpOwog
ICB9CgogICBpZiAobV9oZWFkLT5tX3BrdGhkci5sZW4gPiBNSExFTikKICAg
ewogICAgICBNQ0xHRVQobV9uZXcsIE1fRE9OVFdBSVQpOwogICAgICBpZiAo
IShtX25ldy0+bV9mbGFncyAmIE1fRVhUKSkKICAgICAgewogICAgICAgICBt
X2ZyZWVtKG1fbmV3KTsKICAgICAgICAgcHJpbnRmKCJmZXQlZDogbm8gbWVt
b3J5IGZvciB0eCBsaXN0Iiwgc2MtPmZldF91bml0KTsKICAgICAgICAgcmV0
dXJuKDEpOwogICAgICB9CiAgIH0KCiAgIG1fY29weWRhdGEobV9oZWFkLCAw
LCBtX2hlYWQtPm1fcGt0aGRyLmxlbiwgbXRvZChtX25ldywgY2FkZHJfdCkp
OwogICBtX25ldy0+bV9wa3RoZHIubGVuID0gbV9uZXctPm1fbGVuID0gbV9o
ZWFkLT5tX3BrdGhkci5sZW47CiAgIG1fZnJlZW0obV9oZWFkKTsKICAgbV9o
ZWFkID0gbV9uZXc7CiAgIGYgPSAmYy0+ZmV0X3B0ci0+ZmV0X2ZyYWdbMF07
CiAgIGYtPmZldF9zdGF0dXMgPSAwOwogICBmLT5mZXRfZGF0YSA9IHZ0b3Bo
eXMobXRvZChtX25ldywgY2FkZHJfdCkpOwogICB0b3RhbF9sZW4gPSBtX25l
dy0+bV9sZW47CiAgIGYtPmZldF9jdGwgPSBGRVRfVFhGRHxGRVRfVFhMRHxG
RVRfQ1JDRW5hYmxlfEZFVF9QQURFbmFibGU7CiAgIGYtPmZldF9jdGwgfD0g
dG90YWxfbGVuPDxGRVRfUEtUU2hpZnQ7ICAgLyogcGt0IHNpemUgKi8KICAg
Zi0+ZmV0X2N0bCB8PSB0b3RhbF9sZW47ICAgICAgICAgICAgICAgIC8qIGJ1
ZmZlciBzaXplICovCgogICBjLT5mZXRfbWJ1ZiA9IG1faGVhZDsKICAgYy0+
ZmV0X2xhc3RkZXNjID0gMDsKICAgRkVUX1RYTkVYVChjKSA9IHZ0b3BoeXMo
JmMtPmZldF9uZXh0ZGVzYy0+ZmV0X3B0ci0+ZmV0X2ZyYWdbMF0pOwoKICAg
cmV0dXJuKDApOwp9CgoKLyoKICogTWFpbiB0cmFuc21pdCByb3V0aW5lLiBU
byBhdm9pZCBoYXZpbmcgdG8gZG8gbWJ1ZiBjb3BpZXMsIHdlIHB1dCBwb2lu
dGVycwogKiB0byB0aGUgbWJ1ZiBkYXRhIHJlZ2lvbnMgZGlyZWN0bHkgaW4g
dGhlIHRyYW5zbWl0IGxpc3RzLiBXZSBhbHNvIHNhdmUgYQogKiBjb3B5IG9m
IHRoZSBwb2ludGVycyBzaW5jZSB0aGUgdHJhbnNtaXQgbGlzdCBmcmFnbWVu
dCBwb2ludGVycyBhcmUKICogcGh5c2ljYWwgYWRkcmVzc2VzLgogKi8Kc3Rh
dGljIHZvaWQgZmV0X3N0YXJ0KGlmcCkKc3RydWN0IGlmbmV0ICppZnA7CnsK
ICAgc3RydWN0IGZldF9zb2Z0YyAqc2M7CiAgIHN0cnVjdCBtYnVmICptX2hl
YWQgPSBOVUxMOwogICBzdHJ1Y3QgZmV0X2NoYWluICpjdXJfdHggPSBOVUxM
LCAqc3RhcnRfdHg7CgogICBzYyA9IGlmcC0+aWZfc29mdGM7CgogICBpZiAo
c2MtPmZldF9hdXRvbmVnKQogICB7CiAgICAgIHNjLT5mZXRfdHhfcGVuZCA9
IDE7CiAgICAgIHJldHVybjsKICAgfQoKICAgLyoKICAgICogQ2hlY2sgZm9y
IGFuIGF2YWlsYWJsZSBxdWV1ZSBzbG90LiBJZiB0aGVyZSBhcmUgbm9uZSwK
ICAgICogcHVudC4KICAgICovCiAgIGlmIChzYy0+ZmV0X2NkYXRhLmZldF90
eF9mcmVlLT5mZXRfbWJ1ZiAhPSBOVUxMKQogICB7CiAgICAgIGlmcC0+aWZf
ZmxhZ3MgfD0gSUZGX09BQ1RJVkU7CiAgICAgIHJldHVybjsKICAgfQoKICAg
c3RhcnRfdHggPSBzYy0+ZmV0X2NkYXRhLmZldF90eF9mcmVlOwoKICAgd2hp
bGUgKHNjLT5mZXRfY2RhdGEuZmV0X3R4X2ZyZWUtPmZldF9tYnVmID09IE5V
TEwpCiAgIHsKICAgICAgSUZfREVRVUVVRSgmaWZwLT5pZl9zbmQsIG1faGVh
ZCk7CiAgICAgIGlmIChtX2hlYWQgPT0gTlVMTCkKICAgICAgICBicmVhazsK
CiAgICAgIC8qIFBpY2sgYSBkZXNjcmlwdG9yIG9mZiB0aGUgZnJlZSBsaXN0
LiAqLwogICAgICBjdXJfdHggPSBzYy0+ZmV0X2NkYXRhLmZldF90eF9mcmVl
OwogICAgICBzYy0+ZmV0X2NkYXRhLmZldF90eF9mcmVlID0gY3VyX3R4LT5m
ZXRfbmV4dGRlc2M7CgogICAgICAvKiBQYWNrIHRoZSBkYXRhIGludG8gdGhl
IGRlc2NyaXB0b3IuICovCiAgICAgIGZldF9lbmNhcChzYywgY3VyX3R4LCBt
X2hlYWQpOwoKICAgICAgaWYgKGN1cl90eCAhPSBzdGFydF90eCkKICAgICAg
ICBGRVRfVFhPV04oY3VyX3R4KSA9IEZFVF9PV05CeU5JQzsKCiNpZiBOQlBG
SUxURVIgPiAwCiAgICAgIC8qCiAgICAgICAqIElmIHRoZXJlJ3MgYSBCUEYg
bGlzdGVuZXIsIGJvdW5jZSBhIGNvcHkgb2YgdGhpcyBmcmFtZQogICAgICAg
KiB0byBoaW0uCiAgICAgICAqLwogICAgICBpZiAoaWZwLT5pZl9icGYpCiAg
ICAgICAgYnBmX210YXAoaWZwLCBjdXJfdHgtPmZldF9tYnVmKTsKI2VuZGlm
CiAgIH0KCiAgIC8qCiAgICAqIElmIHRoZXJlIGFyZSBubyBwYWNrZXRzIHF1
ZXVlZCwgYmFpbC4KICAgICovCiAgIGlmIChjdXJfdHggPT0gTlVMTCkKICAg
ICByZXR1cm47CgogICAvKgogICAgKiBQbGFjZSB0aGUgcmVxdWVzdCBmb3Ig
dGhlIHVwbG9hZCBpbnRlcnJ1cHQKICAgICogaW4gdGhlIGxhc3QgZGVzY3Jp
cHRvciBpbiB0aGUgY2hhaW4uIFRoaXMgd2F5LCBpZgogICAgKiB3ZSdyZSBj
aGFpbmluZyBzZXZlcmFsIHBhY2tldHMgYXQgb25jZSwgd2UnbGwgb25seQog
ICAgKiBnZXQgYW4gaW50ZXJ1cHQgb25jZSBmb3IgdGhlIHdob2xlIGNoYWlu
IHJhdGhlciB0aGFuCiAgICAqIG9uY2UgZm9yIGVhY2ggcGFja2V0LgogICAg
Ki8KICAgRkVUX1RYQ1RMKGN1cl90eCkgfD0gRkVUX1RYSUM7CiAgIGN1cl90
eC0+ZmV0X3B0ci0+ZmV0X2ZyYWdbMF0uZmV0X2N0bCB8PSBGRVRfVFhJQzsK
ICAgc2MtPmZldF9jZGF0YS5mZXRfdHhfdGFpbCA9IGN1cl90eDsKCiAgIGlm
IChzYy0+ZmV0X2NkYXRhLmZldF90eF9oZWFkID09IE5VTEwpCiAgICAgc2Mt
PmZldF9jZGF0YS5mZXRfdHhfaGVhZCA9IHN0YXJ0X3R4OwoKICAgRkVUX1RY
T1dOKHN0YXJ0X3R4KSA9IEZFVF9PV05CeU5JQzsKICAgQ1NSX1dSSVRFXzQo
c2MsIEZFVF9UWFBEUiwgMHhGRkZGRkZGRik7ICAgIC8qIHR4IHBvbGxpbmcg
ZGVtYW5kICovCgogICAvKgogICAgKiBTZXQgYSB0aW1lb3V0IGluIGNhc2Ug
dGhlIGNoaXAgZ29lcyBvdXQgdG8gbHVuY2guCiAgICAqLwogICBpZnAtPmlm
X3RpbWVyID0gNTsKCiAgIHJldHVybjsKfQoKCnN0YXRpYyB2b2lkIGZldF9p
bml0KHhzYykKdm9pZCAqeHNjOwp7CiAgIHN0cnVjdCBmZXRfc29mdGMgKnNj
ID0geHNjOwogICBzdHJ1Y3QgaWZuZXQgKmlmcCA9ICZzYy0+YXJwY29tLmFj
X2lmOwogICBpbnQgcywgaTsKICAgdV9pbnQxNl90IHBoeV9ibWNyID0gMDsK
CiAgIGlmIChzYy0+ZmV0X2F1dG9uZWcpCiAgICAgcmV0dXJuOwoKICAgcyA9
IHNwbGltcCgpOwoKICAgaWYgKHNjLT5mZXRfcGluZm8gIT0gTlVMTCkKICAg
ICBwaHlfYm1jciA9IGZldF9waHlfcmVhZHJlZyhzYywgUEhZX0JNQ1IpOwoK
ICAgLyoKICAgICogQ2FuY2VsIHBlbmRpbmcgSS9PIGFuZCBmcmVlIGFsbCBS
WC9UWCBidWZmZXJzLgogICAgKi8KICAgZmV0X3N0b3Aoc2MpOwogICBmZXRf
cmVzZXQoc2MpOwoKICAgLyoKICAgICogU2V0IGNhY2hlIGFsaWdubWVudCBh
bmQgYnVyc3QgbGVuZ3RoLgogICAgKi8KLyogODkvOS8xIG1vZGlmeSwKICAg
Q1NSX1dSSVRFXzQoc2MsIEZFVF9CQ1IsIEZFVF9SUEJMRTUxMik7CiAgIENT
Ul9XUklURV80KHNjLCBGRVRfVENSUkNSLCBGRVRfVEZUU0YpOwoqLwogICBD
U1JfV1JJVEVfNChzYywgRkVUX0JDUiwgRkVUX1BCTDgpOwogICBDU1JfV1JJ
VEVfNChzYywgRkVUX1RDUlJDUiwgRkVUX1RGVFNGfEZFVF9SQkxFTnxGRVRf
UlBCTEU1MTIpOwoKICAgZmV0X3NldGNmZyhzYywgcGh5X2JtY3IpOwoKICAg
LyogSW5pdCBjaXJjdWxhciBSWCBsaXN0LiAqLwogICBpZiAoZmV0X2xpc3Rf
cnhfaW5pdChzYykgPT0gRU5PQlVGUykKICAgewogICAgICBwcmludGYoImZl
dCVkOiBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IG5vIG1lbW9yeSBmb3Igcngg
YnVmZmVyc1xuIiwKICAgICAgICAgICAgICBzYy0+ZmV0X3VuaXQpOwogICAg
ICBmZXRfc3RvcChzYyk7CiAgICAgICh2b2lkKXNwbHgocyk7CiAgICAgIHJl
dHVybjsKICAgfQoKICAgLyogSW5pdCBUWCBkZXNjcmlwdG9ycy4gKi8KICAg
ZmV0X2xpc3RfdHhfaW5pdChzYyk7CgogICAvKiBJZiB3ZSB3YW50IHByb21p
c2N1b3VzIG1vZGUsIHNldCB0aGUgYWxsZnJhbWVzIGJpdC4gKi8KICAgaWYg
KGlmcC0+aWZfZmxhZ3MgJiBJRkZfUFJPTUlTQykKICAgICBGRVRfU0VUQklU
KHNjLCBGRVRfVENSUkNSLCBGRVRfUFJPTSk7CiAgIGVsc2UKICAgICBGRVRf
Q0xSQklUKHNjLCBGRVRfVENSUkNSLCBGRVRfUFJPTSk7CgogICAvKgogICAg
KiBTZXQgY2FwdHVyZSBicm9hZGNhc3QgYml0IHRvIGNhcHR1cmUgYnJvYWRj
YXN0IGZyYW1lcy4KICAgICovCiAgIGlmIChpZnAtPmlmX2ZsYWdzICYgSUZG
X0JST0FEQ0FTVCkKICAgICBGRVRfU0VUQklUKHNjLCBGRVRfVENSUkNSLCBG
RVRfQUIpOwogICBlbHNlCiAgICAgRkVUX0NMUkJJVChzYywgRkVUX1RDUlJD
UiwgRkVUX0FCKTsKCiAgIC8qCiAgICAqIFByb2dyYW0gdGhlIG11bHRpY2Fz
dCBmaWx0ZXIsIGlmIG5lY2Vzc2FyeS4KICAgICovCiAgIGZldF9zZXRtdWx0
aShzYyk7CgogICAvKgogICAgKiBMb2FkIHRoZSBhZGRyZXNzIG9mIHRoZSBS
WCBsaXN0LgogICAgKi8KICAgRkVUX0NMUkJJVChzYywgRkVUX1RDUlJDUiwg
RkVUX1JFKTsKICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9SWExCQSwgdnRvcGh5
cygmc2MtPmZldF9sZGF0YS0+ZmV0X3J4X2xpc3RbMF0pKTsKCiAgIC8qCiAg
ICAqIEVuYWJsZSBpbnRlcnJ1cHRzLgogICAgKi8KICAgQ1NSX1dSSVRFXzQo
c2MsIEZFVF9JTVIsIEZFVF9JTlRSUyk7CiAgIENTUl9XUklURV80KHNjLCBG
RVRfSVNSLCAweEZGRkZGRkZGKTsKCiAgIC8qIEVuYWJsZSByZWNlaXZlciBh
bmQgdHJhbnNtaXR0ZXIuICovCiAgIEZFVF9TRVRCSVQoc2MsIEZFVF9UQ1JS
Q1IsIEZFVF9SRSk7CgogICBGRVRfQ0xSQklUKHNjLCBGRVRfVENSUkNSLCBG
RVRfVEUpOwogICBDU1JfV1JJVEVfNChzYywgRkVUX1RYTEJBLCB2dG9waHlz
KCZzYy0+ZmV0X2xkYXRhLT5mZXRfdHhfbGlzdFswXSkpOwogICBGRVRfU0VU
QklUKHNjLCBGRVRfVENSUkNSLCBGRVRfVEUpOwoKICAgLyogUmVzdG9yZSBz
dGF0ZSBvZiBCTUNSICovCiAgIGlmIChzYy0+ZmV0X3BpbmZvICE9IE5VTEwp
CiAgICAgZmV0X3BoeV93cml0ZXJlZyhzYywgUEhZX0JNQ1IsIHBoeV9ibWNy
KTsKCiAgIGlmcC0+aWZfZmxhZ3MgfD0gSUZGX1JVTk5JTkc7CiAgIGlmcC0+
aWZfZmxhZ3MgJj0gfklGRl9PQUNUSVZFOwoKICAgKHZvaWQpc3BseChzKTsK
CiAgIHJldHVybjsKfQoKCi8qCiAqIFNldCBtZWRpYSBvcHRpb25zLgogKi8K
c3RhdGljIGludCBmZXRfaWZtZWRpYV91cGQoaWZwKQpzdHJ1Y3QgaWZuZXQg
KmlmcDsKewogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKICAgc3RydWN0IGlm
bWVkaWEgKmlmbTsKCiAgIHNjID0gaWZwLT5pZl9zb2Z0YzsKICAgaWZtID0g
JnNjLT5pZm1lZGlhOwoKICAgaWYgKElGTV9UWVBFKGlmbS0+aWZtX21lZGlh
KSAhPSBJRk1fRVRIRVIpCiAgICAgcmV0dXJuKEVJTlZBTCk7CgogICBpZiAo
SUZNX1NVQlRZUEUoaWZtLT5pZm1fbWVkaWEpID09IElGTV9BVVRPKQogICAg
IGZldF9hdXRvbmVnX21paShzYywgRkVUX0ZMQUdfU0NIRURERUxBWSwgMSk7
CiAgIGVsc2UKICAgICBmZXRfc2V0bW9kZV9taWkoc2MsIGlmbS0+aWZtX21l
ZGlhKTsKCiAgIHJldHVybigwKTsKfQoKCi8qCiAqIFJlcG9ydCBjdXJyZW50
IG1lZGlhIHN0YXR1cy4KICovCnN0YXRpYyB2b2lkIGZldF9pZm1lZGlhX3N0
cyhpZnAsIGlmbXIpCnN0cnVjdCBpZm5ldCAqaWZwOwpzdHJ1Y3QgaWZtZWRp
YXJlcSAqaWZtcjsKewogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYzsKICAgdV9p
bnQxNl90IGFkdmVydCA9IDAsIGFiaWxpdHkgPSAwLCBhYmlsaXR5MiA9IDA7
CgogICBzYyA9IGlmcC0+aWZfc29mdGM7CgogICBpZm1yLT5pZm1fYWN0aXZl
ID0gSUZNX0VUSEVSOwoKICAgaWYgKCEoZmV0X3BoeV9yZWFkcmVnKHNjLCBQ
SFlfQk1DUikgJiBQSFlfQk1DUl9BVVRPTkVHRU5CTCkpCiAgIHsKLyogdGhp
cyB2ZXJzaW9uIGRpZCBub3Qgc3VwcG9ydCAxMDAwTSwKICAgICAgaWYgKGZl
dF9waHlfcmVhZHJlZyhzYywgUEhZX0JNQ1IpICYgUEhZX0JNQ1JfMTAwMCkK
ICAgICAgICBpZm1yLT5pZm1fYWN0aXZlID0gSUZNX0VUSEVSfElGTV8xMDAw
VFg7CiovCiAgICAgIGlmIChmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9CTUNS
KSAmIFBIWV9CTUNSX1NQRUVEU0VMKQogICAgICAgIGlmbXItPmlmbV9hY3Rp
dmUgPSBJRk1fRVRIRVJ8SUZNXzEwMF9UWDsKICAgICAgZWxzZQogICAgICAg
IGlmbXItPmlmbV9hY3RpdmUgPSBJRk1fRVRIRVJ8SUZNXzEwX1Q7CiAgICAg
IGlmIChmZXRfcGh5X3JlYWRyZWcoc2MsIFBIWV9CTUNSKSAmIFBIWV9CTUNS
X0RVUExFWCkKICAgICAgICBpZm1yLT5pZm1fYWN0aXZlIHw9IElGTV9GRFg7
CiAgICAgIGVsc2UKICAgICAgICBpZm1yLT5pZm1fYWN0aXZlIHw9IElGTV9I
RFg7CiAgICAgIHJldHVybjsKICAgfQoKICAgYWJpbGl0eSA9IGZldF9waHlf
cmVhZHJlZyhzYywgUEhZX0xQQVIpOwogICBhZHZlcnQgPSBmZXRfcGh5X3Jl
YWRyZWcoc2MsIFBIWV9BTkFSKTsKCi8qIHRoaXMgdmVyc2lvbiBkaWQgbm90
IHN1cHBvcnQgMTAwME0sCiAgIGlmIChzYy0+ZmV0X3BpbmZvLT5mZXRfdmlk
ID0gTWFydmVsbFBIWUlEMCkKICAgewogICAgICBhYmlsaXR5MiA9IGZldF9w
aHlfcmVhZHJlZyhzYywgUEhZXzEwMDBTUik7CiAgICAgIGlmIChhYmlsaXR5
MiAmIFBIWV8xMDAwU1JfMTAwMEJUWEZVTEwpCiAgICAgIHsKICAgICAgICAg
YWR2ZXJ0ID0gMDsKICAgICAgICAgYWJpbGl0eSA9IDA7CiAgICAgICAgIGlm
bXItPmlmbV9hY3RpdmUgPSBJRk1fRVRIRVJ8SUZNXzEwMDBfVFh8SUZNX0ZE
WDsKCiAgICAgIH0KICAgICAgZWxzZSBpZiAoYWJpbGl0eSAmIFBIWV8xMDAw
U1JfMTAwMEJUWEhBTEYpCiAgICAgIHsKICAgICAgICAgYWR2ZXJ0ID0gMDsK
ICAgICAgICAgYWJpbGl0eSA9IDA7CiAgICAgICAgIGlmbXItPmlmbV9hY3Rp
dmUgPSBJRk1fRVRIRVJ8SUZNXzEwMDBfVFh8SUZNX0hEWDsKICAgICAgfQog
ICB9CiovCgogICBpZiAoYWR2ZXJ0ICYgUEhZX0FOQVJfMTAwQlQ0ICYmIGFi
aWxpdHkgJiBQSFlfQU5BUl8xMDBCVDQpCiAgICAgaWZtci0+aWZtX2FjdGl2
ZSA9IElGTV9FVEhFUnxJRk1fMTAwX1Q0OwogICBlbHNlIGlmIChhZHZlcnQg
JiBQSFlfQU5BUl8xMDBCVFhGVUxMICYmIGFiaWxpdHkgJiBQSFlfQU5BUl8x
MDBCVFhGVUxMKQogICAgIGlmbXItPmlmbV9hY3RpdmUgPSBJRk1fRVRIRVJ8
SUZNXzEwMF9UWHxJRk1fRkRYOwogICBlbHNlIGlmIChhZHZlcnQgJiBQSFlf
QU5BUl8xMDBCVFhIQUxGICYmIGFiaWxpdHkgJiBQSFlfQU5BUl8xMDBCVFhI
QUxGKQogICAgIGlmbXItPmlmbV9hY3RpdmUgPSBJRk1fRVRIRVJ8SUZNXzEw
MF9UWHxJRk1fSERYOwogICBlbHNlIGlmIChhZHZlcnQgJiBQSFlfQU5BUl8x
MEJURlVMTCAmJiBhYmlsaXR5ICYgUEhZX0FOQVJfMTBCVEZVTEwpCiAgICAg
aWZtci0+aWZtX2FjdGl2ZSA9IElGTV9FVEhFUnxJRk1fMTBfVHxJRk1fRkRY
OwogICBlbHNlIGlmIChhZHZlcnQgJiBQSFlfQU5BUl8xMEJUSEFMRiAmJiBh
YmlsaXR5ICYgUEhZX0FOQVJfMTBCVEhBTEYpCiAgICAgaWZtci0+aWZtX2Fj
dGl2ZSA9IElGTV9FVEhFUnxJRk1fMTBfVHxJRk1fSERYOwoKICAgcmV0dXJu
Owp9CgoKc3RhdGljIGludCBmZXRfaW9jdGwoaWZwLCBjb21tYW5kLCBkYXRh
KQpzdHJ1Y3QgaWZuZXQgKmlmcDsKdV9sb25nIGNvbW1hbmQ7CmNhZGRyX3Qg
ZGF0YTsKewogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYyA9IGlmcC0+aWZfc29m
dGM7CiAgIHN0cnVjdCBpZnJlcSAqaWZyID0gKHN0cnVjdCBpZnJlcSAqKWRh
dGE7CiAgIGludCBzLCBlcnJvciA9IDA7CgogICBzID0gc3BsaW1wKCk7Cgog
ICBzd2l0Y2goY29tbWFuZCkKICAgewogICAgICBjYXNlIFNJT0NTSUZBRERS
OgogICAgICBjYXNlIFNJT0NHSUZBRERSOgogICAgICBjYXNlIFNJT0NTSUZN
VFU6CiAgICAgICAgZXJyb3IgPSBldGhlcl9pb2N0bChpZnAsIGNvbW1hbmQs
IGRhdGEpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIFNJT0NTSUZGTEFH
UzoKICAgICAgICBpZiAoaWZwLT5pZl9mbGFncyAmIElGRl9VUCkKICAgICAg
ICAgIGZldF9pbml0KHNjKTsKICAgICAgICBlbHNlIGlmIChpZnAtPmlmX2Zs
YWdzICYgSUZGX1JVTk5JTkcpCiAgICAgICAgICBmZXRfc3RvcChzYyk7CiAg
ICAgICAgZXJyb3IgPSAwOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIFNJ
T0NBRERNVUxUSToKICAgICAgY2FzZSBTSU9DREVMTVVMVEk6CiAgICAgICAg
ZmV0X3NldG11bHRpKHNjKTsKICAgICAgICBlcnJvciA9IDA7CiAgICAgICAg
YnJlYWs7CiAgICAgIGNhc2UgU0lPQ0dJRk1FRElBOgogICAgICBjYXNlIFNJ
T0NTSUZNRURJQToKICAgICAgICBlcnJvciA9IGlmbWVkaWFfaW9jdGwoaWZw
LCBpZnIsICZzYy0+aWZtZWRpYSwgY29tbWFuZCk7CiAgICAgICAgYnJlYWs7
CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgZXJyb3IgPSBFSU5WQUw7CiAgICAg
ICAgYnJlYWs7CiAgIH0KCiAgICh2b2lkKXNwbHgocyk7CgogICByZXR1cm4o
ZXJyb3IpOwp9CgoKc3RhdGljIHZvaWQgZmV0X3dhdGNoZG9nKGlmcCkKc3Ry
dWN0IGlmbmV0ICppZnA7CnsKICAgc3RydWN0IGZldF9zb2Z0YyAqc2M7Cgog
ICBzYyA9IGlmcC0+aWZfc29mdGM7CgogICBpZiAoc2MtPmZldF9hdXRvbmVn
KQogICB7CiAgICAgIGZldF9hdXRvbmVnX21paShzYywgRkVUX0ZMQUdfREVM
QVlUSU1FTywgMSk7CiAgICAgIHJldHVybjsKICAgfQoKICAgaWZwLT5pZl9v
ZXJyb3JzKys7CiAgIHByaW50ZigiZmV0JWQ6IHdhdGNoZG9nIHRpbWVvdXRc
biIsIHNjLT5mZXRfdW5pdCk7CgogICBpZiAoIShmZXRfcGh5X3JlYWRyZWco
c2MsIFBIWV9CTVNSKSAmIFBIWV9CTVNSX0xJTktTVEFUKSkKICAgICBwcmlu
dGYoImZldCVkOiBubyBjYXJyaWVyIC0gdHJhbnNjZWl2ZXIgY2FibGUgcHJv
YmxlbT9cbiIsIHNjLT5mZXRfdW5pdCk7CgogICBmZXRfc3RvcChzYyk7CiAg
IGZldF9yZXNldChzYyk7CiAgIGZldF9pbml0KHNjKTsKCiAgIGlmIChpZnAt
PmlmX3NuZC5pZnFfaGVhZCAhPSBOVUxMKQogICAgIGZldF9zdGFydChpZnAp
OwoKICAgcmV0dXJuOwp9CgoKLyoKICogU3RvcCB0aGUgYWRhcHRlciBhbmQg
ZnJlZSBhbnkgbWJ1ZnMgYWxsb2NhdGVkIHRvIHRoZQogKiBSWCBhbmQgVFgg
bGlzdHMuCiAqLwpzdGF0aWMgdm9pZCBmZXRfc3RvcChzYykKc3RydWN0IGZl
dF9zb2Z0YyAqc2M7CnsKICAgcmVnaXN0ZXIgaW50IGk7CiAgIHN0cnVjdCBp
Zm5ldCAqaWZwOwoKICAgaWZwID0gJnNjLT5hcnBjb20uYWNfaWY7CiAgIGlm
cC0+aWZfdGltZXIgPSAwOwoKICAgRkVUX0NMUkJJVChzYywgRkVUX1RDUlJD
UiwgKEZFVF9SRXxGRVRfVEUpKTsKICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9J
TVIsIDB4MDAwMDAwMDApOwogICBDU1JfV1JJVEVfNChzYywgRkVUX1RYTEJB
LCAweDAwMDAwMDAwKTsKICAgQ1NSX1dSSVRFXzQoc2MsIEZFVF9SWExCQSwg
MHgwMDAwMDAwMCk7CgogICAvKgogICAgKiBGcmVlIGRhdGEgaW4gdGhlIFJY
IGxpc3RzLgogICAgKi8KICAgZm9yIChpID0gMDsgaSA8IEZFVF9SWF9MSVNU
X0NOVDsgaSsrKQogICB7CiAgICAgIGlmIChzYy0+ZmV0X2NkYXRhLmZldF9y
eF9jaGFpbltpXS5mZXRfbWJ1ZiAhPSBOVUxMKQogICAgICB7CiAgICAgICAg
IG1fZnJlZW0oc2MtPmZldF9jZGF0YS5mZXRfcnhfY2hhaW5baV0uZmV0X21i
dWYpOwogICAgICAgICBzYy0+ZmV0X2NkYXRhLmZldF9yeF9jaGFpbltpXS5m
ZXRfbWJ1ZiA9IE5VTEw7CiAgICAgIH0KICAgfQogICBiemVybygoY2hhciAq
KSZzYy0+ZmV0X2xkYXRhLT5mZXRfcnhfbGlzdCwgc2l6ZW9mKHNjLT5mZXRf
bGRhdGEtPmZldF9yeF9saXN0KSk7CgogICAvKgogICAgKiBGcmVlIHRoZSBU
WCBsaXN0IGJ1ZmZlcnMuCiAgICAqLwogICBmb3IgKGkgPSAwOyBpIDwgRkVU
X1RYX0xJU1RfQ05UOyBpKyspCiAgIHsKICAgICAgaWYgKHNjLT5mZXRfY2Rh
dGEuZmV0X3R4X2NoYWluW2ldLmZldF9tYnVmICE9IE5VTEwpCiAgICAgIHsK
ICAgICAgICAgbV9mcmVlbShzYy0+ZmV0X2NkYXRhLmZldF90eF9jaGFpbltp
XS5mZXRfbWJ1Zik7CiAgICAgICAgIHNjLT5mZXRfY2RhdGEuZmV0X3R4X2No
YWluW2ldLmZldF9tYnVmID0gTlVMTDsKICAgICAgfQogICB9CiAgIGJ6ZXJv
KChjaGFyICopJnNjLT5mZXRfbGRhdGEtPmZldF90eF9saXN0LCBzaXplb2Yo
c2MtPmZldF9sZGF0YS0+ZmV0X3R4X2xpc3QpKTsKCiAgIGlmcC0+aWZfZmxh
Z3MgJj0gfihJRkZfUlVOTklORyB8IElGRl9PQUNUSVZFKTsKCiAgIHJldHVy
bjsKfQoKCi8qCiAqIFN0b3AgYWxsIGNoaXAgSS9PIHNvIHRoYXQgdGhlIGtl
cm5lbCdzIHByb2JlIHJvdXRpbmVzIGRvbid0CiAqIGdldCBjb25mdXNlZCBi
eSBlcnJhbnQgRE1BcyB3aGVuIHJlYm9vdGluZy4KICovCnN0YXRpYyB2b2lk
IGZldF9zaHV0ZG93bihob3d0bywgYXJnKQppbnQgaG93dG87CnZvaWQgKmFy
ZzsKewogICBzdHJ1Y3QgZmV0X3NvZnRjICpzYyA9IChzdHJ1Y3QgZmV0X3Nv
ZnRjICopYXJnOwoKICAgZmV0X3N0b3Aoc2MpOwoKICAgcmV0dXJuOwp9CgoK
c3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlIGZldF9kZXZpY2UgPSB7CiAgICAg
ICAgImZldCIsCiAgICAgICAgZmV0X3Byb2JlLAogICAgICAgIGZldF9hdHRh
Y2gsCiAgICAgICAgJmZldF9jb3VudCwKICAgICAgICBOVUxMCn07CkRBVEFf
U0VUKHBjaWRldmljZV9zZXQsIGZldF9kZXZpY2UpOwo=


------=_NextPart_000_6671_3eb_241d
Content-Type: application/octet-stream; name="IFFETreg.H"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="IFFETreg.H"

LyoKICogcmVnaXN0ZXIgZGVmaW5pdGlvbnMuCiAqLwojZGVmaW5lIEZFVF9Q
QVIwICAgICAgICAgMHgwICAgICAvKiBwaHlzaWNhbCBhZGRyZXNzIDAtMyAq
LwojZGVmaW5lIEZFVF9QQVIxICAgICAgICAgMHgwNCAgICAvKiBwaHlzaWNh
bCBhZGRyZXNzIDQtNSAqLwojZGVmaW5lIEZFVF9NQVIwICAgICAgICAgMHgw
OCAgICAvKiBtdWx0aWNhc3QgYWRkcmVzcyAwLTMgKi8KI2RlZmluZSBGRVRf
TUFSMSAgICAgICAgIDB4MEMgICAgLyogbXVsdGljYXN0IGFkZHJlc3MgNC03
ICovCiNkZWZpbmUgRkVUX0ZBUjAgICAgICAgICAweDEwICAgIC8qIGZsb3ct
Y29udHJvbCBhZGRyZXNzIDAtMyAqLwojZGVmaW5lIEZFVF9GQVIxICAgICAg
ICAgMHgxNCAgICAvKiBmbG93LWNvbnRyb2wgYWRkcmVzcyA0LTUgKi8KI2Rl
ZmluZSBGRVRfVENSUkNSICAgICAgIDB4MTggICAgLyogcmVjZWl2ZSAmIHRy
YW5zbWl0IGNvbmZpZ3VyYXRpb24gKi8KI2RlZmluZSBGRVRfQkNSICAgICAg
ICAgIDB4MUMgICAgLyogYnVzIGNvbW1hbmQgKi8KI2RlZmluZSBGRVRfVFhQ
RFIgICAgICAgIDB4MjAgICAgLyogdHJhbnNtaXQgcG9sbGluZyBkZW1hbmQg
Ki8KI2RlZmluZSBGRVRfUlhQRFIgICAgICAgIDB4MjQgICAgLyogcmVjZWl2
ZSBwb2xsaW5nIGRlbWFuZCAqLwojZGVmaW5lIEZFVF9SWENXUCAgICAgICAg
MHgyOCAgICAvKiByZWNlaXZlIGN1cnJlbnQgd29yZCBwb2ludGVyICovCiNk
ZWZpbmUgRkVUX1RYTEJBICAgICAgICAweDJDICAgIC8qIHRyYW5zbWl0IGxp
c3QgYmFzZSBhZGRyZXNzICovCiNkZWZpbmUgRkVUX1JYTEJBICAgICAgICAw
eDMwICAgIC8qIHJlY2VpdmUgbGlzdCBiYXNlIGFkZHJlc3MgKi8KI2RlZmlu
ZSBGRVRfSVNSICAgICAgICAgIDB4MzQgICAgLyogaW50ZXJydXB0IHN0YXR1
cyAqLwojZGVmaW5lIEZFVF9JTVIgICAgICAgICAgMHgzOCAgICAvKiBpbnRl
cnJ1cHQgbWFzayAqLwojZGVmaW5lIEZFVF9GVEggICAgICAgICAgMHgzQyAg
ICAvKiBmbG93IGNvbnRyb2wgaGlnaC9sb3cgdGhyZXNob2xkICovCiNkZWZp
bmUgRkVUX01BTkFHRU1FTlQgICAweDQwICAgIC8qIGJvb3Ryb20vZWVwcm9t
IGFuZCBtaWkgbWFuYWdlbWVudCAqLwojZGVmaW5lIEZFVF9UQUxMWSAgICAg
ICAgMHg0NCAgICAvKiB0YWxseSBjb3VudGVycyBmb3IgY3JjIGFuZCBtcGEg
Ki8KI2RlZmluZSBGRVRfVFNSICAgICAgICAgIDB4NDggICAgLyogdGFsbHkg
Y291bnRlciBmb3IgdHJhbnNtaXQgc3RhdHVzICovCiNkZWZpbmUgRkVUX1BI
WUJBU0UJMHg0YwoKLyoKICogUmVjZWl2ZSBDb25maWd1cmF0aW9uIFJlZ2lz
dGVyCiAqLwojZGVmaW5lIEZFVF9SWFJVTiAgICAgICAgMHgwMDAwODAwMCAg
ICAgIC8qIHJlY2VpdmUgcnVubmluZyBzdGF0dXMgKi8KI2RlZmluZSBGRVRf
RUlFTiAgICAgICAgIDB4MDAwMDQwMDAgICAgICAvKiBlYXJseSBpbnRlcnJ1
cHQgZW5hYmxlICovCiNkZWZpbmUgRkVUX1JGQ0VOICAgICAgICAweDAwMDAy
MDAwICAgICAgLyogcmVjZWl2ZSBmbG93IGNvbnRyb2wgcGFja2V0IGVuYWJs
ZSAqLwojZGVmaW5lIEZFVF9OREZBICAgICAgICAgMHgwMDAwMTAwMCAgICAg
IC8qIG5vdCBkZWZpbmVkIGZsb3cgY29udHJvbCBhZGRyZXNzICovCiNkZWZp
bmUgRkVUX1JCTEVOICAgICAgICAweDAwMDAwODAwICAgICAgLyogcmVjZWl2
ZSBidXJzdCBsZW5ndGggZW5hYmxlICovCiNkZWZpbmUgRkVUX1JQQkxFMSAg
ICAgICAweDAwMDAwMDAwICAgICAgLyogMSB3b3JkICovCiNkZWZpbmUgRkVU
X1JQQkxFNCAgICAgICAweDAwMDAwMTAwICAgICAgLyogNCB3b3JkcyAqLwoj
ZGVmaW5lIEZFVF9SUEJMRTggICAgICAgMHgwMDAwMDIwMCAgICAgIC8qIDgg
d29yZHMgKi8KI2RlZmluZSBGRVRfUlBCTEUxNiAgICAgIDB4MDAwMDAzMDAg
ICAgICAvKiAxNiB3b3JkcyAqLwojZGVmaW5lIEZFVF9SUEJMRTMyICAgICAg
MHgwMDAwMDQwMCAgICAgIC8qIDMyIHdvcmRzICovCiNkZWZpbmUgRkVUX1JQ
QkxFNjQgICAgICAweDAwMDAwNTAwICAgICAgLyogNjQgd29yZHMgKi8KI2Rl
ZmluZSBGRVRfUlBCTEUxMjggICAgIDB4MDAwMDA2MDAgICAgICAvKiAxMjgg
d29yZHMgKi8KI2RlZmluZSBGRVRfUlBCTEU1MTIgICAgIDB4MDAwMDA3MDAg
ICAgICAvKiA1MTIgd29yZHMgKi8KI2RlZmluZSBGRVRfUFJPTSAgICAgICAg
IDB4MDAwMDAwMDgwICAgICAvKiBwcm9taXNjdW91cyBtb2RlICovCiNkZWZp
bmUgRkVUX0FCICAgICAgICAgICAweDAwMDAwMDA0MCAgICAgLyogYWNjZXB0
IGJyb2FkY2FzdCAqLwojZGVmaW5lIEZFVF9BTSAgICAgICAgICAgMHgwMDAw
MDAwMjAgICAgIC8qIGFjY2VwdCBtdXRsaWNhc3QgKi8KI2RlZmluZSBGRVRf
QVJQICAgICAgICAgIDB4MDAwMDAwMDA4ICAgICAvKiByZWNlaXZlIHJ1bnQg
cGt0ICovCiNkZWZpbmUgRkVUX0FMUCAgICAgICAgICAweDAwMDAwMDAwNCAg
ICAgLyogcmVjZWl2ZSBsb25nIHBrdCAqLwojZGVmaW5lIEZFVF9TRVAgICAg
ICAgICAgMHgwMDAwMDAwMDIgICAgIC8qIHJlY2VpdmUgZXJyb3IgcGt0ICov
CiNkZWZpbmUgRkVUX1JFICAgICAgICAgICAweDAwMDAwMDAwMSAgICAgLyog
cmVjZWl2ZSBlbmFibGUgKi8KCi8qCiAqIFRyYW5zbWl0IENvbmZpZ3VyYXRp
b24gUmVnaXN0ZXIKICovCiNkZWZpbmUgRkVUX1RYUlVOICAgICAgICAweDA0
MDAwMDAwICAgICAgLyogdHJhbnNtaXQgcnVubmluZyBzdGF0dXMgKi8KI2Rl
ZmluZSBGRVRfRW5oYW5jZWQgICAgIDB4MDIwMDAwMDAgICAgICAvKiB0cmFu
c21pdCBlbmhhbmNlZCBtb2RlICovCiNkZWZpbmUgRkVUX1RGQ0VOICAgICAg
ICAweDAxMDAwMDAwICAgICAgLyogdHggZmxvdyBjb250cm9sIHBhY2tldCBl
bmFibGUgKi8KI2RlZmluZSBGRVRfVEZUNjQgICAgICAgIDB4MDAwMDAwMDAg
ICAgICAvKiA2NCBieXRlcyAqLwojZGVmaW5lIEZFVF9URlQzMiAgICAgICAg
MHgwMDIwMDAwMCAgICAgIC8qIDMyIGJ5dGVzICovCiNkZWZpbmUgRkVUX1RG
VDEyOCAgICAgICAweDAwNDAwMDAwICAgICAgLyogMTI4IGJ5dGVzICovCiNk
ZWZpbmUgRkVUX1RGVDI1NiAgICAgICAweDAwNjAwMDAwICAgICAgLyogMjU2
IGJ5dGVzICovCiNkZWZpbmUgRkVUX1RGVDUxMiAgICAgICAweDAwODAwMDAw
ICAgICAgLyogNTEyIGJ5dGVzICovCiNkZWZpbmUgRkVUX1RGVDc2OCAgICAg
ICAweDAwQTAwMDAwICAgICAgLyogNzY4IGJ5dGVzICovCiNkZWZpbmUgRkVU
X1RGVDEwMjQgICAgICAweDAwQzAwMDAwICAgICAgLyogMTAyNCBieXRlcyAq
LwojZGVmaW5lIEZFVF9URlRTRiAgICAgICAgMHgwMEUwMDAwMCAgICAgIC8q
IHN0b3JlIGFuZCBmb3J3YXJkICovCiNkZWZpbmUgRkVUX0ZEICAgICAgICAg
ICAweDAwMTAwMDAwICAgICAgLyogZnVsbCBkdXBsZXggbW9kZSAqLwojZGVm
aW5lIEZFVF9QUzEwICAgICAgICAgMHgwMDA4MDAwMCAgICAgIC8qIHBvcnQg
c3BlZWQgaXMgMTBNICovCiNkZWZpbmUgRkVUX1RFICAgICAgICAgICAweDAw
MDQwMDAwICAgICAgLyogdHJhbnNtaXQgZW5hYmxlICovCiNkZWZpbmUgRkVU
X1BTMTAwMCAgICAgICAweDAwMDEwMDAwICAgICAgLyogcG9ydCBzcGVlZCBp
cyAxMDAwTSAqLwovKgogKiBCdXMgQ29tbWFuZCBSZWdpc3RlcgogKi8KI2Rl
ZmluZSBGRVRfUkxFICAgICAgICAgIDB4MDAwMDAxMDAgICAgICAvKiByZWFk
IGxpbmUgY29tbWFuZCBlbmFibGUgKi8KI2RlZmluZSBGRVRfUk1FICAgICAg
ICAgIDB4MDAwMDAwODAgICAgICAvKiByZWFkIG11bHRpcGxlIGNvbW1hbmQg
ZW5hYmxlICovCiNkZWZpbmUgRkVUX1dJRSAgICAgICAgICAweDAwMDAwMDQw
ICAgICAgLyogd3JpdGUgYW5kIGludmFsaWRhdGUgY21kIGVuYWJsZSAqLwoj
ZGVmaW5lIEZFVF9QQkwxICAgICAgICAgMHgwMDAwMDAwMCAgICAgIC8qIDEg
ZHdvcmQgKi8KI2RlZmluZSBGRVRfUEJMNCAgICAgICAgIDB4MDAwMDAwMDgg
ICAgICAvKiA0IGR3b3JkcyAqLwojZGVmaW5lIEZFVF9QQkw4ICAgICAgICAg
MHgwMDAwMDAxMCAgICAgIC8qIDggZHdvcmRzICovCiNkZWZpbmUgRkVUX1BC
TDE2ICAgICAgICAweDAwMDAwMDE4ICAgICAgLyogMTYgZHdvcmRzICovCiNk
ZWZpbmUgRkVUX1BCTDMyICAgICAgICAweDAwMDAwMDIwICAgICAgLyogMzIg
ZHdvcmRzICovCiNkZWZpbmUgRkVUX1BCTDY0ICAgICAgICAweDAwMDAwMDI4
ICAgICAgLyogNjQgZHdvcmRzICovCiNkZWZpbmUgRkVUX1BCTDEyOCAgICAg
ICAweDAwMDAwMDMwICAgICAgLyogMTI4IGR3b3JkcyAqLwojZGVmaW5lIEZF
VF9QQkw1MTIgICAgICAgMHgwMDAwMDAzOCAgICAgIC8qIDUxMiBkd29yZHMg
Ki8KI2RlZmluZSBGRVRfQUJSICAgICAgICAgIDB4MDAwMDAwMDQgICAgICAv
KiBhcmJpdHJhdGlvbiBydWxlICovCiNkZWZpbmUgRkVUX0JMUyAgICAgICAg
ICAweDAwMDAwMDAyICAgICAgLyogYmlnL2xpdHRsZSBlbmRpYW4gc2VsZWN0
ICovCiNkZWZpbmUgRkVUX1NXUiAgICAgICAgICAweDAwMDAwMDAxICAgICAg
Lyogc29mdHdhcmUgcmVzZXQgKi8KCi8qCiAqIFRyYW5zbWl0IFBvbGwgRGVt
YW5kIFJlZ2lzdGVyCiAqLwojZGVmaW5lIEZFVF9UeFBvbGxEZW1hbmQgMHgx
CgovKgogKiBSZWNlaXZlIFBvbGwgRGVtYW5kIFJlZ2lzdGVyCiAqLwojZGVm
aW5lIEZFVF9SeFBvbGxEZW1hbmQgMHgwMQoKLyoKICogSW50ZXJydXB0IFN0
YXR1cyBSZWdpc3RlcgogKi8KI2RlZmluZSBGRVRfUkZDT04gICAgICAgIDB4
MDAwMjAwMDAgICAgICAvKiByZWNlaXZlIGZsb3cgY29udHJvbCB4b24gcGFj
a2V0ICovCiNkZWZpbmUgRkVUX1JGQ09GRiAgICAgICAweDAwMDEwMDAwICAg
ICAgLyogcmVjZWl2ZSBmbG93IGNvbnRyb2wgeG9mZiBwYWNrZXQgKi8KI2Rl
ZmluZSBGRVRfTFNDU3RhdHVzICAgIDB4MDAwMDgwMDAgICAgICAvKiBsaW5r
IHN0YXR1cyBjaGFuZ2UgKi8KI2RlZmluZSBGRVRfQU5DU3RhdHVzICAgIDB4
MDAwMDQwMDAgICAgICAvKiBhdXRvbmVnb3RpYXRpb24gY29tcGxldGVkICov
CiNkZWZpbmUgRkVUX0ZCRSAgICAgICAgICAweDAwMDAyMDAwICAgICAgLyog
ZmF0YWwgYnVzIGVycm9yICovCiNkZWZpbmUgRkVUX0ZCRU1hc2sgICAgICAw
eDAwMDAxODAwCiNkZWZpbmUgRkVUX1Bhcml0eUVyciAgICAweDAwMDAwMDAw
ICAgICAgLyogcGFyaXR5IGVycm9yICovCiNkZWZpbmUgRkVUX01hc3RlckVy
ciAgICAweDAwMDAwODAwICAgICAgLyogbWFzdGVyIGVycm9yICovCiNkZWZp
bmUgRkVUX1RhcmdldEVyciAgICAweDAwMDAxMDAwICAgICAgLyogdGFyZ2V0
IGFib3J0ICovCiNkZWZpbmUgRkVUX1RVTkYgICAgICAgICAweDAwMDAwNDAw
ICAgICAgLyogdHJhbnNtaXQgdW5kZXJmbG93ICovCiNkZWZpbmUgRkVUX1JP
VkYgICAgICAgICAweDAwMDAwMjAwICAgICAgLyogcmVjZWl2ZSBvdmVyZmxv
dyAqLwojZGVmaW5lIEZFVF9FVEkgICAgICAgICAgMHgwMDAwMDEwMCAgICAg
IC8qIHRyYW5zbWl0IGVhcmx5IGludCAqLwojZGVmaW5lIEZFVF9FUkkgICAg
ICAgICAgMHgwMDAwMDA4MCAgICAgIC8qIHJlY2VpdmUgZWFybHkgaW50ICov
CiNkZWZpbmUgRkVUX0NOVE9WRiAgICAgICAweDAwMDAwMDQwICAgICAgLyog
Y291bnRlciBvdmVyZmxvdyAqLwojZGVmaW5lIEZFVF9SQlUgICAgICAgICAg
MHgwMDAwMDAyMCAgICAgIC8qIHJlY2VpdmUgYnVmZmVyIHVuYXZhaWxhYmxl
ICovCiNkZWZpbmUgRkVUX1RCVSAgICAgICAgICAweDAwMDAwMDEwICAgICAg
LyogdHJhbnNtaXQgYnVmZmVyIHVuYXZpbGFibGUgKi8KI2RlZmluZSBGRVRf
VEkgICAgICAgICAgIDB4MDAwMDAwMDggICAgICAvKiB0cmFuc21pdCBpbnRl
cnJ1cHQgKi8KI2RlZmluZSBGRVRfUkkgICAgICAgICAgIDB4MDAwMDAwMDQg
ICAgICAvKiByZWNlaXZlIGludGVycnVwdCAqLwojZGVmaW5lIEZFVF9SeEVy
ciAgICAgICAgMHgwMDAwMDAwMiAgICAgIC8qIHJlY2VpdmUgZXJyb3IgKi8K
Ci8qCiAqIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyCiAqLwojZGVmaW5lIEZF
VF9NUkZDT04gICAgICAgMHgwMDAyMDAwMCAgICAgIC8qIHJlY2VpdmUgZmxv
dyBjb250cm9sIHhvbiBwYWNrZXQgKi8KI2RlZmluZSBGRVRfTVJGQ09GRiAg
ICAgIDB4MDAwMTAwMDAgICAgICAvKiByZWNlaXZlIGZsb3cgY29udHJvbCB4
b2ZmIHBhY2tldCAqLwojZGVmaW5lIEZFVF9NTFNDU3RhdHVzICAgMHgwMDAw
ODAwMCAgICAgIC8qIGxpbmsgc3RhdHVzIGNoYW5nZSAqLwojZGVmaW5lIEZF
VF9NQU5DU3RhdHVzICAgMHgwMDAwNDAwMCAgICAgIC8qIGF1dG9uZWdvdGlh
dGlvbiBjb21wbGV0ZWQgKi8KI2RlZmluZSBGRVRfTUZCRSAgICAgICAgIDB4
MDAwMDIwMDAgICAgICAvKiBmYXRhbCBidXMgZXJyb3IgKi8KI2RlZmluZSBG
RVRfTUZCRU1hc2sgICAgIDB4MDAwMDE4MDAKI2RlZmluZSBGRVRfTVRVTkYg
ICAgICAgIDB4MDAwMDA0MDAgICAgICAvKiB0cmFuc21pdCB1bmRlcmZsb3cg
Ki8KI2RlZmluZSBGRVRfTVJPVkYgICAgICAgIDB4MDAwMDAyMDAgICAgICAv
KiByZWNlaXZlIG92ZXJmbG93ICovCiNkZWZpbmUgRkVUX01FVEkgICAgICAg
ICAweDAwMDAwMTAwICAgICAgLyogdHJhbnNtaXQgZWFybHkgaW50ICovCiNk
ZWZpbmUgRkVUX01FUkkgICAgICAgICAweDAwMDAwMDgwICAgICAgLyogcmVj
ZWl2ZSBlYXJseSBpbnQgKi8KI2RlZmluZSBGRVRfTUNOVE9WRiAgICAgIDB4
MDAwMDAwNDAgICAgICAvKiBjb3VudGVyIG92ZXJmbG93ICovCiNkZWZpbmUg
RkVUX01SQlUgICAgICAgICAweDAwMDAwMDIwICAgICAgLyogcmVjZWl2ZSBi
dWZmZXIgdW5hdmFpbGFibGUgKi8KI2RlZmluZSBGRVRfTVRCVSAgICAgICAg
IDB4MDAwMDAwMTAgICAgICAvKiB0cmFuc21pdCBidWZmZXIgdW5hdmlsYWJs
ZSAqLwojZGVmaW5lIEZFVF9NVEkgICAgICAgICAgMHgwMDAwMDAwOCAgICAg
IC8qIHRyYW5zbWl0IGludGVycnVwdCAqLwojZGVmaW5lIEZFVF9NUkkgICAg
ICAgICAgMHgwMDAwMDAwNCAgICAgIC8qIHJlY2VpdmUgaW50ZXJydXB0ICov
CiNkZWZpbmUgRkVUX01SeEVyciAgICAgICAweDAwMDAwMDAyICAgICAgLyog
cmVjZWl2ZSBlcnJvciAqLwoKI2RlZmluZSBGRVRfSU5UUlMgRkVUX0ZCRXxG
RVRfTVJCVXxGRVRfVEJVfEZFVF9NVEl8RkVUX01SSXxGRVRfTVJ4RXJyCgov
KgogKiBGbG93IENvbnRyb2wgSGlnaC9Mb3cgVGhyZXNob2xkIFJlZ2lzdGVy
CiAqLwojZGVmaW5lIEZFVF9GQ0hUU2hpZnQgICAgMTYgICAgICAvKiBmbG93
IGNvbnRyb2wgaGlnaCB0aHJlc2hvbGQgKi8KI2RlZmluZSBGRVRfRkNMVFNo
aWZ0ICAgIDAgICAgICAgLyogZmxvdyBjb250cm9sIGxvdyB0aHJlc2hvbGQg
Ki8KCi8qCiAqIEJvb3RST00vRUVQUk9NL01JSSBNYW5hZ2VtZW50IFJlZ2lz
dGVyCiAqLwojZGVmaW5lIEZFVF9NQVNLX01JSVJfTUlJX1JFQUQgICAweDAw
MDAwMDAwCiNkZWZpbmUgRkVUX01BU0tfTUlJUl9NSUlfV1JJVEUgIDB4MDAw
MDAwMDgKI2RlZmluZSBGRVRfTUFTS19NSUlSX01JSV9NRE8gICAgMHgwMDAw
MDAwNAojZGVmaW5lIEZFVF9NQVNLX01JSVJfTUlJX01ESSAgICAweDAwMDAw
MDAyCiNkZWZpbmUgRkVUX01BU0tfTUlJUl9NSUlfTURDICAgIDB4MDAwMDAw
MDEKCi8qCiAqIFRhbGx5IENvdW50ZXIgZm9yIENSQyBhbmQgTVBBCiAqLwoj
ZGVmaW5lIEZFVF9UQ09WRiAgICAgICAgMHg4MDAwMDAwMCAgICAgIC8qIGNy
YyB0YWxseSBjb3VudGVyIG92ZXJmbG93ICovCiNkZWZpbmUgRkVUX0NSQ01h
c2sgICAgICAweDdmZmYwMDAwICAgICAgLyogY3JjIG51bWJlcjogYml0IDE2
LTMwICovCiNkZWZpbmUgRkVUX0NSQ1NoaWZ0ICAgICAxNgojZGVmaW5lIEZF
VF9UTU9WRiAgICAgICAgMHgwMDAwODAwMCAgICAgIC8qIG1wYSB0YWxseSBj
b3VudGVyIG92ZXJmbG93ICovCiNkZWZpbmUgRkVUX01QQU1hc2sgICAgICAw
eDAwMDA3ZmZmICAgICAgLyogbXBhIG51bWJlcjogYml0IDAtMTQgKi8KI2Rl
ZmluZSBGRVRfTVBBU2hpZnQgICAgIDAKCi8qCiAqIFRhbGx5IENvdW50ZXJz
IGZvciB0cmFuc21pdCBzdGF0dXMKICovCiNkZWZpbmUgRkVUX0Fib3J0TWFz
ayAgICAgIDB4ZmYwMDAwMDAgICAgLyogdHJhbnNtaXQgYWJvcnQgbnVtYmVy
ICovCiNkZWZpbmUgRkVUX0Fib3J0U2hpZnQgICAgIDI0CiNkZWZpbmUgRkVU
X0xDb2xNYXNrICAgICAgIDB4MDBmZjAwMDAgICAgLyogdHJhbnNtaXQgbGF0
ZSBjb2xsaXNpb25zICovCiNkZWZpbmUgRkVUX0xDb2xTaGlmdCAgICAgIDE2
CiNkZWZpbmUgRkVUX05DUk1hc2sgICAgICAgIDB4MDAwMGZmZmYgICAgLyog
dHJhbnNtaXQgcmV0cnkgbnVtYmVyICovCiNkZWZpbmUgRkVUX05DUlNoaWZ0
ICAgICAgIDAKCi8qCiAqIFRYL1JYIGRlc2NyaXB0b3Igc3RydWN0dXJlLgog
Ki8KCnN0cnVjdCBmZXRfZGVzYyB7CiAgICAgICAgdV9pbnQzMl90ICAgICAg
IGZldF9zdGF0dXM7CiAgICAgICAgdV9pbnQzMl90ICAgICAgIGZldF9jdGw7
CiAgICAgICAgdV9pbnQzMl90ICAgICAgIGZldF9kYXRhOwogICAgICAgIHVf
aW50MzJfdCAgICAgICBmZXRfbmV4dDsKfTsKCi8qCiAqIGZvciB0eC9yeCBk
ZXNjcmlwdG9ycwogKi8KI2RlZmluZSBGRVRfT1dOQnlOSUMgICAgIDB4ODAw
MDAwMDAKI2RlZmluZSBGRVRfT1dOQnlEcml2ZXIgIDB4MAoKLyoKICogcmVj
ZWl2ZSBkZXNjcmlwdG9yIDAKICovCiNkZWZpbmUgRkVUX1JYT1dOICAgICAg
ICAweDgwMDAwMDAwICAgICAgLyogb3duIGJpdCAqLwojZGVmaW5lIEZFVF9G
TE5HTUFTSyAgICAgMHgwZmZmMDAwMCAgICAgIC8qIGZyYW1lIGxlbmd0aCAq
LwojZGVmaW5lIEZFVF9GTE5HU2hpZnQgICAgMTYKI2RlZmluZSBGRVRfTUFS
U1RBVFVTICAgIDB4MDAwMDQwMDAgICAgICAvKiBtdWx0aWNhc3QgYWRkcmVz
cyByZWNlaXZlZCAqLwojZGVmaW5lIEZFVF9CQVJTVEFUVVMgICAgMHgwMDAw
MjAwMCAgICAgIC8qIGJyb2FkY2FzdCBhZGRyZXNzIHJlY2VpdmVkICovCiNk
ZWZpbmUgRkVUX1BIWVNUQVRVUyAgICAweDAwMDAxMDAwICAgICAgLyogcGh5
c2ljYWwgYWRkcmVzcyByZWNlaXZlZCAqLwojZGVmaW5lIEZFVF9SWEZTRCAg
ICAgICAgMHgwMDAwMDgwMCAgICAgIC8qIGZpcnN0IGRlc2NyaXB0b3IgKi8K
I2RlZmluZSBGRVRfUlhMU0QgICAgICAgIDB4MDAwMDA0MDAgICAgICAvKiBs
YXN0IGRlc2NyaXB0b3IgKi8KI2RlZmluZSBGRVRfRVMgICAgICAgICAgIDB4
MDAwMDAwODAgICAgICAvKiBlcnJvciBzdW1tYXJ5ICovCiNkZWZpbmUgRkVU
X1JVTlQgICAgICAgICAweDAwMDAwMDQwICAgICAgLyogcnVudCBwYWNrZXQg
cmVjZWl2ZWQgKi8KI2RlZmluZSBGRVRfTE9ORyAgICAgICAgIDB4MDAwMDAw
MjAgICAgICAvKiBsb25nIHBhY2tldCByZWNlaXZlZCAqLwojZGVmaW5lIEZF
VF9GQUUgICAgICAgICAgMHgwMDAwMDAxMCAgICAgIC8qIGZyYW1lIGFsaWdu
IGVycm9yICovCiNkZWZpbmUgRkVUX0NSQyAgICAgICAgICAweDAwMDAwMDA4
ICAgICAgLyogY3JjIGVycm9yICovCiNkZWZpbmUgRkVUX1JYRVIgICAgICAg
ICAweDAwMDAwMDA0ICAgICAgLyogcmVjZWl2ZSBlcnJvciAqLwojZGVmaW5l
IEZFVF9SREVTMENIRUNLICAgMHgwMDAwNzhmYyAgICAgIC8qIG9ubHkgY2hl
Y2sgTUFSLCBCQVIsIFBIWSwgRVMsIFJVTlQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMT05HLCBGQUUsIENSQyBhbmQg
UlhFUiBiaXRzICovCgovKgogKiByZWNlaXZlIGRlc2NyaXB0b3IgMQogKi8K
I2RlZmluZSBGRVRfUlhJQyAgICAgICAgIDB4MDA4MDAwMDAgICAgICAvKiBp
bnRlcnJ1cHQgY29udHJvbCAqLwojZGVmaW5lIEZFVF9SQlNNQVNLICAgICAg
MHgwMDAwMDdmZiAgICAgIC8qIHJlY2VpdmUgYnVmZmVyIHNpemUgKi8KI2Rl
ZmluZSBGRVRfUkJTU2hpZnQgICAgIDAKCi8qCiAqIHRyYW5zbWl0IGRlc2Ny
aXB0b3IgMAogKi8KI2RlZmluZSBGRVRfVFhFUlIgICAgICAgIDB4MDAwMDgw
MDAgICAgICAvKiB0cmFuc21pdCBlcnJvciAqLwojZGVmaW5lIEZFVF9KQUJU
TyAgICAgICAgMHgwMDAwNDAwMCAgICAgIC8qIGphYmJlciB0aW1lb3V0ICov
CiNkZWZpbmUgRkVUX0NTTCAgICAgICAgICAweDAwMDAyMDAwICAgICAgLyog
Y2FycmllciBzZW5zZSBsb3N0ICovCiNkZWZpbmUgRkVUX0xDICAgICAgICAg
ICAweDAwMDAxMDAwICAgICAgLyogbGF0ZSBjb2xsaXNpb24gKi8KI2RlZmlu
ZSBGRVRfRUMgICAgICAgICAgIDB4MDAwMDA4MDAgICAgICAvKiBleGNlc3Np
dmUgY29sbGlzaW9uICovCiNkZWZpbmUgRkVUX1VERiAgICAgICAgICAweDAw
MDAwNDAwICAgICAgLyogZmlmbyB1bmRlcmZsb3cgKi8KI2RlZmluZSBGRVRf
REZSICAgICAgICAgIDB4MDAwMDAyMDAgICAgICAvKiBkZWZlcnJlZCAqLwoj
ZGVmaW5lIEZFVF9IRiAgICAgICAgICAgMHgwMDAwMDEwMCAgICAgIC8qIGhl
YXJ0YmVhdCBmYWlsICovCiNkZWZpbmUgRkVUX05DUk1BU0sgICAgICAweDAw
MDAwMGZmICAgICAgLyogY29sbGlzaW9uIHJldHJ5IGNvdW50ICovCiNkZWZp
bmUgRkVUX05DUlNoaWZ0ICAgICAwCgovKgogKiB0eCBkZXNjcmlwdG9yIDEK
ICovCiNkZWZpbmUgRkVUX1RYSUMgICAgICAgICAweDgwMDAwMDAwICAgICAg
LyogaW50ZXJydXB0IGNvbnRyb2wgKi8KI2RlZmluZSBGRVRfRVRJQ29udHJv
bCAgIDB4NDAwMDAwMDAgICAgICAvKiBlYXJseSB0cmFuc21pdCBpbnRlcnJ1
cHQgKi8KI2RlZmluZSBGRVRfVFhMRCAgICAgICAgIDB4MjAwMDAwMDAgICAg
ICAvKiBsYXN0IGRlc2NyaXB0b3IgKi8KI2RlZmluZSBGRVRfVFhGRCAgICAg
ICAgIDB4MTAwMDAwMDAgICAgICAvKiBmaXJzdCBkZXNjcmlwdG9yICovCiNk
ZWZpbmUgRkVUX0NSQ0Rpc2FibGUgICAweDAwMDAwMDAwICAgICAgLyogY3Jj
IGNvbnRyb2wgKi8KI2RlZmluZSBGRVRfQ1JDRW5hYmxlICAgIDB4MDgwMDAw
MDAKI2RlZmluZSBGRVRfUEFERGlzYWJsZSAgIDB4MDAwMDAwMDAgICAgICAv
KiBwYWRkaW5nIGNvbnRyb2wgKi8KI2RlZmluZSBGRVRfUEFERW5hYmxlICAg
IDB4MDQwMDAwMDAKI2RlZmluZSBGRVRfUEtUU2hpZnQgICAgIDExICAgICAg
ICAgICAgICAvKiB0cmFuc21pdCBwa3Qgc2l6ZSAqLwojZGVmaW5lIEZFVF9U
QlNNQVNLICAgICAgMHgwMDAwMDdmZgojZGVmaW5lIEZFVF9UQlNTaGlmdCAg
ICAgMCAgICAgICAgICAgICAgIC8qIHRyYW5zbWl0IGJ1ZmZlciBzaXplICov
CgojZGVmaW5lIEZFVF9NQVhGUkFHUyAgICAgMQojZGVmaW5lIEZFVF9SWF9M
SVNUX0NOVCAgNjQKI2RlZmluZSBGRVRfVFhfTElTVF9DTlQgIDY0CiNkZWZp
bmUgRkVUX01JTl9GUkFNRUxFTiA2MAoKLyoKICogQSB0cmFuc21pdCAnc3Vw
ZXIgZGVzY3JpcHRvcicgaXMgYWN0dWFsbHkgRkVUX01BWEZSQUdTIHJlZ3Vs
YXIKICogZGVzY3JpcHRvcnMgY2x1bXBlZCB0b2dldGhlci4gVGhlIGlkZWEg
aGVyZSBpcyB0byBlbXVsYXRlIHRoZQogKiBtdWx0aS1mcmFnbWVudCBkZXNj
cmlwdG9yIGxheW91dCBmb3VuZCBpbiBkZXZpY2VzIHN1Y2ggYXMgdGhlCiAq
IFRleGFzIEluc3RydW1lbnRzIFRodW5kZXJMQU4gYW5kIDNDb20gYm9vbWVy
YW5nIGFuZCBjeWxvbmUgY2hpcHMuCiAqIFRoZSBhZHZhbnRhZ2UgdG8gdXNp
bmcgdGhpcyBzY2hlbWUgaXMgdGhhdCBpdCBhdm9pZHMgYnVmZmVyIGNvcGll
cy4KICogVGhlIGRpc2FkdmFudGFnZSBpcyB0aGF0IHRoZXJlJ3MgYSBjZXJ0
YWluIGFtb3VudCBvZiBvdmVyaGVhZCBkdWUKICogdG8gdGhlIGZhY3QgdGhh
dCBlYWNoICdmcmFnbWVudCcgaXMgMTYgYnl0ZXMgbG9uZy4gSW4gZmV0IHRl
c3RzLAogKiB0aGlzIGxpbWl0cyB0b3Agc3BlZWQgdG8gYWJvdXQgMTAuNU1C
L3NlYy4gSXQgc2hvdWxkIGJlIG1vcmUgbGlrZQogKiAxMS41TUIvc2VjLiBI
b3dldmVyLCB0aGUgdXBzaG90IGlzIHRoYXQgeW91IGNhbiBhY2hpZXZlIGJl
dHRlcgogKiByZXN1bHRzIG9uIHNsb3dlciBtYWNoaW5lczogYSBQZW50aXVt
IDIwMCBjYW4gcHVtcCBvdXQgcGFja2V0cyBhdAogKiBzYW1lIHNwZWVkIGFz
IGEgUElJIDQwMC4KICovCnN0cnVjdCBmZXRfdHhkZXNjIHsKICAgICAgICBz
dHJ1Y3QgZmV0X2Rlc2MgICAgICAgICAgZmV0X2ZyYWdbRkVUX01BWEZSQUdT
XTsKfTsKCiNkZWZpbmUgRkVUX1RYU1RBVFVTKHgpICB4LT5mZXRfcHRyLT5m
ZXRfZnJhZ1t4LT5mZXRfbGFzdGRlc2NdLmZldF9zdGF0dXMKI2RlZmluZSBG
RVRfVFhDVEwoeCkgICAgIHgtPmZldF9wdHItPmZldF9mcmFnW3gtPmZldF9s
YXN0ZGVzY10uZmV0X2N0bAojZGVmaW5lIEZFVF9UWERBVEEoeCkgICAgeC0+
ZmV0X3B0ci0+ZmV0X2ZyYWdbeC0+ZmV0X2xhc3RkZXNjXS5mZXRfZGF0YQoj
ZGVmaW5lIEZFVF9UWE5FWFQoeCkgICAgeC0+ZmV0X3B0ci0+ZmV0X2ZyYWdb
eC0+ZmV0X2xhc3RkZXNjXS5mZXRfbmV4dAoKI2RlZmluZSBGRVRfVFhPV04o
eCkgICAgIHgtPmZldF9wdHItPmZldF9mcmFnWzBdLmZldF9zdGF0dXMKCiNk
ZWZpbmUgRkVUX1VOU0VOVCAgICAgICAweDEyMzQKCnN0cnVjdCBmZXRfbGlz
dF9kYXRhIHsKICAgICAgICBzdHJ1Y3QgZmV0X2Rlc2MgICAgICAgICAgZmV0
X3J4X2xpc3RbRkVUX1JYX0xJU1RfQ05UXTsKICAgICAgICBzdHJ1Y3QgZmV0
X3R4ZGVzYyAgICAgICAgZmV0X3R4X2xpc3RbRkVUX1RYX0xJU1RfQ05UXTsK
fTsKCnN0cnVjdCBmZXRfY2hhaW4gewogICAgICAgIHN0cnVjdCBmZXRfdHhk
ZXNjICAgICAgICAqZmV0X3B0cjsKICAgICAgICBzdHJ1Y3QgbWJ1ZiAgICAg
ICAgICAgICAqZmV0X21idWY7CiAgICAgICAgc3RydWN0IGZldF9jaGFpbiAg
ICAgICAgICpmZXRfbmV4dGRlc2M7CiAgICAgICAgdV9pbnQ4X3QgICAgICAg
ICAgICAgICAgZmV0X2xhc3RkZXNjOwp9OwoKc3RydWN0IGZldF9jaGFpbl9v
bmVmcmFnIHsKICAgICAgICBzdHJ1Y3QgZmV0X2Rlc2MgICAgICAgICAgKmZl
dF9wdHI7CiAgICAgICAgc3RydWN0IG1idWYgICAgICAgICAgICAgKmZldF9t
YnVmOwogICAgICAgIHN0cnVjdCBmZXRfY2hhaW5fb25lZnJhZyAqZmV0X25l
eHRkZXNjOwogICAgICAgIHVfaW50OF90ICAgICAgICAgICAgICAgIGZldF9y
bGFzdDsKfTsKCnN0cnVjdCBmZXRfY2hhaW5fZGF0YSB7CiAgICAgICAgc3Ry
dWN0IGZldF9jaGFpbl9vbmVmcmFnIGZldF9yeF9jaGFpbltGRVRfUlhfTElT
VF9DTlRdOwogICAgICAgIHN0cnVjdCBmZXRfY2hhaW4gICAgICAgICBmZXRf
dHhfY2hhaW5bRkVUX1RYX0xJU1RfQ05UXTsKCiAgICAgICAgc3RydWN0IGZl
dF9jaGFpbl9vbmVmcmFnICpmZXRfcnhfaGVhZDsKCiAgICAgICAgc3RydWN0
IGZldF9jaGFpbiAgICAgICAgICpmZXRfdHhfaGVhZDsKICAgICAgICBzdHJ1
Y3QgZmV0X2NoYWluICAgICAgICAgKmZldF90eF90YWlsOwogICAgICAgIHN0
cnVjdCBmZXRfY2hhaW4gICAgICAgICAqZmV0X3R4X2ZyZWU7Cn07CgpzdHJ1
Y3QgZmV0X3R5cGUgewogICAgICAgIHVfaW50MTZfdCAgICAgICAgICAgICAg
IGZldF92aWQ7CiAgICAgICAgdV9pbnQxNl90ICAgICAgICAgICAgICAgZmV0
X2RpZDsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAqZmV0X25h
bWU7Cn07CgojZGVmaW5lIEZFVF9GTEFHX0ZPUkNFREVMQVkgICAgICAxCiNk
ZWZpbmUgRkVUX0ZMQUdfU0NIRURERUxBWSAgICAgIDIKI2RlZmluZSBGRVRf
RkxBR19ERUxBWVRJTUVPICAgICAgMwoKc3RydWN0IGZldF9zb2Z0YyB7CiAg
ICAgICAgc3RydWN0IGFycGNvbSAgICAgICAgICAgYXJwY29tOyAgICAgICAg
IC8qIGludGVyZmFjZSBpbmZvICovCiAgICAgICAgc3RydWN0IGlmbWVkaWEg
ICAgICAgICAgaWZtZWRpYTsgICAgICAgIC8qIG1lZGlhIGluZm8gKi8KICAg
ICAgICBidXNfc3BhY2VfaGFuZGxlX3QgICAgICBmZXRfYmhhbmRsZTsKICAg
ICAgICBidXNfc3BhY2VfdGFnX3QgICAgICAgICBmZXRfYnRhZzsKICAgICAg
ICBzdHJ1Y3QgZmV0X3R5cGUgICAgICAgICAgKmZldF9pbmZvOyAgICAgICAv
KiBhZGFwdGVyIGluZm8gKi8KICAgICAgICBzdHJ1Y3QgZmV0X3R5cGUgICAg
ICAgICAgKmZldF9waW5mbzsgICAgICAvKiBwaHkgaW5mbyAqLwogICAgICAg
IHVfaW50OF90ICAgICAgICAgICAgICAgIGZldF91bml0OyAgICAgICAgLyog
aW50ZXJmYWNlIG51bWJlciAqLwogICAgICAgIHVfaW50OF90ICAgICAgICAg
ICAgICAgIGZldF90eXBlOwogICAgICAgIHVfaW50OF90ICAgICAgICAgICAg
ICAgIGZldF9waHlfYWRkcjsgICAgLyogUEhZIGFkZHJlc3MgKi8KICAgICAg
ICB1X2ludDhfdCAgICAgICAgICAgICAgICBmZXRfdHhfcGVuZDsgICAgIC8q
IFRYIHBlbmRpbmcgKi8KICAgICAgICB1X2ludDhfdCAgICAgICAgICAgICAg
ICBmZXRfd2FudF9hdXRvOwogICAgICAgIHVfaW50OF90ICAgICAgICAgICAg
ICAgIGZldF9hdXRvbmVnOwogICAgICAgIHVfaW50MTZfdCAgICAgICAgICAg
ICAgIGZldF90eHRocmVzaDsKICAgICAgICBjYWRkcl90ICAgICAgICAgICAg
ICAgICBmZXRfbGRhdGFfcHRyOwogICAgICAgIHN0cnVjdCBmZXRfbGlzdF9k
YXRhICAgICAqZmV0X2xkYXRhOwogICAgICAgIHN0cnVjdCBmZXRfY2hhaW5f
ZGF0YSAgICBmZXRfY2RhdGE7Cn07CgovKgogKiByZWdpc3RlciBzcGFjZSBh
Y2Nlc3MgbWFjcm9zCiAqLwojZGVmaW5lIENTUl9XUklURV80KHNjLCByZWcs
IHZhbCkgICAgICAgXAogICAgICAgIGJ1c19zcGFjZV93cml0ZV80KHNjLT5m
ZXRfYnRhZywgc2MtPmZldF9iaGFuZGxlLCByZWcsIHZhbCkKI2RlZmluZSBD
U1JfV1JJVEVfMihzYywgcmVnLCB2YWwpICAgICAgIFwKICAgICAgICBidXNf
c3BhY2Vfd3JpdGVfMihzYy0+ZmV0X2J0YWcsIHNjLT5mZXRfYmhhbmRsZSwg
cmVnLCB2YWwpCiNkZWZpbmUgQ1NSX1dSSVRFXzEoc2MsIHJlZywgdmFsKSAg
ICAgICBcCiAgICAgICAgYnVzX3NwYWNlX3dyaXRlXzEoc2MtPmZldF9idGFn
LCBzYy0+ZmV0X2JoYW5kbGUsIHJlZywgdmFsKQoKI2RlZmluZSBDU1JfUkVB
RF80KHNjLCByZWcpICAgICBcCiAgICAgICAgYnVzX3NwYWNlX3JlYWRfNChz
Yy0+ZmV0X2J0YWcsIHNjLT5mZXRfYmhhbmRsZSwgcmVnKQojZGVmaW5lIENT
Ul9SRUFEXzIoc2MsIHJlZykgICAgIFwKICAgICAgICBidXNfc3BhY2VfcmVh
ZF8yKHNjLT5mZXRfYnRhZywgc2MtPmZldF9iaGFuZGxlLCByZWcpCiNkZWZp
bmUgQ1NSX1JFQURfMShzYywgcmVnKSAgICAgXAogICAgICAgIGJ1c19zcGFj
ZV9yZWFkXzEoc2MtPmZldF9idGFnLCBzYy0+ZmV0X2JoYW5kbGUsIHJlZykK
CiNkZWZpbmUgRkVUX1RJTUVPVVQgICAgICAgICAgICAgIDEwMDAKCi8qCiAq
IEdlbmVyYWwgY29uc3RhbnRzIHRoYXQgYXJlIGZ1biB0byBrbm93LgogKgog
KiBGRVRTT04gUENJIHZlbmRvciBJRAogKi8KI2RlZmluZSBGRVRWRU5ET1JJ
RCAgICAgICAgICAgMHgxNTE2CgovKgogKiBGRVRTT04gZGV2aWNlIElEcy4K
ICovCiNkZWZpbmUgSUQwICAgICAgICAgICAgICAgIDB4MDgwMAojZGVmaW5l
IElEMSAgICAgICAgICAgICAgICAweDA4MDMKI2RlZmluZSBJRDIgICAgICAg
ICAgICAgICAgMHgwODkxCgovKgogKiBTVCtPUCtQSFlBRCtSRUdBRCtUQQog
Ki8KI2RlZmluZSBGRVRfT1BfUkVBRCAgICAgIDB4NjAwMCAgLyogU1Q6MDEr
T1A6MTArUEhZQUQrUkVHQUQrVEE6WjAgKi8KI2RlZmluZSBGRVRfT1BfV1JJ
VEUgICAgIDB4NTAwMiAgLyogU1Q6MDErT1A6MDErUEhZQUQrUkVHQUQrVEE6
MTAgKi8KCi8qCiAqIENvbnN0YW5zdHMgZm9yIFBIWQogKi8KI2RlZmluZSBQ
SFlJRDAgICAgIDB4MDMwMAoKLyoKICogQ29uc3RhbnN0cyBmb3IgU2VlcSA4
MDIyNSBQSFkKICovCiNkZWZpbmUgU2VlcVBIWUlEMCAgICAgIDB4MDAxNgoK
I2RlZmluZSBTRUVRX01JSVJlZ2lzdGVyMTggICAgICAxOAojZGVmaW5lIFNF
RVFfU1BEX0RFVF8xMDAgICAgICAgIDB4ODAKI2RlZmluZSBTRUVRX0RQTFhf
REVUX0ZVTEwgICAgICAweDQwCgovKgogKiBDb25zdGFuc3RzIGZvciBBaGRv
YyAxMDEgUEhZCiAqLwojZGVmaW5lIEFoZG9jUEhZSUQwICAgICAweDAwMjIK
CiNkZWZpbmUgQUhET0NfRGlhZ25vc3RpY1JlZyAgICAgMTgKI2RlZmluZSBB
SERPQ19EUExYX0ZVTEwgICAgICAgICAweDA4MDAKI2RlZmluZSBBSERPQ19T
cGVlZF8xMDAgICAgICAgICAweDA0MDAKCi8qCiAqIENvbnN0YW5zdHMgZm9y
IE1hcnZlbGwgODhFMTAwMC84OEUxMDAwUyBQSFkKICovCiNkZWZpbmUgTWFy
dmVsbFBIWUlEMCAgICAgICAgICAgMHgwMTQxCgojZGVmaW5lIE1hcnZlbGxf
U3BlY2lmaWNTdGF0dXMgIDE3CiNkZWZpbmUgTWFydmVsbF9TcGVlZDEwMDAg
ICAgICAgMHg4MDAwCiNkZWZpbmUgTWFydmVsbF9TcGVlZDEwMCAgICAgICAg
MHg0MDAwCiNkZWZpbmUgTWFydmVsbF9GdWxsRHVwbGV4ICAgICAgMHgyMDAw
CgovKgogKiBQQ0kgbG93IG1lbW9yeSBiYXNlIGFuZCBsb3cgSS9PIGJhc2Ug
cmVnaXN0ZXIsIGFuZAogKiBvdGhlciBQQ0kgcmVnaXN0ZXJzLiBOb3RlOiBz
b21lIGFyZSBvbmx5IGF2YWlsYWJsZSBvbgogKiB0aGUgM2M5MDVCLCBpbiBw
YXJ0aWN1bGFyIHRob3NlIHRoYXQgcmVsYXRlZCB0byBwb3dlciBtYW5hZ2Vt
ZW50LgogKi8KI2RlZmluZSBGRVRfUENJX1ZFTkRPUl9JRCAgICAgICAgMHgw
MAojZGVmaW5lIEZFVF9QQ0lfREVWSUNFX0lEICAgICAgICAweDAyCiNkZWZp
bmUgRkVUX1BDSV9DT01NQU5EICAgICAgICAgIDB4MDQKI2RlZmluZSBGRVRf
UENJX1NUQVRVUyAgICAgICAgICAgMHgwNgojZGVmaW5lIEZFVF9QQ0lfQ0xB
U1NDT0RFICAgICAgICAweDA5CiNkZWZpbmUgRkVUX1BDSV9MQVRFTkNZX1RJ
TUVSICAgIDB4MEQKI2RlZmluZSBGRVRfUENJX0hFQURFUl9UWVBFICAgICAg
MHgwRQojZGVmaW5lIEZFVF9QQ0lfTE9JTyAgICAgICAgICAgICAweDEwCiNk
ZWZpbmUgRkVUX1BDSV9MT01FTSAgICAgICAgICAgIDB4MTQKI2RlZmluZSBG
RVRfUENJX0JJT1NST00gICAgICAgICAgMHgzMAojZGVmaW5lIEZFVF9QQ0lf
SU5UTElORSAgICAgICAgICAweDNDCiNkZWZpbmUgRkVUX1BDSV9JTlRQSU4g
ICAgICAgICAgIDB4M0QKI2RlZmluZSBGRVRfUENJX01JTkdOVCAgICAgICAg
ICAgMHgzRQojZGVmaW5lIEZFVF9QQ0lfTUlOTEFUICAgICAgICAgICAweDBG
CiNkZWZpbmUgRkVUX1BDSV9SRVNFVE9QVCAgICAgICAgIDB4NDgKI2RlZmlu
ZSBGRVRfUENJX0VFUFJPTV9EQVRBICAgICAgMHg0QwoKI2RlZmluZSBQSFlf
VU5LTk9XTiAgICAgICAgICAgICAzCgojZGVmaW5lIEZFVF9QSFlBRERSX01J
TiAgICAgICAgICAweDAwCiNkZWZpbmUgRkVUX1BIWUFERFJfTUFYICAgICAg
ICAgIDB4MUYKCiNkZWZpbmUgUEhZX0JNQ1IgICAgICAgICAgICAgICAgMHgw
MAojZGVmaW5lIFBIWV9CTVNSICAgICAgICAgICAgICAgIDB4MDEKI2RlZmlu
ZSBQSFlfVkVOSUQgICAgICAgICAgICAgICAweDAyCiNkZWZpbmUgUEhZX0RF
VklEICAgICAgICAgICAgICAgMHgwMwojZGVmaW5lIFBIWV9BTkFSICAgICAg
ICAgICAgICAgIDB4MDQKI2RlZmluZSBQSFlfTFBBUiAgICAgICAgICAgICAg
ICAweDA1CiNkZWZpbmUgUEhZX0FORVhQICAgICAgICAgICAgICAgMHgwNgoj
ZGVmaW5lIFBIWV9OUFRSICAgICAgICAgICAgICAgIDB4MDcKI2RlZmluZSBQ
SFlfTFBOUFIgICAgICAgICAgICAgICAweDA4CiNkZWZpbmUgUEhZXzEwMDBD
UiAgICAgICAgICAgICAgMHgwOQojZGVmaW5lIFBIWV8xMDAwU1IgICAgICAg
ICAgICAgIDB4MGEKCiNkZWZpbmUgUEhZX0FOQVJfTkVYVFBBR0UgICAgICAg
MHg4MDAwCiNkZWZpbmUgUEhZX0FOQVJfUlNWRDAgICAgICAgICAgMHg0MDAw
CiNkZWZpbmUgUEhZX0FOQVJfVExSRkxUICAgICAgICAgMHgyMDAwCiNkZWZp
bmUgUEhZX0FOQVJfUlNWRDEgICAgICAgICAgMHgxMDAwCiNkZWZpbmUgUEhZ
X0FOQVJfUlNWRDIgICAgICAgICAgMHgwODAwCiNkZWZpbmUgUEhZX0FOQVJf
UlNWRDMgICAgICAgICAgMHgwNDAwCiNkZWZpbmUgUEhZX0FOQVJfMTAwQlQ0
ICAgICAgICAgMHgwMjAwTAojZGVmaW5lIFBIWV9BTkFSXzEwMEJUWEZVTEwg
ICAgIDB4MDEwMAojZGVmaW5lIFBIWV9BTkFSXzEwMEJUWEhBTEYgICAgIDB4
MDA4MAojZGVmaW5lIFBIWV9BTkFSXzEwQlRGVUxMICAgICAgIDB4MDA0MAoj
ZGVmaW5lIFBIWV9BTkFSXzEwQlRIQUxGICAgICAgIDB4MDAyMAojZGVmaW5l
IFBIWV9BTkFSX1BST1RPNCAgICAgICAgIDB4MDAxMAojZGVmaW5lIFBIWV9B
TkFSX1BST1RPMyAgICAgICAgIDB4MDAwOAojZGVmaW5lIFBIWV9BTkFSX1BS
T1RPMiAgICAgICAgIDB4MDAwNAojZGVmaW5lIFBIWV9BTkFSX1BST1RPMSAg
ICAgICAgIDB4MDAwMgojZGVmaW5lIFBIWV9BTkFSX1BST1RPMCAgICAgICAg
IDB4MDAwMQoKI2RlZmluZSBQSFlfMTAwMFNSXzEwMDBCVFhGVUxMICAweDA4
MDAKI2RlZmluZSBQSFlfMTAwMFNSXzEwMDBCVFhIQUxGICAweDA0MDAKCi8q
CiAqIFRoZXNlIGFyZSB0aGUgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yIHRo
ZSBQSFkgKHBoeXNpY2FsIGxheWVyCiAqIGludGVyZmFjZSBjaGlwKS4KICov
Ci8qCiAqIFBIWSBCTUNSIEJhc2ljIE1vZGUgQ29udHJvbCBSZWdpc3Rlcgog
Ki8KI2RlZmluZSBQSFlfQk1DUl9SRVNFVCAgICAgICAgICAgICAgICAgIDB4
ODAwMAojZGVmaW5lIFBIWV9CTUNSX0xPT1BCSyAgICAgICAgICAgICAgICAg
MHg0MDAwCiNkZWZpbmUgUEhZX0JNQ1JfU1BFRURTRUwgICAgICAgICAgICAg
ICAweDIwMDAKI2RlZmluZSBQSFlfQk1DUl9BVVRPTkVHRU5CTCAgICAgICAg
ICAgIDB4MTAwMAojZGVmaW5lIFBIWV9CTUNSX1JTVkQwICAgICAgICAgICAg
ICAgICAgMHgwODAwICAvKiB3cml0ZSBhcyB6ZXJvICovCiNkZWZpbmUgUEhZ
X0JNQ1JfSVNPTEFURSAgICAgICAgICAgICAgICAweDA0MDAKI2RlZmluZSBQ
SFlfQk1DUl9BVVRPTkVHUlNUUiAgICAgICAgICAgIDB4MDIwMAojZGVmaW5l
IFBIWV9CTUNSX0RVUExFWCAgICAgICAgICAgICAgICAgMHgwMTAwCiNkZWZp
bmUgUEhZX0JNQ1JfQ09MTFRFU1QgICAgICAgICAgICAgICAweDAwODAKI2Rl
ZmluZSBQSFlfQk1DUl8xMDAwICAgICAgICAgICAgICAgICAgIDB4MDA0MCAg
Lyogb25seSB1c2VkIGZvciBNYXJ2ZWxsIFBIWSAqLwojZGVmaW5lIFBIWV9C
TUNSX1JTVkQyICAgICAgICAgICAgICAgICAgMHgwMDIwICAvKiB3cml0ZSBh
cyB6ZXJvLCBkb24ndCBjYXJlICovCiNkZWZpbmUgUEhZX0JNQ1JfUlNWRDMg
ICAgICAgICAgICAgICAgICAweDAwMTAgIC8qIHdyaXRlIGFzIHplcm8sIGRv
bid0IGNhcmUgKi8KI2RlZmluZSBQSFlfQk1DUl9SU1ZENCAgICAgICAgICAg
ICAgICAgIDB4MDAwOCAgLyogd3JpdGUgYXMgemVybywgZG9uJ3QgY2FyZSAq
LwojZGVmaW5lIFBIWV9CTUNSX1JTVkQ1ICAgICAgICAgICAgICAgICAgMHgw
MDA0ICAvKiB3cml0ZSBhcyB6ZXJvLCBkb24ndCBjYXJlICovCiNkZWZpbmUg
UEhZX0JNQ1JfUlNWRDYgICAgICAgICAgICAgICAgICAweDAwMDIgIC8qIHdy
aXRlIGFzIHplcm8sIGRvbid0IGNhcmUgKi8KI2RlZmluZSBQSFlfQk1DUl9S
U1ZENyAgICAgICAgICAgICAgICAgIDB4MDAwMSAgLyogd3JpdGUgYXMgemVy
bywgZG9uJ3QgY2FyZSAqLwoKLyoKICogUkVTRVQ6IDEgPT0gc29mdHdhcmUg
cmVzZXQsIDAgPT0gbm9ybWFsIG9wZXJhdGlvbgogKiBSZXNldHMgc3RhdHVz
IGFuZCBjb250cm9sIHJlZ2lzdGVycyB0byBkZWZhdWx0IHZhbHVlcy4KICog
UmVsYXRjaGVzIGFsbCBoYXJkd2FyZSBjb25maWcgdmFsdWVzLgogKgogKiBM
T09QQks6IDEgPT0gbG9vcGJhY2sgb3BlcmF0aW9uIGVuYWJsZWQsIDAgPT0g
bm9ybWFsIG9wZXJhdGlvbgogKgogKiBTUEVFRFNFTDogMSA9PSAxMDBNYi9z
LCAwID09IDEwTWIvcwogKiBMaW5rIHNwZWVkIGlzIHNlbGVjdGVkIGJ5dCBo
aXMgYml0IG9yIGlmIGF1dG8tbmVnb3RpYXRpb24gaWYgYml0CiAqIDEyIChB
VVRPTkVHRU5CTCkgaXMgc2V0IChpbiB3aGljaCBjYXNlIHRoZSB2YWx1ZSBv
ZiB0aGlzIHJlZ2lzdGVyCiAqIGlzIGlnbm9yZWQpLgogKgogKiBBVVRPTkVH
RU5CTDogMSA9PSBBdXRvbmVnb3RpYXRpb24gZW5hYmxlZCwgMCA9PSBBdXRv
bmVnb3RpYXRpb24gZGlzYWJsZWQKICogQml0cyA4IGFuZCAxMyBhcmUgaWdu
b3JlZCB3aGVuIGF1dG9uZWcgaXMgc2V0LCBvdGhlcndpc2UgYml0cyA4IGFu
ZCAxMwogKiBkZXRlcm1pbmUgc3BlZWQgYW5kIG1vZGUuIFNob3VsZCBiZSBj
bGVhcmVkIGFuZCB0aGVuIHNldCBpZiBQSFkgY29uZmlndXJlZAogKiBmb3Ig
bm8gYXV0b25lZyBvbiBzdGFydHVwLgogKgogKiBJU09MQVRFOiAxID09IGlz
b2xhdGUgUEhZIGZyb20gTUlJLCAwID09IG5vcm1hbCBvcGVyYXRpb24KICoK
ICogQVVUT05FR1JTVFI6IDEgPT0gcmVzdGFydCBhdXRvbmVnb3RpYXRpb24s
IDAgPSBub3JtYWwgb3BlcmF0aW9uCiAqCiAqIERVUExFWDogMSA9PSBmdWxs
IGR1cGxleCBtb2RlLCAwID09IGhhbGYgZHVwbGV4IG1vZGUKICoKICogQ09M
TFRFU1Q6IDEgPT0gY29sbGlzaW9uIHRlc3QgZW5hYmxlZCwgMCA9PSBub3Jt
YWwgb3BlcmF0aW9uCiAqLwoKLyoKICogUEhZLCBCTVNSIEJhc2ljIE1vZGUg
U3RhdHVzIFJlZ2lzdGVyCiAqLwojZGVmaW5lIFBIWV9CTVNSXzEwMEJUNCAg
ICAgICAgICAgICAgICAgMHg4MDAwCiNkZWZpbmUgUEhZX0JNU1JfMTAwQlRY
RlVMTCAgICAgICAgICAgICAweDQwMDAKI2RlZmluZSBQSFlfQk1TUl8xMDBC
VFhIQUxGICAgICAgICAgICAgIDB4MjAwMAojZGVmaW5lIFBIWV9CTVNSXzEw
QlRGVUxMICAgICAgICAgICAgICAgMHgxMDAwCiNkZWZpbmUgUEhZX0JNU1Jf
MTBCVEhBTEYgICAgICAgICAgICAgICAweDA4MDAKI2RlZmluZSBQSFlfQk1T
Ul9SU1ZEMSAgICAgICAgICAgICAgICAgIDB4MDQwMCAgLyogd3JpdGUgYXMg
emVybywgZG9uJ3QgY2FyZSAqLwojZGVmaW5lIFBIWV9CTVNSX1JTVkQyICAg
ICAgICAgICAgICAgICAgMHgwMjAwICAvKiB3cml0ZSBhcyB6ZXJvLCBkb24n
dCBjYXJlICovCiNkZWZpbmUgUEhZX0JNU1JfUlNWRDMgICAgICAgICAgICAg
ICAgICAweDAxMDAgIC8qIHdyaXRlIGFzIHplcm8sIGRvbid0IGNhcmUgKi8K
I2RlZmluZSBQSFlfQk1TUl9SU1ZENCAgICAgICAgICAgICAgICAgIDB4MDA4
MCAgLyogd3JpdGUgYXMgemVybywgZG9uJ3QgY2FyZSAqLwojZGVmaW5lIFBI
WV9CTVNSX01GUFJFU1VQICAgICAgICAgICAgICAgMHgwMDQwCiNkZWZpbmUg
UEhZX0JNU1JfQVVUT05FR0NPTVAgICAgICAgICAgICAweDAwMjAKI2RlZmlu
ZSBQSFlfQk1TUl9SRU1GQVVMVCAgICAgICAgICAgICAgIDB4MDAxMAojZGVm
aW5lIFBIWV9CTVNSX0NBTkFVVE9ORUcgICAgICAgICAgICAgMHgwMDA4CiNk
ZWZpbmUgUEhZX0JNU1JfTElOS1NUQVQgICAgICAgICAgICAgICAweDAwMDQK
I2RlZmluZSBQSFlfQk1TUl9KQUJCRVIgICAgICAgICAgICAgICAgIDB4MDAw
MgojZGVmaW5lIFBIWV9CTVNSX0VYVEVOREVEICAgICAgICAgICAgICAgMHgw
MDAxCg==


------=_NextPart_000_6671_3eb_241d
Content-Type: text/plain; name="README.TXT"; format=flowed
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="README.TXT"


Installation:

  1. copy the source codes if_fet.c and iffetreg.h to /sys/pci directory,

        #cp if_fet.c /sys/pci
        #cp iffetreg.h /sys/pci

  2. modify /sys/conf/files, add the following line

        pci/if_fet.c     optional       fet      device-driver

  3. modify /usr/src/sys/i386/conf/GENERIC, add the following line

        device  my0

  4. compile the kernel,

        #cd /usr/src/sys/i386/conf
        #cp GENERIC MYKERNEL
        #/usr/sbin/config MYKERNEL
        #cd /usr/src/sys/compile/MYKERNEL
        #make depend
        #make
        #make install

  5. reboot the system,

        #reboot

  6. bind your card to an IP address

        #ifconfig my0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}

  7. now, you should be able to ping local network.


------=_NextPart_000_6671_3eb_241d--



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