<?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>167888</bug_id>
          
          <creation_ts>2017-02-06 10:06:58 -0800</creation_ts>
          <short_desc>[EME] Implement MediaKeySession::updateKeyStatuses(), MediaKeyStatusMap</short_desc>
          <delta_ts>2017-02-10 02:24:34 -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>WebKit 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>158841</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1273612</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-06 10:06:58 -0800</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273635</commentid>
    <comment_count>1</comment_count>
      <attachid>300738</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-06 10:55:36 -0800</bug_when>
    <thetext>Created attachment 300738
WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273638</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-06 10:57:48 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 300738 [details]
&gt; WIP.

Pretty much ready, just needs to use TextEncoder and the CDMInstance::KeyStatus -&gt; MediaKeyStatus converter in a consolidated conversion header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274305</commentid>
    <comment_count>3</comment_count>
      <attachid>300890</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-08 04:40:32 -0800</bug_when>
    <thetext>Created attachment 300890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274832</commentid>
    <comment_count>4</comment_count>
      <attachid>300890</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2017-02-09 07:27:48 -0800</bug_when>
    <thetext>Comment on attachment 300890
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeyStatusMap.cpp:56
&gt; +    if (!m_session)
&gt; +        return 0;
&gt; +    return m_session-&gt;statuses().size();

Matter of preference, do it if you want: return m_session ? m_session-&gt;statuses().size() : 0;

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeyStatusMap.cpp:70
&gt; +            if (!length || length != keyId.length())
&gt; +                return false;
&gt; +            return !std::memcmp(it.first-&gt;data(), keyId.data(), length);

Ditto.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeyStatusMap.cpp:86
&gt; +        [&amp;keyId] (auto&amp; it) {
&gt; +            auto length = it.first-&gt;size();
&gt; +            if (!length || length != keyId.length())
&gt; +                return false;
&gt; +            return !std::memcmp(it.first-&gt;data(), keyId.data(), length);
&gt; +        });

This is the second time I see this lambda. Maybe it would be better to turn it into a proper function. I know you want to capture keyId but you might use std::bind for it, right?

&gt; Source/WebCore/testing/MockCDMFactory.h:76
&gt; +    std::optional&lt;const Vector&lt;Ref&lt;SharedBuffer&gt;&gt;&amp;&gt; keysForSessionWithID(const String&amp; id) const;
&gt;      Vector&lt;Ref&lt;SharedBuffer&gt;&gt; removeKeysFromSessionWithID(const String&amp; id);

You don&apos;t need the parameter name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274853</commentid>
    <comment_count>5</comment_count>
      <attachid>300890</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-09 08:18:49 -0800</bug_when>
    <thetext>Comment on attachment 300890
Patch

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

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeyStatusMap.cpp:86
&gt;&gt; +        });
&gt; 
&gt; This is the second time I see this lambda. Maybe it would be better to turn it into a proper function. I know you want to capture keyId but you might use std::bind for it, right?

std::bind() is wasteful here. Lambda should still be used, since it&apos;s easy to inline directly into the std::find_if() call, but the &apos;matching logic&apos; could be abstracted into a single function and then called from both lambdas.

&gt;&gt; Source/WebCore/testing/MockCDMFactory.h:76
&gt;&gt;      Vector&lt;Ref&lt;SharedBuffer&gt;&gt; removeKeysFromSessionWithID(const String&amp; id);
&gt; 
&gt; You don&apos;t need the parameter name

It&apos;s used in every other function in this block. But it&apos;s true that below the parameters aren&apos;t verbosely listed anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274860</commentid>
    <comment_count>6</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2017-02-09 08:27:42 -0800</bug_when>
    <thetext>(In reply to comment #5)

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274918</commentid>
    <comment_count>7</comment_count>
      <attachid>301055</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-09 10:51:36 -0800</bug_when>
    <thetext>Created attachment 301055
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274919</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-09 10:52:56 -0800</bug_when>
    <thetext>Attachment 301055 did not pass style-queue:


ERROR: Source/WebCore/Modules/encryptedmedia/MediaKeyStatusMap.cpp:74:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/Modules/encryptedmedia/MediaKeyStatusMap.cpp:84:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 12 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>1275274</commentid>
    <comment_count>9</comment_count>
      <attachid>301055</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-10 02:24:25 -0800</bug_when>
    <thetext>Comment on attachment 301055
Patch for landing

Clearing flags on attachment: 301055

Committed r212107: &lt;http://trac.webkit.org/changeset/212107&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275275</commentid>
    <comment_count>10</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-10 02:24:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300738</attachid>
            <date>2017-02-06 10:55:36 -0800</date>
            <delta_ts>2017-02-08 04:40:26 -0800</delta_ts>
            <desc>WIP.</desc>
            <filename>bug-167888-20170206105314.patch</filename>
            <type>text/plain</type>
            <size>28177</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWExM2U3ZjU5MTNiMzU2
NjcyYWE4OWYyODUwNzYzNjFkNTQ0NjhjMS4uZWQ0YTQzMzZmZmM1OWEwZjczZmQ5ODk1MjIyNDQ1
YmExNmU4ZTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE3LTAyLTA2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbRU1FXSBJbXBsZW1l
bnQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcygpLCBNZWRpYUtleVN0YXR1c01h
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODg4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoKSwgdHJhbnNmb3JtaW5nIHRo
ZSBwYXNzZWQtaW4KKyAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGludG8gYSBWZWN0b3IgbWFwcGlu
ZyB0aGUga2V5IElEcyB0byBNZWRpYUtleVN0YXR1cyB2YWx1ZXMuCisgICAgICAgIEEga2V5c3Rh
dHVzZXNjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgb24gdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3Qg
YWZ0ZXJ3YXJkcy4KKyAgICAgICAgVGhlIHF1ZXVlaW5nIG9mIHRoZSB0YXNrIHRoYXQgcnVucyB0
aGUgJ2F0dGVtcCB0byByZXN1bWUgcGxheWJhY2snIG9uIHRoZQorICAgICAgICByZWxhdGVkIEhU
TUxNZWRpYUVsZW1lbnQgb2JqZWN0cyBpc24ndCBkb25lIHlldCBzaW5jZSB0aGF0IGFsZ29yaXRo
bSBpc24ndAorICAgICAgICBpbXBsZW1lbnRlZCB5ZXQuCisKKyAgICAgICAgVGhlIHN0YXR1c2Vz
IFZlY3RvciBpcyBzdG9yZWQgb24gdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuIFRoYXQgVmVj
dG9yIGlzCisgICAgICAgIHRoZW4gZXhwb3NlZCB0aHJvdWdoIHRoZSBNZWRpYUtleVN0YXR1c01h
cCBvYmplY3QsIGVhY2ggc3VjaCBvYmplY3QgYmVpbmcKKyAgICAgICAgdW5pcXVlIHRvIG9uZSBN
ZWRpYUtleVNlc3Npb24gb2JqZWN0LiBUaGUgaW1wbGVtZW50YXRpb24gb2YgTWVkaWFLZXlTdGF0
dXNNYXAKKyAgICAgICAgdGh1cyBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgc2Vzc2lvbiBvYmpl
Y3QgYXMgbG9uZyBhcyB0aGF0IG9iamVjdCBpcyBhbGl2ZSwKKyAgICAgICAgYW5kIHF1ZXJpZXMg
dGhlIE1lZGlhS2V5U2Vzc2lvbjo6c3RhdHVzZXMoKSBnZXR0ZXIgdG8gYWNjZXNzIHRoZSBWZWN0
b3IgdGhhdAorICAgICAgICBjb250YWlucyBzdGF0dXMgaW5mb3JtYXRpb24gZm9yIGFsbCB0aGUg
a2V5IElEcy4KKworICAgICAgICBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3Igb2JqZWN0IGtl
ZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBNZWRpYUtleVN0YXR1c01hcAorICAgICAgICBvYmplY3Qg
YW5kIGFjY2Vzc2VzIHRoZSBzdGF0dXNlcyBieSBpbmRleGluZyBpbnRvIHRoZSBzdGF0dXMgVmVj
dG9yIG9mIHRoZQorICAgICAgICByZWxhdGVkIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisKKyAg
ICAgICAgQ0RNSW5zdGFuY2U6OnVwZGF0ZUxpY2Vuc2UoKSBub3cgYWNjZXB0cyB0aGUgc2Vzc2lv
biBJRCBzdHJpbmcgYXMgdGhlIGZpcnN0CisgICAgICAgIGFyZ3VtZW50LCBtYWtpbmcgaXQgcG9z
c2libGUgdG8gc3BlY2lmeSB3aGljaCBzZXNzaW9uIHNob3VsZCBiZSB1cGRhdGVkLgorCisgICAg
ICAgIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCgpIHJldHVybnMgYW4gb3B0
aW9uYWwgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICBWZWN0b3IgdmFsdWUgaW4gdGhlIHNlc3Np
b24gbWFwIHRoYXQgbGlzdHMgYWxsIHRoZSBrZXkgSURzIHRoYXQgYXJlIGJlaW5nCisgICAgICAg
IHN0b3JlZCBmb3IgdGhhdCBzZXNzaW9uLgorCisgICAgICAgIE1vY2tDRE1JbnN0YW5jZTo6dXBk
YXRlTGljZW5zZSgpIG5vdyBkZXRlY3RzIHRoZSAna2V5cy1jaGFuZ2VkJyBlbnRyeSBpbiB0aGUK
KyAgICAgICAgcGFzc2VkLWluIHJlc3BvbnNlIGRhdGEsIGFuZCB1cG9uIGRldGVjdGluZyB0aGF0
IGNvbnN0cnVjdHMgYSBLZXlTdGF0dXNWZWN0b3IKKyAgICAgICAgb2JqZWN0IGNvbnRhaW5pbmcg
YWxsIHRoZSBrZXlzIGZvciB0aGF0IHNlc3Npb24uIEtleVN0YXR1czo6VXNhYmxlIGlzIHJldHVy
bmVkCisgICAgICAgIGZvciBlYWNoIG9iamVjdCBhdCB0aGUgbW9tZW50LCBidXQgdGhpcyBzaG91
bGQgYmUgYWRqdXN0YWJsZSBpbiB0aGUgZnV0dXJlCisgICAgICAgIHRocm91Z2ggYWRkaXRpb25h
bCBwYXJhbWV0ZXJzIHBhc3NlZCB0aHJvdWdoIHRoZSByZXNwb25zZSBkYXRhLiBUaGUgVmVjdG9y
CisgICAgICAgIG9iamVjdCBpcyB0aGVuIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgYW5kIGlzIHRo
ZW4gcGFzc2VkIHRvIHRoZSAndXBkYXRlIGtleQorICAgICAgICBzdGF0dXNlcycgYWxnb3JpdGht
IGluIE1lZGlhS2V5U2Vzc2lvbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IGEgdGVzdCBjYXNlIGlu
IG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi11cGRhdGUuaHRtbC4K
KworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3Rh
dHVzTWFwOjpNZWRpYUtleVN0YXR1c01hcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0
YXR1c01hcDo6ZGV0YWNoU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1
c01hcDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6aGFzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaWRsOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OmtleXNGb3JT
ZXNzaW9uV2l0aElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6dXBkYXRl
TGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCiAyMDE3LTAy
LTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgU3Rh
dGljIEFuYWx5emVyOiBXZWJDb3JlTlNVUkxFeHRyYXMubW06IFBvdGVudGlhbCBsZWFrIG9mIG1l
bW9yeSBwb2ludGVkIHRvIGJ5ICdhbGxCeXRlc0J1ZmZlcicKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAxOTdjNWUxYTYy
MGFkOWU2YTczYTkxNGNiMDc0YjFmMzUyNTVmYTlhLi40YzA2ZDJhMjQyNmMwNTI3ZDEyYTBhMGFj
ZmMzZjAzYTUyMzM1NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+
LCBLZXlTdGF0dXM+PjsKICAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3Rh
dHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2Vk
RXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShMaWNlbnNlVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2spID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA4NzJiOWUx
YWNiOTNjYzI5YmQ5MzAxNjQwNmNiZjE2ZTVmOTVlOWFlLi4xYTNmMDM3ZDlmZjAyNzYwNmM3OTVj
YTAwODI1OWVhM2Q3OWYxMjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC01Myw3ICs1Myw3IEBA
IFJlZjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lCiBNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYUtleVNlc3Npb25UeXBlIHNl
c3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBs
ZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNlPiYmIGluc3RhbmNlKQogICAgIDogQWN0aXZlRE9N
T2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9leHBpcmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6cXVpZXRfTmFOKCkpCi0gICAgLCBtX2tleVN0YXR1c2VzKE1lZGlhS2V5U3RhdHVz
TWFwOjpjcmVhdGUoKSkKKyAgICAsIG1fa2V5U3RhdHVzZXMoTWVkaWFLZXlTdGF0dXNNYXA6OmNy
ZWF0ZSgqdGhpcykpCiAgICAgLCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllcih1c2VEaXN0aW5j
dGl2ZUlkZW50aWZpZXIpCiAgICAgLCBtX3Nlc3Npb25UeXBlKHNlc3Npb25UeXBlKQogICAgICwg
bV9pbXBsZW1lbnRhdGlvbihXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSkKQEAgLTg0LDcgKzg0LDEw
IEBAIE1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIE1lZGlhS2V5U2Vzc2lvCiAgICAgVU5VU0VEX1BBUkFNKG1fdW5pbml0aWFs
aXplZCk7CiB9CiAKLU1lZGlhS2V5U2Vzc2lvbjo6fk1lZGlhS2V5U2Vzc2lvbigpID0gZGVmYXVs
dDsKK01lZGlhS2V5U2Vzc2lvbjo6fk1lZGlhS2V5U2Vzc2lvbigpCit7CisgICAgbV9rZXlTdGF0
dXNlcy0+ZGV0YWNoU2Vzc2lvbigpOworfQogCiBjb25zdCBTdHJpbmcmIE1lZGlhS2V5U2Vzc2lv
bjo6c2Vzc2lvbklkKCkgY29uc3QKIHsKQEAgLTI5NSw3ICsyOTgsNyBAQCB2b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JgogICAgICAgICAvLyA2LjUuIExldCBzZXNzaW9uIGNsb3NlZCBiZSBmYWxzZS4K
ICAgICAgICAgLy8gNi42LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQg
YnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8vIDYuNy4gVXNl
IHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3Rh
bmNlLT51cGRhdGVMaWNlbnNlKGxpY2Vuc2VUeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlz
LCB3ZWFrVGhpcyA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxD
RE1JbnN0YW5jZTo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5jZTo6
TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2UtPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQs
IGxpY2Vuc2VUeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1fd2Vh
a1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0g
KGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5jZTo6S2V5U3Rh
dHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2Vk
RXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5jZTo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDA5LDkg
KzQxMiw0OSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlN
ZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcgogICAgIG1fZXZlbnRRdWV1ZS5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShtZXNzYWdlRXZlbnQpKTsKIH0KIAotdm9pZCBNZWRpYUtleVNlc3Np
b246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlOjpLZXlTdGF0dXNWZWN0b3ImJikKK3Zv
aWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZTo6S2V5U3Rh
dHVzVmVjdG9yJiYgaW5wdXRTdGF0dXNlcykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3VwZGF0ZS1rZXktc3Rh
dHVzZXMKKyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgorCisgICAg
Ly8gMS4gTGV0IHRoZSBzZXNzaW9uIGJlIHRoZSBhc3NvY2lhdGVkIE1lZGlhS2V5U2Vzc2lvbiBv
YmplY3QuCisgICAgLy8gMi4gTGV0IHRoZSBpbnB1dCBzdGF0dXNlcyBiZSB0aGUgc2VxdWVuY2Ug
b2YgcGFpcnMga2V5IElEIGFuZCBhc3NvY2lhdGVkIE1lZGlhS2V5U3RhdHVzIHBhaXJzLgorICAg
IC8vIDMuIExldCB0aGUgc3RhdHVzZXMgYmUgc2Vzc2lvbidzIGtleVN0YXR1c2VzIGF0dHJpYnV0
ZS4KKyAgICAvLyA0LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyB0byByZXBsYWNlIHRoZSBjb250
ZW50cyBvZiBzdGF0dXNlczoKKyAgICAvLyAgIDQuMS4gRW1wdHkgc3RhdHVzZXMuCisgICAgLy8g
ICA0LjIuIEZvciBlYWNoIHBhaXIgaW4gaW5wdXQgc3RhdHVzZXMuCisgICAgLy8gICAgIDQuMi4x
LiBMZXQgcGFpciBiZSB0aGUgcGFpci4KKyAgICAvLyAgICAgNC4yLjIuIEluc2VydCBhbiBlbnRy
eSBmb3IgcGFpcidzIGtleSBJRCBpbnRvIHN0YXR1c2VzIHdpdGggdGhlIHZhbHVlIG9mIHBhaXIn
cyBNZWRpYUtleVN0YXR1cyB2YWx1ZS4KKworICAgIHN0YXRpYyBhdXRvIHRvTWVkaWFLZXlTdGF0
dXMgPSBbXSAoQ0RNSW5zdGFuY2U6OktleVN0YXR1cyBzdGF0dXMpIC0+IE1lZGlhS2V5U3RhdHVz
IHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6
S2V5U3RhdHVzOjpVc2FibGU6CisgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OlVz
YWJsZTsKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5U3RhdHVzOjpFeHBpcmVkOgorICAg
ICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpFeHBpcmVkOworICAgICAgICBjYXNlIENE
TUluc3RhbmNlOjpLZXlTdGF0dXM6OlJlbGVhc2VkOgorICAgICAgICAgICAgcmV0dXJuIE1lZGlh
S2V5U3RhdHVzOjpSZWxlYXNlZDsKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5U3RhdHVz
OjpPdXRwdXRSZXN0cmljdGVkOgorICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpP
dXRwdXRSZXN0cmljdGVkOworICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0dXM6Ok91
dHB1dERvd25zY2FsZWQ6CisgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6Ok91dHB1
dERvd25zY2FsZWQ7CisgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6OktleVN0YXR1czo6U3RhdHVz
UGVuZGluZzoKKyAgICAgICAgICAgIHJldHVybiBNZWRpYUtleVN0YXR1czo6U3RhdHVzUGVuZGlu
ZzsKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yOgor
ICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yOworICAgICAg
ICB9OworICAgIH07CisKKyAgICBtX3N0YXR1c2VzLmNsZWFyKCk7CisgICAgbV9zdGF0dXNlcy5y
ZXNlcnZlQ2FwYWNpdHkoaW5wdXRTdGF0dXNlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgc3Rh
dHVzIDogaW5wdXRTdGF0dXNlcykKKyAgICAgICAgbV9zdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQo
eyBXVEZNb3ZlKHN0YXR1cy5maXJzdCksIHRvTWVkaWFLZXlTdGF0dXMoc3RhdHVzLnNlY29uZCkg
fSk7CisKKyAgICAvLyA1LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1l
ZCBrZXlzdGF0dXNlc2NoYW5nZSBhdCB0aGUgc2Vzc2lvbi4KKyAgICBtX2V2ZW50UXVldWUuZW5x
dWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXN0YXR1c2VzY2hhbmdlRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOworCisgICAgLy8gNi4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUg
QXR0ZW1wdCB0byBSZXN1bWUgUGxheWJhY2sgSWYgTmVjZXNzYXJ5IGFsZ29yaXRobSBvbiBlYWNo
IG9mIHRoZSBtZWRpYSBlbGVtZW50KHMpIHdob3NlIG1lZGlhS2V5cyBhdHRyaWJ1dGUgaXMgdGhl
IE1lZGlhS2V5cyBvYmplY3QgdGhhdCBjcmVhdGVkIHRoZSBzZXNzaW9uLgorICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCiB9CiAKIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVFeHBpcmF0aW9u
KGRvdWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDhmNDBmMzdlYzhjNjNkZDYwYTU3ZjY0YzFkNTY3
NzVhN2M1MzgwNTMuLmFhZjZlMTEyNzJhZWFlODM5Mzg4Nzk0NTExMjE3OWUzMmQxOTYwNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5o
IgogI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2FnZVR5cGUuaCIKICNpbmNsdWRlICJNZWRpYUtleVNl
c3Npb25UeXBlLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTdGF0dXMuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgpAQCAtNjksNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
KTsKIAorICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlh
S2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQorCiBw
cml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVk
aWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+
JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CiAgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtl
eU1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKQEAgLTEwMyw2ICsxMDYsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdl
OwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0
ZXN0RGVjcnlwdFRpbWUgeyAwIH07CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVm
ZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwogICAgIFdlYWtQdHJGYWN0b3J5PE1l
ZGlhS2V5U2Vzc2lvbj4gbV93ZWFrUHRyRmFjdG9yeTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5j
cHAKaW5kZXggM2ViNmI0Mzc5YTY2ZmQ3ZWNiZmQwMjIzNzBiOTU4NzMwNDNhNDRhZi4uYjVhYmUw
YzNlYjA1NzQwMjVhM2Y4MjJlNGZmMTUzMDFhNzk1ZjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5j
cHAKQEAgLTMxLDM5ICszMSw4MiBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAot
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiSlNNZWRpYUtleVN0YXR1c01h
cC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhS2V5U3RhdHVzTWFwOjpNZWRpYUtl
eVN0YXR1c01hcCgpID0gZGVmYXVsdDsKK01lZGlhS2V5U3RhdHVzTWFwOjpNZWRpYUtleVN0YXR1
c01hcChjb25zdCBNZWRpYUtleVNlc3Npb24mIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oJnNl
c3Npb24pCit7Cit9CiAKIE1lZGlhS2V5U3RhdHVzTWFwOjp+TWVkaWFLZXlTdGF0dXNNYXAoKSA9
IGRlZmF1bHQ7CiAKK3ZvaWQgTWVkaWFLZXlTdGF0dXNNYXA6OmRldGFjaFNlc3Npb24oKQorewor
ICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7Cit9CisKIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0
dXNNYXA6OnNpemUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3Nlc3Np
b24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1ib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMo
Y29uc3QgQnVmZmVyU291cmNlJikKK2Jvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBC
dWZmZXJTb3VyY2UmIGtleUlkKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvJiBzdGF0dXNlcyA9IG1fc2Vzc2lvbi0+c3RhdHVzZXMoKTsKKyAgICByZXR1cm4gc3Rk
Ojphbnlfb2Yoc3RhdHVzZXMuYmVnaW4oKSwgc3RhdHVzZXMuZW5kKCksCisgICAgICAgIFsma2V5
SWRdIChhdXRvJiBpdCkgeworICAgICAgICAgICAgYXV0byBsZW5ndGggPSBpdC5maXJzdC0+c2l6
ZSgpOworICAgICAgICAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGtleUlkLmxlbmd0aCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiAhc3Rk
OjptZW1jbXAoaXQuZmlyc3QtPmRhdGEoKSwga2V5SWQuZGF0YSgpLCBsZW5ndGgpOworICAgICAg
ICB9KTsKIH0KIAotSlNDOjpKU1ZhbHVlIE1lZGlhS2V5U3RhdHVzTWFwOjpnZXQoY29uc3QgQnVm
ZmVyU291cmNlJikKK0pTQzo6SlNWYWx1ZSBNZWRpYUtleVN0YXR1c01hcDo6Z2V0KEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFtX3Nl
c3Npb24pCisgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisKKyAgICBhdXRvJiBz
dGF0dXNlcyA9IG1fc2Vzc2lvbi0+c3RhdHVzZXMoKTsKKyAgICBhdXRvIGl0ID0gc3RkOjpmaW5k
X2lmKHN0YXR1c2VzLmJlZ2luKCksIHN0YXR1c2VzLmVuZCgpLAorICAgICAgICBbJmtleUlkXSAo
YXV0byYgaXQpIHsKKyAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gaXQuZmlyc3QtPnNpemUoKTsK
KyAgICAgICAgICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBrZXlJZC5sZW5ndGgoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gIXN0ZDo6bWVt
Y21wKGl0LmZpcnN0LT5kYXRhKCksIGtleUlkLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICAgICAgfSk7
CisKKyAgICBpZiAoaXQgPT0gc3RhdHVzZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBKU0M6Ompz
VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoc3RhdGUsIGl0
LT5zZWNvbmQpOwogfQogCi1NZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Okl0ZXJhdG9yKE1l
ZGlhS2V5U3RhdHVzTWFwJikKK01lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6SXRlcmF0b3Io
TWVkaWFLZXlTdGF0dXNNYXAmIG1hcCkKKyAgICA6IG1fbWFwKG1hcCkKIHsKIH0KIAogc3RkOjpv
cHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRp
YUtleVN0YXR1cz4+IE1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIW1fbWFwLT5tX3Nlc3Npb24pCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvJiBzdGF0dXNlcyA9IG1fbWFwLT5tX3Nl
c3Npb24tPnN0YXR1c2VzKCk7CisgICAgaWYgKG1faW5kZXggPj0gc3RhdHVzZXMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byYgcGFpciA9IHN0YXR1c2Vz
W21faW5kZXgrK107CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIu
Zmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICByZXR1cm4gV1RGOjpLZXlW
YWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVm
UHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggNmZkNDNiYzhjYWM5
ZGRmYjZjNmZiNDRkNGZhZjMzOWFkZTlkMjBjOS4uMzRjNWVkNzk1YTE5Nzk2YjYyMzI0M2VkNjgz
ZDBlMzk1YjM0Zjg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtMzMsMzcgKzMzLDQ3IEBACiAj
aW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlTdGF0dXMuaCIKICNp
bmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBNZWRpYUtleVNlc3Npb247CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIE1lZGlh
S2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1
YmxpYzoKICAgICB1c2luZyBTdGF0dXMgPSBNZWRpYUtleVN0YXR1czsKIAotICAgIHN0YXRpYyBS
ZWY8TWVkaWFLZXlTdGF0dXNNYXA+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxNZWRpYUtleVN0
YXR1c01hcD4gY3JlYXRlKGNvbnN0IE1lZGlhS2V5U2Vzc2lvbiYgc2Vzc2lvbikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhS2V5U3RhdHVzTWFwKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlTdGF0dXNNYXAoc2Vzc2lvbikpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgfk1lZGlhS2V5U3RhdHVzTWFwKCk7CiAKKyAgICB2b2lkIGRldGFjaFNl
c3Npb24oKTsKKwogICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSgpOwogICAgIGJvb2wgaGFzKGNvbnN0
IEJ1ZmZlclNvdXJjZSYpOwotICAgIEpTQzo6SlNWYWx1ZSBnZXQoY29uc3QgQnVmZmVyU291cmNl
Jik7CisgICAgSlNDOjpKU1ZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEJ1ZmZlclNv
dXJjZSYpOwogCiAgICAgY2xhc3MgSXRlcmF0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhw
bGljaXQgSXRlcmF0b3IoTWVkaWFLZXlTdGF0dXNNYXAmKTsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0
YXR1cz4+IG5leHQoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZjxNZWRpYUtleVN0YXR1
c01hcD4gbV9tYXA7CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgMCB9OwogICAgIH07CiAgICAg
SXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJldHVybiBJdGVyYXRvcigqdGhpcyk7IH0KIAog
cHJpdmF0ZToKLSAgICBNZWRpYUtleVN0YXR1c01hcCgpOworICAgIE1lZGlhS2V5U3RhdHVzTWFw
KGNvbnN0IE1lZGlhS2V5U2Vzc2lvbiYpOworCisgICAgY29uc3QgTWVkaWFLZXlTZXNzaW9uKiBt
X3Nlc3Npb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aWRsCmluZGV4IDVjM2ZjNjliN2UwMTYzM2Y0YjdmY2MwYThjZTVjMWRiNmZhY2U0NWYuLmIzMjE1
YWU4MzIyMzgxNmIxOWE5Nzk2MGM5YWNhZDJiMTY4YzE1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aWRsCkBAIC00Myw1ICs0Myw1IEBAIGVudW0gTWVkaWFLZXlTdGF0dXMgewogICAgIGl0ZXJhYmxl
PEJ1ZmZlclNvdXJjZSwgTWVkaWFLZXlTdGF0dXM+OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIHNpemU7CiAgICAgYm9vbGVhbiBoYXMoQnVmZmVyU291cmNlIGtleUlkKTsK
LSAgICBhbnkgZ2V0KEJ1ZmZlclNvdXJjZSBrZXlJZCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlXSBhbnkgZ2V0KEJ1ZmZlclNvdXJjZSBrZXlJZCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0NTFiYzFmNzZkM2RkMjNhNmQ0N2VhNzhlYjk1
Y2JhNTE0MTI1MWVhLi5lNDlmYWVhOGMzZWQzNzQwMzhkODJjNzhlOTg1N2E2YzE4N2Y3OWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNzIsNiArNzIs
MTQgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBT
dHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1v
dmUoa2V5KSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8Y29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiY+IE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKSBjb25zdAoreworICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOworICAgIGlm
IChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJldHVybiBpdC0+dmFsdWU7Cit9CisKIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBv
cnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogewogICAgIG1fc3VwcG9ydGVk
RGF0YVR5cGVzLmNsZWFyKCk7CkBAIC0yNzAsNyArMjc4LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFu
Y2U6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNT
dHJpbmcKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwg
bGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2Vl
ZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnVwZGF0ZUxpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayBj
YWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBm
YWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZh
Y3RvcnkpIHsKQEAgLTI4NiwxMCArMjk0LDIzIEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjp1cGRh
dGVMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogU2Vzc2lvbiBjbG9zdXJlLCBr
ZXkgc3RhdHVzLCBleHBpcmF0aW9uIGFuZCBtZXNzYWdlIGhhbmRsaW5nIHNob3VsZCBiZSBpbXBs
ZW1lbnRlZAorICAgIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5czsK
KyAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKEFTQ0lJTGl0ZXJhbCgia2V5
cy1jaGFuZ2VkIikpKSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGNvbnN0IFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4mPiBrZXlzID0gZmFjdG9yeS0+a2V5c0ZvclNlc3Npb25XaXRoSUQoc2Vz
c2lvbklEKTsKKyAgICAgICAgaWYgKGtleXMpIHsKKyAgICAgICAgICAgIEtleVN0YXR1c1ZlY3Rv
ciBrZXlTdGF0dXNWZWN0b3I7CisgICAgICAgICAgICBrZXlTdGF0dXNWZWN0b3IucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShrZXlzLT5zaXplKCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkg
OiAqa2V5cykKKyAgICAgICAgICAgICAgICBrZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5k
KHsga2V5LmNvcHlSZWYoKSwgS2V5U3RhdHVzOjpVc2FibGUgfSk7CisKKyAgICAgICAgICAgIGNo
YW5nZWRLZXlzID0gV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gRklYTUU6IFNlc3Npb24gY2xvc3VyZSwgZXhwaXJhdGlvbiBhbmQgbWVzc2FnZSBo
YW5kbGluZyBzaG91bGQgYmUgaW1wbGVtZW50ZWQKICAgICAvLyBvbmNlIHRoZSByZWxldmFudCBh
bGdvcml0aG1zIGFyZSBzdXBwb3J0ZWQuCiAKLSAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQp
OworICAgIGNhbGxiYWNrKGZhbHNlLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDA5YjUzZmVjOGZmMTg5M2U5YjAw
NzUzYjVlYjIxN2UzYzMwYjBlNmQuLjQ5NzAzNzUwOWZlY2EwMmE0NmQ4YTFhZTFkMDI3NWE0YjY2
MzJkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTcyLDYg
KzcyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3Zl
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsg
fQogICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHN0ZDo6b3B0aW9uYWw8Y29uc3QgVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PiY+IGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBAIC0xMjksNyAr
MTMwLDcgQEAgcHJpdmF0ZToKICAgICBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxs
b3dlZChib29sKSBmaW5hbDsKICAgICBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2spIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrKSBmaW5h
bDsKIAogICAgIFdlYWtQdHI8TW9ja0NETT4gbV9jZG07CiAgICAgYm9vbCBtX2Rpc3RpbmN0aXZl
SWRlbnRpZmllcnNBbGxvd2VkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3ZDljZTQ1OGY5NTk5ZWU4ZTYw
YzcxMmU2MjZlM2QzYmY2OThhYzEuLmY0MWIxY2VhYjJkOGEzMTVlM2ExZWMwMTNkMTQ2OGFhOTcw
ODA3MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wMi0wNiAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0VNRV0gSW1wbGVtZW50IE1lZGlhS2V5
U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoKSwgTWVkaWFLZXlTdGF0dXNNYXAKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Nzg4OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbm90aGVyIHRlc3Qg
Y2FzZSB0byB0aGUgbW9jay1NZWRpYUtleVNlc3Npb24tdXBkYXRlLmh0bWwgdGVzdCB0aGF0Cisg
ICAgICAgIGVuc3VyZXMgdGhlIGtleXN0YXR1c2VzY2hhbmdlIGV2ZW50IGlzIGZpcmVkIG9uIHRo
ZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0CisgICAgICAgIGFuZCB0aGF0IHRoZSBzdGF0dXMgb2Yg
dGhlIGtleSBpcyBwcm9wZXJseSByZXBvcnRlZCB0aHJvdWdoIHRoZQorICAgICAgICBNZWRpYUtl
eVN0YXR1c01hcCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgTWVkaWFLZXlTZXNzaW9uLgor
CisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVw
ZGF0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2st
TWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS5odG1sOgorCiAyMDE3LTAyLTAzICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjA0ODU4
KTogU3ludGhldGljIGJvbGQgdGV4dCBpbiB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUgaXMgcm90YXRl
ZCBhd2F5IGZyb20gb3JpZ2luYWwgdGV4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24t
dXBkYXRlLWV4cGVjdGVkLnR4dAppbmRleCBhOGZhMTU3NDk1ZmU0OGZkYzk0ZjdmZjVkOTBlYWIx
MDZkNDgzNjQ3Li5kODZlZTUzNjViZjNmNTUxZmJiZDNiZjA2NDA3N2Y2M2Q3NTlkMjliIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNl
c3Npb24tdXBkYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24tdXBkYXRlLWV4cGVjdGVkLnR4dApAQCAtNDYs
NSArNDYsNTEgQEAgUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0
KCJrZXlpZHMiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykKIFByb21pc2UgcmVzb2x2ZWQgT0sK
IFJVTihwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShzdHJpbmdUb1VJbnQ4QXJyYXko
InZhbGlkLXJlc3BvbnNlIGludmFsaWQtZm9ybWF0IikpKQogUHJvbWlzZSByZWplY3RlZCBjb3Jy
ZWN0bHkgT0sKKworQSB2YWxpZCBNZWRpYUtleVNlc3Npb24gcHJvcGVybHkgZGlzcGF0Y2hlcyBr
ZXlzdGF0dXNlc2NoYW5nZSBldmVudC4KK1JVTihraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRz
OiBbICJNVEl6TkRVPSIgXSB9KSkKK1JVTihtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3Jl
YXRlU2Vzc2lvbigidGVtcG9yYXJ5IikpCitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5n
ZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSkpCitQcm9t
aXNlIHJlc29sdmVkIE9LCitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoc3Ry
aW5nVG9VSW50OEFycmF5KCJ2YWxpZC1yZXNwb25zZSBrZXlzLWNoYW5nZWQiKSkpCitFWFBFQ1RF
RCAobWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzLnNpemUgPT0gJzEnKSBPSworRVhQRUNURUQg
KG1lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5oYXMoc3RyaW5nVG9VSW50OEFycmF5KCIxMjM0
NSIpKSA9PSAndHJ1ZScpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2Vz
LmdldChzdHJpbmdUb1VJbnQ4QXJyYXkoIjEyMzQ1IikpID09ICd1c2FibGUnKSBPSworRVhQRUNU
RUQgKG1lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5oYXMoc3RyaW5nVG9VSW50OEFycmF5KCJp
bnZhbGlkIikpID09ICdmYWxzZScpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLmtleVN0
YXR1c2VzLmdldChzdHJpbmdUb1VJbnQ4QXJyYXkoImludmFsaWQiKSkgPT0gJ3VuZGVmaW5lZCcp
IE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheS5sZW5ndGggPT0gJzEnKSBPSworRVhQRUNURUQg
KGl0ZXJhdG9yQXJyYXlbMF1bMF0ubGVuZ3RoID09ICc1JykgT0sKK0VYUEVDVEVEIChpdGVyYXRv
ckFycmF5WzBdWzBdWzBdID09ICc0OScpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXVsw
XVsxXSA9PSAnNTAnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF1bMF1bMl0gPT0gJzUx
JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzBdWzNdID09ICc1MicpIE9LCitFWFBF
Q1RFRCAoaXRlcmF0b3JBcnJheVswXVswXVs0XSA9PSAnNTMnKSBPSworRVhQRUNURUQgKGl0ZXJh
dG9yQXJyYXlbMF1bMV0gPT0gJ3VzYWJsZScpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheS5s
ZW5ndGggPT0gJzEnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0ubGVuZ3RoID09ICc1
JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzBdID09ICc0OScpIE9LCitFWFBFQ1RF
RCAoaXRlcmF0b3JBcnJheVswXVsxXSA9PSAnNTAnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJy
YXlbMF1bMl0gPT0gJzUxJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzNdID09ICc1
MicpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXVs0XSA9PSAnNTMnKSBPSworRVhQRUNU
RUQgKGl0ZXJhdG9yQXJyYXkubGVuZ3RoID09ICcxJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFy
cmF5WzBdID09ICd1c2FibGUnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXkubGVuZ3RoID09
ICcxJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdLmtleS5sZW5ndGggPT0gJzUnKSBP
SworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0ua2V5WzBdID09ICc0OScpIE9LCitFWFBFQ1RF
RCAoaXRlcmF0b3JBcnJheVswXS5rZXlbMV0gPT0gJzUwJykgT0sKK0VYUEVDVEVEIChpdGVyYXRv
ckFycmF5WzBdLmtleVsyXSA9PSAnNTEnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0u
a2V5WzNdID09ICc1MicpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS5rZXlbNF0gPT0g
JzUzJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdLnZhbHVlID09ICd1c2FibGUnKSBP
SworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXkubGVuZ3RoID09ICcxJykgT0sKK0VYUEVDVEVEIChp
dGVyYXRvckFycmF5WzBdLmtleS5sZW5ndGggPT0gJzUnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9y
QXJyYXlbMF0ua2V5WzBdID09ICc0OScpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS5r
ZXlbMV0gPT0gJzUwJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdLmtleVsyXSA9PSAn
NTEnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0ua2V5WzNdID09ICc1MicpIE9LCitF
WFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS5rZXlbNF0gPT0gJzUzJykgT0sKK0VYUEVDVEVEIChp
dGVyYXRvckFycmF5WzBdLnZhbHVlID09ICd1c2FibGUnKSBPSworUHJvbWlzZSByZXNvbHZlZCBP
SwogRU5EIE9GIFRFU1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVk
LW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS5odG1sCmluZGV4
IDIzZDVjOGRmMDgxMWFjZDNhYWZhMjUzMTIyNzRjNTY2OWJhYTY0OTguLmJlM2NlNzVkNWU5MjAx
M2IyZTVjOGU1MDQ0NmM2MmY2NDA1ZTVjNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi11cGRhdGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24tdXBk
YXRlLmh0bWwKQEAgLTEwLDYgKzEwLDcgQEAKICAgICB2YXIgbWVkaWFLZXlTZXNzaW9uOwogICAg
IHZhciBjYXBhYmlsaXRpZXMgPSB7fTsKICAgICB2YXIga2lkczsKKyAgICB2YXIgaXRlcmF0b3JB
cnJheTsKIAogICAgIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgewpAQCAtMTE0LDYgKzExNSw1OCBA
QAogICAgICAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKS50aGVuKG5leHQsIG5leHQp
OwogICAgICAgICAgICAgfSwgbmV4dCk7CiAgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ0EgdmFsaWQgTWVkaWFLZXlTZXNzaW9uIHBy
b3Blcmx5IGRpc3BhdGNoZXMga2V5c3RhdHVzZXNjaGFuZ2UgZXZlbnQuJyk7CisgICAgICAgICAg
ICBydW4oJ2tpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtpZHM6IFsgIk1USXpORFU9IiBdIH0pJyk7
CisgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNz
aW9uKCJ0ZW1wb3JhcnkiKScpOworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlT
ZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMp
KScpOworICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUo
c3RyaW5nVG9VSW50OEFycmF5KCJ2YWxpZC1yZXNwb25zZSBrZXlzLWNoYW5nZWQiKSknKTsKKyAg
ICAgICAgICAgICAgICBtZWRpYUtleVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigna2V5c3RhdHVz
ZXNjaGFuZ2UnLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5zaXplJywgMSk7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzLmhhcyhz
dHJpbmdUb1VJbnQ4QXJyYXkoIjEyMzQ1IikpJywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzLmdldChzdHJpbmdUb1VJ
bnQ4QXJyYXkoIjEyMzQ1IikpJywgJ3VzYWJsZScpOworICAgICAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5oYXMoc3RyaW5nVG9VSW50OEFy
cmF5KCJpbnZhbGlkIikpJywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5nZXQoc3RyaW5nVG9VSW50OEFycmF5KCJp
bnZhbGlkIikpJywgdW5kZWZpbmVkKTsKKworICAgICAgICAgICAgICAgICAgICBpdGVyYXRvckFy
cmF5ID0gW107CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHBhaXIgb2YgbWVkaWFLZXlT
ZXNzaW9uLmtleVN0YXR1c2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JBcnJh
eS5wdXNoKFsgbmV3IFVpbnQ4QXJyYXkocGFpclswXSksIHBhaXJbMV0gXSk7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaXRlcmF0b3JBcnJheS5sZW5ndGgnLCAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEFycmF5c0VxdWFsKCdpdGVyYXRvckFycmF5WzBdWzBdJywgc3Ry
aW5nVG9VSW50OEFycmF5KCcxMjM0NScpKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCdpdGVyYXRvckFycmF5WzBdWzFdJywgJ3VzYWJsZScpOworCisgICAgICAgICAgICAgICAg
ICAgIGl0ZXJhdG9yQXJyYXkgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5
IG9mIG1lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5rZXlzKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpdGVyYXRvckFycmF5LnB1c2gobmV3IFVpbnQ4QXJyYXkoa2V5KSk7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaXRlcmF0b3JBcnJheS5sZW5ndGgnLCAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEFycmF5c0VxdWFsKCdpdGVyYXRvckFycmF5WzBdJywgc3Ry
aW5nVG9VSW50OEFycmF5KCcxMjM0NScpKTsKKworICAgICAgICAgICAgICAgICAgICBpdGVyYXRv
ckFycmF5ID0gW107CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIG1lZGlh
S2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGl0ZXJhdG9yQXJyYXkucHVzaCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RBcnJh
eXNFcXVhbCgnaXRlcmF0b3JBcnJheScsIFsgJ3VzYWJsZScgXSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgaXRlcmF0b3JBcnJheSA9IFtdOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBl
bnRyeSBvZiBtZWRpYUtleVNlc3Npb24ua2V5U3RhdHVzZXMuZW50cmllcygpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgaXRlcmF0b3JBcnJheS5wdXNoKHsga2V5OiBuZXcgVWludDhBcnJheShl
bnRyeVswXSksIHZhbHVlOiBlbnRyeVsxXSB9KTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCdpdGVyYXRvckFycmF5Lmxlbmd0aCcsIDEpOworICAgICAgICAgICAgICAgICAgICB0
ZXN0QXJyYXlzRXF1YWwoJ2l0ZXJhdG9yQXJyYXlbMF0ua2V5Jywgc3RyaW5nVG9VSW50OEFycmF5
KCcxMjM0NScpKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpdGVyYXRvckFy
cmF5WzBdLnZhbHVlJywgJ3VzYWJsZScpOworCisgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9y
QXJyYXkgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgbWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1
c2VzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaXRlcmF0b3JBcnJheS5wdXNoKHsga2V5OiBuZXcgVWludDhBcnJheShrZXkpLCB2YWx1ZTog
dmFsdWUgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ2l0ZXJhdG9yQXJyYXkubGVuZ3RoJywgMSk7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RBcnJheXNFcXVhbCgnaXRlcmF0b3JBcnJheVswXS5rZXknLCBzdHJpbmdUb1VJbnQ4
QXJyYXkoJzEyMzQ1JykpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2l0ZXJh
dG9yQXJyYXlbMF0udmFsdWUnLCAndXNhYmxlJyk7CisKKyAgICAgICAgICAgICAgICAgICAgc2hv
dWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOworICAgICAgICAgICAgICAgIH0s
IGZhbHNlKTsKKyAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICB9LAogICAgIF07CiAgICAg
PC9zY3JpcHQ+CiA8L2hlYWQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300890</attachid>
            <date>2017-02-08 04:40:32 -0800</date>
            <delta_ts>2017-02-09 10:51:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167888-20170208133807.patch</filename>
            <type>text/plain</type>
            <size>36725</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg1ZTM1MWMyNTc2NGQ3
Y2FiNWIyZThhNDc2ZTc1YmU5YTE5YzE4ZC4uZjVjODNjMGZmNjU4NzAwYTk5NzZlMGE1YmUxM2Ex
YzI2M2Q4NWI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcwIEBACiAyMDE3LTAyLTA4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbRU1FXSBJbXBsZW1l
bnQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcygpLCBNZWRpYUtleVN0YXR1c01h
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODg4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoKSwgdHJhbnNmb3JtaW5nIHRo
ZSBwYXNzZWQtaW4KKyAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGludG8gYSBWZWN0b3IgbWFwcGlu
ZyB0aGUga2V5IElEcyB0byBNZWRpYUtleVN0YXR1cyB2YWx1ZXMuCisgICAgICAgIEEga2V5c3Rh
dHVzZXNjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgb24gdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3Qg
YWZ0ZXJ3YXJkcy4KKyAgICAgICAgVGhlIHF1ZXVlaW5nIG9mIHRoZSB0YXNrIHRoYXQgcnVucyB0
aGUgJ2F0dGVtcCB0byByZXN1bWUgcGxheWJhY2snIG9uIHRoZQorICAgICAgICByZWxhdGVkIEhU
TUxNZWRpYUVsZW1lbnQgb2JqZWN0cyBpc24ndCBkb25lIHlldCBzaW5jZSB0aGF0IGFsZ29yaXRo
bSBpc24ndAorICAgICAgICBpbXBsZW1lbnRlZCB5ZXQuCisKKyAgICAgICAgVGhlIHN0YXR1c2Vz
IFZlY3RvciBpcyBzdG9yZWQgb24gdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuIFRoYXQgVmVj
dG9yIGlzCisgICAgICAgIHRoZW4gZXhwb3NlZCB0aHJvdWdoIHRoZSBNZWRpYUtleVN0YXR1c01h
cCBvYmplY3QsIGVhY2ggc3VjaCBvYmplY3QgYmVpbmcKKyAgICAgICAgdW5pcXVlIHRvIG9uZSBN
ZWRpYUtleVNlc3Npb24gb2JqZWN0LiBUaGUgaW1wbGVtZW50YXRpb24gb2YgTWVkaWFLZXlTdGF0
dXNNYXAKKyAgICAgICAgdGh1cyBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgc2Vzc2lvbiBvYmpl
Y3QgYXMgbG9uZyBhcyB0aGF0IG9iamVjdCBpcyBhbGl2ZSwKKyAgICAgICAgYW5kIHF1ZXJpZXMg
dGhlIE1lZGlhS2V5U2Vzc2lvbjo6c3RhdHVzZXMoKSBnZXR0ZXIgdG8gYWNjZXNzIHRoZSBWZWN0
b3IgdGhhdAorICAgICAgICBjb250YWlucyBzdGF0dXMgaW5mb3JtYXRpb24gZm9yIGFsbCB0aGUg
a2V5IElEcy4KKworICAgICAgICBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3Igb2JqZWN0IGtl
ZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBNZWRpYUtleVN0YXR1c01hcAorICAgICAgICBvYmplY3Qg
YW5kIGFjY2Vzc2VzIHRoZSBzdGF0dXNlcyBieSBpbmRleGluZyBpbnRvIHRoZSBzdGF0dXMgVmVj
dG9yIG9mIHRoZQorICAgICAgICByZWxhdGVkIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisKKyAg
ICAgICAgQ0RNSW5zdGFuY2U6OnVwZGF0ZUxpY2Vuc2UoKSBub3cgYWNjZXB0cyB0aGUgc2Vzc2lv
biBJRCBzdHJpbmcgYXMgdGhlIGZpcnN0CisgICAgICAgIGFyZ3VtZW50LCBtYWtpbmcgaXQgcG9z
c2libGUgdG8gc3BlY2lmeSB3aGljaCBzZXNzaW9uIHNob3VsZCBiZSB1cGRhdGVkLgorCisgICAg
ICAgIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCgpIHJldHVybnMgYW4gb3B0
aW9uYWwgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICBWZWN0b3IgdmFsdWUgaW4gdGhlIHNlc3Np
b24gbWFwIHRoYXQgbGlzdHMgYWxsIHRoZSBrZXkgSURzIHRoYXQgYXJlIGJlaW5nCisgICAgICAg
IHN0b3JlZCBmb3IgdGhhdCBzZXNzaW9uLgorCisgICAgICAgIE1vY2tDRE1JbnN0YW5jZTo6dXBk
YXRlTGljZW5zZSgpIG5vdyBkZXRlY3RzIHRoZSAna2V5cy1jaGFuZ2VkJyBlbnRyeSBpbiB0aGUK
KyAgICAgICAgcGFzc2VkLWluIHJlc3BvbnNlIGRhdGEsIGFuZCB1cG9uIGRldGVjdGluZyB0aGF0
IGNvbnN0cnVjdHMgYSBLZXlTdGF0dXNWZWN0b3IKKyAgICAgICAgb2JqZWN0IGNvbnRhaW5pbmcg
YWxsIHRoZSBrZXlzIGZvciB0aGF0IHNlc3Npb24uIEtleVN0YXR1czo6VXNhYmxlIGlzIHJldHVy
bmVkCisgICAgICAgIGZvciBlYWNoIG9iamVjdCBhdCB0aGUgbW9tZW50LCBidXQgdGhpcyBzaG91
bGQgYmUgYWRqdXN0YWJsZSBpbiB0aGUgZnV0dXJlCisgICAgICAgIHRocm91Z2ggYWRkaXRpb25h
bCBwYXJhbWV0ZXJzIHBhc3NlZCB0aHJvdWdoIHRoZSByZXNwb25zZSBkYXRhLiBUaGUgVmVjdG9y
CisgICAgICAgIG9iamVjdCBpcyB0aGVuIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgYW5kIGlzIHRo
ZW4gcGFzc2VkIHRvIHRoZSAndXBkYXRlIGtleQorICAgICAgICBzdGF0dXNlcycgYWxnb3JpdGht
IGluIE1lZGlhS2V5U2Vzc2lvbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IGEgdGVzdCBjYXNlIGlu
IG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi11cGRhdGUuaHRtbC4K
KworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3Rh
dHVzTWFwOjpNZWRpYUtleVN0YXR1c01hcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0
YXR1c01hcDo6ZGV0YWNoU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1
c01hcDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6aGFzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaWRsOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OmtleXNGb3JT
ZXNzaW9uV2l0aElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6dXBkYXRl
TGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCisyMDE3LTAy
LTA4ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAgICAgICBbRU1F
XSBJbXBsZW1lbnQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoKQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODcwCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAxNTMxZDgy
MGY3ZTllMmFjNGVmNzE2YjFkMTQwYjY3NjE3Njg4ZjRlLi44ZTYyMWIyZDJjMTE0Nzc3NWY0MWE0
ODZhOGQxMWIxN2YyMDdlMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZm
ZXI+LCBLZXlTdGF0dXM+PjsKICAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5
U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFu
Z2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2spID0gMDsKIAogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjaykgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwCmluZGV4IDhlMGI3ZWZmYmZmOWVhODNmN2E0ZmJlNTFhNmYyZmY1MWMzNzBhNzguLmUxNzE2
NWQzY2M0NjJjNmZmNzkzN2Y1MDU4OGU0OTM1MGRhMDNiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgUmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9uOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWUKIE1lZGlhS2V5U2Vzc2lv
bjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlh
S2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVy
LCBSZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2U+JiYgaW5zdGFuY2Up
CiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2V4cGlyYXRpb24oc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkKLSAgICAsIG1fa2V5U3RhdHVz
ZXMoTWVkaWFLZXlTdGF0dXNNYXA6OmNyZWF0ZSgpKQorICAgICwgbV9rZXlTdGF0dXNlcyhNZWRp
YUtleVN0YXR1c01hcDo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fdXNlRGlzdGluY3RpdmVJZGVu
dGlmaWVyKHVzZURpc3RpbmN0aXZlSWRlbnRpZmllcikKICAgICAsIG1fc2Vzc2lvblR5cGUoc2Vz
c2lvblR5cGUpCiAgICAgLCBtX2ltcGxlbWVudGF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24p
KQpAQCAtODQsNyArODQsMTAgQEAgTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFLZXlTZXNzaW8KICAgICBVTlVTRURf
UEFSQU0obV91bmluaXRpYWxpemVkKTsKIH0KIAotTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlT
ZXNzaW9uKCkgPSBkZWZhdWx0OworTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9uKCkK
K3sKKyAgICBtX2tleVN0YXR1c2VzLT5kZXRhY2hTZXNzaW9uKCk7Cit9CiAKIGNvbnN0IFN0cmlu
ZyYgTWVkaWFLZXlTZXNzaW9uOjpzZXNzaW9uSWQoKSBjb25zdAogewpAQCAtMjcwLDcgKzI3Myw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNw
b25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0IHNlc3Npb24g
Y2xvc2VkIGJlIGZhbHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhlIENETSBpbnN0
YW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAg
ICAgICAgLy8gNi43LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6
Ci0gICAgICAgIG1faW5zdGFuY2UtPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uVHlwZSwgKnNhbml0
aXplZFJlc3BvbnNlLCBbdGhpcywgd2Vha1RoaXMgPSBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdl
YWtQdHIoKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2U6OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0
aW9uYWw8Q0RNSW5zdGFuY2U6Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2U6OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlLT51cGRhdGVM
aWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0
aGlzLCB3ZWFrVGhpcyA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25h
bDxDRE1JbnN0YW5jZTo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5j
ZTo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtNDgxLDkgKzQ4NCw0OSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5x
dWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcgog
ICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShtZXNzYWdlRXZlbnQpKTsKIH0K
IAotdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlOjpL
ZXlTdGF0dXNWZWN0b3ImJikKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhDRE1JbnN0YW5jZTo6S2V5U3RhdHVzVmVjdG9yJiYgaW5wdXRTdGF0dXNlcykKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQt
bWVkaWEvI3VwZGF0ZS1rZXktc3RhdHVzZXMKKyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkg
Tm92ZW1iZXIgMjAxNgorCisgICAgLy8gMS4gTGV0IHRoZSBzZXNzaW9uIGJlIHRoZSBhc3NvY2lh
dGVkIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgLy8gMi4gTGV0IHRoZSBpbnB1dCBzdGF0
dXNlcyBiZSB0aGUgc2VxdWVuY2Ugb2YgcGFpcnMga2V5IElEIGFuZCBhc3NvY2lhdGVkIE1lZGlh
S2V5U3RhdHVzIHBhaXJzLgorICAgIC8vIDMuIExldCB0aGUgc3RhdHVzZXMgYmUgc2Vzc2lvbidz
IGtleVN0YXR1c2VzIGF0dHJpYnV0ZS4KKyAgICAvLyA0LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVw
cyB0byByZXBsYWNlIHRoZSBjb250ZW50cyBvZiBzdGF0dXNlczoKKyAgICAvLyAgIDQuMS4gRW1w
dHkgc3RhdHVzZXMuCisgICAgLy8gICA0LjIuIEZvciBlYWNoIHBhaXIgaW4gaW5wdXQgc3RhdHVz
ZXMuCisgICAgLy8gICAgIDQuMi4xLiBMZXQgcGFpciBiZSB0aGUgcGFpci4KKyAgICAvLyAgICAg
NC4yLjIuIEluc2VydCBhbiBlbnRyeSBmb3IgcGFpcidzIGtleSBJRCBpbnRvIHN0YXR1c2VzIHdp
dGggdGhlIHZhbHVlIG9mIHBhaXIncyBNZWRpYUtleVN0YXR1cyB2YWx1ZS4KKworICAgIHN0YXRp
YyBhdXRvIHRvTWVkaWFLZXlTdGF0dXMgPSBbXSAoQ0RNSW5zdGFuY2U6OktleVN0YXR1cyBzdGF0
dXMpIC0+IE1lZGlhS2V5U3RhdHVzIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAg
ICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5U3RhdHVzOjpVc2FibGU6CisgICAgICAgICAgICByZXR1
cm4gTWVkaWFLZXlTdGF0dXM6OlVzYWJsZTsKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5
U3RhdHVzOjpFeHBpcmVkOgorICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpFeHBp
cmVkOworICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0dXM6OlJlbGVhc2VkOgorICAg
ICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpSZWxlYXNlZDsKKyAgICAgICAgY2FzZSBD
RE1JbnN0YW5jZTo6S2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkOgorICAgICAgICAgICAgcmV0
dXJuIE1lZGlhS2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkOworICAgICAgICBjYXNlIENETUlu
c3RhbmNlOjpLZXlTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQ6CisgICAgICAgICAgICByZXR1cm4g
TWVkaWFLZXlTdGF0dXM6Ok91dHB1dERvd25zY2FsZWQ7CisgICAgICAgIGNhc2UgQ0RNSW5zdGFu
Y2U6OktleVN0YXR1czo6U3RhdHVzUGVuZGluZzoKKyAgICAgICAgICAgIHJldHVybiBNZWRpYUtl
eVN0YXR1czo6U3RhdHVzUGVuZGluZzsKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5U3Rh
dHVzOjpJbnRlcm5hbEVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpJ
bnRlcm5hbEVycm9yOworICAgICAgICB9OworICAgIH07CisKKyAgICBtX3N0YXR1c2VzLmNsZWFy
KCk7CisgICAgbV9zdGF0dXNlcy5yZXNlcnZlQ2FwYWNpdHkoaW5wdXRTdGF0dXNlcy5zaXplKCkp
OworICAgIGZvciAoYXV0byYgc3RhdHVzIDogaW5wdXRTdGF0dXNlcykKKyAgICAgICAgbV9zdGF0
dXNlcy51bmNoZWNrZWRBcHBlbmQoeyBXVEZNb3ZlKHN0YXR1cy5maXJzdCksIHRvTWVkaWFLZXlT
dGF0dXMoc3RhdHVzLnNlY29uZCkgfSk7CisKKyAgICAvLyA1LiBRdWV1ZSBhIHRhc2sgdG8gZmly
ZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXlzdGF0dXNlc2NoYW5nZSBhdCB0aGUgc2Vzc2lvbi4K
KyAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmtleXN0YXR1c2VzY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworCisgICAgLy8gNi4gUXVl
dWUgYSB0YXNrIHRvIHJ1biB0aGUgQXR0ZW1wdCB0byBSZXN1bWUgUGxheWJhY2sgSWYgTmVjZXNz
YXJ5IGFsZ29yaXRobSBvbiBlYWNoIG9mIHRoZSBtZWRpYSBlbGVtZW50KHMpIHdob3NlIG1lZGlh
S2V5cyBhdHRyaWJ1dGUgaXMgdGhlIE1lZGlhS2V5cyBvYmplY3QgdGhhdCBjcmVhdGVkIHRoZSBz
ZXNzaW9uLgorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CiAKIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjp1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDhmNDBmMzdl
YzhjNjNkZDYwYTU3ZjY0YzFkNTY3NzVhN2M1MzgwNTMuLmFhZjZlMTEyNzJhZWFlODM5Mzg4Nzk0
NTExMjE3OWUzMmQxOTYwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2FnZVR5cGUuaCIK
ICNpbmNsdWRlICJNZWRpYUtleVNlc3Npb25UeXBlLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTdGF0
dXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNjksNiArNzAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbG9zZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHJlbW92ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAorICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVm
PFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0dXNlczsgfQorCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2
ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CiAgICAgdm9pZCBl
bnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsK
QEAgLTEwMyw2ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAw
IH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07CisgICAgVmVjdG9yPHN0
ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwog
ICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhS2V5U2Vzc2lvbj4gbV93ZWFrUHRyRmFjdG9yeTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggM2ViNmI0Mzc5YTY2ZmQ3ZWNiZmQwMjIzNzBi
OTU4NzMwNDNhNDRhZi4uYjVhYmUwYzNlYjA1NzQwMjVhM2Y4MjJlNGZmMTUzMDFhNzk1ZjYzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTMxLDM5ICszMSw4MiBAQAogCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKIAotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiSlNNZWRpYUtleVN0YXR1c01hcC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlh
S2V5U3RhdHVzTWFwOjpNZWRpYUtleVN0YXR1c01hcCgpID0gZGVmYXVsdDsKK01lZGlhS2V5U3Rh
dHVzTWFwOjpNZWRpYUtleVN0YXR1c01hcChjb25zdCBNZWRpYUtleVNlc3Npb24mIHNlc3Npb24p
CisgICAgOiBtX3Nlc3Npb24oJnNlc3Npb24pCit7Cit9CiAKIE1lZGlhS2V5U3RhdHVzTWFwOjp+
TWVkaWFLZXlTdGF0dXNNYXAoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgTWVkaWFLZXlTdGF0dXNNYXA6
OmRldGFjaFNlc3Npb24oKQoreworICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7Cit9CisKIHVuc2ln
bmVkIGxvbmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1ib29sIE1l
ZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJikKK2Jvb2wgTWVkaWFLZXlT
dGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBzdGF0dXNlcyA9IG1fc2Vzc2lvbi0+c3RhdHVz
ZXMoKTsKKyAgICByZXR1cm4gc3RkOjphbnlfb2Yoc3RhdHVzZXMuYmVnaW4oKSwgc3RhdHVzZXMu
ZW5kKCksCisgICAgICAgIFsma2V5SWRdIChhdXRvJiBpdCkgeworICAgICAgICAgICAgYXV0byBs
ZW5ndGggPSBpdC5maXJzdC0+c2l6ZSgpOworICAgICAgICAgICAgaWYgKCFsZW5ndGggfHwgbGVu
Z3RoICE9IGtleUlkLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHJldHVybiAhc3RkOjptZW1jbXAoaXQuZmlyc3QtPmRhdGEoKSwga2V5SWQuZGF0
YSgpLCBsZW5ndGgpOworICAgICAgICB9KTsKIH0KIAotSlNDOjpKU1ZhbHVlIE1lZGlhS2V5U3Rh
dHVzTWFwOjpnZXQoY29uc3QgQnVmZmVyU291cmNlJikKK0pTQzo6SlNWYWx1ZSBNZWRpYUtleVN0
YXR1c01hcDo6Z2V0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgQnVmZmVyU291cmNlJiBr
ZXlJZCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBKU0M6OmpzVW5kZWZp
bmVkKCk7CisgICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZp
bmVkKCk7CisKKyAgICBhdXRvJiBzdGF0dXNlcyA9IG1fc2Vzc2lvbi0+c3RhdHVzZXMoKTsKKyAg
ICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmKHN0YXR1c2VzLmJlZ2luKCksIHN0YXR1c2VzLmVuZCgp
LAorICAgICAgICBbJmtleUlkXSAoYXV0byYgaXQpIHsKKyAgICAgICAgICAgIGF1dG8gbGVuZ3Ro
ID0gaXQuZmlyc3QtPnNpemUoKTsKKyAgICAgICAgICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAh
PSBrZXlJZC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGl0LmZpcnN0LT5kYXRhKCksIGtleUlkLmRhdGEoKSwg
bGVuZ3RoKTsKKyAgICAgICAgfSk7CisKKyAgICBpZiAoaXQgPT0gc3RhdHVzZXMuZW5kKCkpCisg
ICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIGNvbnZlcnRFbnVt
ZXJhdGlvblRvSlMoc3RhdGUsIGl0LT5zZWNvbmQpOwogfQogCi1NZWRpYUtleVN0YXR1c01hcDo6
SXRlcmF0b3I6Okl0ZXJhdG9yKE1lZGlhS2V5U3RhdHVzTWFwJikKK01lZGlhS2V5U3RhdHVzTWFw
OjpJdGVyYXRvcjo6SXRlcmF0b3IoTWVkaWFLZXlTdGF0dXNNYXAmIG1hcCkKKyAgICA6IG1fbWFw
KG1hcCkKIHsKIH0KIAogc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3Vy
Y2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5U3RhdHVzTWFwOjpJdGVy
YXRvcjo6bmV4dCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIW1fbWFw
LT5tX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvJiBz
dGF0dXNlcyA9IG1fbWFwLT5tX3Nlc3Npb24tPnN0YXR1c2VzKCk7CisgICAgaWYgKG1faW5kZXgg
Pj0gc3RhdHVzZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
YXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107CisgICAgYXV0byBidWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsK
KyAgICByZXR1cm4gV1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwg
TWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBw
YWlyLnNlY29uZCB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmgKaW5kZXggNmZkNDNiYzhjYWM5ZGRmYjZjNmZiNDRkNGZhZjMzOWFkZTlkMjBjOS4uMzRjNWVk
Nzk1YTE5Nzk2YjYyMzI0M2VkNjgzZDBlMzk1YjM0Zjg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApA
QCAtMzMsMzcgKzMzLDQ3IEBACiAjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAi
TWVkaWFLZXlTdGF0dXMuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZWRpYUtleVNlc3Npb247CitjbGFzcyBTaGFyZWRC
dWZmZXI7CisKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoKICAgICB1c2luZyBTdGF0dXMgPSBNZWRpYUtleVN0
YXR1czsKIAotICAgIHN0YXRpYyBSZWY8TWVkaWFLZXlTdGF0dXNNYXA+IGNyZWF0ZSgpCisgICAg
c3RhdGljIFJlZjxNZWRpYUtleVN0YXR1c01hcD4gY3JlYXRlKGNvbnN0IE1lZGlhS2V5U2Vzc2lv
biYgc2Vzc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhS2V5
U3RhdHVzTWFwKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlTdGF0dXNN
YXAoc2Vzc2lvbikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfk1lZGlhS2V5U3RhdHVzTWFwKCk7
CiAKKyAgICB2b2lkIGRldGFjaFNlc3Npb24oKTsKKwogICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSgp
OwogICAgIGJvb2wgaGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYpOwotICAgIEpTQzo6SlNWYWx1ZSBn
ZXQoY29uc3QgQnVmZmVyU291cmNlJik7CisgICAgSlNDOjpKU1ZhbHVlIGdldChKU0M6OkV4ZWNT
dGF0ZSYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYpOwogCiAgICAgY2xhc3MgSXRlcmF0b3IgewogICAg
IHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSXRlcmF0b3IoTWVkaWFLZXlTdGF0dXNNYXAmKTsK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZh
cmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IG5leHQoKTsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIFJlZjxNZWRpYUtleVN0YXR1c01hcD4gbV9tYXA7CisgICAgICAgIHNpemVfdCBtX2luZGV4
IHsgMCB9OwogICAgIH07CiAgICAgSXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJldHVybiBJ
dGVyYXRvcigqdGhpcyk7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYUtleVN0YXR1c01hcCgpOwor
ICAgIE1lZGlhS2V5U3RhdHVzTWFwKGNvbnN0IE1lZGlhS2V5U2Vzc2lvbiYpOworCisgICAgY29u
c3QgTWVkaWFLZXlTZXNzaW9uKiBtX3Nlc3Npb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuaWRsCmluZGV4IDVjM2ZjNjliN2UwMTYzM2Y0YjdmY2MwYThj
ZTVjMWRiNmZhY2U0NWYuLmIzMjE1YWU4MzIyMzgxNmIxOWE5Nzk2MGM5YWNhZDJiMTY4YzE1Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuaWRsCkBAIC00Myw1ICs0Myw1IEBAIGVudW0gTWVkaWFLZXlT
dGF0dXMgewogICAgIGl0ZXJhYmxlPEJ1ZmZlclNvdXJjZSwgTWVkaWFLZXlTdGF0dXM+OwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNpemU7CiAgICAgYm9vbGVhbiBoYXMo
QnVmZmVyU291cmNlIGtleUlkKTsKLSAgICBhbnkgZ2V0KEJ1ZmZlclNvdXJjZSBrZXlJZCk7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSBhbnkgZ2V0KEJ1ZmZlclNvdXJjZSBrZXlJZCk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA5YTBkMjYw
YTlhNjM5ODFhNzY3MGM2ZTU0YzZlOTJhZmU2OThiZGExLi43OTI5NDQyYTliMWUyYTg3MmIxMWZi
NjNhNjZmZTcxMTRmYjY1NWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmNwcApAQCAtODEsNiArODEsMTQgQEAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2Nr
Q0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmkKICAgICBy
ZXR1cm4gV1RGTW92ZShpdC0+dmFsdWUpOwogfQogCitzdGQ6Om9wdGlvbmFsPGNvbnN0IFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4mPiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5m
aW5kKGlkKTsKKyAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gaXQtPnZhbHVlOworfQorCiB2b2lkIE1vY2tDRE1G
YWN0b3J5OjpzZXRTdXBwb3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykKIHsK
ICAgICBtX3N1cHBvcnRlZERhdGFUeXBlcy5jbGVhcigpOwpAQCAtMjc2LDcgKzI4NCw3IEBAIHZv
aWQgTW9ja0NETUluc3RhbmNlOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbWljU3RyaW5nCiAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNj
ZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjp1cGRhdGVM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBN
b2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1fY2RtID8gbV9jZG0tPmZhY3RvcnkoKSA6IG51bGxw
dHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0yOTIsMTAgKzMwMCwyMyBAQCB2b2lkIE1vY2tD
RE1JbnN0YW5jZTo6dXBkYXRlTGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiByZXNwb25zZSwgTAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFNl
c3Npb24gY2xvc3VyZSwga2V5IHN0YXR1cywgZXhwaXJhdGlvbiBhbmQgbWVzc2FnZSBoYW5kbGlu
ZyBzaG91bGQgYmUgaW1wbGVtZW50ZWQKKyAgICBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rv
cj4gY2hhbmdlZEtleXM7CisgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZyhB
U0NJSUxpdGVyYWwoImtleXMtY2hhbmdlZCIpKSkpIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxj
b25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Jj4ga2V5cyA9IGZhY3RvcnktPmtleXNGb3JT
ZXNzaW9uV2l0aElEKHNlc3Npb25JRCk7CisgICAgICAgIGlmIChrZXlzKSB7CisgICAgICAgICAg
ICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yOworICAgICAgICAgICAga2V5U3RhdHVz
VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoa2V5cy0+c2l6ZSgpKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byYga2V5IDogKmtleXMpCisgICAgICAgICAgICAgICAga2V5U3RhdHVzVmVjdG9y
LnVuY2hlY2tlZEFwcGVuZCh7IGtleS5jb3B5UmVmKCksIEtleVN0YXR1czo6VXNhYmxlIH0pOwor
CisgICAgICAgICAgICBjaGFuZ2VkS2V5cyA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBTZXNzaW9uIGNsb3N1cmUsIGV4cGlyYXRp
b24gYW5kIG1lc3NhZ2UgaGFuZGxpbmcgc2hvdWxkIGJlIGltcGxlbWVudGVkCiAgICAgLy8gb25j
ZSB0aGUgcmVsZXZhbnQgYWxnb3JpdGhtcyBhcmUgc3VwcG9ydGVkLgogCi0gICAgY2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6U3VjY2VlZGVkKTsKKyAgICBjYWxsYmFjayhmYWxzZSwgV1RGTW92ZShjaGFuZ2VkS2V5
cyksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7
CiB9CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDAxZjFiYzM2MTJhMDdiNjkzMDkyOTA4ODgzZWM4
ZmMxZDZhMjhhMGQuLjZkNDRkMGQ4YTVjYjJkYjVmZDcwMzBhMjEwOWU1Y2Q1YzRjMWE0YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTcyLDYgKzcyLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJl
dHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQogICAgIHZv
aWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+JiYpOworICAgIHN0ZDo6b3B0aW9uYWw8Y29uc3QgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiY+IGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0
OwogICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgpAQCAtMTMwLDcgKzEzMSw3IEBAIHBy
aXZhdGU6CiAgICAgU3VjY2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkg
ZmluYWw7CiAgICAgU3VjY2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2spIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjaykgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2spIGZpbmFs
OwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2spIGZpbmFsOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWU5ZjIwMjBiZGEx
MTdlNzg3NDY5ZWQ3ODZkMjYyZWI2Mzk1MzU3Yy4uMjU5MjZiZTFjY2FhNjJiNDc0NzdiNzIzZTg5
MTI3MTA1ZDMyNmNlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE3LTAyLTA4ICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbRU1FXSBJbXBsZW1lbnQg
TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcygpLCBNZWRpYUtleVN0YXR1c01hcAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFub3Ro
ZXIgdGVzdCBjYXNlIHRvIHRoZSBtb2NrLU1lZGlhS2V5U2Vzc2lvbi11cGRhdGUuaHRtbCB0ZXN0
IHRoYXQKKyAgICAgICAgZW5zdXJlcyB0aGUga2V5c3RhdHVzZXNjaGFuZ2UgZXZlbnQgaXMgZmly
ZWQgb24gdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QKKyAgICAgICAgYW5kIHRoYXQgdGhlIHN0
YXR1cyBvZiB0aGUga2V5cyBpcyBwcm9wZXJseSByZXBvcnRlZCB0aHJvdWdoIHRoZQorICAgICAg
ICBNZWRpYUtleVN0YXR1c01hcCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgTWVkaWFLZXlT
ZXNzaW9uLgorCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlT
ZXNzaW9uLXVwZGF0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS5odG1sOgorCisyMDE3LTAyLTA4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAgICAgICBbRU1FXSBJbXBsZW1l
bnQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODcwCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi11cGRhdGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNz
aW9uLXVwZGF0ZS1leHBlY3RlZC50eHQKaW5kZXggYThmYTE1NzQ5NWZlNDhmZGM5NGY3ZmY1ZDkw
ZWFiMTA2ZDQ4MzY0Ny4uODRjMTcwMGY5ZDNlZGE3MjIyZjcyMmY0NTQzODU4YjY0MzQ0ZmY4OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFL
ZXlTZXNzaW9uLXVwZGF0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5j
cnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS1leHBlY3RlZC50eHQKQEAg
LTEyLDEzICsxMiwxMyBAQCBQcm9taXNlIHJlc29sdmVkIE9LCiBVc2luZyBhIG5vbi1jYWxsYWJs
ZSBNZWRpYUtleVNlc3Npb24gc2hvdWxkIHJlamVjdC4KIFJVTihtZWRpYUtleVNlc3Npb24gPSBt
ZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IikpCiBFWFBFQ1RFRCAodHlwZW9mIG1l
ZGlhS2V5U2Vzc2lvbiA9PSAnb2JqZWN0JykgT0sKLVJVTihwcm9taXNlID0gbWVkaWFLZXlTZXNz
aW9uLnVwZGF0ZShzdHJpbmdUb1VJbnQ4QXJyYXkoImludmFsaWQtc3RhdGUiKSkpCitSVU4ocHJv
bWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoZW5jb2Rlci5lbmNvZGUoImludmFsaWQtc3Rh
dGUiKSkpCiBQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSwogCiBVc2luZyBhIHplcm8tbGVu
Z3RoIHJlc3BvbnNlIHNob3VsZCByZWplY3QuCiBSVU4oa2lkcyA9IEpTT04uc3RyaW5naWZ5KHsg
a2lkczogWyAiTVRJek5EVT0iIF0gfSkpCiBSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlz
LmNyZWF0ZVNlc3Npb24oInRlbXBvcmFyeSIpKQotUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Np
b24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykpKQor
UlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBl
bmNvZGVyLmVuY29kZShraWRzKSkpCiBQcm9taXNlIHJlc29sdmVkIE9LCiBSVU4ocHJvbWlzZSA9
IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUobmV3IFVpbnQ4QXJyYXkoMCkpKQogUHJvbWlzZSByZWpl
Y3RlZCBjb3JyZWN0bHkgT0sKQEAgLTI2LDI1ICsyNiwxMDEgQEAgUHJvbWlzZSByZWplY3RlZCBj
b3JyZWN0bHkgT0sKIFVzaW5nIGEgbm9uLXNhbml0aXphYmxlIHJlc3BvbnNlIHNob3VsZCByZWpl
Y3QuCiBSVU4oa2lkcyA9IEpTT04uc3RyaW5naWZ5KHsga2lkczogWyAiTVRJek5EVT0iIF0gfSkp
CiBSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRlbXBvcmFy
eSIpKQotUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlp
ZHMiLCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykpKQorUlVOKHByb21pc2UgPSBtZWRpYUtleVNl
c3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBlbmNvZGVyLmVuY29kZShraWRzKSkpCiBQ
cm9taXNlIHJlc29sdmVkIE9LCi1SVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUo
c3RyaW5nVG9VSW50OEFycmF5KCJpbnZhbGlkLXJlc3BvbnNlIikpKQorUlVOKHByb21pc2UgPSBt
ZWRpYUtleVNlc3Npb24udXBkYXRlKGVuY29kZXIuZW5jb2RlKCJpbnZhbGlkLXJlc3BvbnNlIikp
KQogUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKIAogVXNpbmcgYSBzYW5pdGl6YWJsZSBy
ZXNwb25zZSBzaG91bGQgcmVzb2x2ZS4KIFJVTihraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRz
OiBbICJNVEl6TkRVPSIgXSB9KSkKIFJVTihtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3Jl
YXRlU2Vzc2lvbigidGVtcG9yYXJ5IikpCi1SVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5n
ZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSkpCitSVU4o
cHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIGVuY29k
ZXIuZW5jb2RlKGtpZHMpKSkKIFByb21pc2UgcmVzb2x2ZWQgT0sKLVJVTihwcm9taXNlID0gbWVk
aWFLZXlTZXNzaW9uLnVwZGF0ZShzdHJpbmdUb1VJbnQ4QXJyYXkoInZhbGlkLXJlc3BvbnNlIikp
KQorUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24udXBkYXRlKGVuY29kZXIuZW5jb2RlKCJ2
YWxpZC1yZXNwb25zZSIpKSkKIFByb21pc2UgcmVzb2x2ZWQgT0sKIAogVXNpbmcgYSBzYW5pdGl6
YWJsZSByZXNwb25zZSB3aXRoIGludmFsaWQgZm9ybWF0IHNob3VsZCByZXNvbHZlLgogUlVOKGtp
ZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtpZHM6IFsgIk1USXpORFU9IiBdIH0pKQogUlVOKG1lZGlh
S2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKSkKLVJVTihw
cm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgc3RyaW5n
VG9VSW50OEFycmF5KGtpZHMpKSkKK1JVTihwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVy
YXRlUmVxdWVzdCgia2V5aWRzIiwgZW5jb2Rlci5lbmNvZGUoa2lkcykpKQogUHJvbWlzZSByZXNv
bHZlZCBPSwotUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24udXBkYXRlKHN0cmluZ1RvVUlu
dDhBcnJheSgidmFsaWQtcmVzcG9uc2UgaW52YWxpZC1mb3JtYXQiKSkpCitSVU4ocHJvbWlzZSA9
IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoZW5jb2Rlci5lbmNvZGUoInZhbGlkLXJlc3BvbnNlIGlu
dmFsaWQtZm9ybWF0IikpKQogUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKKworQSB2YWxp
ZCBNZWRpYUtleVNlc3Npb24gcHJvcGVybHkgZGlzcGF0Y2hlcyBrZXlzdGF0dXNlc2NoYW5nZSBl
dmVudC4KK1JVTihraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIsICJO
amM0T1RBPSIgXSB9KSkKK1JVTihtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vz
c2lvbigidGVtcG9yYXJ5IikpCitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0
ZVJlcXVlc3QoImtleWlkcyIsIGVuY29kZXIuZW5jb2RlKGtpZHMpKSkKK1Byb21pc2UgcmVzb2x2
ZWQgT0sKK1JVTihwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShlbmNvZGVyLmVuY29k
ZSgidmFsaWQtcmVzcG9uc2Uga2V5cy1jaGFuZ2VkIikpKQorRVhQRUNURUQgKG1lZGlhS2V5U2Vz
c2lvbi5rZXlTdGF0dXNlcy5zaXplID09ICcyJykgT0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Np
b24ua2V5U3RhdHVzZXMuaGFzKGVuY29kZXIuZW5jb2RlKCIxMjM0NSIpKSA9PSAndHJ1ZScpIE9L
CitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzLmdldChlbmNvZGVyLmVuY29k
ZSgiMTIzNDUiKSkgPT0gJ3VzYWJsZScpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLmtl
eVN0YXR1c2VzLmhhcyhlbmNvZGVyLmVuY29kZSgiNjc4OTAiKSkgPT0gJ3RydWUnKSBPSworRVhQ
RUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5nZXQoZW5jb2Rlci5lbmNvZGUoIjY3
ODkwIikpID09ICd1c2FibGUnKSBPSworRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0
dXNlcy5oYXMoZW5jb2Rlci5lbmNvZGUoImludmFsaWQiKSkgPT0gJ2ZhbHNlJykgT0sKK0VYUEVD
VEVEIChtZWRpYUtleVNlc3Npb24ua2V5U3RhdHVzZXMuZ2V0KGVuY29kZXIuZW5jb2RlKCJpbnZh
bGlkIikpID09ICd1bmRlZmluZWQnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXkubGVuZ3Ro
ID09ICcyJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzBdLmxlbmd0aCA9PSAnNScp
IE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXVswXVswXSA9PSAnNDknKSBPSworRVhQRUNU
RUQgKGl0ZXJhdG9yQXJyYXlbMF1bMF1bMV0gPT0gJzUwJykgT0sKK0VYUEVDVEVEIChpdGVyYXRv
ckFycmF5WzBdWzBdWzJdID09ICc1MScpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXVsw
XVszXSA9PSAnNTInKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF1bMF1bNF0gPT0gJzUz
JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzFdID09ICd1c2FibGUnKSBPSworRVhQ
RUNURUQgKGl0ZXJhdG9yQXJyYXlbMV1bMF0ubGVuZ3RoID09ICc1JykgT0sKK0VYUEVDVEVEIChp
dGVyYXRvckFycmF5WzFdWzBdWzBdID09ICc1NCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJh
eVsxXVswXVsxXSA9PSAnNTUnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV1bMF1bMl0g
PT0gJzU2JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdWzBdWzNdID09ICc1NycpIE9L
CitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXVswXVs0XSA9PSAnNDgnKSBPSworRVhQRUNURUQg
KGl0ZXJhdG9yQXJyYXlbMV1bMV0gPT0gJ3VzYWJsZScpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JB
cnJheS5sZW5ndGggPT0gJzInKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0ubGVuZ3Ro
ID09ICc1JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzBdID09ICc0OScpIE9LCitF
WFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXVsxXSA9PSAnNTAnKSBPSworRVhQRUNURUQgKGl0ZXJh
dG9yQXJyYXlbMF1bMl0gPT0gJzUxJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzNd
ID09ICc1MicpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXVs0XSA9PSAnNTMnKSBPSwor
RVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV0ubGVuZ3RoID09ICc1JykgT0sKK0VYUEVDVEVEIChp
dGVyYXRvckFycmF5WzFdWzBdID09ICc1NCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsx
XVsxXSA9PSAnNTUnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV1bMl0gPT0gJzU2Jykg
T0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdWzNdID09ICc1NycpIE9LCitFWFBFQ1RFRCAo
aXRlcmF0b3JBcnJheVsxXVs0XSA9PSAnNDgnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXku
bGVuZ3RoID09ICcyJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdID09ICd1c2FibGUn
KSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV0gPT0gJ3VzYWJsZScpIE9LCitFWFBFQ1RF
RCAoaXRlcmF0b3JBcnJheS5sZW5ndGggPT0gJzInKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJy
YXlbMF0ua2V5Lmxlbmd0aCA9PSAnNScpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS5r
ZXlbMF0gPT0gJzQ5JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdLmtleVsxXSA9PSAn
NTAnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0ua2V5WzJdID09ICc1MScpIE9LCitF
WFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS5rZXlbM10gPT0gJzUyJykgT0sKK0VYUEVDVEVEIChp
dGVyYXRvckFycmF5WzBdLmtleVs0XSA9PSAnNTMnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJy
YXlbMF0udmFsdWUgPT0gJ3VzYWJsZScpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXS5r
ZXkubGVuZ3RoID09ICc1JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdLmtleVswXSA9
PSAnNTQnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV0ua2V5WzFdID09ICc1NScpIE9L
CitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXS5rZXlbMl0gPT0gJzU2JykgT0sKK0VYUEVDVEVE
IChpdGVyYXRvckFycmF5WzFdLmtleVszXSA9PSAnNTcnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9y
QXJyYXlbMV0ua2V5WzRdID09ICc0OCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXS52
YWx1ZSA9PSAndXNhYmxlJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5Lmxlbmd0aCA9PSAn
MicpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS5rZXkubGVuZ3RoID09ICc1JykgT0sK
K0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdLmtleVswXSA9PSAnNDknKSBPSworRVhQRUNURUQg
KGl0ZXJhdG9yQXJyYXlbMF0ua2V5WzFdID09ICc1MCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JB
cnJheVswXS5rZXlbMl0gPT0gJzUxJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdLmtl
eVszXSA9PSAnNTInKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0ua2V5WzRdID09ICc1
MycpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS52YWx1ZSA9PSAndXNhYmxlJykgT0sK
K0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdLmtleS5sZW5ndGggPT0gJzUnKSBPSworRVhQRUNU
RUQgKGl0ZXJhdG9yQXJyYXlbMV0ua2V5WzBdID09ICc1NCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0
b3JBcnJheVsxXS5rZXlbMV0gPT0gJzU1JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFd
LmtleVsyXSA9PSAnNTYnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV0ua2V5WzNdID09
ICc1NycpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXS5rZXlbNF0gPT0gJzQ4JykgT0sK
K0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdLnZhbHVlID09ICd1c2FibGUnKSBPSworUHJvbWlz
ZSByZXNvbHZlZCBPSwogRU5EIE9GIFRFU1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVwZGF0
ZS5odG1sCmluZGV4IDIzZDVjOGRmMDgxMWFjZDNhYWZhMjUzMTIyNzRjNTY2OWJhYTY0OTguLjYx
Y2VkYTZkYTQ4OTQzMmQyMGE1OGJmYmJhMmIyYTY1N2NkYjQ1YTYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi11cGRhdGUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtl
eVNlc3Npb24tdXBkYXRlLmh0bWwKQEAgLTEwLDYgKzEwLDggQEAKICAgICB2YXIgbWVkaWFLZXlT
ZXNzaW9uOwogICAgIHZhciBjYXBhYmlsaXRpZXMgPSB7fTsKICAgICB2YXIga2lkczsKKyAgICB2
YXIgaXRlcmF0b3JBcnJheTsKKyAgICB2YXIgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpOwog
CiAgICAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICB7CkBAIC00OSwxNCArNTEsNiBAQAogICAgICAg
ICBuZXh0KCk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc3RyaW5nVG9VSW50OEFycmF5KHN0cikK
LSAgICB7Ci0gICAgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCk7Ci0g
ICAgICAgZm9yICh2YXIgaT0wOyBpPHN0ci5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGFycmF5
W2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7Ci0gICAgICAgcmV0dXJuIGFycmF5OwotICAgIH0KLQog
ICAgIHRlc3RzID0gWwogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJ1bigncHJv
bWlzZSA9IG1lZGlhS2V5U3lzdGVtQWNjZXNzLmNyZWF0ZU1lZGlhS2V5cygpJyk7CkBAIC02Nyw3
ICs2MSw3IEBACiAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1VzaW5nIGEgbm9uLWNhbGxhYmxl
IE1lZGlhS2V5U2Vzc2lvbiBzaG91bGQgcmVqZWN0LicpOwogICAgICAgICAgICAgcnVuKCdtZWRp
YUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IiknKTsKICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9mIG1lZGlhS2V5U2Vzc2lvbicsICdvYmplY3Qn
KTsKLSAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoc3Ry
aW5nVG9VSW50OEFycmF5KCJpbnZhbGlkLXN0YXRlIikpJyk7CisgICAgICAgICAgICBydW4oJ3By
b21pc2UgPSBtZWRpYUtleVNlc3Npb24udXBkYXRlKGVuY29kZXIuZW5jb2RlKCJpbnZhbGlkLXN0
YXRlIikpJyk7CiAgICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSkudGhlbihuZXh0LCBu
ZXh0KTsKICAgICAgICAgfSwKIApAQCAtNzUsNyArNjksNyBAQAogICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCdVc2luZyBhIHplcm8tbGVuZ3RoIHJlc3BvbnNlIHNob3VsZCByZWplY3QuJyk7CiAg
ICAgICAgICAgICBydW4oJ2tpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtpZHM6IFsgIk1USXpORFU9
IiBdIH0pJyk7CiAgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5j
cmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKScpOwotICAgICAgICAgICAgcnVuKCdwcm9taXNlID0g
bWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgc3RyaW5nVG9VSW50OEFy
cmF5KGtpZHMpKScpOworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9u
LmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgZW5jb2Rlci5lbmNvZGUoa2lkcykpJyk7CiAgICAg
ICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShuZXcgVWludDhB
cnJheSgwKSknKTsKICAgICAgICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSkudGhlbihu
ZXh0LCBuZXh0KTsKQEAgLTg2LDkgKzgwLDkgQEAKICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgn
VXNpbmcgYSBub24tc2FuaXRpemFibGUgcmVzcG9uc2Ugc2hvdWxkIHJlamVjdC4nKTsKICAgICAg
ICAgICAgIHJ1bigna2lkcyA9IEpTT04uc3RyaW5naWZ5KHsga2lkczogWyAiTVRJek5EVT0iIF0g
fSknKTsKICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0
ZVNlc3Npb24oInRlbXBvcmFyeSIpJyk7Ci0gICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRp
YUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBzdHJpbmdUb1VJbnQ4QXJyYXko
a2lkcykpJyk7CisgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2Vu
ZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBlbmNvZGVyLmVuY29kZShraWRzKSknKTsKICAgICAgICAg
ICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVNlc3Npb24udXBkYXRlKHN0cmluZ1RvVUludDhB
cnJheSgiaW52YWxpZC1yZXNwb25zZSIpKScpOworICAgICAgICAgICAgICAgIHJ1bigncHJvbWlz
ZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoZW5jb2Rlci5lbmNvZGUoImludmFsaWQtcmVzcG9u
c2UiKSknKTsKICAgICAgICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSkudGhlbihuZXh0
LCBuZXh0KTsKICAgICAgICAgICAgIH0sIG5leHQpOwogICAgICAgICB9LApAQCAtOTcsOSArOTEs
OSBAQAogICAgICAgICAgICAgY29uc29sZVdyaXRlKCdVc2luZyBhIHNhbml0aXphYmxlIHJlc3Bv
bnNlIHNob3VsZCByZXNvbHZlLicpOwogICAgICAgICAgICAgcnVuKCdraWRzID0gSlNPTi5zdHJp
bmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIgXSB9KScpOwogICAgICAgICAgICAgcnVuKCdtZWRp
YUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IiknKTsKLSAg
ICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3Qo
ImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSknKTsKKyAgICAgICAgICAgIHJ1bign
cHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIGVuY29k
ZXIuZW5jb2RlKGtpZHMpKScpOwogICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50
aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5
U2Vzc2lvbi51cGRhdGUoc3RyaW5nVG9VSW50OEFycmF5KCJ2YWxpZC1yZXNwb25zZSIpKScpOwor
ICAgICAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoZW5j
b2Rlci5lbmNvZGUoInZhbGlkLXJlc3BvbnNlIikpJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxk
UmVzb2x2ZShwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOwogICAgICAgICAgICAgfSwgbmV4dCk7
CiAgICAgICAgIH0sCkBAIC0xMDgsMTIgKzEwMiw3MyBAQAogICAgICAgICAgICAgY29uc29sZVdy
aXRlKCdVc2luZyBhIHNhbml0aXphYmxlIHJlc3BvbnNlIHdpdGggaW52YWxpZCBmb3JtYXQgc2hv
dWxkIHJlc29sdmUuJyk7CiAgICAgICAgICAgICBydW4oJ2tpZHMgPSBKU09OLnN0cmluZ2lmeSh7
IGtpZHM6IFsgIk1USXpORFU9IiBdIH0pJyk7CiAgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vz
c2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKScpOwotICAgICAgICAg
ICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRz
Iiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMpKScpOworICAgICAgICAgICAgcnVuKCdwcm9taXNl
ID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgZW5jb2Rlci5lbmNv
ZGUoa2lkcykpJyk7CiAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9u
LnVwZGF0ZShzdHJpbmdUb1VJbnQ4QXJyYXkoInZhbGlkLXJlc3BvbnNlIGludmFsaWQtZm9ybWF0
IikpJyk7CisgICAgICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLnVw
ZGF0ZShlbmNvZGVyLmVuY29kZSgidmFsaWQtcmVzcG9uc2UgaW52YWxpZC1mb3JtYXQiKSknKTsK
ICAgICAgICAgICAgICAgICBzaG91bGRSZWplY3QocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsK
ICAgICAgICAgICAgIH0sIG5leHQpOwogICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdBIHZhbGlkIE1lZGlhS2V5U2Vzc2lvbiBwcm9w
ZXJseSBkaXNwYXRjaGVzIGtleXN0YXR1c2VzY2hhbmdlIGV2ZW50LicpOworICAgICAgICAgICAg
cnVuKCdraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIsICJOamM0T1RB
PSIgXSB9KScpOworICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMu
Y3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IiknKTsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9
IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIGVuY29kZXIuZW5jb2Rl
KGtpZHMpKScpOworICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51
cGRhdGUoZW5jb2Rlci5lbmNvZGUoInZhbGlkLXJlc3BvbnNlIGtleXMtY2hhbmdlZCIpKScpOwor
ICAgICAgICAgICAgICAgIG1lZGlhS2V5U2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCdrZXlzdGF0
dXNlc2NoYW5nZScsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzLnNpemUnLCAyKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ua2V5U3RhdHVzZXMuaGFz
KGVuY29kZXIuZW5jb2RlKCIxMjM0NSIpKScsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5nZXQoZW5jb2Rlci5lbmNv
ZGUoIjEyMzQ1IikpJywgJ3VzYWJsZScpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5oYXMoZW5jb2Rlci5lbmNvZGUoIjY3ODkw
IikpJywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlT
ZXNzaW9uLmtleVN0YXR1c2VzLmdldChlbmNvZGVyLmVuY29kZSgiNjc4OTAiKSknLCAndXNhYmxl
Jyk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmtl
eVN0YXR1c2VzLmhhcyhlbmNvZGVyLmVuY29kZSgiaW52YWxpZCIpKScsIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ua2V5U3RhdHVzZXMu
Z2V0KGVuY29kZXIuZW5jb2RlKCJpbnZhbGlkIikpJywgdW5kZWZpbmVkKTsKKworICAgICAgICAg
ICAgICAgICAgICBpdGVyYXRvckFycmF5ID0gW107CisgICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIHBhaXIgb2YgbWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaXRlcmF0b3JBcnJheS5wdXNoKFsgbmV3IFVpbnQ4QXJyYXkocGFpclswXSksIHBh
aXJbMV0gXSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaXRlcmF0b3JBcnJh
eS5sZW5ndGgnLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEFycmF5c0VxdWFsKCdpdGVy
YXRvckFycmF5WzBdWzBdJywgZW5jb2Rlci5lbmNvZGUoJzEyMzQ1JykpOworICAgICAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2l0ZXJhdG9yQXJyYXlbMF1bMV0nLCAndXNhYmxlJyk7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RBcnJheXNFcXVhbCgnaXRlcmF0b3JBcnJheVsxXVswXScs
IGVuY29kZXIuZW5jb2RlKCc2Nzg5MCcpKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCdpdGVyYXRvckFycmF5WzFdWzFdJywgJ3VzYWJsZScpOworCisgICAgICAgICAgICAgICAg
ICAgIGl0ZXJhdG9yQXJyYXkgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5
IG9mIG1lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5rZXlzKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpdGVyYXRvckFycmF5LnB1c2gobmV3IFVpbnQ4QXJyYXkoa2V5KSk7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaXRlcmF0b3JBcnJheS5sZW5ndGgnLCAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEFycmF5c0VxdWFsKCdpdGVyYXRvckFycmF5WzBdJywgZW5j
b2Rlci5lbmNvZGUoJzEyMzQ1JykpOworICAgICAgICAgICAgICAgICAgICB0ZXN0QXJyYXlzRXF1
YWwoJ2l0ZXJhdG9yQXJyYXlbMV0nLCBlbmNvZGVyLmVuY29kZSgnNjc4OTAnKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgaXRlcmF0b3JBcnJheSA9IFtdOworICAgICAgICAgICAgICAgICAgICBm
b3IgKHZhciB2YWx1ZSBvZiBtZWRpYUtleVNlc3Npb24ua2V5U3RhdHVzZXMudmFsdWVzKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvckFycmF5LnB1c2godmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICB0ZXN0QXJyYXlzRXF1YWwoJ2l0ZXJhdG9yQXJyYXknLCBbICd1c2FibGUn
LCAndXNhYmxlJyBdKTsKKworICAgICAgICAgICAgICAgICAgICBpdGVyYXRvckFycmF5ID0gW107
CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGVudHJ5IG9mIG1lZGlhS2V5U2Vzc2lvbi5r
ZXlTdGF0dXNlcy5lbnRyaWVzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvckFy
cmF5LnB1c2goeyBrZXk6IG5ldyBVaW50OEFycmF5KGVudHJ5WzBdKSwgdmFsdWU6IGVudHJ5WzFd
IH0pOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2l0ZXJhdG9yQXJyYXkubGVu
Z3RoJywgMik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RBcnJheXNFcXVhbCgnaXRlcmF0b3JB
cnJheVswXS5rZXknLCBlbmNvZGVyLmVuY29kZSgnMTIzNDUnKSk7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgnaXRlcmF0b3JBcnJheVswXS52YWx1ZScsICd1c2FibGUnKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEFycmF5c0VxdWFsKCdpdGVyYXRvckFycmF5WzFdLmtleScs
IGVuY29kZXIuZW5jb2RlKCc2Nzg5MCcpKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCdpdGVyYXRvckFycmF5WzFdLnZhbHVlJywgJ3VzYWJsZScpOworCisgICAgICAgICAgICAg
ICAgICAgIGl0ZXJhdG9yQXJyYXkgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgbWVkaWFLZXlT
ZXNzaW9uLmtleVN0YXR1c2VzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaXRlcmF0b3JBcnJheS5wdXNoKHsga2V5OiBuZXcgVWludDhBcnJh
eShrZXkpLCB2YWx1ZTogdmFsdWUgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2l0ZXJhdG9yQXJyYXkubGVuZ3RoJywgMik7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RBcnJheXNFcXVhbCgnaXRlcmF0b3JBcnJheVswXS5rZXkn
LCBlbmNvZGVyLmVuY29kZSgnMTIzNDUnKSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgnaXRlcmF0b3JBcnJheVswXS52YWx1ZScsICd1c2FibGUnKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEFycmF5c0VxdWFsKCdpdGVyYXRvckFycmF5WzFdLmtleScsIGVuY29kZXIuZW5j
b2RlKCc2Nzg5MCcpKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpdGVyYXRv
ckFycmF5WzFdLnZhbHVlJywgJ3VzYWJsZScpOworCisgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZFJlc29sdmUocHJvbWlzZSkudGhlbihuZXh0LCBuZXh0KTsKKyAgICAgICAgICAgICAgICB9LCBm
YWxzZSk7CisgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgfSwKICAgICBdOwogICAgIDwv
c2NyaXB0PgogPC9oZWFkPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301055</attachid>
            <date>2017-02-09 10:51:36 -0800</date>
            <delta_ts>2017-02-09 10:51:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-167888-20170209194909.patch</filename>
            <type>text/plain</type>
            <size>36667</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTliOTRiOGY1YzQ5ZDRl
NGNkN2I1ZjVjN2RlYTY5YzA4YjBhNTNkZS4uYzZhNjBiMDg1Yjk5NjdkNTc5NWRkM2IzZjJhNTUy
NmYxN2I0ZTYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE3LTAyLTA5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbRU1FXSBJbXBsZW1l
bnQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcygpLCBNZWRpYUtleVN0YXR1c01h
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODg4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWGFiaWVyIFJvZHJpZ3Vlei1DYWx2YXIuCisKKyAgICAg
ICAgSW1wbGVtZW50IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoKSwgdHJhbnNm
b3JtaW5nIHRoZSBwYXNzZWQtaW4KKyAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGludG8gYSBWZWN0
b3IgbWFwcGluZyB0aGUga2V5IElEcyB0byBNZWRpYUtleVN0YXR1cyB2YWx1ZXMuCisgICAgICAg
IEEga2V5c3RhdHVzZXNjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgb24gdGhlIE1lZGlhS2V5U2Vzc2lv
biBvYmplY3QgYWZ0ZXJ3YXJkcy4KKyAgICAgICAgVGhlIHF1ZXVlaW5nIG9mIHRoZSB0YXNrIHRo
YXQgcnVucyB0aGUgJ2F0dGVtcCB0byByZXN1bWUgcGxheWJhY2snIG9uIHRoZQorICAgICAgICBy
ZWxhdGVkIEhUTUxNZWRpYUVsZW1lbnQgb2JqZWN0cyBpc24ndCBkb25lIHlldCBzaW5jZSB0aGF0
IGFsZ29yaXRobSBpc24ndAorICAgICAgICBpbXBsZW1lbnRlZCB5ZXQuCisKKyAgICAgICAgVGhl
IHN0YXR1c2VzIFZlY3RvciBpcyBzdG9yZWQgb24gdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3Qu
IFRoYXQgVmVjdG9yIGlzCisgICAgICAgIHRoZW4gZXhwb3NlZCB0aHJvdWdoIHRoZSBNZWRpYUtl
eVN0YXR1c01hcCBvYmplY3QsIGVhY2ggc3VjaCBvYmplY3QgYmVpbmcKKyAgICAgICAgdW5pcXVl
IHRvIG9uZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LiBUaGUgaW1wbGVtZW50YXRpb24gb2YgTWVk
aWFLZXlTdGF0dXNNYXAKKyAgICAgICAgdGh1cyBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgc2Vz
c2lvbiBvYmplY3QgYXMgbG9uZyBhcyB0aGF0IG9iamVjdCBpcyBhbGl2ZSwKKyAgICAgICAgYW5k
IHF1ZXJpZXMgdGhlIE1lZGlhS2V5U2Vzc2lvbjo6c3RhdHVzZXMoKSBnZXR0ZXIgdG8gYWNjZXNz
IHRoZSBWZWN0b3IgdGhhdAorICAgICAgICBjb250YWlucyBzdGF0dXMgaW5mb3JtYXRpb24gZm9y
IGFsbCB0aGUga2V5IElEcy4KKworICAgICAgICBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3Ig
b2JqZWN0IGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBNZWRpYUtleVN0YXR1c01hcAorICAgICAg
ICBvYmplY3QgYW5kIGFjY2Vzc2VzIHRoZSBzdGF0dXNlcyBieSBpbmRleGluZyBpbnRvIHRoZSBz
dGF0dXMgVmVjdG9yIG9mIHRoZQorICAgICAgICByZWxhdGVkIE1lZGlhS2V5U2Vzc2lvbiBvYmpl
Y3QuCisKKyAgICAgICAgQ0RNSW5zdGFuY2U6OnVwZGF0ZUxpY2Vuc2UoKSBub3cgYWNjZXB0cyB0
aGUgc2Vzc2lvbiBJRCBzdHJpbmcgYXMgdGhlIGZpcnN0CisgICAgICAgIGFyZ3VtZW50LCBtYWtp
bmcgaXQgcG9zc2libGUgdG8gc3BlY2lmeSB3aGljaCBzZXNzaW9uIHNob3VsZCBiZSB1cGRhdGVk
LgorCisgICAgICAgIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCgpIHJldHVy
bnMgYW4gb3B0aW9uYWwgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICBWZWN0b3IgdmFsdWUgaW4g
dGhlIHNlc3Npb24gbWFwIHRoYXQgbGlzdHMgYWxsIHRoZSBrZXkgSURzIHRoYXQgYXJlIGJlaW5n
CisgICAgICAgIHN0b3JlZCBmb3IgdGhhdCBzZXNzaW9uLgorCisgICAgICAgIE1vY2tDRE1JbnN0
YW5jZTo6dXBkYXRlTGljZW5zZSgpIG5vdyBkZXRlY3RzIHRoZSAna2V5cy1jaGFuZ2VkJyBlbnRy
eSBpbiB0aGUKKyAgICAgICAgcGFzc2VkLWluIHJlc3BvbnNlIGRhdGEsIGFuZCB1cG9uIGRldGVj
dGluZyB0aGF0IGNvbnN0cnVjdHMgYSBLZXlTdGF0dXNWZWN0b3IKKyAgICAgICAgb2JqZWN0IGNv
bnRhaW5pbmcgYWxsIHRoZSBrZXlzIGZvciB0aGF0IHNlc3Npb24uIEtleVN0YXR1czo6VXNhYmxl
IGlzIHJldHVybmVkCisgICAgICAgIGZvciBlYWNoIG9iamVjdCBhdCB0aGUgbW9tZW50LCBidXQg
dGhpcyBzaG91bGQgYmUgYWRqdXN0YWJsZSBpbiB0aGUgZnV0dXJlCisgICAgICAgIHRocm91Z2gg
YWRkaXRpb25hbCBwYXJhbWV0ZXJzIHBhc3NlZCB0aHJvdWdoIHRoZSByZXNwb25zZSBkYXRhLiBU
aGUgVmVjdG9yCisgICAgICAgIG9iamVjdCBpcyB0aGVuIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sg
YW5kIGlzIHRoZW4gcGFzc2VkIHRvIHRoZSAndXBkYXRlIGtleQorICAgICAgICBzdGF0dXNlcycg
YWxnb3JpdGhtIGluIE1lZGlhS2V5U2Vzc2lvbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IGEgdGVz
dCBjYXNlIGluIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5U2Vzc2lvbi11cGRh
dGUuaHRtbC4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhS2V5U3RhdHVzTWFwOjpNZWRpYUtleVN0YXR1c01hcCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVN0YXR1c01hcDo6ZGV0YWNoU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6aGFzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlT
dGF0dXNNYXA6Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3Rh
dHVzTWFwOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuaWRsOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6dXBkYXRlTGljZW5zZSk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCiAyMDE3LTAyLTA5ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW01vZGVybiBNZWRpYSBDb250cm9s
c10gVGFwcGluZyB0aGUgc2tpcCBiYWNrIGJ1dHRvbiBvbiBpT1MgaW5saW5lIG1lZGlhIGNvbnRy
b2xzIG1ha2UgdGhlIGNvbnRyb2xzIGRpc2FwcGVhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmluZGV4IDE1MzFkODIwZjdlOWUy
YWM0ZWY3MTZiMWQxNDBiNjc2MTc2ODhmNGUuLjhlNjIxYjJkMmMxMTQ3Nzc1ZjQxYTQ4NmE4ZDEx
YjE3ZjIwN2UwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIEtl
eVN0YXR1cz4+OwogICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNW
ZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBp
cmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2spID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjaykgPSAwOwogCiAgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKCk+OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5k
ZXggOGUwYjdlZmZiZmY5ZWE4M2Y3YTRmYmU1MWE2ZjJmZjUxYzM3MGE3OC4uZTE3MTY1ZDNjYzQ2
MmM2ZmY3OTM3ZjUwNTg4ZTQ5MzUwZGEwM2IyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNTMs
NyArNTMsNyBAQCBSZWY8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZQogTWVkaWFLZXlTZXNzaW9uOjpNZWRp
YUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFLZXlTZXNz
aW9uVHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxD
RE0+JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZT4mJiBpbnN0YW5jZSkKICAgICA6
IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fZXhwaXJhdGlvbihzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKQotICAgICwgbV9rZXlTdGF0dXNlcyhNZWRp
YUtleVN0YXR1c01hcDo6Y3JlYXRlKCkpCisgICAgLCBtX2tleVN0YXR1c2VzKE1lZGlhS2V5U3Rh
dHVzTWFwOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIo
dXNlRGlzdGluY3RpdmVJZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9uVHlwZShzZXNzaW9uVHlw
ZSkKICAgICAsIG1faW1wbGVtZW50YXRpb24oV1RGTW92ZShpbXBsZW1lbnRhdGlvbikpCkBAIC04
NCw3ICs4NCwxMCBAQCBNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYUtleVNlc3NpbwogICAgIFVOVVNFRF9QQVJBTSht
X3VuaW5pdGlhbGl6ZWQpOwogfQogCi1NZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24o
KSA9IGRlZmF1bHQ7CitNZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24oKQoreworICAg
IG1fa2V5U3RhdHVzZXMtPmRldGFjaFNlc3Npb24oKTsKK30KIAogY29uc3QgU3RyaW5nJiBNZWRp
YUtleVNlc3Npb246OnNlc3Npb25JZCgpIGNvbnN0CiB7CkBAIC0yNzAsNyArMjczLDcgQEAgdm9p
ZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAgICAgLy8gNi41LiBMZXQgc2Vzc2lvbiBjbG9zZWQg
YmUgZmFsc2UuCiAgICAgICAgIC8vIDYuNi4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJl
cHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAgICAv
LyA2LjcuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAg
ICAgbV9pbnN0YW5jZS0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVz
cG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigp
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3Rk
OjpvcHRpb25hbDxDRE1JbnN0YW5jZTo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxD
RE1JbnN0YW5jZTo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2UtPnVwZGF0ZUxpY2Vuc2Uo
bV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRSZXNwb25zZSwgW3RoaXMsIHdl
YWtUaGlzID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPENETUlu
c3RhbmNlOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlOjpNZXNz
YWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC00ODEsOSArNDg0LDQ5IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVz
c2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyCiAgICAgbV9l
dmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwogfQogCi12b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2U6OktleVN0YXR1
c1ZlY3RvciYmKQordm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUlu
c3RhbmNlOjpLZXlTdGF0dXNWZWN0b3ImJiBpbnB1dFN0YXR1c2VzKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8j
dXBkYXRlLWtleS1zdGF0dXNlcworICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJl
ciAyMDE2CisKKyAgICAvLyAxLiBMZXQgdGhlIHNlc3Npb24gYmUgdGhlIGFzc29jaWF0ZWQgTWVk
aWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAvLyAyLiBMZXQgdGhlIGlucHV0IHN0YXR1c2VzIGJl
IHRoZSBzZXF1ZW5jZSBvZiBwYWlycyBrZXkgSUQgYW5kIGFzc29jaWF0ZWQgTWVkaWFLZXlTdGF0
dXMgcGFpcnMuCisgICAgLy8gMy4gTGV0IHRoZSBzdGF0dXNlcyBiZSBzZXNzaW9uJ3Mga2V5U3Rh
dHVzZXMgYXR0cmlidXRlLgorICAgIC8vIDQuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIHRvIHJl
cGxhY2UgdGhlIGNvbnRlbnRzIG9mIHN0YXR1c2VzOgorICAgIC8vICAgNC4xLiBFbXB0eSBzdGF0
dXNlcy4KKyAgICAvLyAgIDQuMi4gRm9yIGVhY2ggcGFpciBpbiBpbnB1dCBzdGF0dXNlcy4KKyAg
ICAvLyAgICAgNC4yLjEuIExldCBwYWlyIGJlIHRoZSBwYWlyLgorICAgIC8vICAgICA0LjIuMi4g
SW5zZXJ0IGFuIGVudHJ5IGZvciBwYWlyJ3Mga2V5IElEIGludG8gc3RhdHVzZXMgd2l0aCB0aGUg
dmFsdWUgb2YgcGFpcidzIE1lZGlhS2V5U3RhdHVzIHZhbHVlLgorCisgICAgc3RhdGljIGF1dG8g
dG9NZWRpYUtleVN0YXR1cyA9IFtdIChDRE1JbnN0YW5jZTo6S2V5U3RhdHVzIHN0YXR1cykgLT4g
TWVkaWFLZXlTdGF0dXMgeworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNl
IENETUluc3RhbmNlOjpLZXlTdGF0dXM6OlVzYWJsZToKKyAgICAgICAgICAgIHJldHVybiBNZWRp
YUtleVN0YXR1czo6VXNhYmxlOworICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0dXM6
OkV4cGlyZWQ6CisgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OkV4cGlyZWQ7Cisg
ICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6OktleVN0YXR1czo6UmVsZWFzZWQ6CisgICAgICAgICAg
ICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OlJlbGVhc2VkOworICAgICAgICBjYXNlIENETUluc3Rh
bmNlOjpLZXlTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQ6CisgICAgICAgICAgICByZXR1cm4gTWVk
aWFLZXlTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQ7CisgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6
OktleVN0YXR1czo6T3V0cHV0RG93bnNjYWxlZDoKKyAgICAgICAgICAgIHJldHVybiBNZWRpYUtl
eVN0YXR1czo6T3V0cHV0RG93bnNjYWxlZDsKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5
U3RhdHVzOjpTdGF0dXNQZW5kaW5nOgorICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVz
OjpTdGF0dXNQZW5kaW5nOworICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0dXM6Oklu
dGVybmFsRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OkludGVybmFs
RXJyb3I7CisgICAgICAgIH07CisgICAgfTsKKworICAgIG1fc3RhdHVzZXMuY2xlYXIoKTsKKyAg
ICBtX3N0YXR1c2VzLnJlc2VydmVDYXBhY2l0eShpbnB1dFN0YXR1c2VzLnNpemUoKSk7CisgICAg
Zm9yIChhdXRvJiBzdGF0dXMgOiBpbnB1dFN0YXR1c2VzKQorICAgICAgICBtX3N0YXR1c2VzLnVu
Y2hlY2tlZEFwcGVuZCh7IFdURk1vdmUoc3RhdHVzLmZpcnN0KSwgdG9NZWRpYUtleVN0YXR1cyhz
dGF0dXMuc2Vjb25kKSB9KTsKKworICAgIC8vIDUuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIGtleXN0YXR1c2VzY2hhbmdlIGF0IHRoZSBzZXNzaW9uLgorICAgIG1f
ZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5c3Rh
dHVzZXNjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisKKyAgICAvLyA2LiBRdWV1ZSBhIHRh
c2sgdG8gcnVuIHRoZSBBdHRlbXB0IHRvIFJlc3VtZSBQbGF5YmFjayBJZiBOZWNlc3NhcnkgYWxn
b3JpdGhtIG9uIGVhY2ggb2YgdGhlIG1lZGlhIGVsZW1lbnQocykgd2hvc2UgbWVkaWFLZXlzIGF0
dHJpYnV0ZSBpcyB0aGUgTWVkaWFLZXlzIG9iamVjdCB0aGF0IGNyZWF0ZWQgdGhlIHNlc3Npb24u
CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KIH0KIAogdm9pZCBNZWRpYUtleVNlc3Npb246OnVw
ZGF0ZUV4cGlyYXRpb24oZG91YmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggOGY0MGYzN2VjOGM2M2Rk
NjBhNTdmNjRjMWQ1Njc3NWE3YzUzODA1My4uYWFmNmUxMTI3MmFlYWU4MzkzODg3OTQ1MTEyMTc5
ZTMyZDE5NjA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAi
SlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlVHlwZS5oIgogI2luY2x1
ZGUgIk1lZGlhS2V5U2Vzc2lvblR5cGUuaCIKKyNpbmNsdWRlICJNZWRpYUtleVN0YXR1cy5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC02OSw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsb3NlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgcmVtb3ZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpOwogCisgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVk
QnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXR1c2VzOyB9CisKIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRp
ZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlPiYmKTsKICAgICB2b2lkIGVucXVldWVN
ZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwpAQCAtMTAz
LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3Jl
Y29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1fZmlyc3REZWNyeXB0VGltZSB7IDAgfTsKICAg
ICBkb3VibGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsKKyAgICBWZWN0b3I8c3RkOjpwYWly
PFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CiAgICAgV2Vh
a1B0ckZhY3Rvcnk8TWVkaWFLZXlTZXNzaW9uPiBtX3dlYWtQdHJGYWN0b3J5OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAppbmRleCAzZWI2YjQzNzlhNjZmZDdlY2JmZDAyMjM3MGI5NTg3MzA0
M2E0NGFmLi5mYzA0NTFlZWRjNGY0MzQ1OGQ3ZDgzYjNmMDlmODhkNThlMzZjODJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcApAQCAtMzEsMzkgKzMxLDgwIEBACiAKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQogCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJKU01l
ZGlhS2V5U3RhdHVzTWFwLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9uLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTWVkaWFLZXlTdGF0
dXNNYXA6Ok1lZGlhS2V5U3RhdHVzTWFwKCkgPSBkZWZhdWx0OworTWVkaWFLZXlTdGF0dXNNYXA6
Ok1lZGlhS2V5U3RhdHVzTWFwKGNvbnN0IE1lZGlhS2V5U2Vzc2lvbiYgc2Vzc2lvbikKKyAgICA6
IG1fc2Vzc2lvbigmc2Vzc2lvbikKK3sKK30KIAogTWVkaWFLZXlTdGF0dXNNYXA6On5NZWRpYUtl
eVN0YXR1c01hcCgpID0gZGVmYXVsdDsKIAordm9pZCBNZWRpYUtleVN0YXR1c01hcDo6ZGV0YWNo
U2Vzc2lvbigpCit7CisgICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKK30KKwogdW5zaWduZWQgbG9u
ZyBNZWRpYUtleVN0YXR1c01hcDo6c2l6ZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG1fc2Vzc2lvbi0+c3RhdHVzZXMoKS5zaXplKCk7CiB9CiAKLWJvb2wgTWVkaWFLZXlT
dGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmKQorc3RhdGljIGJvb2wga2V5SWRzTWF0
Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBsZW5ndGggPSBh
LnNpemUoKTsKKyAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0
YSgpLCBsZW5ndGgpOwogfQogCi1KU0M6OkpTVmFsdWUgTWVkaWFLZXlTdGF0dXNNYXA6OmdldChj
b25zdCBCdWZmZXJTb3VyY2UmKQorYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1
ZmZlclNvdXJjZSYga2V5SWQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
SlNDOjpqc1VuZGVmaW5lZCgpOworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBhdXRvJiBzdGF0dXNlcyA9IG1fc2Vzc2lvbi0+c3RhdHVzZXMoKTsKKyAg
ICByZXR1cm4gc3RkOjphbnlfb2Yoc3RhdHVzZXMuYmVnaW4oKSwgc3RhdHVzZXMuZW5kKCksCisg
ICAgICAgIFsma2V5SWRdIChhdXRvJiBpdCkgeyByZXR1cm4ga2V5SWRzTWF0Y2goaXQuZmlyc3Qs
IGtleUlkKTsgfSk7CiB9CiAKLU1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6SXRlcmF0b3Io
TWVkaWFLZXlTdGF0dXNNYXAmKQorSlNDOjpKU1ZhbHVlIE1lZGlhS2V5U3RhdHVzTWFwOjpnZXQo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQoreworICAg
IGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworCisg
ICAgYXV0byYgc3RhdHVzZXMgPSBtX3Nlc3Npb24tPnN0YXR1c2VzKCk7CisgICAgYXV0byBpdCA9
IHN0ZDo6ZmluZF9pZihzdGF0dXNlcy5iZWdpbigpLCBzdGF0dXNlcy5lbmQoKSwKKyAgICAgICAg
WyZrZXlJZF0gKGF1dG8mIGl0KSB7IHJldHVybiBrZXlJZHNNYXRjaChpdC5maXJzdCwga2V5SWQp
OyB9KTsKKworICAgIGlmIChpdCA9PSBzdGF0dXNlcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIEpT
Qzo6anNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9KUyhzdGF0
ZSwgaXQtPnNlY29uZCk7Cit9CisKK01lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6SXRlcmF0
b3IoTWVkaWFLZXlTdGF0dXNNYXAmIG1hcCkKKyAgICA6IG1fbWFwKG1hcCkKIHsKIH0KIAogc3Rk
OjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIW1fbWFwLT5tX3Nlc3Npb24pCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvJiBzdGF0dXNlcyA9IG1fbWFwLT5t
X3Nlc3Npb24tPnN0YXR1c2VzKCk7CisgICAgaWYgKG1faW5kZXggPj0gc3RhdHVzZXMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byYgcGFpciA9IHN0YXR1
c2VzW21faW5kZXgrK107CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBh
aXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICByZXR1cm4gV1RGOjpL
ZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsg
UmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggNmZkNDNiYzhj
YWM5ZGRmYjZjNmZiNDRkNGZhZjMzOWFkZTlkMjBjOS4uMzRjNWVkNzk1YTE5Nzk2YjYyMzI0M2Vk
NjgzZDBlMzk1YjM0Zjg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtMzMsMzcgKzMzLDQ3IEBA
CiAjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlTdGF0dXMuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBNZWRpYUtleVNlc3Npb247CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIE1l
ZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsK
IHB1YmxpYzoKICAgICB1c2luZyBTdGF0dXMgPSBNZWRpYUtleVN0YXR1czsKIAotICAgIHN0YXRp
YyBSZWY8TWVkaWFLZXlTdGF0dXNNYXA+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxNZWRpYUtl
eVN0YXR1c01hcD4gY3JlYXRlKGNvbnN0IE1lZGlhS2V5U2Vzc2lvbiYgc2Vzc2lvbikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhS2V5U3RhdHVzTWFwKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlTdGF0dXNNYXAoc2Vzc2lvbikpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgfk1lZGlhS2V5U3RhdHVzTWFwKCk7CiAKKyAgICB2b2lkIGRldGFj
aFNlc3Npb24oKTsKKwogICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSgpOwogICAgIGJvb2wgaGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYpOwotICAgIEpTQzo6SlNWYWx1ZSBnZXQoY29uc3QgQnVmZmVyU291
cmNlJik7CisgICAgSlNDOjpKU1ZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEJ1ZmZl
clNvdXJjZSYpOwogCiAgICAgY2xhc3MgSXRlcmF0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAg
ZXhwbGljaXQgSXRlcmF0b3IoTWVkaWFLZXlTdGF0dXNNYXAmKTsKICAgICAgICAgc3RkOjpvcHRp
b25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtl
eVN0YXR1cz4+IG5leHQoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZjxNZWRpYUtleVN0
YXR1c01hcD4gbV9tYXA7CisgICAgICAgIHNpemVfdCBtX2luZGV4IHsgMCB9OwogICAgIH07CiAg
ICAgSXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJldHVybiBJdGVyYXRvcigqdGhpcyk7IH0K
IAogcHJpdmF0ZToKLSAgICBNZWRpYUtleVN0YXR1c01hcCgpOworICAgIE1lZGlhS2V5U3RhdHVz
TWFwKGNvbnN0IE1lZGlhS2V5U2Vzc2lvbiYpOworCisgICAgY29uc3QgTWVkaWFLZXlTZXNzaW9u
KiBtX3Nlc3Npb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuaWRsCmluZGV4IDVjM2ZjNjliN2UwMTYzM2Y0YjdmY2MwYThjZTVjMWRiNmZhY2U0NWYuLmIz
MjE1YWU4MzIyMzgxNmIxOWE5Nzk2MGM5YWNhZDJiMTY4YzE1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuaWRsCkBAIC00Myw1ICs0Myw1IEBAIGVudW0gTWVkaWFLZXlTdGF0dXMgewogICAgIGl0ZXJh
YmxlPEJ1ZmZlclNvdXJjZSwgTWVkaWFLZXlTdGF0dXM+OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIHNpemU7CiAgICAgYm9vbGVhbiBoYXMoQnVmZmVyU291cmNlIGtleUlk
KTsKLSAgICBhbnkgZ2V0KEJ1ZmZlclNvdXJjZSBrZXlJZCk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlXSBhbnkgZ2V0KEJ1ZmZlclNvdXJjZSBrZXlJZCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA5YTBkMjYwYTlhNjM5ODFhNzY3MGM2ZTU0
YzZlOTJhZmU2OThiZGExLi43OTI5NDQyYTliMWUyYTg3MmIxMWZiNjNhNjZmZTcxMTRmYjY1NWEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtODEsNiAr
ODEsMTQgQEAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3Zl
S2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmkKICAgICByZXR1cm4gV1RGTW92ZShpdC0+
dmFsdWUpOwogfQogCitzdGQ6Om9wdGlvbmFsPGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4mPiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBp
ZCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKKyAgICBpZiAo
aXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gaXQtPnZhbHVlOworfQorCiB2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0
ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykKIHsKICAgICBtX3N1cHBvcnRlZERh
dGFUeXBlcy5jbGVhcigpOwpAQCAtMjc2LDcgKzI4NCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNl
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3Ry
aW5nCiAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxp
Y2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRl
ZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjp1cGRhdGVMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFj
dG9yeSA9IG1fY2RtID8gbV9jZG0tPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0
b3J5KSB7CkBAIC0yOTIsMTAgKzMwMCwyMyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6dXBkYXRl
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFNlc3Npb24gY2xvc3VyZSwga2V5
IHN0YXR1cywgZXhwaXJhdGlvbiBhbmQgbWVzc2FnZSBoYW5kbGluZyBzaG91bGQgYmUgaW1wbGVt
ZW50ZWQKKyAgICBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXM7Cisg
ICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZyhBU0NJSUxpdGVyYWwoImtleXMt
Y2hhbmdlZCIpKSkpIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxjb25zdCBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+Jj4ga2V5cyA9IGZhY3RvcnktPmtleXNGb3JTZXNzaW9uV2l0aElEKHNlc3Np
b25JRCk7CisgICAgICAgIGlmIChrZXlzKSB7CisgICAgICAgICAgICBLZXlTdGF0dXNWZWN0b3Ig
a2V5U3RhdHVzVmVjdG9yOworICAgICAgICAgICAga2V5U3RhdHVzVmVjdG9yLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoa2V5cy0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDog
KmtleXMpCisgICAgICAgICAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZCh7
IGtleS5jb3B5UmVmKCksIEtleVN0YXR1czo6VXNhYmxlIH0pOworCisgICAgICAgICAgICBjaGFu
Z2VkS2V5cyA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIEZJWE1FOiBTZXNzaW9uIGNsb3N1cmUsIGV4cGlyYXRpb24gYW5kIG1lc3NhZ2UgaGFu
ZGxpbmcgc2hvdWxkIGJlIGltcGxlbWVudGVkCiAgICAgLy8gb25jZSB0aGUgcmVsZXZhbnQgYWxn
b3JpdGhtcyBhcmUgc3VwcG9ydGVkLgogCi0gICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsK
KyAgICBjYWxsYmFjayhmYWxzZSwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgTW9ja0NE
TUluc3RhbmNlOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCmluZGV4IDAxZjFiYzM2MTJhMDdiNjkzMDkyOTA4ODgzZWM4ZmMxZDZhMjhhMGQuLjZkNDRk
MGQ4YTVjYjJkYjVmZDcwMzBhMjEwOWU1Y2Q1YzRjMWE0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNv
bnRhaW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQogICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Y29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiY+IGtleXNG
b3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OwogICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpOwogCiBwcml2YXRlOgpAQCAtMTMwLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgU3VjY2Vz
c1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7CiAgICAgU3VjY2Vz
c1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2spIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYs
IExpY2Vuc2VVcGRhdGVDYWxsYmFjaykgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2spIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRh
Q2FsbGJhY2spIGZpbmFsOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2QyYWE4ZWZlYWM3OGYxYTQ0ZDZiZDJiZWZkYmNk
ZGJjOTJmMGI2Yi4uYzI2ZGVlZTRlYTkyNGM1ZjBhMTlhZTBiMmE2ZGFkMzdkMzlhZDA0MCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTAyLTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KKworICAgICAgICBbRU1FXSBJbXBsZW1lbnQgTWVkaWFLZXlTZXNzaW9uOjp1
cGRhdGVLZXlTdGF0dXNlcygpLCBNZWRpYUtleVN0YXR1c01hcAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODg4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWGFiaWVyIFJvZHJpZ3Vlei1DYWx2YXIuCisKKyAgICAgICAgQWRkIGFub3RoZXIgdGVzdCBj
YXNlIHRvIHRoZSBtb2NrLU1lZGlhS2V5U2Vzc2lvbi11cGRhdGUuaHRtbCB0ZXN0IHRoYXQKKyAg
ICAgICAgZW5zdXJlcyB0aGUga2V5c3RhdHVzZXNjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgb24gdGhl
IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QKKyAgICAgICAgYW5kIHRoYXQgdGhlIHN0YXR1cyBvZiB0
aGUga2V5cyBpcyBwcm9wZXJseSByZXBvcnRlZCB0aHJvdWdoIHRoZQorICAgICAgICBNZWRpYUtl
eVN0YXR1c01hcCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgTWVkaWFLZXlTZXNzaW9uLgor
CisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVw
ZGF0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2st
TWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS5odG1sOgorCiAyMDE3LTAyLTA5ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW01vZGVybiBNZWRpYSBDb250cm9sc10g
VGFwcGluZyB0aGUgc2tpcCBiYWNrIGJ1dHRvbiBvbiBpT1MgaW5saW5lIG1lZGlhIGNvbnRyb2xz
IG1ha2UgdGhlIGNvbnRyb2xzIGRpc2FwcGVhcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNlc3Np
b24tdXBkYXRlLWV4cGVjdGVkLnR4dAppbmRleCBhOGZhMTU3NDk1ZmU0OGZkYzk0ZjdmZjVkOTBl
YWIxMDZkNDgzNjQ3Li44NGMxNzAwZjlkM2VkYTcyMjJmNzIyZjQ1NDM4NThiNjQzNDRmZjg4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtl
eVNlc3Npb24tdXBkYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24tdXBkYXRlLWV4cGVjdGVkLnR4dApAQCAt
MTIsMTMgKzEyLDEzIEBAIFByb21pc2UgcmVzb2x2ZWQgT0sKIFVzaW5nIGEgbm9uLWNhbGxhYmxl
IE1lZGlhS2V5U2Vzc2lvbiBzaG91bGQgcmVqZWN0LgogUlVOKG1lZGlhS2V5U2Vzc2lvbiA9IG1l
ZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKSkKIEVYUEVDVEVEICh0eXBlb2YgbWVk
aWFLZXlTZXNzaW9uID09ICdvYmplY3QnKSBPSwotUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Np
b24udXBkYXRlKHN0cmluZ1RvVUludDhBcnJheSgiaW52YWxpZC1zdGF0ZSIpKSkKK1JVTihwcm9t
aXNlID0gbWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShlbmNvZGVyLmVuY29kZSgiaW52YWxpZC1zdGF0
ZSIpKSkKIFByb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5IE9LCiAKIFVzaW5nIGEgemVyby1sZW5n
dGggcmVzcG9uc2Ugc2hvdWxkIHJlamVjdC4KIFJVTihraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBr
aWRzOiBbICJNVEl6TkRVPSIgXSB9KSkKIFJVTihtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMu
Y3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5IikpCi1SVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lv
bi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSkpCitS
VU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIGVu
Y29kZXIuZW5jb2RlKGtpZHMpKSkKIFByb21pc2UgcmVzb2x2ZWQgT0sKIFJVTihwcm9taXNlID0g
bWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShuZXcgVWludDhBcnJheSgwKSkpCiBQcm9taXNlIHJlamVj
dGVkIGNvcnJlY3RseSBPSwpAQCAtMjYsMjUgKzI2LDEwMSBAQCBQcm9taXNlIHJlamVjdGVkIGNv
cnJlY3RseSBPSwogVXNpbmcgYSBub24tc2FuaXRpemFibGUgcmVzcG9uc2Ugc2hvdWxkIHJlamVj
dC4KIFJVTihraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIgXSB9KSkK
IFJVTihtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidGVtcG9yYXJ5
IikpCi1SVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlk
cyIsIHN0cmluZ1RvVUludDhBcnJheShraWRzKSkpCitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vz
c2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIGVuY29kZXIuZW5jb2RlKGtpZHMpKSkKIFBy
b21pc2UgcmVzb2x2ZWQgT0sKLVJVTihwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShz
dHJpbmdUb1VJbnQ4QXJyYXkoImludmFsaWQtcmVzcG9uc2UiKSkpCitSVU4ocHJvbWlzZSA9IG1l
ZGlhS2V5U2Vzc2lvbi51cGRhdGUoZW5jb2Rlci5lbmNvZGUoImludmFsaWQtcmVzcG9uc2UiKSkp
CiBQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSwogCiBVc2luZyBhIHNhbml0aXphYmxlIHJl
c3BvbnNlIHNob3VsZCByZXNvbHZlLgogUlVOKGtpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtpZHM6
IFsgIk1USXpORFU9IiBdIH0pKQogUlVOKG1lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVh
dGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKSkKLVJVTihwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdl
bmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMpKSkKK1JVTihw
cm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgZW5jb2Rl
ci5lbmNvZGUoa2lkcykpKQogUHJvbWlzZSByZXNvbHZlZCBPSwotUlVOKHByb21pc2UgPSBtZWRp
YUtleVNlc3Npb24udXBkYXRlKHN0cmluZ1RvVUludDhBcnJheSgidmFsaWQtcmVzcG9uc2UiKSkp
CitSVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoZW5jb2Rlci5lbmNvZGUoInZh
bGlkLXJlc3BvbnNlIikpKQogUHJvbWlzZSByZXNvbHZlZCBPSwogCiBVc2luZyBhIHNhbml0aXph
YmxlIHJlc3BvbnNlIHdpdGggaW52YWxpZCBmb3JtYXQgc2hvdWxkIHJlc29sdmUuCiBSVU4oa2lk
cyA9IEpTT04uc3RyaW5naWZ5KHsga2lkczogWyAiTVRJek5EVT0iIF0gfSkpCiBSVU4obWVkaWFL
ZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRlbXBvcmFyeSIpKQotUlVOKHBy
b21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBzdHJpbmdU
b1VJbnQ4QXJyYXkoa2lkcykpKQorUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJh
dGVSZXF1ZXN0KCJrZXlpZHMiLCBlbmNvZGVyLmVuY29kZShraWRzKSkpCiBQcm9taXNlIHJlc29s
dmVkIE9LCi1SVU4ocHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoc3RyaW5nVG9VSW50
OEFycmF5KCJ2YWxpZC1yZXNwb25zZSBpbnZhbGlkLWZvcm1hdCIpKSkKK1JVTihwcm9taXNlID0g
bWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShlbmNvZGVyLmVuY29kZSgidmFsaWQtcmVzcG9uc2UgaW52
YWxpZC1mb3JtYXQiKSkpCiBQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSworCitBIHZhbGlk
IE1lZGlhS2V5U2Vzc2lvbiBwcm9wZXJseSBkaXNwYXRjaGVzIGtleXN0YXR1c2VzY2hhbmdlIGV2
ZW50LgorUlVOKGtpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtpZHM6IFsgIk1USXpORFU9IiwgIk5q
YzRPVEE9IiBdIH0pKQorUlVOKG1lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNz
aW9uKCJ0ZW1wb3JhcnkiKSkKK1JVTihwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRl
UmVxdWVzdCgia2V5aWRzIiwgZW5jb2Rlci5lbmNvZGUoa2lkcykpKQorUHJvbWlzZSByZXNvbHZl
ZCBPSworUlVOKHByb21pc2UgPSBtZWRpYUtleVNlc3Npb24udXBkYXRlKGVuY29kZXIuZW5jb2Rl
KCJ2YWxpZC1yZXNwb25zZSBrZXlzLWNoYW5nZWQiKSkpCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNz
aW9uLmtleVN0YXR1c2VzLnNpemUgPT0gJzInKSBPSworRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lv
bi5rZXlTdGF0dXNlcy5oYXMoZW5jb2Rlci5lbmNvZGUoIjEyMzQ1IikpID09ICd0cnVlJykgT0sK
K0VYUEVDVEVEIChtZWRpYUtleVNlc3Npb24ua2V5U3RhdHVzZXMuZ2V0KGVuY29kZXIuZW5jb2Rl
KCIxMjM0NSIpKSA9PSAndXNhYmxlJykgT0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Npb24ua2V5
U3RhdHVzZXMuaGFzKGVuY29kZXIuZW5jb2RlKCI2Nzg5MCIpKSA9PSAndHJ1ZScpIE9LCitFWFBF
Q1RFRCAobWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzLmdldChlbmNvZGVyLmVuY29kZSgiNjc4
OTAiKSkgPT0gJ3VzYWJsZScpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1
c2VzLmhhcyhlbmNvZGVyLmVuY29kZSgiaW52YWxpZCIpKSA9PSAnZmFsc2UnKSBPSworRVhQRUNU
RUQgKG1lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5nZXQoZW5jb2Rlci5lbmNvZGUoImludmFs
aWQiKSkgPT0gJ3VuZGVmaW5lZCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheS5sZW5ndGgg
PT0gJzInKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF1bMF0ubGVuZ3RoID09ICc1Jykg
T0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzBdWzBdID09ICc0OScpIE9LCitFWFBFQ1RF
RCAoaXRlcmF0b3JBcnJheVswXVswXVsxXSA9PSAnNTAnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9y
QXJyYXlbMF1bMF1bMl0gPT0gJzUxJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzBd
WzNdID09ICc1MicpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXVswXVs0XSA9PSAnNTMn
KSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF1bMV0gPT0gJ3VzYWJsZScpIE9LCitFWFBF
Q1RFRCAoaXRlcmF0b3JBcnJheVsxXVswXS5sZW5ndGggPT0gJzUnKSBPSworRVhQRUNURUQgKGl0
ZXJhdG9yQXJyYXlbMV1bMF1bMF0gPT0gJzU0JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5
WzFdWzBdWzFdID09ICc1NScpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXVswXVsyXSA9
PSAnNTYnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV1bMF1bM10gPT0gJzU3JykgT0sK
K0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdWzBdWzRdID09ICc0OCcpIE9LCitFWFBFQ1RFRCAo
aXRlcmF0b3JBcnJheVsxXVsxXSA9PSAndXNhYmxlJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFy
cmF5Lmxlbmd0aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS5sZW5ndGgg
PT0gJzUnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF1bMF0gPT0gJzQ5JykgT0sKK0VY
UEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzFdID09ICc1MCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0
b3JBcnJheVswXVsyXSA9PSAnNTEnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF1bM10g
PT0gJzUyJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdWzRdID09ICc1MycpIE9LCitF
WFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXS5sZW5ndGggPT0gJzUnKSBPSworRVhQRUNURUQgKGl0
ZXJhdG9yQXJyYXlbMV1bMF0gPT0gJzU0JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFd
WzFdID09ICc1NScpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXVsyXSA9PSAnNTYnKSBP
SworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV1bM10gPT0gJzU3JykgT0sKK0VYUEVDVEVEIChp
dGVyYXRvckFycmF5WzFdWzRdID09ICc0OCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheS5s
ZW5ndGggPT0gJzInKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0gPT0gJ3VzYWJsZScp
IE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXSA9PSAndXNhYmxlJykgT0sKK0VYUEVDVEVE
IChpdGVyYXRvckFycmF5Lmxlbmd0aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJh
eVswXS5rZXkubGVuZ3RoID09ICc1JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdLmtl
eVswXSA9PSAnNDknKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0ua2V5WzFdID09ICc1
MCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS5rZXlbMl0gPT0gJzUxJykgT0sKK0VY
UEVDVEVEIChpdGVyYXRvckFycmF5WzBdLmtleVszXSA9PSAnNTInKSBPSworRVhQRUNURUQgKGl0
ZXJhdG9yQXJyYXlbMF0ua2V5WzRdID09ICc1MycpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJh
eVswXS52YWx1ZSA9PSAndXNhYmxlJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdLmtl
eS5sZW5ndGggPT0gJzUnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV0ua2V5WzBdID09
ICc1NCcpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXS5rZXlbMV0gPT0gJzU1JykgT0sK
K0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdLmtleVsyXSA9PSAnNTYnKSBPSworRVhQRUNURUQg
KGl0ZXJhdG9yQXJyYXlbMV0ua2V5WzNdID09ICc1NycpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JB
cnJheVsxXS5rZXlbNF0gPT0gJzQ4JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdLnZh
bHVlID09ICd1c2FibGUnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXkubGVuZ3RoID09ICcy
JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdLmtleS5sZW5ndGggPT0gJzUnKSBPSwor
RVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0ua2V5WzBdID09ICc0OScpIE9LCitFWFBFQ1RFRCAo
aXRlcmF0b3JBcnJheVswXS5rZXlbMV0gPT0gJzUwJykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFy
cmF5WzBdLmtleVsyXSA9PSAnNTEnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMF0ua2V5
WzNdID09ICc1MicpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVswXS5rZXlbNF0gPT0gJzUz
JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzBdLnZhbHVlID09ICd1c2FibGUnKSBPSwor
RVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV0ua2V5Lmxlbmd0aCA9PSAnNScpIE9LCitFWFBFQ1RF
RCAoaXRlcmF0b3JBcnJheVsxXS5rZXlbMF0gPT0gJzU0JykgT0sKK0VYUEVDVEVEIChpdGVyYXRv
ckFycmF5WzFdLmtleVsxXSA9PSAnNTUnKSBPSworRVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV0u
a2V5WzJdID09ICc1NicpIE9LCitFWFBFQ1RFRCAoaXRlcmF0b3JBcnJheVsxXS5rZXlbM10gPT0g
JzU3JykgT0sKK0VYUEVDVEVEIChpdGVyYXRvckFycmF5WzFdLmtleVs0XSA9PSAnNDgnKSBPSwor
RVhQRUNURUQgKGl0ZXJhdG9yQXJyYXlbMV0udmFsdWUgPT0gJ3VzYWJsZScpIE9LCitQcm9taXNl
IHJlc29sdmVkIE9LCiBFTkQgT0YgVEVTVAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24tdXBkYXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvbW9jay1NZWRpYUtleVNlc3Npb24tdXBkYXRl
Lmh0bWwKaW5kZXggMjNkNWM4ZGYwODExYWNkM2FhZmEyNTMxMjI3NGM1NjY5YmFhNjQ5OC4uNjFj
ZWRhNmRhNDg5NDMyZDIwYTU4YmZiYmEyYjJhNjU3Y2RiNDVhNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL21vY2stTWVkaWFLZXlTZXNzaW9uLXVwZGF0ZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9tb2NrLU1lZGlhS2V5
U2Vzc2lvbi11cGRhdGUuaHRtbApAQCAtMTAsNiArMTAsOCBAQAogICAgIHZhciBtZWRpYUtleVNl
c3Npb247CiAgICAgdmFyIGNhcGFiaWxpdGllcyA9IHt9OwogICAgIHZhciBraWRzOworICAgIHZh
ciBpdGVyYXRvckFycmF5OworICAgIHZhciBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7CiAK
ICAgICBmdW5jdGlvbiBkb1Rlc3QoKQogICAgIHsKQEAgLTQ5LDE0ICs1MSw2IEBACiAgICAgICAg
IG5leHQoKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBzdHJpbmdUb1VJbnQ4QXJyYXkoc3RyKQot
ICAgIHsKLSAgICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoKTsKLSAg
ICAgICBmb3IgKHZhciBpPTA7IGk8c3RyLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgYXJyYXlb
aV0gPSBzdHIuY2hhckNvZGVBdChpKTsKLSAgICAgICByZXR1cm4gYXJyYXk7Ci0gICAgfQotCiAg
ICAgdGVzdHMgPSBbCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcnVuKCdwcm9t
aXNlID0gbWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3JlYXRlTWVkaWFLZXlzKCknKTsKQEAgLTY3LDcg
KzYxLDcgQEAKICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVXNpbmcgYSBub24tY2FsbGFibGUg
TWVkaWFLZXlTZXNzaW9uIHNob3VsZCByZWplY3QuJyk7CiAgICAgICAgICAgICBydW4oJ21lZGlh
S2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKScpOwogICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlTZXNzaW9uJywgJ29iamVjdCcp
OwotICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShzdHJp
bmdUb1VJbnQ4QXJyYXkoImludmFsaWQtc3RhdGUiKSknKTsKKyAgICAgICAgICAgIHJ1bigncHJv
bWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoZW5jb2Rlci5lbmNvZGUoImludmFsaWQtc3Rh
dGUiKSknKTsKICAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKS50aGVuKG5leHQsIG5l
eHQpOwogICAgICAgICB9LAogCkBAIC03NSw3ICs2OSw3IEBACiAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoJ1VzaW5nIGEgemVyby1sZW5ndGggcmVzcG9uc2Ugc2hvdWxkIHJlamVjdC4nKTsKICAg
ICAgICAgICAgIHJ1bigna2lkcyA9IEpTT04uc3RyaW5naWZ5KHsga2lkczogWyAiTVRJek5EVT0i
IF0gfSknKTsKICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNy
ZWF0ZVNlc3Npb24oInRlbXBvcmFyeSIpJyk7Ci0gICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBt
ZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBzdHJpbmdUb1VJbnQ4QXJy
YXkoa2lkcykpJyk7CisgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVNlc3Npb24u
Z2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBlbmNvZGVyLmVuY29kZShraWRzKSknKTsKICAgICAg
ICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVNlc3Npb24udXBkYXRlKG5ldyBVaW50OEFy
cmF5KDApKScpOwogICAgICAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKS50aGVuKG5l
eHQsIG5leHQpOwpAQCAtODYsOSArODAsOSBAQAogICAgICAgICAgICAgY29uc29sZVdyaXRlKCdV
c2luZyBhIG5vbi1zYW5pdGl6YWJsZSByZXNwb25zZSBzaG91bGQgcmVqZWN0LicpOwogICAgICAg
ICAgICAgcnVuKCdraWRzID0gSlNPTi5zdHJpbmdpZnkoeyBraWRzOiBbICJNVEl6TkRVPSIgXSB9
KScpOwogICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRl
U2Vzc2lvbigidGVtcG9yYXJ5IiknKTsKLSAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlh
S2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoImtleWlkcyIsIHN0cmluZ1RvVUludDhBcnJheShr
aWRzKSknKTsKKyAgICAgICAgICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi5nZW5l
cmF0ZVJlcXVlc3QoImtleWlkcyIsIGVuY29kZXIuZW5jb2RlKGtpZHMpKScpOwogICAgICAgICAg
ICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIHJ1bigncHJvbWlzZSA9IG1lZGlhS2V5U2Vzc2lvbi51cGRhdGUoc3RyaW5nVG9VSW50OEFy
cmF5KCJpbnZhbGlkLXJlc3BvbnNlIikpJyk7CisgICAgICAgICAgICAgICAgcnVuKCdwcm9taXNl
ID0gbWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShlbmNvZGVyLmVuY29kZSgiaW52YWxpZC1yZXNwb25z
ZSIpKScpOwogICAgICAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKS50aGVuKG5leHQs
IG5leHQpOwogICAgICAgICAgICAgfSwgbmV4dCk7CiAgICAgICAgIH0sCkBAIC05Nyw5ICs5MSw5
IEBACiAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1VzaW5nIGEgc2FuaXRpemFibGUgcmVzcG9u
c2Ugc2hvdWxkIHJlc29sdmUuJyk7CiAgICAgICAgICAgICBydW4oJ2tpZHMgPSBKU09OLnN0cmlu
Z2lmeSh7IGtpZHM6IFsgIk1USXpORFU9IiBdIH0pJyk7CiAgICAgICAgICAgICBydW4oJ21lZGlh
S2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKScpOwotICAg
ICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgi
a2V5aWRzIiwgc3RyaW5nVG9VSW50OEFycmF5KGtpZHMpKScpOworICAgICAgICAgICAgcnVuKCdw
cm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgZW5jb2Rl
ci5lbmNvZGUoa2lkcykpJyk7CiAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRo
ZW4oZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlT
ZXNzaW9uLnVwZGF0ZShzdHJpbmdUb1VJbnQ4QXJyYXkoInZhbGlkLXJlc3BvbnNlIikpJyk7Cisg
ICAgICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLnVwZGF0ZShlbmNv
ZGVyLmVuY29kZSgidmFsaWQtcmVzcG9uc2UiKSknKTsKICAgICAgICAgICAgICAgICBzaG91bGRS
ZXNvbHZlKHByb21pc2UpLnRoZW4obmV4dCwgbmV4dCk7CiAgICAgICAgICAgICB9LCBuZXh0KTsK
ICAgICAgICAgfSwKQEAgLTEwOCwxMiArMTAyLDczIEBACiAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoJ1VzaW5nIGEgc2FuaXRpemFibGUgcmVzcG9uc2Ugd2l0aCBpbnZhbGlkIGZvcm1hdCBzaG91
bGQgcmVzb2x2ZS4nKTsKICAgICAgICAgICAgIHJ1bigna2lkcyA9IEpTT04uc3RyaW5naWZ5KHsg
a2lkczogWyAiTVRJek5EVT0iIF0gfSknKTsKICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNz
aW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInRlbXBvcmFyeSIpJyk7Ci0gICAgICAgICAg
ICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMi
LCBzdHJpbmdUb1VJbnQ4QXJyYXkoa2lkcykpJyk7CisgICAgICAgICAgICBydW4oJ3Byb21pc2Ug
PSBtZWRpYUtleVNlc3Npb24uZ2VuZXJhdGVSZXF1ZXN0KCJrZXlpZHMiLCBlbmNvZGVyLmVuY29k
ZShraWRzKSknKTsKICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbihmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVNlc3Npb24u
dXBkYXRlKHN0cmluZ1RvVUludDhBcnJheSgidmFsaWQtcmVzcG9uc2UgaW52YWxpZC1mb3JtYXQi
KSknKTsKKyAgICAgICAgICAgICAgICBydW4oJ3Byb21pc2UgPSBtZWRpYUtleVNlc3Npb24udXBk
YXRlKGVuY29kZXIuZW5jb2RlKCJ2YWxpZC1yZXNwb25zZSBpbnZhbGlkLWZvcm1hdCIpKScpOwog
ICAgICAgICAgICAgICAgIHNob3VsZFJlamVjdChwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOwog
ICAgICAgICAgICAgfSwgbmV4dCk7CiAgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ0EgdmFsaWQgTWVkaWFLZXlTZXNzaW9uIHByb3Bl
cmx5IGRpc3BhdGNoZXMga2V5c3RhdHVzZXNjaGFuZ2UgZXZlbnQuJyk7CisgICAgICAgICAgICBy
dW4oJ2tpZHMgPSBKU09OLnN0cmluZ2lmeSh7IGtpZHM6IFsgIk1USXpORFU9IiwgIk5qYzRPVEE9
IiBdIH0pJyk7CisgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5j
cmVhdGVTZXNzaW9uKCJ0ZW1wb3JhcnkiKScpOworICAgICAgICAgICAgcnVuKCdwcm9taXNlID0g
bWVkaWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgia2V5aWRzIiwgZW5jb2Rlci5lbmNvZGUo
a2lkcykpJyk7CisgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgcnVuKCdwcm9taXNlID0gbWVkaWFLZXlTZXNzaW9uLnVw
ZGF0ZShlbmNvZGVyLmVuY29kZSgidmFsaWQtcmVzcG9uc2Uga2V5cy1jaGFuZ2VkIikpJyk7Cisg
ICAgICAgICAgICAgICAgbWVkaWFLZXlTZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXN0YXR1
c2VzY2hhbmdlJywgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ua2V5U3RhdHVzZXMuc2l6ZScsIDIpOworICAgICAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5oYXMo
ZW5jb2Rlci5lbmNvZGUoIjEyMzQ1IikpJywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzLmdldChlbmNvZGVyLmVuY29k
ZSgiMTIzNDUiKSknLCAndXNhYmxlJyk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgnbWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzLmhhcyhlbmNvZGVyLmVuY29kZSgiNjc4OTAi
KSknLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNl
c3Npb24ua2V5U3RhdHVzZXMuZ2V0KGVuY29kZXIuZW5jb2RlKCI2Nzg5MCIpKScsICd1c2FibGUn
KTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ua2V5
U3RhdHVzZXMuaGFzKGVuY29kZXIuZW5jb2RlKCJpbnZhbGlkIikpJywgZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy5n
ZXQoZW5jb2Rlci5lbmNvZGUoImludmFsaWQiKSknLCB1bmRlZmluZWQpOworCisgICAgICAgICAg
ICAgICAgICAgIGl0ZXJhdG9yQXJyYXkgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgcGFpciBvZiBtZWRpYUtleVNlc3Npb24ua2V5U3RhdHVzZXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpdGVyYXRvckFycmF5LnB1c2goWyBuZXcgVWludDhBcnJheShwYWlyWzBdKSwgcGFp
clsxXSBdKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpdGVyYXRvckFycmF5
Lmxlbmd0aCcsIDIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0QXJyYXlzRXF1YWwoJ2l0ZXJh
dG9yQXJyYXlbMF1bMF0nLCBlbmNvZGVyLmVuY29kZSgnMTIzNDUnKSk7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgnaXRlcmF0b3JBcnJheVswXVsxXScsICd1c2FibGUnKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEFycmF5c0VxdWFsKCdpdGVyYXRvckFycmF5WzFdWzBdJywg
ZW5jb2Rlci5lbmNvZGUoJzY3ODkwJykpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ2l0ZXJhdG9yQXJyYXlbMV1bMV0nLCAndXNhYmxlJyk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaXRlcmF0b3JBcnJheSA9IFtdOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkg
b2YgbWVkaWFLZXlTZXNzaW9uLmtleVN0YXR1c2VzLmtleXMoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGl0ZXJhdG9yQXJyYXkucHVzaChuZXcgVWludDhBcnJheShrZXkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpdGVyYXRvckFycmF5Lmxlbmd0aCcsIDIpOworICAg
ICAgICAgICAgICAgICAgICB0ZXN0QXJyYXlzRXF1YWwoJ2l0ZXJhdG9yQXJyYXlbMF0nLCBlbmNv
ZGVyLmVuY29kZSgnMTIzNDUnKSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RBcnJheXNFcXVh
bCgnaXRlcmF0b3JBcnJheVsxXScsIGVuY29kZXIuZW5jb2RlKCc2Nzg5MCcpKTsKKworICAgICAg
ICAgICAgICAgICAgICBpdGVyYXRvckFycmF5ID0gW107CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIHZhbHVlIG9mIG1lZGlhS2V5U2Vzc2lvbi5rZXlTdGF0dXNlcy52YWx1ZXMoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yQXJyYXkucHVzaCh2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RBcnJheXNFcXVhbCgnaXRlcmF0b3JBcnJheScsIFsgJ3VzYWJsZScs
ICd1c2FibGUnIF0pOworCisgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yQXJyYXkgPSBbXTsK
KyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZW50cnkgb2YgbWVkaWFLZXlTZXNzaW9uLmtl
eVN0YXR1c2VzLmVudHJpZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yQXJy
YXkucHVzaCh7IGtleTogbmV3IFVpbnQ4QXJyYXkoZW50cnlbMF0pLCB2YWx1ZTogZW50cnlbMV0g
fSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaXRlcmF0b3JBcnJheS5sZW5n
dGgnLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEFycmF5c0VxdWFsKCdpdGVyYXRvckFy
cmF5WzBdLmtleScsIGVuY29kZXIuZW5jb2RlKCcxMjM0NScpKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCdpdGVyYXRvckFycmF5WzBdLnZhbHVlJywgJ3VzYWJsZScpOworICAg
ICAgICAgICAgICAgICAgICB0ZXN0QXJyYXlzRXF1YWwoJ2l0ZXJhdG9yQXJyYXlbMV0ua2V5Jywg
ZW5jb2Rlci5lbmNvZGUoJzY3ODkwJykpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ2l0ZXJhdG9yQXJyYXlbMV0udmFsdWUnLCAndXNhYmxlJyk7CisKKyAgICAgICAgICAgICAg
ICAgICAgaXRlcmF0b3JBcnJheSA9IFtdOworICAgICAgICAgICAgICAgICAgICBtZWRpYUtleVNl
c3Npb24ua2V5U3RhdHVzZXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpdGVyYXRvckFycmF5LnB1c2goeyBrZXk6IG5ldyBVaW50OEFycmF5
KGtleSksIHZhbHVlOiB2YWx1ZSB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaXRlcmF0b3JBcnJheS5sZW5ndGgnLCAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEFycmF5c0VxdWFsKCdpdGVyYXRvckFycmF5WzBdLmtleScs
IGVuY29kZXIuZW5jb2RlKCcxMjM0NScpKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCdpdGVyYXRvckFycmF5WzBdLnZhbHVlJywgJ3VzYWJsZScpOworICAgICAgICAgICAgICAg
ICAgICB0ZXN0QXJyYXlzRXF1YWwoJ2l0ZXJhdG9yQXJyYXlbMV0ua2V5JywgZW5jb2Rlci5lbmNv
ZGUoJzY3ODkwJykpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2l0ZXJhdG9y
QXJyYXlbMV0udmFsdWUnLCAndXNhYmxlJyk7CisKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxk
UmVzb2x2ZShwcm9taXNlKS50aGVuKG5leHQsIG5leHQpOworICAgICAgICAgICAgICAgIH0sIGZh
bHNlKTsKKyAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICB9LAogICAgIF07CiAgICAgPC9z
Y3JpcHQ+CiA8L2hlYWQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>