<?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>221082</bug_id>
          
          <creation_ts>2021-01-28 00:42:00 -0800</creation_ts>
          <short_desc>Use user media permission prompt for speech recognition</short_desc>
          <delta_ts>2021-08-19 14:18:21 -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>Media</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="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1723315</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-28 00:42:00 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723317</commentid>
    <comment_count>1</comment_count>
      <attachid>418629</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-28 01:08:47 -0800</bug_when>
    <thetext>Created attachment 418629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723456</commentid>
    <comment_count>2</comment_count>
      <attachid>418662</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-28 12:33:35 -0800</bug_when>
    <thetext>Created attachment 418662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723494</commentid>
    <comment_count>3</comment_count>
      <attachid>418667</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-28 14:10:53 -0800</bug_when>
    <thetext>Created attachment 418667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723630</commentid>
    <comment_count>4</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-28 23:45:36 -0800</bug_when>
    <thetext>rdar://problem/73372499</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723643</commentid>
    <comment_count>5</comment_count>
      <attachid>418667</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-29 00:26:29 -0800</bug_when>
    <thetext>Comment on attachment 418667
Patch

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

&gt; Source/WebCore/Modules/speech/SpeechRecognition.cpp:76
&gt; +        return { };

We should probably throw an exception there. And add a test covering this case.

&gt; Source/WebCore/Modules/speech/SpeechRecognition.cpp:78
&gt; +    m_connection-&gt;start(identifier(), m_lang, m_continuous, m_interimResults, m_maxAlternatives, ClientOrigin { document.topOrigin().data(), document.securityOrigin().data() }, *frame);

Do we need to pass the frame or just the frame identifier?
Can we use Document::frameID()?

&gt; Source/WebCore/Modules/speech/SpeechRecognitionConnection.h:42
&gt; +    virtual void start(SpeechRecognitionConnectionClientIdentifier, const String&amp; lang, bool continuous, bool interimResults, uint64_t maxAlternatives, ClientOrigin&amp;&amp;, Frame&amp;) = 0;

const Frame&amp;, or FrameIdentifier?

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:37
&gt; +    static Ref&lt;SpeechRecognitionPermissionRequest&gt; create(const String&amp; lang, const WebCore::ClientOrigin&amp; origin, const WebCore::FrameIdentifier frameIdentifier, CompletionHandler&lt;void(Optional&lt;WebCore::SpeechRecognitionError&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)

I would tend to give a name to the completion handler, something like:
using PermissionCallback = CompletionHandler&lt;void(Optional&lt;WebCore::SpeechRecognitionError&gt;&amp;&amp;)&gt;;

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:50
&gt; +    const WebCore::FrameIdentifier frameIdentifier() const { return m_frameIdentifier; }

s/const WebCore::FrameIdentifier/WebCore::FrameIdentifier/

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:53
&gt; +    SpeechRecognitionPermissionRequest(const String&amp; lang, const WebCore::ClientOrigin&amp; origin, const WebCore::FrameIdentifier frameIdentifier, CompletionHandler&lt;void(Optional&lt;WebCore::SpeechRecognitionError&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)

s/const WebCore::FrameIdentifier/WebCore::FrameIdentifier/

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:10407
&gt; +    userMediaPermissionRequestManager().checkUserMediaPermissionForSpeechRecognition(frameIdentifier, requestingOrigin, topOrigin, *captureDevice, WTFMove(completionHandler));

Why not using UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame and passing it an optional completion handler?
Completion handler could be stored in UserMediaPermissionRequestProxy to override the current behavior.

To limit the code changes, we could initially only use the completion handler for speech recognition code path.
Then use the completion handler in gum code path as well as this would allow to move back WebPage code from UserMediaPermissionRequestManagerProxy.cpp back to WebPage.cpp.
Or maybe we can do everything in this patch?
Callback could be called in UserMediaPermissionRequestManagerProxy::finishGrantingRequest and UserMediaPermissionRequestManagerProxy::denyRequest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723780</commentid>
    <comment_count>6</comment_count>
      <attachid>418667</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-29 10:28:01 -0800</bug_when>
    <thetext>Comment on attachment 418667
Patch

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

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognition.cpp:76
&gt;&gt; +        return { };
&gt; 
&gt; We should probably throw an exception there. And add a test covering this case.

Okay, we have a layout test that covers this exception, was not sure about changing the behavior. Will update.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognition.cpp:78
&gt;&gt; +    m_connection-&gt;start(identifier(), m_lang, m_continuous, m_interimResults, m_maxAlternatives, ClientOrigin { document.topOrigin().data(), document.securityOrigin().data() }, *frame);
&gt; 
&gt; Do we need to pass the frame or just the frame identifier?
&gt; Can we use Document::frameID()?

Just the identifier. Didn&apos;t know there is a Document::frameID(), will update.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognitionConnection.h:42
&gt;&gt; +    virtual void start(SpeechRecognitionConnectionClientIdentifier, const String&amp; lang, bool continuous, bool interimResults, uint64_t maxAlternatives, ClientOrigin&amp;&amp;, Frame&amp;) = 0;
&gt; 
&gt; const Frame&amp;, or FrameIdentifier?

FrameIdentifier

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:37
&gt;&gt; +    static Ref&lt;SpeechRecognitionPermissionRequest&gt; create(const String&amp; lang, const WebCore::ClientOrigin&amp; origin, const WebCore::FrameIdentifier frameIdentifier, CompletionHandler&lt;void(Optional&lt;WebCore::SpeechRecognitionError&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; I would tend to give a name to the completion handler, something like:
&gt; using PermissionCallback = CompletionHandler&lt;void(Optional&lt;WebCore::SpeechRecognitionError&gt;&amp;&amp;)&gt;;

Okay.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:50
&gt;&gt; +    const WebCore::FrameIdentifier frameIdentifier() const { return m_frameIdentifier; }
&gt; 
&gt; s/const WebCore::FrameIdentifier/WebCore::FrameIdentifier/

Okay.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:53
&gt;&gt; +    SpeechRecognitionPermissionRequest(const String&amp; lang, const WebCore::ClientOrigin&amp; origin, const WebCore::FrameIdentifier frameIdentifier, CompletionHandler&lt;void(Optional&lt;WebCore::SpeechRecognitionError&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; s/const WebCore::FrameIdentifier/WebCore::FrameIdentifier/

Okay.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:10407
&gt;&gt; +    userMediaPermissionRequestManager().checkUserMediaPermissionForSpeechRecognition(frameIdentifier, requestingOrigin, topOrigin, *captureDevice, WTFMove(completionHandler));
&gt; 
&gt; Why not using UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame and passing it an optional completion handler?
&gt; Completion handler could be stored in UserMediaPermissionRequestProxy to override the current behavior.
&gt; 
&gt; To limit the code changes, we could initially only use the completion handler for speech recognition code path.
&gt; Then use the completion handler in gum code path as well as this would allow to move back WebPage code from UserMediaPermissionRequestManagerProxy.cpp back to WebPage.cpp.
&gt; Or maybe we can do everything in this patch?
&gt; Callback could be called in UserMediaPermissionRequestManagerProxy::finishGrantingRequest and UserMediaPermissionRequestManagerProxy::denyRequest.

I did not use requestUserMediaPermissionForFrame to limit the changes. This patch basically only changes to use a different UIDelegate callback and invoke a different prompt.

requestUserMediaPermissionForFrame seems to go through the whole process including finding a device(getUserMediaPermissionInfo, invoking delegate callback from checkUserMediaPermissionForOrigin), checking deviceIdHashSalt, validating user media request constraints, checking a set of settings (like mockCaptureDevicesEnabled, which is checked by SpeechRecognitionPermissionManager), requesting system validation(checking TCC permission, which is done by SpeechRecognitionPermissionManager). I am not sure all steps are necessary for speech recognition request.

To use requestUserMediaPermissionForFrame, it seems better to merge some functionalities of SpeechRecognitionPermissionManager and userMediaPermissionRequestManager. How about switching to the same delegate callback first, and refactoring to merge in a follow up patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723816</commentid>
    <comment_count>7</comment_count>
      <attachid>418751</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-29 11:44:29 -0800</bug_when>
    <thetext>Created attachment 418751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723824</commentid>
    <comment_count>8</comment_count>
      <attachid>418754</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-29 12:22:31 -0800</bug_when>
    <thetext>Created attachment 418754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723835</commentid>
    <comment_count>9</comment_count>
      <attachid>418754</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-29 12:47:21 -0800</bug_when>
    <thetext>Comment on attachment 418754
Patch

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

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h:167
&gt; +    HashMap&lt;RefPtr&lt;UserMediaPermissionRequestProxy&gt;, CompletionHandler&lt;void(bool)&gt;&gt; m_speechRecognitionRequestCallbacks;

I think it would be best to have UserMediaPermissionRequestProxy owns the CompletionHandler and only set it for speech requests.
It is fine to start with a dedicated checkUserMediaPermissionForSpeechRecognition, when having the request decision, we can check whether it has a callback.
If the request has a callback, we can keep calling it and returning early for now, and in a later patch, make full use of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723844</commentid>
    <comment_count>10</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-29 13:09:17 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; Comment on attachment 418754 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418754&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.h:167
&gt; &gt; +    HashMap&lt;RefPtr&lt;UserMediaPermissionRequestProxy&gt;, CompletionHandler&lt;void(bool)&gt;&gt; m_speechRecognitionRequestCallbacks;
&gt; 
&gt; I think it would be best to have UserMediaPermissionRequestProxy owns the
&gt; CompletionHandler and only set it for speech requests.
&gt; It is fine to start with a dedicated
&gt; checkUserMediaPermissionForSpeechRecognition, when having the request
&gt; decision, we can check whether it has a callback.
&gt; If the request has a callback, we can keep calling it and returning early
&gt; for now, and in a later patch, make full use of it.

I see, will make the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723941</commentid>
    <comment_count>11</comment_count>
      <attachid>418785</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-29 16:23:36 -0800</bug_when>
    <thetext>Created attachment 418785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723974</commentid>
    <comment_count>12</comment_count>
      <attachid>418794</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-29 17:40:07 -0800</bug_when>
    <thetext>Created attachment 418794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723991</commentid>
    <comment_count>13</comment_count>
      <attachid>418799</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-01-29 19:07:48 -0800</bug_when>
    <thetext>Created attachment 418799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724132</commentid>
    <comment_count>14</comment_count>
      <attachid>418799</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-01 00:23:44 -0800</bug_when>
    <thetext>Comment on attachment 418799
Patch

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

&gt; Source/WebCore/Modules/speech/SpeechRecognition.cpp:79
&gt; +    auto frameIdentifier = optionalFrameIdentifier ? *optionalFrameIdentifier : FrameIdentifier { };

We probably do not need to check frame.
We could do:
auto frameID = document.frameID();
if (!frameID)
    return Exception { InvalidStateError, &quot;Recognition is not in a valid frame&quot;_s };
...

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:78
&gt; +void SpeechRecognitionPermissionManager::request(const String&amp; lang, const WebCore::ClientOrigin&amp; origin, const WebCore::FrameIdentifier frameIdentifier, SpeechRecognitionPermissionRequestCallback&amp;&amp; completiontHandler)

s/const WebCore::FrameIdentifier/WebCore::FrameIdentifier/
Ditto below.
Or is it to make sure it stays const?

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:65
&gt; +    const WebCore::FrameIdentifier m_frameIdentifier;

Ditto here.

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:244
&gt; +        callback(true);

We will miss device ID exposure which is done in finishGrantingRequest.
I guess we should fix this in a refactoring.

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:616
&gt; +void UserMediaPermissionRequestManagerProxy::checkUserMediaPermissionForSpeechRecognition(const WebCore::FrameIdentifier frameIdentifier, const WebCore::SecurityOrigin&amp; requestingOrigin, const WebCore::SecurityOrigin&amp; topOrigin, const WebCore::CaptureDevice&amp; device, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)

ditto for const WebCore::FrameIdentifier

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:632
&gt; +    }

Can we replace wasRequestDenied and searchForGrantedRequest with getRequestAction().
We will miss the ability of being able to reprompt user if speech recognition is made as part of a user gesture.

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.cpp:44
&gt; +    , m_decisionCompletionHandler(WTFMove(decisionCompletionHandler))

We probably need to call this completion handler in UserMediaPermissionRequestManagerProxy::invalidatePendingRequests() or UserMediaPermissionRequestProxy::invalidate().

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:10418
&gt; +void WebPageProxy::requestUserMediaPermissionForSpeechRecognition(const WebCore::FrameIdentifier frameIdentifier, const WebCore::SecurityOrigin&amp; requestingOrigin, const WebCore::SecurityOrigin&amp; topOrigin, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)

const WebCore::FrameIdentifier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724287</commentid>
    <comment_count>15</comment_count>
      <attachid>418799</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-01 09:51:38 -0800</bug_when>
    <thetext>Comment on attachment 418799
Patch

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

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognition.cpp:79
&gt;&gt; +    auto frameIdentifier = optionalFrameIdentifier ? *optionalFrameIdentifier : FrameIdentifier { };
&gt; 
&gt; We probably do not need to check frame.
&gt; We could do:
&gt; auto frameID = document.frameID();
&gt; if (!frameID)
&gt;     return Exception { InvalidStateError, &quot;Recognition is not in a valid frame&quot;_s };
&gt; ...

I found WebKitLegacy does not have frameIdentifier (WebFrameLoaderClient::frameID()). If we throw exception here, we will have different behavior in WebKit and WebKitLegacy and break some layout test.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:78
&gt;&gt; +void SpeechRecognitionPermissionManager::request(const String&amp; lang, const WebCore::ClientOrigin&amp; origin, const WebCore::FrameIdentifier frameIdentifier, SpeechRecognitionPermissionRequestCallback&amp;&amp; completiontHandler)
&gt; 
&gt; s/const WebCore::FrameIdentifier/WebCore::FrameIdentifier/
&gt; Ditto below.
&gt; Or is it to make sure it stays const?

No, will remove const.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:65
&gt;&gt; +    const WebCore::FrameIdentifier m_frameIdentifier;
&gt; 
&gt; Ditto here.

Okay.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:244
&gt;&gt; +        callback(true);
&gt; 
&gt; We will miss device ID exposure which is done in finishGrantingRequest.
&gt; I guess we should fix this in a refactoring.

Not sure what is device ID exposure. 
I leave a comment in https://bugs.webkit.org/show_bug.cgi?id=221213 to remind myself about this.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:616
&gt;&gt; +void UserMediaPermissionRequestManagerProxy::checkUserMediaPermissionForSpeechRecognition(const WebCore::FrameIdentifier frameIdentifier, const WebCore::SecurityOrigin&amp; requestingOrigin, const WebCore::SecurityOrigin&amp; topOrigin, const WebCore::CaptureDevice&amp; device, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; ditto for const WebCore::FrameIdentifier

Okay.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:632
&gt;&gt; +    }
&gt; 
&gt; Can we replace wasRequestDenied and searchForGrantedRequest with getRequestAction().
&gt; We will miss the ability of being able to reprompt user if speech recognition is made as part of a user gesture.

Sure.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestProxy.cpp:44
&gt;&gt; +    , m_decisionCompletionHandler(WTFMove(decisionCompletionHandler))
&gt; 
&gt; We probably need to call this completion handler in UserMediaPermissionRequestManagerProxy::invalidatePendingRequests() or UserMediaPermissionRequestProxy::invalidate().

Okay.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:10418
&gt;&gt; +void WebPageProxy::requestUserMediaPermissionForSpeechRecognition(const WebCore::FrameIdentifier frameIdentifier, const WebCore::SecurityOrigin&amp; requestingOrigin, const WebCore::SecurityOrigin&amp; topOrigin, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; const WebCore::FrameIdentifier?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724293</commentid>
    <comment_count>16</comment_count>
      <attachid>418890</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-02-01 09:59:45 -0800</bug_when>
    <thetext>Created attachment 418890
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724365</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-01 12:30:50 -0800</bug_when>
    <thetext>Committed r272165: &lt;https://trac.webkit.org/changeset/272165&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418890.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785572</commentid>
    <comment_count>18</comment_count>
      <attachid>418890</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-19 13:50:48 -0700</bug_when>
    <thetext>Comment on attachment 418890
Patch for landing

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

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:624
&gt; +    auto request = UserMediaPermissionRequestProxy::create(*this, 0, frameIdentifier, frameIdentifier, requestingOrigin.isolatedCopy(), topOrigin.isolatedCopy(), Vector&lt;WebCore::CaptureDevice&gt; { device }, { }, { }, WTFMove(completionHandler));

Why is it OK to pass 0 as the userRequestID here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785575</commentid>
    <comment_count>19</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-19 14:18:21 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #18)
&gt; Comment on attachment 418890 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418890&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:624
&gt; &gt; +    auto request = UserMediaPermissionRequestProxy::create(*this, 0, frameIdentifier, frameIdentifier, requestingOrigin.isolatedCopy(), topOrigin.isolatedCopy(), Vector&lt;WebCore::CaptureDevice&gt; { device }, { }, { }, WTFMove(completionHandler));
&gt; 
&gt; Why is it OK to pass 0 as the userRequestID here?

This does not correspond to a UserMediaPermissionRequest in web process. We create the RequestProxy only to check the media permission for speech.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418629</attachid>
            <date>2021-01-28 01:08:47 -0800</date>
            <delta_ts>2021-01-28 12:33:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221082-20210128010847.patch</filename>
            <type>text/plain</type>
            <size>44081</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1ZGUyYWU3MzY4NTk1
ODJkNzk4NzdhM2RmMDM1NjM0N2Q2ZTFhYy4uYjZiY2VmYTQwZWUyZGQ0NDBiOGFhM2Q1OWI4ZWU2
ODVlZWNlOWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAxLTI4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVy
bWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZyYW1lIGlkZW50aWZpZXIgdG8gU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0IGFzIGl0IGlzIG5lZWRlZCBmb3IgY2hlY2tpbmcgdXNlciBt
ZWRpYSBwZXJtaXNzaW9uLgorIAorICAgICAgICBVcGRhdGVkIGV4aXN0aW5nIHRlc3RzIGZvciBj
aGFuZ2VkIGJlaGF2aW9yLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpmcmFt
ZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIHBhZ2UvRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjEtMDEtMjcgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGxpbmsgSU9TdXJmYWNlQWNjZWxlcmF0b3Igb24g
c2ltdWxhdG9yIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3YmQ4ZDYyMjEwODE3MzdkMWNiYjNmYzQ1ZDY0
N2RhNzQ1MjBmMzk2Li4wZDU3ZTU0MmI4OGNlYzE2MmEwNjYzN2Q5ZWQ0YWFkMmIxNDYyYzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAxLTI4ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVybWlzc2lvbiBwcm9tcHQg
Zm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyIGFz
ayBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBmb3IgdXNlciBwZXJtaXNz
aW9uIG9uIAorICAgICAgICBtaWNyb3Bob25lLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQ
cm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRlbnlSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50UmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpyZXF1aXJlc0F1ZGlvQ2FwdHVyZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnVzZWRGb3JT
cGVlY2hSZWNvZ25pdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0
aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjEtMDEtMjcg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIGFkZCBh
Y2Nlc3NpYmlsaXR5IGltYWdlIGV4dHJhY3Rpb24gY29udGV4dG1lbnUgaXRlbSBmb3IgcmV2ZWFs
aW5nIGltYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb24uY3BwCmluZGV4IDM5NDEzN2NmNjg3YTljMjJjMjAwYzhjYzExNGNlZTZjZGUy
YmMxY2QuLmQyZDNmMzIxOWY2OTY1ZWI0ZDYzM2EwYjEzMWRkYWRiY2I5ODZlMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAK
QEAgLTcxLDcgKzcxLDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU3BlZWNoUmVjb2duaXRpb246OnN0
YXJ0UmVjb2duaXRpb24oKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9y
LCAiUmVjb2duaXRpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbm5lY3Rpb24iX3MgfTsKIAog
ICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwotICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcs
IG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVu
dE9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCkgfSk7CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwor
ICAgIEFTU0VSVChmcmFtZSk7CisgICAgbV9jb25uZWN0aW9uLT5zdGFydChpZGVudGlmaWVyKCks
IG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRzLCBtX21heEFsdGVybmF0aXZl
cywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCAqZnJhbWUpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6
U3RhcnRpbmc7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKaW5kZXgg
MDY5MjZjM2MzMDAwNmMyYmE4NzNiODZlOTEzMTE2ZjQ3ZTE2Yzk2Yy4uNWNlYTJkMmFlZDg0MGYx
ZTc0NmZhNjRjNjAwZTNiNzAyOWQzNDBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGcmFtZTsKIGNsYXNz
IFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudDsKIGNsYXNzIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOwogc3RydWN0IENsaWVudE9yaWdpbjsKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnQmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydChTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxh
bmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0
ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4
QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4mJiwgRnJhbWUmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUmJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAppbmRleCA5YWFkZTYx
NzFlMDYyZjVhOGNjM2ExNjI4OTI5OTQ5OWRmZDlkMGE2Li42Mzg4OGE5MGE0OTRkM2U2NzJlZmVj
MWUwM2I1YzBmYjJjZmM5MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaApAQCAtNDEsNiArNDEsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5p
bnRlcmltUmVzdWx0czsgfQogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcygpIGNvbnN0IHsg
cmV0dXJuIG1faW5mby5tYXhBbHRlcm5hdGl2ZXM7IH0KICAgICBjb25zdCBDbGllbnRPcmlnaW4g
Y2xpZW50T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudE9yaWdpbjsgfQorICAg
IEZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2luZm8u
ZnJhbWVJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0SW5mbyBtX2luZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKaW5kZXggMWVmZTllMDY0NmU3
NDdjYjU1ZDdjY2IwZjdiMThmZjVlMGIzYzRjMi4uZTdkNDBiZjAzODYzZGNmM2M3ZDAzN2UxNDI0
ZmQ4YWVhM2JjNjM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKKyNpbmNsdWRlICJG
cmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDYgKzM4LDcg
QEAgc3RydWN0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gewogICAgIGJvb2wgaW50ZXJp
bVJlc3VsdHMgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyB7IDEgfTsK
ICAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luOworICAgIEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlkZW50aWZpZXI7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8+IGRlY29kZShEZWNvZGVyJik7CkBAIC00
NSw3ICs0Nyw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgY2xpZW50SWRl
bnRpZmllciA8PCBsYW5nIDw8IGNvbnRpbnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0
ZXJuYXRpdmVzIDw8IGNsaWVudE9yaWdpbjsKKyAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZp
ZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0
aXZlcyA8PCBjbGllbnRPcmlnaW4gPDwgZnJhbWVJZGVudGlmaWVyOwogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgpAQCAtODEsMTMgKzgzLDE5IEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZShEZWNv
CiAgICAgaWYgKCFjbGllbnRPcmlnaW4pCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
KyAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSWRlbnRpZmllcjsKKyAgICBkZWNv
ZGVyID4+IGZyYW1lSWRlbnRpZmllcjsKKyAgICBpZiAoIWZyYW1lSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3Zl
KCpjbGllbnRJZGVudGlmaWVyKSwKICAgICAgICAgV1RGTW92ZSgqbGFuZyksCiAgICAgICAgIFdU
Rk1vdmUoKmNvbnRpbnVvdXMpLAogICAgICAgICBXVEZNb3ZlKCppbnRlcmltUmVzdWx0cyksCiAg
ICAgICAgIFdURk1vdmUoKm1heEFsdGVybmF0aXZlcyksCi0gICAgICAgIFdURk1vdmUoKmNsaWVu
dE9yaWdpbikKKyAgICAgICAgV1RGTW92ZSgqY2xpZW50T3JpZ2luKSwKKyAgICAgICAgV1RGTW92
ZSgqZnJhbWVJZGVudGlmaWVyKQogICAgIH19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAppbmRleCAzMTQ5NDhlYTJj
NTY1NDA3OTUxNGUwNzY3OTFhNjUzMTQyZTY3OThmLi4wYTY1ZTZkODBiMTZkZWVhOTE3ODliMGQ4
ODlkMGNmNzc5NjgwODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3Bl
ZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlT
cGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50JikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgdW5yZWdpc3RlckNsaWVudChT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9p
ZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYpIGZpbmFsIHsg
fQorICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90LCBDbGllbnRPcmln
aW4mJiwgRnJhbWUmKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIGFi
b3J0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsg
fQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUm
JikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQppbmRleCA5MTE5NTYwMzY4NjlhZDllM2U2OGI4OWMxYzJlYzM5NmEyY2MyOTc0Li5iMjMwYTAw
Y2RkMjMzNmUxZDg0NjEyNTlkNjU2Njk5Y2U5YWVlMWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwODEsNyArMTA4MSw3IEBAIHZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0KFdlYlBhZ2VQcm94CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
Y29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCA9IChwcm90ZWN0ZWRSZXF1ZXN0LT5yZXF1aXJl
c1ZpZGVvQ2FwdHVyZSgpIHx8IHByb3RlY3RlZFJlcXVlc3QtPnJlcXVpcmVzRGlzcGxheUNhcHR1
cmUoKSkgPyBwcm90ZWN0ZWRSZXF1ZXN0LT52aWRlb0RldmljZVVJRHMoKS5maXJzdCgpIDogU3Ry
aW5nKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQgPSBwcm90ZWN0ZWRS
ZXF1ZXN0LT5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpID8gcHJvdGVjdGVkUmVxdWVzdC0+YXVkaW9E
ZXZpY2VVSURzKCkuZmlyc3QoKSA6IFN0cmluZygpOworICAgICAgICBjb25zdCBTdHJpbmcmIGF1
ZGlvRGV2aWNlVUlEID0gKHByb3RlY3RlZFJlcXVlc3QtPnJlcXVpcmVzQXVkaW9DYXB0dXJlKCkg
JiYgIXByb3RlY3RlZFJlcXVlc3QtPnVzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbigpKSA/IHByb3Rl
Y3RlZFJlcXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpLmZpcnN0KCkgOiBTdHJpbmcoKTsKICAgICAg
ICAgcHJvdGVjdGVkUmVxdWVzdC0+YWxsb3coYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlE
KTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAppbmRleCBhODA4YmY2YzY0
ZTg1ZjM0NWZlZThlNTliZWZmOTE2ZWI3OTAxYmFiLi40YjkyYzRhZWFmZjY1ZjY3NjI2ZTY1OTY4
MTU0MzU1MzYyNzg0NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtNzUsOSAr
NzUsOSBAQCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcigpCiAgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gbWFuYWdlciBoYXMgZXhpdGVkIl9zIH0p
OwogfQogICAgIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQordm9pZCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQog
ewotICAgIG1fcmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q6OmNyZWF0ZShsYW5nLCBvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwor
ICAgIG1fcmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OmNyZWF0ZShsYW5nLCBvcmlnaW4sIGZyYW1lSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9u
dEhhbmRsZXIpKSk7CiAgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCiAgICAgICAgIHN0
YXJ0TmV4dFJlcXVlc3QoKTsKIH0KQEAgLTEyNSwxNSArMTI1LDYgQEAgdm9pZCBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KCkKICNlbmRp
ZgogICAgIH0KIAotICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCBhbGxvdyB0aGlyZC1wYXJ0eSBh
Y2Nlc3MuCi0gICAgaWYgKG1fdXNlclBlcm1pc3Npb25DaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5r
bm93bikgewotICAgICAgICBhdXRvIGNsaWVudE9yaWdpbiA9IG1fcmVxdWVzdHMuZmlyc3QoKS0+
b3JpZ2luKCk7Ci0gICAgICAgIGF1dG8gcmVxdWVzdGluZ09yaWdpbiA9IGNsaWVudE9yaWdpbi5j
bGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKLSAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBj
bGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgIGlmICghcmVx
dWVzdGluZ09yaWdpbi0+aXNTYW1lT3JpZ2luQXModG9wT3JpZ2luKSkKLSAgICAgICAgICAgIG1f
dXNlclBlcm1pc3Npb25DaGVjayA9IENoZWNrUmVzdWx0OjpEZW5pZWQ7Ci0gICAgfQotCiAgICAg
aWYgKG1fdXNlclBlcm1pc3Npb25DaGVjayA9PSBDaGVja1Jlc3VsdDo6RGVuaWVkKSB7CiAgICAg
ICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
ciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpOb3RBbGxvd2VkLCAiVXNl
ciBwZXJtaXNzaW9uIGNoZWNrIGhhcyBmYWlsZWQiX3MgfSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTIyNSw2ICsyMTYsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OnJlcXVlc3RVc2VyUGVybWlzc2lvbigpCiAKICAgICBhdXRvJiBjdXJyZW50UmVxdWVzdCA9IG1f
cmVxdWVzdHMuZmlyc3QoKTsKICAgICBhdXRvIGNsaWVudE9yaWdpbiA9IGN1cnJlbnRSZXF1ZXN0
LT5vcmlnaW4oKTsKKyAgICBhdXRvIHJlcXVlc3RpbmdPcmlnaW4gPSBjbGllbnRPcmlnaW4uY2xp
ZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byB0b3BPcmlnaW4gPSBjbGllbnRP
cmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byBkZWNpc2lvbkhhbmRs
ZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGJvb2wgZ3JhbnRlZCkg
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMjM4LDcgKzIzMCw3IEBAIHZvaWQgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKCkKIAog
ICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7CiAgICAgfTsKLSAgICBtX3BhZ2Uu
dWlDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0KG1fcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcE9yaWdpbi5nZXQoKSku
Z2V0KCksIFdURk1vdmUoZGVjaXNpb25IYW5kbGVyKSk7CisgICAgbV9wYWdlLnJlcXVlc3RVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24ocmVxdWVzdGluZ09yaWdpbiwgdG9w
T3JpZ2luLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmRlY2lkZUJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCmluZGV4IDI0MjU3
NTk1YTI5ZjljNzA5MDBjZGU1NjkxODk0Yjk2Yjc1MzMzYzguLjg1YjRlZGZiZTU0NDViM2M2ZDYy
YzMwYzM5NWNmYzBkNDUyZjNhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQgeyBEZW5pZWQsIEdy
YW50ZWQsIFVua25vd24gfTsKICAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYpOwogICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0
KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3Qg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmKTsKIAogICAgIHZvaWQgZGVj
aWRlQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgeyBy
ZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKaW5kZXggNjU2YjU3NTdhZDI1
YjI0OTM5ZTM1NjNjYWQzM2M2MmNkNzNjZDY5Ny4uZmU0MWYzODE2Y2MxZmI5ZWI4N2U0ZGMyOTMw
Mzc3YTk2NjA5ZjM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMzQsOSArMzQsOSBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNv
bnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KGxhbmcsIG9yaWdpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChsYW5nLCBvcmlnaW4sIGZyYW1lSWRlbnRp
ZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB2b2lkIGNv
bXBsZXRlKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgZXJyb3Ip
CkBAIC00OSwxNCArNDksMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNv
bnN0IHsgcmV0dXJuIG1fbGFuZzsgfQogCiBwcml2YXRlOgotICAgIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIDogbV9sYW5nKGxhbmcpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQorICAg
ICAgICAsIG1fZnJhbWVJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcikKICAgICAgICAgLCBtX2Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsgfQogCiAg
ICAgU3RyaW5nIG1fbGFuZzsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47Cisg
ICAgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fZnJhbWVJZGVudGlmaWVyOwogICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25FcnJvcj4mJik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggZjYzMWUz
Yzg2ODQwM2Y5MDZhNzhjYWVjNjk5MDA5ODQ2NDdiODllZS4uOGMxNmY5NjM0ZThmNWRhMmMwNTg0
ZDg2ODg2YTY0M2IyMTMwZDA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtNTIsMTEgKzUyLDExIEBAIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0
aW9uPiYmIGNvbm5lY3RpCiB7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0
YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
Y2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGlu
dGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmIG9yaWdpbikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRl
bnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1
bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9y
aWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcikKIHsKICAgICBN
RVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5j
b250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7Ci0gICAgYXV0byByZXF1ZXN0SW5mbyA9IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBXVEZN
b3ZlKGxhbmcpLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBX
VEZNb3ZlKG9yaWdpbikgfTsKKyAgICBhdXRvIHJlcXVlc3RJbmZvID0gV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUobGFuZyks
IGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUob3Jp
Z2luKSwgZnJhbWVJZGVudGlmaWVyIH07CiAgICAgYXV0byYgbmV3UmVxdWVzdCA9IG1fcmVxdWVz
dHMuYWRkKGNsaWVudElkZW50aWZpZXIsIG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0PihXVEZNb3ZlKHJlcXVlc3RJbmZvKSkpLml0ZXJhdG9yLT52YWx1ZTsKIAog
ICAgIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdCgqbmV3UmVxdWVzdCk7CkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0
LmxhbmcoKSwgcmVxdWVzdC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKGF1dG8gZXJy
b3IpIG11dGFibGUgeworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5sYW5nKCksIHJl
cXVlc3QuY2xpZW50T3JpZ2luKCksIHJlcXVlc3QuZnJhbWVJZGVudGlmaWVyKCksIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJl
cXVlc3QpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggZWNiYTQwNzA5NDAzOGIzOTc2NTVlY2IwMThkYzIx
N2RiYWExYWI4Zi4uZDJjNDBiOGE1MWZlYjFiNmUyYWM3ZmEwOGFhY2E2NzMyNzMwYzQ2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5o
CkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vzc1By
b3h5OwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcjsKLXVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNr
ZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvcj4mJik+JiYpPjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNoZWNrZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik+Owog
dXNpbmcgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxl
ZCA9IEZ1bmN0aW9uPGJvb2woKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKICAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpD
b25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9j
a1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmKTsKICNlbmRpZgogCi0gICAgdm9pZCBzdGFydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJp
bmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90
IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOworICAgIHZvaWQgc3Rh
cnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwg
U3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50
NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgaW52
YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkx
NmJiZTQ2ZTgyOTkxMzI5ZC4uMWY2ZjE0YzU1ZGNjNDk5ZWY5YjYxY2Y4YjI0NGJkZWRhMDI2OGU5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogIAogIG1l
c3NhZ2VzIC0+IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50ZWQgewotICAgIFN0
YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
aWRlbnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbikKKyAgICBTdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBsYW5nLCBib29sIGNvbnRpbnVv
dXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgc3RydWN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlkZW50aWZpZXIpCiAgICAgU3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgQWJvcnQoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IEludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IDJjMGRiNzg3MzVjYzMxMzNhMzIwMzZlNTZiNDQ2YjRjOTgzYTNjMDguLjIyY2Q3MzRkNDJm
ODI3M2M3NGNhMmFhYTA5NTdlOTU5NDdlMWQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAKQEAgLTIxMyw2ICsyMTMsMTMgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVueVJlcXVlc3QoVXNlck1lZGlhUGVybWlzc2lvblJlcXUK
ICAgICBpZiAocmVhc29uID09IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJN
ZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCkKICAgICAgICAgbV9kZW5p
ZWRSZXF1ZXN0cy5hcHBlbmQoRGVuaWVkUmVxdWVzdCB7IHJlcXVlc3QubWFpbkZyYW1lSUQoKSwg
cmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QudG9wTGV2
ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUo
KSwgcmVxdWVzdC5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpLCByZXF1ZXN0LnJlcXVpcmVzRGlzcGxh
eUNhcHR1cmUoKSB9KTsKIAorICAgIGlmIChyZXF1ZXN0LnVzZWRGb3JTcGVlY2hSZWNvZ25pdGlv
bigpKSB7CisgICAgICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uUmVxdWVzdENhbGxiYWNr
cy5jb250YWlucygmcmVxdWVzdCkpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbV9zcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RDYWxsYmFja3MudGFrZSgmcmVxdWVzdCk7CisgICAgICAgIGNhbGxi
YWNrKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgaWYgKG1fcHJlZ3JhbnRlZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiByZXF1ZXN0
LnVzZXJSZXF1ZXN0KCkuYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKQogICAgICAgICBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5hdWRpb0NhcHR1cmVGYWN0b3J5KCkucmVt
b3ZlRXh0ZW5zaXZlT2JzZXJ2ZXIoKnRoaXMpOwpAQCAtMjM0LDYgKzI0MSwxMyBAQCB2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpncmFudFJlcXVlc3QoVXNlck1l
ZGlhUGVybWlzc2lvblJlcQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCByZXF1ZXN0LnVzZXJNZWRpYUlEKCksICIsIHZpZGVvOiAiLCByZXF1
ZXN0LnZpZGVvRGV2aWNlKCkubGFiZWwoKSwgIiwgYXVkaW86ICIsIHJlcXVlc3QuYXVkaW9EZXZp
Y2UoKS5sYWJlbCgpKTsKIAorICAgIGlmIChyZXF1ZXN0LnVzZWRGb3JTcGVlY2hSZWNvZ25pdGlv
bigpKSB7CisgICAgICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChtYWtlUmVmKHJlcXVlc3Qp
KTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1fc3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Q2Fs
bGJhY2tzLnRha2UoJnJlcXVlc3QpOworICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKwogICAgIGF1dG8mIHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmln
aW4gPSByZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKICAgICBhdXRv
JiB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSByZXF1ZXN0LnRvcExldmVsRG9jdW1l
bnRTZWN1cml0eU9yaWdpbigpOwogICAgIG1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UoKS5kZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luKHVzZXJNZWRpYURv
Y3VtZW50U2VjdXJpdHlPcmlnaW4sIHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0ID0gbWFrZVJlZihyZXF1
ZXN0KV0oU3RyaW5nJiYpIG11dGFibGUgewpAQCAtNjAyLDYgKzYxNiwzMiBAQCB2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUgogICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG1fcGFnZSwgKndlYkZyYW1lLCBXVEZNb3ZlKHVzZXJNZWRp
YU9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxPcmlnaW4pLCAqbV9jdXJyZW50VXNlck1lZGlhUmVx
dWVzdCk7CiB9CiAKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5nT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgp
OworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gZnJhbWVJRCA9IGZyYW1lLT5mcmFtZUlE
KCk7CisKKyAgICBpZiAod2FzUmVxdWVzdERlbmllZChmcmFtZUlELCByZXF1ZXN0aW5nT3JpZ2lu
LCB0b3BPcmlnaW4sIHRydWUsIGZhbHNlLCBmYWxzZSkpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNlYXJjaEZv
ckdyYW50ZWRSZXF1ZXN0KGZyYW1lSUQsIHJlcXVlc3RpbmdPcmlnaW4sIHRvcE9yaWdpbiwgdHJ1
ZSwgZmFsc2UpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6Y3JlYXRlKCp0aGlzLCAwLCBmcmFtZUlELCBmcmFtZUlELCByZXF1ZXN0aW5n
T3JpZ2luLmlzb2xhdGVkQ29weSgpLCB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIHsgfSwgeyB9
LCB7IH0sIHRydWUpOworICAgIG1fc3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Q2FsbGJhY2tzLnNl
dChyZXF1ZXN0LnB0cigpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byB1
c2VyTWVkaWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVxdWVzdGluZ09y
aWdpbik7CisgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh0b3BPcmlnaW4pOworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG1fcGFnZSwgKmZyYW1lLCBXVEZNb3ZlKHVzZXJNZWRp
YU9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxPcmlnaW4pLCByZXF1ZXN0LmdldCgpKTsKK30KKwog
I2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKGNvbnN0IFdlYlBhZ2VQcm94eSYsIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKaW5kZXgg
NzNlM2EyYmU0ZTdmYzAyMmJmZDVlNTA5NjE5MGFiOTZjMDViZjM5Ny4uYzA4YTAwYWY2MWJmZjAx
Y2M4OGUyMGE2YzZkMGZmZWE2ZDE3ZTZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oCkBAIC05Nyw2ICs5Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tDYXB0dXJlRGV2
aWNlc0VuYWJsZWRPdmVycmlkZShPcHRpb25hbDxib29sPik7CiAgICAgYm9vbCBoYXNQZW5kaW5n
Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0NhcHR1cmU7IH0KIAorICAgIHZv
aWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCiBwcml2YXRlOgogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CkBA
IC0xNjIsNiArMTY0LDggQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFZlY3RvcjxEZW5pZWRSZXF1
ZXN0PiBtX2RlbmllZFJlcXVlc3RzOwogCisgICAgSGFzaE1hcDxSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+PiBtX3Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdENhbGxiYWNrczsKKwogICAgIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtX2NhcHR1cmVTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6OklzTm90UGxheWluZyB9OwogICAgIFJ1bkxvb3A6OlRpbWVyPFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PiBtX3dhdGNoZG9nVGltZXI7CiAgICAgU2Vjb25kcyBt
X2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAppbmRleCA1MTVk
ODBmMjRiMTZmNWVkODAzMTAzZjgyYWE1NDkwMDllMmE1ZTZlLi45MDY2MTBmYTQzODE0MWZjY2Yy
ZDU5ODlmZDcyMWJiNWFkZmU5MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcApAQCAtMzEsNyAr
MzEsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwg
dWludDY0X3QgdXNlck1lZGlhSUQsIEZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVk
aWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2
aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJD
b3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0KQorVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQs
IEZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFJl
ZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVm
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3Rv
cjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6
OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVl
c3QmJiByZXF1ZXN0LCBib29sIHVzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbikKICAgICA6IG1fbWFu
YWdlcigmbWFuYWdlcikKICAgICAsIG1fdXNlck1lZGlhSUQodXNlck1lZGlhSUQpCiAgICAgLCBt
X21haW5GcmFtZUlEKG1haW5GcmFtZUlEKQpAQCAtNDEsNiArNDEsNyBAQCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJN
ZWRpYVBlcm1pcwogICAgICwgbV9lbGlnaWJsZVZpZGVvRGV2aWNlcyhXVEZNb3ZlKHZpZGVvRGV2
aWNlcykpCiAgICAgLCBtX2VsaWdpYmxlQXVkaW9EZXZpY2VzKFdURk1vdmUoYXVkaW9EZXZpY2Vz
KSkKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV91c2VkRm9yU3Bl
ZWNoUmVjb2duaXRpb24odXNlZEZvclNwZWVjaFJlY29nbml0aW9uKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmgKaW5kZXggM2VmNzUyYTkyOGQ3ZTM0MzFmNWEwNjU1M2Q1NmQ3MDRhNzI0MDlmZS4u
ZDBhYjA0YjA2YmExOTVmMWNlYTIyMDhhZDkzYjlkOWU5OTQ0NjAwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkuaApAQCAtMzYsOSArMzYsOSBAQCBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTsKIAogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5PiBjcmVhdGUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgbWFpbkZyYW1lSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBWZWN0b3I8V2Vi
Q29yZTo6Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYg
cmVxdWVzdCkKKyAgICBzdGF0aWMgUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+
IGNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwg
dWludDY0X3QgdXNlck1lZGlhSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJ
RCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYg
dmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBib29s
IHVzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbiA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShtYW5hZ2VyLCB1
c2VyTWVkaWFJRCwgbWFpbkZyYW1lSUQsIGZyYW1lSUQsIFdURk1vdmUodXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKGF1ZGlv
RGV2aWNlcyksIFdURk1vdmUodmlkZW9EZXZpY2VzKSwgV1RGTW92ZShyZXF1ZXN0KSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
KG1hbmFnZXIsIHVzZXJNZWRpYUlELCBtYWluRnJhbWVJRCwgZnJhbWVJRCwgV1RGTW92ZSh1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiksIFdU
Rk1vdmUoYXVkaW9EZXZpY2VzKSwgV1RGTW92ZSh2aWRlb0RldmljZXMpLCBXVEZNb3ZlKHJlcXVl
c3QpLCB1c2VkRm9yU3BlZWNoUmVjb2duaXRpb24pKTsKICAgICB9CiAKICAgICB2b2lkIGFsbG93
KGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VV
SUQpOwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAg
ICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX21hbmFnZXI7IH0KIAotICAgIGJv
b2wgcmVxdWlyZXNBdWRpb0NhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2VsaWdpYmxlQXVkaW9E
ZXZpY2VzLnNpemUoKTsgfQorICAgIGJvb2wgcmVxdWlyZXNBdWRpb0NhcHR1cmUoKSBjb25zdCB7
IHJldHVybiBtX3VzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbiB8fCBtX2VsaWdpYmxlQXVkaW9EZXZp
Y2VzLnNpemUoKTsgfQogICAgIGJvb2wgcmVxdWlyZXNWaWRlb0NhcHR1cmUoKSBjb25zdCB7IHJl
dHVybiAhcmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpICYmIG1fZWxpZ2libGVWaWRlb0RldmljZXMu
c2l6ZSgpOyB9CiAgICAgYm9vbCByZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXF1ZXN0LnR5cGUgPT0gV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpE
aXNwbGF5TWVkaWEgJiYgbV9lbGlnaWJsZVZpZGVvRGV2aWNlcy5zaXplKCk7IH0KIApAQCAtODks
OCArODksMTAgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCBkb0RlZmF1bHRBY3Rpb24oKTsK
IAorICAgIGJvb2wgdXNlZEZvclNwZWVjaFJlY29nbml0aW9uKCkgeyByZXR1cm4gbV91c2VkRm9y
U3BlZWNoUmVjb2duaXRpb247IH0KKwogcHJpdmF0ZToKLSAgICBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWlu
dDY0X3QgdXNlck1lZGlhSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYg
dXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0
b3BMZXZlbERvY3VtZW50T3JpZ2luLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiBh
dWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNl
cywgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYpOworICAgIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmLCB1
aW50NjRfdCB1c2VyTWVkaWFJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlE
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4m
JiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
IHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYm
IGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZp
Y2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiwgYm9vbCB1c2VkRm9yU3BlZWNoUmVj
b2duaXRpb24pOwogCiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkq
IG1fbWFuYWdlcjsKICAgICB1aW50NjRfdCBtX3VzZXJNZWRpYUlEOwpAQCAtMTAzLDYgKzEwNSw4
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0IG1fcmVxdWVzdDsK
ICAgICBib29sIG1faGFzUGVyc2lzdGVudEFjY2VzcyB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1f
ZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0OworCisgICAgYm9vbCBtX3VzZWRGb3JTcGVlY2hSZWNv
Z25pdGlvbjsKIH07CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmJhOGVkODViNDBm
ODU4NWQ3ZWVjNDY5OWVmOTAxMWU2ZmUxNTA4OS4uOTkwMTI0Nzc4NDEyYzFjMWFjMWVkYmMxZmIy
N2JkMWU2MTk0YzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xMDM3OSwxMiArMTAzNzksMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0
aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxh
bmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIGNsaWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlv
bkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fc3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcikKICAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyPigqdGhpcyk7CiAKLSAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXItPnJlcXVlc3QobGFuZywgY2xpZW50T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5yZXF1ZXN0KGxh
bmcsIGNsaWVudE9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC0xMDM5Nyw2ICsxMDM5NywxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJDbwogICAgIG1f
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+ZGVjaWRlQnlEZWZhdWx0QWN0aW9u
KG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
IHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLmNoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvclNwZWVjaFJlY29nbml0aW9uKHJlcXVlc3RpbmdPcmlnaW4sIHRvcE9yaWdpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIFdlYkNvcmU6
OkNhcHR1cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUmVhbHRpbWVNZWRpYVNv
dXJjZUZvclNwZWVjaFJlY29nbml0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggYzdlMGFiMDU5N2ViNjc1OTk3YWMwOTU1ZGU1NmQxNDY1ZGM3ZjJmNC4uZjdh
YzY3MmYyMTgwNmU5MDAyZjMxYmYzODRkZWI1ODk4NWZiNGM3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4MTYsOCArMTgxNiw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMgY2FwdHVyZVJlcG9ydGlu
Z0RlbGF5KSB7IG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkgPSBjYXB0dXJlUmVwb3J0aW5n
RGVsYXk7IH0KICAgICBzaXplX3Qgc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyKCkgeyByZXR1
cm4gbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXI7IH0KIAotICAgIHZvaWQgcmVxdWVzdFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYpOworICAgIHZvaWQgcmVxdWVzdFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYm
KT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQnlEZWZh
dWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZv
clNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKIAogICAgIHZvaWQgc3luY0lmTW9ja0RldmljZXNFbmFibGVkQ2hhbmdlZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyNjc3ZWNkNzE2
ZjNmNzNmZGI3MmQ3M2ExYTk5MjlmZTkxYjZjYzYxLi5lYmNhMDNkMzE5NDdlOGM1ZTRkMjUzZGVm
YjZkNDE1NGRjNjc3ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTE3MjIsMTMgKzE3MjIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQK
IAogICAgIEFTU0VSVCghbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5jb250YWlucyhpZGVu
dGlmaWVyKSk7CiAgICAgYXV0byYgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJl
Y29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgYXV0byBwZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRy
KHRhcmdldFBhZ2UpXShhdXRvJiBsYW5nLCBhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9u
SGFuZGxlcikgbXV0YWJsZSB7CisgICAgYXV0byBwZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFn
ZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXShhdXRvJiBsYW5nLCBhdXRvJiBvcmlnaW4sIGF1
dG8gZnJhbWVJZGVudGlmaWVyLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewog
ICAgICAgICBpZiAoIXdlYWtQYWdlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5
cGU6Ok5vdEFsbG93ZWQsICJQYWdlIG5vIGxvbmdlciBleGlzdHMiX3MgfSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbihsYW5nLCBvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgd2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b24obGFuZywgb3JpZ2luLCBmcmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICB9OwogICAgIGF1dG8gY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQg
PSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CiAgICAgICAgIHJldHVy
biB3ZWFrUGFnZSAmJiB3ZWFrUGFnZS0+cHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24u
Y3BwCmluZGV4IGMzY2M4Yjk5Mzg5MTMzOTIyOWE0MDk1NzVmM2EzNDc0OTNkYTBmNDMuLjdhYzJl
NGFiMzczMDI5NmFlMDRhNzViYzhiODk0ZDM5NDUzMjJiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCkBAIC02OCw5ICs2OCwxMiBAQCB2b2lk
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6dW5yZWdpc3RlckNsaWVudChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbgogICAgIG1fY2xpZW50TWFwLnJlbW92ZShjbGllbnQuaWRlbnRp
ZmllcigpKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xp
ZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wg
aW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgY2xpZW50T3JpZ2luKQordm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b246OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVv
dXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGNsaWVu
dElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5h
dGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9
IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKKyAgICBBU1NFUlQod2ViRnJhbWUpOwor
CisgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGNsaWVu
dElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5h
dGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgd2ViRnJhbWUtPmZyYW1lSUQoKSkpOwogfQog
CiB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RvcChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKaW5kZXggNTk2
NmUzZmQ3NzMwNTJjMzkzMjcxNDQwZWQxMzdiMDEwODU3ZWUyMC4uMDJmZWU4NWQ4NDc1YzdmOTUw
NDAxZWE5MjA1ZmRiMmM5N2E5ZGM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24uaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
bwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
PiBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICB2
b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
KSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3Vz
LCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpGcmFtZSYpIGZpbmFsOwogICAgIHZvaWQgc3RvcChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNDQ5ZjM0N2VkZTE4Zjk2NDliNjc1ODUyYzk0YzQxYzVlNjNm
NWRjZi4uMmZmNjJkNzk5ZDdlMGE0ZjcxMWNkMDkzZmY1MzdlNmVkMDZjOWY0MyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTAxLTI4ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAg
VXNlIHVzZXIgbWVkaWEgcGVybWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tOgorICAgICAgICAo
LVtTcGVlY2hSZWNvZ25pdGlvblVJRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVy
ZUF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorCiAyMDIxLTAxLTI3ICBBYWthc2gg
SmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbYnVpbGQud2Via2l0Lm9y
Z10gQWRkIGJhc2ljIGF1dGhlbnRpY2F0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQppbmRleCAzOGFi
MTc1ZDFmZDMxMDkzYzQ4MzI3MDZhMmI4MDg4MWM4N2VkYzhiLi43NDM0NThmMzA5Nzg1Njc3NzJh
MGE0ZWY1YTc4NjFiMzFiNjg0ZGU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KQEAgLTYwLDcgKzYw
LDggQEAgc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IGNyZWF0ZWRXZWJWaWV3OwogCiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVBdXRo
b3JpemF0aW9uOiAoX1dLQ2FwdHVyZURldmljZXMpZGV2aWNlcyBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxlcihZRVMp
OworICAgIHBlcm1pc3Npb25SZXF1ZXN0ZWQgPSB0cnVlOworICAgIGRlY2lzaW9uSGFuZGxlcihz
aG91bGRHcmFudFBlcm1pc3Npb25SZXF1ZXN0KTsKIH0KIAogLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JVUkw6KE5TVVJMICop
dXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJZGVudGlmaWVyOihO
U1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3Ry
aW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcyZjkz
ZGUwZmQyYjdlYjAwMDhmNmNlNjlhN2U0OWI2M2IzMGIwYjYuLmZiYWVhZjI2Y2ZkMGM5ZWE5ZmFj
ZTVmYWJhZGQzMjYyYzUzMDE1OGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMS0yOCAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIFVzZSB1c2VyIG1lZGlh
IHBlcm1pc3Npb24gcHJvbXB0IGZvciBzcGVlY2ggcmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTA4MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlv
bi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6CisKIDIwMjEtMDEtMjcgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjb2xvcihhOTgtcmdiIC4u
LikgYXMgcGFydCBvZiBDU1MgQ29sb3IgNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbAppbmRleCAwN2UwZTJjMTZi
ZGM0MjRjNjk2NjY3ZTQ3NGNmYTE4OGNlMTQwMTBlLi44MjgwODEyZjAzNGU3NGZiOTMyMzE4MWFi
ZjEyMDkwODRhNjA2Y2VlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29n
bml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbApAQCAtNyw3ICs3LDcgQEAgZGVzY3Jp
cHRpb24oIlZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVybWlzc2lvbiBp
cyBkZW5pZWQuIik7CiAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOwotICAgIHRlc3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25HcmFudGVkKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24o
ZmFsc2UpOwogfQogCiBzaG91bGROb3RUaHJvdygicmVjb2duaXRpb24gPSBuZXcgd2Via2l0U3Bl
ZWNoUmVjb2duaXRpb24oKSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418662</attachid>
            <date>2021-01-28 12:33:35 -0800</date>
            <delta_ts>2021-01-28 14:10:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221082-20210128123334.patch</filename>
            <type>text/plain</type>
            <size>45327</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1ZGUyYWU3MzY4NTk1
ODJkNzk4NzdhM2RmMDM1NjM0N2Q2ZTFhYy4uOWUzZmUyMzM2NTM3Yjc1YTM2MjA1ZGRlZjhhOGYz
M2YxZDIzYTBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTAxLTI4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVy
bWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZyYW1lIGlkZW50aWZpZXIgdG8gU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0IGFzIGl0IGlzIG5lZWRlZCBmb3IgY2hlY2tpbmcgdXNlciBt
ZWRpYSBwZXJtaXNzaW9uLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpmcmFt
ZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIHBhZ2UvRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjEtMDEtMjcgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGxpbmsgSU9TdXJmYWNlQWNjZWxlcmF0b3Igb24g
c2ltdWxhdG9yIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3YmQ4ZDYyMjEwODE3MzdkMWNiYjNmYzQ1ZDY0
N2RhNzQ1MjBmMzk2Li4xNzdhOThmNDM2NTJmOGExYmJmY2YzMTNiNjc1Mjc5N2IzM2RjN2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAxLTI4ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVybWlzc2lvbiBwcm9tcHQg
Zm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyIGFz
ayBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBmb3IgdXNlciBwZXJtaXNz
aW9uIG9uIAorICAgICAgICBtaWNyb3Bob25lLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQ
cm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpmcmFtZUlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRlbnlS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmdyYW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVl
Y2hSZWNvZ25pdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp1c2VkRm9yU3Bl
ZWNoUmVjb2duaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2VyTWVk
aWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oOgorCiAyMDIxLTAxLTI3ICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBhZGQgYWNj
ZXNzaWJpbGl0eSBpbWFnZSBleHRyYWN0aW9uIGNvbnRleHRtZW51IGl0ZW0gZm9yIHJldmVhbGlu
ZyBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uLmNwcAppbmRleCAzOTQxMzdjZjY4N2E5YzIyYzIwMGM4Y2MxMTRjZWU2Y2RlMmJj
MWNkLi5iNTIwZDg3OGI0ZGQyODRiYTY2MDU5ZmNkYzM0YWJkZWY4Mzg3YmVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCkBA
IC03MSw3ICs3MSwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTcGVlY2hSZWNvZ25pdGlvbjo6c3Rh
cnRSZWNvZ25pdGlvbigpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3Is
ICJSZWNvZ25pdGlvbiBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCiAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywg
bV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRzLCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50
T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9y
aWdpbigpLmRhdGEoKSB9KTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIG1fY29ubmVjdGlvbi0+
c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0
cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigp
LmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfSwgKmZyYW1lKTsKICAg
ICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5nOwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5oCmluZGV4IDA2OTI2YzNjMzAwMDZjMmJhODczYjg2ZTkxMzExNmY0N2UxNmM5
NmMuLjVjZWEyZDJhZWQ4NDBmMWU3NDZmYTY0YzYwMGUzYjcwMjlkMzQwZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgRnJhbWU7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQ7CiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsKIHN0cnVjdCBDbGllbnRPcmlnaW47CkBAIC0z
OCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVy
Q2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3Vs
dHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luJiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJl
c3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luJiYsIEZyYW1lJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0LmgKaW5kZXggOWFhZGU2MTcxZTA2MmY1YThjYzNhMTYyODkyOTk0OTlkZmQ5ZDBhNi4uNjM4
ODhhOTBhNDk0ZDNlNjcyZWZlYzFlMDNiNWMwZmIyY2ZjOTFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgK
QEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMoKSBjb25z
dCB7IHJldHVybiBtX2luZm8uaW50ZXJpbVJlc3VsdHM7IH0KICAgICB1aW50NjRfdCBtYXhBbHRl
cm5hdGl2ZXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubWF4QWx0ZXJuYXRpdmVzOyB9CiAgICAg
Y29uc3QgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5j
bGllbnRPcmlnaW47IH0KKyAgICBGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pbmZvLmZyYW1lSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgogICAgIFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gbV9pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5o
CmluZGV4IDFlZmU5ZTA2NDZlNzQ3Y2I1NWQ3Y2NiMGY3YjE4ZmY1ZTBiM2M0YzIuLmU3ZDQwYmYw
Mzg2M2RjZjNjN2QwMzdlMTQyNGZkOGFlYTNiYzYzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2xpZW50T3Jp
Z2luLmgiCisjaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zNyw2ICszOCw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
IHsKICAgICBib29sIGludGVyaW1SZXN1bHRzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtYXhB
bHRlcm5hdGl2ZXMgeyAxIH07CiAgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbjsKKyAgICBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNv
ZGUoRGVjb2RlciYpOwpAQCAtNDUsNyArNDcsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBl
bmNvZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVy
aW1SZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlcyA8PCBjbGllbnRPcmlnaW47CisgICAgZW5jb2Rl
ciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVz
dWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXMgPDwgY2xpZW50T3JpZ2luIDw8IGZyYW1lSWRlbnRpZmll
cjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTgxLDEzICs4MywxOSBAQCBPcHRp
b25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3RJbmZvOjpkZWNvZGUoRGVjbwogICAgIGlmICghY2xpZW50T3JpZ2luKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlk
ZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmcmFtZUlkZW50aWZpZXI7CisgICAgaWYgKCFmcmFt
ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4g
e3sKICAgICAgICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUo
KmxhbmcpLAogICAgICAgICBXVEZNb3ZlKCpjb250aW51b3VzKSwKICAgICAgICAgV1RGTW92ZSgq
aW50ZXJpbVJlc3VsdHMpLAogICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAotICAg
ICAgICBXVEZNb3ZlKCpjbGllbnRPcmlnaW4pCisgICAgICAgIFdURk1vdmUoKmNsaWVudE9yaWdp
biksCisgICAgICAgIFdURk1vdmUoKmZyYW1lSWRlbnRpZmllcikKICAgICB9fTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
LmgKaW5kZXggMzE0OTQ4ZWEyYzU2NTQwNzk1MTRlMDc2NzkxYTY1MzE0MmU2Nzk4Zi4uMGE2NWU2
ZDgwYjE2ZGVlYTkxNzg5YjBkODg5ZDBjZjc3OTY4MDgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsIHsgfQogICAgICAgICB2b2lk
IHVucmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmlu
YWwgeyB9Ci0gICAgICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVu
dE9yaWdpbiYmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1
aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYsIEZyYW1lJikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQg
c3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7
IH0KICAgICAgICAgdm9pZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggOTExOTU2MDM2ODY5YWQ5ZTNlNjhiODljMWMyZWMz
OTZhMmNjMjk3NC4uYjIzMGEwMGNkZDIzMzZlMWQ4NDYxMjU5ZDY1NjY5OWNlOWFlZTFlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMDgxLDcg
KzEwODEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQgPSAocHJvdGVj
dGVkUmVxdWVzdC0+cmVxdWlyZXNWaWRlb0NhcHR1cmUoKSB8fCBwcm90ZWN0ZWRSZXF1ZXN0LT5y
ZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkpID8gcHJvdGVjdGVkUmVxdWVzdC0+dmlkZW9EZXZpY2VV
SURzKCkuZmlyc3QoKSA6IFN0cmluZygpOwotICAgICAgICBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2
aWNlVUlEID0gcHJvdGVjdGVkUmVxdWVzdC0+cmVxdWlyZXNBdWRpb0NhcHR1cmUoKSA/IHByb3Rl
Y3RlZFJlcXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpLmZpcnN0KCkgOiBTdHJpbmcoKTsKKyAgICAg
ICAgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCA9IChwcm90ZWN0ZWRSZXF1ZXN0LT5yZXF1
aXJlc0F1ZGlvQ2FwdHVyZSgpICYmICFwcm90ZWN0ZWRSZXF1ZXN0LT51c2VkRm9yU3BlZWNoUmVj
b2duaXRpb24oKSkgPyBwcm90ZWN0ZWRSZXF1ZXN0LT5hdWRpb0RldmljZVVJRHMoKS5maXJzdCgp
IDogU3RyaW5nKCk7CiAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmFsbG93KGF1ZGlvRGV2aWNl
VUlELCB2aWRlb0RldmljZVVJRCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5j
cHAKaW5kZXggYTgwOGJmNmM2NGU4NWYzNDVmZWU4ZTU5YmVmZjkxNmViNzkwMWJhYi4uN2IxYWEz
Mjg4YWNmZTFkMDZjMjUyMDkwM2Y5ZWU1NDQ0YTkyNGM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5jcHAKQEAgLTc1LDkgKzc1LDkgQEAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKQogICAgICAgICByZXF1
ZXN0LT5jb21wbGV0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFsbG93ZWQsICJQZXJtaXNzaW9uIG1hbmFn
ZXIgaGFzIGV4aXRlZCJfcyB9KTsKIH0KICAgICAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb250SGFuZGxlcikK
K3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBT
dHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNv
bXBsZXRpb250SGFuZGxlcikKIHsKLSAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBs
ZXRpb250SGFuZGxlcikpKTsKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBmcmFtZUlkZW50aWZpZXIs
IFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAgIGlmIChtX3JlcXVlc3RzLnNpemUo
KSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7CiB9CkBAIC0xMjUsMTUgKzEyNSw2
IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNz
aW5nUmVxdWVzdCgpCiAjZW5kaWYKICAgICB9CiAKLSAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3Qg
YWxsb3cgdGhpcmQtcGFydHkgYWNjZXNzLgotICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sg
PT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKLSAgICAgICAgYXV0byBjbGllbnRPcmlnaW4gPSBt
X3JlcXVlc3RzLmZpcnN0KCktPm9yaWdpbigpOwotICAgICAgICBhdXRvIHJlcXVlc3RpbmdPcmln
aW4gPSBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAg
IGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigp
OwotICAgICAgICBpZiAoIXJlcXVlc3RpbmdPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKHRvcE9yaWdp
bikpCi0gICAgICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBDaGVja1Jlc3VsdDo6RGVu
aWVkOwotICAgIH0KLQogICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1
bHQ6OkRlbmllZCkgewogICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlw
ZTo6Tm90QWxsb3dlZCwgIlVzZXIgcGVybWlzc2lvbiBjaGVjayBoYXMgZmFpbGVkIl9zIH0pOwog
ICAgICAgICByZXR1cm47CkBAIC0yMjUsNiArMjE2LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24oKQogCiAgICAgYXV0byYg
Y3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CiAgICAgYXV0byBjbGllbnRPcmln
aW4gPSBjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCk7CisgICAgYXV0byByZXF1ZXN0aW5nT3JpZ2lu
ID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwogICAgIGF1dG8g
dG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwogICAg
IGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpXShib29sIGdyYW50ZWQpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTIzOCw3ICsy
MzAsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RV
c2VyUGVybWlzc2lvbigpCiAKICAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOwog
ICAgIH07Ci0gICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOworICAg
IG1fcGFnZS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGN1
cnJlbnRSZXF1ZXN0LT5mcmFtZUlkZW50aWZpZXIoKSwgcmVxdWVzdGluZ09yaWdpbiwgdG9wT3Jp
Z2luLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OmRlY2lkZUJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCmluZGV4IDI0MjU3NTk1
YTI5ZjljNzA5MDBjZGU1NjkxODk0Yjk2Yjc1MzMzYzguLjg1YjRlZGZiZTU0NDViM2M2ZDYyYzMw
YzM5NWNmYzBkNDUyZjNhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQgeyBEZW5pZWQsIEdyYW50
ZWQsIFVua25vd24gfTsKICAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyKFdlYlBhZ2VQcm94eSYpOwogICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyKCk7Ci0gICAgdm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmKTsKIAogICAgIHZvaWQgZGVjaWRl
QnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgeyByZXR1
cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKaW5kZXggNjU2YjU3NTdhZDI1YjI0
OTM5ZTM1NjNjYWQzM2M2MmNkNzNjZDY5Ny4uMzQ4YTMzNDVjMjVhYjUwMjZlODg5NGMxMjJhNzli
N2JmNjI0YzgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMzQsOSArMzQsOSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHN0
YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KGxhbmcsIG9yaWdpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChsYW5nLCBvcmlnaW4sIGZyYW1lSWRlbnRpZmll
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBs
ZXRlKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgZXJyb3IpCkBA
IC00NywxNiArNDcsMTkgQEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsgfQorICAgIGNvbnN0IFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSWRl
bnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDog
bV9sYW5nKGxhbmcpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQorICAgICAgICAsIG1fZnJh
bWVJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcikKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsgfQogCiAgICAgU3RyaW5nIG1f
bGFuZzsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47CisgICAgY29uc3QgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIG1fZnJhbWVJZGVudGlmaWVyOwogICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+
IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggZjYzMWUzYzg2ODQwM2Y5MDZh
NzhjYWVjNjk5MDA5ODQ2NDdiODllZS4uOGMxNmY5NjM0ZThmNWRhMmMwNTg0ZDg2ODg2YTY0M2Iy
MTMwZDA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmNwcApAQCAtNTIsMTEgKzUyLDExIEBAIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3RpCiB7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRp
ZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
bikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3Ry
aW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcikKIHsKICAgICBNRVNTQUdFX0NIRUNL
KGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5jb250YWlucyhjbGll
bnRJZGVudGlmaWVyKSk7Ci0gICAgYXV0byByZXF1ZXN0SW5mbyA9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGxhbmcpLCBj
b250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9yaWdp
bikgfTsKKyAgICBhdXRvIHJlcXVlc3RJbmZvID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUobGFuZyksIGNvbnRpbnVvdXMs
IGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUob3JpZ2luKSwgZnJhbWVJ
ZGVudGlmaWVyIH07CiAgICAgYXV0byYgbmV3UmVxdWVzdCA9IG1fcmVxdWVzdHMuYWRkKGNsaWVu
dElkZW50aWZpZXIsIG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
PihXVEZNb3ZlKHJlcXVlc3RJbmZvKSkpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIHJlcXVlc3RQ
ZXJtaXNzaW9uRm9yUmVxdWVzdCgqbmV3UmVxdWVzdCk7CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVl
c3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmxhbmcoKSwgcmVx
dWVzdC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKGF1dG8gZXJyb3IpIG11dGFibGUg
eworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY2xpZW50
T3JpZ2luKCksIHJlcXVlc3QuZnJhbWVJZGVudGlmaWVyKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShhdXRv
IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmgKaW5kZXggZWNiYTQwNzA5NDAzOGIzOTc2NTVlY2IwMThkYzIxN2RiYWExYWI4Zi4u
ZDJjNDBiOGE1MWZlYjFiNmUyYWM3ZmEwOGFhY2E2NzMyNzMwYzQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC00NSw3ICs0
NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB1c2lu
ZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcjsKLXVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4mJik+JiYpPjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik+OwogdXNpbmcgU3BlZWNo
UmVjb2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCA9IEZ1bmN0aW9u
PGJvb2woKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CkBAIC01OCw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYm
LCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29n
bml0aW9uRW5hYmxlZCYmKTsKICNlbmRpZgogCi0gICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBi
b29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0
aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFu
ZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRl
cm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgaW52YWxpZGF0ZShXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIubWVzc2FnZXMuaW4KaW5kZXggYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkx
MzI5ZC4uMWY2ZjE0YzU1ZGNjNDk5ZWY5YjYxY2Y4YjI0NGJkZWRhMDI2OGU5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogIAogIG1lc3NhZ2VzIC0+IFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50ZWQgewotICAgIFN0YXJ0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwg
U3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0
X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikK
KyAgICBTdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50
ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgc3RydWN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZp
ZXIpCiAgICAgU3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgQWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEludmFsaWRhdGUo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJjMGRiNzg3
MzVjYzMxMzNhMzIwMzZlNTZiNDQ2YjRjOTgzYTNjMDguLmIzZjE0YTIyY2Y3NTcyY2IyMmJiZjIy
NDg5ODAxMDJlYTRhYmQzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAK
QEAgLTIxMyw2ICsyMTMsMTMgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6ZGVueVJlcXVlc3QoVXNlck1lZGlhUGVybWlzc2lvblJlcXUKICAgICBpZiAocmVh
c29uID09IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rl
bmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCkKICAgICAgICAgbV9kZW5pZWRSZXF1ZXN0cy5h
cHBlbmQoRGVuaWVkUmVxdWVzdCB7IHJlcXVlc3QubWFpbkZyYW1lSUQoKSwgcmVxdWVzdC51c2Vy
TWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKCksIHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKSwgcmVxdWVzdC5y
ZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpLCByZXF1ZXN0LnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSB9
KTsKIAorICAgIGlmIChyZXF1ZXN0LnVzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbigpKSB7CisgICAg
ICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uUmVxdWVzdENhbGxiYWNrcy5jb250YWlucygm
cmVxdWVzdCkpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbV9zcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RDYWxsYmFja3MudGFrZSgmcmVxdWVzdCk7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
aWYgKG1fcHJlZ3JhbnRlZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiByZXF1ZXN0LnVzZXJSZXF1ZXN0
KCkuYXVkaW9Db25zdHJhaW50cy5pc1ZhbGlkKQogICAgICAgICBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpzaW5nbGV0b24oKS5hdWRpb0NhcHR1cmVGYWN0b3J5KCkucmVtb3ZlRXh0ZW5zaXZl
T2JzZXJ2ZXIoKnRoaXMpOwpAQCAtMjM0LDYgKzI0MSwxMyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpncmFudFJlcXVlc3QoVXNlck1lZGlhUGVybWlzc2lv
blJlcQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCByZXF1ZXN0LnVzZXJNZWRpYUlEKCksICIsIHZpZGVvOiAiLCByZXF1ZXN0LnZpZGVvRGV2
aWNlKCkubGFiZWwoKSwgIiwgYXVkaW86ICIsIHJlcXVlc3QuYXVkaW9EZXZpY2UoKS5sYWJlbCgp
KTsKIAorICAgIGlmIChyZXF1ZXN0LnVzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbigpKSB7CisgICAg
ICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChtYWtlUmVmKHJlcXVlc3QpKTsKKyAgICAgICAg
YXV0byBjYWxsYmFjayA9IG1fc3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Q2FsbGJhY2tzLnRha2Uo
JnJlcXVlc3QpOworICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIGF1dG8mIHVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSByZXF1ZXN0
LnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKICAgICBhdXRvJiB0b3BMZXZlbERv
Y3VtZW50U2VjdXJpdHlPcmlnaW4gPSByZXF1ZXN0LnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9y
aWdpbigpOwogICAgIG1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UoKS5kZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luKHVzZXJNZWRpYURvY3VtZW50U2VjdXJp
dHlPcmlnaW4sIHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oU3RyaW5n
JiYpIG11dGFibGUgewpAQCAtNjAyLDYgKzYxNiwzMSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9u
UgogICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KG1fcGFnZSwgKndlYkZyYW1lLCBXVEZNb3ZlKHVzZXJNZWRpYU9yaWdpbiksIFdU
Rk1vdmUodG9wTGV2ZWxPcmlnaW4pLCAqbV9jdXJyZW50VXNlck1lZGlhUmVxdWVzdCk7CiB9CiAK
K3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBy
ZXF1ZXN0aW5nT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2lu
LCBjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogZnJhbWUgPSBt
X3BhZ2UucHJvY2VzcygpLndlYkZyYW1lKGZyYW1lSWRlbnRpZmllcik7CisgICAgaWYgKCFmcmFt
ZSB8fCAhU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobV9wYWdlLnBhZ2VMb2FkU3Rh
dGUoKS5hY3RpdmVVUkwoKSktPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHRvcE9yaWdpbikpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKHdhc1JlcXVlc3REZW5pZWQoZnJhbWVJZGVudGlmaWVyLCByZXF1ZXN0aW5nT3Jp
Z2luLCB0b3BPcmlnaW4sIHRydWUsIGZhbHNlLCBmYWxzZSkpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNlYXJj
aEZvckdyYW50ZWRSZXF1ZXN0KGZyYW1lSWRlbnRpZmllciwgcmVxdWVzdGluZ09yaWdpbiwgdG9w
T3JpZ2luLCB0cnVlLCBmYWxzZSkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUoKnRoaXMsIDAsIGZyYW1lSWRlbnRpZmllciwg
ZnJhbWVJZGVudGlmaWVyLCByZXF1ZXN0aW5nT3JpZ2luLmlzb2xhdGVkQ29weSgpLCB0b3BPcmln
aW4uaXNvbGF0ZWRDb3B5KCksIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiB7IGRldmlj
ZSB9LCB7IH0sIHsgfSwgdHJ1ZSk7CisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RDYWxs
YmFja3Muc2V0KHJlcXVlc3QucHRyKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1
ZXN0aW5nT3JpZ2luKTsKKyAgICBhdXRvIHRvcExldmVsT3JpZ2luID0gQVBJOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHRvcE9yaWdpbik7CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9s
aWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCAqZnJhbWUsIFdURk1vdmUo
dXNlck1lZGlhT3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbiksIHJlcXVlc3QuZ2V0KCkp
OworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGFnZVBy
b3h5JiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aAppbmRleCA3M2UzYTJiZTRlN2ZjMDIyYmZkNWU1MDk2MTkwYWI5NmMwNWJmMzk3Li43MDQ2NjY1
MjU1N2Y4ZDIxNjk2OThkNmZkMTZjMTk0NTljZTJmYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmgKQEAgLTk3LDYgKzk3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+KTsKICAgICBib29sIGhh
c1BlbmRpbmdDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nQ2FwdHVyZTsgfQog
CisgICAgdm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihj
b25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKIHByaXZhdGU6
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBj
b25zdCBmaW5hbDsKQEAgLTE2Miw2ICsxNjQsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgVmVj
dG9yPERlbmllZFJlcXVlc3Q+IG1fZGVuaWVkUmVxdWVzdHM7CiAKKyAgICBIYXNoTWFwPFJlZlB0
cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4+IG1fc3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Q2FsbGJhY2tzOworCiAgICAgV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fY2FwdHVyZVN0YXRlIHsgV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CiAgICAgUnVuTG9vcDo6VGltZXI8
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+IG1fd2F0Y2hkb2dUaW1lcjsK
ICAgICBTZWNvbmRzIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
Y3BwCmluZGV4IDUxNWQ4MGYyNGIxNmY1ZWQ4MDMxMDNmODJhYTU0OTAwOWUyYTVlNmUuLjkwNjYx
MGZhNDM4MTQxZmNjZjJkNTk4OWZkNzIxYmI1YWRmZTkzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
Y3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgRnJhbWVJZGVudGlmaWVyIG1haW5G
cmFtZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZp
Y2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiB2aWRl
b0RldmljZXMsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QpCitVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRf
dCB1c2VyTWVkaWFJRCwgRnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVu
dE9yaWdpbiwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBW
ZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgdXNlZEZvclNwZWVjaFJlY29nbml0aW9u
KQogICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQogICAgICwgbV91c2VyTWVkaWFJRCh1c2VyTWVk
aWFJRCkKICAgICAsIG1fbWFpbkZyYW1lSUQobWFpbkZyYW1lSUQpCkBAIC00MSw2ICs0MSw3IEBA
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzCiAgICAgLCBtX2VsaWdpYmxlVmlkZW9EZXZpY2VzKFdU
Rk1vdmUodmlkZW9EZXZpY2VzKSkKICAgICAsIG1fZWxpZ2libGVBdWRpb0RldmljZXMoV1RGTW92
ZShhdWRpb0RldmljZXMpKQogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCisgICAg
LCBtX3VzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbih1c2VkRm9yU3BlZWNoUmVjb2duaXRpb24pCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkuaAppbmRleCAzZWY3NTJhOTI4ZDdlMzQzMWY1YTA2NTUzZDU2
ZDcwNGE3MjQwOWZlLi44MWY4NzhmMjk3NjUxY2QyOGNkOTI1ZjJkOTZhNGVlOWRmODYzNTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eS5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OwogCiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmln
aW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9y
PFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0
cmVhbVJlcXVlc3QmJiByZXF1ZXN0KQorICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIG1haW5GcmFtZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUmVmPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVmVjdG9yPFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2Fw
dHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYm
IHJlcXVlc3QsIGJvb2wgdXNlZEZvclNwZWVjaFJlY29nbml0aW9uID0gZmFsc2UpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlELCBtYWluRnJhbWVJRCwgZnJhbWVJRCwgV1RGTW92ZSh1
c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiks
IFdURk1vdmUoYXVkaW9EZXZpY2VzKSwgV1RGTW92ZSh2aWRlb0RldmljZXMpLCBXVEZNb3ZlKHJl
cXVlc3QpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQsIG1haW5GcmFtZUlELCBmcmFtZUlE
LCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luKSwgV1RGTW92ZShhdWRpb0RldmljZXMpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlcyks
IFdURk1vdmUocmVxdWVzdCksIHVzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbikpOwogICAgIH0KIAog
ICAgIHZvaWQgYWxsb3coY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5n
JiB2aWRlb0RldmljZVVJRCk7CkBAIC04OSw4ICs4OSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB2b2lkIGRvRGVmYXVsdEFjdGlvbigpOwogCisgICAgYm9vbCB1c2VkRm9yU3BlZWNoUmVjb2du
aXRpb24oKSB7IHJldHVybiBtX3VzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbjsgfQorCiBwcml2YXRl
OgotICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3Qm
Jik7CisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgUmVm
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVmVjdG9y
PFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6
Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVz
dCYmLCBib29sIHVzZWRGb3JTcGVlY2hSZWNvZ25pdGlvbik7CiAKICAgICBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwogICAgIHVpbnQ2NF90IG1fdXNl
ck1lZGlhSUQ7CkBAIC0xMDMsNiArMTA1LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRp
YVN0cmVhbVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIGJvb2wgbV9oYXNQZXJzaXN0ZW50QWNjZXNz
IHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQ7CisKKyAg
ICBib29sIG1fdXNlZEZvclNwZWVjaFJlY29nbml0aW9uOwogfTsKIAogU3RyaW5nIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJN
ZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCBmYmE4ZWQ4NWI0MGY4NTg1ZDdlZWM0Njk5ZWY5MDExZTZmZTE1MDg5Li44
YjM4ZjIxNjdkNzA1NDQ0YjRlYjRiYWEzOGVjNjc5MTI4ODQ3MTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMzc5LDEyICsxMDM3OSwxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3BlZWNoUmVj
b2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQogICAg
ICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKIAotICAgIG1fc3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+cmVxdWVzdChsYW5nLCBjbGllbnRPcmlnaW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXItPnJlcXVlc3QobGFuZywgY2xpZW50T3JpZ2luLCBmcmFtZUlkZW50aWZp
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25CeURlZmF1bHRBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEwMzk3LDYgKzEwMzk3LDE5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQnlEZWZhdWx0
QWN0aW9uKGNvbnN0IFdlYkNvCiAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyLT5kZWNpZGVCeURlZmF1bHRBY3Rpb24ob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lv
bkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5nT3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgYXV0byBjYXB0dXJlRGV2aWNlID0gU3BlZWNoUmVjb2duaXRpb25D
YXB0dXJlU291cmNlOjpmaW5kQ2FwdHVyZURldmljZSgpOworICAgIGlmICghY2FwdHVyZURldmlj
ZSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNo
UmVjb2duaXRpb24oZnJhbWVJZGVudGlmaWVyLCByZXF1ZXN0aW5nT3JpZ2luLCB0b3BPcmlnaW4s
ICpjYXB0dXJlRGV2aWNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisjZWxzZQorICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAogV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IgV2ViUGFnZVByb3h5Ojpj
cmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjN2UwYWIwNTk3ZWI2NzU5OTdhYzA5NTVk
ZTU2ZDE0NjVkYzdmMmY0Li4yZTA2N2MwODEwNmFiOGZiZjJkZmZmMmE1YjViNWE5N2MxZGU4NWJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTgxNiw4ICsxODE2
LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vj
b25kcyBjYXB0dXJlUmVwb3J0aW5nRGVsYXkpIHsgbV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxh
eSA9IGNhcHR1cmVSZXBvcnRpbmdEZWxheTsgfQogICAgIHNpemVfdCBzdXNwZW5kTWVkaWFQbGF5
YmFja0NvdW50ZXIoKSB7IHJldHVybiBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcjsgfQog
Ci0gICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmlu
ZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7Cisg
ICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYg
bGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3I+JiYpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25CeURlZmF1bHRBY3Rpb24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24oY29uc3QgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAK
ICAgICB2b2lkIHN5bmNJZk1vY2tEZXZpY2VzRW5hYmxlZENoYW5nZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMjY3N2VjZDcxNmYzZjcz
ZmRiNzJkNzNhMWE5OTI5ZmU5MWI2Y2M2MS4uZWJjYTAzZDMxOTQ3ZThjNWU0ZDI1M2RlZmI2ZDQx
NTRkYzY3N2UyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCkBAIC0xNzIyLDEzICsxNzIyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAKICAg
ICBBU1NFUlQoIW1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuY29udGFpbnMoaWRlbnRpZmll
cikpOwogICAgIGF1dG8mIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25p
dGlvblNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwot
ICAgIGF1dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJn
ZXRQYWdlKV0oYXV0byYgbGFuZywgYXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhhbmRs
ZXIpIG11dGFibGUgeworICAgIGF1dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBt
YWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oYXV0byYgbGFuZywgYXV0byYgb3JpZ2luLCBhdXRvIGZy
YW1lSWRlbnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCF3ZWFrUGFnZSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpO
b3RBbGxvd2VkLCAiUGFnZSBubyBsb25nZXIgZXhpc3RzIl9zIH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb24obGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGxh
bmcsIG9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgfTsKICAgICBhdXRvIGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gW3dl
YWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgewogICAgICAgICByZXR1cm4gd2Vh
a1BhZ2UgJiYgd2Vha1BhZ2UtPnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcApp
bmRleCBjM2NjOGI5OTM4OTEzMzkyMjlhNDA5NTc1ZjNhMzQ3NDkzZGEwZjQzLi45ZDJlOTc2Yzlm
MzdiOWJhMDMzZWNkYWNjYTAwNTIxMTFkNjJlMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIgogCiAjaW5jbHVkZSAiU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTY4
LDkgKzY5LDEyIEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjp1bnJlZ2lz
dGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uCiAgICAgbV9jbGllbnRNYXAucmVt
b3ZlKGNsaWVudC5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wg
Y29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVz
LCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4pCit2b2lkIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxh
bmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0
ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYkNvcmU6
OkZyYW1lJiBmcmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6U3RhcnQoY2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJl
c3VsdHMsIG1heEFsdGVybmF0aXZlcywgV1RGTW92ZShjbGllbnRPcmlnaW4pKSk7CisgICAgV2Vi
RnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOworICAgIEFT
U0VSVCh3ZWJGcmFtZSk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6U3RhcnQoY2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJl
c3VsdHMsIG1heEFsdGVybmF0aXZlcywgV1RGTW92ZShjbGllbnRPcmlnaW4pLCB3ZWJGcmFtZS0+
ZnJhbWVJRCgpKSk7CiB9CiAKIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpz
dG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
Y2xpZW50SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uaAppbmRleCA1OTY2ZTNmZDc3MzA1MmMzOTMyNzE0NDBlZDEzN2IwMTA4NTdlZTIwLi4w
MmZlZTg1ZDg0NzVjN2Y5NTA0MDFlYTkyMDVmZGIyYzk3YTlkYzczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25JZGVu
dGlmaWVyKTsKIAotICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVv
dXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5n
LCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVy
bmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OkZyYW1lJikgZmluYWw7
CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NDlmMzQ3ZWRlMThmOTY0OWI2
NzU4NTJjOTRjNDFjNWU2M2Y1ZGNmLi4yZmY2MmQ3OTlkN2UwYTRmNzExY2QwOTNmZjUzN2U2ZWQw
NmM5ZjQzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDEtMjggIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBl
LmNvbT4KKworICAgICAgICBVc2UgdXNlciBtZWRpYSBwZXJtaXNzaW9uIHByb21wdCBmb3Igc3Bl
ZWNoIHJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjEwODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRp
b24ubW06CisgICAgICAgICgtW1NwZWVjaFJlY29nbml0aW9uVUlEZWxlZ2F0ZSBfd2ViVmlldzpy
ZXF1ZXN0TWVkaWFDYXB0dXJlQXV0aG9yaXphdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisKIDIw
MjEtMDEtMjcgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtidWlsZC53ZWJraXQub3JnXSBBZGQgYmFzaWMgYXV0aGVudGljYXRpb24KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0
aW9uLm1tCmluZGV4IDM4YWIxNzVkMWZkMzEwOTNjNDgzMjcwNmEyYjgwODgxYzg3ZWRjOGIuLjc0
MzQ1OGYzMDk3ODU2Nzc3MmEwYTRlZjVhNzg2MWIzMWI2ODRkZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlv
bi5tbQpAQCAtNjAsNyArNjAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gY3JlYXRl
ZFdlYlZpZXc7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVz
dE1lZGlhQ2FwdHVyZUF1dGhvcml6YXRpb246IChfV0tDYXB0dXJlRGV2aWNlcylkZXZpY2VzIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVj
aXNpb25IYW5kbGVyKFlFUyk7CisgICAgcGVybWlzc2lvblJlcXVlc3RlZCA9IHRydWU7CisgICAg
ZGVjaXNpb25IYW5kbGVyKHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QpOwogfQogCiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBm
cmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5k
bGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNzJmOTNkZTBmZDJiN2ViMDAwOGY2Y2U2OWE3ZTQ5YjYzYjMwYjBiNi4uMGY1
NTM0ODVjNWM2YjIzNzY2ODM1YmY4Zjc3MTE1N2JjODdlMDY1NCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTAxLTI4ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAg
ICAgVXNlIHVzZXIgbWVkaWEgcGVybWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
ZCBleGlzdGluZyB0ZXN0cyBmb3IgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogZmFzdC9z
cGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6CisgICAgICAgICogZmFzdC9z
cGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi10aGVuLXN0b3AuaHRtbDoKKwogMjAy
MS0wMS0yNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGNvbG9yKGE5OC1yZ2IgLi4uKSBhcyBwYXJ0IG9mIENTUyBDb2xvciA0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJy
b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1l
cnJvci5odG1sCmluZGV4IDA3ZTBlMmMxNmJkYzQyNGM2OTY2NjdlNDc0Y2ZhMTg4Y2UxNDAxMGUu
LjgyODA4MTJmMDM0ZTc0ZmI5MzIzMTgxYWJmMTIwOTA4NGE2MDZjZWUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5o
dG1sCkBAIC03LDcgKzcsNyBAQCBkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQg
aXMgZmlyZWQgd2hlbiBwZXJtaXNzaW9uIGlzIGRlbmllZC4iKTsKIAogaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CiAgICAganNUZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgdGVzdFJ1bm5lci5zZXRJ
c1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoZmFsc2UpOworICAgIHRlc3RSdW5u
ZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbihmYWxzZSk7CiB9CiAKIHNob3VsZE5vdFRocm93KCJy
ZWNvZ25pdGlvbiA9IG5ldyB3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbigpIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLXRo
ZW4tc3RvcC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1y
ZWNvZ25pdGlvbi10aGVuLXN0b3AuaHRtbAppbmRleCBhM2IwNWQ0ZTNlMzc2YzQxNjhmN2UyZDJm
MThiYTcwYjU0ZjJiZmNlLi44NDhkZGU2M2RlZmUyNzg1Yjc1OTk1NDY1NWQxZjQxZDJjMDZlNzZk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJl
Y29nbml0aW9uLXRoZW4tc3RvcC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVj
b2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24tdGhlbi1zdG9wLmh0bWwKQEAgLTI0LDYgKzI0LDEx
IEBAIHJlY29nbml0aW9uLm9uYXVkaW9lbmQgPSAoZXZlbnQpID0+IHsKICAgICBkZWJ1ZygiUmVj
ZWl2ZWQgYXVkaW9lbmQgZXZlbnQiKTsKIH0KIAorcmVjb2duaXRpb24ub25lcnJvciA9IChldmVu
dCkgPT4geworICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGVycm9yIGV2ZW50OiAiICsgZXZlbnQu
ZXJyb3IgKyAiICIgKyBldmVudC5tZXNzYWdlKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwog
cmVjb2duaXRpb24ub25lbmQgPSAoZXZlbnQpID0+IHsKICAgICBkZWJ1ZygiUmVjZWl2ZWQgZW5k
IGV2ZW50Iik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418667</attachid>
            <date>2021-01-28 14:10:53 -0800</date>
            <delta_ts>2021-01-29 11:20:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221082-20210128141052.patch</filename>
            <type>text/plain</type>
            <size>37641</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1ZGUyYWU3MzY4NTk1
ODJkNzk4NzdhM2RmMDM1NjM0N2Q2ZTFhYy4uOWUzZmUyMzM2NTM3Yjc1YTM2MjA1ZGRlZjhhOGYz
M2YxZDIzYTBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTAxLTI4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVy
bWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZyYW1lIGlkZW50aWZpZXIgdG8gU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0IGFzIGl0IGlzIG5lZWRlZCBmb3IgY2hlY2tpbmcgdXNlciBt
ZWRpYSBwZXJtaXNzaW9uLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpmcmFt
ZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIHBhZ2UvRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjEtMDEtMjcgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGxpbmsgSU9TdXJmYWNlQWNjZWxlcmF0b3Igb24g
c2ltdWxhdG9yIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3YmQ4ZDYyMjEwODE3MzdkMWNiYjNmYzQ1ZDY0
N2RhNzQ1MjBmMzk2Li4zZTc0YmVhZDI3MDdiZjc5NDhmNzI2MTNlZWMxMDQyZTcxM2E1OTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTAxLTI4ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVybWlzc2lvbiBwcm9tcHQg
Zm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGV0IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgYXNr
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IGZvciB1c2VyIHBlcm1pc3Np
b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q6OmZyYW1lSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lv
bkZvclJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6ZGVueVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFydCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uaDoKKwogMjAyMS0wMS0yNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gYWRkIGFjY2Vzc2liaWxpdHkgaW1hZ2UgZXh0cmFjdGlvbiBjb250
ZXh0bWVudSBpdGVtIGZvciByZXZlYWxpbmcgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggMzk0MTM3Y2Y2ODdh
OWMyMmMyMDBjOGNjMTE0Y2VlNmNkZTJiYzFjZC4uYjUyMGQ4NzhiNGRkMjg0YmE2NjA1OWZjZGMz
NGFiZGVmODM4N2JlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtNzEsNyArNzEsMTEgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gU3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVjb2duaXRpb24oKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiUmVjb2duaXRpb24gZG9lcyBub3QgaGF2ZSBhIHZh
bGlkIGNvbm5lY3Rpb24iX3MgfTsKIAogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fY29ubmVjdGlvbi0+c3Rh
cnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywg
bV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLmRh
dGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfSk7CisgICAgYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2Nv
bnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmln
aW4geyBkb2N1bWVudC50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2lu
KCkuZGF0YSgpIH0sICpmcmFtZSk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdGFydGluZzsKICAg
ICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAwNjkyNmMzYzMwMDA2
YzJiYTg3M2I4NmU5MTMxMTZmNDdlMTZjOTZjLi41Y2VhMmQyYWVkODQwZjFlNzQ2ZmE2NGM2MDBl
M2I3MDI5ZDM0MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtMjksNiArMjksNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZyYW1lOwogY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50OwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CiBz
dHJ1Y3QgQ2xpZW50T3JpZ2luOwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIENs
aWVudE9yaWdpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBj
b250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMs
IENsaWVudE9yaWdpbiYmLCBGcmFtZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFib3J0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCmluZGV4IDlhYWRlNjE3MWUwNjJmNWE4Y2Mz
YTE2Mjg5Mjk5NDk5ZGZkOWQwYTYuLjYzODg4YTkwYTQ5NGQzZTY3MmVmZWMxZTAzYjVjMGZiMmNm
YzkxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmludGVyaW1SZXN1bHRz
OyB9CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZv
Lm1heEFsdGVybmF0aXZlczsgfQogICAgIGNvbnN0IENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50T3JpZ2luOyB9CisgICAgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5mcmFtZUlkZW50aWZp
ZXI7IH0KIAogcHJpdmF0ZToKICAgICBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1faW5m
bzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAppbmRleCAxZWZlOWUwNjQ2ZTc0N2NiNTVkN2NjYjBm
N2IxOGZmNWUwYjNjNGMyLi5lN2Q0MGJmMDM4NjNkY2YzYzdkMDM3ZTE0MjRmZDhhZWEzYmM2MzU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgorI2luY2x1ZGUgIkZyYW1lSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNiArMzgsNyBAQCBzdHJ1Y3QgU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cyB7IGZh
bHNlIH07CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzIHsgMSB9OwogICAgIENsaWVudE9y
aWdpbiBjbGllbnRPcmlnaW47CisgICAgRnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcjsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTQ1LDcgKzQ3LDcgQEAg
c3RydWN0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxh
bmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXMgPDwg
Y2xpZW50T3JpZ2luOworICAgIGVuY29kZXIgPDwgY2xpZW50SWRlbnRpZmllciA8PCBsYW5nIDw8
IGNvbnRpbnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0ZXJuYXRpdmVzIDw8IGNsaWVu
dE9yaWdpbiA8PCBmcmFtZUlkZW50aWZpZXI7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC04MSwxMyArODMsMTkgQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
bz4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERlY28KICAgICBpZiAoIWNs
aWVudE9yaWdpbikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gZnJhbWVJ
ZGVudGlmaWVyOworICAgIGlmICghZnJhbWVJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmNsaWVudElkZW50
aWZpZXIpLAogICAgICAgICBXVEZNb3ZlKCpsYW5nKSwKICAgICAgICAgV1RGTW92ZSgqY29udGlu
dW91cyksCiAgICAgICAgIFdURk1vdmUoKmludGVyaW1SZXN1bHRzKSwKICAgICAgICAgV1RGTW92
ZSgqbWF4QWx0ZXJuYXRpdmVzKSwKLSAgICAgICAgV1RGTW92ZSgqY2xpZW50T3JpZ2luKQorICAg
ICAgICBXVEZNb3ZlKCpjbGllbnRPcmlnaW4pLAorICAgICAgICBXVEZNb3ZlKCpmcmFtZUlkZW50
aWZpZXIpCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVt
bXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15
U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCmluZGV4IDMxNDk0OGVhMmM1NjU0MDc5NTE0ZTA3
Njc5MWE2NTMxNDJlNjc5OGYuLjBhNjVlNmQ4MGIxNmRlZWE5MTc4OWIwZDg4OWQwY2Y3Nzk2ODA4
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlv
blByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0
aW9uUHJvdmlkZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAg
ICAgdm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQm
KSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCB1bnJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIHN0YXJ0KFNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJv
b2wsIGJvb2wsIHVpbnQ2NF90LCBDbGllbnRPcmlnaW4mJikgZmluYWwgeyB9CisgICAgICAgIHZv
aWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmLCBGcmFtZSYp
IGZpbmFsIHsgfQogICAgICAgICB2b2lkIHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgYWJvcnQoU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYmKSBmaW5hbCB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKaW5kZXggYTgwOGJmNmM2NGU4NWYzNDVmZWU4ZTU5
YmVmZjkxNmViNzkwMWJhYi4uN2IxYWEzMjg4YWNmZTFkMDZjMjUyMDkwM2Y5ZWU1NDQ0YTkyNGM5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTc1LDkgKzc1LDkgQEAgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIoKQogICAgICAgICByZXF1ZXN0LT5jb21wbGV0ZShXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFs
bG93ZWQsICJQZXJtaXNzaW9uIG1hbmFnZXIgaGFzIGV4aXRlZCJfcyB9KTsKIH0KICAgICAKLXZv
aWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBTdHJp
bmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYp
PiYmIGNvbXBsZXRpb250SGFuZGxlcikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6cmVxdWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb250SGFuZGxlcikKIHsKLSAgICBtX3JlcXVl
c3RzLmFwcGVuZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFu
Zywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb250SGFuZGxlcikpKTsKKyAgICBtX3JlcXVlc3Rz
LmFwcGVuZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywg
b3JpZ2luLCBmcmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwog
ICAgIGlmIChtX3JlcXVlc3RzLnNpemUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0
KCk7CiB9CkBAIC0xMjUsMTUgKzEyNSw2IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCiAjZW5kaWYKICAgICB9CiAKLSAg
ICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgYWxsb3cgdGhpcmQtcGFydHkgYWNjZXNzLgotICAgIGlm
IChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKLSAgICAg
ICAgYXV0byBjbGllbnRPcmlnaW4gPSBtX3JlcXVlc3RzLmZpcnN0KCktPm9yaWdpbigpOwotICAg
ICAgICBhdXRvIHJlcXVlc3RpbmdPcmlnaW4gPSBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNl
Y3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRv
cE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwotICAgICAgICBpZiAoIXJlcXVlc3RpbmdPcmlnaW4t
PmlzU2FtZU9yaWdpbkFzKHRvcE9yaWdpbikpCi0gICAgICAgICAgICBtX3VzZXJQZXJtaXNzaW9u
Q2hlY2sgPSBDaGVja1Jlc3VsdDo6RGVuaWVkOwotICAgIH0KLQogICAgIGlmIChtX3VzZXJQZXJt
aXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgewogICAgICAgICBjb21wbGV0ZUN1
cnJlbnRSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlVzZXIgcGVybWlzc2lvbiBj
aGVjayBoYXMgZmFpbGVkIl9zIH0pOwogICAgICAgICByZXR1cm47CkBAIC0yMjUsNiArMjE2LDcg
QEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBl
cm1pc3Npb24oKQogCiAgICAgYXV0byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0
KCk7CiAgICAgYXV0byBjbGllbnRPcmlnaW4gPSBjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCk7Cisg
ICAgYXV0byByZXF1ZXN0aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1
cml0eU9yaWdpbigpOwogICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdp
bi5zZWN1cml0eU9yaWdpbigpOwogICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGdyYW50ZWQpIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKQEAgLTIzOCw3ICsyMzAsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbigpCiAKICAgICAgICAgY29udGlu
dWVQcm9jZXNzaW5nUmVxdWVzdCgpOwogICAgIH07Ci0gICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQ
STo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3Zl
KGRlY2lzaW9uSGFuZGxlcikpOworICAgIG1fcGFnZS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lv
bkZvclNwZWVjaFJlY29nbml0aW9uKGN1cnJlbnRSZXF1ZXN0LT5mcmFtZUlkZW50aWZpZXIoKSwg
cmVxdWVzdGluZ09yaWdpbiwgdG9wT3JpZ2luLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmRlY2lkZUJ5RGVm
YXVsdEFjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlci5oCmluZGV4IDI0MjU3NTk1YTI5ZjljNzA5MDBjZGU1NjkxODk0Yjk2Yjc1MzMzYzgu
Ljg1YjRlZGZiZTU0NDViM2M2ZDYyYzMwYzM5NWNmYzBkNDUyZjNhZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2hl
Y2tSZXN1bHQgeyBEZW5pZWQsIEdyYW50ZWQsIFVua25vd24gfTsKICAgICBleHBsaWNpdCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYpOwogICAgIH5TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4m
Jik7CisgICAgdm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYp
PiYmKTsKIAogICAgIHZvaWQgZGVjaWRlQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgV2Vi
UGFnZVByb3h5JiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgKaW5kZXggNjU2YjU3NTdhZDI1YjI0OTM5ZTM1NjNjYWQzM2M2MmNkNzNjZDY5Ny4uMzQ4YTMz
NDVjMjVhYjUwMjZlODg5NGMxMjJhNzliN2JmNjI0YzgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxh
bmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
KGxhbmcsIG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChsYW5n
LCBvcmlnaW4sIGZyYW1lSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsK
ICAgICB9CiAKICAgICB2b2lkIGNvbXBsZXRlKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3I+JiYgZXJyb3IpCkBAIC00NywxNiArNDcsMTkgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsg
fQorICAgIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgICAgIDogbV9sYW5nKGxhbmcpCiAgICAgICAgICwgbV9vcmlnaW4o
b3JpZ2luKQorICAgICAgICAsIG1fZnJhbWVJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcikKICAg
ICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQog
ICAgIHsgfQogCiAgICAgU3RyaW5nIG1fbGFuZzsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
bV9vcmlnaW47CisgICAgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fZnJhbWVJZGVu
dGlmaWVyOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FcnJvcj4mJik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAK
aW5kZXggZjYzMWUzYzg2ODQwM2Y5MDZhNzhjYWVjNjk5MDA5ODQ2NDdiODllZS4uOGMxNmY5NjM0
ZThmNWRhMmMwNTg0ZDg2ODg2YTY0M2IyMTMwZDA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtNTIsMTEgKzUyLDEx
IEBAIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8
SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3RpCiB7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51
b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29s
IGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmll
cikKIHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVCgh
bV9yZXF1ZXN0cy5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7Ci0gICAgYXV0byByZXF1ZXN0
SW5mbyA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVu
dGlmaWVyLCBXVEZNb3ZlKGxhbmcpLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0
ZXJuYXRpdmVzLCBXVEZNb3ZlKG9yaWdpbikgfTsKKyAgICBhdXRvIHJlcXVlc3RJbmZvID0gV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIsIFdU
Rk1vdmUobGFuZyksIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMs
IFdURk1vdmUob3JpZ2luKSwgZnJhbWVJZGVudGlmaWVyIH07CiAgICAgYXV0byYgbmV3UmVxdWVz
dCA9IG1fcmVxdWVzdHMuYWRkKGNsaWVudElkZW50aWZpZXIsIG1ha2VVbmlxdWU8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PihXVEZNb3ZlKHJlcXVlc3RJbmZvKSkpLml0ZXJhdG9y
LT52YWx1ZTsKIAogICAgIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdCgqbmV3UmVxdWVzdCk7
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiAKIHZvaWQgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9wZXJtaXNzaW9uQ2hl
Y2tlcihyZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVz
dCldKGF1dG8gZXJyb3IpIG11dGFibGUgeworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVz
dC5sYW5nKCksIHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIHJlcXVlc3QuZnJhbWVJZGVudGlmaWVy
KCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1h
a2VXZWFrUHRyKHJlcXVlc3QpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggZWNiYTQwNzA5NDAzOGIzOTc2
NTVlY2IwMThkYzIxN2RiYWExYWI4Zi4uZDJjNDBiOGE1MWZlYjFiNmUyYWM3ZmEwOGFhY2E2NzMy
NzMwYzQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUHJvY2Vzc1Byb3h5OwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZp
ZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKLXVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYpPjsKK3VzaW5nIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9y
PiYmKT4mJik+OwogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29n
bml0aW9uRW5hYmxlZCA9IEZ1bmN0aW9uPGJvb2woKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVy
PiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRl
ciB7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZp
ZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRp
b25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmKTsKICNlbmRpZgogCi0gICAg
dm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3Vs
dHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwor
ICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggYTI4YjkyMWNiOTY0
YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkxMzI5ZC4uMWY2ZjE0YzU1ZGNjNDk5ZWY5YjYxY2Y4YjI0
NGJkZWRhMDI2OGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogIAogIG1lc3NhZ2VzIC0+IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50
ZWQgewotICAgIFN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9v
bCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikKKyAgICBTdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBsYW5nLCBi
b29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0
aXZlcywgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIpCiAgICAgU3RvcChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgQWJvcnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIEludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IDJjMGRiNzg3MzVjYzMxMzNhMzIwMzZlNTZiNDQ2YjRjOTgzYTNjMDgu
LmQyNmU5MTYzMDg0NTgzZDA1ZDFhMGNmZjZhZTVlNGFkNmVmNmFjMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTIxMyw2ICsyMTMsMTEgQEAgdm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVueVJlcXVlc3QoVXNlck1lZGlhUGVy
bWlzc2lvblJlcXUKICAgICBpZiAocmVhc29uID09IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCkKICAg
ICAgICAgbV9kZW5pZWRSZXF1ZXN0cy5hcHBlbmQoRGVuaWVkUmVxdWVzdCB7IHJlcXVlc3QubWFp
bkZyYW1lSUQoKSwgcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJl
cXVlc3QudG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QucmVxdWlyZXNB
dWRpb0NhcHR1cmUoKSwgcmVxdWVzdC5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpLCByZXF1ZXN0LnJl
cXVpcmVzRGlzcGxheUNhcHR1cmUoKSB9KTsKIAorICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9z
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RDYWxsYmFja3MudGFrZSgmcmVxdWVzdCkpIHsKKyAgICAg
ICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBpZiAobV9wcmVncmFudGVkUmVxdWVzdHMuaXNFbXB0eSgpICYm
IHJlcXVlc3QudXNlclJlcXVlc3QoKS5hdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQpCiAgICAgICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmF1ZGlvQ2FwdHVyZUZhY3Rv
cnkoKS5yZW1vdmVFeHRlbnNpdmVPYnNlcnZlcigqdGhpcyk7CkBAIC0yMzQsNiArMjM5LDEyIEBA
IHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50UmVxdWVz
dChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHJlcXVlc3QudXNlck1lZGlhSUQoKSwgIiwgdmlkZW86
ICIsIHJlcXVlc3QudmlkZW9EZXZpY2UoKS5sYWJlbCgpLCAiLCBhdWRpbzogIiwgcmVxdWVzdC5h
dWRpb0RldmljZSgpLmxhYmVsKCkpOwogCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdENhbGxiYWNrcy50YWtlKCZyZXF1ZXN0KSkgeworICAgICAgICBt
X2dyYW50ZWRSZXF1ZXN0cy5hcHBlbmQobWFrZVJlZihyZXF1ZXN0KSk7CisgICAgICAgIGNhbGxi
YWNrKHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byYgdXNlck1lZGlh
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IHJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRTZWN1cml0
eU9yaWdpbigpOwogICAgIGF1dG8mIHRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IHJl
cXVlc3QudG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgbV9wYWdlLndlYnNp
dGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRG
b3JPcmlnaW4odXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgdG9wTGV2ZWxEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJl
cXVlc3QgPSBtYWtlUmVmKHJlcXVlc3QpXShTdHJpbmcmJikgbXV0YWJsZSB7CkBAIC02MDIsNiAr
NjEzLDMxIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SCiAgICAgbV9wYWdlLnVpQ2xpZW50KCku
ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCAqd2ViRnJh
bWUsIFdURk1vdmUodXNlck1lZGlhT3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbiksICpt
X2N1cnJlbnRVc2VyTWVkaWFSZXF1ZXN0KTsKIH0KIAordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVj
b2duaXRpb24oY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHJlcXVlc3RpbmdPcmlnaW4sIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2UmIGRldmljZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBhdXRvKiBmcmFtZSA9IG1fcGFnZS5wcm9jZXNzKCkud2ViRnJhbWUo
ZnJhbWVJZGVudGlmaWVyKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhtX3BhZ2UucGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKS0+aXNTYW1l
U2NoZW1lSG9zdFBvcnQodG9wT3JpZ2luKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAod2FzUmVxdWVzdERlbmll
ZChmcmFtZUlkZW50aWZpZXIsIHJlcXVlc3RpbmdPcmlnaW4sIHRvcE9yaWdpbiwgdHJ1ZSwgZmFs
c2UsIGZhbHNlKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc2VhcmNoRm9yR3JhbnRlZFJlcXVlc3QoZnJhbWVJ
ZGVudGlmaWVyLCByZXF1ZXN0aW5nT3JpZ2luLCB0b3BPcmlnaW4sIHRydWUsIGZhbHNlKSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNy
ZWF0ZSgqdGhpcywgMCwgZnJhbWVJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIHJlcXVlc3Rp
bmdPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIHRvcE9yaWdpbi5pc29sYXRlZENvcHkoKSwgVmVjdG9y
PFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IHsgZGV2aWNlIH0sIHsgfSwgeyB9KTsKKyAgICBtX3Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdENhbGxiYWNrcy5zZXQocmVxdWVzdC5wdHIoKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gdXNlck1lZGlhT3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3RpbmdPcmlnaW4pOworICAgIGF1dG8gdG9wTGV2
ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9wT3JpZ2luKTsKKyAgICBt
X3BhZ2UudWlDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dChtX3BhZ2UsICpmcmFtZSwgV1RGTW92ZSh1c2VyTWVkaWFPcmlnaW4pLCBXVEZNb3ZlKHRvcExl
dmVsT3JpZ2luKSwgcmVxdWVzdC5nZXQoKSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVt
VmFsaWRhdGlvbihjb25zdCBXZWJQYWdlUHJveHkmLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IDczZTNhMmJlNGU3ZmMwMjJiZmQ1ZTUw
OTYxOTBhYjk2YzA1YmYzOTcuLjcwNDY2NjUyNTU3ZjhkMjE2OTY5OGQ2ZmQxNmMxOTQ1OWNlMmZh
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtOTcsNiArOTcsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUoT3B0
aW9uYWw8Ym9vbD4pOwogICAgIGJvb2wgaGFzUGVuZGluZ0NhcHR1cmUoKSBjb25zdCB7IHJldHVy
biBtX2hhc1BlbmRpbmdDYXB0dXJlOyB9CiAKKyAgICB2b2lkIGNoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsOwpAQCAtMTYyLDYgKzE2NCw4IEBA
IHByaXZhdGU6CiAgICAgfTsKICAgICBWZWN0b3I8RGVuaWVkUmVxdWVzdD4gbV9kZW5pZWRSZXF1
ZXN0czsKIAorICAgIEhhc2hNYXA8UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPj4gbV9zcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RDYWxsYmFja3M7CisKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgbV9jYXB0dXJlU3RhdGUgeyBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpJc05vdFBsYXlp
bmcgfTsKICAgICBSdW5Mb29wOjpUaW1lcjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eT4gbV93YXRjaGRvZ1RpbWVyOwogICAgIFNlY29uZHMgbV9jdXJyZW50V2F0Y2hkb2dJ
bnRlcnZhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZi
YThlZDg1YjQwZjg1ODVkN2VlYzQ2OTllZjkwMTFlNmZlMTUwODkuLjhiMzhmMjE2N2Q3MDU0NDRi
NGViNGJhYTM4ZWM2NzkxMjg4NDcxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMTAzNzksMTIgKzEwMzc5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCkKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3Qg
U3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3BlZWNo
UmVjb2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFt
X3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpCiAgICAgICAgIG1fc3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcj4oKnRoaXMpOwogCi0gICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLT5yZXF1ZXN0KGxhbmcsIGNsaWVudE9yaWdpbiwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+
cmVxdWVzdChsYW5nLCBjbGllbnRPcmlnaW4sIGZyYW1lSWRlbnRpZmllciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpAQCAtMTAzOTcsNiArMTAzOTcsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25CeURlZmF1bHRBY3Rpb24oY29uc3QgV2Vi
Q28KICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPmRlY2lkZUJ5RGVm
YXVsdEFjdGlvbihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2du
aXRpb24oY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHJlcXVlc3RpbmdPcmlnaW4sIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICBhdXRvIGNhcHR1cmVEZXZpY2UgPSBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U6OmZp
bmRDYXB0dXJlRGV2aWNlKCk7CisgICAgaWYgKCFjYXB0dXJlRGV2aWNlKQorICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIoKS5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihmcmFt
ZUlkZW50aWZpZXIsIHJlcXVlc3RpbmdPcmlnaW4sIHRvcE9yaWdpbiwgKmNhcHR1cmVEZXZpY2Us
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiBXZWJD
b3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBXZWJQYWdlUHJveHk6OmNyZWF0ZVJlYWx0aW1lTWVk
aWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGM3ZTBhYjA1OTdlYjY3NTk5N2FjMDk1NWRlNTZkMTQ2NWRjN2YyZjQu
LjJlMDY3YzA4MTA2YWI4ZmJmMmRmZmYyYTViNWI1YTk3YzFkZTg1YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODE2LDggKzE4MTYsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzIGNhcHR1cmVSZXBv
cnRpbmdEZWxheSkgeyBtX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5ID0gY2FwdHVyZVJlcG9y
dGluZ0RlbGF5OyB9CiAgICAgc2l6ZV90IHN1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcigpIHsg
cmV0dXJuIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyOyB9CiAKLSAgICB2b2lkIHJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4mJik+JiYpOwogICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkJ5
RGVmYXVsdEFjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Np
b25Gb3JTcGVlY2hSZWNvZ25pdGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgc3luY0lm
TW9ja0RldmljZXNFbmFibGVkQ2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyNjc3ZWNkNzE2ZjNmNzNmZGI3MmQ3M2ExYTk5Mjlm
ZTkxYjZjYzYxLi5lYmNhMDNkMzE5NDdlOGM1ZTRkMjUzZGVmYjZkNDE1NGRjNjc3ZTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE3MjIsMTMg
KzE3MjIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9u
U2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogICAgIEFTU0VSVCghbV9zcGVl
Y2hSZWNvZ25pdGlvblNlcnZlck1hcC5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgYXV0byYg
c3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmFk
ZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgYXV0byBwZXJtaXNz
aW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXShhdXRvJiBs
YW5nLCBhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7Cisg
ICAgYXV0byBwZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdl
dFBhZ2UpXShhdXRvJiBsYW5nLCBhdXRvJiBvcmlnaW4sIGF1dG8gZnJhbWVJZGVudGlmaWVyLCBh
dXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtQYWdl
KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFsbG93ZWQsICJQYWdl
IG5vIGxvbmdlciBleGlzdHMiX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihs
YW5nLCBvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgd2Vha1Bh
Z2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24obGFuZywgb3JpZ2luLCBmcmFt
ZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9OwogICAgIGF1
dG8gY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vh
a1B0cih0YXJnZXRQYWdlKV0oKSB7CiAgICAgICAgIHJldHVybiB3ZWFrUGFnZSAmJiB3ZWFrUGFn
ZS0+cHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCmluZGV4IGMzY2M4Yjk5Mzg5
MTMzOTIyOWE0MDk1NzVmM2EzNDc0OTNkYTBmNDMuLjlkMmU5NzZjOWYzN2I5YmEwMzNlY2RhY2Nh
MDA1MjExMWQ2MmUwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtNjgsOSArNjksMTIgQEAgdm9p
ZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnVucmVnaXN0ZXJDbGllbnQoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb24KICAgICBtX2NsaWVudE1hcC5yZW1vdmUoY2xpZW50LmlkZW50
aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFy
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNs
aWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29s
IGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmIGNsaWVudE9yaWdpbikKK3ZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51
b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChjbGll
bnRJZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJu
YXRpdmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdpbikpKTsKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUg
PSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSk7CisgICAgQVNTRVJUKHdlYkZyYW1lKTsK
KworICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChjbGll
bnRJZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJu
YXRpdmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdpbiksIHdlYkZyYW1lLT5mcmFtZUlEKCkpKTsKIH0K
IAogdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0b3AoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDU5
NjZlM2ZkNzczMDUyYzM5MzI3MTQ0MGVkMTM3YjAxMDg1N2VlMjAuLjAyZmVlODVkODQ3NWM3Zjk1
MDQwMWVhOTIwNWZkYjJjOTdhOWRjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q28KIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bj4gY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAg
dm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmlt
UmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JikgZmluYWw7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91
cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6RnJhbWUmKSBmaW5hbDsKICAgICB2b2lkIHN0b3Ao
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ0OWYzNDdlZGUxOGY5NjQ5YjY3NTg1MmM5NGM0MWM1ZTYz
ZjVkY2YuLjJmZjYyZDc5OWQ3ZTBhNGY3MTFjZDA5M2ZmNTM3ZTZlZDA2YzlmNDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMS0wMS0yOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAg
IFVzZSB1c2VyIG1lZGlhIHBlcm1pc3Npb24gcHJvbXB0IGZvciBzcGVlY2ggcmVjb2duaXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTA4Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbToKKyAgICAgICAg
KC1bU3BlZWNoUmVjb2duaXRpb25VSURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3RNZWRpYUNhcHR1
cmVBdXRob3JpemF0aW9uOmRlY2lzaW9uSGFuZGxlcjpdKToKKwogMjAyMS0wMS0yNyAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2J1aWxkLndlYmtpdC5v
cmddIEFkZCBiYXNpYyBhdXRoZW50aWNhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KaW5kZXggMzhh
YjE3NWQxZmQzMTA5M2M0ODMyNzA2YTJiODA4ODFjODdlZGM4Yi4uNzQzNDU4ZjMwOTc4NTY3Nzcy
YTBhNGVmNWE3ODYxYjMxYjY4NGRlNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tCkBAIC02MCw3ICs2
MCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiBjcmVhdGVkV2ViVmlldzsKIAogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlQXV0
aG9yaXphdGlvbjogKF9XS0NhcHR1cmVEZXZpY2VzKWRldmljZXMgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoWUVT
KTsKKyAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBkZWNpc2lvbkhhbmRsZXIo
c2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVzdCk7CiB9CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJMOihOU1VSTCAq
KXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJMIGZyYW1lSWRlbnRpZmllcjoo
TlNVSW50ZWdlcilmcmFtZUlkZW50aWZpZXIgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShOU1N0
cmluZyAqc2FsdCwgQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MmY5
M2RlMGZkMmI3ZWIwMDA4ZjZjZTY5YTdlNDliNjNiMzBiMGI2Li5mYmFlYWYyNmNmZDBjOWVhOWZh
Y2U1ZmFiYWRkMzI2MmM1MzAxNThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDEtMjgg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKworICAgICAgICBVc2UgdXNlciBtZWRp
YSBwZXJtaXNzaW9uIHByb21wdCBmb3Igc3BlZWNoIHJlY29nbml0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRp
b24vcGVybWlzc2lvbi1lcnJvci5odG1sOgorCiAyMDIxLTAxLTI3ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29sb3IoYTk4LXJnYiAu
Li4pIGFzIHBhcnQgb2YgQ1NTIENvbG9yIDQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKaW5kZXggMDdlMGUyYzE2
YmRjNDI0YzY5NjY2N2U0NzRjZmExODhjZTE0MDEwZS4uODI4MDgxMmYwMzRlNzRmYjkzMjMxODFh
YmYxMjA5MDg0YTYwNmNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNv
Z25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKQEAgLTcsNyArNyw3IEBAIGRlc2Ny
aXB0aW9uKCJWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVuIHBlcm1pc3Npb24g
aXMgZGVuaWVkLiIpOwogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLSAgICB0ZXN0UnVubmVyLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uR3JhbnRlZChmYWxzZSk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9u
KGZhbHNlKTsKIH0KIAogc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uID0gbmV3IHdlYmtpdFNw
ZWVjaFJlY29nbml0aW9uKCkiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418751</attachid>
            <date>2021-01-29 11:44:29 -0800</date>
            <delta_ts>2021-01-29 12:54:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221082-20210129114428.patch</filename>
            <type>text/plain</type>
            <size>41060</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1ZGUyYWU3MzY4NTk1
ODJkNzk4NzdhM2RmMDM1NjM0N2Q2ZTFhYy4uMjM0ZThiNTQ1NTNhOWIwNTk0NjU4ZDdkYjljZjlj
NTQ0MzdkMmJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTI5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVy
bWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzczMzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGZyYW1lIGlkZW50aWZpZXIgdG8gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IGFz
IGl0IGlzIG5lZWRlZCBmb3IgY2hlY2tpbmcgdXNlciBtZWRpYSBwZXJtaXNzaW9uLgorCisgICAg
ICAgIFVwZGF0ZWQgZXhpc3RpbmcgdGVzdHMgZm9yIGNoYW5nZWQgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmZyYW1lSWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29k
ZSk6CisgICAgICAgICogcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDoKKwog
MjAyMS0wMS0yNyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgRG9u
J3QgbGluayBJT1N1cmZhY2VBY2NlbGVyYXRvciBvbiBzaW11bGF0b3IgYnVpbGRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDdiZDhkNjIyMTA4MTczN2QxY2JiM2ZjNDVkNjQ3ZGE3NDUyMGYzOTYuLmFlNjRkMGQyYTRi
YWU3ZmE2ODIzYWFiM2Y0NTlkMmYyMjljYjQzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAK
KzIwMjEtMDEtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKworICAgICAgICBV
c2UgdXNlciBtZWRpYSBwZXJtaXNzaW9uIHByb21wdCBmb3Igc3BlZWNoIHJlY29nbml0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwODIKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vNzMzNzI0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIgYXNrIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IGZvciB1c2Vy
IHBlcm1pc3Npb24gb24gCisgICAgICAgIG1pY3JvcGhvbmUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nl
c3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmZyYW1lSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVueVJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6Z3JhbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJl
Y29nbml0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1l
ZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uOjpzdGFydCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDoKKwogMjAyMS0wMS0yNyAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gYWRkIGFj
Y2Vzc2liaWxpdHkgaW1hZ2UgZXh0cmFjdGlvbiBjb250ZXh0bWVudSBpdGVtIGZvciByZXZlYWxp
bmcgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbi5jcHAKaW5kZXggMzk0MTM3Y2Y2ODdhOWMyMmMyMDBjOGNjMTE0Y2VlNmNkZTJi
YzFjZC4uZjczOTlmMzY0ZDE4ZWEyMjc5MDQ3NzQ0MGY3ZGRjMWQ3N2YxYjk0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApA
QCAtNzEsNyArNzEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU3BlZWNoUmVjb2duaXRpb246OnN0
YXJ0UmVjb2duaXRpb24oKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9y
LCAiUmVjb2duaXRpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbm5lY3Rpb24iX3MgfTsKIAog
ICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwotICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcs
IG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVu
dE9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCkgfSk7CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwor
ICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3Is
ICJSZWNvZ25pdGlvbiBpcyBub3QgaW4gYSB2YWxpZCBmcmFtZSJfcyB9OworCisgICAgYXV0byBm
cmFtZUlkZW50aWZpZXIgPSBkb2N1bWVudC5mcmFtZUlEKCk7CisgICAgaWYgKCFmcmFtZUlkZW50
aWZpZXIpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25p
dGlvbiBkb2VzIG5vdCBoYXZlIGEgZnJhbWUgaWRlbnRpZmllciJfcyB9OworCisgICAgbV9jb25u
ZWN0aW9uLT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVy
aW1SZXN1bHRzLCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9w
T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCAqZnJh
bWVJZGVudGlmaWVyKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5nOwogICAgIHJldHVy
biB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDA2OTI2YzNjMzAwMDZjMmJhODcz
Yjg2ZTkxMzExNmY0N2UxNmM5NmMuLjcxYTJhODg2Zjk0ZWY2N2I2MjUzZDZlNWI4ZGVhYzQxM2Y1
MzczYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDbGllbnQo
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wg
aW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luJiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2lu
JiYsIEZyYW1lSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggOWFhZGU2MTcxZTA2MmY1YThjYzNhMTYy
ODkyOTk0OTlkZmQ5ZDBhNi4uNjM4ODhhOTBhNDk0ZDNlNjcyZWZlYzFlMDNiNWMwZmIyY2ZjOTFi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aW50ZXJpbVJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uaW50ZXJpbVJlc3VsdHM7IH0K
ICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubWF4
QWx0ZXJuYXRpdmVzOyB9CiAgICAgY29uc3QgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRPcmlnaW47IH0KKyAgICBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmZyYW1lSWRlbnRpZmllcjsg
fQogCiBwcml2YXRlOgogICAgIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gbV9pbmZvOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mby5oCmluZGV4IDFlZmU5ZTA2NDZlNzQ3Y2I1NWQ3Y2NiMGY3YjE4
ZmY1ZTBiM2M0YzIuLmU3ZDQwYmYwMzg2M2RjZjNjN2QwMzdlMTQyNGZkOGFlYTNiYzYzNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw2ICszOCw3IEBAIHN0cnVjdCBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKICAgICBib29sIGludGVyaW1SZXN1bHRzIHsgZmFsc2Ug
fTsKICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAxIH07CiAgICAgQ2xpZW50T3JpZ2lu
IGNsaWVudE9yaWdpbjsKKyAgICBGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyOwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDUsNyArNDcsNyBAQCBzdHJ1
Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFuZyA8
PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlcyA8PCBjbGll
bnRPcmlnaW47CisgICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwgY29u
dGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXMgPDwgY2xpZW50T3Jp
Z2luIDw8IGZyYW1lSWRlbnRpZmllcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAg
LTgxLDEzICs4MywxOSBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwogICAgIGlmICghY2xpZW50
T3JpZ2luKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmcmFtZUlkZW50
aWZpZXI7CisgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmll
ciksCiAgICAgICAgIFdURk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3ZlKCpjb250aW51b3Vz
KSwKICAgICAgICAgV1RGTW92ZSgqaW50ZXJpbVJlc3VsdHMpLAogICAgICAgICBXVEZNb3ZlKCpt
YXhBbHRlcm5hdGl2ZXMpLAotICAgICAgICBXVEZNb3ZlKCpjbGllbnRPcmlnaW4pCisgICAgICAg
IFdURk1vdmUoKmNsaWVudE9yaWdpbiksCisgICAgICAgIFdURk1vdmUoKmZyYW1lSWRlbnRpZmll
cikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNw
ZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVl
Y2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKaW5kZXggMzE0OTQ4ZWEyYzU2NTQwNzk1MTRlMDc2Nzkx
YTY1MzE0MmU2Nzk4Zi4uMDEwYmJjN2VkNzE3YjQxY2E1ZGQ1YzNmYWQwMmY1Y2NhMmJmOTVhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Q
cm92aWRlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICB2
b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZp
bmFsIHsgfQogICAgICAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50JikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCwg
Ym9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBz
dGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYsIEZyYW1lSWRlbnRp
ZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBhYm9ydChTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFs
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAppbmRleCBhODA4YmY2YzY0ZTg1ZjM0NWZl
ZThlNTliZWZmOTE2ZWI3OTAxYmFiLi4wNmIxZThkMzJkNGE2NWY1Njk3MjY2NzVkYWM1NGFjYTE5
OTExNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtNzUsOSArNzUsOSBAQCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcigpCiAgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6
Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gbWFuYWdlciBoYXMgZXhpdGVkIl9zIH0pOwogfQogICAg
IAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4mJik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYm
IGNvbXBsZXRpb250SGFuZGxlcikKIHsKLSAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb250SGFuZGxlcikpKTsKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBmcmFtZUlkZW50aWZp
ZXIsIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAgIGlmIChtX3JlcXVlc3RzLnNp
emUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7CiB9CkBAIC0xMjUsMTUgKzEy
NSw2IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9j
ZXNzaW5nUmVxdWVzdCgpCiAjZW5kaWYKICAgICB9CiAKLSAgICAvLyBXZSBjdXJyZW50bHkgZG9u
J3QgYWxsb3cgdGhpcmQtcGFydHkgYWNjZXNzLgotICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hl
Y2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKLSAgICAgICAgYXV0byBjbGllbnRPcmlnaW4g
PSBtX3JlcXVlc3RzLmZpcnN0KCktPm9yaWdpbigpOwotICAgICAgICBhdXRvIHJlcXVlc3RpbmdP
cmlnaW4gPSBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAg
ICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOwotICAgICAgICBpZiAoIXJlcXVlc3RpbmdPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKHRvcE9y
aWdpbikpCi0gICAgICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBDaGVja1Jlc3VsdDo6
RGVuaWVkOwotICAgIH0KLQogICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tS
ZXN1bHQ6OkRlbmllZCkgewogICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9y
VHlwZTo6Tm90QWxsb3dlZCwgIlVzZXIgcGVybWlzc2lvbiBjaGVjayBoYXMgZmFpbGVkIl9zIH0p
OwogICAgICAgICByZXR1cm47CkBAIC0yMjUsNiArMjE2LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24oKQogCiAgICAgYXV0
byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CiAgICAgYXV0byBjbGllbnRP
cmlnaW4gPSBjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCk7CisgICAgYXV0byByZXF1ZXN0aW5nT3Jp
Z2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwogICAgIGF1
dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwog
ICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXShib29sIGdyYW50ZWQpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTIzOCw3
ICsyMzAsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVl
c3RVc2VyUGVybWlzc2lvbigpCiAKICAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgp
OwogICAgIH07Ci0gICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwor
ICAgIG1fcGFnZS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9u
KGN1cnJlbnRSZXF1ZXN0LT5mcmFtZUlkZW50aWZpZXIoKSwgcmVxdWVzdGluZ09yaWdpbiwgdG9w
T3JpZ2luLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmRlY2lkZUJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCmluZGV4IDI0MjU3
NTk1YTI5ZjljNzA5MDBjZGU1NjkxODk0Yjk2Yjc1MzMzYzguLjY2ZjNkYmI0MGM1YzE5ZmYxOTFk
NDI3YzkzYmNmYTJiM2Y5YTYwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQgeyBEZW5pZWQsIEdy
YW50ZWQsIFVua25vd24gfTsKICAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYpOwogICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0
KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3Qg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0Q2FsbGJhY2smJik7CiAKICAgICB2b2lkIGRlY2lkZUJ5RGVmYXVsdEFjdGlvbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oCmluZGV4IDY1NmI1NzU3YWQyNWIyNDkzOWUzNTYzY2FkMzNjNjJjZDczY2Q2
OTcuLmNmY2I2YjcyOTIxZWY4ZmMzYjgwY2ZmODliZWRiMDMwNDc1MmJkZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmgKQEAgLTI3LDE2ICsyNywxOSBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25F
cnJvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yPiYmKT47CisKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBz
dGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QobGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0KGxhbmcsIG9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FcnJvcj4mJiBlcnJvcikKQEAgLTQ3LDE3ICs1MCwyMCBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4g
bV9sYW5nOyB9CisgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDog
bV9sYW5nKGxhbmcpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQorICAgICAgICAsIG1fZnJh
bWVJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcikKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsgfQogCiAgICAgU3RyaW5nIG1f
bGFuZzsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47Ci0gICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYm
KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgbV9mcmFtZUlkZW50aWZpZXI7CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdENhbGxiYWNrIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiBjbGFzcyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAK
aW5kZXggZjYzMWUzYzg2ODQwM2Y5MDZhNzhjYWVjNjk5MDA5ODQ2NDdiODllZS4uOWY5Njc0YWVi
NWVkZWUzODYzNzkzYTYwMmE2YzZhMGVmZTM5N2Y1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVy
LmgiCiAKLSNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdl
cy5oIgpAQCAtNTIsMTEgKzUxLDExIEBAIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3RpCiB7CiB9CiAK
LXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3RyaW5n
JiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBt
YXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbikKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywg
Ym9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5h
dGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSWRlbnRpZmllcikKIHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50
aWZpZXIpOwogICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5jb250YWlucyhjbGllbnRJZGVudGlmaWVy
KSk7Ci0gICAgYXV0byByZXF1ZXN0SW5mbyA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGxhbmcpLCBjb250aW51b3VzLCBp
bnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9yaWdpbikgfTsKKyAgICBh
dXRvIHJlcXVlc3RJbmZvID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7
IGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUobGFuZyksIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1
bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUob3JpZ2luKSwgZnJhbWVJZGVudGlmaWVyIH07
CiAgICAgYXV0byYgbmV3UmVxdWVzdCA9IG1fcmVxdWVzdHMuYWRkKGNsaWVudElkZW50aWZpZXIs
IG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PihXVEZNb3ZlKHJl
cXVlc3RJbmZvKSkpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIHJlcXVlc3RQZXJtaXNzaW9uRm9y
UmVxdWVzdCgqbmV3UmVxdWVzdCk7CkBAIC02NCw3ICs2Myw3IEBAIHZvaWQgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9u
Rm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jbGllbnRP
cmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0
ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKGF1dG8gZXJyb3IpIG11dGFibGUgeworICAgIG1fcGVy
bWlzc2lvbkNoZWNrZXIocmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIHJl
cXVlc3QuZnJhbWVJZGVudGlmaWVyKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShhdXRvIGVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5k
ZXggZWNiYTQwNzA5NDAzOGIzOTc2NTVlY2IwMThkYzIxN2RiYWExYWI4Zi4uMmZjMjQ4YThlMTNi
Yzc2NjU1NDE2MDE3NDg1ZTk0MWRiZWRjZWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisj
aW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29n
bml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uUmVxdWVz
dC5oPgpAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI7Ci11c2luZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
aGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3I+JiYpPiYmKT47Cit1c2luZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYmKT47CiB1c2luZyBTcGVlY2hSZWNvZ25pdGlv
bkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkID0gRnVuY3Rpb248Ym9vbCgpPjsK
IAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAg
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hl
Y2tlciYmLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFi
bGVkJiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGlu
dW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAg
dm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIpOwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdl
cy5pbgppbmRleCBhMjhiOTIxY2I5NjRhZmFmMmZmMjJjOTE2YmJlNDZlODI5OTEzMjlkLi4xZjZm
MTRjNTVkY2M0OTllZjliNjFjZjhiMjQ0YmRlZGEwMjY4ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdl
cy5pbgpAQCAtMjQsNyArMjQsNyBAQAogICovCiAgCiAgbWVzc2FnZXMgLT4gU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgU3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbGFu
ZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRl
cm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKQorICAgIFN0YXJ0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRl
bnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0
cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcikKICAgICBT
dG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICBBYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgSW52YWxpZGF0ZShXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmMwZGI3ODczNWNjMzEzM2Ez
MjAzNmU1NmI0NDZiNGM5ODNhM2MwOC4uMzA2YWY3ODVkMDE1ODljYWU4NGRjOTIzMjUwNDRhOGVm
Njk0NGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMjEzLDYg
KzIxMywxMSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpk
ZW55UmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdQogICAgIGlmIChyZWFzb24gPT0gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29u
OjpQZXJtaXNzaW9uRGVuaWVkKQogICAgICAgICBtX2RlbmllZFJlcXVlc3RzLmFwcGVuZChEZW5p
ZWRSZXF1ZXN0IHsgcmVxdWVzdC5tYWluRnJhbWVJRCgpLCByZXF1ZXN0LnVzZXJNZWRpYURvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmln
aW4oKSwgcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpLCByZXF1ZXN0LnJlcXVpcmVzVmlk
ZW9DYXB0dXJlKCksIHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpIH0pOwogCisgICAg
aWYgKGF1dG8gY2FsbGJhY2sgPSBtX3NwZWVjaFJlY29nbml0aW9uUmVxdWVzdENhbGxiYWNrcy50
YWtlKCZyZXF1ZXN0KSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChtX3ByZWdyYW50
ZWRSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcmVxdWVzdC51c2VyUmVxdWVzdCgpLmF1ZGlvQ29uc3Ry
YWludHMuaXNWYWxpZCkKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnJlbW92ZUV4dGVuc2l2ZU9ic2VydmVyKCp0aGlz
KTsKQEAgLTIzNCw2ICsyMzksMTIgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KFVzZXJNZWRpYVBlcm1pc3Npb25SZXEKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgcmVxdWVzdC51
c2VyTWVkaWFJRCgpLCAiLCB2aWRlbzogIiwgcmVxdWVzdC52aWRlb0RldmljZSgpLmxhYmVsKCks
ICIsIGF1ZGlvOiAiLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCkubGFiZWwoKSk7CiAKKyAgICBpZiAo
YXV0byBjYWxsYmFjayA9IG1fc3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Q2FsbGJhY2tzLnRha2Uo
JnJlcXVlc3QpKSB7CisgICAgICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChtYWtlUmVmKHJl
cXVlc3QpKTsKKyAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBhdXRvJiB1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC51
c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byYgdG9wTGV2ZWxEb2N1
bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmln
aW4oKTsKICAgICBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9y
YWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbih1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5
T3JpZ2luLCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCldKFN0cmluZyYm
KSBtdXRhYmxlIHsKQEAgLTQzMyw2ICs0NDQsMzEgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSgK
ICNlbmRpZgogfQogCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihjb25zdCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYgZGV2aWNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1
dG8qIGZyYW1lID0gbV9wYWdlLnByb2Nlc3MoKS53ZWJGcmFtZShmcmFtZUlkZW50aWZpZXIpOwor
ICAgIGlmICghZnJhbWUgfHwgIVNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG1fcGFn
ZS5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BP
cmlnaW4pKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICh3YXNSZXF1ZXN0RGVuaWVkKGZyYW1lSWRlbnRpZmllciwg
cmVxdWVzdGluZ09yaWdpbiwgdG9wT3JpZ2luLCB0cnVlLCBmYWxzZSwgZmFsc2UpKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChzZWFyY2hGb3JHcmFudGVkUmVxdWVzdChmcmFtZUlkZW50aWZpZXIsIHJlcXVlc3Rp
bmdPcmlnaW4sIHRvcE9yaWdpbiwgdHJ1ZSwgZmFsc2UpKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXF1ZXN0
ID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKCp0aGlzLCAwLCBmcmFt
ZUlkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgcmVxdWVzdGluZ09yaWdpbi5pc29sYXRlZENv
cHkoKSwgdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURl
dmljZT4geyBkZXZpY2UgfSwgeyB9LCB7IH0pOworICAgIG1fc3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0Q2FsbGJhY2tzLnNldChyZXF1ZXN0LnB0cigpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgYXV0byB1c2VyTWVkaWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUocmVxdWVzdGluZ09yaWdpbik7CisgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4pOworICAgIG1fcGFnZS51aUNsaWVudCgpLmRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG1fcGFnZSwgKmZyYW1lLCBX
VEZNb3ZlKHVzZXJNZWRpYU9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxPcmlnaW4pLCByZXF1ZXN0
LmdldCgpKTsKK30KKwogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6cHJvY2Vzc05leHRVc2VyTWVkaWFSZXF1ZXN0SWZOZWVkZWQoKQogewogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCA3M2UzYTJi
ZTRlN2ZjMDIyYmZkNWU1MDk2MTkwYWI5NmMwNWJmMzk3Li43MDQ2NjY1MjU1N2Y4ZDIxNjk2OThk
NmZkMTZjMTk0NTljZTJmYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAg
LTk3LDYgKzk3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5h
YmxlZE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+KTsKICAgICBib29sIGhhc1BlbmRpbmdDYXB0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nQ2FwdHVyZTsgfQogCisgICAgdm9pZCBjaGVj
a1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihjb25zdCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbDsKQEAg
LTE2Miw2ICsxNjQsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgVmVjdG9yPERlbmllZFJlcXVl
c3Q+IG1fZGVuaWVkUmVxdWVzdHM7CiAKKyAgICBIYXNoTWFwPFJlZlB0cjxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4+IG1fc3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0Q2FsbGJhY2tzOworCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fY2FwdHVyZVN0YXRlIHsgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6SXNOb3RQbGF5aW5nIH07CiAgICAgUnVuTG9vcDo6VGltZXI8VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+IG1fd2F0Y2hkb2dUaW1lcjsKICAgICBTZWNvbmRzIG1f
Y3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCBmYmE4ZWQ4NWI0MGY4NTg1ZDdlZWM0Njk5ZWY5MDExZTZmZTE1MDg5Li4z
NDgzMDljYjYxZDQyNDNhM2VmZmM1ODFhYzY0ZGQwOGY3YzA5MjAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMzc5LDEyICsxMDM3OSwxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3BlZWNoUmVj
b2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQogICAgICAgICBt
X3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKIAotICAgIG1fc3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci0+cmVxdWVzdChsYW5nLCBjbGllbnRPcmlnaW4sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXItPnJlcXVlc3QobGFuZywgY2xpZW50T3JpZ2luLCBmcmFtZUlkZW50aWZpZXIsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25CeURlZmF1bHRBY3Rpb24oY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEwMzk3LDYgKzEwMzk3LDE5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQnlEZWZhdWx0QWN0aW9u
KGNvbnN0IFdlYkNvCiAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5k
ZWNpZGVCeURlZmF1bHRBY3Rpb24ob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNw
ZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5nT3JpZ2luLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisgICAgYXV0byBjYXB0dXJlRGV2aWNlID0gU3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlOjpmaW5kQ2FwdHVyZURldmljZSgpOworICAgIGlmICghY2FwdHVyZURldmljZSkKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCkuY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2du
aXRpb24oZnJhbWVJZGVudGlmaWVyLCByZXF1ZXN0aW5nT3JpZ2luLCB0b3BPcmlnaW4sICpjYXB0
dXJlRGV2aWNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisjZWxzZQorICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAogV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IgV2ViUGFnZVByb3h5OjpjcmVhdGVS
ZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjN2UwYWIwNTk3ZWI2NzU5OTdhYzA5NTVkZTU2ZDE0
NjVkYzdmMmY0Li43OTkxYzkxN2MxNzNjY2FmNmRmYTcwNjU0NGNmMjRjNGFiNGZhNjAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTIsNiArNTIsNyBAQAogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
ICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHkuaCIK
ICNpbmNsdWRlICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCIKICNpbmNsdWRlICJTeXN0
ZW1QcmV2aWV3Q29udHJvbGxlci5oIgpAQCAtMTgxNiw4ICsxODE3LDkgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyBjYXB0dXJlUmVwb3J0
aW5nRGVsYXkpIHsgbV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheSA9IGNhcHR1cmVSZXBvcnRp
bmdEZWxheTsgfQogICAgIHNpemVfdCBzdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIoKSB7IHJl
dHVybiBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcjsgfQogCi0gICAgdm9pZCByZXF1ZXN0
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJik7CiAgICAgdm9pZCByZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBy
ZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogCiAgICAgdm9pZCBzeW5jSWZNb2NrRGV2aWNlc0VuYWJsZWRDaGFuZ2VkKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI2NzdlY2Q3
MTZmM2Y3M2ZkYjcyZDczYTFhOTkyOWZlOTFiNmNjNjEuLmViY2EwM2QzMTk0N2U4YzVlNGQyNTNk
ZWZiNmQ0MTU0ZGM2NzdlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMTcyMiwxMyArMTcyMiwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVu
dAogCiAgICAgQVNTRVJUKCFtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmNvbnRhaW5zKGlk
ZW50aWZpZXIpKTsKICAgICBhdXRvJiBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKLSAgICBhdXRvIHBlcm1pc3Npb25DaGVja2VyID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQ
dHIodGFyZ2V0UGFnZSldKGF1dG8mIGxhbmcsIGF1dG8mIG9yaWdpbiwgYXV0byYmIGNvbXBsZXRp
b25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICBhdXRvIHBlcm1pc3Npb25DaGVja2VyID0gW3dlYWtQ
YWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8mIGxhbmcsIGF1dG8mIG9yaWdpbiwg
YXV0byBmcmFtZUlkZW50aWZpZXIsIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghd2Vha1BhZ2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9y
VHlwZTo6Tm90QWxsb3dlZCwgIlBhZ2Ugbm8gbG9uZ2VyIGV4aXN0cyJfcyB9KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uKGxhbmcsIG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbihsYW5nLCBvcmlnaW4sIGZyYW1lSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgIH07CiAgICAgYXV0byBjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZCA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXSgpIHsKICAgICAgICAgcmV0
dXJuIHdlYWtQYWdlICYmIHdlYWtQYWdlLT5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5jcHAKaW5kZXggYzNjYzhiOTkzODkxMzM5MjI5YTQwOTU3NWYzYTM0NzQ5M2RhMGY0My4uNGI3
NjNiY2RlZTYzYmRmZjRmYTFmMjlkZTc4NTY2MGQ0OGI0ZjFlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgIlNw
ZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CkBAIC02OCw5ICs2OSw5IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjp1
bnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uCiAgICAgbV9jbGllbnRN
YXAucmVtb3ZlKGNsaWVudC5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcs
IGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJu
YXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4pCit2b2lkIFdlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3Qg
bWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGNsaWVudElkZW50aWZpZXIsIGxh
bmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUo
Y2xpZW50T3JpZ2luKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpTdGFydChjbGllbnRJZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVz
dWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGZyYW1lSWRlbnRp
ZmllcikpOwogfQogCiB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RvcChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVu
dElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
LmgKaW5kZXggNTk2NmUzZmQ3NzMwNTJjMzkzMjcxNDQwZWQxMzdiMDEwODU3ZWUyMC4uMzQzODIx
NTU2YTc4YTdjNzliMzg1YTBkOTgyODEyZWJkMzc0YTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25DbwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uPiBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmll
cik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBi
b29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYmKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9v
bCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2
ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpIGZp
bmFsOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDQ5ZjM0N2VkZTE4Zjk2
NDliNjc1ODUyYzk0YzQxYzVlNjNmNWRjZi4uMmY3NDAxZTFjZjVkY2ExODg3OWY0ODdjMzgwNjNk
MTI2NDg3MTVmMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTI5ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVA
YXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVybWlzc2lvbiBwcm9tcHQgZm9y
IHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzczMzcyNDk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tOgorICAgICAgICAoLVtT
cGVlY2hSZWNvZ25pdGlvblVJRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVyZUF1
dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorCisyMDIxLTAxLTI5ICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVybWlzc2lv
biBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzcz
MzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tOgor
ICAgICAgICAoLVtTcGVlY2hSZWNvZ25pdGlvblVJRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdE1l
ZGlhQ2FwdHVyZUF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorCiAyMDIxLTAxLTI3
ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbYnVpbGQu
d2Via2l0Lm9yZ10gQWRkIGJhc2ljIGF1dGhlbnRpY2F0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQpp
bmRleCAzOGFiMTc1ZDFmZDMxMDkzYzQ4MzI3MDZhMmI4MDg4MWM4N2VkYzhiLi43NDM0NThmMzA5
Nzg1Njc3NzJhMGE0ZWY1YTc4NjFiMzFiNjg0ZGU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KQEAg
LTYwLDcgKzYwLDggQEAgc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IGNyZWF0ZWRXZWJWaWV3
OwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNh
cHR1cmVBdXRob3JpemF0aW9uOiAoX1dLQ2FwdHVyZURldmljZXMpZGV2aWNlcyBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFu
ZGxlcihZRVMpOworICAgIHBlcm1pc3Npb25SZXF1ZXN0ZWQgPSB0cnVlOworICAgIGRlY2lzaW9u
SGFuZGxlcihzaG91bGRHcmFudFBlcm1pc3Npb25SZXF1ZXN0KTsKIH0KIAogLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JVUkw6
KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJZGVu
dGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDcyZjkzZGUwZmQyYjdlYjAwMDhmNmNlNjlhN2U0OWI2M2IzMGIwYjYuLmE3MTM4Zjk1NjUx
OTE5YWEzY2U0NzkxZDU0YzBhODE3ZjAyZTJjNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
MS0wMS0yOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIFVzZSB1
c2VyIG1lZGlhIHBlcm1pc3Npb24gcHJvbXB0IGZvciBzcGVlY2ggcmVjb2duaXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTA4MgorICAgICAg
ICByZGFyOi8vcHJvYmxlbS83MzM3MjQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVy
cm9yLmh0bWw6CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25p
dGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS5odG1sOgor
CiAyMDIxLTAxLTI3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgY29sb3IoYTk4LXJnYiAuLi4pIGFzIHBhcnQgb2YgQ1NTIENvbG9yIDQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lv
bi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNz
aW9uLWVycm9yLmh0bWwKaW5kZXggMDdlMGUyYzE2YmRjNDI0YzY5NjY2N2U0NzRjZmExODhjZTE0
MDEwZS4uODI4MDgxMmYwMzRlNzRmYjkzMjMxODFhYmYxMjA5MDg0YTYwNmNlZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVy
cm9yLmh0bWwKQEAgLTcsNyArNyw3IEBAIGRlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBlcnJvciBl
dmVudCBpcyBmaXJlZCB3aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVkLiIpOwogCiBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB0ZXN0UnVubmVy
LnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChmYWxzZSk7CisgICAgdGVz
dFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKIH0KIAogc2hvdWxkTm90VGhy
b3coInJlY29nbml0aW9uID0gbmV3IHdlYmtpdFNwZWVjaFJlY29nbml0aW9uKCkiKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRp
b24taW4tcmVtb3ZlZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQKaW5kZXggMTlmMGRhNDNjODMyMzBhYzE0OWUwODEwMDk1NDllY2Q5YjQ5MmI4Zi4uNTRk
ZDdkNzg3M2M1OGQ4ZDg5YjgzY2I1Y2QyODUxNGI0ZjZkNzBkMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVk
LWlmcmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25p
dGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3RlZC50eHQKQEAg
LTQsNyArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBpZnJhbWUucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChpZnJhbWUpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFT
UyBpZnJhbWUuY29udGVudFdpbmRvdy5zdGFydFJlY29nbml0aW9uKCkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIGlmcmFtZS5jb250ZW50V2luZG93LnN0YXJ0UmVjb2duaXRpb24oKSB0
aHJldyBleGNlcHRpb24gVW5rbm93bkVycm9yOiBSZWNvZ25pdGlvbiBpcyBub3QgaW4gYSB2YWxp
ZCBmcmFtZS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1y
ZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS5odG1sCmlu
ZGV4IGE5MDUxMWVjY2NjM2VhYmRhYWZmODI0OGM2OTFjNWZmNTU3ZjgzMWUuLmJhNGZjZjhhYjg3
ZGJhMGIwOTRmNmNjMWYwMGIwNGQyZTkwMTQ3ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29n
bml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLmh0bWwKQEAgLTEyLDcgKzEyLDcgQEAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBpZnJhbWUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF07Ci0gICAgc2hvdWxkTm90VGhyb3co
ImlmcmFtZS5jb250ZW50V2luZG93LnN0YXJ0UmVjb2duaXRpb24oKSIpOworICAgIHNob3VsZFRo
cm93KCJpZnJhbWUuY29udGVudFdpbmRvdy5zdGFydFJlY29nbml0aW9uKCkiKTsKIH0KIAogZnVu
Y3Rpb24gcmVtb3ZlRnJhbWUoKQo=
</data>
<flag name="commit-queue"
          id="436816"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418754</attachid>
            <date>2021-01-29 12:22:31 -0800</date>
            <delta_ts>2021-01-29 16:23:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221082-20210129122230.patch</filename>
            <type>text/plain</type>
            <size>41297</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1ZGUyYWU3MzY4NTk1
ODJkNzk4NzdhM2RmMDM1NjM0N2Q2ZTFhYy4uMjM0ZThiNTQ1NTNhOWIwNTk0NjU4ZDdkYjljZjlj
NTQ0MzdkMmJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTI5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVy
bWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzczMzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGZyYW1lIGlkZW50aWZpZXIgdG8gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IGFz
IGl0IGlzIG5lZWRlZCBmb3IgY2hlY2tpbmcgdXNlciBtZWRpYSBwZXJtaXNzaW9uLgorCisgICAg
ICAgIFVwZGF0ZWQgZXhpc3RpbmcgdGVzdHMgZm9yIGNoYW5nZWQgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmZyYW1lSWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29k
ZSk6CisgICAgICAgICogcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDoKKwog
MjAyMS0wMS0yNyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgRG9u
J3QgbGluayBJT1N1cmZhY2VBY2NlbGVyYXRvciBvbiBzaW11bGF0b3IgYnVpbGRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDdiZDhkNjIyMTA4MTczN2QxY2JiM2ZjNDVkNjQ3ZGE3NDUyMGYzOTYuLmFlNjRkMGQyYTRi
YWU3ZmE2ODIzYWFiM2Y0NTlkMmYyMjljYjQzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAK
KzIwMjEtMDEtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKworICAgICAgICBV
c2UgdXNlciBtZWRpYSBwZXJtaXNzaW9uIHByb21wdCBmb3Igc3BlZWNoIHJlY29nbml0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwODIKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vNzMzNzI0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIgYXNrIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IGZvciB1c2Vy
IHBlcm1pc3Npb24gb24gCisgICAgICAgIG1pY3JvcGhvbmUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nl
c3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmZyYW1lSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVueVJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6Z3JhbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJl
Y29nbml0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1l
ZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uOjpzdGFydCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDoKKwogMjAyMS0wMS0yNyAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gYWRkIGFj
Y2Vzc2liaWxpdHkgaW1hZ2UgZXh0cmFjdGlvbiBjb250ZXh0bWVudSBpdGVtIGZvciByZXZlYWxp
bmcgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbi5jcHAKaW5kZXggMzk0MTM3Y2Y2ODdhOWMyMmMyMDBjOGNjMTE0Y2VlNmNkZTJi
YzFjZC4uZjczOTlmMzY0ZDE4ZWEyMjc5MDQ3NzQ0MGY3ZGRjMWQ3N2YxYjk0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApA
QCAtNzEsNyArNzEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU3BlZWNoUmVjb2duaXRpb246OnN0
YXJ0UmVjb2duaXRpb24oKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9y
LCAiUmVjb2duaXRpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbm5lY3Rpb24iX3MgfTsKIAog
ICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwotICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcs
IG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVu
dE9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCkgfSk7CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwor
ICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3Is
ICJSZWNvZ25pdGlvbiBpcyBub3QgaW4gYSB2YWxpZCBmcmFtZSJfcyB9OworCisgICAgYXV0byBm
cmFtZUlkZW50aWZpZXIgPSBkb2N1bWVudC5mcmFtZUlEKCk7CisgICAgaWYgKCFmcmFtZUlkZW50
aWZpZXIpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25p
dGlvbiBkb2VzIG5vdCBoYXZlIGEgZnJhbWUgaWRlbnRpZmllciJfcyB9OworCisgICAgbV9jb25u
ZWN0aW9uLT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVy
aW1SZXN1bHRzLCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9w
T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCAqZnJh
bWVJZGVudGlmaWVyKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5nOwogICAgIHJldHVy
biB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDA2OTI2YzNjMzAwMDZjMmJhODcz
Yjg2ZTkxMzExNmY0N2UxNmM5NmMuLjcxYTJhODg2Zjk0ZWY2N2I2MjUzZDZlNWI4ZGVhYzQxM2Y1
MzczYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDbGllbnQo
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wg
aW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luJiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2lu
JiYsIEZyYW1lSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggOWFhZGU2MTcxZTA2MmY1YThjYzNhMTYy
ODkyOTk0OTlkZmQ5ZDBhNi4uNjM4ODhhOTBhNDk0ZDNlNjcyZWZlYzFlMDNiNWMwZmIyY2ZjOTFi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aW50ZXJpbVJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uaW50ZXJpbVJlc3VsdHM7IH0K
ICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubWF4
QWx0ZXJuYXRpdmVzOyB9CiAgICAgY29uc3QgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRPcmlnaW47IH0KKyAgICBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmZyYW1lSWRlbnRpZmllcjsg
fQogCiBwcml2YXRlOgogICAgIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gbV9pbmZvOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mby5oCmluZGV4IDFlZmU5ZTA2NDZlNzQ3Y2I1NWQ3Y2NiMGY3YjE4
ZmY1ZTBiM2M0YzIuLmU3ZDQwYmYwMzg2M2RjZjNjN2QwMzdlMTQyNGZkOGFlYTNiYzYzNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw2ICszOCw3IEBAIHN0cnVjdCBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKICAgICBib29sIGludGVyaW1SZXN1bHRzIHsgZmFsc2Ug
fTsKICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAxIH07CiAgICAgQ2xpZW50T3JpZ2lu
IGNsaWVudE9yaWdpbjsKKyAgICBGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyOwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDUsNyArNDcsNyBAQCBzdHJ1
Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFuZyA8
PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlcyA8PCBjbGll
bnRPcmlnaW47CisgICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwgY29u
dGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXMgPDwgY2xpZW50T3Jp
Z2luIDw8IGZyYW1lSWRlbnRpZmllcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAg
LTgxLDEzICs4MywxOSBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwogICAgIGlmICghY2xpZW50
T3JpZ2luKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmcmFtZUlkZW50
aWZpZXI7CisgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmll
ciksCiAgICAgICAgIFdURk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3ZlKCpjb250aW51b3Vz
KSwKICAgICAgICAgV1RGTW92ZSgqaW50ZXJpbVJlc3VsdHMpLAogICAgICAgICBXVEZNb3ZlKCpt
YXhBbHRlcm5hdGl2ZXMpLAotICAgICAgICBXVEZNb3ZlKCpjbGllbnRPcmlnaW4pCisgICAgICAg
IFdURk1vdmUoKmNsaWVudE9yaWdpbiksCisgICAgICAgIFdURk1vdmUoKmZyYW1lSWRlbnRpZmll
cikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNw
ZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVl
Y2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKaW5kZXggMzE0OTQ4ZWEyYzU2NTQwNzk1MTRlMDc2Nzkx
YTY1MzE0MmU2Nzk4Zi4uMDEwYmJjN2VkNzE3YjQxY2E1ZGQ1YzNmYWQwMmY1Y2NhMmJmOTVhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Q
cm92aWRlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICB2
b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZp
bmFsIHsgfQogICAgICAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50JikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCwg
Ym9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBz
dGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYsIEZyYW1lSWRlbnRp
ZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBhYm9ydChTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFs
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAppbmRleCBhODA4YmY2YzY0ZTg1ZjM0NWZl
ZThlNTliZWZmOTE2ZWI3OTAxYmFiLi4wNmIxZThkMzJkNGE2NWY1Njk3MjY2NzVkYWM1NGFjYTE5
OTExNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtNzUsOSArNzUsOSBAQCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcigpCiAgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6
Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gbWFuYWdlciBoYXMgZXhpdGVkIl9zIH0pOwogfQogICAg
IAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4mJik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYm
IGNvbXBsZXRpb250SGFuZGxlcikKIHsKLSAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb250SGFuZGxlcikpKTsKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBmcmFtZUlkZW50aWZp
ZXIsIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAgIGlmIChtX3JlcXVlc3RzLnNp
emUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7CiB9CkBAIC0xMjUsMTUgKzEy
NSw2IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9j
ZXNzaW5nUmVxdWVzdCgpCiAjZW5kaWYKICAgICB9CiAKLSAgICAvLyBXZSBjdXJyZW50bHkgZG9u
J3QgYWxsb3cgdGhpcmQtcGFydHkgYWNjZXNzLgotICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hl
Y2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKLSAgICAgICAgYXV0byBjbGllbnRPcmlnaW4g
PSBtX3JlcXVlc3RzLmZpcnN0KCktPm9yaWdpbigpOwotICAgICAgICBhdXRvIHJlcXVlc3RpbmdP
cmlnaW4gPSBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAg
ICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOwotICAgICAgICBpZiAoIXJlcXVlc3RpbmdPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKHRvcE9y
aWdpbikpCi0gICAgICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBDaGVja1Jlc3VsdDo6
RGVuaWVkOwotICAgIH0KLQogICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tS
ZXN1bHQ6OkRlbmllZCkgewogICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9y
VHlwZTo6Tm90QWxsb3dlZCwgIlVzZXIgcGVybWlzc2lvbiBjaGVjayBoYXMgZmFpbGVkIl9zIH0p
OwogICAgICAgICByZXR1cm47CkBAIC0yMjUsNiArMjE2LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24oKQogCiAgICAgYXV0
byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CiAgICAgYXV0byBjbGllbnRP
cmlnaW4gPSBjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCk7CisgICAgYXV0byByZXF1ZXN0aW5nT3Jp
Z2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwogICAgIGF1
dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwog
ICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXShib29sIGdyYW50ZWQpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTIzOCw3
ICsyMzAsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVl
c3RVc2VyUGVybWlzc2lvbigpCiAKICAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgp
OwogICAgIH07Ci0gICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwor
ICAgIG1fcGFnZS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9u
KGN1cnJlbnRSZXF1ZXN0LT5mcmFtZUlkZW50aWZpZXIoKSwgcmVxdWVzdGluZ09yaWdpbiwgdG9w
T3JpZ2luLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmRlY2lkZUJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCmluZGV4IDI0MjU3
NTk1YTI5ZjljNzA5MDBjZGU1NjkxODk0Yjk2Yjc1MzMzYzguLjY2ZjNkYmI0MGM1YzE5ZmYxOTFk
NDI3YzkzYmNmYTJiM2Y5YTYwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQgeyBEZW5pZWQsIEdy
YW50ZWQsIFVua25vd24gfTsKICAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYpOwogICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0
KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3Qg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0Q2FsbGJhY2smJik7CiAKICAgICB2b2lkIGRlY2lkZUJ5RGVmYXVsdEFjdGlvbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oCmluZGV4IDY1NmI1NzU3YWQyNWIyNDkzOWUzNTYzY2FkMzNjNjJjZDczY2Q2
OTcuLmNmY2I2YjcyOTIxZWY4ZmMzYjgwY2ZmODliZWRiMDMwNDc1MmJkZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmgKQEAgLTI3LDE2ICsyNywxOSBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25F
cnJvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yPiYmKT47CisKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBz
dGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QobGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0KGxhbmcsIG9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FcnJvcj4mJiBlcnJvcikKQEAgLTQ3LDE3ICs1MCwyMCBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4g
bV9sYW5nOyB9CisgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDog
bV9sYW5nKGxhbmcpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQorICAgICAgICAsIG1fZnJh
bWVJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcikKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsgfQogCiAgICAgU3RyaW5nIG1f
bGFuZzsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47Ci0gICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYm
KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgbV9mcmFtZUlkZW50aWZpZXI7CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdENhbGxiYWNrIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiBjbGFzcyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAK
aW5kZXggZjYzMWUzYzg2ODQwM2Y5MDZhNzhjYWVjNjk5MDA5ODQ2NDdiODllZS4uOWY5Njc0YWVi
NWVkZWUzODYzNzkzYTYwMmE2YzZhMGVmZTM5N2Y1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVy
LmgiCiAKLSNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdl
cy5oIgpAQCAtNTIsMTEgKzUxLDExIEBAIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3RpCiB7CiB9CiAK
LXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3RyaW5n
JiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBt
YXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbikKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywg
Ym9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5h
dGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSWRlbnRpZmllcikKIHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50
aWZpZXIpOwogICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5jb250YWlucyhjbGllbnRJZGVudGlmaWVy
KSk7Ci0gICAgYXV0byByZXF1ZXN0SW5mbyA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGxhbmcpLCBjb250aW51b3VzLCBp
bnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9yaWdpbikgfTsKKyAgICBh
dXRvIHJlcXVlc3RJbmZvID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7
IGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUobGFuZyksIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1
bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUob3JpZ2luKSwgZnJhbWVJZGVudGlmaWVyIH07
CiAgICAgYXV0byYgbmV3UmVxdWVzdCA9IG1fcmVxdWVzdHMuYWRkKGNsaWVudElkZW50aWZpZXIs
IG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PihXVEZNb3ZlKHJl
cXVlc3RJbmZvKSkpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIHJlcXVlc3RQZXJtaXNzaW9uRm9y
UmVxdWVzdCgqbmV3UmVxdWVzdCk7CkBAIC02NCw3ICs2Myw3IEBAIHZvaWQgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9u
Rm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jbGllbnRP
cmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0
ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKGF1dG8gZXJyb3IpIG11dGFibGUgeworICAgIG1fcGVy
bWlzc2lvbkNoZWNrZXIocmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIHJl
cXVlc3QuZnJhbWVJZGVudGlmaWVyKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShhdXRvIGVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5k
ZXggZWNiYTQwNzA5NDAzOGIzOTc2NTVlY2IwMThkYzIxN2RiYWExYWI4Zi4uMmZjMjQ4YThlMTNi
Yzc2NjU1NDE2MDE3NDg1ZTk0MWRiZWRjZWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisj
aW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29n
bml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uUmVxdWVz
dC5oPgpAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI7Ci11c2luZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
aGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3I+JiYpPiYmKT47Cit1c2luZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYmKT47CiB1c2luZyBTcGVlY2hSZWNvZ25pdGlv
bkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkID0gRnVuY3Rpb248Ym9vbCgpPjsK
IAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAg
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hl
Y2tlciYmLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFi
bGVkJiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGlu
dW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAg
dm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIpOwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdl
cy5pbgppbmRleCBhMjhiOTIxY2I5NjRhZmFmMmZmMjJjOTE2YmJlNDZlODI5OTEzMjlkLi4xZjZm
MTRjNTVkY2M0OTllZjliNjFjZjhiMjQ0YmRlZGEwMjY4ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdl
cy5pbgpAQCAtMjQsNyArMjQsNyBAQAogICovCiAgCiAgbWVzc2FnZXMgLT4gU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgU3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbGFu
ZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRl
cm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKQorICAgIFN0YXJ0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRl
bnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0
cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcikKICAgICBT
dG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICBBYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgSW52YWxpZGF0ZShXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmMwZGI3ODczNWNjMzEzM2Ez
MjAzNmU1NmI0NDZiNGM5ODNhM2MwOC4uNGViN2M1Y2YyODhhOTNlYmQyZDhkNjU4MTRmZjk2MDE3
Mjc0ZDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMjEzLDYg
KzIxMywxMSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpk
ZW55UmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdQogICAgIGlmIChyZWFzb24gPT0gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29u
OjpQZXJtaXNzaW9uRGVuaWVkKQogICAgICAgICBtX2RlbmllZFJlcXVlc3RzLmFwcGVuZChEZW5p
ZWRSZXF1ZXN0IHsgcmVxdWVzdC5tYWluRnJhbWVJRCgpLCByZXF1ZXN0LnVzZXJNZWRpYURvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmln
aW4oKSwgcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpLCByZXF1ZXN0LnJlcXVpcmVzVmlk
ZW9DYXB0dXJlKCksIHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpIH0pOwogCisgICAg
aWYgKGF1dG8gY2FsbGJhY2sgPSBtX3NwZWVjaFJlY29nbml0aW9uUmVxdWVzdENhbGxiYWNrcy50
YWtlKCZyZXF1ZXN0KSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChtX3ByZWdyYW50
ZWRSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcmVxdWVzdC51c2VyUmVxdWVzdCgpLmF1ZGlvQ29uc3Ry
YWludHMuaXNWYWxpZCkKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnJlbW92ZUV4dGVuc2l2ZU9ic2VydmVyKCp0aGlz
KTsKQEAgLTIzNCw2ICsyMzksMTIgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KFVzZXJNZWRpYVBlcm1pc3Npb25SZXEKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgcmVxdWVzdC51
c2VyTWVkaWFJRCgpLCAiLCB2aWRlbzogIiwgcmVxdWVzdC52aWRlb0RldmljZSgpLmxhYmVsKCks
ICIsIGF1ZGlvOiAiLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCkubGFiZWwoKSk7CiAKKyAgICBpZiAo
YXV0byBjYWxsYmFjayA9IG1fc3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Q2FsbGJhY2tzLnRha2Uo
JnJlcXVlc3QpKSB7CisgICAgICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChtYWtlUmVmKHJl
cXVlc3QpKTsKKyAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBhdXRvJiB1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC51
c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byYgdG9wTGV2ZWxEb2N1
bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmln
aW4oKTsKICAgICBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9y
YWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbih1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5
T3JpZ2luLCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCldKFN0cmluZyYm
KSBtdXRhYmxlIHsKQEAgLTYwMiw2ICs2MTMsMzIgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblIK
ICAgICBtX3BhZ2UudWlDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdChtX3BhZ2UsICp3ZWJGcmFtZSwgV1RGTW92ZSh1c2VyTWVkaWFPcmlnaW4pLCBXVEZN
b3ZlKHRvcExldmVsT3JpZ2luKSwgKm1fY3VycmVudFVzZXJNZWRpYVJlcXVlc3QpOwogfQogCit2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgcmVx
dWVzdGluZ09yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwg
Y29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYgZGV2aWNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGZyYW1lID0gbV9w
YWdlLnByb2Nlc3MoKS53ZWJGcmFtZShmcmFtZUlkZW50aWZpZXIpOworICAgIGlmICghZnJhbWUg
fHwgIVNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG1fcGFnZS5wYWdlTG9hZFN0YXRl
KCkuYWN0aXZlVVJMKCkpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BPcmlnaW4pKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICh3YXNSZXF1ZXN0RGVuaWVkKGZyYW1lSWRlbnRpZmllciwgcmVxdWVzdGluZ09yaWdp
biwgdG9wT3JpZ2luLCB0cnVlLCBmYWxzZSwgZmFsc2UpKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzZWFyY2hG
b3JHcmFudGVkUmVxdWVzdChmcmFtZUlkZW50aWZpZXIsIHJlcXVlc3RpbmdPcmlnaW4sIHRvcE9y
aWdpbiwgdHJ1ZSwgZmFsc2UpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKCp0aGlzLCAwLCBmcmFtZUlkZW50aWZpZXIsIGZy
YW1lSWRlbnRpZmllciwgcmVxdWVzdGluZ09yaWdpbi5pc29sYXRlZENvcHkoKSwgdG9wT3JpZ2lu
Lmlzb2xhdGVkQ29weSgpLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4geyBkZXZpY2Ug
fSwgeyB9LCB7IH0pOworICAgIG1fc3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Q2FsbGJhY2tzLnNl
dChyZXF1ZXN0LnB0cigpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byB1
c2VyTWVkaWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVxdWVzdGluZ09y
aWdpbik7CisgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh0b3BPcmlnaW4pOworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG1fcGFnZSwgKmZyYW1lLCBXVEZNb3ZlKHVzZXJNZWRp
YU9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxPcmlnaW4pLCByZXF1ZXN0LmdldCgpKTsKK30KKwor
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGFnZVByb3h5Jiwg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRl
eCA3M2UzYTJiZTRlN2ZjMDIyYmZkNWU1MDk2MTkwYWI5NmMwNWJmMzk3Li43MDQ2NjY1MjU1N2Y4
ZDIxNjk2OThkNmZkMTZjMTk0NTljZTJmYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmgKQEAgLTk3LDYgKzk3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+KTsKICAgICBib29sIGhhc1BlbmRp
bmdDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nQ2FwdHVyZTsgfQogCisgICAg
dm9pZCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihjb25zdCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpDYXB0dXJlRGV2
aWNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKIHByaXZhdGU6CiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBm
aW5hbDsKQEAgLTE2Miw2ICsxNjQsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgVmVjdG9yPERl
bmllZFJlcXVlc3Q+IG1fZGVuaWVkUmVxdWVzdHM7CiAKKyAgICBIYXNoTWFwPFJlZlB0cjxVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4+IG1fc3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Q2FsbGJhY2tzOworCiAgICAgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fY2FwdHVyZVN0YXRlIHsgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CiAgICAgUnVuTG9vcDo6VGltZXI8VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+IG1fd2F0Y2hkb2dUaW1lcjsKICAgICBT
ZWNvbmRzIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBmYmE4ZWQ4NWI0MGY4NTg1ZDdlZWM0Njk5ZWY5MDExZTZm
ZTE1MDg5Li4zNDgzMDljYjYxZDQyNDNhM2VmZmM1ODFhYzY0ZGQwOGY3YzA5MjAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMzc5LDEyICsxMDM3OSwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVz
dGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJp
bmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQog
ICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVl
PFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKIAotICAgIG1fc3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+cmVxdWVzdChsYW5nLCBjbGllbnRPcmln
aW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX3NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXItPnJlcXVlc3QobGFuZywgY2xpZW50T3JpZ2luLCBmcmFtZUlkZW50
aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25CeURlZmF1bHRBY3Rpb24oY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEwMzk3LDYgKzEwMzk3LDE5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQnlEZWZh
dWx0QWN0aW9uKGNvbnN0IFdlYkNvCiAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLT5kZWNpZGVCeURlZmF1bHRBY3Rpb24ob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlz
c2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5n
T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgYXV0byBjYXB0dXJlRGV2aWNlID0gU3BlZWNoUmVjb2duaXRp
b25DYXB0dXJlU291cmNlOjpmaW5kQ2FwdHVyZURldmljZSgpOworICAgIGlmICghY2FwdHVyZURl
dmljZSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3Bl
ZWNoUmVjb2duaXRpb24oZnJhbWVJZGVudGlmaWVyLCByZXF1ZXN0aW5nT3JpZ2luLCB0b3BPcmln
aW4sICpjYXB0dXJlRGV2aWNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisjZWxzZQor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKIAogV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IgV2ViUGFnZVByb3h5
OjpjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjN2UwYWIwNTk3ZWI2NzU5OTdhYzA5
NTVkZTU2ZDE0NjVkYzdmMmY0Li43OTkxYzkxN2MxNzNjY2FmNmRmYTcwNjU0NGNmMjRjNGFiNGZh
NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTIsNiArNTIs
NyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgorI2luY2x1ZGUgIlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdl
UHJveHkuaCIKICNpbmNsdWRlICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCIKICNpbmNs
dWRlICJTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIgpAQCAtMTgxNiw4ICsxODE3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyBjYXB0
dXJlUmVwb3J0aW5nRGVsYXkpIHsgbV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheSA9IGNhcHR1
cmVSZXBvcnRpbmdEZWxheTsgfQogICAgIHNpemVfdCBzdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50
ZXIoKSB7IHJldHVybiBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcjsgfQogCi0gICAgdm9p
ZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7CisgICAgdm9pZCBy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJik7CiAgICAgdm9pZCByZXF1
ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNv
bnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogCiAgICAgdm9pZCBzeW5jSWZNb2NrRGV2aWNlc0VuYWJsZWRDaGFuZ2Vk
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDI2NzdlY2Q3MTZmM2Y3M2ZkYjcyZDczYTFhOTkyOWZlOTFiNmNjNjEuLmViY2EwM2QzMTk0N2U4
YzVlNGQyNTNkZWZiNmQ0MTU0ZGM2NzdlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcyMiwxMyArMTcyMiwxMyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJJZGVudAogCiAgICAgQVNTRVJUKCFtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBhdXRvJiBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9
IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKLSAgICBhdXRvIHBlcm1pc3Npb25DaGVja2VyID0gW3dlYWtQYWdlID0g
bWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8mIGxhbmcsIGF1dG8mIG9yaWdpbiwgYXV0byYm
IGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICBhdXRvIHBlcm1pc3Npb25DaGVja2Vy
ID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8mIGxhbmcsIGF1dG8m
IG9yaWdpbiwgYXV0byBmcmFtZUlkZW50aWZpZXIsIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1BhZ2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25p
dGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBhZ2Ugbm8gbG9uZ2VyIGV4aXN0cyJfcyB9KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtQYWdlLT5yZXF1
ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGxhbmcsIG9yaWdpbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbihsYW5nLCBvcmlnaW4sIGZyYW1lSWRlbnRpZmllciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIH07CiAgICAgYXV0byBjaGVja0lmTW9ja0NhcHR1cmVEZXZp
Y2VzRW5hYmxlZCA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXSgpIHsKICAg
ICAgICAgcmV0dXJuIHdlYWtQYWdlICYmIHdlYWtQYWdlLT5wcmVmZXJlbmNlcygpLm1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5jcHAKaW5kZXggYzNjYzhiOTkzODkxMzM5MjI5YTQwOTU3NWYzYTM0NzQ5M2Rh
MGY0My4uNGI3NjNiY2RlZTYzYmRmZjRmYTFmMjlkZTc4NTY2MGQ0OGI0ZjFlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCIKIAogI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJG
cmFtZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCkBAIC02OCw5ICs2OSw5IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uOjp1bnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uCiAgICAg
bV9jbGllbnRNYXAucmVtb3ZlKGNsaWVudC5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFdlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3Qg
bWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4pCit2
b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywg
dWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRP
cmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGNsaWVudElkZW50
aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMs
IFdURk1vdmUoY2xpZW50T3JpZ2luKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpTdGFydChjbGllbnRJZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBp
bnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGZy
YW1lSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bjo6c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmgKaW5kZXggNTk2NmUzZmQ3NzMwNTJjMzkzMjcxNDQwZWQxMzdiMDEwODU3ZWUy
MC4uMzQzODIxNTU2YTc4YTdjNzliMzg1YTBkOTgyODEyZWJkMzc0YTExYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtNDcsNyArNDcsNyBAQCBj
bGFzcyBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25DbwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uPiBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhB
bHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDQ5ZjM0
N2VkZTE4Zjk2NDliNjc1ODUyYzk0YzQxYzVlNjNmNWRjZi4uMmY3NDAxZTFjZjVkY2ExODg3OWY0
ODdjMzgwNjNkMTI2NDg3MTVmMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTI5ICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVybWlzc2lvbiBw
cm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzczMzcy
NDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tOgorICAg
ICAgICAoLVtTcGVlY2hSZWNvZ25pdGlvblVJRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdE1lZGlh
Q2FwdHVyZUF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorCisyMDIxLTAxLTI5ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEg
cGVybWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzczMzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0
aW9uLm1tOgorICAgICAgICAoLVtTcGVlY2hSZWNvZ25pdGlvblVJRGVsZWdhdGUgX3dlYlZpZXc6
cmVxdWVzdE1lZGlhQ2FwdHVyZUF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorCiAy
MDIxLTAxLTI3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbYnVpbGQud2Via2l0Lm9yZ10gQWRkIGJhc2ljIGF1dGhlbnRpY2F0aW9uCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25p
dGlvbi5tbQppbmRleCAzOGFiMTc1ZDFmZDMxMDkzYzQ4MzI3MDZhMmI4MDg4MWM4N2VkYzhiLi43
NDM0NThmMzA5Nzg1Njc3NzJhMGE0ZWY1YTc4NjFiMzFiNjg0ZGU3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRp
b24ubW0KQEAgLTYwLDcgKzYwLDggQEAgc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IGNyZWF0
ZWRXZWJWaWV3OwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3RNZWRpYUNhcHR1cmVBdXRob3JpemF0aW9uOiAoX1dLQ2FwdHVyZURldmljZXMpZGV2aWNlcyBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRl
Y2lzaW9uSGFuZGxlcihZRVMpOworICAgIHBlcm1pc3Npb25SZXF1ZXN0ZWQgPSB0cnVlOworICAg
IGRlY2lzaW9uSGFuZGxlcihzaG91bGRHcmFudFBlcm1pc3Npb25SZXF1ZXN0KTsKIH0KIAogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25Gb3JVUkw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwg
ZnJhbWVJZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFu
ZGxlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDcyZjkzZGUwZmQyYjdlYjAwMDhmNmNlNjlhN2U0OWI2M2IzMGIwYjYuLmE3
MTM4Zjk1NjUxOTE5YWEzY2U0NzkxZDU0YzBhODE3ZjAyZTJjNWMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0wMS0yOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAg
ICAgIFVzZSB1c2VyIG1lZGlhIHBlcm1pc3Npb24gcHJvbXB0IGZvciBzcGVlY2ggcmVjb2duaXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTA4
MgorICAgICAgICByZGFyOi8vcHJvYmxlbS83MzM3MjQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJt
aXNzaW9uLWVycm9yLmh0bWw6CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFy
dC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFt
ZS5odG1sOgorCiAyMDIxLTAxLTI3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29sb3IoYTk4LXJnYiAuLi4pIGFzIHBhcnQgb2YgQ1NT
IENvbG9yIDQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24v
cGVybWlzc2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlv
bi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKaW5kZXggMDdlMGUyYzE2YmRjNDI0YzY5NjY2N2U0NzRj
ZmExODhjZTE0MDEwZS4uODI4MDgxMmYwMzRlNzRmYjkzMjMxODFhYmYxMjA5MDg0YTYwNmNlZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9u
LWVycm9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJt
aXNzaW9uLWVycm9yLmh0bWwKQEAgLTcsNyArNyw3IEBAIGRlc2NyaXB0aW9uKCJWZXJpZnkgdGhh
dCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVkLiIpOwogCiBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB0
ZXN0UnVubmVyLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChmYWxzZSk7
CisgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKIH0KIAogc2hv
dWxkTm90VGhyb3coInJlY29nbml0aW9uID0gbmV3IHdlYmtpdFNwZWVjaFJlY29nbml0aW9uKCki
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQt
cmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFt
ZS1leHBlY3RlZC50eHQKaW5kZXggMTlmMGRhNDNjODMyMzBhYzE0OWUwODEwMDk1NDllY2Q5YjQ5
MmI4Zi4uNTRkZDdkNzg3M2M1OGQ4ZDg5YjgzY2I1Y2QyODUxNGI0ZjZkNzBkMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1p
bi1yZW1vdmVkLWlmcmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQKQEAgLTQsNyArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBp
ZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpZnJhbWUpIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgotUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5zdGFydFJlY29nbml0aW9uKCkgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGlmcmFtZS5jb250ZW50V2luZG93LnN0YXJ0UmVjb2du
aXRpb24oKSB0aHJldyBleGNlcHRpb24gVW5rbm93bkVycm9yOiBSZWNvZ25pdGlvbiBpcyBub3Qg
aW4gYSB2YWxpZCBmcmFtZS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlv
bi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFt
ZS5odG1sCmluZGV4IGE5MDUxMWVjY2NjM2VhYmRhYWZmODI0OGM2OTFjNWZmNTU3ZjgzMWUuLmJh
NGZjZjhhYjg3ZGJhMGIwOTRmNmNjMWYwMGIwNGQyZTkwMTQ3ZGIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3Zl
ZC1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0
YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLmh0bWwKQEAgLTEyLDcgKzEyLDcgQEAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBpZnJhbWUg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF07Ci0gICAgc2hvdWxk
Tm90VGhyb3coImlmcmFtZS5jb250ZW50V2luZG93LnN0YXJ0UmVjb2duaXRpb24oKSIpOworICAg
IHNob3VsZFRocm93KCJpZnJhbWUuY29udGVudFdpbmRvdy5zdGFydFJlY29nbml0aW9uKCkiKTsK
IH0KIAogZnVuY3Rpb24gcmVtb3ZlRnJhbWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418785</attachid>
            <date>2021-01-29 16:23:36 -0800</date>
            <delta_ts>2021-01-29 18:20:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221082-20210129162335.patch</filename>
            <type>text/plain</type>
            <size>46061</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYjk5NWE4NGQ4NjJi
ZTYxYTQyMTc2NWRlMjM3YmUzODA5MWNjZi4uNzJjNTE4ODEyZGZjZTAwM2E1NzZlYTI4NzZjNDli
YjU0OGVhZTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTI5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVy
bWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzczMzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGZyYW1lIGlkZW50aWZpZXIgdG8gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IGFz
IGl0IGlzIG5lZWRlZCBmb3IgY2hlY2tpbmcgdXNlciBtZWRpYSBwZXJtaXNzaW9uLgorCisgICAg
ICAgIFVwZGF0ZWQgZXhpc3RpbmcgdGVzdHMgZm9yIGNoYW5nZWQgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmZyYW1lSWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29k
ZSk6CisgICAgICAgICogcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDoKKwog
MjAyMS0wMS0yOSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBSZW1vdmUgdW51c2VkIEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBlbnVt
IGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDFlZjIxMDRhODBiMDY2N2RiNzZlNGQyN2U2N2RhNTI1MGViYjhi
NjUuLmZjNTliZThmYmRhM2UxNjgzY2VmY2RjMzRlNjJlMzVmZWRjYTI2NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDggQEAKKzIwMjEtMDEtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNv
bT4KKworICAgICAgICBVc2UgdXNlciBtZWRpYSBwZXJtaXNzaW9uIHByb21wdCBmb3Igc3BlZWNo
IHJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjEwODIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNzMzNzI0OTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIgYXNrIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5IGZvciB1c2VyIHBlcm1pc3Npb24gb24gCisgICAgICAgIG1pY3JvcGhvbmUuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OmZyYW1lSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6ZGVueVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OmRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oOgorCiAy
MDIxLTAxLTI5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MjA2NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAppbmRleCAzOTQxMzdjZjY4
N2E5YzIyYzIwMGM4Y2MxMTRjZWU2Y2RlMmJjMWNkLi4xNTg0YzE3OTVlYWIyODYzMGZiMDk2MDU5
NWNhZDI2NWRkMzY4ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCkBAIC03MSw3ICs3MSwxMyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbigpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25pdGlvbiBkb2VzIG5vdCBoYXZlIGEg
dmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5z
dGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRz
LCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCku
ZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KTsKKyAgICBhdXRvKiBm
cmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlJlY29nbml0aW9uIGlzIG5vdCBpbiBhIHZhbGlk
IGZyYW1lIl9zIH07CisKKyAgICBhdXRvIG9wdGlvbmFsRnJhbWVJZGVudGlmaWVyID0gZG9jdW1l
bnQuZnJhbWVJRCgpOworICAgIGF1dG8gZnJhbWVJZGVudGlmaWVyID0gb3B0aW9uYWxGcmFtZUlk
ZW50aWZpZXIgPyAqb3B0aW9uYWxGcmFtZUlkZW50aWZpZXIgOiBGcmFtZUlkZW50aWZpZXIgeyB9
OworICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGlu
dW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiB7
IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5k
YXRhKCkgfSwgZnJhbWVJZGVudGlmaWVyKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5n
OwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDA2OTI2YzNj
MzAwMDZjMmJhODczYjg2ZTkxMzExNmY0N2UxNmM5NmMuLjcxYTJhODg2Zjk0ZWY2N2I2MjUzZDZl
NWI4ZGVhYzQxM2Y1MzczYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRp
bnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xp
ZW50T3JpZ2luJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywg
Q2xpZW50T3JpZ2luJiYsIEZyYW1lSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggOWFhZGU2MTcxZTA2
MmY1YThjYzNhMTYyODkyOTk0OTlkZmQ5ZDBhNi4uNjM4ODhhOTBhNDk0ZDNlNjcyZWZlYzFlMDNi
NWMwZmIyY2ZjOTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uaW50ZXJp
bVJlc3VsdHM7IH0KICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJldHVy
biBtX2luZm8ubWF4QWx0ZXJuYXRpdmVzOyB9CiAgICAgY29uc3QgQ2xpZW50T3JpZ2luIGNsaWVu
dE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRPcmlnaW47IH0KKyAgICBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmZyYW1l
SWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgogICAgIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8gbV9pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCmluZGV4IDFlZmU5ZTA2NDZlNzQ3Y2I1
NWQ3Y2NiMGY3YjE4ZmY1ZTBiM2M0YzIuLmU3ZDQwYmYwMzg2M2RjZjNjN2QwMzdlMTQyNGZkOGFl
YTNiYzYzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5jbHVkZSAiRnJhbWVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw2ICszOCw3IEBAIHN0
cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKICAgICBib29sIGludGVyaW1SZXN1
bHRzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAxIH07CiAgICAg
Q2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbjsKKyAgICBGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVu
dGlmaWVyOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDUsNyAr
NDcsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZp
ZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0
aXZlcyA8PCBjbGllbnRPcmlnaW47CisgICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8
IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXMg
PDwgY2xpZW50T3JpZ2luIDw8IGZyYW1lSWRlbnRpZmllcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KQEAgLTgxLDEzICs4MywxOSBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwogICAg
IGlmICghY2xpZW50T3JpZ2luKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+
PiBmcmFtZUlkZW50aWZpZXI7CisgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xp
ZW50SWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3Zl
KCpjb250aW51b3VzKSwKICAgICAgICAgV1RGTW92ZSgqaW50ZXJpbVJlc3VsdHMpLAogICAgICAg
ICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAotICAgICAgICBXVEZNb3ZlKCpjbGllbnRPcmln
aW4pCisgICAgICAgIFdURk1vdmUoKmNsaWVudE9yaWdpbiksCisgICAgICAgIFdURk1vdmUoKmZy
YW1lSWRlbnRpZmllcikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKaW5kZXggMzE0OTQ4ZWEyYzU2NTQw
Nzk1MTRlMDc2NzkxYTY1MzE0MmU2Nzk4Zi4uMDEwYmJjN2VkNzE3YjQxY2E1ZGQ1YzNmYWQwMmY1
Y2NhMmJmOTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudCYpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgc3Rh
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBmaW5hbCB7IH0KKyAg
ICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYs
IEZyYW1lSWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc3RvcChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9p
ZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5h
bCB7IH0KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJiYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAppbmRleCBhODA4YmY2
YzY0ZTg1ZjM0NWZlZThlNTliZWZmOTE2ZWI3OTAxYmFiLi4wNmIxZThkMzJkNGE2NWY1Njk3MjY2
NzVkYWM1NGFjYTE5OTExNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtNzUs
OSArNzUsOSBAQCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpCiAgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gbWFuYWdlciBoYXMgZXhpdGVkIl9z
IH0pOwogfQogICAgIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQordm9pZCBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3RDYWxsYmFjayYmIGNvbXBsZXRpb250SGFuZGxlcikKIHsKLSAgICBtX3JlcXVlc3RzLmFwcGVu
ZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2lu
LCBXVEZNb3ZlKGNvbXBsZXRpb250SGFuZGxlcikpKTsKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBm
cmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAgIGlmICht
X3JlcXVlc3RzLnNpemUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7CiB9CkBA
IC0xMjUsMTUgKzEyNSw2IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCiAjZW5kaWYKICAgICB9CiAKLSAgICAvLyBXZSBj
dXJyZW50bHkgZG9uJ3QgYWxsb3cgdGhpcmQtcGFydHkgYWNjZXNzLgotICAgIGlmIChtX3VzZXJQ
ZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKLSAgICAgICAgYXV0byBj
bGllbnRPcmlnaW4gPSBtX3JlcXVlc3RzLmZpcnN0KCktPm9yaWdpbigpOwotICAgICAgICBhdXRv
IHJlcXVlc3RpbmdPcmlnaW4gPSBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3Jp
Z2luKCk7Ci0gICAgICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpOwotICAgICAgICBpZiAoIXJlcXVlc3RpbmdPcmlnaW4tPmlzU2FtZU9y
aWdpbkFzKHRvcE9yaWdpbikpCi0gICAgICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBD
aGVja1Jlc3VsdDo6RGVuaWVkOwotICAgIH0KLQogICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hl
Y2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgewogICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlVzZXIgcGVybWlzc2lvbiBjaGVjayBoYXMg
ZmFpbGVkIl9zIH0pOwogICAgICAgICByZXR1cm47CkBAIC0yMjUsNiArMjE2LDcgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24o
KQogCiAgICAgYXV0byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CiAgICAg
YXV0byBjbGllbnRPcmlnaW4gPSBjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCk7CisgICAgYXV0byBy
ZXF1ZXN0aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOwogICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0
eU9yaWdpbigpOwogICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGdyYW50ZWQpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKQEAgLTIzOCw3ICsyMzAsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbigpCiAKICAgICAgICAgY29udGludWVQcm9jZXNz
aW5nUmVxdWVzdCgpOwogICAgIH07Ci0gICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5
Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9u
SGFuZGxlcikpOworICAgIG1fcGFnZS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVj
aFJlY29nbml0aW9uKGN1cnJlbnRSZXF1ZXN0LT5mcmFtZUlkZW50aWZpZXIoKSwgcmVxdWVzdGlu
Z09yaWdpbiwgdG9wT3JpZ2luLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmRlY2lkZUJ5RGVmYXVsdEFjdGlv
bihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
CmluZGV4IDI0MjU3NTk1YTI5ZjljNzA5MDBjZGU1NjkxODk0Yjk2Yjc1MzMzYzguLjY2ZjNkYmI0
MGM1YzE5ZmYxOTFkNDI3YzkzYmNmYTJiM2Y5YTYwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQg
eyBEZW5pZWQsIEdyYW50ZWQsIFVua25vd24gfTsKICAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYpOwogICAgIH5TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYg
bGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7CisgICAg
dm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJik7CiAKICAgICB2b2lkIGRlY2lkZUJ5RGVmYXVsdEFj
dGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IDY1NmI1NzU3YWQyNWIyNDkzOWUzNTYzY2Fk
MzNjNjJjZDczY2Q2OTcuLmNmY2I2YjcyOTIxZWY4ZmMzYjgwY2ZmODliZWRiMDMwNDc1MmJkZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTI3LDE2ICsyNywxOSBAQAogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNo
UmVjb2duaXRpb25FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT47CisKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QobGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0KGxhbmcsIG9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiBlcnJvcikKQEAgLTQ3LDE3ICs1MCwy
MCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29u
c3QgeyByZXR1cm4gbV9sYW5nOyB9CisgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJZGVudGlmaWVyOyB9CiAKIHByaXZh
dGU6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBTdHJpbmcm
IGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIDogbV9sYW5nKGxhbmcpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQorICAg
ICAgICAsIG1fZnJhbWVJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcikKICAgICAgICAgLCBtX2Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsgfQogCiAg
ICAgU3RyaW5nIG1fbGFuZzsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47Ci0g
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkVycm9yPiYmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBjb25zdCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgbV9mcmFtZUlkZW50aWZpZXI7CisgICAgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHAKaW5kZXggZjYzMWUzYzg2ODQwM2Y5MDZhNzhjYWVjNjk5MDA5ODQ2NDdiODll
ZS4uOWY5Njc0YWViNWVkZWUzODYzNzkzYTYwMmE2YzZhMGVmZTM5N2Y1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29n
bml0aW9uU2VydmVyLmgiCiAKLSNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25NZXNzYWdlcy5oIgpAQCAtNTIsMTEgKzUxLDExIEBAIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3RpCiB7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRp
ZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
bikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3Ry
aW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcikKIHsKICAgICBNRVNTQUdFX0NIRUNL
KGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5jb250YWlucyhjbGll
bnRJZGVudGlmaWVyKSk7Ci0gICAgYXV0byByZXF1ZXN0SW5mbyA9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGxhbmcpLCBj
b250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9yaWdp
bikgfTsKKyAgICBhdXRvIHJlcXVlc3RJbmZvID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUobGFuZyksIGNvbnRpbnVvdXMs
IGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUob3JpZ2luKSwgZnJhbWVJ
ZGVudGlmaWVyIH07CiAgICAgYXV0byYgbmV3UmVxdWVzdCA9IG1fcmVxdWVzdHMuYWRkKGNsaWVu
dElkZW50aWZpZXIsIG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
PihXVEZNb3ZlKHJlcXVlc3RJbmZvKSkpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIHJlcXVlc3RQ
ZXJtaXNzaW9uRm9yUmVxdWVzdCgqbmV3UmVxdWVzdCk7CkBAIC02NCw3ICs2Myw3IEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVl
c3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmxhbmcoKSwgcmVx
dWVzdC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKGF1dG8gZXJyb3IpIG11dGFibGUg
eworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY2xpZW50
T3JpZ2luKCksIHJlcXVlc3QuZnJhbWVJZGVudGlmaWVyKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShhdXRv
IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmgKaW5kZXggZWNiYTQwNzA5NDAzOGIzOTc2NTVlY2IwMThkYzIxN2RiYWExYWI4Zi4u
MmZjMjQ4YThlMTNiYzc2NjU1NDE2MDE3NDg1ZTk0MWRiZWRjZWExNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdC5oPgpAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVu
dGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7Ci11c2luZyBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmKT47Cit1c2luZyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYmKT47CiB1c2luZyBTcGVl
Y2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkID0gRnVuY3Rp
b248Ym9vbCgpPjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2hlY2tlciYmLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVj
b2duaXRpb25FbmFibGVkJiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcs
IGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJu
YXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBs
YW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFs
dGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5tZXNzYWdlcy5pbgppbmRleCBhMjhiOTIxY2I5NjRhZmFmMmZmMjJjOTE2YmJlNDZlODI5
OTEzMjlkLi4xZjZmMTRjNTVkY2M0OTllZjliNjFjZjhiMjQ0YmRlZGEwMjY4ZTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogICovCiAgCiAgbWVzc2FnZXMgLT4g
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgU3RhcnQoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVy
LCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50
NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2lu
KQorICAgIFN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRp
ZmllcikKICAgICBTdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBBYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgSW52YWxpZGF0
ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmMwZGI3
ODczNWNjMzEzM2EzMjAzNmU1NmI0NDZiNGM5ODNhM2MwOC4uMzc0NDc2NjEwZWYyODViNzZjNzc0
MTBhNGM5YzQ2YWMzOTIxYTNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cApAQCAtMjEzLDYgKzIxMywxMSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpkZW55UmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdQogICAgIGlmIChy
ZWFzb24gPT0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNz
RGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKQogICAgICAgICBtX2RlbmllZFJlcXVlc3Rz
LmFwcGVuZChEZW5pZWRSZXF1ZXN0IHsgcmVxdWVzdC5tYWluRnJhbWVJRCgpLCByZXF1ZXN0LnVz
ZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpLCByZXF1ZXN0
LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCksIHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgp
IH0pOwogCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSByZXF1ZXN0LmRlY2lzaW9uQ29tcGxldGlv
bkhhbmRsZXIoKSkgeworICAgICAgICAoKmNhbGxiYWNrKShmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChtX3ByZWdyYW50
ZWRSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcmVxdWVzdC51c2VyUmVxdWVzdCgpLmF1ZGlvQ29uc3Ry
YWludHMuaXNWYWxpZCkKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnJlbW92ZUV4dGVuc2l2ZU9ic2VydmVyKCp0aGlz
KTsKQEAgLTIzNCw2ICsyMzksMTIgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KFVzZXJNZWRpYVBlcm1pc3Npb25SZXEKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgcmVxdWVzdC51
c2VyTWVkaWFJRCgpLCAiLCB2aWRlbzogIiwgcmVxdWVzdC52aWRlb0RldmljZSgpLmxhYmVsKCks
ICIsIGF1ZGlvOiAiLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCkubGFiZWwoKSk7CiAKKyAgICBpZiAo
YXV0byBjYWxsYmFjayA9IHJlcXVlc3QuZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcigpKSB7Cisg
ICAgICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChtYWtlUmVmKHJlcXVlc3QpKTsKKyAgICAg
ICAgKCpjYWxsYmFjaykodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRv
JiB1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC51c2VyTWVkaWFEb2N1
bWVudFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byYgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5
T3JpZ2luID0gcmVxdWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKICAgICBt
X3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNl
SWRIYXNoU2FsdEZvck9yaWdpbih1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCB0b3BM
ZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCldKFN0cmluZyYmKSBtdXRhYmxlIHsK
QEAgLTYwMiw2ICs2MTMsMzEgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblIKICAgICBtX3BhZ2Uu
dWlDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChtX3Bh
Z2UsICp3ZWJGcmFtZSwgV1RGTW92ZSh1c2VyTWVkaWFPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVs
T3JpZ2luKSwgKm1fY3VycmVudFVzZXJNZWRpYVJlcXVlc3QpOwogfQogCit2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25G
b3JTcGVlY2hSZWNvZ25pdGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdp
biwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29y
ZTo6Q2FwdHVyZURldmljZSYgZGV2aWNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGZyYW1lID0gbV9wYWdlLnByb2Nlc3Mo
KS53ZWJGcmFtZShmcmFtZUlkZW50aWZpZXIpOworICAgIGlmICghZnJhbWUgfHwgIVNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG1fcGFnZS5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJM
KCkpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BPcmlnaW4pKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh3YXNS
ZXF1ZXN0RGVuaWVkKGZyYW1lSWRlbnRpZmllciwgcmVxdWVzdGluZ09yaWdpbiwgdG9wT3JpZ2lu
LCB0cnVlLCBmYWxzZSwgZmFsc2UpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzZWFyY2hGb3JHcmFudGVkUmVx
dWVzdChmcmFtZUlkZW50aWZpZXIsIHJlcXVlc3RpbmdPcmlnaW4sIHRvcE9yaWdpbiwgdHJ1ZSwg
ZmFsc2UpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6Y3JlYXRlKCp0aGlzLCAwLCBmcmFtZUlkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmll
ciwgcmVxdWVzdGluZ09yaWdpbi5pc29sYXRlZENvcHkoKSwgdG9wT3JpZ2luLmlzb2xhdGVkQ29w
eSgpLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4geyBkZXZpY2UgfSwgeyB9LCB7IH0s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9
IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0aW5nT3JpZ2luKTsKKyAgICBhdXRv
IHRvcExldmVsT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcE9yaWdpbik7
CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QobV9wYWdlLCAqZnJhbWUsIFdURk1vdmUodXNlck1lZGlhT3JpZ2luKSwgV1RGTW92
ZSh0b3BMZXZlbE9yaWdpbiksIHJlcXVlc3QuZ2V0KCkpOworfQorCisKICNpZiAhUExBVEZPUk0o
Q09DT0EpCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1
ZXN0U3lzdGVtVmFsaWRhdGlvbihjb25zdCBXZWJQYWdlUHJveHkmLCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFj
aykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IDczZTNhMmJlNGU3ZmMw
MjJiZmQ1ZTUwOTYxOTBhYjk2YzA1YmYzOTcuLmQxZjUxMjdkOGE0MjdlNWZhNmVmM2QzZTU5Njc1
NmQ4MmY3MTkwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtOTcsNiAr
OTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3Zl
cnJpZGUoT3B0aW9uYWw8Ym9vbD4pOwogICAgIGJvb2wgaGFzUGVuZGluZ0NhcHR1cmUoKSBjb25z
dCB7IHJldHVybiBtX2hhc1BlbmRpbmdDYXB0dXJlOyB9CiAKKyAgICB2b2lkIGNoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmNwcAppbmRleCA1MTVkODBmMjRiMTZmNWVkODAzMTAzZjgyYWE1NDkwMDllMmE1ZTZl
Li45YmMyNDY4OGZhNjY5M2M3ZTIzOTk2NmM3YzEwOTgzODg0OWNkZmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIEZyYW1lSWRlbnRpZmll
ciBtYWluRnJhbWVJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+
JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0KQor
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwg
dWludDY0X3QgdXNlck1lZGlhSUQsIEZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVk
aWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2
aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJD
b3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBPcHRpb25hbDxDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPj4gZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fbWFu
YWdlcigmbWFuYWdlcikKICAgICAsIG1fdXNlck1lZGlhSUQodXNlck1lZGlhSUQpCiAgICAgLCBt
X21haW5GcmFtZUlEKG1haW5GcmFtZUlEKQpAQCAtNDEsNiArNDEsNyBAQCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJN
ZWRpYVBlcm1pcwogICAgICwgbV9lbGlnaWJsZVZpZGVvRGV2aWNlcyhXVEZNb3ZlKHZpZGVvRGV2
aWNlcykpCiAgICAgLCBtX2VsaWdpYmxlQXVkaW9EZXZpY2VzKFdURk1vdmUoYXVkaW9EZXZpY2Vz
KSkKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9kZWNpc2lvbkNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaAppbmRleCAzZWY3NTJhOTI4ZDdlMzQzMWY1YTA2NTUzZDU2ZDcw
NGE3MjQwOWZlLi4yODFlNDYxMTYwZjBmM2Y5MDdlYThhMzgwOThjOGRkZWUxZTRmYTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eS5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OwogCiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdp
biwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4s
IFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVh
bVJlcXVlc3QmJiByZXF1ZXN0KQorICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IG1haW5GcmFtZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVmVjdG9yPFdlYkNv
cmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVy
ZURldmljZT4mJiB2aWRlb0RldmljZXMsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYmIHJl
cXVlc3QsIE9wdGlvbmFsPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+PiBkZWNpc2lvbkNv
bXBsZXRpb25IYW5kbGVyID0gV1RGOjpudWxsb3B0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShtYW5hZ2VyLCB1c2Vy
TWVkaWFJRCwgbWFpbkZyYW1lSUQsIGZyYW1lSUQsIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRP
cmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKGF1ZGlvRGV2
aWNlcyksIFdURk1vdmUodmlkZW9EZXZpY2VzKSwgV1RGTW92ZShyZXF1ZXN0KSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KG1h
bmFnZXIsIHVzZXJNZWRpYUlELCBtYWluRnJhbWVJRCwgZnJhbWVJRCwgV1RGTW92ZSh1c2VyTWVk
aWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVudE9yaWdpbiksIFdURk1v
dmUoYXVkaW9EZXZpY2VzKSwgV1RGTW92ZSh2aWRlb0RldmljZXMpLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKGRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBhbGxvdyhjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVv
RGV2aWNlVUlEKTsKQEAgLTg5LDggKzg5LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQg
ZG9EZWZhdWx0QWN0aW9uKCk7CiAKKyAgICBPcHRpb25hbDxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPj4gZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcigpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UobV9kZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyLCBXVEY6Om51bGxvcHQpOyB9CisKIHByaXZh
dGU6Ci0gICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgUmVm
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVmVjdG9y
PFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6
Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVz
dCYmKTsKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJl
ZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBWZWN0
b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3Jl
OjpDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1
ZXN0JiYsIE9wdGlvbmFsPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+Pik7CiAKICAgICBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwogICAgIHVp
bnQ2NF90IG1fdXNlck1lZGlhSUQ7CkBAIC0xMDMsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIGJvb2wgbV9oYXNQZXJz
aXN0ZW50QWNjZXNzIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9kZXZpY2VJZGVudGlmaWVySGFz
aFNhbHQ7CisgICAgT3B0aW9uYWw8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4+IG1fZGVj
aXNpb25Db21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NE
ZW5pYWxSZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZjEyYzg0NmU4OGRiZDA2MGJhNDVhNTM0ZDhiNmY2MmFmMjkxOTExMC4uM2U4NWU5MTBkMTI2
ZDQ1Yzg3MjlmYzFlZmM2OGViMDI4ZTM2OWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0xMDM5NywxMiArMTAzOTcsMTIgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0pOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihj
b25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJy
b3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcikKICAgICAgICAgbV9zcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyPigqdGhpcyk7CiAKLSAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXItPnJlcXVlc3QobGFuZywgY2xpZW50T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5y
ZXF1ZXN0KGxhbmcsIGNsaWVudE9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC0xMDQxNSw2ICsxMDQxNSwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJD
bwogICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+ZGVjaWRlQnlEZWZh
dWx0QWN0aW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25p
dGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
IGF1dG8gY2FwdHVyZURldmljZSA9IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZTo6Zmlu
ZENhcHR1cmVEZXZpY2UoKTsKKyAgICBpZiAoIWNhcHR1cmVEZXZpY2UpCisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcigpLmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGZyYW1l
SWRlbnRpZmllciwgcmVxdWVzdGluZ09yaWdpbiwgdG9wT3JpZ2luLCAqY2FwdHVyZURldmljZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIFdlYkNv
cmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUmVhbHRpbWVNZWRp
YVNvdXJjZUZvclNwZWVjaFJlY29nbml0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggMjQ2NDQ0MjcwNDNkMWU2YmFhN2JhOGE1N2Q2ODU2MWE1NWYwNDI5OC4u
MmIyMDYwZWE3ZGMyMzhmOTJiN2QwYzRkNGFlMjZhNmNkMTVmOWNlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAi
U2hhcmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXIuaCIKQEAgLTE4MTYsOCArMTgxNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1l
ZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMgY2FwdHVyZVJlcG9ydGluZ0RlbGF5KSB7
IG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkgPSBjYXB0dXJlUmVwb3J0aW5nRGVsYXk7IH0K
ICAgICBzaXplX3Qgc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyKCkgeyByZXR1cm4gbV9zdXNw
ZW5kTWVkaWFQbGF5YmFja0NvdW50ZXI7IH0KIAotICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25FcnJvcj4mJik+JiYpOworICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdENhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFVzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAg
IHZvaWQgc3luY0lmTW9ja0RldmljZXNFbmFibGVkQ2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyNjc3ZWNkNzE2ZjNmNzNmZGI3
MmQ3M2ExYTk5MjlmZTkxYjZjYzYxLi5lYmNhMDNkMzE5NDdlOGM1ZTRkMjUzZGVmYjZkNDE1NGRj
Njc3ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTE3MjIsMTMgKzE3MjIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVj
aFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogICAgIEFT
U0VSVCghbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5jb250YWlucyhpZGVudGlmaWVyKSk7
CiAgICAgYXV0byYgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29nbml0aW9u
U2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAg
YXV0byBwZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBh
Z2UpXShhdXRvJiBsYW5nLCBhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikg
bXV0YWJsZSB7CisgICAgYXV0byBwZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VX
ZWFrUHRyKHRhcmdldFBhZ2UpXShhdXRvJiBsYW5nLCBhdXRvJiBvcmlnaW4sIGF1dG8gZnJhbWVJ
ZGVudGlmaWVyLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBp
ZiAoIXdlYWtQYWdlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFs
bG93ZWQsICJQYWdlIG5vIGxvbmdlciBleGlzdHMiX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbihsYW5nLCBvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgd2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24obGFuZywg
b3JpZ2luLCBmcmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICB9OwogICAgIGF1dG8gY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBbd2Vha1Bh
Z2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CiAgICAgICAgIHJldHVybiB3ZWFrUGFn
ZSAmJiB3ZWFrUGFnZS0+cHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCmluZGV4
IGMzY2M4Yjk5Mzg5MTMzOTIyOWE0MDk1NzVmM2EzNDc0OTNkYTBmNDMuLjRiNzYzYmNkZWU2M2Jk
ZmY0ZmExZjI5ZGU3ODU2NjBkNDhiNGYxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25p
dGlvblNlcnZlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtNjgsOSAr
NjksOSBAQCB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6dW5yZWdpc3RlckNs
aWVudChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbgogICAgIG1fY2xpZW50TWFwLnJlbW92ZShj
bGllbnQuaWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb246OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRp
bnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luKQordm9pZCBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb246OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBi
b29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0
aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpTdGFydChjbGllbnRJZGVudGlmaWVyLCBsYW5nLCBjb250aW51
b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdp
bikpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQo
Y2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFs
dGVybmF0aXZlcywgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBmcmFtZUlkZW50aWZpZXIpKTsKIH0K
IAogdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0b3AoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDU5
NjZlM2ZkNzczMDUyYzM5MzI3MTQ0MGVkMTM3YjAxMDg1N2VlMjAuLjM0MzgyMTU1NmE3OGE3Yzc5
YjM4NWEwZDk4MjgxMmViZDM3NGExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q28KIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bj4gY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAg
dm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmlt
UmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JikgZmluYWw7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91
cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2
b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllcikgZmluYWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc4ZGJiNzBiMTlmZGY4YTA2YjMxMzI0ZGRh
ZDJjMGVkOTNiNWIxNDkuLjU5MDIyZWZjMTM2Nzg1ZTVkNTNkM2RhNDc3NTQzODVkZDUxZTQ0YWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wMS0yOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgor
CisgICAgICAgIFVzZSB1c2VyIG1lZGlhIHBlcm1pc3Npb24gcHJvbXB0IGZvciBzcGVlY2ggcmVj
b2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTA4MgorICAgICAgICByZGFyOi8vcHJvYmxlbS83MzM3MjQ5OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbToKKyAgICAgICAgKC1bU3BlZWNoUmVjb2du
aXRpb25VSURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3RNZWRpYUNhcHR1cmVBdXRob3JpemF0aW9u
OmRlY2lzaW9uSGFuZGxlcjpdKToKKwogMjAyMS0wMS0yOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxk
YmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEVuYWJs
ZSByZWZlcmVuY2UgdHlwZXMgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KaW5kZXggMzhh
YjE3NWQxZmQzMTA5M2M0ODMyNzA2YTJiODA4ODFjODdlZGM4Yi4uNzQzNDU4ZjMwOTc4NTY3Nzcy
YTBhNGVmNWE3ODYxYjMxYjY4NGRlNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tCkBAIC02MCw3ICs2
MCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiBjcmVhdGVkV2ViVmlldzsKIAogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlQXV0
aG9yaXphdGlvbjogKF9XS0NhcHR1cmVEZXZpY2VzKWRldmljZXMgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoWUVT
KTsKKyAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBkZWNpc2lvbkhhbmRsZXIo
c2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVzdCk7CiB9CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJMOihOU1VSTCAq
KXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJMIGZyYW1lSWRlbnRpZmllcjoo
TlNVSW50ZWdlcilmcmFtZUlkZW50aWZpZXIgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShOU1N0
cmluZyAqc2FsdCwgQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MzU4
OTdkYzY4MmQ2YTE4OTZkYWI4OTgwODUzZGMwMmQ0YzU2NGU1Li5lNDJiMjUwOTA1NmViMjRhMGJj
Yjc3NjkxNmFiZmY3M2ZhMmJlNzAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDEtMjkg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKworICAgICAgICBVc2UgdXNlciBtZWRp
YSBwZXJtaXNzaW9uIHByb21wdCBmb3Igc3BlZWNoIHJlY29nbml0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwODIKKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vNzMzNzI0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1s
OgorICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4t
cmVtb3ZlZC1pZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2du
aXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUuaHRtbDoKKwogMjAyMS0w
MS0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IGZvbnQtc3RyZXRjaCBpcyBub3QgYXBwbGllZCB0byBzeXN0ZW0tdWkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwK
aW5kZXggMDdlMGUyYzE2YmRjNDI0YzY5NjY2N2U0NzRjZmExODhjZTE0MDEwZS4uODI4MDgxMmYw
MzRlNzRmYjkzMjMxODFhYmYxMjA5MDg0YTYwNmNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKQEAgLTcs
NyArNyw3IEBAIGRlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3
aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVkLiIpOwogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
ICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB0ZXN0UnVubmVyLnNldElzU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChmYWxzZSk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2Vy
TWVkaWFQZXJtaXNzaW9uKGZhbHNlKTsKIH0KIAogc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9u
ID0gbmV3IHdlYmtpdFNwZWVjaFJlY29nbml0aW9uKCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1p
ZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9z
dGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3RlZC50eHQKaW5kZXggMTlm
MGRhNDNjODMyMzBhYzE0OWUwODEwMDk1NDllY2Q5YjQ5MmI4Zi4uNTRkZDdkNzg3M2M1OGQ4ZDg5
YjgzY2I1Y2QyODUxNGI0ZjZkNzBkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNv
Z25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3IEBAIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBpZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChpZnJhbWUpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBpZnJhbWUuY29udGVu
dFdpbmRvdy5zdGFydFJlY29nbml0aW9uKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IGlmcmFtZS5jb250ZW50V2luZG93LnN0YXJ0UmVjb2duaXRpb24oKSB0aHJldyBleGNlcHRpb24g
VW5rbm93bkVycm9yOiBSZWNvZ25pdGlvbiBpcyBub3QgaW4gYSB2YWxpZCBmcmFtZS4KIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1y
ZW1vdmVkLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9z
dGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS5odG1sCmluZGV4IGE5MDUxMWVjY2Nj
M2VhYmRhYWZmODI0OGM2OTFjNWZmNTU3ZjgzMWUuLmJhNGZjZjhhYjg3ZGJhMGIwOTRmNmNjMWYw
MGIwNGQyZTkwMTQ3ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2du
aXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92
ZWQtaWZyYW1lLmh0bWwKQEAgLTEyLDcgKzEyLDcgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnaWZyYW1lJylbMF07Ci0gICAgc2hvdWxkTm90VGhyb3coImlmcmFtZS5jb250ZW50
V2luZG93LnN0YXJ0UmVjb2duaXRpb24oKSIpOworICAgIHNob3VsZFRocm93KCJpZnJhbWUuY29u
dGVudFdpbmRvdy5zdGFydFJlY29nbml0aW9uKCkiKTsKIH0KIAogZnVuY3Rpb24gcmVtb3ZlRnJh
bWUoKQo=
</data>
<flag name="commit-queue"
          id="436861"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418794</attachid>
            <date>2021-01-29 17:40:07 -0800</date>
            <delta_ts>2021-01-29 19:14:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221082-20210129174006.patch</filename>
            <type>text/plain</type>
            <size>45993</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYjk5NWE4NGQ4NjJi
ZTYxYTQyMTc2NWRlMjM3YmUzODA5MWNjZi4uNzJjNTE4ODEyZGZjZTAwM2E1NzZlYTI4NzZjNDli
YjU0OGVhZTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTI5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVy
bWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzczMzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGZyYW1lIGlkZW50aWZpZXIgdG8gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IGFz
IGl0IGlzIG5lZWRlZCBmb3IgY2hlY2tpbmcgdXNlciBtZWRpYSBwZXJtaXNzaW9uLgorCisgICAg
ICAgIFVwZGF0ZWQgZXhpc3RpbmcgdGVzdHMgZm9yIGNoYW5nZWQgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmZyYW1lSWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29k
ZSk6CisgICAgICAgICogcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDoKKwog
MjAyMS0wMS0yOSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBSZW1vdmUgdW51c2VkIEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBlbnVt
IGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDFlZjIxMDRhODBiMDY2N2RiNzZlNGQyN2U2N2RhNTI1MGViYjhi
NjUuLmZjNTliZThmYmRhM2UxNjgzY2VmY2RjMzRlNjJlMzVmZWRjYTI2NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDggQEAKKzIwMjEtMDEtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNv
bT4KKworICAgICAgICBVc2UgdXNlciBtZWRpYSBwZXJtaXNzaW9uIHByb21wdCBmb3Igc3BlZWNo
IHJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjEwODIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNzMzNzI0OTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIgYXNrIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5IGZvciB1c2VyIHBlcm1pc3Npb24gb24gCisgICAgICAgIG1pY3JvcGhvbmUuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OmZyYW1lSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6ZGVueVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OmRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oOgorCiAy
MDIxLTAxLTI5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MjA2NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAppbmRleCAzOTQxMzdjZjY4
N2E5YzIyYzIwMGM4Y2MxMTRjZWU2Y2RlMmJjMWNkLi4xNTg0YzE3OTVlYWIyODYzMGZiMDk2MDU5
NWNhZDI2NWRkMzY4ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCkBAIC03MSw3ICs3MSwxMyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbigpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25pdGlvbiBkb2VzIG5vdCBoYXZlIGEg
dmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5z
dGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRz
LCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCku
ZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KTsKKyAgICBhdXRvKiBm
cmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlJlY29nbml0aW9uIGlzIG5vdCBpbiBhIHZhbGlk
IGZyYW1lIl9zIH07CisKKyAgICBhdXRvIG9wdGlvbmFsRnJhbWVJZGVudGlmaWVyID0gZG9jdW1l
bnQuZnJhbWVJRCgpOworICAgIGF1dG8gZnJhbWVJZGVudGlmaWVyID0gb3B0aW9uYWxGcmFtZUlk
ZW50aWZpZXIgPyAqb3B0aW9uYWxGcmFtZUlkZW50aWZpZXIgOiBGcmFtZUlkZW50aWZpZXIgeyB9
OworICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGlu
dW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiB7
IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5k
YXRhKCkgfSwgZnJhbWVJZGVudGlmaWVyKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5n
OwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDA2OTI2YzNj
MzAwMDZjMmJhODczYjg2ZTkxMzExNmY0N2UxNmM5NmMuLjcxYTJhODg2Zjk0ZWY2N2I2MjUzZDZl
NWI4ZGVhYzQxM2Y1MzczYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRp
bnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xp
ZW50T3JpZ2luJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywg
Q2xpZW50T3JpZ2luJiYsIEZyYW1lSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggOWFhZGU2MTcxZTA2
MmY1YThjYzNhMTYyODkyOTk0OTlkZmQ5ZDBhNi4uNjM4ODhhOTBhNDk0ZDNlNjcyZWZlYzFlMDNi
NWMwZmIyY2ZjOTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uaW50ZXJp
bVJlc3VsdHM7IH0KICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJldHVy
biBtX2luZm8ubWF4QWx0ZXJuYXRpdmVzOyB9CiAgICAgY29uc3QgQ2xpZW50T3JpZ2luIGNsaWVu
dE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRPcmlnaW47IH0KKyAgICBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmZyYW1l
SWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgogICAgIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8gbV9pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCmluZGV4IDFlZmU5ZTA2NDZlNzQ3Y2I1
NWQ3Y2NiMGY3YjE4ZmY1ZTBiM2M0YzIuLmU3ZDQwYmYwMzg2M2RjZjNjN2QwMzdlMTQyNGZkOGFl
YTNiYzYzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5jbHVkZSAiRnJhbWVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw2ICszOCw3IEBAIHN0
cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKICAgICBib29sIGludGVyaW1SZXN1
bHRzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAxIH07CiAgICAg
Q2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbjsKKyAgICBGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVu
dGlmaWVyOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDUsNyAr
NDcsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZp
ZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0
aXZlcyA8PCBjbGllbnRPcmlnaW47CisgICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8
IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXMg
PDwgY2xpZW50T3JpZ2luIDw8IGZyYW1lSWRlbnRpZmllcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KQEAgLTgxLDEzICs4MywxOSBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwogICAg
IGlmICghY2xpZW50T3JpZ2luKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+
PiBmcmFtZUlkZW50aWZpZXI7CisgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xp
ZW50SWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3Zl
KCpjb250aW51b3VzKSwKICAgICAgICAgV1RGTW92ZSgqaW50ZXJpbVJlc3VsdHMpLAogICAgICAg
ICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAotICAgICAgICBXVEZNb3ZlKCpjbGllbnRPcmln
aW4pCisgICAgICAgIFdURk1vdmUoKmNsaWVudE9yaWdpbiksCisgICAgICAgIFdURk1vdmUoKmZy
YW1lSWRlbnRpZmllcikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKaW5kZXggMzE0OTQ4ZWEyYzU2NTQw
Nzk1MTRlMDc2NzkxYTY1MzE0MmU2Nzk4Zi4uMDEwYmJjN2VkNzE3YjQxY2E1ZGQ1YzNmYWQwMmY1
Y2NhMmJmOTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudCYpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgc3Rh
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBmaW5hbCB7IH0KKyAg
ICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYs
IEZyYW1lSWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc3RvcChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9p
ZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5h
bCB7IH0KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJiYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAppbmRleCBhODA4YmY2
YzY0ZTg1ZjM0NWZlZThlNTliZWZmOTE2ZWI3OTAxYmFiLi4wNmIxZThkMzJkNGE2NWY1Njk3MjY2
NzVkYWM1NGFjYTE5OTExNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtNzUs
OSArNzUsOSBAQCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpCiAgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gbWFuYWdlciBoYXMgZXhpdGVkIl9z
IH0pOwogfQogICAgIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQordm9pZCBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3RDYWxsYmFjayYmIGNvbXBsZXRpb250SGFuZGxlcikKIHsKLSAgICBtX3JlcXVlc3RzLmFwcGVu
ZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2lu
LCBXVEZNb3ZlKGNvbXBsZXRpb250SGFuZGxlcikpKTsKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBm
cmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAgIGlmICht
X3JlcXVlc3RzLnNpemUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7CiB9CkBA
IC0xMjUsMTUgKzEyNSw2IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCiAjZW5kaWYKICAgICB9CiAKLSAgICAvLyBXZSBj
dXJyZW50bHkgZG9uJ3QgYWxsb3cgdGhpcmQtcGFydHkgYWNjZXNzLgotICAgIGlmIChtX3VzZXJQ
ZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKLSAgICAgICAgYXV0byBj
bGllbnRPcmlnaW4gPSBtX3JlcXVlc3RzLmZpcnN0KCktPm9yaWdpbigpOwotICAgICAgICBhdXRv
IHJlcXVlc3RpbmdPcmlnaW4gPSBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3Jp
Z2luKCk7Ci0gICAgICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpOwotICAgICAgICBpZiAoIXJlcXVlc3RpbmdPcmlnaW4tPmlzU2FtZU9y
aWdpbkFzKHRvcE9yaWdpbikpCi0gICAgICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBD
aGVja1Jlc3VsdDo6RGVuaWVkOwotICAgIH0KLQogICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hl
Y2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgewogICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlVzZXIgcGVybWlzc2lvbiBjaGVjayBoYXMg
ZmFpbGVkIl9zIH0pOwogICAgICAgICByZXR1cm47CkBAIC0yMjUsNiArMjE2LDcgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24o
KQogCiAgICAgYXV0byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CiAgICAg
YXV0byBjbGllbnRPcmlnaW4gPSBjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCk7CisgICAgYXV0byBy
ZXF1ZXN0aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOwogICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0
eU9yaWdpbigpOwogICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGdyYW50ZWQpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKQEAgLTIzOCw3ICsyMzAsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbigpCiAKICAgICAgICAgY29udGludWVQcm9jZXNz
aW5nUmVxdWVzdCgpOwogICAgIH07Ci0gICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5
Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9u
SGFuZGxlcikpOworICAgIG1fcGFnZS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVj
aFJlY29nbml0aW9uKGN1cnJlbnRSZXF1ZXN0LT5mcmFtZUlkZW50aWZpZXIoKSwgcmVxdWVzdGlu
Z09yaWdpbiwgdG9wT3JpZ2luLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmRlY2lkZUJ5RGVmYXVsdEFjdGlv
bihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
CmluZGV4IDI0MjU3NTk1YTI5ZjljNzA5MDBjZGU1NjkxODk0Yjk2Yjc1MzMzYzguLjY2ZjNkYmI0
MGM1YzE5ZmYxOTFkNDI3YzkzYmNmYTJiM2Y5YTYwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQg
eyBEZW5pZWQsIEdyYW50ZWQsIFVua25vd24gfTsKICAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYpOwogICAgIH5TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYg
bGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7CisgICAg
dm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJik7CiAKICAgICB2b2lkIGRlY2lkZUJ5RGVmYXVsdEFj
dGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IDY1NmI1NzU3YWQyNWIyNDkzOWUzNTYzY2Fk
MzNjNjJjZDczY2Q2OTcuLmNmY2I2YjcyOTIxZWY4ZmMzYjgwY2ZmODliZWRiMDMwNDc1MmJkZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTI3LDE2ICsyNywxOSBAQAogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNo
UmVjb2duaXRpb25FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT47CisKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QobGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0KGxhbmcsIG9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiBlcnJvcikKQEAgLTQ3LDE3ICs1MCwy
MCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29u
c3QgeyByZXR1cm4gbV9sYW5nOyB9CisgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJZGVudGlmaWVyOyB9CiAKIHByaXZh
dGU6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBTdHJpbmcm
IGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIDogbV9sYW5nKGxhbmcpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQorICAg
ICAgICAsIG1fZnJhbWVJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcikKICAgICAgICAgLCBtX2Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsgfQogCiAg
ICAgU3RyaW5nIG1fbGFuZzsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47Ci0g
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkVycm9yPiYmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBjb25zdCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgbV9mcmFtZUlkZW50aWZpZXI7CisgICAgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHAKaW5kZXggZjYzMWUzYzg2ODQwM2Y5MDZhNzhjYWVjNjk5MDA5ODQ2NDdiODll
ZS4uOWY5Njc0YWViNWVkZWUzODYzNzkzYTYwMmE2YzZhMGVmZTM5N2Y1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29n
bml0aW9uU2VydmVyLmgiCiAKLSNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25NZXNzYWdlcy5oIgpAQCAtNTIsMTEgKzUxLDExIEBAIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3RpCiB7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRp
ZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
bikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3Ry
aW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcikKIHsKICAgICBNRVNTQUdFX0NIRUNL
KGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5jb250YWlucyhjbGll
bnRJZGVudGlmaWVyKSk7Ci0gICAgYXV0byByZXF1ZXN0SW5mbyA9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGxhbmcpLCBj
b250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9yaWdp
bikgfTsKKyAgICBhdXRvIHJlcXVlc3RJbmZvID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUobGFuZyksIGNvbnRpbnVvdXMs
IGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUob3JpZ2luKSwgZnJhbWVJ
ZGVudGlmaWVyIH07CiAgICAgYXV0byYgbmV3UmVxdWVzdCA9IG1fcmVxdWVzdHMuYWRkKGNsaWVu
dElkZW50aWZpZXIsIG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
PihXVEZNb3ZlKHJlcXVlc3RJbmZvKSkpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIHJlcXVlc3RQ
ZXJtaXNzaW9uRm9yUmVxdWVzdCgqbmV3UmVxdWVzdCk7CkBAIC02NCw3ICs2Myw3IEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVl
c3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmxhbmcoKSwgcmVx
dWVzdC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKGF1dG8gZXJyb3IpIG11dGFibGUg
eworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY2xpZW50
T3JpZ2luKCksIHJlcXVlc3QuZnJhbWVJZGVudGlmaWVyKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShhdXRv
IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmgKaW5kZXggZWNiYTQwNzA5NDAzOGIzOTc2NTVlY2IwMThkYzIxN2RiYWExYWI4Zi4u
MmZjMjQ4YThlMTNiYzc2NjU1NDE2MDE3NDg1ZTk0MWRiZWRjZWExNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdC5oPgpAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVu
dGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7Ci11c2luZyBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmKT47Cit1c2luZyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYmKT47CiB1c2luZyBTcGVl
Y2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkID0gRnVuY3Rp
b248Ym9vbCgpPjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2hlY2tlciYmLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVj
b2duaXRpb25FbmFibGVkJiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcs
IGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJu
YXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBs
YW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFs
dGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5tZXNzYWdlcy5pbgppbmRleCBhMjhiOTIxY2I5NjRhZmFmMmZmMjJjOTE2YmJlNDZlODI5
OTEzMjlkLi4xZjZmMTRjNTVkY2M0OTllZjliNjFjZjhiMjQ0YmRlZGEwMjY4ZTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogICovCiAgCiAgbWVzc2FnZXMgLT4g
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgU3RhcnQoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVy
LCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50
NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2lu
KQorICAgIFN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRp
ZmllcikKICAgICBTdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBBYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgSW52YWxpZGF0
ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmMwZGI3
ODczNWNjMzEzM2EzMjAzNmU1NmI0NDZiNGM5ODNhM2MwOC4uMGY4MTcxZTdhZjgwYTRkZDJlMjE0
NTEwZmQzZDFhODVmMzkxMDhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cApAQCAtMjEzLDYgKzIxMywxMSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpkZW55UmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdQogICAgIGlmIChy
ZWFzb24gPT0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNz
RGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKQogICAgICAgICBtX2RlbmllZFJlcXVlc3Rz
LmFwcGVuZChEZW5pZWRSZXF1ZXN0IHsgcmVxdWVzdC5tYWluRnJhbWVJRCgpLCByZXF1ZXN0LnVz
ZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpLCByZXF1ZXN0
LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCksIHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgp
IH0pOwogCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSByZXF1ZXN0LmRlY2lzaW9uQ29tcGxldGlv
bkhhbmRsZXIoKSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChtX3ByZWdyYW50ZWRS
ZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcmVxdWVzdC51c2VyUmVxdWVzdCgpLmF1ZGlvQ29uc3RyYWlu
dHMuaXNWYWxpZCkKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnJlbW92ZUV4dGVuc2l2ZU9ic2VydmVyKCp0aGlzKTsK
QEAgLTIzNCw2ICsyMzksMTIgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KFVzZXJNZWRpYVBlcm1pc3Npb25SZXEKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgcmVxdWVzdC51c2Vy
TWVkaWFJRCgpLCAiLCB2aWRlbzogIiwgcmVxdWVzdC52aWRlb0RldmljZSgpLmxhYmVsKCksICIs
IGF1ZGlvOiAiLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCkubGFiZWwoKSk7CiAKKyAgICBpZiAoYXV0
byBjYWxsYmFjayA9IHJlcXVlc3QuZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcigpKSB7CisgICAg
ICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChtYWtlUmVmKHJlcXVlc3QpKTsKKyAgICAgICAg
Y2FsbGJhY2sodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRvJiB1c2Vy
TWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byYgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
ID0gcmVxdWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKICAgICBtX3BhZ2Uu
d2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNo
U2FsdEZvck9yaWdpbih1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCB0b3BMZXZlbERv
Y3VtZW50U2VjdXJpdHlPcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCldKFN0cmluZyYmKSBtdXRhYmxlIHsKQEAgLTYw
Miw2ICs2MTMsMzEgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblIKICAgICBtX3BhZ2UudWlDbGll
bnQoKS5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsICp3
ZWJGcmFtZSwgV1RGTW92ZSh1c2VyTWVkaWFPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsT3JpZ2lu
KSwgKm1fY3VycmVudFVzZXJNZWRpYVJlcXVlc3QpOwogfQogCit2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVl
Y2hSZWNvZ25pdGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6Q2Fw
dHVyZURldmljZSYgZGV2aWNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGZyYW1lID0gbV9wYWdlLnByb2Nlc3MoKS53ZWJG
cmFtZShmcmFtZUlkZW50aWZpZXIpOworICAgIGlmICghZnJhbWUgfHwgIVNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKG1fcGFnZS5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpLT5p
c1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BPcmlnaW4pKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh3YXNSZXF1ZXN0
RGVuaWVkKGZyYW1lSWRlbnRpZmllciwgcmVxdWVzdGluZ09yaWdpbiwgdG9wT3JpZ2luLCB0cnVl
LCBmYWxzZSwgZmFsc2UpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzZWFyY2hGb3JHcmFudGVkUmVxdWVzdChm
cmFtZUlkZW50aWZpZXIsIHJlcXVlc3RpbmdPcmlnaW4sIHRvcE9yaWdpbiwgdHJ1ZSwgZmFsc2Up
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6Y3JlYXRlKCp0aGlzLCAwLCBmcmFtZUlkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgcmVx
dWVzdGluZ09yaWdpbi5pc29sYXRlZENvcHkoKSwgdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBW
ZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4geyBkZXZpY2UgfSwgeyB9LCB7IH0sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0aW5nT3JpZ2luKTsKKyAgICBhdXRvIHRvcExl
dmVsT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcE9yaWdpbik7CisgICAg
bV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QobV9wYWdlLCAqZnJhbWUsIFdURk1vdmUodXNlck1lZGlhT3JpZ2luKSwgV1RGTW92ZSh0b3BM
ZXZlbE9yaWdpbiksIHJlcXVlc3QuZ2V0KCkpOworfQorCisKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lz
dGVtVmFsaWRhdGlvbihjb25zdCBXZWJQYWdlUHJveHkmLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IDczZTNhMmJlNGU3ZmMwMjJiZmQ1
ZTUwOTYxOTBhYjk2YzA1YmYzOTcuLmQxZjUxMjdkOGE0MjdlNWZhNmVmM2QzZTU5Njc1NmQ4MmY3
MTkwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtOTcsNiArOTcsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUo
T3B0aW9uYWw8Ym9vbD4pOwogICAgIGJvb2wgaGFzUGVuZGluZ0NhcHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1BlbmRpbmdDYXB0dXJlOyB9CiAKKyAgICB2b2lkIGNoZWNrVXNlck1lZGlhUGVy
bWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmNwcAppbmRleCA1MTVkODBmMjRiMTZmNWVkODAzMTAzZjgyYWE1NDkwMDllMmE1ZTZlLi40Mzhh
Nzc0ZTY5Yjc1MzYyNmYzYzhiYWQ1MmE2NzY2N2JhMjEzNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIEZyYW1lSWRlbnRpZmllciBtYWlu
RnJhbWVJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2
aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlk
ZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0KQorVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0
X3QgdXNlck1lZGlhSUQsIEZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1l
bnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywg
VmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX21hbmFnZXIoJm1hbmFnZXIp
CiAgICAgLCBtX3VzZXJNZWRpYUlEKHVzZXJNZWRpYUlEKQogICAgICwgbV9tYWluRnJhbWVJRCht
YWluRnJhbWVJRCkKQEAgLTQxLDYgKzQxLDcgQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXMKICAg
ICAsIG1fZWxpZ2libGVWaWRlb0RldmljZXMoV1RGTW92ZSh2aWRlb0RldmljZXMpKQogICAgICwg
bV9lbGlnaWJsZUF1ZGlvRGV2aWNlcyhXVEZNb3ZlKGF1ZGlvRGV2aWNlcykpCiAgICAgLCBtX3Jl
cXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKKyAgICAsIG1fZGVjaXNpb25Db21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmgKaW5kZXggM2VmNzUyYTkyOGQ3ZTM0MzFmNWEwNjU1M2Q1NmQ3MDRhNzI0MDlmZS4uYThm
MGJhOGNjNTc3MDU3NWYxOGViNDNmMWRkNDk1MDY4OWRhMTM3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
aApAQCAtMzYsOSArMzYsOSBAQCBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTsKIAogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiBjcmVhdGUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkm
IG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
bWFpbkZyYW1lSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBWZWN0b3I8V2ViQ29y
ZTo6Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVx
dWVzdCkKKyAgICBzdGF0aWMgUmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNy
ZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWlu
dDY0X3QgdXNlck1lZGlhSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2
aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlk
ZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSB7IH0p
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlELCBtYWluRnJhbWVJRCwgZnJhbWVJRCwg
V1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxEb2N1bWVu
dE9yaWdpbiksIFdURk1vdmUoYXVkaW9EZXZpY2VzKSwgV1RGTW92ZSh2aWRlb0RldmljZXMpLCBX
VEZNb3ZlKHJlcXVlc3QpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQsIG1haW5GcmFtZUlE
LCBmcmFtZUlELCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BM
ZXZlbERvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShhdWRpb0RldmljZXMpLCBXVEZNb3ZlKHZpZGVv
RGV2aWNlcyksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZGVjaXNpb25Db21wbGV0aW9uSGFu
ZGxlcikpKTsKICAgICB9CiAKICAgICB2b2lkIGFsbG93KGNvbnN0IFN0cmluZyYgYXVkaW9EZXZp
Y2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOwpAQCAtODksOCArODksMTAgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgdm9pZCBkb0RlZmF1bHRBY3Rpb24oKTsKIAorICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IGRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIoKSB7IHJl
dHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciwgeyB9KTsgfQor
CiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdp
biwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4s
IFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVh
bVJlcXVlc3QmJik7CisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdp
biwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8
V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiBtX21hbmFnZXI7CiAgICAgdWlu
dDY0X3QgbV91c2VyTWVkaWFJRDsKQEAgLTEwMyw2ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgYm9vbCBtX2hhc1BlcnNp
c3RlbnRBY2Nlc3MgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2RldmljZUlkZW50aWZpZXJIYXNo
U2FsdDsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2RlY2lzaW9uQ29tcGxl
dGlvbkhhbmRsZXI7CiB9OwogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGYxMmM4NDZl
ODhkYmQwNjBiYTQ1YTUzNGQ4YjZmNjJhZjI5MTkxMTAuLjNlODVlOTEwZDEyNmQ0NWM4NzI5ZmMx
ZWZjNjhlYjAyOGUzNjllN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMTAzOTcsMTIgKzEwMzk3LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRj
aEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5n
JiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBjbGllbnRPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25F
cnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIpCiAgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcj4oKnRoaXMpOwogCi0gICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LT5yZXF1ZXN0KGxhbmcsIGNsaWVudE9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+cmVxdWVzdChsYW5n
LCBjbGllbnRPcmlnaW4sIGZyYW1lSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgb3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTA0MTUsNiArMTA0MTUsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25CeURlZmF1bHRBY3Rpb24oY29uc3QgV2ViQ28KICAgICBtX3Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPmRlY2lkZUJ5RGVmYXVsdEFjdGlvbihv
cmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24oY29uc3Qg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHJlcXVlc3RpbmdPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBhdXRvIGNhcHR1
cmVEZXZpY2UgPSBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U6OmZpbmRDYXB0dXJlRGV2
aWNlKCk7CisgICAgaWYgKCFjYXB0dXJlRGV2aWNlKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisKKyAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5jaGVj
a1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihmcmFtZUlkZW50aWZpZXIs
IHJlcXVlc3RpbmdPcmlnaW4sIHRvcE9yaWdpbiwgKmNhcHR1cmVEZXZpY2UsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
I2VuZGlmCit9CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiBXZWJDb3JlOjpDYXB0dXJl
U291cmNlT3JFcnJvciBXZWJQYWdlUHJveHk6OmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JT
cGVlY2hSZWNvZ25pdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDI0NjQ0NDI3MDQzZDFlNmJhYTdiYThhNTdkNjg1NjFhNTVmMDQyOTguLjJiMjA2MGVhN2Rj
MjM4ZjkyYjdkMGM0ZDRhZTI2YTZjZDE1ZjljZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJl
c291cmNlLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZS5oIgogI2luY2x1ZGUgIlN5c3RlbVByZXZpZXdDb250cm9sbGVyLmgi
CkBAIC0xODE2LDggKzE4MTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYUNhcHR1cmVS
ZXBvcnRpbmdEZWxheShTZWNvbmRzIGNhcHR1cmVSZXBvcnRpbmdEZWxheSkgeyBtX21lZGlhQ2Fw
dHVyZVJlcG9ydGluZ0RlbGF5ID0gY2FwdHVyZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAgc2l6ZV90
IHN1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcigpIHsgcmV0dXJuIG1fc3VzcGVuZE1lZGlhUGxh
eWJhY2tDb3VudGVyOyB9CiAKLSAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb24oY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
RXJyb3I+JiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b24oY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RD
YWxsYmFjayYmKTsKICAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25C
eURlZmF1bHRBY3Rpb24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yU3BlZWNoUmVjb2duaXRpb24oY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIHN5bmNJ
Zk1vY2tEZXZpY2VzRW5hYmxlZENoYW5nZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMjY3N2VjZDcxNmYzZjczZmRiNzJkNzNhMWE5OTI5
ZmU5MWI2Y2M2MS4uZWJjYTAzZDMxOTQ3ZThjNWU0ZDI1M2RlZmI2ZDQxNTRkYzY3N2UyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzIyLDEz
ICsxNzIyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAKICAgICBBU1NFUlQoIW1fc3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIGF1dG8m
IHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5h
ZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGF1dG8gcGVybWlz
c2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oYXV0byYg
bGFuZywgYXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewor
ICAgIGF1dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJn
ZXRQYWdlKV0oYXV0byYgbGFuZywgYXV0byYgb3JpZ2luLCBhdXRvIGZyYW1lSWRlbnRpZmllciwg
YXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrUGFn
ZSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpOb3RBbGxvd2VkLCAiUGFn
ZSBubyBsb25nZXIgZXhpc3RzIl9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgd2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24o
bGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHdlYWtQ
YWdlLT5yZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGxhbmcsIG9yaWdpbiwgZnJh
bWVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfTsKICAgICBh
dXRvIGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gW3dlYWtQYWdlID0gbWFrZVdl
YWtQdHIodGFyZ2V0UGFnZSldKCkgewogICAgICAgICByZXR1cm4gd2Vha1BhZ2UgJiYgd2Vha1Bh
Z2UtPnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAppbmRleCBjM2NjOGI5OTM4
OTEzMzkyMjlhNDA5NTc1ZjNhMzQ3NDkzZGEwZjQzLi40Yjc2M2JjZGVlNjNiZGZmNGZhMWYyOWRl
Nzg1NjYwZDQ4YjRmMWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5oIgogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTY4LDkgKzY5LDkgQEAgdm9p
ZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnVucmVnaXN0ZXJDbGllbnQoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb24KICAgICBtX2NsaWVudE1hcC5yZW1vdmUoY2xpZW50LmlkZW50
aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFy
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNs
aWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29s
IGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmIGNsaWVudE9yaWdpbikKK3ZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51
b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6U3RhcnQoY2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJp
bVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcywgV1RGTW92ZShjbGllbnRPcmlnaW4pKSk7CisgICAg
c2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGNsaWVudElkZW50
aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMs
IFdURk1vdmUoY2xpZW50T3JpZ2luKSwgZnJhbWVJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCA1OTY2ZTNmZDc3MzA1
MmMzOTMyNzE0NDBlZDEzN2IwMTA4NTdlZTIwLi4zNDM4MjE1NTZhNzhhN2M3OWIzODVhMGQ5ODI4
MTJlYmQzNzRhMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvCiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24+IGNyZWF0ZShT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIHZvaWQgc3RhcnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVp
bnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpIGZpbmFsOwor
ICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50
ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzdG9wKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFs
OwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA3OGRiYjcwYjE5ZmRmOGEwNmIzMTMyNGRkYWQyYzBlZDkzYjVi
MTQ5Li41OTAyMmVmYzEzNjc4NWU1ZDUzZDNkYTQ3NzU0Mzg1ZGQ1MWU0NGFkIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDEtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKworICAgICAgICBV
c2UgdXNlciBtZWRpYSBwZXJtaXNzaW9uIHByb21wdCBmb3Igc3BlZWNoIHJlY29nbml0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwODIKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vNzMzNzI0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U3BlZWNoUmVjb2duaXRpb24ubW06CisgICAgICAgICgtW1NwZWVjaFJlY29nbml0aW9uVUlEZWxl
Z2F0ZSBfd2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlQXV0aG9yaXphdGlvbjpkZWNpc2lvbkhh
bmRsZXI6XSk6CisKIDIwMjEtMDEtMjkgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBFbmFibGUgcmVmZXJlbmNl
IHR5cGVzIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tCmluZGV4IDM4YWIxNzVkMWZkMzEw
OTNjNDgzMjcwNmEyYjgwODgxYzg3ZWRjOGIuLjc0MzQ1OGYzMDk3ODU2Nzc3MmEwYTRlZjVhNzg2
MWIzMWI2ODRkZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQpAQCAtNjAsNyArNjAsOCBAQCBzdGF0
aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gY3JlYXRlZFdlYlZpZXc7CiAKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZUF1dGhvcml6YXRpb246
IChfV0tDYXB0dXJlRGV2aWNlcylkZXZpY2VzIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKFlFUyk7CisgICAgcGVy
bWlzc2lvblJlcXVlc3RlZCA9IHRydWU7CisgICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZEdyYW50
UGVybWlzc2lvblJlcXVlc3QpOwogfQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZy
YW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIp
ZnJhbWVJZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQs
IEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTM1ODk3ZGM2ODJkNmEx
ODk2ZGFiODk4MDg1M2RjMDJkNGM1NjRlNS4uZTQyYjI1MDkwNTZlYjI0YTBiY2I3NzY5MTZhYmZm
NzNmYTJiZTcwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAxLTI5ICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVybWlzc2lv
biBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzcz
MzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbDoKKyAgICAgICAg
KiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZy
YW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0
LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLmh0bWw6CisKIDIwMjEtMDEtMjkgIE15bGVz
IEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBmb250LXN0cmV0
Y2ggaXMgbm90IGFwcGxpZWQgdG8gc3lzdGVtLXVpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCmluZGV4IDA3ZTBl
MmMxNmJkYzQyNGM2OTY2NjdlNDc0Y2ZhMTg4Y2UxNDAxMGUuLjgyODA4MTJmMDM0ZTc0ZmI5MzIz
MTgxYWJmMTIwOTA4NGE2MDZjZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
cmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCkBAIC03LDcgKzcsNyBAQCBk
ZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hlbiBwZXJtaXNz
aW9uIGlzIGRlbmllZC4iKTsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAganNUZXN0
SXNBc3luYyA9IHRydWU7Ci0gICAgdGVzdFJ1bm5lci5zZXRJc1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkdyYW50ZWQoZmFsc2UpOworICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlz
c2lvbihmYWxzZSk7CiB9CiAKIHNob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbiA9IG5ldyB3ZWJr
aXRTcGVlY2hSZWNvZ25pdGlvbigpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nw
ZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2du
aXRpb24taW4tcmVtb3ZlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CmluZGV4IDE5ZjBkYTQzYzgzMjMw
YWMxNDllMDgxMDA5NTQ5ZWNkOWI0OTJiOGYuLjU0ZGQ3ZDc4NzNjNThkOGQ4OWI4M2NiNWNkMjg1
MTRiNGY2ZDcwZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRp
b24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4t
cmVtb3ZlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURQogCiAKIFBBU1MgaWZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaWZyYW1l
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgaWZyYW1lLmNvbnRlbnRXaW5kb3cuc3Rh
cnRSZWNvZ25pdGlvbigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpZnJhbWUuY29u
dGVudFdpbmRvdy5zdGFydFJlY29nbml0aW9uKCkgdGhyZXcgZXhjZXB0aW9uIFVua25vd25FcnJv
cjogUmVjb2duaXRpb24gaXMgbm90IGluIGEgdmFsaWQgZnJhbWUuCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJh
bWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2du
aXRpb24taW4tcmVtb3ZlZC1pZnJhbWUuaHRtbAppbmRleCBhOTA1MTFlY2NjYzNlYWJkYWFmZjgy
NDhjNjkxYzVmZjU1N2Y4MzFlLi5iYTRmY2Y4YWI4N2RiYTBiMDk0ZjZjYzFmMDBiMDRkMmU5MDE0
N2RiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0
LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS5o
dG1sCkBAIC0xMiw3ICsxMiw3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogZnVuY3Rpb24g
dGVzdCgpCiB7CiAgICAgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lm
cmFtZScpWzBdOwotICAgIHNob3VsZE5vdFRocm93KCJpZnJhbWUuY29udGVudFdpbmRvdy5zdGFy
dFJlY29nbml0aW9uKCkiKTsKKyAgICBzaG91bGRUaHJvdygiaWZyYW1lLmNvbnRlbnRXaW5kb3cu
c3RhcnRSZWNvZ25pdGlvbigpIik7CiB9CiAKIGZ1bmN0aW9uIHJlbW92ZUZyYW1lKCkK
</data>
<flag name="commit-queue"
          id="436867"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418799</attachid>
            <date>2021-01-29 19:07:48 -0800</date>
            <delta_ts>2021-02-01 09:59:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221082-20210129190747.patch</filename>
            <type>text/plain</type>
            <size>46222</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYjk5NWE4NGQ4NjJi
ZTYxYTQyMTc2NWRlMjM3YmUzODA5MWNjZi4uNzJjNTE4ODEyZGZjZTAwM2E1NzZlYTI4NzZjNDli
YjU0OGVhZTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTI5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVy
bWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzczMzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGZyYW1lIGlkZW50aWZpZXIgdG8gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IGFz
IGl0IGlzIG5lZWRlZCBmb3IgY2hlY2tpbmcgdXNlciBtZWRpYSBwZXJtaXNzaW9uLgorCisgICAg
ICAgIFVwZGF0ZWQgZXhpc3RpbmcgdGVzdHMgZm9yIGNoYW5nZWQgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmZyYW1lSWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29k
ZSk6CisgICAgICAgICogcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDoKKwog
MjAyMS0wMS0yOSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBSZW1vdmUgdW51c2VkIEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBlbnVt
IGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDFlZjIxMDRhODBiMDY2N2RiNzZlNGQyN2U2N2RhNTI1MGViYjhi
NjUuLmZjNTliZThmYmRhM2UxNjgzY2VmY2RjMzRlNjJlMzVmZWRjYTI2NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDggQEAKKzIwMjEtMDEtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNv
bT4KKworICAgICAgICBVc2UgdXNlciBtZWRpYSBwZXJtaXNzaW9uIHByb21wdCBmb3Igc3BlZWNo
IHJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjEwODIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNzMzNzI0OTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIgYXNrIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5IGZvciB1c2VyIHBlcm1pc3Npb24gb24gCisgICAgICAgIG1pY3JvcGhvbmUuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OmZyYW1lSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6ZGVueVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OmRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oOgorCiAy
MDIxLTAxLTI5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MjA2NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAppbmRleCAzOTQxMzdjZjY4
N2E5YzIyYzIwMGM4Y2MxMTRjZWU2Y2RlMmJjMWNkLi4xNTg0YzE3OTVlYWIyODYzMGZiMDk2MDU5
NWNhZDI2NWRkMzY4ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCkBAIC03MSw3ICs3MSwxMyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbigpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25pdGlvbiBkb2VzIG5vdCBoYXZlIGEg
dmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5z
dGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRz
LCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCku
ZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KTsKKyAgICBhdXRvKiBm
cmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlJlY29nbml0aW9uIGlzIG5vdCBpbiBhIHZhbGlk
IGZyYW1lIl9zIH07CisKKyAgICBhdXRvIG9wdGlvbmFsRnJhbWVJZGVudGlmaWVyID0gZG9jdW1l
bnQuZnJhbWVJRCgpOworICAgIGF1dG8gZnJhbWVJZGVudGlmaWVyID0gb3B0aW9uYWxGcmFtZUlk
ZW50aWZpZXIgPyAqb3B0aW9uYWxGcmFtZUlkZW50aWZpZXIgOiBGcmFtZUlkZW50aWZpZXIgeyB9
OworICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGlu
dW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiB7
IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5k
YXRhKCkgfSwgZnJhbWVJZGVudGlmaWVyKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5n
OwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDA2OTI2YzNj
MzAwMDZjMmJhODczYjg2ZTkxMzExNmY0N2UxNmM5NmMuLjcxYTJhODg2Zjk0ZWY2N2I2MjUzZDZl
NWI4ZGVhYzQxM2Y1MzczYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRp
bnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xp
ZW50T3JpZ2luJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywg
Q2xpZW50T3JpZ2luJiYsIEZyYW1lSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggOWFhZGU2MTcxZTA2
MmY1YThjYzNhMTYyODkyOTk0OTlkZmQ5ZDBhNi4uNjM4ODhhOTBhNDk0ZDNlNjcyZWZlYzFlMDNi
NWMwZmIyY2ZjOTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uaW50ZXJp
bVJlc3VsdHM7IH0KICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJldHVy
biBtX2luZm8ubWF4QWx0ZXJuYXRpdmVzOyB9CiAgICAgY29uc3QgQ2xpZW50T3JpZ2luIGNsaWVu
dE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRPcmlnaW47IH0KKyAgICBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmZyYW1l
SWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgogICAgIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8gbV9pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCmluZGV4IDFlZmU5ZTA2NDZlNzQ3Y2I1
NWQ3Y2NiMGY3YjE4ZmY1ZTBiM2M0YzIuLmU3ZDQwYmYwMzg2M2RjZjNjN2QwMzdlMTQyNGZkOGFl
YTNiYzYzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCisjaW5jbHVkZSAiRnJhbWVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw2ICszOCw3IEBAIHN0
cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKICAgICBib29sIGludGVyaW1SZXN1
bHRzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAxIH07CiAgICAg
Q2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbjsKKyAgICBGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVu
dGlmaWVyOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDUsNyAr
NDcsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZp
ZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0
aXZlcyA8PCBjbGllbnRPcmlnaW47CisgICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8
IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXMg
PDwgY2xpZW50T3JpZ2luIDw8IGZyYW1lSWRlbnRpZmllcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KQEAgLTgxLDEzICs4MywxOSBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwogICAg
IGlmICghY2xpZW50T3JpZ2luKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+
PiBmcmFtZUlkZW50aWZpZXI7CisgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xp
ZW50SWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3Zl
KCpjb250aW51b3VzKSwKICAgICAgICAgV1RGTW92ZSgqaW50ZXJpbVJlc3VsdHMpLAogICAgICAg
ICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAotICAgICAgICBXVEZNb3ZlKCpjbGllbnRPcmln
aW4pCisgICAgICAgIFdURk1vdmUoKmNsaWVudE9yaWdpbiksCisgICAgICAgIFdURk1vdmUoKmZy
YW1lSWRlbnRpZmllcikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKaW5kZXggMzE0OTQ4ZWEyYzU2NTQw
Nzk1MTRlMDc2NzkxYTY1MzE0MmU2Nzk4Zi4uMDEwYmJjN2VkNzE3YjQxY2E1ZGQ1YzNmYWQwMmY1
Y2NhMmJmOTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudCYpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgc3Rh
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBmaW5hbCB7IH0KKyAg
ICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYs
IEZyYW1lSWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc3RvcChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9p
ZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5h
bCB7IH0KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJiYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAppbmRleCBhODA4YmY2
YzY0ZTg1ZjM0NWZlZThlNTliZWZmOTE2ZWI3OTAxYmFiLi4wNmIxZThkMzJkNGE2NWY1Njk3MjY2
NzVkYWM1NGFjYTE5OTExNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtNzUs
OSArNzUsOSBAQCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpCiAgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gbWFuYWdlciBoYXMgZXhpdGVkIl9z
IH0pOwogfQogICAgIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQordm9pZCBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3RDYWxsYmFjayYmIGNvbXBsZXRpb250SGFuZGxlcikKIHsKLSAgICBtX3JlcXVlc3RzLmFwcGVu
ZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2lu
LCBXVEZNb3ZlKGNvbXBsZXRpb250SGFuZGxlcikpKTsKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUobGFuZywgb3JpZ2luLCBm
cmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwogICAgIGlmICht
X3JlcXVlc3RzLnNpemUoKSA9PSAxKQogICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7CiB9CkBA
IC0xMjUsMTUgKzEyNSw2IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCiAjZW5kaWYKICAgICB9CiAKLSAgICAvLyBXZSBj
dXJyZW50bHkgZG9uJ3QgYWxsb3cgdGhpcmQtcGFydHkgYWNjZXNzLgotICAgIGlmIChtX3VzZXJQ
ZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKLSAgICAgICAgYXV0byBj
bGllbnRPcmlnaW4gPSBtX3JlcXVlc3RzLmZpcnN0KCktPm9yaWdpbigpOwotICAgICAgICBhdXRv
IHJlcXVlc3RpbmdPcmlnaW4gPSBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3Jp
Z2luKCk7Ci0gICAgICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpOwotICAgICAgICBpZiAoIXJlcXVlc3RpbmdPcmlnaW4tPmlzU2FtZU9y
aWdpbkFzKHRvcE9yaWdpbikpCi0gICAgICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBD
aGVja1Jlc3VsdDo6RGVuaWVkOwotICAgIH0KLQogICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hl
Y2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgewogICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlVzZXIgcGVybWlzc2lvbiBjaGVjayBoYXMg
ZmFpbGVkIl9zIH0pOwogICAgICAgICByZXR1cm47CkBAIC0yMjUsNiArMjE2LDcgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24o
KQogCiAgICAgYXV0byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CiAgICAg
YXV0byBjbGllbnRPcmlnaW4gPSBjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCk7CisgICAgYXV0byBy
ZXF1ZXN0aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOwogICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0
eU9yaWdpbigpOwogICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGdyYW50ZWQpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKQEAgLTIzOCw3ICsyMzAsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbigpCiAKICAgICAgICAgY29udGludWVQcm9jZXNz
aW5nUmVxdWVzdCgpOwogICAgIH07Ci0gICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5
Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9u
SGFuZGxlcikpOworICAgIG1fcGFnZS5yZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVj
aFJlY29nbml0aW9uKGN1cnJlbnRSZXF1ZXN0LT5mcmFtZUlkZW50aWZpZXIoKSwgcmVxdWVzdGlu
Z09yaWdpbiwgdG9wT3JpZ2luLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmRlY2lkZUJ5RGVmYXVsdEFjdGlv
bihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
CmluZGV4IDI0MjU3NTk1YTI5ZjljNzA5MDBjZGU1NjkxODk0Yjk2Yjc1MzMzYzguLjY2ZjNkYmI0
MGM1YzE5ZmYxOTFkNDI3YzkzYmNmYTJiM2Y5YTYwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQg
eyBEZW5pZWQsIEdyYW50ZWQsIFVua25vd24gfTsKICAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYpOwogICAgIH5TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyKCk7Ci0gICAgdm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYg
bGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJik7CisgICAg
dm9pZCByZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJik7CiAKICAgICB2b2lkIGRlY2lkZUJ5RGVmYXVsdEFj
dGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IDY1NmI1NzU3YWQyNWIyNDkzOWUzNTYzY2Fk
MzNjNjJjZDczY2Q2OTcuLmNmY2I2YjcyOTIxZWY4ZmMzYjgwY2ZmODliZWRiMDMwNDc1MmJkZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTI3LDE2ICsyNywxOSBAQAogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNo
UmVjb2duaXRpb25FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT47CisKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QobGFuZywgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0KGxhbmcsIG9yaWdpbiwgZnJhbWVJZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiBlcnJvcikKQEAgLTQ3LDE3ICs1MCwy
MCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29u
c3QgeyByZXR1cm4gbV9sYW5nOyB9CisgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJZGVudGlmaWVyOyB9CiAKIHByaXZh
dGU6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBTdHJpbmcm
IGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgY29uc3QgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIDogbV9sYW5nKGxhbmcpCiAgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQorICAg
ICAgICAsIG1fZnJhbWVJZGVudGlmaWVyKGZyYW1lSWRlbnRpZmllcikKICAgICAgICAgLCBtX2Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsgfQogCiAg
ICAgU3RyaW5nIG1fbGFuZzsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47Ci0g
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkVycm9yPiYmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBjb25zdCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgbV9mcmFtZUlkZW50aWZpZXI7CisgICAgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHAKaW5kZXggZjYzMWUzYzg2ODQwM2Y5MDZhNzhjYWVjNjk5MDA5ODQ2NDdiODll
ZS4uOWY5Njc0YWViNWVkZWUzODYzNzkzYTYwMmE2YzZhMGVmZTM5N2Y1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29n
bml0aW9uU2VydmVyLmgiCiAKLSNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25NZXNzYWdlcy5oIgpAQCAtNTIsMTEgKzUxLDExIEBAIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3RpCiB7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRp
ZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
bikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3Ry
aW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcikKIHsKICAgICBNRVNTQUdFX0NIRUNL
KGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5jb250YWlucyhjbGll
bnRJZGVudGlmaWVyKSk7Ci0gICAgYXV0byByZXF1ZXN0SW5mbyA9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGxhbmcpLCBj
b250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9yaWdp
bikgfTsKKyAgICBhdXRvIHJlcXVlc3RJbmZvID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUobGFuZyksIGNvbnRpbnVvdXMs
IGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUob3JpZ2luKSwgZnJhbWVJ
ZGVudGlmaWVyIH07CiAgICAgYXV0byYgbmV3UmVxdWVzdCA9IG1fcmVxdWVzdHMuYWRkKGNsaWVu
dElkZW50aWZpZXIsIG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
PihXVEZNb3ZlKHJlcXVlc3RJbmZvKSkpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIHJlcXVlc3RQ
ZXJtaXNzaW9uRm9yUmVxdWVzdCgqbmV3UmVxdWVzdCk7CkBAIC02NCw3ICs2Myw3IEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVl
c3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmxhbmcoKSwgcmVx
dWVzdC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKGF1dG8gZXJyb3IpIG11dGFibGUg
eworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY2xpZW50
T3JpZ2luKCksIHJlcXVlc3QuZnJhbWVJZGVudGlmaWVyKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShhdXRv
IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmgKaW5kZXggZWNiYTQwNzA5NDAzOGIzOTc2NTVlY2IwMThkYzIxN2RiYWExYWI4Zi4u
MmZjMjQ4YThlMTNiYzc2NjU1NDE2MDE3NDg1ZTk0MWRiZWRjZWExNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdC5oPgpAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVu
dGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7Ci11c2luZyBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmKT47Cit1c2luZyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayYmKT47CiB1c2luZyBTcGVl
Y2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkID0gRnVuY3Rp
b248Ym9vbCgpPjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2hlY2tlciYmLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrU3BlZWNoUmVj
b2duaXRpb25FbmFibGVkJiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcs
IGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJu
YXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBs
YW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFs
dGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5tZXNzYWdlcy5pbgppbmRleCBhMjhiOTIxY2I5NjRhZmFmMmZmMjJjOTE2YmJlNDZlODI5
OTEzMjlkLi4xZjZmMTRjNTVkY2M0OTllZjliNjFjZjhiMjQ0YmRlZGEwMjY4ZTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogICovCiAgCiAgbWVzc2FnZXMgLT4g
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgU3RhcnQoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVy
LCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50
NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2lu
KQorICAgIFN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRp
ZmllcikKICAgICBTdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBBYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgSW52YWxpZGF0
ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmMwZGI3
ODczNWNjMzEzM2EzMjAzNmU1NmI0NDZiNGM5ODNhM2MwOC4uMGY4MTcxZTdhZjgwYTRkZDJlMjE0
NTEwZmQzZDFhODVmMzkxMDhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cApAQCAtMjEzLDYgKzIxMywxMSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpkZW55UmVxdWVzdChVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdQogICAgIGlmIChy
ZWFzb24gPT0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNz
RGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKQogICAgICAgICBtX2RlbmllZFJlcXVlc3Rz
LmFwcGVuZChEZW5pZWRSZXF1ZXN0IHsgcmVxdWVzdC5tYWluRnJhbWVJRCgpLCByZXF1ZXN0LnVz
ZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpLCByZXF1ZXN0
LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCksIHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgp
IH0pOwogCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSByZXF1ZXN0LmRlY2lzaW9uQ29tcGxldGlv
bkhhbmRsZXIoKSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChtX3ByZWdyYW50ZWRS
ZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcmVxdWVzdC51c2VyUmVxdWVzdCgpLmF1ZGlvQ29uc3RyYWlu
dHMuaXNWYWxpZCkKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuYXVkaW9DYXB0dXJlRmFjdG9yeSgpLnJlbW92ZUV4dGVuc2l2ZU9ic2VydmVyKCp0aGlzKTsK
QEAgLTIzNCw2ICsyMzksMTIgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KFVzZXJNZWRpYVBlcm1pc3Npb25SZXEKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgcmVxdWVzdC51c2Vy
TWVkaWFJRCgpLCAiLCB2aWRlbzogIiwgcmVxdWVzdC52aWRlb0RldmljZSgpLmxhYmVsKCksICIs
IGF1ZGlvOiAiLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCkubGFiZWwoKSk7CiAKKyAgICBpZiAoYXV0
byBjYWxsYmFjayA9IHJlcXVlc3QuZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcigpKSB7CisgICAg
ICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChtYWtlUmVmKHJlcXVlc3QpKTsKKyAgICAgICAg
Y2FsbGJhY2sodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRvJiB1c2Vy
TWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byYgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
ID0gcmVxdWVzdC50b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKICAgICBtX3BhZ2Uu
d2Vic2l0ZURhdGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNo
U2FsdEZvck9yaWdpbih1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCB0b3BMZXZlbERv
Y3VtZW50U2VjdXJpdHlPcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCldKFN0cmluZyYmKSBtdXRhYmxlIHsKQEAgLTYw
Miw2ICs2MTMsMzEgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblIKICAgICBtX3BhZ2UudWlDbGll
bnQoKS5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsICp3
ZWJGcmFtZSwgV1RGTW92ZSh1c2VyTWVkaWFPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsT3JpZ2lu
KSwgKm1fY3VycmVudFVzZXJNZWRpYVJlcXVlc3QpOwogfQogCit2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVl
Y2hSZWNvZ25pdGlvbihjb25zdCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6Q2Fw
dHVyZURldmljZSYgZGV2aWNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGZyYW1lID0gbV9wYWdlLnByb2Nlc3MoKS53ZWJG
cmFtZShmcmFtZUlkZW50aWZpZXIpOworICAgIGlmICghZnJhbWUgfHwgIVNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKG1fcGFnZS5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpLT5p
c1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BPcmlnaW4pKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh3YXNSZXF1ZXN0
RGVuaWVkKGZyYW1lSWRlbnRpZmllciwgcmVxdWVzdGluZ09yaWdpbiwgdG9wT3JpZ2luLCB0cnVl
LCBmYWxzZSwgZmFsc2UpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzZWFyY2hGb3JHcmFudGVkUmVxdWVzdChm
cmFtZUlkZW50aWZpZXIsIHJlcXVlc3RpbmdPcmlnaW4sIHRvcE9yaWdpbiwgdHJ1ZSwgZmFsc2Up
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6Y3JlYXRlKCp0aGlzLCAwLCBmcmFtZUlkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgcmVx
dWVzdGluZ09yaWdpbi5pc29sYXRlZENvcHkoKSwgdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBW
ZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4geyBkZXZpY2UgfSwgeyB9LCB7IH0sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0aW5nT3JpZ2luKTsKKyAgICBhdXRvIHRvcExl
dmVsT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcE9yaWdpbik7CisgICAg
bV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QobV9wYWdlLCAqZnJhbWUsIFdURk1vdmUodXNlck1lZGlhT3JpZ2luKSwgV1RGTW92ZSh0b3BM
ZXZlbE9yaWdpbiksIHJlcXVlc3QuZ2V0KCkpOworfQorCisKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lz
dGVtVmFsaWRhdGlvbihjb25zdCBXZWJQYWdlUHJveHkmLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IDczZTNhMmJlNGU3ZmMwMjJiZmQ1
ZTUwOTYxOTBhYjk2YzA1YmYzOTcuLmQxZjUxMjdkOGE0MjdlNWZhNmVmM2QzZTU5Njc1NmQ4MmY3
MTkwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtOTcsNiArOTcsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUo
T3B0aW9uYWw8Ym9vbD4pOwogICAgIGJvb2wgaGFzUGVuZGluZ0NhcHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1BlbmRpbmdDYXB0dXJlOyB9CiAKKyAgICB2b2lkIGNoZWNrVXNlck1lZGlhUGVy
bWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmNwcAppbmRleCA1MTVkODBmMjRiMTZmNWVkODAzMTAzZjgyYWE1NDkwMDllMmE1ZTZlLi40Mzhh
Nzc0ZTY5Yjc1MzYyNmYzYzhiYWQ1MmE2NzY2N2JhMjEzNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIEZyYW1lSWRlbnRpZmllciBtYWlu
RnJhbWVJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2
aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlk
ZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0KQorVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0
X3QgdXNlck1lZGlhSUQsIEZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1
bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1l
bnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywg
VmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX21hbmFnZXIoJm1hbmFnZXIp
CiAgICAgLCBtX3VzZXJNZWRpYUlEKHVzZXJNZWRpYUlEKQogICAgICwgbV9tYWluRnJhbWVJRCht
YWluRnJhbWVJRCkKQEAgLTQxLDYgKzQxLDcgQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXMKICAg
ICAsIG1fZWxpZ2libGVWaWRlb0RldmljZXMoV1RGTW92ZSh2aWRlb0RldmljZXMpKQogICAgICwg
bV9lbGlnaWJsZUF1ZGlvRGV2aWNlcyhXVEZNb3ZlKGF1ZGlvRGV2aWNlcykpCiAgICAgLCBtX3Jl
cXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKKyAgICAsIG1fZGVjaXNpb25Db21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmgKaW5kZXggM2VmNzUyYTkyOGQ3ZTM0MzFmNWEwNjU1M2Q1NmQ3MDRhNzI0MDlmZS4uZThj
OGQ4ZGZhN2M0OTU3YzY0YWE4ODRlYzc4YWEwNjM0ZjU4ODVjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
aApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2FwdHVyZURldmljZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVN0cmVhbVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTM2LDkgKzM3LDkgQEAgY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk7CiAKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IG1haW5GcmFtZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVmVjdG9yPFdlYkNv
cmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVy
ZURldmljZT4mJiB2aWRlb0RldmljZXMsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYmIHJl
cXVlc3QpCisgICAgc3RhdGljIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBj
cmVhdGUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVp
bnQ2NF90IHVzZXJNZWRpYUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURl
dmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIHZp
ZGVvRGV2aWNlcywgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBkZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0geyB9
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eShtYW5hZ2VyLCB1c2VyTWVkaWFJRCwgbWFpbkZyYW1lSUQsIGZyYW1lSUQs
IFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1l
bnRPcmlnaW4pLCBXVEZNb3ZlKGF1ZGlvRGV2aWNlcyksIFdURk1vdmUodmlkZW9EZXZpY2VzKSwg
V1RGTW92ZShyZXF1ZXN0KSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlELCBtYWluRnJhbWVJ
RCwgZnJhbWVJRCwgV1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIFdURk1vdmUodG9w
TGV2ZWxEb2N1bWVudE9yaWdpbiksIFdURk1vdmUoYXVkaW9EZXZpY2VzKSwgV1RGTW92ZSh2aWRl
b0RldmljZXMpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGRlY2lzaW9uQ29tcGxldGlvbkhh
bmRsZXIpKSk7CiAgICAgfQogCiAgICAgdm9pZCBhbGxvdyhjb25zdCBTdHJpbmcmIGF1ZGlvRGV2
aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsKQEAgLTg5LDggKzkwLDEwIEBA
IHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgZG9EZWZhdWx0QWN0aW9uKCk7CiAKKyAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBkZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKCkgeyBy
ZXR1cm4gc3RkOjpleGNoYW5nZShtX2RlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIsIHsgfSk7IH0K
KwogcHJpdmF0ZToKLSAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmln
aW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2lu
LCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgV2ViQ29yZTo6TWVkaWFTdHJl
YW1SZXF1ZXN0JiYpOworICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmln
aW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9y
PFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0
cmVhbVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwogICAgIHVp
bnQ2NF90IG1fdXNlck1lZGlhSUQ7CkBAIC0xMDMsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIGJvb2wgbV9oYXNQZXJz
aXN0ZW50QWNjZXNzIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9kZXZpY2VJZGVudGlmaWVySGFz
aFNhbHQ7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9kZWNpc2lvbkNvbXBs
ZXRpb25IYW5kbGVyOwogfTsKIAogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmMTJjODQ2
ZTg4ZGJkMDYwYmE0NWE1MzRkOGI2ZjYyYWYyOTE5MTEwLi4zZTg1ZTkxMGQxMjZkNDVjODcyOWZj
MWVmYzY4ZWIwMjhlMzY5ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTEwMzk3LDEyICsxMDM5NywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0
Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmlu
ZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgY2xpZW50T3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9u
RXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9zcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQogICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI+KCp0aGlzKTsKIAotICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci0+cmVxdWVzdChsYW5nLCBjbGllbnRPcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlcXVlc3QobGFu
ZywgY2xpZW50T3JpZ2luLCBmcmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25CeURlZmF1bHRBY3Rpb24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTEwNDE1LDYgKzEwNDE1LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvCiAgICAgbV9z
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5kZWNpZGVCeURlZmF1bHRBY3Rpb24o
b3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5nT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdG9wT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgYXV0byBjYXB0
dXJlRGV2aWNlID0gU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlOjpmaW5kQ2FwdHVyZURl
dmljZSgpOworICAgIGlmICghY2FwdHVyZURldmljZSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOworCisgICAgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkuY2hl
Y2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24oZnJhbWVJZGVudGlmaWVy
LCByZXF1ZXN0aW5nT3JpZ2luLCB0b3BPcmlnaW4sICpjYXB0dXJlRGV2aWNlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogV2ViQ29yZTo6Q2FwdHVy
ZVNvdXJjZU9yRXJyb3IgV2ViUGFnZVByb3h5OjpjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9y
U3BlZWNoUmVjb2duaXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCAyNDY0NDQyNzA0M2QxZTZiYWE3YmE4YTU3ZDY4NTYxYTU1ZjA0Mjk4Li4yYjIwNjBlYTdk
YzIzOGY5MmI3ZDBjNGQ0YWUyNmE2Y2QxNWY5Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaGFyZWFibGVS
ZXNvdXJjZS5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qu
aCIKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHkuaCIKICNpbmNsdWRlICJTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGUuaCIKICNpbmNsdWRlICJTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5o
IgpAQCAtMTgxNiw4ICsxODE3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFDYXB0dXJl
UmVwb3J0aW5nRGVsYXkoU2Vjb25kcyBjYXB0dXJlUmVwb3J0aW5nRGVsYXkpIHsgbV9tZWRpYUNh
cHR1cmVSZXBvcnRpbmdEZWxheSA9IGNhcHR1cmVSZXBvcnRpbmdEZWxheTsgfQogICAgIHNpemVf
dCBzdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIoKSB7IHJldHVybiBtX3N1c3BlbmRNZWRpYVBs
YXliYWNrQ291bnRlcjsgfQogCi0gICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yPiYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
Q2FsbGJhY2smJik7CiAgICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
QnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlz
c2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9pZCBzeW5j
SWZNb2NrRGV2aWNlc0VuYWJsZWRDaGFuZ2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI2NzdlY2Q3MTZmM2Y3M2ZkYjcyZDczYTFhOTky
OWZlOTFiNmNjNjEuLmViY2EwM2QzMTk0N2U4YzVlNGQyNTNkZWZiNmQ0MTU0ZGM2NzdlMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcyMiwx
MyArMTcyMiwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudAogCiAgICAgQVNTRVJUKCFtX3Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBhdXRv
JiBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAu
YWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBhdXRvIHBlcm1p
c3Npb25DaGVja2VyID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8m
IGxhbmcsIGF1dG8mIG9yaWdpbiwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsK
KyAgICBhdXRvIHBlcm1pc3Npb25DaGVja2VyID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFy
Z2V0UGFnZSldKGF1dG8mIGxhbmcsIGF1dG8mIG9yaWdpbiwgYXV0byBmcmFtZUlkZW50aWZpZXIs
IGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1Bh
Z2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBh
Z2Ugbm8gbG9uZ2VyIGV4aXN0cyJfcyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
KGxhbmcsIG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB3ZWFr
UGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihsYW5nLCBvcmlnaW4sIGZy
YW1lSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH07CiAgICAg
YXV0byBjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFt3ZWFrUGFnZSA9IG1ha2VX
ZWFrUHRyKHRhcmdldFBhZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHdlYWtQYWdlICYmIHdlYWtQ
YWdlLT5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggYzNjYzhiOTkz
ODkxMzM5MjI5YTQwOTU3NWYzYTM0NzQ5M2RhMGY0My4uNGI3NjNiY2RlZTYzYmRmZjRmYTFmMjlk
ZTc4NTY2MGQ0OGI0ZjFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVy
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC02OCw5ICs2OSw5IEBAIHZv
aWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjp1bnJlZ2lzdGVyQ2xpZW50KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uCiAgICAgbV9jbGllbnRNYXAucmVtb3ZlKGNsaWVudC5pZGVu
dGlmaWVyKCkpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3Rh
cnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9v
bCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBjbGllbnRPcmlnaW4pCit2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGlu
dW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OlN0YXJ0KGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVy
aW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSkpOworICAg
IHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChjbGllbnRJZGVu
dGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVz
LCBXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGZyYW1lSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKaW5kZXggNTk2NmUzZmQ3NzMw
NTJjMzkzMjcxNDQwZWQxMzdiMDEwODU3ZWUyMC4uMzQzODIxNTU2YTc4YTdjNzliMzg1YTBkOTgy
ODEyZWJkMzc0YTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25DbwogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiBjcmVhdGUo
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHN0YXJ0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1
aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5hbDsK
KyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGlu
dGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc3RvcChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzhkYmI3MGIxOWZkZjhhMDZiMzEzMjRkZGFkMmMwZWQ5M2I1
YjE0OS4uNTkwMjJlZmMxMzY3ODVlNWQ1M2QzZGE0Nzc1NDM4NWRkNTFlNDRhZCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTAxLTI5ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAg
VXNlIHVzZXIgbWVkaWEgcGVybWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisg
ICAgICAgIHJkYXI6Ly9wcm9ibGVtLzczMzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NwZWVjaFJlY29nbml0aW9uLm1tOgorICAgICAgICAoLVtTcGVlY2hSZWNvZ25pdGlvblVJRGVs
ZWdhdGUgX3dlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVyZUF1dGhvcml6YXRpb246ZGVjaXNpb25I
YW5kbGVyOl0pOgorCiAyMDIxLTAxLTI5ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gRW5hYmxlIHJlZmVyZW5j
ZSB0eXBlcyBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQppbmRleCAzOGFiMTc1ZDFmZDMx
MDkzYzQ4MzI3MDZhMmI4MDg4MWM4N2VkYzhiLi43NDM0NThmMzA5Nzg1Njc3NzJhMGE0ZWY1YTc4
NjFiMzFiNjg0ZGU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KQEAgLTYwLDcgKzYwLDggQEAgc3Rh
dGljIFJldGFpblB0cjxXS1dlYlZpZXc+IGNyZWF0ZWRXZWJWaWV3OwogCiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVBdXRob3JpemF0aW9u
OiAoX1dLQ2FwdHVyZURldmljZXMpZGV2aWNlcyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJP
T0wpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxlcihZRVMpOworICAgIHBl
cm1pc3Npb25SZXF1ZXN0ZWQgPSB0cnVlOworICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRHcmFu
dFBlcm1pc3Npb25SZXF1ZXN0KTsKIH0KIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JVUkw6KE5TVVJMICopdXJsIG1haW5G
cmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJZGVudGlmaWVyOihOU1VJbnRlZ2Vy
KWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpzYWx0
LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkzNTg5N2RjNjgyZDZh
MTg5NmRhYjg5ODA4NTNkYzAyZDRjNTY0ZTUuLmU0MmIyNTA5MDU2ZWIyNGEwYmNiNzc2OTE2YWJm
ZjczZmEyYmU3MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMS0yOSAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIFVzZSB1c2VyIG1lZGlhIHBlcm1pc3Np
b24gcHJvbXB0IGZvciBzcGVlY2ggcmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTA4MgorICAgICAgICByZGFyOi8vcHJvYmxlbS83
MzM3MjQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6CisgICAgICAg
ICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlm
cmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFy
dC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS5odG1sOgorCiAyMDIxLTAxLTI5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgZm9udC1zdHJl
dGNoIGlzIG5vdCBhcHBsaWVkIHRvIHN5c3RlbS11aQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbAppbmRleCAwN2Uw
ZTJjMTZiZGM0MjRjNjk2NjY3ZTQ3NGNmYTE4OGNlMTQwMTBlLi44MjgwODEyZjAzNGU3NGZiOTMy
MzE4MWFiZjEyMDkwODRhNjA2Y2VlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbApAQCAtNyw3ICs3LDcgQEAg
ZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVybWlz
c2lvbiBpcyBkZW5pZWQuIik7CiAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOwotICAgIHRlc3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25HcmFudGVkKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1p
c3Npb24oZmFsc2UpOwogfQogCiBzaG91bGROb3RUaHJvdygicmVjb2duaXRpb24gPSBuZXcgd2Vi
a2l0U3BlZWNoUmVjb2duaXRpb24oKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29n
bml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAppbmRleCAxOWYwZGE0M2M4MzIz
MGFjMTQ5ZTA4MTAwOTU0OWVjZDliNDkyYjhmLi41NGRkN2Q3ODczYzU4ZDhkODliODNjYjVjZDI4
NTE0YjRmNmQ3MGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0
aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWlu
LXJlbW92ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUKIAogCiBQQVNTIGlmcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlmcmFt
ZSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIGlmcmFtZS5jb250ZW50V2luZG93LnN0
YXJ0UmVjb2duaXRpb24oKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaWZyYW1lLmNv
bnRlbnRXaW5kb3cuc3RhcnRSZWNvZ25pdGlvbigpIHRocmV3IGV4Y2VwdGlvbiBVbmtub3duRXJy
b3I6IFJlY29nbml0aW9uIGlzIG5vdCBpbiBhIHZhbGlkIGZyYW1lLgogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29n
bml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLmh0bWwKaW5kZXggYTkwNTExZWNjY2MzZWFiZGFhZmY4
MjQ4YzY5MWM1ZmY1NTdmODMxZS4uYmE0ZmNmOGFiODdkYmEwYjA5NGY2Y2MxZjAwYjA0ZDJlOTAx
NDdkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFy
dC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUu
aHRtbApAQCAtMTIsNyArMTIsNyBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKIGZ1bmN0aW9u
IHRlc3QoKQogewogICAgIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdp
ZnJhbWUnKVswXTsKLSAgICBzaG91bGROb3RUaHJvdygiaWZyYW1lLmNvbnRlbnRXaW5kb3cuc3Rh
cnRSZWNvZ25pdGlvbigpIik7CisgICAgc2hvdWxkVGhyb3coImlmcmFtZS5jb250ZW50V2luZG93
LnN0YXJ0UmVjb2duaXRpb24oKSIpOwogfQogCiBmdW5jdGlvbiByZW1vdmVGcmFtZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418890</attachid>
            <date>2021-02-01 09:59:45 -0800</date>
            <delta_ts>2021-02-01 12:30:51 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221082-20210201095944.patch</filename>
            <type>text/plain</type>
            <size>46452</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYjk5NWE4NGQ4NjJi
ZTYxYTQyMTc2NWRlMjM3YmUzODA5MWNjZi4uYzNkNTY1NDMyNzI0MTc5YzYzOGJkZjkwMDU0ZTJi
NmRmYmU0MzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTI5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVXNlIHVzZXIgbWVkaWEgcGVy
bWlzc2lvbiBwcm9tcHQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDgyCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzczMzcyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAg
ICAgICBBZGQgZnJhbWUgaWRlbnRpZmllciB0byBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QgYXMg
aXQgaXMgbmVlZGVkIGZvciBjaGVja2luZyB1c2VyIG1lZGlhIHBlcm1pc3Npb24uCisKKyAgICAg
ICAgVXBkYXRlZCBleGlzdGluZyB0ZXN0cyBmb3IgY2hhbmdlZCBiZWhhdmlvci4KKworICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6ZnJhbWVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oOgorCiAy
MDIxLTAxLTI5ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bnVzZWQgR3JhcGhpY3NDb250ZXh0R0w6OkRlc3RpbmF0aW9uIGVudW0g
Y2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMWVmMjEwNGE4MGIwNjY3ZGI3NmU0ZDI3ZTY3ZGE1MjUwZWJiOGI2
NS4uMGJkZmIyOTQ0MjkxODM3ZmI1OGZjZmQwODU1MDZhZDdlZWJjZWNjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0OCBAQAorMjAyMS0wMS0yOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29t
PgorCisgICAgICAgIFVzZSB1c2VyIG1lZGlhIHBlcm1pc3Npb24gcHJvbXB0IGZvciBzcGVlY2gg
cmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMTA4MgorICAgICAgICByZGFyOi8vcHJvYmxlbS83MzM3MjQ5OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgTWFrZSBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyIGFzayBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSBmb3IgdXNlciBwZXJtaXNzaW9uIG9uIAorICAgICAgICBtaWNyb3Bob25lLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpm
cmFtZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OmRlbnlSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25Gb3JTcGVlY2hSZWNvZ25pdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpk
ZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1
ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFydCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDoKKwogMjAy
MS0wMS0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzIwNjUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggMzk0MTM3Y2Y2ODdh
OWMyMmMyMDBjOGNjMTE0Y2VlNmNkZTJiYzFjZC4uMTU4NGMxNzk1ZWFiMjg2MzBmYjA5NjA1OTVj
YWQyNjVkZDM2OGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtNzEsNyArNzEsMTMgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gU3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVjb2duaXRpb24oKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiUmVjb2duaXRpb24gZG9lcyBub3QgaGF2ZSBhIHZh
bGlkIGNvbm5lY3Rpb24iX3MgfTsKIAogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fY29ubmVjdGlvbi0+c3Rh
cnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywg
bV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLmRh
dGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfSk7CisgICAgYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25pdGlvbiBpcyBub3QgaW4gYSB2YWxpZCBm
cmFtZSJfcyB9OworCisgICAgYXV0byBvcHRpb25hbEZyYW1lSWRlbnRpZmllciA9IGRvY3VtZW50
LmZyYW1lSUQoKTsKKyAgICBhdXRvIGZyYW1lSWRlbnRpZmllciA9IG9wdGlvbmFsRnJhbWVJZGVu
dGlmaWVyID8gKm9wdGlvbmFsRnJhbWVJZGVudGlmaWVyIDogRnJhbWVJZGVudGlmaWVyIHsgfTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVv
dXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4geyBk
b2N1bWVudC50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0
YSgpIH0sIGZyYW1lSWRlbnRpZmllcik7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdGFydGluZzsK
ICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAwNjkyNmMzYzMw
MDA2YzJiYTg3M2I4NmU5MTMxMTZmNDdlMTZjOTZjLi43MWEyYTg4NmY5NGVmNjdiNjI1M2Q2ZTVi
OGRlYWM0MTNmNTM3M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZyYW1lSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51
b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIENsaWVu
dE9yaWdpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIENs
aWVudE9yaWdpbiYmLCBGcmFtZUlkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGFib3J0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZSYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCmluZGV4IDlhYWRlNjE3MWUwNjJm
NWE4Y2MzYTE2Mjg5Mjk5NDk5ZGZkOWQwYTYuLjYzODg4YTkwYTQ5NGQzZTY3MmVmZWMxZTAzYjVj
MGZiMmNmYzkxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmludGVyaW1S
ZXN1bHRzOyB9CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmZvLm1heEFsdGVybmF0aXZlczsgfQogICAgIGNvbnN0IENsaWVudE9yaWdpbiBjbGllbnRP
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50T3JpZ2luOyB9CisgICAgRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5mcmFtZUlk
ZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKICAgICBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
IG1faW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAppbmRleCAxZWZlOWUwNjQ2ZTc0N2NiNTVk
N2NjYjBmN2IxOGZmNWUwYjNjNGMyLi5lN2Q0MGJmMDM4NjNkY2YzYzdkMDM3ZTE0MjRmZDhhZWEz
YmM2MzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgorI2luY2x1ZGUgIkZyYW1lSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNiArMzgsNyBAQCBzdHJ1
Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0
cyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzIHsgMSB9OwogICAgIENs
aWVudE9yaWdpbiBjbGllbnRPcmlnaW47CisgICAgRnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRp
ZmllcjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTQ1LDcgKzQ3
LDcgQEAgc3RydWN0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gewogdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHZvaWQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVy
IDw8IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2
ZXMgPDwgY2xpZW50T3JpZ2luOworICAgIGVuY29kZXIgPDwgY2xpZW50SWRlbnRpZmllciA8PCBs
YW5nIDw8IGNvbnRpbnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0ZXJuYXRpdmVzIDw8
IGNsaWVudE9yaWdpbiA8PCBmcmFtZUlkZW50aWZpZXI7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CkBAIC04MSwxMyArODMsMTkgQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0SW5mbz4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERlY28KICAgICBp
ZiAoIWNsaWVudE9yaWdpbikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4g
ZnJhbWVJZGVudGlmaWVyOworICAgIGlmICghZnJhbWVJZGVudGlmaWVyKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmNsaWVu
dElkZW50aWZpZXIpLAogICAgICAgICBXVEZNb3ZlKCpsYW5nKSwKICAgICAgICAgV1RGTW92ZSgq
Y29udGludW91cyksCiAgICAgICAgIFdURk1vdmUoKmludGVyaW1SZXN1bHRzKSwKICAgICAgICAg
V1RGTW92ZSgqbWF4QWx0ZXJuYXRpdmVzKSwKLSAgICAgICAgV1RGTW92ZSgqY2xpZW50T3JpZ2lu
KQorICAgICAgICBXVEZNb3ZlKCpjbGllbnRPcmlnaW4pLAorICAgICAgICBXVEZNb3ZlKCpmcmFt
ZUlkZW50aWZpZXIpCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCmluZGV4IDMxNDk0OGVhMmM1NjU0MDc5
NTE0ZTA3Njc5MWE2NTMxNDJlNjc5OGYuLjAxMGJiYzdlZDcxN2I0MWNhNWRkNWMzZmFkMDJmNWNj
YTJiZjk1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICAgICAgdm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnQmKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCB1bnJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIHN0YXJ0
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90LCBDbGllbnRPcmlnaW4mJikgZmluYWwgeyB9CisgICAg
ICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmLCBG
cmFtZUlkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHN0b3AoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQg
YWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwg
eyB9CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSYmKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKaW5kZXggYTgwOGJmNmM2
NGU4NWYzNDVmZWU4ZTU5YmVmZjkxNmViNzkwMWJhYi4uZmU2ZjVlOGZkOTUxYTVkMTAwOGJkZDZi
MTNjNjBlN2YyYzBkNGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTc1LDkg
Kzc1LDkgQEAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKQogICAgICAgICByZXF1ZXN0LT5jb21wbGV0ZShXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
cnJvclR5cGU6Ok5vdEFsbG93ZWQsICJQZXJtaXNzaW9uIG1hbmFnZXIgaGFzIGV4aXRlZCJfcyB9
KTsKIH0KICAgICAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVx
dWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb250SGFuZGxlcikKK3ZvaWQgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJh
Y2smJiBjb21wbGV0aW9udEhhbmRsZXIpCiB7Ci0gICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKGxhbmcsIG9yaWdpbiwgV1RGTW92
ZShjb21wbGV0aW9udEhhbmRsZXIpKSk7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKGxhbmcsIG9yaWdpbiwgZnJhbWVJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb250SGFuZGxlcikpKTsKICAgICBpZiAobV9yZXF1ZXN0
cy5zaXplKCkgPT0gMSkKICAgICAgICAgc3RhcnROZXh0UmVxdWVzdCgpOwogfQpAQCAtMTI1LDE1
ICsxMjUsNiBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0
UHJvY2Vzc2luZ1JlcXVlc3QoKQogI2VuZGlmCiAgICAgfQogCi0gICAgLy8gV2UgY3VycmVudGx5
IGRvbid0IGFsbG93IHRoaXJkLXBhcnR5IGFjY2Vzcy4KLSAgICBpZiAobV91c2VyUGVybWlzc2lv
bkNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gY2xpZW50T3Jp
Z2luID0gbV9yZXF1ZXN0cy5maXJzdCgpLT5vcmlnaW4oKTsKLSAgICAgICAgYXV0byByZXF1ZXN0
aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOwot
ICAgICAgICBhdXRvIHRvcE9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKTsKLSAgICAgICAgaWYgKCFyZXF1ZXN0aW5nT3JpZ2luLT5pc1NhbWVPcmlnaW5Bcyh0
b3BPcmlnaW4pKQotICAgICAgICAgICAgbV91c2VyUGVybWlzc2lvbkNoZWNrID0gQ2hlY2tSZXN1
bHQ6OkRlbmllZDsKLSAgICB9Ci0KICAgICBpZiAobV91c2VyUGVybWlzc2lvbkNoZWNrID09IENo
ZWNrUmVzdWx0OjpEZW5pZWQpIHsKICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
cnJvclR5cGU6Ok5vdEFsbG93ZWQsICJVc2VyIHBlcm1pc3Npb24gY2hlY2sgaGFzIGZhaWxlZCJf
cyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjI1LDYgKzIxNiw3IEBAIHZvaWQgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKCkKIAogICAg
IGF1dG8mIGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy5maXJzdCgpOwogICAgIGF1dG8gY2xp
ZW50T3JpZ2luID0gY3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGF1dG8gcmVxdWVzdGlu
Z09yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKICAg
ICBhdXRvIHRvcE9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KTsKICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0oYm9vbCBncmFudGVkKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC0y
MzgsNyArMjMwLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0VXNlclBlcm1pc3Npb24oKQogCiAgICAgICAgIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVl
c3QoKTsKICAgICB9OwotICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodG9wT3JpZ2luLmdldCgpKS5nZXQoKSwgV1RGTW92ZShkZWNpc2lvbkhhbmRsZXIp
KTsKKyAgICBtX3BhZ2UucmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25p
dGlvbihjdXJyZW50UmVxdWVzdC0+ZnJhbWVJZGVudGlmaWVyKCksIHJlcXVlc3RpbmdPcmlnaW4s
IHRvcE9yaWdpbiwgV1RGTW92ZShkZWNpc2lvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpkZWNpZGVCeURlZmF1bHRBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAppbmRleCAy
NDI1NzU5NWEyOWY5YzcwOTAwY2RlNTY5MTg5NGI5NmI3NTMzM2M4Li4wZGU1Zjk0N2I0NjMyODBm
NGU0ZjM1MWQ4Y2U3ZTZhOTkyYmM5NDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENoZWNrUmVzdWx0IHsgRGVuaWVk
LCBHcmFudGVkLCBVbmtub3duIH07CiAgICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcihXZWJQYWdlUHJveHkmKTsKICAgICB+U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcigpOwotICAgIHZvaWQgcmVxdWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYpOworICAgIHZvaWQgcmVx
dWVzdChjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dENhbGxiYWNrJiYpOwogCiAgICAgdm9pZCBkZWNpZGVCeURlZmF1bHRBY3Rpb24oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaAppbmRleCA2NTZiNTc1N2FkMjViMjQ5MzllMzU2M2NhZDMzYzYyY2Q3M2NkNjk3
Li5hNmM0ZGNlOTk1ZTQ4OTBhYzcxMWYwYjYyMDJjZjE2NzU2ZGMzODJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oCkBAIC0yNywxNiArMjcsMTkgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uRXJy
b3IuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25FcnJvcj4mJik+OworCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgc3Rh
dGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
KGxhbmcsIG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChsYW5n
LCBvcmlnaW4sIGZyYW1lSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsK
ICAgICB9CiAKICAgICB2b2lkIGNvbXBsZXRlKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3I+JiYgZXJyb3IpCkBAIC00NywxNyArNTAsMjAgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsg
fQorICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KGNvbnN0IFN0cmluZyYgbGFu
ZywgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3RDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IG1fbGFuZyhsYW5nKQog
ICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikKKyAgICAgICAgLCBtX2ZyYW1lSWRlbnRpZmllcihm
cmFtZUlkZW50aWZpZXIpCiAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKICAgICB7IH0KIAogICAgIFN0cmluZyBtX2xhbmc7CiAgICAgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG1fb3JpZ2luOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+IG1fY29tcGxldGlv
bkhhbmRsZXI7CisgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fZnJhbWVJZGVudGlmaWVy
OworICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayBtX2NvbXBs
ZXRpb25IYW5kbGVyOwogfTsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2sgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IGY2MzFlM2M4Njg0MDNm
OTA2YTc4Y2FlYzY5OTAwOTg0NjQ3Yjg5ZWUuLjlmOTY3NGFlYjVlZGVlMzg2Mzc5M2E2MDJhNmM2
YTBlZmUzOTdmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIgogCi0jaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAi
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTUyLDExICs1MSwx
MSBAQCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aQogewogfQogCi12b2lkIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGlu
dW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4pCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9v
bCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZp
ZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKICAgICBBU1NFUlQo
IW1fcmVxdWVzdHMuY29udGFpbnMoY2xpZW50SWRlbnRpZmllcikpOwotICAgIGF1dG8gcmVxdWVz
dEluZm8gPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsgY2xpZW50SWRl
bnRpZmllciwgV1RGTW92ZShsYW5nKSwgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFs
dGVybmF0aXZlcywgV1RGTW92ZShvcmlnaW4pIH07CisgICAgYXV0byByZXF1ZXN0SW5mbyA9IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBX
VEZNb3ZlKGxhbmcpLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVz
LCBXVEZNb3ZlKG9yaWdpbiksIGZyYW1lSWRlbnRpZmllciB9OwogICAgIGF1dG8mIG5ld1JlcXVl
c3QgPSBtX3JlcXVlc3RzLmFkZChjbGllbnRJZGVudGlmaWVyLCBtYWtlVW5pcXVlPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4oV1RGTW92ZShyZXF1ZXN0SW5mbykpKS5pdGVyYXRv
ci0+dmFsdWU7CiAKICAgICByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoKm5ld1JlcXVlc3Qp
OwpAQCAtNjQsNyArNjMsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZAogCiB2b2lkIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG1fcGVybWlzc2lvbkNo
ZWNrZXIocmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVl
c3QpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX3Blcm1pc3Npb25DaGVja2VyKHJlcXVl
c3QubGFuZygpLCByZXF1ZXN0LmNsaWVudE9yaWdpbigpLCByZXF1ZXN0LmZyYW1lSWRlbnRpZmll
cigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vha1JlcXVlc3QgPSBt
YWtlV2Vha1B0cihyZXF1ZXN0KV0oYXV0byBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IGVjYmE0MDcwOTQwMzhiMzk3
NjU1ZWNiMDE4ZGMyMTdkYmFhMWFiOGYuLjJmYzI0OGE4ZTEzYmM3NjY1NTQxNjAxNzQ4NWU5NDFk
YmVkY2VhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaD4KQEAgLTQ1LDcgKzQ2LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIHVzaW5nIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
OwotdXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYm
KT4mJik+OwordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
Q2FsbGJhY2smJik+OwogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja1NwZWVjaFJl
Y29nbml0aW9uRW5hYmxlZCA9IEZ1bmN0aW9uPGJvb2woKT47CiAKIGNsYXNzIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlciB7CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2du
aXRpb25DaGVja0lmTW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmKTsKICNlbmRpZgogCi0g
ICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJl
c3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYp
OworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVy
aW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdp
biYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFi
b3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIp
OwogICAgIHZvaWQgaW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggYTI4YjkyMWNi
OTY0YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkxMzI5ZC4uMWY2ZjE0YzU1ZGNjNDk5ZWY5YjYxY2Y4
YjI0NGJkZWRhMDI2OGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcg
QEAKICAqLwogIAogIG1lc3NhZ2VzIC0+IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNv
dW50ZWQgewotICAgIFN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikKKyAgICBTdGFydChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBsYW5n
LCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVy
bmF0aXZlcywgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIpCiAgICAgU3RvcChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgQWJv
cnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIEludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwCmluZGV4IDJjMGRiNzg3MzVjYzMxMzNhMzIwMzZlNTZiNDQ2YjRjOTgzYTNj
MDguLjY1MDQ1MjJjNmRmNDFiNGUzOWZiMzRkZTVjZDZhNDQzN2IyY2JiMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTIxMyw2ICsyMTMsMTEgQEAgdm9pZCBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVueVJlcXVlc3QoVXNlck1lZGlh
UGVybWlzc2lvblJlcXUKICAgICBpZiAocmVhc29uID09IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCkK
ICAgICAgICAgbV9kZW5pZWRSZXF1ZXN0cy5hcHBlbmQoRGVuaWVkUmVxdWVzdCB7IHJlcXVlc3Qu
bWFpbkZyYW1lSUQoKSwgcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCks
IHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QucmVxdWly
ZXNBdWRpb0NhcHR1cmUoKSwgcmVxdWVzdC5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpLCByZXF1ZXN0
LnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSB9KTsKIAorICAgIGlmIChhdXRvIGNhbGxiYWNrID0g
cmVxdWVzdC5kZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKCkpIHsKKyAgICAgICAgY2FsbGJhY2so
ZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICAgICBpZiAobV9wcmVncmFudGVkUmVxdWVzdHMuaXNFbXB0eSgpICYmIHJlcXVlc3QudXNl
clJlcXVlc3QoKS5hdWRpb0NvbnN0cmFpbnRzLmlzVmFsaWQpCiAgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmF1ZGlvQ2FwdHVyZUZhY3RvcnkoKS5yZW1vdmVF
eHRlbnNpdmVPYnNlcnZlcigqdGhpcyk7CkBAIC0yMzQsNiArMjM5LDEyIEBAIHZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50UmVxdWVzdChVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsIHJlcXVlc3QudXNlck1lZGlhSUQoKSwgIiwgdmlkZW86ICIsIHJlcXVlc3Qu
dmlkZW9EZXZpY2UoKS5sYWJlbCgpLCAiLCBhdWRpbzogIiwgcmVxdWVzdC5hdWRpb0RldmljZSgp
LmxhYmVsKCkpOwogCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSByZXF1ZXN0LmRlY2lzaW9uQ29t
cGxldGlvbkhhbmRsZXIoKSkgeworICAgICAgICBtX2dyYW50ZWRSZXF1ZXN0cy5hcHBlbmQobWFr
ZVJlZihyZXF1ZXN0KSk7CisgICAgICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgYXV0byYgdXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IHJl
cXVlc3QudXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpOwogICAgIGF1dG8mIHRvcExl
dmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luKCk7CiAgICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW4odXNlck1lZGlhRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbiwgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3QgPSBtYWtlUmVmKHJlcXVlc3QpXShT
dHJpbmcmJikgbXV0YWJsZSB7CkBAIC02MDIsNiArNjEzLDMzIEBAIHZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1p
c3Npb25SCiAgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QobV9wYWdlLCAqd2ViRnJhbWUsIFdURk1vdmUodXNlck1lZGlhT3JpZ2lu
KSwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbiksICptX2N1cnJlbnRVc2VyTWVkaWFSZXF1ZXN0KTsK
IH0KIAordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2hlY2tV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24oV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHJl
cXVlc3RpbmdPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4s
IGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmIGRldmljZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBmcmFtZSA9IG1f
cGFnZS5wcm9jZXNzKCkud2ViRnJhbWUoZnJhbWVJZGVudGlmaWVyKTsKKyAgICBpZiAoIWZyYW1l
IHx8ICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX3BhZ2UucGFnZUxvYWRTdGF0
ZSgpLmFjdGl2ZVVSTCgpKS0+aXNTYW1lU2NoZW1lSG9zdFBvcnQodG9wT3JpZ2luKSkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVh
dGUoKnRoaXMsIDAsIGZyYW1lSWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCByZXF1ZXN0aW5n
T3JpZ2luLmlzb2xhdGVkQ29weSgpLCB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIFZlY3RvcjxX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiB7IGRldmljZSB9LCB7IH0sIHsgfSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworCisgICAgYXV0byBhY3Rpb24gPSBnZXRSZXF1ZXN0QWN0aW9uKHJl
cXVlc3QuZ2V0KCkpOworICAgIGlmIChhY3Rpb24gPT0gUmVxdWVzdEFjdGlvbjo6RGVueSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgaWYgKGFjdGlvbiA9PSBSZXF1ZXN0QWN0aW9uOjpHcmFudCkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gYXBpUmVxdWVzdGluZ09yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShy
ZXF1ZXN0aW5nT3JpZ2luKTsKKyAgICBhdXRvIGFwaVRvcE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4pOworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBv
bGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KG1fcGFnZSwgKmZyYW1lLCBXVEZNb3Zl
KGFwaVJlcXVlc3RpbmdPcmlnaW4pLCBXVEZNb3ZlKGFwaVRvcE9yaWdpbiksIHJlcXVlc3QuZ2V0
KCkpOworfQorCisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbihjb25zdCBXZWJQ
YWdlUHJveHkmLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oCmluZGV4IDczZTNhMmJlNGU3ZmMwMjJiZmQ1ZTUwOTYxOTBhYjk2YzA1YmYzOTcuLmQ5
ZmY1MjkxNzcyMGFjNmVhMWZkZjU0YTI4Mzc0ZmI2OTZmZjVlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaApAQCAtOTcsNiArOTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRN
b2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pOwogICAgIGJv
b2wgaGFzUGVuZGluZ0NhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2hhc1BlbmRpbmdDYXB0dXJl
OyB9CiAKKyAgICB2b2lkIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0
aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OkNhcHR1
cmVEZXZpY2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAppbmRleCA1MTVkODBmMjRiMTZmNWVkODAz
MTAzZjgyYWE1NDkwMDllMmE1ZTZlLi5hOWZlMDgwOTFlYjk2YmEwMDI1OTE1YTZhYjFmYzUyNDBj
YTk3YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1l
ZGlhSUQsIEZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdp
biwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4s
IFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVh
bVJlcXVlc3QmJiByZXF1ZXN0KQorVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIEZyYW1lSWRlbnRpZmll
ciBtYWluRnJhbWVJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiYmIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+
JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGRlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIp
CiAgICAgOiBtX21hbmFnZXIoJm1hbmFnZXIpCiAgICAgLCBtX3VzZXJNZWRpYUlEKHVzZXJNZWRp
YUlEKQogICAgICwgbV9tYWluRnJhbWVJRChtYWluRnJhbWVJRCkKQEAgLTQxLDYgKzQxLDcgQEAg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eShVc2VyTWVkaWFQZXJtaXMKICAgICAsIG1fZWxpZ2libGVWaWRlb0RldmljZXMoV1RG
TW92ZSh2aWRlb0RldmljZXMpKQogICAgICwgbV9lbGlnaWJsZUF1ZGlvRGV2aWNlcyhXVEZNb3Zl
KGF1ZGlvRGV2aWNlcykpCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKKyAgICAs
IG1fZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRlY2lzaW9uQ29tcGxldGlvbkhh
bmRsZXIpKQogewogfQogCkBAIC05OSw2ICsxMDAsOCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OmRlbnkoVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uIHJlYXNvbikK
IHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6aW52YWxpZGF0ZSgpCiB7CiAg
ICAgbV9tYW5hZ2VyID0gbnVsbHB0cjsKKyAgICBpZiAobV9kZWNpc2lvbkNvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICBtX2RlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCiBW
ZWN0b3I8U3RyaW5nPiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp2aWRlb0Rldmlj
ZVVJRHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCmluZGV4IDNlZjc1MmE5MjhkN2UzNDMxZjVh
MDY1NTNkNTZkNzA0YTcyNDA5ZmUuLmU4YzhkOGRmYTdjNDk1N2M2NGFhODg0ZWM3OGFhMDYzNGY1
ODg1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0NhcHR1cmVEZXZpY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTdHJlYW1SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNiw5ICszNyw5IEBAIGNsYXNzIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OwogCiBjbGFzcyBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB1c2VyTWVkaWFE
b2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHRvcExldmVsRG9j
dW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNl
cywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0KQorICAgIHN0YXRpYyBSZWY8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
LCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwg
VmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2Vi
Q29yZTo6Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFdlYkNvcmU6Ok1lZGlhU3RyZWFt
UmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgZGVjaXNp
b25Db21wbGV0aW9uSGFuZGxlciA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlh
SUQsIG1haW5GcmFtZUlELCBmcmFtZUlELCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
KSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShhdWRpb0RldmljZXMp
LCBXVEZNb3ZlKHZpZGVvRGV2aWNlcyksIFdURk1vdmUocmVxdWVzdCkpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShtYW5hZ2Vy
LCB1c2VyTWVkaWFJRCwgbWFpbkZyYW1lSUQsIGZyYW1lSUQsIFdURk1vdmUodXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKGF1
ZGlvRGV2aWNlcyksIFdURk1vdmUodmlkZW9EZXZpY2VzKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShkZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKSkpOwogICAgIH0KIAogICAgIHZvaWQgYWxs
b3coY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0Rldmlj
ZVVJRCk7CkBAIC04OSw4ICs5MCwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIGRvRGVm
YXVsdEFjdGlvbigpOwogCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gZGVjaXNp
b25Db21wbGV0aW9uSGFuZGxlcigpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9kZWNpc2lvbkNv
bXBsZXRpb25IYW5kbGVyLCB7IH0pOyB9CisKIHByaXZhdGU6Ci0gICAgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYs
IHVpbnQ2NF90IHVzZXJNZWRpYUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1l
SUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
PiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+
JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiB2aWRlb0Rl
dmljZXMsIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYmKTsKKyAgICBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJh
bWVJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmlj
ZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIHZpZGVv
RGV2aWNlcywgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogCiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkqIG1fbWFuYWdlcjsKICAgICB1aW50NjRfdCBtX3VzZXJNZWRpYUlEOwpAQCAtMTAzLDYg
KzEwNiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0IG1fcmVx
dWVzdDsKICAgICBib29sIG1faGFzUGVyc2lzdGVudEFjY2VzcyB7IGZhbHNlIH07CiAgICAgU3Ry
aW5nIG1fZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0OworICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+IG1fZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIFN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpV
c2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggZjEyYzg0NmU4OGRiZDA2MGJhNDVhNTM0ZDhiNmY2MmFmMjkxOTEx
MC4uN2QzMWNhYTg5NjAxMWJlNzdiMmMxNGNkYzExN2Y2NDZjZDNhNzRmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDM5NywxMiArMTAzOTcsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3Rpbmco
KQogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNwZWVj
aFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdl
UHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBs
YW5nLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIW1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcikKICAgICAg
ICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPigqdGhpcyk7CiAKLSAgICBtX3NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlcXVlc3QobGFuZywgY2xpZW50T3JpZ2luLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLT5yZXF1ZXN0KGxhbmcsIGNsaWVudE9yaWdpbiwgZnJhbWVJZGVudGlmaWVy
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQnlEZWZhdWx0QWN0aW9uKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMDQxNSw2ICsxMDQxNSwxOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkJ5RGVmYXVsdEFj
dGlvbihjb25zdCBXZWJDbwogICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci0+ZGVjaWRlQnlEZWZhdWx0QWN0aW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25G
b3JTcGVlY2hSZWNvZ25pdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
IGF1dG8gY2FwdHVyZURldmljZSA9IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZTo6Zmlu
ZENhcHR1cmVEZXZpY2UoKTsKKyAgICBpZiAoIWNhcHR1cmVEZXZpY2UpCisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcigpLmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclNwZWVjaFJlY29nbml0aW9uKGZyYW1l
SWRlbnRpZmllciwgcmVxdWVzdGluZ09yaWdpbiwgdG9wT3JpZ2luLCAqY2FwdHVyZURldmljZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIFdlYkNv
cmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUmVhbHRpbWVNZWRp
YVNvdXJjZUZvclNwZWVjaFJlY29nbml0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggMjQ2NDQ0MjcwNDNkMWU2YmFhN2JhOGE1N2Q2ODU2MWE1NWYwNDI5OC4u
YjQ2ZmJlOGYzMTE3NWRkOWQ4MjgwNmU4YmMzYmYxNmFiNGVkNzMzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAi
U2hhcmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXIuaCIKQEAgLTE4MTYsOCArMTgxNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1l
ZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMgY2FwdHVyZVJlcG9ydGluZ0RlbGF5KSB7
IG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkgPSBjYXB0dXJlUmVwb3J0aW5nRGVsYXk7IH0K
ICAgICBzaXplX3Qgc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyKCkgeyByZXR1cm4gbV9zdXNw
ZW5kTWVkaWFQbGF5YmFja0NvdW50ZXI7IH0KIAotICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25FcnJvcj4mJik+JiYpOworICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdENhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkJ5RGVmYXVsdEFjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFVzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JTcGVlY2hSZWNvZ25pdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQg
c3luY0lmTW9ja0RldmljZXNFbmFibGVkQ2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyNjc3ZWNkNzE2ZjNmNzNmZGI3MmQ3M2Ex
YTk5MjlmZTkxYjZjYzYxLi5lYmNhMDNkMzE5NDdlOGM1ZTRkMjUzZGVmYjZkNDE1NGRjNjc3ZTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE3
MjIsMTMgKzE3MjIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29n
bml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogICAgIEFTU0VSVCgh
bV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAg
YXV0byYgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVy
TWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgYXV0byBw
ZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXShh
dXRvJiBsYW5nLCBhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJs
ZSB7CisgICAgYXV0byBwZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRy
KHRhcmdldFBhZ2UpXShhdXRvJiBsYW5nLCBhdXRvJiBvcmlnaW4sIGF1dG8gZnJhbWVJZGVudGlm
aWVyLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIXdl
YWtQYWdlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFsbG93ZWQs
ICJQYWdlIG5vIGxvbmdlciBleGlzdHMiX3MgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbihsYW5nLCBvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAg
d2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24obGFuZywgb3JpZ2lu
LCBmcmFtZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9Owog
ICAgIGF1dG8gY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBbd2Vha1BhZ2UgPSBt
YWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CiAgICAgICAgIHJldHVybiB3ZWFrUGFnZSAmJiB3
ZWFrUGFnZS0+cHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCmluZGV4IGMzY2M4
Yjk5Mzg5MTMzOTIyOWE0MDk1NzVmM2EzNDc0OTNkYTBmNDMuLjRiNzYzYmNkZWU2M2JkZmY0ZmEx
ZjI5ZGU3ODU2NjBkNDhiNGYxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblNl
cnZlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtNjgsOSArNjksOSBA
QCB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6dW5yZWdpc3RlckNsaWVudChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbgogICAgIG1fY2xpZW50TWFwLnJlbW92ZShjbGllbnQu
aWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246
OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMs
IGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luKQordm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb246OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpTdGFydChjbGllbnRJZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBp
bnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdpbikpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQoY2xpZW50
SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0
aXZlcywgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBmcmFtZUlkZW50aWZpZXIpKTsKIH0KIAogdm9p
ZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDU5NjZlM2Zk
NzczMDUyYzM5MzI3MTQ0MGVkMTM3YjAxMDg1N2VlMjAuLjM0MzgyMTU1NmE3OGE3Yzc5YjM4NWEw
ZDk4MjgxMmViZDM3NGExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ28KIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4gY3Jl
YXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgdm9pZCBz
dGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0
cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJikgZmlu
YWw7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9v
bCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHN0
b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikg
ZmluYWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc4ZGJiNzBiMTlmZGY4YTA2YjMxMzI0ZGRhZDJjMGVk
OTNiNWIxNDkuLmFlMTJhYjlkYjgzNDkwYTg3MWM0MWFmOWU2NDBiMDBhM2ZhYzEzYzAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMS0wMS0yOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAg
ICAgIFVzZSB1c2VyIG1lZGlhIHBlcm1pc3Npb24gcHJvbXB0IGZvciBzcGVlY2ggcmVjb2duaXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTA4
MgorICAgICAgICByZGFyOi8vcHJvYmxlbS83MzM3MjQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NwZWVjaFJlY29nbml0aW9uLm1tOgorICAgICAgICAoLVtTcGVlY2hSZWNvZ25pdGlvblVJ
RGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVyZUF1dGhvcml6YXRpb246ZGVjaXNp
b25IYW5kbGVyOl0pOgorCiAyMDIxLTAxLTI5ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRz
a292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gRW5hYmxlIHJlZmVy
ZW5jZSB0eXBlcyBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQppbmRleCAzOGFiMTc1ZDFm
ZDMxMDkzYzQ4MzI3MDZhMmI4MDg4MWM4N2VkYzhiLi43NDM0NThmMzA5Nzg1Njc3NzJhMGE0ZWY1
YTc4NjFiMzFiNjg0ZGU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KQEAgLTYwLDcgKzYwLDggQEAg
c3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IGNyZWF0ZWRXZWJWaWV3OwogCiAtICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVBdXRob3JpemF0
aW9uOiAoX1dLQ2FwdHVyZURldmljZXMpZGV2aWNlcyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4p
KEJPT0wpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxlcihZRVMpOworICAg
IHBlcm1pc3Npb25SZXF1ZXN0ZWQgPSB0cnVlOworICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRH
cmFudFBlcm1pc3Npb25SZXF1ZXN0KTsKIH0KIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JVUkw6KE5TVVJMICopdXJsIG1h
aW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJZGVudGlmaWVyOihOU1VJbnRl
Z2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpz
YWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkzNTg5N2RjNjgy
ZDZhMTg5NmRhYjg5ODA4NTNkYzAyZDRjNTY0ZTUuLjU4MWMyMmMwNjQwZGIyZmJhYTRhMTIxODJk
MDcxNGUwMTNiZTI2NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMS0yOSAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAgICAgIFVzZSB1c2VyIG1lZGlhIHBlcm1p
c3Npb24gcHJvbXB0IGZvciBzcGVlY2ggcmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTA4MgorICAgICAgICByZGFyOi8vcHJvYmxl
bS83MzM3MjQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAg
ICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQt
aWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0
YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLmh0bWw6CisKIDIwMjEtMDEtMjkgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBmb250LXN0
cmV0Y2ggaXMgbm90IGFwcGxpZWQgdG8gc3lzdGVtLXVpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCmluZGV4IDA3
ZTBlMmMxNmJkYzQyNGM2OTY2NjdlNDc0Y2ZhMTg4Y2UxNDAxMGUuLjgyODA4MTJmMDM0ZTc0ZmI5
MzIzMTgxYWJmMTIwOTA4NGE2MDZjZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCkBAIC03LDcgKzcsNyBA
QCBkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hlbiBwZXJt
aXNzaW9uIGlzIGRlbmllZC4iKTsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgdGVzdFJ1bm5lci5zZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQoZmFsc2UpOworICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVy
bWlzc2lvbihmYWxzZSk7CiB9CiAKIHNob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbiA9IG5ldyB3
ZWJraXRTcGVlY2hSZWNvZ25pdGlvbigpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVj
b2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CmluZGV4IDE5ZjBkYTQzYzgz
MjMwYWMxNDllMDgxMDA5NTQ5ZWNkOWI0OTJiOGYuLjU0ZGQ3ZDc4NzNjNThkOGQ4OWI4M2NiNWNk
Mjg1MTRiNGY2ZDcwZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2du
aXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24t
aW4tcmVtb3ZlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURQogCiAKIFBBU1MgaWZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaWZy
YW1lKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgaWZyYW1lLmNvbnRlbnRXaW5kb3cu
c3RhcnRSZWNvZ25pdGlvbigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpZnJhbWUu
Y29udGVudFdpbmRvdy5zdGFydFJlY29nbml0aW9uKCkgdGhyZXcgZXhjZXB0aW9uIFVua25vd25F
cnJvcjogUmVjb2duaXRpb24gaXMgbm90IGluIGEgdmFsaWQgZnJhbWUuCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1p
ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVj
b2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUuaHRtbAppbmRleCBhOTA1MTFlY2NjYzNlYWJkYWFm
ZjgyNDhjNjkxYzVmZjU1N2Y4MzFlLi5iYTRmY2Y4YWI4N2RiYTBiMDk0ZjZjYzFmMDBiMDRkMmU5
MDE0N2RiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0
YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFt
ZS5odG1sCkBAIC0xMiw3ICsxMiw3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogZnVuY3Rp
b24gdGVzdCgpCiB7CiAgICAgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2lmcmFtZScpWzBdOwotICAgIHNob3VsZE5vdFRocm93KCJpZnJhbWUuY29udGVudFdpbmRvdy5z
dGFydFJlY29nbml0aW9uKCkiKTsKKyAgICBzaG91bGRUaHJvdygiaWZyYW1lLmNvbnRlbnRXaW5k
b3cuc3RhcnRSZWNvZ25pdGlvbigpIik7CiB9CiAKIGZ1bmN0aW9uIHJlbW92ZUZyYW1lKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>