public inbox for [email protected]  
help / color / mirror / Atom feed
Date: Sat Mar 10 20:19:13 2012 +0200

    Add support for renaming constraints

    reviewed by Josh Berkus and Dimitri Fontaine
So I don't think we should change that behaviour.

Instead I chose to fix both the problems by
1. In AdjustNotNullInheritance(), if a NOT NULL constraint is
converted to local and the user has specified a name for it (ALTER
TABLE ... ADD CONSTRAINT ... NOT NULL ..), change the name alongwith
setting conislocal. The user who specified a non-default name in ADD
CONSTRAINT would expect the "local" constraint to be named
accordingly. If a local constraint is ADDed again with a different
name, right now the patch ignores the new name but that could be
changed to throw an error similar to ALTER TABLE ... RENAME CONSTAINT.
2. In determineNotNullFlags(), if a NOT NULL constraint is both
inherited and local, preserve its name even if it's default. That way,
it will be dumped as ALTER TABLE ... ADD CONSTRAINT ... NOT NULL ...
instead of ALTER TABLE ... ALTER COLUMN ... SET NOT NULL. An exception
to this is a local NOT NULL column with default name for NOT NULL
constraint. Such NOT NULL constraints are specified in the CREATE
TABLE ... INHERITS .. command itself. That way they preserve their
default name.

The first change will preserve the given name of the child constraint.
Both changes together will preserve the default name of the child
constraint.
See the patch. I have also added some tests.

Alternate approach which I haven't tried, but did consider and left aside.
1. Allow RENAME CONSTAINT on a local constaint even if it's inherited.
Given that the behaviour is 13 years old, I am hesitant to change it.
2. Allow local and inherited NOT NULL constraints to co-exist
separately (similar to primary key constraint). I am not sure why we
don't allow this behaviour. AdjustNotNullInheritance() doesn't explain
the reason.

--
Best Wishes,
Ashutosh Bapat

--0000000000006d75d70627e367cf
Content-Type: text/x-patch; charset="US-ASCII";
	name="0001-Dump-and-restore-of-inherited-and-local-chi-20241127.patch"
Content-Disposition: attachment;
	filename="0001-Dump-and-restore-of-inherited-and-local-chi-20241127.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_m3zt8wob0>
X-Attachment-Id: f_m3zt8wob0

RnJvbSAxMTZjZjUwMTdjYTc0NTNkNzVlODNjMmQ0MjRhOGMwYjYwMDgzODg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt
YWlsLmNvbT4KRGF0ZTogV2VkLCAyNyBOb3YgMjAyNCAxNjoyMjo0NCArMDUzMApTdWJqZWN0OiBb
UEFUQ0hdIER1bXAgYW5kIHJlc3RvcmUgb2YgaW5oZXJpdGVkIGFuZCBsb2NhbCBjaGlsZCBOT1Qg
TlVMTAogY29uc3RyYWludHMKCkZpeGVzIHR3byBpc3N1ZXMgZGVzY3JpYmVkIGJlbG93OiAxLiBB
IGNoaWxkIHRhYmxlIHdpbGwgaW5oZXJpdCBOT1QgTlVMTApjb25zdHJhaW50cyBmcm9tIHRoZSBw
YXJlbnQuIEJ1dCBpdCdzIGFsbG93ZWQgdG8gYWRkIGxvY2FsIE5PVCBOVUxMIGNvbnN0cmFpbnRz
Cm9uIHRoZSBzYW1lIGNvbHVtbi4gIElmIGEgdXNlciBzcGVjaWZpZXMgYSBuYW1lIHdoaWxlIGFk
ZGluZyBzdWNoIGEgY29uc3RyYWludAppdCB3aWxsIGJlIGlnbm9yZWQuIFRoYXQgbWF5IG5vdCBi
ZSBpbnRlbmRlZC4gQnV0IGlnbm9yaW5nIHRoZSBnaXZlbiBuYW1lIGhhcyBhbgppbGwtZWZmZWN0
IG9uIGR1bXAgYW5kIHJlc3RvcmUgb2Ygc3VjaCBhIGNvbnN0cmFpbnQuICBBIG5hbWVkIE5PVCBO
VUxMCmNvbnN0cmFpbnQgd2hpY2ggaXMgaW5oZXJpdGVkIGFuZCBpcyBhbHNvIGxvY2FsIHdpbGwg
YmUgZHVtcGVkIGFzIEFMVEVSIFRBQkxFCi4uLiBBREQgQ09OU1RSQUlOVCAuLi4gY29tbWFuZCBz
cGVjaWZ5aW5nIGl0cyBuYW1lLiBJZiB3ZSBpZ25vcmUgdGhpcyBuYW1lLCBpdAp3aWxsIG5vdCBi
ZSByZXN0b3JlZCBhbmQgdGh1cyBsb3N0LiBIZW5jZSB3aGlsZSBBRERpbmcgYSBsb2NhbCBOT1Qg
TlVMTApjb25zdHJhaW50IG9uIHRoZSBjaGlsZCB0YWJsZSwgY2hhbmdlIHRoZSBuYW1lIG9mIHRo
ZSBpbmhlcml0ZWQgY29uc3RyYWludCwgaWYKb25lIGV4aXN0cy4KCjIuIENvbnNpZGVyIGEgcGFy
ZW50IHdpdGggTk9UIE5VTEwgY29sMS4gSWYgYSBjaGlsZCBpcyBjcmVhdGVkIHdpdGggQ1JFQVRF
IFRBQkxFCmNoaWxkIChOT1QgTlVMTCBjb2wxKSBJTkhFUklUUyAocGFyZW50KSwgY29sMSB3b3Vs
ZCBiZSBhbiBpbmhlcml0ZWQgY29sdW1uIHdpdGgKYSBsb2NhbCBhcyB3ZWxsIGFzIGluaGVyaXRl
ZCBOT1QgTlVMTCBjb25zdHJhaW50IHdpdGggdGhlIGRlZmF1bHQgbmFtZQpjb250YWluaW5nIHRo
ZSBuYW1lIG9mIHRoZSBjaGlsZCB0YWJsZSBpbiBpdC4gIFdlIHdpbGwgZHVtcCAiQ1JFQVRFIFRB
QkxFCmNoaWxkKCkgSU5IRVJJVFMgcGFyZW50IiB0byBjcmVhdGUgdGhlIGNoaWxkIHRhYmxlLiBU
aGlzIHdpbGwgYWRkIHRoZSBpbmhlcml0ZWQKY29uc3RyYWludCBvbiBjaGlsZCB3aXRoIG5hbWUg
b2YgdGhlIHBhcmVudCBjb25zdHJhaW50LiBUbyB0dXJuIGl0IGludG8gYSBsb2NhbApjb25zdHJh
aW50IHdlIHdpbGwgZHVtcCAiQUxURVIgVEFCTEUgY2hpbGQgQUxURVIgQ09MVU1OIGNvbDEgU0VU
IE5PVCBOVUxMIi4gVGhpcwp3aWxsIG5vdCByZXN0b3JlIHRoZSBvcmlnaW5hbCBuYW1lIG9mIHRo
ZSBjb25zdHJhaW50LiBIZW5jZSBpbnN0ZWFkIG9mIGR1bXBpbmcKQUxURVIgVEFCTEUgLi4uIEFM
VEVSIENPTFVNTiwgd2UgZHVtcCBBTFRFUiBUQUJMRSAuLi4gQUREIENPTlNUUkFJTlQgd2l0aCB0
aGUKY2hpbGQncyBkZWZhdWx0IG5hbWUuIFRoaXMgd291bGQgcHJlc2VydmUgdGhlIGNoaWxkJ3Mg
ZGVmYXVsdCBuYW1lIGFjcm9zcyBkdW1wCmFuZCByZXN0b3JlLgoKQXV0aG9yOiBBc2h1dG9zaCBC
YXBhdApEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2Zs
YXQvQ0FFeEhXNXRiZGdBS0RmcWpESi03Rms2UEp0SGc4RDR6VUY2RlE0SDJQcTh6SzM4Tnl3JTQw
bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAg
ICAgICB8IDEyICsrLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAg
IHwgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jICAgICAgIHwgNzYg
KysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j
ICAgICAgICAgIHwgMTIgKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyAgICAg
ICAgICAgfCAxMiArKy0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAg
ICB8IDYxICsrKysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJh
aW50LmggICAgICAgfCAgNSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50
cy5vdXQgfCA0MSArKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRz
LnNxbCAgICAgIHwgMTcgKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyks
IDUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5j
IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggMDAzYWY0YmYyMWMuLjEyZDQ0MDIw
MGI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFj
a2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtMjU2MywxMCArMjU2MywxMiBAQCBBZGRSZWxhdGlvbk5l
d0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAogCQkJLyoKIAkJCSAqIElmIHRoZSBjb2x1bW4g
YWxyZWFkeSBoYXMgYSBub3QtbnVsbCBjb25zdHJhaW50LCB3ZSBkb24ndCB3YW50Ci0JCQkgKiB0
byBhZGQgYW5vdGhlciBvbmU7IGp1c3QgYWRqdXN0IGluaGVyaXRhbmNlIHN0YXR1cyBhcyBuZWVk
ZWQuCisJCQkgKiB0byBhZGQgYW5vdGhlciBvbmU7IGp1c3QgYWRqdXN0IGluaGVyaXRhbmNlIHN0
YXR1cyBhbmQgdGhlCisJCQkgKiBjb25zdHJhaW50IG5hbWUgYXMgbmVlZGVkLgogCQkJICovCiAJ
CQlpZiAoQWRqdXN0Tm90TnVsbEluaGVyaXRhbmNlKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgY29s
bnVtLAotCQkJCQkJCQkJCSBpc19sb2NhbCwgY2RlZi0+aXNfbm9faW5oZXJpdCkpCisJCQkJCQkJ
CQkJIGlzX2xvY2FsLCBjZGVmLT5pc19ub19pbmhlcml0LAorCQkJCQkJCQkJCSBjZGVmLT5jb25u
YW1lLCAmbm5uYW1lcykpCiAJCQkJY29udGludWU7CiAKIAkJCS8qCkBAIC0yNTc1LDkgKzI1Nzcs
OSBAQCBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAkJCSAqLwogCQkJ
aWYgKGNkZWYtPmNvbm5hbWUpCiAJCQl7Ci0JCQkJaWYgKENvbnN0cmFpbnROYW1lSXNVc2VkKENP
TlNUUkFJTlRfUkVMQVRJT04sCi0JCQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKLQkJ
CQkJCQkJCQkgY2RlZi0+Y29ubmFtZSkpCisJCQkJaWYgKE9pZElzVmFsaWQoQ29uc3RyYWludE5h
bWVJc1VzZWQoQ09OU1RSQUlOVF9SRUxBVElPTiwKKwkJCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJl
bGlkKHJlbCksCisJCQkJCQkJCQkJCQkJY2RlZi0+Y29ubmFtZSkpKQogCQkJCQllcmVwb3J0KEVS
Uk9SLAogCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKIAkJCQkJCQll
cnJtc2coImNvbnN0cmFpbnQgXCIlc1wiIGZvciByZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlz
dHMiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tl
bmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGY5YmI3MjFjNWZlLi45YTJhOGVhZWYyNyAxMDA2NDQK
LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs
b2cvaW5kZXguYwpAQCAtOTAxLDggKzkwMSw4IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFw
UmVsYXRpb24sCiAJfQogCiAJaWYgKChmbGFncyAmIElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlO
VCkgIT0gMCAmJgotCQlDb25zdHJhaW50TmFtZUlzVXNlZChDT05TVFJBSU5UX1JFTEFUSU9OLCBo
ZWFwUmVsYXRpb25JZCwKLQkJCQkJCQkgaW5kZXhSZWxhdGlvbk5hbWUpKQorCQlPaWRJc1ZhbGlk
KENvbnN0cmFpbnROYW1lSXNVc2VkKENPTlNUUkFJTlRfUkVMQVRJT04sIGhlYXBSZWxhdGlvbklk
LAorCQkJCQkJCQkJCWluZGV4UmVsYXRpb25OYW1lKSkpCiAJewogCQkvKgogCQkgKiBJTkRFWF9D
UkVBVEVfSUZfTk9UX0VYSVNUUyBkb2VzIG5vdCBhcHBseSBoZXJlLCBzaW5jZSB0aGUKZGlmZiAt
LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQv
Y2F0YWxvZy9wZ19jb25zdHJhaW50LmMKaW5kZXggOWMwNWE5OGQyOGMuLjA1OGM0ZDVhYjI4IDEw
MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYworKysgYi9zcmMv
YmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwpAQCAtMzk2LDE3ICszOTYsMjAgQEAgQ3Jl
YXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogICogd2hldGhl
ciBhbiBhdXRvLWdlbmVyYXRlZCBuYW1lIGlzIE9LOiBoZXJlLCB3ZSB3aWxsIGFsbG93IGl0IHVu
bGVzcyB0aGVyZQogICogaXMgYW4gaWRlbnRpY2FsIGNvbnN0cmFpbnQgbmFtZSBpbiB1c2UgKm9u
IHRoZSBzYW1lIG9iamVjdCouCiAgKgorICogUmV0dXJucyB0aGUgT2lkIG9mIGNvbnN0cmFpbnQg
d2l0aCBtYXRjaGluZyBuYW1lLiBJbnZhbGlkT2lkIGlmIG5vbmUgZXhpc3RzLgorICoKICAqIE5C
OiBDYWxsZXIgc2hvdWxkIGhvbGQgZXhjbHVzaXZlIGxvY2sgb24gdGhlIGdpdmVuIG9iamVjdCwg
ZWxzZQogICogdGhpcyB0ZXN0IGNhbiBiZSBmb29sZWQgYnkgY29uY3VycmVudCBhZGRpdGlvbnMu
CiAgKi8KLWJvb2wKK09pZAogQ29uc3RyYWludE5hbWVJc1VzZWQoQ29uc3RyYWludENhdGVnb3J5
IGNvbkNhdCwgT2lkIG9iaklkLAogCQkJCQkgY29uc3QgY2hhciAqY29ubmFtZSkKIHsKLQlib29s
CQlmb3VuZDsKKwlPaWQJCQlyZXN1bHQgPSBJbnZhbGlkT2lkOwogCVJlbGF0aW9uCWNvbkRlc2M7
CiAJU3lzU2NhbkRlc2MgY29uc2NhbjsKIAlTY2FuS2V5RGF0YSBza2V5WzNdOworCUhlYXBUdXBs
ZQl0dXA7CiAKIAljb25EZXNjID0gdGFibGVfb3BlbihDb25zdHJhaW50UmVsYXRpb25JZCwgQWNj
ZXNzU2hhcmVMb2NrKTsKIApAQCAtNDI5LDEyICs0MzIsMTQgQEAgQ29uc3RyYWludE5hbWVJc1Vz
ZWQoQ29uc3RyYWludENhdGVnb3J5IGNvbkNhdCwgT2lkIG9iaklkLAogCQkJCQkJCQkgdHJ1ZSwg
TlVMTCwgMywgc2tleSk7CiAKIAkvKiBUaGVyZSBjYW4gYmUgYXQgbW9zdCBvbmUgbWF0Y2hpbmcg
cm93ICovCi0JZm91bmQgPSAoSGVhcFR1cGxlSXNWYWxpZChzeXN0YWJsZV9nZXRuZXh0KGNvbnNj
YW4pKSk7CisJdHVwID0gc3lzdGFibGVfZ2V0bmV4dChjb25zY2FuKTsKKwlpZiAoSGVhcFR1cGxl
SXNWYWxpZCh0dXApKQorCQlyZXN1bHQgPSAoKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNU
KHR1cCkpLT5vaWQ7CiAKIAlzeXN0YWJsZV9lbmRzY2FuKGNvbnNjYW4pOwogCXRhYmxlX2Nsb3Nl
KGNvbkRlc2MsIEFjY2Vzc1NoYXJlTG9jayk7CiAKLQlyZXR1cm4gZm91bmQ7CisJcmV0dXJuIHJl
c3VsdDsKIH0KIAogLyoKQEAgLTcxOSwxMCArNzI0LDE2IEBAIGV4dHJhY3ROb3ROdWxsQ29sdW1u
KEhlYXBUdXBsZSBjb25zdHJUdXApCiAgKiBjb25pc2xvY2FsL2NvbmluaGNvdW50IGFuZCByZXR1
cm4gdHJ1ZS4KICAqIEluIHRoZSBsYXR0ZXIgY2FzZSwgaWYgaXNfbG9jYWwgaXMgdHJ1ZSB3ZSBm
bGlwIGNvbmlzbG9jYWwgdHJ1ZSwgb3IgZG8KICAqIG5vdGhpbmcgaWYgaXQncyBhbHJlYWR5IHRy
dWU7IG90aGVyd2lzZSB3ZSBpbmNyZW1lbnQgY29uaW5oY291bnQgYnkgMS4KKyAqCisgKiBBIHVz
ZXIgd291bGQgZXhwZWN0IHRoZSBub3ctZmxpcHBlZC10by1sb2NhbCBjb25zdHJhaW50IHRvIGJl
IHJlbmFtZWQgaWYgdGhleQorICogaGF2ZSBwcm92aWRlZCBhIG5hbWUgd2hpbGUgQUREaW5nIHRo
ZSBjb25zdHJhaW50LiBUaGlzIGlzIHNpbWlsYXIgdG8gaG93CisgKiBDUkVBVEUgVEFCTEUgLi4u
IElOSEVSSVQgd291bGQgYmVoYXZlLCBpZiB1c2VyIHByb3ZpZGVkIGEgbmFtZSBmb3IgYSBsb2Nh
bAorICogY29uc3RyYWludCwgYmVpbmcgY3JlYXRlZCwgd2hpY2ggd2lsbCBhbHNvIGJlIGluaGVy
aXRlZC4KICAqLwogYm9vbAogQWRqdXN0Tm90TnVsbEluaGVyaXRhbmNlKE9pZCByZWxpZCwgQXR0
ck51bWJlciBhdHRudW0sCi0JCQkJCQkgYm9vbCBpc19sb2NhbCwgYm9vbCBpc19ub19pbmhlcml0
KQorCQkJCQkJIGJvb2wgaXNfbG9jYWwsIGJvb2wgaXNfbm9faW5oZXJpdCwKKwkJCQkJCSBjaGFy
ICpjb25uYW1lLCBMaXN0ICoqbm5uYW1lcykKIHsKIAlIZWFwVHVwbGUJdHVwOwogCkBAIC03MzIs
NiArNzQzLDggQEAgQWRqdXN0Tm90TnVsbEluaGVyaXRhbmNlKE9pZCByZWxpZCwgQXR0ck51bWJl
ciBhdHRudW0sCiAJCVJlbGF0aW9uCXBnX2NvbnN0cmFpbnQ7CiAJCUZvcm1fcGdfY29uc3RyYWlu
dCBjb25mb3JtOwogCQlib29sCQljaGFuZ2VkID0gZmFsc2U7CisJCU5hbWVEYXRhCW9sZG5hbWU7
CisJCWJvb2wJCXJlbmFtZWQgPSBmYWxzZTsKIAogCQlwZ19jb25zdHJhaW50ID0gdGFibGVfb3Bl
bihDb25zdHJhaW50UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAJCWNvbmZvcm0gPSAo
Rm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QodHVwKTsKQEAgLTc1OCwxMiArNzcxLDUzIEBA
IEFkanVzdE5vdE51bGxJbmhlcml0YW5jZShPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAog
CQllbHNlIGlmICghY29uZm9ybS0+Y29uaXNsb2NhbCkKIAkJewogCQkJY29uZm9ybS0+Y29uaXNs
b2NhbCA9IHRydWU7CisKKwkJCWlmIChjb25uYW1lKQorCQkJeworCQkJCU9pZAkJCXVzZWRfY29u
ID0gQ29uc3RyYWludE5hbWVJc1VzZWQoQ09OU1RSQUlOVF9SRUxBVElPTiwKKwkJCQkJCQkJCQkJ
CQkJCXJlbGlkLCBjb25uYW1lKTsKKworCQkJCWlmICghT2lkSXNWYWxpZCh1c2VkX2NvbikpCisJ
CQkJeworCQkJCQkvKgorCQkJCQkgKiBObyBjb25zdHJhaW50IHdpdGggdGhlIHNhbWUgbmFtZSBl
eGlzdHMsIG5vdCBldmVuIHRoaXMKKwkJCQkJICogb25lLiBTYWZlIHRvIHJlbmFtZSBpdCB0byB0
aGUgZ2l2ZW4gbmFtZS4KKwkJCQkJICovCisJCQkJCUFzc2VydChuYW1lc3RyY21wKCZjb25mb3Jt
LT5jb25uYW1lLCBjb25uYW1lKSAhPSAwKTsKKwkJCQkJbmFtZXN0cmNweSgmb2xkbmFtZSwgTmFt
ZVN0cihjb25mb3JtLT5jb25uYW1lKSk7CisJCQkJCW5hbWVzdHJjcHkoJmNvbmZvcm0tPmNvbm5h
bWUsIGNvbm5hbWUpOworCQkJCQlyZW5hbWVkID0gdHJ1ZTsKKwkJCQkJKm5ubmFtZXMgPSBsYXBw
ZW5kKCpubm5hbWVzLCBjb25uYW1lKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAodXNlZF9jb24gIT0g
Y29uZm9ybS0+b2lkKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09E
RV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJCQllcnJtc2coImNvbnN0cmFpbnQgXCIlc1wiIGZv
ciByZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLAorCQkJCQkJCQkgICBjb25uYW1lLCBn
ZXRfcmVsX25hbWUocmVsaWQpKSk7CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICog
VGhlIGdpdmVuIG5hbWUgaXMgc2FtZSBhcyB0aGUgZXhpc3RpbmcgbmFtZSBvZiB0aGUKKwkJCQkJ
ICogY29uc3RyYWludC4gTm90aGluZyB0byBkby4KKwkJCQkJICovCisJCQkJCUFzc2VydChuYW1l
c3RyY21wKCZjb25mb3JtLT5jb25uYW1lLCBjb25uYW1lKSA9PSAwKTsKKwkJCQl9CisJCQl9CisK
IAkJCWNoYW5nZWQgPSB0cnVlOwogCQl9CiAKIAkJaWYgKGNoYW5nZWQpCisJCXsKIAkJCUNhdGFs
b2dUdXBsZVVwZGF0ZShwZ19jb25zdHJhaW50LCAmdHVwLT50X3NlbGYsIHR1cCk7CiAKKwkJCWlm
IChyZW5hbWVkKQorCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9E
VVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJCWVycm1zZygicmVuYW1lZCBleGlzdGluZyBub24tbnVs
bCBjb25zdHJhaW50IFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgdG8gXCIlc1wiIiwKKwkJCQkJ
CQkgICBOYW1lU3RyKG9sZG5hbWUpLCBnZXRfcmVsX25hbWUocmVsaWQpLCBOYW1lU3RyKGNvbmZv
cm0tPmNvbm5hbWUpKSk7CisJCX0KKwogCQl0YWJsZV9jbG9zZShwZ19jb25zdHJhaW50LCBSb3dF
eGNsdXNpdmVMb2NrKTsKIAogCQlyZXR1cm4gdHJ1ZTsKQEAgLTk2NywxNyArMTAyMSwxNyBAQCBS
ZW5hbWVDb25zdHJhaW50QnlJZChPaWQgY29uSWQsIGNvbnN0IGNoYXIgKm5ld25hbWUpCiAJICog
Rm9yIHVzZXItZnJpZW5kbGluZXNzLCBjaGVjayB3aGV0aGVyIHRoZSBuYW1lIGlzIGFscmVhZHkg
aW4gdXNlLgogCSAqLwogCWlmIChPaWRJc1ZhbGlkKGNvbi0+Y29ucmVsaWQpICYmCi0JCUNvbnN0
cmFpbnROYW1lSXNVc2VkKENPTlNUUkFJTlRfUkVMQVRJT04sCi0JCQkJCQkJIGNvbi0+Y29ucmVs
aWQsCi0JCQkJCQkJIG5ld25hbWUpKQorCQlPaWRJc1ZhbGlkKENvbnN0cmFpbnROYW1lSXNVc2Vk
KENPTlNUUkFJTlRfUkVMQVRJT04sCisJCQkJCQkJCQkJY29uLT5jb25yZWxpZCwKKwkJCQkJCQkJ
CQluZXduYW1lKSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBM
SUNBVEVfT0JKRUNUKSwKIAkJCQkgZXJybXNnKCJjb25zdHJhaW50IFwiJXNcIiBmb3IgcmVsYXRp
b24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKIAkJCQkJCW5ld25hbWUsIGdldF9yZWxfbmFtZShj
b24tPmNvbnJlbGlkKSkpKTsKIAlpZiAoT2lkSXNWYWxpZChjb24tPmNvbnR5cGlkKSAmJgotCQlD
b25zdHJhaW50TmFtZUlzVXNlZChDT05TVFJBSU5UX0RPTUFJTiwKLQkJCQkJCQkgY29uLT5jb250
eXBpZCwKLQkJCQkJCQkgbmV3bmFtZSkpCisJCU9pZElzVmFsaWQoQ29uc3RyYWludE5hbWVJc1Vz
ZWQoQ09OU1RSQUlOVF9ET01BSU4sCisJCQkJCQkJCQkJY29uLT5jb250eXBpZCwKKwkJCQkJCQkJ
CQluZXduYW1lKSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBM
SUNBVEVfT0JKRUNUKSwKIAkJCQkgZXJybXNnKCJjb25zdHJhaW50IFwiJXNcIiBmb3IgZG9tYWlu
ICVzIGFscmVhZHkgZXhpc3RzIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh
YmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMWFmMmUy
YmZmYjIuLjFiNDNiYTUwMGVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs
ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtOTQ1OSw5
ICs5NDU5LDkgQEAgQVRFeGVjQWRkQ29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi
bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCSAqLwogCQkJaWYgKG5ld0NvbnN0cmFpbnQt
PmNvbm5hbWUpCiAJCQl7Ci0JCQkJaWYgKENvbnN0cmFpbnROYW1lSXNVc2VkKENPTlNUUkFJTlRf
UkVMQVRJT04sCi0JCQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKLQkJCQkJCQkJCQkg
bmV3Q29uc3RyYWludC0+Y29ubmFtZSkpCisJCQkJaWYgKE9pZElzVmFsaWQoQ29uc3RyYWludE5h
bWVJc1VzZWQoQ09OU1RSQUlOVF9SRUxBVElPTiwKKwkJCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJl
bGlkKHJlbCksCisJCQkJCQkJCQkJCQkJbmV3Q29uc3RyYWludC0+Y29ubmFtZSkpKQogCQkJCQll
cmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCks
CiAJCQkJCQkJIGVycm1zZygiY29uc3RyYWludCBcIiVzXCIgZm9yIHJlbGF0aW9uIFwiJXNcIiBh
bHJlYWR5IGV4aXN0cyIsCkBAIC0xMDM4MCw5ICsxMDM4MCw5IEBAIGFkZEZrQ29uc3RyYWludChh
ZGRGa0NvbnN0cmFpbnRTaWRlcyBma3NpZGUsCiAJICogQ2FsbGVyIHN1cHBsaWVzIHVzIHdpdGgg
YSBjb25zdHJhaW50IG5hbWU7IGhvd2V2ZXIsIGl0IG1heSBiZSB1c2VkIGluCiAJICogdGhpcyBw
YXJ0aXRpb24sIHNvIGNvbWUgdXAgd2l0aCBhIGRpZmZlcmVudCBvbmUgaW4gdGhhdCBjYXNlLgog
CSAqLwotCWlmIChDb25zdHJhaW50TmFtZUlzVXNlZChDT05TVFJBSU5UX1JFTEFUSU9OLAotCQkJ
CQkJCSBSZWxhdGlvbkdldFJlbGlkKHJlbCksCi0JCQkJCQkJIGNvbnN0cmFpbnRuYW1lKSkKKwlp
ZiAoT2lkSXNWYWxpZChDb25zdHJhaW50TmFtZUlzVXNlZChDT05TVFJBSU5UX1JFTEFUSU9OLAor
CQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkJCQljb25zdHJhaW50bmFt
ZSkpKQogCQljb25uYW1lID0gQ2hvb3NlQ29uc3RyYWludE5hbWUoUmVsYXRpb25HZXRSZWxhdGlv
bk5hbWUocmVsKSwKIAkJCQkJCQkJCSAgIENob29zZUZvcmVpZ25LZXlDb25zdHJhaW50TmFtZUFk
ZGl0aW9uKGZrY29uc3RyYWludC0+ZmtfYXR0cnMpLAogCQkJCQkJCQkJICAgImZrZXkiLApkaWZm
IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv
bW1hbmRzL3R5cGVjbWRzLmMKaW5kZXggODU5ZTIxOTFmMDguLmY0NWVjOTBmMjVlIDEwMDY0NAot
LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv
bW1hbmRzL3R5cGVjbWRzLmMKQEAgLTM1MjgsOSArMzUyOCw5IEBAIGRvbWFpbkFkZENoZWNrQ29u
c3RyYWludChPaWQgZG9tYWluT2lkLCBPaWQgZG9tYWluTmFtZXNwYWNlLCBPaWQgYmFzZVR5cGVP
aWQsCiAJICovCiAJaWYgKGNvbnN0ci0+Y29ubmFtZSkKIAl7Ci0JCWlmIChDb25zdHJhaW50TmFt
ZUlzVXNlZChDT05TVFJBSU5UX0RPTUFJTiwKLQkJCQkJCQkJIGRvbWFpbk9pZCwKLQkJCQkJCQkJ
IGNvbnN0ci0+Y29ubmFtZSkpCisJCWlmIChPaWRJc1ZhbGlkKENvbnN0cmFpbnROYW1lSXNVc2Vk
KENPTlNUUkFJTlRfRE9NQUlOLAorCQkJCQkJCQkJCQlkb21haW5PaWQsCisJCQkJCQkJCQkJCWNv
bnN0ci0+Y29ubmFtZSkpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09E
RV9EVVBMSUNBVEVfT0JKRUNUKSwKIAkJCQkJIGVycm1zZygiY29uc3RyYWludCBcIiVzXCIgZm9y
IGRvbWFpbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLApAQCAtMzY4Myw5ICszNjgzLDkgQEAgZG9t
YWluQWRkTm90TnVsbENvbnN0cmFpbnQoT2lkIGRvbWFpbk9pZCwgT2lkIGRvbWFpbk5hbWVzcGFj
ZSwgT2lkIGJhc2VUeXBlT2lkLAogCSAqLwogCWlmIChjb25zdHItPmNvbm5hbWUpCiAJewotCQlp
ZiAoQ29uc3RyYWludE5hbWVJc1VzZWQoQ09OU1RSQUlOVF9ET01BSU4sCi0JCQkJCQkJCSBkb21h
aW5PaWQsCi0JCQkJCQkJCSBjb25zdHItPmNvbm5hbWUpKQorCQlpZiAoT2lkSXNWYWxpZChDb25z
dHJhaW50TmFtZUlzVXNlZChDT05TVFJBSU5UX0RPTUFJTiwKKwkJCQkJCQkJCQkJZG9tYWluT2lk
LAorCQkJCQkJCQkJCQljb25zdHItPmNvbm5hbWUpKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ
CShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCiAJCQkJCSBlcnJtc2coImNvbnN0
cmFpbnQgXCIlc1wiIGZvciBkb21haW4gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKZGlmZiAtLWdp
dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j
CmluZGV4IGFkZDdmMTZjOTAyLi44ZGYwNmM3Y2JjZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k
dW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0zNDYsNyAr
MzQ2LDcgQEAgc3RhdGljIHZvaWQgZ2V0VGFibGVEYXRhRktDb25zdHJhaW50cyh2b2lkKTsKIHN0
YXRpYyB2b2lkIGRldGVybWluZU5vdE51bGxGbGFncyhBcmNoaXZlICpmb3V0LCBQR3Jlc3VsdCAq
cmVzLCBpbnQgciwKIAkJCQkJCQkJICBUYWJsZUluZm8gKnRiaW5mbywgaW50IGosCiAJCQkJCQkJ
CSAgaW50IGlfbm90bnVsbF9uYW1lLCBpbnQgaV9ub3RudWxsX25vaW5oZXJpdCwKLQkJCQkJCQkJ
ICBpbnQgaV9ub3RudWxsX2lzbG9jYWwpOworCQkJCQkJCQkgIGludCBpX25vdG51bGxfaXNsb2Nh
bCwgaW50IGlfbm90bnVsbF9pbmhjb3VudCk7CiBzdGF0aWMgY2hhciAqZm9ybWF0X2Z1bmN0aW9u
X2FyZ3VtZW50cyhjb25zdCBGdW5jSW5mbyAqZmluZm8sIGNvbnN0IGNoYXIgKmZ1bmNhcmdzLAog
CQkJCQkJCQkJICAgYm9vbCBpc19hZ2cpOwogc3RhdGljIGNoYXIgKmZvcm1hdF9mdW5jdGlvbl9z
aWduYXR1cmUoQXJjaGl2ZSAqZm91dCwKQEAgLTg3NjQsNiArODc2NCw3IEBAIGdldFRhYmxlQXR0
cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCWlu
dAkJCWlfbm90bnVsbF9uYW1lOwogCWludAkJCWlfbm90bnVsbF9ub2luaGVyaXQ7CiAJaW50CQkJ
aV9ub3RudWxsX2lzbG9jYWw7CisJaW50CQkJaV9ub3RudWxsX2luaGNvdW50OwogCWludAkJCWlf
YXR0b3B0aW9uczsKIAlpbnQJCQlpX2F0dGNvbGxhdGlvbjsKIAlpbnQJCQlpX2F0dGNvbXByZXNz
aW9uOwpAQCAtODg1MSwyMCArODg1MiwyMyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQs
IFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkgKiB3aXRob3V0IGEgbmFtZSk7
IGFsc28sIHN1Y2ggY2FzZXMgYXJlIG5ldmVyIE5PIElOSEVSSVQuCiAJICoKIAkgKiBXZSB0cmFj
ayBpbiBub3RudWxsX2lzbG9jYWwgd2hldGhlciB0aGUgY29uc3RyYWludCB3YXMgZGVmaW5lZCBk
aXJlY3RseQotCSAqIGluIHRoaXMgdGFibGUgb3IgdmlhIGFuIGFuY2VzdG9yLCBmb3IgYmluYXJ5
IHVwZ3JhZGUuICBmbGFnSW5oQXR0cnMKLQkgKiBtaWdodCBtb2RpZnkgdGhpcyBsYXRlciBmb3Ig
c2VydmVycyBvbGRlciB0aGFuIDE4OyBpdCdzIGFsc28gaW4gY2hhcmdlCi0JICogb2YgZGV0ZXJt
aW5pbmcgdGhlIGNvcnJlY3QgaW5oY291bnQuCisJICogaW4gdGhpcyB0YWJsZSBvciB2aWEgYW4g
YW5jZXN0b3IsIGZvciBiaW5hcnkgdXBncmFkZS4gV2UgdHJhY2sKKwkgKiBub3RfbnVsbGluaGNv
dW50IHRvIGRlY2lkZSB3aGV0aGVyIHRvIHJldGFpbiB0aGUgY29uc3RyYWludCBuYW1lIGZvcgor
CSAqIG5vbi1iaW5hcnkgZHVtcC4gRm9yIHNlcnZlcnMgb2xkZXIgdGhhbiAxOCBmbGFnSW5oQXR0
cnMgbWlnaHQgbW9kaWZ5CisJICogbm90bnVsbF9pc2xvY2FsIGxhdGVyIGFuZCBhbHNvIGRldGVy
bWluZSB0aGUgY29ycmVjdCBub3RfaW5oY291bnQuCiAJICovCiAJaWYgKGZvdXQtPnJlbW90ZVZl
cnNpb24gPj0gMTgwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLAogCQkJCQkJCSAiY28u
Y29ubmFtZSBBUyBub3RudWxsX25hbWUsXG4iCiAJCQkJCQkJICJjby5jb25ub2luaGVyaXQgQVMg
bm90bnVsbF9ub2luaGVyaXQsXG4iCi0JCQkJCQkJICJjby5jb25pc2xvY2FsIEFTIG5vdG51bGxf
aXNsb2NhbCxcbiIpOworCQkJCQkJCSAiY28uY29uaXNsb2NhbCBBUyBub3RudWxsX2lzbG9jYWws
XG4iCisJCQkJCQkJICJjby5jb25pbmhjb3VudCBBUyBub3RudWxsX2luaGNvdW50LFxuIik7CiAJ
ZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLAogCQkJCQkJCSAiQ0FTRSBXSEVOIGEuYXR0
bm90bnVsbCBUSEVOICcnIEVMU0UgTlVMTCBFTkQgQVMgbm90bnVsbF9uYW1lLFxuIgogCQkJCQkJ
CSAiZmFsc2UgQVMgbm90bnVsbF9ub2luaGVyaXQsXG4iCi0JCQkJCQkJICJhLmF0dGlzbG9jYWwg
QVMgbm90bnVsbF9pc2xvY2FsLFxuIik7CisJCQkJCQkJICJhLmF0dGlzbG9jYWwgQVMgbm90bnVs
bF9pc2xvY2FsLFxuIgorCQkJCQkJCSAiMCBBUyBub3RudWxsX2luaGNvdW50LFxuIik7CiAKIAlp
ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry
KHEsCkBAIC04OTM5LDYgKzg5NDMsNyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRh
YmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAlpX25vdG51bGxfbmFtZSA9IFBRZm51
bWJlcihyZXMsICJub3RudWxsX25hbWUiKTsKIAlpX25vdG51bGxfbm9pbmhlcml0ID0gUFFmbnVt
YmVyKHJlcywgIm5vdG51bGxfbm9pbmhlcml0Iik7CiAJaV9ub3RudWxsX2lzbG9jYWwgPSBQUWZu
dW1iZXIocmVzLCAibm90bnVsbF9pc2xvY2FsIik7CisJaV9ub3RudWxsX2luaGNvdW50ID0gUFFm
bnVtYmVyKHJlcywgIm5vdG51bGxfaW5oY291bnQiKTsKIAlpX2F0dG9wdGlvbnMgPSBQUWZudW1i
ZXIocmVzLCAiYXR0b3B0aW9ucyIpOwogCWlfYXR0Y29sbGF0aW9uID0gUFFmbnVtYmVyKHJlcywg
ImF0dGNvbGxhdGlvbiIpOwogCWlfYXR0Y29tcHJlc3Npb24gPSBQUWZudW1iZXIocmVzLCAiYXR0
Y29tcHJlc3Npb24iKTsKQEAgLTkwMzQsNyArOTAzOSw3IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2
ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJZGV0ZXJtaW5l
Tm90TnVsbEZsYWdzKGZvdXQsIHJlcywgciwKIAkJCQkJCQkJICB0YmluZm8sIGosCiAJCQkJCQkJ
CSAgaV9ub3RudWxsX25hbWUsIGlfbm90bnVsbF9ub2luaGVyaXQsCi0JCQkJCQkJCSAgaV9ub3Ru
dWxsX2lzbG9jYWwpOworCQkJCQkJCQkgIGlfbm90bnVsbF9pc2xvY2FsLCBpX25vdG51bGxfaW5o
Y291bnQpOwogCiAJCQl0YmluZm8tPmF0dG9wdGlvbnNbal0gPSBwZ19zdHJkdXAoUFFnZXR2YWx1
ZShyZXMsIHIsIGlfYXR0b3B0aW9ucykpOwogCQkJdGJpbmZvLT5hdHRjb2xsYXRpb25bal0gPSBh
dG9vaWQoUFFnZXR2YWx1ZShyZXMsIHIsIGlfYXR0Y29sbGF0aW9uKSk7CkBAIC05MzM3LDE5ICs5
MzQyLDMxIEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZv
LCBpbnQgbnVtVGFibGVzKQogICogMikgVGhlIGNvbHVtbiBoYXMgYSBjb25zdHJhaW50IHdpdGgg
bm8gbmFtZSAodGhpcyBpcyB0aGUgY2FzZSB3aGVuCiAgKiAgICBjb25zdHJhaW50cyBjb21lIGZy
b20gcHJlLTE4IHNlcnZlcnMpLiAgSW4gdGhpcyBjYXNlLCAtPm5vdG51bGxfY29uc3RycwogICog
ICAgaXMgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmc7IGR1bXBUYWJsZVNjaGVtYSB3aWxsIHByaW50
IGp1c3QgIk5PVCBOVUxMIi4KLSAqIDMpIFRoZSBjb2x1bW4gaGFzIGEgY29uc3RyYWludCB3aXRo
IGEga25vd24gbmFtZTsgaW4gdGhhdCBjYXNlCisgKiAzKSBUaGUgY29sdW1uIGhhcyBhIGNvbnN0
cmFpbnQgd2l0aCBkZWZhdWx0ICh0YWJsZV9jb2x1bW5fbm90X251bGwpIG5hbWU7CisgKiAgICB0
aGVyZSdzIG5vIG5lZWQgdG8gcHJpbnQgdGhhdCBuYW1lIGluIHRoZSBkdW1wLCBzbyBub3RudWxs
X2NvbnN0cnMgaXMKKyAqICAgIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGFuZCBpdCBiZWhhdmVz
IGFzIHRoZSBjYXNlIDIgYWJvdmUuCisgKiA0KSBUaGUgY29sdW1uIGhhcyBhIGNvbnN0cmFpbnQg
d2l0aCBhIG5vbi1kZWZhdWx0IG5hbWU7IGluIHRoYXQgY2FzZQogICogICAgbm90bnVsbF9jb25z
dHJzIGNhcnJpZXMgdGhhdCBuYW1lIGFuZCBkdW1wVGFibGVTY2hlbWEgd2lsbCBwcmludAotICog
ICAgIkNPTlNUUkFJTlQgdGhlX25hbWUgTk9UIE5VTEwiLiAgSG93ZXZlciwgaWYgdGhlIG5hbWUg
aXMgdGhlIGRlZmF1bHQKLSAqICAgICh0YWJsZV9jb2x1bW5fbm90X251bGwpLCB0aGVyZSdzIG5v
IG5lZWQgdG8gcHJpbnQgdGhhdCBuYW1lIGluIHRoZSBkdW1wLAotICogICAgc28gbm90bnVsbF9j
b25zdHJzIGlzIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGFuZCBpdCBiZWhhdmVzIGFzIHRoZSBj
YXNlCi0gKiAgICBhYm92ZS4KKyAqICAgICJDT05TVFJBSU5UIHRoZV9uYW1lIE5PVCBOVUxMIi4K
ICAqCi0gKiBJbiBhIGNoaWxkIHRhYmxlIHRoYXQgaW5oZXJpdHMgZnJvbSBhIHBhcmVudCBhbHJl
YWR5IGNvbnRhaW5pbmcgTk9UIE5VTEwKLSAqIGNvbnN0cmFpbnRzIGFuZCB0aGUgY29sdW1ucyBp
biB0aGUgY2hpbGQgZG9uJ3QgaGF2ZSB0aGVpciBvd24gTk9UIE5VTEwKLSAqIGRlY2xhcmF0aW9u
cywgd2Ugc3VwcHJlc3MgcHJpbnRpbmcgY29uc3RyYWludHMgaW4gdGhlIGNoaWxkOiB0aGUKLSAq
IGNvbnN0cmFpbnRzIGFyZSBhY3F1aXJlZCBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGNoaWxkIGlz
IGF0dGFjaGVkIHRvIHRoZQotICogcGFyZW50LiAgVGhpcyBpcyB0cmFja2VkIGluIC0+bm90bnVs
bF9pbmggKHdoaWNoIGlzIHNldCBpbiBmbGFnSW5oQXR0cnMgZm9yCi0gKiBzZXJ2ZXJzIHByZS0x
OCkuCisgKiBOT1QgTlVMTCBjb25zdHJhaW50cyBvbiB0aGUgY2hpbGQgdGFibGUgcmVxdWlyZSBh
ZGRpdGlvbmFsIHJ1bGVzIGFzIGJlbG93OgorICogQSkgSW4gYSBjaGlsZCB0YWJsZSB0aGF0IGlu
aGVyaXRzIGZyb20gYSBwYXJlbnQgYWxyZWFkeSBjb250YWluaW5nIE5PVCBOVUxMCisgKiAgICBj
b25zdHJhaW50cyBhbmQgdGhlIGNvbHVtbnMgaW4gdGhlIGNoaWxkIGRvbid0IGhhdmUgdGhlaXIg
b3duIE5PVCBOVUxMCisgKiAgICBkZWNsYXJhdGlvbnMsIHdlIHN1cHByZXNzIHByaW50aW5nIGNv
bnN0cmFpbnRzIGluIHRoZSBjaGlsZDogdGhlCisgKiAgICBjb25zdHJhaW50cyBhcmUgYWNxdWly
ZWQgYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBjaGlsZCBpcyBhdHRhY2hlZCB0byB0aGUKKyAqICAg
IHBhcmVudC4gVGhpcyBpcyB0cmFja2VkIGluIC0+bm90bnVsbF9sb2NhbCAod2hpY2ggaXMgc2V0
IGluIGZsYWdJbmhBdHRycworICogICAgZm9yIHNlcnZlcnMgcHJlLTE4KS4KKyAqIEIpIEEgY29s
dW1uIGhhcyBhIGxvY2FsIE5PVCBOVUxMIGNvbnN0cmFpbnQsIHdpdGggbm9uLWRlZmF1bHQgbmFt
ZSwgd2hpY2ggaXMKKyAqICAgIGFsc28gaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudC4gVGhpcyBj
YXNlIGlzIHRyZWF0ZWQgc2FtZSBhcyB0aGUgY2FzZSA0CisgKiAgICBhYm92ZS4gQnV0IGlmIHRo
ZSBjb2x1bW4gd2lsbCBub3QgYmUgcHJpbnRlZCBpbiBDUkVBVEUgVEFCTEUgY29tbWFuZCwgd2UK
KyAqICAgIHdpbGwgcHJpbnQgYSBzZXBhcmF0ZSBBTFRFUiBUQUJMRSAuLi4gQUREIENPTlNUUkFJ
TlQgLi4uIGNvbW1hbmQgdG8KKyAqICAgIHJlbmFtZSB0aGUgY29uc3RyYWludCBhbmQgY29udmVy
dCBpdCB0byBsb2NhbCBjb25zdHJhaW50LgorICogQykgQSBjb2x1bW4gaGFzIGEgbG9jYWwgTk9U
IE5VTEwgY29uc3RyYWludCwgd2l0aCB0aGUgZGVmYXVsdCBuYW1lLCB3aGljaCBpcworICogICAg
YWxzbyBpbmhlcml0ZWQgZnJvbSBhIHBhcmVudC4gVGhpcyBjYXNlIGlzIHRyZWF0ZWQgYXMgY2Fz
ZSBCIGluc3RlYWQgb2YKKyAqICAgIGNhc2UgMyBpZiB0aGUgY29sdW1uIHdpbGwgbm90IGJlIHBy
aW50ZWQgaW4gQ1JFQVRFIFRBQkxFIGNvbW1hbmQuIFRoZQorICogICAgY2hpbGQgd291bGQgaW5o
ZXJpdCB0aGUgY29uc3RyYWludCB3aXRoIHBhcmVudCBjb25zdHJhaW50IG5hbWUgd2hlbgorICog
ICAgYXR0YWNoZWQuIEl0IG5lZWRzIHRvIGJlIHJlbmFtZWQgYW5kIGNvbnZlcnRlZCB0byBhIGxv
Y2FsIGNvbnN0cmFpbnQKKyAqICAgIGxhdGVyIHVzaW5nIHNhbWUgRERMIGFzIGNhc2UgQi4KICAq
CiAgKiBBbnkgb2YgdGhlc2UgY29uc3RyYWludHMgbWlnaHQgaGF2ZSB0aGUgTk8gSU5IRVJJVCBi
aXQuICBJZiBzbyB3ZSBzZXQKICAqIC0+bm90bnVsbF9ub2luaCBhbmQgTk8gSU5IRVJJVCB3aWxs
IGJlIHByaW50ZWQgYnkgZHVtcFRhYmxlU2NoZW1hLgpAQCAtOTM2Myw5ICs5MzgwLDEwIEBAIHN0
YXRpYyB2b2lkCiBkZXRlcm1pbmVOb3ROdWxsRmxhZ3MoQXJjaGl2ZSAqZm91dCwgUEdyZXN1bHQg
KnJlcywgaW50IHIsCiAJCQkJCSAgVGFibGVJbmZvICp0YmluZm8sIGludCBqLAogCQkJCQkgIGlu
dCBpX25vdG51bGxfbmFtZSwgaW50IGlfbm90bnVsbF9ub2luaGVyaXQsCi0JCQkJCSAgaW50IGlf
bm90bnVsbF9pc2xvY2FsKQorCQkJCQkgIGludCBpX25vdG51bGxfaXNsb2NhbCwgaW50IGlfbm90
bnVsbF9pbmhjb3VudCkKIHsKIAlEdW1wT3B0aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7CisJaW50
CQkJaW5oY291bnQ7CiAKIAkvKgogCSAqIG5vdG51bGxfbm9pbmggaXMgc3RyYWlnaHQgZnJvbSB0
aGUgcXVlcnkgcmVzdWx0LiBub3RudWxsX2lzbG9jYWwgYWxzbywKQEAgLTkzNzMsNiArOTM5MSw3
IEBAIGRldGVybWluZU5vdE51bGxGbGFncyhBcmNoaXZlICpmb3V0LCBQR3Jlc3VsdCAqcmVzLCBp
bnQgciwKIAkgKi8KIAl0YmluZm8tPm5vdG51bGxfbm9pbmhbal0gPSBQUWdldHZhbHVlKHJlcywg
ciwgaV9ub3RudWxsX25vaW5oZXJpdClbMF0gPT0gJ3QnOwogCXRiaW5mby0+bm90bnVsbF9pc2xv
Y2FsW2pdID0gUFFnZXR2YWx1ZShyZXMsIHIsIGlfbm90bnVsbF9pc2xvY2FsKVswXSA9PSAndCc7
CisJaW5oY291bnQgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCByLCBpX25vdG51bGxfaW5oY291bnQp
KTsKIAogCS8qCiAJICogRGV0ZXJtaW5lIGEgY29uc3RyYWludCBuYW1lIHRvIHVzZS4gIElmIHRo
ZSBjb2x1bW4gaXMgbm90IG1hcmtlZCBub3QtCkBAIC05NDE1LDcgKzk0MzQsOSBAQCBkZXRlcm1p
bmVOb3ROdWxsRmxhZ3MoQXJjaGl2ZSAqZm91dCwgUEdyZXN1bHQgKnJlcywgaW50IHIsCiAJCQkJ
LyogWFhYIHNob3VsZCBtYXRjaCBDaG9vc2VDb25zdHJhaW50TmFtZSBiZXR0ZXIgKi8KIAkJCQlk
ZWZhdWx0X25hbWUgPSBwc3ByaW50ZigiJXNfJXNfbm90X251bGwiLCB0YmluZm8tPmRvYmoubmFt
ZSwKIAkJCQkJCQkJCQl0YmluZm8tPmF0dG5hbWVzW2pdKTsKLQkJCQlpZiAoc3RyY21wKGRlZmF1
bHRfbmFtZSwKKworCQkJCWlmICgoaW5oY291bnQgPD0gMCB8fCBzaG91bGRQcmludENvbHVtbihk
b3B0LCB0YmluZm8sIGopKSAmJgorCQkJCQlzdHJjbXAoZGVmYXVsdF9uYW1lLAogCQkJCQkJICAg
UFFnZXR2YWx1ZShyZXMsIHIsIGlfbm90bnVsbF9uYW1lKSkgPT0gMCkKIAkJCQkJdGJpbmZvLT5u
b3RudWxsX2NvbnN0cnNbal0gPSAiIjsKIAkJCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk
ZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3Ry
YWludC5oCmluZGV4IDRiNDQ3NjczOGEyLi4zYTg0MjQwMjQ1MiAxMDA2NDQKLS0tIGEvc3JjL2lu
Y2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w
Z19jb25zdHJhaW50LmgKQEAgLTI1MCw3ICsyNTAsNyBAQCBleHRlcm4gT2lkCUNyZWF0ZUNvbnN0
cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJCQkJICBib29sIGNv
blBlcmlvZCwKIAkJCQkJCQkJICBib29sIGlzX2ludGVybmFsKTsKIAotZXh0ZXJuIGJvb2wgQ29u
c3RyYWludE5hbWVJc1VzZWQoQ29uc3RyYWludENhdGVnb3J5IGNvbkNhdCwgT2lkIG9iaklkLAor
ZXh0ZXJuIE9pZAlDb25zdHJhaW50TmFtZUlzVXNlZChDb25zdHJhaW50Q2F0ZWdvcnkgY29uQ2F0
LCBPaWQgb2JqSWQsCiAJCQkJCQkJCSBjb25zdCBjaGFyICpjb25uYW1lKTsKIGV4dGVybiBib29s
IENvbnN0cmFpbnROYW1lRXhpc3RzKGNvbnN0IGNoYXIgKmNvbm5hbWUsIE9pZCBuYW1lc3BhY2Vp
ZCk7CiBleHRlcm4gY2hhciAqQ2hvb3NlQ29uc3RyYWludE5hbWUoY29uc3QgY2hhciAqbmFtZTEs
IGNvbnN0IGNoYXIgKm5hbWUyLApAQCAtMjYyLDcgKzI2Miw4IEBAIGV4dGVybiBIZWFwVHVwbGUg
ZmluZE5vdE51bGxDb25zdHJhaW50KE9pZCByZWxpZCwgY29uc3QgY2hhciAqY29sbmFtZSk7CiBl
eHRlcm4gSGVhcFR1cGxlIGZpbmREb21haW5Ob3ROdWxsQ29uc3RyYWludChPaWQgdHlwaWQpOwog
ZXh0ZXJuIEF0dHJOdW1iZXIgZXh0cmFjdE5vdE51bGxDb2x1bW4oSGVhcFR1cGxlIGNvbnN0clR1
cCk7CiBleHRlcm4gYm9vbCBBZGp1c3ROb3ROdWxsSW5oZXJpdGFuY2UoT2lkIHJlbGlkLCBBdHRy
TnVtYmVyIGF0dG51bSwKLQkJCQkJCQkJCSBib29sIGlzX2xvY2FsLCBib29sIGlzX25vX2luaGVy
aXQpOworCQkJCQkJCQkJIGJvb2wgaXNfbG9jYWwsIGJvb2wgaXNfbm9faW5oZXJpdCwKKwkJCQkJ
CQkJCSBjaGFyICpjb25uYW1lLCBMaXN0ICoqbm5uYW1lcyk7CiBleHRlcm4gTGlzdCAqUmVsYXRp
b25HZXROb3ROdWxsQ29uc3RyYWludHMoT2lkIHJlbGlkLCBib29sIGNvb2tlZCwKIAkJCQkJCQkJ
CQkgICBib29sIGluY2x1ZGVfbm9pbmgpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz
L2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29u
c3RyYWludHMub3V0CmluZGV4IDcxMjAwYzkwZWQzLi5kNTdiMWU3OWI2ZiAxMDA2NDQKLS0tIGEv
c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQKKysrIGIvc3JjL3Rlc3Qv
cmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQKQEAgLTEyODUsNiArMTI4NSw0NyBAQCBO
b3QtbnVsbCBjb25zdHJhaW50czoKICAgICAiYV9ubiIgTk9UIE5VTEwgImEiIChsb2NhbCwgaW5o
ZXJpdGVkKQogSW5oZXJpdHM6IG5vdG51bGxfdGJsNAogCistLSBuYW1lZCBsb2NhbCBOT1QgTlVM
TCBjb25zdHJhaW50cyBvbiBjaGlsZCB0YWJsZQorQ1JFQVRFIFRBQkxFIG5vdG51bGxfdGJsNF9j
bGQ0ICgpIElOSEVSSVRTIChub3RudWxsX3RibDQpOworQUxURVIgVEFCTEUgbm90bnVsbF90Ymw0
X2NsZDQgQUREIENPTlNUUkFJTlQgZHVwX25hbWUgQ0hFQ0sgKGEgPiAyKTsKK0FMVEVSIFRBQkxF
IG5vdG51bGxfdGJsNF9jbGQ0IEFERCBDT05TVFJBSU5UIGR1cF9uYW1lIE5PVCBOVUxMIGE7CitF
UlJPUjogIGNvbnN0cmFpbnQgImR1cF9uYW1lIiBmb3IgcmVsYXRpb24gIm5vdG51bGxfdGJsNF9j
bGQ0IiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgbm90bnVsbF90Ymw0X2NsZDQgRFJPUCBD
T05TVFJBSU5UIGR1cF9uYW1lOworQUxURVIgVEFCTEUgbm90bnVsbF90Ymw0X2NsZDQgQUREIENP
TlNUUkFJTlQgdGJsNF9jbGQ0X2Ffbm4gTk9UIE5VTEwgYTsKK1dBUk5JTkc6ICByZW5hbWVkIGV4
aXN0aW5nIG5vbi1udWxsIGNvbnN0cmFpbnQgIm5vdG51bGxfdGJsNF9hX25vdF9udWxsIiBvZiBy
ZWxhdGlvbiAibm90bnVsbF90Ymw0X2NsZDQiIHRvICJ0Ymw0X2NsZDRfYV9ubiIKK0FMVEVSIFRB
QkxFIG5vdG51bGxfdGJsNF9jbGQ0IEFERCBDT05TVFJBSU5UIHRibDRfY2xkNF9hX25uMiBOT1Qg
TlVMTCBhOworXGQrIG5vdG51bGxfdGJsNF9jbGQ0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRhYmxlICJwdWJsaWMubm90bnVsbF90Ymw0X2NsZDQiCisgQ29sdW1uIHwgIFR5cGUgICB8
IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQg
fCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t
Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGEgICAg
ICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwg
ICAgICAgICAgICAgIHwgCitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAidGJsNF9jbGQ0X2Ff
bm4iIE5PVCBOVUxMICJhIiAobG9jYWwsIGluaGVyaXRlZCkKK0luaGVyaXRzOiBub3RudWxsX3Ri
bDQKKworLS0gYWRkaW5nIE5PVCBOVUxMIGNvbnN0cmFpbnQgd2l0aCB0aGUgc2FtZSBuYW1lIGFz
IHRoZSBleGlzdGluZyBvbmUgaXMgbm9vcAorQUxURVIgVEFCTEUgbm90bnVsbF90Ymw0X2NsZDQg
QUREIENPTlNUUkFJTlQgdGJsNF9jbGQ0X2Ffbm4gTk9UIE5VTEwgYTsKK1xkKyBub3RudWxsX3Ri
bDRfY2xkNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLm5vdG51
bGxfdGJsNF9jbGQ0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8
IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0t
LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg
IHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorTm90LW51
bGwgY29uc3RyYWludHM6CisgICAgInRibDRfY2xkNF9hX25uIiBOT1QgTlVMTCAiYSIgKGxvY2Fs
LCBpbmhlcml0ZWQpCitJbmhlcml0czogbm90bnVsbF90Ymw0CisKKy0tIHVubmFtZWQgbG9jYWwg
Tk9UIE5VTEwgY29uc3RyYWludCBvbiBjaGlsZCB0YWJsZQorQ1JFQVRFIFRBQkxFIG5vdG51bGxf
dGJsNF9jbGQ1ICgpIElOSEVSSVRTIChub3RudWxsX3RibDQpOworQUxURVIgVEFCTEUgbm90bnVs
bF90Ymw0X2NsZDUgQUxURVIgQ09MVU1OIGEgU0VUIE5PVCBOVUxMOworXGQrIG5vdG51bGxfdGJs
NF9jbGQ1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMubm90bnVs
bF90Ymw0X2NsZDUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg
RGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0t
Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg
fCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitOb3QtbnVs
bCBjb25zdHJhaW50czoKKyAgICAibm90bnVsbF90Ymw0X2Ffbm90X251bGwiIE5PVCBOVUxMICJh
IiAobG9jYWwsIGluaGVyaXRlZCkKK0luaGVyaXRzOiBub3RudWxsX3RibDQKKwogLS0gbGVhdmUg
dGhlc2UgdGFibGVzIGFyb3VuZCBmb3IgcGdfdXBncmFkZSB0ZXN0aW5nCiAtLSBJdCdzIHBvc3Np
YmxlIHRvIHJlbW92ZSBhIGNvbnN0cmFpbnQgZnJvbSBwYXJlbnRzIHdpdGhvdXQgYWZmZWN0aW5n
IGNoaWxkcmVuCiBDUkVBVEUgVEFCTEUgbm90bnVsbF90Ymw1IChhIGludCBDT05TVFJBSU5UIGFu
biBOT1QgTlVMTCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRz
LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbAppbmRleCBlNjA3ZWIx
ZmRkYi4uMTdmMGMxMWM4NTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0
cmFpbnRzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwKQEAg
LTc2Niw2ICs3NjYsMjMgQEAgQ1JFQVRFIFRBQkxFIG5vdG51bGxfdGJsNF9jbGQzIChQUklNQVJZ
IEtFWSAoYSkgREVGRVJSQUJMRSwgQ09OU1RSQUlOVCBhX25uIE5PVAogXGQrIG5vdG51bGxfdGJs
NF9jbGQKIFxkKyBub3RudWxsX3RibDRfY2xkMgogXGQrIG5vdG51bGxfdGJsNF9jbGQzCisKKy0t
IG5hbWVkIGxvY2FsIE5PVCBOVUxMIGNvbnN0cmFpbnRzIG9uIGNoaWxkIHRhYmxlCitDUkVBVEUg
VEFCTEUgbm90bnVsbF90Ymw0X2NsZDQgKCkgSU5IRVJJVFMgKG5vdG51bGxfdGJsNCk7CitBTFRF
UiBUQUJMRSBub3RudWxsX3RibDRfY2xkNCBBREQgQ09OU1RSQUlOVCBkdXBfbmFtZSBDSEVDSyAo
YSA+IDIpOworQUxURVIgVEFCTEUgbm90bnVsbF90Ymw0X2NsZDQgQUREIENPTlNUUkFJTlQgZHVw
X25hbWUgTk9UIE5VTEwgYTsKK0FMVEVSIFRBQkxFIG5vdG51bGxfdGJsNF9jbGQ0IERST1AgQ09O
U1RSQUlOVCBkdXBfbmFtZTsKK0FMVEVSIFRBQkxFIG5vdG51bGxfdGJsNF9jbGQ0IEFERCBDT05T
VFJBSU5UIHRibDRfY2xkNF9hX25uIE5PVCBOVUxMIGE7CitBTFRFUiBUQUJMRSBub3RudWxsX3Ri
bDRfY2xkNCBBREQgQ09OU1RSQUlOVCB0Ymw0X2NsZDRfYV9ubjIgTk9UIE5VTEwgYTsKK1xkKyBu
b3RudWxsX3RibDRfY2xkNAorLS0gYWRkaW5nIE5PVCBOVUxMIGNvbnN0cmFpbnQgd2l0aCB0aGUg
c2FtZSBuYW1lIGFzIHRoZSBleGlzdGluZyBvbmUgaXMgbm9vcAorQUxURVIgVEFCTEUgbm90bnVs
bF90Ymw0X2NsZDQgQUREIENPTlNUUkFJTlQgdGJsNF9jbGQ0X2Ffbm4gTk9UIE5VTEwgYTsKK1xk
KyBub3RudWxsX3RibDRfY2xkNAorLS0gdW5uYW1lZCBsb2NhbCBOT1QgTlVMTCBjb25zdHJhaW50
IG9uIGNoaWxkIHRhYmxlCitDUkVBVEUgVEFCTEUgbm90bnVsbF90Ymw0X2NsZDUgKCkgSU5IRVJJ
VFMgKG5vdG51bGxfdGJsNCk7CitBTFRFUiBUQUJMRSBub3RudWxsX3RibDRfY2xkNSBBTFRFUiBD
T0xVTU4gYSBTRVQgTk9UIE5VTEw7CitcZCsgbm90bnVsbF90Ymw0X2NsZDUKKwogLS0gbGVhdmUg
dGhlc2UgdGFibGVzIGFyb3VuZCBmb3IgcGdfdXBncmFkZSB0ZXN0aW5nCiAKIC0tIEl0J3MgcG9z
c2libGUgdG8gcmVtb3ZlIGEgY29uc3RyYWludCBmcm9tIHBhcmVudHMgd2l0aG91dCBhZmZlY3Rp
bmcgY2hpbGRyZW4KLS0gCjIuMzQuMQoK
--0000000000006d75d70627e367cf--





view thread (2+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Subject: Re: 
  In-Reply-To: <no-message-id-1837712@localhost>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox