Eli Za=
retskii <
eliz@gnu.org> schrieb am=
Mi., 30. M=C3=A4rz 2016 um 04:39=C2=A0Uhr:
> From: Philipp Stephani <p.stephani2@gmail.com>
> Date: Tue, 29 Mar 2016 20:07:55 +0000
> Cc: Eli Zaretskii <eliz@gnu.org>, 19977@debbugs.gnu.org
>
> It seems that this behavior cannot be implemented without resorting to=
UCKeyTranslate. Therefore I'd
> suggest to fall back to the next best option and ignore all shift-like=
modifiers if control-like modifiers are
> present, similar to what we're doing with C-S on Unix terminals.
I'm not sure what this means, but if it means something that worked
before won't, please provide an option to get the old behavior back,
just in case.
I've attached a patch that should =
keep the aforementioned input methods working (by setting ns-command-modifi=
er to none) and allow Command and Option to be treated as either shift-like=
or control-like modifiers.
In my tests input now works as expect=
ed with the Dvorak - Querty and similar input methods if ns-command-modifie=
r is none. Also various key combinations with Super work now if it's se=
t to super.
One thing that might be unexpected is that e.g. Comma=
nd-Control-A will be interpreted as Control-A if ns-command-modifier is non=
e, even if Command-A would insert something other than A. It seems this is =
(undesirable) behavior is actually already present at head.
--001a11c2346219234a052f479306--
--001a11c2346219234e052f479308
Content-Type: application/octet-stream;
name="0001-Fix-handling-of-modifier-keys-on-OS-X.patch"
Content-Disposition: attachment;
filename="0001-Fix-handling-of-modifier-keys-on-OS-X.patch"
Content-Transfer-Encoding: base64
Content-ID: <153c897a4c9ef4f78e21>
X-Attachment-Id: 153c897a4c9ef4f78e21
RnJvbSAwMDhlNzFjMDhjYmMwNmFjMmQzZWUzYjM1M2ZlMzYzYmE2MjBmNGZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh
dGU6IFdlZCwgMzAgTWFyIDIwMTYgMTk6MjI6NTYgKzAyMDAKU3ViamVjdDogW1BBVENIXSBGaXgg
aGFuZGxpbmcgb2YgbW9kaWZpZXIga2V5cyBvbiBPUyBYCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl
bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k
aW5nOiA4Yml0CgoqIHNyYy9uc3Rlcm0ubSAoaXNfc2hpZnRfbW9kaWZpZXIsIGhhc19zaGlmdF9t
b2RpZmllcnMpOiBOZXcgaGVscGVyCmZ1bmN0aW9ucy4KKGtleURvd246KTogRGlzdGluZ3Vpc2gg
YmV0d2VlbiBzaGlmdC1saWtlIGFuZCBjb250cm9sLWxpa2UgbW9kaWZpZXIKa2V5cy4gIEFsbG93
IHRyZWF0aW5nIOKMmCBhcyBzaGlmdC1saWtlIG1vZGlmaWVyIChlLmcuIGZvciB0aGUKR3VqYXJh
dGnCoOKAk8KgUVVFUlRZIGlucHV0IG1ldGhvZCwgd2hlcmUg4oyYIHN3aXRjaGVzIHRvIFFVRVJU
WS4pCgoqIGxpc3AvY3VzLXN0YXJ0LmVsIChzdGFuZGFyZCk6IENoYW5nZSBuaWwgdG8gbm9uZSBm
b3IKbnMtY29tbWFuZC1tb2RpZmllcjsgdXBkYXRlIGRlc2NyaXB0aW9uLgotLS0KIGxpc3AvY3Vz
LXN0YXJ0LmVsIHwgICA4ICsrLQogc3JjL25zdGVybS5tICAgICAgfCAyMDggKysrKysrKysrKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5n
ZWQsIDk4IGluc2VydGlvbnMoKyksIDExOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNw
L2N1cy1zdGFydC5lbCBiL2xpc3AvY3VzLXN0YXJ0LmVsCmluZGV4IDViZTYxY2UuLjEyMjY5YzEg
MTAwNjQ0Ci0tLSBhL2xpc3AvY3VzLXN0YXJ0LmVsCisrKyBiL2xpc3AvY3VzLXN0YXJ0LmVsCkBA
IC0zODksNiArMzg5LDEwIEBAIG1pbmlidWZmZXItcHJvbXB0LXByb3BlcnRpZXMtLXNldHRlcgog
CSAgICAgOzsgbXNkb3MuYwogCSAgICAgKGRvcy11bnN1cHBvcnRlZC1jaGFyLWdseXBoIGRpc3Bs
YXkgaW50ZWdlcikKIAkgICAgIDs7IG5zdGVybS5tCisgICAgICAgICAgICAgOzsKKyAgICAgICAg
ICAgICA7OyBGSVhNRTogV2h5IGRvZXMg4oyDIHVzZSBuaWwgaW5zdGVhZCBvZiBub25lPyAgQWxz
byB0aGUKKyAgICAgICAgICAgICA7OyBkZXNjcmlwdGlvbiBpcyBjb25mdXNpbmc7IHNldHRpbmcg
aXQgdG8gbmlsIGRpc2FibGVzIOKMgworICAgICAgICAgICAgIDs7IGVudGlyZWx5LgogCSAgICAg
KG5zLWNvbnRyb2wtbW9kaWZpZXIKIAkgICAgICBucwogCSAgICAgIChjaG9pY2UgKGNvbnN0IDp0
YWcgIk5vIG1vZGlmaWVyIiBuaWwpCkBAIC00MDUsMTMgKzQwOSwxMyBAQCBtaW5pYnVmZmVyLXBy
b21wdC1wcm9wZXJ0aWVzLS1zZXR0ZXIKIAkJICAgICAgKGNvbnN0IHN1cGVyKSkgIjI0LjEiKQog
CSAgICAgKG5zLWNvbW1hbmQtbW9kaWZpZXIKIAkgICAgICBucwotCSAgICAgIChjaG9pY2UgKGNv
bnN0IDp0YWcgIk5vIG1vZGlmaWVyIiBuaWwpCisJICAgICAgKGNob2ljZSAoY29uc3QgOnRhZyAi
Tm8gbW9kaWZpZXIgKHdvcmsgYXMgbGF5b3V0IHN3aXRjaCkiIG5vbmUpCiAJCSAgICAgIChjb25z
dCBjb250cm9sKSAoY29uc3QgbWV0YSkKIAkJICAgICAgKGNvbnN0IGFsdCkgKGNvbnN0IGh5cGVy
KQogCQkgICAgICAoY29uc3Qgc3VwZXIpKSAiMjMuMSIpCiAJICAgICAobnMtcmlnaHQtY29tbWFu
ZC1tb2RpZmllcgogCSAgICAgIG5zCi0JICAgICAgKGNob2ljZSAoY29uc3QgOnRhZyAiTm8gbW9k
aWZpZXIgKHdvcmsgYXMgY29tbWFuZCkiIG5vbmUpCisJICAgICAgKGNob2ljZSAoY29uc3QgOnRh
ZyAiTm8gbW9kaWZpZXIgKHdvcmsgYXMgbGF5b3V0IHN3aXRjaCkiIG5vbmUpCiAJCSAgICAgIChj
b25zdCA6dGFnICJVc2UgdGhlIHZhbHVlIG9mIG5zLWNvbW1hbmQtbW9kaWZpZXIiCiAJCQkgICAg
IGxlZnQpCiAJCSAgICAgIChjb25zdCBjb250cm9sKSAoY29uc3QgbWV0YSkKZGlmZiAtLWdpdCBh
L3NyYy9uc3Rlcm0ubSBiL3NyYy9uc3Rlcm0ubQppbmRleCA0MDQ4YWM0Li5lYmNjYjI3IDEwMDY0
NAotLS0gYS9zcmMvbnN0ZXJtLm0KKysrIGIvc3JjL25zdGVybS5tCkBAIC0zNyw2ICszNyw3IEBA
IEdOVXN0ZXAgcG9ydCBhbmQgcG9zdC0yMCB1cGRhdGUgYnkgQWRyaWFuIFJvYmVydCAoYXJvYmVy
dEBjb2dzY2kudWNzZC5lZHUpCiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHNpZ25hbC5o
PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KIAogI2luY2x1ZGUg
PGMtY3R5cGUuaD4KICNpbmNsdWRlIDxjLXN0cmNhc2UuaD4KQEAgLTU2NzAsNiArNTY3MSw0MyBA
QCBub3RfaW5fYXJndiAoTlNTdHJpbmcgKmFyZykKIEBlbmQgIC8qIEVtYWNzQXBwICovCiAKIAor
c3RhdGljIGJvb2wKK2lzX3NoaWZ0X21vZGlmaWVyIChOU0V2ZW50TW9kaWZpZXJGbGFncyBmbGFn
cywKKyAgICAgICAgICAgICAgICAgICBOU0V2ZW50TW9kaWZpZXJGbGFncyBnZW5lcmljX21hc2ss
CisgICAgICAgICAgICAgICAgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgbGVmdF9tYXNrLAorICAg
ICAgICAgICAgICAgICAgIE5TRXZlbnRNb2RpZmllckZsYWdzIHJpZ2h0X21hc2ssCisgICAgICAg
ICAgICAgICAgICAgTGlzcF9PYmplY3QgbGVmdF9vcHRpb24sCisgICAgICAgICAgICAgICAgICAg
TGlzcF9PYmplY3QgcmlnaHRfb3B0aW9uKQoreworICBib29sIGlzX3JpZ2h0X2tleSA9IChmbGFn
cyAmIHJpZ2h0X21hc2spID09IHJpZ2h0X21hc2s7CisgIGJvb2wgaXNfbGVmdF9rZXkgPSAoZmxh
Z3MgJiBsZWZ0X21hc2spID09IGxlZnRfbWFzaworICAgIHx8ICghIGlzX3JpZ2h0X2tleSAmJiAo
ZmxhZ3MgJiBnZW5lcmljX21hc2spID09IGdlbmVyaWNfbWFzayk7CisKKyAgdW5zaWduZWQgaW50
IG1vZGlmaWVycyA9IDA7CisgIGlmIChpc19yaWdodF9rZXkpCisgICAgbW9kaWZpZXJzIHw9IHBh
cnNlX3NvbGl0YXJ5X21vZGlmaWVyIChFUSAocmlnaHRfb3B0aW9uLCBRbGVmdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbGVmdF9vcHRpb24gOiByaWdodF9v
cHRpb24pOworICBpZiAoaXNfbGVmdF9rZXkpCisgICAgbW9kaWZpZXJzIHw9IHBhcnNlX3NvbGl0
YXJ5X21vZGlmaWVyIChsZWZ0X29wdGlvbik7CisKKyAgLyogcGFyc2Vfc29saXRhcnlfbW9kaWZp
ZXIgcmV0dXJucyAwIGZvciBhIHNoaWZ0LWxpa2UgbW9kaWZpZXIuICAqLworICByZXR1cm4gKGlz
X2xlZnRfa2V5IHx8IGlzX3JpZ2h0X2tleSkgJiYgbW9kaWZpZXJzID09IDA7Cit9CisKK3N0YXRp
YyBib29sCitoYXNfc2hpZnRfbW9kaWZpZXJzIChOU0V2ZW50TW9kaWZpZXJGbGFncyBmbGFncykK
K3sKKyAgLyogQ2hlY2sgb25seSBDb21tYW5kLCBPcHRpb24sIGFuZCBTaGlmdCBtb2RpZmllcnMu
ICBDb250cm9sIGlzCisgICAgIG5ldmVyIGEgc2hpZnQtbGlrZSBtb2RpZmllciBrZXkuICAqLwor
ICByZXR1cm4gaXNfc2hpZnRfbW9kaWZpZXIgKGZsYWdzLCBOU0NvbW1hbmRLZXlNYXNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5TTGVmdENvbW1hbmRLZXlNYXNrLCBOU1JpZ2h0Q29t
bWFuZEtleU1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNfY29tbWFuZF9tb2Rp
ZmllciwgbnNfcmlnaHRfY29tbWFuZF9tb2RpZmllcikKKyAgICB8fCBpc19zaGlmdF9tb2RpZmll
ciAoZmxhZ3MsIE5TQWx0ZXJuYXRlS2V5TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
TlNMZWZ0QWx0ZXJuYXRlS2V5TWFzaywgTlNSaWdodEFsdGVybmF0ZUtleU1hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5zX2FsdGVybmF0ZV9tb2RpZmllciwgbnNfcmlnaHRfYWx0ZXJu
YXRlX21vZGlmaWVyKQorICAgIHx8IChmbGFncyAmIE5TU2hpZnRLZXlNYXNrKSA9PSBOU1NoaWZ0
S2V5TWFzazsKK30KKwogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC01ODEyLDEwICs1ODUw
LDggQEAgbm90X2luX2FyZ3YgKE5TU3RyaW5nICphcmcpCiAKICAgaWYgKCFwcm9jZXNzaW5nQ29t
cG9zZSkKICAgICB7Ci0gICAgICAvKiBXaGVuIHVzaW5nIHNjcmVlbiBzaGFyaW5nLCBubyBsZWZ0
IG9yIHJpZ2h0IGluZm9ybWF0aW9uIGlzIHNlbnQsCi0gICAgICAgICBzbyB1c2UgTGVmdCBrZXkg
aW4gdGhvc2UgY2FzZXMuICAqLwotICAgICAgaW50IGlzX2xlZnRfa2V5LCBpc19yaWdodF9rZXk7
Ci0KKyAgICAgIC8qIEZJWE1FOiBXaGF0IHNob3VsZCBoYXBwZW4gZm9yIGtleSBzZXF1ZW5jZXMg
d2l0aCBtb3JlIHRoYW4KKyAgICAgICAgIG9uZSBjaGFyYWN0ZXI/ICAqLwogICAgICAgY29kZSA9
IChbW3RoZUV2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc10gbGVuZ3RoXSA9PSAwKSA/
CiAgICAgICAgIDAgOiBbW3RoZUV2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc10gY2hh
cmFjdGVyQXRJbmRleDogMF07CiAKQEAgLTU4NjIsMTMxICs1ODk4LDUwIEBAIG5vdF9pbl9hcmd2
IChOU1N0cmluZyAqYXJnKQogICAgICAgaWYgKGZsYWdzICYgTlNTaGlmdEtleU1hc2spCiAgICAg
ICAgIGVtYWNzX2V2ZW50LT5tb2RpZmllcnMgfD0gc2hpZnRfbW9kaWZpZXI7CiAKLSAgICAgIGlz
X3JpZ2h0X2tleSA9IChmbGFncyAmIE5TUmlnaHRDb21tYW5kS2V5TWFzaykgPT0gTlNSaWdodENv
bW1hbmRLZXlNYXNrOwotICAgICAgaXNfbGVmdF9rZXkgPSAoZmxhZ3MgJiBOU0xlZnRDb21tYW5k
S2V5TWFzaykgPT0gTlNMZWZ0Q29tbWFuZEtleU1hc2sKLSAgICAgICAgfHwgKCEgaXNfcmlnaHRf
a2V5ICYmIChmbGFncyAmIE5TQ29tbWFuZEtleU1hc2spID09IE5TQ29tbWFuZEtleU1hc2spOwor
ICAgICAgLyogVGhlIOKMmCBhbmQg4oylIG1vZGlmaWVycyBjYW4gYmUgZWl0aGVyIHNoaWZ0LWxp
a2UgKGZvciBhbHRlcm5hdGUKKyAgICAgICAgIGNoYXJhY3RlciBpbnB1dCkgb3IgY29udHJvbC1s
aWtlIChhcyBjb21tYW5kIHByZWZpeCkuICBJZiB3ZQorICAgICAgICAgaGF2ZSBvbmx5IHNoaWZ0
LWxpa2UgbW9kaWZpZXJzLCB0aGVuIHdlIHNob3VsZCB1c2UgdGhlCisgICAgICAgICB0cmFuc2xh
dGVkIGNoYXJhY3RlcnMgKHJldHVybmVkIGJ5IHRoZSBjaGFyYWN0ZXJzIG1ldGhvZCk7IGlmCisg
ICAgICAgICB3ZSBoYXZlIG9ubHkgY29udHJvbC1saWtlIG1vZGlmaWVycywgdGhlbiB3ZSBzaG91
bGQgdXNlIHRoZQorICAgICAgICAgdW50cmFuc2xhdGVkIGNoYXJhY3RlcnMgKHJldHVybmVkIGJ5
IHRoZQorICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1ldGhvZCkuICBBbiBh
bm5veWFuY2UgaGFwcGVucyBpZgorICAgICAgICAgd2UgaGF2ZSBib3RoIHNoaWZ0LWxpa2UgYW5k
IGNvbnRyb2wtbGlrZSBtb2RpZmllcnMgYmVjYXVzZQorICAgICAgICAgdGhlIE5TRXZlbnQgQVBJ
IGRvZXNu4oCZdCBsZXQgdXMgaWdub3JlIG9ubHkgc29tZSBtb2RpZmllcnMuCisgICAgICAgICBU
aGVyZWZvcmUgd2UgaWdub3JlIGFsbCBzaGlmdC1saWtlIG1vZGlmaWVycyBpbiB0aGF0CisgICAg
ICAgICBjYXNlLiAgKi8KKworICAgICAgLyogRVZfTU9ESUZJRVJTMiB1c2VzIHBhcnNlX3NvbGl0
YXJ5X21vZGlmaWVyIG9uIGFsbCBrbm93bgorICAgICAgICAgbW9kaWZpZXIga2V5cywgd2hpY2gg
cmV0dXJucyAwIGZvciBzaGlmdC1saWtlIG1vZGlmaWVycy4KKyAgICAgICAgIFRoZXJlZm9yZSBp
dHMgcmV0dXJuIHZhbHVlIGlzIHRoZSBzZXQgb2YgY29udHJvbC1saWtlCisgICAgICAgICBtb2Rp
ZmllcnMuICAqLworICAgICAgdW5zaWduZWQgaW50IGNvbnRyb2xfbW9kaWZpZXJzID0gRVZfTU9E
SUZJRVJTMiAoZmxhZ3MpOworICAgICAgYm9vbCBzaGlmdF9tb2RpZmllcnMgPQorICAgICAgICBj
b250cm9sX21vZGlmaWVycyA/IGZhbHNlIDogaGFzX3NoaWZ0X21vZGlmaWVycyAoZmxhZ3MpOwor
CisgICAgICBlbWFjc19ldmVudC0+bW9kaWZpZXJzIHw9IGNvbnRyb2xfbW9kaWZpZXJzOwogCi0g
ICAgICBpZiAoaXNfcmlnaHRfa2V5KQotICAgICAgICBlbWFjc19ldmVudC0+bW9kaWZpZXJzIHw9
IHBhcnNlX3NvbGl0YXJ5X21vZGlmaWVyCi0gICAgICAgICAgKEVRIChuc19yaWdodF9jb21tYW5k
X21vZGlmaWVyLCBRbGVmdCkKLSAgICAgICAgICAgPyBuc19jb21tYW5kX21vZGlmaWVyCi0gICAg
ICAgICAgIDogbnNfcmlnaHRfY29tbWFuZF9tb2RpZmllcik7Ci0KLSAgICAgIGlmIChpc19sZWZ0
X2tleSkKLSAgICAgICAgewotICAgICAgICAgIGVtYWNzX2V2ZW50LT5tb2RpZmllcnMgfD0gcGFy
c2Vfc29saXRhcnlfbW9kaWZpZXIKLSAgICAgICAgICAgIChuc19jb21tYW5kX21vZGlmaWVyKTsK
LQotICAgICAgICAgIC8qIGlmIHN1cGVyIChkZWZhdWx0KSwgdGFrZSBpbnB1dCBtYW5hZ2VyJ3Mg
d29yZCBzbyB0aGluZ3MgbGlrZQotICAgICAgICAgICAgIGR2b3JhayAvIHF3ZXJ0eSBsYXlvdXQg
d29yayAqLwotICAgICAgICAgIGlmIChFUSAobnNfY29tbWFuZF9tb2RpZmllciwgUXN1cGVyKQot
ICAgICAgICAgICAgICAmJiAhZm5LZXlzeW0KLSAgICAgICAgICAgICAgJiYgW1t0aGVFdmVudCBj
aGFyYWN0ZXJzXSBsZW5ndGhdICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8q
IFhYWDogdGhlIGNvZGUgd2UgZ2V0IHdpbGwgYmUgdW5zaGlmdGVkLCBzbyBpZiB3ZSBoYXZlCi0g
ICAgICAgICAgICAgICAgIGEgc2hpZnQgbW9kaWZpZXIsIG11c3QgY29udmVydCBvdXJzZWx2ZXMg
Ki8KLSAgICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBOU1NoaWZ0S2V5TWFzaykpCi0gICAgICAg
ICAgICAgICAgY29kZSA9IFtbdGhlRXZlbnQgY2hhcmFjdGVyc10gY2hhcmFjdGVyQXRJbmRleDog
MF07Ci0jaWYgMAotICAgICAgICAgICAgICAvKiB0aGlzIGlzIHVnbHkgYW5kIGFsc28gcmVxdWly
ZXMgbGlua2luZyB3L0NhcmJvbiBmcmFtZXdvcmsKLSAgICAgICAgICAgICAgICAgKGZvciBMTUdl
dEtiZFR5cGUpIHNvIGZvciBub3cgbGVhdmUgdGhpcyByYXJlICg/KSBjYXNlCi0gICAgICAgICAg
ICAgICAgIHVuZGVhbHQgd2l0aC4uIGluIGZ1dHVyZSBsb29rIGludG8gQ0dFdmVudCBtZXRob2Rz
ICovCi0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICBsb25nIHNtdiA9IEdldFNjcmlwdE1hbmFnZXJWYXJpYWJsZSAoc21LZXlTY3JpcHQpOwot
ICAgICAgICAgICAgICAgICAgSGFuZGxlIHVjaHJIYW5kbGUgPSBHZXRSZXNvdXJjZQotICAgICAg
ICAgICAgICAgICAgICAoJ3VjaHInLCBHZXRTY3JpcHRWYXJpYWJsZSAoc212LCBzbVNjcmlwdEtl
eXMpKTsKLSAgICAgICAgICAgICAgICAgIFVJbnQzMiBkdW1teSA9IDA7Ci0gICAgICAgICAgICAg
ICAgICBVQ0tleVRyYW5zbGF0ZSAoKFVDS2V5Ym9hcmRMYXlvdXQqKSp1Y2hySGFuZGxlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1t0aGVFdmVudCBjaGFyYWN0ZXJzXSBjaGFy
YWN0ZXJBdEluZGV4OiAwXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtVQ0tl
eUFjdGlvbkRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxhZ3Mg
JiB+TlNDb21tYW5kS2V5TWFzaykgPj4gOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExNR2V0S2JkVHlwZSAoKSwga1VDS2V5VHJhbnNsYXRlTm9EZWFkS2V5c01hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXksIDEsICZkdW1teSwgJmNvZGUpOwot
ICAgICAgICAgICAgICAgICAgY29kZSAmPSAweEZGOwotICAgICAgICAgICAgICAgIH0KLSNlbmRp
ZgotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgIGlzX3JpZ2h0X2tleSA9IChmbGFn
cyAmIE5TUmlnaHRDb250cm9sS2V5TWFzaykgPT0gTlNSaWdodENvbnRyb2xLZXlNYXNrOwotICAg
ICAgaXNfbGVmdF9rZXkgPSAoZmxhZ3MgJiBOU0xlZnRDb250cm9sS2V5TWFzaykgPT0gTlNMZWZ0
Q29udHJvbEtleU1hc2sKLSAgICAgICAgfHwgKCEgaXNfcmlnaHRfa2V5ICYmIChmbGFncyAmIE5T
Q29udHJvbEtleU1hc2spID09IE5TQ29udHJvbEtleU1hc2spOwotCi0gICAgICBpZiAoaXNfcmln
aHRfa2V5KQotICAgICAgICAgIGVtYWNzX2V2ZW50LT5tb2RpZmllcnMgfD0gcGFyc2Vfc29saXRh
cnlfbW9kaWZpZXIKLSAgICAgICAgICAgICAgKEVRIChuc19yaWdodF9jb250cm9sX21vZGlmaWVy
LCBRbGVmdCkKLSAgICAgICAgICAgICAgID8gbnNfY29udHJvbF9tb2RpZmllcgotICAgICAgICAg
ICAgICAgOiBuc19yaWdodF9jb250cm9sX21vZGlmaWVyKTsKLQotICAgICAgaWYgKGlzX2xlZnRf
a2V5KQotICAgICAgICBlbWFjc19ldmVudC0+bW9kaWZpZXJzIHw9IHBhcnNlX3NvbGl0YXJ5X21v
ZGlmaWVyCi0gICAgICAgICAgKG5zX2NvbnRyb2xfbW9kaWZpZXIpOwotCi0gICAgICBpZiAoZmxh
Z3MgJiBOU19GVU5DVElPTl9LRVlfTUFTSyAmJiAhZm5LZXlzeW0pCi0gICAgICAgICAgZW1hY3Nf
ZXZlbnQtPm1vZGlmaWVycyB8PQotICAgICAgICAgICAgcGFyc2Vfc29saXRhcnlfbW9kaWZpZXIg
KG5zX2Z1bmN0aW9uX21vZGlmaWVyKTsKLQotICAgICAgbGVmdF9pc19ub25lID0gTklMUCAobnNf
YWx0ZXJuYXRlX21vZGlmaWVyKQotICAgICAgICB8fCBFUSAobnNfYWx0ZXJuYXRlX21vZGlmaWVy
LCBRbm9uZSk7Ci0KLSAgICAgIGlzX3JpZ2h0X2tleSA9IChmbGFncyAmIE5TUmlnaHRBbHRlcm5h
dGVLZXlNYXNrKQotICAgICAgICA9PSBOU1JpZ2h0QWx0ZXJuYXRlS2V5TWFzazsKLSAgICAgIGlz
X2xlZnRfa2V5ID0gKGZsYWdzICYgTlNMZWZ0QWx0ZXJuYXRlS2V5TWFzaykgPT0gTlNMZWZ0QWx0
ZXJuYXRlS2V5TWFzawotICAgICAgICB8fCAoISBpc19yaWdodF9rZXkKLSAgICAgICAgICAgICYm
IChmbGFncyAmIE5TQWx0ZXJuYXRlS2V5TWFzaykgPT0gTlNBbHRlcm5hdGVLZXlNYXNrKTsKLQot
ICAgICAgaWYgKGlzX3JpZ2h0X2tleSkKLSAgICAgICAgewotICAgICAgICAgIGlmICgoTklMUCAo
bnNfcmlnaHRfYWx0ZXJuYXRlX21vZGlmaWVyKQotICAgICAgICAgICAgICAgfHwgRVEgKG5zX3Jp
Z2h0X2FsdGVybmF0ZV9tb2RpZmllciwgUW5vbmUpCi0gICAgICAgICAgICAgICB8fCAoRVEgKG5z
X3JpZ2h0X2FsdGVybmF0ZV9tb2RpZmllciwgUWxlZnQpICYmIGxlZnRfaXNfbm9uZSkpCi0gICAg
ICAgICAgICAgICYmICFmbktleXN5bSkKLSAgICAgICAgICAgIHsgICAvKiBhY2NlcHQgcHJlLWlu
dGVycCBhbHQgY29tYiAqLwotICAgICAgICAgICAgICBpZiAoW1t0aGVFdmVudCBjaGFyYWN0ZXJz
XSBsZW5ndGhdID4gMCkKLSAgICAgICAgICAgICAgICBjb2RlID0gW1t0aGVFdmVudCBjaGFyYWN0
ZXJzXSBjaGFyYWN0ZXJBdEluZGV4OiAwXTsKLSAgICAgICAgICAgICAgLypIQUNLOiBjbGVhciBs
b25lIHNoaWZ0IG1vZGlmaWVyIHRvIHN0b3AgbmV4dCBpZiBmcm9tIGZpcmluZyAqLwotICAgICAg
ICAgICAgICBpZiAoZW1hY3NfZXZlbnQtPm1vZGlmaWVycyA9PSBzaGlmdF9tb2RpZmllcikKLSAg
ICAgICAgICAgICAgICBlbWFjc19ldmVudC0+bW9kaWZpZXJzID0gMDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbWFjc19ldmVudC0+bW9kaWZpZXJzIHw9IHBh
cnNlX3NvbGl0YXJ5X21vZGlmaWVyCi0gICAgICAgICAgICAgIChFUSAobnNfcmlnaHRfYWx0ZXJu
YXRlX21vZGlmaWVyLCBRbGVmdCkKLSAgICAgICAgICAgICAgID8gbnNfYWx0ZXJuYXRlX21vZGlm
aWVyCi0gICAgICAgICAgICAgICA6IG5zX3JpZ2h0X2FsdGVybmF0ZV9tb2RpZmllcik7Ci0gICAg
ICAgIH0KLQotICAgICAgaWYgKGlzX2xlZnRfa2V5KSAvKiBkZWZhdWx0ID0gbWV0YSAqLwotICAg
ICAgICB7Ci0gICAgICAgICAgaWYgKGxlZnRfaXNfbm9uZSAmJiAhZm5LZXlzeW0pCi0gICAgICAg
ICAgICB7ICAgLyogYWNjZXB0IHByZS1pbnRlcnAgYWx0IGNvbWIgKi8KLSAgICAgICAgICAgICAg
aWYgKFtbdGhlRXZlbnQgY2hhcmFjdGVyc10gbGVuZ3RoXSA+IDApCi0gICAgICAgICAgICAgICAg
Y29kZSA9IFtbdGhlRXZlbnQgY2hhcmFjdGVyc10gY2hhcmFjdGVyQXRJbmRleDogMF07Ci0gICAg
ICAgICAgICAgIC8qSEFDSzogY2xlYXIgbG9uZSBzaGlmdCBtb2RpZmllciB0byBzdG9wIG5leHQg
aWYgZnJvbSBmaXJpbmcgKi8KLSAgICAgICAgICAgICAgaWYgKGVtYWNzX2V2ZW50LT5tb2RpZmll
cnMgPT0gc2hpZnRfbW9kaWZpZXIpCi0gICAgICAgICAgICAgICAgZW1hY3NfZXZlbnQtPm1vZGlm
aWVycyA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBl
bWFjc19ldmVudC0+bW9kaWZpZXJzIHw9Ci0gICAgICAgICAgICAgICAgcGFyc2Vfc29saXRhcnlf
bW9kaWZpZXIgKG5zX2FsdGVybmF0ZV9tb2RpZmllcik7Ci0gICAgICAgIH0KLQotICBpZiAoTlNf
S0VZTE9HKQotICAgIGZwcmludGYgKHN0ZGVyciwgImtleURvd246IGNvZGUgPSV4XHRmbktleSA9
JXhcdGZsYWdzID0gJXhcdG1vZHMgPSAleFxuIiwKLSAgICAgICAgICAgICBjb2RlLCBmbktleXN5
bSwgZmxhZ3MsIGVtYWNzX2V2ZW50LT5tb2RpZmllcnMpOworICAgICAgaWYgKE5TX0tFWUxPRykK
KyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAia2V5RG93bjogY29kZSA9JXhcdGZuS2V5ID0leFx0
ZmxhZ3MgPSAleFx0bW9kcyA9ICV4XG4iLAorICAgICAgICAgICAgICAgICBjb2RlLCBmbktleXN5
bSwgZmxhZ3MsIGVtYWNzX2V2ZW50LT5tb2RpZmllcnMpOwogCi0gICAgICAvKiBpZiBpdCB3YXMg
YSBmdW5jdGlvbiBrZXkgb3IgaGFkIG1vZGlmaWVycywgcGFzcyBpdCBkaXJlY3RseSB0byBlbWFj
cyAqLworICAgICAgLyogSWYgaXQgd2FzIGEgZnVuY3Rpb24ga2V5IG9yIGhhZCBjb250cm9sLWxp
a2UgbW9kaWZpZXJzLCBwYXNzCisgICAgICAgICBpdCBkaXJlY3RseSB0byBFbWFjcy4gICovCiAg
ICAgICBpZiAoZm5LZXlzeW0gfHwgKGVtYWNzX2V2ZW50LT5tb2RpZmllcnMKICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgKGVtYWNzX2V2ZW50LT5tb2RpZmllcnMgIT0gc2hpZnRfbW9kaWZpZXIp
CiAgICAgICAgICAgICAgICAgICAgICAgICYmIFtbdGhlRXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzXSBsZW5ndGhdID4gMCkpCiAvKltbdGhlRXZlbnQgY2hhcmFjdGVyc10gbGVuZ3Ro
XSAqLwogICAgICAgICB7CiAgICAgICAgICAgZW1hY3NfZXZlbnQtPmtpbmQgPSBOT05fQVNDSUlf
S0VZU1RST0tFX0VWRU5UOworICAgICAgICAgIC8qIEZJWE1FOiBXaGF0IGFyZSB0aGUgbmV4dCBm
b3VyIGxpbmVzIHN1cHBvc2VkIHRvIGRvPyAgKi8KICAgICAgICAgICBpZiAoY29kZSA8IDB4MjAp
CiAgICAgICAgICAgICBjb2RlIHw9ICgxPDwyOCl8KDM8PDE2KTsKICAgICAgICAgICBlbHNlIGlm
IChjb2RlID09IDB4N2YpCiAgICAgICAgICAgICBjb2RlIHw9ICgxPDwyOCl8KDM8PDE2KTsKICAg
ICAgICAgICBlbHNlIGlmICghZm5LZXlzeW0pCisgICAgICAgICAgICAvKiBGSVhNRTogVGhpcyBz
ZWVtcyB3cm9uZywgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgICAgICAgICAgICAgIFsweDgw
LMKgMHhGRl0gYXJlIG5vdCBBU0NJSSBjaGFyYWN0ZXJzLiAgQ2Fu4oCZdCB3ZSBqdXN0CisgICAg
ICAgICAgICAgICB1c2UgTVVMVElCWVRFX0NIQVJfS0VZU1RST0tFX0VWRU5UIGhlcmUgZm9yIGFs
bCBraW5kcworICAgICAgICAgICAgICAgb2YgY2hhcmFjdGVycz8gICovCiAgICAgICAgICAgICBl
bWFjc19ldmVudC0+a2luZCA9IGNvZGUgPiAweEZGCiAgICAgICAgICAgICAgID8gTVVMVElCWVRF
X0NIQVJfS0VZU1RST0tFX0VWRU5UIDogQVNDSUlfS0VZU1RST0tFX0VWRU5UOwogCkBAIC01OTk3
LDExICs1OTUyLDMyIEBAIG5vdF9pbl9hcmd2IChOU1N0cmluZyAqYXJnKQogICAgICAgICB9CiAg
ICAgfQogCisgIC8qIElmIHdlIGdldCBoZXJlLCBhIG5vbi1mdW5jdGlvbiBrZXkgd2l0aG91dCBj
b250cm9sLWxpa2UgbW9kaWZpZXJzCisgICAgIHdhcyBoaXQuICBVc2UgaW50ZXJwcmV0S2V5RXZl
bnRzLCB3aGljaCBpbiB0dXJuIHdpbGwgY2FsbAorICAgICBpbnNlcnRUZXh0OyBzZWUKKyAgICAg
aHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvbWFjL2RvY3VtZW50YXRpb24vQ29j
b2EvQ29uY2VwdHVhbC9FdmVudE92ZXJ2aWV3L0hhbmRsaW5nS2V5RXZlbnRzL0hhbmRsaW5nS2V5
RXZlbnRzLmh0bWwuICAqLwogCiAgIGlmIChOU19LRVlMT0cgJiYgIXByb2Nlc3NpbmdDb21wb3Nl
KQogICAgIGZwcmludGYgKHN0ZGVyciwgImtleURvd246IEJlZ2luIGNvbXBvc2Ugc2VxdWVuY2Uu
XG4iKTsKIAorICAvKiBGSVhNRTogaW50ZXJwcmV0S2V5RXZlbnRzIGRvZXNu4oCZdCBzZWVtIHRv
IHNlbmQgaW5zZXJ0VGV4dCBpZiDijJggaXMKKyAgICAgdXNlZCBhcyBzaGlmdC1saWtlIG1vZGlm
aWVyLCBhdCBsZWFzdCBvbiBFbMKgQ2FwaXRhbi4gIE1hc2sgaXQKKyAgICAgb3V0LiAgVGhpcyBz
aG91bGRu4oCZdCBiZSBuZWVkZWQgdGhvdWdoOyB3ZSBzaG91bGQgZmlndXJlIG91dCB3aGF0Cisg
ICAgIHRoZSBjb3JyZWN0IHdheSBvZiBoYW5kbGluZyDijJggaXMuICAqLworICBpZiAoW3RoZUV2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKKyAgICB0aGVFdmVudCA9IFtO
U0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6W3RoZUV2ZW50IHR5cGVdCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2F0aW9uOlt0aGVFdmVudCBsb2NhdGlvbkluV2luZG93XQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczpbdGhlRXZlbnQgbW9kaWZpZXJG
bGFnc10gJiB+TlNDb21tYW5kS2V5TWFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVzdGFtcDpbdGhlRXZlbnQgdGltZXN0YW1wXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpbmRvd051bWJlcjpbdGhlRXZlbnQgd2luZG93TnVtYmVyXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dDpbdGhlRXZlbnQgY29udGV4dF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6W3RoZUV2ZW50IGNoYXJhY3RlcnNdCisgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6W3RoZUV2ZW50
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc10KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpc0FSZXBlYXQ6W3RoZUV2ZW50IGlzQVJlcGVhdF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtleUNvZGU6W3RoZUV2ZW50IGtleUNvZGVdXTsKKwogICBwcm9jZXNzaW5n
Q29tcG9zZSA9IFlFUzsKKyAgLyogRklYTUU6IFVzZSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
dGhlRXZlbnRdPyAgKi8KICAgW25zRXZBcnJheSBhZGRPYmplY3Q6IHRoZUV2ZW50XTsKICAgW3Nl
bGYgaW50ZXJwcmV0S2V5RXZlbnRzOiBuc0V2QXJyYXldOwogICBbbnNFdkFycmF5IHJlbW92ZU9i
amVjdDogdGhlRXZlbnRdOwotLSAKMi43LjQKCg==
--001a11c2346219234e052f479308--