Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 May 1998 18:43:40 +0700 (NSS)
From:      Ustimenko Semen <semen@iclub.nsu.ru>
To:        Adam McDougall <mcdougall@ameritech.net>
Cc:        Andrew <andrew@iaccess.com.au>, freebsd-current@FreeBSD.ORG, Jaroslav Klaus <J.Klaus@sh.cvut.cz>
Subject:   Re: ethernet card Problems
Message-ID:  <Pine.BSF.3.96.980505183656.13866C-200000@iclub.nsu.ru>
In-Reply-To: <35495353.62F9852D@ameritech.net>

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

--0-1082377860-894368620=:13866
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello!

On Fri, 1 May 1998, Adam McDougall wrote:

> Andrew wrote:
> 
> > >Hi,
> > >
> > >I'm having some ethernet crad problems.  The card i'm using is a SMC8216
> > >10/100Mbps
> > >I'm running it on 100Mbps.
> > >I'm running ipfilter with transproxy and squid on a 14 Gig cache on
> > >freebsd3.0-current, divertin all packets comin in on port 80 to transproxy.
> > >This is what messages tells me just before the whole thing crashes:
> > >

At last, i have done something, i added some debug output
if any errors occured, fixed epic_stop() to properly stop TX DMA and
changed tx queuing policy a little.

I don't want to commit it to FreeBSD-current, just
would You be so please to try it with EPIC_DEBUG enabled in if_tx.c.
Patch is attached.

Have You used previous versions? What was the best?

Thank you.

--0-1082377860-894368620=:13866
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=diff
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.980505184340.13866D@iclub.nsu.ru>
Content-Description: 

KioqIGlmX3R4LmMub3JpZwlUdWUgTWF5ICA1IDE4OjIxOjM4IDE5OTgNCi0t
LSBpZl90eC5jCVR1ZSBNYXkgIDUgMTg6MjQ6NDIgMTk5OA0KKioqKioqKioq
KioqKioqDQoqKiogNTEsNTYgKioqKg0KLS0tIDUxLDY0IC0tLS0NCiAgI2Rl
ZmluZQlUWF9GUkFHX0xJU1QJMQkvKiBUcmFuc21pdCBkaXJlY3RseSBmcm9t
IG1idWYgZW5zdGVhZCAqLw0KICAJCQkJLyogb2YgY29sbGVjdGluZyBtYnVm
J3MgZnJhZ3MgdG8gb25lICovDQogIAkJCQkvKiBzdGF0aWMgYWxsb2NhdGVk
IHBsYWNlICovDQorIC8qI2RlZmluZQlFQVJMWV9SWAkxKi8NCisgLyojZGVm
aW5lCUVBUkxZX1RYCTEqLw0KKyANCisgI2lmIGRlZmluZWQoRVBJQ19ERUJV
RykNCisgI2RlZmluZSBkcHJpbnRmKGEpIHByaW50ZiBhDQorICNlbHNlDQor
ICNkZWZpbmUgZHByaW50ZihhKQ0KKyAjZW5kaWYNCiAgDQogICNpbmNsdWRl
ICJwY2kuaCINCiAgI2lmIE5QQ0kgPiAwDQoqKioqKioqKioqKioqKioNCioq
KiA4NSw5MSAqKioqDQogICAqIEdsb2JhbCB2YXJpYWJsZXMNCiAgICovDQog
IHN0YXRpYyB1X2xvbmcgZXBpY19wY2lfY291bnQ7DQotIHN0YXRpYyBlcGlj
X3NvZnRjX3QgKiBlcGljc1tFUElDX01BWF9ERVZJQ0VTXTsNCiAgc3RhdGlj
IHN0cnVjdCBwY2lfZGV2aWNlIHR4ZGV2aWNlID0geyANCiAgCSJ0eCIsDQog
IAllcGljX3BjaV9wcm9iZSwNCi0tLSA5Myw5OCAtLS0tDQoqKioqKioqKioq
KioqKioNCioqKiAyMjUsMjMxICoqKioNCiAgCQltMCA9IG07DQogIA0KICAj
aWYgZGVmaW5lZChUWF9GUkFHX0xJU1QpDQohIAkJaWYoIGJ1Zi0+bWJ1ZiAp
IG1fZnJlZW0oIGJ1Zi0+bWJ1ZiApOw0KICAJCWJ1Zi0+bWJ1ZiA9IG07DQog
IAkJZmxpc3QtPm51bWZyYWdzID0gMDsNCiAgDQotLS0gMjMyLDI0MSAtLS0t
DQogIAkJbTAgPSBtOw0KICANCiAgI2lmIGRlZmluZWQoVFhfRlJBR19MSVNU
KQ0KISAJCWlmKCBidWYtPm1idWYgKSB7DQohIAkJCWRwcmludGYoKCJ0eCVk
OiBtYnVmIG5vdCBmcmVlZCBpbiBpZnN0YXJ0XG4iLHNjLT51bml0KSk7DQoh
IAkJCW1fZnJlZW0oIGJ1Zi0+bWJ1ZiApOw0KISAJCX0NCiAgCQlidWYtPm1i
dWYgPSBtOw0KICAJCWZsaXN0LT5udW1mcmFncyA9IDA7DQogIA0KKioqKioq
KioqKioqKioqDQoqKiogMjM4LDI0MyAqKioqDQotLS0gMjQ4LDI1NCAtLS0t
DQogIAkJfQ0KICANCiAgCQlpZiggTlVMTCAhPSBtMCApew0KKyAJCQlkcHJp
bnRmKCgidHglZDogbWJ1ZiB0b28gZnJhZ21lbnRlZFxuIixzYy0+dW5pdCkp
Ow0KICAJCQkvKiBDb3B5IHBhY2tldCB0byBuZXcgYWxsb2NhdGVkIG1idWYg
Ki8NCiAgCQkJTUdFVEhEUihtMCxNX0RPTlRXQUlULE1UX0RBVEEpOw0KICAJ
CQlpZiggTlVMTCA9PSBtMCApIHsNCioqKioqKioqKioqKioqKg0KKioqIDI1
NSwyODIgKioqKg0KICAJCQkJY29udGludWU7DQogIAkJCX0NCiAgDQohIAkJ
CWZvciAobGVuID0gMDsgbSAhPSAwOyBtID0gbS0+bV9uZXh0KSB7DQohIAkJ
CQliY29weSggbXRvZChtLCBjYWRkcl90KSwgbXRvZChtMCwgY2FkZHJfdCkg
KyBsZW4sIG0tPm1fbGVuKTsNCiEgCQkJCWxlbiArPSBtLT5tX2xlbjsNCiEg
CQkJfQ0KISAJCQkNCiEgCQkJbV9mcmVlbShidWYtPm1idWYpOw0KISAJCQli
dWYtPm1idWYgPSBtMDsNCiAgCQkJZmxpc3QtPm51bWZyYWdzID0gMTsNCiAg
CQkJZmxpc3QtPmZyYWdbMF0uZnJhZ2xlbiA9IGxlbjsNCiAgCQkJZmxpc3Qt
PmZyYWdbMF0uZnJhZ2FkZHIgPSB2dG9waHlzKCBtdG9kKG0wLCBjYWRkcl90
KSApOw0KICAJCX0NCiAgDQogIAkJLyogRG9lcyBub3QgZ2VuZXJhdGUgVFhD
IHVubGVzcyByaW5nIGlzIGZ1bGwgbW9yZSB0aGVuIGEgaGFsZiAqLw0KISAJ
CWRlc2MtPmNvbnRyb2wgPSAoc2MtPnBlbmRpbmdfdHhzPlRYX1JJTkdfU0la
RS8yKT8weDA1OjB4MDE7DQogICNlbHNlDQohIAkJZm9yIChsZW4gPSAwOyBt
MCAhPSAwOyBtMCA9IG0wLT5tX25leHQpIHsNCiEgCQkJYmNvcHkobXRvZCht
MCwgY2FkZHJfdCksIGJ1Zi0+ZGF0YSArIGxlbiwgbTAtPm1fbGVuKTsNCiEg
CQkJbGVuICs9IG0wLT5tX2xlbjsNCiEgCQl9DQogIA0KICAJCS8qIERvZXMg
bm90IGdlbmVyYXRlIFRYQyB1bmxlc3MgcmluZyBpcyBmdWxsIG1vcmUgdGhl
biBhIGhhbGYgKi8NCiEgCQlkZXNjLT5jb250cm9sID0gKHNjLT5wZW5kaW5n
X3R4cz5UWF9SSU5HX1NJWkUvMik/MHgxNDoweDEwOw0KICAjZW5kaWYNCiAg
DQogIAkJLyogUGFja2V0IHNob3VsZCBiZSBhdCBsZWFzdCBFVEhFUl9NSU5f
TEVOICovDQotLS0gMjY2LDI5NCAtLS0tDQogIAkJCQljb250aW51ZTsNCiAg
CQkJfQ0KICANCiEgCQkJbGVuID0gbS0+bV9wa3RoZHIubGVuOw0KISAJCQlt
X2NvcHlkYXRhKCBtLCAwLCBsZW4sIG10b2QobTAsY2FkZHJfdCkgKTsNCiEg
CQkJbTAtPm1fcGt0aGRyLmxlbiA9IGxlbjsNCiEgCQkJbTAtPm1fcGt0aGRy
LnJjdmlmID0gJnNjLT5lcGljX2lmOw0KISAJCQltMC0+bV9sZW4gPSBsZW47
DQohIA0KISAJCQltX2ZyZWVtKG0pOw0KISAJCQlidWYtPm1idWYgPSBtID0g
bTA7DQogIAkJCWZsaXN0LT5udW1mcmFncyA9IDE7DQogIAkJCWZsaXN0LT5m
cmFnWzBdLmZyYWdsZW4gPSBsZW47DQogIAkJCWZsaXN0LT5mcmFnWzBdLmZy
YWdhZGRyID0gdnRvcGh5cyggbXRvZChtMCwgY2FkZHJfdCkgKTsNCiAgCQl9
DQogIA0KICAJCS8qIERvZXMgbm90IGdlbmVyYXRlIFRYQyB1bmxlc3Mgcmlu
ZyBpcyBmdWxsIG1vcmUgdGhlbiBhIGhhbGYgKi8NCiEgCQkvKmRlc2MtPmNv
bnRyb2wgPSAoc2MtPnBlbmRpbmdfdHhzPlRYX1JJTkdfU0laRS8yKT8weDA1
OjB4MDE7ICovDQohIAkJZGVzYy0+Y29udHJvbCA9IDB4MDE7DQogICNlbHNl
DQohIAkJbGVuID0gbS0+bV9wa3RoZHIubGVuOw0KISAJCW1fY29weWRhdGEo
IG0sIDAsIGxlbiwgYnVmLT5kYXRhICk7DQogIA0KICAJCS8qIERvZXMgbm90
IGdlbmVyYXRlIFRYQyB1bmxlc3MgcmluZyBpcyBmdWxsIG1vcmUgdGhlbiBh
IGhhbGYgKi8NCiEgCQkvKmRlc2MtPmNvbnRyb2wgPSAoc2MtPnBlbmRpbmdf
dHhzPlRYX1JJTkdfU0laRS8yKT8weDE0OjB4MTA7Ki8NCiEgCQlkZXNjLT5j
b250cm9sID0gMHgxMDsNCiAgI2VuZGlmDQogIA0KICAJCS8qIFBhY2tldCBz
aG91bGQgYmUgYXQgbGVhc3QgRVRIRVJfTUlOX0xFTiAqLw0KKioqKioqKioq
KioqKioqDQoqKiogMjg1LDI5MCAqKioqDQotLS0gMjk3LDMwNSAtLS0tDQog
IAkJLyogUGFzcyBvd25lcnNoaXAgdG8gdGhlIGNoaXAgKi8NCiAgCQlkZXNj
LT5zdGF0dXMgPSAweDgwMDA7DQogIA0KKyAJCS8qIFRyaWdnZXIgYW4gaW1t
ZWRpYXRlIHRyYW5zbWl0IGRlbWFuZC4gKi8NCisgCQlDU1JfV1JJVEVfNCgg
c2MsIENPTU1BTkQsIENPTU1BTkRfVFhRVUVVRUQgKTsNCisgDQogIAkJLyog
U2V0IHdhdGNoZG9nIHRpbWVyICovDQogIAkJaWZwLT5pZl90aW1lciA9IDI7
DQogIA0KKioqKioqKioqKioqKioqDQoqKiogMjk2LDMwMyAqKioqDQogIAkJ
LyogV2UgZG9uJ3QgbmVlZCBtYnVmIGFueXdheSAqLw0KICAJCW1fZnJlZW0o
IG0gKTsNCiAgI2VuZGlmDQotIAkJLyogVHJpZ2dlciBhbiBpbW1lZGlhdGUg
dHJhbnNtaXQgZGVtYW5kLiAqLw0KLSAJCUNTUl9XUklURV80KCBzYywgQ09N
TUFORCwgQ09NTUFORF9UWFFVRVVFRCApOw0KICANCiAgCQkvKiBQYWNrZXQg
cXVldWVkIHN1Y2Nlc3NmdWwgKi8NCiAgCQlzYy0+cGVuZGluZ190eHMrKzsN
Ci0tLSAzMTEsMzE2IC0tLS0NCioqKioqKioqKioqKioqKg0KKioqIDMxMywz
MTkgKioqKg0KICB9DQogIA0KICAvKg0KISAgKiAgSUZXQVRDSERPRyBmdW5j
dGlvbg0KICAgKg0KICAgKiBzcGxpbXAoKSBpbnZva2VkIGhlcmUNCiAgICov
DQotLS0gMzI2LDMzMyAtLS0tDQogIH0NCiAgDQogIC8qDQohICAqIFN5bm9w
c2lzOiBUaGlzIG9uZSBpcyBjYWxsZWQgaWYgcGFja2V0cyB3YXNuJ3QgdHJh
bnNtaXR0ZWQNCiEgICogZHVyaW5nIHRpbWVvdXQuDQogICAqDQogICAqIHNw
bGltcCgpIGludm9rZWQgaGVyZQ0KICAgKi8NCioqKioqKioqKioqKioqKg0K
KioqIDMzMCwzMzUgKioqKg0KLS0tIDM0NCwzNTcgLS0tLQ0KICAJcHJpbnRm
KCJ0eCVkOiBkZXZpY2UgdGltZW91dCAlZCBwYWNrZXRzXG4iLA0KICAJCQlz
Yy0+dW5pdCxzYy0+cGVuZGluZ190eHMpOw0KICANCisgI2lmIGRlZmluZWQo
RVBJQ19ERUJVRykNCisgCXByaW50ZigidHglZDogZGlydHlfdHg6ICVkLCBj
dXJfdHg6ICVkXG4iLHNjLT51bml0LHNjLT5kaXJ0eV90eCxzYy0+Y3VyX3R4
KTsNCisgCXByaW50ZigidHglZDogbm90IHRyYW5zbWl0dGVkIGRlc2NzOiAi
LHNjLT51bml0KTsNCisgCWZvcihpPTA7aTxUWF9SSU5HX1NJWkU7aSsrKQ0K
KyAJCWlmKCBzYy0+dHhfZGVzY1tpXS5zdGF0dXMgJiAweDgwMDAgKSBwcmlu
dGYoIiVkICIsaSk7CQ0KKyAJcHJpbnRmKCJcbiIpOw0KKyAjZW5kaWYNCisg
DQogIAlpZnAtPmlmX29lcnJvcnMrPXNjLT5wZW5kaW5nX3R4czsNCiAgDQog
IAllcGljX3N0b3Aoc2MpOw0KKioqKioqKioqKioqKioqDQoqKiogMzcwLDM3
NSAqKioqDQotLS0gMzkyLDM5OCAtLS0tDQogIA0KICAJCS8qIENoZWNrIGZv
ciBlcnJvcnMgKi8NCiAgCQlpZiggIShkZXNjLT5zdGF0dXMgJiAxKSApIHsN
CisgCQkJZHByaW50ZigoInR4JWQ6IHJlY2VpdmUgZXJyb3IsIHN0YXR1czog
JXhcbiIsc2MtPnVuaXQsZGVzYy0+c3RhdHVzKSk7DQogIAkJCXNjLT5lcGlj
X2lmLmlmX2llcnJvcnMrKzsNCiAgCQkJZ290byByeGVycm9yOw0KICAJCX0N
CioqKioqKioqKioqKioqKg0KKioqIDQ3Nyw0ODMgKioqKg0KICAJaW50IGNv
bGw7DQogIAl1X2ludDE2X3Qgc3R0Ow0KICANCiEgCXdoaWxlKCBpKysgPCBU
WF9SSU5HX1NJWkUgKXsNCiAgCQlzdHJ1Y3QgZXBpY190eF9idWZmZXIgKmJ1
ZiA9IHNjLT50eF9idWZmZXIgKyBzYy0+ZGlydHlfdHg7DQogIAkJc3RydWN0
IGVwaWNfdHhfZGVzYyAqZGVzYyA9IHNjLT50eF9kZXNjICsgc2MtPmRpcnR5
X3R4Ow0KICAjaWYgZGVmaW5lZChUWF9GUkFHX0xJU1QpDQotLS0gNTAwLDUw
NiAtLS0tDQogIAlpbnQgY29sbDsNCiAgCXVfaW50MTZfdCBzdHQ7DQogIA0K
ISAJd2hpbGUoIHNjLT5wZW5kaW5nX3R4cyA+IDAgKXsNCiAgCQlzdHJ1Y3Qg
ZXBpY190eF9idWZmZXIgKmJ1ZiA9IHNjLT50eF9idWZmZXIgKyBzYy0+ZGly
dHlfdHg7DQogIAkJc3RydWN0IGVwaWNfdHhfZGVzYyAqZGVzYyA9IHNjLT50
eF9kZXNjICsgc2MtPmRpcnR5X3R4Ow0KICAjaWYgZGVmaW5lZChUWF9GUkFH
X0xJU1QpDQoqKioqKioqKioqKioqKioNCioqKiA1NjYsNjAwICoqKioNCiAg
CWVwaWNfc29mdGNfdCAqIHNjID0gKGVwaWNfc29mdGNfdCAqKSBhcmc7DQog
ICAgICAgICAgaW50IHN0YXR1czsNCiAgDQohIAlzdGF0dXMgPSBDU1JfUkVB
RF80KCBzYywgSU5UU1RBVCk7DQogIAlDU1JfV1JJVEVfNCggc2MsIElOVFNU
QVQsIHN0YXR1cyAmICgNCiEgCQlJTlRTVEFUX1JRRXxJTlRTVEFUX0hDQ3xJ
TlRTVEFUX1JDQ3wNCiAgCQlJTlRTVEFUX1RYQ3xJTlRTVEFUX1RDQ3xJTlRT
VEFUX1RRRXwNCiAgCQlJTlRTVEFUX0ZBVEFMfElOVFNUQVRfR1AyfA0KICAJ
CUlOVFNUQVRfQ05UfElOVFNUQVRfVFhVfElOVFNUQVRfT1ZXfElOVFNUQVRf
UlhFICkgKTsNCiAgDQohIAlpZiggc3RhdHVzICYgKElOVFNUQVRfUlFFfElO
VFNUQVRfSENDfElOVFNUQVRfUkNDKSApIHsNCiAgCQllcGljX3J4X2RvbmUo
IHNjICk7DQohIAkJaWYoIHN0YXR1cyAmIElOVFNUQVRfUlFFICkgDQogIAkJ
CUNTUl9XUklURV80KCBzYywgQ09NTUFORCwgQ09NTUFORF9SWFFVRVVFRCAp
Ow0KICAJfQ0KICANCiAgCWlmKCBzdGF0dXMgJiAoSU5UU1RBVF9UWEN8SU5U
U1RBVF9UQ0N8SU5UU1RBVF9UUUUpICkNCiAgCQllcGljX3R4X2RvbmUoIHNj
ICk7DQogIA0KLSAJaWYoIChzdGF0dXMgJiBJTlRTVEFUX1RRRSkgJiYgIShz
Yy0+ZXBpY19pZi5pZl9mbGFncyAmIElGRl9PQUNUSVZFKSApDQotIAkJZXBp
Y19pZnN0YXJ0KCAmc2MtPmVwaWNfaWYgKTsNCi0gDQogIAlpZiggKHN0YXR1
cyAmIElOVFNUQVRfR1AyKSAmJiAoUVM2NjEyX09VSSA9PSBzYy0+cGh5aWQp
ICkgew0KICAJCXVfaW50MzJfdCBzdGF0dXM7DQogIA0KICAJCXN0YXR1cyA9
IGVwaWNfcmVhZF9waHlfcmVnaXN0ZXIoIHNjLCBRUzY2MTJfSU5UU1RBVCAp
Ow0KICANCiEgCQlpZiggKHN0YXR1cyAmIElOVFNUQVRfQU5fQ09NUExFVEUp
ICYmIA0KISAJCSAgICAoZXBpY19hdXRvbmVnKHNjKSA9PSBFUElDX0ZVTExf
RFVQTEVYKSApIHsNCiAgCQkJc3RhdHVzID0gQk1DUl9GVUxMX0RVUExFWCB8
IGVwaWNfcmVhZF9waHlfcmVnaXN0ZXIoIHNjLCBEUDgzODQwX0JNQ1IgKTsN
CiEgCQkJQ1NSX1dSSVRFXzQoIHNjLCBUWENPTiwNCiEgCQkJCVRYQ09OX0xP
T1BCQUNLX01PREVfRlVMTF9EVVBMRVh8VFhDT05fREVGQVVMVCApOw0KICAJ
CX0gZWxzZSB7DQogIAkJCXN0YXR1cyA9IH5CTUNSX0ZVTExfRFVQTEVYICYg
ZXBpY19yZWFkX3BoeV9yZWdpc3Rlciggc2MsIERQODM4NDBfQk1DUiApOw0K
ICAJCQlDU1JfV1JJVEVfNCggc2MsIFRYQ09OLCBUWENPTl9ERUZBVUxUICk7
DQotLS0gNTg5LDYzNiAtLS0tDQogIAllcGljX3NvZnRjX3QgKiBzYyA9IChl
cGljX3NvZnRjX3QgKikgYXJnOw0KICAgICAgICAgIGludCBzdGF0dXM7DQog
IA0KISBpbnRsb29wOg0KISAJc3RhdHVzID0gQ1NSX1JFQURfNCggc2MsIElO
VFNUQVQgKTsNCiEgDQohICNpZiBkZWZpbmVkKEVQSUNfREVCVUcpDQohIAlp
ZiggKHN0YXR1cyAmIElOVFNUQVRfVFFFKSAmJiAoc2MtPmVwaWNfaWYuaWZf
ZmxhZ3MgJiBJRkZfREVCVUcpICl7DQohIAkJcHJpbnRmKCJ0eCVkOiBUUUUg
b2NjdXJlZCwgZm9yY2VkIGVwaWNfc3RvcCgpIC0gZXBpY19pbml0KClcbiIs
c2MtPnVuaXQpOw0KISAJCWVwaWNfc3RvcCggc2MgKTsNCiEgCQllcGljX2lu
aXQoIHNjICk7DQohIAl9DQohICNlbmRpZg0KISANCiAgCUNTUl9XUklURV80
KCBzYywgSU5UU1RBVCwgc3RhdHVzICYgKA0KISAJCUlOVFNUQVRfUlFFfElO
VFNUQVRfUkNDfA0KICAJCUlOVFNUQVRfVFhDfElOVFNUQVRfVENDfElOVFNU
QVRfVFFFfA0KICAJCUlOVFNUQVRfRkFUQUx8SU5UU1RBVF9HUDJ8DQogIAkJ
SU5UU1RBVF9DTlR8SU5UU1RBVF9UWFV8SU5UU1RBVF9PVld8SU5UU1RBVF9S
WEUgKSApOw0KICANCiEgCWlmKCBzdGF0dXMgJiAoSU5UU1RBVF9SUUV8SU5U
U1RBVF9SQ0N8SU5UU1RBVF9PVlcpICkgew0KICAJCWVwaWNfcnhfZG9uZSgg
c2MgKTsNCiEgCQlpZiggc3RhdHVzICYgSU5UU1RBVF9SUUUgKSB7DQohIAkJ
CWRwcmludGYoKCJ0eCVkOiBSeCBGSUZPIG92ZXJmbG93ZWQsIHJlc3RhcnRp
bmcgcmVjZWl2ZXJcbiIsc2MtPnVuaXQpKTsNCiAgCQkJQ1NSX1dSSVRFXzQo
IHNjLCBDT01NQU5ELCBDT01NQU5EX1JYUVVFVUVEICk7DQorIAkJCXNjLT5l
cGljX2lmLmlmX2llcnJvcnMrKzsNCisgCQl9DQorIAkJaWYoIHN0YXR1cyAm
IElOVFNUQVRfT1ZXICkgew0KKyAJCQlkcHJpbnRmKCgidHglZDogb25jaGlw
IFJ4IGJ1ZmZlciBvdmVyZmxvd2VkLCByZXN0YXJ0aW5nIHJlY2VpdmVyXG4i
LHNjLT51bml0KSk7DQorIAkJCUNTUl9XUklURV80KCBzYywgQ09NTUFORCwg
Q09NTUFORF9SWFFVRVVFRCApOw0KKyAJCQlzYy0+ZXBpY19pZi5pZl9pZXJy
b3JzKys7DQorIAkJfQ0KICAJfQ0KICANCiAgCWlmKCBzdGF0dXMgJiAoSU5U
U1RBVF9UWEN8SU5UU1RBVF9UQ0N8SU5UU1RBVF9UUUUpICkNCiAgCQllcGlj
X3R4X2RvbmUoIHNjICk7DQogIA0KICAJaWYoIChzdGF0dXMgJiBJTlRTVEFU
X0dQMikgJiYgKFFTNjYxMl9PVUkgPT0gc2MtPnBoeWlkKSApIHsNCiAgCQl1
X2ludDMyX3Qgc3RhdHVzOw0KICANCiAgCQlzdGF0dXMgPSBlcGljX3JlYWRf
cGh5X3JlZ2lzdGVyKCBzYywgUVM2NjEyX0lOVFNUQVQgKTsNCiAgDQohIAkJ
aWYoIChzdGF0dXMgJiBJTlRTVEFUX0FOX0NPTVBMRVRFKSAmJiAoZXBpY19h
dXRvbmVnKHNjKSA9PSBFUElDX0ZVTExfRFVQTEVYKSApIHsNCiAgCQkJc3Rh
dHVzID0gQk1DUl9GVUxMX0RVUExFWCB8IGVwaWNfcmVhZF9waHlfcmVnaXN0
ZXIoIHNjLCBEUDgzODQwX0JNQ1IgKTsNCiEgCQkJQ1NSX1dSSVRFXzQoIHNj
LCBUWENPTiwgVFhDT05fRlVMTF9EVVBMRVggfCBUWENPTl9ERUZBVUxUICk7
DQogIAkJfSBlbHNlIHsNCiAgCQkJc3RhdHVzID0gfkJNQ1JfRlVMTF9EVVBM
RVggJiBlcGljX3JlYWRfcGh5X3JlZ2lzdGVyKCBzYywgRFA4Mzg0MF9CTUNS
ICk7DQogIAkJCUNTUl9XUklURV80KCBzYywgVFhDT04sIFRYQ09OX0RFRkFV
TFQgKTsNCioqKioqKioqKioqKioqKg0KKioqIDYwMyw2MTcgKioqKg0KICAJ
CS8qIFRoZXJlIGlzIGFwcGFyZW50bHkgUVM2NjEyIGNoaXAgYnVnOiAqLw0K
ICAJCS8qIEJNQ1JfRlVMTF9EVVBMRVggZmxhZyBpcyBub3QgdXBkYXRlZCBi
eSAqLw0KICAJCS8qIGF1dG9uZWdvdGlhdGlvbiBwcm9jZXNzLCBzbyB1cGRh
dGUgaXQgYnkgaGFuZHMgKi8NCiEgCQllcGljX3dyaXRlX3BoeV9yZWdpc3Rl
ciggc2MsIERQODM4NDBfQk1DUiwgc3RhdHVzKTsNCiAgDQogIAkJLyogV2Ug
c2hvdWxkIGNsZWFyIEdQMiBpbnQgYWdhaW4gYWZ0ZXIgd2UgY2xlYXIgaXQg
b24gUEhZICovDQogIAkJQ1NSX1dSSVRFXzQoIHNjLCBJTlRTVEFULCBJTlRT
VEFUX0dQMiApOyANCiAgCX0NCiAgDQogIAlpZiggc3RhdHVzICYgKElOVFNU
QVRfRkFUQUx8SU5UU1RBVF9QTUF8SU5UU1RBVF9QVEF8SU5UU1RBVF9BUEV8
SU5UU1RBVF9EUEUpICl7DQogIAkJaW50IGo7DQohIAkJc3RydWN0IGVwaWNf
dHhfZGVzYyAqZGVzYzsNCiAgDQogIAkJcHJpbnRmKCJ0eCVkOiBQQ0kgZmF0
YWwgZXJyb3Igb2NjdXJlZCAoJXMlcyVzJXMpXG4iLA0KICAJCQlzYy0+dW5p
dCwNCi0tLSA2MzksNjU2IC0tLS0NCiAgCQkvKiBUaGVyZSBpcyBhcHBhcmVu
dGx5IFFTNjYxMiBjaGlwIGJ1ZzogKi8NCiAgCQkvKiBCTUNSX0ZVTExfRFVQ
TEVYIGZsYWcgaXMgbm90IHVwZGF0ZWQgYnkgKi8NCiAgCQkvKiBhdXRvbmVn
b3RpYXRpb24gcHJvY2Vzcywgc28gdXBkYXRlIGl0IGJ5IGhhbmRzICovDQoh
IAkJZXBpY193cml0ZV9waHlfcmVnaXN0ZXIoc2MsIERQODM4NDBfQk1DUiwg
c3RhdHVzKTsNCiAgDQogIAkJLyogV2Ugc2hvdWxkIGNsZWFyIEdQMiBpbnQg
YWdhaW4gYWZ0ZXIgd2UgY2xlYXIgaXQgb24gUEhZICovDQogIAkJQ1NSX1dS
SVRFXzQoIHNjLCBJTlRTVEFULCBJTlRTVEFUX0dQMiApOyANCiAgCX0NCiAg
DQogIAlpZiggc3RhdHVzICYgKElOVFNUQVRfRkFUQUx8SU5UU1RBVF9QTUF8
SU5UU1RBVF9QVEF8SU5UU1RBVF9BUEV8SU5UU1RBVF9EUEUpICl7DQorICNp
ZiBkZWZpbmVkKEVQSUNfREVCVUcpDQogIAkJaW50IGo7DQohIAkJc3RydWN0
IGVwaWNfdHhfZGVzYyAqdGRlc2M7DQohIAkJc3RydWN0IGVwaWNfcnhfZGVz
YyAqcmRlc2M7DQohICNlbmRpZg0KICANCiAgCQlwcmludGYoInR4JWQ6IFBD
SSBmYXRhbCBlcnJvciBvY2N1cmVkICglcyVzJXMlcylcbiIsDQogIAkJCXNj
LT51bml0LA0KKioqKioqKioqKioqKioqDQoqKiogNjIxLDYzNSAqKioqDQog
IAkJCShzdGF0dXMmSU5UU1RBVF9EUEUpPyIgRFBFIjoiIik7DQogIA0KICAj
aWYgZGVmaW5lZChFUElDX0RFQlVHKQ0KISAJCXByaW50ZigidHglZDogZHVt
cGluZyBkZXNjcmlwdG9yc1xuIixzYy0+dW5pdCk7DQogIAkJZm9yKGo9MDtq
PFRYX1JJTkdfU0laRTtqKyspew0KISAJCQlkZXNjID0gc2MtPnR4X2Rlc2Mg
KyBqOw0KISAJCQlwcmludGYoImRlc2MlZDogJWQgJTA0eCwgJTA4eCwgJTA0
eCAlZCwgJTA4eFxuIiwNCiAgCQkJCWosDQohIAkJCQlkZXNjLT50eGxlbmd0
aCxkZXNjLT5zdGF0dXMsDQohIAkJCQlkZXNjLT5idWZhZGRyLA0KISAJCQkJ
ZGVzYy0+Y29udHJvbCxkZXNjLT5idWZsZW5ndGgsDQohIAkJCQlkZXNjLT5u
ZXh0DQogIAkJCSk7DQogIAkJfQ0KICAjZW5kaWYNCi0tLSA2NjAsNjg2IC0t
LS0NCiAgCQkJKHN0YXR1cyZJTlRTVEFUX0RQRSk/IiBEUEUiOiIiKTsNCiAg
DQogICNpZiBkZWZpbmVkKEVQSUNfREVCVUcpDQohIAkJcHJpbnRmKCJ0eCVk
OiBQUkNEQVI6IDB4JTA4eCwgUFRDREFSOiAweCUwOHhcbiIsc2MtPnVuaXQs
Q1NSX1JFQURfNChzYyxQUkNEQVIpLENTUl9SRUFEXzQoc2MsUFRDREFSKSk7
DQohIAkJcHJpbnRmKCJ0eCVkOiBkdW1waW5nIHR4IGRlc2NyaXB0b3JzXG4i
LHNjLT51bml0KTsNCiAgCQlmb3Ioaj0wO2o8VFhfUklOR19TSVpFO2orKyl7
DQohIAkJCXRkZXNjID0gc2MtPnR4X2Rlc2MgKyBqOw0KISAJCQlwcmludGYo
ImRlc2MlZDogJTRkIDB4JTA0eCwgMHglMDh4LCAweCUwNHggJTRkLCAweCUw
OHhcbiIsDQogIAkJCQlqLA0KISAJCQkJdGRlc2MtPnR4bGVuZ3RoLHRkZXNj
LT5zdGF0dXMsDQohIAkJCQl0ZGVzYy0+YnVmYWRkciwNCiEgCQkJCXRkZXNj
LT5jb250cm9sLHRkZXNjLT5idWZsZW5ndGgsDQohIAkJCQl0ZGVzYy0+bmV4
dA0KISAJCQkpOw0KISAJCX0NCiEgCQlwcmludGYoInR4JWQ6IGR1bXBpbmcg
cnggZGVzY3JpcHRvcnNcbiIsc2MtPnVuaXQpOw0KISAJCWZvcihqPTA7ajxS
WF9SSU5HX1NJWkU7aisrKXsNCiEgCQkJcmRlc2MgPSBzYy0+cnhfZGVzYyAr
IGo7DQohIAkJCXByaW50ZigiZGVzYyVkOiAlNGQgMHglMDR4LCAweCUwOHgs
ICU0ZCwgMHglMDh4XG4iLA0KISAJCQkJaiwNCiEgCQkJCXJkZXNjLT5yeGxl
bmd0aCxyZGVzYy0+c3RhdHVzLA0KISAJCQkJcmRlc2MtPmJ1ZmFkZHIsDQoh
IAkJCQlyZGVzYy0+YnVmbGVuZ3RoLA0KISAJCQkJcmRlc2MtPm5leHQNCiAg
CQkJKTsNCiAgCQl9DQogICNlbmRpZg0KKioqKioqKioqKioqKioqDQoqKiog
NjQwLDY2NyAqKioqDQogIAl9DQogIA0KICAgICAgICAgIC8qIFVQREFURSBz
dGF0aXN0aWNzICovDQohIAlpZiAoc3RhdHVzICYgKElOVFNUQVRfQ05UIHwg
SU5UU1RBVF9UWFUgfCBJTlRTVEFUX09WVyB8IElOVFNUQVRfUlhFKSkgew0K
ICANCiAgCQkvKiB1cGRhdGUgZG90MyBSeCBzdGF0aXN0aWNzICovDQohIAkJ
c2MtPmRvdDNzdGF0cy5kb3QzU3RhdHNNaXNzZWRGcmFtZXMgKz0gQ1NSX1JF
QURfMSggc2MsIE1QQ05UKTsNCiEgCQlzYy0+ZG90M3N0YXRzLmRvdDNTdGF0
c0ZyYW1lVG9vTG9uZ3MgKz0gQ1NSX1JFQURfMSggc2MsIEFMSUNOVCk7DQoh
IAkJc2MtPmRvdDNzdGF0cy5kb3QzU3RhdHNGQ1NFcnJvcnMgKz0gQ1NSX1JF
QURfMSggc2MsIENSQ0NOVCk7DQogIA0KICAJCS8qIFVwZGF0ZSBpZiBSeCBz
dGF0aXN0aWNzICovDQohIAkJaWYgKHN0YXR1cyAmIChJTlRTVEFUX09WVyB8
IElOVFNUQVRfUlhFKSkNCiAgCQkJc2MtPmVwaWNfaWYuaWZfaWVycm9ycysr
Ow0KICANCiAgCQkvKiBUeCBGSUZPIHVuZGVyZmxvdy4gKi8NCiAgCQlpZiAo
c3RhdHVzICYgSU5UU1RBVF9UWFUpIHsNCiAgCQkJLyogSW5jLiBjb3VudGVy
cyAqLw0KICAJCQlzYy0+ZG90M3N0YXRzLmRvdDNTdGF0c0ludGVybmFsTWFj
VHJhbnNtaXRFcnJvcnMrKzsNCiAgCQkJc2MtPmVwaWNfaWYuaWZfb2Vycm9y
cysrOw0KICANCiAgCQkJLyogUmVzdGFydCB0aGUgdHJhbnNtaXQgcHJvY2Vz
cy4gKi8NCiEgCQkJQ1NSX1dSSVRFXzQoc2MsIENPTU1BTkQsIENPTU1BTkRf
VFhVR08pOw0KICAJCX0NCiAgCX0NCiAgDQogIAkvKiBJZiBubyBwYWNrZXRz
IGFyZSBwZW5kaW5nLCB0aHVzIG5vIHRpbWVvdXRzICovDQogIAlpZiggc2Mt
PnBlbmRpbmdfdHhzID09IDAgKQ0KICAJCXNjLT5lcGljX2lmLmlmX3RpbWVy
ID0gMDsNCi0tLSA2OTEsNzIzIC0tLS0NCiAgCX0NCiAgDQogICAgICAgICAg
LyogVVBEQVRFIHN0YXRpc3RpY3MgKi8NCiEgCWlmIChzdGF0dXMgJiAoSU5U
U1RBVF9DTlQgfCBJTlRTVEFUX1RYVSB8IElOVFNUQVRfUlhFKSkgew0KICAN
CiAgCQkvKiB1cGRhdGUgZG90MyBSeCBzdGF0aXN0aWNzICovDQohIAkJc2Mt
PmRvdDNzdGF0cy5kb3QzU3RhdHNNaXNzZWRGcmFtZXMgKz0gQ1NSX1JFQURf
MShzYywgTVBDTlQpOw0KISAJCXNjLT5kb3Qzc3RhdHMuZG90M1N0YXRzRnJh
bWVUb29Mb25ncyArPSBDU1JfUkVBRF8xKHNjLCBBTElDTlQpOw0KISAJCXNj
LT5kb3Qzc3RhdHMuZG90M1N0YXRzRkNTRXJyb3JzICs9IENTUl9SRUFEXzEo
c2MsIENSQ0NOVCk7DQogIA0KICAJCS8qIFVwZGF0ZSBpZiBSeCBzdGF0aXN0
aWNzICovDQohIAkJaWYgKHN0YXR1cyAmIElOVFNUQVRfUlhFKSB7DQohIAkJ
CWRwcmludGYoKCJ0eCVkOiBDUkMvQWxpZ25tZW50IGVycm9yXG4iLHNjLT51
bml0KSk7DQogIAkJCXNjLT5lcGljX2lmLmlmX2llcnJvcnMrKzsNCisgCQl9
DQogIA0KICAJCS8qIFR4IEZJRk8gdW5kZXJmbG93LiAqLw0KICAJCWlmIChz
dGF0dXMgJiBJTlRTVEFUX1RYVSkgew0KKyAJCQlkcHJpbnRmKCgidHglZDog
VHggdW5kZXJydW4gZXJyb3IsIHJlc3RhcnRpbmcgdHJhbmNpZXZlclxuIixz
Yy0+dW5pdCkpOw0KICAJCQkvKiBJbmMuIGNvdW50ZXJzICovDQogIAkJCXNj
LT5kb3Qzc3RhdHMuZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9y
cysrOw0KICAJCQlzYy0+ZXBpY19pZi5pZl9vZXJyb3JzKys7DQogIA0KICAJ
CQkvKiBSZXN0YXJ0IHRoZSB0cmFuc21pdCBwcm9jZXNzLiAqLw0KISAJCQlD
U1JfV1JJVEVfNChzYywgQ09NTUFORCwgQ09NTUFORF9UWFVHTyB8IENPTU1B
TkRfVFhRVUVVRUQpOw0KICAJCX0NCiAgCX0NCiAgDQorIAlpZiggQ1NSX1JF
QURfNCggc2MsIElOVFNUQVQgKSAmIElOVFNUQVRfSU5UX0FDVFYgKSBnb3Rv
IGludGxvb3A7DQorIA0KICAJLyogSWYgbm8gcGFja2V0cyBhcmUgcGVuZGlu
ZywgdGh1cyBubyB0aW1lb3V0cyAqLw0KICAJaWYoIHNjLT5wZW5kaW5nX3R4
cyA9PSAwICkNCiAgCQlzYy0+ZXBpY19pZi5pZl90aW1lciA9IDA7DQoqKioq
KioqKioqKioqKioNCioqKiA3MjQsNzQxICoqKioNCiAgDQogIAkvKiBQcmVp
bml0aWFsaXplIHNvZnRjIHN0cnVjdHVyZSAqLw0KICAgICAgCWJ6ZXJvKHNj
LCBzaXplb2YoZXBpY19zb2Z0Y190KSk7CQkNCi0gCWVwaWNzWyB1bml0IF0g
PSBzYzsNCiAgCXNjLT51bml0ID0gdW5pdDsNCiAgDQogIAkvKiBHZXQgaW9i
YXNlIG9yIG1lbWJhc2UgKi8NCiAgI2lmIGRlZmluZWQoRVBJQ19VU0VJT1NQ
QUNFKQ0KICAJaWYgKCFwY2lfbWFwX3BvcnQoY29uZmlnX2lkLCBQQ0lfQ0JJ
TywodV9zaG9ydCAqKSAmKHNjLT5pb2Jhc2UpKSkgew0KICAJCXByaW50Zigi
dHglZDogY2Fubm90IG1hcCBwb3J0XG4iLHVuaXQpOw0KICAJCXJldHVybjsN
CiAgCX0NCiAgI2Vsc2UNCiAgCWlmICghcGNpX21hcF9tZW0oY29uZmlnX2lk
LCBQQ0lfQ0JNQSwodm1fb2Zmc2V0X3QgKikgJihzYy0+Y3NyKSwodm1fb2Zm
c2V0X3QgKikgJnBtZW1iYXNlKSkgew0KICAJCXByaW50ZigidHglZDogY2Fu
bm90IG1hcCBtZW1vcnlcbiIsdW5pdCk7IA0KICAJCXJldHVybjsNCiAgCX0N
CiAgI2VuZGlmDQotLS0gNzgwLDc5OCAtLS0tDQogIA0KICAJLyogUHJlaW5p
dGlhbGl6ZSBzb2Z0YyBzdHJ1Y3R1cmUgKi8NCiAgICAgIAliemVybyhzYywg
c2l6ZW9mKGVwaWNfc29mdGNfdCkpOwkJDQogIAlzYy0+dW5pdCA9IHVuaXQ7
DQogIA0KICAJLyogR2V0IGlvYmFzZSBvciBtZW1iYXNlICovDQogICNpZiBk
ZWZpbmVkKEVQSUNfVVNFSU9TUEFDRSkNCiAgCWlmICghcGNpX21hcF9wb3J0
KGNvbmZpZ19pZCwgUENJX0NCSU8sKHVfc2hvcnQgKikgJihzYy0+aW9iYXNl
KSkpIHsNCiAgCQlwcmludGYoInR4JWQ6IGNhbm5vdCBtYXAgcG9ydFxuIix1
bml0KTsNCisgCQlmcmVlKHNjLCBNX0RFVkJVRik7DQogIAkJcmV0dXJuOw0K
ICAJfQ0KICAjZWxzZQ0KICAJaWYgKCFwY2lfbWFwX21lbShjb25maWdfaWQs
IFBDSV9DQk1BLCh2bV9vZmZzZXRfdCAqKSAmKHNjLT5jc3IpLCh2bV9vZmZz
ZXRfdCAqKSAmcG1lbWJhc2UpKSB7DQogIAkJcHJpbnRmKCJ0eCVkOiBjYW5u
b3QgbWFwIG1lbW9yeVxuIix1bml0KTsgDQorIAkJZnJlZShzYywgTV9ERVZC
VUYpOw0KICAJCXJldHVybjsNCiAgCX0NCiAgI2VuZGlmDQoqKioqKioqKioq
KioqKioNCioqKiA3NjQsNzc2ICoqKioNCiAgCQlzYy0+ZXBpY19tYWNhZGRy
WzBdLHNjLT5lcGljX21hY2FkZHJbMV0sc2MtPmVwaWNfbWFjYWRkclsyXSwN
CiAgCQlzYy0+ZXBpY19tYWNhZGRyWzNdLHNjLT5lcGljX21hY2FkZHJbNF0s
c2MtPmVwaWNfbWFjYWRkcls1XSk7DQogIA0KLSANCiAgCXMgPSBzcGxpbXAo
KTsNCiAgDQogIAkvKiBNYXAgaW50ZXJydXB0ICovDQogIAlpZiggIXBjaV9t
YXBfaW50KGNvbmZpZ19pZCwgZXBpY19pbnRyX25vcm1hbCwgKHZvaWQqKXNj
LCAmbmV0X2ltYXNrKSApIHsNCiAgCQlwcmludGYoInR4JWQ6IGNvdWxkbid0
IG1hcCBpbnRlcnJ1cHRcbiIsdW5pdCk7DQotIAkJZXBpY3NbIHVuaXQgXSA9
IE5VTEw7DQogIAkJZnJlZShzYywgTV9ERVZCVUYpOw0KICAJCXJldHVybjsN
CiAgCX0NCi0tLSA4MjEsODMxIC0tLS0NCioqKioqKioqKioqKioqKg0KKioq
IDg2Nyw4NzYgKioqKg0KLS0tIDkyMiw5MzQgLS0tLQ0KICAJLyogaW5pdCBp
Zm1lZGlhIGludGVyZmFjZSAqLw0KICAJaWZtZWRpYV9pbml0KCZzYy0+aWZt
ZWRpYSwwLGVwaWNfaWZtZWRpYV9jaGFuZ2UsZXBpY19pZm1lZGlhX3N0YXR1
cyk7DQogIAlpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEsSUZNX0VUSEVSfElG
TV8xMF9ULDAsTlVMTCk7DQorIAlpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEs
SUZNX0VUSEVSfElGTV8xMF9UfElGTV9MT09QLDAsTlVMTCk7DQogIAlpZm1l
ZGlhX2FkZCgmc2MtPmlmbWVkaWEsSUZNX0VUSEVSfElGTV8xMF9UfElGTV9G
RFgsMCxOVUxMKTsNCiAgCWlmbWVkaWFfYWRkKCZzYy0+aWZtZWRpYSxJRk1f
RVRIRVJ8SUZNXzEwMF9UWCwwLE5VTEwpOw0KKyAJaWZtZWRpYV9hZGQoJnNj
LT5pZm1lZGlhLElGTV9FVEhFUnxJRk1fMTAwX1RYfElGTV9MT09QLDAsTlVM
TCk7DQogIAlpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEsSUZNX0VUSEVSfElG
TV8xMDBfVFh8SUZNX0ZEWCwwLE5VTEwpOw0KICAJaWZtZWRpYV9hZGQoJnNj
LT5pZm1lZGlhLElGTV9FVEhFUnxJRk1fQVVUTywwLE5VTEwpOw0KKyAJaWZt
ZWRpYV9hZGQoJnNjLT5pZm1lZGlhLElGTV9FVEhFUnxJRk1fTE9PUCwwLE5V
TEwpOw0KICAJaWZtZWRpYV9zZXQoJnNjLT5pZm1lZGlhLCBtZWRpYSk7DQog
ICNlbmRpZg0KICANCioqKioqKioqKioqKioqKg0KKioqIDg4NCw4OTIgKioq
Kg0KICAJLyogU2V0IHNodXQgZG93biByb3V0aW5lIHRvIHN0b3AgRE1BIHBy
b2Nlc3NlcyBvbiByZWJvb3QgKi8NCiAgCWF0X3NodXRkb3duKGVwaWNfc2h1
dGRvd24sIHNjLCBTSFVURE9XTl9QT1NUX1NZTkMpOw0KICANCiEgCS8qDQoh
IAkgKiAgQXR0YWNoIHRvIGlmIG1hbmFnZXINCiEgCSAqLw0KICAJaWZfYXR0
YWNoKGlmcCk7DQogIAlldGhlcl9pZmF0dGFjaChpZnApOw0KICANCi0tLSA5
NDIsOTQ4IC0tLS0NCiAgCS8qIFNldCBzaHV0IGRvd24gcm91dGluZSB0byBz
dG9wIERNQSBwcm9jZXNzZXMgb24gcmVib290ICovDQogIAlhdF9zaHV0ZG93
bihlcGljX3NodXRkb3duLCBzYywgU0hVVERPV05fUE9TVF9TWU5DKTsNCiAg
DQohIAkvKiAgQXR0YWNoIHRvIGlmIG1hbmFnZXIgKi8NCiAgCWlmX2F0dGFj
aChpZnApOw0KICAJZXRoZXJfaWZhdHRhY2goaWZwKTsNCiAgDQoqKioqKioq
KioqKioqKioNCioqKiA5MzcsOTQ3ICoqKioNCiAgCWlmbXItPmlmbV9zdGF0
dXMgfD0gSUZNX0FDVElWRTsNCiAgCWlmbXItPmlmbV9hY3RpdmUgfD0gKGJt
Y3ImQk1DUl8xMDBNQlBTKT9JRk1fMTAwX1RYOklGTV8xMF9UOw0KICAJaWZt
ci0+aWZtX2FjdGl2ZSB8PSAoYm1jciZCTUNSX0ZVTExfRFVQTEVYKT9JRk1f
RkRYOjA7DQogIH0NCiAgI2VuZGlmDQogIA0KICAvKg0KISAgKiBJRklOSVQg
ZnVuY3Rpb24NCiAgICogDQogICAqIHNwbGltcCgpIGludm9rZWQgaGVyZQ0K
ICAgKi8NCi0tLSA5OTMsMTAwNCAtLS0tDQogIAlpZm1yLT5pZm1fc3RhdHVz
IHw9IElGTV9BQ1RJVkU7DQogIAlpZm1yLT5pZm1fYWN0aXZlIHw9IChibWNy
JkJNQ1JfMTAwTUJQUyk/SUZNXzEwMF9UWDpJRk1fMTBfVDsNCiAgCWlmbXIt
PmlmbV9hY3RpdmUgfD0gKGJtY3ImQk1DUl9GVUxMX0RVUExFWCk/SUZNX0ZE
WDowOw0KKyAJaWZtci0+aWZtX2FjdGl2ZSB8PSAoKENTUl9SRUFEXzQoc2Ms
VFhDT04pJlRYQ09OX0xPT1BCQUNLX01PREUpPT1UWENPTl9MT09QQkFDS19N
T0RFX0lOVCk/SUZNX0xPT1A6MDsNCiAgfQ0KICAjZW5kaWYNCiAgDQogIC8q
DQohICAqIFJlc2V0IGNoaXAsIFBIWSwgYWxsb2NhdGUgcmluZ3MNCiAgICog
DQogICAqIHNwbGltcCgpIGludm9rZWQgaGVyZQ0KICAgKi8NCioqKioqKioq
KioqKioqKg0KKioqIDk3OSw5ODYgKioqKg0KICAgICAgICAgIENTUl9XUklU
RV80KCBzYywgTEFOMSwgKCh1X2ludDE2X3QgKilzYy0+ZXBpY19tYWNhZGRy
KVsxXSApOw0KICAJQ1NSX1dSSVRFXzQoIHNjLCBMQU4yLCAoKHVfaW50MTZf
dCAqKXNjLT5lcGljX21hY2FkZHIpWzJdICk7DQogIA0KICAJLyogU2V0IHRy
YW5zbWl0IHRocmVzaG9sZCAqLw0KISAJQ1NSX1dSSVRFXzQoIHNjLCBFVFhU
SFIsIDB4NDAgKTsNCiAgDQogIAkvKiBDb21wdXRlIGFuZCBzZXQgUlhDT04u
ICovDQogIAllcGljX3NldF9yeF9tb2RlKCBzYyApOw0KLS0tIDEwMzYsMTA0
NSAtLS0tDQogICAgICAgICAgQ1NSX1dSSVRFXzQoIHNjLCBMQU4xLCAoKHVf
aW50MTZfdCAqKXNjLT5lcGljX21hY2FkZHIpWzFdICk7DQogIAlDU1JfV1JJ
VEVfNCggc2MsIExBTjIsICgodV9pbnQxNl90ICopc2MtPmVwaWNfbWFjYWRk
cilbMl0gKTsNCiAgDQorICNpZiBkZWZpbmVkKEVBUkxZX1RYKQ0KICAJLyog
U2V0IHRyYW5zbWl0IHRocmVzaG9sZCAqLw0KISAJQ1NSX1dSSVRFXzQoIHNj
LCBFVFhUSFIsIFRSQU5TTUlUX1RIUkVTSE9MRCApOw0KISAjZW5kaWYNCiAg
DQogIAkvKiBDb21wdXRlIGFuZCBzZXQgUlhDT04uICovDQogIAllcGljX3Nl
dF9yeF9tb2RlKCBzYyApOw0KKioqKioqKioqKioqKioqDQoqKiogOTkzLDEw
MTEgKioqKg0KICAJZXBpY19zZXRfbWNfdGFibGUoIHNjICk7DQogIA0KICAJ
LyogRW5hYmxlIGludGVycnVwdHMgYnkgc2V0dGluZyB0aGUgaW50ZXJydXB0
IG1hc2suICovDQohIAlpZiggUVM2NjEyX09VSSA9PSBzYy0+cGh5aWQgKSB7
DQohIAkJQ1NSX1dSSVRFXzQoIHNjLCBJTlRNQVNLLA0KISAJCQlJTlRTVEFU
X1JDQyB8IElOVFNUQVRfUlFFIHwgSU5UU1RBVF9PVlcgfCBJTlRTVEFUX1JY
RSB8DQohIAkJCUlOVFNUQVRfVFhDIHwgSU5UU1RBVF9UQ0MgfCBJTlRTVEFU
X1RRRSB8IElOVFNUQVRfVFhVIHwNCiEgCQkJSU5UU1RBVF9DTlQgfCBJTlRT
VEFUX0dQMiB8IElOVFNUQVRfRkFUQUwgfA0KISAJCQlJTlRTVEFUX1BUQSB8
IElOVFNUQVRfUE1BIHwgSU5UU1RBVF9BUEUgfCBJTlRTVEFUX0RQRSApOw0K
ISAJfSBlbHNlIHsNCiEgCQlDU1JfV1JJVEVfNCggc2MsIElOVE1BU0ssDQoh
IAkJCUlOVFNUQVRfUkNDIHwgSU5UU1RBVF9SUUUgfCBJTlRTVEFUX09WVyB8
IElOVFNUQVRfUlhFIHwNCiEgCQkJSU5UU1RBVF9UWEMgfCBJTlRTVEFUX1RD
QyB8IElOVFNUQVRfVFFFIHwgSU5UU1RBVF9UWFUgfA0KISAJCQlJTlRTVEFU
X0NOVCB8IElOVFNUQVRfRkFUQUwgfA0KISAJCQlJTlRTVEFUX1BUQSB8IElO
VFNUQVRfUE1BIHwgSU5UU1RBVF9BUEUgfCBJTlRTVEFUX0RQRSApOw0KISAJ
fQ0KICANCiAgCS8qIEVuYWJsZSBpbnRlcnJ1cHRzLCAgc2V0IGZvciBQQ0kg
cmVhZCBtdWx0aXBsZSBhbmQgZXRjICovDQogIAlDU1JfV1JJVEVfNCggc2Ms
IEdFTkNUTCwNCi0tLSAxMDUyLDEwNjIgLS0tLQ0KICAJZXBpY19zZXRfbWNf
dGFibGUoIHNjICk7DQogIA0KICAJLyogRW5hYmxlIGludGVycnVwdHMgYnkg
c2V0dGluZyB0aGUgaW50ZXJydXB0IG1hc2suICovDQohIAlDU1JfV1JJVEVf
NCggc2MsIElOVE1BU0ssDQohIAkJSU5UU1RBVF9SQ0MgfCBJTlRTVEFUX1JR
RSB8IElOVFNUQVRfT1ZXIHwgSU5UU1RBVF9SWEUgfA0KISAJCUlOVFNUQVRf
VFhDIHwgSU5UU1RBVF9UQ0MgfCBJTlRTVEFUX1RRRSB8IElOVFNUQVRfVFhV
IHwNCiEgCQlJTlRTVEFUX0NOVCB8IElOVFNUQVRfRkFUQUwgfA0KISAJCSgo
UVM2NjEyX09VSSA9PSBzYy0+cGh5aWQpP0lOVFNUQVRfR1AyOjApICk7DQog
IA0KICAJLyogRW5hYmxlIGludGVycnVwdHMsICBzZXQgZm9yIFBDSSByZWFk
IG11bHRpcGxlIGFuZCBldGMgKi8NCiAgCUNTUl9XUklURV80KCBzYywgR0VO
Q1RMLA0KKioqKioqKioqKioqKioqDQoqKiogMTAyNywxMDU3ICoqKioNCiAg
fQ0KICANCiAgLyoNCiEgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgc2V0IEVQ
SUMncyByZWdpc3RlcnMgYWNjb3JkaW5nIElGRl8qIGZsYWdzDQogICAqLw0K
ICBzdGF0aWMgdm9pZA0KICBlcGljX3NldF9yeF9tb2RlKA0KICAgICAgZXBp
Y19zb2Z0Y190ICogc2MpDQogIHsNCiEgCXN0cnVjdCBpZm5ldCAqaWZwID0g
JnNjLT5lcGljX2lmOw0KISAgICAgICAgIHVfaW50MTZfdCByeGNvbiA9IDA7
DQogIA0KISAjaWYgTkJQRklMVEVSID4gMA0KISAJaWYoIHNjLT5lcGljX2lm
LmlmX2ZsYWdzICYgSUZGX1BST01JU0MgKQ0KISAJCXJ4Y29uIHw9IFJYQ09O
X1BST01JU0NVT1VTX01PREU7DQohICNlbmRpZg0KISANCiEgCWlmKCBzYy0+
ZXBpY19pZi5pZl9mbGFncyAmIElGRl9CUk9BRENBU1QgKQ0KISAJCXJ4Y29u
IHw9IFJYQ09OX1JFQ0VJVkVfQlJPQURDQVNUX0ZSQU1FUzsNCiEgDQohIAlp
Ziggc2MtPmVwaWNfaWYuaWZfZmxhZ3MgJiBJRkZfTVVMVElDQVNUICkNCiEg
CQlyeGNvbiB8PSBSWENPTl9SRUNFSVZFX01VTFRJQ0FTVF9GUkFNRVM7DQog
IA0KICAJQ1NSX1dSSVRFXzQoIHNjLCBSWENPTiwgcnhjb24gKTsNCiAgDQog
IAlyZXR1cm47DQogIH0NCiAgDQogIHN0YXRpYyB2b2lkDQogIGVwaWNfaW5p
dF9waHkgX19QKCgNCiAgICAgIGVwaWNfc29mdGNfdCAqIHNjKSkNCi0tLSAx
MDc4LDExMDIgLS0tLQ0KICB9DQogIA0KICAvKg0KISAgKiBTeW5vcHNpczog
Y2FsY3VsYXRlIGFuZCBzZXQgUnggbW9kZQ0KICAgKi8NCiAgc3RhdGljIHZv
aWQNCiAgZXBpY19zZXRfcnhfbW9kZSgNCiAgICAgIGVwaWNfc29mdGNfdCAq
IHNjKQ0KICB7DQohIAl1X2ludDMyX3QgZmxhZ3MgPSBzYy0+ZXBpY19pZi5p
Zl9mbGFnczsNCiEgICAgICAgICB1X2ludDMyX3Qgcnhjb24gPSBSWENPTl9E
RUZBVUxUIHwgUlhDT05fUkVDRUlWRV9NVUxUSUNBU1RfRlJBTUVTIHwgUlhD
T05fUkVDRUlWRV9CUk9BRENBU1RfRlJBTUVTOw0KICANCiEgCXJ4Y29uIHw9
IChmbGFncyAmIElGRl9QUk9NSVNDKT9SWENPTl9QUk9NSVNDVU9VU19NT0RF
OjA7DQogIA0KICAJQ1NSX1dSSVRFXzQoIHNjLCBSWENPTiwgcnhjb24gKTsN
CiAgDQogIAlyZXR1cm47DQogIH0NCiAgDQorIC8qDQorICAqIFN5bm9wc2lz
OiBSZXNldCBQSFkgYW5kIGRvIFBIWS1zcGVjaWFsIGluaXRpYWxpemF0aW9u
Og0KKyAgKi8NCiAgc3RhdGljIHZvaWQNCiAgZXBpY19pbml0X3BoeSBfX1Ao
KA0KICAgICAgZXBpY19zb2Z0Y190ICogc2MpKQ0KKioqKioqKioqKioqKioq
DQoqKiogMTA3MywxMDc5ICoqKioNCiAgCQlDU1JfV1JJVEVfNCggc2MsIE5W
Q1RMLCBOVkNUTF9HUDFfT1VUUFVUX0VOQUJMRSApOw0KICAJCWVwaWNfcmVh
ZF9waHlfcmVnaXN0ZXIoIHNjLCBRUzY2MTJfSU5UU1RBVCApOw0KICAJCWVw
aWNfd3JpdGVfcGh5X3JlZ2lzdGVyKCBzYywgUVM2NjEyX0lOVE1BU0ssDQoh
IAkJCUlOVE1BU0tfVEhVTkRFUkxBTnxJTlRTVEFUX0FOX0NPTVBMRVRFICk7
DQogIAkJYnJlYWs7DQogIAlkZWZhdWx0Og0KICAJCWJyZWFrOw0KLS0tIDEx
MTgsMTEyOCAtLS0tDQogIAkJQ1NSX1dSSVRFXzQoIHNjLCBOVkNUTCwgTlZD
VExfR1AxX09VVFBVVF9FTkFCTEUgKTsNCiAgCQllcGljX3JlYWRfcGh5X3Jl
Z2lzdGVyKCBzYywgUVM2NjEyX0lOVFNUQVQgKTsNCiAgCQllcGljX3dyaXRl
X3BoeV9yZWdpc3Rlciggc2MsIFFTNjYxMl9JTlRNQVNLLA0KISAJCQlJTlRN
QVNLX1RIVU5ERVJMQU4gfCBJTlRTVEFUX0FOX0NPTVBMRVRFICk7DQohIA0K
ISAJCS8qIEVuYWJsZSBRUzY2MTIgZXh0ZW5kZWQgY2FibGUgbGVuZ3RoIGNh
cGFiaWxpdGVzICovDQohIAkJZXBpY193cml0ZV9waHlfcmVnaXN0ZXIoIHNj
LCBRUzY2MTJfTUNUTCwgZXBpY19yZWFkX3BoeV9yZWdpc3Rlciggc2MsUVM2
NjEyX01DVEwgKSB8IE1DVExfQlRFWFQgKTsNCiEgDQogIAkJYnJlYWs7DQog
IAlkZWZhdWx0Og0KICAJCWJyZWFrOw0KKioqKioqKioqKioqKioqDQoqKiog
MTA4MSwxMDg3ICoqKioNCiAgfQ0KICANCiAgLyoNCiEgICogVGhpcyBmdW5j
dGlvbiBzaG91bGQgc2V0IE1JSSB0byBtb2RlIHNwZWNpZmllZCBieSBJRkZf
TElOSyogZmxhZ3Mgb3INCiAgICogaWZtZWRpYSBzdHJ1Y3R1cmUuDQogICAq
Lw0KICBzdGF0aWMgdm9pZA0KLS0tIDExMzAsMTEzNiAtLS0tDQogIH0NCiAg
DQogIC8qDQohICAqIFN5bm9wc2lzOiBTZXQgUEhZIHRvIG1lZGlhIHR5cGUg
c3BlY2lmaWVkIGJ5IElGRl9MSU5LKiBmbGFncyBvcg0KICAgKiBpZm1lZGlh
IHN0cnVjdHVyZS4NCiAgICovDQogIHN0YXRpYyB2b2lkDQoqKioqKioqKioq
KioqKioNCioqKiAxMTA4LDExMTQgKioqKg0KICANCiAgCQllcGljX3dyaXRl
X3BoeV9yZWdpc3Rlciggc2MsIERQODM4NDBfQk1DUiwgbWVkaWEgKTsNCiAg
DQohIAkJQ1NSX1dSSVRFXzQoIHNjLCBUWENPTiwodGd0bWVkaWEmSUZNX0ZE
WCk/VFhDT05fTE9PUEJBQ0tfTU9ERV9GVUxMX0RVUExFWHxUWENPTl9ERUZB
VUxUOlRYQ09OX0RFRkFVTFQgKTsNCiAgCX0NCiAgI2Vsc2UNCiAgCWlmKCBp
ZnAtPmlmX2ZsYWdzICYgSUZGX0xJTkswICkgew0KLS0tIDExNTcsMTE2NyAt
LS0tDQogIA0KICAJCWVwaWNfd3JpdGVfcGh5X3JlZ2lzdGVyKCBzYywgRFA4
Mzg0MF9CTUNSLCBtZWRpYSApOw0KICANCiEgCQltZWRpYSA9IFRYQ09OX0RF
RkFVTFQ7DQohIAkJaWYoIHRndG1lZGlhICYgSUZNX0ZEWCApIG1lZGlhIHw9
IFRYQ09OX0ZVTExfRFVQTEVYOw0KISAJCWVsc2UgaWYoIHRndG1lZGlhICYg
SUZNX0xPT1AgKSBtZWRpYSB8PSBUWENPTl9MT09QQkFDS19NT0RFX0lOVDsN
CiEgCQkNCiEgCQlDU1JfV1JJVEVfNCggc2MsIFRYQ09OLCBtZWRpYSApOw0K
ICAJfQ0KICAjZWxzZQ0KICAJaWYoIGlmcC0+aWZfZmxhZ3MgJiBJRkZfTElO
SzAgKSB7DQoqKioqKioqKioqKioqKioNCioqKiAxMTIxLDExMjcgKioqKg0K
ICANCiAgCQllcGljX3dyaXRlX3BoeV9yZWdpc3Rlciggc2MsIERQODM4NDBf
Qk1DUiwgbWVkaWEgKTsNCiAgDQohIAkJQ1NSX1dSSVRFXzQoIHNjLCBUWENP
TiwgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfTElOSzIpID8gVFhDT05fTE9PUEJB
Q0tfTU9ERV9GVUxMX0RVUExFWHxUWENPTl9ERUZBVUxUIDogVFhDT05fREVG
QVVMVCApOw0KICAJfQ0KICAjZW5kaWYNCiAgCSAgZWxzZSB7DQotLS0gMTE3
NCwxMTgzIC0tLS0NCiAgDQogIAkJZXBpY193cml0ZV9waHlfcmVnaXN0ZXIo
IHNjLCBEUDgzODQwX0JNQ1IsIG1lZGlhICk7DQogIA0KISAJCW1lZGlhID0g
VFhDT05fREVGQVVMVDsNCiEgCQltZWRpYSB8PSAoaWZwLT5pZl9mbGFncyZJ
RkZfTElOSzIpP1RYQ09OX0ZVTExfRFVQTEVYOjA7DQohICANCiEgCQlDU1Jf
V1JJVEVfNCggc2MsIFRYQ09OLCBtZWRpYSApOw0KICAJfQ0KICAjZW5kaWYN
CiAgCSAgZWxzZSB7DQoqKioqKioqKioqKioqKioNCioqKiAxMTQyLDExNDkg
KioqKg0KICAgICAgICAgIAkJREVMQVkoMzAwMDAwMCk7DQogIAkJCQ0KICAJ
CQlpZiggZXBpY19hdXRvbmVnKHNjKSA9PSBFUElDX0ZVTExfRFVQTEVYICkN
CiEgCQkJCUNTUl9XUklURV80KCBzYywgVFhDT04sDQohIAkJCQkJVFhDT05f
TE9PUEJBQ0tfTU9ERV9GVUxMX0RVUExFWHxUWENPTl9ERUZBVUxUKTsNCiAg
CQl9DQogIAkJLyogRWxzZSBpdCB3aWxsIGJlIGRvbmUgd2hlbiBHUDIgaW50
IG9jY3VyZWQgKi8NCiAgCX0NCi0tLSAxMTk4LDEyMDQgLS0tLQ0KICAgICAg
ICAgIAkJREVMQVkoMzAwMDAwMCk7DQogIAkJCQ0KICAJCQlpZiggZXBpY19h
dXRvbmVnKHNjKSA9PSBFUElDX0ZVTExfRFVQTEVYICkNCiEgCQkJCUNTUl9X
UklURV80KCBzYywgVFhDT04sIFRYQ09OX0ZVTExfRFVQTEVYfFRYQ09OX0RF
RkFVTFQpOw0KICAJCX0NCiAgCQkvKiBFbHNlIGl0IHdpbGwgYmUgZG9uZSB3
aGVuIEdQMiBpbnQgb2NjdXJlZCAqLw0KICAJfQ0KKioqKioqKioqKioqKioq
DQoqKiogMTI1OCwxMjY0ICoqKioNCiAgfQ0KICANCiAgLyoNCiEgICogIFRo
aXMgZnVuY3Rpb24gc2hvdWxkIGNvbXBsZXRlbHkgc3RvcCByeCBhbmQgdHgg
cHJvY2Vzc2VzDQogICAqICANCiAgICogIHNwbGltcCgpIGludm9rZWQgaGVy
ZQ0KICAgKi8NCi0tLSAxMzEzLDEzMjAgLS0tLQ0KICB9DQogIA0KICAvKg0K
ISAgKiAgU3lub3BzaXM6IENvbXBsZXRlbHkgc3RvcCBSeCBhbmQgVHggcHJv
Y2Vzc2VzLCBhbmQgZGVhbGxvY2F0ZSByaW5ncy4gSWYNCiEgICogVFFFIGlz
IHNldCwgYWRkaXRpb25hbCBwYWNrZXQgbmVlZHMgdG8gYmUgcXVldWVkIHRv
IHN0b3AgVHggRE1BLg0KICAgKiAgDQogICAqICBzcGxpbXAoKSBpbnZva2Vk
IGhlcmUNCiAgICovDQoqKioqKioqKioqKioqKioNCioqKiAxMjY4LDEzMDUg
KioqKg0KICB7DQogIAlpbnQgaSxzOw0KICANCiAgCXMgPSBzcGxpbXAoKTsN
CiAgCXNjLT5lcGljX2lmLmlmX3RpbWVyID0gMDsNCiAgDQohIAkvKiBEaXNh
YmxlIGludGVycnVwdHMsIHN0b3AgcHJvY2Vzc2VzICovDQogIAlDU1JfV1JJ
VEVfNCggc2MsIElOVE1BU0ssIDAgKTsNCiAgCUNTUl9XUklURV80KCBzYywg
R0VOQ1RMLCAwICk7DQotIAlDU1JfV1JJVEVfNCggc2MsIENPTU1BTkQsDQot
IAkJQ09NTUFORF9TVE9QX1JYIHwgQ09NTUFORF9TVE9QX1JETUEgfCBDT01N
QU5EX1NUT1BfVERNQSApOw0KICANCiEgCS8qIFdhaXQgUlggYW5kIFRYIERN
QSB0byBzdG9wICovDQohIAlmb3IoaT0wO2k8MHgxMDAwMDA7aSsrKXsNCiEg
CQlpZiggKENTUl9SRUFEXzQoc2MsSU5UU1RBVCkmKElOVFNUQVRfUlhJRExF
fElOVFNUQVRfVFhJRExFKSkgPT0NCiEgCQkJKElOVFNUQVRfUlhJRExFfElO
VFNUQVRfVFhJRExFKSApIGJyZWFrOw0KISAJfQ0KISAJDQohIAlpZiggIShD
U1JfUkVBRF80KHNjLElOVFNUQVQpJklOVFNUQVRfUlhJRExFKSApDQogIAkJ
cHJpbnRmKCJ0eCVkOiBjYW4ndCBzdG9wIFJYIERNQVxuIixzYy0+dW5pdCk7
DQogIA0KISAJaWYoICEoQ1NSX1JFQURfNChzYyxJTlRTVEFUKSZJTlRTVEFU
X1RYSURMRSkgKQ0KISAJCXByaW50ZigidHglZDogY2FuJ3Qgc3RvcCBUWCBE
TUFcbiIsc2MtPnVuaXQpOw0KICANCiEgCS8qIFJlc2V0IGNoaXAgYW5kIHBo
eSAqLw0KICAJQ1NSX1dSSVRFXzQoIHNjLCBHRU5DVEwsIEdFTkNUTF9TT0ZU
X1JFU0VUICk7DQogIA0KICAJLyogTmVlZCB0byB3YWl0IGZvciAxNSBwY2kg
dGlja3MgdG8gcGFzcyBiZWZvcmUgYWNjZXNzaW5nIGFnYWluKi8NCiAgCURF
TEFZKDEpOw0KICANCiAgCS8qIEZyZWUgbWVtb3J5IGFsbG9jYXRlZCBmb3Ig
cmluZ3MgKi8NCiAgCWVwaWNfZnJlZV9yaW5ncyggc2MgKTsNCiAgDQogIAlz
cGx4KHMpOw0KICANCiAgfQ0KICANCiAgLyoNCi0tLSAxMzI0LDEzOTIgLS0t
LQ0KICB7DQogIAlpbnQgaSxzOw0KICANCisgCWRwcmludGYoKCJ0eCVkOiBl
cGljX3N0b3AoKTogZW50ZXJcbiIsc2MtPnVuaXQpKTsNCisgDQogIAlzID0g
c3BsaW1wKCk7DQogIAlzYy0+ZXBpY19pZi5pZl90aW1lciA9IDA7DQogIA0K
ISAJLyogRGlzYWJsZSBpbnRlcnJ1cHRzICovDQogIAlDU1JfV1JJVEVfNCgg
c2MsIElOVE1BU0ssIDAgKTsNCiAgCUNTUl9XUklURV80KCBzYywgR0VOQ1RM
LCAwICk7DQogIA0KISAJLyogU3RvcCBUeCBhbmQgUnggRE1BICovDQohIAlD
U1JfV1JJVEVfNCggc2MsIENPTU1BTkQsIENPTU1BTkRfU1RPUF9SWCB8IENP
TU1BTkRfU1RPUF9SRE1BIHwgQ09NTUFORF9TVE9QX1RETUEpOw0KISANCiEg
CWRwcmludGYoKCJ0eCVkOiB3YWl0aW5nIFJ4IERNQSB0byBzdG9wXG4iLHNj
LT51bml0KSk7DQohIAkvKiBXYWl0IG9ubHkgUnggRE1BICovDQohIAlmb3Io
aT0wO2k8MHgxMDAwMDA7aSsrKQ0KISAJCWlmKCAoQ1NSX1JFQURfNChzYyxJ
TlRTVEFUKSZJTlRTVEFUX1JYSURMRSkgPT0gSU5UU1RBVF9SWElETEUgKSBi
cmVhazsNCiEgDQohIAlpZiggIShDU1JfUkVBRF80KHNjLElOVFNUQVQpJklO
VFNUQVRfUlhJRExFKSApIA0KICAJCXByaW50ZigidHglZDogY2FuJ3Qgc3Rv
cCBSWCBETUFcbiIsc2MtPnVuaXQpOw0KKyAJZWxzZQ0KKyAJCWRwcmludGYo
KCJ0eCVkOiBSeCBETUEgc3RvcGVkXG4iLHNjLT51bml0KSk7DQorIA0KKyAJ
LyogTWF5IG5lZWQgdG8gcXVldWUgb25lIG1vcmUgcGFja2V0IGlmIFRRRSAq
Lw0KKyAJaWYoIChDU1JfUkVBRF80KCBzYywgSU5UU1RBVCApICYgSU5UU1RB
VF9UUUUpICYmDQorIAkgICAgIShDU1JfUkVBRF80KCBzYywgSU5UU1RBVCAp
ICYgSU5UU1RBVF9UWElETEUpICl7DQorIAkJZHByaW50ZigoInR4JWQ6IGVw
aWNfc3RvcCgpOiBxdWV1ZSBsYXN0IHBhY2tldFxuIixzYy0+dW5pdCkpOw0K
KyANCisgCQkvKiBUdXJuIGl0IHRvIGxvb3BiYWNrIG1vZGUgKi8JDQorIAkJ
Q1NSX1dSSVRFXzQoIHNjLCBUWENPTiwgVFhDT05fREVGQVVMVCB8IFRYQ09O
X0xPT1BCQUNLX01PREVfSU5UICk7DQorIA0KKyAJCXNjLT50eF9kZXNjW3Nj
LT5jdXJfdHhdLmJ1ZmFkZHIgPSB2dG9waHlzKCBzYyApOw0KKyAJCXNjLT50
eF9kZXNjW3NjLT5jdXJfdHhdLmJ1Zmxlbmd0aCA9IEVUSEVSX01JTl9MRU4t
RVRIRVJfQ1JDX0xFTjsNCisgCQlzYy0+dHhfZGVzY1tzYy0+Y3VyX3R4XS5j
b250cm9sID0gMHgxNDsNCisgCQlzYy0+dHhfZGVzY1tzYy0+Y3VyX3R4XS50
eGxlbmd0aCA9IEVUSEVSX01JTl9MRU4tRVRIRVJfQ1JDX0xFTjsNCisgCQlz
Yy0+dHhfZGVzY1tzYy0+Y3VyX3R4XS5zdGF0dXMgPSAweDgwMDA7DQorIA0K
KyAJCUNTUl9XUklURV80KCBzYywgQ09NTUFORCwgQ09NTUFORF9UWFFVRVVF
RCApOw0KICANCiEgCQlkcHJpbnRmKCgidHglZDogd2FpdGluZyBUeCBETUEg
dG8gc3RvcFxuIixzYy0+dW5pdCkpOw0KISAJCS8qIFdhaXQgVFggRE1BIHRv
IHN0b3AgKi8NCiEgCQlmb3IoaT0wO2k8MHgxMDAwMDA7aSsrKQ0KISAJCQlp
ZiggKENTUl9SRUFEXzQoc2MsSU5UU1RBVCkmSU5UU1RBVF9UWElETEUpID09
IElOVFNUQVRfVFhJRExFICkgYnJlYWs7DQogIA0KISAJCWlmKCAhKENTUl9S
RUFEXzQoc2MsSU5UU1RBVCkmSU5UU1RBVF9UWElETEUpICkNCiEgCQkJcHJp
bnRmKCJ0eCVkOiBjYW4ndCBzdG9wIFRYIERNQVxuIixzYy0+dW5pdCk7DQoh
IAkJZWxzZQ0KISAJCQlkcHJpbnRmKCgidHglZDogVHggRE1BIHN0b3BlZFxu
IixzYy0+dW5pdCkpOw0KISAJfSBlbHNlDQohIAkJZHByaW50ZigoInR4JWQ6
IFR4IERNQSBzdG9wZWRcbiIsc2MtPnVuaXQpKTsNCiEgDQohIAkvKiBSZXNl
dCBjaGlwICovDQogIAlDU1JfV1JJVEVfNCggc2MsIEdFTkNUTCwgR0VOQ1RM
X1NPRlRfUkVTRVQgKTsNCiAgDQogIAkvKiBOZWVkIHRvIHdhaXQgZm9yIDE1
IHBjaSB0aWNrcyB0byBwYXNzIGJlZm9yZSBhY2Nlc3NpbmcgYWdhaW4qLw0K
ICAJREVMQVkoMSk7DQogIA0KKyAJZHByaW50ZigoInR4JWQ6IGRlYWxsb2Nh
dGUgcmluZ3NcbiIsc2MtPnVuaXQpKTsNCiAgCS8qIEZyZWUgbWVtb3J5IGFs
bG9jYXRlZCBmb3IgcmluZ3MgKi8NCiAgCWVwaWNfZnJlZV9yaW5ncyggc2Mg
KTsNCiAgDQogIAlzcGx4KHMpOw0KICANCisgCWRwcmludGYoKCJ0eCVkOiBl
cGljX3N0b3AoKTogZG9uZVxuIixzYy0+dW5pdCkpOw0KICB9DQogIA0KICAv
Kg0KKioqKioqKioqKioqKioqDQoqKiogMTMxMiwxMzE3ICoqKioNCi0tLSAx
Mzk5LDE0MDYgLS0tLQ0KICBlcGljX2ZyZWVfcmluZ3MoZXBpY19zb2Z0Y190
ICogc2Mpew0KICAJaW50IGk7DQogIA0KKyAJZHByaW50ZigoInR4JWQ6IGVw
aWNfZnJlZV9yaW5ncygpOiBlbnRlclxuIixzYy0+dW5pdCkpOw0KKyANCiAg
CWZvcihpPTA7aTxSWF9SSU5HX1NJWkU7aSsrKXsNCiAgCQlzdHJ1Y3QgZXBp
Y19yeF9idWZmZXIgKmJ1ZiA9IHNjLT5yeF9idWZmZXIgKyBpOw0KICAJCXN0
cnVjdCBlcGljX3J4X2Rlc2MgKmRlc2MgPSBzYy0+cnhfZGVzYyArIGk7DQoq
KioqKioqKioqKioqKioNCioqKiAxMzQ1LDEzNTAgKioqKg0KLS0tIDE0MzQs
MTQ0MSAtLS0tDQogIAkJYnVmLT5kYXRhID0gTlVMTDsNCiAgI2VuZGlmDQog
IAl9DQorIA0KKyAJZHByaW50ZigoInR4JWQ6IGVwaWNfZnJlZV9yaW5ncygp
OiBkb25lXG4iLHNjLT51bml0KSk7DQogIH0NCiAgDQogIC8qDQoqKioqKioq
KioqKioqKioNCioqKiAxMzgyLDEzODggKioqKg0KICAJCWlmKCBOVUxMID09
IChidWYtPm1idWYtPm1fZmxhZ3MgJiBNX0VYVCkgKSByZXR1cm4gLTE7DQog
IAkJZGVzYy0+YnVmYWRkciA9IHZ0b3BoeXMoIG10b2QoYnVmLT5tYnVmLGNh
ZGRyX3QpICk7DQogICNlbHNlDQohIAkJYnVmLT5kYXRhID0gbWFsbG9jKEVU
SEVSX01BWF9GUkFNRV9MRU4sIE1fREVWQlVGLCBNX05PV0FJVCk7DQogIAkJ
aWYoIGJ1Zi0+ZGF0YSA9PSBOVUxMICkgcmV0dXJuIC0xOw0KICAJCWRlc2Mt
PmJ1ZmFkZHIgPSB2dG9waHlzKCBidWYtPmRhdGEgKTsNCiAgI2VuZGlmDQot
LS0gMTQ3MywxNDc5IC0tLS0NCiAgCQlpZiggTlVMTCA9PSAoYnVmLT5tYnVm
LT5tX2ZsYWdzICYgTV9FWFQpICkgcmV0dXJuIC0xOw0KICAJCWRlc2MtPmJ1
ZmFkZHIgPSB2dG9waHlzKCBtdG9kKGJ1Zi0+bWJ1ZixjYWRkcl90KSApOw0K
ICAjZWxzZQ0KISAJCWJ1Zi0+ZGF0YSA9IG1hbGxvYyggRVRIRVJfTUFYX0ZS
QU1FX0xFTiwgTV9ERVZCVUYsIE1fTk9XQUlUKTsNCiAgCQlpZiggYnVmLT5k
YXRhID09IE5VTEwgKSByZXR1cm4gLTE7DQogIAkJZGVzYy0+YnVmYWRkciA9
IHZ0b3BoeXMoIGJ1Zi0+ZGF0YSApOw0KICAjZW5kaWYNCioqKiBzbWM4M2Mx
NzAuaC5vcmlnCVR1ZSBNYXkgIDUgMTg6MjE6MzAgMTk5OA0KLS0tIHNtYzgz
YzE3MC5oCVR1ZSBNYXkgIDUgMTg6MTA6NDMgMTk5OA0KKioqKioqKioqKioq
KioqDQoqKiogMTgwLDE5MCAqKioqDQogICNkZWZpbmUgVFhDT05fTE9PUEJB
Q0tfRElTQUJMRQkJMHgwMDAwMDAwMA0KICAjZGVmaW5lIFRYQ09OX0xPT1BC
QUNLX01PREVfSU5UCQkweDAwMDAwMDAyDQogICNkZWZpbmUgVFhDT05fTE9P
UEJBQ0tfTU9ERV9QSFkJCTB4MDAwMDAwMDQNCiEgI2RlZmluZSBUWENPTl9M
T09QQkFDS19NT0RFX0ZVTExfRFVQTEVYCTB4MDAwMDAwMDYNCiAgI2RlZmlu
ZSBUWENPTl9TTE9UX1RJTUUJCQkweDAwMDAwMDc4DQogIA0KISAjZGVmaW5l
IFRYQ09OX0RFRkFVTFQJKFRYQ09OX1NMT1RfVElNRXxUWENPTl9FQVJMWV9U
UkFOU01JVF9FTkFCTEUpDQohIA0KICAvKg0KICAgKiBOYXRpb25hbCBTZW1p
Y29uZHVjdG9yJ3MgRFA4Mzg0MEEgUmVnaXN0ZXJzIGFuZCBiaXRzDQogICAq
Lw0KLS0tIDE4MCwyMDAgLS0tLQ0KICAjZGVmaW5lIFRYQ09OX0xPT1BCQUNL
X0RJU0FCTEUJCTB4MDAwMDAwMDANCiAgI2RlZmluZSBUWENPTl9MT09QQkFD
S19NT0RFX0lOVAkJMHgwMDAwMDAwMg0KICAjZGVmaW5lIFRYQ09OX0xPT1BC
QUNLX01PREVfUEhZCQkweDAwMDAwMDA0DQohICNkZWZpbmUgVFhDT05fTE9P
UEJBQ0tfTU9ERQkJMHgwMDAwMDAwNg0KISAjZGVmaW5lIFRYQ09OX0ZVTExf
RFVQTEVYCQkweDAwMDAwMDA2DQogICNkZWZpbmUgVFhDT05fU0xPVF9USU1F
CQkJMHgwMDAwMDA3OA0KICANCiEgI2lmIGRlZmluZWQoRUFSTFlfVFgpDQoh
ICAjZGVmaW5lIFRYQ09OX0RFRkFVTFQJCShUWENPTl9TTE9UX1RJTUUgfCBU
WENPTl9FQVJMWV9UUkFOU01JVF9FTkFCTEUpDQohICAjZGVmaW5lIFRSQU5T
TUlUX1RIUkVTSE9MRAkweDQwDQohICNlbHNlDQohICAjZGVmaW5lIFRYQ09O
X0RFRkFVTFQJCShUWENPTl9TTE9UX1RJTUUpDQohICNlbmRpZg0KISAjaWYg
ZGVmaW5lZChFQVJMWV9SWCkNCiEgICNkZWZpbmUgUlhDT05fREVGQVVMVAkJ
KFJYQ09OX0VBUkxZX1JFQ0VJVkVfRU5BQkxFIHwgUlhDT05fU0FWRV9FUlJP
UkVEX1BBQ0tFVFMpDQohICNlbHNlDQohICAjZGVmaW5lIFJYQ09OX0RFRkFV
TFQJCSgwKQ0KISAjZW5kaWYNCiAgLyoNCiAgICogTmF0aW9uYWwgU2VtaWNv
bmR1Y3RvcidzIERQODM4NDBBIFJlZ2lzdGVycyBhbmQgYml0cw0KICAgKi8N
CioqKioqKioqKioqKioqKg0KKioqIDIyOCwyMzYgKioqKg0KLS0tIDIzOCwy
NTIgLS0tLQ0KICAgKiBRdWFsaXR5IFNlbWljb25kdWN0b3IncyBRUzY2MTIg
cmVnaXN0ZXJzIGFuZCBiaXRzDQogICAqLw0KICAjZGVmaW5lCVFTNjYxMl9P
VUkJCTB4MDA2MDUxDQorICNkZWZpbmUJUVM2NjEyX01DVEwJCTE3DQogICNk
ZWZpbmUJUVM2NjEyX0lOVFNUQVQJCTI5DQogICNkZWZpbmUJUVM2NjEyX0lO
VE1BU0sJCTMwDQogIA0KKyAjZGVmaW5lCU1DVExfVDRfUFJFU0VOVAkJMHgx
MDAwCS8qIEV4dGVybmFsIFQ0IEVuYWJsZWQsIGlnbm9yZWQgKi8NCisgCQkJ
CQkvKiBpZiBBdXRvTmVnIGlzIGVuYWJsZWQgKi8NCisgI2RlZmluZQlNQ1RM
X0JURVhUCQkweDA4MDAJLyogUmVkdWNlcyAxMGJhc2V0IHNxdWVsY2ggbGV2
ZWwgKi8NCisgCQkJCQkvKiBmb3IgZXh0ZW5kZWQgY2FibGUgbGVuZ3RoICov
DQorIA0KICAjZGVmaW5lCUlOVFNUQVRfQU5fQ09NUExFVEUJMHg0MAkvKiBB
dXRvbmVnb3RpYXRpb24gY29tcGxldGUgKi8NCiAgI2RlZmluZQlJTlRTVEFU
X1JGX0RFVEVDVEVECTB4MjAJLyogUmVtb3RlIEZhdWx0IGRldGVjdGVkICov
DQogICNkZWZpbmUJSU5UU1RBVF9MSU5LX1NUQVRVUwkweDEwCS8qIExpbmsg
c3RhdHVzIGNoYW5nZWQgKi8NCg==
--0-1082377860-894368620=:13866--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.980505183656.13866C-200000>