<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>124442</bug_id>
          
          <creation_ts>2013-11-15 16:41:21 -0800</creation_ts>
          <short_desc>Support exporting symmetric keys as JWK</short_desc>
          <delta_ts>2013-11-15 23:08:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>951274</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-15 16:41:21 -0800</bug_when>
    <thetext>Support exporting HMAC and AES keys as JWK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951279</commentid>
    <comment_count>1</comment_count>
      <attachid>217103</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-15 16:55:24 -0800</bug_when>
    <thetext>Created attachment 217103
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951280</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-15 16:56:55 -0800</bug_when>
    <thetext>Attachment 217103 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/crypto/subtle/aes-export-key-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/aes-export-key.html&apos;, u&apos;LayoutTests/crypto/subtle/hmac-export-key-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/hmac-export-key.html&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/runtime/JSONObject.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/text/Base64.cpp&apos;, u&apos;Source/WTF/wtf/text/Base64.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h&apos;, u&apos;Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoKey.h&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeyHMAC.h&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeySerializationRaw.cpp&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeySerializationRaw.h&apos;]&quot; exit_code: 1
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h:56:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h:68:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h:69:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h:69:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h:70:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h:71:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.h:72:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp:443:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp:495:  Extra space between case and CryptoKeyUsageSign  [whitespace/declaration] [3]
Total errors found: 10 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951281</commentid>
    <comment_count>3</comment_count>
      <attachid>217103</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-15 16:57:55 -0800</bug_when>
    <thetext>Comment on attachment 217103
proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=217103&amp;action=review

&gt; Source/WebCore/ChangeLog:8
&gt; +        Some error handling behaviors are not super sensible

This sentence feels odd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951336</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-15 23:08:36 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r159377&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217103</attachid>
            <date>2013-11-15 16:55:24 -0800</date>
            <delta_ts>2013-11-15 16:57:54 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>ExportSymmetricAsJWK.txt</filename>
            <type>text/plain</type>
            <size>35705</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5MzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTExLTE1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAg
ICAgIFN1cHBvcnQgZXhwb3J0aW5nIHN5bW1ldHJpYyBrZXlzIGFzIEpXSworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NDQyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
aDogRXhwb3J0IEpTT05TdHJpbmdpZnkuCisKIDIwMTMtMTEtMTQgIERhdmlkIEZhcmxlciAgPGRm
YXJsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvcHkgQVNBTiBmbGFnIHNldHRpbmdzIHRvIFdl
YkNvcmUgYW5kIEphdmFTY3JpcHRDb3JlIGludGVybWVkaWF0ZSBidWlsZCB0b29scwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gMTU5
MzQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIEpTT05QYXJzZShFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmKTsKLSAgICBTdHJpbmcgSlNPTlN0cmluZ2lmeShFeGVjU3RhdGUqLCBKU1ZhbHVlLCB1
bnNpZ25lZCBpbmRlbnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBKU09OU3RyaW5n
aWZ5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIHVuc2lnbmVkIGluZGVudCk7CiAKICAgICB2b2lkIGVz
Y2FwZVN0cmluZ1RvQnVpbGRlcihTdHJpbmdCdWlsZGVyJiwgY29uc3QgU3RyaW5nJik7CiAgICAg
CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0No
YW5nZUxvZwkocmV2aXNpb24gMTU5MzcwKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0xMS0xNSAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGV4cG9ydGluZyBzeW1tZXRyaWMg
a2V5cyBhcyBKV0sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDQ0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEJhc2U2NFVSTCBlbmNvZGluZyBkb2Vzbid0IHVzZSAnPScgcGFkZGluZywgYW5kIGRvZXNu
J3QgbmVlZCBhbnkgb3RoZXIgb3B0aW9ucy4KKyAgICAgICAgQWRkZWQgdGhpcyBtb2RlIGZvciBl
bmNvZGUsIGFuZCByZW1vdmVkIHBvbGljeSBhcmd1bWVudHMgZnJvbSBleHBvc2VkIGZ1bmN0aW9u
cy4KKworICAgICAgICAqIHd0Zi90ZXh0L0Jhc2U2NC5jcHA6CisgICAgICAgIChXVEY6OmJhc2U2
NEVuY29kZUludGVybmFsKToKKyAgICAgICAgKFdURjo6YmFzZTY0VVJMRW5jb2RlKToKKyAgICAg
ICAgKFdURjo6YmFzZTY0VVJMRGVjb2RlKToKKyAgICAgICAgKiB3dGYvdGV4dC9CYXNlNjQuaDoK
KyAgICAgICAgKFdURjo6YmFzZTY0VVJMRW5jb2RlKToKKwogMjAxMy0xMS0xNSAgTWFyayBIYWhu
ZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBWVGFibGVT
cGVjdHJ1bQpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAkocmV2aXNpb24gMTU5MzQ0KQorKysg
U291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsOSAr
MTQ3LDEzIEBAIGlubGluZSB2b2lkIGJhc2U2NEVuY29kZUludGVybmFsKGNvbnN0IGMKICAgICB9
CiAKICAgICAvLyBBZGQgcGFkZGluZwotICAgIHdoaWxlIChkaWR4IDwgb3V0LnNpemUoKSkgewot
ICAgICAgICBvdXRbZGlkeF0gPSAnPSc7Ci0gICAgICAgICsrZGlkeDsKKyAgICBpZiAocG9saWN5
ID09IEJhc2U2NFVSTFBvbGljeSkKKyAgICAgICAgb3V0LnJlc2l6ZShkaWR4KTsKKyAgICBlbHNl
IHsKKyAgICAgICAgd2hpbGUgKGRpZHggPCBvdXQuc2l6ZSgpKSB7CisgICAgICAgICAgICBvdXRb
ZGlkeF0gPSAnPSc7CisgICAgICAgICAgICArK2RpZHg7CisgICAgICAgIH0KICAgICB9CiB9CiAK
QEAgLTE2NSwxNiArMTY5LDE2IEBAIHZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IGNoYXIqIGRhdGEs
IHVuc2kKICAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChkYXRhLCBsZW4sIG91dCwgcG9saWN5LCBi
YXNlNjRFbmNNYXApOwogfQogCi1TdHJpbmcgYmFzZTY0VVJMRW5jb2RlKGNvbnN0IGNoYXIqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSkKK1N0cmluZyBi
YXNlNjRVUkxFbmNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgYmFzZTY0RW5jb2RlSW50ZXJuYWwoZGF0YSwgbGVu
Z3RoLCByZXN1bHQsIHBvbGljeSwgYmFzZTY0VVJMRW5jTWFwKTsKKyAgICBiYXNlNjRFbmNvZGVJ
bnRlcm5hbChkYXRhLCBsZW5ndGgsIHJlc3VsdCwgQmFzZTY0VVJMUG9saWN5LCBiYXNlNjRVUkxF
bmNNYXApOwogICAgIHJldHVybiBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7
CiB9CiAKLXZvaWQgYmFzZTY0VVJMRW5jb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
biwgVmVjdG9yPGNoYXI+JiBvdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3kpCit2b2lkIGJh
c2U2NFVSTEVuY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFZlY3RvcjxjaGFy
PiYgb3V0KQogewotICAgIGJhc2U2NEVuY29kZUludGVybmFsKGRhdGEsIGxlbiwgb3V0LCBwb2xp
Y3ksIGJhc2U2NFVSTEVuY01hcCk7CisgICAgYmFzZTY0RW5jb2RlSW50ZXJuYWwoZGF0YSwgbGVu
LCBvdXQsIEJhc2U2NFVSTFBvbGljeSwgYmFzZTY0VVJMRW5jTWFwKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KQEAgLTI2NSwxMiArMjY5LDEyIEBAIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2kKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWw8Y2hhcj4o
ZGF0YSwgbGVuLCBvdXQsIHBvbGljeSwgYmFzZTY0RGVjTWFwKTsKIH0KIAotYm9vbCBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgU3RyaW5nJiBpbiwgVmVjdG9yPGNoYXI+JiBvdXQsIEJhc2U2NERlY29k
ZVBvbGljeSBwb2xpY3kpCitib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBTdHJpbmcmIGluLCBW
ZWN0b3I8Y2hhcj4mIG91dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWw8VUNo
YXI+KGluLmNoYXJhY3RlcnMoKSwgaW4ubGVuZ3RoKCksIG91dCwgcG9saWN5LCBiYXNlNjRVUkxE
ZWNNYXApOworICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbDxVQ2hhcj4oaW4uY2hhcmFj
dGVycygpLCBpbi5sZW5ndGgoKSwgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyLCBi
YXNlNjRVUkxEZWNNYXApOwogfQogCi1ib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8
Y2hhcj4mIGluLCBWZWN0b3I8Y2hhcj4mIG91dCwgQmFzZTY0RGVjb2RlUG9saWN5IHBvbGljeSkK
K2Jvb2wgYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFy
PiYgb3V0KQogewogICAgIG91dC5jbGVhcigpOwogCkBAIC0yNzgsMTIgKzI4MiwxMiBAQCBib29s
IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mCiAgICAgaWYgKGluLnNpemUoKSA+
IFVJTlRfTUFYKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gYmFzZTY0RGVj
b2RlSW50ZXJuYWw8Y2hhcj4oaW4uZGF0YSgpLCBpbi5zaXplKCksIG91dCwgcG9saWN5LCBiYXNl
NjRVUkxEZWNNYXApOworICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbDxjaGFyPihpbi5k
YXRhKCksIGluLnNpemUoKSwgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyLCBiYXNl
NjRVUkxEZWNNYXApOwogfQogCi1ib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW4sIFZlY3RvcjxjaGFyPiYgb3V0LCBCYXNlNjREZWNvZGVQb2xpY3kgcG9s
aWN5KQorYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVu
LCBWZWN0b3I8Y2hhcj4mIG91dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWw8
Y2hhcj4oZGF0YSwgbGVuLCBvdXQsIHBvbGljeSwgYmFzZTY0VVJMRGVjTWFwKTsKKyAgICByZXR1
cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWw8Y2hhcj4oZGF0YSwgbGVuLCBvdXQsIEJhc2U2NEZhaWxP
bkludmFsaWRDaGFyYWN0ZXIsIGJhc2U2NFVSTERlY01hcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCShyZXZpc2lvbiAxNTkzNDQpCisrKyBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw4IEBAIG5h
bWVzcGFjZSBXVEYgewogCiBlbnVtIEJhc2U2NEVuY29kZVBvbGljeSB7CiAgICAgQmFzZTY0RG9O
b3RJbnNlcnRMRnMsCi0gICAgQmFzZTY0SW5zZXJ0TEZzCisgICAgQmFzZTY0SW5zZXJ0TEZzLAor
ICAgIEJhc2U2NFVSTFBvbGljeSAvLyBObyBwYWRkaW5nLCBubyBMRnMuCiB9OwogCiBlbnVtIEJh
c2U2NERlY29kZVBvbGljeSB7CkBAIC04MSwzNSArODIsMzUgQEAgaW5saW5lIFN0cmluZyBiYXNl
NjRFbmNvZGUoY29uc3QgQ1N0cmluZwogLy8gVGhpcyBmb3JtYXQgdXNlcyAnLScgYW5kICdfJyBp
bnN0ZWFkIG9mICcrJyBhbmQgJy8nIHJlc3BlY3RpdmVseS4KIC8vID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CiAKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJhc2U2NFVSTEVuY29kZShj
b25zdCBjaGFyKiwgdW5zaWduZWQsIFZlY3RvcjxjaGFyPiYsIEJhc2U2NEVuY29kZVBvbGljeSA9
IEJhc2U2NERvTm90SW5zZXJ0TEZzKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJhc2U2NFVS
TEVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mLCBWZWN0b3I8Y2hhcj4mLCBCYXNlNjRFbmNvZGVQ
b2xpY3kgPSBCYXNlNjREb05vdEluc2VydExGcyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBi
YXNlNjRVUkxFbmNvZGUoY29uc3QgQ1N0cmluZyYsIFZlY3RvcjxjaGFyPiYsIEJhc2U2NEVuY29k
ZVBvbGljeSA9IEJhc2U2NERvTm90SW5zZXJ0TEZzKTsKLVdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgYmFzZTY0VVJMRW5jb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgQmFzZTY0RW5jb2RlUG9s
aWN5ID0gQmFzZTY0RG9Ob3RJbnNlcnRMRnMpOwotV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBi
YXNlNjRVUkxFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgQmFzZTY0RW5jb2RlUG9saWN5ID0g
QmFzZTY0RG9Ob3RJbnNlcnRMRnMpOwotV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBiYXNlNjRV
UkxFbmNvZGUoY29uc3QgQ1N0cmluZyYsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NERvTm90
SW5zZXJ0TEZzKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJhc2U2NFVSTEVuY29kZShjb25z
dCBjaGFyKiwgdW5zaWduZWQsIFZlY3RvcjxjaGFyPiYpOworV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgYmFzZTY0VVJMRW5jb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFZlY3RvcjxjaGFyPiYpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYmFzZTY0VVJMRW5jb2RlKGNvbnN0IENTdHJpbmcmLCBW
ZWN0b3I8Y2hhcj4mKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgYmFzZTY0VVJMRW5jb2Rl
KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGJhc2U2
NFVSTEVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgYmFzZTY0VVJMRW5jb2RlKGNvbnN0IENTdHJpbmcmKTsKIAotV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxjaGFyPiYsIEJhc2U2
NERlY29kZVBvbGljeSA9IEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXIpOwotV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFZlY3Rv
cjxjaGFyPiYsIEJhc2U2NERlY29kZVBvbGljeSA9IEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0
ZXIpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0VVJMRGVjb2RlKGNvbnN0IGNoYXIq
LCB1bnNpZ25lZCwgVmVjdG9yPGNoYXI+JiwgQmFzZTY0RGVjb2RlUG9saWN5ID0gQmFzZTY0RmFp
bE9uSW52YWxpZENoYXJhY3Rlcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjRVUkxE
ZWNvZGUoY29uc3QgU3RyaW5nJiwgVmVjdG9yPGNoYXI+Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgVmVjdG9yPGNoYXI+Jik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgY2hhciosIHVu
c2lnbmVkLCBWZWN0b3I8Y2hhcj4mKTsKIAotaW5saW5lIHZvaWQgYmFzZTY0VVJMRW5jb2RlKGNv
bnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYgb3V0LCBCYXNlNjRFbmNvZGVQb2xp
Y3kgcG9saWN5KQoraW5saW5lIHZvaWQgYmFzZTY0VVJMRW5jb2RlKGNvbnN0IFZlY3RvcjxjaGFy
PiYgaW4sIFZlY3RvcjxjaGFyPiYgb3V0KQogewotICAgIGJhc2U2NFVSTEVuY29kZShpbi5kYXRh
KCksIGluLnNpemUoKSwgb3V0LCBwb2xpY3kpOworICAgIGJhc2U2NFVSTEVuY29kZShpbi5kYXRh
KCksIGluLnNpemUoKSwgb3V0KTsKIH0KIAotaW5saW5lIHZvaWQgYmFzZTY0VVJMRW5jb2RlKGNv
bnN0IENTdHJpbmcmIGluLCBWZWN0b3I8Y2hhcj4mIG91dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBv
bGljeSkKK2lubGluZSB2b2lkIGJhc2U2NFVSTEVuY29kZShjb25zdCBDU3RyaW5nJiBpbiwgVmVj
dG9yPGNoYXI+JiBvdXQpCiB7Ci0gICAgYmFzZTY0VVJMRW5jb2RlKGluLmRhdGEoKSwgaW4ubGVu
Z3RoKCksIG91dCwgcG9saWN5KTsKKyAgICBiYXNlNjRVUkxFbmNvZGUoaW4uZGF0YSgpLCBpbi5s
ZW5ndGgoKSwgb3V0KTsKIH0KIAotaW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGUoY29uc3Qg
VmVjdG9yPGNoYXI+JiBpbiwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSkKK2lubGluZSBTdHJp
bmcgYmFzZTY0VVJMRW5jb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4pCiB7Ci0gICAgcmV0dXJu
IGJhc2U2NFVSTEVuY29kZShpbi5kYXRhKCksIGluLnNpemUoKSwgcG9saWN5KTsKKyAgICByZXR1
cm4gYmFzZTY0VVJMRW5jb2RlKGluLmRhdGEoKSwgaW4uc2l6ZSgpKTsKIH0KIAotaW5saW5lIFN0
cmluZyBiYXNlNjRVUkxFbmNvZGUoY29uc3QgQ1N0cmluZyYgaW4sIEJhc2U2NEVuY29kZVBvbGlj
eSBwb2xpY3kpCitpbmxpbmUgU3RyaW5nIGJhc2U2NFVSTEVuY29kZShjb25zdCBDU3RyaW5nJiBp
bikKIHsKLSAgICByZXR1cm4gYmFzZTY0VVJMRW5jb2RlKGluLmRhdGEoKSwgaW4ubGVuZ3RoKCks
IHBvbGljeSk7CisgICAgcmV0dXJuIGJhc2U2NFVSTEVuY29kZShpbi5kYXRhKCksIGluLmxlbmd0
aCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NTkzNzApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0MCBAQAorMjAxMy0xMS0xNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KKworICAgICAgICBTdXBwb3J0IGV4cG9ydGluZyBzeW1tZXRyaWMga2V5cyBhcyBKV0sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDQ0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgZXJyb3Ig
aGFuZGxpbmcgYmVoYXZpb3JzIGFyZSBub3Qgc3VwZXIgc2Vuc2libGUKKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oOiAKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVVc2FnZXMpOiBVcGRhdGVk
IGEgY29tbWVudCB3aXRoIGEgYmV0dGVyIGxpbmsuCisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0
b0tleVNlcmlhbGl6YXRpb25KV0s6OmJ1aWxkSlNPTkZvck9jdGV0U2VxdWVuY2UpOiBBIGhlbHBl
ciB0byBidWlsZGluZyBKV0suCisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6
YXRpb25KV0s6OmFkZFRvSlNPTik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9L
ZXlTZXJpYWxpemF0aW9uSldLOjphZGRCb29sVG9KU09OKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmFkZEpXS0FsZ29yaXRobVRvSlNPTik6
IERpdHRvLiBUaGUgY29kZSBmb3IKKyAgICAgICAgbWFwcGluZyBpcyBteSBiZXN0IGd1ZXNzLCB0
aGlzIGFsbCBuZWVkcyB0byBiZSBzcGVjaWZpZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0
b0tleVNlcmlhbGl6YXRpb25KV0s6OmFkZEpXS1VzZVRvSlNPTik6IEEgaGVscGVyIHRvIGJ1aWxk
aW5nIEpXSy4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6
c2VyaWFsaXplKTogQnVpbGQgYSBKU09OIHN0cmluZyBmb3IgdGhlIGtleS4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTU3VidGxlQ3J5cHRvOjppbXBvcnRLZXkpOiBVcGRhdGVkIGEgY29tbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpleHBvcnRLZXkpOiBVc2UgQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbiAoYWxzbyBmb3IgcmF3IGtleXMsCisgICAgICAgIGZvciBjb25zaXN0ZW5jeSkuCisK
KyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXk6OmFsZ29yaXRobUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5Ojp1
c2FnZXNCaXRtYXApOgorICAgICAgICBFeHBvc2VkIGRhdGEgbmVlZGVkIGZvciBidWlsZGluZyBK
V0sgKGl0IHVzZWQgdG8gYmUgb25seSBleHBvc2VkIGluIGEgZm9ybSBzdWl0YWJsZQorICAgICAg
ICBmb3IgRE9NIGFjY2Vzc29ycykuCisKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlI
TUFDLmg6IERpdHRvLCBhZGRlZCBhbiBhY2Nlc3NvciBmb3IgSldLLgorCisgICAgICAgICogY3J5
cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHA6IChXZWJDb3JlOjpDcnlwdG9L
ZXlTZXJpYWxpemF0aW9uUmF3OjpzZXJpYWxpemUpOgorICAgICAgICAqIGNyeXB0by9rZXlzL0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25SYXcuaDoKKyAgICAgICAgTW92ZWQgZnJvbSBKU1N1YnRsZUNy
eXB0b0N1c3RvbS5jcHAgZm9yIGNvbnNpc3RlbmN5LgorCiAyMDEzLTExLTE0ICBEYXZpZCBGYXJs
ZXIgIDxkZmFybGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3B5IEFTQU4gZmxhZyBzZXR0aW5n
cyB0byBXZWJDb3JlIGFuZCBKYXZhU2NyaXB0Q29yZSBpbnRlcm1lZGlhdGUgYnVpbGQgdG9vbHMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bkpXSy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAkocmV2aXNpb24gMTU5MzQ0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDE3IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSG1h
Y1BhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtUnNhU3NhS2V5UGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5
LmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5o
IgogI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmgiCiAjaW5jbHVkZSAiQ3J5
cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9KU09OT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtMjM2LDcg
KzI0MSw3IEBAIHZvaWQgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmMKICAgICB9
CiAKICAgICAvLyBGSVhNRTogQ3J5cHRvS2V5VXNhZ2VEZXJpdmVLZXksIENyeXB0b0tleVVzYWdl
RGVyaXZlQml0cyAtIHNob3VsZCB0aGVzZSBiZSBpbXBsaWNpdGx5IGFsbG93ZWQgYnkgYW55IEpX
SyB1c2UgdmFsdWU/Ci0gICAgLy8gRklYTUU6IFRoZXJlIGlzIGEgbWlzbWF0Y2ggYmV0d2VlbiBz
cGVjcyBmb3Igd3JhcC91bndyYXAgdXNhZ2VzLCA8aHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZl
cy9QdWJsaWMvcHVibGljLXdlYmNyeXB0by8yMDEzTm92LzAwMTYuaHRtbD4uCisgICAgLy8gRklY
TUU6ICJ1c2UiIG1hcHBpbmcgaXMgaW4gZmx1eCwgc2VlIDxodHRwczovL3d3dy53My5vcmcvQnVn
cy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTIzNzk2Pi4KICAgICBpZiAoandrVXNlU3RyaW5nID09
ICJzaWciKQogICAgICAgICBzdWdnZXN0ZWRVc2FnZSA9IHN1Z2dlc3RlZFVzYWdlICYgKENyeXB0
b0tleVVzYWdlU2lnbiB8IENyeXB0b0tleVVzYWdlVmVyaWZ5KTsKICAgICBlbHNlIGlmIChqd2tV
c2VTdHJpbmcgPT0gImVuYyIpCkBAIC00MTEsNiArNDE2LDEyMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3ZvaWQg
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpidWlsZEpTT05Gb3JPY3RldFNlcXVlbmNlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXlEYXRhLCBKU09iamVjdCogcmVz
dWx0KQoreworICAgIGFkZFRvSlNPTihleGVjLCByZXN1bHQsICJrdHkiLCAib2N0Iik7CisgICAg
YWRkVG9KU09OKGV4ZWMsIHJlc3VsdCwgImsiLCBiYXNlNjRVUkxFbmNvZGUoa2V5RGF0YSkpOwor
fQorCit2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6YWRkVG9KU09OKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIElkZW50aWZpZXIgaWRlbnRp
Zmllcigmdm0sIGtleSk7CisgICAganNvbi0+cHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBqc1N0
cmluZyhleGVjLCB2YWx1ZSkpOworfQorCit2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpX
Szo6YWRkQm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBj
aGFyKiBrZXksIGJvb2wgdmFsdWUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOworICAgIGpzb24tPnB1dERpcmVjdCh2bSwg
aWRlbnRpZmllciwganNCb29sZWFuKHZhbHVlKSk7Cit9CisKK3ZvaWQgSlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjphZGRKV0tBbGdvcml0aG1Ub0pTT04oRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCoganNvbiwgY29uc3QgQ3J5cHRvS2V5JiBrZXkpCit7CisgICAgU3RyaW5nIGp3a0FsZ29y
aXRobTsKKyAgICBzd2l0Y2ggKGtleS5hbGdvcml0aG1JZGVudGlmaWVyKCkpIHsKKyAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgorICAgICAgICAgICAgc3dpdGNo
ICh0b0NyeXB0b0tleUhNQUMoa2V5KS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKSB7CisgICAg
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CisgICAgICAg
ICAgICAgICAgaWYgKHRvQ3J5cHRvS2V5SE1BQyhrZXkpLmtleSgpLnNpemUoKSAqIDggPj0gMjU2
KQorICAgICAgICAgICAgICAgICAgICBqd2tBbGdvcml0aG0gPSAiSFMyNTYiOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMzg0OgorICAgICAgICAgICAgICAgIGlmICh0b0NyeXB0b0tleUhNQUMoa2V5KS5rZXko
KS5zaXplKCkgKiA4ID49IDM4NCkKKyAgICAgICAgICAgICAgICAgICAgandrQWxnb3JpdGhtID0g
IkhTMzg0IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgICAgICAgICBpZiAodG9Dcnlw
dG9LZXlITUFDKGtleSkua2V5KCkuc2l6ZSgpICogOCA+PSA1MTIpCisgICAgICAgICAgICAgICAg
ICAgIGp3a0FsZ29yaXRobSA9ICJIUzUxMiI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NCQzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9DcnlwdG9LZXlBRVMoa2V5KS5rZXko
KS5zaXplKCkgKiA4KSB7CisgICAgICAgICAgICBjYXNlIDEyODoKKyAgICAgICAgICAgICAgICBq
d2tBbGdvcml0aG0gPSAiQTEyOENCQyI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDE5MjoKKyAgICAgICAgICAgICAgICBqd2tBbGdvcml0aG0gPSAiQTE5MkNCQyI7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI1NjoKKyAgICAgICAg
ICAgICAgICBqd2tBbGdvcml0aG0gPSAiQTI1NkNCQyI7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChqd2tBbGdvcml0aG0uaXNOdWxsKCkp
IHsKKyAgICAgICAgLy8gVGhlIHNwZWMgZG9lc24ndCBjdXJyZW50bHkgdGVsbCB3aGV0aGVyIGV4
cG9ydCBzaG91bGQgZmFpbCwgb3IganVzdCBza2lwICJhbGciICh3aGljaCBpcyBhbiBvcHRpb25h
bCBrZXkgaW4gSldLKS4KKyAgICAgICAgLy8gUGVyaGFwcyB0aGlzIHNob3VsZCBkZXBlbmQgb24g
d2hldGhlciB0aGUga2V5IGlzIGV4dHJhY3RhYmxlPworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCAiS2V5IGFsZ29yaXRobSBhbmQgc2l6ZSBkbyBub3QgbWFwIHRvIGFueSBKV0sgYWxnb3Jp
dGhtIGlkZW50aWZpZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFRvSlNP
TihleGVjLCBqc29uLCAiYWxnIiwgandrQWxnb3JpdGhtKTsKK30KKwordm9pZCBKU0NyeXB0b0tl
eVNlcmlhbGl6YXRpb25KV0s6OmFkZEpXS1VzZVRvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBqc29uLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCit7CisgICAgLy8gRklYTUU6ICJ1c2Ui
IG1hcHBpbmcgaXMgaW4gZmx1eCwgc2VlIDxodHRwczovL3d3dy53My5vcmcvQnVncy9QdWJsaWMv
c2hvd19idWcuY2dpP2lkPTIzNzk2Pi4KKyAgICBzd2l0Y2ggKHVzYWdlcykgeworICAgIGNhc2Ug
Q3J5cHRvS2V5VXNhZ2VFbmNyeXB0IHwgQ3J5cHRvS2V5VXNhZ2VEZWNyeXB0IHwgQ3J5cHRvS2V5
VXNhZ2VXcmFwS2V5IHwgQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXk6CisgICAgICAgIGFkZFRvSlNP
TihleGVjLCBqc29uLCAidXNlIiwgImVuYyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlICBD
cnlwdG9LZXlVc2FnZVNpZ24gfCAgQ3J5cHRvS2V5VXNhZ2VWZXJpZnk6CisgICAgICAgIGFkZFRv
SlNPTihleGVjLCBqc29uLCAidXNlIiwgInNpZyIpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiS2V5IHVzYWdlcyBjYW5ub3QgYmUg
cmVwcmVzZW50ZWQgaW4gSldLLiBPbmx5IHR3byB2YXJpYW50cyBhcmUgc3VwcG9ydGVkOiBzaWdu
K3ZlcmlmeSBhbmQgZW5jcnlwdCtkZWNyeXB0K3dyYXBLZXkrdW53cmFwS2V5Iik7CisgICAgfQor
fQorCitTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpzZXJpYWxpemUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmIGtleSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4ga2V5RGF0YSA9IGtleS5leHBvcnREYXRhKCk7CisgICAgaWYgKCFrZXlE
YXRhKSB7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgaGFwcGVuIG9uY2UgYWxsIGtleSB0
eXBlcyBpbXBsZW1lbnQgZXhwb3J0RGF0YSgpLgorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCAiS2V5IGRvZXNuJ3Qgc3VwcG9ydCBleHBvcnRLZXkiKTsKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIH0KKworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjKTsKKworICAgIGFkZEpXS0FsZ29yaXRobVRvSlNPTihleGVjLCByZXN1bHQsIGtleSk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICBhZGRCb29sVG9KU09OKGV4ZWMsIHJlc3VsdCwgImV4dHJhY3RhYmxlIiwga2V5LmV4
dHJhY3RhYmxlKCkpOworCisgICAgYWRkSldLVXNlVG9KU09OKGV4ZWMsIHJlc3VsdCwga2V5LnVz
YWdlc0JpdG1hcCgpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIGlmIChpc0NyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlKCpr
ZXlEYXRhKSkKKyAgICAgICAgYnVpbGRKU09ORm9yT2N0ZXRTZXF1ZW5jZShleGVjLCB0b0NyeXB0
b0tleURhdGFPY3RldFNlcXVlbmNlKCprZXlEYXRhKS5vY3RldFNlcXVlbmNlKCksIHJlc3VsdCk7
CisgICAgZWxzZSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJLZXkgZG9lc24ndCBz
dXBwb3J0IGV4cG9ydEtleSIpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAg
IEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworCisgICAgcmV0dXJuIEpTT05TdHJpbmdp
ZnkoZXhlYywgcmVzdWx0LCA0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaAkocmV2aXNp
b24gMTU5MzQ0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSlNP
YmplY3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM7CitjbGFzcyBDcnlwdG9LZXk7CiAKIGNsYXNzIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bkpXSyBGSU5BTCA6IHB1YmxpYyBDcnlwdG9LZXlTZXJpYWxpemF0aW9uIHsKIFdURl9NQUtFX05P
TkNPUFlBQkxFKEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyk7CkBAIC01Miw2ICs1MywxMSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0soKTsK
IAorICAgIHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBDcnlwdG9LZXkmKTsKKworcHJpdmF0ZToKKyAgICBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0soSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKKwogICAgIHZpcnR1YWwgYm9vbCBy
ZWNvbmNpbGVBbGdvcml0aG0oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4mLCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mKSBjb25zdCBPVkVSUklERTsK
IAogICAgIHZpcnR1YWwgdm9pZCByZWNvbmNpbGVVc2FnZXMoQ3J5cHRvS2V5VXNhZ2UmKSBjb25z
dCBPVkVSUklERTsKQEAgLTU5LDggKzY1LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IGtleURhdGEoKSBjb25zdCBPVkVSUklERTsKIAot
cHJpdmF0ZToKLSAgICBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0soSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBidWlsZEpTT05Gb3JPY3RldFNlcXVl
bmNlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8Y2hhcj4mLCBKU0M6OkpTT2Jq
ZWN0KiByZXN1bHQpOworICAgIHN0YXRpYyB2b2lkIGFkZEpXS0FsZ29yaXRobVRvSlNPTihKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU09iamVjdCosIGNvbnN0IENyeXB0b0tleSYga2V5KTsK
KyAgICBzdGF0aWMgdm9pZCBhZGRKV0tVc2VUb0pTT04oSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6SlNPYmplY3QqLCBDcnlwdG9LZXlVc2FnZSk7CisgICAgc3RhdGljIHZvaWQgYWRkVG9KU09O
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTT2JqZWN0KiwgY29uc3QgY2hhcioga2V5LCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRCb29sVG9KU09OKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTT2JqZWN0KiwgY29uc3QgY2hhcioga2V5LCBib29sIHZh
bHVlKTsKIAogICAgIGJvb2wga2V5U2l6ZUlzVmFsaWQoc2l6ZV90IHNpemVJbkJpdHMpIGNvbnN0
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBrZXlEYXRhT2N0ZXRTZXF1ZW5j
ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlw
dG9DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAkocmV2aXNpb24gMTU5MzQ0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5
RGF0YS5oIgotI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmgiCi0jaW5jbHVk
ZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCkBAIC00NTAsNyArNDQ4LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6aW1w
b3J0S2V5KEpTQzo6RQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQiKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGltcG9y
dCIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKQEAgLTUzMiwyNiAr
NTMwLDI5IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmV4cG9ydEtleShKU0M6OkUKICAgICAg
ICAgcmV0dXJuIHByb21pc2U7CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tl
eURhdGE+IGtleURhdGEgPSBrZXktPmV4cG9ydERhdGEoKTsKLSAgICBpZiAoIWtleURhdGEpIHsK
LSAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCBoYXBwZW4gb25jZSBhbGwga2V5IHR5cGVzIGlt
cGxlbWVudCBleHBvcnREYXRhKCkuCi0gICAgICAgIHByb21pc2VXcmFwcGVyLT5yZWplY3QobnVs
bHB0cik7Ci0gICAgICAgIHJldHVybiBwcm9taXNlOwotICAgIH0KLQogICAgIHN3aXRjaCAoa2V5
Rm9ybWF0KSB7Ci0gICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlJhdzoKLSAgICAgICAgaWYgKGlz
Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UoKmtleURhdGEpKSB7Ci0gICAgICAgICAgICBWZWN0
b3I8dW5zaWduZWQgY2hhcj4gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3Rv
cih0b0NyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlKCprZXlEYXRhKS5vY3RldFNlcXVlbmNlKCkp
OworICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpSYXc6IHsKKyAgICAgICAgVmVjdG9yPHVuc2ln
bmVkIGNoYXI+IHJlc3VsdDsKKyAgICAgICAgaWYgKENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXc6
OnNlcmlhbGl6ZSgqa2V5LCByZXN1bHQpKQogICAgICAgICAgICAgcHJvbWlzZVdyYXBwZXItPmZ1
bGZpbGwocmVzdWx0KTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBtX2ltcGwtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJj
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJLZXkgY2Fubm90IGJlIGV4cG9ydGVkIHRvIHJhdyBmb3Jt
YXQiKTsKICAgICAgICAgICAgIHByb21pc2VXcmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpK
V0s6IHsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpX
Szo6c2VyaWFsaXplKGV4ZWMsICprZXkpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgQ1N0cmluZyB1
dGY4U3RyaW5nID0gcmVzdWx0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgICAgIFZlY3Rv
cjx1bnNpZ25lZCBjaGFyPiByZXN1bHRCdWZmZXI7CisgICAgICAgIHJlc3VsdEJ1ZmZlci5hcHBl
bmQodXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBwcm9t
aXNlV3JhcHBlci0+ZnVsZmlsbChyZXN1bHQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuc3VwcG9ydGVkIGtleSBm
b3JtYXQiKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuc3VwcG9ydGVkIGtleSBm
b3JtYXQgZm9yIGV4cG9ydCIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgJKHJldmlzaW9uIDE1OTM0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTgs
NiArNTgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJ1aWxkQWxnb3JpdGhtRGVzY3Jp
cHRpb24oQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJikgY29uc3Q7CiAgICAgVmVj
dG9yPFN0cmluZz4gdXNhZ2VzKCkgY29uc3Q7CiAKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGFsZ29yaXRobUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2FsZ29yaXRobTsgfQor
ICAgIENyeXB0b0tleVVzYWdlIHVzYWdlc0JpdG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2Vz
OyB9CiAgICAgYm9vbCBhbGxvd3MoQ3J5cHRvS2V5VXNhZ2UgdXNhZ2UpIGNvbnN0IHsgcmV0dXJu
IHVzYWdlID09IChtX3VzYWdlcyAmIHVzYWdlKTsgfQogCiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gZXhwb3J0RGF0YSgpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmgJKHJldmlzaW9uIDE1OTM0NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4m
IGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CiAKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9
CisKIHByaXZhdGU6CiAgICAgQ3J5cHRvS2V5SE1BQyhjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNl
cmlhbGl6YXRpb25SYXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9r
ZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuY3BwCShyZXZpc2lvbiAxNTkzNDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRP
KQogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5Lmgi
CiAjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjAsNiArNjEsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+
IENyeXB0b0tleQogICAgIHJldHVybiBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZTo6Y3JlYXRl
KG1fZGF0YSk7CiB9CiAKK2Jvb2wgQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdzo6c2VyaWFsaXpl
KGNvbnN0IENyeXB0b0tleSYga2V5LCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIHJlc3VsdCkKK3sK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4ga2V5RGF0YSA9IGtleS5leHBvcnRE
YXRhKCk7CisgICAgaWYgKCFrZXlEYXRhKSB7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3Qg
aGFwcGVuIG9uY2UgYWxsIGtleSB0eXBlcyBpbXBsZW1lbnQgZXhwb3J0RGF0YSgpLgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFpc0NyeXB0b0tleURhdGFPY3RldFNl
cXVlbmNlKCprZXlEYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0LmFw
cGVuZFZlY3Rvcih0b0NyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlKCprZXlEYXRhKS5vY3RldFNl
cXVlbmNlKCkpOworICAgIHJldHVybiB0cnVlOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuaAko
cmV2aXNpb24gMTU5MzQ0KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
U2VyaWFsaXphdGlvblJhdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3J5cHRvS2V5OworCiBjbGFzcyBDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uUmF3IEZJTkFMIDogcHVibGljIENyeXB0b0tleVNlcmlhbGl6YXRpb24gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcpOwogcHVi
bGljOgpAQCAtNDQsNiArNDYsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DcnlwdG9LZXlT
ZXJpYWxpemF0aW9uUmF3KCk7CiAKKyAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemUoY29uc3QgQ3J5
cHRvS2V5JiwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+Jik7CisKIHByaXZhdGU6CiAgICAgQ3J5cHRv
S2V5U2VyaWFsaXphdGlvblJhdyhjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJik7CiAKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE1OTM3MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTExLTE1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgZXhwb3J0aW5nIHN5bW1ldHJpYyBrZXlz
IGFzIEpXSworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI0NDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjcnlwdG8vc3VidGxlL2Flcy1leHBvcnQta2V5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBj
cnlwdG8vc3VidGxlL2Flcy1leHBvcnQta2V5Lmh0bWw6CisgICAgICAgICogY3J5cHRvL3N1YnRs
ZS9obWFjLWV4cG9ydC1rZXktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUv
aG1hYy1leHBvcnQta2V5Lmh0bWw6CisKIDIwMTMtMTEtMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24veHNzLURFTklFRC1wbHVnaW4tbmF2aWdhdGlvbi5odG1sIGlzIHNsb3csIGZyZXF1
ZW50bHkgPiAzMCBzZWNvbmQgdGltZW91dApJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9hZXMtZXhwb3J0LWtleS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Y3J5cHRvL3N1YnRsZS9hZXMtZXhwb3J0LWtleS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1OTM0
NCkKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWV4cG9ydC1rZXktZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDQxIEBACitDT05TT0xFIE1FU1NBR0U6IEtl
eSBpcyBub3QgZXh0cmFjdGFibGUKK0NPTlNPTEUgTUVTU0FHRTogS2V5IGlzIG5vdCBleHRyYWN0
YWJsZQogVGVzdCBleHBvcnRpbmcgYW4gQUVTIGtleS4KIAogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCiAKK1BBU1MgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoInJhdyIpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBjcnlwdG8uc3VidGxl
LmV4cG9ydEtleSgicmF3IiwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KK1BBU1MgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoInJhdyIsIHVuZGVmaW5lZCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY3J5cHRvLnN1YnRsZS5l
eHBvcnRLZXkoInJhdyIsIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorUEFTUyBjcnlwdG8uc3VidGxlLmV4cG9ydEtleSgicmF3IiwgMSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KKwogSW1wb3J0aW5nIGEgSldLIGtleS4uLgorUEFTUyBj
cnlwdG8uc3VidGxlLmV4cG9ydEtleShudWxsLCBrZXkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFVua25vd24ga2V5IGZvcm1hdC4KK1BBU1MgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkodW5k
ZWZpbmVkLCBrZXkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVua25vd24ga2V5IGZvcm1h
dC4KK1BBU1MgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoe30sIGtleSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVW5rbm93biBrZXkgZm9ybWF0LgorUEFTUyBjcnlwdG8uc3VidGxlLmV4cG9y
dEtleSgiIiwga2V5KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBVbmtub3duIGtleSBmb3Jt
YXQuCitQQVNTIGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCJmb29iYXIiLCBrZXkpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFVua25vd24ga2V5IGZvcm1hdC4KKwogRXhwb3J0aW5nIHRoZSBr
ZXkgYXMgcmF3IGRhdGEuLi4KIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhuZXcgVWludDhBcnJheShl
eHBvcnRlZERhdGEpKSBpcyAnOGU3M2IwZjdkYTBlNjQ1MmM4MTBmMzJiODA5MDc5ZTU2MmY4ZWFk
MjUyMmM2YjdiJworRXhwb3J0aW5nIHRoZSBrZXkgYXMgSldLLi4uCitQQVNTIGV4cG9ydGVkSldL
Lmt0eSBpcyAnb2N0JworUEFTUyBleHBvcnRlZEpXSy5rIGlzICdqbk93OTlvT1pGTElFUE1yZ0pC
NTVXTDQ2dEpTTEd0NycKK1BBU1MgZXhwb3J0ZWRKV0suYWxnIGlzICdBMTkyQ0JDJworUEFTUyBl
eHBvcnRlZEpXSy5leHRyYWN0YWJsZSBpcyB0cnVlCitQQVNTIGV4cG9ydGVkSldLLnVzZSBpcyAn
ZW5jJworCitJbXBvcnRpbmcgYSBrZXkgdGhhdCdzIG5vdCBleHRyYWN0YWJsZS4uLgorCitUcnlp
bmcgdG8gZXhwb3J0IGFzIHJhdy4uLgorUEFTUyBSZWplY3RlZCwgYXMgZXhwZWN0ZWQKK1RyeWlu
ZyB0byBleHBvcnQgYXMgandrLi4uCitQQVNTIFJlamVjdGVkLCBhcyBleHBlY3RlZAorCitJbXBv
cnRpbmcgYSBrZXkgd2l0aCBvbmx5IGVuY3J5cHQrZGVjcnlwdCB1c2FnZSAodGhpcyBkb2Vzbid0
IG1hcCB0byBhbnl0aGluZyBpbiBKV0ssIGFzICdlbmMnIGFsc28gYWxsb3dzIHdyYXAvdW53cmFw
KS4uLgorUEFTUyBjcnlwdG8uc3VidGxlLmV4cG9ydEtleSgiandrIiwga2V5KSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBLZXkgdXNhZ2VzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKV0su
IE9ubHkgdHdvIHZhcmlhbnRzIGFyZSBzdXBwb3J0ZWQ6IHNpZ24rdmVyaWZ5IGFuZCBlbmNyeXB0
K2RlY3J5cHQrd3JhcEtleSt1bndyYXBLZXkuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVz
LWV4cG9ydC1rZXkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxl
L2Flcy1leHBvcnQta2V5Lmh0bWwJKHJldmlzaW9uIDE1OTM0NCkKKysrIExheW91dFRlc3RzL2Ny
eXB0by9zdWJ0bGUvYWVzLWV4cG9ydC1rZXkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsMjQg
KzE0LDc4IEBAIGRlc2NyaXB0aW9uKCJUZXN0IGV4cG9ydGluZyBhbiBBRVMga2V5LiIKIGpzVGVz
dElzQXN5bmMgPSB0cnVlOwogCiB2YXIgZXh0cmFjdGFibGUgPSB0cnVlOwordmFyIG5vbkV4dHJh
Y3RhYmxlID0gZmFsc2U7CiAKIHZhciBqd2tLZXkgPSB7Ci0gICAgImt0eSI6ICJvY3QiLAotICAg
ICJrIjogImpuT3c5OW9PWkZMSUVQTXJnSkI1NVdMNDZ0SlNMR3Q3IgorICAgIGt0eTogIm9jdCIs
CisgICAgazogImpuT3c5OW9PWkZMSUVQTXJnSkI1NVdMNDZ0SlNMR3Q3IgogfTsKIAogdmFyIGp3
a0tleUFzQXJyYXlCdWZmZXIgPSBhc2NpaVRvVWludDhBcnJheShKU09OLnN0cmluZ2lmeShqd2tL
ZXkpKTsKIAotZGVidWcoIkltcG9ydGluZyBhIEpXSyBrZXkuLi4iKTsKLWNyeXB0by5zdWJ0bGUu
aW1wb3J0S2V5KCJqd2siLCBqd2tLZXlBc0FycmF5QnVmZmVyLCAiQUVTLUNCQyIsIGV4dHJhY3Rh
YmxlLCBbXSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKK3Nob3VsZFRocm93KCdjcnlwdG8uc3Vi
dGxlLmV4cG9ydEtleSgicmF3IiknKTsKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmV4cG9y
dEtleSgicmF3IiwgbnVsbCknKTsKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmV4cG9ydEtl
eSgicmF3IiwgdW5kZWZpbmVkKScpOworc2hvdWxkVGhyb3coJ2NyeXB0by5zdWJ0bGUuZXhwb3J0
S2V5KCJyYXciLCB7fSknKTsKK3Nob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmV4cG9ydEtleSgi
cmF3IiwgMSknKTsKKworZGVidWcoIlxuSW1wb3J0aW5nIGEgSldLIGtleS4uLiIpOworY3J5cHRv
LnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3a0tleUFzQXJyYXlCdWZmZXIsICJBRVMtQ0JDIiwg
ZXh0cmFjdGFibGUsIFsnZW5jcnlwdCcsICdkZWNyeXB0JywgJ3dyYXBLZXknLCAndW53cmFwS2V5
J10pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAga2V5ID0gcmVzdWx0OwogCi0gICAgZGVi
dWcoIkV4cG9ydGluZyB0aGUga2V5IGFzIHJhdyBkYXRhLi4uIik7CisgICAgc2hvdWxkVGhyb3co
J2NyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KG51bGwsIGtleSknKTsKKyAgICBzaG91bGRUaHJvdygn
Y3J5cHRvLnN1YnRsZS5leHBvcnRLZXkodW5kZWZpbmVkLCBrZXkpJyk7CisgICAgc2hvdWxkVGhy
b3coJ2NyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KHt9LCBrZXkpJyk7CisgICAgc2hvdWxkVGhyb3co
J2NyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCIiLCBrZXkpJyk7CisgICAgc2hvdWxkVGhyb3coJ2Ny
eXB0by5zdWJ0bGUuZXhwb3J0S2V5KCJmb29iYXIiLCBrZXkpJyk7CisKKyAgICBkZWJ1ZygiXG5F
eHBvcnRpbmcgdGhlIGtleSBhcyByYXcgZGF0YS4uLiIpOwogICAgIHJldHVybiBjcnlwdG8uc3Vi
dGxlLmV4cG9ydEtleSgicmF3Iiwga2V5KTsKIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAg
ICAgZXhwb3J0ZWREYXRhID0gcmVzdWx0OwogICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5n
KG5ldyBVaW50OEFycmF5KGV4cG9ydGVkRGF0YSkpIiwgIic4ZTczYjBmN2RhMGU2NDUyYzgxMGYz
MmI4MDkwNzllNTYyZjhlYWQyNTIyYzZiN2InIik7CiAKKyAgICBkZWJ1ZygiRXhwb3J0aW5nIHRo
ZSBrZXkgYXMgSldLLi4uIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCJq
d2siLCBrZXkpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBleHBvcnRlZEpXSyA9
IEpTT04ucGFyc2UocmVzdWx0KTsKKyAgICBzaG91bGRCZSgiZXhwb3J0ZWRKV0sua3R5IiwgIidv
Y3QnIik7CisgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLmsiLCAiJ2puT3c5OW9PWkZMSUVQTXJn
SkI1NVdMNDZ0SlNMR3Q3JyIpOworICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5hbGciLCAiJ0Ex
OTJDQkMnIik7CisgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLmV4dHJhY3RhYmxlIiwgInRydWUi
KTsKKyAgICBzaG91bGRCZSgiZXhwb3J0ZWRKV0sudXNlIiwgIidlbmMnIik7CisKKyAgICBkZWJ1
ZygiXG5JbXBvcnRpbmcgYSBrZXkgdGhhdCdzIG5vdCBleHRyYWN0YWJsZS4uLiIpOworICAgIHJl
dHVybiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgandrS2V5QXNBcnJheUJ1ZmZlciwg
IkFFUy1DQkMiLCBub25FeHRyYWN0YWJsZSwgWydlbmNyeXB0JywgJ2RlY3J5cHQnLCAnd3JhcEtl
eScsICd1bndyYXBLZXknXSkKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAga2V5ID0g
cmVzdWx0OworCisgICAgZGVidWcoIlxuVHJ5aW5nIHRvIGV4cG9ydCBhcyByYXcuLi4iKTsKKyAg
ICByZXR1cm4gY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoInJhdyIsIGtleSk7Cit9KS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeworICAgIHRlc3RGYWlsZWQoIlByb21pc2Ugd2Fzbid0IHJlamVjdGVk
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgICB0ZXN0UGFzc2Vk
KCJSZWplY3RlZCwgYXMgZXhwZWN0ZWQiKTsKKworICAgIGRlYnVnKCJUcnlpbmcgdG8gZXhwb3J0
IGFzIGp3ay4uLiIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmV4cG9ydEtleSgiandrIiwg
a2V5KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgdGVzdEZhaWxlZCgiUHJvbWlz
ZSB3YXNuJ3QgcmVqZWN0ZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkg
eworICAgIHRlc3RQYXNzZWQoIlJlamVjdGVkLCBhcyBleHBlY3RlZCIpOworCisgICAgLy8gSWYg
dGhpcyB0ZXN0IHN0YXJ0cyB0byBmYWlsIGJlY2F1c2UgYSB3YXkgdG8gZW5jb2RlIGVuY3J5cHQr
ZGVjcnlwdCBpcyBhZGRlZCB0byBKV0ssIGNoYW5nZSB0byBzb21ldGhpbmcgdGhhdCdzIG5vdCB0
aGVyZS4KKyAgICAvLyBJZiBhbGwgV2ViQ3J5cHRvIG1vZGVzIGFyZSBhZGRlZCB0byBKV0ssIHRo
ZW4gdGhpcyB0ZXN0IHdpbGwgYmUgb2Jzb2xldGUuCisgICAgZGVidWcoIlxuSW1wb3J0aW5nIGEg
a2V5IHdpdGggb25seSBlbmNyeXB0K2RlY3J5cHQgdXNhZ2UgKHRoaXMgZG9lc24ndCBtYXAgdG8g
YW55dGhpbmcgaW4gSldLLCBhcyAnZW5jJyBhbHNvIGFsbG93cyB3cmFwL3Vud3JhcCkuLi4iKTsK
KyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3a0tleUFzQXJyYXlC
dWZmZXIsICJBRVMtQ0JDIiwgZXh0cmFjdGFibGUsIFsnZW5jcnlwdCcsICdkZWNyeXB0J10pCit9
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIGtleSA9IHJlc3VsdDsKKworICAgIC8vIE1h
eWJlIHRoaXMgc2hvdWxkIGJlIGEgcmVqZWN0ZWQgcHJvbWlzZSwgbm90IGFuIGV4Y2VwdGlvbi4g
V2UnbGwgbmVlZCB0byBmaW5kIGEgd2F5IHRvIHByb3ZpZGUgbWVhbmluZ2Z1bCBlcnJvciBtZXNz
YWdlcyB3aXRoIHN1Y2ggZmFpbHVyZXMuCisgICAgc2hvdWxkVGhyb3coJ2NyeXB0by5zdWJ0bGUu
ZXhwb3J0S2V5KCJqd2siLCBrZXkpJyk7CisKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtZXhwb3J0LWtleS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFj
LWV4cG9ydC1rZXktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTkzNDQpCisrKyBMYXlvdXRUZXN0
cy9jcnlwdG8vc3VidGxlL2htYWMtZXhwb3J0LWtleS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEgKzEsMzQgQEAKK0NPTlNPTEUgTUVTU0FHRTogS2V5IGlzIG5vdCBleHRyYWN0
YWJsZQorQ09OU09MRSBNRVNTQUdFOiBLZXkgaXMgbm90IGV4dHJhY3RhYmxlCiBUZXN0IGV4cG9y
dGluZyBhbiBBRVMga2V5LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAogSW1wb3J0
aW5nIGEgSldLIGtleS4uLgorUEFTUyBjcnlwdG8uc3VidGxlLmV4cG9ydEtleShudWxsLCBrZXkp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVua25vd24ga2V5IGZvcm1hdC4KK1BBU1MgY3J5
cHRvLnN1YnRsZS5leHBvcnRLZXkodW5kZWZpbmVkLCBrZXkpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFVua25vd24ga2V5IGZvcm1hdC4KK1BBU1MgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXko
e30sIGtleSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVW5rbm93biBrZXkgZm9ybWF0Lgor
UEFTUyBjcnlwdG8uc3VidGxlLmV4cG9ydEtleSgiIiwga2V5KSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBVbmtub3duIGtleSBmb3JtYXQuCitQQVNTIGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5
KCJmb29iYXIiLCBrZXkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVua25vd24ga2V5IGZv
cm1hdC4KIEV4cG9ydGluZyB0aGUga2V5IGFzIHJhdyBkYXRhLi4uCiBQQVNTIGJ5dGVzVG9IZXhT
dHJpbmcobmV3IFVpbnQ4QXJyYXkoZXhwb3J0ZWREYXRhKSkgaXMgJzZhMThlNDlmZWZmN2YzYjdl
MDllYzg5YjdmNmRlYWIyZjZhMThlNDlmZWZmN2YzYjdlMDllYzg5YjdmNmRlYWInCitFeHBvcnRp
bmcgdGhlIGtleSBhcyBKV0suLi4KK1BBU1MgZXhwb3J0ZWRKV0sua3R5IGlzICdvY3QnCitQQVNT
IGV4cG9ydGVkSldLLmsgaXMgJ2FoamtuLV8zODdmZ25zaWJmMjNxc3ZhaGprbi1fMzg3Zmduc2li
ZjIzcXMnCitQQVNTIGV4cG9ydGVkSldLLmFsZyBpcyAnSFMyNTYnCitQQVNTIGV4cG9ydGVkSldL
LmV4dHJhY3RhYmxlIGlzIHRydWUKK1BBU1MgZXhwb3J0ZWRKV0sudXNlIGlzICdzaWcnCisKK0lt
cG9ydGluZyBhIGtleSB0aGF0J3Mgbm90IGV4dHJhY3RhYmxlLi4uCisKK1RyeWluZyB0byBleHBv
cnQgYXMgcmF3Li4uCitQQVNTIFJlamVjdGVkLCBhcyBleHBlY3RlZAorVHJ5aW5nIHRvIGV4cG9y
dCBhcyBqd2suLi4KK1BBU1MgUmVqZWN0ZWQsIGFzIGV4cGVjdGVkCisKK0ltcG9ydGluZyBhIGtl
eSB3aXRoIG9ubHkgc2lnbiB1c2FnZSAodGhpcyBkb2Vzbid0IG1hcCB0byBhbnl0aGluZyBpbiBK
V0ssIGFzICdzaWcnIGFsbG93cyBib3RoIHNpZ24gYW5kIHZlcmlmeSkuLi4KK1BBU1MgY3J5cHRv
LnN1YnRsZS5leHBvcnRLZXkoImp3ayIsIGtleSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
S2V5IHVzYWdlcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSldLLiBPbmx5IHR3byB2YXJpYW50
cyBhcmUgc3VwcG9ydGVkOiBzaWduK3ZlcmlmeSBhbmQgZW5jcnlwdCtkZWNyeXB0K3dyYXBLZXkr
dW53cmFwS2V5LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtZXhwb3J0LWtleS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1hYy1leHBvcnQta2V5
Lmh0bWwJKHJldmlzaW9uIDE1OTM0NCkKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1h
Yy1leHBvcnQta2V5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDYgKzE0LDcgQEAgZGVzY3Jp
cHRpb24oIlRlc3QgZXhwb3J0aW5nIGFuIEFFUyBrZXkuIgoganNUZXN0SXNBc3luYyA9IHRydWU7
CiAKIHZhciBleHRyYWN0YWJsZSA9IHRydWU7Cit2YXIgbm9uRXh0cmFjdGFibGUgPSBmYWxzZTsK
IAogdmFyIGp3a0tleSA9IHsKICAgICAia3R5IjogIm9jdCIsCkBAIC0yMywxNSArMjQsNjIgQEAg
dmFyIGp3a0tleSA9IHsKIHZhciBqd2tLZXlBc0FycmF5QnVmZmVyID0gYXNjaWlUb1VpbnQ4QXJy
YXkoSlNPTi5zdHJpbmdpZnkoandrS2V5KSk7CiAKIGRlYnVnKCJJbXBvcnRpbmcgYSBKV0sga2V5
Li4uIik7Ci1jcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgandrS2V5QXNBcnJheUJ1ZmZl
ciwgeyBuYW1lOiAiSE1BQyIsIGhhc2g6ICJTSEEtNTEyIiB9LCBleHRyYWN0YWJsZSwgWyJzaWdu
IiwgInZlcmlmeSJdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworY3J5cHRvLnN1YnRsZS5pbXBv
cnRLZXkoImp3ayIsIGp3a0tleUFzQXJyYXlCdWZmZXIsIHsgbmFtZTogIkhNQUMiLCBoYXNoOiAi
U0hBLTI1NiIgfSwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnkiXSkudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsKICAgICBrZXkgPSByZXN1bHQ7CiAKKyAgICBzaG91bGRUaHJvdygnY3J5cHRv
LnN1YnRsZS5leHBvcnRLZXkobnVsbCwga2V5KScpOworICAgIHNob3VsZFRocm93KCdjcnlwdG8u
c3VidGxlLmV4cG9ydEtleSh1bmRlZmluZWQsIGtleSknKTsKKyAgICBzaG91bGRUaHJvdygnY3J5
cHRvLnN1YnRsZS5leHBvcnRLZXkoe30sIGtleSknKTsKKyAgICBzaG91bGRUaHJvdygnY3J5cHRv
LnN1YnRsZS5leHBvcnRLZXkoIiIsIGtleSknKTsKKyAgICBzaG91bGRUaHJvdygnY3J5cHRvLnN1
YnRsZS5leHBvcnRLZXkoImZvb2JhciIsIGtleSknKTsKKwogICAgIGRlYnVnKCJFeHBvcnRpbmcg
dGhlIGtleSBhcyByYXcgZGF0YS4uLiIpOwogICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmV4cG9y
dEtleSgicmF3Iiwga2V5KTsKIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgZXhwb3J0
ZWREYXRhID0gcmVzdWx0OwogICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50
OEFycmF5KGV4cG9ydGVkRGF0YSkpIiwgIic2YTE4ZTQ5ZmVmZjdmM2I3ZTA5ZWM4OWI3ZjZkZWFi
MmY2YTE4ZTQ5ZmVmZjdmM2I3ZTA5ZWM4OWI3ZjZkZWFiJyIpOwogCisgICAgZGVidWcoIkV4cG9y
dGluZyB0aGUga2V5IGFzIEpXSy4uLiIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmV4cG9y
dEtleSgiandrIiwga2V5KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgZXhwb3J0
ZWRKV0sgPSBKU09OLnBhcnNlKHJlc3VsdCk7CisgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLmt0
eSIsICInb2N0JyIpOworICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5rIiwgIidhaGprbi1fMzg3
Zmduc2liZjIzcXN2YWhqa24tXzM4N2ZnbnNpYmYyM3FzJyIpOworICAgIHNob3VsZEJlKCJleHBv
cnRlZEpXSy5hbGciLCAiJ0hTMjU2JyIpOworICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5leHRy
YWN0YWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLnVzZSIsICInc2ln
JyIpOworCisgICAgZGVidWcoIlxuSW1wb3J0aW5nIGEga2V5IHRoYXQncyBub3QgZXh0cmFjdGFi
bGUuLi4iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3a0tl
eUFzQXJyYXlCdWZmZXIsIHsgbmFtZTogIkhNQUMiLCBoYXNoOiAiU0hBLTI1NiIgfSwgbm9uRXh0
cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnkiXSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgIGtleSA9IHJlc3VsdDsKKworICAgIGRlYnVnKCJcblRyeWluZyB0byBleHBvcnQgYXMg
cmF3Li4uIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCJyYXciLCBrZXkp
OworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHdh
c24ndCByZWplY3RlZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7Cisg
ICAgdGVzdFBhc3NlZCgiUmVqZWN0ZWQsIGFzIGV4cGVjdGVkIik7CisKKyAgICBkZWJ1ZygiVHJ5
aW5nIHRvIGV4cG9ydCBhcyBqd2suLi4iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5leHBv
cnRLZXkoImp3ayIsIGtleSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHRlc3RG
YWlsZWQoIlByb21pc2Ugd2Fzbid0IHJlamVjdGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
LCBmdW5jdGlvbigpIHsKKyAgICB0ZXN0UGFzc2VkKCJSZWplY3RlZCwgYXMgZXhwZWN0ZWQiKTsK
KworICAgIC8vIElmIHRoaXMgdGVzdCBzdGFydHMgdG8gZmFpbCBiZWNhdXNlIGEgd2F5IHRvIGVu
Y29kZSBlbmNyeXB0K2RlY3J5cHQgaXMgYWRkZWQgdG8gSldLLCBjaGFuZ2UgdG8gc29tZXRoaW5n
IHRoYXQncyBub3QgdGhlcmUuCisgICAgLy8gSWYgYWxsIFdlYkNyeXB0byBtb2RlcyBhcmUgYWRk
ZWQgdG8gSldLLCB0aGVuIHRoaXMgdGVzdCB3aWxsIGJlIG9ic29sZXRlLgorICAgIGRlYnVnKCJc
bkltcG9ydGluZyBhIGtleSB3aXRoIG9ubHkgc2lnbiB1c2FnZSAodGhpcyBkb2Vzbid0IG1hcCB0
byBhbnl0aGluZyBpbiBKV0ssIGFzICdzaWcnIGFsbG93cyBib3RoIHNpZ24gYW5kIHZlcmlmeSku
Li4iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3a0tleUFz
QXJyYXlCdWZmZXIsIHsgbmFtZTogIkhNQUMiLCBoYXNoOiAiU0hBLTI1NiIgfSwgZXh0cmFjdGFi
bGUsIFsnc2lnbiddKQorfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBrZXkgPSByZXN1
bHQ7CisKKyAgICAvLyBNYXliZSB0aGlzIHNob3VsZCBiZSBhIHJlamVjdGVkIHByb21pc2UsIG5v
dCBhbiBleGNlcHRpb24uIFdlJ2xsIG5lZWQgdG8gZmluZCBhIHdheSB0byBwcm92aWRlIG1lYW5p
bmdmdWwgZXJyb3IgbWVzc2FnZXMgd2l0aCBzdWNoIGZhaWx1cmVzLgorICAgIHNob3VsZFRocm93
KCdjcnlwdG8uc3VidGxlLmV4cG9ydEtleSgiandrIiwga2V5KScpOworCiAgICAgZmluaXNoSlNU
ZXN0KCk7CiB9KTsKIDwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="240181"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>