<?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>189725</bug_id>
          
          <creation_ts>2018-09-18 16:45:43 -0700</creation_ts>
          <short_desc>[EME] Introduce the concept of CDMInstanceSession.</short_desc>
          <delta_ts>2018-09-21 13:49:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1460808</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-18 16:45:43 -0700</bug_when>
    <thetext>[EME] Introduce the concept of CDMInstanceSession.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460810</commentid>
    <comment_count>1</comment_count>
      <attachid>350076</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-18 16:51:41 -0700</bug_when>
    <thetext>Created attachment 350076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460811</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-18 16:53:38 -0700</bug_when>
    <thetext>Attachment 350076 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:465:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:522:  Missing space around : in range-based for statement  [whitespace/colon] [4]
Total errors found: 2 in 13 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>1460998</commentid>
    <comment_count>3</comment_count>
      <attachid>350076</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-19 09:45:39 -0700</bug_when>
    <thetext>Comment on attachment 350076
Patch

Looks like we need to revert the part of the patch which moves CDMInstanceClearKey::keys() to CDMInstanceSession::keys() (or more likely, make the former aggregate the latter).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461002</commentid>
    <comment_count>4</comment_count>
      <attachid>350127</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-19 09:53:51 -0700</bug_when>
    <thetext>Created attachment 350127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461003</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-19 09:55:55 -0700</bug_when>
    <thetext>Attachment 350127 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:465:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:522:  Missing space around : in range-based for statement  [whitespace/colon] [4]
Total errors found: 2 in 13 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>1461007</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-19 10:01:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/44606289&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461039</commentid>
    <comment_count>7</comment_count>
      <attachid>350127</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-19 10:48:50 -0700</bug_when>
    <thetext>Comment on attachment 350127
Patch

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

r=me once the bots are happy

&gt; Source/WebCore/platform/encryptedmedia/CDMInstanceSession.h:72
&gt; +    virtual void updateLicense(const String&amp; sessionId, LicenseType, const SharedBuffer&amp; response, LicenseUpdateCallback) = 0;

Nit: LicenseUpdateCallback&amp;&amp;

&gt; Source/WebCore/platform/encryptedmedia/CDMInstanceSession.h:83
&gt; +    virtual void loadSession(LicenseType, const String&amp; sessionId, const String&amp; origin, LoadSessionCallback) = 0;

Ditto.

&gt; Source/WebCore/platform/encryptedmedia/CDMInstanceSession.h:86
&gt; +    virtual void closeSession(const String&amp; sessionId, CloseSessionCallback) = 0;

Nit: CloseSessionCallback&amp;&amp;

&gt; Source/WebCore/platform/encryptedmedia/CDMInstanceSession.h:89
&gt; +    virtual void removeSessionData(const String&amp; sessionId, LicenseType, RemoveSessionDataCallback) = 0;

Nit: RemoveSessionDataCallback&amp;&amp;

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:497
&gt; +    static const NeverDestroyed&lt;String&gt; s_keySystem = MAKE_STATIC_STRING_IMPL(&quot;org.w3.clearkey&quot;);

Nit: you use the brace-initialization style to CDMInstanceFairPlayStreamingAVFObjC::keySystem, both should use the same.

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:510
&gt; +    Vector&lt;CDMInstanceSessionClearKey::Key&gt; allKeys { };

Nit: allKeys.reserveInitialCapacity( ... )

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:537
&gt; +void CDMInstanceSessionClearKey::updateLicense(const String&amp; sessionId, LicenseType, const SharedBuffer&amp; response, LicenseUpdateCallback callback)

LicenseUpdateCallback&amp;&amp;

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:638
&gt; +void CDMInstanceSessionClearKey::loadSession(LicenseType, const String&amp; sessionId, const String&amp;, LoadSessionCallback callback)

Ditto.

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:671
&gt; +void CDMInstanceSessionClearKey::closeSession(const String&amp;, CloseSessionCallback callback)

CloseSessionCallback&amp;&amp;

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:682
&gt; +void CDMInstanceSessionClearKey::removeSessionData(const String&amp; sessionId, LicenseType, RemoveSessionDataCallback callback)

RemoveSessionDataCallback&amp;&amp;

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.h:108
&gt; +    void requestLicense(LicenseType, const AtomicString&amp; initDataType, Ref&lt;SharedBuffer&gt;&amp;&amp; initData, LicenseCallback) final;
&gt; +    void updateLicense(const String&amp;, LicenseType, const SharedBuffer&amp;, LicenseUpdateCallback) final;
&gt; +    void loadSession(LicenseType, const String&amp;, const String&amp;, LoadSessionCallback) final;
&gt; +    void closeSession(const String&amp;, CloseSessionCallback) final;
&gt; +    void removeSessionData(const String&amp;, LicenseType, RemoveSessionDataCallback) final;

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:112
&gt; +    void requestLicense(LicenseType, const AtomicString&amp; initDataType, Ref&lt;SharedBuffer&gt;&amp;&amp; initData, LicenseCallback) final;
&gt; +    void updateLicense(const String&amp;, LicenseType, const SharedBuffer&amp;, LicenseUpdateCallback) final;
&gt; +    void loadSession(LicenseType, const String&amp;, const String&amp;, LoadSessionCallback) final;
&gt; +    void closeSession(const String&amp;, CloseSessionCallback) final;
&gt; +    void removeSessionData(const String&amp;, LicenseType, RemoveSessionDataCallback) final;

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:123
&gt; +    void didProvideRequest(AVContentKeyRequest *);
&gt; +    void didProvideRenewingRequest(AVContentKeyRequest *);
&gt; +    void didProvidePersistableRequest(AVContentKeyRequest *);
&gt; +    void didFailToProvideRequest(AVContentKeyRequest *, NSError *);
&gt; +    void requestDidSucceed(AVContentKeyRequest *);
&gt; +    bool shouldRetryRequestForReason(AVContentKeyRequest *, NSString *);
&gt; +    void sessionIdentifierChanged(NSData *);

Nit: our pedantic style guide wants no space between type and * in .cpp code.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:247
&gt; +    static NeverDestroyed&lt;String&gt; s_keySystem { &quot;com.apple.fps&quot;_s };

Initialization style.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:402
&gt; +void CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense(const String&amp;, LicenseType, const SharedBuffer&amp; responseData, LicenseUpdateCallback callback)

LicenseUpdateCallback&amp;&amp;

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:448
&gt; +void CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession(LicenseType licenseType, const String&amp; sessionId, const String&amp; origin, LoadSessionCallback callback)

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:487
&gt; +void CDMInstanceSessionFairPlayStreamingAVFObjC::closeSession(const String&amp;, CloseSessionCallback callback)

CloseSessionCallback&amp;&amp;

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:505
&gt; +void CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData(const String&amp; sessionId, LicenseType licenseType, RemoveSessionDataCallback callback)

RemoveSessionDataCallback&amp;&amp;

&gt; Source/WebCore/testing/MockCDMFactory.cpp:274
&gt; +    static const NeverDestroyed&lt;String&gt; s_keySystem = MAKE_STATIC_STRING_IMPL(&quot;org.webkit.mock&quot;);

Initialization style.

&gt; Source/WebCore/testing/MockCDMFactory.cpp:315
&gt; +void MockCDMInstanceSession::updateLicense(const String&amp; sessionID, LicenseType, const SharedBuffer&amp; response, LicenseUpdateCallback callback)

LicenseUpdateCallback&amp;&amp;

&gt; Source/WebCore/testing/MockCDMFactory.cpp:349
&gt; +void MockCDMInstanceSession::loadSession(LicenseType, const String&amp;, const String&amp;, LoadSessionCallback callback)

Ditto.

&gt; Source/WebCore/testing/MockCDMFactory.cpp:365
&gt; +void MockCDMInstanceSession::closeSession(const String&amp; sessionID, CloseSessionCallback callback)

Ditto.

&gt; Source/WebCore/testing/MockCDMFactory.cpp:377
&gt; +void MockCDMInstanceSession::removeSessionData(const String&amp; id, LicenseType, RemoveSessionDataCallback callback)

Ditto.

&gt; Source/WebCore/testing/MockCDMFactory.h:155
&gt;      void requestLicense(LicenseType, const AtomicString&amp; initDataType, Ref&lt;SharedBuffer&gt;&amp;&amp; initData, LicenseCallback) final;
&gt;      void updateLicense(const String&amp;, LicenseType, const SharedBuffer&amp;, LicenseUpdateCallback) final;
&gt;      void loadSession(LicenseType, const String&amp;, const String&amp;, LoadSessionCallback) final;

Ditto.

&gt; Source/WebCore/testing/MockCDMFactory.h:157
&gt;      void removeSessionData(const String&amp;, LicenseType, RemoveSessionDataCallback) final;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461271</commentid>
    <comment_count>8</comment_count>
      <attachid>350127</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-09-20 01:05:27 -0700</bug_when>
    <thetext>Comment on attachment 350127
Patch

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

Wow Jer, big patch! Well thought, nice arch changes. It is going to break some things downstream for us when this gets merged into our branches, but as I keep telling my customers, it is not good working downstream for a long time because these things can happen!

&gt; Source/WebCore/ChangeLog:10
&gt; +        Currently, the same CDMInstance owned by a MediaKeys object is passed to every MediaKeySession created by that
&gt; +        MediaKeys, and since the CDMInstance has only a single CDMInstanceClient, subsequent MediaKeySessions prevent
&gt; +        previous ones from getting updates.

I bet you have (or can have) a nice test to prevent regressions on this. If there is already, I think you should list it here, update expectations, etc. If not, I think we should have one.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:51
&gt; +Ref&lt;MediaKeySession&gt; MediaKeySession::create(ScriptExecutionContext&amp; context, WeakPtr&lt;MediaKeys&gt;&amp;&amp; keys, MediaKeySessionType sessionType, bool useDistinctiveIdentifier, Ref&lt;CDM&gt;&amp;&amp; implementation, Ref&lt;CDMInstanceSession&gt;&amp;&amp; instance)

Since you&apos;re making a quite substantial name change here, the variables/parameters should named either session or instanceSession, but not instance since they are no CDMInstances anymore. I think you can also consider yourself &quot;ditto-ed&quot; for all the other appearances of parameters and variables where this happens.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:113
&gt; -    Ref&lt;CDMInstance&gt; m_instance;
&gt; +    Ref&lt;CDMInstanceSession&gt; m_instance;

Ditto.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:120
&gt; +    WeakPtrFactory&lt;CDMInstanceSessionClient&gt; m_cdmInstanceClientWeakPtrFactory;

session -&gt; m_cdmInstanceSessionClientWeakPtrFactory.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:67
&gt; +    auto sessionInstance = m_instance-&gt;createSession();

sessionInstance -&gt; instanceSession or session

&gt; Source/WebCore/platform/encryptedmedia/CDMInstance.h:39
&gt; +#include &lt;wtf/WeakPtr.h&gt;

This seems to be unused here or am I missing anything?

&gt;&gt; Source/WebCore/platform/encryptedmedia/CDMInstanceSession.h:72
&gt;&gt; +    virtual void updateLicense(const String&amp; sessionId, LicenseType, const SharedBuffer&amp; response, LicenseUpdateCallback) = 0;
&gt; 
&gt; Nit: LicenseUpdateCallback&amp;&amp;

Yes, and I guess Eric meant this not only here but in other places, like requestLicense, etc.

&gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.h:61
&gt; +    bool supportsInitDataType(const AtomicString&amp;) const final;

All these changes seem to be unrelated to the current patch though I think it is nice to make them. I think mentioning that some additional clean up and improvement was done in the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461363</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-20 09:06:31 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #7)
&gt; Comment on attachment 350127 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=350127&amp;action=review
&gt; 
&gt; r=me once the bots are happy
&gt; 
&gt; &gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:510
&gt; &gt; +    Vector&lt;CDMInstanceSessionClearKey::Key&gt; allKeys { };
&gt; 
&gt; Nit: allKeys.reserveInitialCapacity( ... )

This one is going to be difficult, because the data structure this vector is derived from is a HashSet of Vectors. We&apos;d need to walk the list of values twice, summing as we go, just to calculate the initial capacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461367</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-20 09:10:41 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #8)
&gt; Comment on attachment 350127 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=350127&amp;action=review
&gt; 
&gt; Wow Jer, big patch! Well thought, nice arch changes. It is going to break
&gt; some things downstream for us when this gets merged into our branches, but
&gt; as I keep telling my customers, it is not good working downstream for a long
&gt; time because these things can happen!

Hopefully this doesn&apos;t cause too much disruption. The easiest short term integration would be to make your CDMInstance derived class also derive from CDMInstanceSession and have createSession() just return this.  Long term, this should help with state management of different MediaKeySessions.

&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Currently, the same CDMInstance owned by a MediaKeys object is passed to every MediaKeySession created by that
&gt; &gt; +        MediaKeys, and since the CDMInstance has only a single CDMInstanceClient, subsequent MediaKeySessions prevent
&gt; &gt; +        previous ones from getting updates.
&gt; 
&gt; I bet you have (or can have) a nice test to prevent regressions on this. If
&gt; there is already, I think you should list it here, update expectations, etc.
&gt; If not, I think we should have one.

I do, but because it&apos;s got a FairPlay server requirement, I can&apos;t make it public. I&apos;ll update the changelog to reflect that such a test exists though.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:51
&gt; &gt; +Ref&lt;MediaKeySession&gt; MediaKeySession::create(ScriptExecutionContext&amp; context, WeakPtr&lt;MediaKeys&gt;&amp;&amp; keys, MediaKeySessionType sessionType, bool useDistinctiveIdentifier, Ref&lt;CDM&gt;&amp;&amp; implementation, Ref&lt;CDMInstanceSession&gt;&amp;&amp; instance)
&gt; 
&gt; Since you&apos;re making a quite substantial name change here, the
&gt; variables/parameters should named either session or instanceSession, but not
&gt; instance since they are no CDMInstances anymore. I think you can also
&gt; consider yourself &quot;ditto-ed&quot; for all the other appearances of parameters and
&gt; variables where this happens.

Will do.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:113
&gt; &gt; -    Ref&lt;CDMInstance&gt; m_instance;
&gt; &gt; +    Ref&lt;CDMInstanceSession&gt; m_instance;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:120
&gt; &gt; +    WeakPtrFactory&lt;CDMInstanceSessionClient&gt; m_cdmInstanceClientWeakPtrFactory;
&gt; 
&gt; session -&gt; m_cdmInstanceSessionClientWeakPtrFactory.
&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:67
&gt; &gt; +    auto sessionInstance = m_instance-&gt;createSession();
&gt; 
&gt; sessionInstance -&gt; instanceSession or session
&gt; 
&gt; &gt; Source/WebCore/platform/encryptedmedia/CDMInstance.h:39
&gt; &gt; +#include &lt;wtf/WeakPtr.h&gt;
&gt; 
&gt; This seems to be unused here or am I missing anything?

Yes, I&apos;ll remove this.

&gt; &gt;&gt; Source/WebCore/platform/encryptedmedia/CDMInstanceSession.h:72
&gt; &gt;&gt; +    virtual void updateLicense(const String&amp; sessionId, LicenseType, const SharedBuffer&amp; response, LicenseUpdateCallback) = 0;
&gt; &gt; 
&gt; &gt; Nit: LicenseUpdateCallback&amp;&amp;
&gt; 
&gt; Yes, and I guess Eric meant this not only here but in other places, like
&gt; requestLicense, etc.
&gt; 
&gt; &gt; Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.h:61
&gt; &gt; +    bool supportsInitDataType(const AtomicString&amp;) const final;
&gt; 
&gt; All these changes seem to be unrelated to the current patch though I think
&gt; it is nice to make them. I think mentioning that some additional clean up
&gt; and improvement was done in the process.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461401</commentid>
    <comment_count>11</comment_count>
      <attachid>350222</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-20 09:59:00 -0700</bug_when>
    <thetext>Created attachment 350222
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461404</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-20 10:01:40 -0700</bug_when>
    <thetext>Attachment 350222 did not pass style-queue:


ERROR: Source/WebCore/platform/encryptedmedia/clearkey/CDMClearKey.cpp:567:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:465:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:522:  Missing space around : in range-based for statement  [whitespace/colon] [4]
Total errors found: 3 in 13 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>1461528</commentid>
    <comment_count>13</comment_count>
      <attachid>350222</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-20 14:03:19 -0700</bug_when>
    <thetext>Comment on attachment 350222
Patch for landing

Xabier, I&apos;m setting this to cq?. When you&apos;re available to handle any downstream breakages, would you mind cq+ing this patch?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461752</commentid>
    <comment_count>14</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-09-21 00:05:38 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #13)
&gt; Comment on attachment 350222 [details]
&gt; Patch for landing
&gt; 
&gt; Xabier, I&apos;m setting this to cq?. When you&apos;re available to handle any
&gt; downstream breakages, would you mind cq+ing this patch?.

Oh, thanks for being so considerate but you don&apos;t need to wait. We don&apos;t integrate things so often so I was foreseeing the problem of somebody requiring some more expert knowledge than just fixing some small conflicts during merge at some point in the near future but not immediate. I was just thinking out loud and I think we can&apos;t and shouldn&apos;t condition upstream development with downstream constraints. Upstream is upstream and leads the way.

About the cq+, I&apos;ll try to remember doing it close to the moment you wake up so that it has landed but you can attend any unforeseen breakage should it happen (fingers crossed!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461846</commentid>
    <comment_count>15</comment_count>
      <attachid>350222</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-21 08:08:42 -0700</bug_when>
    <thetext>Comment on attachment 350222
Patch for landing

Clearing flags on attachment: 350222

Committed r236317: &lt;https://trac.webkit.org/changeset/236317&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461847</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-21 08:08:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461981</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-09-21 12:01:10 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #10)
&gt; (In reply to Xabier Rodríguez Calvar from comment #8)
&gt; &gt; Comment on attachment 350127 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=350127&amp;action=review
&gt; &gt; 
&gt; &gt; Wow Jer, big patch! Well thought, nice arch changes. It is going to break
&gt; &gt; some things downstream for us when this gets merged into our branches, but
&gt; &gt; as I keep telling my customers, it is not good working downstream for a long
&gt; &gt; time because these things can happen!
&gt; 
&gt; Hopefully this doesn&apos;t cause too much disruption. The easiest short term
&gt; integration would be to make your CDMInstance derived class also derive from
&gt; CDMInstanceSession and have createSession() just return this.  Long term,
&gt; this should help with state management of different MediaKeySessions.
&gt; 

This doesn&apos;t work because both CDMInstance and CDMInstanceSession are RefCounted and both classes use WTF_MAKE_FAST_ALLOCATED so the default constructor for the class inheriting both becomes ambiguous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462059</commentid>
    <comment_count>18</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-21 13:44:44 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #17)
&gt; (In reply to Jer Noble from comment #10)
&gt; &gt; (In reply to Xabier Rodríguez Calvar from comment #8)
&gt; &gt; &gt; Comment on attachment 350127 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=350127&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Wow Jer, big patch! Well thought, nice arch changes. It is going to break
&gt; &gt; &gt; some things downstream for us when this gets merged into our branches, but
&gt; &gt; &gt; as I keep telling my customers, it is not good working downstream for a long
&gt; &gt; &gt; time because these things can happen!
&gt; &gt; 
&gt; &gt; Hopefully this doesn&apos;t cause too much disruption. The easiest short term
&gt; &gt; integration would be to make your CDMInstance derived class also derive from
&gt; &gt; CDMInstanceSession and have createSession() just return this.  Long term,
&gt; &gt; this should help with state management of different MediaKeySessions.
&gt; &gt; 
&gt; 
&gt; This doesn&apos;t work because both CDMInstance and CDMInstanceSession are
&gt; RefCounted and both classes use WTF_MAKE_FAST_ALLOCATED so the default
&gt; constructor for the class inheriting both becomes ambiguous.

Oof, that&apos;s unfortunate. We could pull a &quot;ref() { refCDMInstance(); } virtual refCDMInstance()&quot; trick, and force subclasses to implement reference counting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462062</commentid>
    <comment_count>19</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-21 13:45:36 -0700</bug_when>
    <thetext>I&apos;m also happy to roll this patch out while we come up with a better solution that works for all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462064</commentid>
    <comment_count>20</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-09-21 13:49:08 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #19)
&gt; I&apos;m also happy to roll this patch out while we come up with a better
&gt; solution that works for all ports.

That&apos;s alright. Don&apos;t bother. I&apos;ll try to properly re-design my implementation :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350076</attachid>
            <date>2018-09-18 16:51:41 -0700</date>
            <delta_ts>2018-09-19 09:53:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189725-20180918165141.patch</filename>
            <type>text/plain</type>
            <size>80240</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk5YTVlNGI1Yzg0YTRm
NmI4NDMwODM3YjNhNWMzMWU3MDkwOGYwOC4uMTRjZDJiMDI1ZGJkODk4YzY1ZTY3NDdlNDM1Yzkw
N2ViYzZlYWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxOC0wOS0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbRU1FXSBJbnRyb2R1Y2Ug
dGhlIGNvbmNlcHQgb2YgQ0RNSW5zdGFuY2VTZXNzaW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCB0aGUgc2FtZSBDRE1JbnN0YW5j
ZSBvd25lZCBieSBhIE1lZGlhS2V5cyBvYmplY3QgaXMgcGFzc2VkIHRvIGV2ZXJ5IE1lZGlhS2V5
U2Vzc2lvbiBjcmVhdGVkIGJ5IHRoYXQKKyAgICAgICAgTWVkaWFLZXlzLCBhbmQgc2luY2UgdGhl
IENETUluc3RhbmNlIGhhcyBvbmx5IGEgc2luZ2xlIENETUluc3RhbmNlQ2xpZW50LCBzdWJzZXF1
ZW50IE1lZGlhS2V5U2Vzc2lvbnMgcHJldmVudAorICAgICAgICBwcmV2aW91cyBvbmVzIGZyb20g
Z2V0dGluZyB1cGRhdGVzLgorCisgICAgICAgIEFkZCBhIG5ldyB2aXJ0dWFsIGludGVyZmFjZSwg
Q0RNSW5zdGFuY2VTZXNzaW9uLCB0byBiZSBwYXNzZWQgdG8gTWVkaWFLZXlTZXNzaW9uIHVwb24g
Y3JlYXRpb24uIFJlZmFjdG9yCisgICAgICAgIENETUluc3RhbmNlQ2xlYXJLZXkgYW5kIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDIHRvIGFkb3B0IHRoaXMgbmV3IGludGVyZmFj
ZS4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNl
c3Npb246OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OnJlbW92
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2Vz
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZTo6c2V0SERD
UFN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZTo6c2V0Q2xpZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlOjpjbGVhckNsaWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9u
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUluc3RhbmNlLmguCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OnNldENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OmNsZWFyQ2xpZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxpY2Vuc2VGb3JtYXQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleTo6a2V5U3lzdGVtIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjprZXlzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojpsb2Fk
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
Y2xvc2VTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OmtleXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleTo6dXBkYXRlTGljZW5zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5Ojpsb2FkU2Vzc2lvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpjbG9zZVNl
c3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleTo6
cmVtb3ZlU2Vzc2lvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VDbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y3JlYXRlU2Vz
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6cHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0Rm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvY2Vzc05leHRDb250
ZW50S2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6a2V5U3lzdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVBlcnNpc3RhYmxlUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFp
bFRvUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzaG91bGRSZXRyeVJlcXVlc3RG
b3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0lu
c3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmNsb3NlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3RvcmVS
ZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xlYXJDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJv
dmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNob3VsZFJldHJ5
UmVxdWVzdEZvclJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6aXNMaWNlbnNlVHlwZVN1cHBvcnRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aXNMaWNlbnNlVHlwZVN1cHBv
cnRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dXBkYXRlTGljZW5zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNsb3Nl
U2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnN0b3JlUmVjb3Jk
T2ZLZXlVc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbGVhckNsaWVudCk6IERl
bGV0ZWQuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OmtleVN5c3RlbSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNSW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29y
ZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpyZXF1ZXN0
TGljZW5zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnVw
ZGF0ZUxpY2Vuc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
Ojpsb2FkU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFu
Y2U6OmNsb3NlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2U6OnJlbW92ZVNlc3Npb25EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDRE1JbnN0YW5jZTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2U6OmZhY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNSW5zdGFuY2U6OnBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgY29uc3QpOgorCiAyMDE4
LTA5LTE4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyMzYwMDYpOiBOZXcgd2FpdGluZ0ZvcktleSgpIHJlcXVpcmVtZW50IGJyZWFrcyBN
b2Rlcm4gRU1FIHRlc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGViNzJjZTA3NzhlODFjYmJj
ZmJlYmE0MzRjNzgyOGRkOWExMTUyYTQuLjY4ZjQ5M2Q1ZDEwNjI1ZWI1ZmYxMDhlZGZiOGMzOTJk
ODg0ZDQxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTQ4LDE0ICs0OCwxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYWtQdHI8TWVkaWFLZXlz
PiYmIGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGlu
Y3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFu
Y2U+JiYgaW5zdGFuY2UpCitSZWY8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPE1lZGlhS2V5cz4m
JiBrZXlzLCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0
aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNl
U2Vzc2lvbj4mJiBpbnN0YW5jZSkKIHsKICAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3
IE1lZGlhS2V5U2Vzc2lvbihjb250ZXh0LCBXVEZNb3ZlKGtleXMpLCBzZXNzaW9uVHlwZSwgdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyLCBXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShp
bnN0YW5jZSkpKTsKICAgICBzZXNzaW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4g
c2Vzc2lvbjsKIH0KIAotTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxNZWRpYUtleXM+JiYga2V5cywgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIs
IFJlZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZT4mJiBpbnN0YW5jZSkK
K01lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFdlYWtQdHI8TWVkaWFLZXlzPiYmIGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUg
c2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGlt
cGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIGluc3RhbmNlKQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCiAg
ICAgLCBtX2V4cGlyYXRpb24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KSkKQEAgLTg4LDcgKzg4LDcgQEAgTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxNZWRpYUsKICAgICBVTlVTRURf
UEFSQU0obV9jbG9zZWQpOwogICAgIFVOVVNFRF9QQVJBTShtX3VuaW5pdGlhbGl6ZWQpOwogCi0g
ICAgbV9pbnN0YW5jZS0+c2V0Q2xpZW50KCp0aGlzKTsKKyAgICBtX2luc3RhbmNlLT5zZXRDbGll
bnQobV9jZG1JbnN0YW5jZUNsaWVudFdlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMp
KTsKIH0KIAogTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9uKCkKQEAgLTE5NCw3ICsx
OTQsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21p
Y1N0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdQogICAgICAgICAgICAgbV9sYXRlc3REZWNy
eXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlLT5yZXF1ZXN0TGlj
ZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpLCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2UtPnJlcXVlc3RMaWNlbnNl
KG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSksIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
IChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBi
b29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEJ1CiAgICAgICAgICAgICAvLyAxMC4xMC4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUg
Zm9sbG93aW5nIHN0ZXBzOgogICAgICAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3Ro
aXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdl
KSwgbWVzc2FnZVR5cGUsIHNlc3Npb25JZCwgc3VjY2VlZGVkXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICAvLyAxMC4xMC4xLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWls
ZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMg
dGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCi0gICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWls
ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVy
cm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAg
LTI4Nyw3ICsyODcsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAgICAvLyA4LjYu
IExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KICAgICAgICAgLy8gOC43LiBMZXQgY2RtIGJlIHRo
ZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2Ug
dmFsdWUuCiAgICAgICAgIC8vIDguOC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93
aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlLT5sb2FkU2Vzc2lvbihtX3Nlc3Npb25UeXBl
LCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNhbml0aXplZFNlc3Npb25J
ZCA9ICpzYW5pdGl6ZWRTZXNzaW9uSWRdIChzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlOjpLZXlT
dGF0dXNWZWN0b3I+JiYga25vd25LZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0
aW9uLCBzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkLCBDRE1JbnN0YW5jZTo6U2Vzc2lvbkxvYWRG
YWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlLT5sb2FkU2Vzc2lv
bihtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNh
bml0aXplZFNlc3Npb25JZCA9ICpzYW5pdGl6ZWRTZXNzaW9uSWRdIChzdGQ6Om9wdGlvbmFsPENE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtub3duS2V5cywgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYgZXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkLCBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBmYWlsdXJl
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIC8vIDguOC4xLiBJZiB0aGVyZSBpcyBubyBkYXRhIHN0
b3JlZCBmb3IgdGhlIHNhbml0aXplZCBzZXNzaW9uIElEIGluIHRoZSBvcmlnaW4sIHJlc29sdmUg
cHJvbWlzZSB3aXRoIGZhbHNlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgICAgIC8v
IDguOC4yLiBJZiB0aGUgc3RvcmVkIHNlc3Npb24ncyBzZXNzaW9uIHR5cGUgaXMgbm90IHRoZSBz
YW1lIGFzIHRoZSBjdXJyZW50IE1lZGlhS2V5U2Vzc2lvbiBzZXNzaW9uIHR5cGUsIHJlamVjdCBw
cm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgICAgIC8vIDgu
OC4zLiBMZXQgc2Vzc2lvbiBkYXRhIGJlIHRoZSBkYXRhIHN0b3JlZCBmb3IgdGhlIHNhbml0aXpl
ZCBzZXNzaW9uIElEIGluIHRoZSBvcmlnaW4uIFRoaXMgbXVzdCBub3QgaW5jbHVkZSBkYXRhIGZy
b20gb3RoZXIgb3JpZ2luKHMpIG9yIHRoYXQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBvcmln
aW4uCkBAIC0yOTksMTkgKzI5OSwxOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAg
ICAgICAgLy8gICA4LjguNy4yLiBMZXQgbWVzc2FnZSB0eXBlIGJlIHRoZSBhcHByb3ByaWF0ZSBN
ZWRpYUtleU1lc3NhZ2VUeXBlIGZvciB0aGUgbWVzc2FnZS4KICAgICAgICAgICAgIC8vIE5PVEU6
IFN0ZXBzIDguOC4xLiB0aHJvdWdoIDguOC43LiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gQ0RN
SW5zdGFuY2UuCiAKLSAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2U6OlN1
Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CisgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGZhaWx1cmUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlOjpTZXNz
aW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGE6CisgICAgICAgICAgICAgICAgY2FzZSBDRE1J
bnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YToKICAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNl
OjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZToKKyAgICAgICAgICAg
ICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRj
aGVkU2Vzc2lvblR5cGU6CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBl
RXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDRE1JbnN0YW5jZTo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkOgorICAgICAg
ICAgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6OlF1
b3RhRXhjZWVkZWQ6CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChRdW90YUV4
Y2VlZGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgY2FzZSBDRE1JbnN0YW5jZTo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lOgotICAgICAgICAg
ICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6OlNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXI6CisgICAg
ICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6
Tm9uZToKKyAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxv
YWRGYWlsdXJlOjpPdGhlcjoKICAgICAgICAgICAgICAgICAgICAgLy8gSW4gYW55IG90aGVyIGNh
c2UsIHRoZSBzZXNzaW9uIGxvYWQgZmFpbHVyZSB3aWxsIGNhdXNlIGEgcmVqZWN0aW9uIGluIHRo
ZSBmb2xsb3dpbmcgdGFzay4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAg
ICAgICAgICAvLyA4LjkuIFF1ZXVlIGEgdGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
ICAgICAgICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzLCBrbm93bktleXMgPSBX
VEZNb3ZlKGtub3duS2V5cyksIGV4cGlyYXRpb24gPSBXVEZNb3ZlKGV4cGlyYXRpb24pLCBtZXNz
YWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc2FuaXRpemVkU2Vzc2lvbklkLCBzdWNjZWVkZWQsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAv
LyA4LjkuMS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJv
bWlzZSB3aXRoIGEgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCi0gICAgICAgICAgICAgICAg
aWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vz
c1ZhbHVlOjpGYWlsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5v
dFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRl
KGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAg
ICAgICAvLyA2LjUuIExldCBzZXNzaW9uIGNsb3NlZCBiZSBmYWxzZS4KICAgICAgICAgLy8gNi42
LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3Qn
cyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8vIDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhl
Y3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlLT51cGRhdGVMaWNl
bnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2U6Oktl
eVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hh
bmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2U6Ok1lc3NhZ2U+JiYgbWVz
c2FnZSwgQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAg
ICAgICBtX2luc3RhbmNlLT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBl
LCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0
ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdl
ZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9w
dGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQxNCw3ICs0MTQs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVz
cG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAgICAgLy8gICAgIFByb2Nlc3Mg
c2FuaXRpemVkIHJlc3BvbnNlLCBub3Qgc3RvcmluZyBhbnkgc2Vzc2lvbiBkYXRhLgogICAgICAg
ICAgICAgLy8gTk9URTogU3RlcHMgNi43LjEuIGFuZCA2LjcuMi4gc2hvdWxkIGJlIGltcGxlbWVu
dGVkIGluIENETUluc3RhbmNlLgogCi0gICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUlu
c3RhbmNlOjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkgeworICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CiAgICAgICAg
ICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQpAQCAtNDUwLDE2ICs0NTAsMTYgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYKICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UtPmZpcnN0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIENETUluc3RhbmNlOjpNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3Q6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5
cGU6OkxpY2Vuc2VSZXF1ZXN0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VU
eXBlID0gTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3Q7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENETUlu
c3RhbmNlOjpNZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWw6CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2Fs
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlID0gTWVkaWFLZXlNZXNz
YWdlVHlwZTo6TGljZW5zZVJlbmV3YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlOjpNZXNzYWdlVHlw
ZTo6TGljZW5zZVJlbGVhc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZWxlYXNlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2VUeXBlID0gTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJl
bGVhc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIENETUluc3RhbmNlOjpNZXNzYWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRp
b25SZXF1ZXN0OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2VUeXBlOjpJbmRpdmlkdWFsaXphdGlvblJlcXVlc3Q6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZVR5cGUgPSBNZWRpYUtleU1lc3NhZ2VUeXBlOjpJbmRpdmlk
dWFsaXphdGlvblJlcXVlc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAg
IC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNl
IHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3Rh
bmNlLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0gKENETUluc3RhbmNlOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZS0+cmVtb3ZlU2Vzc2lvbkRhdGEo
bV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgICAgICAgICAgdXBkYXRlRXhw
aXJhdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIAogICAg
ICAgICAgICAgICAgIC8vIDQuNS4zLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWls
ZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMg
dGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCi0gICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWls
ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVy
cm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAg
LTU5OSw3ICs1OTksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVk
aWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcgogICAgIG1fZXZlbnRRdWV1
ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShtZXNzYWdlRXZlbnQpKTsKIH0KIAotdm9pZCBNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlQ2xpZW50OjpLZXlTdGF0dXNW
ZWN0b3ImJiBpbnB1dFN0YXR1c2VzKQordm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0
YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW5wdXRTdGF0dXNl
cykKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyN1cGRh
dGUta2V5LXN0YXR1c2VzCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIw
MTYKQEAgLTYxMywyMSArNjEzLDIxIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlT
dGF0dXNlcyhDRE1JbnN0YW5jZUNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYgaW5wCiAgICAgLy8g
ICAgIDQuMi4xLiBMZXQgcGFpciBiZSB0aGUgcGFpci4KICAgICAvLyAgICAgNC4yLjIuIEluc2Vy
dCBhbiBlbnRyeSBmb3IgcGFpcidzIGtleSBJRCBpbnRvIHN0YXR1c2VzIHdpdGggdGhlIHZhbHVl
IG9mIHBhaXIncyBNZWRpYUtleVN0YXR1cyB2YWx1ZS4KIAotICAgIHN0YXRpYyBhdXRvIHRvTWVk
aWFLZXlTdGF0dXMgPSBbXSAoQ0RNSW5zdGFuY2U6OktleVN0YXR1cyBzdGF0dXMpIC0+IE1lZGlh
S2V5U3RhdHVzIHsKKyAgICBzdGF0aWMgYXV0byB0b01lZGlhS2V5U3RhdHVzID0gW10gKENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cykgLT4gTWVkaWFLZXlTdGF0dXMgewogICAg
ICAgICBzd2l0Y2ggKHN0YXR1cykgewotICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0
dXM6OlVzYWJsZToKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6
VXNhYmxlOgogICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpVc2FibGU7Ci0gICAg
ICAgIGNhc2UgQ0RNSW5zdGFuY2U6OktleVN0YXR1czo6RXhwaXJlZDoKKyAgICAgICAgY2FzZSBD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6RXhwaXJlZDoKICAgICAgICAgICAgIHJldHVy
biBNZWRpYUtleVN0YXR1czo6RXhwaXJlZDsKLSAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5
U3RhdHVzOjpSZWxlYXNlZDoKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1czo6UmVsZWFzZWQ6CiAgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OlJlbGVh
c2VkOwotICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0dXM6Ok91dHB1dFJlc3RyaWN0
ZWQ6CisgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6Ok91dHB1dFJl
c3RyaWN0ZWQ6CiAgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6Ok91dHB1dFJlc3Ry
aWN0ZWQ7Ci0gICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6OktleVN0YXR1czo6T3V0cHV0RG93bnNj
YWxlZDoKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6T3V0cHV0
RG93bnNjYWxlZDoKICAgICAgICAgICAgIHJldHVybiBNZWRpYUtleVN0YXR1czo6T3V0cHV0RG93
bnNjYWxlZDsKLSAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5U3RhdHVzOjpTdGF0dXNQZW5k
aW5nOgorICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzOjpTdGF0dXNQ
ZW5kaW5nOgogICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpTdGF0dXNQZW5kaW5n
OwotICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0dXM6OkludGVybmFsRXJyb3I6Cisg
ICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OkludGVybmFsRXJyb3I6
CiAgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3I7CiAgICAg
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDBkMTkwMGUzMWJjN2JkNDkxN2U4MjZiNjEwMzMx
ZWM1ODhjOTUxMzIuLjgxMDNjNDFiNGMyYjFkNDNlMzllZjk3OGQzMzYwOGYwNWMwYWIzYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaApAQCAtMzEsNyArMzEsNyBAQAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJDRE1JbnN0YW5j
ZS5oIgorI2luY2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkRPTVByb21p
c2VQcm94eS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2
ZW50UXVldWUuaCIKQEAgLTUyLDkgKzUyLDkgQEAgY2xhc3MgTWVkaWFLZXlTdGF0dXNNYXA7CiBj
bGFzcyBNZWRpYUtleXM7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWNsYXNzIE1lZGlhS2V5U2Vz
c2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TWVkaWFLZXlTZXNzaW9uPiwgcHVibGljIENETUluc3RhbmNlQ2xpZW50
IHsKK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
S2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFLZXlTZXNzaW9uPiwgcHVi
bGljIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxN
ZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2Vha1B0cjxN
ZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVu
dGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOworICAgIHN0YXRpYyBSZWY8
TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYWtQdHI8
TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRl
bnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7CiAgICAgdmly
dHVhbCB+TWVkaWFLZXlTZXNzaW9uKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhS2V5
U2Vzc2lvbj46OnJlZjsKQEAgLTc4LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVz
ZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFL
ZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwg
TWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxD
RE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CisgICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlw
ZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0
YW5jZVNlc3Npb24+JiYpOwogICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRv
dWJsZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAotICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAg
dm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZUNsaWVudDo6S2V5U3RhdHVzVmVjdG9y
JiYpIG92ZXJyaWRlOworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAorICAgIHZvaWQg
dXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0
b3ImJikgb3ZlcnJpZGU7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVk
aWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CkBAIC0xMTAsMTMgKzExMCwx
NCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXI7CiAgICAg
TWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVt
ZW50YXRpb247Ci0gICAgUmVmPENETUluc3RhbmNlPiBtX2luc3RhbmNlOworICAgIFJlZjxDRE1J
bnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2U7CiAgICAgR2VuZXJpY0V2ZW50UXVldWUgbV9ldmVu
dFF1ZXVlOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fdGFza1F1ZXVlOwogICAgIFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBt
X2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUg
eyAwIH07CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlT
dGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFdlYWtQdHJGYWN0b3J5PENETUluc3RhbmNlU2Vzc2lv
bkNsaWVudD4gbV9jZG1JbnN0YW5jZUNsaWVudFdlYWtQdHJGYWN0b3J5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwCmluZGV4IDM5ZmJiODBlOTc2MTQ2Y2I3OGE2MjRmNzFiMmFl
OWYwNWJhYjJhMmEuLjE1MmZjYTQyNGE4MjE5NmZhY2I1OTY5OTc3MzRiM2UwOWQ2MDE3MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAKQEAgLTY0LDEwICs2NCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9u
Pj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGlm
ICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXNzaW9ucygpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKTsKIAorICAgIGF1dG8gc2Vzc2lvbkluc3RhbmNl
ID0gbV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigpOworICAgIGlmICghc2Vzc2lvbkluc3RhbmNl
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKTsKKwogICAgIC8v
IDMuIExldCBzZXNzaW9uIGJlIGEgbmV3IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QsIGFuZCBpbml0
aWFsaXplIGl0IGFzIGZvbGxvd3M6CiAgICAgLy8gTk9URTogQ29udGludWVkIGluIE1lZGlhS2V5
U2Vzc2lvbi4KICAgICAvLyA0LiBSZXR1cm4gc2Vzc2lvbi4KLSAgICBhdXRvIHNlc3Npb24gPSBN
ZWRpYUtleVNlc3Npb246OmNyZWF0ZShjb250ZXh0LCBtYWtlV2Vha1B0cigqdGhpcyksIHNlc3Np
b25UeXBlLCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgbV9pbXBsZW1lbnRhdGlvbi5jb3B5
UmVmKCksIG1faW5zdGFuY2UuY29weVJlZigpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBNZWRpYUtl
eVNlc3Npb246OmNyZWF0ZShjb250ZXh0LCBtYWtlV2Vha1B0cigqdGhpcyksIHNlc3Npb25UeXBl
LCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgbV9pbXBsZW1lbnRhdGlvbi5jb3B5UmVmKCks
IHNlc3Npb25JbnN0YW5jZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBtX3Nlc3Npb25zLmFwcGVu
ZChzZXNzaW9uLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lvbik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNjE3MmEwMzhiYTNiZjU3Mjk4ZGQ4NTAzN2FkMjAxZTIyMjZhZWI4MC4uN2VkMGMwZDFmYjk4
MjU4ZTA1NGJkNmU0YzQ0Y2M4NGViMTZmYzdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMzMTEsNiArMTMzMTEsNyBAQAog
CQlDRDk0QTVENjFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNTWVzc2FnZVR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNTWVzc2FnZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q5NEE1REExRjcxQ0JCMDAwRjUyNUM1IC8qIENETUNsZWFyS2V5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUNsZWFyS2V5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNURCMUY3MUNCQjAwMEY1MjVDNSAvKiBDRE1DbGVh
cktleS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRE1DbGVhcktl
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOUQzNzVBMjE1MTYzRTQwMDQ5
NjU3QiAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNSW5zdGFuY2VT
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOUQ4MjczMUM3QUU1MzUw
MDZGRjA2NiAvKiBUZXh0dXJlQ2FjaGVDVi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFRleHR1cmVDYWNoZUNWLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDlEODI3NDFDN0FFNTM1MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dHVyZUNhY2hlQ1YuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RDgyNzcxQzdCOEVFMTAwNkZGMDY2IC8qIFZpZGVvVGV4dHVy
ZUNvcGllckNWLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVv
VGV4dHVyZUNvcGllckNWLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NzYw
LDYgKzI0NzYxLDcgQEAKIAkJCQlDRDk0QTVEMTFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNRmFjdG9y
eS5jcHAgKi8sCiAJCQkJQ0Q5NEE1RDIxRjcxQ0I2QjAwRjUyNUM1IC8qIENETUZhY3RvcnkuaCAq
LywKIAkJCQlDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUgLyogQ0RNSW5zdGFuY2UuaCAqLywKKwkJ
CQlDRDlEMzc1QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8sCiAJ
CQkJQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICovLAogCQkJCUNE
OTRBNUNEMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi8s
CiAJCQkJQ0Q5NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKaW5kZXggZTY2NWNjYzliNWMzY2I2NDA1YjQ5YjVjNzIzOTMzNTIyY2FlMzk4Mi4u
NGQwZDM1ZWFiMDE0YmIzMzA5ZjM2YzE4NWI5NWZiZjJlMDJhMmJlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC0z
NiwyMiArMzYsMTUgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
K2NsYXNzIENETUluc3RhbmNlU2Vzc2lvbjsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uOwogCi1jbGFzcyBDRE1JbnN0YW5jZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
Q0RNSW5zdGFuY2VDbGllbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICB1c2luZyBLZXlTdGF0dXMgPSBD
RE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFp
cjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSA9IDA7Ci19OwotCiBjbGFzcyBDRE1JbnN0
YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPENETUluc3RhbmNlPiB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+Q0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7CkBAIC02MSw3ICs1NCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgQ2xlYXJLZXksCiAgICAgICAgIEZhaXJQbGF5U3RyZWFtaW5nLAogICAgIH07Ci0K
ICAgICB2aXJ0dWFsIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25z
dCA9IDA7CiAKICAgICBlbnVtIFN1Y2Nlc3NWYWx1ZSB7CkBAIC02OSwxNSArNjEsMTMgQEAgcHVi
bGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIEtleVN0YXR1cyA9
IENETUtleVN0YXR1czsKLSAgICB1c2luZyBMaWNlbnNlVHlwZSA9IENETVNlc3Npb25UeXBlOwot
ICAgIHVzaW5nIE1lc3NhZ2VUeXBlID0gQ0RNTWVzc2FnZVR5cGU7Ci0KICAgICB2aXJ0dWFsIFN1
Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5j
dGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCBTdWNjZXNzVmFs
dWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCBTdWNj
ZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwog
ICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVlIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JikgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkg
PSAwOwogCiAgICAgZW51bSBjbGFzcyBIRENQU3RhdHVzIHsKICAgICAgICAgVW5rbm93biwKQEAg
LTg2LDM4ICs3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgT3V0cHV0RG93bnNjYWxlZCwKICAgICB9
OwogICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVlIHNldEhEQ1BTdGF0dXMoSERDUFN0YXR1cykgeyBy
ZXR1cm4gRmFpbGVkOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KENETUluc3RhbmNl
Q2xpZW50JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgeyB9Ci0KLSAgICB1
c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjaykgPSAwOwotCi0gICAg
dXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VDbGllbnQ6OktleVN0YXR1c1ZlY3Rv
cjsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPj47Ci0gICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYm
IGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwg
c3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
PjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjaykgPSAwOwotCi0gICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgewot
ICAgICAgICBOb25lLAotICAgICAgICBOb1Nlc3Npb25EYXRhLAotICAgICAgICBNaXNtYXRjaGVk
U2Vzc2lvblR5cGUsCi0gICAgICAgIFF1b3RhRXhjZWVkZWQsCi0gICAgICAgIE90aGVyLAotICAg
IH07Ci0KLSAgICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6
Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYsIHN0
ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiwgU3VjY2Vzc1ZhbHVlLCBTZXNzaW9uTG9hZEZhaWx1cmUp
PjsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjaykg
PSAwOwotCi0gICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+
OwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrKSA9IDA7Ci0KLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjaykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOwotCi0gICAgdmly
dHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAxNzQyMWU5
MjFmNmQ1MTIzODNkNGNmOGI3Y2QzZWYyNDJkNDk4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBA
IC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ0RNS2V5U3RhdHVzLmgiCisjaW5jbHVkZSAi
Q0RNTWVzc2FnZVR5cGUuaCIKKyNpbmNsdWRlICJDRE1TZXNzaW9uVHlwZS5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVy
OworCitjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHVzaW5nIEtl
eVN0YXR1cyA9IENETUtleVN0YXR1czsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0
b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0gMDsKK307CisKK2Ns
YXNzIENETUluc3RhbmNlU2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPENETUluc3RhbmNlU2Vz
c2lvbj4geworcHVibGljOgorICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbigpID0gZGVm
YXVsdDsKKworICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKKyAgICB1c2luZyBM
aWNlbnNlVHlwZSA9IENETVNlc3Npb25UeXBlOworICAgIHVzaW5nIE1lc3NhZ2VUeXBlID0gQ0RN
TWVzc2FnZVR5cGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50PiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQo
KSB7IH0KKworICAgIGVudW0gU3VjY2Vzc1ZhbHVlIHsKKyAgICAgICAgRmFpbGVkLAorICAgICAg
ICBTdWNjZWVkZWQsCisgICAgfTsKKworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVk
KT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrKSA9IDA7CisKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1J
bnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKKyAgICB1c2luZyBNZXNzYWdl
ID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdl
PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjaykgPSAwOworCisg
ICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgeworICAgICAgICBOb25lLAorICAgICAg
ICBOb1Nlc3Npb25EYXRhLAorICAgICAgICBNaXNtYXRjaGVkU2Vzc2lvblR5cGUsCisgICAgICAg
IFF1b3RhRXhjZWVkZWQsCisgICAgICAgIE90aGVyLAorICAgIH07CisKKyAgICB1c2luZyBMb2Fk
U2Vzc2lvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1Zl
Y3Rvcj4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4m
JiwgU3VjY2Vzc1ZhbHVlLCBTZXNzaW9uTG9hZEZhaWx1cmUpPjsKKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjaykgPSAwOworCisgICAgdXNpbmcgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OworICAgIHZpcnR1YWwgdm9pZCBj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNr
KSA9IDA7CisKKyAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4m
JiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjaykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0RNX0lOU1RBTkNFKFRvVmFsdWVUeXBl
TmFtZSwgSW1wbGVtZW50YXRpb25UeXBlTmFtZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpDRE1JbnN0YW5jZSYgaW5zdGFuY2UpIHsgcmV0dXJuIGluc3RhbmNlLmltcGxlbWVudGF0aW9u
VHlwZSgpID09IEltcGxlbWVudGF0aW9uVHlwZU5hbWU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBl
ZmFkNmMxNmMwMTZlNGExZDJlMTVmNTQ4YjQyNTE4ZmU4NGY3YTkzLi5hNDM2MjQxYWFlNGI1NWVm
OTRmYjNiOTAxODllNmU4OGNkNzcyZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBD
bGVhcktleSBDRU5DIFN5c3RlbUlELgpAQCAtNTAsNyArNDksNyBAQCBjb25zdCB1bnNpZ25lZCBj
bGVhcktleUNlbmNTeXN0ZW1JZFNpemUgPSBzaXplb2YoY2xlYXJLZXlDZW5jU3lzdGVtSWQpOwog
Y29uc3QgdW5zaWduZWQga2V5SWRTaXplID0gMTY7CiAKIGNsYXNzIENsZWFyS2V5U3RhdGUgewot
ICAgIHVzaW5nIEtleVN0b3JlID0gSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxDRE1JbnN0YW5jZUNs
ZWFyS2V5OjpLZXk+PjsKKyAgICB1c2luZyBLZXlTdG9yZSA9IEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OktleT4+OwogCiBwdWJsaWM6CiAgICAgc3Rh
dGljIENsZWFyS2V5U3RhdGUmIHNpbmdsZXRvbigpOwpAQCAtODgsNyArODcsNyBAQCBzdGF0aWMg
UmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxDRE1JbnN0YW5jZUNsZWFyS2V5OjpLZXk+PiBwYXJzZUxpY2Vuc2VGb3JtYXQoY29uc3Qg
SlNPTjo6T2JqZWN0JiByb290KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5OjpLZXk+PiBwYXJzZUxpY2Vuc2VGb3JtYXQoY29uc3QgSlNPTjo6
T2JqZWN0JiByb290KQogewogICAgIC8vIElmIHRoZSAna2V5cycga2V5IGlzIHByZXNlbnQgaW4g
dGhlIHJvb3Qgb2JqZWN0LCBwYXJzZSB0aGUgSlNPTiBmdXJ0aGVyCiAgICAgLy8gYWNjb3JkaW5n
IHRvIHRoZSBzcGVjaWZpZWQgJ2xpY2Vuc2UnIGZvcm1hdC4KQEAgLTEwMSw3ICsxMDAsNyBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNSW5zdGFuY2VDbGVhcktleTo6S2V5Pj4gcGFy
c2VMaWNlbnNlRm9ybWF0KGNvbnN0CiAgICAgaWYgKCFpdC0+dmFsdWUtPmFzQXJyYXkoa2V5c0Fy
cmF5KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxDRE1JbnN0
YW5jZUNsZWFyS2V5OjpLZXk+IGRlY29kZWRLZXlzOworICAgIFZlY3RvcjxDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6S2V5PiBkZWNvZGVkS2V5czsKICAgICBib29sIHZhbGlkRm9ybWF0ID0g
c3RkOjphbGxfb2Yoa2V5c0FycmF5LT5iZWdpbigpLCBrZXlzQXJyYXktPmVuZCgpLAogICAgICAg
ICBbJmRlY29kZWRLZXlzXSAoY29uc3QgYXV0byYgdmFsdWUpIHsKICAgICAgICAgICAgIFJlZlB0
cjxKU09OOjpPYmplY3Q+IGtleU9iamVjdDsKQEAgLTEyMCw3ICsxMTksNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8Q0RNSW5zdGFuY2VDbGVhcktleTo6S2V5Pj4gcGFyc2VMaWNlbnNl
Rm9ybWF0KGNvbnN0CiAgICAgICAgICAgICBpZiAoIVdURjo6YmFzZTY0VVJMRGVjb2RlKGtleUlE
LCB7IGtleUlERGF0YSB9KSB8fCAhV1RGOjpiYXNlNjRVUkxEZWNvZGUoa2V5VmFsdWUsIHsga2V5
VmFsdWVEYXRhIH0pKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAg
ICAgZGVjb2RlZEtleXMuYXBwZW5kKHsgQ0RNSW5zdGFuY2VDbGVhcktleTo6S2V5U3RhdHVzOjpV
c2FibGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5SUREYXRhKSksIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5VmFsdWVEYXRhKSkgfSk7CisgICAgICAgICAgICBkZWNv
ZGVkS2V5cy5hcHBlbmQoeyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6S2V5U3RhdHVzOjpV
c2FibGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5SUREYXRhKSksIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5VmFsdWVEYXRhKSkgfSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgaWYgKCF2YWxpZEZvcm1hdCkKQEAgLTQ5Myw3ICs0
OTIsMTkgQEAgQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUNsZWFyS2V5Ojpz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gc3RvcmFnZURpcmVj
dG9yeS5pc0VtcHR5KCkgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VDbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2sgY2FsbGJhY2spCitjb25zdCBTdHJpbmcmIENETUluc3RhbmNlQ2xlYXJLZXk6OmtleVN5
c3RlbSgpIGNvbnN0Cit7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
c19rZXlTeXN0ZW0gPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgib3JnLnczLmNsZWFya2V5Iik7
CisKKyAgICByZXR1cm4gc19rZXlTeXN0ZW07Cit9CisKK1JlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IENETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoKSk7Cit9CisKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nl
c3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC01MTMsMTcgKzUy
NCwxNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYQogICAgICAgICB9KTsKIH0KIAotY29uc3Qg
VmVjdG9yPENETUluc3RhbmNlQ2xlYXJLZXk6OktleT4gQ0RNSW5zdGFuY2VDbGVhcktleTo6a2V5
cygpIGNvbnN0Citjb25zdCBWZWN0b3I8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OktleT4g
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OmtleXMoKSBjb25zdAogewogICAgIC8vIFJldHVy
biB0aGUga2V5cyBvZiBhbGwgc2Vzc2lvbnMuCi0gICAgVmVjdG9yPENETUluc3RhbmNlQ2xlYXJL
ZXk6OktleT4gYWxsS2V5cyB7IH07CisgICAgVmVjdG9yPENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpLZXk+IGFsbEtleXMgeyB9OwogICAgIGZvciAoYXV0byYga2V5IDogQ2xlYXJLZXlTdGF0
ZTo6c2luZ2xldG9uKCkua2V5cygpLnZhbHVlcygpKQogICAgICAgICBhbGxLZXlzLmFwcGVuZFZl
Y3RvcihrZXkpOwogCiAgICAgcmV0dXJuIGFsbEtleXM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VD
bGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayBj
YWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgLy8gVXNl
IGEgaGVscGVyIGZ1bmN0b3IgdGhhdCBzY2hlZHVsZXMgdGhlIGNhbGxiYWNrIGRpc3BhdGNoLCBh
dm9pZGluZwogICAgIC8vIGR1cGxpY2F0ZWQgY2FsbE9uTWFpblRocmVhZCgpIGNhbGxzLgpAQCAt
NjI0LDcgKzYzNSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvCiAgICAgZGlzcGF0Y2hDYWxs
YmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrIGNhbGxi
YWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6bG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIC8vIFVzZSBhIGhlbHBlciBmdW5jdG9yIHRoYXQg
c2NoZWR1bGVzIHRoZSBjYWxsYmFjayBkaXNwYXRjaCwgYXZvaWRpbmcgZHVwbGljYXRlZCBjYWxs
T25NYWluVGhyZWFkKCkgY2FsbHMuCiAgICAgYXV0byBkaXNwYXRjaENhbGxiYWNrID0KQEAgLTY1
Nyw3ICs2NjgsNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29ucwogICAgIGRpc3BhdGNoQ2FsbGJh
Y2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVy
ZTo6Tm9uZSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6Y2xvc2VTZXNzaW9uKGNv
bnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIGNhbGxPbk1haW5UaHJlYWQoCiAgICAgICAg
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gewpAQCAtNjY4LDcgKzY3OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6Y2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrIGNhbGxiCiAgICAg
ICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFD
YWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICAvLyBVc2UgYSBoZWxwZXIgZnVu
Y3RvciB0aGF0IHNjaGVkdWxlcyB0aGUgY2FsbGJhY2sgZGlzcGF0Y2gsIGF2b2lkaW5nIGR1cGxp
Y2F0ZWQgY2FsbE9uTWFpblRocmVhZCgpIGNhbGxzLgogICAgIGF1dG8gZGlzcGF0Y2hDYWxsYmFj
ayA9CkBAIC03MjYsMTcgKzczNywxMCBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZQogICAgIGRp
c3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8U2hhcmVkQnVmZmVy
PigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZUNsZWFyS2V5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKK3ZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBT
dHJpbmcmKQogewogfQogCi1jb25zdCBTdHJpbmcmIENETUluc3RhbmNlQ2xlYXJLZXk6OmtleVN5
c3RlbSgpIGNvbnN0Ci17Ci0gICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
c19rZXlTeXN0ZW0gPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgib3JnLnczLmNsZWFya2V5Iik7
Ci0KLSAgICByZXR1cm4gc19rZXlTeXN0ZW07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuaAppbmRleCBjZDRjODgwMWMxOWFhYjBlNjEyMzUyNDIyMTEwYWY0NWVhODExNmY2Li44NDM2
ODZmYzgwNTU5NzIxZjE1NWY5MDgyNjAxYjdlNDYzYTgyYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkNETUZhY3RvcnkuaCIKICNp
bmNsdWRlICJDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIkNETVByaXZhdGUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDQsOCArNDUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIH5DRE1GYWN0b3J5Q2xlYXJLZXkoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2
YXRlPiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0
c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPENETUZhY3RvcnlDbGVhcktleT47CkBAIC01NywyMSAr
NTgsMjEgQEAgcHVibGljOgogICAgIENETVByaXZhdGVDbGVhcktleSgpOwogICAgIHZpcnR1YWwg
fkNETVByaXZhdGVDbGVhcktleSgpOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShj
b25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzQ29u
ZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlv
bihDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBj
b25zdCBvdmVycmlkZTsKLSAgICBDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
UmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJl
c3RyaWN0aW9ucyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIENETVJlcXVpcmVtZW50IHBlcnNpc3Rl
bnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGRpc3RpbmN0aXZl
SWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxDRE1JbnN0YW5j
ZT4gY3JlYXRlSW5zdGFuY2UoKSBvdmVycmlkZTsKLSAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXpl
KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0
cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIENETVJlcXVp
cmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7Cisg
ICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENs
ZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Cisg
ICAgUmVmUHRyPENETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOworICAgIHZvaWQg
bG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlm
aWNhdGVzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOwogfTsKIAogY2xhc3MgQ0RNSW5zdGFuY2VDbGVhcktleSBmaW5hbCA6IHB1Ymxp
YyBDRE1JbnN0YW5jZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlQ2xlYXJLZXk+
IHsKQEAgLTgxLDIwICs4MiwyMyBAQCBwdWJsaWM6CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUg
aW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25U
eXBlOjpDbGVhcktleTsgfQogCi0gICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
U3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIG92ZXJy
aWRlOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIG92
ZXJyaWRlOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmKSBvdmVycmlkZTsKLSAgICBTdWNjZXNzVmFsdWUgc2V0U3RvcmFnZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2spIG92ZXJyaWRlOwotICAgIHZvaWQgdXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrKSBvdmVycmlkZTsKLSAgICB2b2lkIGxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNh
bGxiYWNrKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBD
bG9zZVNlc3Npb25DYWxsYmFjaykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjaykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7Ci0KKyAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFs
dWUgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3Vj
Y2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3Vj
Y2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOworfTsKKworY2xh
c3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VT
ZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk+
IHsKK3B1YmxpYzoKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjaykgZmluYWw7CisgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjaykgZmluYWw7CisgICAgdm9p
ZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2spIGZpbmFs
OworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2spIGZpbmFsOworICAgIHZvaWQgc3RvcmVSZWNvcmRP
ZktleVVzYWdlKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCiAgICAgc3RydWN0IEtleSB7CiAgICAg
ICAgIEtleVN0YXR1cyBzdGF0dXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCA4M2I5ZDUw
MjNjYzE4YTllNDI5M2ZmNjI1YWYxNTMzY2EyZmEwMTBmLi5kNWQ2ODIxZmEzMGE1ZDQ0YmUyNzc1
NWQ1NmI4OTk1OGM3YTQ5Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTI4LDkgKzI4
LDExIEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlT
RVNTSU9OKQogCiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJDRE1JbnN0YW5j
ZVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyQ29udGFpbmVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgQVZDb250ZW50S2V5UmVxdWVzdDsKQEAgLTQy
LDYgKzQ0LDggQEAgT0JKQ19DTEFTUyBXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM7CisKIGNsYXNzIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDIGZpbmFsIDogcHVibGljIENETUluc3RhbmNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IHsKIHB1YmxpYzoKICAgICBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpOwpAQCAtNTgsMTUgKzYyLDkgQEAg
cHVibGljOgogICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wp
IGZpbmFsOwogICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICBTdWNjZXNzVmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKCkgZmluYWw7CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjaykgZmluYWw7
Ci0gICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJh
Y2spIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2spIGZpbmFsOwotICAgIHZvaWQgc3Rv
cmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgc2V0Q2xp
ZW50KENETUluc3RhbmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCBjbGVhckNsaWVudCgpIGZp
bmFsOworICAgIHZvaWQgcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0Rm9yU2Vzc2lvbihDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMmLCBSZXRhaW5QdHI8TlNTdHJpbmc+
JiYgaWRlbnRpZmllciwgUmV0YWluUHRyPE5TRGF0YT4mJiBpbml0RGF0YSk7CiAKICAgICBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogCkBAIC03OSwyMSArNzcsNjIgQEAg
cHVibGljOgogICAgIHZvaWQgc2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YSAqKTsKICAg
ICB2b2lkIG91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25D
aGFuZ2VkKGJvb2wpOwogCisgICAgTlNVUkwgKnN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9u
ICpjb250ZW50S2V5U2Vzc2lvbigpIHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorICAgIGJv
b2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0
YXRlQWxsb3dlZDsgfQorICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25z
dCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKExpY2Vuc2VUeXBlKSBjb25zdDsKKyAgICB2b2lk
IHByb2Nlc3NOZXh0Q29udGVudEtleVJlcXVlc3QoKTsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzKCk7CisgICAgc3RydWN0IENvbnRlbnRLZXlSZXF1ZXN0IHsKKyAgICAg
ICAgV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IHNl
c3Npb25JbnN0YW5jZTsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBpZGVudGlmaWVyOwor
ICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0RGF0YTsKKyAgICB9OworICAgIFZlY3RvcjxD
b250ZW50S2V5UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdHM7CisKKyAgICBIYXNoTWFwPFJldGFp
blB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiwgV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3JlcXVlc3RNYXA7CiAKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVB
bGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlRGlyZWN0b3J5
OwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgUmV0
YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1fcmVxdWVzdDsKICAgICBSZXRhaW5QdHI8V2Vi
Q29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Cit9OworCitjbGFz
cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMgZmluYWwgOiBwdWJs
aWMgQ0RNSW5zdGFuY2VTZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiB7CitwdWJsaWM6CisgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKFJlZjxDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQz4mJik7CisKKyAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KKyAgICB2
b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjaykgZmluYWw7CisgICAg
dm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgTG9hZFNlc3Npb25DYWxsYmFjaykgZmluYWw7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2spIGZpbmFsOworICAgIHZvaWQgcmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRh
Q2FsbGJhY2spIGZpbmFsOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0
cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50PiYmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWw7CisKKyAg
ICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKik7CisgICAgdm9p
ZCBkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKik7CisgICAg
dm9pZCBkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKik7
CisgICAgdm9pZCBkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICos
IE5TRXJyb3IgKik7CisgICAgdm9pZCByZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICopOworICAgIGJvb2wgc2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVudEtl
eVJlcXVlc3QgKiwgTlNTdHJpbmcgKik7CisgICAgdm9pZCBzZXNzaW9uSWRlbnRpZmllckNoYW5n
ZWQoTlNEYXRhICopOworICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4
dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCk7CisKKyAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+IGtleUlEcygpOworCitwcml2YXRlOgorICAgIGJvb2wgaXNMaWNlbnNlVHlwZVN1cHBv
cnRlZChMaWNlbnNlVHlwZSkgY29uc3Q7CisKKyAgICBSZWY8Q0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM+IG1faW5zdGFuY2U7CisgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJl
cXVlc3Q+IG1fcmVxdWVzdDsKICAgICBWZWN0b3I8UmV0YWluUHRyPE5TRGF0YT4+IG1fZXhwaXJl
ZFNlc3Npb25zOwotICAgIENETUluc3RhbmNlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWFrUHRy
PENETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fc2Vzc2lv
bklkOwogCiAgICAgTGljZW5zZUNhbGxiYWNrIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjazsKQEAg
LTEwMSw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIENsb3NlU2Vzc2lvbkNhbGxiYWNrIG1fY2xv
c2VTZXNzaW9uQ2FsbGJhY2s7CiAgICAgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayBtX3JlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2s7CiB9OworCiB9CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
Q0RNX0lOU1RBTkNFKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
LCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6SW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVh
bWluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZGYzYmMwOTgwMmFjNmJlMzVjMDFk
NjIzOWViZjg1ZDBmNWE0MDlhYS4uMWFkZGNiMDUyZGIxMmM0MjhkZmEzMjU4ODVlOGMwNzgxY2E0
OTkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTIyMSwxOSArMjIxLDEyMiBAQCBD
RE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXRTdG9yYWdlRGlyZWN0bwogICAgIHJldHVybiBTdWNjZWVkZWQ7CiB9CiAKLWJvb2wg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmlzTGljZW5zZVR5cGVTdXBwb3J0
ZWQoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUpIGNvbnN0CitSZWZQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uPiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbigp
CiB7Ci0gICAgc3dpdGNoIChsaWNlbnNlVHlwZSkgewotICAgIGNhc2UgQ0RNU2Vzc2lvblR5cGU6
OlBlcnNpc3RlbnRMaWNlbnNlOgotICAgICAgICByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxv
d2VkICYmIHN1cHBvcnRzUGVyc2lzdGVudEtleXMoKTsKLSAgICBjYXNlIENETVNlc3Npb25UeXBl
OjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQ6Ci0gICAgICAgIHJldHVybiBtX3BlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQgJiYgc3VwcG9ydHNQZXJzaXN0YWJsZVN0YXRlKCk7Ci0gICAgY2FzZSBDRE1TZXNz
aW9uVHlwZTo6VGVtcG9yYXJ5OgotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygqdGhp
cykpOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpwcm9j
ZXNzQ29udGVudEtleVJlcXVlc3RGb3JTZXNzaW9uKENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQyYgc2Vzc2lvbiwgUmV0YWluUHRyPE5TU3RyaW5nPiYmIGlkZW50aWZp
ZXIsIFJldGFpblB0cjxOU0RhdGE+JiYgaW5pdERhdGEpCit7CisgICAgbV9jdXJyZW50UmVxdWVz
dHMuYXBwZW5kKHsgbWFrZVdlYWtQdHIoc2Vzc2lvbiksIFdURk1vdmUoaWRlbnRpZmllciksIFdU
Rk1vdmUoaW5pdERhdGEpIH0pOworICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0cy5zaXplKCkgPT0g
MSkKKyAgICAgICAgcHJvY2Vzc05leHRDb250ZW50S2V5UmVxdWVzdCgpOworfQorCit2b2lkIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpwcm9jZXNzTmV4dENvbnRlbnRLZXlS
ZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvJiBuZXh0UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3RzLmZp
cnN0KCk7CisgICAgW21fc2Vzc2lvbiBwcm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRp
ZmllcjpuZXh0UmVxdWVzdC5pZGVudGlmaWVyLmdldCgpIGluaXRpYWxpemF0aW9uRGF0YTpuZXh0
UmVxdWVzdC5pbml0RGF0YS5nZXQoKSBvcHRpb25zOm5pbF07Cit9CisKK2NvbnN0IFN0cmluZyYg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN5c3RlbSgpIGNvbnN0Cit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc19rZXlTeXN0ZW0geyAiY29tLmFw
cGxlLmZwcyJfcyB9OworICAgIHJldHVybiBzX2tleVN5c3RlbTsKK30KKwordm9pZCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50
S2V5UmVxdWVzdCAqcmVxdWVzdCkKK3sKKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdHMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0ID0gV1RGTW92
ZShtX2N1cnJlbnRSZXF1ZXN0cy5maXJzdCgpKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0cy5yZW1v
dmUoMCk7CisKKyAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0LCBjdXJyZW50UmVxdWVz
dC5zZXNzaW9uSW5zdGFuY2UpOworICAgIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZS0+
ZGlkUHJvdmlkZVJlcXVlc3QocmVxdWVzdCk7CisgICAgcHJvY2Vzc05leHRDb250ZW50S2V5UmVx
dWVzdCgpOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCit7
CisgICAgaWYgKG1fY3VycmVudFJlcXVlc3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBjdXJyZW50UmVxdWVzdCA9IFdURk1vdmUobV9jdXJyZW50UmVxdWVzdHMuZmly
c3QoKSk7CisgICAgbV9jdXJyZW50UmVxdWVzdHMucmVtb3ZlKDApOworCisgICAgaWYgKCFjdXJy
ZW50UmVxdWVzdC5zZXNzaW9uSW5zdGFuY2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVx
dWVzdE1hcC5zZXQocmVxdWVzdCwgY3VycmVudFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNlKTsKKyAg
ICBjdXJyZW50UmVxdWVzdC5zZXNzaW9uSW5zdGFuY2UtPmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVl
c3QocmVxdWVzdCk7CisgICAgcHJvY2Vzc05leHRDb250ZW50S2V5UmVxdWVzdCgpOworfQorCit2
b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUGVyc2lz
dGFibGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCit7CisgICAgaWYgKG1f
Y3VycmVudFJlcXVlc3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBj
dXJyZW50UmVxdWVzdCA9IFdURk1vdmUobV9jdXJyZW50UmVxdWVzdHMuZmlyc3QoKSk7CisgICAg
bV9jdXJyZW50UmVxdWVzdHMucmVtb3ZlKDApOworCisgICAgaWYgKCFjdXJyZW50UmVxdWVzdC5z
ZXNzaW9uSW5zdGFuY2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVxdWVzdE1hcC5zZXQo
cmVxdWVzdCwgY3VycmVudFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNlKTsKKyAgICBjdXJyZW50UmVx
dWVzdC5zZXNzaW9uSW5zdGFuY2UtPmRpZFByb3ZpZGVQZXJzaXN0YWJsZVJlcXVlc3QocmVxdWVz
dCk7CisgICAgcHJvY2Vzc05leHRDb250ZW50S2V5UmVxdWVzdCgpOworfQorCit2b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChB
VkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBOU0Vycm9yICplcnJvcikKK3sKKyAgICBpZiAo
YXV0byBzZXNzaW9uSW50ZXJmYWNlID0gbV9yZXF1ZXN0TWFwLmdldChyZXF1ZXN0KSkKKyAgICAg
ICAgc2Vzc2lvbkludGVyZmFjZS0+ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QocmVxdWVzdCwgZXJy
b3IpOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQoreworICAgIGlmIChh
dXRvIHNlc3Npb25JbnRlcmZhY2UgPSBtX3JlcXVlc3RNYXAuZ2V0KHJlcXVlc3QpKQorICAgICAg
ICBzZXNzaW9uSW50ZXJmYWNlLT5yZXF1ZXN0RGlkU3VjY2VlZChyZXF1ZXN0KTsKK30KKworYm9v
bCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0
Rm9yUmVhc29uKEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QsIE5TU3RyaW5nICpyZWFzb24p
Cit7CisgICAgaWYgKGF1dG8gc2Vzc2lvbkludGVyZmFjZSA9IG1fcmVxdWVzdE1hcC5nZXQocmVx
dWVzdCkpCisgICAgICAgIHJldHVybiBzZXNzaW9uSW50ZXJmYWNlLT5zaG91bGRSZXRyeVJlcXVl
c3RGb3JSZWFzb24ocmVxdWVzdCwgcmVhc29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVy
Q2hhbmdlZChOU0RhdGEgKnNlc3Npb25JZGVudGlmaWVyKQoreworICAgIGZvciAoYXV0byBzZXNz
aW9uSW50ZXJmYWNlIDogbV9yZXF1ZXN0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChzZXNz
aW9uSW50ZXJmYWNlKQorICAgICAgICAgICAgc2Vzc2lvbkludGVyZmFjZS0+c2Vzc2lvbklkZW50
aWZpZXJDaGFuZ2VkKHNlc3Npb25JZGVudGlmaWVyKTsKICAgICB9CiB9CiAKLVZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlE
cygpCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNj
dXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sIG9ic2N1
cmVkKQoreworICAgIGZvciAoYXV0byBzZXNzaW9uSW50ZXJmYWNlIDogbV9yZXF1ZXN0TWFwLnZh
bHVlcygpKSB7CisgICAgICAgIGlmIChzZXNzaW9uSW50ZXJmYWNlKQorICAgICAgICAgICAgc2Vz
c2lvbkludGVyZmFjZS0+b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJv
dGVjdGlvbkNoYW5nZWQob2JzY3VyZWQpOworICAgIH0KK30KKworQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmIGlu
c3RhbmNlKQorICAgIDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKK3sKK30KKworVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmtleUlEcygpCiB7CiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTcx
NDEpOiB1c2UgdGhlIGZ1dHVyZSBBVkNvbnRlbnRLZXlSZXF1ZXN0IGtleUlEIHByb3BlcnR5LCBy
YXRoZXIgdGhhbiBwYXJzaW5nIGl0IG91dCBvZiB0aGUgaW5pdAogICAgIC8vIGRhdGEsIHRvIGdl
dCB0aGUga2V5SUQuCkBAIC0yNTAsMTQgKzM1MywxNCBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQogICAgIHJl
dHVybiB7IH07CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIGlmICghaXNMaWNlbnNlVHlwZVN1cHBv
cnRlZChsaWNlbnNlVHlwZSkpIHsKICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoIW1fc2VydmVyQ2VydGlmaWNhdGUpIHsKKyAgICBpZiAoIW1faW5zdGFu
Y2UtPnNlcnZlckNlcnRpZmljYXRlKCkpIHsKICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0yNzUsNyArMzc4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUKICAg
ICB9CiAKICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsK
LSAgICBbbV9zZXNzaW9uIHByb2Nlc3NDb250ZW50S2V5UmVxdWVzdFdpdGhJZGVudGlmaWVyOmlk
ZW50aWZpZXIuZ2V0KCkgaW5pdGlhbGl6YXRpb25EYXRhOmluaXRpYWxpemF0aW9uRGF0YS5nZXQo
KSBvcHRpb25zOm5pbF07CisgICAgbV9pbnN0YW5jZS0+cHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0
Rm9yU2Vzc2lvbigqdGhpcywgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShpbml0aWFsaXph
dGlvbkRhdGEpKTsKIH0KIAogc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0yOTYsMTQgKzM5OSwyMyBAQCBzdGF0aWMg
Ym9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNw
b25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlRGF0YSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIGlmICghbV9leHBpcmVkU2Vzc2lv
bnMuaXNFbXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VEYXRhLCAiYWNrbm93bGVkZ2VkIl9zKSkg
ewogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOwogICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBtX2V4cGlyZWRT
ZXNzaW9ucykKLSAgICAgICAgICAgIFtleHBpcmVkU2Vzc2lvbnMgYWRkT2JqZWN0OnNlc3Npb24u
Z2V0KCldOyAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IG1fc2Vy
dmVyQ2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwotICAgICAgICBbZ2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVk
U2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9y
YWdlRGlyZWN0b3J5QXRVUkw6bV9zdG9yYWdlRGlyZWN0b3J5LmdldCgpXTsKKyAgICAgICAgICAg
IFtleHBpcmVkU2Vzc2lvbnMgYWRkT2JqZWN0OnNlc3Npb24uZ2V0KCldOworCisgICAgICAgIGF1
dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKKyAgICAg
ICAgYXV0byogc3RvcmFnZURpcmVjdG9yeSA9IG1faW5zdGFuY2UtPnN0b3JhZ2VEaXJlY3Rvcnko
KTsKKworICAgICAgICBpZiAoIWNlcnRpZmljYXRlIHx8ICFzdG9yYWdlRGlyZWN0b3J5KSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1v
dmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRo
QXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpz
dG9yYWdlRGlyZWN0b3J5XTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zMzMsMjIgKzQ0NSwyNCBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeQogICAgIG1fdXBkYXRl
TGljZW5zZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExv
YWRTZXNzaW9uQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Np
b25DYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBVTlVTRURfUEFSQU0ob3JpZ2luKTsKICAgICBp
ZiAobGljZW5zZVR5cGUgPT0gTGljZW5zZVR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZCkgewot
ICAgICAgICBpZiAoIW1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB8fCAhbV9zdG9yYWdlRGlyZWN0
b3J5KSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VEaXJlY3RvcnkgPSBtX2luc3RhbmNlLT5zdG9y
YWdlRGlyZWN0b3J5KCk7CisgICAgICAgIGlmICghbV9pbnN0YW5jZS0+cGVyc2lzdGVudFN0YXRl
QWxsb3dlZCgpIHx8IHN0b3JhZ2VEaXJlY3RvcnkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxv
YWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIGlmICghbV9zZXJ2ZXJDZXJ0aWZpY2F0ZSkgewotICAgICAgICAg
ICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFp
bGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyKTsKKyAgICAgICAgYXV0byogY2VydGlmaWNh
dGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOworICAgICAgICBpZiAoIWNlcnRp
ZmljYXRlKSB7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0
YSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsK
LSAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbZ2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVu
dGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOm1fc3RvcmFn
ZURpcmVjdG9yeS5nZXQoKV0pIHsKKyAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9u
RGF0YSBpbiBbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURp
cmVjdG9yeUF0VVJMOnN0b3JhZ2VEaXJlY3RvcnldKSB7CiAgICAgICAgICAgICBOU0RpY3Rpb25h
cnkgKmV4cGlyZWRTZXNzaW9uID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBwcm9wZXJ0
eUxpc3RXaXRoRGF0YTpleHBpcmVkU2Vzc2lvbkRhdGEgb3B0aW9uczprQ0ZQcm9wZXJ0eUxpc3RJ
bW11dGFibGUgZm9ybWF0Om51bGxwdHIgZXJyb3I6bnVsbHB0cl07CiAgICAgICAgICAgICBOU1N0
cmluZyAqcGxheWJhY2tTZXNzaW9uSWRWYWx1ZSA9IChOU1N0cmluZyAqKVtleHBpcmVkU2Vzc2lv
biBvYmplY3RGb3JLZXk6UGxheWJhY2tTZXNzaW9uSWRLZXldOwogICAgICAgICAgICAgaWYgKCFb
cGxheWJhY2tTZXNzaW9uSWRWYWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQpA
QCAtMzcwLDcgKzQ4NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjCiAgICAgfQogfQogCi12
b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0
cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIGlmIChtX3JlcXVl
c3RMaWNlbnNlQ2FsbGJhY2spIHsKICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKQEAgLTM4
NCwyNSArNDk4LDI4IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3NpCiAgICAgICAgIG1fcmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayh7IH0sIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAg
bV9yZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gbnVsbHB0cjsKICAgICB9Ci0gICAgbV9zZXNz
aW9uID0gbnVsbHB0cjsKICAgICBtX3JlcXVlc3QgPSBudWxscHRyOwogICAgIGNhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgW21fc2Vzc2lvbiBleHBpcmVdOworICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBleHBpcmUgaW5kaXZpZHVhbCBBVkNvbnRlbnRL
ZXlSZXF1ZXN0cyByYXRoZXIgdGhhbiB0aGUgZW50aXJlIEFWQ29udGVudEtleVNlc3Npb24uCisg
ICAgW21faW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgZXhwaXJlXTsKIAogICAgIGlmIChs
aWNlbnNlVHlwZSA9PSBMaWNlbnNlVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVjb3JkKSB7Ci0gICAg
ICAgIGlmICghbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHx8ICFtX3N0b3JhZ2VEaXJlY3Rvcnkg
fHwgIW1fc2VydmVyQ2VydGlmaWNhdGUpIHsKKyAgICAgICAgYXV0byogc3RvcmFnZURpcmVjdG9y
eSA9IG1faW5zdGFuY2UtPnN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICAgICAgYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOworCisgICAgICAgIGlmICgh
bV9pbnN0YW5jZS0+cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFzdG9yYWdlRGlyZWN0b3J5
IHx8ICFjZXJ0aWZpY2F0ZSkgewogICAgICAgICAgICAgY2FsbGJhY2soeyB9LCBzdGQ6Om51bGxv
cHQsIEZhaWxlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwotICAgICAg
ICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtnZXRBVkNvbnRlbnRLZXlTZXNz
aW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6
YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6bV9zdG9yYWdlRGlyZWN0
b3J5LmdldCgpXSkgeworICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGlu
IFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBv
cnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZURpcmVjdG9yeV0pIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhw
aXJlZFNlc3Npb24gPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdp
dGhEYXRhOmV4cGlyZWRTZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJs
ZSBmb3JtYXQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXTsKICAgICAgICAgICAgIE5TU3RyaW5nICpw
bGF5YmFja1Nlc3Npb25JZFZhbHVlID0gKE5TU3RyaW5nICopW2V4cGlyZWRTZXNzaW9uIG9iamVj
dEZvcktleTpQbGF5YmFja1Nlc3Npb25JZEtleV07CiAgICAgICAgICAgICBpZiAoIVtwbGF5YmFj
a1Nlc3Npb25JZFZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCkBAIC00MjIs
MzQgKzUzOSwzMCBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3NpbwogICAgIH0KIH0KIAotdm9pZCBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3RvcmVSZWNvcmRPZktleVVzYWdl
KGNvbnN0IFN0cmluZyYpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8g
bm8tb3A7IGtleSB1c2FnZSBkYXRhIGlzIHN0b3JlZCBhdXRvbWF0aWNhbGx5LgogfQogCi12b2lk
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRDbGllbnQoQ0RNSW5zdGFu
Y2VDbGllbnQmIGNsaWVudCkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYg
Y2xpZW50KQogewotICAgIG1fY2xpZW50ID0gJmNsaWVudDsKKyAgICBtX2NsaWVudCA9IFdURk1v
dmUoY2xpZW50KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6Y2xlYXJDbGllbnQoKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmNsZWFyQ2xpZW50KCkKIHsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiB9CiAK
LWNvbnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN5
c3RlbSgpIGNvbnN0Ci17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc19rZXlT
eXN0ZW0geyAiY29tLmFwcGxlLmZwcyJfcyB9OwotICAgIHJldHVybiBzX2tleVN5c3RlbTsKLX0K
LQotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRL
ZXlSZXF1ZXN0ICpyZXF1ZXN0KQogewogICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgaWYg
KCFtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFp
blB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBtX3NlcnZlckNlcnRpZmljYXRlID8gbV9zZXJ2
ZXJDZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCkgOiBudWxscHRyOworICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXI7CisgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0
YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKICAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtl
eUlEcyA9IHRoaXMtPmtleUlEcygpOwogCiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAg
LTQ3MywxNyArNTg2LDE3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QKICAgICB9XTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3
aW5nUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQordm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVl
c3QoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKIHsKICAgICBVTlVTRURfUEFSQU0ocmVx
dWVzdCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVQZXJzaXN0YWJsZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkK
K3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUGVyc2lzdGFibGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICpyZXF1ZXN0LCBOU0Vycm9yICplcnJvcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlbnRL
ZXlSZXF1ZXN0ICpyZXF1ZXN0LCBOU0Vycm9yICplcnJvcikKIHsKICAgICBVTlVTRURfUEFSQU0o
cmVxdWVzdCk7CiAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKQEAgLTQ5MSw3ICs2MDQsNyBAQCB2
b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRl
UmVxdWVzdChBVkNvbnRlbnRLZXlSZQogICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdERp
ZFN1Y2NlZWQoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRl
bnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogewogICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKICAg
ICBpZiAoIW1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKQpAQCAtNTA0LDcgKzYxNyw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKEFW
Q29udGVudEtleVJlcXVlc3QKICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3Rk
OjptYWtlX29wdGlvbmFsKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiB9CiAKLWJvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihBVkNvbnRlbnRLZXlSZXF1
ZXN0ICpyZXF1ZXN0LCBOU1N0cmluZyAqcmVhc29uKQorYm9vbCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihBVkNv
bnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBOU1N0cmluZyAqcmVhc29uKQogewogICAgIFVOVVNF
RF9QQVJBTShyZXF1ZXN0KTsKICAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKQEAgLTUxMiw3ICs2
MjUsNyBAQCBib29sIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzaG91bGRS
ZXRyeVJlcXVlc3RGb3JSZWFzb24oQVZDb250ZW50SwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZp
ZXJDaGFuZ2VkKE5TRGF0YSAqc2Vzc2lvbklkZW50aWZpZXIpCit2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5T
RGF0YSAqc2Vzc2lvbklkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFzZXNzaW9uSWRlbnRpZmllcikg
ewogICAgICAgICBtX3Nlc3Npb25JZCA9IGVtcHR5U3RyaW5nKCk7CkBAIC01MjMsNyArNjM2LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50
aWZpZXJDaGFuZ2VkKE5TRGF0YSAqc2Vzc2kKICAgICBtX3Nlc3Npb25JZCA9IHNlc3Npb25JZGVu
dGlmaWVyU3RyaW5nLmdldCgpOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0
aW9uQ2hhbmdlZChib29sIG9ic2N1cmVkKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5h
bFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wgb2JzY3VyZWQpCiB7CiAgICAgaWYgKCFtX2NsaWVudCB8
fCAhbV9yZXF1ZXN0KQogICAgICAgICByZXR1cm47CkBAIC01NTYsNiArNjY5LDE4IEBAIHZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9J
bnN1ZmZpY2llbnRFeHRlcm5hCiAgICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKFdURk1v
dmUoa2V5U3RhdHVzZXMpKTsKIH0KIAorYm9vbCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUgbGljZW5z
ZVR5cGUpIGNvbnN0Cit7CisgICAgc3dpdGNoIChsaWNlbnNlVHlwZSkgeworICAgIGNhc2UgQ0RN
U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlOgorICAgICAgICByZXR1cm4gbV9pbnN0YW5j
ZS0+cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpICYmIG1faW5zdGFuY2UtPnN1cHBvcnRzUGVyc2lz
dGVudEtleXMoKTsKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQ6CisgICAgICAgIHJldHVybiBtX2luc3RhbmNlLT5wZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkg
JiYgbV9pbnN0YW5jZS0+c3VwcG9ydHNQZXJzaXN0YWJsZVN0YXRlKCk7CisgICAgY2FzZSBDRE1T
ZXNzaW9uVHlwZTo6VGVtcG9yYXJ5OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5U
S0VZU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5k
ZXggMTJiYzdmNjAyZjFlM2U1Mzc3MTg2YzNlYzM1YTliZjQyYzk0MGQ4ZS4uYzIwMjY0NjNjMTRm
ZDY0YzI1ZDM3MzhiMGI1NTIxMThjYzJlNzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTI2OSw5ICsyNjksMjYgQEAgQ0RNSW5zdGFuY2U6OlN1Y2Nl
c3NWYWx1ZSBNb2NrQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JikKICAgICByZXR1cm4gU3VjY2VlZGVkOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2sgY2FsbGJhY2spCitjb25zdCBTdHJpbmcmIE1vY2tDRE1JbnN0YW5jZTo6a2V5U3lzdGVtKCkg
Y29uc3QKIHsKLSAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1fY2RtID8gbV9jZG0tPmZh
Y3RvcnkoKSA6IG51bGxwdHI7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc19rZXlTeXN0ZW0gPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgib3JnLndlYmtpdC5tb2Nr
Iik7CisKKyAgICByZXR1cm4gc19rZXlTeXN0ZW07Cit9CisKK1JlZlB0cjxDRE1JbnN0YW5jZVNl
c3Npb24+IE1vY2tDRE1JbnN0YW5jZTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKG1ha2VXZWFrUHRyKCp0aGlzKSkpOwor
fQorCitNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQ
dHI8TW9ja0NETUluc3RhbmNlPiYmIGluc3RhbmNlKQorICAgIDogbV9pbnN0YW5jZShXVEZNb3Zl
KGluc3RhbmNlKSkKK3sKK30KKwordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayBj
YWxsYmFjaykKK3sKKyAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBt
X2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewogICAg
ICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eUF0b20oKSwgZmFsc2Us
IFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjk1LDkgKzMxMiw5
IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nCiAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpj
cmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNl
LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrIGNhbGxiYWNrKQor
dm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0
b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICBNb2NrQ0RNRmFj
dG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxs
cHRyOwogICAgIGlmICghZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQp
OwogICAgICAgICByZXR1cm47CkBAIC0zMjksOSArMzQ2LDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFu
Y2U6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBj
b25zdAogICAgIGNhbGxiYWNrKGZhbHNlLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBN
b2NrQ0RNSW5zdGFuY2U6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RN
SW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayBjYWxsYmFjaykKIHsKLSAgICBNb2Nr
Q0RNRmFjdG9yeSogZmFjdG9yeSA9IG1fY2RtID8gbV9jZG0tPmZhY3RvcnkoKSA6IG51bGxwdHI7
CisgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+
ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJh
Y2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVl
OjpGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOwogICAgICAgICByZXR1cm47CkBA
IC0zNDUsOSArMzYyLDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2EKICAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVl
OjpTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiB9CiAKLXZvaWQgTW9ja0NE
TUluc3RhbmNlOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9z
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrIGNh
bGxiYWNrKQogewotICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+
ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5z
dGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9y
eSkgewogICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CkBAIC0zNTcsOSArMzc0
LDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sKICAgICBjYWxsYmFjaygpOwogfQogCi12b2lk
IE1vY2tDRE1JbnN0YW5jZTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBpZCwgTGlj
ZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgaWQsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIE1v
Y2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0
cjsKKyAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNl
LT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewogICAgICAgICBjYWxs
YmFjayh7IH0sIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAgICAgICBy
ZXR1cm47CkBAIC0zNzUsMTggKzM5MiwxMSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6cmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBpZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlcwogICAg
IGNhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bWVzc2FnZS5kYXRhKCksIG1lc3NhZ2UubGVuZ3RoKCkpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRl
ZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29u
c3QgU3RyaW5nJikKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6c3RvcmVSZWNvcmRPZktl
eVVzYWdlKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGlt
cGxlbWVudGVkIGFsb25nIHdpdGggdGhlIHN1cHBvcnQgZm9yIHBlcnNpc3RlbnQtdXNhZ2UtcmVj
b3JkIHNlc3Npb25zLgogfQogCi1jb25zdCBTdHJpbmcmIE1vY2tDRE1JbnN0YW5jZTo6a2V5U3lz
dGVtKCkgY29uc3QKLXsKLSAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBz
X2tleVN5c3RlbSA9IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJvcmcud2Via2l0Lm1vY2siKTsK
LQotICAgIHJldHVybiBzX2tleVN5c3RlbTsKLX0KLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAyMTZkMjlhMGE3YzMzNzZkODMzODk5ZDE1
NDAwMjdiMjgzYWU4M2Y0Li44NGQzYTZjODMwYTcwM2U2YWZiZTEyMTg3MGFmN2FjNzFhMmNmNDIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQ0RNLmgiCiAjaW5jbHVkZSAiQ0RNRmFjdG9yeS5oIgogI2luY2x1ZGUg
IkNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiQ0RNSW5zdGFuY2VTZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiQ0RNUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhS2V5c1JlcXVpcmVtZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTEyMSwxMCArMTIyLDE0IEBAIHByaXZhdGU6CiAgICAg
V2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OwogfTsKIAotY2xhc3MgTW9ja0NETUlu
c3RhbmNlIDogcHVibGljIENETUluc3RhbmNlIHsKK2NsYXNzIE1vY2tDRE1JbnN0YW5jZSA6IHB1
YmxpYyBDRE1JbnN0YW5jZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4g
ewogcHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZShXZWFrUHRyPE1vY2tDRE0+KTsKIAorICAg
IE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jZG0gPyBtX2NkbS0+
ZmFjdG9yeSgpIDogbnVsbHB0cjsgfQorICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fs
bG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkOyB9
CisgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJz
aXN0ZW50U3RhdGVBbGxvd2VkOyB9CisKIHByaXZhdGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBl
IGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9u
VHlwZTo6TW9jazsgfQogICAgIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgZmluYWw7CkBAIC0xMzIsNiAr
MTM3LDE5IEBAIHByaXZhdGU6CiAgICAgU3VjY2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQoYm9vbCkgZmluYWw7CiAgICAgU3VjY2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOworCisgICAgV2Vha1B0cjxNb2NrQ0RNPiBtX2NkbTsKKyAgICBib29s
IG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3Bl
cnNpc3RlbnRTdGF0ZUFsbG93ZWQgeyB0cnVlIH07Cit9OworCitjbGFzcyBNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgTW9j
a0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJik7CisKK3ByaXZh
dGU6CiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjaykgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2spIGZp
bmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2spIGZpbmFsOwpAQCAtMTM5LDExICsxNTcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwg
TGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2spIGZpbmFsOwogICAgIHZvaWQg
c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKLQotICAgIFdlYWtQdHI8TW9ja0NETT4g
bV9jZG07Ci0gICAgYm9vbCBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkIHsgdHJ1ZSB9
OwotICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OworICAgIFdlYWtQ
dHI8TW9ja0NETUluc3RhbmNlPiBtX2luc3RhbmNlOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350127</attachid>
            <date>2018-09-19 09:53:51 -0700</date>
            <delta_ts>2018-09-20 09:58:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189725-20180919095350.patch</filename>
            <type>text/plain</type>
            <size>80557</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk5YTVlNGI1Yzg0YTRm
NmI4NDMwODM3YjNhNWMzMWU3MDkwOGYwOC4uMTRjZDJiMDI1ZGJkODk4YzY1ZTY3NDdlNDM1Yzkw
N2ViYzZlYWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxOC0wOS0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbRU1FXSBJbnRyb2R1Y2Ug
dGhlIGNvbmNlcHQgb2YgQ0RNSW5zdGFuY2VTZXNzaW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCB0aGUgc2FtZSBDRE1JbnN0YW5j
ZSBvd25lZCBieSBhIE1lZGlhS2V5cyBvYmplY3QgaXMgcGFzc2VkIHRvIGV2ZXJ5IE1lZGlhS2V5
U2Vzc2lvbiBjcmVhdGVkIGJ5IHRoYXQKKyAgICAgICAgTWVkaWFLZXlzLCBhbmQgc2luY2UgdGhl
IENETUluc3RhbmNlIGhhcyBvbmx5IGEgc2luZ2xlIENETUluc3RhbmNlQ2xpZW50LCBzdWJzZXF1
ZW50IE1lZGlhS2V5U2Vzc2lvbnMgcHJldmVudAorICAgICAgICBwcmV2aW91cyBvbmVzIGZyb20g
Z2V0dGluZyB1cGRhdGVzLgorCisgICAgICAgIEFkZCBhIG5ldyB2aXJ0dWFsIGludGVyZmFjZSwg
Q0RNSW5zdGFuY2VTZXNzaW9uLCB0byBiZSBwYXNzZWQgdG8gTWVkaWFLZXlTZXNzaW9uIHVwb24g
Y3JlYXRpb24uIFJlZmFjdG9yCisgICAgICAgIENETUluc3RhbmNlQ2xlYXJLZXkgYW5kIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDIHRvIGFkb3B0IHRoaXMgbmV3IGludGVyZmFj
ZS4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNl
c3Npb246OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OnJlbW92
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2Vz
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZTo6c2V0SERD
UFN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZTo6c2V0Q2xpZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlOjpjbGVhckNsaWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9u
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUluc3RhbmNlLmguCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OnNldENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OmNsZWFyQ2xpZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxpY2Vuc2VGb3JtYXQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleTo6a2V5U3lzdGVtIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjprZXlzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojpsb2Fk
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
Y2xvc2VTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OmtleXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleTo6dXBkYXRlTGljZW5zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5Ojpsb2FkU2Vzc2lvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpjbG9zZVNl
c3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleTo6
cmVtb3ZlU2Vzc2lvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VDbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y3JlYXRlU2Vz
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6cHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0Rm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvY2Vzc05leHRDb250
ZW50S2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6a2V5U3lzdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVBlcnNpc3RhYmxlUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFp
bFRvUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzaG91bGRSZXRyeVJlcXVlc3RG
b3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0lu
c3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmNsb3NlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3RvcmVS
ZWNvcmRPZktleVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xlYXJDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJv
dmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNob3VsZFJldHJ5
UmVxdWVzdEZvclJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6aXNMaWNlbnNlVHlwZVN1cHBvcnRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aXNMaWNlbnNlVHlwZVN1cHBv
cnRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dXBkYXRlTGljZW5zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNsb3Nl
U2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnN0b3JlUmVjb3Jk
T2ZLZXlVc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbGVhckNsaWVudCk6IERl
bGV0ZWQuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OmtleVN5c3RlbSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNSW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29y
ZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpyZXF1ZXN0
TGljZW5zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnVw
ZGF0ZUxpY2Vuc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
Ojpsb2FkU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFu
Y2U6OmNsb3NlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2U6OnJlbW92ZVNlc3Npb25EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDRE1JbnN0YW5jZTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2U6OmZhY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
OjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNSW5zdGFuY2U6OnBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgY29uc3QpOgorCiAyMDE4
LTA5LTE4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyMzYwMDYpOiBOZXcgd2FpdGluZ0ZvcktleSgpIHJlcXVpcmVtZW50IGJyZWFrcyBN
b2Rlcm4gRU1FIHRlc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGViNzJjZTA3NzhlODFjYmJj
ZmJlYmE0MzRjNzgyOGRkOWExMTUyYTQuLjY4ZjQ5M2Q1ZDEwNjI1ZWI1ZmYxMDhlZGZiOGMzOTJk
ODg0ZDQxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTQ4LDE0ICs0OCwxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYWtQdHI8TWVkaWFLZXlz
PiYmIGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGlu
Y3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFu
Y2U+JiYgaW5zdGFuY2UpCitSZWY8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPE1lZGlhS2V5cz4m
JiBrZXlzLCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0
aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNl
U2Vzc2lvbj4mJiBpbnN0YW5jZSkKIHsKICAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3
IE1lZGlhS2V5U2Vzc2lvbihjb250ZXh0LCBXVEZNb3ZlKGtleXMpLCBzZXNzaW9uVHlwZSwgdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyLCBXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShp
bnN0YW5jZSkpKTsKICAgICBzZXNzaW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4g
c2Vzc2lvbjsKIH0KIAotTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxNZWRpYUtleXM+JiYga2V5cywgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIs
IFJlZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZT4mJiBpbnN0YW5jZSkK
K01lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFdlYWtQdHI8TWVkaWFLZXlzPiYmIGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUg
c2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGlt
cGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIGluc3RhbmNlKQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCiAg
ICAgLCBtX2V4cGlyYXRpb24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KSkKQEAgLTg4LDcgKzg4LDcgQEAgTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxNZWRpYUsKICAgICBVTlVTRURf
UEFSQU0obV9jbG9zZWQpOwogICAgIFVOVVNFRF9QQVJBTShtX3VuaW5pdGlhbGl6ZWQpOwogCi0g
ICAgbV9pbnN0YW5jZS0+c2V0Q2xpZW50KCp0aGlzKTsKKyAgICBtX2luc3RhbmNlLT5zZXRDbGll
bnQobV9jZG1JbnN0YW5jZUNsaWVudFdlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMp
KTsKIH0KIAogTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9uKCkKQEAgLTE5NCw3ICsx
OTQsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21p
Y1N0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdQogICAgICAgICAgICAgbV9sYXRlc3REZWNy
eXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlLT5yZXF1ZXN0TGlj
ZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpLCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2UtPnJlcXVlc3RMaWNlbnNl
KG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSksIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
IChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBi
b29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEJ1CiAgICAgICAgICAgICAvLyAxMC4xMC4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUg
Zm9sbG93aW5nIHN0ZXBzOgogICAgICAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3Ro
aXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdl
KSwgbWVzc2FnZVR5cGUsIHNlc3Npb25JZCwgc3VjY2VlZGVkXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICAvLyAxMC4xMC4xLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWls
ZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMg
dGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCi0gICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWls
ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVy
cm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAg
LTI4Nyw3ICsyODcsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAgICAvLyA4LjYu
IExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KICAgICAgICAgLy8gOC43LiBMZXQgY2RtIGJlIHRo
ZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2Ug
dmFsdWUuCiAgICAgICAgIC8vIDguOC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93
aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlLT5sb2FkU2Vzc2lvbihtX3Nlc3Npb25UeXBl
LCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNhbml0aXplZFNlc3Npb25J
ZCA9ICpzYW5pdGl6ZWRTZXNzaW9uSWRdIChzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlOjpLZXlT
dGF0dXNWZWN0b3I+JiYga25vd25LZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0
aW9uLCBzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkLCBDRE1JbnN0YW5jZTo6U2Vzc2lvbkxvYWRG
YWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlLT5sb2FkU2Vzc2lv
bihtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNh
bml0aXplZFNlc3Npb25JZCA9ICpzYW5pdGl6ZWRTZXNzaW9uSWRdIChzdGQ6Om9wdGlvbmFsPENE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtub3duS2V5cywgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYgZXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkLCBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBmYWlsdXJl
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIC8vIDguOC4xLiBJZiB0aGVyZSBpcyBubyBkYXRhIHN0
b3JlZCBmb3IgdGhlIHNhbml0aXplZCBzZXNzaW9uIElEIGluIHRoZSBvcmlnaW4sIHJlc29sdmUg
cHJvbWlzZSB3aXRoIGZhbHNlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgICAgIC8v
IDguOC4yLiBJZiB0aGUgc3RvcmVkIHNlc3Npb24ncyBzZXNzaW9uIHR5cGUgaXMgbm90IHRoZSBz
YW1lIGFzIHRoZSBjdXJyZW50IE1lZGlhS2V5U2Vzc2lvbiBzZXNzaW9uIHR5cGUsIHJlamVjdCBw
cm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgICAgIC8vIDgu
OC4zLiBMZXQgc2Vzc2lvbiBkYXRhIGJlIHRoZSBkYXRhIHN0b3JlZCBmb3IgdGhlIHNhbml0aXpl
ZCBzZXNzaW9uIElEIGluIHRoZSBvcmlnaW4uIFRoaXMgbXVzdCBub3QgaW5jbHVkZSBkYXRhIGZy
b20gb3RoZXIgb3JpZ2luKHMpIG9yIHRoYXQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBvcmln
aW4uCkBAIC0yOTksMTkgKzI5OSwxOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAg
ICAgICAgLy8gICA4LjguNy4yLiBMZXQgbWVzc2FnZSB0eXBlIGJlIHRoZSBhcHByb3ByaWF0ZSBN
ZWRpYUtleU1lc3NhZ2VUeXBlIGZvciB0aGUgbWVzc2FnZS4KICAgICAgICAgICAgIC8vIE5PVEU6
IFN0ZXBzIDguOC4xLiB0aHJvdWdoIDguOC43LiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gQ0RN
SW5zdGFuY2UuCiAKLSAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2U6OlN1
Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CisgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGZhaWx1cmUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlOjpTZXNz
aW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGE6CisgICAgICAgICAgICAgICAgY2FzZSBDRE1J
bnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YToKICAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNl
OjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZToKKyAgICAgICAgICAg
ICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRj
aGVkU2Vzc2lvblR5cGU6CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBl
RXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDRE1JbnN0YW5jZTo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkOgorICAgICAg
ICAgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6OlF1
b3RhRXhjZWVkZWQ6CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChRdW90YUV4
Y2VlZGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgY2FzZSBDRE1JbnN0YW5jZTo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lOgotICAgICAgICAg
ICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6OlNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXI6CisgICAg
ICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6
Tm9uZToKKyAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxv
YWRGYWlsdXJlOjpPdGhlcjoKICAgICAgICAgICAgICAgICAgICAgLy8gSW4gYW55IG90aGVyIGNh
c2UsIHRoZSBzZXNzaW9uIGxvYWQgZmFpbHVyZSB3aWxsIGNhdXNlIGEgcmVqZWN0aW9uIGluIHRo
ZSBmb2xsb3dpbmcgdGFzay4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAg
ICAgICAgICAvLyA4LjkuIFF1ZXVlIGEgdGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
ICAgICAgICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzLCBrbm93bktleXMgPSBX
VEZNb3ZlKGtub3duS2V5cyksIGV4cGlyYXRpb24gPSBXVEZNb3ZlKGV4cGlyYXRpb24pLCBtZXNz
YWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc2FuaXRpemVkU2Vzc2lvbklkLCBzdWNjZWVkZWQsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAv
LyA4LjkuMS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJv
bWlzZSB3aXRoIGEgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCi0gICAgICAgICAgICAgICAg
aWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vz
c1ZhbHVlOjpGYWlsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5v
dFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRl
KGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAg
ICAgICAvLyA2LjUuIExldCBzZXNzaW9uIGNsb3NlZCBiZSBmYWxzZS4KICAgICAgICAgLy8gNi42
LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3Qn
cyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8vIDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhl
Y3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlLT51cGRhdGVMaWNl
bnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2U6Oktl
eVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hh
bmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2U6Ok1lc3NhZ2U+JiYgbWVz
c2FnZSwgQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAg
ICAgICBtX2luc3RhbmNlLT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBl
LCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0
ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdl
ZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9w
dGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQxNCw3ICs0MTQs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVz
cG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAgICAgLy8gICAgIFByb2Nlc3Mg
c2FuaXRpemVkIHJlc3BvbnNlLCBub3Qgc3RvcmluZyBhbnkgc2Vzc2lvbiBkYXRhLgogICAgICAg
ICAgICAgLy8gTk9URTogU3RlcHMgNi43LjEuIGFuZCA2LjcuMi4gc2hvdWxkIGJlIGltcGxlbWVu
dGVkIGluIENETUluc3RhbmNlLgogCi0gICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUlu
c3RhbmNlOjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkgeworICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CiAgICAgICAg
ICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQpAQCAtNDUwLDE2ICs0NTAsMTYgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYKICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UtPmZpcnN0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIENETUluc3RhbmNlOjpNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3Q6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5
cGU6OkxpY2Vuc2VSZXF1ZXN0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VU
eXBlID0gTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3Q7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENETUlu
c3RhbmNlOjpNZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWw6CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2Fs
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlID0gTWVkaWFLZXlNZXNz
YWdlVHlwZTo6TGljZW5zZVJlbmV3YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlOjpNZXNzYWdlVHlw
ZTo6TGljZW5zZVJlbGVhc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZWxlYXNlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2VUeXBlID0gTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJl
bGVhc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIENETUluc3RhbmNlOjpNZXNzYWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRp
b25SZXF1ZXN0OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2VUeXBlOjpJbmRpdmlkdWFsaXphdGlvblJlcXVlc3Q6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZVR5cGUgPSBNZWRpYUtleU1lc3NhZ2VUeXBlOjpJbmRpdmlk
dWFsaXphdGlvblJlcXVlc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAg
IC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNl
IHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3Rh
bmNlLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0gKENETUluc3RhbmNlOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZS0+cmVtb3ZlU2Vzc2lvbkRhdGEo
bV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgICAgICAgICAgdXBkYXRlRXhw
aXJhdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKIAogICAg
ICAgICAgICAgICAgIC8vIDQuNS4zLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWls
ZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMg
dGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCi0gICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWls
ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVy
cm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAg
LTU5OSw3ICs1OTksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVk
aWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcgogICAgIG1fZXZlbnRRdWV1
ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShtZXNzYWdlRXZlbnQpKTsKIH0KIAotdm9pZCBNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlQ2xpZW50OjpLZXlTdGF0dXNW
ZWN0b3ImJiBpbnB1dFN0YXR1c2VzKQordm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0
YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW5wdXRTdGF0dXNl
cykKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyN1cGRh
dGUta2V5LXN0YXR1c2VzCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIw
MTYKQEAgLTYxMywyMSArNjEzLDIxIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlT
dGF0dXNlcyhDRE1JbnN0YW5jZUNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYgaW5wCiAgICAgLy8g
ICAgIDQuMi4xLiBMZXQgcGFpciBiZSB0aGUgcGFpci4KICAgICAvLyAgICAgNC4yLjIuIEluc2Vy
dCBhbiBlbnRyeSBmb3IgcGFpcidzIGtleSBJRCBpbnRvIHN0YXR1c2VzIHdpdGggdGhlIHZhbHVl
IG9mIHBhaXIncyBNZWRpYUtleVN0YXR1cyB2YWx1ZS4KIAotICAgIHN0YXRpYyBhdXRvIHRvTWVk
aWFLZXlTdGF0dXMgPSBbXSAoQ0RNSW5zdGFuY2U6OktleVN0YXR1cyBzdGF0dXMpIC0+IE1lZGlh
S2V5U3RhdHVzIHsKKyAgICBzdGF0aWMgYXV0byB0b01lZGlhS2V5U3RhdHVzID0gW10gKENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cykgLT4gTWVkaWFLZXlTdGF0dXMgewogICAg
ICAgICBzd2l0Y2ggKHN0YXR1cykgewotICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0
dXM6OlVzYWJsZToKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6
VXNhYmxlOgogICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpVc2FibGU7Ci0gICAg
ICAgIGNhc2UgQ0RNSW5zdGFuY2U6OktleVN0YXR1czo6RXhwaXJlZDoKKyAgICAgICAgY2FzZSBD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6RXhwaXJlZDoKICAgICAgICAgICAgIHJldHVy
biBNZWRpYUtleVN0YXR1czo6RXhwaXJlZDsKLSAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5
U3RhdHVzOjpSZWxlYXNlZDoKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1czo6UmVsZWFzZWQ6CiAgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OlJlbGVh
c2VkOwotICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0dXM6Ok91dHB1dFJlc3RyaWN0
ZWQ6CisgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6Ok91dHB1dFJl
c3RyaWN0ZWQ6CiAgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6Ok91dHB1dFJlc3Ry
aWN0ZWQ7Ci0gICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6OktleVN0YXR1czo6T3V0cHV0RG93bnNj
YWxlZDoKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6T3V0cHV0
RG93bnNjYWxlZDoKICAgICAgICAgICAgIHJldHVybiBNZWRpYUtleVN0YXR1czo6T3V0cHV0RG93
bnNjYWxlZDsKLSAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5U3RhdHVzOjpTdGF0dXNQZW5k
aW5nOgorICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzOjpTdGF0dXNQ
ZW5kaW5nOgogICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpTdGF0dXNQZW5kaW5n
OwotICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0dXM6OkludGVybmFsRXJyb3I6Cisg
ICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OkludGVybmFsRXJyb3I6
CiAgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3I7CiAgICAg
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDBkMTkwMGUzMWJjN2JkNDkxN2U4MjZiNjEwMzMx
ZWM1ODhjOTUxMzIuLjgxMDNjNDFiNGMyYjFkNDNlMzllZjk3OGQzMzYwOGYwNWMwYWIzYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaApAQCAtMzEsNyArMzEsNyBAQAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJDRE1JbnN0YW5j
ZS5oIgorI2luY2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkRPTVByb21p
c2VQcm94eS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2
ZW50UXVldWUuaCIKQEAgLTUyLDkgKzUyLDkgQEAgY2xhc3MgTWVkaWFLZXlTdGF0dXNNYXA7CiBj
bGFzcyBNZWRpYUtleXM7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWNsYXNzIE1lZGlhS2V5U2Vz
c2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TWVkaWFLZXlTZXNzaW9uPiwgcHVibGljIENETUluc3RhbmNlQ2xpZW50
IHsKK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
S2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFLZXlTZXNzaW9uPiwgcHVi
bGljIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxN
ZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2Vha1B0cjxN
ZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVu
dGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOworICAgIHN0YXRpYyBSZWY8
TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYWtQdHI8
TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRl
bnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7CiAgICAgdmly
dHVhbCB+TWVkaWFLZXlTZXNzaW9uKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhS2V5
U2Vzc2lvbj46OnJlZjsKQEAgLTc4LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVz
ZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFL
ZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwg
TWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxD
RE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CisgICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlw
ZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0
YW5jZVNlc3Npb24+JiYpOwogICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRv
dWJsZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAotICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAg
dm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZUNsaWVudDo6S2V5U3RhdHVzVmVjdG9y
JiYpIG92ZXJyaWRlOworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAorICAgIHZvaWQg
dXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0
b3ImJikgb3ZlcnJpZGU7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVk
aWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CkBAIC0xMTAsMTMgKzExMCwx
NCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXI7CiAgICAg
TWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVt
ZW50YXRpb247Ci0gICAgUmVmPENETUluc3RhbmNlPiBtX2luc3RhbmNlOworICAgIFJlZjxDRE1J
bnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2U7CiAgICAgR2VuZXJpY0V2ZW50UXVldWUgbV9ldmVu
dFF1ZXVlOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fdGFza1F1ZXVlOwogICAgIFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBt
X2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUg
eyAwIH07CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlT
dGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFdlYWtQdHJGYWN0b3J5PENETUluc3RhbmNlU2Vzc2lv
bkNsaWVudD4gbV9jZG1JbnN0YW5jZUNsaWVudFdlYWtQdHJGYWN0b3J5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwCmluZGV4IDM5ZmJiODBlOTc2MTQ2Y2I3OGE2MjRmNzFiMmFl
OWYwNWJhYjJhMmEuLjE1MmZjYTQyNGE4MjE5NmZhY2I1OTY5OTc3MzRiM2UwOWQ2MDE3MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAKQEAgLTY0LDEwICs2NCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9u
Pj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIGlm
ICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXNzaW9ucygpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKTsKIAorICAgIGF1dG8gc2Vzc2lvbkluc3RhbmNl
ID0gbV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigpOworICAgIGlmICghc2Vzc2lvbkluc3RhbmNl
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKTsKKwogICAgIC8v
IDMuIExldCBzZXNzaW9uIGJlIGEgbmV3IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QsIGFuZCBpbml0
aWFsaXplIGl0IGFzIGZvbGxvd3M6CiAgICAgLy8gTk9URTogQ29udGludWVkIGluIE1lZGlhS2V5
U2Vzc2lvbi4KICAgICAvLyA0LiBSZXR1cm4gc2Vzc2lvbi4KLSAgICBhdXRvIHNlc3Npb24gPSBN
ZWRpYUtleVNlc3Npb246OmNyZWF0ZShjb250ZXh0LCBtYWtlV2Vha1B0cigqdGhpcyksIHNlc3Np
b25UeXBlLCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgbV9pbXBsZW1lbnRhdGlvbi5jb3B5
UmVmKCksIG1faW5zdGFuY2UuY29weVJlZigpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBNZWRpYUtl
eVNlc3Npb246OmNyZWF0ZShjb250ZXh0LCBtYWtlV2Vha1B0cigqdGhpcyksIHNlc3Npb25UeXBl
LCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgbV9pbXBsZW1lbnRhdGlvbi5jb3B5UmVmKCks
IHNlc3Npb25JbnN0YW5jZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBtX3Nlc3Npb25zLmFwcGVu
ZChzZXNzaW9uLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lvbik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNjE3MmEwMzhiYTNiZjU3Mjk4ZGQ4NTAzN2FkMjAxZTIyMjZhZWI4MC4uN2VkMGMwZDFmYjk4
MjU4ZTA1NGJkNmU0YzQ0Y2M4NGViMTZmYzdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMzMTEsNiArMTMzMTEsNyBAQAog
CQlDRDk0QTVENjFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNTWVzc2FnZVR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNTWVzc2FnZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q5NEE1REExRjcxQ0JCMDAwRjUyNUM1IC8qIENETUNsZWFyS2V5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUNsZWFyS2V5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNURCMUY3MUNCQjAwMEY1MjVDNSAvKiBDRE1DbGVh
cktleS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRE1DbGVhcktl
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOUQzNzVBMjE1MTYzRTQwMDQ5
NjU3QiAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNSW5zdGFuY2VT
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOUQ4MjczMUM3QUU1MzUw
MDZGRjA2NiAvKiBUZXh0dXJlQ2FjaGVDVi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFRleHR1cmVDYWNoZUNWLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDlEODI3NDFDN0FFNTM1MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dHVyZUNhY2hlQ1YuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RDgyNzcxQzdCOEVFMTAwNkZGMDY2IC8qIFZpZGVvVGV4dHVy
ZUNvcGllckNWLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVv
VGV4dHVyZUNvcGllckNWLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NzYw
LDYgKzI0NzYxLDcgQEAKIAkJCQlDRDk0QTVEMTFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNRmFjdG9y
eS5jcHAgKi8sCiAJCQkJQ0Q5NEE1RDIxRjcxQ0I2QjAwRjUyNUM1IC8qIENETUZhY3RvcnkuaCAq
LywKIAkJCQlDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUgLyogQ0RNSW5zdGFuY2UuaCAqLywKKwkJ
CQlDRDlEMzc1QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8sCiAJ
CQkJQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5oICovLAogCQkJCUNE
OTRBNUNEMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi8s
CiAJCQkJQ0Q5NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKaW5kZXggZTY2NWNjYzliNWMzY2I2NDA1YjQ5YjVjNzIzOTMzNTIyY2FlMzk4Mi4u
NGQwZDM1ZWFiMDE0YmIzMzA5ZjM2YzE4NWI5NWZiZjJlMDJhMmJlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC0z
NiwyMiArMzYsMTUgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
K2NsYXNzIENETUluc3RhbmNlU2Vzc2lvbjsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uOwogCi1jbGFzcyBDRE1JbnN0YW5jZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
Q0RNSW5zdGFuY2VDbGllbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICB1c2luZyBLZXlTdGF0dXMgPSBD
RE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFp
cjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSA9IDA7Ci19OwotCiBjbGFzcyBDRE1JbnN0
YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPENETUluc3RhbmNlPiB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+Q0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7CkBAIC02MSw3ICs1NCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgQ2xlYXJLZXksCiAgICAgICAgIEZhaXJQbGF5U3RyZWFtaW5nLAogICAgIH07Ci0K
ICAgICB2aXJ0dWFsIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25z
dCA9IDA7CiAKICAgICBlbnVtIFN1Y2Nlc3NWYWx1ZSB7CkBAIC02OSwxNSArNjEsMTMgQEAgcHVi
bGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIEtleVN0YXR1cyA9
IENETUtleVN0YXR1czsKLSAgICB1c2luZyBMaWNlbnNlVHlwZSA9IENETVNlc3Npb25UeXBlOwot
ICAgIHVzaW5nIE1lc3NhZ2VUeXBlID0gQ0RNTWVzc2FnZVR5cGU7Ci0KICAgICB2aXJ0dWFsIFN1
Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBzZXREaXN0aW5j
dGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCBTdWNjZXNzVmFs
dWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCBTdWNj
ZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwog
ICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVlIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JikgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkg
PSAwOwogCiAgICAgZW51bSBjbGFzcyBIRENQU3RhdHVzIHsKICAgICAgICAgVW5rbm93biwKQEAg
LTg2LDM4ICs3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgT3V0cHV0RG93bnNjYWxlZCwKICAgICB9
OwogICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVlIHNldEhEQ1BTdGF0dXMoSERDUFN0YXR1cykgeyBy
ZXR1cm4gRmFpbGVkOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KENETUluc3RhbmNl
Q2xpZW50JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgeyB9Ci0KLSAgICB1
c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjaykgPSAwOwotCi0gICAg
dXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VDbGllbnQ6OktleVN0YXR1c1ZlY3Rv
cjsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPj47Ci0gICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYm
IGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwg
c3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
PjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjaykgPSAwOwotCi0gICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgewot
ICAgICAgICBOb25lLAotICAgICAgICBOb1Nlc3Npb25EYXRhLAotICAgICAgICBNaXNtYXRjaGVk
U2Vzc2lvblR5cGUsCi0gICAgICAgIFF1b3RhRXhjZWVkZWQsCi0gICAgICAgIE90aGVyLAotICAg
IH07Ci0KLSAgICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6
Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYsIHN0
ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiwgU3VjY2Vzc1ZhbHVlLCBTZXNzaW9uTG9hZEZhaWx1cmUp
PjsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjaykg
PSAwOwotCi0gICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+
OwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrKSA9IDA7Ci0KLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjaykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOwotCi0gICAgdmly
dHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAxNzQyMWU5
MjFmNmQ1MTIzODNkNGNmOGI3Y2QzZWYyNDJkNDk4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBA
IC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ0RNS2V5U3RhdHVzLmgiCisjaW5jbHVkZSAi
Q0RNTWVzc2FnZVR5cGUuaCIKKyNpbmNsdWRlICJDRE1TZXNzaW9uVHlwZS5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVy
OworCitjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHVzaW5nIEtl
eVN0YXR1cyA9IENETUtleVN0YXR1czsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0
b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0gMDsKK307CisKK2Ns
YXNzIENETUluc3RhbmNlU2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPENETUluc3RhbmNlU2Vz
c2lvbj4geworcHVibGljOgorICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbigpID0gZGVm
YXVsdDsKKworICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKKyAgICB1c2luZyBM
aWNlbnNlVHlwZSA9IENETVNlc3Npb25UeXBlOworICAgIHVzaW5nIE1lc3NhZ2VUeXBlID0gQ0RN
TWVzc2FnZVR5cGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50PiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQo
KSB7IH0KKworICAgIGVudW0gU3VjY2Vzc1ZhbHVlIHsKKyAgICAgICAgRmFpbGVkLAorICAgICAg
ICBTdWNjZWVkZWQsCisgICAgfTsKKworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVk
KT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrKSA9IDA7CisKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1J
bnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKKyAgICB1c2luZyBNZXNzYWdl
ID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdl
PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjaykgPSAwOworCisg
ICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgeworICAgICAgICBOb25lLAorICAgICAg
ICBOb1Nlc3Npb25EYXRhLAorICAgICAgICBNaXNtYXRjaGVkU2Vzc2lvblR5cGUsCisgICAgICAg
IFF1b3RhRXhjZWVkZWQsCisgICAgICAgIE90aGVyLAorICAgIH07CisKKyAgICB1c2luZyBMb2Fk
U2Vzc2lvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1Zl
Y3Rvcj4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4m
JiwgU3VjY2Vzc1ZhbHVlLCBTZXNzaW9uTG9hZEZhaWx1cmUpPjsKKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjaykgPSAwOworCisgICAgdXNpbmcgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OworICAgIHZpcnR1YWwgdm9pZCBj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNr
KSA9IDA7CisKKyAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4m
JiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjaykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0RNX0lOU1RBTkNFKFRvVmFsdWVUeXBl
TmFtZSwgSW1wbGVtZW50YXRpb25UeXBlTmFtZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpDRE1JbnN0YW5jZSYgaW5zdGFuY2UpIHsgcmV0dXJuIGluc3RhbmNlLmltcGxlbWVudGF0aW9u
VHlwZSgpID09IEltcGxlbWVudGF0aW9uVHlwZU5hbWU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBl
ZmFkNmMxNmMwMTZlNGExZDJlMTVmNTQ4YjQyNTE4ZmU4NGY3YTkzLi40ZTVhOGE5MWZjZjBmZjE5
OTkzYmMyNjI4ZjcyZGRjZGMwMzI2ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBD
bGVhcktleSBDRU5DIFN5c3RlbUlELgpAQCAtNTAsNyArNDksNyBAQCBjb25zdCB1bnNpZ25lZCBj
bGVhcktleUNlbmNTeXN0ZW1JZFNpemUgPSBzaXplb2YoY2xlYXJLZXlDZW5jU3lzdGVtSWQpOwog
Y29uc3QgdW5zaWduZWQga2V5SWRTaXplID0gMTY7CiAKIGNsYXNzIENsZWFyS2V5U3RhdGUgewot
ICAgIHVzaW5nIEtleVN0b3JlID0gSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxDRE1JbnN0YW5jZUNs
ZWFyS2V5OjpLZXk+PjsKKyAgICB1c2luZyBLZXlTdG9yZSA9IEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OktleT4+OwogCiBwdWJsaWM6CiAgICAgc3Rh
dGljIENsZWFyS2V5U3RhdGUmIHNpbmdsZXRvbigpOwpAQCAtODgsNyArODcsNyBAQCBzdGF0aWMg
UmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxDRE1JbnN0YW5jZUNsZWFyS2V5OjpLZXk+PiBwYXJzZUxpY2Vuc2VGb3JtYXQoY29uc3Qg
SlNPTjo6T2JqZWN0JiByb290KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5OjpLZXk+PiBwYXJzZUxpY2Vuc2VGb3JtYXQoY29uc3QgSlNPTjo6
T2JqZWN0JiByb290KQogewogICAgIC8vIElmIHRoZSAna2V5cycga2V5IGlzIHByZXNlbnQgaW4g
dGhlIHJvb3Qgb2JqZWN0LCBwYXJzZSB0aGUgSlNPTiBmdXJ0aGVyCiAgICAgLy8gYWNjb3JkaW5n
IHRvIHRoZSBzcGVjaWZpZWQgJ2xpY2Vuc2UnIGZvcm1hdC4KQEAgLTEwMSw3ICsxMDAsNyBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNSW5zdGFuY2VDbGVhcktleTo6S2V5Pj4gcGFy
c2VMaWNlbnNlRm9ybWF0KGNvbnN0CiAgICAgaWYgKCFpdC0+dmFsdWUtPmFzQXJyYXkoa2V5c0Fy
cmF5KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxDRE1JbnN0
YW5jZUNsZWFyS2V5OjpLZXk+IGRlY29kZWRLZXlzOworICAgIFZlY3RvcjxDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6S2V5PiBkZWNvZGVkS2V5czsKICAgICBib29sIHZhbGlkRm9ybWF0ID0g
c3RkOjphbGxfb2Yoa2V5c0FycmF5LT5iZWdpbigpLCBrZXlzQXJyYXktPmVuZCgpLAogICAgICAg
ICBbJmRlY29kZWRLZXlzXSAoY29uc3QgYXV0byYgdmFsdWUpIHsKICAgICAgICAgICAgIFJlZlB0
cjxKU09OOjpPYmplY3Q+IGtleU9iamVjdDsKQEAgLTEyMCw3ICsxMTksNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8Q0RNSW5zdGFuY2VDbGVhcktleTo6S2V5Pj4gcGFyc2VMaWNlbnNl
Rm9ybWF0KGNvbnN0CiAgICAgICAgICAgICBpZiAoIVdURjo6YmFzZTY0VVJMRGVjb2RlKGtleUlE
LCB7IGtleUlERGF0YSB9KSB8fCAhV1RGOjpiYXNlNjRVUkxEZWNvZGUoa2V5VmFsdWUsIHsga2V5
VmFsdWVEYXRhIH0pKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAg
ICAgZGVjb2RlZEtleXMuYXBwZW5kKHsgQ0RNSW5zdGFuY2VDbGVhcktleTo6S2V5U3RhdHVzOjpV
c2FibGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5SUREYXRhKSksIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5VmFsdWVEYXRhKSkgfSk7CisgICAgICAgICAgICBkZWNv
ZGVkS2V5cy5hcHBlbmQoeyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6S2V5U3RhdHVzOjpV
c2FibGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5SUREYXRhKSksIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5VmFsdWVEYXRhKSkgfSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgaWYgKCF2YWxpZEZvcm1hdCkKQEAgLTQ5Myw3ICs0
OTIsMjkgQEAgQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUNsZWFyS2V5Ojpz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gc3RvcmFnZURpcmVj
dG9yeS5pc0VtcHR5KCkgPyBTdWNjZWVkZWQgOiBGYWlsZWQ7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VDbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2sgY2FsbGJhY2spCitjb25zdCBTdHJpbmcmIENETUluc3RhbmNlQ2xlYXJLZXk6OmtleVN5
c3RlbSgpIGNvbnN0Cit7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
c19rZXlTeXN0ZW0gPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgib3JnLnczLmNsZWFya2V5Iik7
CisKKyAgICByZXR1cm4gc19rZXlTeXN0ZW07Cit9CisKK1JlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IENETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoKSk7Cit9CisKK2NvbnN0IFZl
Y3RvcjxDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6S2V5PiBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6a2V5cygpIGNvbnN0Cit7CisgICAgLy8gUmV0dXJuIHRoZSBrZXlzIG9mIGFsbCBz
ZXNzaW9ucy4KKyAgICBWZWN0b3I8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OktleT4gYWxs
S2V5cyB7IH07CisgICAgZm9yIChhdXRvJiBrZXkgOiBDbGVhcktleVN0YXRlOjpzaW5nbGV0b24o
KS5rZXlzKCkudmFsdWVzKCkpCisgICAgICAgIGFsbEtleXMuYXBwZW5kVmVjdG9yKGtleSk7CisK
KyAgICByZXR1cm4gYWxsS2V5czsKK30KKwordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktl
eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sgY2Fs
bGJhY2spCiB7CiAgICAgc3RhdGljIHVpbnQzMl90IHNfc2Vzc2lvbklkVmFsdWUgPSAwOwogICAg
ICsrc19zZXNzaW9uSWRWYWx1ZTsKQEAgLTUxMywxNyArNTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZUNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGEKICAgICAgICAgfSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxDRE1JbnN0YW5jZUNsZWFy
S2V5OjpLZXk+IENETUluc3RhbmNlQ2xlYXJLZXk6OmtleXMoKSBjb25zdAotewotICAgIC8vIFJl
dHVybiB0aGUga2V5cyBvZiBhbGwgc2Vzc2lvbnMuCi0gICAgVmVjdG9yPENETUluc3RhbmNlQ2xl
YXJLZXk6OktleT4gYWxsS2V5cyB7IH07Ci0gICAgZm9yIChhdXRvJiBrZXkgOiBDbGVhcktleVN0
YXRlOjpzaW5nbGV0b24oKS5rZXlzKCkudmFsdWVzKCkpCi0gICAgICAgIGFsbEtleXMuYXBwZW5k
VmVjdG9yKGtleSk7Ci0KLSAgICByZXR1cm4gYWxsS2V5czsKLX0KLQotdm9pZCBDRE1JbnN0YW5j
ZUNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
IGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICAvLyBV
c2UgYSBoZWxwZXIgZnVuY3RvciB0aGF0IHNjaGVkdWxlcyB0aGUgY2FsbGJhY2sgZGlzcGF0Y2gs
IGF2b2lkaW5nCiAgICAgLy8gZHVwbGljYXRlZCBjYWxsT25NYWluVGhyZWFkKCkgY2FsbHMuCkBA
IC02MjQsNyArNjM1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgY28KICAgICBkaXNwYXRjaENh
bGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojpsb2FkU2Vzc2lvbihMaWNl
bnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNz
aW9uQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgLy8gVXNlIGEgaGVscGVyIGZ1bmN0b3IgdGhh
dCBzY2hlZHVsZXMgdGhlIGNhbGxiYWNrIGRpc3BhdGNoLCBhdm9pZGluZyBkdXBsaWNhdGVkIGNh
bGxPbk1haW5UaHJlYWQoKSBjYWxscy4KICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQpAQCAt
NjU3LDcgKzY2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6bG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zCiAgICAgZGlzcGF0Y2hDYWxs
YmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpOb25lKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VT
ZXNzaW9uQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAg
ICAgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSB7CkBAIC02NjgsNyArNjc5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojpj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgY2FsbGIKICAg
ICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1v
dmVTZXNzaW9uRGF0YUNhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIC8vIFVzZSBhIGhlbHBlciBm
dW5jdG9yIHRoYXQgc2NoZWR1bGVzIHRoZSBjYWxsYmFjayBkaXNwYXRjaCwgYXZvaWRpbmcgZHVw
bGljYXRlZCBjYWxsT25NYWluVGhyZWFkKCkgY2FsbHMuCiAgICAgYXV0byBkaXNwYXRjaENhbGxi
YWNrID0KQEAgLTcyNiwxNSArNzM3LDggQEAgdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpyZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUKICAgICBk
aXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPFNoYXJlZEJ1ZmZl
cj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5z
dGFuY2VDbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpCi17Ci19
Ci0KLWNvbnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VDbGVhcktleTo6a2V5U3lzdGVtKCkgY29uc3QK
K3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShj
b25zdCBTdHJpbmcmKQogewotICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IHNfa2V5U3lzdGVtID0gTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIm9yZy53My5jbGVhcmtleSIp
OwotCi0gICAgcmV0dXJuIHNfa2V5U3lzdGVtOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCBjZDRjODgwMWMxOWFhYjBlNjEyMzUyNDIy
MTEwYWY0NWVhODExNmY2Li4xMjE3NjU1M2IyMDFiZTEyMDI0NzFhNTc0ZmExOWExNmE3Y2Y1NjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1
ZGUgIkNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIkNE
TUluc3RhbmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDQsOCArNDUsOCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DRE1GYWN0b3J5Q2xlYXJLZXkoKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYp
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgZmluYWw7
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPENETUZhY3RvcnlD
bGVhcktleT47CkBAIC01NywyMSArNTgsMjEgQEAgcHVibGljOgogICAgIENETVByaXZhdGVDbGVh
cktleSgpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVDbGVhcktleSgpOwogCi0gICAgYm9vbCBz
dXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBD
RE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lv
blR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzUm9idXN0
bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICBDRE1SZXF1aXJlbWVudCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIENE
TVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVh
cmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBvdmVycmlkZTsKLSAgICB2
b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9u
cygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
aWNTdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNSb2J1c3RuZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOworICAgIENETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJl
bWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rp
b25zJikgY29uc3QgZmluYWw7CisgICAgQ0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3Ry
aWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0Fy
ZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPENETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5j
ZSgpIGZpbmFsOworICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKKyAgICBib29s
IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lv
bklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsKIAogY2xhc3MgQ0RNSW5zdGFuY2VD
bGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZSwgcHVibGljIENhbk1ha2VXZWFrUHRy
PENETUluc3RhbmNlQ2xlYXJLZXk+IHsKQEAgLTgxLDIwICs4MiwxMyBAQCBwdWJsaWM6CiAKICAg
ICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogCi0gICAgU3VjY2Vzc1ZhbHVl
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJikgb3ZlcnJpZGU7Ci0gICAgU3VjY2Vzc1ZhbHVlIHNldERpc3RpbmN0aXZlSWRlbnRpZmll
cnNBbGxvd2VkKGJvb2wpIG92ZXJyaWRlOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50
U3RhdGVBbGxvd2VkKGJvb2wpIG92ZXJyaWRlOwotICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKLSAgICBTdWNjZXNzVmFs
dWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLQotICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2spIG92
ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrKSBvdmVycmlkZTsK
LSAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsb3NlU2Vz
c2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjaykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjaykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5
VXNhZ2UoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0KKyAgICBTdWNjZXNzVmFsdWUgaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBm
aW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQo
Ym9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQo
Ym9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIFN1Y2Nlc3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkg
Y29uc3QgZmluYWw7CisgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpIGZpbmFsOwogCiAgICAgc3RydWN0IEtleSB7CiAgICAgICAgIEtleVN0YXR1cyBzdGF0dXM7
CkBAIC0xMDUsNiArOTksMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxLZXk+IGtleXMo
KSBjb25zdDsKIH07CiAKK2NsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDog
cHVibGljIENETUluc3RhbmNlU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5PiB7CitwdWJsaWM6CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjaykgZmluYWw7CisgICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2spIGZpbmFsOworICAgIHZvaWQgbG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJh
Y2spIGZpbmFsOworICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrKSBmaW5hbDsKKyAg
ICB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKK307CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DRE1fSU5T
VEFOQ0UoV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleSwgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6
OkltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5k
ZXggODNiOWQ1MDIzY2MxOGE5ZTQyOTNmZjYyNWFmMTUzM2NhMmZhMDEwZi4uMmQ3NzAyM2JmYTBk
NjM3OGUyMGExYWM1ODMyODJmYWI0NzhjOGQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBA
IC0yOCw5ICsyOCwxMCBAQAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZD
T05URU5US0VZU0VTU0lPTikKIAogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAi
Q0RNSW5zdGFuY2VTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19D
TEFTUyBBVkNvbnRlbnRLZXlSZXF1ZXN0OwpAQCAtNDIsNiArNDMsOCBAQCBPQkpDX0NMQVNTIFdl
YkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzsKKwog
Y2xhc3MgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMgZmluYWwgOiBwdWJsaWMg
Q0RNSW5zdGFuY2UsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQz4gewogcHVibGljOgogICAgIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDKCk7CkBAIC01OCwxNSArNjEsOSBAQCBwdWJsaWM6CiAgICAgU3VjY2Vzc1ZhbHVl
IHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7CiAgICAgU3VjY2Vzc1ZhbHVl
IHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIFN1
Y2Nlc3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAg
IFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIAotICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sp
IGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrKSBmaW5hbDsKLSAg
ICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrKSBmaW5hbDsKLSAgICB2b2lkIGNsb3NlU2Vzc2lvbihj
b25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCByZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRh
dGFDYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3Qg
U3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBzZXRDbGllbnQoQ0RNSW5zdGFuY2VDbGllbnQmKSBm
aW5hbDsKLSAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWw7CisgICAgdm9pZCBwcm9jZXNzQ29u
dGVudEtleVJlcXVlc3RGb3JTZXNzaW9uKENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQyYsIFJldGFpblB0cjxOU1N0cmluZz4mJiBpZGVudGlmaWVyLCBSZXRhaW5QdHI8
TlNEYXRhPiYmIGluaXREYXRhKTsKIAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29u
c3QgZmluYWw7CiAKQEAgLTc5LDIxICs3Niw2MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXNzaW9u
SWRlbnRpZmllckNoYW5nZWQoTlNEYXRhICopOwogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVU
b0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCk7CiAKKyAgICBOU1VS
TCAqc3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZURpcmVjdG9yeS5n
ZXQoKTsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24gKmNvbnRlbnRLZXlTZXNzaW9uKCkgeyBy
ZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9CisgICAgU2hhcmVk
QnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlm
aWNhdGUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBib29sIGlzTGljZW5zZVR5cGVTdXBwb3J0
ZWQoTGljZW5zZVR5cGUpIGNvbnN0OworICAgIHZvaWQgcHJvY2Vzc05leHRDb250ZW50S2V5UmVx
dWVzdCgpOwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHMoKTsKKyAgICBz
dHJ1Y3QgQ29udGVudEtleVJlcXVlc3QgeworICAgICAgICBXZWFrUHRyPENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gc2Vzc2lvbkluc3RhbmNlOworICAgICAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+
IGluaXREYXRhOworICAgIH07CisgICAgVmVjdG9yPENvbnRlbnRLZXlSZXF1ZXN0PiBtX2N1cnJl
bnRSZXF1ZXN0czsKKworICAgIEhhc2hNYXA8UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+
LCBXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1f
cmVxdWVzdE1hcDsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNh
dGU7CiAgICAgYm9vbCBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgeyB0cnVlIH07CiAgICAgUmV0
YWluUHRyPE5TVVJMPiBtX3N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgUmV0YWluUHRyPEFWQ29udGVu
dEtleVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVz
dD4gbV9yZXF1ZXN0OwogICAgIFJldGFpblB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25E
ZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKK307CisKK2NsYXNzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb24sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM+IHsKK3B1YmxpYzoKKyAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmKTsKKwor
ICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgorICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2spIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrKSBm
aW5hbDsKKyAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjaykgZmluYWw7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
LCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjaykgZmluYWw7CisgICAgdm9p
ZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBz
ZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYpIGZpbmFsOworICAg
IHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbDsKKworICAgIHZvaWQgZGlkUHJvdmlkZVJlcXVlc3Qo
QVZDb250ZW50S2V5UmVxdWVzdCAqKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVSZW5ld2luZ1JlcXVl
c3QoQVZDb250ZW50S2V5UmVxdWVzdCAqKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVQZXJzaXN0YWJs
ZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqKTsKKyAgICB2b2lkIGRpZEZhaWxUb1Byb3Zp
ZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKiwgTlNFcnJvciAqKTsKKyAgICB2b2lkIHJl
cXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtleVJlcXVlc3QgKik7CisgICAgYm9vbCBzaG91bGRS
ZXRyeVJlcXVlc3RGb3JSZWFzb24oQVZDb250ZW50S2V5UmVxdWVzdCAqLCBOU1N0cmluZyAqKTsK
KyAgICB2b2lkIHNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChOU0RhdGEgKik7CisgICAgdm9pZCBv
dXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChi
b29sKTsKKworICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzKCk7CisKK3ByaXZh
dGU6CisgICAgYm9vbCBpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKExpY2Vuc2VUeXBlKSBjb25zdDsK
KworICAgIFJlZjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9pbnN0YW5j
ZTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIFZl
Y3RvcjxSZXRhaW5QdHI8TlNEYXRhPj4gbV9leHBpcmVkU2Vzc2lvbnM7Ci0gICAgQ0RNSW5zdGFu
Y2VDbGllbnQqIG1fY2xpZW50OworICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
PiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CiAKICAgICBMaWNlbnNlQ2FsbGJh
Y2sgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrOwpAQCAtMTAxLDYgKzEzOSw3IEBAIHByaXZhdGU6
CiAgICAgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgbV9jbG9zZVNlc3Npb25DYWxsYmFjazsKICAgICBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrIG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjazsKIH07
CisKIH0KIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DRE1fSU5TVEFOQ0UoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMsIFdlYkNvcmU6OkNETUluc3RhbmNlOjpJ
bXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbQppbmRleCBkZjNiYzA5ODAyYWM2YmUzNWMwMWQ2MjM5ZWJmODVkMGY1YTQwOWFhLi4xYWRk
Y2IwNTJkYjEyYzQyOGRmYTMyNTg4NWU4YzA3ODFjYTQ5OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbQpAQCAtMjIxLDE5ICsyMjEsMTIyIEBAIENETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvCiAg
ICAgcmV0dXJuIFN1Y2NlZWRlZDsKIH0KIAotYm9vbCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6aXNMaWNlbnNlVHlwZVN1cHBvcnRlZChMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSkgY29uc3QKK1JlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKCkKIHsKLSAgICBzd2l0Y2ggKGxpY2Vuc2VU
eXBlKSB7Ci0gICAgY2FzZSBDRE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExpY2Vuc2U6Ci0gICAg
ICAgIHJldHVybiBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgc3VwcG9ydHNQZXJzaXN0ZW50
S2V5cygpOwotICAgIGNhc2UgQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZDoK
LSAgICAgICAgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCAmJiBzdXBwb3J0c1BlcnNp
c3RhYmxlU3RhdGUoKTsKLSAgICBjYXNlIENETVNlc3Npb25UeXBlOjpUZW1wb3Jhcnk6Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCp0aGlzKSk7Cit9CisKK3ZvaWQgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnByb2Nlc3NDb250ZW50S2V5UmVxdWVzdEZvclNl
c3Npb24oQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJiBzZXNzaW9u
LCBSZXRhaW5QdHI8TlNTdHJpbmc+JiYgaWRlbnRpZmllciwgUmV0YWluUHRyPE5TRGF0YT4mJiBp
bml0RGF0YSkKK3sKKyAgICBtX2N1cnJlbnRSZXF1ZXN0cy5hcHBlbmQoeyBtYWtlV2Vha1B0cihz
ZXNzaW9uKSwgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShpbml0RGF0YSkgfSk7CisgICAg
aWYgKG1fY3VycmVudFJlcXVlc3RzLnNpemUoKSA9PSAxKQorICAgICAgICBwcm9jZXNzTmV4dENv
bnRlbnRLZXlSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnByb2Nlc3NOZXh0Q29udGVudEtleVJlcXVlc3QoKQoreworICAgIGlmIChtX2N1
cnJlbnRSZXF1ZXN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIG5l
eHRSZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdHMuZmlyc3QoKTsKKyAgICBbbV9zZXNzaW9uIHBy
b2Nlc3NDb250ZW50S2V5UmVxdWVzdFdpdGhJZGVudGlmaWVyOm5leHRSZXF1ZXN0LmlkZW50aWZp
ZXIuZ2V0KCkgaW5pdGlhbGl6YXRpb25EYXRhOm5leHRSZXF1ZXN0LmluaXREYXRhLmdldCgpIG9w
dGlvbnM6bmlsXTsKK30KKworY29uc3QgU3RyaW5nJiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6a2V5U3lzdGVtKCkgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBzX2tleVN5c3RlbSB7ICJjb20uYXBwbGUuZnBzIl9zIH07CisgICAgcmV0dXJu
IHNfa2V5U3lzdGVtOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQorewor
ICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gY3VycmVudFJlcXVlc3QgPSBXVEZNb3ZlKG1fY3VycmVudFJlcXVlc3RzLmZpcnN0
KCkpOworICAgIG1fY3VycmVudFJlcXVlc3RzLnJlbW92ZSgwKTsKKworICAgIGlmICghY3VycmVu
dFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlcXVl
c3RNYXAuc2V0KHJlcXVlc3QsIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZSk7CisgICAg
Y3VycmVudFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNlLT5kaWRQcm92aWRlUmVxdWVzdChyZXF1ZXN0
KTsKKyAgICBwcm9jZXNzTmV4dENvbnRlbnRLZXlSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3Qo
QVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKK3sKKyAgICBpZiAobV9jdXJyZW50UmVxdWVz
dHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0
ID0gV1RGTW92ZShtX2N1cnJlbnRSZXF1ZXN0cy5maXJzdCgpKTsKKyAgICBtX2N1cnJlbnRSZXF1
ZXN0cy5yZW1vdmUoMCk7CisKKyAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5j
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0LCBjdXJy
ZW50UmVxdWVzdC5zZXNzaW9uSW5zdGFuY2UpOworICAgIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25J
bnN0YW5jZS0+ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBwcm9jZXNz
TmV4dENvbnRlbnRLZXlSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVQZXJzaXN0YWJsZVJlcXVlc3QoQVZDb250ZW50S2V5
UmVxdWVzdCAqcmVxdWVzdCkKK3sKKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdHMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0ID0gV1RGTW92ZSht
X2N1cnJlbnRSZXF1ZXN0cy5maXJzdCgpKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0cy5yZW1vdmUo
MCk7CisKKyAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0LCBjdXJyZW50UmVxdWVzdC5z
ZXNzaW9uSW5zdGFuY2UpOworICAgIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZS0+ZGlk
UHJvdmlkZVBlcnNpc3RhYmxlUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBwcm9jZXNzTmV4dENvbnRl
bnRLZXlSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVl
c3QsIE5TRXJyb3IgKmVycm9yKQoreworICAgIGlmIChhdXRvIHNlc3Npb25JbnRlcmZhY2UgPSBt
X3JlcXVlc3RNYXAuZ2V0KHJlcXVlc3QpKQorICAgICAgICBzZXNzaW9uSW50ZXJmYWNlLT5kaWRG
YWlsVG9Qcm92aWRlUmVxdWVzdChyZXF1ZXN0LCBlcnJvcik7Cit9CisKK3ZvaWQgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtl
eVJlcXVlc3QgKnJlcXVlc3QpCit7CisgICAgaWYgKGF1dG8gc2Vzc2lvbkludGVyZmFjZSA9IG1f
cmVxdWVzdE1hcC5nZXQocmVxdWVzdCkpCisgICAgICAgIHNlc3Npb25JbnRlcmZhY2UtPnJlcXVl
c3REaWRTdWNjZWVkKHJlcXVlc3QpOworfQorCitib29sIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpzaG91bGRSZXRyeVJlcXVlc3RGb3JSZWFzb24oQVZDb250ZW50S2V5UmVx
dWVzdCAqcmVxdWVzdCwgTlNTdHJpbmcgKnJlYXNvbikKK3sKKyAgICBpZiAoYXV0byBzZXNzaW9u
SW50ZXJmYWNlID0gbV9yZXF1ZXN0TWFwLmdldChyZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJuIHNl
c3Npb25JbnRlcmZhY2UtPnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihyZXF1ZXN0LCByZWFz
b24pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YSAqc2Vzc2lvbklk
ZW50aWZpZXIpCit7CisgICAgZm9yIChhdXRvIHNlc3Npb25JbnRlcmZhY2UgOiBtX3JlcXVlc3RN
YXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHNlc3Npb25JbnRlcmZhY2UpCisgICAgICAgICAg
ICBzZXNzaW9uSW50ZXJmYWNlLT5zZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoc2Vzc2lvbklkZW50
aWZpZXIpOwogICAgIH0KIH0KIAotVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKCkKK3ZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRl
cm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wgb2JzY3VyZWQpCit7CisgICAgZm9yIChhdXRvIHNl
c3Npb25JbnRlcmZhY2UgOiBtX3JlcXVlc3RNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHNl
c3Npb25JbnRlcmZhY2UpCisgICAgICAgICAgICBzZXNzaW9uSW50ZXJmYWNlLT5vdXRwdXRPYnNj
dXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChvYnNjdXJlZCk7
CisgICAgfQorfQorCitDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyhSZWY8Q0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+JiYgaW5zdGFuY2UpCisgICAgOiBtX2luc3RhbmNl
KFdURk1vdmUoaW5zdGFuY2UpKQoreworfQorCitWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKCkKIHsKICAg
ICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5NzE0MSk6IHVzZSB0aGUgZnV0dXJlIEFWQ29u
dGVudEtleVJlcXVlc3Qga2V5SUQgcHJvcGVydHksIHJhdGhlciB0aGFuIHBhcnNpbmcgaXQgb3V0
IG9mIHRoZSBpbml0CiAgICAgLy8gZGF0YSwgdG8gZ2V0IHRoZSBrZXlJRC4KQEAgLTI1MCwxNCAr
MzUzLDE0IEBAIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sgY2FsbGJhY2sp
CiB7CiAgICAgaWYgKCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBlKSkgewogICAg
ICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxz
ZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9zZXJ2ZXJD
ZXJ0aWZpY2F0ZSkgeworICAgIGlmICghbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkg
ewogICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygp
LCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI3NSw3ICszNzgs
NyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZQogICAgIH0KIAogICAgIG1fcmVxdWVzdExpY2Vu
c2VDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwotICAgIFttX3Nlc3Npb24gcHJvY2Vzc0Nv
bnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6aWRlbnRpZmllci5nZXQoKSBpbml0aWFsaXph
dGlvbkRhdGE6aW5pdGlhbGl6YXRpb25EYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKKyAgICBtX2lu
c3RhbmNlLT5wcm9jZXNzQ29udGVudEtleVJlcXVlc3RGb3JTZXNzaW9uKCp0aGlzLCBXVEZNb3Zl
KGlkZW50aWZpZXIpLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKQEAgLTI5NiwxNCArMzk5LDIzIEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4
Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vu
c2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChy
ZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8gZXhwaXJlZFNl
c3Npb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAg
IGZvciAoYXV0byYgc2Vzc2lvbiA6IG1fZXhwaXJlZFNlc3Npb25zKQotICAgICAgICAgICAgW2V4
cGlyZWRTZXNzaW9ucyBhZGRPYmplY3Q6c2Vzc2lvbi5nZXQoKV07IAotICAgICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7Ci0gICAgICAgIFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5k
aW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRl
bnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDptX3N0b3Jh
Z2VEaXJlY3RvcnkuZ2V0KCldOworICAgICAgICAgICAgW2V4cGlyZWRTZXNzaW9ucyBhZGRPYmpl
Y3Q6c2Vzc2lvbi5nZXQoKV07CisKKyAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3Rh
bmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOworICAgICAgICBhdXRvKiBzdG9yYWdlRGlyZWN0b3J5
ID0gbV9pbnN0YW5jZS0+c3RvcmFnZURpcmVjdG9yeSgpOworCisgICAgICAgIGlmICghY2VydGlm
aWNhdGUgfHwgIXN0b3JhZ2VEaXJlY3RvcnkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNl
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4g
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgW2dl
dEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJl
cG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZp
ZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VEaXJlY3RvcnldOwogICAgICAg
ICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vl
ZGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMzMywyMiArNDQ1LDI0IEBAIHZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5CiAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayBjYWxsYmFj
aykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2Fk
U2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrIGNhbGxiYWNrKQogewog
ICAgIFVOVVNFRF9QQVJBTShvcmlnaW4pOwogICAgIGlmIChsaWNlbnNlVHlwZSA9PSBMaWNlbnNl
VHlwZTo6UGVyc2lzdGVudFVzYWdlUmVjb3JkKSB7Ci0gICAgICAgIGlmICghbV9wZXJzaXN0ZW50
U3RhdGVBbGxvd2VkIHx8ICFtX3N0b3JhZ2VEaXJlY3RvcnkpIHsKKyAgICAgICAgYXV0byogc3Rv
cmFnZURpcmVjdG9yeSA9IG1faW5zdGFuY2UtPnN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICAgICAg
aWYgKCFtX2luc3RhbmNlLT5wZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgfHwgc3RvcmFnZURpcmVj
dG9yeSkgewogICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNz
aW9uVHlwZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFt
X3NlcnZlckNlcnRpZmljYXRlKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6
T3RoZXIpOworICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNl
cnRpZmljYXRlKCk7CisgICAgICAgIGlmICghY2VydGlmaWNhdGUpIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCwg
U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Npb25EYXRhKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBt
X3NlcnZlckNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwotICAgICAgICBmb3IgKE5TRGF0YSogZXhw
aXJlZFNlc3Npb25EYXRhIGluIFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5n
RXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQo
KSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6bV9zdG9yYWdlRGlyZWN0b3J5LmdldCgpXSkgeworICAg
ICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtnZXRBVkNvbnRlbnRLZXlT
ZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZp
ZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZURpcmVj
dG9yeV0pIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhwaXJlZFNlc3Npb24gPSBbTlNQ
cm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhEYXRhOmV4cGlyZWRTZXNz
aW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSBmb3JtYXQ6bnVsbHB0ciBl
cnJvcjpudWxscHRyXTsKICAgICAgICAgICAgIE5TU3RyaW5nICpwbGF5YmFja1Nlc3Npb25JZFZh
bHVlID0gKE5TU3RyaW5nICopW2V4cGlyZWRTZXNzaW9uIG9iamVjdEZvcktleTpQbGF5YmFja1Nl
c3Npb25JZEtleV07CiAgICAgICAgICAgICBpZiAoIVtwbGF5YmFja1Nlc3Npb25JZFZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCkBAIC0zNzAsNyArNDg0LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGMKICAgICB9CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJh
Y2sgY2FsbGJhY2spCiB7CiAgICAgaWYgKG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjaykgewogICAg
ICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9z
ZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQpOwpAQCAtMzg0LDI1ICs0OTgsMjggQEAgdm9pZCBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYsIENsb3NlU2Vzc2kKICAgICAgICAgbV9yZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrKHsgfSwg
c3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICBtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJh
Y2sgPSBudWxscHRyOwogICAgIH0KLSAgICBtX3Nlc3Npb24gPSBudWxscHRyOwogICAgIG1fcmVx
dWVzdCA9IG51bGxwdHI7CiAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxi
YWNrIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayBjYWxsYmFjaykKIHsK
LSAgICBbbV9zZXNzaW9uIGV4cGlyZV07CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxl
IHRvIGV4cGlyZSBpbmRpdmlkdWFsIEFWQ29udGVudEtleVJlcXVlc3RzIHJhdGhlciB0aGFuIHRo
ZSBlbnRpcmUgQVZDb250ZW50S2V5U2Vzc2lvbi4KKyAgICBbbV9pbnN0YW5jZS0+Y29udGVudEtl
eVNlc3Npb24oKSBleHBpcmVdOwogCiAgICAgaWYgKGxpY2Vuc2VUeXBlID09IExpY2Vuc2VUeXBl
OjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQpIHsKLSAgICAgICAgaWYgKCFtX3BlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQgfHwgIW1fc3RvcmFnZURpcmVjdG9yeSB8fCAhbV9zZXJ2ZXJDZXJ0aWZpY2F0ZSkg
eworICAgICAgICBhdXRvKiBzdG9yYWdlRGlyZWN0b3J5ID0gbV9pbnN0YW5jZS0+c3RvcmFnZURp
cmVjdG9yeSgpOworICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZl
ckNlcnRpZmljYXRlKCk7CisKKyAgICAgICAgaWYgKCFtX2luc3RhbmNlLT5wZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKCkgfHwgIXN0b3JhZ2VEaXJlY3RvcnkgfHwgIWNlcnRpZmljYXRlKSB7CiAgICAg
ICAgICAgICBjYWxsYmFjayh7IH0sIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXIgPSBtX3NlcnZlckNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlT
dGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7Ci0gICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vz
c2lvbkRhdGEgaW4gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVk
U2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3Jh
Z2VEaXJlY3RvcnlBdFVSTDptX3N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCldKSB7CisgICAgICAgIGZv
ciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW2dldEFWQ29udGVudEtleVNlc3Npb25D
bGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJ
ZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlRGlyZWN0b3J5XSkg
ewogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpleHBpcmVkU2Vzc2lvbiA9IFtOU1Byb3BlcnR5
TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlMaXN0V2l0aERhdGE6ZXhwaXJlZFNlc3Npb25EYXRh
IG9wdGlvbnM6a0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlIGZvcm1hdDpudWxscHRyIGVycm9yOm51
bGxwdHJdOwogICAgICAgICAgICAgTlNTdHJpbmcgKnBsYXliYWNrU2Vzc2lvbklkVmFsdWUgPSAo
TlNTdHJpbmcgKilbZXhwaXJlZFNlc3Npb24gb2JqZWN0Rm9yS2V5OlBsYXliYWNrU2Vzc2lvbklk
S2V5XTsKICAgICAgICAgICAgIGlmICghW3BsYXliYWNrU2Vzc2lvbklkVmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKQEAgLTQyMiwzNCArNTM5LDMwIEBAIHZvaWQgQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYgc2Vzc2lvCiAgICAgfQogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdG9yZVJlY29yZE9mS2V5
VXNhZ2UoY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBuby1vcDsga2V5IHVzYWdlIGRhdGEgaXMg
c3RvcmVkIGF1dG9tYXRpY2FsbHkuCiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnNldENsaWVudChDRE1JbnN0YW5jZUNsaWVudCYgY2xpZW50KQordm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldENsaWVudChXZWFr
UHRyPENETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpCiB7Ci0gICAgbV9jbGllbnQg
PSAmY2xpZW50OworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQogCi12b2lkIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbGVhckNsaWVudCgpCit2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xlYXJDbGllbnQoKQog
ewogICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKIH0KIAotY29uc3QgU3RyaW5nJiBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5U3lzdGVtKCkgY29uc3QKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzX2tleVN5c3RlbSB7ICJjb20uYXBwbGUuZnBzIl9z
IH07Ci0gICAgcmV0dXJuIHNfa2V5U3lzdGVtOwotfQotCi12b2lkIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0
ICpyZXF1ZXN0KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7CiAg
ICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBpZiAoIW1fcmVxdWVzdExpY2Vuc2VDYWxsYmFj
aykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
ciA9IG1fc2VydmVyQ2VydGlmaWNhdGUgPyBtX3NlcnZlckNlcnRpZmljYXRlLT5jcmVhdGVOU0Rh
dGEoKSA6IG51bGxwdHI7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKKyAg
ICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
KQorICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzID0gdGhpcy0+a2V5SURzKCk7CiAK
ICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAtNDczLDE3ICs1ODYsMTcgQEAgdm9pZCBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZD
b250ZW50S2V5UmVxdWVzdAogICAgIH1dOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29udGVudEtleVJl
cXVlc3QgKnJlcXVlc3QpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpy
ZXF1ZXN0KQogewogICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVBlcnNpc3RhYmxlUmVxdWVz
dChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVQZXJzaXN0YWJsZVJlcXVlc3QoQVZD
b250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKIHsKICAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7
CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZEZhaWxU
b1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QsIE5TRXJyb3IgKmVy
cm9yKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QsIE5TRXJy
b3IgKmVycm9yKQogewogICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKICAgICBVTlVTRURfUEFS
QU0oZXJyb3IpOwpAQCAtNDkxLDcgKzYwNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlCiAg
ICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICpyZXF1ZXN0KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwogICAgIGlmICghbV91cGRhdGVMaWNlbnNlQ2Fs
bGJhY2spCkBAIC01MDQsNyArNjE3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6cmVxdWVzdERpZFN1Y2NlZWQoQVZDb250ZW50S2V5UmVxdWVzdAogICAgIG1f
dXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShr
ZXlTdGF0dXNlcykpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKIH0K
IAotYm9vbCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2hvdWxkUmV0cnlS
ZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QsIE5TU3RyaW5nICpy
ZWFzb24pCitib29sIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3Qs
IE5TU3RyaW5nICpyZWFzb24pCiB7CiAgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwogICAgIFVO
VVNFRF9QQVJBTShyZWFzb24pOwpAQCAtNTEyLDcgKzYyNSw3IEBAIGJvb2wgQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihBVkNv
bnRlbnRLCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhICpzZXNzaW9u
SWRlbnRpZmllcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhICpzZXNzaW9uSWRlbnRpZmllcikK
IHsKICAgICBpZiAoIXNlc3Npb25JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fc2Vzc2lvbklkID0g
ZW1wdHlTdHJpbmcoKTsKQEAgLTUyMyw3ICs2MzYsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhICpzZXNz
aQogICAgIG1fc2Vzc2lvbklkID0gc2Vzc2lvbklkZW50aWZpZXJTdHJpbmcuZ2V0KCk7CiB9CiAK
LXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVk
RHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wgb2JzY3VyZWQp
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0
T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCBv
YnNjdXJlZCkKIHsKICAgICBpZiAoIW1fY2xpZW50IHx8ICFtX3JlcXVlc3QpCiAgICAgICAgIHJl
dHVybjsKQEAgLTU1Niw2ICs2NjksMTggQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmEKICAgICBt
X2NsaWVudC0+dXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpOwogfQogCiti
b29sIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aXNMaWNlbnNl
VHlwZVN1cHBvcnRlZChMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSkgY29uc3QKK3sKKyAgICBzd2l0
Y2ggKGxpY2Vuc2VUeXBlKSB7CisgICAgY2FzZSBDRE1TZXNzaW9uVHlwZTo6UGVyc2lzdGVudExp
Y2Vuc2U6CisgICAgICAgIHJldHVybiBtX2luc3RhbmNlLT5wZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
KCkgJiYgbV9pbnN0YW5jZS0+c3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpOworICAgIGNhc2UgQ0RN
U2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZDoKKyAgICAgICAgcmV0dXJuIG1faW5z
dGFuY2UtPnBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoKSAmJiBtX2luc3RhbmNlLT5zdXBwb3J0c1Bl
cnNpc3RhYmxlU3RhdGUoKTsKKyAgICBjYXNlIENETVNlc3Npb25UeXBlOjpUZW1wb3Jhcnk6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCAxMmJjN2Y2MDJmMWUzZTUzNzcxODZj
M2VjMzVhOWJmNDJjOTQwZDhlLi5jMjAyNjQ2M2MxNGZkNjRjMjVkMzczOGIwYjU1MjExOGNjMmU3
MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjY5
LDkgKzI2OSwyNiBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIE1vY2tDRE1JbnN0YW5jZTo6
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiBTdWNjZWVkZWQ7
CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBs
aWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayBjYWxsYmFjaykKK2NvbnN0IFN0cmlu
ZyYgTW9ja0NETUluc3RhbmNlOjprZXlTeXN0ZW0oKSBjb25zdAogewotICAgIE1vY2tDRE1GYWN0
b3J5KiBmYWN0b3J5ID0gbV9jZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICBz
dGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzX2tleVN5c3RlbSA9IE1BS0VfU1RB
VElDX1NUUklOR19JTVBMKCJvcmcud2Via2l0Lm1vY2siKTsKKworICAgIHJldHVybiBzX2tleVN5
c3RlbTsKK30KKworUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gTW9ja0NETUluc3RhbmNlOjpj
cmVhdGVTZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb24obWFrZVdlYWtQdHIoKnRoaXMpKSk7Cit9CisKK01vY2tDRE1JbnN0YW5jZVNlc3Np
b246Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYgaW5z
dGFuY2UpCisgICAgOiBtX2luc3RhbmNlKFdURk1vdmUoaW5zdGFuY2UpKQoreworfQorCit2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIE1vY2tDRE1G
YWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51
bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIGVtcHR5QXRvbSgpLCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwog
ICAgICAgICByZXR1cm47CkBAIC0yOTUsOSArMzEyLDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJp
bmcKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGlj
ZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVk
KTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgY2FsbGJh
Y2spCiB7Ci0gICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2NkbSA/IG1fY2RtLT5mYWN0
b3J5KCkgOiBudWxscHRyOworICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5j
ZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7
CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTMy
OSw5ICszNDYsOSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIGNvbnN0CiAgICAgY2FsbGJhY2soZmFsc2Us
IFdURk1vdmUoY2hhbmdlZEtleXMpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vz
c1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6bG9hZFNlc3Np
b24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9u
Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9j
ZG0gPyBtX2NkbS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKKyAgICBNb2NrQ0RNRmFjdG9yeSogZmFj
dG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAg
IGlmICghZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpPdGhlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTM0NSw5ICszNjIsOSBAQCB2b2lkIE1v
Y2tDRE1JbnN0YW5jZTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIExvYQogICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRG
YWlsdXJlOjpOb25lKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmNsb3NlU2Vzc2lvbihj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgY2FsbGJhY2spCit2
b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgTW9ja0NETUZh
Y3RvcnkqIGZhY3RvcnkgPSBtX2NkbSA/IG1fY2RtLT5mYWN0b3J5KCkgOiBudWxscHRyOworICAg
IE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3Rv
cnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTM1Nyw5ICszNzQsOSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5j
ZTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBDbG9zZVNlc3Npb25DYWxs
YmFjawogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjpyZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIGlkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRh
dGFDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBpZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBt
X2NkbSA/IG1fY2RtLT5mYWN0b3J5KCkgOiBudWxscHRyOworICAgIE1vY2tDRE1GYWN0b3J5KiBm
YWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAg
ICAgaWYgKCFmYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSwgc3RkOjpudWxsb3B0LCBT
dWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTM3NSwxOCArMzkyLDEx
IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IGlkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2VzCiAgICAgY2FsbGJhY2soV1RGTW92ZShrZXlTdGF0
dXNWZWN0b3IpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5s
ZW5ndGgoKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5z
dGFuY2U6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQordm9pZCBNb2NrQ0RN
SW5zdGFuY2VTZXNzaW9uOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKIHsK
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYWxvbmcgd2l0aCB0aGUg
c3VwcG9ydCBmb3IgcGVyc2lzdGVudC11c2FnZS1yZWNvcmQgc2Vzc2lvbnMuCiB9CiAKLWNvbnN0
IFN0cmluZyYgTW9ja0NETUluc3RhbmNlOjprZXlTeXN0ZW0oKSBjb25zdAotewotICAgIHN0YXRp
YyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNfa2V5U3lzdGVtID0gTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoIm9yZy53ZWJraXQubW9jayIpOwotCi0gICAgcmV0dXJuIHNfa2V5U3lzdGVt
OwotfQotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5o
CmluZGV4IDIxNmQyOWEwYTdjMzM3NmQ4MzM4OTlkMTU0MDAyN2IyODNhZTgzZjQuLjg0ZDNhNmM4
MzBhNzAzZTZhZmJlMTIxODcwYWY3YWM3MWEyY2Y0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDRE0uaCIKICNp
bmNsdWRlICJDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKKyNpbmNsdWRl
ICJDRE1JbnN0YW5jZVNlc3Npb24uaCIKICNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVk
ZSAiTWVkaWFLZXlzUmVxdWlyZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
MTIxLDEwICsxMjIsMTQgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBt
X2ZhY3Rvcnk7CiB9OwogCi1jbGFzcyBNb2NrQ0RNSW5zdGFuY2UgOiBwdWJsaWMgQ0RNSW5zdGFu
Y2UgeworY2xhc3MgTW9ja0NETUluc3RhbmNlIDogcHVibGljIENETUluc3RhbmNlLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TW9ja0NETUluc3RhbmNlPiB7CiBwdWJsaWM6CiAgICAgTW9ja0NETUlu
c3RhbmNlKFdlYWtQdHI8TW9ja0NETT4pOwogCisgICAgTW9ja0NETUZhY3RvcnkqIGZhY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2NkbSA/IG1fY2RtLT5mYWN0b3J5KCkgOiBudWxscHRyOyB9Cisg
ICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQ7IH0KKyAgICBib29sIHBlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ7IH0KKwog
cHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAgICAgU3VjY2Vz
c1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mKSBmaW5hbDsKQEAgLTEzMiw2ICsxMzcsMTkgQEAgcHJpdmF0ZToKICAgICBT
dWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSBmaW5hbDsKICAgICBT
dWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAgICAgU3VjY2Vzc1ZhbHVlIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikg
ZmluYWw7CisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKKyAgICBS
ZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CisKKyAgICBX
ZWFrUHRyPE1vY2tDRE0+IG1fY2RtOworICAgIGJvb2wgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJz
QWxsb3dlZCB7IHRydWUgfTsKKyAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRy
dWUgfTsKK307CisKK2NsYXNzIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24gOiBwdWJsaWMgQ0RNSW5z
dGFuY2VTZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQ
dHI8TW9ja0NETUluc3RhbmNlPiYmKTsKKworcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrKSBmaW5hbDsKICAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjaykgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25D
YWxsYmFjaykgZmluYWw7CkBAIC0xMzksMTEgKzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjaykgZmluYWw7CiAgICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0
IGZpbmFsOwotCi0gICAgV2Vha1B0cjxNb2NrQ0RNPiBtX2NkbTsKLSAgICBib29sIG1fZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgeyB0cnVlIH07Ci0gICAgYm9vbCBtX3BlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQgeyB0cnVlIH07CisgICAgV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+IG1faW5z
dGFuY2U7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350222</attachid>
            <date>2018-09-20 09:59:00 -0700</date>
            <delta_ts>2018-09-21 08:08:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189725-20180920095900.patch</filename>
            <type>text/plain</type>
            <size>83620</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI1MjA3YjJjMjdhYjFk
M2I0MWE5YjM3N2IzZWJlZjg1OWRjYTVhMy4uNTUyYzdkODYxNDVkMjFmN2NmYjc0M2I5OWJhYmVh
ZWZiYWIxODhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAxOC0wOS0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbRU1FXSBJbnRyb2R1Y2Ug
dGhlIGNvbmNlcHQgb2YgQ0RNSW5zdGFuY2VTZXNzaW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgIEN1cnJlbnRseSwgdGhlIHNhbWUgQ0RNSW5zdGFuY2Ug
b3duZWQgYnkgYSBNZWRpYUtleXMgb2JqZWN0IGlzIHBhc3NlZCB0byBldmVyeSBNZWRpYUtleVNl
c3Npb24gY3JlYXRlZCBieSB0aGF0CisgICAgICAgIE1lZGlhS2V5cywgYW5kIHNpbmNlIHRoZSBD
RE1JbnN0YW5jZSBoYXMgb25seSBhIHNpbmdsZSBDRE1JbnN0YW5jZUNsaWVudCwgc3Vic2VxdWVu
dCBNZWRpYUtleVNlc3Npb25zIHByZXZlbnQKKyAgICAgICAgcHJldmlvdXMgb25lcyBmcm9tIGdl
dHRpbmcgdXBkYXRlcy4KKworICAgICAgICBBZGQgYSBuZXcgdmlydHVhbCBpbnRlcmZhY2UsIENE
TUluc3RhbmNlU2Vzc2lvbiwgdG8gYmUgcGFzc2VkIHRvIE1lZGlhS2V5U2Vzc2lvbiB1cG9uIGNy
ZWF0aW9uLiBSZWZhY3RvcgorICAgICAgICBDRE1JbnN0YW5jZUNsZWFyS2V5IGFuZCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyB0byBhZG9wdCB0aGlzIG5ldyBpbnRlcmZhY2Uu
CisKKyAgICAgICAgRHJpdmUtYnkgZml4ZXM6IE1hZGUgYSBudW1iZXIgb2YgdmlydHVhbCBvdmVy
cmlkZXMgaW4gZmluYWwgY2xhc3NlcyBmaW5hbCB0aGVtc2VsdmVzLgorCisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlT
ZXNzaW9uOjpNZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNz
aW9uOjpnZW5lcmF0ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMpOgorICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlz
OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlOjpzZXRIRENQU3RhdHVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlOjpzZXRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2U6OmNsZWFyQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6Y2xlYXJDbGllbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlTGljZW5zZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZUNsZWFyS2V5OjprZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OmtleXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpjbG9zZVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpzdG9y
ZVJlY29yZE9mS2V5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktl
eTo6cmVxdWVzdExpY2Vuc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VDbGVhcktleTo6a2V5cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZUNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OmxvYWRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlQ2xlYXJLZXk6OmNsb3NlU2Vzc2lvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpzdG9yZVJl
Y29yZE9mS2V5VXNhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpwcm9jZXNzQ29udGVu
dEtleVJlcXVlc3RGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpwcm9jZXNzTmV4dENvbnRlbnRLZXlSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlT
eXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVxdWVzdERpZFN1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbik6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklk
ZW50aWZpZXJDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQ
cm90ZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xvc2VTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbGVhckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVQ
ZXJzaXN0YWJsZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVU
b0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppc0xpY2Vuc2VU
eXBlU3VwcG9ydGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjppc0xpY2Vuc2VUeXBlU3VwcG9ydGVkIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjprZXlJRHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xvc2VTZXNzaW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZW1vdmVTZXNzaW9uRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3RvcmVSZWNvcmRPZktleVVzYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpzZXRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmNsZWFyQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0
YW5jZTo6a2V5U3lzdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6Y2xvc2VTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnJlcXVlc3RMaWNlbnNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6dXBkYXRlTGljZW5zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OmxvYWRTZXNzaW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6Y2xvc2VTZXNzaW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6cmVtb3ZlU2Vzc2lv
bkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzdG9y
ZVJlY29yZE9mS2V5VXNhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6ZmFjdG9yeSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OmRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNBbGxvd2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6
cGVyc2lzdGVudFN0YXRlQWxsb3dlZCBjb25zdCk6CisKIDIwMTgtMDktMTggIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIzNjAwNik6IE5l
dyB3YWl0aW5nRm9yS2V5KCkgcmVxdWlyZW1lbnQgYnJlYWtzIE1vZGVybiBFTUUgdGVzdHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHAKaW5kZXggZWI3MmNlMDc3OGU4MWNiYmNmYmViYTQzNGM3ODI4ZGQ5YTEx
NTJhNC4uZGEwZjA5NThiOTg3NzUzODZhYzI3YzgxNzgxNDhhYWIwMDRiMTlmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmNwcApAQCAtNDgsMTQgKzQ4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxNZWRpYUtleXM+JiYga2V5cywgTWVkaWFLZXlT
ZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJl
ZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZT4mJiBpbnN0YW5jZSkKK1Jl
ZjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdlYWtQdHI8TWVkaWFLZXlzPiYmIGtleXMsIE1lZGlhS2V5U2Vz
c2lvblR5cGUgc2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8
Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIGluc3RhbmNl
U2Vzc2lvbikKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhS2V5U2Vz
c2lvbihjb250ZXh0LCBXVEZNb3ZlKGtleXMpLCBzZXNzaW9uVHlwZSwgdXNlRGlzdGluY3RpdmVJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShpbnN0YW5jZSkpKTsK
KyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhS2V5U2Vzc2lvbihjb250ZXh0
LCBXVEZNb3ZlKGtleXMpLCBzZXNzaW9uVHlwZSwgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBX
VEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShpbnN0YW5jZVNlc3Npb24pKSk7CiAgICAg
c2Vzc2lvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLU1l
ZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFdlYWtQdHI8TWVkaWFLZXlzPiYmIGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vz
c2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGltcGxl
bWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2U+JiYgaW5zdGFuY2UpCitNZWRpYUtleVNlc3Npb246
Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRy
PE1lZGlhS2V5cz4mJiBrZXlzLCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlLCBib29s
IHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVm
PENETUluc3RhbmNlU2Vzc2lvbj4mJiBpbnN0YW5jZVNlc3Npb24pCiAgICAgOiBBY3RpdmVET01P
YmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2tleXMoV1RGTW92ZShrZXlzKSkKICAgICAsIG1fZXhw
aXJhdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKQpAQCAtNjMs
MTAgKzYzLDEwIEBAIE1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYWtQdHI8TWVkaWFLCiAgICAgLCBtX3VzZURpc3RpbmN0
aXZlSWRlbnRpZmllcih1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIpCiAgICAgLCBtX3Nlc3Npb25U
eXBlKHNlc3Npb25UeXBlKQogICAgICwgbV9pbXBsZW1lbnRhdGlvbihXVEZNb3ZlKGltcGxlbWVu
dGF0aW9uKSkKLSAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShpbnN0YW5jZSkpCisgICAgLCBtX2lu
c3RhbmNlU2Vzc2lvbihXVEZNb3ZlKGluc3RhbmNlU2Vzc2lvbikpCiAgICAgLCBtX2V2ZW50UXVl
dWUoKnRoaXMpCiB7Ci0gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS8jZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJjZXJ0aWZpY2F0ZQorICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXMtY3JlYXRlc2Vzc2lvbgog
ICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAgICAgLy8gY3JlYXRl
U2Vzc2lvbigpLCBjdGQuCiAKQEAgLTg4LDEzICs4OCwxMyBAQCBNZWRpYUtleVNlc3Npb246Ok1l
ZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPE1l
ZGlhSwogICAgIFVOVVNFRF9QQVJBTShtX2Nsb3NlZCk7CiAgICAgVU5VU0VEX1BBUkFNKG1fdW5p
bml0aWFsaXplZCk7CiAKLSAgICBtX2luc3RhbmNlLT5zZXRDbGllbnQoKnRoaXMpOworICAgIG1f
aW5zdGFuY2VTZXNzaW9uLT5zZXRDbGllbnQobV9jZG1JbnN0YW5jZUNsaWVudFdlYWtQdHJGYWN0
b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpKTsKIH0KIAogTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFL
ZXlTZXNzaW9uKCkKIHsKICAgICBtX2tleVN0YXR1c2VzLT5kZXRhY2hTZXNzaW9uKCk7Ci0gICAg
bV9pbnN0YW5jZS0+Y2xlYXJDbGllbnQoKTsKKyAgICBtX2luc3RhbmNlU2Vzc2lvbi0+Y2xlYXJD
bGllbnQoKTsKIH0KIAogY29uc3QgU3RyaW5nJiBNZWRpYUtleVNlc3Npb246OnNlc3Npb25JZCgp
IGNvbnN0CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRl
UmVxdWVzdChjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnUKICAgICAg
ICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgbV9p
bnN0YW5jZS0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBXVEZN
b3ZlKGluaXREYXRhKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5z
dGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3Rh
bmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBX
VEZNb3ZlKGluaXREYXRhKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTcs
NyArMjE3LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBB
dG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnUKICAgICAgICAgICAgIC8vIDEwLjEw
LiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgICAgICAgICBt
X3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBtZXNzYWdlVHlwZSwgc2Vzc2lvbklkLCBzdWNj
ZWVkZWRdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIC8vIDEwLjEwLjEuIElmIGFueSBv
ZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ldyBE
T01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KLSAg
ICAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlOjpTdWNjZXNzVmFsdWU6
OkZhaWxlZCkgeworICAgICAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkgewogICAgICAgICAgICAgICAgICAgICBwcm9t
aXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pCiAgICAgICAgIC8vIDguNi4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogICAg
ICAgICAvLyA4LjcuIExldCBjZG0gYmUgdGhlIENETSBpbnN0YW5jZSByZXByZXNlbnRlZCBieSB0
aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAgICAgLy8gOC44LiBVc2UgdGhl
IGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2Ut
PmxvYWRTZXNzaW9uKG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRTZXNzaW9uSWQsIG9yaWdpbiwg
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgc2FuaXRpemVkU2Vzc2lvbklkID0gKnNhbml0aXplZFNlc3Npb25JZF0gKHN0ZDo6
b3B0aW9uYWw8Q0RNSW5zdGFuY2U6OktleVN0YXR1c1ZlY3Rvcj4mJiBrbm93bktleXMsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiYmIGV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2U6
Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQs
IENETUluc3RhbmNlOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJsZSB7CisgICAg
ICAgIG1faW5zdGFuY2VTZXNzaW9uLT5sb2FkU2Vzc2lvbihtX3Nlc3Npb25UeXBlLCAqc2FuaXRp
emVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNhbml0aXplZFNlc3Npb25JZCA9ICpzYW5p
dGl6ZWRTZXNzaW9uSWRdIChzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yPiYmIGtub3duS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlv
biwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkLCBDRE1JbnN0YW5jZVNl
c3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBmYWlsdXJlKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IC8vIDguOC4xLiBJZiB0aGVyZSBpcyBubyBkYXRhIHN0b3JlZCBmb3IgdGhlIHNhbml0aXplZCBz
ZXNzaW9uIElEIGluIHRoZSBvcmlnaW4sIHJlc29sdmUgcHJvbWlzZSB3aXRoIGZhbHNlIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgICAgIC8vIDguOC4yLiBJZiB0aGUgc3RvcmVkIHNl
c3Npb24ncyBzZXNzaW9uIHR5cGUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IE1lZGlh
S2V5U2Vzc2lvbiBzZXNzaW9uIHR5cGUsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVh
dGVkIFR5cGVFcnJvci4KICAgICAgICAgICAgIC8vIDguOC4zLiBMZXQgc2Vzc2lvbiBkYXRhIGJl
IHRoZSBkYXRhIHN0b3JlZCBmb3IgdGhlIHNhbml0aXplZCBzZXNzaW9uIElEIGluIHRoZSBvcmln
aW4uIFRoaXMgbXVzdCBub3QgaW5jbHVkZSBkYXRhIGZyb20gb3RoZXIgb3JpZ2luKHMpIG9yIHRo
YXQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBvcmlnaW4uCkBAIC0yOTksMTkgKzI5OSwxOSBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAgICAgICAgLy8gICA4LjguNy4yLiBMZXQg
bWVzc2FnZSB0eXBlIGJlIHRoZSBhcHByb3ByaWF0ZSBNZWRpYUtleU1lc3NhZ2VUeXBlIGZvciB0
aGUgbWVzc2FnZS4KICAgICAgICAgICAgIC8vIE5PVEU6IFN0ZXBzIDguOC4xLiB0aHJvdWdoIDgu
OC43LiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gQ0RNSW5zdGFuY2UuCiAKLSAgICAgICAgICAg
IGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7Cisg
ICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZhaWx1cmUpIHsKLSAgICAg
ICAgICAgICAgICBjYXNlIENETUluc3RhbmNlOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lv
bkRhdGE6CisgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25M
b2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YToKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok1p
c21hdGNoZWRTZXNzaW9uVHlwZToKKyAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vz
c2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGU6CiAgICAgICAg
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6U2Vzc2lvbkxv
YWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkOgorICAgICAgICAgICAgICAgIGNhc2UgQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6OlF1b3RhRXhjZWVkZWQ6CiAgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChRdW90YUV4Y2VlZGVkRXJyb3IpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6U2Vz
c2lvbkxvYWRGYWlsdXJlOjpOb25lOgotICAgICAgICAgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6
OlNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXI6CisgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZToKKyAgICAgICAgICAgICAgICBj
YXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcjoKICAgICAg
ICAgICAgICAgICAgICAgLy8gSW4gYW55IG90aGVyIGNhc2UsIHRoZSBzZXNzaW9uIGxvYWQgZmFp
bHVyZSB3aWxsIGNhdXNlIGEgcmVqZWN0aW9uIGluIHRoZSBmb2xsb3dpbmcgdGFzay4KICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzIwLDcgKzMyMCw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgICAgICAgICAvLyA4LjkuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAgICAgICAgIG1fdGFza1F1ZXVl
LmVucXVldWVUYXNrKFt0aGlzLCBrbm93bktleXMgPSBXVEZNb3ZlKGtub3duS2V5cyksIGV4cGly
YXRpb24gPSBXVEZNb3ZlKGV4cGlyYXRpb24pLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwg
c2FuaXRpemVkU2Vzc2lvbklkLCBzdWNjZWVkZWQsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyA4LjkuMS4gSWYgYW55IG9mIHRoZSBw
cmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgdGhlIGFwcHJvcHJp
YXRlIGVycm9yIG5hbWUuCi0gICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0
YW5jZTo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3VjY2Vl
ZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKICAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTM4OCw3ICszODgs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVz
cG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAvLyA2LjUuIExldCBzZXNzaW9u
IGNsb3NlZCBiZSBmYWxzZS4KICAgICAgICAgLy8gNi42LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5z
dGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAg
ICAgICAgIC8vIDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBz
OgotICAgICAgICBtX2luc3RhbmNlLT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Np
b25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2U6OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0
aW9uYWw8Q0RNSW5zdGFuY2U6Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2U6OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+
dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgKnNhbml0aXplZFJlc3Bv
bnNlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5j
ZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYKICAgICAgICAgICAgIC8vICAgICBQcm9jZXNzIHNhbml0aXplZCByZXNwb25z
ZSwgbm90IHN0b3JpbmcgYW55IHNlc3Npb24gZGF0YS4KICAgICAgICAgICAgIC8vIE5PVEU6IFN0
ZXBzIDYuNy4xLiBhbmQgNi43LjIuIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBDRE1JbnN0YW5j
ZS4KIAotICAgICAgICAgICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZTo6U3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KQEAgLTQ1MCwxNiArNDUwLDE2IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29u
c3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtZXNzYWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBNZWRp
YUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChtZXNzYWdlLT5maXJzdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDRE1J
bnN0YW5jZTo6TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0OgorICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVz
dDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZSA9IE1lZGlhS2V5TWVz
c2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6TWVzc2FnZVR5
cGU6OkxpY2Vuc2VSZW5ld2FsOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbDoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlVHlwZSA9IE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VS
ZW5ld2FsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZWxlYXNl
OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3Nh
Z2VUeXBlOjpMaWNlbnNlUmVsZWFzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlVHlwZSA9IE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZWxlYXNlOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBD
RE1JbnN0YW5jZTo6TWVzc2FnZVR5cGU6OkluZGl2aWR1YWxpemF0aW9uUmVxdWVzdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlVHlwZTo6
SW5kaXZpZHVhbGl6YXRpb25SZXF1ZXN0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2VUeXBlID0gTWVkaWFLZXlNZXNzYWdlVHlwZTo6SW5kaXZpZHVhbGl6YXRpb25SZXF1ZXN0
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtNTAwLDcgKzUwMCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpjbG9zZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRh
c2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgLy8gNS4xLiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgc2Vz
c2lvbidzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAgICAgLy8gNS4yLiBVc2UgY2RtIHRvIGNs
b3NlIHRoZSBrZXkgc2Vzc2lvbiBhc3NvY2lhdGVkIHdpdGggc2Vzc2lvbi4KLSAgICAgICAgbV9p
bnN0YW5jZS0+Y2xvc2VTZXNzaW9uKG1fc2Vzc2lvbklkLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPmNsb3NlU2Vzc2lvbihtX3Nlc3Npb25JZCwgW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
OjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0LjMu
IExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2Rt
IHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZS0+cmVt
b3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChDRE1J
bnN0YW5jZTo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVk
QnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YSht
X3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4m
JiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgICAgICAgICB1cGRhdGVFeHBp
cmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwogCiAgICAg
ICAgICAgICAgICAgLy8gNC41LjMuIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxl
ZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0
aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KLSAgICAgICAgICAgICAgICBpZiAoc3VjY2VlZGVk
ID09IENETUluc3RhbmNlOjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkgeworICAgICAgICAgICAgICAg
IGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWU6OkZhaWxl
ZCkgewogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJy
b3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAt
NTk5LDcgKzU5OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZShNZWRp
YUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyCiAgICAgbV9ldmVudFF1ZXVl
LmVucXVldWVFdmVudChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwogfQogCi12b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VDbGllbnQ6OktleVN0YXR1c1Zl
Y3RvciYmIGlucHV0U3RhdHVzZXMpCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3Rh
dHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbnB1dFN0YXR1c2Vz
KQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3VwZGF0
ZS1rZXktc3RhdHVzZXMKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAx
NgpAQCAtNjEzLDIxICs2MTMsMjEgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0
YXR1c2VzKENETUluc3RhbmNlQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3ImJiBpbnAKICAgICAvLyAg
ICAgNC4yLjEuIExldCBwYWlyIGJlIHRoZSBwYWlyLgogICAgIC8vICAgICA0LjIuMi4gSW5zZXJ0
IGFuIGVudHJ5IGZvciBwYWlyJ3Mga2V5IElEIGludG8gc3RhdHVzZXMgd2l0aCB0aGUgdmFsdWUg
b2YgcGFpcidzIE1lZGlhS2V5U3RhdHVzIHZhbHVlLgogCi0gICAgc3RhdGljIGF1dG8gdG9NZWRp
YUtleVN0YXR1cyA9IFtdIChDRE1JbnN0YW5jZTo6S2V5U3RhdHVzIHN0YXR1cykgLT4gTWVkaWFL
ZXlTdGF0dXMgeworICAgIHN0YXRpYyBhdXRvIHRvTWVkaWFLZXlTdGF0dXMgPSBbXSAoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXMgc3RhdHVzKSAtPiBNZWRpYUtleVN0YXR1cyB7CiAgICAg
ICAgIHN3aXRjaCAoc3RhdHVzKSB7Ci0gICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6OktleVN0YXR1
czo6VXNhYmxlOgorICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzOjpV
c2FibGU6CiAgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OlVzYWJsZTsKLSAgICAg
ICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5U3RhdHVzOjpFeHBpcmVkOgorICAgICAgICBjYXNlIENE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzOjpFeHBpcmVkOgogICAgICAgICAgICAgcmV0dXJu
IE1lZGlhS2V5U3RhdHVzOjpFeHBpcmVkOwotICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlT
dGF0dXM6OlJlbGVhc2VkOgorICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzOjpSZWxlYXNlZDoKICAgICAgICAgICAgIHJldHVybiBNZWRpYUtleVN0YXR1czo6UmVsZWFz
ZWQ7Ci0gICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6OktleVN0YXR1czo6T3V0cHV0UmVzdHJpY3Rl
ZDoKKyAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6T3V0cHV0UmVz
dHJpY3RlZDoKICAgICAgICAgICAgIHJldHVybiBNZWRpYUtleVN0YXR1czo6T3V0cHV0UmVzdHJp
Y3RlZDsKLSAgICAgICAgY2FzZSBDRE1JbnN0YW5jZTo6S2V5U3RhdHVzOjpPdXRwdXREb3duc2Nh
bGVkOgorICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzOjpPdXRwdXRE
b3duc2NhbGVkOgogICAgICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpPdXRwdXREb3du
c2NhbGVkOwotICAgICAgICBjYXNlIENETUluc3RhbmNlOjpLZXlTdGF0dXM6OlN0YXR1c1BlbmRp
bmc6CisgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OlN0YXR1c1Bl
bmRpbmc6CiAgICAgICAgICAgICByZXR1cm4gTWVkaWFLZXlTdGF0dXM6OlN0YXR1c1BlbmRpbmc7
Ci0gICAgICAgIGNhc2UgQ0RNSW5zdGFuY2U6OktleVN0YXR1czo6SW50ZXJuYWxFcnJvcjoKKyAg
ICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6SW50ZXJuYWxFcnJvcjoK
ICAgICAgICAgICAgIHJldHVybiBNZWRpYUtleVN0YXR1czo6SW50ZXJuYWxFcnJvcjsKICAgICAg
ICAgfTsKIApAQCAtNjY2LDcgKzY2Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZXNzaW9u
Q2xvc2VkKCkKICAgICBpZiAobV9zZXNzaW9uVHlwZSA9PSBNZWRpYUtleVNlc3Npb25UeXBlOjpQ
ZXJzaXN0ZW50VXNhZ2VSZWNvcmQpIHsKICAgICAgICAgLy8gMi4xLiBMZXQgY2RtIGJlIHRoZSBD
RE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgc2Vzc2lvbidzIGNkbSBpbnN0YW5jZSB2YWx1ZS4K
ICAgICAgICAgLy8gMi4yLiBVc2UgY2RtIHRvIHN0b3JlIHNlc3Npb24ncyByZWNvcmQgb2Yga2V5
IHVzYWdlLCBpZiBpdCBleGlzdHMuCi0gICAgICAgIG1faW5zdGFuY2UtPnN0b3JlUmVjb3JkT2ZL
ZXlVc2FnZShtX3Nlc3Npb25JZCk7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5zdG9yZVJl
Y29yZE9mS2V5VXNhZ2UobV9zZXNzaW9uSWQpOwogICAgIH0KIAogICAgIC8vIDMuIFJ1biB0aGUg
VXBkYXRlIEtleSBTdGF0dXNlcyBhbGdvcml0aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBh
biBlbXB0eSBzZXF1ZW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDBkMTkwMGUzMWJjN2JkNDkxN2U4
MjZiNjEwMzMxZWM1ODhjOTUxMzIuLjgwZWI5NmFmM2YwNjM2YWUwZDE3MDRkMmNmMjI1ZTViNGQ1
YzAyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMzEsNyArMzEsNyBAQAogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJD
RE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUg
IkRPTVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAi
R2VuZXJpY0V2ZW50UXVldWUuaCIKQEAgLTUyLDkgKzUyLDkgQEAgY2xhc3MgTWVkaWFLZXlTdGF0
dXNNYXA7CiBjbGFzcyBNZWRpYUtleXM7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWNsYXNzIE1l
ZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4s
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFLZXlTZXNzaW9uPiwgcHVibGljIENETUluc3Rh
bmNlQ2xpZW50IHsKK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFLZXlTZXNz
aW9uPiwgcHVibGljIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
V2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGlu
Y3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOworICAgIHN0
YXRpYyBSZWY8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3Rp
bmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7
CiAgICAgdmlydHVhbCB+TWVkaWFLZXlTZXNzaW9uKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVk
PE1lZGlhS2V5U2Vzc2lvbj46OnJlZjsKQEAgLTc4LDE0ICs3OCwxNCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+
PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKIHByaXZhdGU6Ci0g
ICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWFrUHRyPE1lZGlh
S2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CisgICAgTWVkaWFLZXlTZXNzaW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlT
ZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJl
ZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwogICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFL
ZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBp
cmF0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAotICAgIC8vIENETUluc3RhbmNlQ2xp
ZW50Ci0gICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZUNsaWVudDo6S2V5U3Rh
dHVzVmVjdG9yJiYpIG92ZXJyaWRlOworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAor
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlT
dGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gTWVkaWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CkBAIC0xMTAs
MTMgKzExMCwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXI7CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+
IG1faW1wbGVtZW50YXRpb247Ci0gICAgUmVmPENETUluc3RhbmNlPiBtX2luc3RhbmNlOworICAg
IFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2VTZXNzaW9uOwogICAgIEdlbmVyaWNF
dmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3Rh
c2tRdWV1ZTsKICAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2Fn
ZTsKICAgICBkb3VibGUgbV9maXJzdERlY3J5cHRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xh
dGVzdERlY3J5cHRUaW1lIHsgMCB9OwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1
ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKKyAgICBXZWFrUHRyRmFjdG9yeTxD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IG1fY2RtSW5zdGFuY2VDbGllbnRXZWFrUHRyRmFjdG9y
eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCAzOWZiYjgwZTk3NjE0
NmNiNzhhNjI0ZjcxYjJhZTlmMDViYWIyYTJhLi5jZWMzYjg2ODY2ODM2ZTYwYjlhYTkxZmY3NmQz
MDc5MWFiNGE1Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC02NCwxMCArNjQsMTQgQEAgRXhjZXB0aW9uT3I8UmVm
PE1lZGlhS2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRp
b25Db250ZXgKICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24tPnN1cHBvcnRzU2Vzc2lvbnMoKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcik7CiAKKyAgICBhdXRv
IGluc3RhbmNlU2Vzc2lvbiA9IG1faW5zdGFuY2UtPmNyZWF0ZVNlc3Npb24oKTsKKyAgICBpZiAo
IWluc3RhbmNlU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVF
cnJvcik7CisKICAgICAvLyAzLiBMZXQgc2Vzc2lvbiBiZSBhIG5ldyBNZWRpYUtleVNlc3Npb24g
b2JqZWN0LCBhbmQgaW5pdGlhbGl6ZSBpdCBhcyBmb2xsb3dzOgogICAgIC8vIE5PVEU6IENvbnRp
bnVlZCBpbiBNZWRpYUtleVNlc3Npb24uCiAgICAgLy8gNC4gUmV0dXJuIHNlc3Npb24uCi0gICAg
YXV0byBzZXNzaW9uID0gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoY29udGV4dCwgbWFrZVdlYWtQ
dHIoKnRoaXMpLCBzZXNzaW9uVHlwZSwgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIG1faW1w
bGVtZW50YXRpb24uY29weVJlZigpLCBtX2luc3RhbmNlLmNvcHlSZWYoKSk7CisgICAgYXV0byBz
ZXNzaW9uID0gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoY29udGV4dCwgbWFrZVdlYWtQdHIoKnRo
aXMpLCBzZXNzaW9uVHlwZSwgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIG1faW1wbGVtZW50
YXRpb24uY29weVJlZigpLCBpbnN0YW5jZVNlc3Npb24ucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
bV9zZXNzaW9ucy5hcHBlbmQoc2Vzc2lvbi5jb3B5UmVmKCkpOwogICAgIHJldHVybiBXVEZNb3Zl
KHNlc3Npb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDRlNjZlOTI3MTJiNDgwOGZhZjI5NDMwZTNjYjgwMTdhNWI0Nzg5
ODAuLmVmNGM4ZjNmYTU3NDYzYTFmNDRlYWM1NDljYjdlOWIxZTMyMjY5NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMzE1
LDYgKzEzMzE1LDcgQEAKIAkJQ0Q5NEE1RDYxRjcxQ0I2RDAwRjUyNUM1IC8qIENETU1lc3NhZ2VU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETU1lc3NhZ2VUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNURBMUY3MUNCQjAwMEY1MjVDNSAv
KiBDRE1DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1DbGVh
cktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVEQjFGNzFDQkIwMDBG
NTI1QzUgLyogQ0RNQ2xlYXJLZXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ0RNQ2xlYXJLZXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDlE
Mzc1QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENETUluc3RhbmNlU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDlEODI3MzFDN0FFNTM1MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0dXJlQ2FjaGVDVi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RDgyNzQxQzdBRTUzNTAwNkZGMDY2IC8qIFRleHR1cmVD
YWNoZUNWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHR1cmVDYWNoZUNW
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOUQ4Mjc3MUM3QjhFRTEwMDZGRjA2
NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWaWRlb1RleHR1cmVDb3BpZXJDVi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNDc2OCw2ICsyNDc2OSw3IEBACiAJCQkJQ0Q5NEE1RDExRjcxQ0I2QjAwRjUy
NUM1IC8qIENETUZhY3RvcnkuY3BwICovLAogCQkJCUNEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAv
KiBDRE1GYWN0b3J5LmggKi8sCiAJCQkJQ0Q5NEE1Q0UxRjcxQ0I2QTAwRjUyNUM1IC8qIENETUlu
c3RhbmNlLmggKi8sCisJCQkJQ0Q5RDM3NUEyMTUxNjNFNDAwNDk2NTdCIC8qIENETUluc3RhbmNl
U2Vzc2lvbi5oICovLAogCQkJCUNEOTRBNUQ0MUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1LZXlTdGF0
dXMuaCAqLywKIAkJCQlDRDk0QTVDRDFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbi5oICovLAogCQkJCUNEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRp
YUNhcGFiaWxpdHkuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmluZGV4IGU2NjVjY2M5YjVjM2NiNjQwNWI0OWI1Yzcy
MzkzMzUyMmNhZTM5ODIuLjA0ZThiMzVjMzcwOTU5ZmVmNDEwZjE4ODdlMTM5ZWY2ZTQxMjIzMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2UuaApAQCAtNDEsMTcgKzQxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKK2NsYXNzIENETUluc3RhbmNlU2Vzc2lvbjsKIHN0cnVjdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uOwogCi1jbGFzcyBDRE1JbnN0YW5jZUNsaWVudCB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VDbGllbnQoKSA9IGRlZmF1bHQ7Ci0KLSAgICB1
c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9y
ID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSA9IDA7Ci19
OwotCiBjbGFzcyBDRE1JbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPENETUluc3RhbmNlPiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2UoKSA9IGRlZmF1bHQ7CkBAIC02MSw3
ICs1Myw2IEBAIHB1YmxpYzoKICAgICAgICAgQ2xlYXJLZXksCiAgICAgICAgIEZhaXJQbGF5U3Ry
ZWFtaW5nLAogICAgIH07Ci0KICAgICB2aXJ0dWFsIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1l
bnRhdGlvblR5cGUoKSBjb25zdCA9IDA7CiAKICAgICBlbnVtIFN1Y2Nlc3NWYWx1ZSB7CkBAIC02
OSwxNSArNjAsMTMgQEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAg
IHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKLSAgICB1c2luZyBMaWNlbnNlVHlwZSA9
IENETVNlc3Npb25UeXBlOwotICAgIHVzaW5nIE1lc3NhZ2VUeXBlID0gQ0RNTWVzc2FnZVR5cGU7
Ci0KICAgICB2aXJ0dWFsIFN1Y2Nlc3NWYWx1ZSBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIFN1Y2Nl
c3NWYWx1ZSBzZXREaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZChib29sKSA9IDA7CiAgICAg
dmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dlZChib29sKSA9IDA7
CiAgICAgdmlydHVhbCBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVlIHNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9u
PiBjcmVhdGVTZXNzaW9uKCkgPSAwOwogCiAgICAgZW51bSBjbGFzcyBIRENQU3RhdHVzIHsKICAg
ICAgICAgVW5rbm93biwKQEAgLTg2LDM4ICs3NSw2IEBAIHB1YmxpYzoKICAgICAgICAgT3V0cHV0
RG93bnNjYWxlZCwKICAgICB9OwogICAgIHZpcnR1YWwgU3VjY2Vzc1ZhbHVlIHNldEhEQ1BTdGF0
dXMoSERDUFN0YXR1cykgeyByZXR1cm4gRmFpbGVkOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2xpZW50KENETUluc3RhbmNlQ2xpZW50JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xp
ZW50KCkgeyB9Ci0KLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wg
bmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjaykgPSAwOwotCi0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VDbGll
bnQ6OktleVN0YXR1c1ZlY3RvcjsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3Nh
Z2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47Ci0gICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrID0gRnVuY3Rpb248dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8
S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBj
aGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjaykgPSAwOwotCi0gICAgZW51bSBjbGFzcyBTZXNz
aW9uTG9hZEZhaWx1cmUgewotICAgICAgICBOb25lLAotICAgICAgICBOb1Nlc3Npb25EYXRhLAot
ICAgICAgICBNaXNtYXRjaGVkU2Vzc2lvblR5cGUsCi0gICAgICAgIFF1b3RhRXhjZWVkZWQsCi0g
ICAgICAgIE90aGVyLAotICAgIH07Ci0KLSAgICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiwgU3VjY2Vzc1ZhbHVlLCBT
ZXNzaW9uTG9hZEZhaWx1cmUpPjsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9h
ZFNlc3Npb25DYWxsYmFjaykgPSAwOwotCi0gICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKCk+OwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrKSA9IDA7Ci0KLSAgICB1c2lu
ZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChLZXlTdGF0dXNWZWN0
b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjaykgPSAwOwotCi0gICAg
dmlydHVhbCB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCkgPSAwOwotCi0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0g
MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2YzYjJkNDMzYzY0MzU2MmQ0Yjk3YWM2OWNhZjQ1NjYwOWE0MmJhZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlU2Vzc2lvbi5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ0RNS2V5U3Rh
dHVzLmgiCisjaW5jbHVkZSAiQ0RNTWVzc2FnZVR5cGUuaCIKKyNpbmNsdWRlICJDRE1TZXNzaW9u
VHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQgewor
cHVibGljOgorICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVs
dDsKKworICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKKyAgICB1c2luZyBLZXlT
dGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBLZXlTdGF0
dXM+PjsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9y
JiYpID0gMDsKK307CisKK2NsYXNzIENETUluc3RhbmNlU2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENETUluc3RhbmNlU2Vzc2lvbj4geworcHVibGljOgorICAgIHZpcnR1YWwgfkNETUluc3Rh
bmNlU2Vzc2lvbigpID0gZGVmYXVsdDsKKworICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0
YXR1czsKKyAgICB1c2luZyBMaWNlbnNlVHlwZSA9IENETVNlc3Npb25UeXBlOworICAgIHVzaW5n
IE1lc3NhZ2VUeXBlID0gQ0RNTWVzc2FnZVR5cGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xp
ZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJDbGllbnQoKSB7IH0KKworICAgIGVudW0gU3VjY2Vzc1ZhbHVlIHsKKyAgICAg
ICAgRmFpbGVkLAorICAgICAgICBTdWNjZWVkZWQsCisgICAgfTsKKworICAgIHVzaW5nIExpY2Vu
c2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsKKworICAgIHVzaW5nIEtl
eVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9y
OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+PjsKKyAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYg
Y2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBz
dGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYpID0gMDsKKworICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIHsK
KyAgICAgICAgTm9uZSwKKyAgICAgICAgTm9TZXNzaW9uRGF0YSwKKyAgICAgICAgTWlzbWF0Y2hl
ZFNlc3Npb25UeXBlLAorICAgICAgICBRdW90YUV4Y2VlZGVkLAorICAgICAgICBPdGhlciwKKyAg
ICB9OworCisgICAgdXNpbmcgTG9hZFNlc3Npb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoc3Rk
OjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmLCBz
dGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYsIFN1Y2Nlc3NWYWx1ZSwgU2Vzc2lvbkxvYWRGYWlsdXJl
KT47CisgICAgdmlydHVhbCB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2sm
JikgPSAwOworCisgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KCk+OworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKKworICAgIHVzaW5nIFJlbW92ZVNlc3Np
b25EYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9w
dGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VU
eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0NETV9JTlNUQU5DRShUb1ZhbHVlVHlwZU5hbWUsIEltcGxlbWVudGF0aW9uVHlwZU5hbWUp
IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9WYWx1ZVR5cGVOYW1lKSBcCitzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2UmIGluc3RhbmNlKSB7IHJl
dHVybiBpbnN0YW5jZS5pbXBsZW1lbnRhdGlvblR5cGUoKSA9PSBJbXBsZW1lbnRhdGlvblR5cGVO
YW1lOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZWZhZDZjMTZjMDE2ZTRhMWQyZTE1ZjU0OGI0MjUx
OGZlODRmN2E5My4uNWE3ZmY4NjMxMjA2ZDg1ZDgyYTJjMDQwODBlYWUwNmI3NzVjZjJlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ2xlYXJLZXkgQ0VOQyBTeXN0ZW1JRC4KQEAgLTEy
MCw3ICsxMTksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNSW5zdGFuY2VDbGVh
cktleTo6S2V5Pj4gcGFyc2VMaWNlbnNlRm9ybWF0KGNvbnN0CiAgICAgICAgICAgICBpZiAoIVdU
Rjo6YmFzZTY0VVJMRGVjb2RlKGtleUlELCB7IGtleUlERGF0YSB9KSB8fCAhV1RGOjpiYXNlNjRV
UkxEZWNvZGUoa2V5VmFsdWUsIHsga2V5VmFsdWVEYXRhIH0pKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICAgICAgZGVjb2RlZEtleXMuYXBwZW5kKHsgQ0RNSW5zdGFu
Y2VDbGVhcktleTo6S2V5U3RhdHVzOjpVc2FibGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoa2V5SUREYXRhKSksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5VmFsdWVEYXRh
KSkgfSk7CisgICAgICAgICAgICBkZWNvZGVkS2V5cy5hcHBlbmQoeyBDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1czo6VXNhYmxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleUlE
RGF0YSkpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleVZhbHVlRGF0YSkpIH0pOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0pOwogICAgIGlmICghdmFsaWRGb3Jt
YXQpCkBAIC00OTMsNyArNDkyLDM0IEBAIENETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgQ0RNSW5z
dGFuY2VDbGVhcktleTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmCiAgICAgcmV0
dXJuIHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpID8gU3VjY2VlZGVkIDogRmFpbGVkOwogfQog
Ci12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrIGNhbGxiYWNrKQorY29uc3QgU3RyaW5nJiBDRE1JbnN0YW5j
ZUNsZWFyS2V5OjprZXlTeXN0ZW0oKSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IHNfa2V5U3lzdGVtIHsgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIm9y
Zy53My5jbGVhcmtleSIpIH07CisKKyAgICByZXR1cm4gc19rZXlTeXN0ZW07Cit9CisKK1JlZlB0
cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24o
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXko
KSk7Cit9CisKK2NvbnN0IFZlY3RvcjxDRE1JbnN0YW5jZUNsZWFyS2V5OjpLZXk+IENETUluc3Rh
bmNlQ2xlYXJLZXk6OmtleXMoKSBjb25zdAoreworICAgIC8vIFJldHVybiB0aGUga2V5cyBvZiBh
bGwgc2Vzc2lvbnMuCisgICAgVmVjdG9yPENETUluc3RhbmNlQ2xlYXJLZXk6OktleT4gYWxsS2V5
cyB7IH07CisgICAgc2l6ZV90IGluaXRpYWxDYXBhY2l0eSA9IDA7CisgICAgZm9yIChhdXRvJiBr
ZXkgOiBDbGVhcktleVN0YXRlOjpzaW5nbGV0b24oKS5rZXlzKCkudmFsdWVzKCkpCisgICAgICAg
IGluaXRpYWxDYXBhY2l0eSArPSBrZXkuc2l6ZSgpOworICAgIGFsbEtleXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShpbml0aWFsQ2FwYWNpdHkpOworCisgICAgZm9yIChhdXRvJiBrZXkgOiBDbGVh
cktleVN0YXRlOjpzaW5nbGV0b24oKS5rZXlzKCkudmFsdWVzKCkpCisgICAgICAgIGFsbEtleXMu
YXBwZW5kVmVjdG9yKGtleSk7CisKKyAgICByZXR1cm4gYWxsS2V5czsKK30KKwordm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgdWludDMyX3Qgc19z
ZXNzaW9uSWRWYWx1ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwpAQCAtNTEzLDE3ICs1
MzksNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYQogICAgICAgICB9KTsKIH0KIAotY29uc3Qg
VmVjdG9yPENETUluc3RhbmNlQ2xlYXJLZXk6OktleT4gQ0RNSW5zdGFuY2VDbGVhcktleTo6a2V5
cygpIGNvbnN0Ci17Ci0gICAgLy8gUmV0dXJuIHRoZSBrZXlzIG9mIGFsbCBzZXNzaW9ucy4KLSAg
ICBWZWN0b3I8Q0RNSW5zdGFuY2VDbGVhcktleTo6S2V5PiBhbGxLZXlzIHsgfTsKLSAgICBmb3Ig
KGF1dG8mIGtleSA6IENsZWFyS2V5U3RhdGU6OnNpbmdsZXRvbigpLmtleXMoKS52YWx1ZXMoKSkK
LSAgICAgICAgYWxsS2V5cy5hcHBlbmRWZWN0b3Ioa2V5KTsKLQotICAgIHJldHVybiBhbGxLZXlz
OwotfQotCi12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgLy8gVXNlIGEgaGVscGVyIGZ1bmN0b3IgdGhhdCBzY2hlZHVs
ZXMgdGhlIGNhbGxiYWNrIGRpc3BhdGNoLCBhdm9pZGluZwogICAgIC8vIGR1cGxpY2F0ZWQgY2Fs
bE9uTWFpblRocmVhZCgpIGNhbGxzLgpAQCAtNTQ4LDcgKzU2NCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VDbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIGNvCiAgICAgLy8gUGFyc2UgdGhlIHJlc3BvbnNlIHVzaW5nICdsaWNlbnNlJyBmb3Jt
YXR0aW5nLCBpZiBwb3NzaWJsZS4KICAgICBpZiAoYXV0byBkZWNvZGVkS2V5cyA9IHBhcnNlTGlj
ZW5zZUZvcm1hdCgqcm9vdCkpIHsKICAgICAgICAgLy8gUmV0cmlldmUgdGhlIHRhcmdldCBWZWN0
b3Igb2YgS2V5IG9iamVjdHMgZm9yIHRoaXMgc2Vzc2lvbi4KLSAgICAgICAgYXV0byYga2V5VmVj
dG9yID0gQ2xlYXJLZXlTdGF0ZTo6c2luZ2xldG9uKCkua2V5cygpLmVuc3VyZShzZXNzaW9uSWQs
IFtdIHsgcmV0dXJuIFZlY3RvcjxLZXk+IHsgfTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAg
ICBhdXRvJiBrZXlWZWN0b3IgPSBDbGVhcktleVN0YXRlOjpzaW5nbGV0b24oKS5rZXlzKCkuZW5z
dXJlKHNlc3Npb25JZCwgW10geyByZXR1cm4gVmVjdG9yPENETUluc3RhbmNlQ2xlYXJLZXk6Oktl
eT4geyB9OyB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgLy8gRm9yIGVhY2ggZGVjb2Rl
ZCBrZXksIGZpbmQgYW4gZXhpc3RpbmcgaXRlbSBmb3IgdGhlIGRlY29kZWQga2V5J3MgSUQuIElm
IG5vbmUgZXhpc3QsCiAgICAgICAgIC8vIHRoZSBrZXkgaXMgZGVjb2RlZC4gT3RoZXJ3aXNlLCB0
aGUga2V5IGlzIHVwZGF0ZWQgaW4gY2FzZSB0aGVyZSdzIGEgbWlzbWF0Y2ggYmV0d2VlbgpAQCAt
NTU2LDcgKzU3Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIGNvCiAgICAgICAgIGJvb2wga2V5
c0NoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiAqZGVjb2RlZEtleXMp
IHsKICAgICAgICAgICAgIGF1dG8gaXQgPSBzdGQ6OmZpbmRfaWYoa2V5VmVjdG9yLmJlZ2luKCks
IGtleVZlY3Rvci5lbmQoKSwKLSAgICAgICAgICAgICAgICBbJmtleV0gKGNvbnN0IEtleSYgY29u
dGFpbmVkS2V5KSB7CisgICAgICAgICAgICAgICAgWyZrZXldIChjb25zdCBDRE1JbnN0YW5jZUNs
ZWFyS2V5OjpLZXkmIGNvbnRhaW5lZEtleSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Y29udGFpbmVkS2V5LmtleUlERGF0YS0+c2l6ZSgpID09IGtleS5rZXlJRERhdGEtPnNpemUoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXN0ZDo6bWVtY21wKGNvbnRhaW5lZEtleS5rZXlJ
RERhdGEtPmRhdGEoKSwga2V5LmtleUlERGF0YS0+ZGF0YSgpLCBjb250YWluZWRLZXkua2V5SURE
YXRhLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtNjI0LDcgKzY0MCw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIGNvCiAgICAgZGlzcGF0Y2hDYWxsYmFjayhmYWxzZSwgc3RkOjpu
dWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVh
cktleTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBj
b25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgLy8gVXNlIGEgaGVscGVyIGZ1bmN0b3IgdGhhdCBzY2hlZHVsZXMgdGhlIGNh
bGxiYWNrIGRpc3BhdGNoLCBhdm9pZGluZyBkdXBsaWNhdGVkIGNhbGxPbk1haW5UaHJlYWQoKSBj
YWxscy4KICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQpAQCAtNjU3LDcgKzY3Myw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBjb25zCiAgICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0
YXR1c1ZlY3RvciksIFN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBjYWxsT25NYWluVGhyZWFkKAogICAgICAgICBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIHsKQEAgLTY2
OCw3ICs2ODQsNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmNsb3NlU2Vzc2lvbihjb25z
dCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayBjYWxsYgogICAgICAgICB9KTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgY2FsbGJh
Y2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICAvLyBVc2UgYSBoZWxwZXIgZnVuY3RvciB0aGF0IHNj
aGVkdWxlcyB0aGUgY2FsbGJhY2sgZGlzcGF0Y2gsIGF2b2lkaW5nIGR1cGxpY2F0ZWQgY2FsbE9u
TWFpblRocmVhZCgpIGNhbGxzLgogICAgIGF1dG8gZGlzcGF0Y2hDYWxsYmFjayA9CkBAIC03MjYs
MTcgKzc0MiwxMCBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZQogICAgIGRpc3BhdGNoQ2FsbGJh
Y2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8U2hhcmVkQnVmZmVyPigqbWVzc2FnZSks
IFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5
OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQogewog
fQogCi1jb25zdCBTdHJpbmcmIENETUluc3RhbmNlQ2xlYXJLZXk6OmtleVN5c3RlbSgpIGNvbnN0
Ci17Ci0gICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc19rZXlTeXN0ZW0g
PSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgib3JnLnczLmNsZWFya2V5Iik7Ci0KLSAgICByZXR1
cm4gc19rZXlTeXN0ZW07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCBj
ZDRjODgwMWMxOWFhYjBlNjEyMzUyNDIyMTEwYWY0NWVhODExNmY2Li5mMTFjY2RjOGM0MjFjOTky
NDlkNGQ4MGMwYTdmNWMwMzUzNDU1MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAg
LTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJDRE1J
bnN0YW5jZS5oIgorI2luY2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkNE
TVByaXZhdGUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgpAQCAtNDQsOCArNDUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DRE1GYWN0
b3J5Q2xlYXJLZXkoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVhdGVD
RE0oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE5l
dmVyRGVzdHJveWVkPENETUZhY3RvcnlDbGVhcktleT47CkBAIC01NywyMSArNTgsMjEgQEAgcHVi
bGljOgogICAgIENETVByaXZhdGVDbGVhcktleSgpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVD
bGVhcktleSgpOwogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9taWNT
dHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihDRE1TZXNzaW9u
VHlwZSYsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIHN1cHBvcnRzUm9idXN0bmVzcyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQo
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIENETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVp
cmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBDRE1SZXN0cmlj
dGlvbnMmKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNB
cmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxDRE1JbnN0YW5jZT4gY3JlYXRlSW5z
dGFuY2UoKSBvdmVycmlkZTsKLSAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBj
b25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzQ29uZmlndXJh
dGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNz
aW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNSb2J1c3Ru
ZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIENETVJlcXVpcmVtZW50IGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CisgICAgQ0RNUmVxdWly
ZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPENE
TUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOworICAgIHZvaWQgbG9hZEFuZEluaXRp
YWxpemUoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29u
c3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwog
fTsKIAogY2xhc3MgQ0RNSW5zdGFuY2VDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5j
ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlQ2xlYXJLZXk+IHsKQEAgLTgxLDIz
ICs4MiwxNiBAQCBwdWJsaWM6CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRp
b25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktl
eTsgfQogCi0gICAgU3VjY2Vzc1ZhbHVlIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgb3ZlcnJpZGU7Ci0gICAgU3VjY2Vzc1ZhbHVl
IHNldERpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkKGJvb2wpIG92ZXJyaWRlOwotICAgIFN1
Y2Nlc3NWYWx1ZSBzZXRQZXJzaXN0ZW50U3RhdGVBbGxvd2VkKGJvb2wpIG92ZXJyaWRlOwotICAg
IFN1Y2Nlc3NWYWx1ZSBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKLSAgICBTdWNjZXNzVmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2spIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrKSBvdmVycmlkZTsKLSAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBl
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjaykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjaykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0K
KyAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBmaW5hbDsKKyAgICBTdWNjZXNzVmFsdWUgc2V0RGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNl
dFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7CisgICAgU3VjY2Vzc1ZhbHVlIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIFN1Y2Nl
c3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPENETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogCiAgICAgc3RydWN0IEtleSB7Ci0g
ICAgICAgIEtleVN0YXR1cyBzdGF0dXM7CisgICAgICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzIHN0YXR1czsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUREYXRhOwog
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlWYWx1ZURhdGE7CiAgICAgfTsKQEAgLTEw
NSw2ICs5OSwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEtleT4ga2V5cygpIGNvbnN0
OwogfTsKIAorY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMg
Q0RNSW5zdGFuY2VTZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXk+IHsKK3B1YmxpYzoKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNz
aW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKK307
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DRE1f
SU5TVEFOQ0UoV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGVhcktleSwgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2U6OkltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgK
aW5kZXggODNiOWQ1MDIzY2MxOGE5ZTQyOTNmZjYyNWFmMTUzM2NhMmZhMDEwZi4uMzc3YjQzMDM2
OWJkNzE2ZWFjNGY1NTI0NTA2YzNkNDJmMjQ2Zjg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
CkBAIC0yOCw5ICsyOCwxMCBAQAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUo
QVZDT05URU5US0VZU0VTU0lPTikKIAogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCisjaW5jbHVk
ZSAiQ0RNSW5zdGFuY2VTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JK
Q19DTEFTUyBBVkNvbnRlbnRLZXlSZXF1ZXN0OwpAQCAtNDIsNiArNDMsOCBAQCBPQkpDX0NMQVNT
IFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzsK
KwogY2xhc3MgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMgZmluYWwgOiBwdWJs
aWMgQ0RNSW5zdGFuY2UsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQz4gewogcHVibGljOgogICAgIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDKCk7CkBAIC01OCwxNSArNjEsOSBAQCBwdWJsaWM6CiAgICAgU3VjY2Vzc1Zh
bHVlIHNldFBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoYm9vbCkgZmluYWw7CiAgICAgU3VjY2Vzc1Zh
bHVlIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IFN1Y2Nlc3NWYWx1ZSBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwor
ICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKIAot
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2spIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrKSBmaW5hbDsK
LSAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrKSBmaW5hbDsKLSAgICB2b2lkIGNsb3NlU2Vzc2lv
bihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29u
c3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBzZXRDbGllbnQoQ0RNSW5zdGFuY2VDbGllbnQm
KSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWw7CisgICAgdm9pZCBwcm9jZXNz
Q29udGVudEtleVJlcXVlc3RGb3JTZXNzaW9uKENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQyYsIFJldGFpblB0cjxOU1N0cmluZz4mJiBpZGVudGlmaWVyLCBSZXRhaW5Q
dHI8TlNEYXRhPiYmIGluaXREYXRhKTsKIAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkg
Y29uc3QgZmluYWw7CiAKQEAgLTc5LDIxICs3Niw2MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXNz
aW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhICopOwogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWRE
dWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCk7CiAKKyAgICBO
U1VSTCAqc3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZURpcmVjdG9y
eS5nZXQoKTsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24gKmNvbnRlbnRLZXlTZXNzaW9uKCkg
eyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxv
d2VkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9CisgICAgU2hh
cmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2Vy
dGlmaWNhdGUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBib29sIGlzTGljZW5zZVR5cGVTdXBw
b3J0ZWQoTGljZW5zZVR5cGUpIGNvbnN0OworICAgIHZvaWQgcHJvY2Vzc05leHRDb250ZW50S2V5
UmVxdWVzdCgpOwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHMoKTsKKyAg
ICBzdHJ1Y3QgQ29udGVudEtleVJlcXVlc3QgeworICAgICAgICBXZWFrUHRyPENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gc2Vzc2lvbkluc3RhbmNlOworICAgICAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IGluaXREYXRhOworICAgIH07CisgICAgVmVjdG9yPENvbnRlbnRLZXlSZXF1ZXN0PiBtX2N1
cnJlbnRSZXF1ZXN0czsKKworICAgIEhhc2hNYXA8UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVl
c3Q+LCBXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+
IG1fcmVxdWVzdE1hcDsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlm
aWNhdGU7CiAgICAgYm9vbCBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgeyB0cnVlIH07CiAgICAg
UmV0YWluUHRyPE5TVVJMPiBtX3N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgUmV0YWluUHRyPEFWQ29u
dGVudEtleVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVx
dWVzdD4gbV9yZXF1ZXN0OwogICAgIFJldGFpblB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Np
b25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKK307CisKK2NsYXNzIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb24s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM+IHsKK3B1YmxpYzoKKyAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmKTsK
KworICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgorICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBsb2FkU2Vzc2lvbihM
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9z
ZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYm
KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWw7CisKKyAgICB2b2lkIGRpZFBy
b3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKTsKKyAgICB2b2lkIGRpZFByb3ZpZGVS
ZW5ld2luZ1JlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopOworICAgIHZvaWQgZGlkUHJvdmlk
ZVBlcnNpc3RhYmxlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0Kik7CisgICAgdm9pZCBkaWRG
YWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiwgTlNFcnJvciopOworICAg
IHZvaWQgcmVxdWVzdERpZFN1Y2NlZWQoQVZDb250ZW50S2V5UmVxdWVzdCopOworICAgIGJvb2wg
c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVudEtleVJlcXVlc3QqLCBOU1N0cmlu
ZyopOworICAgIHZvaWQgc2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YSopOworICAgIHZv
aWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5n
ZWQoYm9vbCk7CisKKyAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEcygpOworCitw
cml2YXRlOgorICAgIGJvb2wgaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChMaWNlbnNlVHlwZSkgY29u
c3Q7CisKKyAgICBSZWY8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1faW5z
dGFuY2U7CisgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1fcmVxdWVzdDsKICAg
ICBWZWN0b3I8UmV0YWluUHRyPE5TRGF0YT4+IG1fZXhwaXJlZFNlc3Npb25zOwotICAgIENETUlu
c3RhbmNlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkNs
aWVudD4gbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkOwogCiAgICAgTGljZW5zZUNh
bGxiYWNrIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjazsKQEAgLTEwMSw2ICsxMzksNyBAQCBwcml2
YXRlOgogICAgIENsb3NlU2Vzc2lvbkNhbGxiYWNrIG1fY2xvc2VTZXNzaW9uQ2FsbGJhY2s7CiAg
ICAgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayBtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2s7
CiB9OworCiB9CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0RNX0lOU1RBTkNFKFdlYkNvcmU6
OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLCBXZWJDb3JlOjpDRE1JbnN0YW5j
ZTo6SW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0KaW5kZXggZGYzYmMwOTgwMmFjNmJlMzVjMDFkNjIzOWViZjg1ZDBmNWE0MDlhYS4u
NjdmMmY0OTgwNzVmNTVjMzU2YzYyNTg1ZjFlODFmYzM4NTU2OThlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0KQEAgLTIyMSwxOSArMjIxLDEyMiBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1Zh
bHVlIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTdG9yYWdlRGlyZWN0
bwogICAgIHJldHVybiBTdWNjZWVkZWQ7CiB9CiAKLWJvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUgbGljZW5z
ZVR5cGUpIGNvbnN0CitSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbigpCiB7Ci0gICAgc3dpdGNoIChsaWNl
bnNlVHlwZSkgewotICAgIGNhc2UgQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNlbnNlOgot
ICAgICAgICByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkICYmIHN1cHBvcnRzUGVyc2lz
dGVudEtleXMoKTsKLSAgICBjYXNlIENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNv
cmQ6Ci0gICAgICAgIHJldHVybiBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgJiYgc3VwcG9ydHNQ
ZXJzaXN0YWJsZVN0YXRlKCk7Ci0gICAgY2FzZSBDRE1TZXNzaW9uVHlwZTo6VGVtcG9yYXJ5Ogot
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygqdGhpcykpOworfQorCit2b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpwcm9jZXNzQ29udGVudEtleVJlcXVlc3RG
b3JTZXNzaW9uKENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyYgc2Vz
c2lvbiwgUmV0YWluUHRyPE5TU3RyaW5nPiYmIGlkZW50aWZpZXIsIFJldGFpblB0cjxOU0RhdGE+
JiYgaW5pdERhdGEpCit7CisgICAgbV9jdXJyZW50UmVxdWVzdHMuYXBwZW5kKHsgbWFrZVdlYWtQ
dHIoc2Vzc2lvbiksIFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUoaW5pdERhdGEpIH0pOwor
ICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcHJvY2Vzc05l
eHRDb250ZW50S2V5UmVxdWVzdCgpOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpwcm9jZXNzTmV4dENvbnRlbnRLZXlSZXF1ZXN0KCkKK3sKKyAgICBpZiAo
bV9jdXJyZW50UmVxdWVzdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
JiBuZXh0UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3RzLmZpcnN0KCk7CisgICAgW21fc2Vzc2lv
biBwcm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjpuZXh0UmVxdWVzdC5pZGVu
dGlmaWVyLmdldCgpIGluaXRpYWxpemF0aW9uRGF0YTpuZXh0UmVxdWVzdC5pbml0RGF0YS5nZXQo
KSBvcHRpb25zOm5pbF07Cit9CisKK2NvbnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmtleVN5c3RlbSgpIGNvbnN0Cit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4ga2V5U3lzdGVtIHsgImNvbS5hcHBsZS5mcHMiX3MgfTsKKyAgICByZXR1
cm4ga2V5U3lzdGVtOworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQorewor
ICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gY3VycmVudFJlcXVlc3QgPSBXVEZNb3ZlKG1fY3VycmVudFJlcXVlc3RzLmZpcnN0
KCkpOworICAgIG1fY3VycmVudFJlcXVlc3RzLnJlbW92ZSgwKTsKKworICAgIGlmICghY3VycmVu
dFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlcXVl
c3RNYXAuc2V0KHJlcXVlc3QsIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZSk7CisgICAg
Y3VycmVudFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNlLT5kaWRQcm92aWRlUmVxdWVzdChyZXF1ZXN0
KTsKKyAgICBwcm9jZXNzTmV4dENvbnRlbnRLZXlSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3Qo
QVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKK3sKKyAgICBpZiAobV9jdXJyZW50UmVxdWVz
dHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0
ID0gV1RGTW92ZShtX2N1cnJlbnRSZXF1ZXN0cy5maXJzdCgpKTsKKyAgICBtX2N1cnJlbnRSZXF1
ZXN0cy5yZW1vdmUoMCk7CisKKyAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5j
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0LCBjdXJy
ZW50UmVxdWVzdC5zZXNzaW9uSW5zdGFuY2UpOworICAgIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25J
bnN0YW5jZS0+ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBwcm9jZXNz
TmV4dENvbnRlbnRLZXlSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVQZXJzaXN0YWJsZVJlcXVlc3QoQVZDb250ZW50S2V5
UmVxdWVzdCAqcmVxdWVzdCkKK3sKKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdHMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0ID0gV1RGTW92ZSht
X2N1cnJlbnRSZXF1ZXN0cy5maXJzdCgpKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0cy5yZW1vdmUo
MCk7CisKKyAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0LCBjdXJyZW50UmVxdWVzdC5z
ZXNzaW9uSW5zdGFuY2UpOworICAgIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZS0+ZGlk
UHJvdmlkZVBlcnNpc3RhYmxlUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBwcm9jZXNzTmV4dENvbnRl
bnRLZXlSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVl
c3QsIE5TRXJyb3IgKmVycm9yKQoreworICAgIGlmIChhdXRvIHNlc3Npb25JbnRlcmZhY2UgPSBt
X3JlcXVlc3RNYXAuZ2V0KHJlcXVlc3QpKQorICAgICAgICBzZXNzaW9uSW50ZXJmYWNlLT5kaWRG
YWlsVG9Qcm92aWRlUmVxdWVzdChyZXF1ZXN0LCBlcnJvcik7Cit9CisKK3ZvaWQgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtl
eVJlcXVlc3QgKnJlcXVlc3QpCit7CisgICAgaWYgKGF1dG8gc2Vzc2lvbkludGVyZmFjZSA9IG1f
cmVxdWVzdE1hcC5nZXQocmVxdWVzdCkpCisgICAgICAgIHNlc3Npb25JbnRlcmZhY2UtPnJlcXVl
c3REaWRTdWNjZWVkKHJlcXVlc3QpOworfQorCitib29sIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpzaG91bGRSZXRyeVJlcXVlc3RGb3JSZWFzb24oQVZDb250ZW50S2V5UmVx
dWVzdCAqcmVxdWVzdCwgTlNTdHJpbmcgKnJlYXNvbikKK3sKKyAgICBpZiAoYXV0byBzZXNzaW9u
SW50ZXJmYWNlID0gbV9yZXF1ZXN0TWFwLmdldChyZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJuIHNl
c3Npb25JbnRlcmZhY2UtPnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihyZXF1ZXN0LCByZWFz
b24pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YSAqc2Vzc2lvbklk
ZW50aWZpZXIpCit7CisgICAgZm9yIChhdXRvIHNlc3Npb25JbnRlcmZhY2UgOiBtX3JlcXVlc3RN
YXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHNlc3Npb25JbnRlcmZhY2UpCisgICAgICAgICAg
ICBzZXNzaW9uSW50ZXJmYWNlLT5zZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoc2Vzc2lvbklkZW50
aWZpZXIpOwogICAgIH0KIH0KIAotVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKCkKK3ZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRl
cm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wgb2JzY3VyZWQpCit7CisgICAgZm9yIChhdXRvIHNl
c3Npb25JbnRlcmZhY2UgOiBtX3JlcXVlc3RNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHNl
c3Npb25JbnRlcmZhY2UpCisgICAgICAgICAgICBzZXNzaW9uSW50ZXJmYWNlLT5vdXRwdXRPYnNj
dXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChvYnNjdXJlZCk7
CisgICAgfQorfQorCitDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyhSZWY8Q0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+JiYgaW5zdGFuY2UpCisgICAgOiBtX2luc3RhbmNl
KFdURk1vdmUoaW5zdGFuY2UpKQoreworfQorCitWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKCkKIHsKICAg
ICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5NzE0MSk6IHVzZSB0aGUgZnV0dXJlIEFWQ29u
dGVudEtleVJlcXVlc3Qga2V5SUQgcHJvcGVydHksIHJhdGhlciB0aGFuIHBhcnNpbmcgaXQgb3V0
IG9mIHRoZSBpbml0CiAgICAgLy8gZGF0YSwgdG8gZ2V0IHRoZSBrZXlJRC4KQEAgLTI1MCwxNCAr
MzUzLDE0IEBAIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAg
ICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZh
bHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX3NlcnZl
ckNlcnRpZmljYXRlKSB7CisgICAgaWYgKCFtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
KSB7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5n
KCksIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjc1LDcgKzM3
OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlCiAgICAgfQogCiAgICAgbV9yZXF1ZXN0TGlj
ZW5zZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAgW21fc2Vzc2lvbiBwcm9jZXNz
Q29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyLmdldCgpIGluaXRpYWxp
emF0aW9uRGF0YTppbml0aWFsaXphdGlvbkRhdGEuZ2V0KCkgb3B0aW9uczpuaWxdOworICAgIG1f
aW5zdGFuY2UtPnByb2Nlc3NDb250ZW50S2V5UmVxdWVzdEZvclNlc3Npb24oKnRoaXMsIFdURk1v
dmUoaWRlbnRpZmllciksIFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSk7CiB9CiAKIHN0YXRp
YyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQpAQCAtMjk2LDE0ICszOTksMjMgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09y
RXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIGlmICghbV9leHBpcmVkU2Vzc2lvbnMuaXNFbXB0eSgpICYmIGlzRXF1
YWwocmVzcG9uc2VEYXRhLCAiYWNrbm93bGVkZ2VkIl9zKSkgewogICAgICAgICBhdXRvIGV4cGly
ZWRTZXNzaW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAg
ICAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBtX2V4cGlyZWRTZXNzaW9ucykKLSAgICAgICAgICAg
IFtleHBpcmVkU2Vzc2lvbnMgYWRkT2JqZWN0OnNlc3Npb24uZ2V0KCldOyAKLSAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IG1fc2VydmVyQ2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOwotICAgICAgICBbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3Zl
UGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFw
cElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6bV9z
dG9yYWdlRGlyZWN0b3J5LmdldCgpXTsKKyAgICAgICAgICAgIFtleHBpcmVkU2Vzc2lvbnMgYWRk
T2JqZWN0OnNlc3Npb24uZ2V0KCldOworCisgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0gbV9p
bnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKKyAgICAgICAgYXV0byogc3RvcmFnZURpcmVj
dG9yeSA9IG1faW5zdGFuY2UtPnN0b3JhZ2VEaXJlY3RvcnkoKTsKKworICAgICAgICBpZiAoIWNl
cnRpZmljYXRlIHx8ICFzdG9yYWdlRGlyZWN0b3J5KSB7CisgICAgICAgICAgICBjYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Np
b25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVu
dGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlRGlyZWN0b3J5XTsKICAg
ICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1
Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMzMsMjIgKzQ0NSwyNCBAQCB2
b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeQogICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2sgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIFVOVVNFRF9QQVJBTShvcmlnaW4pOwogICAgIGlmIChsaWNlbnNlVHlwZSA9PSBM
aWNlbnNlVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVjb3JkKSB7Ci0gICAgICAgIGlmICghbV9wZXJz
aXN0ZW50U3RhdGVBbGxvd2VkIHx8ICFtX3N0b3JhZ2VEaXJlY3RvcnkpIHsKKyAgICAgICAgYXV0
byogc3RvcmFnZURpcmVjdG9yeSA9IG1faW5zdGFuY2UtPnN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAg
ICAgICAgaWYgKCFtX2luc3RhbmNlLT5wZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgfHwgc3RvcmFn
ZURpcmVjdG9yeSkgewogICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNo
ZWRTZXNzaW9uVHlwZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKCFtX3NlcnZlckNlcnRpZmljYXRlKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFp
bHVyZTo6T3RoZXIpOworICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNl
cnZlckNlcnRpZmljYXRlKCk7CisgICAgICAgIGlmICghY2VydGlmaWNhdGUpIHsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZh
aWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Npb25EYXRhKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXIgPSBtX3NlcnZlckNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwotICAgICAgICBmb3IgKE5TRGF0
YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBw
ZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmll
ci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6bV9zdG9yYWdlRGlyZWN0b3J5LmdldCgpXSkg
eworICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtnZXRBVkNvbnRl
bnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElk
ZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFn
ZURpcmVjdG9yeV0pIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhwaXJlZFNlc3Npb24g
PSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhEYXRhOmV4cGly
ZWRTZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSBmb3JtYXQ6bnVs
bHB0ciBlcnJvcjpudWxscHRyXTsKICAgICAgICAgICAgIE5TU3RyaW5nICpwbGF5YmFja1Nlc3Np
b25JZFZhbHVlID0gKE5TU3RyaW5nICopW2V4cGlyZWRTZXNzaW9uIG9iamVjdEZvcktleTpQbGF5
YmFja1Nlc3Npb25JZEtleV07CiAgICAgICAgICAgICBpZiAoIVtwbGF5YmFja1Nlc3Npb25JZFZh
bHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCkBAIC0zNzAsNyArNDg0LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGMKICAgICB9CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNl
c3Npb25DYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAobV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNr
KSB7CiAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIEZhaWxlZCk7CkBAIC0zODQsMjUgKzQ5OCwyOCBAQCB2
b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiwgQ2xvc2VTZXNzaQogICAgICAgICBtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJh
Y2soeyB9LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIG1fcmVtb3ZlU2Vzc2lvbkRh
dGFDYWxsYmFjayA9IG51bGxwdHI7CiAgICAgfQotICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiAg
ICAgbV9yZXF1ZXN0ID0gbnVsbHB0cjsKICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgW21fc2Vzc2lvbiBleHBpcmVdOworICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYmUgYWJsZSB0byBleHBpcmUgaW5kaXZpZHVhbCBBVkNvbnRlbnRLZXlSZXF1ZXN0cyByYXRo
ZXIgdGhhbiB0aGUgZW50aXJlIEFWQ29udGVudEtleVNlc3Npb24uCisgICAgW21faW5zdGFuY2Ut
PmNvbnRlbnRLZXlTZXNzaW9uKCkgZXhwaXJlXTsKIAogICAgIGlmIChsaWNlbnNlVHlwZSA9PSBM
aWNlbnNlVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVjb3JkKSB7Ci0gICAgICAgIGlmICghbV9wZXJz
aXN0ZW50U3RhdGVBbGxvd2VkIHx8ICFtX3N0b3JhZ2VEaXJlY3RvcnkgfHwgIW1fc2VydmVyQ2Vy
dGlmaWNhdGUpIHsKKyAgICAgICAgYXV0byogc3RvcmFnZURpcmVjdG9yeSA9IG1faW5zdGFuY2Ut
PnN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3Rh
bmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOworCisgICAgICAgIGlmICghbV9pbnN0YW5jZS0+cGVy
c2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFzdG9yYWdlRGlyZWN0b3J5IHx8ICFjZXJ0aWZpY2F0
ZSkgewogICAgICAgICAgICAgY2FsbGJhY2soeyB9LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBhcHBJZGVudGlmaWVyID0gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNl
c3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAg
ICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwotICAgICAgICBmb3IgKE5TRGF0YSog
ZXhwaXJlZFNlc3Npb25EYXRhIGluIFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5k
aW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5n
ZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6bV9zdG9yYWdlRGlyZWN0b3J5LmdldCgpXSkgewor
ICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtnZXRBVkNvbnRlbnRL
ZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50
aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZURp
cmVjdG9yeV0pIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhwaXJlZFNlc3Npb24gPSBb
TlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhEYXRhOmV4cGlyZWRT
ZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSBmb3JtYXQ6bnVsbHB0
ciBlcnJvcjpudWxscHRyXTsKICAgICAgICAgICAgIE5TU3RyaW5nICpwbGF5YmFja1Nlc3Npb25J
ZFZhbHVlID0gKE5TU3RyaW5nICopW2V4cGlyZWRTZXNzaW9uIG9iamVjdEZvcktleTpQbGF5YmFj
a1Nlc3Npb25JZEtleV07CiAgICAgICAgICAgICBpZiAoIVtwbGF5YmFja1Nlc3Npb25JZFZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCkBAIC00MjIsMzQgKzUzOSwzMCBAQCB2
b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmIHNlc3NpbwogICAgIH0KIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYp
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3RvcmVS
ZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gbm8tb3A7IGtleSB1c2Fn
ZSBkYXRhIGlzIHN0b3JlZCBhdXRvbWF0aWNhbGx5LgogfQogCi12b2lkIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRDbGllbnQoQ0RNSW5zdGFuY2VDbGllbnQmIGNsaWVu
dCkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRD
bGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50KQogewotICAg
IG1fY2xpZW50ID0gJmNsaWVudDsKKyAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0K
IAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xlYXJDbGllbnQo
KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNsZWFy
Q2xpZW50KCkKIHsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiB9CiAKLWNvbnN0IFN0cmluZyYg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN5c3RlbSgpIGNvbnN0Ci17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc19rZXlTeXN0ZW0geyAiY29tLmFw
cGxlLmZwcyJfcyB9OwotICAgIHJldHVybiBzX2tleVN5c3RlbTsKLX0KLQotdm9pZCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50
S2V5UmVxdWVzdCAqcmVxdWVzdCkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1
ZXN0KQogewogICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgaWYgKCFtX3JlcXVlc3RMaWNl
bnNlQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGFw
cElkZW50aWZpZXIgPSBtX3NlcnZlckNlcnRpZmljYXRlID8gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS0+
Y3JlYXRlTlNEYXRhKCkgOiBudWxscHRyOworICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXI7CisgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2Vy
dGlmaWNhdGUoKSkKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVO
U0RhdGEoKTsKICAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEcyA9IHRoaXMtPmtl
eUlEcygpOwogCiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTQ3MywxNyArNTg2LDE3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QKICAgICB9XTsKIH0KIAotdm9pZCBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb250ZW50S2V5
UmVxdWVzdCAqcmVxdWVzdCkKIHsKICAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVQZXJzaXN0
YWJsZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKK3ZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUGVyc2lzdGFibGVS
ZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHJlcXVlc3QpOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBO
U0Vycm9yICplcnJvcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1
ZXN0LCBOU0Vycm9yICplcnJvcikKIHsKICAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAgICAg
VU5VU0VEX1BBUkFNKGVycm9yKTsKQEAgLTQ5MSw3ICs2MDQsNyBAQCB2b2lkIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRl
bnRLZXlSZQogICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdERpZFN1Y2NlZWQoQVZDb250
ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpy
ZXF1ZXN0KQogewogICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKICAgICBpZiAoIW1fdXBkYXRl
TGljZW5zZUNhbGxiYWNrKQpAQCAtNTA0LDcgKzYxNyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtleVJlcXVl
c3QKICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjptYWtlX29wdGlvbmFs
KFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
ZWRlZCk7CiB9CiAKLWJvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNo
b3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBO
U1N0cmluZyAqcmVhc29uKQorYm9vbCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihBVkNvbnRlbnRLZXlSZXF1ZXN0
ICpyZXF1ZXN0LCBOU1N0cmluZyAqcmVhc29uKQogewogICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0
KTsKICAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKQEAgLTUxMiw3ICs2MjUsNyBAQCBib29sIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzaG91bGRSZXRyeVJlcXVlc3RGb3JS
ZWFzb24oQVZDb250ZW50SwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0
YSAqc2Vzc2lvbklkZW50aWZpZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YSAqc2Vzc2lvbklk
ZW50aWZpZXIpCiB7CiAgICAgaWYgKCFzZXNzaW9uSWRlbnRpZmllcikgewogICAgICAgICBtX3Nl
c3Npb25JZCA9IGVtcHR5U3RyaW5nKCk7CkBAIC01MjMsNyArNjM2LDcgQEAgdm9pZCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5T
RGF0YSAqc2Vzc2kKICAgICBtX3Nlc3Npb25JZCA9IHNlc3Npb25JZGVudGlmaWVyU3RyaW5nLmdl
dCgpOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRw
dXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29s
IG9ic2N1cmVkKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFu
Z2VkKGJvb2wgb2JzY3VyZWQpCiB7CiAgICAgaWYgKCFtX2NsaWVudCB8fCAhbV9yZXF1ZXN0KQog
ICAgICAgICByZXR1cm47CkBAIC01NTYsNiArNjY5LDE4IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRl
cm5hCiAgICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMp
KTsKIH0KIAorYm9vbCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUpIGNvbnN0Cit7
CisgICAgc3dpdGNoIChsaWNlbnNlVHlwZSkgeworICAgIGNhc2UgQ0RNU2Vzc2lvblR5cGU6OlBl
cnNpc3RlbnRMaWNlbnNlOgorICAgICAgICByZXR1cm4gbV9pbnN0YW5jZS0+cGVyc2lzdGVudFN0
YXRlQWxsb3dlZCgpICYmIG1faW5zdGFuY2UtPnN1cHBvcnRzUGVyc2lzdGVudEtleXMoKTsKKyAg
ICBjYXNlIENETVNlc3Npb25UeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQ6CisgICAgICAgIHJl
dHVybiBtX2luc3RhbmNlLT5wZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgJiYgbV9pbnN0YW5jZS0+
c3VwcG9ydHNQZXJzaXN0YWJsZVN0YXRlKCk7CisgICAgY2FzZSBDRE1TZXNzaW9uVHlwZTo6VGVt
cG9yYXJ5OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggMTJiYzdmNjAyZjFl
M2U1Mzc3MTg2YzNlYzM1YTliZjQyYzk0MGQ4ZS4uZDA0Mzc3MTNjYzUxMzFmZjNkNDRhODQ5OTc1
MzYyMmMyODU0ZmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5j
cHAKQEAgLTI2OSw5ICsyNjksMjYgQEAgQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBNb2NrQ0RN
SW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4g
U3VjY2VlZGVkOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sgY2FsbGJhY2spCitj
b25zdCBTdHJpbmcmIE1vY2tDRE1JbnN0YW5jZTo6a2V5U3lzdGVtKCkgY29uc3QKIHsKLSAgICBN
b2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1fY2RtID8gbV9jZG0tPmZhY3RvcnkoKSA6IG51bGxw
dHI7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc19rZXlTeXN0ZW0g
PSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgib3JnLndlYmtpdC5tb2NrIik7CisKKyAgICByZXR1
cm4gc19rZXlTeXN0ZW07Cit9CisKK1JlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IE1vY2tDRE1J
bnN0YW5jZTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uKG1ha2VXZWFrUHRyKCp0aGlzKSkpOworfQorCitNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3Rh
bmNlPiYmIGluc3RhbmNlKQorICAgIDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKK3sK
K30KKwordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZh
Y3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5QXRvbSgpLCBmYWxzZSwgU3VjY2Vzc1ZhbHVl
OjpGYWlsZWQpOwogICAgICAgICByZXR1cm47CkBAIC0yOTUsOSArMzEyLDkgQEAgdm9pZCBNb2Nr
Q0RNSW5zdGFuY2U6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25z
dCBBdG9taWNTdHJpbmcKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNl
LmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1
ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1fY2Rt
ID8gbV9jZG0tPmZhY3RvcnkoKSA6IG51bGxwdHI7CisgICAgTW9ja0NETUZhY3RvcnkqIGZhY3Rv
cnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBp
ZiAoIWZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzI5LDkgKzM0Niw5IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgY29uc3QKICAgICBj
YWxsYmFjayhmYWxzZSwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3Rh
bmNlOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgTG9hZFNlc3Npb25DYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBNb2NrQ0RNRmFjdG9y
eSogZmFjdG9yeSA9IG1fY2RtID8gbV9jZG0tPmZhY3RvcnkoKSA6IG51bGxwdHI7CisgICAgTW9j
a0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgp
IDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQs
IFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOwogICAgICAgICByZXR1cm47CkBAIC0zNDUsOSAr
MzYyLDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2EKICAgICBjYWxsYmFjayhzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVk
ZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNl
OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIENsb3NlU2Vzc2lvbkNhbGxi
YWNrIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2NkbSA/IG1fY2RtLT5mYWN0b3J5
KCkgOiBudWxscHRyOworICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/
IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CiAg
ICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTM1Nyw5ICszNzQsOSBAQCB2
b2lkIE1vY2tDRE1JbnN0YW5jZTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
LCBDbG9zZVNlc3Npb25DYWxsYmFjawogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgTW9ja0NE
TUluc3RhbmNlOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIGlkLCBMaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBpZCwgTGljZW5zZVR5
cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBNb2NrQ0RN
RmFjdG9yeSogZmFjdG9yeSA9IG1fY2RtID8gbV9jZG0tPmZhY3RvcnkoKSA6IG51bGxwdHI7Cisg
ICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFj
dG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2so
eyB9LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzc1LDE4ICszOTIsMTEgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnJlbW92ZVNlc3Np
b25EYXRhKGNvbnN0IFN0cmluZyYgaWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXMKICAgICBjYWxs
YmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3Nh
Z2UuZGF0YSgpLCBtZXNzYWdlLmxlbmd0aCgpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwog
fQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0
cmluZyYpCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlVc2Fn
ZShjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBpbXBsZW1l
bnRlZCBhbG9uZyB3aXRoIHRoZSBzdXBwb3J0IGZvciBwZXJzaXN0ZW50LXVzYWdlLXJlY29yZCBz
ZXNzaW9ucy4KIH0KIAotY29uc3QgU3RyaW5nJiBNb2NrQ0RNSW5zdGFuY2U6OmtleVN5c3RlbSgp
IGNvbnN0Ci17Ci0gICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc19rZXlT
eXN0ZW0gPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgib3JnLndlYmtpdC5tb2NrIik7Ci0KLSAg
ICByZXR1cm4gc19rZXlTeXN0ZW07Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggMjE2ZDI5YTBhN2MzMzc2ZDgzMzg5OWQxNTQwMDI3
YjI4M2FlODNmNC4uYTgyMjczMWVjMmM0YzVlOTZhODU3NWJjZWJmY2YyZTIxMDI4YmM4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkNETS5oIgogI2luY2x1ZGUgIkNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJDRE1J
bnN0YW5jZS5oIgorI2luY2x1ZGUgIkNETUluc3RhbmNlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkNE
TVByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYUtleXNSZXF1aXJlbWVudC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC0xMjEsMTAgKzEyMiwxNCBAQCBwcml2YXRlOgogICAgIFdlYWtQ
dHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKIH07CiAKLWNsYXNzIE1vY2tDRE1JbnN0YW5j
ZSA6IHB1YmxpYyBDRE1JbnN0YW5jZSB7CitjbGFzcyBNb2NrQ0RNSW5zdGFuY2UgOiBwdWJsaWMg
Q0RNSW5zdGFuY2UsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+IHsKIHB1
YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2UoV2Vha1B0cjxNb2NrQ0RNPik7CiAKKyAgICBNb2Nr
Q0RNRmFjdG9yeSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2RtID8gbV9jZG0tPmZhY3Rv
cnkoKSA6IG51bGxwdHI7IH0KKyAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzQWxsb3dlZDsgfQorICAg
IGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVu
dFN0YXRlQWxsb3dlZDsgfQorCiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBs
ZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6
Ok1vY2s7IH0KICAgICBTdWNjZXNzVmFsdWUgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGZpbmFsOwpAQCAtMTMyLDIwICsxMzcs
MjkgQEAgcHJpdmF0ZToKICAgICBTdWNjZXNzVmFsdWUgc2V0UGVyc2lzdGVudFN0YXRlQWxsb3dl
ZChib29sKSBmaW5hbDsKICAgICBTdWNjZXNzVmFsdWUgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgU3VjY2Vzc1ZhbHVlIHNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjaykgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2spIGZpbmFsOwotICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2sp
IGZpbmFsOwotICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrKSBmaW5hbDsKLSAgICB2
b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLQogICAgIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPENETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RN
PiBtX2NkbTsKICAgICBib29sIG1fZGlzdGluY3RpdmVJZGVudGlmaWVyc0FsbG93ZWQgeyB0cnVl
IH07CiAgICAgYm9vbCBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgeyB0cnVlIH07CiB9OwogCitj
bGFzcyBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvbiB7
CitwdWJsaWM6CisgICAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0
YW5jZT4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAg
ICBXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4gbV9pbnN0YW5jZTsKK307CisKIH0KIAogI2VuZGlm
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>