Re: TOC plugin

"A. Craig West" <[email protected]> Thu, 13 May 2004 16:24:51 -0400 (EDT)
Newsgroups gmane.network.everybuddy.devel
Message-ID <[email protected]>
  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 [email protected] for more info.

---1463811291-116493841-1084479891=:21935
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Mon, 10 May 2004, A. Craig West wrote:

> As promised, here are my nifty new toc patches relative to the head of
> subversion. This change makes all socket connections asyncronous, which works
> much better than syncronous now, and it re-organizes the code to more closely
> follow the structure of the MSN and Yahoo code.

Okay, I finally figured out why I occasionally get flakiness in my connection.
For some reason, AIM socket connections occasionally timeout. If, however, 
the user got tired of waiting for it and closed the connection manually, the
input handler set up for the original connect is left hanging around, and
eventually detects the timout. The way my toc code is at the moment, this is
detected as an error on the new, valid connection, which causes no end of
confusion... The solution is to check connection callbacks, and if we have a
valid connection already, ignore the callback, seeing as it is most likely
a leftover from an earlier attempt.

The patch is attached. This patch is made against the current head of
subversion, as usual...

-- 
Craig West         Ph: (416) 666-1645	|  It's not a bug,
[email protected]              	|  It's a feature...
---1463811291-116493841-1084479891=:21935
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="toc.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <[email protected]>
Content-Description: PATCH for toc plugin of eb-lite
Content-Disposition: attachment; filename="toc.patch"

SW5kZXg6IHBsdWdpbnMvdG9jL2xpYnRvYy5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gcGx1Z2lucy90b2MvbGlidG9jLmgJKHJldmlzaW9uIDM1
NykNCisrKyBwbHVnaW5zL3RvYy9saWJ0b2MuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTY1LDggKzY1LDggQEANCiBleHRlcm4gdm9pZCAoKnRvY191c2VyX2lu
Zm8pKHRvY19jb25uICAqIGNvbm4sIGNoYXIgKiB1c2VyLCBjaGFyICogbWVz
c2FnZSApOw0KIA0KIHZvaWQgdG9jX2NhbGxiYWNrKCB0b2NfY29ubiAqIGNv
bm4gKTsNCi10b2NfY29ubiAqIHRvY19zaWdub24oIGNoYXIgKiB1c2VybmFt
ZSwgY2hhciAqIHBhc3N3b3JkLA0KLQkJY2hhciAqIHNlcnZlciwgc2hvcnQg
cG9ydCwgY2hhciAqIGluZm8gKTsNCit2b2lkIHRvY19zaWdub24oIGNoYXIg
KiB1c2VybmFtZSwgY2hhciAqIHBhc3N3b3JkLA0KKwkJY2hhciAqIHNlcnZl
ciwgc2hvcnQgcG9ydCwgY2hhciAqIGluZm8sIHZvaWQgKCpjYWxsYmFjayko
dm9pZCAqIGRhdGEsIHRvY19jb25uICogY29ubiksIHZvaWQgKiBkYXRhKTsN
CiB2b2lkIHRvY19zZW5kX2tlZXBfYWxpdmUoIHRvY19jb25uICogY29ubiAp
Ow0KIHZvaWQgdG9jX3NpZ25vZmYoIHRvY19jb25uICogY29ubiApOw0KIHZv
aWQgdG9jX3NlbmRfaW0oIHRvY19jb25uICogY29ubiwgY2hhciAqIHVzZXJu
YW1lLCBjaGFyICogbWVzc2FnZSApOw0KSW5kZXg6IHBsdWdpbnMvdG9jL3Rv
Yy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gcGx1Z2lucy90b2Mv
dG9jLmMJKHJldmlzaW9uIDM1NykNCisrKyBwbHVnaW5zL3RvYy90b2MuYwko
d29ya2luZyBjb3B5KQ0KQEAgLTM1LDYgKzM1LDkgQEANCiANCiBpbnQgZWJf
dG9jX2luaXQodm9pZCk7DQogaW50IGViX3RvY19maW5pc2godm9pZCk7DQor
dm9pZCBlYl90b2NfbG9naW4oZWJfbG9jYWxfYWNjb3VudCAqIGVsYSk7DQor
dm9pZCBlYl90b2NfbG9nb3V0KGViX2xvY2FsX2FjY291bnQgKiBlbGEpOw0K
K3ZvaWQgZWJfdG9jX2Rpc2Nvbm5lY3QgKHRvY19jb25uICogY29ubik7DQog
DQogZWJfcGx1Z2luX2luZm8gdG9jX0xUWF9wbHVnaW5faW5mbz17IkFJTS9J
Q1EgdmlhIFRPQyIsICJUb3JyZXkgU2VhcmxlJ3MgbGlidG9jIiwgIldobyBr
bm93cz8iLCAiV2hvIGNhcmVzPyIsIGViX3RvY19pbml0LCBlYl90b2NfZmlu
aXNofTsNCiANCkBAIC05NCw4NSArOTcsMTUyIEBADQogdm9pZCBlYl90b2Nf
c2V0X3N0YXRlKGViX2xvY2FsX2FjY291bnQgKiBlbGEsIGNoYXIgKiBzdGF0
ZSkNCiB7DQogICBlYl90b2NfbGFkICogbGFkPUdFVF9MQUQoZWxhKTsNCisg
IGNoYXIgKiBzdF9zdHIgPSBOVUxMOw0KIA0KLSAgaWYoIXN0cmNtcChzdGF0
ZSwgIk9ubGluZSIpIHx8ICFzdHJjbXAoc3RhdGUsICJBd2F5IikpDQorICBp
Zighc3RyY21wKHN0YXRlLCAiT2ZmbGluZSIpKQ0KICAgew0KLSAgICBpZihl
bGEtPmNvbm5lY3RlZCkNCisgICAgZWJfdG9jX2xvZ291dChlbGEpOw0KKyAg
ICByZXR1cm47DQorICB9DQorICBlbHNlDQorICB7DQorICAgIC8qIENoZWNr
IGlmIHdlIGFyZSBjb25uZWN0ZWQgeWV0ICovDQorICAgIGlmICghZWxhLT5j
b25uZWN0ZWQpDQogICAgIHsNCi0gICAgICBpZihlbGEtPnJlYWR5ICYmIHN0
YXRlWzBdPT0nQScgJiYgIWxhZC0+YXdheSkNCisgICAgICAvKiBjb25uZWN0
IHRvIHRoZSBzZXJ2ZXIgKi8NCisgICAgICBlYl90b2NfbG9naW4oZWxhKTsN
CisgICAgfQ0KKyAgICBlbHNlIGlmIChlbGEtPnJlYWR5KQ0KKyAgICB7DQor
ICAgICAgLyogT25seSBzZXQgdGhlIGF3YXkgbWVzc2FnZSBpZiB0aGUgY29u
bmVjdGlvbiBpcyByZWFkeSAqLw0KKw0KKyAgICAgIGlmKCFzdHJjbXAoc3Rh
dGUsICJPbmxpbmUiKSkNCiAgICAgICB7DQotICAgICAgICB0b2Nfc2V0X2F3
YXkobGFkLT5jb25uLCAiVGhpcyB1c2VyIGlzIGF3YXkuIik7DQotICAgICAg
ICBsYWQtPmF3YXk9MTsNCi0gICAgICAgIGZyZWUoZWxhLT5zdGF0dXNfc3Ry
aW5nKTsNCi0gICAgICAgIGVsYS0+c3RhdHVzX3N0cmluZz1zdHJkdXAoIkF3
YXkiKTsNCisJaWYgKGxhZC0+YXdheSkNCisJew0KKwkgIHRvY19zZXRfYXdh
eShsYWQtPmNvbm4sIE5VTEwpOw0KKwkgIGxhZC0+YXdheSA9IDA7DQorCX0N
CiAgICAgICB9DQorICAgICAgZWxzZQ0KKyAgICAgIHsNCisJLyogd2hlbiBj
aGFuZ2luZyB0aGUgYXdheSBtZXNzYWdlLCBuZWVkIHRvIGNoYW5nZSB0byBu
b3QgYXdheSBmaXJzdCAqLw0KKyAgICAgICAgaWYgKGxhZC0+YXdheSkNCisJ
ew0KKwkgIHRvY19zZXRfYXdheShsYWQtPmNvbm4sIE5VTEwpOw0KKwl9DQor
CWVsc2UNCisJew0KKwkgIGxhZC0+YXdheSA9IDE7DQorCX0NCiANCi0gICAg
ICBpZihlbGEtPnJlYWR5ICYmIHN0YXRlWzBdPT0nTycgJiYgbGFkLT5hd2F5
KQ0KLSAgICAgIHsNCi0gICAgICAgIHRvY19zZXRfYXdheShsYWQtPmNvbm4s
IE5VTEwpOw0KLSAgICAgICAgbGFkLT5hd2F5PTA7DQotICAgICAgICBmcmVl
KGVsYS0+c3RhdHVzX3N0cmluZyk7DQotICAgICAgICBlbGEtPnN0YXR1c19z
dHJpbmc9c3RyZHVwKCJPbmxpbmUiKTsNCisJaWYoIXN0cmNtcChzdGF0ZSwg
IkF3YXkiKSkNCisJew0KKwkgIHRvY19zZXRfYXdheShsYWQtPmNvbm4sICJU
aGlzIHVzZXIgaXMgYXdheS4iKTsNCisJfQ0KKwllbHNlDQorCXsNCisJICB0
b2Nfc2V0X2F3YXkobGFkLT5jb25uLCBzdGF0ZSk7DQorCX0NCiAgICAgICB9
DQogDQorICAgICAgZnJlZShlbGEtPnN0YXR1c19zdHJpbmcpOw0KKyAgICAg
IGVsYS0+c3RhdHVzX3N0cmluZyA9IHN0cmR1cChzdGF0ZSk7DQogICAgICAg
ZWJfbG9jYWxfYWNjb3VudF91cGRhdGUoZWxhKTsNCi0gICAgICByZXR1cm47
DQogICAgIH0NCisgIH0NCit9DQogDQotICAgIGVsYS0+Y29ubmVjdGVkPTE7
DQotICAgIGViX2xvY2FsX2FjY291bnRfdXBkYXRlKGVsYSk7DQordm9pZCBl
Yl90b2Nfc2lnbm9uX2NiKHZvaWQgKiBkYXRhLCB0b2NfY29ubiAqIGNvbm4p
DQorew0KKyAgZWJfbG9jYWxfYWNjb3VudCAqIGVsYSA9IGRhdGE7DQogDQot
ICAgIGxhZC0+Y29ubj10b2Nfc2lnbm9uKGVsYS0+aGFuZGxlLCBlYl9nZXRf
dmFsdWUoZWxhLT5jb25maWdfa2V5LCAicGFzc3dvcmQiKSwNCi0gICAgICBl
Yl9nZXRfdmFsdWUoZWxhLT5jb25maWdfa2V5LCAidG9jL3NlcnZlciIpLCBh
dG9pKGViX2dldF92YWx1ZShlbGEtPmNvbmZpZ19rZXksICJ0b2MvcG9ydCIp
KSwNCi0gICAgICBlYl9nZXRfdmFsdWUoZWxhLT5jb25maWdfa2V5LCAidXNl
cl9pbmZvIikpOw0KKyAgZWJfdG9jX2xhZCAqIGxhZCA9IEdFVF9MQUQoZWxh
KTsNCiANCi0gICAgaWYobGFkLT5jb25uPT1OVUxMKQ0KLSAgICB7DQotICAg
ICAgZWJfc2hvd19lcnJvcigiQ291bGQgbm90IGxvZyBpbnRvIFRPQyBzZXJ2
ZXIuIENoZWNrIHlvdXIgcHJlZmVyZW5jZXMgYW5kIHRyeSBhZ2Fpbi4iLCAi
Q29ubmVjdGlvbiBmYWlsZWQiKTsNCi0gICAgICBlbGEtPmNvbm5lY3RlZD0w
Ow0KLSAgICAgIGViX2xvY2FsX2FjY291bnRfdXBkYXRlKGVsYSk7DQotICAg
ICAgcmV0dXJuOw0KLSAgICB9DQorICBpZiAobGFkID09IE5VTEwpDQorICB7
DQorICAgIGlmIChjb25uKQ0KKyAgICAgIGZyZWUoY29ubik7DQorICAgIHJl
dHVybjsNCisgIH0NCiANCi0gICAgbGFkLT5mZF90YWc9ZWJfaW5wdXRfYWRk
KGxhZC0+Y29ubi0+ZmQsIEVCX0lOUFVUX1JFQUR8RUJfSU5QVVRfRVhDRVBU
SU9OLCBlYl90b2NfY2FsbGJhY2ssIGxhZC0+Y29ubik7DQorICBpZiAoZWxh
LT5yZWFkeSB8fCBsYWQtPmNvbm4pDQorICB7DQorICAgIC8vIEV4dHJhIGNv
bm5lY3QgY2FsbGJhY2ssIHByb2JhYmx5IGZyb20gYSBwcmV2aW91cyBhdHRl
bXB0DQorICAgIGlmIChjb25uKQ0KKyAgICAgIGZyZWUoY29ubik7DQorICAg
IHJldHVybjsNCisgIH0NCiANCi0gICAgbGFkLT5jb25uLT5hY2NvdW50PWVs
YTsNCi0NCi0gICAgZWxhLT5yZWFkeT0xOw0KLSAgICBpZihzdGF0ZVswXT09
J0EnKQ0KLSAgICB7DQotICAgICAgdG9jX3NldF9hd2F5KGxhZC0+Y29ubiwg
IlRoaXMgdXNlciBpcyBhd2F5Iik7DQotICAgICAgbGFkLT5hd2F5PTE7DQot
ICAgICAgZnJlZShlbGEtPnN0YXR1c19zdHJpbmcpOw0KLSAgICAgIGVsYS0+
c3RhdHVzX3N0cmluZz1zdHJkdXAoIkF3YXkiKTsNCi0gICAgfSBlbHNlIHsN
Ci0gICAgICBmcmVlKGVsYS0+c3RhdHVzX3N0cmluZyk7DQotICAgICAgZWxh
LT5zdGF0dXNfc3RyaW5nPXN0cmR1cCgiT25saW5lIik7DQotICAgIH0NCisg
IGlmIChjb25uID09IE5VTEwpDQorICB7DQorICAgIGViX3Nob3dfZXJyb3Io
IkNvdWxkIG5vdCBsb2cgaW50byBUT0Mgc2VydmVyLiBDaGVjayB5b3VyIHBy
ZWZlcmVuY2VzIGFuZCB0cnkgYWdhaW4uIiwgIkNvbm5lY3Rpb24gZmFpbGVk
Iik7DQorICAgIGVsYS0+Y29ubmVjdGVkID0gZWxhLT5yZWFkeSA9IDA7DQog
ICAgIGViX2xvY2FsX2FjY291bnRfdXBkYXRlKGVsYSk7DQogICAgIHJldHVy
bjsNCiAgIH0NCiANCi0gIGlmKCFzdHJjbXAoc3RhdGUsICJPZmZsaW5lIikp
DQotICB7DQotICAgIGlmKCFlbGEtPmNvbm5lY3RlZCkgeyByZXR1cm47IH0N
CisgIGxhZC0+Y29ubiA9IGNvbm47DQogDQotICAgIHRvY19zaWdub2ZmKGxh
ZC0+Y29ubik7DQotICAgIGViX2xvY2FsX2FjY291bnRfdXBkYXRlKGVsYSk7
DQotICB9DQorICBsYWQtPmNvbm4tPmFjY291bnQgPSBlbGE7DQorDQorICBs
YWQtPmZkX3RhZyA9IGViX2lucHV0X2FkZChsYWQtPmNvbm4tPmZkLCBFQl9J
TlBVVF9SRUFEfEVCX0lOUFVUX0VYQ0VQVElPTiwgZWJfdG9jX2NhbGxiYWNr
LCBsYWQtPmNvbm4pOw0KKw0KKyAgZWxhLT5yZWFkeSA9IDE7DQorICBlYl90
b2Nfc2V0X3N0YXRlKGVsYSwgIk9ubGluZSIpOw0KIH0NCiANCiB2b2lkIGVi
X3RvY19sb2dpbihlYl9sb2NhbF9hY2NvdW50ICogZWxhKQ0KIHsNCi0gIGlm
KGF0b2koZWJfZ2V0X3ZhbHVlKGVsYS0+Y29uZmlnX2tleSwgImV4Y2xfc29h
IikpKQ0KKyAgZWJfdG9jX2xhZCAqIGxhZCA9IEdFVF9MQUQoZWxhKTsNCisN
CisgIGlmIChhdG9pKGViX2dldF92YWx1ZShlbGEtPmNvbmZpZ19rZXksICJl
eGNsX3NvYSIpKSkNCiAgIHsgcmV0dXJuOyB9DQogDQotICBlYl90b2Nfc2V0
X3N0YXRlKGVsYSwgIk9ubGluZSIpOw0KKyAgZWxhLT5jb25uZWN0ZWQgPSAx
Ow0KKyAgZWxhLT5yZWFkeSA9IDA7DQorICBlYl9sb2NhbF9hY2NvdW50X3Vw
ZGF0ZShlbGEpOw0KKw0KKyAgaWYgKGxhZC0+Y29ubiAhPSBOVUxMKQ0KKyAg
ew0KKyAgICBlYl90b2NfZGlzY29ubmVjdChsYWQtPmNvbm4pOw0KKyAgfQ0K
Kw0KKyAgdG9jX3NpZ25vbihlbGEtPmhhbmRsZSwgZWJfZ2V0X3ZhbHVlKGVs
YS0+Y29uZmlnX2tleSwgInBhc3N3b3JkIiksDQorICAgIGViX2dldF92YWx1
ZShlbGEtPmNvbmZpZ19rZXksICJ0b2Mvc2VydmVyIiksIGF0b2koZWJfZ2V0
X3ZhbHVlKGVsYS0+Y29uZmlnX2tleSwgInRvYy9wb3J0IikpLA0KKyAgICBl
Yl9nZXRfdmFsdWUoZWxhLT5jb25maWdfa2V5LCAidXNlcl9pbmZvIiksIGVi
X3RvY19zaWdub25fY2IsIGVsYSk7DQogfQ0KIA0KIHZvaWQgZWJfdG9jX2xv
Z291dChlYl9sb2NhbF9hY2NvdW50ICogZWxhKQ0KIHsNCi0gIGViX3RvY19z
ZXRfc3RhdGUoZWxhLCAiT2ZmbGluZSIpOw0KKyAgRUxpc3QgKiBlbjsNCisg
IGViX3RvY19sYWQgKiBsYWQgPSBHRVRfTEFEKGVsYSk7DQorDQorICBpZiAo
IWVsYS0+Y29ubmVjdGVkKQ0KKyAgICByZXR1cm47DQorDQorICBmb3IgKGVu
ID0gZWxhLT5idWRkaWVzOyBlbiAhPSBOVUxMOyBlbiA9IGVuLT5uZXh0KQ0K
KyAgew0KKyAgICBlYl9hY2NvdW50ICogYWNjID0gKGViX2FjY291bnQgKill
bi0+ZGF0YTsNCisgICAgaWYgKGFjYy0+c3RhdHVzICE9IEVCX0FDQ09VTlRf
T0ZGTElORSkNCisgICAgew0KKyAgICAgIGZyZWUoYWNjLT5zdGF0dXNfc3Ry
aW5nKTsNCisgICAgICBhY2MtPnN0YXR1c19zdHJpbmcgPSBzdHJkdXAoIk9m
ZmxpbmUiKTsNCisgICAgICBhY2MtPnN0YXR1cyA9IEVCX0FDQ09VTlRfT0ZG
TElORTsNCisgICAgICBlYl9idWRkeV91cGRhdGVfc3RhdHVzKGFjYyk7DQor
ICAgICAgZWJfYnVkZHlfbG9nb3V0KGFjYyk7DQorICAgIH0NCisgIH0NCisN
CisgIGZyZWUoZWxhLT5zdGF0dXNfc3RyaW5nKTsNCisgIGVsYS0+c3RhdHVz
X3N0cmluZyA9IHN0cmR1cCgiT2ZmbGluZSIpOw0KKyAgZWxhLT5yZWFkeSA9
IGVsYS0+Y29ubmVjdGVkID0gMDsNCisgIGViX2xvY2FsX2FjY291bnRfdXBk
YXRlKGVsYSk7DQorICBpZiAobGFkLT5jb25uICE9IE5VTEwpDQorICB7DQor
ICAgIGViX3RvY19kaXNjb25uZWN0KGxhZC0+Y29ubik7DQorICB9DQorICBs
YWQtPmF3YXk9MDsNCiB9DQogDQogdm9pZCBlYl90b2Nfc2V0dXBfbG9jYWxf
YWNjb3VudChlYl9sb2NhbF9hY2NvdW50ICogZWxhKQ0KQEAgLTI3MywzMyAr
MzQzLDEyIEBADQogDQogdm9pZCBlYl90b2Nfc2V0X2F3YXkoZWJfbG9jYWxf
YWNjb3VudCAqIGVsYSwgY2hhciAqIHNob3J0X21zZywgY2hhciAqIGxvbmdf
bXNnKQ0KIHsNCi0gIGViX3RvY19sYWQgKiBsYWQ9R0VUX0xBRChlbGEpOw0K
LQ0KLSAgaWYobGFkLT5hd2F5KQ0KLSAgeyB0b2Nfc2V0X2F3YXkobGFkLT5j
b25uLCBOVUxMKTsgfQ0KLQ0KLSAgdG9jX3NldF9hd2F5KGxhZC0+Y29ubiwg
bG9uZ19tc2cpOw0KLQ0KLSAgZnJlZShlbGEtPnN0YXR1c19zdHJpbmcpOw0K
LSAgZWxhLT5zdGF0dXNfc3RyaW5nPXN0cmR1cCgiQXdheSIpOw0KLSAgZWJf
bG9jYWxfYWNjb3VudF91cGRhdGUoZWxhKTsNCi0NCi0gIGxhZC0+YXdheT0x
Ow0KKyAgZWJfdG9jX3NldF9zdGF0ZShlbGEsIGxvbmdfbXNnKTsNCiB9DQog
DQogdm9pZCBlYl90b2NfdW5zZXRfYXdheShlYl9sb2NhbF9hY2NvdW50ICog
ZWxhKQ0KIHsNCi0gIGViX3RvY19sYWQgKiBsYWQ9R0VUX0xBRChlbGEpOw0K
LQ0KLSAgaWYobGFkLT5hd2F5KQ0KLSAgew0KLSAgICB0b2Nfc2V0X2F3YXko
bGFkLT5jb25uLCBOVUxMKTsNCi0gICAgbGFkLT5hd2F5PTA7DQotDQotICAg
IGZyZWUoZWxhLT5zdGF0dXNfc3RyaW5nKTsNCi0gICAgZWxhLT5zdGF0dXNf
c3RyaW5nPXN0cmR1cCgiT25saW5lIik7DQotICAgIGViX2xvY2FsX2FjY291
bnRfdXBkYXRlKGVsYSk7DQotICB9DQorICBlYl90b2Nfc2V0X3N0YXRlKGVs
YSwgIk9ubGluZSIpOw0KIH0NCiANCiB2b2lkIGViX3RvY19qb2luX2dyb3Vw
X2NoYXQoZWJfbG9jYWxfYWNjb3VudCAqIGVsYSwgY2hhciAqIG5hbWUpDQpA
QCAtNDI3LDU0ICs0NzYsODQgQEANCiB2b2lkIGViX3RvY191cGRhdGVfdXNl
cl9zdGF0dXMgKHRvY19jb25uICogY29ubiwgY2hhciAqIHVzZXIsIGludCBv
bmxpbmUsIHRpbWVfdCBpZGxlLCBpbnQgZXZpbCwgaW50IHVuYXZhaWxhYmxl
ICkNCiB7DQogICBlYl9sb2NhbF9hY2NvdW50ICogZWxhPUdFVF9FTEEoY29u
bik7DQotICBlYl9hY2NvdW50ICogYWNjPWViX3RvY19nZXRfYWNjb3VudChl
bGEsIHVzZXIpOw0KKyAgZWJfYWNjb3VudCAqIGFjYzsNCiAgIGNoYXIgYnVm
WzY0XTsNCi0gIGNoYXIgYnVmMlszMl07DQorICBjaGFyIGJ1ZjJbNjRdOw0K
KyAgaW50IGRvX2xvZ2luID0gMDsNCisgIGludCBkb19sb2dvdXQgPSAwOw0K
IA0KLSAgaWYoYWNjPT1OVUxMKQ0KKyAgaWYgKGVsYSA9PSBOVUxMKQ0KICAg
ew0KICAgICBwcmludGYoIk1hcnRpYW4gYnVkZHkgdXBkYXRlICglcylcbiIs
IHVzZXIpOw0KICAgICByZXR1cm47DQogICB9DQogDQotICBpZihhY2MtPnN0
YXR1cyE9RUJfQUNDT1VOVF9PRkZMSU5FICYmICFvbmxpbmUpDQotICB7IGVi
X2J1ZGR5X2xvZ291dChhY2MpOyByZXR1cm47IH0NCisgIGFjYyA9IGViX3Rv
Y19nZXRfYWNjb3VudChlbGEsIHVzZXIpOw0KKyAgaWYgKGFjYyA9PSBOVUxM
KQ0KKyAgew0KKyAgICBhY2MgPSBlYl9hZGRfYWNjb3VudF9wbHVzKCJVbmtu
b3duIiwgdXNlciwgZWxhLCB1c2VyKTsNCisgIH0NCiANCi0gIGlmKGFjYy0+
c3RhdHVzPT1FQl9BQ0NPVU5UX09GRkxJTkUgJiYgb25saW5lKQ0KLSAgeyBl
Yl9idWRkeV9sb2dpbihhY2MpOyB9DQorICBpZiAoYWNjLT5zdGF0dXMgPT0g
RUJfQUNDT1VOVF9PRkZMSU5FKQ0KKyAgew0KKyAgICBkb19sb2dpbiA9IDE7
DQorICB9DQogDQotICBidWZbMF09J1wwJzsNCi0gIGlmKGlkbGU+MCkNCisg
IGZyZWUoYWNjLT5zdGF0dXNfc3RyaW5nKTsNCisgIGlmIChvbmxpbmUpDQog
ICB7DQotICAgIGludCBtaW5zPSh0aW1lKE5VTEwpLWlkbGUpLzYwOw0KLSAg
ICBidWZbMF09JygnOw0KLSAgICBidWZbMV09J1wwJzsNCisgICAgaWYgKHVu
YXZhaWxhYmxlKQ0KKyAgICB7DQorICAgICAgYWNjLT5zdGF0dXMgPSBFQl9B
Q0NPVU5UX0FXQVk7DQorICAgICAgc3ByaW50ZihidWYsICJBd2F5Iik7DQor
ICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgYWNjLT5zdGF0dXMg
PSBFQl9BQ0NPVU5UX09OTElORTsNCisgICAgICBzcHJpbnRmKGJ1ZiwgIiIp
Ow0KKyAgICB9DQogDQotICAgIGlmKG1pbnMvKDYwKjI0KSkNCisgICAgaWYg
KGlkbGUgPiAwKQ0KICAgICB7DQotICAgICAgc3ByaW50ZihidWYyLCAiJWQ6
IiwgbWlucy8oNjAqMjQpKTsNCisgICAgICBpbnQgbWlucyA9ICh0aW1lKE5V
TEwpIC0gaWRsZSkgLyA2MDsNCisgICAgICBzdHJjYXQoYnVmLCAiKCIpOw0K
Kw0KKyAgICAgIGlmIChtaW5zIC8gKDYwICogMjQpKQ0KKyAgICAgIHsNCisJ
c3ByaW50ZihidWYyLCAiJWQ6IiwgbWlucyAvICg2MCAqIDI0KSk7DQorCXN0
cmNhdChidWYsIGJ1ZjIpOw0KKwltaW5zICU9ICg2MCAqIDI0KTsNCisgICAg
ICB9DQorDQorICAgICAgc3ByaW50ZihidWYyLCAiJWQ6JTAyZCkiLCBtaW5z
IC8gNjAsIG1pbnMgJSA2MCk7DQogICAgICAgc3RyY2F0KGJ1ZiwgYnVmMik7
DQotICAgICAgbWlucyU9KDYwKjI0KTsNCiAgICAgfQ0KIA0KLSAgICBzcHJp
bnRmKGJ1ZjIsICIlZDolMDJkKSIsIG1pbnMvNjAsIG1pbnMlNjApOw0KLSAg
ICBzdHJjYXQoYnVmLCBidWYyKTsNCisgICAgaWYgKGV2aWwpDQorICAgIHsN
CisgICAgICBzcHJpbnRmKGJ1ZjIsICIgWyVkJSVdIiwgZXZpbCk7DQorICAg
ICAgc3RyY2F0KGJ1ZiwgYnVmMik7DQorICAgIH0NCisNCisgICAgYWNjLT5z
dGF0dXNfc3RyaW5nID0gc3RyZHVwKGJ1Zik7DQogICB9DQorICBlbHNlDQor
ICB7DQorICAgIGFjYy0+c3RhdHVzID0gRUJfQUNDT1VOVF9PRkZMSU5FOw0K
KyAgICBhY2MtPnN0YXR1c19zdHJpbmcgPSBzdHJkdXAoIk9mZmxpbmUiKTsN
CisgICAgZG9fbG9naW4gPSAwOw0KKyAgICBkb19sb2dvdXQgPSAxOw0KKyAg
fQ0KIA0KLSAgaWYoZXZpbCkNCisgIGlmIChkb19sb2dpbikNCiAgIHsNCi0g
ICAgY2hhciBidWYyWzMyXTsNCi0gICAgc3ByaW50ZihidWYyLCAiIFslZCUl
XSIsIGV2aWwpOw0KLSAgICBzdHJjYXQoYnVmLCBidWYyKTsNCisgICAgZWJf
YnVkZHlfbG9naW4oYWNjKTsNCiAgIH0NCi0NCi0gIGlmKHVuYXZhaWxhYmxl
KQ0KLSAgeyBhY2MtPnN0YXR1cz1FQl9BQ0NPVU5UX0FXQVk7IH0gZWxzZSB7
IGFjYy0+c3RhdHVzPUVCX0FDQ09VTlRfT05MSU5FOyB9DQotDQotICBmcmVl
KGFjYy0+c3RhdHVzX3N0cmluZyk7DQotICBhY2MtPnN0YXR1c19zdHJpbmc9
c3RyZHVwKGJ1Zik7DQotDQogICBlYl9idWRkeV91cGRhdGVfc3RhdHVzKGFj
Yyk7DQorICBpZiAoZG9fbG9nb3V0KQ0KKyAgew0KKyAgICBlYl9idWRkeV9s
b2dvdXQoYWNjKTsNCisgIH0NCiB9DQogDQogdm9pZCBlYl90b2NfZXJyb3Jf
bWVzc2FnZShjaGFyICogbWVzc2FnZSkNCkBAIC00ODUsMzYgKzU2NCwyOCBA
QA0KIHZvaWQgZWJfdG9jX2Rpc2Nvbm5lY3QgKHRvY19jb25uICogY29ubikN
CiB7DQogICBlYl9sb2NhbF9hY2NvdW50ICogZWxhPUdFVF9FTEEoY29ubik7
DQorICBlYl90b2NfbGFkICogbGFkOw0KICAgRUxpc3QgKiBuOw0KIA0KLSAg
aWYoZWxhPT1OVUxMKSB7IHJldHVybjsgfQ0KKyAgaWYgKGNvbm4gPT0gTlVM
TCkNCisgICAgcmV0dXJuOw0KIA0KLSAgaWYoZWxhLT5jb25uZWN0ZWQpDQor
ICBpZiAoZWxhID09IE5VTEwpDQogICB7DQotICAgIGVsYS0+Y29ubmVjdGVk
PTA7DQotICAgIHRvY19zaWdub2ZmKGNvbm4pOw0KICAgfSBlbHNlIHsNCi0g
ICAgcHJpbnRmKCJJJ20gZ29pbmcgYWxsIGxvb3B5Li4uXG4iKTsNCi0gIH0N
CisgICAgbGFkPUdFVF9MQUQoZWxhKTsNCiANCi0gIEdFVF9MQUQoZWxhKS0+
YXdheT0wOw0KKyAgICBsYWQtPmNvbm4gPSBOVUxMOyAvKiBNYWtlIHN1cmUg
dGhhdCBsb2dvdXQgZG9lc24ndCB0cnkgdG8gY2FsbCB1cyAqLw0KIA0KLSAg
ZWxhLT5jb25uZWN0ZWQ9MDsNCi0gIGVsYS0+cmVhZHk9MDsNCi0gIEdFVF9M
QUQoZWxhKS0+Y29ubj1OVUxMOw0KLSAgZnJlZShlbGEtPnN0YXR1c19zdHJp
bmcpOw0KLSAgZWxhLT5zdGF0dXNfc3RyaW5nPXN0cmR1cCgiT2ZmbGluZSIp
Ow0KLSAgZWJfaW5wdXRfcmVtb3ZlKEdFVF9MQUQoZWxhKS0+ZmRfdGFnKTsN
Ci0NCi0gIGZvcihuPWVsYS0+YnVkZGllczsgbiE9TlVMTDsgbj1uLT5uZXh0
KQ0KLSAgew0KLSAgICBlYl9hY2NvdW50ICogYT0oZWJfYWNjb3VudCAqKW4t
PmRhdGE7DQotDQotICAgIGlmKGEtPnN0YXR1cyE9RUJfQUNDT1VOVF9PRkZM
SU5FKQ0KLSAgICB7IGViX2J1ZGR5X2xvZ291dChhKTsgfQ0KKyAgICBpZihl
bGEtPmNvbm5lY3RlZCkNCisgICAgew0KKyAgICAgIGViX3RvY19sb2dvdXQo
ZWxhKTsNCisgICAgfQ0KKyAgICBlYl9pbnB1dF9yZW1vdmUobGFkLT5mZF90
YWcpOw0KICAgfQ0KIA0KLSAgZWJfbG9jYWxfYWNjb3VudF91cGRhdGUoZWxh
KTsNCisgIHRvY19zaWdub2ZmKGNvbm4pOw0KKyAgZnJlZShjb25uKTsNCiB9
DQogDQogdm9pZCBlYl90b2Nfam9pbl9hY2sgKHRvY19jb25uICogY29ubiwg
Y2hhciAqIGlkLCBjaGFyICogbmFtZSkNCkluZGV4OiBwbHVnaW5zL3RvYy9s
aWJ0b2MuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHBsdWdpbnMv
dG9jL2xpYnRvYy5jCShyZXZpc2lvbiAzNTcpDQorKysgcGx1Z2lucy90b2Mv
bGlidG9jLmMJKHdvcmtpbmcgY29weSkNCkBAIC01MDEsMTE5ICs1MDEsMTQy
IEBADQogCX0NCiB9DQogDQotdm9pZCB0b2NfZ2V0X2ZpbGUoIGNoYXIgKiBp
cCwgc2hvcnQgcG9ydCwgY2hhciAqIGNvb2tpZSwgY2hhciAqIGZpbGVuYW1l
ICkNCitzdHJ1Y3QgZ2V0X2ZpbGVfY2FsbGJhY2tfZGF0YQ0KIHsNCi0JCWlu
dCBmZDsNCi0JCWNoYXIgYnVmZlsyMDQ4XTsNCi0JCWNoYXIgYnVmZjJbN107
DQorCWNoYXIgKmNvb2tpZTsNCisJY2hhciAqZmlsZW5hbWU7DQorfTsNCiAN
Ci0JCUZJTEUgKiBmaWxlOw0KK3ZvaWQgdG9jX2dldF9maWxlX2NhbGxiYWNr
KGludCBmZCwgdm9pZCAqZGF0YSkNCit7DQorCXN0cnVjdCBnZXRfZmlsZV9j
YWxsYmFja19kYXRhICogY2JkID0gZGF0YTsNCisJY2hhciBidWZmWzIwNDhd
Ow0KKwljaGFyIGJ1ZmYyWzddOw0KKwlGSUxFICogZmlsZTsNCisJdG9jX2Zp
bGVfY29ubiAqIGNvbm4gPSBuZXcwKCB0b2NfZmlsZV9jb25uLCAxICk7DQog
DQotCQl0b2NfZmlsZV9jb25uICogY29ubiA9IG5ldzAoIHRvY19maWxlX2Nv
bm4sIDEgKTsNCisJdHlwZWRlZiBzdHJ1Y3QgX2ZpbGVfaGVhZGVyDQorCXsN
CisJCXNob3J0IG1hZ2ljOw0KKwkJY2hhciBjb29raWVbOF07DQorCQlzaG9y
dCBlbmNyeXB0aW9uOw0KKwkJc2hvcnQgY29tcHJlc3Npb247DQorCQlzaG9y
dCB0b3RhbF9udW1fZmlsZXM7DQorCQlzaG9ydCB0b3RhbF9udW1fZmlsZXNf
bGVmdDsNCisJCXNob3J0IHRvdGFsX251bV9wYXJ0czsNCisJCXNob3J0IHRv
dGFsX251bV9wYXJ0c19sZWZ0Ow0KKwkJbG9uZyB0b3RhbF9maWxlX3NpemU7
DQorCQlsb25nIGZpbGVfc2l6ZTsNCisJCWxvbmcgbW9kaWZpZWRfdGltZTsN
CisJCWxvbmcgY2hlY2tzdW07DQorCQlsb25nIHJlc19mb3JrX2NoZWNrc3Vt
Ow0KKwkJbG9uZyByZXNfZm9ya19zaXplOw0KKwkJbG9uZyBjcmVhdGlvbl90
aW1lOw0KKwkJbG9uZyByZXNfZm9ya19jaGVja3N1bTI7DQorCQlsb25nIG51
bV9yZWNpZXZlZDsNCisJCWxvbmcgcmVjaWV2ZWRfY2hlY2tzdW07DQorCQlj
aGFyIGlkX3N0cmluZ1szMl07DQorCQljaGFyIGZsYWdzOw0KKwkJY2hhciBs
aXN0X25hbWVfb2Zmc2V0Ow0KKwkJY2hhciBsaXN0X3NpemVfb2Zmc2V0Ow0K
KwkJY2hhciBkdW1teVs2OV07DQorCQljaGFyIG1hY19maWxlX2luZm9bMTZd
Ow0KKwkJc2hvcnQgbmFtZV9lbmNvZGluZzsNCisJCXNob3J0IG5hbWVfbGFu
Z3VhZ2U7DQorCX0gZmlsZV9oZWFkZXI7DQogDQorCWZpbGVfaGVhZGVyICog
ZmggPSAoZmlsZV9oZWFkZXIgKilidWZmOw0KKwlzaG9ydCBoZWFkZXJfc2l6
ZTsNCisJY2hhciAqIGNvb2tpZTIgPSBiYXNlNjRfZGVjb2RlKGNiZC0+Y29v
a2llKTsNCiANCi0JCXR5cGVkZWYgc3RydWN0IF9maWxlX2hlYWRlcg0KLQkJ
ew0KLQkJCXNob3J0IG1hZ2ljOw0KLQkJCWNoYXIgY29va2llWzhdOw0KLQkJ
CXNob3J0IGVuY3J5cHRpb247DQotCQkJc2hvcnQgY29tcHJlc3Npb247DQot
CQkJc2hvcnQgdG90YWxfbnVtX2ZpbGVzOw0KLQkJCXNob3J0IHRvdGFsX251
bV9maWxlc19sZWZ0Ow0KLQkJCXNob3J0IHRvdGFsX251bV9wYXJ0czsNCi0J
CQlzaG9ydCB0b3RhbF9udW1fcGFydHNfbGVmdDsNCi0JCQlsb25nIHRvdGFs
X2ZpbGVfc2l6ZTsNCi0JCQlsb25nIGZpbGVfc2l6ZTsNCi0JCQlsb25nIG1v
ZGlmaWVkX3RpbWU7DQotCQkJbG9uZyBjaGVja3N1bTsNCi0JCQlsb25nIHJl
c19mb3JrX2NoZWNrc3VtOw0KLQkJCWxvbmcgcmVzX2Zvcmtfc2l6ZTsNCi0J
CQlsb25nIGNyZWF0aW9uX3RpbWU7DQotCQkJbG9uZyByZXNfZm9ya19jaGVj
a3N1bTI7DQotCQkJbG9uZyBudW1fcmVjaWV2ZWQ7DQotCQkJbG9uZyByZWNp
ZXZlZF9jaGVja3N1bTsNCi0JCQljaGFyIGlkX3N0cmluZ1szMl07DQotCQkJ
Y2hhciBmbGFnczsNCi0JCQljaGFyIGxpc3RfbmFtZV9vZmZzZXQ7DQotCQkJ
Y2hhciBsaXN0X3NpemVfb2Zmc2V0Ow0KLQkJCWNoYXIgZHVtbXlbNjldOw0K
LQkJCWNoYXIgbWFjX2ZpbGVfaW5mb1sxNl07DQotCQkJc2hvcnQgbmFtZV9l
bmNvZGluZzsNCi0JCQlzaG9ydCBuYW1lX2xhbmd1YWdlOw0KLQkJfSBmaWxl
X2hlYWRlcjsNCi0NCi0JCWZpbGVfaGVhZGVyICogZmggPSAoZmlsZV9oZWFk
ZXIgKilidWZmOw0KLQkJc2hvcnQgaGVhZGVyX3NpemU7DQotCQljaGFyICog
Y29va2llMiA9IGJhc2U2NF9kZWNvZGUoY29va2llKTsNCi0JCWludCBpOw0K
LQ0KLQkJZm9yKCBpID0gMDsgKGZkID0gZWJfY29ubmVjdF9zeW5jX3NvY2tl
dChpcCwgcG9ydCkpIDwgMCAmJiBpIDwgMTA7IGkrKyApOw0KLQ0KLQ0KKwlp
ZiAoZmQgPCAwKQ0KKwl7DQogI2lmZGVmIERFQlVHDQotCQlmcHJpbnRmKHN0
ZGVyciwgImNvbm5lY3RlZCB0byAlc1xuIiwgaXAgKTsNCisJCWZwcmludGYo
c3RkZXJyLCAiZXJyb3IgY29ubmVjdGluZyB0byBnZXQgZmlsZTogJXNcbiIs
IGNiZC0+ZmlsZW5hbWUpOw0KICNlbmRpZg0KKwkJZnJlZShjYmQtPmNvb2tp
ZSk7DQorCQlmcmVlKGNiZC0+ZmlsZW5hbWUpOw0KKwkJZnJlZShjYmQpOw0K
IA0KLQkJcmVjdiggZmQsIGJ1ZmYyLCA2LCAwICk7DQotCQlidWZmMls2XSA9
ICdcMCc7DQotCQloZWFkZXJfc2l6ZSA9bnRvaHMoKigoc2hvcnQqKShidWZm
Mis0KSkpOw0KKwkJcmV0dXJuOw0KKwl9DQogDQorCXJlY3YoZmQsIGJ1ZmYy
LCA2LCAwKTsNCisJYnVmZjJbNl0gPSAnXDAnOw0KKwloZWFkZXJfc2l6ZSA9
IG50b2hzKCooKHNob3J0KikoYnVmZjIrNCkpKTsNCisNCiAjaWZkZWYgREVC
VUcNCi0JCWZwcmludGYoc3RkZXJyLCAiaGVhZGVyX3NpemUgPSAlZFxuIiwg
aGVhZGVyX3NpemUgKTsNCisJZnByaW50ZihzdGRlcnIsICJoZWFkZXJfc2l6
ZSA9ICVkXG4iLCBoZWFkZXJfc2l6ZSk7DQogI2VuZGlmDQogDQotCQlyZWN2
KCBmZCwgYnVmZiwgaGVhZGVyX3NpemUgLSA2LCAwICk7DQorCXJlY3YoZmQs
IGJ1ZmYsIGhlYWRlcl9zaXplIC0gNiwgMCk7DQogDQotCQlpZiggZmgtPm1h
Z2ljICE9IDB4MDEwMSApDQotCQl7DQorCWlmIChmaC0+bWFnaWMgIT0gMHgw
MTAxKQ0KKwl7DQogI2lmZGVmIERFQlVHDQotCQkJZnByaW50ZihzdGRlcnIs
ICJiYWQgbWFnaWMgbnVtYmVyICV4XG4iLCBmaC0+bWFnaWMgKTsNCisJCWZw
cmludGYoc3RkZXJyLCAiYmFkIG1hZ2ljIG51bWJlciAleFxuIiwgZmgtPm1h
Z2ljKTsNCiAjZW5kaWYNCi0JCQljbG9zZShmZCk7DQotCQkJcmV0dXJuOw0K
LQkJfQ0KKwkJY2xvc2UoZmQpOw0KKwkJZnJlZShjYmQtPmNvb2tpZSk7DQor
CQlmcmVlKGNiZC0+ZmlsZW5hbWUpOw0KKwkJZnJlZShjYmQpOw0KKwkJcmV0
dXJuOw0KKwl9DQogDQogI2lmZGVmIERFQlVHDQotCQlmcHJpbnRmKCBzdGRl
cnIsICJtYWdpYyA9ICUwNHhcbiIsIGZoLT5tYWdpYyApOw0KKwlmcHJpbnRm
KHN0ZGVyciwgIm1hZ2ljID0gJTA0eFxuIiwgZmgtPm1hZ2ljKTsNCiAjZW5k
aWYNCiANCi0JCWZoLT5tYWdpYyA9IGh0b25zKDB4MDIwMik7DQotCQltZW1j
cHkoZmgtPmNvb2tpZSwgY29va2llMiwgOCk7DQotCQlmcmVlKGNvb2tpZTIp
Ow0KKwlmaC0+bWFnaWMgPSBodG9ucygweDAyMDIpOw0KKwltZW1jcHkoZmgt
PmNvb2tpZSwgY29va2llMiwgOCk7DQorCWZyZWUoY29va2llMik7DQogI2lm
ZGVmIERFQlVHDQotCQlmcHJpbnRmKHN0ZGVyciwgImlkX3N0cmluZyA9ICVz
XG4iLCBidWZmICsgNjIgKTsNCi0JCWZwcmludGYoc3RkZXJyLCAiZmlsZV9u
YW1lID0gJXNcbiIsIGJ1ZmYgKyAxODYgKTsNCisJZnByaW50ZihzdGRlcnIs
ICJpZF9zdHJpbmcgPSAlc1xuIiwgYnVmZiArIDYyKTsNCisJZnByaW50Zihz
dGRlcnIsICJmaWxlX25hbWUgPSAlc1xuIiwgYnVmZiArIDE4Nik7DQogI2Vu
ZGlmDQotCQltZW1zZXQoYnVmZiArIDYyLCAwLCAzMik7DQotCQlzdHJjcHko
YnVmZiArIDYyLCAiVElLIik7DQotCQlmaC0+ZW5jcnlwdGlvbiA9IDA7DQot
CQlmaC0+Y29tcHJlc3Npb24gPSAwOw0KLQkJZmgtPnRvdGFsX251bV9wYXJ0
cyA9IGh0b25zKDEpOw0KLQkJZmgtPnRvdGFsX251bV9wYXJ0c19sZWZ0ID0g
aHRvbnMoMSk7DQorCW1lbXNldChidWZmICsgNjIsIDAsIDMyKTsNCisJc3Ry
Y3B5KGJ1ZmYgKyA2MiwgIlRJSyIpOw0KKwlmaC0+ZW5jcnlwdGlvbiA9IDA7
DQorCWZoLT5jb21wcmVzc2lvbiA9IDA7DQorCWZoLT50b3RhbF9udW1fcGFy
dHMgPSBodG9ucygxKTsNCisJZmgtPnRvdGFsX251bV9wYXJ0c19sZWZ0ID0g
aHRvbnMoMSk7DQogDQogI2lmZGVmIERFQlVHDQotCQlmcHJpbnRmKHN0ZGVy
ciwgInRvdGFsX251bV9wYXJ0cyA9ICUwNHggdG90YWxfbnVtX3BhcnRzX2xl
ZnQgPSAlMDR4IGZpbGVfc2l6ZSA9ICVsZFxuIiwNCi0JCWZoLT50b3RhbF9u
dW1fcGFydHMsIGZoLT50b3RhbF9udW1fcGFydHNfbGVmdCwgbnRvaGwoKigo
bG9uZyopKGJ1ZmYrMjIpKSkpOw0KKwlmcHJpbnRmKHN0ZGVyciwgInRvdGFs
X251bV9wYXJ0cyA9ICUwNHggdG90YWxfbnVtX3BhcnRzX2xlZnQgPSAlMDR4
IGZpbGVfc2l6ZSA9ICVsZFxuIiwNCisJZmgtPnRvdGFsX251bV9wYXJ0cywg
ZmgtPnRvdGFsX251bV9wYXJ0c19sZWZ0LCBudG9obCgqKChsb25nKikoYnVm
ZisyMikpKSk7DQogDQogI2VuZGlmDQogDQotCQlzZW5kKCBmZCwgYnVmZjIs
IDYsIDAgKTsNCi0JCXNlbmQoIGZkLCBidWZmLCBoZWFkZXJfc2l6ZSAtIDYs
IDAgKTsNCisJc2VuZChmZCwgYnVmZjIsIDYsIDApOw0KKwlzZW5kKGZkLCBi
dWZmLCBoZWFkZXJfc2l6ZSAtIDYsIDApOw0KIA0KLQkJZmlsZSA9IGZvcGVu
KCBmaWxlbmFtZSwgInciICk7DQorCWZpbGUgPSBmb3BlbihjYmQtPmZpbGVu
YW1lLCAidyIpOw0KIA0KLQkJbWVtY3B5KGNvbm4tPmhlYWRlcjEsIGJ1ZmYy
LCA3ICk7DQotCQltZW1jcHkoY29ubi0+aGVhZGVyMiwgYnVmZiwgMjA0OCAp
Ow0KLQkJY29ubi0+ZmQgPSBmZDsNCi0JCWNvbm4tPmFtb3VudCA9IDA7DQot
CQljb25uLT5maWxlID0gZmlsZTsNCisJbWVtY3B5KGNvbm4tPmhlYWRlcjEs
IGJ1ZmYyLCA3ICk7DQorCW1lbWNweShjb25uLT5oZWFkZXIyLCBidWZmLCAy
MDQ4ICk7DQorCWNvbm4tPmZkID0gZmQ7DQorCWNvbm4tPmFtb3VudCA9IDA7
DQorCWNvbm4tPmZpbGUgPSBmaWxlOw0KIA0KLQkJY29ubi0+cHJvZ3Jlc3Mg
PSB0b2NfYmVnaW5fZmlsZV9yZWNpZXZlKCBmaWxlbmFtZSwgIG50b2hsKCoo
KGxvbmcqKShidWZmKzIyKSkpICk7DQorCWNvbm4tPnByb2dyZXNzID0gdG9j
X2JlZ2luX2ZpbGVfcmVjaWV2ZShjYmQtPmZpbGVuYW1lLCAgbnRvaGwoKigo
bG9uZyopKGJ1ZmYrMjIpKSkpOw0KIA0KLQkJY29ubi0+aGFuZGxlID0gZWJf
aW5wdXRfYWRkKGZkLCBFQl9JTlBVVF9SRUFELCB0b2NfZ2V0X2ZpbGVfZGF0
YSwgY29ubik7DQorCWNvbm4tPmhhbmRsZSA9IGViX2lucHV0X2FkZChmZCwg
RUJfSU5QVVRfUkVBRCwgdG9jX2dldF9maWxlX2RhdGEsIGNvbm4pOw0KIA0K
KwlmcmVlKGNiZC0+Y29va2llKTsNCisJZnJlZShjYmQtPmZpbGVuYW1lKTsN
CisJZnJlZShjYmQpOw0KIH0NCiANCit2b2lkIHRvY19nZXRfZmlsZShjaGFy
ICogaXAsIHNob3J0IHBvcnQsIGNoYXIgKiBjb29raWUsIGNoYXIgKiBmaWxl
bmFtZSkNCit7DQorCWludCBmZDsNCisJc3RydWN0IGdldF9maWxlX2NhbGxi
YWNrX2RhdGEgKiBjYmQgPSBuZXcwKHN0cnVjdCBnZXRfZmlsZV9jYWxsYmFj
a19kYXRhLCAxKTsNCisJY2JkLT5jb29raWUgPSBzdHJkdXAoY29va2llKTsN
CisJY2JkLT5maWxlbmFtZSA9IHN0cmR1cChmaWxlbmFtZSk7DQorDQorCWZk
ID0gZWJfY29ubmVjdF9zb2NrZXQoaXAsIHBvcnQsIHRvY19nZXRfZmlsZV9j
YWxsYmFjaywgY2JkKTsNCit9DQorDQogdm9pZCB0b2NfZ2V0X3RhbGsoIGNo
YXIgKiBpcCwgc2hvcnQgcG9ydCwgY2hhciAqIGNvb2tpZSApDQogew0KIC8v
CQlpbnQgZmQ7DQpAQCAtMTIxMiwxNCArMTIzNSwyNCBAQA0KIAlyZXR1cm4g
YyAtIGEgKyBiICsgNzE2NjUxNTI7DQogfQ0KIA0KK3N0cnVjdCBjb25uZWN0
ZWRfZGF0YQ0KK3sNCisJdm9pZCAoKmNhbGxiYWNrKSh2b2lkICogZGF0YSwg
dG9jX2Nvbm4gKiBjb25uKTsNCisJdm9pZCAqIGNhbGxiYWNrX2RhdGE7DQor
CWNoYXIgKiB1c2VybmFtZTsNCisJY2hhciAqIHBhc3N3b3JkOw0KKwljaGFy
ICogc2VydmVyOw0KKwlzaG9ydCBwb3J0Ow0KKwljaGFyICogdGluZm87DQog
DQorfTsNCiANCi10b2NfY29ubiAqIHRvY19zaWdub24oIGNoYXIgKiB1c2Vy
bmFtZSwgY2hhciAqIHBhc3N3b3JkLA0KLQkJICAgIGNoYXIgKiBzZXJ2ZXIs
IHNob3J0IHBvcnQsIGNoYXIgKiB0aW5mbyApDQordm9pZCB0b2NfY29ubmVj
dGVkKGludCBmZCwgdm9pZCAqZGF0YSkNCiB7DQorCXN0cnVjdCBjb25uZWN0
ZWRfZGF0YSAqIGNkID0gZGF0YTsNCiAJZmRfc2V0IGZzOw0KKwljaGFyICpm
bGFwX3Jlc3VsdCA9IE5VTEw7DQogCXRvY19jb25uICogY29ubiA9IG5ldzAo
dG9jX2Nvbm4sIDEpOw0KLQljaGFyICpmbGFwX3Jlc3VsdD1OVUxMOw0KIA0K
IAkvKg0KIAkgKiAgICAgNCBieXRlIEZMQVAgdmVyc2lvbiAoMSkNCkBAIC0x
MjMxLDQ4ICsxMjY0LDYxIEBADQogCWNoYXIgYnVmZlsyMDQ4XTsNCiANCiAN
Ci0JY2hhciAqIG5vcm1hbGl6ZWRfdXNlcm5hbWUgPSBhaW1fbm9ybWFsaXpl
KHVzZXJuYW1lKTsNCisJY2hhciAqIG5vcm1hbGl6ZWRfdXNlcm5hbWUgPSBh
aW1fbm9ybWFsaXplKGNkLT51c2VybmFtZSk7DQogCXVuc2lnbmVkIHNob3J0
IHVzZXJuYW1lX2xlbmd0aCA9IGh0b25zKHN0cmxlbihub3JtYWxpemVkX3Vz
ZXJuYW1lKSk7DQogLy8JY2hhciAqIGM7DQogDQogCWZsYXBfaGVhZGVyIGZo
Ow0KIA0KKwlpZiAoZmQgPCAwKSAvLyBlcnJvciBjb25uZWN0aW5nDQorCXsN
CisJCShjZC0+Y2FsbGJhY2spKGNkLT5jYWxsYmFja19kYXRhLCBOVUxMKTsg
Ly8gU2lnbmFsIGVycm9yDQorCQlmcmVlKGNkLT51c2VybmFtZSk7DQorCQlm
cmVlKGNkLT5wYXNzd29yZCk7DQorCQlmcmVlKGNkLT5zZXJ2ZXIpOw0KKwkJ
ZnJlZShjZC0+dGluZm8pOw0KKwkJZnJlZShjZCk7DQorCQlmcmVlKGNvbm4p
Ow0KKw0KKwkJcmV0dXJuOw0KKwl9DQorDQogICAgICAgICAvLyBIQUNLIEFM
RVJUIGJlZ2luIHVzZXIgaW5mbyBoYWNrDQotICAgICAgICBpbmZvPXN0cmR1
cCh0aW5mbyk7DQorICAgICAgICBpbmZvPXN0cmR1cChjZC0+dGluZm8pOw0K
ICAgICAgICAgLy8gZW5kIGhhY2sgKHVzZXIgaW5mbykNCiANCi0Jc3RyY3B5
KGNvbm4tPnNlcnZlciwgc2VydmVyKTsNCi0JY29ubi0+cG9ydCA9IHBvcnQ7
DQorCXN0cm5jcHkoY29ubi0+c2VydmVyLCBjZC0+c2VydmVyLCBzaXplb2Yo
Y29ubi0+c2VydmVyKSk7DQorCWNvbm4tPnNlcnZlcltzaXplb2YoY29ubi0+
c2VydmVyKSAtIDFdID0gJ1wwJzsNCisJY29ubi0+cG9ydCA9IGNkLT5wb3J0
Ow0KKwljb25uLT5mZCA9IGZkOw0KIA0KLQ0KLQljb25uLT5mZCA9IGViX2Nv
bm5lY3Rfc3luY19zb2NrZXQoc2VydmVyLCBwb3J0KTsNCi0NCi0JaWYgKCBj
b25uLT5mZCA8PSAwICkNCi0Jew0KLQkJZnJlZShjb25uKTsNCi0JCXJldHVy
biBOVUxMOw0KLQl9DQotDQogCS8qIENsaWVudCBzZW5kcyAiRkxBUE9OXHJc
blxyXG4iICovDQogDQotCXdyaXRlKGNvbm4tPmZkLCAiRkxBUE9OXHJcblxu
XDAiLCAxMCk7DQorCXdyaXRlKGZkLCAiRkxBUE9OXHJcblxuXDAiLCAxMCk7
DQogDQogCS8qIFRPQyBzZW5kcyBDbGllbnQgRkxBUCBTSUdOT04gKi8NCiAN
CiAJRkRfWkVSTygmZnMpOw0KLQlGRF9TRVQoY29ubi0+ZmQsICZmcyk7DQor
CUZEX1NFVChmZCwgJmZzKTsNCiANCi0JLy9zZWxlY3QoY29ubi0+ZmQrMSwg
JmZzLCBOVUxMLCBOVUxMLCBOVUxMICk7DQorCS8vc2VsZWN0KGZkKzEsICZm
cywgTlVMTCwgTlVMTCwgTlVMTCApOw0KIA0KLQlmbGFwX3Jlc3VsdD1nZXRf
ZmxhcChjb25uKTsNCi0JaWYoZmxhcF9yZXN1bHQpDQotCQltZW1jcHkoIGJ1
ZmYsIGZsYXBfcmVzdWx0LDEwKTsNCisJZmxhcF9yZXN1bHQgPSBnZXRfZmxh
cChjb25uKTsNCisJaWYgKGZsYXBfcmVzdWx0KQ0KKwkJbWVtY3B5KGJ1ZmYs
IGZsYXBfcmVzdWx0LCAxMCk7DQogCWVsc2UNCiAJew0KICNpZmRlZiBERUJV
Rw0KIAkJZnByaW50ZihzdGRlcnIsICJFcnJvciEgIGdldF9mbGFwIGZhaWxl
ZFxuIik7DQogI2VuZGlmDQotCQlyZXR1cm4gTlVMTDsNCisJCShjZC0+Y2Fs
bGJhY2spKGNkLT5jYWxsYmFja19kYXRhLCBOVUxMKTsgLy8gU2lnbmFsIGVy
cm9yDQorCQlmcmVlKGNkLT51c2VybmFtZSk7DQorCQlmcmVlKGNkLT5wYXNz
d29yZCk7DQorCQlmcmVlKGNkLT5zZXJ2ZXIpOw0KKwkJZnJlZShjZC0+dGlu
Zm8pOw0KKwkJZnJlZShjZCk7DQorDQorCQlyZXR1cm47DQogCX0NCiANCiAJ
YnVmZlsxMF0gPSAwOw0KQEAgLTEyODMsMTQgKzEzMjksMTQgQEANCiAJZmgu
YXN0ID0gJyonOw0KIAlmaC50eXBlID0gMTsNCiAJZmguc2VxID0gaHRvbnMo
Y29ubi0+c2VxX251bSsrKTsNCi0JZmgubGVuID0gaHRvbnMoKHNob3J0KShz
dHJsZW4obm9ybWFsaXplZF91c2VybmFtZSkrOCkpOw0KKwlmaC5sZW4gPSBo
dG9ucygoc2hvcnQpKHN0cmxlbihub3JtYWxpemVkX3VzZXJuYW1lKSArIDgp
KTsNCiANCiAJbWVtY3B5KGJ1ZmYsICZmaCwgc2l6ZW9mKGZsYXBfaGVhZGVy
KSk7DQotCW1lbWNweShidWZmKzYsIHNmbGFwX2hlYWRlciwgNik7DQotCW1l
bWNweShidWZmKzEyLCZ1c2VybmFtZV9sZW5ndGgsMik7DQotCW1lbWNweShi
dWZmKzE0LG5vcm1hbGl6ZWRfdXNlcm5hbWUsIHN0cmxlbihub3JtYWxpemVk
X3VzZXJuYW1lKSk7DQorCW1lbWNweShidWZmICsgNiwgc2ZsYXBfaGVhZGVy
LCA2KTsNCisJbWVtY3B5KGJ1ZmYgKyAxMiwgJnVzZXJuYW1lX2xlbmd0aCwg
Mik7DQorCW1lbWNweShidWZmICsgMTQsIG5vcm1hbGl6ZWRfdXNlcm5hbWUs
IHN0cmxlbihub3JtYWxpemVkX3VzZXJuYW1lKSk7DQogDQotCXdyaXRlKGNv
bm4tPmZkLCBidWZmLCBzdHJsZW4obm9ybWFsaXplZF91c2VybmFtZSkrMTQp
Ow0KKwl3cml0ZShmZCwgYnVmZiwgc3RybGVuKG5vcm1hbGl6ZWRfdXNlcm5h
bWUpICsgMTQpOw0KIA0KIAkvKiBDbGllbnQgc2VuZHMgVE9DICJ0b2Nfc2ln
bm9uIiBtZXNzYWdlICovDQogDQpAQCAtMTMwMSwyMSArMTM0Nyw0MSBAQA0K
IAkgKi8NCiANCiAJc25wcmludGYoYnVmZiwgMjA0OCwgInRvYzJfc2lnbm9u
ICVzICVkICVzICVzICVzIFwiJXNcIiAxNjAgJWQiLA0KLQkJCSJsb2dpbi5v
c2Nhci5hb2wuY29tIiwgMjk5OTksIG5vcm1hbGl6ZWRfdXNlcm5hbWUsIHJv
YXN0X3Bhc3N3b3JkKHBhc3N3b3JkKSwNCisJCQkibG9naW4ub3NjYXIuYW9s
LmNvbSIsIDI5OTk5LCBub3JtYWxpemVkX3VzZXJuYW1lLCByb2FzdF9wYXNz
d29yZChjZC0+cGFzc3dvcmQpLA0KIAkJCSJlbmdsaXNoLVVTIiwgUkVWSVNJ
T04sDQotCQkJZ2VuZXJhdGVfY29kZShub3JtYWxpemVkX3VzZXJuYW1lLCBw
YXNzd29yZCkgKTsNCisJCQlnZW5lcmF0ZV9jb2RlKG5vcm1hbGl6ZWRfdXNl
cm5hbWUsIGNkLT5wYXNzd29yZCkpOw0KIA0KLQlzZW5kX2ZsYXAoY29ubiwg
REFUQSwgYnVmZiApOw0KKwlzZW5kX2ZsYXAoY29ubiwgREFUQSwgYnVmZik7
DQogDQogI2lmZGVmIERFQlVHDQotCXByaW50ZiggInRvY19zaWdub24gQUZU
RVIgJWQgJWRcbiIsIGNvbm4tPmZkLCBjb25uLT5zZXFfbnVtICk7DQorCXBy
aW50ZigidG9jX3NpZ25vbiBBRlRFUiAlZCAlZFxuIiwgZmQsIGNvbm4tPnNl
cV9udW0pOw0KICNlbmRpZg0KIA0KLQlyZXR1cm4gY29ubjsNCisJKGNkLT5j
YWxsYmFjaykoY2QtPmNhbGxiYWNrX2RhdGEsIGNvbm4pOyAvLyBTaWduYWwg
Y29tcGxldGlvbg0KIA0KKwlmcmVlKGNkLT51c2VybmFtZSk7DQorCWZyZWUo
Y2QtPnBhc3N3b3JkKTsNCisJZnJlZShjZC0+c2VydmVyKTsNCisJZnJlZShj
ZC0+dGluZm8pOw0KKwlmcmVlKGNkKTsNCiB9DQogDQordm9pZCB0b2Nfc2ln
bm9uKGNoYXIgKiB1c2VybmFtZSwgY2hhciAqIHBhc3N3b3JkLA0KKwkJICAg
IGNoYXIgKiBzZXJ2ZXIsIHNob3J0IHBvcnQsIGNoYXIgKiB0aW5mbywgdm9p
ZCAoKmNhbGxiYWNrKSh2b2lkICogZGF0YSwgdG9jX2Nvbm4gKiBjb25uKSwg
dm9pZCAqIGRhdGEpDQorew0KKwlpbnQgZmQ7DQorCXN0cnVjdCBjb25uZWN0
ZWRfZGF0YSAqIGNkID0gbmV3MChzdHJ1Y3QgY29ubmVjdGVkX2RhdGEsIDEp
Ow0KKwljZC0+Y2FsbGJhY2sgPSBjYWxsYmFjazsNCisJY2QtPmNhbGxiYWNr
X2RhdGEgPSBkYXRhOw0KKwljZC0+dXNlcm5hbWUgPSBzdHJkdXAodXNlcm5h
bWUpOw0KKwljZC0+cGFzc3dvcmQgPSBzdHJkdXAocGFzc3dvcmQpOw0KKwlj
ZC0+c2VydmVyID0gc3RyZHVwKHNlcnZlcik7DQorCWNkLT5wb3J0ID0gcG9y
dDsNCisJY2QtPnRpbmZvID0gc3RyZHVwKHRpbmZvKTsNCiANCisJZmQgPSBl
Yl9jb25uZWN0X3NvY2tldChzZXJ2ZXIsIHBvcnQsIHRvY19jb25uZWN0ZWQs
IGNkKTsNCit9DQorDQogdm9pZCB0b2Nfc2lnbm9mZiggdG9jX2Nvbm4gKiBj
b25uICkNCiB7DQogCWlmICghY29ubikNCg==

---1463811291-116493841-1084479891=:21935
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Everybuddy-Dev mailing list
[email protected]
http://lists.spine.cx/listinfo/everybuddy-dev

---1463811291-116493841-1084479891=:21935--