Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Feb 1998 21:33:54 -0600
From:      "Jason" <jason_smethers@bigfoot.com>
To:        <hackers@FreeBSD.com>
Subject:   userland updates
Message-ID:  <003d01bd350b$8d872a80$016f6f6f@jason>

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

------=_NextPart_000_003A_01BD34D9.4174C080
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

I have some diffs to cat, chio, and cp. If someone with commit privledges
would like to look 'em over and commit...

These incorperate some fixes and most noteably the ielem option to chio.

heres the diffs...


------=_NextPart_000_003A_01BD34D9.4174C080
Content-Type: application/octet-stream;
	name="bin.cat.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="bin.cat.diff"

T25seSBpbiAvdXNyL3NyYy9iaW4vY2F0OiBjYXQKZGlmZiAtYyAtciAvdXNyL3NyYy9iaW4vY2F0
L2NhdC4xIC91c3IvbG9jYWwvc3JjL2Jpbi9jYXQvY2F0LjEKKioqIC91c3Ivc3JjL2Jpbi9jYXQv
Y2F0LjEJU2F0IEZlYiAyMiAwODowMToyNiAxOTk3Ci0tLSAvdXNyL2xvY2FsL3NyYy9iaW4vY2F0
L2NhdC4xCU1vbiBGZWIgIDIgMTg6MTg6MzQgMTk5OAoqKioqKioqKioqKioqKioKKioqIDEzLDE5
ICoqKioKICAuXCIgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogIC5cIiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogIC5cIiAzLiBB
bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRo
aXMgc29mdHdhcmUKISAuXCIgICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVk
Z2VtZW50OgogIC5cIglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5
IHRoZSBVbml2ZXJzaXR5IG9mCiAgLlwiCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29u
dHJpYnV0b3JzLgogIC5cIiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotLS0gMTMsMTkgLS0tLQogIC5cIiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCiAgLlwiICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgLlwiIDMuIEFsbCBhZHZlcnRpc2luZyBt
YXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohIC5c
IiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKICAuXCIJVGhp
cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgVW5pdmVyc2l0eSBv
ZgogIC5cIglDYWxpZm9ybmlhLCBCZXJrZWxleSBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4KICAuXCIg
NC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMKKioqKioqKioqKioqKioqCioqKiAxMTgsMTI1ICoqKioKICAuU2ggSElT
VE9SWQogIEEKICAuTm0KISBjb21tYW5kIGFwcGVhcmVkIGluIFZlcnNpb24gMSBBVCZUIFVOSVgu
IAogIERlbm5pcyBSaXRjaGllIGRlc2lnbmVkIGFuZCB3cm90ZSB0aGUgZmlyc3QgbWFuIHBhZ2Uu
IAogIEl0IGFwcGVhcnMgdG8gaGF2ZSBiZWVuCiAgLlhyIGNhdCAxIC4KISAKLS0tIDExOCwxMzQg
LS0tLQogIC5TaCBISVNUT1JZCiAgQQogIC5ObQohIHV0aWxpdHkgYXBwZWFyZWQgaW4gVmVyc2lv
biAxIEFUJlQgVU5JWC4gCiAgRGVubmlzIFJpdGNoaWUgZGVzaWduZWQgYW5kIHdyb3RlIHRoZSBm
aXJzdCBtYW4gcGFnZS4gCiAgSXQgYXBwZWFycyB0byBoYXZlIGJlZW4KICAuWHIgY2F0IDEgLgoh
IC5TaCBTVEFOREFSRFMKISBUaGUKISAuTm0gY2F0CiEgdXRpbGl0eSBpcyBjb21wbGlhbnQgd2l0
aCB0aGUKISAuU3QgLXAxMDAzLjItOTIKISBzcGVjaWZpY2F0aW9uLgohIC5QcAohIFRoZSBmbGFn
cwohIC5PcCBGbCBiZW5zdHYKISBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgc3BlY2lmaWNhdGlvbi4K
ZGlmZiAtYyAtciAvdXNyL3NyYy9iaW4vY2F0L2NhdC5jIC91c3IvbG9jYWwvc3JjL2Jpbi9jYXQv
Y2F0LmMKKioqIC91c3Ivc3JjL2Jpbi9jYXQvY2F0LmMJRnJpIE1hciAyOCAwOToyNDowNCAxOTk3
Ci0tLSAvdXNyL2xvY2FsL3NyYy9iaW4vY2F0L2NhdC5jCVR1ZSBGZWIgIDMgMTc6MzM6MjQgMTk5
OAoqKioqKioqKioqKioqKioKKioqIDYzLDY4ICoqKioKLS0tIDYzLDY5IC0tLS0KICBpbnQgcnZh
bDsKICBjaGFyICpmaWxlbmFtZTsKICAKKyBpbnQgbWFpbiBfX1AoKGludCwgY2hhciAqW10pKTsK
ICB2b2lkIGNvb2tfYXJncyBfX1AoKGNoYXIgKmFyZ3ZbXSkpOwogIHZvaWQgY29va19idWYgX19Q
KChGSUxFICopKTsKICB2b2lkIHJhd19hcmdzIF9fUCgoY2hhciAqYXJndltdKSk7CioqKioqKioq
KioqKioqKgoqKiogNzYsODIgKioqKgogIAlleHRlcm4gaW50IG9wdGluZDsKICAJaW50IGNoOwog
IAohIAlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKICAKICAJd2hpbGUgKChjaCA9IGdldG9wdChh
cmdjLCBhcmd2LCAiYmVuc3R1diIpKSAhPSAtMSkKICAJCXN3aXRjaCAoY2gpIHsKLS0tIDc3LDgz
IC0tLS0KICAJZXh0ZXJuIGludCBvcHRpbmQ7CiAgCWludCBjaDsKICAKISAJKHZvaWQpc2V0bG9j
YWxlKExDX0FMTCwgIiIpOwogIAogIAl3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJi
ZW5zdHV2IikpICE9IC0xKQogIAkJc3dpdGNoIChjaCkgewoqKioqKioqKioqKioqKioKKioqIDk2
LDEwNyAqKioqCiAgCQkJdGZsYWcgPSB2ZmxhZyA9IDE7CS8qIC10IGltcGxpZXMgLXYgKi8KICAJ
CQlicmVhazsKICAJCWNhc2UgJ3UnOgohIAkJCXNldGJ1ZihzdGRvdXQsIChjaGFyICopTlVMTCk7
CiAgCQkJYnJlYWs7CiAgCQljYXNlICd2JzoKICAJCQl2ZmxhZyA9IDE7CiAgCQkJYnJlYWs7CiAg
CQlkZWZhdWx0OgogIAkJCSh2b2lkKWZwcmludGYoc3RkZXJyLAogIAkJCSAgICAidXNhZ2U6IGNh
dCBbLWJlbnN0dXZdIFstXSBbZmlsZSAuLi5dXG4iKTsKICAJCQlleGl0KDEpOwotLS0gOTcsMTA5
IC0tLS0KICAJCQl0ZmxhZyA9IHZmbGFnID0gMTsJLyogLXQgaW1wbGllcyAtdiAqLwogIAkJCWJy
ZWFrOwogIAkJY2FzZSAndSc6CiEgCQkJc2V0YnVmKHN0ZG91dCwgTlVMTCk7CiAgCQkJYnJlYWs7
CiAgCQljYXNlICd2JzoKICAJCQl2ZmxhZyA9IDE7CiAgCQkJYnJlYWs7CiAgCQlkZWZhdWx0Ogor
IAkJY2FzZSAnPyc6CiAgCQkJKHZvaWQpZnByaW50ZihzdGRlcnIsCiAgCQkJICAgICJ1c2FnZTog
Y2F0IFstYmVuc3R1dl0gWy1dIFtmaWxlIC4uLl1cbiIpOwogIAkJCWV4aXQoMSk7CioqKioqKioq
KioqKioqKgoqKiogMjQ4LDI1OCAqKioqCiAgCQkJZXJyKDEsICIlcyIsIGZpbGVuYW1lKTsKICAJ
CWJzaXplID0gTUFYKHNidWYuc3RfYmxrc2l6ZSwgMTAyNCk7CiAgCQlpZiAoKGJ1ZiA9IG1hbGxv
YygodV9pbnQpYnNpemUpKSA9PSBOVUxMKQohIAkJCWVycigxLCBOVUxMKTsKICAJfQohIAl3aGls
ZSAoKG5yID0gcmVhZChyZmQsIGJ1ZiwgYnNpemUpKSA+IDApCiAgCQlmb3IgKG9mZiA9IDA7IG5y
OyBuciAtPSBudywgb2ZmICs9IG53KQohIAkJCWlmICgobncgPSB3cml0ZSh3ZmQsIGJ1ZiArIG9m
ZiwgbnIpKSA8IDApCiAgCQkJCWVycigxLCAic3Rkb3V0Iik7CiAgCWlmIChuciA8IDApIHsKICAJ
CXdhcm4oIiVzIiwgZmlsZW5hbWUpOwotLS0gMjUwLDI2MCAtLS0tCiAgCQkJZXJyKDEsICIlcyIs
IGZpbGVuYW1lKTsKICAJCWJzaXplID0gTUFYKHNidWYuc3RfYmxrc2l6ZSwgMTAyNCk7CiAgCQlp
ZiAoKGJ1ZiA9IG1hbGxvYygodV9pbnQpYnNpemUpKSA9PSBOVUxMKQohIAkJCWVycigxLCAiY2Fu
bm90IGFsbG9jYXRlIGJ1ZmZlciIpOwogIAl9CiEgCXdoaWxlICgobnIgPSByZWFkKHJmZCwgYnVm
LCAodV9pbnQpYnNpemUpKSA+IDApCiAgCQlmb3IgKG9mZiA9IDA7IG5yOyBuciAtPSBudywgb2Zm
ICs9IG53KQohIAkJCWlmICgobncgPSB3cml0ZSh3ZmQsIGJ1ZiArIG9mZiwgKHVfaW50KW5yKSkg
PCAwKQogIAkJCQllcnIoMSwgInN0ZG91dCIpOwogIAlpZiAobnIgPCAwKSB7CiAgCQl3YXJuKCIl
cyIsIGZpbGVuYW1lKTsK

------=_NextPart_000_003A_01BD34D9.4174C080
Content-Type: application/octet-stream;
	name="bin.chio.all.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="bin.chio.all.diff"

T25seSBpbiAvdXNyL3NyYy9iaW4vY2hpbzogY2hpbwpkaWZmIC1jIC1yIC91c3Ivc3JjL2Jpbi9j
aGlvL2NoaW8uMSAvdXNyL2xvY2FsL3NyYy9iaW4vY2hpby9jaGlvLjEKKioqIC91c3Ivc3JjL2Jp
bi9jaGlvL2NoaW8uMQlTYXQgU2VwIDEzIDExOjAxOjE4IDE5OTcKLS0tIC91c3IvbG9jYWwvc3Jj
L2Jpbi9jaGlvL2NoaW8uMQlTdW4gRmViICA4IDIxOjE2OjU1IDE5OTgKKioqKioqKioqKioqKioq
CioqKiAxMiwxOCAqKioqCiAgLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAuXCIgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
ICAuXCIgMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y
IHVzZSBvZiB0aGlzIHNvZnR3YXJlCiEgLlwiICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5n
IGFja25vd2xlZGdlbWVudHM6CiAgLlwiCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk
ZXZlbG9wZWQgYnkgSmFzb24gUi4gVGhvcnBlCiAgLlwiCWZvciBBbmQgQ29tbXVuaWNhdGlvbnMs
IGh0dHA6Ly93d3cuYW5kLmNvbS8KICAuXCIgNC4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkg
bm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCi0tLSAxMiwxOCAtLS0t
CiAgLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKICAuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAuXCIgMy4gQWxsIGFk
dmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNv
ZnR3YXJlCiEgLlwiICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50
czoKICAuXCIJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBKYXNv
biBSLiBUaG9ycGUKICAuXCIJZm9yIEFuZCBDb21tdW5pY2F0aW9ucywgaHR0cDovL3d3dy5hbmQu
Y29tLwogIC5cIiA0LiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKioqKioqKioqKioqKioqCioqKiAxNzcsMTgzICoq
KioKICAuSXQgTm0gQUNDRVNTCiAgTWVkaWEgaW4gdGhpcyBlbGVtZW50IGlzIGFjY2Vzc2libGUg
YnkgYSBwaWNrZXIuCiAgLkl0IE5tIEVYRU5BQgohIEVsZW1lbnQgc3VwcG9ydHMgcGFzc2luZyBt
ZWRpYSAoZXhwb3J0aW5nKSB0byBhbiBvdXRzaXRlIGh1bWFuIG9wZXJhdG9yLgogIC5JdCBObSBJ
TkVOQUIKICBFbGVtZW50IHN1cHBvcnRzIHJlY2VpdmluZyBtZWRpYSAoaW1wb3J0aW5nKSBmcm9t
IGFuIG91dHNpZGUgaHVtYW4gb3BlcmF0b3IuCiAgLkVsCi0tLSAxNzcsMTg1IC0tLS0KICAuSXQg
Tm0gQUNDRVNTCiAgTWVkaWEgaW4gdGhpcyBlbGVtZW50IGlzIGFjY2Vzc2libGUgYnkgYSBwaWNr
ZXIuCiAgLkl0IE5tIEVYRU5BQgohIEVsZW1lbnQgc3VwcG9ydHMgcGFzc2luZyBtZWRpYSAoZXhw
b3J0aW5nKSB0byBhbiBvdXRzaWRlIGh1bWFuIG9wZXJhdG9yLgohIC5JdCBObSBJRUxFTQohIFBl
cmZvcm0gYW4gXGZCSU5JVElBTElaRSBFTEVNRU5UIFNUQVRVU1xmUiBvcGVyYXRpb24gb24gdGhl
IGNoYW5nZXIuCiAgLkl0IE5tIElORU5BQgogIEVsZW1lbnQgc3VwcG9ydHMgcmVjZWl2aW5nIG1l
ZGlhIChpbXBvcnRpbmcpIGZyb20gYW4gb3V0c2lkZSBodW1hbiBvcGVyYXRvci4KICAuRWwKKioq
KioqKioqKioqKioqCioqKiAxODgsMjAwICoqKioKICBNb3ZlcyB0aGUgbWVkaWEgaW4gc2xvdCAz
IChmb3VydGggc2xvdCkgdG8gZHJpdmUgMCAoZmlyc3QgZHJpdmUpLgogIC5QcAogIC5ObSBjaGlv
IHNldHBpY2tlciAyCiAgQ29uZmlndXJlcyB0aGUgY2hhbmdlciB0byB1c2UgcGlja2VyIDIgKHRo
aXJkIHBpY2tlcikgZm9yIG9wZXJhdGlvbnMuCiAgLlBwCiAgLlNoIEZJTEVTCiAgL2Rldi9jaDAg
LSBkZWZhdWx0IGNoYW5nZXIgZGV2aWNlCiAgLlNoIFNFRSBBTFNPCiAgLlhyIG10IDEgLAohIC5Y
ciBjaCA0ICwKICAuWHIgbW91bnQgOCAuCiAgLlNoIEFVVEhPUgogIFRoZQotLS0gMTkwLDIwMyAt
LS0tCiAgTW92ZXMgdGhlIG1lZGlhIGluIHNsb3QgMyAoZm91cnRoIHNsb3QpIHRvIGRyaXZlIDAg
KGZpcnN0IGRyaXZlKS4KICAuUHAKICAuTm0gY2hpbyBzZXRwaWNrZXIgMgorIC5QcAogIENvbmZp
Z3VyZXMgdGhlIGNoYW5nZXIgdG8gdXNlIHBpY2tlciAyICh0aGlyZCBwaWNrZXIpIGZvciBvcGVy
YXRpb25zLgogIC5QcAogIC5TaCBGSUxFUwogIC9kZXYvY2gwIC0gZGVmYXVsdCBjaGFuZ2VyIGRl
dmljZQogIC5TaCBTRUUgQUxTTwogIC5YciBtdCAxICwKISAuWHIgY2ggNAogIC5YciBtb3VudCA4
IC4KICAuU2ggQVVUSE9SCiAgVGhlCk9ubHkgaW4gL3Vzci9zcmMvYmluL2NoaW86IGNoaW8uMS5v
cmlnCmRpZmYgLWMgLXIgL3Vzci9zcmMvYmluL2NoaW8vY2hpby5jIC91c3IvbG9jYWwvc3JjL2Jp
bi9jaGlvL2NoaW8uYwoqKiogL3Vzci9zcmMvYmluL2NoaW8vY2hpby5jCUZyaSBKdW4gIDYgMDE6
MzI6MDkgMTk5NwotLS0gL3Vzci9sb2NhbC9zcmMvYmluL2NoaW8vY2hpby5jCVN1biBGZWIgIDgg
MTk6MDg6MjIgMTk5OAoqKioqKioqKioqKioqKioKKioqIDEzLDE5ICoqKioKICAgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCiAgICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJp
YWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKISAgKiAgICBt
dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnRzOgogICAqCVRoaXMgcHJv
ZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgSmFzb24gUi4gVGhvcnBlCiAgICoJ
Zm9yIEFuZCBDb21tdW5pY2F0aW9ucywgaHR0cDovL3d3dy5hbmQuY29tLwogICAqIDQuIFRoZSBu
YW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cwotLS0gMTMsMTkgLS0tLQogICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgogICAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl
cyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohICAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93
aW5nIGFja25vd2xlZGdtZW50czoKICAgKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg
ZGV2ZWxvcGVkIGJ5IEphc29uIFIuIFRob3JwZQogICAqCWZvciBBbmQgQ29tbXVuaWNhdGlvbnMs
IGh0dHA6Ly93d3cuYW5kLmNvbS8KICAgKiA0LiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBu
b3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKioqKioqKioqKioqKioq
CioqKiAzNCw0MCAqKioqCiAgCiAgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogICNpbmNsdWRlIDxz
eXMvaW9jdGwuaD4KISAjaW5jbHVkZSA8c3lzL2NoaW8uaD4gCiAgI2luY2x1ZGUgPGVyci5oPgog
ICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxmY250bC5oPgotLS0gMzQsNDAgLS0tLQog
IAogICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiEgI2lu
Y2x1ZGUgPHN5cy9jaGlvLmg+CiAgI2luY2x1ZGUgPGVyci5oPgogICNpbmNsdWRlIDxlcnJuby5o
PgogICNpbmNsdWRlIDxmY250bC5oPgoqKioqKioqKioqKioqKioKKioqIDQ3LDUyICoqKioKLS0t
IDQ3LDUzIC0tLS0KICAjaW5jbHVkZSAiZGVmcy5oIgogICNpbmNsdWRlICJwYXRobmFtZXMuaCIK
ICAKKyBpbnQJbWFpbiBfX1AoKGludCwgY2hhciAqW10pKTsKICBzdGF0aWMJdm9pZCB1c2FnZSBf
X1AoKHZvaWQpKTsKICBzdGF0aWMJdm9pZCBjbGVhbnVwIF9fUCgodm9pZCkpOwogIHN0YXRpYwlp
bnQgcGFyc2VfZWxlbWVudF90eXBlIF9fUCgoY2hhciAqKSk7CioqKioqKioqKioqKioqKgoqKiog
NjIsNjcgKioqKgotLS0gNjMsNjkgLS0tLQogIHN0YXRpYwlpbnQgZG9fZ2V0cGlja2VyIF9fUCgo
Y2hhciAqLCBpbnQsIGNoYXIgKiopKTsKICBzdGF0aWMJaW50IGRvX3NldHBpY2tlciBfX1AoKGNo
YXIgKiwgaW50LCBjaGFyICoqKSk7CiAgc3RhdGljCWludCBkb19zdGF0dXMgX19QKChjaGFyICos
IGludCwgY2hhciAqKikpOworIHN0YXRpYwlpbnQgZG9faWVsZW0gX19QKChjaGFyICosIGludCwg
Y2hhciAqKikpOwogIAogIC8qIFZhbGlkIGNoYW5nZXIgZWxlbWVudCB0eXBlcy4gKi8KICBjb25z
dCBzdHJ1Y3QgZWxlbWVudF90eXBlIGVsZW1lbnRzW10gPSB7CioqKioqKioqKioqKioqKgoqKiog
ODEsODYgKioqKgotLS0gODMsODkgLS0tLQogIAl7ICJnZXRwaWNrZXIiLAkJZG9fZ2V0cGlja2Vy
IH0sCiAgCXsgInNldHBpY2tlciIsCQlkb19zZXRwaWNrZXIgfSwKICAJeyAic3RhdHVzIiwJCWRv
X3N0YXR1cyB9LAorIAl7ICJpZWxlbSIsIAkJZG9faWVsZW0gfSwKICAJeyBOVUxMLAkJCTAgfSwK
ICB9OwogIAoqKioqKioqKioqKioqKioKKioqIDk4LDEwNCAqKioqCiAgaW50CiAgbWFpbihhcmdj
LCBhcmd2KQogIAlpbnQgYXJnYzsKISAJY2hhciAqKmFyZ3Y7CiAgewogIAlpbnQgY2gsIGk7CiAg
Ci0tLSAxMDEsMTA3IC0tLS0KICBpbnQKICBtYWluKGFyZ2MsIGFyZ3YpCiAgCWludCBhcmdjOwoh
IAljaGFyICphcmd2W107CiAgewogIAlpbnQgY2gsIGk7CiAgCioqKioqKioqKioqKioqKgoqKiog
MTM1LDE0NiAqKioqCi0tLSAxMzgsMTU3IC0tLS0KICAJZm9yIChpID0gMDsgY29tbWFuZHNbaV0u
Y2NfbmFtZSAhPSBOVUxMOyArK2kpCiAgCQlpZiAoc3RyY21wKCphcmd2LCBjb21tYW5kc1tpXS5j
Y19uYW1lKSA9PSAwKQogIAkJCWJyZWFrOworIAlpZiAoY29tbWFuZHNbaV0uY2NfbmFtZSA9PSBO
VUxMKSB7CisgCQkvKiBsb29rIGZvciBhYmJyZXZpYXRpb24gKi8KKyAJCWZvciAoaSA9IDA7IGNv
bW1hbmRzW2ldLmNjX25hbWUgIT0gTlVMTDsgKytpKQorIAkJCWlmIChzdHJuY21wKCphcmd2LCBj
b21tYW5kc1tpXS5jY19uYW1lLAorIAkJCQlzdHJsZW4oKmFyZ3YpKSA9PSAwKQorIAkJCQkJYnJl
YWs7CisgCX0KICAJaWYgKGNvbW1hbmRzW2ldLmNjX25hbWUgPT0gTlVMTCkKICAJCWVycngoMSwg
InVua25vd24gY29tbWFuZDogJXMiLCAqYXJndik7CiAgCiAgCS8qIFNraXAgb3ZlciB0aGUgY29t
bWFuZCBuYW1lIGFuZCBjYWxsIGhhbmRsZXIuICovCiAgCSsrYXJndjsgLS1hcmdjOwogIAlleGl0
ICgoKmNvbW1hbmRzW2ldLmNjX2hhbmRsZXIpKGNvbW1hbmRzW2ldLmNjX25hbWUsIGFyZ2MsIGFy
Z3YpKTsKKyAJLyogTk9UUkVBQ0hFRCAqLwogIH0KICAKICBzdGF0aWMgaW50CioqKioqKioqKioq
KioqKgoqKiogMTY2LDE3MiAqKioqCiAgCQl3YXJueCgiJXM6IHRvbyBtYW55IGFyZ3VtZW50cyIs
IGNuYW1lKTsKICAJCWdvdG8gdXNhZ2U7CiAgCX0KISAJYnplcm8oJmNtZCwgc2l6ZW9mKGNtZCkp
OwogIAogIAkvKiA8ZnJvbSBFVD4gICovCiAgCWNtZC5jbV9mcm9tdHlwZSA9IHBhcnNlX2VsZW1l
bnRfdHlwZSgqYXJndik7Ci0tLSAxNzcsMTgzIC0tLS0KICAJCXdhcm54KCIlczogdG9vIG1hbnkg
YXJndW1lbnRzIiwgY25hbWUpOwogIAkJZ290byB1c2FnZTsKICAJfQohIAkodm9pZCkgbWVtc2V0
KCZjbWQsIDAsIHNpemVvZihjbWQpKTsKICAKICAJLyogPGZyb20gRVQ+ICAqLwogIAljbWQuY21f
ZnJvbXR5cGUgPSBwYXJzZV9lbGVtZW50X3R5cGUoKmFyZ3YpOwoqKioqKioqKioqKioqKioKKioq
IDIwNiwyMTIgKioqKgogIAlyZXR1cm4gKDApOwogIAogICB1c2FnZToKISAJZnByaW50ZihzdGRl
cnIsICJ1c2FnZTogY2hpbyAlcyAiCiAgCSAgICAiPGZyb20gRVQ+IDxmcm9tIEVVPiA8dG8gRVQ+
IDx0byBFVT4gW2ludl1cbiIsIGNuYW1lKTsKICAJcmV0dXJuICgxKTsKICB9Ci0tLSAyMTcsMjIz
IC0tLS0KICAJcmV0dXJuICgwKTsKICAKICAgdXNhZ2U6CiEgCSh2b2lkKSBmcHJpbnRmKHN0ZGVy
ciwgInVzYWdlOiBjaGlvICVzICIKICAJICAgICI8ZnJvbSBFVD4gPGZyb20gRVU+IDx0byBFVD4g
PHRvIEVVPiBbaW52XVxuIiwgY25hbWUpOwogIAlyZXR1cm4gKDEpOwogIH0KKioqKioqKioqKioq
KioqCioqKiAyMzQsMjQwICoqKioKICAJCXdhcm54KCIlczogdG9vIG1hbnkgYXJndW1lbnRzIiwg
Y25hbWUpOwogIAkJZ290byB1c2FnZTsKICAJfQohIAliemVybygmY21kLCBzaXplb2YoY21kKSk7
CiAgCiAgCS8qIDxzcmMgRVQ+ICAqLwogIAljbWQuY2Vfc3JjdHlwZSA9IHBhcnNlX2VsZW1lbnRf
dHlwZSgqYXJndik7Ci0tLSAyNDUsMjUxIC0tLS0KICAJCXdhcm54KCIlczogdG9vIG1hbnkgYXJn
dW1lbnRzIiwgY25hbWUpOwogIAkJZ290byB1c2FnZTsKICAJfQohIAkodm9pZCkgbWVtc2V0KCZj
bWQsIDAsIHNpemVvZihjbWQpKTsKICAKICAJLyogPHNyYyBFVD4gICovCiAgCWNtZC5jZV9zcmN0
eXBlID0gcGFyc2VfZWxlbWVudF90eXBlKCphcmd2KTsKKioqKioqKioqKioqKioqCioqKiAyOTks
MzA1ICoqKioKICAJcmV0dXJuICgwKTsKICAKICAgdXNhZ2U6CiEgCWZwcmludGYoc3RkZXJyLAog
IAkJInVzYWdlOiBjaGlvICVzIDxzcmMgRVQ+IDxzcmMgRVU+IDxkc3QxIEVUPiA8ZHN0MSBFVT5c
biIKICAJCSIgICAgICAgWzxkc3QyIEVUPiA8ZHN0MiBFVT5dIFtpbnYxXSBbaW52Ml1cbiIsIGNu
YW1lKTsKICAJcmV0dXJuICgxKTsKLS0tIDMxMCwzMTYgLS0tLQogIAlyZXR1cm4gKDApOwogIAog
ICB1c2FnZToKISAJKHZvaWQpIGZwcmludGYoc3RkZXJyLAogIAkJInVzYWdlOiBjaGlvICVzIDxz
cmMgRVQ+IDxzcmMgRVU+IDxkc3QxIEVUPiA8ZHN0MSBFVT5cbiIKICAJCSIgICAgICAgWzxkc3Qy
IEVUPiA8ZHN0MiBFVT5dIFtpbnYxXSBbaW52Ml1cbiIsIGNuYW1lKTsKICAJcmV0dXJuICgxKTsK
KioqKioqKioqKioqKioqCioqKiAzMjgsMzM0ICoqKioKICAJCXdhcm54KCIlczogdG9vIG1hbnkg
YXJndW1lbnRzIiwgY25hbWUpOwogIAkJZ290byB1c2FnZTsKICAJfQohIAliemVybygmY21kLCBz
aXplb2YoY21kKSk7CiAgCiAgCS8qIDx0byBFVD4gICovCiAgCWNtZC5jcF90eXBlID0gcGFyc2Vf
ZWxlbWVudF90eXBlKCphcmd2KTsKLS0tIDMzOSwzNDUgLS0tLQogIAkJd2FybngoIiVzOiB0b28g
bWFueSBhcmd1bWVudHMiLCBjbmFtZSk7CiAgCQlnb3RvIHVzYWdlOwogIAl9CiEgCSh2b2lkKSBt
ZW1zZXQoJmNtZCwgMCwgc2l6ZW9mKGNtZCkpOwogIAogIAkvKiA8dG8gRVQ+ICAqLwogIAljbWQu
Y3BfdHlwZSA9IHBhcnNlX2VsZW1lbnRfdHlwZSgqYXJndik7CioqKioqKioqKioqKioqKgoqKiog
MzYwLDM2OSAqKioqCiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAlmcHJpbnRmKHN0ZGVy
ciwgInVzYWdlOiBjaGlvICVzIDx0byBFVD4gPHRvIEVVPiBbaW52XVxuIiwgY25hbWUpOwogIAly
ZXR1cm4gKDEpOwogIH0KICAKICBzdGF0aWMgaW50CiAgZG9fcGFyYW1zKGNuYW1lLCBhcmdjLCBh
cmd2KQogIAljaGFyICpjbmFtZTsKLS0tIDM3MSwzODEgLS0tLQogIAlyZXR1cm4gKDApOwogIAog
ICB1c2FnZToKISAJKHZvaWQpIGZwcmludGYoc3RkZXJyLCAidXNhZ2U6IGNoaW8gJXMgPHRvIEVU
PiA8dG8gRVU+IFtpbnZdXG4iLCBjbmFtZSk7CiAgCXJldHVybiAoMSk7CiAgfQogIAorIC8qIEFS
R1NVU0VEICovCiAgc3RhdGljIGludAogIGRvX3BhcmFtcyhjbmFtZSwgYXJnYywgYXJndikKICAJ
Y2hhciAqY25hbWU7CioqKioqKioqKioqKioqKgoqKiogMzc0LDQwNSAqKioqCiAgCiAgCS8qIE5v
IGFyZ3VtZW50cyB0byB0aGlzIGNvbW1hbmQuICovCiAgCWlmIChhcmdjKSB7CiEgCQl3YXJueCgi
JXM6IG5vIGFyZ3VlbWVudHMgZXhwZWN0ZWQiLCBjbmFtZSk7CiAgCQlnb3RvIHVzYWdlOwogIAl9
CiAgCiAgCS8qIEdldCBwYXJhbXMgZnJvbSBjaGFuZ2VyIGFuZCBkaXNwbGF5IHRoZW0uICovCiEg
CWJ6ZXJvKCZkYXRhLCBzaXplb2YoZGF0YSkpOwogIAlpZiAoaW9jdGwoY2hhbmdlcl9mZCwgQ0hJ
T0dQQVJBTVMsIChjaGFyICopJmRhdGEpKQogIAkJZXJyKDEsICIlczogQ0hJT0dQQVJBTVMiLCBj
aGFuZ2VyX25hbWUpOwogIAohIAlwcmludGYoIiVzOiAlZCBzbG90JXMsICVkIGRyaXZlJXMsICVk
IHBpY2tlciVzIiwKICAJICAgIGNoYW5nZXJfbmFtZSwKICAJICAgIGRhdGEuY3BfbnNsb3RzLCAo
ZGF0YS5jcF9uc2xvdHMgPiAxKSA/ICJzIiA6ICIiLAogIAkgICAgZGF0YS5jcF9uZHJpdmVzLCAo
ZGF0YS5jcF9uZHJpdmVzID4gMSkgPyAicyIgOiAiIiwKICAJICAgIGRhdGEuY3BfbnBpY2tlcnMs
IChkYXRhLmNwX25waWNrZXJzID4gMSkgPyAicyIgOiAiIik7CiAgCWlmIChkYXRhLmNwX25wb3J0
YWxzKQohIAkJcHJpbnRmKCIsICVkIHBvcnRhbCVzIiwgZGF0YS5jcF9ucG9ydGFscywKICAJCSAg
ICAoZGF0YS5jcF9ucG9ydGFscyA+IDEpID8gInMiIDogIiIpOwohIAlwcmludGYoIlxuJXM6IGN1
cnJlbnQgcGlja2VyOiAlZFxuIiwgY2hhbmdlcl9uYW1lLCBkYXRhLmNwX2N1cnBpY2tlcik7CiAg
CiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBj
aGlvICVzXG4iLCBjbmFtZSk7CiAgCXJldHVybiAoMSk7CiAgfQogIAogIHN0YXRpYyBpbnQKICBk
b19nZXRwaWNrZXIoY25hbWUsIGFyZ2MsIGFyZ3YpCiAgCWNoYXIgKmNuYW1lOwotLS0gMzg2LDQx
OSAtLS0tCiAgCiAgCS8qIE5vIGFyZ3VtZW50cyB0byB0aGlzIGNvbW1hbmQuICovCiAgCWlmIChh
cmdjKSB7CiEgCQl3YXJueCgiJXM6IG5vIGFyZ3VtZW50cyBleHBlY3RlZCIsIGNuYW1lKTsKICAJ
CWdvdG8gdXNhZ2U7CiAgCX0KICAKICAJLyogR2V0IHBhcmFtcyBmcm9tIGNoYW5nZXIgYW5kIGRp
c3BsYXkgdGhlbS4gKi8KISAJKHZvaWQpIG1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsK
ICAJaWYgKGlvY3RsKGNoYW5nZXJfZmQsIENISU9HUEFSQU1TLCAoY2hhciAqKSZkYXRhKSkKICAJ
CWVycigxLCAiJXM6IENISU9HUEFSQU1TIiwgY2hhbmdlcl9uYW1lKTsKICAKISAJKHZvaWQpIHBy
aW50ZigiJXM6ICVkIHNsb3QlcywgJWQgZHJpdmUlcywgJWQgcGlja2VyJXMiLAogIAkgICAgY2hh
bmdlcl9uYW1lLAogIAkgICAgZGF0YS5jcF9uc2xvdHMsIChkYXRhLmNwX25zbG90cyA+IDEpID8g
InMiIDogIiIsCiAgCSAgICBkYXRhLmNwX25kcml2ZXMsIChkYXRhLmNwX25kcml2ZXMgPiAxKSA/
ICJzIiA6ICIiLAogIAkgICAgZGF0YS5jcF9ucGlja2VycywgKGRhdGEuY3BfbnBpY2tlcnMgPiAx
KSA/ICJzIiA6ICIiKTsKICAJaWYgKGRhdGEuY3BfbnBvcnRhbHMpCiEgCQkodm9pZCkgcHJpbnRm
KCIsICVkIHBvcnRhbCVzIiwgZGF0YS5jcF9ucG9ydGFscywKICAJCSAgICAoZGF0YS5jcF9ucG9y
dGFscyA+IDEpID8gInMiIDogIiIpOwohIAkodm9pZCkgcHJpbnRmKCJcbiVzOiBjdXJyZW50IHBp
Y2tlcjogJWRcbiIsIGNoYW5nZXJfbmFtZSwKISAJCWRhdGEuY3BfY3VycGlja2VyKTsKICAKICAJ
cmV0dXJuICgwKTsKICAKICAgdXNhZ2U6CiEgCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgInVzYWdl
OiBjaGlvICVzXG4iLCBjbmFtZSk7CiAgCXJldHVybiAoMSk7CiAgfQogIAorIC8qIEFSR1NVU0VE
ICovCiAgc3RhdGljIGludAogIGRvX2dldHBpY2tlcihjbmFtZSwgYXJnYywgYXJndikKICAJY2hh
ciAqY25hbWU7CioqKioqKioqKioqKioqKgoqKiogNDE4LDQyOSAqKioqCiAgCWlmIChpb2N0bChj
aGFuZ2VyX2ZkLCBDSElPR1BJQ0tFUiwgKGNoYXIgKikmcGlja2VyKSkKICAJCWVycigxLCAiJXM6
IENISU9HUElDS0VSIiwgY2hhbmdlcl9uYW1lKTsKICAKISAJcHJpbnRmKCIlczogY3VycmVudCBw
aWNrZXI6ICVkXG4iLCBjaGFuZ2VyX25hbWUsIHBpY2tlcik7CiAgCiAgCXJldHVybiAoMCk7CiAg
CiAgIHVzYWdlOgohIAlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBjaGlvICVzXG4iLCBjbmFtZSk7
CiAgCXJldHVybiAoMSk7CiAgfQogIAotLS0gNDMyLDQ0MyAtLS0tCiAgCWlmIChpb2N0bChjaGFu
Z2VyX2ZkLCBDSElPR1BJQ0tFUiwgKGNoYXIgKikmcGlja2VyKSkKICAJCWVycigxLCAiJXM6IENI
SU9HUElDS0VSIiwgY2hhbmdlcl9uYW1lKTsKICAKISAJKHZvaWQpIHByaW50ZigiJXM6IGN1cnJl
bnQgcGlja2VyOiAlZFxuIiwgY2hhbmdlcl9uYW1lLCBwaWNrZXIpOwogIAogIAlyZXR1cm4gKDAp
OwogIAogICB1c2FnZToKISAJKHZvaWQpIGZwcmludGYoc3RkZXJyLCAidXNhZ2U6IGNoaW8gJXNc
biIsIGNuYW1lKTsKICAJcmV0dXJuICgxKTsKICB9CiAgCioqKioqKioqKioqKioqKgoqKiogNDUy
LDQ1OCAqKioqCiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAlmcHJpbnRmKHN0ZGVyciwg
InVzYWdlOiBjaGlvICVzIDxwaWNrZXI+XG4iLCBjbmFtZSk7CiAgCXJldHVybiAoMSk7CiAgfQog
IAotLS0gNDY2LDQ3MiAtLS0tCiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAkodm9pZCkg
ZnByaW50ZihzdGRlcnIsICJ1c2FnZTogY2hpbyAlcyA8cGlja2VyPlxuIiwgY25hbWUpOwogIAly
ZXR1cm4gKDEpOwogIH0KICAKKioqKioqKioqKioqKioqCioqKiA0NjUsNDc2ICoqKioKICAJc3Ry
dWN0IGNoYW5nZXJfZWxlbWVudF9zdGF0dXMgY21kOwogIAlzdHJ1Y3QgY2hhbmdlcl9wYXJhbXMg
ZGF0YTsKICAJdV9pbnQ4X3QgKnN0YXR1c3A7CiEgCWludCBpLCBjb3VudCwgY2hldCwgc2NoZXQs
IGVjaGV0OwogIAljaGFyICpkZXNjcmlwdGlvbjsKICAKLSAJY291bnQgPSAwOwotIAlkZXNjcmlw
dGlvbiA9IE5VTEw7Ci0gCiAgCS8qCiAgCSAqIE9uIGEgc3RhdHVzIGNvbW1hbmQsIHdlIGV4cGVj
dCB0aGUgZm9sbG93aW5nOgogIAkgKgotLS0gNDc5LDQ4OCAtLS0tCiAgCXN0cnVjdCBjaGFuZ2Vy
X2VsZW1lbnRfc3RhdHVzIGNtZDsKICAJc3RydWN0IGNoYW5nZXJfcGFyYW1zIGRhdGE7CiAgCXVf
aW50OF90ICpzdGF0dXNwOwohIAlpbnQgaSwgY2hldCwgc2NoZXQsIGVjaGV0OwohIAlzaXplX3Qg
Y291bnQ7CiAgCWNoYXIgKmRlc2NyaXB0aW9uOwogIAogIAkvKgogIAkgKiBPbiBhIHN0YXR1cyBj
b21tYW5kLCB3ZSBleHBlY3QgdGhlIGZvbGxvd2luZzoKICAJICoKKioqKioqKioqKioqKioqCioq
KiA0OTAsNDk2ICoqKioKICAJICogR2V0IHBhcmFtcyBmcm9tIGNoYW5nZXIuICBTcGVjaWZpY2Fs
bHksIHdlIG5lZWQgdGhlIGVsZW1lbnQKICAJICogY291bnRzLgogIAkgKi8KISAJYnplcm8oJmRh
dGEsIHNpemVvZihkYXRhKSk7CiAgCWlmIChpb2N0bChjaGFuZ2VyX2ZkLCBDSElPR1BBUkFNUywg
KGNoYXIgKikmZGF0YSkpCiAgCQllcnIoMSwgIiVzOiBDSElPR1BBUkFNUyIsIGNoYW5nZXJfbmFt
ZSk7CiAgCi0tLSA1MDIsNTA4IC0tLS0KICAJICogR2V0IHBhcmFtcyBmcm9tIGNoYW5nZXIuICBT
cGVjaWZpY2FsbHksIHdlIG5lZWQgdGhlIGVsZW1lbnQKICAJICogY291bnRzLgogIAkgKi8KISAJ
KHZvaWQpIG1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKICAJaWYgKGlvY3RsKGNoYW5n
ZXJfZmQsIENISU9HUEFSQU1TLCAoY2hhciAqKSZkYXRhKSkKICAJCWVycigxLCAiJXM6IENISU9H
UEFSQU1TIiwgY2hhbmdlcl9uYW1lKTsKICAKKioqKioqKioqKioqKioqCioqKiA1MjIsNTM0ICoq
KioKICAJCQljb3VudCA9IGRhdGEuY3BfbmRyaXZlczsKICAJCQlkZXNjcmlwdGlvbiA9ICJkcml2
ZSI7CiAgCQkJYnJlYWs7CiAgCQl9CiAgCiAgCQlpZiAoY291bnQgPT0gMCkgewogIAkJCWlmIChh
cmdjID09IDApCiAgCQkJCWNvbnRpbnVlOwogIAkJCWVsc2UgewohIAkJCQlwcmludGYoIiVzOiBu
byAlcyBlbGVtZW50c1xuIiwKICAJCQkJICAgIGNoYW5nZXJfbmFtZSwgZGVzY3JpcHRpb24pOwog
IAkJCQlyZXR1cm4gKDApOwogIAkJCX0KLS0tIDUzNCw1NTEgLS0tLQogIAkJCWNvdW50ID0gZGF0
YS5jcF9uZHJpdmVzOwogIAkJCWRlc2NyaXB0aW9uID0gImRyaXZlIjsKICAJCQlicmVhazsKKyAK
KyAJCWRlZmF1bHQ6CisgCQkJLyogVG8gYXBwZWFzZSBnY2MgLVd1bmluaXRpYWxpemVkLiAqLwor
IAkJCWNvdW50ID0gMDsKKyAJCQlkZXNjcmlwdGlvbiA9IE5VTEw7CiAgCQl9CiAgCiAgCQlpZiAo
Y291bnQgPT0gMCkgewogIAkJCWlmIChhcmdjID09IDApCiAgCQkJCWNvbnRpbnVlOwogIAkJCWVs
c2UgewohIAkJCQkodm9pZCkgcHJpbnRmKCIlczogbm8gJXMgZWxlbWVudHNcbiIsCiAgCQkJCSAg
ICBjaGFuZ2VyX25hbWUsIGRlc2NyaXB0aW9uKTsKICAJCQkJcmV0dXJuICgwKTsKICAJCQl9Cioq
KioqKioqKioqKioqKgoqKiogNTM4LDU0NSAqKioqCiAgCQlpZiAoKHN0YXR1c3AgPSAodV9pbnQ4
X3QgKiltYWxsb2MoY291bnQpKSA9PSBOVUxMKQogIAkJCWVycngoMSwgImNhbid0IGFsbG9jYXRl
IHN0YXR1cyBzdG9yYWdlIik7CiAgCiEgCQliemVybyhzdGF0dXNwLCBjb3VudCk7CiEgCQliemVy
bygmY21kLCBzaXplb2YoY21kKSk7CiAgCiAgCQljbWQuY2VzX3R5cGUgPSBjaGV0OwogIAkJY21k
LmNlc19kYXRhID0gc3RhdHVzcDsKLS0tIDU1NSw1NjIgLS0tLQogIAkJaWYgKChzdGF0dXNwID0g
KHVfaW50OF90ICopbWFsbG9jKGNvdW50KSkgPT0gTlVMTCkKICAJCQllcnJ4KDEsICJjYW4ndCBh
bGxvY2F0ZSBzdGF0dXMgc3RvcmFnZSIpOwogIAohIAkJKHZvaWQpIG1lbXNldChzdGF0dXNwLCAw
LCBjb3VudCk7CiEgCQkodm9pZCkgbWVtc2V0KCZjbWQsIDAsIHNpemVvZihjbWQpKTsKICAKICAJ
CWNtZC5jZXNfdHlwZSA9IGNoZXQ7CiAgCQljbWQuY2VzX2RhdGEgPSBzdGF0dXNwOwoqKioqKioq
KioqKioqKioKKioqIDU1MSw1NTcgKioqKgogIAogIAkJLyogRHVtcCB0aGUgc3RhdHVzIGZvciBl
YWNoIGVsZW1lbnQgb2YgdGhpcyB0eXBlLiAqLwogIAkJZm9yIChpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKISAJCQlwcmludGYoIiVzICVkOiAlc1xuIiwgZGVzY3JpcHRpb24sIGksCiAgCQkJICAg
IGJpdHNfdG9fc3RyaW5nKHN0YXR1c3BbaV0sIENFU1RBVFVTX0JJVFMpKTsKICAJCX0KICAKLS0t
IDU2OCw1NzQgLS0tLQogIAogIAkJLyogRHVtcCB0aGUgc3RhdHVzIGZvciBlYWNoIGVsZW1lbnQg
b2YgdGhpcyB0eXBlLiAqLwogIAkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKISAJCQko
dm9pZCkgcHJpbnRmKCIlcyAlZDogJXNcbiIsIGRlc2NyaXB0aW9uLCBpLAogIAkJCSAgICBiaXRz
X3RvX3N0cmluZyhzdGF0dXNwW2ldLCBDRVNUQVRVU19CSVRTKSk7CiAgCQl9CiAgCioqKioqKioq
KioqKioqKgoqKiogNTYxLDU3MCAqKioqCiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAlm
cHJpbnRmKHN0ZGVyciwgInVzYWdlOiBjaGlvICVzIFs8ZWxlbWVudCB0eXBlPl1cbiIsIGNuYW1l
KTsKICAJcmV0dXJuICgxKTsKICB9CiAgCiAgc3RhdGljIGludAogIHBhcnNlX2VsZW1lbnRfdHlw
ZShjcCkKICAJY2hhciAqY3A7Ci0tLSA1NzgsNjAxIC0tLS0KICAJcmV0dXJuICgwKTsKICAKICAg
dXNhZ2U6CiEgCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBjaGlvICVzIFs8ZWxlbWVu
dCB0eXBlPl1cbiIsIGNuYW1lKTsKICAJcmV0dXJuICgxKTsKICB9CiAgCisgLyogQVJHU1VTRUQg
Ki8KKyBzdGF0aWMgaW50CisgZG9faWVsZW0oY25hbWUsIGFyZ2MsIGFyZ3YpCisgCWNoYXIgKmNu
YW1lOworIAlpbnQgYXJnYzsKKyAJY2hhciAqKmFyZ3Y7CisgeworIAlpZiAoaW9jdGwoY2hhbmdl
cl9mZCwgQ0hJT0lFTEVNLCBOVUxMKSkKKyAJCWVycigxLCAiJXM6IENISU9JRUxFTSIsIGNoYW5n
ZXJfbmFtZSk7CisgCisgCXJldHVybiAoMCk7CisgfQorIAorIAogIHN0YXRpYyBpbnQKICBwYXJz
ZV9lbGVtZW50X3R5cGUoY3ApCiAgCWNoYXIgKmNwOwoqKioqKioqKioqKioqKioKKioqIDU3Niw1
ODEgKioqKgotLS0gNjA3LDYxMyAtLS0tCiAgCQkJcmV0dXJuIChlbGVtZW50c1tpXS5ldF90eXBl
KTsKICAKICAJZXJyeCgxLCAiaW52YWxpZCBlbGVtZW50IHR5cGUgYCVzJyIsIGNwKTsKKyAJLyog
Tk9UUkVBQ0hFRCAqLwogIH0KICAKICBzdGF0aWMgaW50CioqKioqKioqKioqKioqKgoqKiogNjAz
LDYwOCAqKioqCi0tLSA2MzUsNjQxIC0tLS0KICAJCXJldHVybiAodmFsKTsKICAKICAJZXJyeCgx
LCAiaW52YWxpZCBtb2RpZmllciBgJXMnIiwgY3ApOworIAkvKiBOT1RSRUFDSEVEICovCiAgfQog
IAogIHN0YXRpYyBpbnQKKioqKioqKioqKioqKioqCioqKiA2MjgsNjM0ICoqKioKICAJc3RhdGlj
IGNoYXIgYnVmWzEyOF07CiAgCiAgCWJwID0gYnVmOwohIAliemVybyhidWYsIHNpemVvZihidWYp
KTsKICAKICAJZm9yIChzZXAgPSAnPCc7IChmID0gKmNwKyspICE9IDA7IGNwID0gbnApIHsKICAJ
CWZvciAobnAgPSBjcDsgKm5wID49ICcgJzspCi0tLSA2NjEsNjY3IC0tLS0KICAJc3RhdGljIGNo
YXIgYnVmWzEyOF07CiAgCiAgCWJwID0gYnVmOwohIAkodm9pZCkgbWVtc2V0KGJ1ZiwgMCwgc2l6
ZW9mKGJ1ZikpOwogIAogIAlmb3IgKHNlcCA9ICc8JzsgKGYgPSAqY3ArKykgIT0gMDsgY3AgPSBu
cCkgewogIAkJZm9yIChucCA9IGNwOyAqbnAgPj0gJyAnOykKKioqKioqKioqKioqKioqCioqKiA2
MzYsNjQyICoqKioKICAJCWlmICgodiAmICgxIDw8IChmIC0gMSkpKSA9PSAwKQogIAkJCWNvbnRp
bnVlOwogIAkJYnAgKz0gc25wcmludGYoYnAsIHNpemVvZihidWYpIC0gKGJwIC0gJmJ1ZlswXSks
CiEgCQkJCQkJIiVjJS4qcyIsIHNlcCwgbnAgLSBjcCwgY3ApOwogIAkJc2VwID0gJywnOwogIAl9
CiAgCWlmIChzZXAgIT0gJzwnKQotLS0gNjY5LDY3NSAtLS0tCiAgCQlpZiAoKHYgJiAoMSA8PCAo
ZiAtIDEpKSkgPT0gMCkKICAJCQljb250aW51ZTsKICAJCWJwICs9IHNucHJpbnRmKGJwLCBzaXpl
b2YoYnVmKSAtIChicCAtICZidWZbMF0pLAohIAkJCQkiJWMlLipzIiwgc2VwLCAoaW50KShsb25n
KShucCAtIGNwKSwgY3ApOwogIAkJc2VwID0gJywnOwogIAl9CiAgCWlmIChzZXAgIT0gJzwnKQoq
KioqKioqKioqKioqKioKKioqIDY0OCw2NTQgKioqKgogIHN0YXRpYyB2b2lkCiAgY2xlYW51cCgp
CiAgewotIAogIAkvKiBTaW1wbGUgZW5vdWdoLi4uICovCiAgCSh2b2lkKWNsb3NlKGNoYW5nZXJf
ZmQpOwogIH0KLS0tIDY4MSw2ODYgLS0tLQpPbmx5IGluIC91c3Ivc3JjL2Jpbi9jaGlvOiBjaGlv
Lm8KZGlmZiAtYyAtciAvdXNyL3NyYy9iaW4vY2hpby9kZWZzLmggL3Vzci9sb2NhbC9zcmMvYmlu
L2NoaW8vZGVmcy5oCioqKiAvdXNyL3NyYy9iaW4vY2hpby9kZWZzLmgJVGh1IE1hciAgNiAwOToz
MDowNiAxOTk3Ci0tLSAvdXNyL2xvY2FsL3NyYy9iaW4vY2hpby9kZWZzLmgJU3VuIEZlYiAgMSAy
MDoxODowNiAxOTk4CioqKioqKioqKioqKioqKgoqKiogMTMsMTkgKioqKgogICAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKICAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlh
bHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohICAqICAgIG11
c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudHM6CiAgICoJVGhpcyBwcm9k
dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBKYXNvbiBSLiBUaG9ycGUKICAgKglm
b3IgQW5kIENvbW11bmljYXRpb25zLCBodHRwOi8vd3d3LmFuZC5jb20vCiAgICogNC4gVGhlIG5h
bWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzCi0tLSAxMywxOSAtLS0tCiAgICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCiAgICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVz
IG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCiEgICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dp
bmcgYWNrbm93bGVkZ21lbnRzOgogICAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk
ZXZlbG9wZWQgYnkgSmFzb24gUi4gVGhvcnBlCiAgICoJZm9yIEFuZCBDb21tdW5pY2F0aW9ucywg
aHR0cDovL3d3dy5hbmQuY29tLwogICAqIDQuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5v
dCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwpkaWZmIC1jIC1yIC91c3Iv
c3JjL2Jpbi9jaGlvL3BhdGhuYW1lcy5oIC91c3IvbG9jYWwvc3JjL2Jpbi9jaGlvL3BhdGhuYW1l
cy5oCioqKiAvdXNyL3NyYy9iaW4vY2hpby9wYXRobmFtZXMuaAlUaHUgTWFyICA2IDA5OjMwOjA2
IDE5OTcKLS0tIC91c3IvbG9jYWwvc3JjL2Jpbi9jaGlvL3BhdGhuYW1lcy5oCU1vbiBGZWIgIDIg
MTk6MjM6MDYgMTk5OAoqKioqKioqKioqKioqKioKKioqIDEzLDE5ICoqKioKICAgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCiAgICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJp
YWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKISAgKiAgICBt
dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnRzOgogICAqCVRoaXMgcHJv
ZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgSmFzb24gUi4gVGhvcnBlCiAgICoJ
Zm9yIEFuZCBDb21tdW5pY2F0aW9ucywgaHR0cDovL3d3dy5hbmQuY29tLwogICAqIDQuIFRoZSBu
YW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cwotLS0gMTMsMTkgLS0tLQogICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgogICAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl
cyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohICAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93
aW5nIGFja25vd2xlZGdtZW50czoKICAgKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg
ZGV2ZWxvcGVkIGJ5IEphc29uIFIuIFRob3JwZQogICAqCWZvciBBbmQgQ29tbXVuaWNhdGlvbnMs
IGh0dHA6Ly93d3cuYW5kLmNvbS8KICAgKiA0LiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBu
b3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKioqIC91c3Ivc3JjL3N5
cy9zeXMvY2hpby5oCVR1ZSBNYXIgMTEgMTM6Mzg6MDIgMTk5NwotLS0gL3Vzci9sb2NhbC9zcmMv
c3lzL3N5cy9jaGlvLmgJTW9uIEZlYiAgMiAyMDoxNToyMCAxOTk4CioqKioqKioqKioqKioqKgoq
KiogMTUxLDE1NiAqKioqCi0tLSAxNTEsMTU3IC0tLS0KICAjZGVmaW5lIENISU9HUElDS0VSCV9J
T1IoJ2MnLCAweDA0LCBpbnQpCiAgI2RlZmluZSBDSElPU1BJQ0tFUglfSU9XKCdjJywgMHgwNSwg
aW50KQogICNkZWZpbmUgQ0hJT0dQQVJBTVMJX0lPUignYycsIDB4MDYsIHN0cnVjdCBjaGFuZ2Vy
X3BhcmFtcykKKyAjZGVmaW5lIENISU9JRUxFTQkgX0lPKCdjJywgMHgwNykKICAjZGVmaW5lIENI
SU9HU1RBVFVTCV9JT1coJ2MnLCAweDA4LCBzdHJ1Y3QgY2hhbmdlcl9lbGVtZW50X3N0YXR1cykK
ICAKICAjZW5kaWYgLyogIV9TWVNfQ0hJT19IXyAqLwo=

------=_NextPart_000_003A_01BD34D9.4174C080
Content-Type: application/octet-stream;
	name="bin.cp.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="bin.cp.diff"

T25seSBpbiAvdXNyL3NyYy9iaW4vY3A6IGNwCmRpZmYgLWMgLXIgL3Vzci9zcmMvYmluL2NwL2Nw
LjEgL3Vzci9sb2NhbC9zcmMvYmluL2NwL2NwLjEKKioqIC91c3Ivc3JjL2Jpbi9jcC9jcC4xCVNh
dCBGZWIgMjIgMDg6MDE6MzIgMTk5NwotLS0gL3Vzci9sb2NhbC9zcmMvYmluL2NwL2NwLjEJVHVl
IEZlYiAgMyAxOTo0MjoxMSAxOTk4CioqKioqKioqKioqKioqKgoqKiogMTMsMTkgKioqKgogIC5c
IiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCiAgLlwiICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgLlwiIDMuIEFsbCBhZHZlcnRp
c2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2Fy
ZQohIC5cIiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6CiAg
LlwiCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZl
cnNpdHkgb2YKICAuXCIJQ2FsaWZvcm5pYSwgQmVya2VsZXkgYW5kIGl0cyBjb250cmlidXRvcnMu
CiAgLlwiIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1l
cyBvZiBpdHMgY29udHJpYnV0b3JzCi0tLSAxMywxOSAtLS0tCiAgLlwiICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
ICAuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KICAuXCIgMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBt
ZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCiEgLlwiICAgIG11c3Qg
ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgogIC5cIglUaGlzIHByb2R1Y3Qg
aW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBVbml2ZXJzaXR5IG9mCiAgLlwiCUNh
bGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0b3JzLgogIC5cIiA0LiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycwoqKioqKioqKioqKioqKioKKioqIDQ3LDYyICoqKioKICAuRmwgUgogIC5PcCBGbCBIIHwg
RmwgTCB8IEZsIFAKICAuT2MKISAuT3AgRmwgZiB8IGkKISAuT3AgRmwgcAogIC5BciBzb3VyY2Vf
ZmlsZSB0YXJnZXRfZmlsZQogIC5ObSBjcAogIC5PbwogIC5GbCBSCiAgLk9wIEZsIEggfCBGbCBM
IHwgRmwgUAogIC5PYwohIC5PcCBGbCBmIHwgaQohIC5PcCBGbCBwCiAgLkFyIHNvdXJjZV9maWxl
IC4uLiB0YXJnZXRfZGlyZWN0b3J5CiAgLlNoIERFU0NSSVBUSU9OCiAgSW4gdGhlIGZpcnN0IHN5
bm9wc2lzIGZvcm0sIHRoZQotLS0gNDcsNjAgLS0tLQogIC5GbCBSCiAgLk9wIEZsIEggfCBGbCBM
IHwgRmwgUAogIC5PYwohIC5PcCBGbCBmaXAKICAuQXIgc291cmNlX2ZpbGUgdGFyZ2V0X2ZpbGUK
ICAuTm0gY3AKICAuT28KICAuRmwgUgogIC5PcCBGbCBIIHwgRmwgTCB8IEZsIFAKICAuT2MKISAu
T3AgRmwgZmlwCiAgLkFyIHNvdXJjZV9maWxlIC4uLiB0YXJnZXRfZGlyZWN0b3J5CiAgLlNoIERF
U0NSSVBUSU9OCiAgSW4gdGhlIGZpcnN0IHN5bm9wc2lzIGZvcm0sIHRoZQoqKioqKioqKioqKioq
KioKKioqIDEwNywxMjMgKioqKgogIGNyZWF0ZSBhIG5ldyBmaWxlLCB3aXRob3V0IHByb21wdGlu
ZyBmb3IgY29uZmlybWF0aW9uCiAgcmVnYXJkbGVzcyBvZiBpdHMgcGVybWlzc2lvbnMuCiAgKFRo
ZQotIC5GbCBmCi0gb3B0aW9uIG92ZXJyaWRlcyBhbnkgcHJldmlvdXMKICAuRmwgaQohIG9wdGlv
bnMuKQogIC5JdCBGbCBpCiAgQ2F1c2VzCiAgLk5tIGNwCiAgdG8gd3JpdGUgYSBwcm9tcHQgdG8g
dGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCBiZWZvcmUgY29weWluZyBhIGZpbGUKICB0aGF0IHdv
dWxkIG92ZXJ3cml0ZSBhbiBleGlzdGluZyBmaWxlLgogIElmIHRoZSByZXNwb25zZSBmcm9tIHRo
ZSBzdGFuZGFyZCBpbnB1dCBiZWdpbnMgd2l0aCB0aGUgY2hhcmFjdGVyCiEgLlNxIExpIHkgCiAg
b3IKICAuU3EgTGkgWSAsCiAgdGhlIGZpbGUgY29weSBpcyBhdHRlbXB0ZWQuCi0tLSAxMDUsMTIx
IC0tLS0KICBjcmVhdGUgYSBuZXcgZmlsZSwgd2l0aG91dCBwcm9tcHRpbmcgZm9yIGNvbmZpcm1h
dGlvbgogIHJlZ2FyZGxlc3Mgb2YgaXRzIHBlcm1pc3Npb25zLgogIChUaGUKICAuRmwgaQohIG9w
dGlvbiBpcyBpZ25vcmVkIGlmIHRoZQohIC5GbCBmCiEgb3B0aW9uIGlzIHNwZWNpZmllZC4pCiAg
Lkl0IEZsIGkKICBDYXVzZXMKICAuTm0gY3AKICB0byB3cml0ZSBhIHByb21wdCB0byB0aGUgc3Rh
bmRhcmQgZXJyb3Igb3V0cHV0IGJlZm9yZSBjb3B5aW5nIGEgZmlsZQogIHRoYXQgd291bGQgb3Zl
cndyaXRlIGFuIGV4aXN0aW5nIGZpbGUuCiAgSWYgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHN0YW5k
YXJkIGlucHV0IGJlZ2lucyB3aXRoIHRoZSBjaGFyYWN0ZXIKISAuU3EgTGkgeSAsCiAgb3IKICAu
U3EgTGkgWSAsCiAgdGhlIGZpbGUgY29weSBpcyBhdHRlbXB0ZWQuCioqKioqKioqKioqKioqKgoq
KiogMTk0LDIwMCAqKioqCiAgLkZsIFIKICBvcHRpb24gaXMgc3BlY2lmaWVkLgogIEluIGFkZGl0
aW9uLCB0aGVzZSBvcHRpb25zIG92ZXJyaWRlIGVhY2ggb3RoZXIgYW5kIHRoZQohIGNvbW1hbmQn
cyBhY3Rpb25zIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0IG9uZSBzcGVjaWZpZWQuCiAgLlBw
CiAgLk5tIENwCiAgZXhpdHMgMCBvbiBzdWNjZXNzLCA+MCBpZiBhbiBlcnJvciBvY2N1cnJlZC4K
LS0tIDE5MiwxOTggLS0tLQogIC5GbCBSCiAgb3B0aW9uIGlzIHNwZWNpZmllZC4KICBJbiBhZGRp
dGlvbiwgdGhlc2Ugb3B0aW9ucyBvdmVycmlkZSBlYWNoIG90aGVyIGFuZCB0aGUKISB1dGlsaXR5
J3MgYWN0aW9ucyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCBvbmUgc3BlY2lmaWVkLgogIC5Q
cAogIC5ObSBDcAogIGV4aXRzIDAgb24gc3VjY2VzcywgPjAgaWYgYW4gZXJyb3Igb2NjdXJyZWQu
CioqKioqKioqKioqKioqKgoqKiogMjE2LDIyNiAqKioqCiAgLlNoIFNUQU5EQVJEUwogIFRoZQog
IC5ObSBjcAohIGNvbW1hbmQgaXMgZXhwZWN0ZWQgdG8gYmUKICAuU3QgLXAxMDAzLjIKICBjb21w
YXRpYmxlLgogIC5TaCBISVNUT1JZCiAgQQogIC5ObQohIGNvbW1hbmQgYXBwZWFyZWQgaW4KICAu
QXQgdjEgLgotLS0gMjE0LDIyNCAtLS0tCiAgLlNoIFNUQU5EQVJEUwogIFRoZQogIC5ObSBjcAoh
IHV0aWxpdHkgaXMgZXhwZWN0ZWQgdG8gYmUKICAuU3QgLXAxMDAzLjIKICBjb21wYXRpYmxlLgog
IC5TaCBISVNUT1JZCiAgQQogIC5ObQohIHV0aWxpdHkgYXBwZWFyZWQgaW4KICAuQXQgdjEgLgpk
aWZmIC1jIC1yIC91c3Ivc3JjL2Jpbi9jcC9jcC5jIC91c3IvbG9jYWwvc3JjL2Jpbi9jcC9jcC5j
CioqKiAvdXNyL3NyYy9iaW4vY3AvY3AuYwlGcmkgTWFyIDI4IDA5OjI0OjE0IDE5OTcKLS0tIC91
c3IvbG9jYWwvc3JjL2Jpbi9jcC9jcC5jCVR1ZSBGZWIgIDMgMjA6Mzk6MzkgMTk5OAoqKioqKioq
KioqKioqKioKKioqIDc5LDg2ICoqKioKICAjaW5jbHVkZSAiZXh0ZXJuLmgiCiAgCiAgI2RlZmlu
ZQlTVFJJUF9UUkFJTElOR19TTEFTSChwKSB7CQkJCQlcCiEgICAgICAgICB3aGlsZSAoKHApLnBf
ZW5kID4gKHApLnBfcGF0aCArIDEgJiYgKHApLnBfZW5kWy0xXSA9PSAnLycpCVwKISAgICAgICAg
ICAgICAgICAgKi0tKHApLnBfZW5kID0gMDsJCQkJCVwKICB9CiAgCiAgUEFUSF9UIHRvID0geyB0
by5wX3BhdGgsICIiIH07Ci0tLSA3OSw4NiAtLS0tCiAgI2luY2x1ZGUgImV4dGVybi5oIgogIAog
ICNkZWZpbmUJU1RSSVBfVFJBSUxJTkdfU0xBU0gocCkgewkJCQkJXAohIAl3aGlsZSAoKHApLnBf
ZW5kID4gKHApLnBfcGF0aCArIDEgJiYgKHApLnBfZW5kWy0xXSA9PSAnLycpCVwKISAJCSotLShw
KS5wX2VuZCA9ICdcMCc7CQkJCQlcCiAgfQogIAogIFBBVEhfVCB0byA9IHsgdG8ucF9wYXRoLCAi
IiB9OwoqKioqKioqKioqKioqKioKKioqIDkxLDk2ICoqKioKLS0tIDkxLDk3IC0tLS0KICAKICBl
bnVtIG9wIHsgRklMRV9UT19GSUxFLCBGSUxFX1RPX0RJUiwgRElSX1RPX0RORSB9OwogIAorIGlu
dCBtYWluIF9fUCgoaW50LCBjaGFyICpbXSkpOwogIGludCBjb3B5IF9fUCgoY2hhciAqW10sIGVu
dW0gb3AsIGludCkpOwogIGludCBtYXN0ZXJjbXAgX19QKChjb25zdCBGVFNFTlQgKiosIGNvbnN0
IEZUU0VOVCAqKikpOwogIAoqKioqKioqKioqKioqKioKKioqIDEyMywxMzQgKioqKgogIAkJCVJm
bGFnID0gMTsKICAJCQlicmVhazsKICAJCWNhc2UgJ2YnOgotIAkJCWZmbGFnID0gMTsKICAJCQlp
ZmxhZyA9IDA7CiAgCQkJYnJlYWs7CiAgCQljYXNlICdpJzoKISAJCQlpZmxhZyA9IDE7CiEgCQkJ
ZmZsYWcgPSAwOwogIAkJCWJyZWFrOwogIAkJY2FzZSAncCc6CiAgCQkJcGZsYWcgPSAxOwotLS0g
MTI0LDEzMyAtLS0tCiAgCQkJUmZsYWcgPSAxOwogIAkJCWJyZWFrOwogIAkJY2FzZSAnZic6CiAg
CQkJaWZsYWcgPSAwOwogIAkJCWJyZWFrOwogIAkJY2FzZSAnaSc6CiEgCQkJaWZsYWcgPSBpc2F0
dHkoZmlsZW5vKHN0ZGluKSk7CiAgCQkJYnJlYWs7CiAgCQljYXNlICdwJzoKICAJCQlwZmxhZyA9
IDE7CioqKioqKioqKioqKioqKgoqKiogMTM2LDE0MSAqKioqCi0tLSAxMzUsMTQxIC0tLS0KICAJ
CWNhc2UgJ3InOgogIAkJCXJmbGFnID0gMTsKICAJCQlicmVhazsKKyAJCWNhc2UgJz8nOgogIAkJ
ZGVmYXVsdDoKICAJCQl1c2FnZSgpOwogIAkJCWJyZWFrOwoqKioqKioqKioqKioqKioKKioqIDE3
NywxOTEgKioqKgogIAogIAkvKiBTYXZlIHRoZSB0YXJnZXQgYmFzZSBpbiAidG8iLiAqLwogIAl0
YXJnZXQgPSBhcmd2Wy0tYXJnY107CiEgCWlmIChzdHJsZW4odGFyZ2V0KSA+IE1BWFBBVEhMRU4p
CiAgCQllcnJ4KDEsICIlczogbmFtZSB0b28gbG9uZyIsIHRhcmdldCk7CiAgCSh2b2lkKXN0cmNw
eSh0by5wX3BhdGgsIHRhcmdldCk7CiAgCXRvLnBfZW5kID0gdG8ucF9wYXRoICsgc3RybGVuKHRv
LnBfcGF0aCk7CiEgICAgICAgICBpZiAodG8ucF9wYXRoID09IHRvLnBfZW5kKSB7CiAgCQkqdG8u
cF9lbmQrKyA9ICcuJzsKISAJCSp0by5wX2VuZCA9IDA7CiAgCX0KISAgICAgICAgIFNUUklQX1RS
QUlMSU5HX1NMQVNIKHRvKTsKICAJdG8udGFyZ2V0X2VuZCA9IHRvLnBfZW5kOwogIAogIAkvKiBT
ZXQgZW5kIG9mIGFyZ3VtZW50IGxpc3QgZm9yIGZ0cygzKS4gKi8KLS0tIDE3NywxOTEgLS0tLQog
IAogIAkvKiBTYXZlIHRoZSB0YXJnZXQgYmFzZSBpbiAidG8iLiAqLwogIAl0YXJnZXQgPSBhcmd2
Wy0tYXJnY107CiEgCWlmIChzdHJsZW4odGFyZ2V0KSA+PSBzaXplb2YodG8ucF9wYXRoKSkKICAJ
CWVycngoMSwgIiVzOiBuYW1lIHRvbyBsb25nIiwgdGFyZ2V0KTsKICAJKHZvaWQpc3RyY3B5KHRv
LnBfcGF0aCwgdGFyZ2V0KTsKICAJdG8ucF9lbmQgPSB0by5wX3BhdGggKyBzdHJsZW4odG8ucF9w
YXRoKTsKISAJaWYgKHRvLnBfcGF0aCA9PSB0by5wX2VuZCkgewogIAkJKnRvLnBfZW5kKysgPSAn
Lic7CiEgCQkqdG8ucF9lbmQgPSAnXDAnOwogIAl9CiEgCVNUUklQX1RSQUlMSU5HX1NMQVNIKHRv
KTsKICAJdG8udGFyZ2V0X2VuZCA9IHRvLnBfZW5kOwogIAogIAkvKiBTZXQgZW5kIG9mIGFyZ3Vt
ZW50IGxpc3QgZm9yIGZ0cygzKS4gKi8KKioqKioqKioqKioqKioqCioqKiAyNTMsMjYzICoqKioK
ICAJc3RydWN0IHN0YXQgdG9fc3RhdDsKICAJRlRTICpmdHNwOwogIAlGVFNFTlQgKmN1cnI7CiEg
CWludCBiYXNlID0gMCwgZG5lLCBubGVuLCBydmFsOwogIAljaGFyICpwLCAqdGFyZ2V0X21pZDsK
ICAKICAJaWYgKChmdHNwID0gZnRzX29wZW4oYXJndiwgZnRzX29wdGlvbnMsIG1hc3RlcmNtcCkp
ID09IE5VTEwpCiEgCQllcnIoMSwgTlVMTCk7CiAgCWZvciAocnZhbCA9IDA7IChjdXJyID0gZnRz
X3JlYWQoZnRzcCkpICE9IE5VTEw7KSB7CiAgCQlzd2l0Y2ggKGN1cnItPmZ0c19pbmZvKSB7CiAg
CQljYXNlIEZUU19OUzoKLS0tIDI1MywyNjUgLS0tLQogIAlzdHJ1Y3Qgc3RhdCB0b19zdGF0Owog
IAlGVFMgKmZ0c3A7CiAgCUZUU0VOVCAqY3VycjsKISAJaW50IGJhc2UsIGRuZSwgbmxlbiwgcnZh
bDsKICAJY2hhciAqcCwgKnRhcmdldF9taWQ7CiAgCisgCWJhc2UgPSAwOwkvKiBYWFggZ2NjIC1X
dW5pbml0aWFsaXplZCAoc2VlIGNvbW1lbnQgYmVsb3cpICovCisgCiAgCWlmICgoZnRzcCA9IGZ0
c19vcGVuKGFyZ3YsIGZ0c19vcHRpb25zLCBtYXN0ZXJjbXApKSA9PSBOVUxMKQohIAkJZXJyKDEs
IGFyZ3ZbMF0pOwogIAlmb3IgKHJ2YWwgPSAwOyAoY3VyciA9IGZ0c19yZWFkKGZ0c3ApKSAhPSBO
VUxMOykgewogIAkJc3dpdGNoIChjdXJyLT5mdHNfaW5mbykgewogIAkJY2FzZSBGVFNfTlM6Cioq
KioqKioqKioqKioqKgoqKiogMjc5LDI4NCAqKioqCi0tLSAyODEsMjk0IC0tLS0KICAgICAgICAg
ICAgICAgICAgICogc291cmNlIG5hbWUgdG8gdGhlIHRhcmdldCBuYW1lLgogICAgICAgICAgICAg
ICAgICAgKi8KICAJCWlmICh0eXBlICE9IEZJTEVfVE9fRklMRSkgeworIAkJCWlmICgoY3Vyci0+
ZnRzX25hbWVsZW4gKworIAkJCXRvLnRhcmdldF9lbmQgLSB0by5wX3BhdGggKyAxKSA+PSBzaXpl
b2YodG8ucF9wYXRoKSkgeworIAkJCQl3YXJueCgiJXMvJXM6IG5hbWUgdG9vIGxvbmcgKG5vdCBj
b3BpZWQpIiwKKyAJCQkJCXRvLnBfcGF0aCwgY3Vyci0+ZnRzX25hbWUpOworIAkJCQlydmFsID0g
MTsKKyAJCQkJY29udGludWU7CisgCQkJfQorICAKICAJCQkvKgogIAkJCSAqIE5lZWQgdG8gcmVt
ZW1iZXIgdGhlIHJvb3RzIG9mIHRyYXZlcnNhbHMgdG8gY3JlYXRlCiAgCQkJICogY29ycmVjdCBw
YXRobmFtZXMuICBJZiB0aGVyZSdzIGEgZGlyZWN0b3J5IGJlaW5nCioqKioqKioqKioqKioqKgoq
KiogMjg5LDI5NSAqKioqCiAgCQkJICogaXMgdGhlIGNhc2Ugd2hlcmUgdGhlIHRhcmdldCBleGlz
dHMuCiAgCQkJICoKICAJCQkgKiBBbHNvLCBjaGVjayBmb3IgIi4uIi4gIFRoaXMgaXMgZm9yIGNv
cnJlY3QgcGF0aAohIAkJCSAqIGNvbmNhdGVudGF0aW9uIGZvciBwYXRocyBlbmRpbmcgaW4gIi4u
IiwgZS5nLgogIAkJCSAqCWNwIC1SIC4uIC90bXAKICAJCQkgKiBQYXRocyBlbmRpbmcgaW4gIi4u
IiBhcmUgY2hhbmdlZCB0byAiLiIuICBUaGlzIGlzCiAgCQkJICogdHJpY2t5LCBidXQgc2VlbXMg
dGhlIGVhc2llc3Qgd2F5IHRvIGZpeCB0aGUgcHJvYmxlbS4KLS0tIDI5OSwzMDUgLS0tLQogIAkJ
CSAqIGlzIHRoZSBjYXNlIHdoZXJlIHRoZSB0YXJnZXQgZXhpc3RzLgogIAkJCSAqCiAgCQkJICog
QWxzbywgY2hlY2sgZm9yICIuLiIuICBUaGlzIGlzIGZvciBjb3JyZWN0IHBhdGgKISAJCQkgKiBj
b25jYXRlbmF0aW9uIGZvciBwYXRocyBlbmRpbmcgaW4gIi4uIiwgZS5nLgogIAkJCSAqCWNwIC1S
IC4uIC90bXAKICAJCQkgKiBQYXRocyBlbmRpbmcgaW4gIi4uIiBhcmUgY2hhbmdlZCB0byAiLiIu
ICBUaGlzIGlzCiAgCQkJICogdHJpY2t5LCBidXQgc2VlbXMgdGhlIGVhc2llc3Qgd2F5IHRvIGZp
eCB0aGUgcHJvYmxlbS4KKioqKioqKioqKioqKioqCioqKiAzMTUsMzIyICoqKioKICAJCQl0YXJn
ZXRfbWlkID0gdG8udGFyZ2V0X2VuZDsKICAJCQlpZiAoKnAgIT0gJy8nICYmIHRhcmdldF9taWRb
LTFdICE9ICcvJykKICAJCQkJKnRhcmdldF9taWQrKyA9ICcvJzsKISAJCQkqdGFyZ2V0X21pZCA9
IDA7CiEgCQkJaWYgKHRhcmdldF9taWQgLSB0by5wX3BhdGggKyBubGVuID4gTUFYUEFUSExFTikg
ewogIAkJCQl3YXJueCgiJXMlczogbmFtZSB0b28gbG9uZyAobm90IGNvcGllZCkiLAogIAkJCQkg
ICAgdG8ucF9wYXRoLCBwKTsKICAJCQkJcnZhbCA9IDE7Ci0tLSAzMjUsMzMzIC0tLS0KICAJCQl0
YXJnZXRfbWlkID0gdG8udGFyZ2V0X2VuZDsKICAJCQlpZiAoKnAgIT0gJy8nICYmIHRhcmdldF9t
aWRbLTFdICE9ICcvJykKICAJCQkJKnRhcmdldF9taWQrKyA9ICcvJzsKISAJCQkqdGFyZ2V0X21p
ZCA9ICdcMCc7CiEgCQkJaWYgKHRhcmdldF9taWQgLSB0by5wX3BhdGggKyBubGVuID49CiEgCQkJ
CXNpemVvZih0by5wX3BhdGgpKSB7CiAgCQkJCXdhcm54KCIlcyVzOiBuYW1lIHRvbyBsb25nIChu
b3QgY29waWVkKSIsCiAgCQkJCSAgICB0by5wX3BhdGgsIHApOwogIAkJCQlydmFsID0gMTsKKioq
KioqKioqKioqKioqCioqKiAzMjQsMzMwICoqKioKICAJCQl9CiAgCQkJKHZvaWQpc3RybmNhdCh0
YXJnZXRfbWlkLCBwLCBubGVuKTsKICAJCQl0by5wX2VuZCA9IHRhcmdldF9taWQgKyBubGVuOwoh
IAkJCSp0by5wX2VuZCA9IDA7CiAgCQkJU1RSSVBfVFJBSUxJTkdfU0xBU0godG8pOwogIAkJfQog
IAotLS0gMzM1LDM0MSAtLS0tCiAgCQkJfQogIAkJCSh2b2lkKXN0cm5jYXQodGFyZ2V0X21pZCwg
cCwgbmxlbik7CiAgCQkJdG8ucF9lbmQgPSB0YXJnZXRfbWlkICsgbmxlbjsKISAJCQkqdG8ucF9l
bmQgPSAnXDAnOwogIAkJCVNUUklQX1RSQUlMSU5HX1NMQVNIKHRvKTsKICAJCX0KICAKKioqKioq
KioqKioqKioqCioqKiAzODMsMzkwICoqKioKICAJCQkvKgogIAkJCSAqIElmIG5vdCAtcCBhbmQg
ZGlyZWN0b3J5IGRpZG4ndCBleGlzdCwgc2V0IGl0IHRvIGJlCiAgCQkJICogdGhlIHNhbWUgYXMg
dGhlIGZyb20gZGlyZWN0b3J5LCB1bW9kaWZpZWQgYnkgdGhlCiEgICAgICAgICAgICAgICAgICAg
ICAgICAgICogdW1hc2s7IGFyZ3VhYmx5IHdyb25nLCBidXQgaXQncyBiZWVuIHRoYXQgd2F5CiEg
ICAgICAgICAgICAgICAgICAgICAgICAgICogZm9yZXZlci4KICAJCQkgKi8KICAJCQlpZiAocGZs
YWcgJiYgc2V0ZmlsZShjdXJyLT5mdHNfc3RhdHAsIDApKQogIAkJCQlydmFsID0gMTsKLS0tIDM5
NCw0MDEgLS0tLQogIAkJCS8qCiAgCQkJICogSWYgbm90IC1wIGFuZCBkaXJlY3RvcnkgZGlkbid0
IGV4aXN0LCBzZXQgaXQgdG8gYmUKICAJCQkgKiB0aGUgc2FtZSBhcyB0aGUgZnJvbSBkaXJlY3Rv
cnksIHVtb2RpZmllZCBieSB0aGUKISAJCQkgKiB1bWFzazsgYXJndWFibHkgd3JvbmcsIGJ1dCBp
dCdzIGJlZW4gdGhhdCB3YXkKISAJCQkgKiBmb3JldmVyLgogIAkJCSAqLwogIAkJCWlmIChwZmxh
ZyAmJiBzZXRmaWxlKGN1cnItPmZ0c19zdGF0cCwgMCkpCiAgCQkJCXJ2YWwgPSAxOwpPbmx5IGlu
IC91c3Ivc3JjL2Jpbi9jcDogY3AubwpkaWZmIC1jIC1yIC91c3Ivc3JjL2Jpbi9jcC9leHRlcm4u
aCAvdXNyL2xvY2FsL3NyYy9iaW4vY3AvZXh0ZXJuLmgKKioqIC91c3Ivc3JjL2Jpbi9jcC9leHRl
cm4uaAlTYXQgRmViIDIyIDA4OjAxOjMzIDE5OTcKLS0tIC91c3IvbG9jYWwvc3JjL2Jpbi9jcC9l
eHRlcm4uaAlUdWUgRmViICAzIDE5OjU5OjAxIDE5OTgKKioqKioqKioqKioqKioqCioqKiAxMSwx
NyAqKioqCiAgICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgICogMy4gQWxs
IGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlz
IHNvZnR3YXJlCiEgICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2Vt
ZW50OgogICAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl
IFVuaXZlcnNpdHkgb2YKICAgKglDYWxpZm9ybmlhLCBCZXJrZWxleSBhbmQgaXRzIGNvbnRyaWJ1
dG9ycy4KICAgKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUg
bmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotLS0gMTEsMTcgLS0tLQogICAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKICAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg
bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohICAqICAgIG11c3Qg
ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgogICAqCVRoaXMgcHJvZHVjdCBp
bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YKICAgKglDYWxp
Zm9ybmlhLCBCZXJrZWxleSBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4KICAgKiA0LiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cwoqKioqKioqKioqKioqKioKKioqIDM2LDQzICoqKioKICAKICB0eXBlZGVmIHN0cnVjdCB7CiAg
CWNoYXIgKnBfZW5kOwkJCS8qIHBvaW50ZXIgdG8gTlVMTCBhdCBlbmQgb2YgcGF0aCAqLwohIAlj
aGFyICp0YXJnZXRfZW5kOyAgICAgICAgICAgICAgIC8qIHBvaW50ZXIgdG8gZW5kIG9mIHRhcmdl
dCBiYXNlICovCiEgCWNoYXIgcF9wYXRoW01BWFBBVEhMRU4gKyAxXTsJLyogcG9pbnRlciB0byB0
aGUgc3RhcnQgb2YgYSBwYXRoICovCiAgfSBQQVRIX1Q7CiAgCiAgZXh0ZXJuIFBBVEhfVCB0bzsK
LS0tIDM2LDQzIC0tLS0KICAKICB0eXBlZGVmIHN0cnVjdCB7CiAgCWNoYXIgKnBfZW5kOwkJCS8q
IHBvaW50ZXIgdG8gTlVMTCBhdCBlbmQgb2YgcGF0aCAqLwohIAljaGFyICp0YXJnZXRfZW5kOwkJ
LyogcG9pbnRlciB0byBlbmQgb2YgdGFyZ2V0IGJhc2UgKi8KISAJY2hhciBwX3BhdGhbTUFYUEFU
SExFTl07CS8qIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIGEgcGF0aCAqLwogIH0gUEFUSF9UOwog
IAogIGV4dGVybiBQQVRIX1QgdG87CioqKioqKioqKioqKioqKgoqKiogNTIsNTYgKioqKgotLS0g
NTIsNTcgLS0tLQogIGludAljb3B5X2xpbmsgX19QKChGVFNFTlQgKiwgaW50KSk7CiAgaW50CWNv
cHlfc3BlY2lhbCBfX1AoKHN0cnVjdCBzdGF0ICosIGludCkpOwogIGludAlzZXRmaWxlIF9fUCgo
c3RydWN0IHN0YXQgKiwgaW50KSk7CisgaW50CXNldGxpbmsgX19QKChzdHJ1Y3Qgc3RhdCAqKSk7
CiAgdm9pZAl1c2FnZSBfX1AoKHZvaWQpKTsKICBfX0VORF9ERUNMUwpkaWZmIC1jIC1yIC91c3Iv
c3JjL2Jpbi9jcC91dGlscy5jIC91c3IvbG9jYWwvc3JjL2Jpbi9jcC91dGlscy5jCioqKiAvdXNy
L3NyYy9iaW4vY3AvdXRpbHMuYwlTYXQgSmFuIDE3IDA3OjM5OjI5IDE5OTgKLS0tIC91c3IvbG9j
YWwvc3JjL2Jpbi9jcC91dGlscy5jCVR1ZSBGZWIgIDMgMjA6MTU6NTMgMTk5OAoqKioqKioqKioq
KioqKioKKioqIDExLDE3ICoqKioKICAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KICAgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg
b3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKISAgKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2lu
ZyBhY2tub3dsZWRnZW1lbnQ6CiAgICoJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl
dmVsb3BlZCBieSB0aGUgVW5pdmVyc2l0eSBvZgogICAqCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFu
ZCBpdHMgY29udHJpYnV0b3JzLgogICAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZl
cnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0tLSAxMSwxNyAtLS0tCiAg
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQogICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgICogMy4gQWxsIGFkdmVydGlz
aW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJl
CiEgICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CiAgICoJ
VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgVW5pdmVyc2l0
eSBvZgogICAqCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0b3JzLgogICAq
IDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBp
dHMgY29udHJpYnV0b3JzCioqKioqKioqKioqKioqKgoqKiogMTI2LDEzMiAqKioqCiAgCWlmIChm
cy0+c3Rfc2l6ZSA8PSA4ICogMTA0ODU3NikgewogIAkJaWYgKChwID0gbW1hcChOVUxMLCAoc2l6
ZV90KWZzLT5zdF9zaXplLCBQUk9UX1JFQUQsCiAgCQkgICAgTUFQX1NIQVJFRCwgZnJvbV9mZCwg
KG9mZl90KTApKSA9PSBNQVBfRkFJTEVEKSB7CiEgCQkJd2FybigiJXMiLCBlbnRwLT5mdHNfcGF0
aCk7CiAgCQkJcnZhbCA9IDE7CiAgCQl9IGVsc2UgewogIAkJCWZvciAoYnVmcCA9IHAsIHdyZXNp
ZCA9IGZzLT5zdF9zaXplOyA7Ci0tLSAxMjYsMTMyIC0tLS0KICAJaWYgKGZzLT5zdF9zaXplIDw9
IDggKiAxMDQ4NTc2KSB7CiAgCQlpZiAoKHAgPSBtbWFwKE5VTEwsIChzaXplX3QpZnMtPnN0X3Np
emUsIFBST1RfUkVBRCwKICAJCSAgICBNQVBfU0hBUkVELCBmcm9tX2ZkLCAob2ZmX3QpMCkpID09
IE1BUF9GQUlMRUQpIHsKISAJCQl3YXJuKCJtbWFwOiAlcyIsIGVudHAtPmZ0c19wYXRoKTsKICAJ
CQlydmFsID0gMTsKICAJCX0gZWxzZSB7CiAgCQkJZm9yIChidWZwID0gcCwgd3Jlc2lkID0gZnMt
PnN0X3NpemU7IDsKKioqKioqKioqKioqKioqCioqKiAyMjAsMjI2ICoqKioKICAJCXdhcm4oInN5
bWxpbms6ICVzIiwgbGluayk7CiAgCQlyZXR1cm4gKDEpOwogIAl9CiEgCXJldHVybiAoMCk7CiAg
fQogIAogIGludAotLS0gMjIwLDIyNiAtLS0tCiAgCQl3YXJuKCJzeW1saW5rOiAlcyIsIGxpbmsp
OwogIAkJcmV0dXJuICgxKTsKICAJfQohIAlyZXR1cm4gKHBmbGFnID8gc2V0bGluayhwLT5mdHNf
c3RhdHApIDogMCk7CiAgfQogIAogIGludAoqKioqKioqKioqKioqKioKKioqIDI5MiwzMTEgKioq
KgogIAkJd2FybigiY2hvd246ICVzIiwgdG8ucF9wYXRoKTsKICAJCXJ2YWwgPSAxOwogIAl9CiAg
CiEgCWlmIChmZCA/CiEgCSAgICBmY2hmbGFncyhmZCwgZnMtPnN0X2ZsYWdzKSA6IGNoZmxhZ3Mo
dG8ucF9wYXRoLCBmcy0+c3RfZmxhZ3MpKSB7CiEgCQl3YXJuKCJjaGZsYWdzOiAlcyIsIHRvLnBf
cGF0aCk7CiEgCQlydmFsID0gMTsKICAJfQohIAlyZXR1cm4gKHJ2YWwpOwogIH0KICAKICB2b2lk
CiAgdXNhZ2UoKQogIHsKICAJKHZvaWQpZnByaW50ZihzdGRlcnIsICIlc1xuJXNcbiIsCiEgInVz
YWdlOiBjcCBbLVIgWy1IIHwgLUwgfCAtUF1dIFstZiB8IC1pXSBbLXBdIHNyYyB0YXJnZXQiLAoh
ICIgICAgICAgY3AgWy1SIFstSCB8IC1MIHwgLVBdXSBbLWYgfCAtaV0gWy1wXSBzcmMxIC4uLiBz
cmNOIGRpcmVjdG9yeSIpOwogIAlleGl0KDEpOwogIH0KLS0tIDI5MiwzMzQgLS0tLQogIAkJd2Fy
bigiY2hvd246ICVzIiwgdG8ucF9wYXRoKTsKICAJCXJ2YWwgPSAxOwogIAl9CisgCS8qCisgCSAq
IFhYWAorIAkgKiBORlMgZG9lc24ndCBzdXBwb3J0IGNoZmxhZ3M7IGlnbm9yZSBlcnJvcnMgdW5s
ZXNzCisgCSAqIHRoZXJlJ3MgcmVhc29uIHRvIGJlbGlldmUgd2UncmUgbG9zaW5nIGJpdHMuCisg
CSAqIChOb3RlLCB0aGlzIHN0aWxsIHdvbid0IGJlIHJpZ2h0IGlmIHRoZSBzZXJ2ZXIKKyAJICog
c3VwcG9ydHMgZmxhZ3MgYW5kIHdlIHdlcmUgdHJ5aW5nIHRvICpyZW1vdmUqIGZsYWdzCisgCSAq
IG9uIGEgZmlsZSB0aGF0IHdlIGNvcGllZCwgaS5lLiwgdGhhdCB3ZSBkaWRuJ3QgY3JlYXRlLikK
KyAJICovCisgCWVycm5vID0gMDsKKyAJaWYgKGZkID8gZmNoZmxhZ3MoZmQsIGZzLT5zdF9mbGFn
cykgOgorIAkJY2hmbGFncyh0by5wX3BhdGgsIGZzLT5zdF9mbGFncykpCisgCQkJaWYgKGVycm5v
ICE9IEVPUE5PVFNVUFAgfHwgZnMtPnN0X2ZsYWdzICE9IDApIHsKKyAJCQkJd2FybigiY2hmbGFn
czogJXMiLCB0by5wX3BhdGgpOworIAkJCQlydmFsID0gMTsKKyAJCQl9CisgCXJldHVybiAocnZh
bCk7CisgfQogIAohIAohIGludAohIHNldGxpbmsoZnMpCiEgCXJlZ2lzdGVyIHN0cnVjdCBzdGF0
ICpmczsKISB7CiEgCWlmIChsY2hvd24odG8ucF9wYXRoLCBmcy0+c3RfdWlkLCBmcy0+c3RfZ2lk
KSkgewohIAkJaWYgKGVycm5vICE9IEVQRVJNKSB7CiEgCQkJd2FybigibGNob3duOiAlcyIsIHRv
LnBfcGF0aCk7CiEgCQkJcmV0dXJuICgxKTsKISAJCX0KICAJfQohIAlyZXR1cm4gKDApOwogIH0K
ICAKICB2b2lkCiAgdXNhZ2UoKQogIHsKICAJKHZvaWQpZnByaW50ZihzdGRlcnIsICIlc1xuJXNc
biIsCiEgCSJ1c2FnZTogY3AgWy1SIFstSCB8IC1MIHwgLVBdXSBbLWZpcF0gc3JjIHRhcmdldCIs
CiEgCSIgICAgICAgY3AgWy1SIFstSCB8IC1MIHwgLVBdXSBbLWZpcF0gc3JjMSAuLi4gc3JjTiBk
aXJlY3RvcnkiKTsKICAJZXhpdCgxKTsKICB9Ck9ubHkgaW4gL3Vzci9zcmMvYmluL2NwOiB1dGls
cy5vCg==

------=_NextPart_000_003A_01BD34D9.4174C080--


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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?003d01bd350b$8d872a80$016f6f6f>