www.delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2017/03/18/15:14:29

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20161025;
h=mime-version:from:date:message-id:subject:to;
bh=wlxqm3Aje68i81qW/7YyRUaNnoH1Yv0IiaUGteKpgu0=;
b=LsGm+ypnHrH83BFzadlPZQ2YIfTPmJqY9EXI2KhfLGQlqQlU7Fp7yz0oxSJy3tfP9H
Ey76PUOQGCUgnZWshP5Lw2/PYqIRgVpXh8+NTL+gk+avQZ2i6MiSA+sy+ET0Wg8Ck984
kmmQVCwX1nxYgt5YykqTfcfT7vz2vxCqv/qTJnVY/CvfHRoP+JGKyWBTgTt6qaEw0PYW
/0vkvZS+4/6sMi5TW+I6nD5quNvLJJdqWsDaMhlAyAndLJr7YrKmKly+9vqqNR1dWxFY
SpRcAhGDmXzbJLON0hHZA5cJZXjxIER/gh7p9OuTPdsPR2gs7EF+BvlmInOR5jhn9ihL
ryOg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
bh=wlxqm3Aje68i81qW/7YyRUaNnoH1Yv0IiaUGteKpgu0=;
b=U/jQ5X2kPoWYHQi4029xQf4HQnP05XI1IaPj0mlaXvQluxGXf/+Biup7L49DztfXt+
fPghSNTDl0TKznLXeFtTscuV1+VX7qVmTRZGVOCkQ/sujOQlEvUk8SMbtHvPoDkn63cC
BMqxzK84lGC7gcLwboZFaun8FZXdQQ+zdDsMnPfOUlGLEePoRnvvBovC5cHdUvOYFBB2
vnWLwU5ThszXEVG12cezq9y+vTo/kxbflVMRx8JyTiK2ZU/lkzgUCCJHx1zgetDWoHxY
AlP/PfFKwj8l2sEHLhpyjHjuVr7U/kgiMen89pFN+6sLQVWaFios2z6w/VZr2Am4ibGB
t6yQ==
X-Gm-Message-State: AFeK/H05EI+OF72Y5fBxon6/EdYzjFqfrHMmqyiydnu6GxU3Onz2NlEv4O/DnyhPDQFW3JVjpp59ri0DHuDcxA==
X-Received: by 10.223.149.66 with SMTP id 60mr17819766wrs.29.1489864392784;
Sat, 18 Mar 2017 12:13:12 -0700 (PDT)
MIME-Version: 1.0
From: "Luis de Arquer (ldearquer AT gmail DOT com) [via geda-user AT delorie DOT com]" <geda-user AT delorie DOT com>
Date: Sat, 18 Mar 2017 20:13:11 +0100
Message-ID: <CAGqyy=Z2HfTZuPif=Y5MndGyiVXdyUQFq0AEs+PmCEkuWAJXTg@mail.gmail.com>
Subject: [geda-user] Rubberband keeping lines direction
To: geda-user <geda-user AT delorie DOT com>
Reply-To: geda-user AT delorie DOT com

--94eb2c0defcee56dbe054b061541
Content-Type: text/plain; charset=UTF-8

The rubberband "Keep-direction" mod is very much finished! It can
already be used as is, even though it may interfere legacy rubberband
mode.

Though there are still a couple of corner cases where it can still get
more annoying than helpful, it works fine otherwise.

I am attaching the full patch to the latest git HEAD. If you can give
it a go, please do, feedback is appreciated.

Luis

--94eb2c0defcee56dbe054b061541
Content-Type: text/x-patch; charset=UTF-8; name="rubberband.patch"
Content-Disposition: attachment; filename="rubberband.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: file0

ZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQppbmRleCAwNThj
MTBmLi5kODhmYjY2IDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrIGIvc3JjL01ha2Vm
aWxlLmFtCkBAIC02NCw2ICs2NCw4IEBAIFBDQl9TUkNTID0gXAogCWVkaWZfcGFyc2UuaCBcCiAJ
ZXJyb3IuYyBcCiAJZXJyb3IuaCBcCisJZmdlb21ldHJ5LmMgXAorCWZnZW9tZXRyeS5oIFwKIAlm
aWxlLmMgXAogCWZpbGUuaCBcCiAJZmluZC5jIFwKZGlmZiAtLWdpdCBhL3NyYy9jcmVhdGUuYyBi
L3NyYy9jcmVhdGUuYwppbmRleCBkNDFiNDU2Li43MTkxNmRhIDEwMDY0NAotLS0gYS9zcmMvY3Jl
YXRlLmMKKysrIGIvc3JjL2NyZWF0ZS5jCkBAIC0xMDIwLDYgKzEwMjAsOSBAQCBDcmVhdGVOZXdS
dWJiZXJiYW5kRW50cnkgKExheWVyVHlwZSAqTGF5ZXIsCiAgIHB0ci0+TGF5ZXIgPSBMYXllcjsK
ICAgcHRyLT5MaW5lID0gTGluZTsKICAgcHRyLT5Nb3ZlZFBvaW50ID0gTW92ZWRQb2ludDsKKyAg
cHRyLT5EWCA9IDA7CisgIHB0ci0+RFkgPSAwOworICBwdHItPmRlbHRhX2lzX3ZhbGlkID0gMDsK
ICAgcmV0dXJuIChwdHIpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvY3Jvc3NoYWlyLmMgYi9zcmMv
Y3Jvc3NoYWlyLmMKaW5kZXggYzhjZTY1My4uOWJiOWI3NyAxMDA2NDQKLS0tIGEvc3JjL2Nyb3Nz
aGFpci5jCisrKyBiL3NyYy9jcm9zc2hhaXIuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg
Im15bWVtLmgiCiAjaW5jbHVkZSAic2VhcmNoLmgiCiAjaW5jbHVkZSAicG9seWdvbi5oIgorI2lu
Y2x1ZGUgImZnZW9tZXRyeS5oIgogCiAjaWZkZWYgSEFWRV9MSUJETUFMTE9DCiAjaW5jbHVkZSA8
ZG1hbGxvYy5oPgpAQCAtNDQ3LDkgKzQ0OCwyMCBAQCBYT1JEcmF3TW92ZU9yQ29weU9iamVjdCAo
aGlkR0MgZ2MpCiAgICAgICB7CiAJTGluZVR5cGUgKmxpbmUgPSAoTGluZVR5cGUgKikgQ3Jvc3No
YWlyLkF0dGFjaGVkT2JqZWN0LlB0cjI7CiAKLQlYT1JEcmF3QXR0YWNoZWRMaW5lIChnYywgbGlu
ZS0+UG9pbnQxLlggKyBkeCwgbGluZS0+UG9pbnQxLlkgKyBkeSwKKwlpID0gQ3Jvc3NoYWlyLkF0
dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROOworCXB0ciA9IENyb3NzaGFpci5BdHRhY2hlZE9iamVj
dC5SdWJiZXJiYW5kOworCWlmIChpID09IDIgJiYgcHRyLT5kZWx0YV9pc192YWxpZCkKKwl7CisJ
CVhPUkRyYXdBdHRhY2hlZExpbmUgKGdjLCBsaW5lLT5Qb2ludDEuWCArIHB0clswXS5EWCwgbGlu
ZS0+UG9pbnQxLlkgKyBwdHJbMF0uRFksCisJICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUt
PlBvaW50Mi5YICsgcHRyWzFdLkRYLCBsaW5lLT5Qb2ludDIuWSArIHB0clsxXS5EWSwKKwkgICAg
ICAgICAgICAgICAgICAgICBsaW5lLT5UaGlja25lc3MpOworCX0KKwllbHNlCisJeworCQlYT1JE
cmF3QXR0YWNoZWRMaW5lIChnYywgbGluZS0+UG9pbnQxLlggKyBkeCwgbGluZS0+UG9pbnQxLlkg
KyBkeSwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS0+UG9pbnQyLlggKyBkeCwgbGlu
ZS0+UG9pbnQyLlkgKyBkeSwKIAkgICAgICAgICAgICAgICAgICAgICBsaW5lLT5UaGlja25lc3Mp
OworCX0KIAlicmVhazsKICAgICAgIH0KIApAQCAtNTY5LDkgKzU4MSwxOCBAQCBYT1JEcmF3TW92
ZU9yQ29weU9iamVjdCAoaGlkR0MgZ2MpCiAJICAgICAgcG9pbnQxID0gJnB0ci0+TGluZS0+UG9p
bnQxOwogCSAgICAgIHBvaW50MiA9ICZwdHItPkxpbmUtPlBvaW50MjsKIAkgICAgfQotCSAgWE9S
RHJhd0F0dGFjaGVkTGluZSAoZ2MsIHBvaW50MS0+WCwgcG9pbnQxLT5ZLAotCSAgICAgICAgICAg
ICAgICAgICAgICAgcG9pbnQyLT5YICsgZHgsIHBvaW50Mi0+WSArIGR5LAotCSAgICAgICAgICAg
ICAgICAgICAgICAgcHRyLT5MaW5lLT5UaGlja25lc3MpOworCSAgICBpZiAocHRyLT5EWCA9PSAt
MSkKKyAgICAgIHsKKwkgICAgICBYT1JEcmF3QXR0YWNoZWRMaW5lIChnYywgcG9pbnQxLT5YLCBw
b2ludDEtPlksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50Mi0+WCArIGR4LCBw
b2ludDItPlkgKyBkeSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyLT5MaW5lLT5U
aGlja25lc3MpOworCSAgICB9CisJICAgIGVsc2UKKwkgICAgeworCSAgICAgIFhPUkRyYXdBdHRh
Y2hlZExpbmUgKGdjLCBwb2ludDEtPlgsIHBvaW50MS0+WSwKKwkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG9pbnQyLT5YICsgcHRyLT5EWCwgcG9pbnQyLT5ZICsgcHRyLT5EWSwKKwkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHRyLT5MaW5lLT5UaGlja25lc3MpOworCSAgICB9CiAJ
fQogICAgICAgZWxzZSBpZiAocHRyLT5Nb3ZlZFBvaW50ID09ICZwdHItPkxpbmUtPlBvaW50MSkK
IAlYT1JEcmF3QXR0YWNoZWRMaW5lIChnYywKQEAgLTEwMjEsNiArMTA0Miw5NCBAQCBGaXRDcm9z
c2hhaXJJbnRvR3JpZCAoQ29vcmQgWCwgQ29vcmQgWSkKIAkgIGVsc2UKIAkgICAgbmVhcmVzdF9n
cmlkX3ggPSBNYXJrZWQuWDsKIAl9CisJICAgIC8qIE1vdmUga2VlcGluZyBydWJiZXJiYW5kIGxp
bmVzIGRpcmVjdGlvbiAqLworICAgICAgaWYgKCBDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuVHlw
ZSA9PSBMSU5FX1RZUEUgJiYKKyAgICAgICAgICAgIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5S
dWJiZXJiYW5kTiA9PSAyKQorICAgICAgeworICAgICAgICBMaW5lVHlwZSAqbGluZSA9IChMaW5l
VHlwZSopIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5QdHIyOworICAgICAgICBMaW5lVHlwZSAq
cnViMSA9IChMaW5lVHlwZSopIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5SdWJiZXJiYW5kWzBd
LkxpbmU7CisgICAgICAgIExpbmVUeXBlICpydWIyID0gKExpbmVUeXBlKikgQ3Jvc3NoYWlyLkF0
dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmRbMV0uTGluZTsKKworICAgICAgICAvKiBDcmVhdGUgZmxv
YXQgcG9pbnQtdmVjdG9yIHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgbGluZXMgKi8KKyAgICAgICAg
ZmxpbmUgZm1haW4sIGZydWIxLCBmcnViMjsKKyAgICAgICAgZm1haW4gPSBmbGluZV9jcmVhdGVf
ZnJvbV9wb2ludHMgKCZsaW5lLT5Qb2ludDEsICZsaW5lLT5Qb2ludDIpOworICAgICAgICBpZiAo
Q3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmRbMF0uTW92ZWRQb2ludCA9PSAmcnVi
MS0+UG9pbnQxKQorICAgICAgICAgIGZydWIxID0gZmxpbmVfY3JlYXRlX2Zyb21fcG9pbnRzICgm
cnViMS0+UG9pbnQxLCAmcnViMS0+UG9pbnQyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGZy
dWIxID0gZmxpbmVfY3JlYXRlX2Zyb21fcG9pbnRzICgmcnViMS0+UG9pbnQyLCAmcnViMS0+UG9p
bnQxKTsKKyAgICAgICAgCisgICAgICAgIGlmIChDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnVi
YmVyYmFuZFsxXS5Nb3ZlZFBvaW50ID09ICZydWIyLT5Qb2ludDEpCisgICAgICAgICAgZnJ1YjIg
PSBmbGluZV9jcmVhdGVfZnJvbV9wb2ludHMgKCZydWIyLT5Qb2ludDEsICZydWIyLT5Qb2ludDIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgZnJ1YjIgPSBmbGluZV9jcmVhdGVfZnJvbV9wb2lu
dHMgKCZydWIyLT5Qb2ludDIsICZydWIyLT5Qb2ludDEpOworICAgICAgICAKKyAgICAgICAgLyog
SWYgdGhleSBhcmUgdmFsaWQgKG5vbi1udWxsIGRpcmVjdGlvbnMpIHdlIGNhcnJ5IG9uICovCisg
ICAgICAgIGlmIChmbGluZV9pc192YWxpZChmbWFpbikgJiYgZmxpbmVfaXNfdmFsaWQoZnJ1YjEp
ICYmIGZsaW5lX2lzX3ZhbGlkKGZydWIyKSkKKyAgICAgICAgeworICAgICAgICAgIGZ2ZWN0b3Ig
Zm1vdmU7CisgICAgICAgICAgCisgICAgICAgICAgZnZlY3RvciBmaW50ZXJzZWN0aW9uID0gZmxp
bmVfaW50ZXJzZWN0aW9uKGZydWIxLCBmcnViMik7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgIGlmICghZnZlY3Rvcl9pc19udWxsKGZpbnRlcnNlY3Rpb24pKQorICAgICAgICAgIHsK
KyAgICAgICAgICAJLyogTW92ZW1lbnQgZGlyZWN0aW9uIGRlZmluZWQgYXMgZnJvbSBtaWQgbGlu
ZSB0byBpbnRlcnNlY3Rpb24gcG9pbnQgKi8KKyAgICAgICAgICAJZnZlY3RvciBmbWlkOworICAg
ICAgICAgIAlmbWlkLnggPSAoKGRvdWJsZSlsaW5lLT5Qb2ludDIuWCArIGxpbmUtPlBvaW50MS5Y
KSAvIDIuMDsKKyAgICAgICAgICAJZm1pZC55ID0gKChkb3VibGUpbGluZS0+UG9pbnQyLlkgKyBs
aW5lLT5Qb2ludDEuWSkgLyAyLjA7CisgICAgICAgICAgCWZtb3ZlLnggPSBmaW50ZXJzZWN0aW9u
LnggLSBmbWlkLng7CisgICAgICAgICAgCWZtb3ZlLnkgPSBmaW50ZXJzZWN0aW9uLnkgLSBmbWlk
Lnk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAg
ICAvKiBObyBpbnRlcnNlY3Rpb24uIFJ1YmJlcmJhbmQgbGluZXMgYXJlIHBhcmFsbGVsICovCisg
ICAgICAgICAgICBmbW92ZS54ID0gZnJ1YjEuZGlyZWN0aW9uLng7CisgICAgICAgICAgICBmbW92
ZS55ID0gZnJ1YjEuZGlyZWN0aW9uLnk7CisgICAgICAgICAgfSAgICAgICAJCisgICAgICAgIAkg
ICAgICAgIAkKKyAgICAgICAgCWlmICghZnZlY3Rvcl9pc19udWxsKGZtb3ZlKSkKKyAgICAgICAg
CXsKKyAgICAgICAgICAgIGZ2ZWN0b3Jfbm9ybWFsaXplKCZmbW92ZSk7CisKKyAgICAgICAgICAg
IC8qIEN1cnNvciBkZWx0YSB2ZWN0b3IgKi8KKyAgICAgICAgICAgIGZ2ZWN0b3IgZmN1cnNvcl9k
ZWx0YTsKKyAgICAgICAgICAgIGZjdXJzb3JfZGVsdGEueCA9IENyb3NzaGFpci5YIC0gTWFya2Vk
Llg7CisgICAgICAgICAgICBmY3Vyc29yX2RlbHRhLnkgPSBDcm9zc2hhaXIuWSAtIE1hcmtlZC5Z
OworCisgICAgICAgICAgICAvKiBDdXJzb3IgZGVsdGEgcHJvamVjdGlvbiBvbiBtb3ZlbWVudCBk
aXJlY3Rpb24gKi8KKyAgICAgICAgICAgIGRvdWJsZSBhbW91bnRfbW92ZWQgPSBmdmVjdG9yX2Rv
dChmbW92ZSwgZmN1cnNvcl9kZWx0YSk7CisKKyAgICAgICAgICAgIC8qIFNjYWxlIGZtb3ZlIGJ5
IGNhbGN1bGF0ZWQgYW1vdW50ICovCisgICAgICAgICAgICBmdmVjdG9yIGZtb3ZlX3RvdGFsOwor
ICAgICAgICAgICAgZm1vdmVfdG90YWwueCA9IGZtb3ZlLnggKiBhbW91bnRfbW92ZWQ7CisgICAg
ICAgICAgICBmbW92ZV90b3RhbC55ID0gZm1vdmUueSAqIGFtb3VudF9tb3ZlZDsKKworICAgICAg
ICAgICAgLyogVXBkYXRlIHZhbHVlcyBmb3IgbmVhcmVzdF9ncmlkIGFuZCBSdWJiZXJiYW5kIGxp
bmVzICovCisgICAgICAgICAgICBuZWFyZXN0X2dyaWRfeCA9IE1hcmtlZC5YICsgZm1vdmVfdG90
YWwueDsKKyAgICAgICAgICAgIG5lYXJlc3RfZ3JpZF95ID0gTWFya2VkLlkgKyBmbW92ZV90b3Rh
bC55OworCisgICAgICAgICAgICAvKiBNb3ZlIHJ1YmJlcmJhbmQ6IGZtb3ZlX3RvdGFswrdub3Jt
YWwgPSBmbW92ZV9ydWJiZXJiYW5kwrdub3JtYWwKKyAgICAgICAgICAgICAqIHdoZXJlIG5vcm1h
bCBpcyB0aGUgbW92aW5nIGxpbmUgbm9ybWFsCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg
IGZ2ZWN0b3IgZm5vcm1hbDsKKyAgICAgICAgICAgIGZub3JtYWwueCA9IGZtYWluLmRpcmVjdGlv
bi55OworICAgICAgICAgICAgZm5vcm1hbC55ID0gLWZtYWluLmRpcmVjdGlvbi54OworICAgICAg
ICAgICAgaWYgKGZ2ZWN0b3JfZG90KGZub3JtYWwsIGZtb3ZlKSA8IDApCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgIGZub3JtYWwueCA9IC1mbm9ybWFsLng7CisgICAgICAgICAgICAgIGZu
b3JtYWwueSA9IC1mbm9ybWFsLnk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb3VibGUg
cnViMV9tb3ZlID0gYW1vdW50X21vdmVkICogZnZlY3Rvcl9kb3QoZm1vdmUsIGZub3JtYWwpIC8g
ZnZlY3Rvcl9kb3QoZnJ1YjEuZGlyZWN0aW9uLCBmbm9ybWFsKTsKKyAgICAgICAgICAgIENyb3Nz
aGFpci5BdHRhY2hlZE9iamVjdC5SdWJiZXJiYW5kWzBdLkRYID0gcnViMV9tb3ZlKmZydWIxLmRp
cmVjdGlvbi54OworICAgICAgICAgICAgQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJh
bmRbMF0uRFkgPSBydWIxX21vdmUqZnJ1YjEuZGlyZWN0aW9uLnk7CisgICAgICAgICAgICBDcm9z
c2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZFswXS5kZWx0YV9pc192YWxpZCA9IDE7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGRvdWJsZSBydWIyX21vdmUgPSBhbW91bnRfbW92ZWQg
KiBmdmVjdG9yX2RvdChmbW92ZSwgZm5vcm1hbCkgLyBmdmVjdG9yX2RvdChmcnViMi5kaXJlY3Rp
b24sIGZub3JtYWwpOworICAgICAgICAgICAgQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJl
cmJhbmRbMV0uRFggPSBydWIyX21vdmUqZnJ1YjIuZGlyZWN0aW9uLng7CisgICAgICAgICAgICBD
cm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZFsxXS5EWSA9IHJ1YjJfbW92ZSpmcnVi
Mi5kaXJlY3Rpb24ueTsKKyAgICAgICAgICAgIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5SdWJi
ZXJiYW5kWzFdLmRlbHRhX2lzX3ZhbGlkID0gMTsKKyAgICAgICAgCX0KKwkgICAgICB9CisgICAg
ICB9CiAKICAgICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9mZ2VvbWV0cnkuYyBiL3NyYy9mZ2VvbWV0
cnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWY3YjZkCi0tLSAvZGV2
L251bGwKKysrIGIvc3JjL2ZnZW9tZXRyeS5jCkBAIC0wLDAgKzEsMTYyIEBACisvKiEKKyAqIFxm
aWxlIHNyYy9mZ2VvbWV0cnkuYworICoKKyAqIFxicmllZiBGbG9hdGluZyBwb2ludCBnZW9tZXRy
eSBoZWxwZXJzLgorICoKKyAqIDxocj4KKyAqCisgKiA8aDE+PGI+Q29weXJpZ2h0LjwvYj48L2gx
PlxuCisgKgorICogUENCLCBpbnRlcmFjdGl2ZSBwcmludGVkIGNpcmN1aXQgYm9hcmQgZGVzaWdu
CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEx1aXMgZGUgQXJxdWVyIDxsZGVhcnF1ZXJAZ21h
aWwuY29tPgorICoKKyAqIFNvbWUgY29kZSBiYXNlZCBvbiBwb2x5Z29uMS5jOgorICogQ29weXJp
Z2h0IChDKSAyMDA2IGhhcnJ5IGVhdG9uCisgKgorICogYmFzZWQgb246CisgKgorICogcG9seV9C
b29sZWFuOiBhIHBvbHlnb24gY2xpcCBsaWJyYXJ5CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk3
ICBBbGV4ZXkgTmlraXRpbiwgTWljaGFlbCBMZW9ub3YKKyAqCisgKiAoYWxzbyB0aGUgYXV0aG9y
cyBvZiB0aGUgcGFwZXIgZGVzY3JpYmluZyB0aGUgYWN0dWFsIGFsZ29yaXRobSkKKyAqCisgKiBs
ZW9ub3ZAcHJvcHJvLmlpcy5uc2suc3UKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu
ZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiZmdlb21ldHJ5LmgiCisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUg
PHN0ZGlvLmg+CisKKyNkZWZpbmUgTUlOX0NPTVBPTkVOVAkwLjAwMDAwMQorCitpbnQgZnZlY3Rv
cl9pc19udWxsIChmdmVjdG9yIHYpCit7CisJcmV0dXJuIGZhYnModi54KSA8IE1JTl9DT01QT05F
TlQgJiYgZmFicyh2LnkpIDwgTUlOX0NPTVBPTkVOVDsKK30KKworZG91YmxlIGZ2ZWN0b3JfZG90
IChmdmVjdG9yIHYxLCBmdmVjdG9yIHYyKQoreworCXJldHVybiB2MS54ICogdjIueCArIHYxLnkg
KiB2Mi55OworfQorCisKK3ZvaWQgZnZlY3Rvcl9ub3JtYWxpemUgKGZ2ZWN0b3IgKnYpCit7CisJ
ZG91YmxlIG1vZHVsZSA9IHNxcnQodi0+eCAqIHYtPnggKyB2LT55ICogdi0+eSk7CisJCisJdi0+
eCAvPSBtb2R1bGU7CisJdi0+eSAvPSBtb2R1bGU7Cit9CisKK2ludCBmbGluZV9pc192YWxpZChm
bGluZSBsKQoreworCXJldHVybiAhZnZlY3Rvcl9pc19udWxsKGwuZGlyZWN0aW9uKTsKK30KKwor
ZmxpbmUgZmxpbmVfY3JlYXRlKExpbmVUeXBlICpsaW5lKQoreworCWZsaW5lIHJldDsKKwkKKwly
ZXQucG9pbnQueCA9IGxpbmUtPlBvaW50MS5YOworCXJldC5wb2ludC55ID0gbGluZS0+UG9pbnQx
Llk7CisJcmV0LmRpcmVjdGlvbi54ID0gbGluZS0+UG9pbnQyLlggLSBsaW5lLT5Qb2ludDEuWDsK
KwlyZXQuZGlyZWN0aW9uLnkgPSBsaW5lLT5Qb2ludDIuWSAtIGxpbmUtPlBvaW50MS5ZOworCQor
CWlmICghZnZlY3Rvcl9pc19udWxsIChyZXQuZGlyZWN0aW9uKSkKKwkJZnZlY3Rvcl9ub3JtYWxp
emUoICZyZXQuZGlyZWN0aW9uICk7CisJCisJcmV0dXJuIHJldDsKK30KKworCitmbGluZSBmbGlu
ZV9jcmVhdGVfZnJvbV9wb2ludHMoUG9pbnRUeXBlICpiYXNlX3BvaW50LCBQb2ludFR5cGUgKm90
aGVyX3BvaW50KQoreworCWZsaW5lIHJldDsKKwkKKwlyZXQucG9pbnQueCA9IGJhc2VfcG9pbnQt
Plg7CisJcmV0LnBvaW50LnkgPSBiYXNlX3BvaW50LT5ZOworCXJldC5kaXJlY3Rpb24ueCA9IG90
aGVyX3BvaW50LT5YIC0gYmFzZV9wb2ludC0+WDsKKwlyZXQuZGlyZWN0aW9uLnkgPSBvdGhlcl9w
b2ludC0+WSAtIGJhc2VfcG9pbnQtPlk7CisJCisJaWYgKCFmdmVjdG9yX2lzX251bGwgKHJldC5k
aXJlY3Rpb24pKQorCQlmdmVjdG9yX25vcm1hbGl6ZSggJnJldC5kaXJlY3Rpb24gKTsKKwkKKwly
ZXR1cm4gcmV0OworfQorCisKK2Z2ZWN0b3IgZmxpbmVfaW50ZXJzZWN0aW9uKGZsaW5lIGwxLCBm
bGluZSBsMikKK3sKKwlmdmVjdG9yIHJldDsKKwlyZXQueCA9IDA7CisJcmV0LnkgPSAwOworCisJ
ZG91YmxlIGxpbmVzX2RvdCA9IGZ2ZWN0b3JfZG90IChsMS5kaXJlY3Rpb24sIGwyLmRpcmVjdGlv
bik7CisJaWYgKGZhYnMobGluZXNfZG90KSA+IDAuOTkwICkKKwl7CisJCS8qIENvbnNpZGVyIHRo
ZW0gcGFyYWxsZWwuIFJldHVybiBudWxsIHBvaW50ICh2ZWN0b3IpICovCisJCXJldHVybiByZXQ7
CisJfQorCQorCS8qCisJICogKioqIEZyb20gcG9seWdvbjEuYyAqKioKKwkgKiBXZSBoYXZlIHRo
ZSBsaW5lczoKKwkgKiBsMTogcDEgKyBzKmQxCisJICogbDI6IHAyICsgdCpkMgorCSAqIEFuZCB3
ZSB3YW50IHRvIGtub3cgdGhlIGludGVyc2VjdGlvbiBwb2ludC4KKwkgKiBDYWxjdWxhdGUgdDoK
KwkgKiBwMSArIHMqZDEgPSBwMiArIHQqZDIKKwkgKiB3aGljaCBpcyBzaW1pbGFyIHRvIHRoZSB0
d28gZXF1YXRpb25zOgorCSAqIHAxeCArIHMgKiBkMXggPSBwMnggKyB0ICogZDJ4CisJICogcDF5
ICsgcyAqIGQxeSA9IHAyeSArIHQgKiBkMnkKKwkgKiBNdWx0aXBseWluZyB0aGVzZSBieSBkMXkg
cmVzcC4gZDF4IGdpdmVzOgorCSAqIGQxeSAqIHAxeCArIHMgKiBkMXggKiBkMXkgPSBkMXkgKiBw
MnggKyB0ICogZDF5ICogZDJ4CisJICogZDF4ICogcDF5ICsgcyAqIGQxeCAqIGQxeSA9IGQxeCAq
IHAyeSArIHQgKiBkMXggKiBkMnkKKwkgKiBTdWJ0cmFjdGluZyB0aGVzZSBnaXZlczoKKwkgKiBk
MXkgKiBwMXggLSBkMXggKiBwMXkgPSBkMXkgKiBwMnggLSBkMXggKiBwMnkgKyB0ICogKCBkMXkg
KiBkMnggLSBkMXggKiBkMnkgKQorCSAqIFNvIHQgY2FuIGJlIGlzb2xhdGVkOgorCSAqIHQgPSAo
ZDF5ICogKCBwMXggLSBwMnggKSArIGQxeCAqICggLSBwMXkgKyBwMnkgKSkgLyAoIGQxeSAqIGQy
eCAtIGQxeCAqIGQyeSApCisJICogYW5kIHMgY2FuIGJlIGZvdW5kIHNpbWlsYXJseQorCSAqIHMg
PSAoZDJ5ICogKCBwMnggLSBwMXggKSArIGQyeCAqICggcDF5IC0gcDJ5ICkpIC8gKCBkMnkgKiBk
MXggLSBkMnggKiBkMXkpCisJICovCisJCisJZG91YmxlIHQsczsKKwlkb3VibGUgcDF4LCBwMXks
IGQxeCwgZDF5OworCWRvdWJsZSBwMngsIHAyeSwgZDJ4LCBkMnk7CisJCisJcDF4ID0gbDEucG9p
bnQueDsKKwlwMXkgPSBsMS5wb2ludC55OworCWQxeCA9IGwxLmRpcmVjdGlvbi54OworCWQxeSA9
IGwxLmRpcmVjdGlvbi55OworCQorCXAyeCA9IGwyLnBvaW50Lng7CisJcDJ5ID0gbDIucG9pbnQu
eTsKKwlkMnggPSBsMi5kaXJlY3Rpb24ueDsKKwlkMnkgPSBsMi5kaXJlY3Rpb24ueTsKKwkKKwl0
ID0gKGQxeSAqICggcDF4IC0gcDJ4ICkgKyBkMXggKiAoIC0gcDF5ICsgcDJ5ICkpIC8gKCBkMXkg
KiBkMnggLSBkMXggKiBkMnkgKTsKKwlzID0gKGQyeSAqICggcDJ4IC0gcDF4ICkgKyBkMnggKiAo
IHAxeSAtIHAyeSApKSAvICggZDJ5ICogZDF4IC0gZDJ4ICogZDF5ICk7CisKKwlyZXQueCA9IHAy
eCArIHQgKiBkMng7CisJcmV0LnkgPSBwMnkgKyB0ICogZDJ5OworCQorCXJldHVybiByZXQ7Cit9
CisKKwpkaWZmIC0tZ2l0IGEvc3JjL2ZnZW9tZXRyeS5oIGIvc3JjL2ZnZW9tZXRyeS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZjlkZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9zcmMvZmdlb21ldHJ5LmgKQEAgLTAsMCArMSw2OCBAQAorLyohCisgKiBcZmlsZSBzcmMvZmdl
b21ldHJ5LmgKKyAqCisgKiBcYnJpZWYgRmxvYXRpbmcgcG9pbnQgZ2VvbWV0cnkgaGVscGVycy4K
KyAqCisgKiA8aHI+CisgKgorICogPGgxPjxiPkNvcHlyaWdodC48L2I+PC9oMT5cbgorICoKKyAq
IFBDQiwgaW50ZXJhY3RpdmUgcHJpbnRlZCBjaXJjdWl0IGJvYXJkIGRlc2lnbgorICoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBMdWlzIGRlIEFycXVlciA8bGRlYXJxdWVyQGdtYWlsLmNvbT4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUs
IENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaWZuZGVmIFBDQl9GR0VPTUVUUllf
SAorI2RlZmluZSBQQ0JfRkdFT01FVFJZX0gKKworI2luY2x1ZGUgImdsb2JhbC5oIgorCit0eXBl
ZGVmIHN0cnVjdAoreworCWRvdWJsZSB4OworCWRvdWJsZSB5OworfSBmdmVjdG9yOworCisKKy8q
IGZsaW5lcyBzaG91bGQgYmUgY3JlYXRlZCB0aHJvdWdoIGZsaW5lX2NyZWF0ZSogZnVuY3Rpb25z
LgorICogQWx0ZXJuYXRpdmVseSwgdGhleSBjYW4gYmUgY3JlYXRlZCBtYW51YWxseSBhcyBsb25n
IGFzCisgKiBkaXJlY3Rpb24gaXMgbm9ybWFsaXplZAorICovCit0eXBlZGVmIHN0cnVjdAorewor
CWZ2ZWN0b3IgcG9pbnQ7CisJZnZlY3RvciBkaXJlY3Rpb247Cit9IGZsaW5lOworCitpbnQgZnZl
Y3Rvcl9pc19udWxsKGZ2ZWN0b3Igdik7CisKKworLyogQW55IHZlY3RvciBnaXZlbiB0byB0aGUg
Zm9sbG93aW5nIGZ1bmN0aW9ucyBoYXMgdG8gYmUgbm9uLW51bGwgKi8gICAKK2RvdWJsZSBmdmVj
dG9yX2RvdCAoZnZlY3RvciB2MSwgZnZlY3RvciB2Mik7Cit2b2lkIGZ2ZWN0b3Jfbm9ybWFsaXpl
IChmdmVjdG9yICp2KTsKKworCitmbGluZSBmbGluZV9jcmVhdGUoTGluZVR5cGUgKmxpbmUpOwor
ZmxpbmUgZmxpbmVfY3JlYXRlX2Zyb21fcG9pbnRzKFBvaW50VHlwZSAqYmFzZV9wb2ludCwgUG9p
bnRUeXBlICpvdGhlcl9wb2ludCk7CisKK2ludCBmbGluZV9pc192YWxpZChmbGluZSBsKTsKKwor
LyogbDEuZGlyZWN0aW9uIGFuZCBsMi5kaXJlY3Rpb24gYXJlIGV4cGVjdGVkIHRvIGJlIG5vcm1h
bGl6ZWQgKi8KK2Z2ZWN0b3IgZmxpbmVfaW50ZXJzZWN0aW9uKGZsaW5lIGwxLCBmbGluZSBsMik7
CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9zcmMvZ2xvYmFsLmggYi9zcmMvZ2xvYmFsLmgKaW5k
ZXggZmM5NTI4OC4uNWMwOGM3ZiAxMDA2NDQKLS0tIGEvc3JjL2dsb2JhbC5oCisrKyBiL3NyYy9n
bG9iYWwuaApAQCAtNjUyLDYgKzY1Miw5IEBAIHR5cGVkZWYgc3RydWN0CiAgIExheWVyVHlwZSAq
TGF5ZXI7IC8qITwgTGF5ZXIgdGhhdCBob2xkcyB0aGUgbGluZS4gKi8KICAgTGluZVR5cGUgKkxp
bmU7IC8qITwgVGhlIGxpbmUgaXRzZWxmLiAqLwogICBQb2ludFR5cGUgKk1vdmVkUG9pbnQ7IC8q
ITwgQW5kIGZpbmFsbHkgdGhlIHBvaW50LiAqLworICBDb29yZCBEWDsKKyAgQ29vcmQgRFk7Cisg
IGludCBkZWx0YV9pc192YWxpZDsKIH0gUnViYmVyYmFuZFR5cGU7CiAKIC8qIQpkaWZmIC0tZ2l0
IGEvc3JjL21vdmUuYyBiL3NyYy9tb3ZlLmMKaW5kZXggZGZhZjYxMy4uMmMxODYzNSAxMDA2NDQK
LS0tIGEvc3JjL21vdmUuYworKysgYi9zcmMvbW92ZS5jCkBAIC04MDUsMzUgKzgwNSw4MCBAQCBN
b3ZlT2JqZWN0QW5kUnViYmVyYmFuZCAoaW50IFR5cGUsIHZvaWQgKlB0cjEsIHZvaWQgKlB0cjIs
IHZvaWQgKlB0cjMsCiB7CiAgIFJ1YmJlcmJhbmRUeXBlICpwdHI7CiAgIHZvaWQgKnB0cjI7Cisg
IGludCBpOwogCiAgIC8qIHNldHVwIG9mZnNldCAqLwogICBEZWx0YVggPSBEWDsKICAgRGVsdGFZ
ID0gRFk7Ci0KKyAgCiAgIC8qIG1vdmUgYWxsIHRoZSBsaW5lcy4uLiBhbmQgcmVzZXQgdGhlIGNv
dW50ZXIgKi8KICAgcHRyID0gQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmQ7Ci0g
IHdoaWxlIChDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZE4pCisgIGkgPSBDcm9z
c2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZE47CisgIHdoaWxlIChpKQogICAgIHsKICAg
ICAgIC8qIGZpcnN0IGNsZWFyIGFueSBtYXJrcyB0aGF0IHdlIG1hZGUgaW4gdGhlIGxpbmUgZmxh
Z3MgKi8KICAgICAgIENMRUFSX0ZMQUcgKFJVQkJFUkVOREZMQUcsIHB0ci0+TGluZSk7CiAgICAg
ICAvKiBvbmx5IHVwZGF0ZSB1bmRvIGxpc3QgaWYgYW4gYWN0dWFsIG1vdmVtZW50IGhhcHBlbmVk
ICovCiAgICAgICBpZiAoRFggIT0gMCB8fCBEWSAhPSAwKQogICAgICAgICB7Ci0gICAgICAgICAg
QWRkT2JqZWN0VG9Nb3ZlVW5kb0xpc3QgKExJTkVQT0lOVF9UWVBFLAorICAgICAgICAgIGlmICgh
cHRyLT5kZWx0YV9pc192YWxpZCkKKyAgICAgICAgICB7CisgICAgICAgICAgICBBZGRPYmplY3RU
b01vdmVVbmRvTGlzdCAoTElORVBPSU5UX1RZUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB0ci0+TGF5ZXIsIHB0ci0+TGluZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHRyLT5Nb3ZlZFBvaW50LCBEWCwgRFkpOworICAgICAgICAgIH0KKyAgICAg
ICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgQWRkT2JqZWN0VG9Nb3ZlVW5kb0xp
c3QgKExJTkVQT0lOVF9UWVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dHItPkxheWVyLCBwdHItPkxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB0ci0+TW92ZWRQb2ludCwgcHRyLT5EWCwgcHRyLT5EWSk7CisgICAgICAgICAgICBEZWx0YVgg
PSBwdHItPkRYOworICAgICAgICAgICAgRGVsdGFZID0gcHRyLT5EWTsKKyAgICAgICAgICB9CiAg
ICAgICAgICAgTW92ZUxpbmVQb2ludCAocHRyLT5MYXllciwgcHRyLT5MaW5lLCBwdHItPk1vdmVk
UG9pbnQpOworICAgICAgICAgIC8qIFJlc3RvcmUgRGVsdGEgKi8KKyAgICAgICAgICBEZWx0YVgg
PSBEWDsKKyAgICAgICAgICBEZWx0YVkgPSBEWTsKICAgICAgICAgfQotICAgICAgQ3Jvc3NoYWly
LkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROLS07CisgICAgICBpLS07CiAgICAgICBwdHIrKzsK
ICAgICB9CiAKICAgaWYgKERYID09IDAgJiYgRFkgPT0gMCkKKyAgeworICAJQ3Jvc3NoYWlyLkF0
dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROID0gMDsKICAgICByZXR1cm4gKE5VTEwpOworICB9CiAK
LSAgQWRkT2JqZWN0VG9Nb3ZlVW5kb0xpc3QgKFR5cGUsIFB0cjEsIFB0cjIsIFB0cjMsIERYLCBE
WSk7Ci0gIHB0cjIgPSBPYmplY3RPcGVyYXRpb24gKCZNb3ZlRnVuY3Rpb25zLCBUeXBlLCBQdHIx
LCBQdHIyLCBQdHIzKTsKKwlwdHIgPSBDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFu
ZDsKKwlpID0gQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROOworCWlmIChUeXBl
ID09IExJTkVfVFlQRSAmJiBpID09IDIgJiYgcHRyLT5kZWx0YV9pc192YWxpZCkKKwl7CisJICBM
aW5lVHlwZSAqbGluZSA9IChMaW5lVHlwZSopIFB0cjI7CisJCQorIAkgIC8qIE1vdmUgUG9pbnQx
IGZyb20gbGluZSAqLworICAgIEFkZE9iamVjdFRvTW92ZVVuZG9MaXN0IChMSU5FUE9JTlRfVFlQ
RSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdHIxLCBsaW5lLCAmbGluZS0+UG9p
bnQxLCBwdHItPkRYLCBwdHItPkRZKTsKKyAJICBEZWx0YVggPSBwdHItPkRYOworIAkgIERlbHRh
WSA9IHB0ci0+RFk7CisgICAgTW92ZUxpbmVQb2ludCAoUHRyMSwgbGluZSwgJmxpbmUtPlBvaW50
MSk7CisgIAkKKyAJICAvKiBNb3ZlIFBvaW50MiBmcm9tIGxpbmUgKi8KKyAJICBwdHIrKzsKKyAg
ICBBZGRPYmplY3RUb01vdmVVbmRvTGlzdCAoTElORVBPSU5UX1RZUEUsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQdHIxLCBsaW5lLCAmbGluZS0+UG9pbnQyLCBwdHItPkRYLCBw
dHItPkRZKTsKKyAJICBEZWx0YVggPSBwdHItPkRYOworIAkgIERlbHRhWSA9IHB0ci0+RFk7Cisg
ICAgTW92ZUxpbmVQb2ludCAoUHRyMSwgbGluZSwgJmxpbmUtPlBvaW50Mik7CisgIH0KKyAgZWxz
ZQorICB7CisgIAlBZGRPYmplY3RUb01vdmVVbmRvTGlzdCAoVHlwZSwgUHRyMSwgUHRyMiwgUHRy
MywgRFgsIERZKTsKKyAgCXB0cjIgPSBPYmplY3RPcGVyYXRpb24gKCZNb3ZlRnVuY3Rpb25zLCBU
eXBlLCBQdHIxLCBQdHIyLCBQdHIzKTsKKyAgfQorICAKICAgSW5jcmVtZW50VW5kb1NlcmlhbE51
bWJlciAoKTsKKyAgQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmROID0gMDsKICAg
cmV0dXJuIChwdHIyKTsKIH0KIAo=
--94eb2c0defcee56dbe054b061541--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019