<?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>225025</bug_id>
          
          <creation_ts>2021-04-24 17:07:15 -0700</creation_ts>
          <short_desc>[WebXR] Remove reference cycle in WebXRSession</short_desc>
          <delta_ts>2021-05-09 17:26:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225379</see_also>
          <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>
          
          <blocked>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>adachan</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ifernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>lmoura</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1753966</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-04-24 17:07:15 -0700</bug_when>
    <thetext>[WebXR] Use weak pointers to reference WebXRSessions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753967</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-24 17:09:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/77111217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753969</commentid>
    <comment_count>2</comment_count>
      <attachid>426993</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-04-24 17:22:50 -0700</bug_when>
    <thetext>Created attachment 426993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753970</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-04-24 17:27:48 -0700</bug_when>
    <thetext>I&apos;m surprised this patch builds on gtk/wpe!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754008</commentid>
    <comment_count>4</comment_count>
      <attachid>426993</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-25 09:24:06 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

This all makes me think the bindings are likely to not have marking being done correctly for these classes either, so we will need to make sure to work on that.

&gt; Source/WebCore/ChangeLog:10
&gt; +        WebXRSession was attempting to create a WebXRInputSourceArray in
&gt; +        its constructor initialization that held a strong reference to
&gt; +        itself, which caused a crash. This pattern was used elsewhere too.

...and was a memory leak.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:52
&gt; +    static Ref&lt;WebXRFrame&gt; create(WeakPtr&lt;WebXRSession&gt;, IsAnimationFrame);

All the places you are passing a WeakPtr&lt;WebXRSession&gt; should probably be WeakPtr&lt;WebXRSession&gt;&amp;&amp;.

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:72
&gt; +    if (!m_session)
&gt; +        return;

Perhaps to be safe that nothing causes m_session to become null in the function (and some others), it might make sense to do the makeRefPtr upfront?

auto session = makeRefPtr(m_session)
if (!session)
    return;

?

&gt; Source/WebCore/Modules/webxr/WebXRSession.h:56
&gt; +class WebXRSession final : public RefCounted&lt;WebXRSession&gt;, public CanMakeWeakPtr&lt;WebXRSession&gt;, public EventTargetWithInlineData, public ActiveDOMObject, public PlatformXR::TrackingAndRenderingClient {

This gives WebXRSession two CanMakeWeakPtr&lt;*&gt; parents:
- This new one CanMakeWeakPtr&lt;WebXRSession&gt;
- And EventTargetWithInlineData -&gt; EventTarget -&gt; CanMakeWeakPtr&lt;EventTarget&gt;

I honestly have not worked enough with the weak pointer code in WebCore to know if this makes sense so someone else should review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754011</commentid>
    <comment_count>5</comment_count>
      <attachid>426993</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-25 09:33:41 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:57
&gt; +WebXRBoundedReferenceSpace::WebXRBoundedReferenceSpace(Document&amp; document, WeakPtr&lt;WebXRSession&gt; session, Ref&lt;WebXRRigidTransform&gt;&amp;&amp; offset, XRReferenceSpaceType type)

I believe we don’t usually pass a WeakPtr as parameter. Instead we pass a reference or pointer as usual and we only call makeWeakPtr when we store it as a data member.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.h:56
&gt;&gt; +class WebXRSession final : public RefCounted&lt;WebXRSession&gt;, public CanMakeWeakPtr&lt;WebXRSession&gt;, public EventTargetWithInlineData, public ActiveDOMObject, public PlatformXR::TrackingAndRenderingClient {
&gt; 
&gt; This gives WebXRSession two CanMakeWeakPtr&lt;*&gt; parents:
&gt; - This new one CanMakeWeakPtr&lt;WebXRSession&gt;
&gt; - And EventTargetWithInlineData -&gt; EventTarget -&gt; CanMakeWeakPtr&lt;EventTarget&gt;
&gt; 
&gt; I honestly have not worked enough with the weak pointer code in WebCore to know if this makes sense so someone else should review this.

Good catch. If we already subclass CanMakeWeakPtr from EventTarget then we should not subclass it again here. This  is wasteful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754012</commentid>
    <comment_count>6</comment_count>
      <attachid>426993</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-25 09:37:30 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSpace.h:86
&gt; +    WebXRSession* m_session;

A raw pointer data member should be avoided at all costs. Nowadays we almost always use WeakPtr for these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754013</commentid>
    <comment_count>7</comment_count>
      <attachid>426993</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-25 09:44:12 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        its constructor initialization that held a strong reference to

Note that this was also fixable in one line I believe by calling relaxAdoptionRequirements().

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        itself, which caused a crash. This pattern was used elsewhere too.
&gt; 
&gt; ...and was a memory leak.

But indeed, if we has a cycle that didn’t get broken, a WeakPtr to break the cycle is suitable. I don’t know enough about this WebAPI to know if it is OK that all these objects no longer keep alive the session alive though. I know for example that in WebAudio, AudioNodes have to keep their AudioContext alive for the API to keep functioning after a GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754029</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-04-25 11:20:51 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 426993 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426993&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        its constructor initialization that held a strong reference to
&gt; 
&gt; Note that this was also fixable in one line I believe by calling
&gt; relaxAdoptionRequirements().

Thanks :)

In that case I might land that change first before any of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754032</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-25 11:43:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 426993 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426993&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        its constructor initialization that held a strong reference to
&gt; 
&gt; Note that this was also fixable in one line I believe by calling
&gt; relaxAdoptionRequirements().
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:10
&gt; &gt;&gt; +        itself, which caused a crash. This pattern was used elsewhere too.
&gt; &gt; 
&gt; &gt; ...and was a memory leak.
&gt; 
&gt; But indeed, if we has a cycle that didn’t get broken, a WeakPtr to break the
&gt; cycle is suitable. I don’t know enough about this WebAPI to know if it is OK
&gt; that all these objects no longer keep alive the session alive though. I know
&gt; for example that in WebAudio, AudioNodes have to keep their AudioContext
&gt; alive for the API to keep functioning after a GC.

How do you resolve that in the WebAudio API? With custom marking?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754033</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-25 11:45:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 426993 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426993&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:57
&gt; &gt; +WebXRBoundedReferenceSpace::WebXRBoundedReferenceSpace(Document&amp; document, WeakPtr&lt;WebXRSession&gt; session, Ref&lt;WebXRRigidTransform&gt;&amp;&amp; offset, XRReferenceSpaceType type)
&gt; 
&gt; I believe we don’t usually pass a WeakPtr as parameter. Instead we pass a
&gt; reference or pointer as usual and we only call makeWeakPtr when we store it
&gt; as a data member.
&gt; 

What is the goal of this idiom?  WeakPtr&lt;&gt;&amp;&amp; seems like it is quite clear about what is going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754034</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-25 11:46:07 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #8)
&gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; Comment on attachment 426993 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=426993&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; &gt; +        its constructor initialization that held a strong reference to
&gt; &gt; 
&gt; &gt; Note that this was also fixable in one line I believe by calling
&gt; &gt; relaxAdoptionRequirements().
&gt; 
&gt; Thanks :)
&gt; 
&gt; In that case I might land that change first before any of this.

Please don&apos;t. It seems clearly wrong to create a ref cycle here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754040</commentid>
    <comment_count>12</comment_count>
      <attachid>426993</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-25 12:25:41 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt;&gt;&gt;&gt; +        its constructor initialization that held a strong reference to
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Note that this was also fixable in one line I believe by calling relaxAdoptionRequirements().
&gt;&gt;&gt; 
&gt;&gt;&gt; Thanks :)
&gt;&gt;&gt; 
&gt;&gt;&gt; In that case I might land that change first before any of this.
&gt;&gt; 
&gt;&gt; How do you resolve that in the WebAudio API? With custom marking?
&gt; 
&gt; Please don&apos;t. It seems clearly wrong to create a ref cycle here.

Right, I just looked at the code and there is a clear Ref cycle here With the WebXRSession ref&apos;ing itself via m_inputSources. The minimal fix would be to use a WeakPtr for WebXRInputSourceArray::m_session.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754042</commentid>
    <comment_count>13</comment_count>
      <attachid>426993</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-25 12:31:04 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt;&gt;&gt;&gt;&gt; +        its constructor initialization that held a strong reference to
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Note that this was also fixable in one line I believe by calling relaxAdoptionRequirements().
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Thanks :)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; In that case I might land that change first before any of this.
&gt;&gt;&gt; 
&gt;&gt;&gt; How do you resolve that in the WebAudio API? With custom marking?
&gt;&gt; 
&gt;&gt; Please don&apos;t. It seems clearly wrong to create a ref cycle here.
&gt; 
&gt; Right, I just looked at the code and there is a clear Ref cycle here With the WebXRSession ref&apos;ing itself via m_inputSources. The minimal fix would be to use a WeakPtr for WebXRInputSourceArray::m_session.

... and WebXRInputSource::m_session.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754062</commentid>
    <comment_count>14</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-04-25 13:53:12 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #8)
&gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; Comment on attachment 426993 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=426993&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; &gt; +        its constructor initialization that held a strong reference to
&gt; &gt; 
&gt; &gt; Note that this was also fixable in one line I believe by calling
&gt; &gt; relaxAdoptionRequirements().
&gt; 
&gt; Thanks :)
&gt; 
&gt; In that case I might land that change first before any of this.

Not quite a one line fix. The problem is that WebXRSession has a Ref&lt;WebXRInputSourceArray&gt; and WebXRInputSourceArray keeps a Ref&lt;WebXRSession&gt;.

Even if that were ok in one direction, I can&apos;t call relaxAdoptionRequirement() until the WebXRSession constructor, but the Ref needs to be initialised first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754063</commentid>
    <comment_count>15</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-04-25 13:53:56 -0700</bug_when>
    <thetext>Yep. That&apos;s what I&apos;m doing. (I should have reloaded before commenting)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754071</commentid>
    <comment_count>16</comment_count>
      <attachid>426993</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-25 14:09:46 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:57
&gt;&gt;&gt; +WebXRBoundedReferenceSpace::WebXRBoundedReferenceSpace(Document&amp; document, WeakPtr&lt;WebXRSession&gt; session, Ref&lt;WebXRRigidTransform&gt;&amp;&amp; offset, XRReferenceSpaceType type)
&gt;&gt; 
&gt;&gt; I believe we don’t usually pass a WeakPtr as parameter. Instead we pass a reference or pointer as usual and we only call makeWeakPtr when we store it as a data member.
&gt; 
&gt; What is the goal of this idiom?  WeakPtr&lt;&gt;&amp;&amp; seems like it is quite clear about what is going on.

Well, in the case, the caller uses l has WeakPtr, that might make sense.
In this case, &quot;this&quot; pointer is the one for which we&apos;re creating WeakPtr
so it&apos;s probably more appropriate to pass in WebXRSession&amp;.
That would make it clear that the object isn&apos;t nullptr at the point of the creation.

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:90
&gt;  // https://immersive-web.github.io/webxr/#dom-xrboundedreferencespace-boundsgeometry

Below this code, WebXRBoundedReferenceSpace::updateIfNeeded() indiscriminately dereferences m_session.
How does that work?
It seems to me that we need to keep WebXRSession alive whenever we have one of those *Space objects around.
See my comment for WebXRFrame for potential solutions.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:55
&gt; -    const WebXRSession&amp; session() const { return m_session.get(); }
&gt; +    const WebXRSession* session() const { return m_session.get(); }

Since this is exposed to JS, we need to make sure we keep WebXRSession alive when JS wrapper for this object is alive.
There are a few ways to do this. I think the easiest two options are:
1. We can make WebXRSession::hasPendingActivity return true whenever there is a WebXRFrame
2. Make WebXRFrame add its WebXRSession as an opaque root, and make WebXRSession&apos;s opaque root itself.

&gt; Source/WebCore/Modules/webxr/WebXRInputSource.cpp:73
&gt;          else if (auto* document = downcast&lt;Document&gt;(m_session-&gt;scriptExecutionContext()))

What guarantees that m_session is still alive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754129</commentid>
    <comment_count>17</comment_count>
      <attachid>426993</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-26 01:58:20 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt; +        itself, which caused a crash. This pattern was used elsewhere too.
&gt;&gt; 
&gt;&gt; ...and was a memory leak.
&gt; 
&gt; But indeed, if we has a cycle that didn’t get broken, a WeakPtr to break the cycle is suitable. I don’t know enough about this WebAPI to know if it is OK that all these objects no longer keep alive the session alive though. I know for example that in WebAudio, AudioNodes have to keep their AudioContext alive for the API to keep functioning after a GC.

The idea with the current code was the Ref&lt;WebXRSession&gt; &amp; Ref&lt;WebXRInputsourceArray&gt; cycle is broken in WebXRSession::shutdown or end, which should always be called by the WebXRSystem if users don&apos;t call it manually. The spec doesn&apos;t mention if the session must be kept alive if users hold a WebXRInputsourceArray, but that&apos;s seems to be the case with other objects such as XRSpaces, XRReferenceSpaces or XRFrames. Even in we use a WeakPtr&lt;XRSession&gt; in WebXRInputSourceArray the ref cycle will continue with the XRSpaces hold by each XRInputSource contained by WebXRInputSourceArray.

Anyway, creating the Ref&lt;WebXRSession&gt; in the constructor is crearly wrong. Another pattern I have seen to solve that is create a initialize() function, which would initialize the WebXRInputSourceArray.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:90
&gt;&gt;  // https://immersive-web.github.io/webxr/#dom-xrboundedreferencespace-boundsgeometry
&gt; 
&gt; Below this code, WebXRBoundedReferenceSpace::updateIfNeeded() indiscriminately dereferences m_session.
&gt; How does that work?
&gt; It seems to me that we need to keep WebXRSession alive whenever we have one of those *Space objects around.
&gt; See my comment for WebXRFrame for potential solutions.

I had the same problem when I tried to use weak pointers here. The spec doesn&apos;t mention any exception for not valid XRSession. For example when calling getOffsetReferencesSpace, it needs to reuse the current session member to create a new offsetReferenceSpace. So if we use WebxRSession&amp; ref pattern in the constructor it&apos;s not possible to create the object.
So according to the spec XRSpaces and XRFrames keep the session alive. We could create a issue in the spec to clarify that, because it&apos;s not explicitly mentioned but implicit based on some constraints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754134</commentid>
    <comment_count>18</comment_count>
      <attachid>426993</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-26 02:11:28 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt;&gt; +        itself, which caused a crash. This pattern was used elsewhere too.
&gt;&gt;&gt; 
&gt;&gt;&gt; ...and was a memory leak.
&gt;&gt; 
&gt;&gt; But indeed, if we has a cycle that didn’t get broken, a WeakPtr to break the cycle is suitable. I don’t know enough about this WebAPI to know if it is OK that all these objects no longer keep alive the session alive though. I know for example that in WebAudio, AudioNodes have to keep their AudioContext alive for the API to keep functioning after a GC.
&gt; 
&gt; The idea with the current code was the Ref&lt;WebXRSession&gt; &amp; Ref&lt;WebXRInputsourceArray&gt; cycle is broken in WebXRSession::shutdown or end, which should always be called by the WebXRSystem if users don&apos;t call it manually. The spec doesn&apos;t mention if the session must be kept alive if users hold a WebXRInputsourceArray, but that&apos;s seems to be the case with other objects such as XRSpaces, XRReferenceSpaces or XRFrames. Even in we use a WeakPtr&lt;XRSession&gt; in WebXRInputSourceArray the ref cycle will continue with the XRSpaces hold by each XRInputSource contained by WebXRInputSourceArray.
&gt; 
&gt; Anyway, creating the Ref&lt;WebXRSession&gt; in the constructor is crearly wrong. Another pattern I have seen to solve that is create a initialize() function, which would initialize the WebXRInputSourceArray.

btw why hasn&apos;t this crash been reproduced in the build bots? is it because the assert it&apos;s only enabled in debug builds and currently WebXR tests are only run in WPE release? I created bug 222317 to enable WebXR tests cross platform , we should revisit it to detect this kind of issues before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754136</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-26 02:16:41 -0700</bug_when>
    <thetext>(In reply to Imanol Fernandez from comment #17)
&gt; Comment on attachment 426993 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426993&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt; &gt;&gt;&gt; +        itself, which caused a crash. This pattern was used elsewhere too.
&gt; &gt;&gt; 
&gt; &gt;&gt; ...and was a memory leak.
&gt; &gt; 
&gt; &gt; But indeed, if we has a cycle that didn’t get broken, a WeakPtr to break the cycle is suitable. I don’t know enough about this WebAPI to know if it is OK that all these objects no longer keep alive the session alive though. I know for example that in WebAudio, AudioNodes have to keep their AudioContext alive for the API to keep functioning after a GC.
&gt; 
&gt; The idea with the current code was the Ref&lt;WebXRSession&gt; &amp;
&gt; Ref&lt;WebXRInputsourceArray&gt; cycle is broken in WebXRSession::shutdown or end,
&gt; which should always be called by the WebXRSystem if users don&apos;t call it
&gt; manually. The spec doesn&apos;t mention if the session must be kept alive if
&gt; users hold a WebXRInputsourceArray, but that&apos;s seems to be the case with
&gt; other objects such as XRSpaces, XRReferenceSpaces or XRFrames. Even in we
&gt; use a WeakPtr&lt;XRSession&gt; in WebXRInputSourceArray the ref cycle will
&gt; continue with the XRSpaces hold by each XRInputSource contained by
&gt; WebXRInputSourceArray.

Note that keeping C++ object alive isn&apos;t same as keeping its wrapper object alive. Namely, it&apos;s possible for JS wrapper to be collected without its C++ backing object from being deleted. To solve that problem, we need to use opaque root and/or ActiveDOMObject to group a set of objects that need to be kept alive at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754194</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-26 08:26:41 -0700</bug_when>
    <thetext>(In reply to Imanol Fernandez from comment #17)
&gt; Comment on attachment 426993 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426993&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt; &gt;&gt;&gt; +        itself, which caused a crash. This pattern was used elsewhere too.
&gt; &gt;&gt; 
&gt; &gt;&gt; ...and was a memory leak.
&gt; &gt; 
&gt; &gt; But indeed, if we has a cycle that didn’t get broken, a WeakPtr to break the cycle is suitable. I don’t know enough about this WebAPI to know if it is OK that all these objects no longer keep alive the session alive though. I know for example that in WebAudio, AudioNodes have to keep their AudioContext alive for the API to keep functioning after a GC.
&gt; 
&gt; The idea with the current code was the Ref&lt;WebXRSession&gt; &amp;
&gt; Ref&lt;WebXRInputsourceArray&gt; cycle is broken in WebXRSession::shutdown or end,
&gt; which should always be called by the WebXRSystem if users don&apos;t call it
&gt; manually.

Clearly the current code does NOT break the cycle in WebXRSession::shutdown(). Just look at WebXRSession::m_inputSources &amp; WebXRInputSourceArray::m_session, Both Ref&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754197</commentid>
    <comment_count>21</comment_count>
      <attachid>426993</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-26 08:39:52 -0700</bug_when>
    <thetext>Comment on attachment 426993
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt;&gt;&gt;&gt;&gt; +        itself, which caused a crash. This pattern was used elsewhere too.
&gt;&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt;&gt; ...and was a memory leak.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; But indeed, if we has a cycle that didn’t get broken, a WeakPtr to break the cycle is suitable. I don’t know enough about this WebAPI to know if it is OK that all these objects no longer keep alive the session alive though. I know for example that in WebAudio, AudioNodes have to keep their AudioContext alive for the API to keep functioning after a GC.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; The idea with the current code was the Ref&lt;WebXRSession&gt; &amp; Ref&lt;WebXRInputsourceArray&gt; cycle is broken in WebXRSession::shutdown or end, which should always be called by the WebXRSystem if users don&apos;t call it manually. The spec doesn&apos;t mention if the session must be kept alive if users hold a WebXRInputsourceArray, but that&apos;s seems to be the case with other objects such as XRSpaces, XRReferenceSpaces or XRFrames. Even in we use a WeakPtr&lt;XRSession&gt; in WebXRInputSourceArray the ref cycle will continue with the XRSpaces hold by each XRInputSource contained by WebXRInputSourceArray.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Anyway, creating the Ref&lt;WebXRSession&gt; in the constructor is crearly wrong. Another pattern I have seen to solve that is create a initialize() function, which would initialize the WebXRInputSourceArray.
&gt;&gt;&gt; 
&gt;&gt;&gt; btw why hasn&apos;t this crash been reproduced in the build bots? is it because the assert it&apos;s only enabled in debug builds and currently WebXR tests are only run in WPE release? I created bug 222317 to enable WebXR tests cross platform , we should revisit it to detect this kind of issues before landing.
&gt;&gt; 
&gt;&gt; Note that keeping C++ object alive isn&apos;t same as keeping its wrapper object alive. Namely, it&apos;s possible for JS wrapper to be collected without its C++ backing object from being deleted. To solve that problem, we need to use opaque root and/or ActiveDOMObject to group a set of objects that need to be kept alive at the same time.
&gt; 
&gt; Clearly the current code does NOT break the cycle in WebXRSession::shutdown(). Just look at WebXRSession::m_inputSources &amp; WebXRInputSourceArray::m_session, Both Ref&lt;&gt;.

ah yes, you are right, I remember setting it to nullptr but it probably was done in a older patch using RefPtr which I changed later. Right now it clears the contents (internal input sources list) but not the reference itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754396</commentid>
    <comment_count>22</comment_count>
      <attachid>427094</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-04-26 14:48:54 -0700</bug_when>
    <thetext>Created attachment 427094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754531</commentid>
    <comment_count>23</comment_count>
      <attachid>427094</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-27 02:14:45 -0700</bug_when>
    <thetext>Comment on attachment 427094
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:-107
&gt; -    if (&amp;space.session() != m_session.ptr())

We should check the case of both space.session and m_session being nullptr here and below.

&gt; Source/WebCore/Modules/webxr/WebXRInputSource.cpp:65
&gt; +    if (!m_session)

Would it make sense to use the pattern that Sam mentioned?

auto session = makeRefPtr(m_session)
if (!session)
    return;

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:71
&gt; +    if (!m_session)

Would it make sense to use the pattern that Sam mentioned?

auto session = makeRefPtr(m_session)
if (!session)
    return;

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:545
&gt; +            /*

Why is this commented out?

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:584
&gt; +/*

Why is this commented out?

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:144
&gt; +/*

Why is this commented out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757564</commentid>
    <comment_count>24</comment_count>
      <attachid>427094</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-06 12:12:49 -0700</bug_when>
    <thetext>Comment on attachment 427094
Patch

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:-107
&gt;&gt; -    if (&amp;space.session() != m_session.ptr())
&gt; 
&gt; We should check the case of both space.session and m_session being nullptr here and below.

I added a check that m_session is not null. That should cover the space.session() case too, with the above line, as well as baseSpace.session().

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSource.cpp:65
&gt;&gt; +    if (!m_session)
&gt; 
&gt; Would it make sense to use the pattern that Sam mentioned?
&gt; 
&gt; auto session = makeRefPtr(m_session)
&gt; if (!session)
&gt;     return;

Yes.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:71
&gt;&gt; +    if (!m_session)
&gt; 
&gt; Would it make sense to use the pattern that Sam mentioned?
&gt; 
&gt; auto session = makeRefPtr(m_session)
&gt; if (!session)
&gt;     return;

Done.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:545
&gt;&gt; +            /*
&gt; 
&gt; Why is this commented out?

This is a mistake.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:144
&gt;&gt; +/*
&gt; 
&gt; Why is this commented out?

This was a mistake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757674</commentid>
    <comment_count>25</comment_count>
      <attachid>427945</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-06 15:39:54 -0700</bug_when>
    <thetext>Created attachment 427945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757679</commentid>
    <comment_count>26</comment_count>
      <attachid>427945</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-06 15:56:45 -0700</bug_when>
    <thetext>Comment on attachment 427945
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:47
&gt; +Ref&lt;WebXRBoundedReferenceSpace&gt; WebXRBoundedReferenceSpace::create(Document&amp; document, WebXRSession* session, XRReferenceSpaceType type)

This should take a WebXRSession&amp; not a WebXRSession*. The only caller knows session is non-null on construction.

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:52
&gt; +Ref&lt;WebXRBoundedReferenceSpace&gt; WebXRBoundedReferenceSpace::create(Document&amp; document, WebXRSession* session, Ref&lt;WebXRRigidTransform&gt;&amp;&amp; offset, XRReferenceSpaceType type)

Also should probably be a reference. Is this called? Maybe it can be removed.

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:57
&gt; +WebXRBoundedReferenceSpace::WebXRBoundedReferenceSpace(Document&amp; document, WebXRSession* session, Ref&lt;WebXRRigidTransform&gt;&amp;&amp; offset, XRReferenceSpaceType type)

Should be a reference.

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.h:43
&gt; +    static Ref&lt;WebXRBoundedReferenceSpace&gt; create(Document&amp;, WebXRSession*, XRReferenceSpaceType);
&gt; +    static Ref&lt;WebXRBoundedReferenceSpace&gt; create(Document&amp;, WebXRSession*, Ref&lt;WebXRRigidTransform&gt;&amp;&amp;, XRReferenceSpaceType);

Is this actually needed? Does the WebXRSession own a WebXRBoundedReferenceSpace?

&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:82
&gt; -    Ref&lt;WebXRSession&gt; m_session;
&gt; +    WeakPtr&lt;WebXRSession&gt; m_session;

Same question. Is this needed? Does the session own the frame?

&gt; Source/WebCore/Modules/webxr/WebXRSession.h:132
&gt; -    Ref&lt;WebXRInputSourceArray&gt; m_inputSources;
&gt; +    RefPtr&lt;WebXRInputSourceArray&gt; m_inputSources;

What is this change for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757684</commentid>
    <comment_count>27</comment_count>
      <attachid>427945</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-06 16:02:45 -0700</bug_when>
    <thetext>Comment on attachment 427945
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRInputSource.cpp:50
&gt; +WebXRInputSource::WebXRInputSource(Document&amp; document, WebXRSession* session, double timestamp, const PlatformXR::Device::FrameData::InputSource&amp; source)

This can be a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758140</commentid>
    <comment_count>28</comment_count>
      <attachid>428071</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-07 19:10:17 -0700</bug_when>
    <thetext>Created attachment 428071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758144</commentid>
    <comment_count>29</comment_count>
      <attachid>428073</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-07 19:22:37 -0700</bug_when>
    <thetext>Created attachment 428073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758315</commentid>
    <comment_count>30</comment_count>
      <attachid>428121</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-09 02:35:45 -0700</bug_when>
    <thetext>Created attachment 428121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758329</commentid>
    <comment_count>31</comment_count>
      <attachid>428121</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-09 09:13:38 -0700</bug_when>
    <thetext>Comment on attachment 428121
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRInputSourceArray.cpp:54
&gt; +
&gt; +void WebXRInputSourceArray::ref()

Accidental extra newline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758356</commentid>
    <comment_count>32</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-05-09 12:05:07 -0700</bug_when>
    <thetext>Committed r277251 (237520@main): &lt;https://commits.webkit.org/237520@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758391</commentid>
    <comment_count>33</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-05-09 17:23:16 -0700</bug_when>
    <thetext>Reopening for WPE buildfix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758392</commentid>
    <comment_count>34</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-05-09 17:26:11 -0700</bug_when>
    <thetext>Committed r277254 (237523@main): &lt;https://commits.webkit.org/237523@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426993</attachid>
            <date>2021-04-24 17:22:50 -0700</date>
            <delta_ts>2021-04-26 14:48:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225025-20210425102248.patch</filename>
            <type>text/plain</type>
            <size>39331</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzUyMjU4NzIwNzE4OTk5
MjZjODVkZjkxNGI1NWFiNzhjZGM2NGU5My4uOTk5YjU0NjBlMDNhMjliMWI3MDYyYTA1YzZmMGJi
Y2NkOGY4NTM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTA0LTI0ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIFVzZSB3ZWFrIHBv
aW50ZXJzIHRvIHJlZmVyZW5jZSBXZWJYUlNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJYUlNlc3Npb24gd2FzIGF0dGVtcHRpbmcgdG8g
Y3JlYXRlIGEgV2ViWFJJbnB1dFNvdXJjZUFycmF5IGluCisgICAgICAgIGl0cyBjb25zdHJ1Y3Rv
ciBpbml0aWFsaXphdGlvbiB0aGF0IGhlbGQgYSBzdHJvbmcgcmVmZXJlbmNlIHRvCisgICAgICAg
IGl0c2VsZiwgd2hpY2ggY2F1c2VkIGEgY3Jhc2guIFRoaXMgcGF0dGVybiB3YXMgdXNlZCBlbHNl
d2hlcmUgdG9vLgorCisgICAgICAgIFJlcGxhY2UgdGhlIHN0cm9uZyByZWZlcmVuY2VzIHRvIFdl
YlhSU2Vzc2lvbiB3aXRoIHdlYWsgcG9pbnRlcnMsCisgICAgICAgIHdoaWNoIHdpbGwgYXZvaWQg
dGhlIHNpdHVhdGlvbiB3aGVyZSB3ZSBrZWVwIHRoZSBzZXNzaW9uIGFsaXZlIGlmCisgICAgICAg
IGFueSBvZiB0aGUgb3RoZXIgb2JqZWN0cyBhcmUgc3RpbGwgYXJvdW5kLgorCisgICAgICAgIFRo
ZXJlIGlzIG9uZSBwbGFjZSB3aGVyZSB0aGUgY2hhbmdlIGRpZG4ndCBxdWl0ZSB3b3JrOiBXZWJY
UlNwYWNlLmgKKyAgICAgICAgSW4gdGhlcmUsIFdlYlhSVmlld2VyU3BhY2UgdGFrZXMgYSByZWZl
cmVuY2UgdG8gYW4gWFJTZXNzaW9uIGJ1dAorICAgICAgICBzZXJ2ZXMgaXQgYmFjayBhcyBhIHBv
aW50ZXIuIFNvbWV0aGluZyBpbiB0aGUgSlMgYmluZGluZ3Mgd2FzIHVuaGFwcHkKKyAgICAgICAg
d2l0aCBwcm92aWRpbmcgYSB3ZWFrIHBvaW50ZXIgaGVyZS4KKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmNwcDogSW5oZXJpdCBmcm9tIFdlYWtQdHIuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlLmNwcDogUmVwbGFjZSBSZWY8V2ViWFJTZXNzaW9uPiB3aXRoCisgICAgICAgIFdlYWtQdHI8
V2ViWFJTZXNzaW9uPiBhbmQgZG9uJ3QgdXNlIFdURk1vdmUgYW55IG1vcmUuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Z2V0
T2Zmc2V0UmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSRnJhbWU6OldlYlhSRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJG
cmFtZTo6cG9wdWxhdGVQb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmdldFZp
ZXdlclBvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5w
dXRTb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpX
ZWJYUklucHV0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OnVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpjcmVhdGVFdmVudCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJJbnB1dFNvdXJjZUFycmF5OjpXZWJYUklucHV0U291cmNlQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9yVXBkYXRlZElucHV0U291cmNlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUklucHV0U3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0
U3BhY2U6OldlYlhSSW5wdXRTcGFjZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklu
cHV0U3BhY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJl
ZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3Bh
Y2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTcGFjZTo6aXNQb3NpdGlvbkVtdWxhdGVkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSVmlld2VyU3BhY2U6OldlYlhSVmlld2VyU3BhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJWaWV3ZXJTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSV2ViR0xMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmdldFZpZXdwb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU9wYXF1ZUZyYW1lYnVmZmVyKTogRGVsZXRlZC4KKwog
MjAyMS0wNC0yMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAog
ICAgICAgICBbU09VUF0gTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAK
aW5kZXggMGExYWJlYTg4M2Q3Y2NlNjRjODdmM2NhNjg3MWVhNmEyOTk2ZjA3MC4uNTQ0MTU4NjYw
OTU2M2E3MTkyMjNhNTQ1MDI5M2E3YzczMTVjZDU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAK
QEAgLTQ0LDE4ICs0NCwxOCBAQCBzdGF0aWMgY29uc3RleHByIGludCBNaW5pbXVtQm91bmRzVmVy
dGljZXMgPSAzOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UpOwogCi1SZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJT
ZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8V2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gc2Vzc2lvbiwgWFJSZWZl
cmVuY2VTcGFjZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdp
ZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV2ViWFJSaWdpZFRy
YW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUpKTsKIH0KIAotUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlPiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8V2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gc2Vzc2lvbiwgUmVmPFdlYlhSUmln
aWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50
LCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lv
biwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7CiB9CiAKLVdlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxX
ZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0
LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQotICAgIDogV2ViWFJSZWZlcmVuY2VTcGFjZShk
b2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKQorV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKERvY3VtZW50
JiBkb2N1bWVudCwgV2Vha1B0cjxXZWJYUlNlc3Npb24+IHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lk
VHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKKyAgICA6IFdl
YlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIHNlc3Npb24sIFdURk1vdmUob2Zmc2V0KSwgdHlw
ZSkKIHsKIH0KIApAQCAtODQsNyArODQsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViWFJSZWZlcmVu
Y2VTcGFjZT4+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcgogICAg
IC8vIFNldCBvZmZzZXRTcGFjZeKAmXMgb3JpZ2luIG9mZnNldCB0byB0aGUgcmVzdWx0IG9mIG11
bHRpcGx5aW5nIGJhc2XigJlzIG9yaWdpbiBvZmZzZXQgYnkgb3JpZ2luT2Zmc2V0IGluIHRoZSBy
ZWxldmFudCByZWFsbSBvZiBiYXNlLgogICAgIGF1dG8gb2Zmc2V0ID0gV2ViWFJSaWdpZFRyYW5z
Zm9ybTo6Y3JlYXRlKG9yaWdpbk9mZnNldCgpLnJhd1RyYW5zZm9ybSgpICogb2Zmc2V0VHJhbnNm
b3JtLnJhd1RyYW5zZm9ybSgpKTsKIAotICAgIHJldHVybiB7IGNyZWF0ZSgqZG9jdW1lbnQsIG1f
c2Vzc2lvbi5jb3B5UmVmKCksIFdURk1vdmUob2Zmc2V0KSwgbV90eXBlKSB9OworICAgIHJldHVy
biB7IGNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbiwgV1RGTW92ZShvZmZzZXQpLCBtX3R5cGUp
IH07CiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14
cmJvdW5kZWRyZWZlcmVuY2VzcGFjZS1ib3VuZHNnZW9tZXRyeQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCmlu
ZGV4IDc2ZTA5NmFhOWNjN2Q0NmM0ZDgwNDEwM2U1N2FlYzRmY2NiYmE3OGUuLmM0MmRjYjY1Mjgz
ZDc3ZjQ5Njg0MWU4OWMyY2ZiYTE4YzRmOWEzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKQEAgLTM5
LDggKzM5LDggQEAgY2xhc3MgRE9NUG9pbnRSZWFkT25seTsKIGNsYXNzIFdlYlhSQm91bmRlZFJl
ZmVyZW5jZVNwYWNlIGZpbmFsOiBwdWJsaWMgV2ViWFJSZWZlcmVuY2VTcGFjZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3Vt
ZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwotICAgIHN0
YXRpYyBSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJl
ZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5j
ZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4g
Y3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+LCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRl
KERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgdmlydHVhbCB+V2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2UoKTsKIApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0
aW9uT3I8UmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShj
b25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8
V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIFdlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+LCBS
ZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAg
Ym9vbCBpc0JvdW5kZWRSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKaW5kZXgg
NzhmNDFkOWI4ZmQ5NmViOGMwZmQxNWFlZTNkMzFiODNlYjIxYzkyMC4uNTMzMTg3ODU5ODdiZTU4
MTliNDAzNGEwZTg5ZjU4MzgyZDkyNTY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSRnJhbWUuY3BwCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJGcmFtZSk7CiAKLVJlZjxXZWJY
UkZyYW1lPiBXZWJYUkZyYW1lOjpjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBJ
c0FuaW1hdGlvbkZyYW1lIGlzQW5pbWF0aW9uRnJhbWUpCitSZWY8V2ViWFJGcmFtZT4gV2ViWFJG
cmFtZTo6Y3JlYXRlKFdlYWtQdHI8V2ViWFJTZXNzaW9uPiBzZXNzaW9uLCBJc0FuaW1hdGlvbkZy
YW1lIGlzQW5pbWF0aW9uRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJG
cmFtZShXVEZNb3ZlKHNlc3Npb24pLCBpc0FuaW1hdGlvbkZyYW1lKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJGcmFtZShzZXNzaW9uLCBpc0FuaW1hdGlvbkZyYW1lKSk7CiB9CiAK
LVdlYlhSRnJhbWU6OldlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBJc0Fu
aW1hdGlvbkZyYW1lIGlzQW5pbWF0aW9uRnJhbWUpCitXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKFdl
YWtQdHI8V2ViWFJTZXNzaW9uPiBzZXNzaW9uLCBJc0FuaW1hdGlvbkZyYW1lIGlzQW5pbWF0aW9u
RnJhbWUpCiAgICAgOiBtX2lzQW5pbWF0aW9uRnJhbWUoaXNBbmltYXRpb25GcmFtZSA9PSBJc0Fu
aW1hdGlvbkZyYW1lOjpZZXMpCi0gICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAg
ICAsIG1fc2Vzc2lvbihzZXNzaW9uKQogewogfQogCkBAIC05OCwxNyArOTgsMjAgQEAgc3RydWN0
IFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2UgewogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jcG9wdWxhdGUtdGhlLXBvc2UKIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFdl
YlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJYUlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJT
cGFjZSYgYmFzZVNwYWNlKQogeworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKwogICAgIC8vIDEuIElmIGZyYW1l4oCZ
cyBhY3RpdmUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICghbV9hY3RpdmUpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgLy8gMi4gTGV0IHNlc3Npb24g
YmUgZnJhbWXigJlzIHNlc3Npb24gb2JqZWN0LgogICAgIC8vIDMuIElmIHNwYWNl4oCZcyBzZXNz
aW9uIGRvZXMgbm90IGVxdWFsIHNlc3Npb24sIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoJnNwYWNlLnNlc3Npb24oKSAhPSBtX3Nlc3Np
b24ucHRyKCkpCisgICAgaWYgKHNwYWNlLnNlc3Npb24oKSAhPSBtX3Nlc3Npb24uZ2V0KCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgLy8g
NC4gSWYgYmFzZVNwYWNl4oCZcyBzZXNzaW9uIGRvZXMgbm90IGVxdWFsIHNlc3Npb24sIHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoJmJh
c2VTcGFjZS5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgIGlmIChiYXNlU3BhY2Uu
c2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5nZXQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICAvLyA1LiBDaGVjayBpZiBwb3NlcyBtYXkgYmUg
cmVwb3J0ZWQgYW5kLCBpZiBub3QsIHRocm93IGEgU2VjdXJpdHlFcnJvciBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCkBAIC0xNDUsNiArMTQ4LDkgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8V2ViWFJG
cmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZShjb25zdAogLy8g
aHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhyZnJhbWUtZ2V0dmll
d2VycG9zZQogRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSVmlld2VyUG9zZT4+IFdlYlhSRnJhbWU6
OmdldFZpZXdlclBvc2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJYUlJlZmVy
ZW5jZVNwYWNlJiByZWZlcmVuY2VTcGFjZSkKIHsKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKICAgICAvLyAxLiBM
ZXQgZnJhbWUgYmUgdGhpcy4KICAgICAvLyAyLiBMZXQgc2Vzc2lvbiBiZSBmcmFtZeKAmXMgc2Vz
c2lvbiBvYmplY3QuCiAgICAgLy8gMy4gSWYgZnJhbWXigJlzIGFuaW1hdGlvbkZyYW1lIGJvb2xl
YW4gaXMgZmFsc2UsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKaW5kZXggMTUw
NTAzMTVhNTQyOTU0MDA5OGViOTNmMzliODA3ZWUyNmQ3N2ZlNC4uNzZlYzgwYjNlMzdiMjhiM2Iy
MTQyOGQ4NDU0ZmQ4YjEyZjM0YjFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmgKQEAgLTMwLDE3ICszMCwxOCBAQAogI2luY2x1ZGUgIkRPTUhpZ2hSZXNUaW1l
U3RhbXAuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtWFIu
aCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBXZWJYUlBvc2U7CiBjbGFzcyBX
ZWJYUlJlZmVyZW5jZVNwYWNlOwotY2xhc3MgV2ViWFJTZXNzaW9uOwogY2xhc3MgV2ViWFJTcGFj
ZTsKIGNsYXNzIFdlYlhSVmlld2VyUG9zZTsKIApAQCAtNDgsMTAgKzQ5LDEwIEBAIGNsYXNzIFdl
YlhSRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkZyYW1lPiB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChXZWJYUkZyYW1lKTsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIElzQW5p
bWF0aW9uRnJhbWUgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFt
ZT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYsIElzQW5pbWF0aW9uRnJhbWUpOworICAgIHN0
YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFdlYWtQdHI8V2ViWFJTZXNzaW9uPiwgSXNBbmlt
YXRpb25GcmFtZSk7CiAgICAgfldlYlhSRnJhbWUoKTsKIAotICAgIGNvbnN0IFdlYlhSU2Vzc2lv
biYgc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorICAgIGNvbnN0
IFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsg
fQogCiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSVmlld2VyUG9zZT4+IGdldFZpZXdlclBv
c2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJik7CiAgICAgRXhj
ZXB0aW9uT3I8UmVmUHRyPFdlYlhSUG9zZT4+IGdldFBvc2UoY29uc3QgRG9jdW1lbnQmLCBjb25z
dCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOwpAQCAtNjYsNyArNjcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeEZyb21Qb3NlKGNvbnN0
IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlJik7CiAKIHByaXZhdGU6Ci0gICAg
V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmLCBJc0FuaW1hdGlvbkZyYW1lKTsKKyAgICBX
ZWJYUkZyYW1lKFdlYWtQdHI8V2ViWFJTZXNzaW9uPiwgSXNBbmltYXRpb25GcmFtZSk7CiAKICAg
ICBib29sIGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5jZVNwYWNlKGNvbnN0
IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJikgY29uc3Q7CiAgICAgYm9vbCBpc0xvY2Fs
UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYpIGNvbnN0OwpAQCAtNzksNyArODAsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0FuaW1hdGlvbkZyYW1lIHsgZmFsc2UgfTsKICAgICBE
T01IaWdoUmVzVGltZVN0YW1wIG1fdGltZSB7IDAgfTsKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSBtX2RhdGE7Ci0gICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAg
IFdlYWtQdHI8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5w
dXRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291
cmNlLmNwcAppbmRleCBhZmQyYWQyOTJjZjllNjQzNjQzNjBhNjJmMWE3NjA4YzA1Y2I4ZjgwLi4w
MGY5ZTkxMjJhOGE1YzRjYTQ0NzlkNjI5MzhkMGUyOGNiMzdkMWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKQEAgLTQyLDE0ICs0
MiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJYUklucHV0U291cmNlKTsKIAotUmVmPFdlYlhSSW5wdXRTb3VyY2U+IFdlYlhSSW5wdXRT
b3VyY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vz
c2lvbiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlJiBzb3VyY2UpCitSZWY8V2ViWFJJbnB1dFNvdXJjZT4gV2ViWFJJbnB1
dFNvdXJjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vha1B0cjxXZWJYUlNlc3Npb24+
IHNlc3Npb24sIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlhSSW5wdXRTb3VyY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHRpbWVzdGFtcCwg
c291cmNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZShkb2N1
bWVudCwgc2Vzc2lvbiwgdGltZXN0YW1wLCBzb3VyY2UpKTsKIH0KIAotV2ViWFJJbnB1dFNvdXJj
ZTo6V2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+
JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCi0gICAgOiBtX3Nlc3Npb24oV1RGTW92ZShz
ZXNzaW9uKSkKLSAgICAsIG1fdGFyZ2V0UmF5U3BhY2UoV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUo
ZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIHNvdXJjZS5wb2ludGVyT3JpZ2luKSkKK1dl
YlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFr
UHRyPFdlYlhSU2Vzc2lvbj4gc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCisgICAgOiBtX3Nl
c3Npb24oc2Vzc2lvbikKKyAgICAsIG1fdGFyZ2V0UmF5U3BhY2UoV2ViWFJJbnB1dFNwYWNlOjpj
cmVhdGUoZG9jdW1lbnQsIG1fc2Vzc2lvbiwgc291cmNlLnBvaW50ZXJPcmlnaW4pKQogICAgICwg
bV9jb25uZWN0VGltZSh0aW1lc3RhbXApCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAgICAgLCBtX2dh
bWVwYWQoR2FtZXBhZDo6Y3JlYXRlKFdlYlhSR2FtZXBhZCh0aW1lc3RhbXAsIHRpbWVzdGFtcCwg
c291cmNlKSkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6dXBkYXRl
KGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVECiAgICAg
ICAgIGlmIChtX2dyaXBTcGFjZSkKICAgICAgICAgICAgIG1fZ3JpcFNwYWNlLT5zZXRQb3NlKCpn
cmlwT3JpZ2luKTsKICAgICAgICAgZWxzZSBpZiAoYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4obV9zZXNzaW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQotICAgICAgICAg
ICAgbV9ncmlwU3BhY2UgPSBXZWJYUklucHV0U3BhY2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vz
c2lvbi5jb3B5UmVmKCksICpncmlwT3JpZ2luKTsKKyAgICAgICAgICAgIG1fZ3JpcFNwYWNlID0g
V2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24sICpncmlwT3JpZ2lu
KTsKICAgICB9IGVsc2UKICAgICAgICAgbV9ncmlwU3BhY2UgPSBudWxscHRyOwogI2lmIEVOQUJM
RShHQU1FUEFEKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6cG9s
bEV2ZW50cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+JiBldmVudHMpCiBSZWY8WFJJ
bnB1dFNvdXJjZUV2ZW50PiBXZWJYUklucHV0U291cmNlOjpjcmVhdGVFdmVudChjb25zdCBBdG9t
U3RyaW5nJiBuYW1lKQogewogICAgIFhSSW5wdXRTb3VyY2VFdmVudDo6SW5pdCBpbml0OwotICAg
IGluaXQuZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobV9zZXNzaW9uLmNvcHlSZWYoKSwgV2Vi
WFJGcmFtZTo6SXNBbmltYXRpb25GcmFtZTo6Tm8pOworICAgIGluaXQuZnJhbWUgPSBXZWJYUkZy
YW1lOjpjcmVhdGUobV9zZXNzaW9uLCBXZWJYUkZyYW1lOjpJc0FuaW1hdGlvbkZyYW1lOjpObyk7
CiAgICAgaW5pdC5pbnB1dFNvdXJjZSA9IG1ha2VSZWZQdHIoKnRoaXMpOwogCiAgICAgcmV0dXJu
IFhSSW5wdXRTb3VyY2VFdmVudDo6Y3JlYXRlKG5hbWUsIGluaXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaAppbmRleCBiMzIwYWU3MTg5NTNh
Yzk0MjdmM2Q1NTIyMWMyN2FlNDQwMmQ3YzRkLi44NDg2M2NjNGZlMDM0YjgyNWUwMGNhOGNhZWJi
Mjg5MjA5MzFhMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
SW5wdXRTb3VyY2UuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBJbnB1dFNvdXJjZSA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZTsKICAgICB1c2luZyBJbnB1dFNvdXJjZUJ1dHRvbiA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbjsKIAotICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNv
dXJjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgZG91YmxlIHRpbWVz
dGFtcCwgY29uc3QgSW5wdXRTb3VyY2UmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRTb3Vy
Y2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiwgZG91YmxlIHRpbWVz
dGFtcCwgY29uc3QgSW5wdXRTb3VyY2UmKTsKICAgICB+V2ViWFJJbnB1dFNvdXJjZSgpOwogCiAg
ICAgUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2UuaGFuZGxlOyB9CkBAIC03MywxMSArNzQsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
cG9sbEV2ZW50cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CiAKIHByaXZhdGU6
Ci0gICAgV2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGRv
dWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlJik7CisgICAgV2ViWFJJbnB1dFNvdXJj
ZShEb2N1bWVudCYsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiwgZG91YmxlIHRpbWVzdGFtcCwgY29u
c3QgSW5wdXRTb3VyY2UmKTsKIAogICAgIFJlZjxYUklucHV0U291cmNlRXZlbnQ+IGNyZWF0ZUV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmKTsKIAotICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lv
bjsKKyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIElucHV0U291cmNl
IG1fc291cmNlOwogICAgIFJlZjxXZWJYUklucHV0U3BhY2U+IG1fdGFyZ2V0UmF5U3BhY2U7CiAg
ICAgUmVmUHRyPFdlYlhSSW5wdXRTcGFjZT4gbV9ncmlwU3BhY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKaW5kZXgg
MWI5YzU3NGJiZWQ2MzcyYmQ3M2RiY2JjZDBmYWYzNmRlYmY3ZGY5NS4uYmUxYzY1ODNjZGQ4NjMz
ZDA1YWQxN2NhNjk4MGZmNDQ3YThhMDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcApAQCAtMzgsMTMgKzM4LDEz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YlhSSW5wdXRTb3VyY2VBcnJheSk7CiAKLVJlZjxXZWJYUklucHV0U291cmNlQXJyYXk+IFdlYlhS
SW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKK1Jl
ZjxXZWJYUklucHV0U291cmNlQXJyYXk+IFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKFdl
YWtQdHI8V2ViWFJTZXNzaW9uPiBzZXNzaW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlhSSW5wdXRTb3VyY2VBcnJheShXVEZNb3ZlKHNlc3Npb24pKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZUFycmF5KHNlc3Npb24pKTsKIH0KIAotV2ViWFJJ
bnB1dFNvdXJjZUFycmF5OjpXZWJYUklucHV0U291cmNlQXJyYXkoUmVmPFdlYlhSU2Vzc2lvbj4m
JiBzZXNzaW9uKQotICAgIDogbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCitXZWJYUklucHV0
U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3VyY2VBcnJheShXZWFrUHRyPFdlYlhSU2Vzc2lvbj4g
c2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQogewogfQogCkBAIC02OCw2ICs2OCw5
IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjbGVhcigpCiAvLyBodHRwczovL2ltbWVy
c2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2Vz
CiB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNv
bnN0IElucHV0U291cmNlTGlzdCYgaW5wdXRTb3VyY2VzKQogeworICAgIGlmICghbV9zZXNzaW9u
KQorICAgICAgICByZXR1cm47CisKICAgICBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+
PiBhZGRlZDsKICAgICBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiByZW1vdmVkOwog
ICAgIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4gaW5wdXRFdmVudHM7CkBAIC03OCwx
MiArODEsMTIgQEAgdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0ZShkb3VibGUgdGlt
ZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmIGlucHUKICAgICBpZiAoIWFkZGVkLmlzRW1w
dHkoKSB8fCAhcmVtb3ZlZC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1V
U1QgZGlzcGF0Y2ggYW4gaW5wdXRzb3VyY2VzY2hhbmdlIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3
aGVuIHRoZSBzZXNzaW9u4oCZcyBsaXN0IG9mIGFjdGl2ZSBYUiBpbnB1dCBzb3VyY2VzIGhhcyBj
aGFuZ2VkLgogICAgICAgICBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50OjpJbml0IGluaXQ7Ci0g
ICAgICAgIGluaXQuc2Vzc2lvbiA9IG1fc2Vzc2lvbi5jb3B5UmVmKCk7CisgICAgICAgIGluaXQu
c2Vzc2lvbiA9IG1fc2Vzc2lvbi5nZXQoKTsKICAgICAgICAgaW5pdC5hZGRlZCA9IFdURk1vdmUo
YWRkZWQpOwogICAgICAgICBpbml0LnJlbW92ZWQgPSBXVEZNb3ZlKHJlbW92ZWQpOwogICAgICAg
ICAKICAgICAgICAgYXV0byBldmVudCA9IFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuaW5wdXRzb3VyY2VzY2hhbmdlRXZlbnQsIGluaXQpOwotICAgICAgICBt
X3Nlc3Npb24tPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChtX3Nlc3Npb24uZ2V0KCksIFRhc2tT
b3VyY2U6OldlYlhSLCBXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6
cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCptX3Nlc3Npb24uZ2V0KCksIFRhc2tTb3VyY2U6Oldl
YlhSLCBXVEZNb3ZlKGV2ZW50KSk7CiAgICAgfQogCiAgICAgaWYgKCFpbnB1dEV2ZW50cy5pc0Vt
cHR5KCkpIHsKQEAgLTk1LDkgKzk4LDkgQEAgdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OnVw
ZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmIGlucHUKICAgICAg
ICAgLy8gNS4gU2V0IGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiB0byBmYWxzZS4KIAogICAgICAg
ICBmb3IgKGF1dG8mIGV2ZW50IDogaW5wdXRFdmVudHMpIHsKLSAgICAgICAgICAgIG1fc2Vzc2lv
bi0+cXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKG1fc2Vzc2lvbi5nZXQoKSwgVGFza1NvdXJj
ZTo6V2ViWFIsIFsmc2Vzc2lvbiA9IG1fc2Vzc2lvbi5nZXQoKSwgZXZlbnQgPSBXVEZNb3ZlKGV2
ZW50KV0oKSB7CisgICAgICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSgqbV9zZXNzaW9uLmdldCgpLCBUYXNrU291cmNlOjpXZWJYUiwgW3Nlc3Npb24g
PSBtYWtlUmVmUHRyKG1fc2Vzc2lvbi5nZXQoKSksIGV2ZW50ID0gV1RGTW92ZShldmVudCldKCkg
ewogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXRGcmFtZUFjdGl2ZSh0cnVlKTsKLSAgICAgICAg
ICAgICAgICBzZXNzaW9uLmRpc3BhdGNoRXZlbnQoZXZlbnQuY29weVJlZigpKTsKKyAgICAgICAg
ICAgICAgICBzZXNzaW9uLT5kaXNwYXRjaEV2ZW50KGV2ZW50LmNvcHlSZWYoKSk7CiAgICAgICAg
ICAgICAgICAgZXZlbnQtPnNldEZyYW1lQWN0aXZlKGZhbHNlKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9CkBAIC0xMjcsNiArMTMwLDkgQEAgdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6
OmhhbmRsZVJlbW92ZWRJbnB1dFNvdXJjZXMoY29uc3QgSW5wdXRTb3VyY2VMaXN0JiBpbnAKIC8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2xpc3Qtb2YtYWN0aXZlLXhy
LWlucHV0LXNvdXJjZXMKIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9y
VXBkYXRlZElucHV0U291cmNlcyhkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxp
c3QmIGlucHV0U291cmNlcywgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4mIGFkZGVk
LCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYgcmVtb3ZlZCwgVmVjdG9yPFJlZjxY
UklucHV0U291cmNlRXZlbnQ+PiYgaW5wdXRFdmVudHMpCiB7CisgICAgaWYgKCFtX3Nlc3Npb24p
CisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2Vzc2lvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoIWRvY3Vt
ZW50KQogICAgICAgICByZXR1cm47CkBAIC0xNDEsNyArMTQ3LDcgQEAgdm9pZCBXZWJYUklucHV0
U291cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1l
c3RhbXAsIGMKICAgICAgICAgICAgIC8vICAgMy4xIExldCBpbnB1dFNvdXJjZSBiZSBhIG5ldyBY
UklucHV0U291cmNlIGluIHRoZSByZWxldmFudCByZWFsbSBvZiB0aGlzIFhSU2Vzc2lvbi4KICAg
ICAgICAgICAgIC8vICAgMy4yIEFkZCBpbnB1dFNvdXJjZSB0byBhZGRlZC4KIAotICAgICAgICAg
ICAgYXV0byBpbnB1dCA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vz
c2lvbi5jb3B5UmVmKCksIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOworICAgICAgICAgICAgYXV0
byBpbnB1dCA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbiwg
dGltZXN0YW1wLCBpbnB1dFNvdXJjZSk7CiAgICAgICAgICAgICBhZGRlZC5hcHBlbmQoaW5wdXQu
Y29weVJlZigpKTsKICAgICAgICAgICAgIGlucHV0LT5wb2xsRXZlbnRzKGlucHV0RXZlbnRzKTsK
ICAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGlucHV0KSk7CkBAIC0x
NjUsNyArMTcxLDcgQEAgdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JV
cGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1lc3RhbXAsIGMKICAgICAgICAgICAgIGlucHV0
LT5wb2xsRXZlbnRzKGlucHV0RXZlbnRzKTsKICAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLnJl
bW92ZShpbmRleCk7CiAKLSAgICAgICAgICAgIGF1dG8gbmV3SW5wdXRTb3VyY2UgPSBXZWJYUklu
cHV0U291cmNlOjpjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCB0aW1lc3Rh
bXAsIGlucHV0U291cmNlKTsKKyAgICAgICAgICAgIGF1dG8gbmV3SW5wdXRTb3VyY2UgPSBXZWJY
UklucHV0U291cmNlOjpjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24sIHRpbWVzdGFtcCwgaW5w
dXRTb3VyY2UpOwogICAgICAgICAgICAgYWRkZWQuYXBwZW5kKG5ld0lucHV0U291cmNlLmNvcHlS
ZWYoKSk7CiAgICAgICAgICAgICBuZXdJbnB1dFNvdXJjZS0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50
cyk7CiAgICAgICAgICAgICBtX2lucHV0U291cmNlcy5hcHBlbmQoV1RGTW92ZShuZXdJbnB1dFNv
dXJjZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklu
cHV0U291cmNlQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1
dFNvdXJjZUFycmF5LmgKaW5kZXggMTE0MTVjZmNkMDQ3ZGFjYzEyM2MwMGJjNjM3YzAyMTZmNDM4
Y2QxMC4uYzg5ZDkwMTNhZTRiNDY0YzkyNWEzOTc3NmVjZTU2NDkwYjczZDNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsNyArNDQsNyBAQCBjbGFz
cyBXZWJYUklucHV0U291cmNlQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUklucHV0U291
cmNlQXJyYXk+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSSW5wdXRTb3VyY2VB
cnJheSk7CiBwdWJsaWM6CiAgICAgdXNpbmcgSW5wdXRTb3VyY2VMaXN0ID0gVmVjdG9yPFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT47Ci0gICAgc3RhdGljIFJlZjxX
ZWJYUklucHV0U291cmNlQXJyYXk+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBz
dGF0aWMgUmVmPFdlYlhSSW5wdXRTb3VyY2VBcnJheT4gY3JlYXRlKFdlYWtQdHI8V2ViWFJTZXNz
aW9uPik7CiAgICAgfldlYlhSSW5wdXRTb3VyY2VBcnJheSgpOwogCiAgICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3Q7CkBAIC01MywxMiArNTQsMTIgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRl
KGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYpOwogCiBwcml2YXRlOgot
ICAgIFdlYlhSSW5wdXRTb3VyY2VBcnJheShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBXZWJY
UklucHV0U291cmNlQXJyYXkoV2Vha1B0cjxXZWJYUlNlc3Npb24+KTsKIAogICAgIHZvaWQgaGFu
ZGxlUmVtb3ZlZElucHV0U291cmNlcyhjb25zdCBJbnB1dFNvdXJjZUxpc3QmLCBWZWN0b3I8UmVm
UHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4m
KTsKICAgICB2b2lkIGhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1l
c3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYsIFZlY3RvcjxSZWZQdHI8V2ViWFJJbnB1dFNv
dXJjZT4+JiwgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4mLCBWZWN0b3I8UmVmPFhS
SW5wdXRTb3VyY2VFdmVudD4+Jik7CiAKLSAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247
CisgICAgV2Vha1B0cjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBWZWN0b3I8UmVmPFdl
YlhSSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmNwcAppbmRleCBmNzdjYTUyMzcyYTRl
Y2I1NmZlNDY3MWRkNzZlNTQ1MTgzNWRkZGU3Li5jMzMzM2JlNmQ2MmJlZTBhOGJiZTNlNjNmMzQ0
YjIxZWMzYzE5NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U3BhY2UuY3BwCkBAIC0zOSwxNCArMzksMTQgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdlYlhSSW5wdXRTcGFjZSk7CiAKIC8vIFdlYlhSSW5wdXRTcGFjZQogCi1SZWY8V2Vi
WFJJbnB1dFNwYWNlPiBXZWJYUklucHV0U3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKK1JlZjxXZWJYUklucHV0U3BhY2U+IFdl
YlhSSW5wdXRTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vha1B0cjxXZWJYUlNl
c3Npb24+IHNlc3Npb24sIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1
dFNvdXJjZVBvc2UmIHBvc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1
dFNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBwb3NlKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBwb3NlKSk7CiB9
CiAKLVdlYlhSSW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwg
UmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQorV2ViWFJJbnB1dFNwYWNlOjpXZWJYUklu
cHV0U3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gc2Vzc2lv
biwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYg
cG9zZSkKICAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQsIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNy
ZWF0ZSgpKQotICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX3Nlc3Np
b24oc2Vzc2lvbikKICAgICAsIG1fcG9zZShwb3NlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmgKaW5kZXggNDk1YThjODViMDk1OTRkNjU3
YzNlNjNjYjE3YWYwMzFhY2E3YmE2Ni4uY2NhN2UzNzIyYjI1N2EzNTRhOWYwNzk4ZTI0YzRlY2Rl
ZTJlMjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklu
cHV0U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRT
cGFjZS5oCkBAIC0zMiwxMyArMzIsMTQgQEAKICNpbmNsdWRlICJYUlRhcmdldFJheU1vZGUuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFdlYlhSSW5wdXRTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRTcGFjZT4sIHB1
YmxpYyBXZWJYUlNwYWNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSSW5wdXRT
cGFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUklucHV0U3BhY2U+IGNyZWF0ZShE
b2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRT
cGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+LCBjb25zdCBQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJik7CiAgICAgdmlydHVh
bCB+V2ViWFJJbnB1dFNwYWNlKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSSW5wdXRT
cGFjZT46OnJlZjsKQEAgLTQ4LDE0ICs0OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQb3Nl
KGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmIHBv
c2UpIHsgbV9wb3NlID0gcG9zZTsgfQogCiBwcml2YXRlOgotICAgIFdlYlhSSW5wdXRTcGFjZShE
b2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKLSAgICBXZWJYUlNlc3Npb24mIHNlc3Npb24o
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKyAgICBXZWJYUklucHV0
U3BhY2UoRG9jdW1lbnQmLCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4sIGNvbnN0IFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAgICBXZWJYUlNlc3Npb24q
IHNlc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCBmaW5hbDsKIAogICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nl
c3Npb247CisgICAgV2Vha1B0cjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlIG1fcG9zZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2Uu
Y3BwCmluZGV4IDgwODNkM2RlMWQyMDRhOWY3ODU2NGYyMDlmMzBjMmYyZTg2ODVkZjguLjE1ZTIz
N2JjNzVlNTgxNjhjNjBlNzcyNTA2NmU1NzI2MzcwMWYyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcApAQCAtNDAsMjMg
KzQwLDIzIEBAIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIERlZmF1bHRVc2VySGVpZ2h0SW5NZXRl
cnMgPSAxLjY1OwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJSZWZlcmVuY2VT
cGFjZSk7CiAKLVJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFhS
UmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJS
ZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vha1B0cjxXZWJYUlNl
c3Npb24+IHNlc3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7CiAgICAgLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzcGFjZS1uYXRpdmUtb3JpZ2lu
CiAgICAgLy8gVGhlIHRyYW5zZm9ybSBmcm9tIHRoZSBlZmZlY3RpdmUgc3BhY2UgdG8gdGhlIG5h
dGl2ZSBvcmlnaW4ncyBzcGFjZSBpcwogICAgIC8vIGRlZmluZWQgYnkgYW4gb3JpZ2luIG9mZnNl
dCwgd2hpY2ggaXMgYW4gWFJSaWdpZFRyYW5zZm9ybSBpbml0aWFsbHkgc2V0CiAgICAgLy8gdG8g
YW4gaWRlbnRpdHkgdHJhbnNmb3JtLgotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVm
ZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdlYlhSUmlnaWRUcmFuc2Zv
cm06OmNyZWF0ZSgpLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZl
cmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRl
KCksIHR5cGUpKTsKIH0KIAotUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNl
U3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vz
c2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSB0eXBlKQorUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiBzZXNzaW9u
LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBl
IHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShk
b2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lv
biwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7CiB9CiAKLVdlYlhSUmVmZXJlbmNlU3BhY2U6Oldl
YlhSUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYm
IHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VT
cGFjZVR5cGUgdHlwZSkKK1dlYlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2Uo
RG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gc2Vzc2lvbiwgUmVmPFdl
YlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQog
ICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwgV1RGTW92ZShvZmZzZXQpKQotICAgICwgbV9zZXNz
aW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKICAgICAsIG1f
dHlwZSh0eXBlKQogewogfQpAQCAtNzIsNiArNzIsOCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBX
ZWJYUlJlZmVyZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAogICAgIC8vIFRoaXMgd2ls
bCByZXF1aXJlIG1vcmUgY29tcGxleCBsb2dpYyBpZiB3ZSBhZGQgcG9ydHMgd2l0aCBkaWZmZXJl
bnQgZGVmYXVsdCBjb29yZGluYXRlcy4KICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2Ug
WFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlcjogeworICAgICAgICBpZiAoIW1fc2Vzc2lvbikK
KyAgICAgICAgICAgIHJldHVybiBpZGVudGl0eTsKICAgICAgICAgLy8gUmV0dXJuIHRoZSBjdXJy
ZW50IHBvc2UuIENvbnRlbnQgcmVuZGVyZWQgaW4gdmlld2VyIHBvc2Ugd2lsbCBzdGF5IGluIGZp
eGVkIHBvaW50IG9uIEhNRHMuCiAgICAgICAgIGF1dG8mIGRhdGEgPSBtX3Nlc3Npb24tPmZyYW1l
RGF0YSgpOwogICAgICAgICByZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoZGF0YS5v
cmlnaW4pOwpAQCAtMTA1LDcgKzEwNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJlZmVyZW5j
ZVNwYWNlPj4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhCiAgICAg
Ly8gU2V0IG9mZnNldFNwYWNl4oCZcyBvcmlnaW4gb2Zmc2V0IHRvIHRoZSByZXN1bHQgb2YgbXVs
dGlwbHlpbmcgYmFzZeKAmXMgb3JpZ2luIG9mZnNldCBieSBvcmlnaW5PZmZzZXQgaW4gdGhlIHJl
bGV2YW50IHJlYWxtIG9mIGJhc2UuCiAgICAgYXV0byBvZmZzZXQgPSBXZWJYUlJpZ2lkVHJhbnNm
b3JtOjpjcmVhdGUob3JpZ2luT2Zmc2V0KCkucmF3VHJhbnNmb3JtKCkgKiBvZmZzZXRUcmFuc2Zv
cm0ucmF3VHJhbnNmb3JtKCkpOwogCi0gICAgcmV0dXJuIGNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vz
c2lvbi5jb3B5UmVmKCksIFdURk1vdmUob2Zmc2V0KSwgbV90eXBlKTsKKyAgICByZXR1cm4gY3Jl
YXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSk7CiB9CiAK
IFRyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmZsb29yT3JpZ2luVHJh
bnNmb3JtKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJSZWZlcmVuY2VTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlJlZmVyZW5jZVNwYWNlLmgKaW5kZXggOTM0OTU2NDFkMTQzMGRmY2NhMzMyODkwZThjMWQzOWNm
YzU4NDBkZi4uNDVlYTlkYTkxMzE4YmMzMjY5MTc1ZTJmOTk2NTUyYjRiNWRhZTA2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIldlYlhS
U2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKICNpbmNsdWRlICJYUlJlZmVyZW5j
ZVNwYWNlVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KQEAgLTM1LDMyICszNiwz
MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJYUlJpZ2lkVHJhbnNmb3JtOwot
Y2xhc3MgV2ViWFJTZXNzaW9uOwogCiBjbGFzcyBXZWJYUlJlZmVyZW5jZVNwYWNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViWFJSZWZlcmVuY2VTcGFjZT4sIHB1YmxpYyBXZWJYUlNwYWNlIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSUmVmZXJlbmNlU3BhY2UpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwotICAgIHN0YXRpYyBSZWY8
V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4m
JiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYWtQ
dHI8V2ViWFJTZXNzaW9uPiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBSZWY8
V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Np
b24+LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwog
CiAgICAgdmlydHVhbCB+V2ViWFJSZWZlcmVuY2VTcGFjZSgpOwogCiAgICAgdXNpbmcgUmVmQ291
bnRlZDxXZWJYUlJlZmVyZW5jZVNwYWNlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2Vi
WFJSZWZlcmVuY2VTcGFjZT46OmRlcmVmOwogCi0gICAgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgV2ViWFJTZXNzaW9u
KiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBFeGNlcHRpb25PcjxSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4+IGdldE9mZnNldFJl
ZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKTsKICAgICBYUlJlZmVyZW5j
ZVNwYWNlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKIHByb3RlY3RlZDoK
LSAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwg
UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBX
ZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+LCBSZWY8
V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgYm9v
bCBpc1JlZmVyZW5jZVNwYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggZmxvb3JPcmlnaW5UcmFuc2Zvcm0oKSBjb25zdDsKIAotICAg
IFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4g
bV9zZXNzaW9uOwogICAgIFhSUmVmZXJlbmNlU3BhY2VUeXBlIG1fdHlwZTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBl
Yjk3MmVkZTM4YWVkNzdiNWY4NWU4N2JkZTRjMzU5MGE0NzM2MDUwLi41MWNkNTFkYzg4Y2Q1MTk1
MzkxOTE5MTA4M2E2ZDIxZThiZGQwYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCkBAIC01MSw4ICs1MSw5IEBAIFJlZjxXZWJYUlNlc3Npb24+
IFdlYlhSU2Vzc2lvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5
c3RlbSwKIH0KIAogV2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Npb25Nb2RlIG1vZGUsIFBsYXRmb3JtWFI6OkRl
dmljZSYgZGV2aWNlLCBGZWF0dXJlTGlzdCYmIHJlcXVlc3RlZEZlYXR1cmVzKQotICAgIDogQWN0
aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKLSAgICAsIG1faW5wdXRTb3VyY2VzKFdlYlhSSW5wdXRT
b3VyY2VBcnJheTo6Y3JlYXRlKCp0aGlzKSkKKyAgICA6IEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEoKQorICAgICwgQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKKyAgICAsIG1faW5wdXRTb3Vy
Y2VzKFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSkpCiAg
ICAgLCBtX3hyU3lzdGVtKHN5c3RlbSkKICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9kZXZp
Y2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKQEAgLTIzNSw5ICsyMzYsOSBAQCB2b2lkIFdlYlhSU2Vz
c2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUsIFJl
cXVlc3RSZWZlcgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5p
by93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCiAgICAgICAgICAgICBSZWZQdHI8V2Vi
WFJSZWZlcmVuY2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7CiAgICAgICAgICAgICBpZiAodHlwZSA9
PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQotICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVu
dCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNl
ID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVdlYWtQ
dHIodGhpcyksIHR5cGUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZVNwYWNlID0gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlUmVm
KCp0aGlzKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJl
ZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VXZWFrUHRyKHRoaXMpLCB0eXBlKTsK
IAogICAgICAgICAgICAgLy8gMi41LiBSZXNvbHZlIHByb21pc2Ugd2l0aCByZWZlcmVuY2VTcGFj
ZS4KICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShyZWZlcmVuY2VTcGFjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKQEAgLTUyNiw3ICs1MjcsNyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkKICAgICAgICAgLy8gIDEu
TGV0IG5vdyBiZSB0aGUgY3VycmVudCBoaWdoIHJlc29sdXRpb24gdGltZS4KICAgICAgICAgYXV0
byBub3cgPSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25k
cygpOwogCi0gICAgICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigq
dGhpcyksIFdlYlhSRnJhbWU6OklzQW5pbWF0aW9uRnJhbWU6Olllcyk7CisgICAgICAgIGF1dG8g
ZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIFdlYlhSRnJhbWU6
OklzQW5pbWF0aW9uRnJhbWU6Olllcyk7CiAgICAgICAgIC8vICAyLkxldCBmcmFtZSBiZSBzZXNz
aW9u4oCZcyBhbmltYXRpb24gZnJhbWUuCiAgICAgICAgIC8vICAzLlNldCBmcmFtZeKAmXMgdGlt
ZSB0byBmcmFtZVRpbWUuCiAgICAgICAgIGZyYW1lLT5zZXRUaW1lKHN0YXRpY19jYXN0PERPTUhp
Z2hSZXNUaW1lU3RhbXA+KGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKaW5kZXggOGVkNDFlMTcyYzlh
N2RhZjc3Y2E0YWM2OGQxYTRmMTJhNTgxNWM5Ni4uYmY5ODZjZDlmYjI4ODgwY2I0ZDZiMTFhODkz
YzkyOWQ4MDk5NTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vz
c2lvbi5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgotI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUklucHV0U291cmNlQXJy
YXkuaCIKICNpbmNsdWRlICJXZWJYUlJlbmRlclN0YXRlLmgiCiAjaW5jbHVkZSAiWFJFbnZpcm9u
bWVudEJsZW5kTW9kZS5oIgpAQCAtNDMsMTYgKzQyLDE4IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgWFJGcmFtZVJlcXVlc3RDYWxsYmFjazsKK2NsYXNzIFdlYlhSUmVmZXJlbmNlU3BhY2U7CiBj
bGFzcyBXZWJYUlN5c3RlbTsKIGNsYXNzIFdlYlhSVmlldzsKIGNsYXNzIFdlYlhSVmlld2VyU3Bh
Y2U7CiBzdHJ1Y3QgWFJSZW5kZXJTdGF0ZUluaXQ7CiAKLWNsYXNzIFdlYlhSU2Vzc2lvbiBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSU2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgUGxhdGZvcm1YUjo6
VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQgeworY2xhc3MgV2ViWFJTZXNzaW9uIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViWFJTZXNzaW9uPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdl
YlhSU2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgUGxhdGZvcm1YUjo6VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGll
bnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJTZXNzaW9uKTsKIHB1YmxpYzoK
ICAgICB1c2luZyBSZXF1ZXN0UmVmZXJlbmNlU3BhY2VQcm9taXNlID0gRE9NUHJvbWlzZURlZmVy
cmVkPElETEludGVyZmFjZTxXZWJYUlJlZmVyZW5jZVNwYWNlPj47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcAppbmRleCAxMTkyMTQxODlmYzIwMWQ4NTEzNDRk
ZWIwZDMxNmQzOWY0NzhhNTkzLi42YTc4ZDU4MzUzMjY0YThkZGZkNGEwYjhkOWE3NWY3M2FhOTMx
NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHkuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUlJp
Z2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTU2LDE0ICs1NywxNyBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBXZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4oKSBjb25zdAogCiBib29sIFdlYlhSU3Bh
Y2U6OmlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlc3Npb24oKS5p
c1Bvc2l0aW9uRW11bGF0ZWQoKTsKKyAgICBpZiAoYXV0byogeHJTZXNzaW9uID0gc2Vzc2lvbigp
KQorICAgICAgICByZXR1cm4geHJTZXNzaW9uLT5pc1Bvc2l0aW9uRW11bGF0ZWQoKTsKKworICAg
IHJldHVybiBmYWxzZTsKIH0KIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSVmll
d2VyU3BhY2UpOwogCiBXZWJYUlZpZXdlclNwYWNlOjpXZWJYUlZpZXdlclNwYWNlKERvY3VtZW50
JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQogICAgIDogV2ViWFJTcGFjZShkb2N1
bWVudCwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCi0gICAgLCBtX3Nlc3Npb24oc2Vz
c2lvbikKKyAgICAsIG1fc2Vzc2lvbigmc2Vzc2lvbikKIHsKIH0KIApAQCAtNzEsNyArNzUsNyBA
QCBXZWJYUlZpZXdlclNwYWNlOjp+V2ViWFJWaWV3ZXJTcGFjZSgpID0gZGVmYXVsdDsKIAogVHJh
bnNmb3JtYXRpb25NYXRyaXggV2ViWFJWaWV3ZXJTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UobV9zZXNzaW9uLmZyYW1l
RGF0YSgpLm9yaWdpbik7CisgICAgcmV0dXJuIFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKG1f
c2Vzc2lvbi0+ZnJhbWVEYXRhKCkub3JpZ2luKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTcGFjZS5oCmluZGV4IGQ4Zjg4ZWE1OGI5NTg0NTE4ZDQ3NjU0MGVkYzhk
ZGRiMTk2NzlkYjQuLjY4ODAxMjdiZDY4NmMxZDVlOTMzMmI2ZTQ0Zjg0NzgwMzRjOGU4YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVk
ZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzcsMTQgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFdlYlhS
UmlnaWRUcmFuc2Zvcm07Ci1jbGFzcyBXZWJYUlNlc3Npb247CiAKIGNsYXNzIFdlYlhSU3BhY2Ug
OiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSU3BhY2UpOwog
cHVibGljOgogICAgIHZpcnR1YWwgfldlYlhSU3BhY2UoKTsKIAotICAgIHZpcnR1YWwgV2ViWFJT
ZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2ViWFJTZXNzaW9uKiBz
ZXNzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0
aXZlT3JpZ2luKCkgY29uc3QgPSAwOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGVmZmVjdGl2
ZU9yaWdpbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1Bvc2l0aW9uRW11bGF0ZWQoKSBj
b25zdDsKQEAgLTc3LDEzICs3NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViWFJWaWV3
ZXJTcGFjZSgpOwogCiBwcml2YXRlOgotICAgIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQorICAgIFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCByZWZFdmVudFRhcmdl
dCgpIGZpbmFsIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
Ci0gICAgV2ViWFJTZXNzaW9uJiBtX3Nlc3Npb247CisgICAgV2ViWFJTZXNzaW9uKiBtX3Nlc3Np
b247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKaW5kZXggNjI3NTQxNWRjMGFiZjRiYTBk
NWU1NWRmMzdkNmRkZWJiNGVmNjRhYS4uZTFlNmZjODYwMzU1MjZmYTk4NmU0NzMzMDgyZGI4MDE5
N2I4N2U4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldl
YkdMTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJH
TExheWVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlZp
ZXdwb3J0Pj4gV2ViWFJXZWJHTExheWVyOjpnZXRWaWV3cG9ydChXZWJYUlZpZXcmIHZpZXcpCiAg
ICAgLy8gMS4gTGV0IHNlc3Npb24gYmUgdmlld+KAmXMgc2Vzc2lvbi4KICAgICAvLyAyLiBMZXQg
ZnJhbWUgYmUgc2Vzc2lvbuKAmXMgYW5pbWF0aW9uIGZyYW1lLgogICAgIC8vIDMuIElmIHNlc3Np
b24gaXMgbm90IGVxdWFsIHRvIGxheWVy4oCZcyBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCZ2aWV3LmZyYW1lKCkuc2Vz
c2lvbigpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICBpZiAodmlldy5mcmFtZSgpLnNlc3Npb24o
KSAhPSBtX3Nlc3Npb24ucHRyKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciB9OwogCiAgICAgLy8gNC4gSWYgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIGlz
IGZhbHNlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427094</attachid>
            <date>2021-04-26 14:48:54 -0700</date>
            <delta_ts>2021-05-06 15:39:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225025-20210427074852.patch</filename>
            <type>text/plain</type>
            <size>56357</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzUyMjU4NzIwNzE4OTk5
MjZjODVkZjkxNGI1NWFiNzhjZGM2NGU5My4uYjE3MGM2ZjAwYjg3Y2ZkZDcwODEyZjVkMzhjNjZk
YzFiNjcyYzQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTA0LTI2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIFVzZSB3ZWFrIHBv
aW50ZXJzIHRvIHJlZmVyZW5jZSBXZWJYUlNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJYUlNlc3Npb24gd2FzIGF0dGVtcHRpbmcgdG8g
Y3JlYXRlIGEgV2ViWFJJbnB1dFNvdXJjZUFycmF5IGluCisgICAgICAgIGl0cyBjb25zdHJ1Y3Rv
ciBpbml0aWFsaXphdGlvbiB0aGF0IGhlbGQgYSBzdHJvbmcgcmVmZXJlbmNlIHRvCisgICAgICAg
IGl0c2VsZiwgd2hpY2ggY2F1c2VkIGEgY3Jhc2guIFRoaXMgcGF0dGVybiB3YXMgdXNlZCBlbHNl
d2hlcmUgdG9vLgorCisgICAgICAgIFJlcGxhY2UgdGhlIHN0cm9uZyByZWZlcmVuY2VzIHRvIFdl
YlhSU2Vzc2lvbiB3aXRoIHdlYWsgcG9pbnRlcnMsCisgICAgICAgIHdoaWNoIHdpbGwgYXZvaWQg
dGhlIHNpdHVhdGlvbiB3aGVyZSB3ZSBrZWVwIHRoZSBzZXNzaW9uIGFsaXZlIGlmCisgICAgICAg
IGFueSBvZiB0aGUgb3RoZXIgb2JqZWN0cyBhcmUgc3RpbGwgYXJvdW5kLgorCisgICAgICAgIFRo
ZXJlIGlzIG9uZSBwbGFjZSB3aGVyZSB0aGUgY2hhbmdlIGRpZG4ndCBxdWl0ZSB3b3JrOiBXZWJY
UlNwYWNlLmgKKyAgICAgICAgSW4gdGhlcmUsIFdlYlhSVmlld2VyU3BhY2UgdGFrZXMgYSByZWZl
cmVuY2UgdG8gYW4gWFJTZXNzaW9uIGJ1dAorICAgICAgICBzZXJ2ZXMgaXQgYmFjayBhcyBhIHBv
aW50ZXIuIFNvbWV0aGluZyBpbiB0aGUgSlMgYmluZGluZ3Mgd2FzIHVuaGFwcHkKKyAgICAgICAg
d2l0aCBwcm92aWRpbmcgYSB3ZWFrIHBvaW50ZXIgaGVyZS4KKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmNwcDogSW5oZXJpdCBmcm9tIFdlYWtQdHIuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlhSRnJhbWVDdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViWFJTZXNzaW9uQ3VzdG9tLmNwcDogTWFyayB0aGUg
c2Vzc2lvbiBhcyBhbiBvcGFxdWUgcm9vdC4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwOiBSZXBsYWNlIFJlZjxXZWJYUlNlc3Npb24+IHdp
dGgKKyAgICAgICAgV2Vha1B0cjxXZWJYUlNlc3Npb24+IGFuZCBkb24ndCB1c2UgV1RGTW92ZSBh
bnkgbW9yZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6Oldl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91bmRl
ZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6V2ViWFJGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UpOgorICAgICAgICAqIE1vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2Vz
c2lvbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
SW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJ
bnB1dFNvdXJjZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6
OmNyZWF0ZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3VyY2VBcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JVcGRhdGVk
SW5wdXRTb3VyY2VzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VB
cnJheS5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSSW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJS
ZWZlcmVuY2VTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6V2ViWFJS
ZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpu
YXRpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFj
ZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJSZWZlcmVuY2VTcGFjZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNlOjppc1Bvc2l0aW9uRW11bGF0ZWQgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
V2ViR0xMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6
Z2V0Vmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3BhcXVlRnJhbWVidWZmZXIp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUklucHV0U291cmNlc0NoYW5nZUV2ZW50OjpY
UklucHV0U291cmNlc0NoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhSSW5wdXRTb3Vy
Y2VzQ2hhbmdlRXZlbnQ6OnNlc3Npb24gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIv
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNC0yMiAg
TWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAgICBbU09V
UF0gTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggMGExYWJl
YTg4M2Q3Y2NlNjRjODdmM2NhNjg3MWVhNmEyOTk2ZjA3MC4uZTY1MjVhZTBhMTU1YjgzYjVkM2Uw
ZjA5NTY4ZmVjY2ZiZWZiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTQ0LDE4ICs0
NCwxOCBAQCBzdGF0aWMgY29uc3RleHByIGludCBNaW5pbXVtQm91bmRzVmVydGljZXMgPSAzOwog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2Up
OwogCi1SZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNl
c3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBXZWJYUlNlc3Npb24qIHNlc3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2Uo
ZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgp
LCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2UoZG9jdW1lbnQsIHNlc3Npb24sIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpLCB0
eXBlKSk7CiB9CiAKLVJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVy
ZW5jZVNwYWNlVHlwZSB0eXBlKQorUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBXZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJT
ZXNzaW9uKiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVm
ZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUo
b2Zmc2V0KSwgdHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJl
ZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsK
IH0KIAotV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8
V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUp
Ci0gICAgOiBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBX
VEZNb3ZlKG9mZnNldCksIHR5cGUpCitXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24qIHNl
c3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFj
ZVR5cGUgdHlwZSkKKyAgICA6IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIHNlc3Npb24s
IFdURk1vdmUob2Zmc2V0KSwgdHlwZSkKIHsKIH0KIApAQCAtODQsNyArODQsNyBAQCBFeGNlcHRp
b25PcjxSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
OjpnZXRPZmZzZXRSZWZlcgogICAgIC8vIFNldCBvZmZzZXRTcGFjZeKAmXMgb3JpZ2luIG9mZnNl
dCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9yaWdpbiBvZmZzZXQgYnkg
b3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNlLgogICAgIGF1dG8gb2Zm
c2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG9yaWdpbk9mZnNldCgpLnJhd1RyYW5z
Zm9ybSgpICogb2Zmc2V0VHJhbnNmb3JtLnJhd1RyYW5zZm9ybSgpKTsKIAotICAgIHJldHVybiB7
IGNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIFdURk1vdmUob2Zmc2V0KSwg
bV90eXBlKSB9OworICAgIHJldHVybiB7IGNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbi5nZXQo
KSwgV1RGTW92ZShvZmZzZXQpLCBtX3R5cGUpIH07CiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cmJvdW5kZWRyZWZlcmVuY2VzcGFjZS1ib3VuZHNn
ZW9tZXRyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCmluZGV4IDc2ZTA5NmFhOWNjN2Q0NmM0ZDgwNDEwM2U1
N2FlYzRmY2NiYmE3OGUuLmEzMWExYTE5N2ZmYTE0OGY4MDhhOWZjZjY2ZTAzOGNhODJkNzRiYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlLmgKQEAgLTM5LDggKzM5LDggQEAgY2xhc3MgRE9NUG9pbnRSZWFk
T25seTsKIGNsYXNzIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlIGZpbmFsOiBwdWJsaWMgV2Vi
WFJSZWZlcmVuY2VTcGFjZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgWFJS
ZWZlcmVuY2VTcGFjZVR5cGUpOwotICAgIHN0YXRpYyBSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9u
KiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiosIFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICB2aXJ0dWFsIH5X
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSgpOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICBFeGNlcHRpb25PcjxSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4+IGdldE9mZnNldFJlZmVy
ZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKSBmaW5hbDsKIAogcHJpdmF0ZToK
LSAgICBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Np
b24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7
CisgICAgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24q
LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAg
ICAgYm9vbCBpc0JvdW5kZWRSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKaW5k
ZXggNzhmNDFkOWI4ZmQ5NmViOGMwZmQxNWFlZTNkMzFiODNlYjIxYzkyMC4uOThhNTAwNTJlOTQy
ODJhYmNlMDRmM2YwOWI2OTdmYTUxNDVhNDUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuY3BwCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJGcmFtZSk7CiAKLVJlZjxX
ZWJYUkZyYW1lPiBXZWJYUkZyYW1lOjpjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9u
LCBJc0FuaW1hdGlvbkZyYW1lIGlzQW5pbWF0aW9uRnJhbWUpCitSZWY8V2ViWFJGcmFtZT4gV2Vi
WFJGcmFtZTo6Y3JlYXRlKFdlYlhSU2Vzc2lvbiogc2Vzc2lvbiwgSXNBbmltYXRpb25GcmFtZSBp
c0FuaW1hdGlvbkZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUo
V1RGTW92ZShzZXNzaW9uKSwgaXNBbmltYXRpb25GcmFtZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlhSRnJhbWUoc2Vzc2lvbiwgaXNBbmltYXRpb25GcmFtZSkpOwogfQogCi1XZWJY
UkZyYW1lOjpXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgSXNBbmltYXRp
b25GcmFtZSBpc0FuaW1hdGlvbkZyYW1lKQorV2ViWFJGcmFtZTo6V2ViWFJGcmFtZShXZWJYUlNl
c3Npb24qIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKICAgICA6
IG1faXNBbmltYXRpb25GcmFtZShpc0FuaW1hdGlvbkZyYW1lID09IElzQW5pbWF0aW9uRnJhbWU6
OlllcykKLSAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9zZXNzaW9u
KG1ha2VXZWFrUHRyKHNlc3Npb24pKQogewogfQogCkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBFeGNl
cHRpb25PcjxPcHRpb25hbDxXZWJYUkZyYW1lOjpQb3B1bGF0ZWRQb3NlPj4gV2ViWFJGcmFtZTo6
cG9wdWxhdGVQb3NlKGNvbnN0CiAKICAgICAvLyAyLiBMZXQgc2Vzc2lvbiBiZSBmcmFtZeKAmXMg
c2Vzc2lvbiBvYmplY3QuCiAgICAgLy8gMy4gSWYgc3BhY2XigJlzIHNlc3Npb24gZG9lcyBub3Qg
ZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgotICAgIGlmICgmc3BhY2Uuc2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAg
ICBpZiAoc3BhY2Uuc2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5nZXQoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICAvLyA0LiBJZiBiYXNlU3Bh
Y2XigJlzIHNlc3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICgmYmFzZVNwYWNlLnNlc3Np
b24oKSAhPSBtX3Nlc3Npb24ucHRyKCkpCisgICAgaWYgKGJhc2VTcGFjZS5zZXNzaW9uKCkgIT0g
bV9zZXNzaW9uLmdldCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIAogICAgIC8vIDUuIENoZWNrIGlmIHBvc2VzIG1heSBiZSByZXBvcnRlZCBhbmQs
IGlmIG5vdCwgdGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKaW5kZXggMTUwNTAzMTVhNTQy
OTU0MDA5OGViOTNmMzliODA3ZWUyNmQ3N2ZlNC4uZGNjZDY3YjVjNjRmZjdmNzY4ZmRlZjI4NmFl
NDNiMzA5ZGI5ODIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJET01IaWdoUmVzVGltZVN0YW1wLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisjaW5jbHVk
ZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDAsNyArNDEsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFdlYlhSUG9zZTsK
IGNsYXNzIFdlYlhSUmVmZXJlbmNlU3BhY2U7Ci1jbGFzcyBXZWJYUlNlc3Npb247CiBjbGFzcyBX
ZWJYUlNwYWNlOwogY2xhc3MgV2ViWFJWaWV3ZXJQb3NlOwogCkBAIC00OCwxMCArNDgsMTAgQEAg
Y2xhc3MgV2ViWFJGcmFtZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSRnJhbWU+IHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSRnJhbWUpOwogcHVibGljOgogICAgIGVudW0gY2xh
c3MgSXNBbmltYXRpb25GcmFtZSA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZjxX
ZWJYUkZyYW1lPiBjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJiwgSXNBbmltYXRpb25GcmFtZSk7
CisgICAgc3RhdGljIFJlZjxXZWJYUkZyYW1lPiBjcmVhdGUoV2ViWFJTZXNzaW9uKiwgSXNBbmlt
YXRpb25GcmFtZSk7CiAgICAgfldlYlhSRnJhbWUoKTsKIAotICAgIGNvbnN0IFdlYlhSU2Vzc2lv
biYgc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorICAgIGNvbnN0
IFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsg
fQogCiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSVmlld2VyUG9zZT4+IGdldFZpZXdlclBv
c2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJik7CiAgICAgRXhj
ZXB0aW9uT3I8UmVmUHRyPFdlYlhSUG9zZT4+IGdldFBvc2UoY29uc3QgRG9jdW1lbnQmLCBjb25z
dCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeEZyb21Qb3NlKGNvbnN0
IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlJik7CiAKIHByaXZhdGU6Ci0gICAg
V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmLCBJc0FuaW1hdGlvbkZyYW1lKTsKKyAgICBX
ZWJYUkZyYW1lKFdlYlhSU2Vzc2lvbiosIElzQW5pbWF0aW9uRnJhbWUpOwogCiAgICAgYm9vbCBp
c091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5kZWRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlNw
YWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpIGNvbnN0OwogICAgIGJvb2wgaXNMb2NhbFJlZmVyZW5j
ZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmKSBjb25zdDsKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNBbmltYXRpb25GcmFtZSB7IGZhbHNlIH07CiAgICAgRE9NSGlnaFJl
c1RpbWVTdGFtcCBtX3RpbWUgeyAwIH07CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGEgbV9kYXRhOwotICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRy
PFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwKaW5kZXggZWI5OTgz
NDJlM2YwNjg4NzkxYTAxY2RlNTY1NmUxNjg1MTZjNTNkYS4uODljM2NlYTE5NDA4ZmRhOWE5ZTU1
Y2I5NTcxNGY4NGQwNGZmNWFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkZyYW1lLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuaWRsCkBAIC0yOSw2ICsyOSw3IEBACiAgICAgU2VjdXJlQ29udGV4dCwKICAgICBF
eHBvc2VkPVdpbmRvdywKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAorICAgIEpTQ3Vz
dG9tTWFya0Z1bmN0aW9uLAogICAgIEludGVyZmFjZU5hbWU9WFJGcmFtZQogXSBpbnRlcmZhY2Ug
V2ViWFJGcmFtZSB7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJYUlNl
c3Npb24gc2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
SW5wdXRTb3VyY2UuY3BwCmluZGV4IGFmZDJhZDI5MmNmOWU2NDM2NDM2MGE2MmYxYTc2MDhjMDVj
YjhmODAuLmE1ZWI2ZThjOTBmMjAyMTAxY2UyNDc0Yjc2YmFkMGJmYmY4OGE0NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcApAQCAt
NDIsMTQgKzQyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFdlYlhSSW5wdXRTb3VyY2UpOwogCi1SZWY8V2ViWFJJbnB1dFNvdXJjZT4gV2Vi
WFJJbnB1dFNvdXJjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lv
bj4mJiBzZXNzaW9uLCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UmIHNvdXJjZSkKK1JlZjxXZWJYUklucHV0U291cmNlPiBX
ZWJYUklucHV0U291cmNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24q
IHNlc3Npb24sIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlhSSW5wdXRTb3VyY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHRpbWVzdGFtcCwg
c291cmNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZShkb2N1
bWVudCwgc2Vzc2lvbiwgdGltZXN0YW1wLCBzb3VyY2UpKTsKIH0KIAotV2ViWFJJbnB1dFNvdXJj
ZTo6V2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+
JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCi0gICAgOiBtX3Nlc3Npb24oV1RGTW92ZShz
ZXNzaW9uKSkKLSAgICAsIG1fdGFyZ2V0UmF5U3BhY2UoV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUo
ZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIHNvdXJjZS5wb2ludGVyT3JpZ2luKSkKK1dl
YlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJY
UlNlc3Npb24qIHNlc3Npb24sIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQorICAgIDogbV9zZXNzaW9uKG1h
a2VXZWFrUHRyKHNlc3Npb24pKQorICAgICwgbV90YXJnZXRSYXlTcGFjZShXZWJYUklucHV0U3Bh
Y2U6OmNyZWF0ZShkb2N1bWVudCwgbV9zZXNzaW9uLmdldCgpLCBzb3VyY2UucG9pbnRlck9yaWdp
bikpCiAgICAgLCBtX2Nvbm5lY3RUaW1lKHRpbWVzdGFtcCkKICNpZiBFTkFCTEUoR0FNRVBBRCkK
ICAgICAsIG1fZ2FtZXBhZChHYW1lcGFkOjpjcmVhdGUoV2ViWFJHYW1lcGFkKHRpbWVzdGFtcCwg
dGltZXN0YW1wLCBzb3VyY2UpKSkKQEAgLTYyLDYgKzYyLDkgQEAgV2ViWFJJbnB1dFNvdXJjZTo6
fldlYlhSSW5wdXRTb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6
dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQogeworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAg
ICByZXR1cm47CisKICNpZiAhRU5BQkxFKEdBTUVQQUQpCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVz
dGFtcCk7CiAjZW5kaWYKQEAgLTcxLDcgKzc0LDcgQEAgdm9pZCBXZWJYUklucHV0U291cmNlOjp1
cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZUQK
ICAgICAgICAgaWYgKG1fZ3JpcFNwYWNlKQogICAgICAgICAgICAgbV9ncmlwU3BhY2UtPnNldFBv
c2UoKmdyaXBPcmlnaW4pOwogICAgICAgICBlbHNlIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50PihtX3Nlc3Npb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAg
ICAgICAgICBtX2dyaXBTcGFjZSA9IFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKCpkb2N1bWVudCwg
bV9zZXNzaW9uLmNvcHlSZWYoKSwgKmdyaXBPcmlnaW4pOworICAgICAgICAgICAgbV9ncmlwU3Bh
Y2UgPSBXZWJYUklucHV0U3BhY2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbi5nZXQoKSwg
KmdyaXBPcmlnaW4pOwogICAgIH0gZWxzZQogICAgICAgICBtX2dyaXBTcGFjZSA9IG51bGxwdHI7
CiAjaWYgRU5BQkxFKEdBTUVQQUQpCkBAIC0xNDUsOCArMTQ4LDkgQEAgdm9pZCBXZWJYUklucHV0
U291cmNlOjpwb2xsRXZlbnRzKFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGV2ZW50
cykKIAogUmVmPFhSSW5wdXRTb3VyY2VFdmVudD4gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKKyAgICAvLyBGSVhNRTogSGFuZGxlIHRoZSBj
YXNlIHdoZXJlIHNlc3Npb24gaXMgbnVsbC4KICAgICBYUklucHV0U291cmNlRXZlbnQ6OkluaXQg
aW5pdDsKLSAgICBpbml0LmZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRlKG1fc2Vzc2lvbi5jb3B5
UmVmKCksIFdlYlhSRnJhbWU6OklzQW5pbWF0aW9uRnJhbWU6Ok5vKTsKKyAgICBpbml0LmZyYW1l
ID0gV2ViWFJGcmFtZTo6Y3JlYXRlKG1fc2Vzc2lvbi5nZXQoKSwgV2ViWFJGcmFtZTo6SXNBbmlt
YXRpb25GcmFtZTo6Tm8pOwogICAgIGluaXQuaW5wdXRTb3VyY2UgPSBtYWtlUmVmUHRyKCp0aGlz
KTsKIAogICAgIHJldHVybiBYUklucHV0U291cmNlRXZlbnQ6OmNyZWF0ZShuYW1lLCBpbml0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmgKaW5k
ZXggYjMyMGFlNzE4OTUzYWM5NDI3ZjNkNTUyMjFjMjdhZTQ0MDJkN2M0ZC4uZDZiM2FlNDRjM2E4
ZDE1N2JlMzRlZGRjYWZhMGIzYzAxNGI1MmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIElucHV0U291cmNlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlOwogICAgIHVzaW5nIElucHV0U291cmNlQnV0dG9uID0gUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOwogCi0gICAgc3RhdGljIFJlZjxXZWJY
UklucHV0U291cmNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBkb3Vi
bGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZSYpOworICAgIHN0YXRpYyBSZWY8V2ViWFJJ
bnB1dFNvdXJjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uKiwgZG91YmxlIHRpbWVz
dGFtcCwgY29uc3QgSW5wdXRTb3VyY2UmKTsKICAgICB+V2ViWFJJbnB1dFNvdXJjZSgpOwogCiAg
ICAgUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2UuaGFuZGxlOyB9CkBAIC03MywxMSArNzMsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
cG9sbEV2ZW50cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CiAKIHByaXZhdGU6
Ci0gICAgV2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGRv
dWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlJik7CisgICAgV2ViWFJJbnB1dFNvdXJj
ZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiosIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0
U291cmNlJik7CiAKICAgICBSZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiBjcmVhdGVFdmVudChjb25z
dCBBdG9tU3RyaW5nJik7CiAKLSAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAg
V2Vha1B0cjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBJbnB1dFNvdXJjZSBtX3NvdXJj
ZTsKICAgICBSZWY8V2ViWFJJbnB1dFNwYWNlPiBtX3RhcmdldFJheVNwYWNlOwogICAgIFJlZlB0
cjxXZWJYUklucHV0U3BhY2U+IG1fZ3JpcFNwYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwCmluZGV4IDFiOWM1NzRi
YmVkNjM3MmJkNzNkYmNiY2QwZmFmMzZkZWJmN2RmOTUuLmEyOWMyZmRkNTJkOGQ5YTg3NzQzMDgy
YjRmNmQ2Yzk5NjQ5MGU1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKQEAgLTM4LDEzICszOCwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0
U291cmNlQXJyYXkpOwogCi1SZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBXZWJYUklucHV0U291
cmNlQXJyYXk6OmNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCitSZWY8V2ViWFJJ
bnB1dFNvdXJjZUFycmF5PiBXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZShXZWJYUlNlc3Np
b24qIHNlc3Npb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJj
ZUFycmF5KFdURk1vdmUoc2Vzc2lvbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJY
UklucHV0U291cmNlQXJyYXkoc2Vzc2lvbikpOwogfQogCi1XZWJYUklucHV0U291cmNlQXJyYXk6
OldlYlhSSW5wdXRTb3VyY2VBcnJheShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCi0gICAg
OiBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKK1dlYlhSSW5wdXRTb3VyY2VBcnJheTo6V2Vi
WFJJbnB1dFNvdXJjZUFycmF5KFdlYlhSU2Vzc2lvbiogc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lv
bihtYWtlV2Vha1B0cihzZXNzaW9uKSkKIHsKIH0KIApAQCAtNjgsNiArNjgsOSBAQCB2b2lkIFdl
YlhSSW5wdXRTb3VyY2VBcnJheTo6Y2xlYXIoKQogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jbGlzdC1vZi1hY3RpdmUteHItaW5wdXQtc291cmNlcwogdm9pZCBXZWJY
UklucHV0U291cmNlQXJyYXk6OnVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNv
dXJjZUxpc3QmIGlucHV0U291cmNlcykKIHsKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAg
cmV0dXJuOworCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4gYWRkZWQ7CiAg
ICAgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4gcmVtb3ZlZDsKICAgICBWZWN0b3I8
UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+IGlucHV0RXZlbnRzOwpAQCAtNzgsMTIgKzgxLDEyIEBA
IHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5Ojp1cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29u
c3QgSW5wdXRTb3VyY2VMaXN0JiBpbnB1CiAgICAgaWYgKCFhZGRlZC5pc0VtcHR5KCkgfHwgIXJl
bW92ZWQuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNo
IGFuIGlucHV0c291cmNlc2NoYW5nZSBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiB0aGUgc2Vz
c2lvbuKAmXMgbGlzdCBvZiBhY3RpdmUgWFIgaW5wdXQgc291cmNlcyBoYXMgY2hhbmdlZC4KICAg
ICAgICAgWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudDo6SW5pdCBpbml0OwotICAgICAgICBpbml0
LnNlc3Npb24gPSBtX3Nlc3Npb24uY29weVJlZigpOworICAgICAgICBpbml0LnNlc3Npb24gPSBt
X3Nlc3Npb24uZ2V0KCk7CiAgICAgICAgIGluaXQuYWRkZWQgPSBXVEZNb3ZlKGFkZGVkKTsKICAg
ICAgICAgaW5pdC5yZW1vdmVkID0gV1RGTW92ZShyZW1vdmVkKTsKICAgICAgICAgCiAgICAgICAg
IGF1dG8gZXZlbnQgPSBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmlucHV0c291cmNlc2NoYW5nZUV2ZW50LCBpbml0KTsKLSAgICAgICAgbV9zZXNzaW9uLT5x
dWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobV9zZXNzaW9uLmdldCgpLCBUYXNrU291cmNlOjpXZWJY
UiwgV1RGTW92ZShldmVudCkpOworICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVlVGFza1Rv
RGlzcGF0Y2hFdmVudCgqbV9zZXNzaW9uLmdldCgpLCBUYXNrU291cmNlOjpXZWJYUiwgV1RGTW92
ZShldmVudCkpOwogICAgIH0KIAogICAgIGlmICghaW5wdXRFdmVudHMuaXNFbXB0eSgpKSB7CkBA
IC05NSw5ICs5OCw5IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5Ojp1cGRhdGUoZG91Ymxl
IHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0JiBpbnB1CiAgICAgICAgIC8vIDUuIFNl
dCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gdG8gZmFsc2UuCiAKICAgICAgICAgZm9yIChhdXRv
JiBldmVudCA6IGlucHV0RXZlbnRzKSB7Ci0gICAgICAgICAgICBtX3Nlc3Npb24tPnF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZShtX3Nlc3Npb24uZ2V0KCksIFRhc2tTb3VyY2U6OldlYlhSLCBb
JnNlc3Npb24gPSBtX3Nlc3Npb24uZ2V0KCksIGV2ZW50ID0gV1RGTW92ZShldmVudCldKCkgewor
ICAgICAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUo
Km1fc2Vzc2lvbi5nZXQoKSwgVGFza1NvdXJjZTo6V2ViWFIsIFtzZXNzaW9uID0gbV9zZXNzaW9u
LmdldCgpLCBldmVudCA9IFdURk1vdmUoZXZlbnQpXSgpIHsKICAgICAgICAgICAgICAgICBldmVu
dC0+c2V0RnJhbWVBY3RpdmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgc2Vzc2lvbi5kaXNwYXRj
aEV2ZW50KGV2ZW50LmNvcHlSZWYoKSk7CisgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ZGlzcGF0
Y2hFdmVudChldmVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXRGcmFt
ZUFjdGl2ZShmYWxzZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtMTI3LDYgKzEz
MCw5IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVSZW1vdmVkSW5wdXRTb3Vy
Y2VzKGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIu
Z2l0aHViLmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2VzCiB2b2lkIFdl
YlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMoZG91
YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0JiBpbnB1dFNvdXJjZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiBhZGRlZCwgVmVjdG9yPFJlZlB0cjxXZWJYUklu
cHV0U291cmNlPj4mIHJlbW92ZWQsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGlu
cHV0RXZlbnRzKQogeworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm47CisKICAg
ICBhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3Nlc3Npb24tPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTQxLDcgKzE0Nyw3IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRl
ZE9yVXBkYXRlZElucHV0U291cmNlcyhkb3VibGUgdGltZXN0YW1wLCBjCiAgICAgICAgICAgICAv
LyAgIDMuMSBMZXQgaW5wdXRTb3VyY2UgYmUgYSBuZXcgWFJJbnB1dFNvdXJjZSBpbiB0aGUgcmVs
ZXZhbnQgcmVhbG0gb2YgdGhpcyBYUlNlc3Npb24uCiAgICAgICAgICAgICAvLyAgIDMuMiBBZGQg
aW5wdXRTb3VyY2UgdG8gYWRkZWQuCiAKLSAgICAgICAgICAgIGF1dG8gaW5wdXQgPSBXZWJYUklu
cHV0U291cmNlOjpjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCB0aW1lc3Rh
bXAsIGlucHV0U291cmNlKTsKKyAgICAgICAgICAgIGF1dG8gaW5wdXQgPSBXZWJYUklucHV0U291
cmNlOjpjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24uZ2V0KCksIHRpbWVzdGFtcCwgaW5wdXRT
b3VyY2UpOwogICAgICAgICAgICAgYWRkZWQuYXBwZW5kKGlucHV0LmNvcHlSZWYoKSk7CiAgICAg
ICAgICAgICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CiAgICAgICAgICAgICBtX2lu
cHV0U291cmNlcy5hcHBlbmQoV1RGTW92ZShpbnB1dCkpOwpAQCAtMTY1LDcgKzE3MSw3IEBAIHZv
aWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9yVXBkYXRlZElucHV0U291cmNl
cyhkb3VibGUgdGltZXN0YW1wLCBjCiAgICAgICAgICAgICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1
dEV2ZW50cyk7CiAgICAgICAgICAgICBtX2lucHV0U291cmNlcy5yZW1vdmUoaW5kZXgpOwogCi0g
ICAgICAgICAgICBhdXRvIG5ld0lucHV0U291cmNlID0gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRl
KCpkb2N1bWVudCwgbV9zZXNzaW9uLmNvcHlSZWYoKSwgdGltZXN0YW1wLCBpbnB1dFNvdXJjZSk7
CisgICAgICAgICAgICBhdXRvIG5ld0lucHV0U291cmNlID0gV2ViWFJJbnB1dFNvdXJjZTo6Y3Jl
YXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLmdldCgpLCB0aW1lc3RhbXAsIGlucHV0U291cmNlKTsK
ICAgICAgICAgICAgIGFkZGVkLmFwcGVuZChuZXdJbnB1dFNvdXJjZS5jb3B5UmVmKCkpOwogICAg
ICAgICAgICAgbmV3SW5wdXRTb3VyY2UtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOwogICAgICAg
ICAgICAgbV9pbnB1dFNvdXJjZXMuYXBwZW5kKFdURk1vdmUobmV3SW5wdXRTb3VyY2UpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFy
cmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJh
eS5oCmluZGV4IDExNDE1Y2ZjZDA0N2RhY2MxMjNjMDBiYzYzN2MwMjE2ZjQzOGNkMTAuLjM2NDdk
OWVhNjEzM2M4NjBmNjdlYjYxYTk4OGE0ZmQ2MTllYTZiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaApAQCAtNDMsNyAr
NDMsNyBAQCBjbGFzcyBXZWJYUklucHV0U291cmNlQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJYUklucHV0U291cmNlQXJyYXk+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhS
SW5wdXRTb3VyY2VBcnJheSk7CiBwdWJsaWM6CiAgICAgdXNpbmcgSW5wdXRTb3VyY2VMaXN0ID0g
VmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT47Ci0gICAg
c3RhdGljIFJlZjxXZWJYUklucHV0U291cmNlQXJyYXk+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9u
PiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRTb3VyY2VBcnJheT4gY3JlYXRlKFdlYlhS
U2Vzc2lvbiopOwogICAgIH5XZWJYUklucHV0U291cmNlQXJyYXkoKTsKIAogICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0OwpAQCAtNTMsMTIgKzUzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHVw
ZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmKTsKIAogcHJpdmF0
ZToKLSAgICBXZWJYUklucHV0U291cmNlQXJyYXkoUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAg
V2ViWFJJbnB1dFNvdXJjZUFycmF5KFdlYlhSU2Vzc2lvbiopOwogCiAgICAgdm9pZCBoYW5kbGVS
ZW1vdmVkSW5wdXRTb3VyY2VzKGNvbnN0IElucHV0U291cmNlTGlzdCYsIFZlY3RvcjxSZWZQdHI8
V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYpOwog
ICAgIHZvaWQgaGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMoZG91YmxlIHRpbWVzdGFt
cCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0JiwgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNl
Pj4mLCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYsIFZlY3RvcjxSZWY8WFJJbnB1
dFNvdXJjZUV2ZW50Pj4mKTsKIAotICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAg
ICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFZlY3RvcjxSZWY8V2ViWFJJ
bnB1dFNvdXJjZT4+IG1faW5wdXRTb3VyY2VzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwCmluZGV4IGY3N2NhNTIzNzJhNGVjYjU2
ZmU0NjcxZGQ3NmU1NDUxODM1ZGRkZTcuLjM5N2JlMjJiMDkwMzZiYTJjOTUzYWQzMmRmZWJkMjQw
MmNhZjE5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5w
dXRTcGFjZS5jcHAKQEAgLTM5LDE0ICszOSwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoV2ViWFJJbnB1dFNwYWNlKTsKIAogLy8gV2ViWFJJbnB1dFNwYWNlCiAKLVJlZjxXZWJYUklu
cHV0U3BhY2U+IFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQorUmVmPFdlYlhSSW5wdXRTcGFjZT4gV2ViWFJJ
bnB1dFNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24qIHNlc3Np
b24sIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2Um
IHBvc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNwYWNlKGRvY3Vt
ZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBwb3NlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViWFJJbnB1dFNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBwb3NlKSk7CiB9CiAKLVdlYlhSSW5w
dXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vz
c2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2VQb3NlJiBwb3NlKQorV2ViWFJJbnB1dFNwYWNlOjpXZWJYUklucHV0U3BhY2UoRG9j
dW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24qIHNlc3Npb24sIGNvbnN0IFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmIHBvc2UpCiAgICAgOiBXZWJYUlNw
YWNlKGRvY3VtZW50LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKLSAgICAsIG1fc2Vz
c2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Np
b24pKQogICAgICwgbV9wb3NlKHBvc2UpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaAppbmRleCA0OTVhOGM4NWIwOTU5NGQ2NTdjM2U2M2Ni
MTdhZjAzMWFjYTdiYTY2Li4wMzVhZTFmZDU3NDM5NjAyZGM2MzE3YWJjMGNiYjg2NTIxNmY5OThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmgK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2ViWFJJbnB1dFNw
YWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPiwgcHVibGljIFdlYlhSU3Bh
Y2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJJbnB1dFNwYWNlKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlUG9zZSYpOworICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNwYWNlPiBjcmVhdGUo
RG9jdW1lbnQmLCBXZWJYUlNlc3Npb24qLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VQb3NlJik7CiAgICAgdmlydHVhbCB+V2ViWFJJbnB1dFNwYWNlKCk7
CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSSW5wdXRTcGFjZT46OnJlZjsKQEAgLTQ4LDE0
ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQb3NlKGNvbnN0IFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmIHBvc2UpIHsgbV9wb3NlID0gcG9zZTsg
fQogCiBwcml2YXRlOgotICAgIFdlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNl
c3Npb24+JiYsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZVBvc2UmKTsKLSAgICBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3Nlc3Npb24uZ2V0KCk7IH0KKyAgICBXZWJYUklucHV0U3BhY2UoRG9jdW1lbnQmLCBXZWJY
UlNlc3Npb24qLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2VQb3NlJik7CisgICAgV2ViWFJTZXNzaW9uKiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3Jp
Z2luKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBy
ZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQog
Ci0gICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2ViWFJTZXNz
aW9uPiBtX3Nlc3Npb247CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlUG9zZSBtX3Bvc2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcAppbmRleCA4MDgzZDNkZTFkMjA0YTlmNzg1
NjRmMjA5ZjMwYzJmMmU4Njg1ZGY4Li4wNzNlM2IyZWU1ZjZjMjQ5ZjhjOWEzODM4ZmQ4ZTg5NzVl
NjI1ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJS
ZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTQwLDIzICs0MCwyMyBAQCBzdGF0aWMgY29uc3RleHByIGRv
dWJsZSBEZWZhdWx0VXNlckhlaWdodEluTWV0ZXJzID0gMS42NTsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFdlYlhSUmVmZXJlbmNlU3BhY2UpOwogCi1SZWY8V2ViWFJSZWZlcmVuY2VT
cGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQorUmVm
PFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiogc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUg
dHlwZSkKIHsKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4
cnNwYWNlLW5hdGl2ZS1vcmlnaW4KICAgICAvLyBUaGUgdHJhbnNmb3JtIGZyb20gdGhlIGVmZmVj
dGl2ZSBzcGFjZSB0byB0aGUgbmF0aXZlIG9yaWdpbidzIHNwYWNlIGlzCiAgICAgLy8gZGVmaW5l
ZCBieSBhbiBvcmlnaW4gb2Zmc2V0LCB3aGljaCBpcyBhbiBYUlJpZ2lkVHJhbnNmb3JtIGluaXRp
YWxseSBzZXQKICAgICAvLyB0byBhbiBpZGVudGl0eSB0cmFuc2Zvcm0uCi0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9u
KSwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBXZWJYUlJp
Z2lkVHJhbnNmb3JtOjpjcmVhdGUoKSwgdHlwZSkpOwogfQogCi1SZWY8V2ViWFJSZWZlcmVuY2VT
cGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZz
ZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4g
V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNz
aW9uKiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJl
bmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZl
cmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShvZmZzZXQpLCB0
eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1
bWVudCwgc2Vzc2lvbiwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7CiB9CiAKLVdlYlhSUmVmZXJl
bmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2Vi
WFJTZXNzaW9uPiYmIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwg
WFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1dlYlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVm
ZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24qIHNlc3Npb24sIFJl
ZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlw
ZSkKICAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUob2Zmc2V0KSkKLSAgICAsIG1f
c2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNl
c3Npb24pKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CkBAIC03Miw2ICs3Miw5IEBAIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IFdlYlhSUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0
CiAgICAgLy8gVGhpcyB3aWxsIHJlcXVpcmUgbW9yZSBjb21wbGV4IGxvZ2ljIGlmIHdlIGFkZCBw
b3J0cyB3aXRoIGRpZmZlcmVudCBkZWZhdWx0IGNvb3JkaW5hdGVzLgogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyOiB7CisgICAgICAg
IGlmICghbV9zZXNzaW9uKQorICAgICAgICAgICAgcmV0dXJuIGlkZW50aXR5OworCiAgICAgICAg
IC8vIFJldHVybiB0aGUgY3VycmVudCBwb3NlLiBDb250ZW50IHJlbmRlcmVkIGluIHZpZXdlciBw
b3NlIHdpbGwgc3RheSBpbiBmaXhlZCBwb2ludCBvbiBITURzLgogICAgICAgICBhdXRvJiBkYXRh
ID0gbV9zZXNzaW9uLT5mcmFtZURhdGEoKTsKICAgICAgICAgcmV0dXJuIFdlYlhSRnJhbWU6Om1h
dHJpeEZyb21Qb3NlKGRhdGEub3JpZ2luKTsKQEAgLTEwNSw3ICsxMDgsNyBAQCBFeGNlcHRpb25P
cjxSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNl
dFJlZmVyZW5jZVNwYQogICAgIC8vIFNldCBvZmZzZXRTcGFjZeKAmXMgb3JpZ2luIG9mZnNldCB0
byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9yaWdpbiBvZmZzZXQgYnkgb3Jp
Z2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNlLgogICAgIGF1dG8gb2Zmc2V0
ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG9yaWdpbk9mZnNldCgpLnJhd1RyYW5zZm9y
bSgpICogb2Zmc2V0VHJhbnNmb3JtLnJhd1RyYW5zZm9ybSgpKTsKIAotICAgIHJldHVybiBjcmVh
dGUoKmRvY3VtZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlw
ZSk7CisgICAgcmV0dXJuIGNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbi5nZXQoKSwgV1RGTW92
ZShvZmZzZXQpLCBtX3R5cGUpOwogfQogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVy
ZW5jZVNwYWNlOjpmbG9vck9yaWdpblRyYW5zZm9ybSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCmluZGV4IDkzNDk1NjQx
ZDE0MzBkZmNjYTMzMjg5MGU4YzFkMzljZmM1ODQwZGYuLjMwNmMxZjZiMWVjOThlYzZjOGI4MTlh
NmQ3ZTExNzMxNzk2MzU0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCkBAIC00MCwyNyArNDAsMjcgQEAgY2xhc3MgV2ViWFJT
ZXNzaW9uOwogY2xhc3MgV2ViWFJSZWZlcmVuY2VTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlhSUmVmZXJlbmNlU3BhY2U+LCBwdWJsaWMgV2ViWFJTcGFjZSB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChXZWJYUlJlZmVyZW5jZVNwYWNlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFdlYlhSUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+
JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKLSAgICBzdGF0aWMgUmVmPFdlYlhSUmVmZXJlbmNl
U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxX
ZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24qLCBYUlJl
ZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBj
cmVhdGUoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24qLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4m
JiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgdmlydHVhbCB+V2ViWFJSZWZlcmVuY2VT
cGFjZSgpOwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUlJlZmVyZW5jZVNwYWNlPjo6cmVm
OwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJSZWZlcmVuY2VTcGFjZT46OmRlcmVmOwogCi0g
ICAgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9u
LmdldCgpOyB9CisgICAgV2ViWFJTZXNzaW9uKiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3Jp
Z2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8V2ViWFJS
ZWZlcmVuY2VTcGFjZT4+IGdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRU
cmFuc2Zvcm0mKTsKICAgICBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3Vt
ZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhS
UmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50Jiwg
V2ViWFJTZXNzaW9uKiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlKTsKIAogICAgIGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsb29yT3JpZ2luVHJhbnNm
b3JtKCkgY29uc3Q7CiAKLSAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgV2Vh
a1B0cjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBYUlJlZmVyZW5jZVNwYWNlVHlwZSBt
X3R5cGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5jcHAKaW5kZXggZWI5NzJlZGUzOGFlZDc3YjVmODVlODdiZGU0YzM1OTBhNDczNjA1
MC4uNDJkZTBkNWE1MGU5NGFmYmFmOGRmNjkxYjY4ZGY4YTM4N2E1MDMzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBSZWY8V2ViWFJTZXNzaW9uPiBXZWJYUlNlc3Npb246OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlhSU3lzdGVtJiBzeXN0ZW0sCiAKIFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kZSBtb2Rl
LCBQbGF0Zm9ybVhSOjpEZXZpY2UmIGRldmljZSwgRmVhdHVyZUxpc3QmJiByZXF1ZXN0ZWRGZWF0
dXJlcykKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCi0gICAgLCBtX2lucHV0U291
cmNlcyhXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX2lucHV0
U291cmNlcyhXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1feHJT
eXN0ZW0oc3lzdGVtKQogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2RldmljZShtYWtlV2Vh
a1B0cihkZXZpY2UpKQpAQCAtOTgsNyArOTgsNyBAQCBjb25zdCBXZWJYUlJlbmRlclN0YXRlJiBX
ZWJYUlNlc3Npb246OnJlbmRlclN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gKm1fYWN0aXZlUmVu
ZGVyU3RhdGU7CiB9CiAKLWNvbnN0IFdlYlhSSW5wdXRTb3VyY2VBcnJheSYgV2ViWFJTZXNzaW9u
OjppbnB1dFNvdXJjZXMoKSBjb25zdAorY29uc3QgUmVmUHRyPFdlYlhSSW5wdXRTb3VyY2VBcnJh
eT4gV2ViWFJTZXNzaW9uOjppbnB1dFNvdXJjZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2lu
cHV0U291cmNlczsKIH0KQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6cmVx
dWVzdFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUsIFJlcXVlc3RSZWZl
cgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8j
Y3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCiAgICAgICAgICAgICBSZWZQdHI8V2ViWFJSZWZlcmVu
Y2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBYUlJlZmVy
ZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQotICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNw
YWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVJl
ZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgdGhpcywgdHlwZSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJlZmVy
ZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKKyAgICAg
ICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShk
b2N1bWVudCwgdGhpcywgdHlwZSk7CiAKICAgICAgICAgICAgIC8vIDIuNS4gUmVzb2x2ZSBwcm9t
aXNlIHdpdGggcmVmZXJlbmNlU3BhY2UuCiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUocmVm
ZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBX
ZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFt
ZURhdGEpCiAgICAgICAgIC8vICAxLkxldCBub3cgYmUgdGhlIGN1cnJlbnQgaGlnaCByZXNvbHV0
aW9uIHRpbWUuCiAgICAgICAgIGF1dG8gbm93ID0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV90
aW1lT3JpZ2luKS5taWxsaXNlY29uZHMoKTsKIAotICAgICAgICBhdXRvIGZyYW1lID0gV2ViWFJG
cmFtZTo6Y3JlYXRlKG1ha2VSZWYoKnRoaXMpLCBXZWJYUkZyYW1lOjpJc0FuaW1hdGlvbkZyYW1l
OjpZZXMpOworICAgICAgICBhdXRvIGZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRlKHRoaXMsIFdl
YlhSRnJhbWU6OklzQW5pbWF0aW9uRnJhbWU6Olllcyk7CiAgICAgICAgIC8vICAyLkxldCBmcmFt
ZSBiZSBzZXNzaW9u4oCZcyBhbmltYXRpb24gZnJhbWUuCiAgICAgICAgIC8vICAzLlNldCBmcmFt
ZeKAmXMgdGltZSB0byBmcmFtZVRpbWUuCiAgICAgICAgIGZyYW1lLT5zZXRUaW1lKHN0YXRpY19j
YXN0PERPTUhpZ2hSZXNUaW1lU3RhbXA+KGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSkp
OwpAQCAtNTQxLDEwICs1NDEsMTIgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgICAgICAgICBhcHBseVBl
bmRpbmdSZW5kZXJTdGF0ZSgpOwogCiAgICAgICAgIC8vIDYuIElmIHRoZSBmcmFtZSBzaG91bGQg
YmUgcmVuZGVyZWQgZm9yIHNlc3Npb246Ci0gICAgICAgIGlmIChmcmFtZVNob3VsZEJlUmVuZGVy
ZWQoKSAmJiBtX2ZyYW1lRGF0YS5zaG91bGRSZW5kZXIpIHsKKyAgICAgICAgaWYgKGZyYW1lU2hv
dWxkQmVSZW5kZXJlZCgpIC8qJiYgbV9mcmFtZURhdGEuc2hvdWxkUmVuZGVyKi8pIHsKKyAgICAg
ICAgICAgIC8qCiAgICAgICAgICAgICAvLyBQcmVwYXJlIGFsbCBsYXllcnMgZm9yIHJlbmRlcgog
ICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWciAmJiBt
X2FjdGl2ZVJlbmRlclN0YXRlLT5iYXNlTGF5ZXIoKSkKICAgICAgICAgICAgICAgICBtX2FjdGl2
ZVJlbmRlclN0YXRlLT5iYXNlTGF5ZXIoKS0+c3RhcnRGcmFtZShtX2ZyYW1lRGF0YSk7CisgICAg
ICAgICAgICAgKi8KIAogICAgICAgICAgICAgLy8gNi4xLlNldCBzZXNzaW9u4oCZcyBsaXN0IG9m
IGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MgdG8gYmUgc2Vzc2lv
buKAmXMgbGlzdCBvZiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLgogICAgICAgICAgICAgLy8g
Ni4yLlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MgdG8g
dGhlIGVtcHR5IGxpc3QuCkBAIC01NzksMTMgKzU4MSwxNCBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6
b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkKICAgICAg
ICAgICAgIC8vIElmIHRoZSBzZXNzaW9uIGlzIGVuZGVkLCBtX2FuaW1hdGlvbkZyYW1lLT5zZXRB
Y3RpdmUgZmFsc2UgaXMgc2V0IGluIHNodXRkb3duKCkuCiAgICAgICAgICAgICBmcmFtZS0+c2V0
QWN0aXZlKGZhbHNlKTsKIAotCisvKgogICAgICAgICAgICAgLy8gU3VibWl0IGN1cnJlbnQgZnJh
bWUgbGF5ZXJzIHRvIHRoZSBkZXZpY2UuCiAgICAgICAgICAgICBWZWN0b3I8UGxhdGZvcm1YUjo6
RGV2aWNlOjpMYXllcj4gZnJhbWVMYXllcnM7CiAgICAgICAgICAgICBpZiAobV9tb2RlID09IFhS
U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyICYmIG1fYWN0aXZlUmVuZGVyU3RhdGUtPmJhc2VMYXll
cigpKQogICAgICAgICAgICAgICAgIGZyYW1lTGF5ZXJzLmFwcGVuZChtX2FjdGl2ZVJlbmRlclN0
YXRlLT5iYXNlTGF5ZXIoKS0+ZW5kRnJhbWUoKSk7CiAKICAgICAgICAgICAgIG1fZGV2aWNlLT5z
dWJtaXRGcmFtZShXVEZNb3ZlKGZyYW1lTGF5ZXJzKSk7CisgKi8KICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghbV9jYWxsYmFja3MuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmgKaW5kZXggOGVkNDFlMTcyYzlhN2RhZjc3Y2E0YWM2OGQxYTRm
MTJhNTgxNWM5Ni4uMDY4MzNmNmMyMjNjMWU0Zjc2MDUxYmNmMTI4MGFkYTkwOWMzMWFkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC0zMCw3ICsz
MCw2IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIldlYlhS
RnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUklucHV0U291cmNlQXJyYXkuaCIKICNpbmNsdWRlICJX
ZWJYUlJlbmRlclN0YXRlLmgiCiAjaW5jbHVkZSAiWFJFbnZpcm9ubWVudEJsZW5kTW9kZS5oIgpA
QCAtNDcsNiArNDYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBYUkZyYW1lUmVx
dWVzdENhbGxiYWNrOworY2xhc3MgV2ViWFJSZWZlcmVuY2VTcGFjZTsKIGNsYXNzIFdlYlhSU3lz
dGVtOwogY2xhc3MgV2ViWFJWaWV3OwogY2xhc3MgV2ViWFJWaWV3ZXJTcGFjZTsKQEAgLTcyLDcg
KzcyLDcgQEAgcHVibGljOgogICAgIFhSSW50ZXJhY3Rpb25Nb2RlIGludGVyYWN0aW9uTW9kZSgp
IGNvbnN0OwogICAgIFhSVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0Owog
ICAgIGNvbnN0IFdlYlhSUmVuZGVyU3RhdGUmIHJlbmRlclN0YXRlKCkgY29uc3Q7Ci0gICAgY29u
c3QgV2ViWFJJbnB1dFNvdXJjZUFycmF5JiBpbnB1dFNvdXJjZXMoKSBjb25zdDsKKyAgICBjb25z
dCBSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBpbnB1dFNvdXJjZXMoKSBjb25zdDsKICAg
ICBQbGF0Zm9ybVhSOjpEZXZpY2UqIGRldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdl
dCgpOyB9CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVSZW5kZXJTdGF0ZShjb25zdCBY
UlJlbmRlclN0YXRlSW5pdCYpOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgWFJF
bnZpcm9ubWVudEJsZW5kTW9kZSBtX2Vudmlyb25tZW50QmxlbmRNb2RlOwogICAgIFhSSW50ZXJh
Y3Rpb25Nb2RlIG1faW50ZXJhY3Rpb25Nb2RlOwogICAgIFhSVmlzaWJpbGl0eVN0YXRlIG1fdmlz
aWJpbGl0eVN0YXRlOwotICAgIFJlZjxXZWJYUklucHV0U291cmNlQXJyYXk+IG1faW5wdXRTb3Vy
Y2VzOworICAgIFJlZlB0cjxXZWJYUklucHV0U291cmNlQXJyYXk+IG1faW5wdXRTb3VyY2VzOwog
ICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8RW5kUHJvbWlzZT4gbV9l
bmRQcm9taXNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU2Vzc2lvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lv
bi5pZGwKaW5kZXggMmYxMGNmYTlkNjIxNGI3NDYxZDdjNTRkOGU1ZmVhMDA1YTE2NzUwYS4uOTdh
MDllOTdlNTVjN2M4Y2EwMjZlYTY2ZDU5NGQyNWQ0ZWU4YmI4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmlkbApAQCAtMjgsNiArMjgsNyBAQAogICAg
IENvbmRpdGlvbmFsPVdFQlhSLAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBTZWN1cmVDb250
ZXh0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIEV4cG9zZWQ9V2luZG93LAogICAg
IEludGVyZmFjZU5hbWU9WFJTZXNzaW9uCiBdIGludGVyZmFjZSBXZWJYUlNlc3Npb24gOiBFdmVu
dFRhcmdldCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcApp
bmRleCAxMTkyMTQxODlmYzIwMWQ4NTEzNDRkZWIwZDMxNmQzOWY0NzhhNTkzLi5jMzJhOTNmYTMz
MDA0M2Q1NzA1ZDg4NGY5M2JkZmY5ZjU2Y2UzNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRP
TVBvaW50UmVhZE9ubHkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlhS
RnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2Vi
WFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTU2LDcg
KzU3LDkgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJTcGFjZTo6ZWZmZWN0aXZlT3JpZ2lu
KCkgY29uc3QKIAogYm9vbCBXZWJYUlNwYWNlOjppc1Bvc2l0aW9uRW11bGF0ZWQoKSBjb25zdAog
ewotICAgIHJldHVybiBzZXNzaW9uKCkuaXNQb3NpdGlvbkVtdWxhdGVkKCk7CisgICAgaWYgKGF1
dG8qIHhyU2Vzc2lvbiA9IHNlc3Npb24oKSkKKyAgICAgICAgcmV0dXJuIHhyU2Vzc2lvbi0+aXNQ
b3NpdGlvbkVtdWxhdGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoV2ViWFJWaWV3ZXJTcGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTcGFjZS5oCmluZGV4IGQ4Zjg4ZWE1OGI5NTg0NTE4ZDQ3NjU0MGVkYzhkZGRi
MTk2NzlkYjQuLjNhOWMwY2NkYTkyYTVlYjU2YjliYWJlNDhiZGZmMGFlNjBlZGE2ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAi
V2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzcsMTQgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFdlYlhSUmln
aWRUcmFuc2Zvcm07Ci1jbGFzcyBXZWJYUlNlc3Npb247CiAKIGNsYXNzIFdlYlhSU3BhY2UgOiBw
dWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSU3BhY2UpOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfldlYlhSU3BhY2UoKTsKIAotICAgIHZpcnR1YWwgV2ViWFJTZXNz
aW9uJiBzZXNzaW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2ViWFJTZXNzaW9uKiBzZXNz
aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZl
T3JpZ2luKCkgY29uc3QgPSAwOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGVmZmVjdGl2ZU9y
aWdpbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1Bvc2l0aW9uRW11bGF0ZWQoKSBjb25z
dDsKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYlhSVmlld2VyU3Bh
Y2UoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Nlc3Npb247IH0KKyAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiAmbV9zZXNzaW9uOyB9CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
ZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKaW5kZXggNjI3NTQxNWRjMGFi
ZjRiYTBkNWU1NWRmMzdkNmRkZWJiNGVmNjRhYS4uNzlmODkzMDM3ZDcxMGIzMWI2OTBlNGQ3MWUz
NTJkOTZhZjRjNjVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUldlYkdMTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJXZWJHTExheWVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1
c2luZyBHTCA9IEdyYXBoaWNzQ29udGV4dEdMOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoV2ViWFJXZWJHTExheWVyKTsKLQorLyoKIC8vIEFyYml0cmFyeSB2YWx1ZSBmb3IgbWluaW11
bSBmcmFtZWJ1ZmZlciBzY2FsaW5nLgogLy8gQmVsb3cgdGhpcyB0aHJlc2hvbGQgdGhlIHJlc3Vs
dGluZyBmcmFtZWJ1ZmZlciB3b3VsZCBiZSB0b28gc21hbGwgdG8gc2VlLgogY29uc3RleHByIGRv
dWJsZSBNaW5GcmFtZWJ1ZmZlclNjYWxpbmdGYWN0b3IgPSAwLjI7CkBAIC0xMDQsOSArMTA0LDkg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyPj4gY3JlYXRlT3BhcXVlRnJhbWVidWYKICAgICAKICAgICByZXR1cm4gZnJhbWVidWZmZXI7
CiB9Ci0KKyovCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20t
eHJ3ZWJnbGxheWVyLXhyd2ViZ2xsYXllcgotRXhjZXB0aW9uT3I8UmVmPFdlYlhSV2ViR0xMYXll
cj4+IFdlYlhSV2ViR0xMYXllcjo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwg
V2ViWFJSZW5kZXJpbmdDb250ZXh0JiYgY29udGV4dCwgY29uc3QgWFJXZWJHTExheWVySW5pdCYg
aW5pdCkKK0V4Y2VwdGlvbk9yPFJlZjxXZWJYUldlYkdMTGF5ZXI+PiBXZWJYUldlYkdMTGF5ZXI6
OmNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFdlYlhSUmVuZGVyaW5nQ29udGV4
dCYmIGNvbnRleHQsIGNvbnN0IFhSV2ViR0xMYXllckluaXQmIC8qaW5pdCovKQogewogICAgIC8v
IDEuIExldCBsYXllciBiZSBhIG5ldyBYUldlYkdMTGF5ZXIKICAgICAvLyAyLiBJZiBzZXNzaW9u
4oCZcyBlbmRlZCB2YWx1ZSBpcyB0cnVlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQg
YWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0xNDEsNyArMTQxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdl
YlhSV2ViR0xMYXllcj4+IFdlYlhSV2ViR0xMYXllcjo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+
JiYgc2UKICAgICAgICAgICAgIGJvb2wgaXNDb21wb3NpdGlvbkVuYWJsZWQgPSBzZXNzaW9uLT5t
b2RlKCkgIT0gWFJTZXNzaW9uTW9kZTo6SW5saW5lOwogICAgICAgICAgICAgYm9vbCBhbnRpYWxp
YXMgPSBmYWxzZTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJYUk9wYXF1ZUZyYW1l
YnVmZmVyPiBmcmFtZWJ1ZmZlcjsKLQorLyoKICAgICAgICAgICAgIC8vIDkuIElmIGxheWVyJ3Mg
Y29tcG9zaXRpb24gZW5hYmxlZCBib29sZWFuIGlzIHRydWU6IAogICAgICAgICAgICAgaWYgKGlz
Q29tcG9zaXRpb25FbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgYXV0byBjcmVhdGVSZXN1bHQg
PSBjcmVhdGVPcGFxdWVGcmFtZWJ1ZmZlcihzZXNzaW9uLmdldCgpLCAqYmFzZUNvbnRleHQsIGlu
aXQpOwpAQCAtMTQ5LDEyICsxNDksMTMgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYlhSV2ViR0xMYXll
cj4+IFdlYlhSV2ViR0xMYXllcjo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYgc2UKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAg
ICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBjcmVhdGVSZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCk7CiAgICAgICAgICAgICB9IGVsc2UgeworICovCiAgICAgICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlCiAgICAgICAgICAgICAgICAgLy8gOS4xLiBJbml0aWFsaXplIGxheWVy4oCZcyBhbnRp
YWxpYXMgdG8gbGF5ZXLigJlzIGNvbnRleHQncyBhY3R1YWwgY29udGV4dCBwYXJhbWV0ZXJzIGFu
dGlhbGlhcyB2YWx1ZS4KICAgICAgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gYmFz
ZUNvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGFu
dGlhbGlhcyA9IGF0dHJpYnV0ZXMtPmFudGlhbGlhczsKICAgICAgICAgICAgICAgICAvLyA5LjIg
SW5pdGlhbGl6ZSBsYXllcidzIGZyYW1lYnVmZmVyIHRvIG51bGwuCi0gICAgICAgICAgICB9Cisv
LyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gMTAuIFJldHVybiBsYXllci4KICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSV2ViR0xMYXllcihXVEZNb3ZlKHNlc3Np
b24pLCBXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3ZlKGZyYW1lYnVmZmVyKSwgYW50aWFsaWFzLCBp
Z25vcmVEZXB0aFZhbHVlcywgaXNDb21wb3NpdGlvbkVuYWJsZWQpKTsKQEAgLTIzMyw3ICsyMzQs
NyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3cG9ydD4+IFdlYlhSV2ViR0xMYXllcjo6
Z2V0Vmlld3BvcnQoV2ViWFJWaWV3JiB2aWV3KQogICAgIC8vIDEuIExldCBzZXNzaW9uIGJlIHZp
ZXfigJlzIHNlc3Npb24uCiAgICAgLy8gMi4gTGV0IGZyYW1lIGJlIHNlc3Npb27igJlzIGFuaW1h
dGlvbiBmcmFtZS4KICAgICAvLyAzLiBJZiBzZXNzaW9uIGlzIG5vdCBlcXVhbCB0byBsYXllcuKA
mXMgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0
ZXBzLgotICAgIGlmICgmdmlldy5mcmFtZSgpLnNlc3Npb24oKSAhPSBtX3Nlc3Npb24ucHRyKCkp
CisgICAgaWYgKHZpZXcuZnJhbWUoKS5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIC8vIDQu
IElmIGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5jcHAKaW5kZXgg
ODBiOTVkYmVlOGQ5MTQyYzU5ZDEzYzNiNzE2NmY4NTc0OGVjYzI3Mi4uZjRmMTM3ZTIxMzYwY2Ni
YTUzZDhhM2FkMzdhOTE5ZTc2YzVlMzZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuY3BwCkBAIC00Myw3
ICs0Myw3IEBAIFJlZjxYUklucHV0U291cmNlc0NoYW5nZUV2ZW50PiBYUklucHV0U291cmNlc0No
YW5nZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluCiAKIFhSSW5wdXRTb3VyY2VzQ2hhbmdl
RXZlbnQ6OlhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiAgICAgOiBFdmVu
dCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQotICAgICwgbV9zZXNzaW9uKCppbml0aWFs
aXplci5zZXNzaW9uKQorICAgICwgbV9zZXNzaW9uKGluaXRpYWxpemVyLnNlc3Npb24pCiAgICAg
LCBtX2FkZGVkKGluaXRpYWxpemVyLmFkZGVkKQogICAgICwgbV9yZW1vdmVkKGluaXRpYWxpemVy
LnJlbW92ZWQpCiB7CkBAIC01MSw5ICs1MSw5IEBAIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQ6
OlhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uCiAK
IFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQ6On5YUklucHV0U291cmNlc0NoYW5nZUV2ZW50KCkg
PSBkZWZhdWx0OwogCi1jb25zdCBXZWJYUlNlc3Npb24mIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZl
bnQ6OnNlc3Npb24oKSBjb25zdAorY29uc3QgV2ViWFJTZXNzaW9uKiBYUklucHV0U291cmNlc0No
YW5nZUV2ZW50OjpzZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zZXNzaW9uOworICAg
IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7CiB9CiAKIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJJ
bnB1dFNvdXJjZT4+JiBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50OjphZGRlZCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hh
bmdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXND
aGFuZ2VFdmVudC5oCmluZGV4IGRkNTQ3OGY5ZmZhYzQzMTczOGFmYjllYTJjMTkxOTg0ZjM3MmQ1
ZDIuLjdhZDY3NDVlMTU2ZmY4MmNkN2I4NTU1Y2ZkYTczOTc5OWM2YTJkOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VF
dmVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFhSSW5wdXRT
b3VyY2VzQ2hhbmdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYs
IElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwogICAgIHZpcnR1YWwgflhSSW5wdXRTb3VyY2Vz
Q2hhbmdlRXZlbnQoKTsKIAotICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0
OworICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0OwogICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiBhZGRlZCgpIGNvbnN0OwogICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiByZW1vdmVkKCkgY29uc3Q7CiAKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBYUklucHV0U291cmNlc0NoYW5n
ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAotICAg
IFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBSZWZQdHI8V2ViWFJTZXNzaW9uPiBt
X3Nlc3Npb247CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4gbV9hZGRlZDsK
ICAgICBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiBtX3JlbW92ZWQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCAwYjQ4YzExZDNhMmZkNzhmMWNjODk4MDYzYWYzMjc1ZTgyZDQ2MzkzLi45
YmE1NDU3ZGRlOTRhNjk5YTA0YjAzYjdlNTIzZDgzYmMyOTE1NDE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtNjI1LDggKzYyNSwxMCBAQCBiaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNw
cAogYmluZGluZ3MvanMvSlNXZWJBbmltYXRpb25DdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1dl
YkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTV2ViWFJGcmFtZUN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTV2ViWFJSZWZlcmVuY2VTcGFjZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pz
L0pTV2ViWFJSaWdpZFRyYW5zZm9ybUN1c3RvbS5jcHAKK2JpbmRpbmdzL2pzL0pTV2ViWFJTZXNz
aW9uQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNXZWJYUlNwYWNlQ3VzdG9tLmNwcAogYmluZGlu
Z3MvanMvSlNXZWJYUlZpZXdDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDgyMWNjMGRhYTU4MmE3NjI1MTgxMGI0NmNkMjcwYWQzNWIwMTM0YjMuLjlkY2ZkOTRk
MTMyZWRkOWU2Y2Q2ZWQyZDcyMmMyYjc0OWJhMDc2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0MzYsOCArMzQzNiw4IEBA
CiAJCUE3Q0ZCM0QyMEI3RUQxMEEwMDcwQzMyRCAvKiBEcmFnSW1hZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0ZCM0QwMEI3RUQxMEEwMDcwQzMy
RCAvKiBEcmFnSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBN0QyMEY2MzEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDIwRjYx
MTA3RjQwNjkwMEE4MDM5MiAvKiBKU1dlYkdMQWN0aXZlSW5mby5oICovOyB9OwogCQlBN0QyMEY2
RDEwN0Y0MzhCMDBBODAzOTIgLyogV2ViR0xBY3RpdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0QyMEY2QjEwN0Y0MzhCMDBBODAzOTIgLyog
V2ViR0xBY3RpdmVJbmZvLmggKi87IH07Ci0JCUE3RDZCMzQ5MEY2MTEwNDUwMEZGOUZEMSAvKiBX
b3JrZXJGb250TG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3RDZCMzQ3MEY2MTEwNDUwMEZGOUZEMSAvKiBXb3JrZXJGb250TG9hZFJl
cXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBN0Q2QjM0OTBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VyU2NyaXB0TG9hZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q2QjM0NzBGNjExMDQ1
MDBCNzlGRDEgLyogV29ya2VyU2NyaXB0TG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdENkIzNDkwRjYxMTA0NTAwRkY5RkQxIC8qIFdv
cmtlckZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdENkIzNDcwRjYxMTA0NTAwRkY5RkQxIC8qIFdvcmtlckZvbnRMb2FkUmVx
dWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE3REJGOERFMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3REJGOERDMTI3NjkxOUMw
MDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCAqLzsgfTsKIAkJQTgwRDY3MDgwRTlFOURF
QjAwRTQyMEYwIC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBENjcwNzBFOUU5REVCMDBF
NDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCAqLzsgfTsKIAkJQTgw
RTZDRTYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFNkNCQzBBMTk4OUNBMDA3RkI4
QzUgLyogQ1NTUHJpbWl0aXZlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNzQ2MCw2ICs3NDYwLDggQEAKIAkJMzE0QkUzQTIxQjMwRjZE
MTAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDU1NOYW1lZEltYWdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
NEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNTJCNUNGMjYzNjI0QTgwMEY5RDEwMyAv
KiBKU1dlYlhSRnJhbWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJYUkZyYW1l
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE1MkI1RDEyNjM3NTNF
MDAwRjlEMTAzIC8qIEpTV2ViWFJTZXNzaW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViWFJTZXNzaW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzE1NTc0Q0MyMThGNjZEMDAwRDg4RjY2IC8qIFBvaW50ZXJFdmVudElPUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2ludGVyRXZlbnRJT1MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTY0N0ZBODI1MTYxNkJEMDAxMEY4RkIgLyogT3BlbkdM
U29mdExpbmtDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPcGVuR0xTb2Z0TGlua0NvY29hLmg7IHBh
dGggPSAuLi8uLi8uLi9QQUwvcGFsL2NvY29hL09wZW5HTFNvZnRMaW5rQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2NDdGQTkyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5H
TFNvZnRMaW5rQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBPcGVuR0xTb2Z0TGlua0Nv
Y29hLm1tOyBwYXRoID0gLi4vLi4vLi4vUEFML3BhbC9jb2NvYS9PcGVuR0xTb2Z0TGlua0NvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4NTcsMTAgKzEyODU5LDEwIEBA
CiAJCUE3RDIwRjYwMTA3RjQwNjkwMEE4MDM5MiAvKiBKU1dlYkdMQWN0aXZlSW5mby5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQWN0aXZlSW5mby5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDIwRjYxMTA3RjQwNjkwMEE4MDM5MiAv
KiBKU1dlYkdMQWN0aXZlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYkdMQWN0aXZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0QyMEY2
QjEwN0Y0MzhCMDBBODAzOTIgLyogV2ViR0xBY3RpdmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdMQWN0aXZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBN0Q2QjM0NzBGNjExMDQ1MDBGRjlGRDEgLyogV29ya2VyRm9udExvYWRSZXF1ZXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlckZvbnRMb2FkUmVxdWVz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBN0Q2QjM0ODBGNjExMDQ1MDBGRjlG
RDEgLyogV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3RDZCMzQ3MEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJTY3JpcHRMb2Fk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyU2NyaXB0TG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDZCMzQ3MEY2MTEwNDUwMEZGOUZE
MSAvKiBXb3JrZXJGb250TG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3RDZCMzQ4MEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJTY3JpcHRMb2FkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0TG9hZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdENkIzNDgwRjYxMTA0NTAwRkY5RkQx
IC8qIFdvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0RCRjhEQjEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVscGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDaGVja2luZ0hl
bHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3REJGOERDMTI3NjkxOUMw
MDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dENoZWNraW5nSGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0dGVybkNHLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIzMDM2LDcgKzIzMDM4LDkgQEAKIAkJCQk3MTVEQTVEMzIwMUJCOTAy
MDAyRUYyQjAgLyogSlNXZWJBbmltYXRpb25DdXN0b20uY3BwICovLAogCQkJCUQzRjNEMzU5MUE2
OUEzQjAwMDU5RkMyQiAvKiBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAog
CQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAgKi8sCisJCQkJMzE1MkI1Q0YyNjM2MjRBODAwRjlEMTAzIC8qIEpTV2ViWFJGcmFt
ZUN1c3RvbS5jcHAgKi8sCiAJCQkJMTFFNkNGMUIyNUYxNDBFMzAwMTNEM0Q1IC8qIEpTV2ViWFJS
ZWZlcmVuY2VTcGFjZUN1c3RvbS5jcHAgKi8sCisJCQkJMzE1MkI1RDEyNjM3NTNFMDAwRjlEMTAz
IC8qIEpTV2ViWFJTZXNzaW9uQ3VzdG9tLmNwcCAqLywKIAkJCQkxMUU2Q0YxRDI1RjE0MEU0MDAx
M0QzRDUgLyogSlNXZWJYUlNwYWNlQ3VzdG9tLmNwcCAqLywKIAkJCQlFMTgyNThBQjBFRjNDRDcw
MDA5MzMyNDIgLyogSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJNDZGOTFC
QzkxRkNERDBGRTAwMTU5OUMzIC8qIEpTV29ya2VyTmF2aWdhdG9yQ3VzdG9tLmNwcCAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViWFJGcmFtZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlhSRnJhbWVDdXN0b20uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU4OWJkY2MxOWFhMWI1ZjMxOTc5NGM2YWRmZjVkMTNlN2YzN2FkOTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlhSRnJhbWVDdXN0
b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV2ViWFJGcmFt
ZS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisj
aW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIEpTV2ViWFJG
cmFtZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2
aXNpdG9yLmFkZE9wYXF1ZVJvb3QoY29uc3RfY2FzdDxXZWJYUlNlc3Npb24qPih3cmFwcGVkKCku
c2Vzc2lvbigpKSk7Cit9CisKK0RFRklORV9WSVNJVF9BRERJVElPTkFMX0NISUxEUkVOKEpTV2Vi
WFJGcmFtZSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlhSU2Vzc2lvbkN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlhSU2Vzc2lvbkN1c3RvbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNThmYjBkMGZhN2VmZmE4ZGEwNGJkNDIzOGY3OGViOWEyNGFlNzc0MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViWFJTZXNzaW9uQ3VzdG9t
LmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1dlYlhSU2Vzc2lv
bi5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisj
aW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIEpTV2ViWFJT
ZXNzaW9uOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChjb25zdF9jYXN0PFdlYlhSU2Vzc2lvbio+KCZ3cmFwcGVk
KCkpKTsKK30KKworREVGSU5FX1ZJU0lUX0FERElUSU9OQUxfQ0hJTERSRU4oSlNXZWJYUlNlc3Np
b24pOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427945</attachid>
            <date>2021-05-06 15:39:54 -0700</date>
            <delta_ts>2021-05-07 19:10:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225025-20210507083952.patch</filename>
            <type>text/plain</type>
            <size>51478</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2ODY1ZDhkOTE1ZGNi
MGU1MzkyMzBiNTA3NmQ4ZmZlMWFhYzFlNS4uYjAxMjBkMjU1NDQ4OWYxYmNiMTY2OTUyYjFjMThk
NzBkYjU1N2EzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA0LTI2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIFVzZSB3ZWFrIHBv
aW50ZXJzIHRvIHJlZmVyZW5jZSBXZWJYUlNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJYUlNlc3Npb24gd2FzIGF0dGVtcHRpbmcgdG8g
Y3JlYXRlIGEgV2ViWFJJbnB1dFNvdXJjZUFycmF5IGluCisgICAgICAgIGl0cyBjb25zdHJ1Y3Rv
ciBpbml0aWFsaXphdGlvbiB0aGF0IGhlbGQgYSBzdHJvbmcgcmVmZXJlbmNlIHRvCisgICAgICAg
IGl0c2VsZiwgd2hpY2ggY2F1c2VkIGEgY3Jhc2guIFRoaXMgcGF0dGVybiB3YXMgdXNlZCBlbHNl
d2hlcmUgdG9vLgorCisgICAgICAgIFJlcGxhY2UgdGhlIHN0cm9uZyByZWZlcmVuY2VzIHRvIFdl
YlhSU2Vzc2lvbiB3aXRoIHdlYWsgcG9pbnRlcnMsCisgICAgICAgIHdoaWNoIHdpbGwgYXZvaWQg
dGhlIHNpdHVhdGlvbiB3aGVyZSB3ZSBrZWVwIHRoZSBzZXNzaW9uIGFsaXZlIGlmCisgICAgICAg
IGFueSBvZiB0aGUgb3RoZXIgb2JqZWN0cyBhcmUgc3RpbGwgYXJvdW5kLgorCisgICAgICAgIFRo
ZXJlIGlzIG9uZSBwbGFjZSB3aGVyZSB0aGUgY2hhbmdlIGRpZG4ndCBxdWl0ZSB3b3JrOiBXZWJY
UlNwYWNlLmgKKyAgICAgICAgSW4gdGhlcmUsIFdlYlhSVmlld2VyU3BhY2UgdGFrZXMgYSByZWZl
cmVuY2UgdG8gYW4gWFJTZXNzaW9uIGJ1dAorICAgICAgICBzZXJ2ZXMgaXQgYmFjayBhcyBhIHBv
aW50ZXIuIFNvbWV0aGluZyBpbiB0aGUgSlMgYmluZGluZ3Mgd2FzIHVuaGFwcHkKKyAgICAgICAg
d2l0aCBwcm92aWRpbmcgYSB3ZWFrIHBvaW50ZXIgaGVyZS4KKworICAgICAgICBUaGVyZSBpcyBz
dGlsbCBzb21lIG1vcmUgd29yayB0byBiZSBkb25lIGhlcmUuIGUuZy4gV2ViWFJWaWV3IGtlZXBz
CisgICAgICAgIHN0cm9uZyByZWZlcmVuY2VzIHRvIHRoZSBXZWJYUkZyYW1lLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOiBJbmhlcml0IGZyb20gV2Vha1B0ci4K
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6b25GcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaDoKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViWFJGcmFtZUN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJYUlNlc3Npb25DdXN0b20uY3Bw
OiBNYXJrIHRoZSBzZXNzaW9uIGFzIGFuIG9wYXF1ZSByb290LgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHA6IFJlcGxhY2UgUmVmPFdlYlhS
U2Vzc2lvbj4gd2l0aAorICAgICAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gYW5kIGRvbid0IHVz
ZSBXVEZNb3ZlIGFueSBtb3JlLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UkZyYW1lOjpzZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6V2ViWFJJbnB1dFNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJYUklucHV0U291cmNlOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJ
bnB1dFNvdXJjZTo6Y3JlYXRlRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFy
cmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2VBcnJheTo6V2ViWFJJbnB1dFNv
dXJjZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2VBcnJheTo6dXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRk
ZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZUFycmF5Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3Bh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpXZWJYUklucHV0U3BhY2UpOgorICAgICAg
ICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVm
ZXJlbmNlU3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNw
YWNlOjpXZWJYUlJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJl
bmNlU3BhY2U6Om5hdGl2ZU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJl
ZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzUG9zaXRpb25F
bXVsYXRlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJXZWJHTExheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJX
ZWJHTExheWVyOjpnZXRWaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVPcGFxdWVG
cmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9YUklucHV0U291
cmNlc0NoYW5nZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhSSW5wdXRTb3VyY2VzQ2hh
bmdlRXZlbnQ6OlhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudDo6c2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50Lmg6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDIxLTA1LTA1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
WFJdIEFkZCBJT1N1cmZhY2UgdG8gRnJhbWVEYXRhOjpMYXllckRhdGEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZS5jcHAKaW5kZXggMGExYWJlYTg4M2Q3Y2NlNjRjODdmM2NhNjg3MWVhNmEyOTk2ZjA3MC4uZTY1
MjVhZTBhMTU1YjgzYjVkM2UwZjA5NTY4ZmVjY2ZiZWZiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZS5jcHAKQEAgLTQ0LDE4ICs0NCwxOCBAQCBzdGF0aWMgY29uc3RleHByIGludCBNaW5pbXVtQm91
bmRzVmVydGljZXMgPSAzOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UpOwogCi1SZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8
V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8
V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24qIHNlc3Npb24sIFhSUmVmZXJl
bmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdlYlhSUmlnaWRU
cmFuc2Zvcm06OmNyZWF0ZSgpLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIHNlc3Npb24sIFdlYlhSUmlnaWRUcmFu
c2Zvcm06OmNyZWF0ZSgpLCB0eXBlKSk7CiB9CiAKLVJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQorUmVmPFdlYlhSQm91bmRlZFJl
ZmVyZW5jZVNwYWNlPiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uKiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUo
c2Vzc2lvbiksIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBXVEZNb3Zl
KG9mZnNldCksIHR5cGUpKTsKIH0KIAotV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lv
bj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJl
bmNlU3BhY2VUeXBlIHR5cGUpCi0gICAgOiBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBX
VEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpCitXZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJYUlNlc3Npb24qIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNl
dCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKKyAgICA6IFdlYlhSUmVmZXJlbmNlU3BhY2Uo
ZG9jdW1lbnQsIHNlc3Npb24sIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkKIHsKIH0KIApAQCAtODQs
NyArODQsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4+IFdlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcgogICAgIC8vIFNldCBvZmZzZXRTcGFj
ZeKAmXMgb3JpZ2luIG9mZnNldCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlz
IG9yaWdpbiBvZmZzZXQgYnkgb3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBi
YXNlLgogICAgIGF1dG8gb2Zmc2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG9yaWdp
bk9mZnNldCgpLnJhd1RyYW5zZm9ybSgpICogb2Zmc2V0VHJhbnNmb3JtLnJhd1RyYW5zZm9ybSgp
KTsKIAotICAgIHJldHVybiB7IGNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCks
IFdURk1vdmUob2Zmc2V0KSwgbV90eXBlKSB9OworICAgIHJldHVybiB7IGNyZWF0ZSgqZG9jdW1l
bnQsIG1fc2Vzc2lvbi5nZXQoKSwgV1RGTW92ZShvZmZzZXQpLCBtX3R5cGUpIH07CiB9CiAKIC8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cmJvdW5kZWRyZWZl
cmVuY2VzcGFjZS1ib3VuZHNnZW9tZXRyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCmluZGV4IDc2ZTA5NmFh
OWNjN2Q0NmM0ZDgwNDEwM2U1N2FlYzRmY2NiYmE3OGUuLmEzMWExYTE5N2ZmYTE0OGY4MDhhOWZj
ZjY2ZTAzOGNhODJkNzRiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKQEAgLTM5LDggKzM5LDggQEAg
Y2xhc3MgRE9NUG9pbnRSZWFkT25seTsKIGNsYXNzIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
IGZpbmFsOiBwdWJsaWMgV2ViWFJSZWZlcmVuY2VTcGFjZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdl
YlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwotICAgIHN0YXRpYyBSZWY8V2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Np
b24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7
CisgICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3Vt
ZW50JiwgV2ViWFJTZXNzaW9uKiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBS
ZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYlhSU2Vz
c2lvbiosIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7
CiAKICAgICB2aXJ0dWFsIH5XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSgpOwogCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8V2ViWFJSZWZlcmVuY2VTcGFj
ZT4+IGdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKSBm
aW5hbDsKIAogcHJpdmF0ZToKLSAgICBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVu
dCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJl
ZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1l
bnQmLCBXZWJYUlNlc3Npb24qLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVu
Y2VTcGFjZVR5cGUpOwogCiAgICAgYm9vbCBpc0JvdW5kZWRSZWZlcmVuY2VTcGFjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJGcmFtZS5jcHAKaW5kZXggNzhmNDFkOWI4ZmQ5NmViOGMwZmQxNWFlZTNkMzFiODNlYjIx
YzkyMC4uNThlNWQxYzYyYWNiOTk0ZmFmYThmMGJhMGQ0ZThhNWRlMzUyMTNmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCkBAIC0zOCwxNCArMzgsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2Vi
WFJGcmFtZSk7CiAKLVJlZjxXZWJYUkZyYW1lPiBXZWJYUkZyYW1lOjpjcmVhdGUoUmVmPFdlYlhS
U2Vzc2lvbj4mJiBzZXNzaW9uLCBJc0FuaW1hdGlvbkZyYW1lIGlzQW5pbWF0aW9uRnJhbWUpCitS
ZWY8V2ViWFJGcmFtZT4gV2ViWFJGcmFtZTo6Y3JlYXRlKFdlYlhSU2Vzc2lvbiogc2Vzc2lvbiwg
SXNBbmltYXRpb25GcmFtZSBpc0FuaW1hdGlvbkZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlhSRnJhbWUoV1RGTW92ZShzZXNzaW9uKSwgaXNBbmltYXRpb25GcmFtZSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUoc2Vzc2lvbiwgaXNBbmltYXRpb25G
cmFtZSkpOwogfQogCi1XZWJYUkZyYW1lOjpXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYg
c2Vzc2lvbiwgSXNBbmltYXRpb25GcmFtZSBpc0FuaW1hdGlvbkZyYW1lKQorV2ViWFJGcmFtZTo6
V2ViWFJGcmFtZShXZWJYUlNlc3Npb24qIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmlt
YXRpb25GcmFtZSkKICAgICA6IG1faXNBbmltYXRpb25GcmFtZShpc0FuaW1hdGlvbkZyYW1lID09
IElzQW5pbWF0aW9uRnJhbWU6OlllcykKLSAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24p
KQorICAgICwgbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Npb24pKQogewogfQogCkBAIC0xMDQs
MTEgKzEwNCwxNCBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxXZWJYUkZyYW1lOjpQb3B1bGF0ZWRQ
b3NlPj4gV2ViWFJGcmFtZTo6cG9wdWxhdGVQb3NlKGNvbnN0CiAKICAgICAvLyAyLiBMZXQgc2Vz
c2lvbiBiZSBmcmFtZeKAmXMgc2Vzc2lvbiBvYmplY3QuCiAgICAgLy8gMy4gSWYgc3BhY2XigJlz
IHNlc3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICgmc3BhY2Uuc2Vzc2lvbigpICE9IG1f
c2Vzc2lvbi5wdHIoKSkKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBpZiAoc3BhY2Uuc2Vzc2lvbigpICE9
IG1fc2Vzc2lvbi5nZXQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CiAKICAgICAvLyA0LiBJZiBiYXNlU3BhY2XigJlzIHNlc3Npb24gZG9lcyBub3Qg
ZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgotICAgIGlmICgmYmFzZVNwYWNlLnNlc3Npb24oKSAhPSBtX3Nlc3Npb24ucHRyKCkp
CisgICAgaWYgKGJhc2VTcGFjZS5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLmdldCgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIC8vIDUuIENo
ZWNrIGlmIHBvc2VzIG1heSBiZSByZXBvcnRlZCBhbmQsIGlmIG5vdCwgdGhyb3cgYSBTZWN1cml0
eUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmgKaW5kZXggMTUwNTAzMTVhNTQyOTU0MDA5OGViOTNmMzliODA3ZWUyNmQ3
N2ZlNC4uZGNjZDY3YjVjNjRmZjdmNzY4ZmRlZjI4NmFlNDNiMzA5ZGI5ODIzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJET01IaWdoUmVzVGltZVN0YW1wLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgpAQCAtNDAsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIFdlYlhSUG9zZTsKIGNsYXNzIFdlYlhSUmVmZXJlbmNlU3Bh
Y2U7Ci1jbGFzcyBXZWJYUlNlc3Npb247CiBjbGFzcyBXZWJYUlNwYWNlOwogY2xhc3MgV2ViWFJW
aWV3ZXJQb3NlOwogCkBAIC00OCwxMCArNDgsMTAgQEAgY2xhc3MgV2ViWFJGcmFtZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlhSRnJhbWU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdl
YlhSRnJhbWUpOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgSXNBbmltYXRpb25GcmFtZSA6IGJv
b2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZjxXZWJYUkZyYW1lPiBjcmVhdGUoUmVmPFdl
YlhSU2Vzc2lvbj4mJiwgSXNBbmltYXRpb25GcmFtZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUkZy
YW1lPiBjcmVhdGUoV2ViWFJTZXNzaW9uKiwgSXNBbmltYXRpb25GcmFtZSk7CiAgICAgfldlYlhS
RnJhbWUoKTsKIAotICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogCiAgICAgRXhjZXB0aW9uT3I8UmVm
UHRyPFdlYlhSVmlld2VyUG9zZT4+IGdldFZpZXdlclBvc2UoY29uc3QgRG9jdW1lbnQmLCBjb25z
dCBXZWJYUlJlZmVyZW5jZVNwYWNlJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSUG9z
ZT4+IGdldFBvc2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2Vi
WFJTcGFjZSYpOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG1hdHJpeEZyb21Qb3NlKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpQb3NlJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNz
aW9uPiYmLCBJc0FuaW1hdGlvbkZyYW1lKTsKKyAgICBXZWJYUkZyYW1lKFdlYlhSU2Vzc2lvbios
IElzQW5pbWF0aW9uRnJhbWUpOwogCiAgICAgYm9vbCBpc091dHNpZGVOYXRpdmVCb3VuZHNPZkJv
dW5kZWRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYp
IGNvbnN0OwogICAgIGJvb2wgaXNMb2NhbFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2Um
KSBjb25zdDsKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBbmltYXRp
b25GcmFtZSB7IGZhbHNlIH07CiAgICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBtX3RpbWUgeyAwIH07
CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgbV9kYXRhOwotICAgIFJlZjxXZWJY
UlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9u
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJGcmFtZS5pZGwKaW5kZXggZWI5OTgzNDJlM2YwNjg4NzkxYTAxY2RlNTY1NmUx
Njg1MTZjNTNkYS4uODljM2NlYTE5NDA4ZmRhOWE5ZTU1Y2I5NTcxNGY4NGQwNGZmNWFiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaWRsCkBAIC0yOSw2ICsy
OSw3IEBACiAgICAgU2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIElu
dGVyZmFjZU5hbWU9WFJGcmFtZQogXSBpbnRlcmZhY2UgV2ViWFJGcmFtZSB7CiAgICAgW1NhbWVP
YmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJYUlNlc3Npb24gc2Vzc2lvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IGFm
ZDJhZDI5MmNmOWU2NDM2NDM2MGE2MmYxYTc2MDhjMDVjYjhmODAuLmQwNzcxNjU0MDg4MjcyOWUy
NjY2ZDI5MmM5YTQ1ZDViMWE2YmM3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcApAQCAtNDIsMTQgKzQyLDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRTb3Vy
Y2UpOwogCi1SZWY8V2ViWFJJbnB1dFNvdXJjZT4gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBkb3VibGUgdGlt
ZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2Um
IHNvdXJjZSkKK1JlZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0U291cmNlOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24qIHNlc3Npb24sIGRvdWJsZSB0aW1lc3Rh
bXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291
cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2UoZG9jdW1l
bnQsIFdURk1vdmUoc2Vzc2lvbiksIHRpbWVzdGFtcCwgc291cmNlKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZShkb2N1bWVudCwgc2Vzc2lvbiwgdGltZXN0YW1w
LCBzb3VyY2UpKTsKIH0KIAotV2ViWFJJbnB1dFNvdXJjZTo6V2ViWFJJbnB1dFNvdXJjZShEb2N1
bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVz
dGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBz
b3VyY2UpCi0gICAgOiBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKLSAgICAsIG1fdGFyZ2V0
UmF5U3BhY2UoV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5
UmVmKCksIHNvdXJjZS5wb2ludGVyT3JpZ2luKSkKK1dlYlhSSW5wdXRTb3VyY2U6OldlYlhSSW5w
dXRTb3VyY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24qIHNlc3Npb24sIGRvdWJs
ZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZSYgc291cmNlKQorICAgIDogbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Npb24pKQorICAg
ICwgbV90YXJnZXRSYXlTcGFjZShXZWJYUklucHV0U3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbV9z
ZXNzaW9uLmdldCgpLCBzb3VyY2UucG9pbnRlck9yaWdpbikpCiAgICAgLCBtX2Nvbm5lY3RUaW1l
KHRpbWVzdGFtcCkKICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICAsIG1fZ2FtZXBhZChHYW1lcGFk
OjpjcmVhdGUoV2ViWFJHYW1lcGFkKHRpbWVzdGFtcCwgdGltZXN0YW1wLCBzb3VyY2UpKSkKQEAg
LTYyLDYgKzYyLDEwIEBAIFdlYlhSSW5wdXRTb3VyY2U6On5XZWJYUklucHV0U291cmNlKCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnVwZGF0ZShkb3VibGUgdGltZXN0YW1w
LCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UmIHNvdXJj
ZSkKIHsKKyAgICBhdXRvIHNlc3Npb24gPSBtYWtlUmVmUHRyKG1fc2Vzc2lvbi5nZXQoKSk7Cisg
ICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKICNpZiAhRU5BQkxFKEdBTUVQQUQp
CiAgICAgVU5VU0VEX1BBUkFNKHRpbWVzdGFtcCk7CiAjZW5kaWYKQEAgLTcwLDggKzc0LDggQEAg
dm9pZCBXZWJYUklucHV0U291cmNlOjp1cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZUQKICAgICBpZiAoYXV0byBncmlwT3JpZ2luID0gc291cmNl
LmdyaXBPcmlnaW4pIHsKICAgICAgICAgaWYgKG1fZ3JpcFNwYWNlKQogICAgICAgICAgICAgbV9n
cmlwU3BhY2UtPnNldFBvc2UoKmdyaXBPcmlnaW4pOwotICAgICAgICBlbHNlIGlmIChhdXRvKiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3Nlc3Npb24tPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpCi0gICAgICAgICAgICBtX2dyaXBTcGFjZSA9IFdlYlhSSW5wdXRTcGFjZTo6Y3Jl
YXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLmNvcHlSZWYoKSwgKmdyaXBPcmlnaW4pOworICAgICAg
ICBlbHNlIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzZXNzaW9uLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICAgICAgbV9ncmlwU3BhY2UgPSBXZWJY
UklucHV0U3BhY2U6OmNyZWF0ZSgqZG9jdW1lbnQsIHNlc3Npb24uZ2V0KCksICpncmlwT3JpZ2lu
KTsKICAgICB9IGVsc2UKICAgICAgICAgbV9ncmlwU3BhY2UgPSBudWxscHRyOwogI2lmIEVOQUJM
RShHQU1FUEFEKQpAQCAtMTQ1LDggKzE0OSw5IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6cG9s
bEV2ZW50cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+JiBldmVudHMpCiAKIFJlZjxY
UklucHV0U291cmNlRXZlbnQ+IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZUV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIG5hbWUpCiB7CisgICAgLy8gRklYTUU6IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBz
ZXNzaW9uIGlzIG51bGwuCiAgICAgWFJJbnB1dFNvdXJjZUV2ZW50OjpJbml0IGluaXQ7Ci0gICAg
aW5pdC5mcmFtZSA9IFdlYlhSRnJhbWU6OmNyZWF0ZShtX3Nlc3Npb24uY29weVJlZigpLCBXZWJY
UkZyYW1lOjpJc0FuaW1hdGlvbkZyYW1lOjpObyk7CisgICAgaW5pdC5mcmFtZSA9IFdlYlhSRnJh
bWU6OmNyZWF0ZShtX3Nlc3Npb24uZ2V0KCksIFdlYlhSRnJhbWU6OklzQW5pbWF0aW9uRnJhbWU6
Ok5vKTsKICAgICBpbml0LmlucHV0U291cmNlID0gbWFrZVJlZlB0cigqdGhpcyk7CiAKICAgICBy
ZXR1cm4gWFJJbnB1dFNvdXJjZUV2ZW50OjpjcmVhdGUobmFtZSwgaW5pdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5oCmluZGV4IGIzMjBhZTcx
ODk1M2FjOTQyN2YzZDU1MjIxYzI3YWU0NDAyZDdjNGQuLmQ2YjNhZTQ0YzNhOGQxNTdiZTM0ZWRk
Y2FmYTBiM2MwMTRiNTJlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJJbnB1dFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJJbnB1dFNvdXJjZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBJ
bnB1dFNvdXJjZSA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZTsK
ICAgICB1c2luZyBJbnB1dFNvdXJjZUJ1dHRvbiA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZUJ1dHRvbjsKIAotICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJj
ZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgZG91YmxlIHRpbWVzdGFt
cCwgY29uc3QgSW5wdXRTb3VyY2UmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSSW5wdXRTb3VyY2U+
IGNyZWF0ZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiosIGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0
IElucHV0U291cmNlJik7CiAgICAgfldlYlhSSW5wdXRTb3VyY2UoKTsKIAogICAgIFBsYXRmb3Jt
WFI6OklucHV0U291cmNlSGFuZGxlIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmhh
bmRsZTsgfQpAQCAtNzMsMTEgKzczLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHBvbGxFdmVudHMo
VmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYpOwogCiBwcml2YXRlOgotICAgIFdlYlhS
SW5wdXRTb3VyY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBkb3VibGUgdGltZXN0
YW1wLCBjb25zdCBJbnB1dFNvdXJjZSYpOworICAgIFdlYlhSSW5wdXRTb3VyY2UoRG9jdW1lbnQm
LCBXZWJYUlNlc3Npb24qLCBkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZSYpOwog
CiAgICAgUmVmPFhSSW5wdXRTb3VyY2VFdmVudD4gY3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYpOwogCi0gICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2Vi
WFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgSW5wdXRTb3VyY2UgbV9zb3VyY2U7CiAgICAgUmVm
PFdlYlhSSW5wdXRTcGFjZT4gbV90YXJnZXRSYXlTcGFjZTsKICAgICBSZWZQdHI8V2ViWFJJbnB1
dFNwYWNlPiBtX2dyaXBTcGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcAppbmRleCAxYjljNTc0YmJlZDYzNzJiZDcz
ZGJjYmNkMGZhZjM2ZGViZjdkZjk1Li40YTBmMmJlYjkwMzdlMDY0NTUzNTUxZTcxMzVhYjg3Yzkx
NjQ4ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5w
dXRTb3VyY2VBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlQXJyYXkuY3BwCkBAIC0zOCwxMyArMzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJJbnB1dFNvdXJjZUFycmF5
KTsKIAotUmVmPFdlYlhSSW5wdXRTb3VyY2VBcnJheT4gV2ViWFJJbnB1dFNvdXJjZUFycmF5Ojpj
cmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uKQorUmVmPFdlYlhSSW5wdXRTb3VyY2VB
cnJheT4gV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUoV2ViWFJTZXNzaW9uKiBzZXNzaW9u
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2VBcnJheShXVEZN
b3ZlKHNlc3Npb24pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJj
ZUFycmF5KHNlc3Npb24pKTsKIH0KIAotV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpXZWJYUklucHV0
U291cmNlQXJyYXkoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uKQotICAgIDogbV9zZXNzaW9u
KFdURk1vdmUoc2Vzc2lvbikpCitXZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3Vy
Y2VBcnJheShXZWJYUlNlc3Npb24qIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24obWFrZVdlYWtQ
dHIoc2Vzc2lvbikpCiB7CiB9CiAKQEAgLTY4LDYgKzY4LDEwIEBAIHZvaWQgV2ViWFJJbnB1dFNv
dXJjZUFycmF5OjpjbGVhcigpCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dl
YnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2VzCiB2b2lkIFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheTo6dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYg
aW5wdXRTb3VyY2VzKQogeworICAgIGF1dG8gc2Vzc2lvbiA9IG1ha2VSZWZQdHIobV9zZXNzaW9u
LmdldCgpKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKwogICAgIFZlY3Rv
cjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+IGFkZGVkOwogICAgIFZlY3RvcjxSZWZQdHI8V2Vi
WFJJbnB1dFNvdXJjZT4+IHJlbW92ZWQ7CiAgICAgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZl
bnQ+PiBpbnB1dEV2ZW50czsKQEAgLTc4LDEyICs4MiwxMiBAQCB2b2lkIFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheTo6dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYg
aW5wdQogICAgIGlmICghYWRkZWQuaXNFbXB0eSgpIHx8ICFyZW1vdmVkLmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhbiBpbnB1dHNvdXJjZXNjaGFu
Z2UgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gdGhlIHNlc3Npb27igJlzIGxpc3Qgb2YgYWN0
aXZlIFhSIGlucHV0IHNvdXJjZXMgaGFzIGNoYW5nZWQuCiAgICAgICAgIFhSSW5wdXRTb3VyY2Vz
Q2hhbmdlRXZlbnQ6OkluaXQgaW5pdDsKLSAgICAgICAgaW5pdC5zZXNzaW9uID0gbV9zZXNzaW9u
LmNvcHlSZWYoKTsKKyAgICAgICAgaW5pdC5zZXNzaW9uID0gc2Vzc2lvbjsKICAgICAgICAgaW5p
dC5hZGRlZCA9IFdURk1vdmUoYWRkZWQpOwogICAgICAgICBpbml0LnJlbW92ZWQgPSBXVEZNb3Zl
KHJlbW92ZWQpOwogICAgICAgICAKICAgICAgICAgYXV0byBldmVudCA9IFhSSW5wdXRTb3VyY2Vz
Q2hhbmdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRzb3VyY2VzY2hhbmdlRXZlbnQs
IGluaXQpOwotICAgICAgICBtX3Nlc3Npb24tPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChtX3Nl
c3Npb24uZ2V0KCksIFRhc2tTb3VyY2U6OldlYlhSLCBXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAg
IEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCpzZXNzaW9uLCBUYXNr
U291cmNlOjpXZWJYUiwgV1RGTW92ZShldmVudCkpOwogICAgIH0KIAogICAgIGlmICghaW5wdXRF
dmVudHMuaXNFbXB0eSgpKSB7CkBAIC05NSw5ICs5OSw5IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJj
ZUFycmF5Ojp1cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0JiBp
bnB1CiAgICAgICAgIC8vIDUuIFNldCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gdG8gZmFsc2Uu
CiAKICAgICAgICAgZm9yIChhdXRvJiBldmVudCA6IGlucHV0RXZlbnRzKSB7Ci0gICAgICAgICAg
ICBtX3Nlc3Npb24tPnF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShtX3Nlc3Npb24uZ2V0KCks
IFRhc2tTb3VyY2U6OldlYlhSLCBbJnNlc3Npb24gPSBtX3Nlc3Npb24uZ2V0KCksIGV2ZW50ID0g
V1RGTW92ZShldmVudCldKCkgeworICAgICAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKm1fc2Vzc2lvbi5nZXQoKSwgVGFza1NvdXJjZTo6V2ViWFIs
IFtzZXNzaW9uID0gc2Vzc2lvbiwgZXZlbnQgPSBXVEZNb3ZlKGV2ZW50KV0oKSB7CiAgICAgICAg
ICAgICAgICAgZXZlbnQtPnNldEZyYW1lQWN0aXZlKHRydWUpOwotICAgICAgICAgICAgICAgIHNl
c3Npb24uZGlzcGF0Y2hFdmVudChldmVudC5jb3B5UmVmKCkpOworICAgICAgICAgICAgICAgIHNl
c3Npb24tPmRpc3BhdGNoRXZlbnQoZXZlbnQuY29weVJlZigpKTsKICAgICAgICAgICAgICAgICBl
dmVudC0+c2V0RnJhbWVBY3RpdmUoZmFsc2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
QEAgLTEyNyw3ICsxMzEsMTEgQEAgdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZVJl
bW92ZWRJbnB1dFNvdXJjZXMoY29uc3QgSW5wdXRTb3VyY2VMaXN0JiBpbnAKIC8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2xpc3Qtb2YtYWN0aXZlLXhyLWlucHV0LXNv
dXJjZXMKIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVBZGRlZE9yVXBkYXRlZElu
cHV0U291cmNlcyhkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmIGlucHV0
U291cmNlcywgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4mIGFkZGVkLCBWZWN0b3I8
UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYgcmVtb3ZlZCwgVmVjdG9yPFJlZjxYUklucHV0U291
cmNlRXZlbnQ+PiYgaW5wdXRFdmVudHMpCiB7Ci0gICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4obV9zZXNzaW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGF1
dG8gc2Vzc2lvbiA9IG1ha2VSZWZQdHIobV9zZXNzaW9uLmdldCgpKTsKKyAgICBpZiAoIXNlc3Np
b24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KHNlc3Npb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCFkb2N1
bWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDEsNyArMTQ5LDcgQEAgdm9pZCBXZWJYUklu
cHV0U291cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0
aW1lc3RhbXAsIGMKICAgICAgICAgICAgIC8vICAgMy4xIExldCBpbnB1dFNvdXJjZSBiZSBhIG5l
dyBYUklucHV0U291cmNlIGluIHRoZSByZWxldmFudCByZWFsbSBvZiB0aGlzIFhSU2Vzc2lvbi4K
ICAgICAgICAgICAgIC8vICAgMy4yIEFkZCBpbnB1dFNvdXJjZSB0byBhZGRlZC4KIAotICAgICAg
ICAgICAgYXV0byBpbnB1dCA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG1f
c2Vzc2lvbi5jb3B5UmVmKCksIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOworICAgICAgICAgICAg
YXV0byBpbnB1dCA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgqZG9jdW1lbnQsIHNlc3Npb24u
Z2V0KCksIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOwogICAgICAgICAgICAgYWRkZWQuYXBwZW5k
KGlucHV0LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2
ZW50cyk7CiAgICAgICAgICAgICBtX2lucHV0U291cmNlcy5hcHBlbmQoV1RGTW92ZShpbnB1dCkp
OwpAQCAtMTY1LDcgKzE3Myw3IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVB
ZGRlZE9yVXBkYXRlZElucHV0U291cmNlcyhkb3VibGUgdGltZXN0YW1wLCBjCiAgICAgICAgICAg
ICBpbnB1dC0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CiAgICAgICAgICAgICBtX2lucHV0U291
cmNlcy5yZW1vdmUoaW5kZXgpOwogCi0gICAgICAgICAgICBhdXRvIG5ld0lucHV0U291cmNlID0g
V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLmNvcHlSZWYoKSwg
dGltZXN0YW1wLCBpbnB1dFNvdXJjZSk7CisgICAgICAgICAgICBhdXRvIG5ld0lucHV0U291cmNl
ID0gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKCpkb2N1bWVudCwgc2Vzc2lvbi5nZXQoKSwgdGlt
ZXN0YW1wLCBpbnB1dFNvdXJjZSk7CiAgICAgICAgICAgICBhZGRlZC5hcHBlbmQobmV3SW5wdXRT
b3VyY2UuY29weVJlZigpKTsKICAgICAgICAgICAgIG5ld0lucHV0U291cmNlLT5wb2xsRXZlbnRz
KGlucHV0RXZlbnRzKTsKICAgICAgICAgICAgIG1faW5wdXRTb3VyY2VzLmFwcGVuZChXVEZNb3Zl
KG5ld0lucHV0U291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUklucHV0U291cmNlQXJyYXkuaAppbmRleCAxMTQxNWNmY2QwNDdkYWNjMTIzYzAwYmM2
MzdjMDIxNmY0MzhjZDEwLi4zNjQ3ZDllYTYxMzNjODYwZjY3ZWI2MWE5ODhhNGZkNjE5ZWE2YmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3Vy
Y2VBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZUFycmF5LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgV2ViWFJJbnB1dFNvdXJjZUFycmF5
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJYUklucHV0U291cmNlQXJyYXkpOwogcHVibGljOgogICAgIHVz
aW5nIElucHV0U291cmNlTGlzdCA9IFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YTo6SW5wdXRTb3VyY2U+OwotICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBj
cmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U291
cmNlQXJyYXk+IGNyZWF0ZShXZWJYUlNlc3Npb24qKTsKICAgICB+V2ViWFJJbnB1dFNvdXJjZUFy
cmF5KCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAgLTUzLDEyICs1MywxMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRT
b3VyY2VMaXN0Jik7CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJJbnB1dFNvdXJjZUFycmF5KFJlZjxX
ZWJYUlNlc3Npb24+JiYpOworICAgIFdlYlhSSW5wdXRTb3VyY2VBcnJheShXZWJYUlNlc3Npb24q
KTsKIAogICAgIHZvaWQgaGFuZGxlUmVtb3ZlZElucHV0U291cmNlcyhjb25zdCBJbnB1dFNvdXJj
ZUxpc3QmLCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYsIFZlY3RvcjxSZWY8WFJJ
bnB1dFNvdXJjZUV2ZW50Pj4mKTsKICAgICB2b2lkIGhhbmRsZUFkZGVkT3JVcGRhdGVkSW5wdXRT
b3VyY2VzKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYsIFZlY3RvcjxS
ZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNl
Pj4mLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CiAKLSAgICBSZWY8V2ViWFJT
ZXNzaW9uPiBtX3Nlc3Npb247CisgICAgV2Vha1B0cjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsK
ICAgICBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmNwcApp
bmRleCBmNzdjYTUyMzcyYTRlY2I1NmZlNDY3MWRkNzZlNTQ1MTgzNWRkZGU3Li4zOTdiZTIyYjA5
MDM2YmEyYzk1M2FkMzJkZmViZDI0MDJjYWYxOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwCkBAIC0zOSwxNCArMzksMTQgQEAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRTcGFjZSk7CiAKIC8vIFdlYlhSSW5w
dXRTcGFjZQogCi1SZWY8V2ViWFJJbnB1dFNwYWNlPiBXZWJYUklucHV0U3BhY2U6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKK1JlZjxX
ZWJYUklucHV0U3BhY2U+IFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgV2ViWFJTZXNzaW9uKiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlhSSW5wdXRTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgcG9zZSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwg
cG9zZSkpOwogfQogCi1XZWJYUklucHV0U3BhY2U6OldlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgY29uc3QgUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKK1dlYlhSSW5wdXRTcGFj
ZTo6V2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uKiBzZXNz
aW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3Nl
JiBwb3NlKQogICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6
Y3JlYXRlKCkpCi0gICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1fc2Vz
c2lvbihtYWtlV2Vha1B0cihzZXNzaW9uKSkKICAgICAsIG1fcG9zZShwb3NlKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmgKaW5kZXggNDk1
YThjODViMDk1OTRkNjU3YzNlNjNjYjE3YWYwMzFhY2E3YmE2Ni4uMDM1YWUxZmQ1NzQzOTYwMmRj
NjMxN2FiYzBjYmI4NjUyMTZmOTk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSW5wdXRTcGFjZS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFdlYlhSSW5wdXRTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRT
cGFjZT4sIHB1YmxpYyBXZWJYUlNwYWNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdl
YlhSSW5wdXRTcGFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUklucHV0U3BhY2U+
IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGNvbnN0IFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAgICBzdGF0aWMgUmVmPFdl
YlhSSW5wdXRTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uKiwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYpOwogICAgIHZpcnR1
YWwgfldlYlhSSW5wdXRTcGFjZSgpOwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUklucHV0
U3BhY2U+OjpyZWY7CkBAIC00OCwxNCArNDgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9z
ZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBw
b3NlKSB7IG1fcG9zZSA9IHBvc2U7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJYUklucHV0U3BhY2Uo
RG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJik7Ci0gICAgV2ViWFJTZXNzaW9uJiBzZXNzaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgV2ViWFJJbnB1
dFNwYWNlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uKiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYpOworICAgIFdlYlhSU2Vzc2lvbiogc2Vzc2lv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCByZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsK
KyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UgbV9wb3NlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKaW5k
ZXggODA4M2QzZGUxZDIwNGE5Zjc4NTY0ZjIwOWYzMGMyZjJlODY4NWRmOC4uMDczZTNiMmVlNWY2
YzI0OWY4YzlhMzgzOGZkOGU4OTc1ZTYyNWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwCkBAIC00MCwyMyArNDAsMjMg
QEAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgRGVmYXVsdFVzZXJIZWlnaHRJbk1ldGVycyA9IDEu
NjU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlJlZmVyZW5jZVNwYWNlKTsK
IAotUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVu
Y2VTcGFjZVR5cGUgdHlwZSkKK1JlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5j
ZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24qIHNlc3Npb24s
IFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7CiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUt
d2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzcGFjZS1uYXRpdmUtb3JpZ2luCiAgICAgLy8gVGhlIHRy
YW5zZm9ybSBmcm9tIHRoZSBlZmZlY3RpdmUgc3BhY2UgdG8gdGhlIG5hdGl2ZSBvcmlnaW4ncyBz
cGFjZSBpcwogICAgIC8vIGRlZmluZWQgYnkgYW4gb3JpZ2luIG9mZnNldCwgd2hpY2ggaXMgYW4g
WFJSaWdpZFRyYW5zZm9ybSBpbml0aWFsbHkgc2V0CiAgICAgLy8gdG8gYW4gaWRlbnRpdHkgdHJh
bnNmb3JtLgotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9j
dW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpLCB0
eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1
bWVudCwgc2Vzc2lvbiwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUpKTsKIH0K
IAotUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhS
UmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQorUmVm
PFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiogc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lv
biksIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIHNlc3Npb24sIFdURk1vdmUob2Zmc2V0KSwgdHlw
ZSkpOwogfQogCi1XZWJYUlJlZmVyZW5jZVNwYWNlOjpXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdp
ZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitXZWJYUlJl
ZmVyZW5jZVNwYWNlOjpXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vi
WFJTZXNzaW9uKiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhS
UmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiAgICAgOiBXZWJYUlNwYWNlKGRvY3VtZW50LCBXVEZN
b3ZlKG9mZnNldCkpCi0gICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1f
c2Vzc2lvbihtYWtlV2Vha1B0cihzZXNzaW9uKSkKICAgICAsIG1fdHlwZSh0eXBlKQogewogfQpA
QCAtNzIsNiArNzIsOSBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVyZW5jZVNwYWNl
OjpuYXRpdmVPcmlnaW4oKSBjb25zdAogICAgIC8vIFRoaXMgd2lsbCByZXF1aXJlIG1vcmUgY29t
cGxleCBsb2dpYyBpZiB3ZSBhZGQgcG9ydHMgd2l0aCBkaWZmZXJlbnQgZGVmYXVsdCBjb29yZGlu
YXRlcy4KICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgWFJSZWZlcmVuY2VTcGFjZVR5
cGU6OlZpZXdlcjogeworICAgICAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgICAgIHJldHVy
biBpZGVudGl0eTsKKwogICAgICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgcG9zZS4gQ29udGVu
dCByZW5kZXJlZCBpbiB2aWV3ZXIgcG9zZSB3aWxsIHN0YXkgaW4gZml4ZWQgcG9pbnQgb24gSE1E
cy4KICAgICAgICAgYXV0byYgZGF0YSA9IG1fc2Vzc2lvbi0+ZnJhbWVEYXRhKCk7CiAgICAgICAg
IHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9zZShkYXRhLm9yaWdpbik7CkBAIC0xMDUs
NyArMTA4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBXZWJYUlJl
ZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGEKICAgICAvLyBTZXQgb2Zmc2V0U3Bh
Y2XigJlzIG9yaWdpbiBvZmZzZXQgdG8gdGhlIHJlc3VsdCBvZiBtdWx0aXBseWluZyBiYXNl4oCZ
cyBvcmlnaW4gb2Zmc2V0IGJ5IG9yaWdpbk9mZnNldCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Yg
YmFzZS4KICAgICBhdXRvIG9mZnNldCA9IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShvcmln
aW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0o
KSk7CiAKLSAgICByZXR1cm4gY3JlYXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLmNvcHlSZWYoKSwg
V1RGTW92ZShvZmZzZXQpLCBtX3R5cGUpOworICAgIHJldHVybiBjcmVhdGUoKmRvY3VtZW50LCBt
X3Nlc3Npb24uZ2V0KCksIFdURk1vdmUob2Zmc2V0KSwgbV90eXBlKTsKIH0KIAogVHJhbnNmb3Jt
YXRpb25NYXRyaXggV2ViWFJSZWZlcmVuY2VTcGFjZTo6Zmxvb3JPcmlnaW5UcmFuc2Zvcm0oKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVy
ZW5jZVNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNl
U3BhY2UuaAppbmRleCA5MzQ5NTY0MWQxNDMwZGZjY2EzMzI4OTBlOGMxZDM5Y2ZjNTg0MGRmLi4z
MDZjMWY2YjFlYzk4ZWM2YzhiODE5YTZkN2UxMTczMTc5NjM1NGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaApAQCAtNDAsMjcg
KzQwLDI3IEBAIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIGNsYXNzIFdlYlhSUmVmZXJlbmNlU3BhY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlJlZmVyZW5jZVNwYWNlPiwgcHVibGljIFdlYlhSU3Bh
Y2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJSZWZlcmVuY2VTcGFjZSk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1l
bnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7Ci0gICAgc3Rh
dGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJT
ZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5
cGUpOworICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50
JiwgV2ViWFJTZXNzaW9uKiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBSZWY8
V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uKiwgUmVm
PFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKIAogICAgIHZp
cnR1YWwgfldlYlhSUmVmZXJlbmNlU3BhY2UoKTsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2Vi
WFJSZWZlcmVuY2VTcGFjZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSUmVmZXJl
bmNlU3BhY2U+OjpkZXJlZjsKIAotICAgIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorICAgIFdlYlhSU2Vzc2lvbiogc2Vzc2lv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
RXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBnZXRPZmZzZXRSZWZlcmVuY2VT
cGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJik7CiAgICAgWFJSZWZlcmVuY2VTcGFjZVR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2Vi
WFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJY
UlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgV2ViWFJSZWZl
cmVuY2VTcGFjZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiosIFJlZjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICBib29sIGlzUmVmZXJlbmNlU3Bh
Y2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBmbG9vck9yaWdpblRyYW5zZm9ybSgpIGNvbnN0OwogCi0gICAgUmVmPFdlYlhSU2Vzc2lv
bj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAg
WFJSZWZlcmVuY2VTcGFjZVR5cGUgbV90eXBlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmluZGV4IGM4YmUzMGZjMThmMDhmMzNm
Y2JjMWQzNjRkM2Q5NmM5YjBiNDkzZDkuLjY0NDQ3MzVhNzc3Mjg4OWYyN2YwZDQ5MGQyYTlkYmI2
MTUwZTE4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lv
bi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgUmVmPFdlYlhSU2Vzc2lvbj4gV2ViWFJTZXNzaW9uOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLAogCiBXZWJYUlNl
c3Npb246OldlYlhSU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lzdGVtJiBzeXN0
ZW0sIFhSU2Vzc2lvbk1vZGUgbW9kZSwgUGxhdGZvcm1YUjo6RGV2aWNlJiBkZXZpY2UsIEZlYXR1
cmVMaXN0JiYgcmVxdWVzdGVkRmVhdHVyZXMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3Vt
ZW50KQotICAgICwgbV9pbnB1dFNvdXJjZXMoV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVhdGUo
KnRoaXMpKQorICAgICwgbV9pbnB1dFNvdXJjZXMoV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX3hyU3lzdGVtKHN5c3RlbSkKICAgICAsIG1fbW9kZShtb2RlKQog
ICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKQEAgLTk4LDcgKzk4LDcgQEAgY29u
c3QgV2ViWFJSZW5kZXJTdGF0ZSYgV2ViWFJTZXNzaW9uOjpyZW5kZXJTdGF0ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuICptX2FjdGl2ZVJlbmRlclN0YXRlOwogfQogCi1jb25zdCBXZWJYUklucHV0U291
cmNlQXJyYXkmIFdlYlhSU2Vzc2lvbjo6aW5wdXRTb3VyY2VzKCkgY29uc3QKK2NvbnN0IFJlZlB0
cjxXZWJYUklucHV0U291cmNlQXJyYXk+IFdlYlhSU2Vzc2lvbjo6aW5wdXRTb3VyY2VzKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9pbnB1dFNvdXJjZXM7CiB9CkBAIC0yMzUsOSArMjM1LDkgQEAg
dm9pZCBXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFjZShYUlJlZmVyZW5jZVNwYWNl
VHlwZSB0eXBlLCBSZXF1ZXN0UmVmZXIKICAgICAgICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHIvI2NyZWF0ZS1hLXJlZmVyZW5jZS1zcGFjZQogICAgICAgICAg
ICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IHJlZmVyZW5jZVNwYWNlOwogICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikKLSAgICAg
ICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpj
cmVhdGUoZG9jdW1lbnQsIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBy
ZWZlcmVuY2VTcGFjZSA9IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1l
bnQsIHRoaXMsIHR5cGUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZVNwYWNlID0gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlUmVm
KCp0aGlzKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJl
ZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMsIHR5cGUpOwogCiAgICAgICAgICAg
ICAvLyAyLjUuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHJlZmVyZW5jZVNwYWNlLgogICAgICAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNwYWNlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAt
NTI2LDcgKzUyNiw3IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpvbkZyYW1lKFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhJiYgZnJhbWVEYXRhKQogICAgICAgICAvLyAgMS5MZXQgbm93IGJlIHRo
ZSBjdXJyZW50IGhpZ2ggcmVzb2x1dGlvbiB0aW1lLgogICAgICAgICBhdXRvIG5vdyA9IChNb25v
dG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9yaWdpbikubWlsbGlzZWNvbmRzKCk7CiAKLSAgICAg
ICAgYXV0byBmcmFtZSA9IFdlYlhSRnJhbWU6OmNyZWF0ZShtYWtlUmVmKCp0aGlzKSwgV2ViWFJG
cmFtZTo6SXNBbmltYXRpb25GcmFtZTo6WWVzKTsKKyAgICAgICAgYXV0byBmcmFtZSA9IFdlYlhS
RnJhbWU6OmNyZWF0ZSh0aGlzLCBXZWJYUkZyYW1lOjpJc0FuaW1hdGlvbkZyYW1lOjpZZXMpOwog
ICAgICAgICAvLyAgMi5MZXQgZnJhbWUgYmUgc2Vzc2lvbuKAmXMgYW5pbWF0aW9uIGZyYW1lLgog
ICAgICAgICAvLyAgMy5TZXQgZnJhbWXigJlzIHRpbWUgdG8gZnJhbWVUaW1lLgogICAgICAgICBm
cmFtZS0+c2V0VGltZShzdGF0aWNfY2FzdDxET01IaWdoUmVzVGltZVN0YW1wPihmcmFtZURhdGEu
cHJlZGljdGVkRGlzcGxheVRpbWUpKTsKQEAgLTU3OSw3ICs1NzksNiBAQCB2b2lkIFdlYlhSU2Vz
c2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkK
ICAgICAgICAgICAgIC8vIElmIHRoZSBzZXNzaW9uIGlzIGVuZGVkLCBtX2FuaW1hdGlvbkZyYW1l
LT5zZXRBY3RpdmUgZmFsc2UgaXMgc2V0IGluIHNodXRkb3duKCkuCiAgICAgICAgICAgICBmcmFt
ZS0+c2V0QWN0aXZlKGZhbHNlKTsKIAotCiAgICAgICAgICAgICAvLyBTdWJtaXQgY3VycmVudCBm
cmFtZSBsYXllcnMgdG8gdGhlIGRldmljZS4KICAgICAgICAgICAgIFZlY3RvcjxQbGF0Zm9ybVhS
OjpEZXZpY2U6OkxheWVyPiBmcmFtZUxheWVyczsKICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
WFJTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIgJiYgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+YmFzZUxh
eWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAppbmRl
eCA4ZWQ0MWUxNzJjOWE3ZGFmNzdjYTRhYzY4ZDFhNGYxMmE1ODE1Yzk2Li4wNjgzM2Y2YzIyM2Mx
ZTRmNzYwNTFiY2YxMjgwYWRhOTA5YzMxYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCi0jaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlhS
SW5wdXRTb3VyY2VBcnJheS5oIgogI2luY2x1ZGUgIldlYlhSUmVuZGVyU3RhdGUuaCIKICNpbmNs
dWRlICJYUkVudmlyb25tZW50QmxlbmRNb2RlLmgiCkBAIC00Nyw2ICs0Niw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s7CitjbGFzcyBXZWJY
UlJlZmVyZW5jZVNwYWNlOwogY2xhc3MgV2ViWFJTeXN0ZW07CiBjbGFzcyBXZWJYUlZpZXc7CiBj
bGFzcyBXZWJYUlZpZXdlclNwYWNlOwpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgWFJJ
bnRlcmFjdGlvbk1vZGUgaW50ZXJhY3Rpb25Nb2RlKCkgY29uc3Q7CiAgICAgWFJWaXNpYmlsaXR5
U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CiAgICAgY29uc3QgV2ViWFJSZW5kZXJTdGF0
ZSYgcmVuZGVyU3RhdGUoKSBjb25zdDsKLSAgICBjb25zdCBXZWJYUklucHV0U291cmNlQXJyYXkm
IGlucHV0U291cmNlcygpIGNvbnN0OworICAgIGNvbnN0IFJlZlB0cjxXZWJYUklucHV0U291cmNl
QXJyYXk+IGlucHV0U291cmNlcygpIGNvbnN0OwogICAgIFBsYXRmb3JtWFI6OkRldmljZSogZGV2
aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KIAogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHVwZGF0ZVJlbmRlclN0YXRlKGNvbnN0IFhSUmVuZGVyU3RhdGVJbml0Jik7CkBAIC0x
MjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBYUkVudmlyb25tZW50QmxlbmRNb2RlIG1fZW52
aXJvbm1lbnRCbGVuZE1vZGU7CiAgICAgWFJJbnRlcmFjdGlvbk1vZGUgbV9pbnRlcmFjdGlvbk1v
ZGU7CiAgICAgWFJWaXNpYmlsaXR5U3RhdGUgbV92aXNpYmlsaXR5U3RhdGU7Ci0gICAgUmVmPFdl
YlhSSW5wdXRTb3VyY2VBcnJheT4gbV9pbnB1dFNvdXJjZXM7CisgICAgUmVmUHRyPFdlYlhSSW5w
dXRTb3VyY2VBcnJheT4gbV9pbnB1dFNvdXJjZXM7CiAgICAgYm9vbCBtX2VuZGVkIHsgZmFsc2Ug
fTsKICAgICBPcHRpb25hbDxFbmRQcm9taXNlPiBtX2VuZFByb21pc2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmlkbAppbmRleCAyZjEwY2ZhOWQ2MjE0
Yjc0NjFkN2M1NGQ4ZTVmZWEwMDVhMTY3NTBhLi45N2EwOWU5N2U1NWM3YzhjYTAyNmVhNjZkNTk0
ZDI1ZDRlZThiYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU2Vzc2lvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uaWRsCkBAIC0yOCw2ICsyOCw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCWFIsCiAgICAg
QWN0aXZlRE9NT2JqZWN0LAogICAgIFNlY3VyZUNvbnRleHQsCisgICAgSlNDdXN0b21NYXJrRnVu
Y3Rpb24sCiAgICAgRXhwb3NlZD1XaW5kb3csCiAgICAgSW50ZXJmYWNlTmFtZT1YUlNlc3Npb24K
IF0gaW50ZXJmYWNlIFdlYlhSU2Vzc2lvbiA6IEV2ZW50VGFyZ2V0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwCmluZGV4IDExOTIxNDE4OWZjMjAxZDg1MTM0
NGRlYjBkMzE2ZDM5ZjQ3OGE1OTMuLmMzMmE5M2ZhMzMwMDQzZDU3MDVkODg0ZjkzYmRmZjlmNTZj
ZTM1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRE9NUG9pbnRSZWFkT25seS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlhS
UmlnaWRUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNTYsNyArNTcsOSBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBXZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4oKSBjb25zdAogCiBib29sIFdlYlhSU3Bh
Y2U6OmlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlc3Npb24oKS5p
c1Bvc2l0aW9uRW11bGF0ZWQoKTsKKyAgICBpZiAoYXV0byogeHJTZXNzaW9uID0gc2Vzc2lvbigp
KQorICAgICAgICByZXR1cm4geHJTZXNzaW9uLT5pc1Bvc2l0aW9uRW11bGF0ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlZpZXdl
clNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJT
cGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKaW5kZXgg
ZDhmODhlYTU4Yjk1ODQ1MThkNDc2NTQwZWRjOGRkZGIxOTY3OWRiNC4uM2E5YzBjY2RhOTJhNWVi
NTZiOWJhYmU0OGJkZmYwYWU2MGVkYTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNwYWNlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiVHJh
bnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxNCArMzgs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwogY2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKLWNsYXNzIFdlYlhS
U2Vzc2lvbjsKIAogY2xhc3MgV2ViWFJTcGFjZSA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoV2ViWFJTcGFjZSk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViWFJT
cGFjZSgpOwogCi0gICAgdmlydHVhbCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCA9IDA7CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggZWZmZWN0aXZlT3JpZ2luKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0OwpAQCAtNzcsNyArNzcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+V2ViWFJWaWV3ZXJTcGFjZSgpOwogCiBwcml2YXRlOgotICAgIFdl
YlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQor
ICAgIFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICZtX3Nlc3Np
b247IH0KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCBmaW5h
bDsKIAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJX
ZWJHTExheWVyLmNwcAppbmRleCAzZWMxYjUyZmQ2MDkyMzEyNjgyZDdlMDQ3YzA4YWRkYzczY2Qz
MjQ2Li4zN2M3Y2U2N2E1MDdjYWViMTRlMThhNjJkYzkwMGZiZDhkMjMwOTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC0yMjYs
NyArMjI2LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSVmlld3BvcnQ+PiBXZWJYUldlYkdM
TGF5ZXI6OmdldFZpZXdwb3J0KFdlYlhSVmlldyYgdmlldykKICAgICAvLyAxLiBMZXQgc2Vzc2lv
biBiZSB2aWV34oCZcyBzZXNzaW9uLgogICAgIC8vIDIuIExldCBmcmFtZSBiZSBzZXNzaW9u4oCZ
cyBhbmltYXRpb24gZnJhbWUuCiAgICAgLy8gMy4gSWYgc2Vzc2lvbiBpcyBub3QgZXF1YWwgdG8g
bGF5ZXLigJlzIHNlc3Npb24sIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KLSAgICBpZiAoJnZpZXcuZnJhbWUoKS5zZXNzaW9uKCkgIT0gbV9zZXNzaW9u
LnB0cigpKQorICAgIGlmICh2aWV3LmZyYW1lKCkuc2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5wdHIo
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAg
ICAvLyA0LiBJZiBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gaXMgZmFsc2UsIHRocm93IGFuIElu
dmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQuY3Bw
CmluZGV4IDgwYjk1ZGJlZThkOTE0MmM1OWQxM2MzYjcxNjZmODU3NDhlY2MyNzIuLmY0ZjEzN2Uy
MTM2MGNjYmE1M2Q4YTNhZDM3YTkxOWU3NmM1ZTM2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmNwcApA
QCAtNDMsNyArNDMsNyBAQCBSZWY8WFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudD4gWFJJbnB1dFNv
dXJjZXNDaGFuZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbgogCiBYUklucHV0U291cmNl
c0NoYW5nZUV2ZW50OjpYUklucHV0U291cmNlc0NoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAg
IDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKLSAgICAsIG1fc2Vzc2lvbigq
aW5pdGlhbGl6ZXIuc2Vzc2lvbikKKyAgICAsIG1fc2Vzc2lvbihpbml0aWFsaXplci5zZXNzaW9u
KQogICAgICwgbV9hZGRlZChpbml0aWFsaXplci5hZGRlZCkKICAgICAsIG1fcmVtb3ZlZChpbml0
aWFsaXplci5yZW1vdmVkKQogewpAQCAtNTEsOSArNTEsOSBAQCBYUklucHV0U291cmNlc0NoYW5n
ZUV2ZW50OjpYUklucHV0U291cmNlc0NoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbgogCiBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50Ojp+WFJJbnB1dFNvdXJjZXNDaGFuZ2VF
dmVudCgpID0gZGVmYXVsdDsKIAotY29uc3QgV2ViWFJTZXNzaW9uJiBYUklucHV0U291cmNlc0No
YW5nZUV2ZW50OjpzZXNzaW9uKCkgY29uc3QKK2NvbnN0IFdlYlhSU2Vzc2lvbiogWFJJbnB1dFNv
dXJjZXNDaGFuZ2VFdmVudDo6c2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2Vzc2lv
bjsKKyAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCiBjb25zdCBWZWN0b3I8UmVmUHRy
PFdlYlhSSW5wdXRTb3VyY2U+PiYgWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudDo6YWRkZWQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291
cmNlc0NoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRT
b3VyY2VzQ2hhbmdlRXZlbnQuaAppbmRleCBkZDU0NzhmOWZmYWM0MzE3MzhhZmI5ZWEyYzE5MTk4
NGYzNzJkNWQyLi43YWQ2NzQ1ZTE1NmZmODJjZDdiODU1NWNmZGE3Mzk3OTljNmEyZDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VzQ2hhbmdl
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2Vz
Q2hhbmdlRXZlbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxY
UklucHV0U291cmNlc0NoYW5nZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IEluaXQmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKICAgICB2aXJ0dWFsIH5YUklucHV0
U291cmNlc0NoYW5nZUV2ZW50KCk7CiAKLSAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24o
KSBjb25zdDsKKyAgICBjb25zdCBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25zdDsKICAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYgYWRkZWQoKSBjb25zdDsKICAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYgcmVtb3ZlZCgpIGNvbnN0
OwogCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgWFJJbnB1dFNvdXJj
ZXNDaGFuZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7
CiAKLSAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgUmVmUHRyPFdlYlhSU2Vz
c2lvbj4gbV9zZXNzaW9uOwogICAgIFZlY3RvcjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+IG1f
YWRkZWQ7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4gbV9yZW1vdmVkOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggZDA5N2EzOWYzMGI3OGE1NDhlYWUwNzEyOTY4NGRmZTFkZDUx
OTU1ZS4uZmRlNmQwM2NiYjNhOTE4M2EzNWYyM2FkMTdjNzMwNTRlNTMxYjYxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTYyNiw4ICs2MjYsMTAgQEAgYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrTGlzdEN1
c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTV2ViQW5pbWF0aW9uQ3VzdG9tLmNwcAogYmluZGluZ3Mv
anMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1dlYlhSRnJhbWVDdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU1dlYlhSUmVmZXJlbmNlU3BhY2VDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU1dlYlhSUmlnaWRUcmFuc2Zvcm1DdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1dl
YlhSU2Vzc2lvbkN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTV2ViWFJTcGFjZUN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTV2ViWFJWaWV3Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNXaW5kb3dQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5ZTBjMWJkYWU3MDM4Mjk3MmMzNTRhMjdiNTE3YzM5Mjg1ODkyZTA1Li4y
ZjZjNDQ5ODc3N2JiY2JhNmM0MGY5NWExNDU1MDBjZTBmMWI0MjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDY1LDYgKzc0
NjUsOCBAQAogCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTRGMTY5QjI2NDBC
NjdFMDA2NjNFQ0UgLyogV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzE0RjE2OUQyNjQwQjY3RTAwNjYzRUNFIC8qIFdlYlhST3BhcXVlRnJhbWVidWZmZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMTUyQjVDRjI2MzYyNEE4MDBGOUQxMDMgLyogSlNXZWJYUkZyYW1l
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViWFJGcmFtZUN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNTJCNUQxMjYzNzUzRTAwMEY5RDEwMyAvKiBK
U1dlYlhSU2Vzc2lvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYlhSU2Vzc2lv
bkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNTU3NENDMjE4RjY2
RDAwMEQ4OEY2NiAvKiBQb2ludGVyRXZlbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUG9pbnRlckV2ZW50SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzE2NDdGQTgyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gT3BlbkdMU29mdExpbmtDb2NvYS5oOyBwYXRoID0gLi4vLi4vLi4v
UEFML3BhbC9jb2NvYS9PcGVuR0xTb2Z0TGlua0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxNjQ3RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gT3BlbkdMU29mdExpbmtDb2NvYS5tbTsgcGF0aCA9
IC4uLy4uLy4uL1BBTC9wYWwvY29jb2EvT3BlbkdMU29mdExpbmtDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMDQxLDcgKzIzMDQzLDkgQEAKIAkJCQk3MTVEQTVEMzIw
MUJCOTAyMDAyRUYyQjAgLyogSlNXZWJBbmltYXRpb25DdXN0b20uY3BwICovLAogCQkJCUQzRjNE
MzU5MUE2OUEzQjAwMDU5RkMyQiAvKiBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
ICovLAogCQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAgKi8sCisJCQkJMzE1MkI1Q0YyNjM2MjRBODAwRjlEMTAzIC8qIEpTV2Vi
WFJGcmFtZUN1c3RvbS5jcHAgKi8sCiAJCQkJMTFFNkNGMUIyNUYxNDBFMzAwMTNEM0Q1IC8qIEpT
V2ViWFJSZWZlcmVuY2VTcGFjZUN1c3RvbS5jcHAgKi8sCisJCQkJMzE1MkI1RDEyNjM3NTNFMDAw
RjlEMTAzIC8qIEpTV2ViWFJTZXNzaW9uQ3VzdG9tLmNwcCAqLywKIAkJCQkxMUU2Q0YxRDI1RjE0
MEU0MDAxM0QzRDUgLyogSlNXZWJYUlNwYWNlQ3VzdG9tLmNwcCAqLywKIAkJCQlFMTgyNThBQjBF
RjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJ
NDZGOTFCQzkxRkNERDBGRTAwMTU5OUMzIC8qIEpTV29ya2VyTmF2aWdhdG9yQ3VzdG9tLmNwcCAq
LywKQEAgLTMxNDE1LDcgKzMxNDE5LDYgQEAKIAkJCQkzMUE3OTVDNzE4ODhCQ0IyMDAzODJGOTAg
LyogQU5HTEVJbnN0YW5jZWRBcnJheXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMkFCMEVG
QUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTcxRUZDRURD
MjAyQjM4QTkwMEQ3QzQxMSAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQ0OUQ4NjRGMjY0MEM5QzUwMDAxMjJERSAvKiBIaWdobGlnaHRWaXNpYmlsaXR5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MUUyQzQyNjIxQzkzNTI4MDAyNEY4QzggLyogQW5pbWF0aW9uRWZmZWN0
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOTg0ODAxMUExRDgxN0IwMEExMzMxOCAvKiBB
bmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzExQUQxMjYyMzZEODZFNTAwNkZG
MzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjYzNCw2ICsz
MjYzNyw3IEBACiAJCQkJNDQzMEQwMEIyNTc1QTgzRTAwNDZENDAxIC8qIEhpZ2hsaWdodC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RDRkFCQkQxOEMwQUY3ODAwNkY4NDUwIC8qIEhpZ2hsaWdodERh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0MzBEMDBEMjU3NUE4QTUwMDQ2RDQwMSAvKiBIaWdo
bGlnaHRSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDQ5RDg2NEYyNjQwQzlDNTAwMDEy
MkRFIC8qIEhpZ2hsaWdodFZpc2liaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTREMTU0
MEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RDRTIw
MjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxNzQxRDExMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zNDg3Miw3ICszNDg3Niw2IEBACiAJCQkJRTQ2QjQxRjkxQ0IyNEU3MDAwOEYxMURF
IC8qIFNjcmlwdERpc2FsbG93ZWRTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5OEFFRDIx
M0ZCMjI0RDAwOTBCMUFBIC8qIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDhBNDg0NzgwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCUU0RDg2RTZEMjY0MDM5NEMwMEI2MjQyNSAvKiBTdHlsZVNjb3Bl
T3JkaW5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNFNEUyQTgxRTNCMTcxMDAwMjNCQjhBIC8q
IFNjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTFDOUQ5QjBFQjM2ODEyMDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDExMjIzQkEyNjAyNDRGRTAwQjBBMEI2IC8qIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTg3LDYgKzM1MTkwLDcg
QEAKIAkJCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjk0RjM3RTIzNjYxNjI2MDAzQUE1QzcgLyogU3R5bGVSdWxlVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ2MUQ2NUYxQkIwQzgwRDAwQ0I1NjQ1IC8qIFN0eWxl
U2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RDg2RTZEMjY0MDM5NEMwMEI2MjQyNSAvKiBT
dHlsZVNjb3BlT3JkaW5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjQ4QUExNkIwREZDMDAw
RURCQjI5IC8qIFN0eWxlU2NvcGVSdWxlU2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTVF
M0UxOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUQ2MzgwMTAxQUYxNzMyMjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERh
dGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJYUkZyYW1lQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViWFJGcmFtZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg5YmRjYzE5YWExYjVmMzE5Nzk0YzZh
ZGZmNWQxM2U3ZjM3YWQ5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViWFJGcmFtZUN1c3RvbS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSlNXZWJYUkZyYW1lLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNs
dWRlICJKU05vZGVDdXN0b20uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VmlzaXRvcj4KK3ZvaWQgSlNXZWJYUkZyYW1lOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChjb25zdF9jYXN0PFdl
YlhSU2Vzc2lvbio+KHdyYXBwZWQoKS5zZXNzaW9uKCkpKTsKK30KKworREVGSU5FX1ZJU0lUX0FE
RElUSU9OQUxfQ0hJTERSRU4oSlNXZWJYUkZyYW1lKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
WFJTZXNzaW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViWFJT
ZXNzaW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGZiMGQwZmE3ZWZmYThkYTA0YmQ0MjM4Zjc4
ZWI5YTI0YWU3NzQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJYUlNlc3Npb25DdXN0b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTV2ViWFJTZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNs
dWRlICJKU05vZGVDdXN0b20uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VmlzaXRvcj4KK3ZvaWQgSlNXZWJYUlNlc3Npb246OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGNvbnN0X2Nhc3Q8
V2ViWFJTZXNzaW9uKj4oJndyYXBwZWQoKSkpOworfQorCitERUZJTkVfVklTSVRfQURESVRJT05B
TF9DSElMRFJFTihKU1dlYlhSU2Vzc2lvbik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428071</attachid>
            <date>2021-05-07 19:10:17 -0700</date>
            <delta_ts>2021-05-07 19:22:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225025-20210508121015.patch</filename>
            <type>text/plain</type>
            <size>48849</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY4ZjQ5ZTI5ZDExNWVl
ZmRiMzZhNzU1MDI5YThmOGI1MTAzM2JhNi4uODI0MDg2Njk5ODg5NjExMGYzZTFkNmU0YWFjMzAz
ZDA0YjVjMGVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA1LTA3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIFVzZSB3ZWFrIHBv
aW50ZXJzIHRvIHJlZmVyZW5jZSBXZWJYUlNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc3MTExMjE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYlhSU2Vzc2lvbiB3YXMgYXR0ZW1wdGluZyB0byBjcmVhdGUgYSBXZWJYUklucHV0U291
cmNlQXJyYXkgaW4KKyAgICAgICAgaXRzIGNvbnN0cnVjdG9yIGluaXRpYWxpemF0aW9uIHRoYXQg
aGVsZCBhIHN0cm9uZyByZWZlcmVuY2UgdG8KKyAgICAgICAgaXRzZWxmLCB3aGljaCBjYXVzZWQg
YSBjcmFzaC4gVGhpcyBwYXR0ZXJuIHdhcyB1c2VkIGVsc2V3aGVyZSB0b28uCisKKyAgICAgICAg
UmVwbGFjZSB0aGUgc3Ryb25nIHJlZmVyZW5jZXMgdG8gV2ViWFJTZXNzaW9uIGluIHNvbWUgY2xh
c3NlcworICAgICAgICB3aXRoIHdlYWsgcG9pbnRlcnMsIHdoaWNoIHdpbGwgYXZvaWQgdGhlIHNp
dHVhdGlvbiB3aGVyZSB3ZSBrZWVwCisgICAgICAgIHRoZSBzZXNzaW9uIGFsaXZlIGlmIGFueSBv
ZiB0aGUgb3RoZXIgb2JqZWN0cyBhcmUgc3RpbGwgYXJvdW5kLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oOiBXZSBrbm93IHRoZSBzZXNzaW9u
CisgICAgICAgIGV4aXN0cyB3aGVuIGNvbnN0cnVjdGluZyB0aGlzIHNwYWNlLCBidXQgd2UgZG9u
J3Qgd2FudCB0byBoYXZlCisgICAgICAgIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgc2Vzc2lv
bi4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZSk6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSRnJhbWU6OldlYlhSRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJG
cmFtZTo6cG9wdWxhdGVQb3NlKToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1
dFNvdXJjZS5oOiBXZSBjYW4gdXNlIGEgc2Vzc2lvbiByZWZlcmVuY2UKKyAgICAgICAgd2hlbiBj
b25zdHJ1Y3RpbmcsIGJ1dCB3ZSBrZWVwIGEgd2VhayBwb2ludGVyLgorICAgICAgICAqIE1vZHVs
ZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklu
cHV0U291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6
V2ViWFJJbnB1dFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp1
cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6cG9sbEV2ZW50cyk6
IE1vdmUgdGhlIGNyZWF0aW9uIGFuZCBhcHBlbmRpbmcKKyAgICAgICAgb2YgZXZlbnRzIGludG8g
YSBsYW1iZGEsIHNvIGl0IGlzIGVhc2llciB0byBhY2NvdW50IGZvciB0aGUgY2FzZSB3aGVyZQor
ICAgICAgICB0aGUgc2Vzc2lvbiBubyBsb25nZXIgZXhpc3RzLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlRXZlbnQpOiBEZWxldGVkLgorCisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaDogQWdhaW4sIHdlIGtub3cgdGhlIHNl
c3Npb24KKyAgICAgICAgZXhpc3RzIHdoZW4gY29uc3RydWN0aW5nLCBidXQgd2Uga2VlcCBhIHdl
YWsgcG9pbnRlci4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJh
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3Vy
Y2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZUFkZGVk
T3JVcGRhdGVkSW5wdXRTb3VyY2VzKToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNwYWNlLmg6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNw
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNlKToKKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oOiBVc2UgYSByZWZlcmVu
Y2UgaW4gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZWZl
cmVuY2VTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6V2ViWFJSZWZl
cmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpuYXRp
dmVPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6
Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVu
Y2VTcGFjZTo6Zmxvb3JPcmlnaW5UcmFuc2Zvcm0gY29uc3QpOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9u
OjpXZWJYUlNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjppbnB1dFNv
dXJjZXMgY29uc3QpOiBSZXR1cm4gYSBSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNl
c3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNl
c3Npb246Om9uRnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNl
Ojppc1Bvc2l0aW9uRW11bGF0ZWQgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
WFJTZXNzaW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dlYlhSU2Vz
c2lvbjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlNwYWNlLmg6IE1ha2UgdGhlIHZpcnR1YWwgc2Vzc2lvbiBnZXR0ZXIKKyAgICAgICAg
cmV0dXJuIGEgV2Vha1B0ciwgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0aGUgc3ViY2xhc3NlcyBhcmUK
KyAgICAgICAgaG9sZGluZy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNS0wNiAgWW9zaGlha2kg
Sml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgogCiAgICAgICAgIFtPcGVu
U1NMXSBJbXBsZW1lbnQgQ3J5cHRvQWxnb3JpdGhtUlNBKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcApp
bmRleCAwYTFhYmVhODgzZDdjY2U2NGM4N2YzY2E2ODcxZWE2YTI5OTZmMDcwLi5hM2QzOTIyYzEz
ZDg0YmZkNzU4M2IyOTA1N2IyYTYwZDhjZDA2OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcApA
QCAtNDQsMTggKzQ0LDE4IEBAIHN0YXRpYyBjb25zdGV4cHIgaW50IE1pbmltdW1Cb3VuZHNWZXJ0
aWNlcyA9IDM7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZSk7CiAKLVJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNl
c3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1JlZjxXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFj
ZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9y
bTo6Y3JlYXRlKCksIHR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6
Y3JlYXRlKCksIHR5cGUpKTsKIH0KIAotUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZz
ZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9m
ZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9u
KSwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIHNlc3Npb24sIFdURk1vdmUob2Zmc2V0
KSwgdHlwZSkpOwogfQogCi1XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNl
c3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFj
ZVR5cGUgdHlwZSkKLSAgICA6IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUo
c2Vzc2lvbiksIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkKK1dlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhS
U2Vzc2lvbiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJl
ZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQorICAgIDogV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVu
dCwgc2Vzc2lvbiwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKQogewogfQogCkBAIC03Niw2ICs3Niwx
MCBAQCBjb25zdCBWZWN0b3I8UmVmPERPTVBvaW50UmVhZE9ubHk+PiYgV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2U6OmJvdW5kc0dlb21ldHJ5KAogCiBFeGNlcHRpb25PcjxSZWY8V2ViWFJSZWZl
cmVuY2VTcGFjZT4+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVu
Y2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0pCiB7Cisg
ICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworICAgIGF1dG8mIHNlc3Npb24gPSAqbV9zZXNzaW9uOworCiAgICAgYXV0byog
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKQEAgLTg0LDcgKzg4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVmZXJl
bmNlU3BhY2U+PiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXIKICAg
ICAvLyBTZXQgb2Zmc2V0U3BhY2XigJlzIG9yaWdpbiBvZmZzZXQgdG8gdGhlIHJlc3VsdCBvZiBt
dWx0aXBseWluZyBiYXNl4oCZcyBvcmlnaW4gb2Zmc2V0IGJ5IG9yaWdpbk9mZnNldCBpbiB0aGUg
cmVsZXZhbnQgcmVhbG0gb2YgYmFzZS4KICAgICBhdXRvIG9mZnNldCA9IFdlYlhSUmlnaWRUcmFu
c2Zvcm06OmNyZWF0ZShvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldFRyYW5z
Zm9ybS5yYXdUcmFuc2Zvcm0oKSk7CiAKLSAgICByZXR1cm4geyBjcmVhdGUoKmRvY3VtZW50LCBt
X3Nlc3Npb24uY29weVJlZigpLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSkgfTsKKyAgICByZXR1
cm4geyBjcmVhdGUoKmRvY3VtZW50LCBzZXNzaW9uLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSkg
fTsKIH0KIAogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhy
Ym91bmRlZHJlZmVyZW5jZXNwYWNlLWJvdW5kc2dlb21ldHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKaW5k
ZXggNzZlMDk2YWE5Y2M3ZDQ2YzRkODA0MTAzZTU3YWVjNGZjY2JiYTc4ZS4uMDkyMzY1ZTlhZWEy
MDVmYjJiNmI0N2JmYTBkNDljNzMzZGIxZDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaApAQCAtMzks
OCArMzksOCBAQCBjbGFzcyBET01Qb2ludFJlYWRPbmx5OwogY2xhc3MgV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UgZmluYWw6IHB1YmxpYyBXZWJYUlJlZmVyZW5jZVNwYWNlIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1l
bnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7Ci0gICAgc3Rh
dGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNl
U3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBj
cmVhdGUoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7Cisg
ICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50
JiwgV2ViWFJTZXNzaW9uJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNl
U3BhY2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKCk7
CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJl
ZmVyZW5jZVNwYWNlPj4gZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdpZFRy
YW5zZm9ybSYpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBXZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYm
LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNw
YWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA3OGY0MWQ5YjhmZDk2ZWI4YzBmZDE1YWVl
M2QzMWI4M2ViMjFjOTIwLi5iMmJmOGY3ODY2MGUwNGFlZDI4OWJhODFkOWRmNzZiODAyMmI3NmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTM4
LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChXZWJYUkZyYW1lKTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6OmNyZWF0
ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRp
b25GcmFtZSkKK1JlZjxXZWJYUkZyYW1lPiBXZWJYUkZyYW1lOjpjcmVhdGUoUmVmPFdlYlhSU2Vz
c2lvbj4mIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkZyYW1lKFdURk1vdmUoc2Vzc2lvbiksIGlzQW5p
bWF0aW9uRnJhbWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkZyYW1lKHNlc3Np
b24sIGlzQW5pbWF0aW9uRnJhbWUpKTsKIH0KIAotV2ViWFJGcmFtZTo6V2ViWFJGcmFtZShSZWY8
V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFt
ZSkKK1dlYlhSRnJhbWU6OldlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mIHNlc3Npb24sIElz
QW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKICAgICA6IG1faXNBbmltYXRpb25GcmFt
ZShpc0FuaW1hdGlvbkZyYW1lID09IElzQW5pbWF0aW9uRnJhbWU6OlllcykKLSAgICAsIG1fc2Vz
c2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9zZXNzaW9uKHNlc3Npb24pCiB7CiB9CiAK
QEAgLTEwNCwxMSArMTA0LDExIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBv
cHVsYXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QKIAogICAgIC8vIDIu
IExldCBzZXNzaW9uIGJlIGZyYW1l4oCZcyBzZXNzaW9uIG9iamVjdC4KICAgICAvLyAzLiBJZiBz
cGFjZeKAmXMgc2Vzc2lvbiBkb2VzIG5vdCBlcXVhbCBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlk
U3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCZzcGFjZS5zZXNzaW9u
KCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgIGlmIChzcGFjZS5zZXNzaW9uKCkgIT0gbV9zZXNz
aW9uLnB0cigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKIAogICAgIC8vIDQuIElmIGJhc2VTcGFjZeKAmXMgc2Vzc2lvbiBkb2VzIG5vdCBlcXVhbCBz
ZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMu
Ci0gICAgaWYgKCZiYXNlU3BhY2Uuc2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICBp
ZiAoYmFzZVNwYWNlLnNlc3Npb24oKSAhPSBtX3Nlc3Npb24ucHRyKCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgLy8gNS4gQ2hlY2sgaWYg
cG9zZXMgbWF5IGJlIHJlcG9ydGVkIGFuZCwgaWYgbm90LCB0aHJvdyBhIFNlY3VyaXR5RXJyb3Ig
YW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
RnJhbWUuaAppbmRleCAxNTA1MDMxNWE1NDI5NTQwMDk4ZWI5M2YzOWI4MDdlZTI2ZDc3ZmU0Li40
NTZhNDM5YTc1OTgyMmUyMTQwYjA0ZWQ4ZDVlNjljNGM1YzAzY2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJY
UkZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJGcmFtZT4gewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoV2ViWFJGcmFtZSk7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJc0FuaW1h
dGlvbkZyYW1lIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+
IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmLCBJc0FuaW1hdGlvbkZyYW1lKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYsIElzQW5pbWF0aW9u
RnJhbWUpOwogICAgIH5XZWJYUkZyYW1lKCk7CiAKICAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNl
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXhGcm9tUG9z
ZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSYpOwogCiBwcml2YXRl
OgotICAgIFdlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJiwgSXNBbmltYXRpb25GcmFtZSk7
CisgICAgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYsIElzQW5pbWF0aW9uRnJhbWUpOwog
CiAgICAgYm9vbCBpc091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5kZWRSZWZlcmVuY2VTcGFjZShj
b25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpIGNvbnN0OwogICAgIGJvb2wgaXNM
b2NhbFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IGFmZDJh
ZDI5MmNmOWU2NDM2NDM2MGE2MmYxYTc2MDhjMDVjYjhmODAuLjY3YTM1NTJmYmMzYmU1ZTU1ZjE1
MDYyOTg4MzllMzc5MDNkYTgwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcApAQCAtNDIsMTQgKzQyLDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRTb3VyY2Up
OwogCi1SZWY8V2ViWFJJbnB1dFNvdXJjZT4gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBkb3VibGUgdGltZXN0
YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UmIHNv
dXJjZSkKK1JlZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0U291cmNlOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIGRvdWJsZSB0aW1lc3RhbXAs
IGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNl
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2UoZG9jdW1lbnQs
IFdURk1vdmUoc2Vzc2lvbiksIHRpbWVzdGFtcCwgc291cmNlKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZShkb2N1bWVudCwgc2Vzc2lvbiwgdGltZXN0YW1wLCBz
b3VyY2UpKTsKIH0KIAotV2ViWFJJbnB1dFNvdXJjZTo6V2ViWFJJbnB1dFNvdXJjZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFt
cCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3Vy
Y2UpCi0gICAgOiBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKLSAgICAsIG1fdGFyZ2V0UmF5
U3BhY2UoV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVm
KCksIHNvdXJjZS5wb2ludGVyT3JpZ2luKSkKK1dlYlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRT
b3VyY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIGRvdWJsZSB0
aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZSYgc291cmNlKQorICAgIDogbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Npb24pKQorICAgICwg
bV90YXJnZXRSYXlTcGFjZShXZWJYUklucHV0U3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgc2Vzc2lv
biwgc291cmNlLnBvaW50ZXJPcmlnaW4pKQogICAgICwgbV9jb25uZWN0VGltZSh0aW1lc3RhbXAp
CiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAgICAgLCBtX2dhbWVwYWQoR2FtZXBhZDo6Y3JlYXRlKFdl
YlhSR2FtZXBhZCh0aW1lc3RhbXAsIHRpbWVzdGFtcCwgc291cmNlKSkpCkBAIC02Miw2ICs2Miwx
MCBAQCBXZWJYUklucHV0U291cmNlOjp+V2ViWFJJbnB1dFNvdXJjZSgpID0gZGVmYXVsdDsKIAog
dm9pZCBXZWJYUklucHV0U291cmNlOjp1cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCiB7CisgICAg
aWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBzZXNzaW9uID0gKm1f
c2Vzc2lvbjsKKwogI2lmICFFTkFCTEUoR0FNRVBBRCkKICAgICBVTlVTRURfUEFSQU0odGltZXN0
YW1wKTsKICNlbmRpZgpAQCAtNzAsOCArNzQsOCBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnVw
ZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRAog
ICAgIGlmIChhdXRvIGdyaXBPcmlnaW4gPSBzb3VyY2UuZ3JpcE9yaWdpbikgewogICAgICAgICBp
ZiAobV9ncmlwU3BhY2UpCiAgICAgICAgICAgICBtX2dyaXBTcGFjZS0+c2V0UG9zZSgqZ3JpcE9y
aWdpbik7Ci0gICAgICAgIGVsc2UgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2Vzc2lvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKLSAgICAgICAgICAgIG1f
Z3JpcFNwYWNlID0gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24u
Y29weVJlZigpLCAqZ3JpcE9yaWdpbik7CisgICAgICAgIGVsc2UgaWYgKGF1dG8qIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNlc3Npb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkK
KyAgICAgICAgICAgIG1fZ3JpcFNwYWNlID0gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoKmRvY3Vt
ZW50LCBzZXNzaW9uLCAqZ3JpcE9yaWdpbik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fZ3JpcFNw
YWNlID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoR0FNRVBBRCkKQEAgLTk3LDE2ICsxMDEsMjggQEAg
dm9pZCBXZWJYUklucHV0U291cmNlOjpkaXNjb25uZWN0KCkKIAogdm9pZCBXZWJYUklucHV0U291
cmNlOjpwb2xsRXZlbnRzKFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGV2ZW50cykK
IHsKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8mIHNlc3Np
b24gPSAqbV9zZXNzaW9uOworICAgIGF1dG8gcHJvdGVjdGVkU2Vzc2lvbiA9IG1ha2VSZWYoc2Vz
c2lvbik7CisKKyAgICBhdXRvIGFwcGVuZEV2ZW50ID0gWyZdIChjb25zdCBBdG9tU3RyaW5nJiBl
dmVudE5hbWUpIHsKKyAgICAgICAgWFJJbnB1dFNvdXJjZUV2ZW50OjpJbml0IGluaXQ7CisgICAg
ICAgIGluaXQuZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUocHJvdGVjdGVkU2Vzc2lvbiwgV2Vi
WFJGcmFtZTo6SXNBbmltYXRpb25GcmFtZTo6Tm8pOworICAgICAgICBpbml0LmlucHV0U291cmNl
ID0gbWFrZVJlZlB0cigqdGhpcyk7CisgICAgICAgIGV2ZW50cy5hcHBlbmQoWFJJbnB1dFNvdXJj
ZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBpbml0KSk7CisgICAgfTsKKwogICAgIGlmICghbV9j
b25uZWN0ZWQpIHsKICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzZWxl
Y3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNl
cyBlbmRzIAogICAgICAgICAvLyB3aGVuIGFuIFhSSW5wdXRTb3VyY2UgdGhhdCBoYXMgYmVndW4g
YSBwcmltYXJ5IHNlbGVjdCBhY3Rpb24gaXMgZGlzY29ubmVjdGVkLgogICAgICAgICBpZiAobV9z
ZWxlY3RTdGFydGVkKQotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVu
dE5hbWVzKCkuc2VsZWN0ZW5kRXZlbnQpKTsKKyAgICAgICAgICAgIGFwcGVuZEV2ZW50KGV2ZW50
TmFtZXMoKS5zZWxlY3RlbmRFdmVudCk7CiAKICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1Qg
ZGlzcGF0Y2ggYSBzcXVlZXplZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBp
dHMgWFJJbnB1dFNvdXJjZXMgZW5kcyAKICAgICAgICAgLy8gd2hlbiBhbiBYUklucHV0U291cmNl
IHRoYXQgaGFzIGJlZ3VuIGEgcHJpbWFyeSBzcXVlZXplIGFjdGlvbiBpcyBkaXNjb25uZWN0ZWQu
CiAgICAgICAgIGlmIChtX3NxdWVlemVTdGFydGVkKQotICAgICAgICAgICAgZXZlbnRzLmFwcGVu
ZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KSk7CisgICAgICAgICAg
ICBhcHBlbmRFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KTsKIAogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTE5LDEyICsxMzUsMTIgQEAgdm9pZCBXZWJYUklucHV0U291cmNl
Ojpwb2xsRXZlbnRzKFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGV2ZW50cykKICAg
ICBpZiAoc2VsZWN0U3RhcnRlZCAhPSBtX3NlbGVjdFN0YXJ0ZWQpIHsKICAgICAgICAgaWYgKHNl
bGVjdFN0YXJ0ZWQpIHsKICAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNo
IGEgc2VsZWN0c3RhcnQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklu
cHV0U291cmNlcyBiZWdpbnMgaXRzIHByaW1hcnkgYWN0aW9uLgotICAgICAgICAgICAgZXZlbnRz
LmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudCkpOworICAg
ICAgICAgICAgYXBwZW5kRXZlbnQoZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2gg
YSBzZWxlY3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklucHV0
U291cmNlcyBlbmRzIGl0cyBwcmltYXJ5IGFjdGlvbi4KICAgICAgICAgICAgIC8vIEEgdXNlciBh
Z2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9u
ZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgaGFzIGZ1bGx5IGNvbXBsZXRlZCBhIHByaW1hcnkgYWN0
aW9uCi0gICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5z
ZWxlY3RFdmVudCkpOwotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVu
dE5hbWVzKCkuc2VsZWN0ZW5kRXZlbnQpKTsKKyAgICAgICAgICAgIGFwcGVuZEV2ZW50KGV2ZW50
TmFtZXMoKS5zZWxlY3RFdmVudCk7CisgICAgICAgICAgICBhcHBlbmRFdmVudChldmVudE5hbWVz
KCkuc2VsZWN0ZW5kRXZlbnQpOwogICAgICAgICB9CiAgICAgICAgIG1fc2VsZWN0U3RhcnRlZCA9
IHNlbGVjdFN0YXJ0ZWQ7CiAgICAgfQpAQCAtMTMyLDI2ICsxNDgsMTcgQEAgdm9pZCBXZWJYUklu
cHV0U291cmNlOjpwb2xsRXZlbnRzKFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGV2
ZW50cykKICAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQgIT0gbV9zcXVlZXplU3RhcnRlZCkgewogICAg
ICAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQpIHsKICAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBN
VVNUIGRpc3BhdGNoIGEgc3F1ZWV6ZXN0YXJ0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9u
ZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgYmVnaW5zIGl0cyBwcmltYXJ5IHNxdWVlemUgYWN0aW9u
LgotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1
ZWV6ZXN0YXJ0RXZlbnQpKTsKKyAgICAgICAgICAgIGFwcGVuZEV2ZW50KGV2ZW50TmFtZXMoKS5z
cXVlZXplc3RhcnRFdmVudCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBBIHVz
ZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVjdGVuZCBldmVudCBvbiBhbiBYUlNlc3Npb24g
d2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGVuZHMgaXRzIHByaW1hcnkgc3F1ZWV6ZSBh
Y3Rpb24uCiAgICAgICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVj
dCBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGhh
cyBmdWxseSBjb21wbGV0ZWQgYSBwcmltYXJ5IHNxdWVlemUgYWN0aW9uLgotICAgICAgICAgICAg
ZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZUV2ZW50KSk7Ci0g
ICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zcXVlZXpl
ZW5kRXZlbnQpKTsKKyAgICAgICAgICAgIGFwcGVuZEV2ZW50KGV2ZW50TmFtZXMoKS5zcXVlZXpl
RXZlbnQpOworICAgICAgICAgICAgYXBwZW5kRXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVlbmRF
dmVudCk7CiAgICAgICAgIH0KICAgICAgICAgbV9zcXVlZXplU3RhcnRlZCA9IHNxdWVlemVTdGFy
dGVkOwogICAgIH0KIH0KIAotUmVmPFhSSW5wdXRTb3VyY2VFdmVudD4gV2ViWFJJbnB1dFNvdXJj
ZTo6Y3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKLXsKLSAgICBYUklucHV0U291
cmNlRXZlbnQ6OkluaXQgaW5pdDsKLSAgICBpbml0LmZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRl
KG1fc2Vzc2lvbi5jb3B5UmVmKCksIFdlYlhSRnJhbWU6OklzQW5pbWF0aW9uRnJhbWU6Ok5vKTsK
LSAgICBpbml0LmlucHV0U291cmNlID0gbWFrZVJlZlB0cigqdGhpcyk7Ci0KLSAgICByZXR1cm4g
WFJJbnB1dFNvdXJjZUV2ZW50OjpjcmVhdGUobmFtZSwgaW5pdCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmgKaW5kZXggYjMyMGFlNzE4OTUzYWM5
NDI3ZjNkNTUyMjFjMjdhZTQ0MDJkN2M0ZC4uZjNmZmY2N2FhMzYxZTI5OGJjZjQxZDRiMjM4MDk0
ZmM2YmU5OWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklu
cHV0U291cmNlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIElucHV0U291
cmNlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlOwogICAgIHVz
aW5nIElucHV0U291cmNlQnV0dG9uID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlQnV0dG9uOwogCi0gICAgc3RhdGljIFJlZjxXZWJYUklucHV0U291cmNlPiBjcmVh
dGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBkb3VibGUgdGltZXN0YW1wLCBjb25z
dCBJbnB1dFNvdXJjZSYpOworICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZT4gY3JlYXRl
KERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRT
b3VyY2UmKTsKICAgICB+V2ViWFJJbnB1dFNvdXJjZSgpOwogCiAgICAgUGxhdGZvcm1YUjo6SW5w
dXRTb3VyY2VIYW5kbGUgaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuaGFuZGxlOyB9
CkBAIC03MywxMSArNzMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb2xsRXZlbnRzKFZlY3RvcjxS
ZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mKTsKIAogcHJpdmF0ZToKLSAgICBXZWJYUklucHV0U291
cmNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgZG91YmxlIHRpbWVzdGFtcCwgY29u
c3QgSW5wdXRTb3VyY2UmKTsKKyAgICBXZWJYUklucHV0U291cmNlKERvY3VtZW50JiwgV2ViWFJT
ZXNzaW9uJiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2UmKTsKIAotICAgIFJl
ZjxYUklucHV0U291cmNlRXZlbnQ+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmKTsKLQot
ICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lv
bj4gbV9zZXNzaW9uOwogICAgIElucHV0U291cmNlIG1fc291cmNlOwogICAgIFJlZjxXZWJYUklu
cHV0U3BhY2U+IG1fdGFyZ2V0UmF5U3BhY2U7CiAgICAgUmVmUHRyPFdlYlhSSW5wdXRTcGFjZT4g
bV9ncmlwU3BhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTb3VyY2VBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKaW5kZXggMWI5YzU3NGJiZWQ2MzcyYmQ3M2RiY2JjZDBm
YWYzNmRlYmY3ZGY5NS4uNTRhNTEwNWZlNjhhNjRmZGFlNGMzMGZkNDA0YjRlMTYyYzU5MDg1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNl
QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZUFycmF5LmNwcApAQCAtMzgsMTMgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRTb3VyY2VBcnJheSk7CiAKLVJl
ZjxXZWJYUklucHV0U291cmNlQXJyYXk+IFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKFJl
ZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKK1JlZjxXZWJYUklucHV0U291cmNlQXJyYXk+IFdl
YlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U291cmNlQXJyYXkoV1RGTW92ZShzZXNz
aW9uKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2VBcnJheShz
ZXNzaW9uKSk7CiB9CiAKLVdlYlhSSW5wdXRTb3VyY2VBcnJheTo6V2ViWFJJbnB1dFNvdXJjZUFy
cmF5KFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKLSAgICA6IG1fc2Vzc2lvbihXVEZNb3Zl
KHNlc3Npb24pKQorV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpXZWJYUklucHV0U291cmNlQXJyYXko
V2ViWFJTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Np
b24pKQogewogfQogCkBAIC02OCw2ICs2OCwxMCBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJh
eTo6Y2xlYXIoKQogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jbGlz
dC1vZi1hY3RpdmUteHItaW5wdXQtc291cmNlcwogdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6
OnVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmIGlucHV0U291
cmNlcykKIHsKKyAgICBhdXRvIHNlc3Npb24gPSBtYWtlUmVmUHRyKG1fc2Vzc2lvbi5nZXQoKSk7
CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKICAgICBWZWN0b3I8UmVmUHRy
PFdlYlhSSW5wdXRTb3VyY2U+PiBhZGRlZDsKICAgICBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRT
b3VyY2U+PiByZW1vdmVkOwogICAgIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4gaW5w
dXRFdmVudHM7CkBAIC03OCwxMiArODIsMTIgQEAgdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6
OnVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmIGlucHUKICAg
ICBpZiAoIWFkZGVkLmlzRW1wdHkoKSB8fCAhcmVtb3ZlZC5pc0VtcHR5KCkpIHsKICAgICAgICAg
Ly8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYW4gaW5wdXRzb3VyY2VzY2hhbmdlIGV2ZW50
IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIHRoZSBzZXNzaW9u4oCZcyBsaXN0IG9mIGFjdGl2ZSBYUiBp
bnB1dCBzb3VyY2VzIGhhcyBjaGFuZ2VkLgogICAgICAgICBYUklucHV0U291cmNlc0NoYW5nZUV2
ZW50OjpJbml0IGluaXQ7Ci0gICAgICAgIGluaXQuc2Vzc2lvbiA9IG1fc2Vzc2lvbi5jb3B5UmVm
KCk7CisgICAgICAgIGluaXQuc2Vzc2lvbiA9IHNlc3Npb247CiAgICAgICAgIGluaXQuYWRkZWQg
PSBXVEZNb3ZlKGFkZGVkKTsKICAgICAgICAgaW5pdC5yZW1vdmVkID0gV1RGTW92ZShyZW1vdmVk
KTsKICAgICAgICAgCiAgICAgICAgIGF1dG8gZXZlbnQgPSBYUklucHV0U291cmNlc0NoYW5nZUV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlucHV0c291cmNlc2NoYW5nZUV2ZW50LCBpbml0KTsK
LSAgICAgICAgbV9zZXNzaW9uLT5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobV9zZXNzaW9uLmdl
dCgpLCBUYXNrU291cmNlOjpXZWJYUiwgV1RGTW92ZShldmVudCkpOworICAgICAgICBBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqc2Vzc2lvbiwgVGFza1NvdXJjZTo6
V2ViWFIsIFdURk1vdmUoZXZlbnQpKTsKICAgICB9CiAKICAgICBpZiAoIWlucHV0RXZlbnRzLmlz
RW1wdHkoKSkgewpAQCAtOTUsOSArOTksOSBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6
dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdQogICAg
ICAgICAvLyA1LiBTZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRvIGZhbHNlLgogCiAgICAg
ICAgIGZvciAoYXV0byYgZXZlbnQgOiBpbnB1dEV2ZW50cykgewotICAgICAgICAgICAgbV9zZXNz
aW9uLT5xdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUobV9zZXNzaW9uLmdldCgpLCBUYXNrU291
cmNlOjpXZWJYUiwgWyZzZXNzaW9uID0gbV9zZXNzaW9uLmdldCgpLCBldmVudCA9IFdURk1vdmUo
ZXZlbnQpXSgpIHsKKyAgICAgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCptX3Nlc3Npb24uZ2V0KCksIFRhc2tTb3VyY2U6OldlYlhSLCBbc2Vzc2lv
biA9IHNlc3Npb24sIGV2ZW50ID0gV1RGTW92ZShldmVudCldKCkgewogICAgICAgICAgICAgICAg
IGV2ZW50LT5zZXRGcmFtZUFjdGl2ZSh0cnVlKTsKLSAgICAgICAgICAgICAgICBzZXNzaW9uLmRp
c3BhdGNoRXZlbnQoZXZlbnQuY29weVJlZigpKTsKKyAgICAgICAgICAgICAgICBzZXNzaW9uLT5k
aXNwYXRjaEV2ZW50KGV2ZW50LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNl
dEZyYW1lQWN0aXZlKGZhbHNlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC0xMjcs
NyArMTMxLDExIEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVSZW1vdmVkSW5w
dXRTb3VyY2VzKGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wCiAvLyBodHRwczovL2ltbWVyc2l2
ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2VzCiB2
b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJj
ZXMoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0JiBpbnB1dFNvdXJjZXMs
IFZlY3RvcjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiBhZGRlZCwgVmVjdG9yPFJlZlB0cjxX
ZWJYUklucHV0U291cmNlPj4mIHJlbW92ZWQsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50
Pj4mIGlucHV0RXZlbnRzKQogewotICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2Vzc2lvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fc2Vz
c2lvbikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8mIHNlc3Npb24gPSAqbV9zZXNzaW9uOwor
CisgICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2Vzc2lvbi5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTQxLDcgKzE0OSw3IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVB
ZGRlZE9yVXBkYXRlZElucHV0U291cmNlcyhkb3VibGUgdGltZXN0YW1wLCBjCiAgICAgICAgICAg
ICAvLyAgIDMuMSBMZXQgaW5wdXRTb3VyY2UgYmUgYSBuZXcgWFJJbnB1dFNvdXJjZSBpbiB0aGUg
cmVsZXZhbnQgcmVhbG0gb2YgdGhpcyBYUlNlc3Npb24uCiAgICAgICAgICAgICAvLyAgIDMuMiBB
ZGQgaW5wdXRTb3VyY2UgdG8gYWRkZWQuCiAKLSAgICAgICAgICAgIGF1dG8gaW5wdXQgPSBXZWJY
UklucHV0U291cmNlOjpjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCB0aW1l
c3RhbXAsIGlucHV0U291cmNlKTsKKyAgICAgICAgICAgIGF1dG8gaW5wdXQgPSBXZWJYUklucHV0
U291cmNlOjpjcmVhdGUoKmRvY3VtZW50LCBzZXNzaW9uLCB0aW1lc3RhbXAsIGlucHV0U291cmNl
KTsKICAgICAgICAgICAgIGFkZGVkLmFwcGVuZChpbnB1dC5jb3B5UmVmKCkpOwogICAgICAgICAg
ICAgaW5wdXQtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOwogICAgICAgICAgICAgbV9pbnB1dFNv
dXJjZXMuYXBwZW5kKFdURk1vdmUoaW5wdXQpKTsKQEAgLTE2NSw3ICsxNzMsNyBAQCB2b2lkIFdl
YlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMoZG91
YmxlIHRpbWVzdGFtcCwgYwogICAgICAgICAgICAgaW5wdXQtPnBvbGxFdmVudHMoaW5wdXRFdmVu
dHMpOwogICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMucmVtb3ZlKGluZGV4KTsKIAotICAgICAg
ICAgICAgYXV0byBuZXdJbnB1dFNvdXJjZSA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgqZG9j
dW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOworICAg
ICAgICAgICAgYXV0byBuZXdJbnB1dFNvdXJjZSA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgq
ZG9jdW1lbnQsIHNlc3Npb24sIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOwogICAgICAgICAgICAg
YWRkZWQuYXBwZW5kKG5ld0lucHV0U291cmNlLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBuZXdJ
bnB1dFNvdXJjZS0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CiAgICAgICAgICAgICBtX2lucHV0
U291cmNlcy5hcHBlbmQoV1RGTW92ZShuZXdJbnB1dFNvdXJjZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgKaW5kZXggMTE0
MTVjZmNkMDQ3ZGFjYzEyM2MwMGJjNjM3YzAyMTZmNDM4Y2QxMC4uMmU0YTNmYWZjZjQ4NzNmYjIz
MTAwOWUzNTkxOTIyMDc0NDc3MmE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IFdlYlhSSW5wdXRTb3VyY2VBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJJbnB1dFNvdXJjZUFy
cmF5KTsKIHB1YmxpYzoKICAgICB1c2luZyBJbnB1dFNvdXJjZUxpc3QgPSBWZWN0b3I8UGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPjsKLSAgICBzdGF0aWMgUmVmPFdl
YlhSSW5wdXRTb3VyY2VBcnJheT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYpOworICAgIHN0
YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBjcmVhdGUoV2ViWFJTZXNzaW9uJik7CiAg
ICAgfldlYlhSSW5wdXRTb3VyY2VBcnJheSgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3Q7CkBAIC01MywxMiArNTMsMTIgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlKGRvdWJsZSB0
aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYpOwogCiBwcml2YXRlOgotICAgIFdlYlhS
SW5wdXRTb3VyY2VBcnJheShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBXZWJYUklucHV0U291
cmNlQXJyYXkoV2ViWFJTZXNzaW9uJik7CiAKICAgICB2b2lkIGhhbmRsZVJlbW92ZWRJbnB1dFNv
dXJjZXMoY29uc3QgSW5wdXRTb3VyY2VMaXN0JiwgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291
cmNlPj4mLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CiAgICAgdm9pZCBoYW5k
bGVBZGRlZE9yVXBkYXRlZElucHV0U291cmNlcyhkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1
dFNvdXJjZUxpc3QmLCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYsIFZlY3RvcjxS
ZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+
PiYpOwogCi0gICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2Vi
WFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgVmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4g
bV9pbnB1dFNvdXJjZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSW5wdXRTcGFjZS5jcHAKaW5kZXggZjc3Y2E1MjM3MmE0ZWNiNTZmZTQ2NzFkZDc2ZTU0
NTE4MzVkZGRlNy4uOGQ4ODEzNzUzZTQ5Mzc1ZTY3NDhlZmExZGFjY2Y0ZjY1YzgzYjM4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmNwcApA
QCAtMzksMTQgKzM5LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0
U3BhY2UpOwogCiAvLyBXZWJYUklucHV0U3BhY2UKIAotUmVmPFdlYlhSSW5wdXRTcGFjZT4gV2Vi
WFJJbnB1dFNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9u
PiYmIHNlc3Npb24sIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZVBvc2UmIHBvc2UpCitSZWY8V2ViWFJJbnB1dFNwYWNlPiBXZWJYUklucHV0U3BhY2U6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U3BhY2UoZG9jdW1lbnQsIFdURk1vdmUo
c2Vzc2lvbiksIHBvc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U3Bh
Y2UoZG9jdW1lbnQsIHNlc3Npb24sIHBvc2UpKTsKIH0KIAotV2ViWFJJbnB1dFNwYWNlOjpXZWJY
UklucHV0U3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Np
b24sIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2Um
IHBvc2UpCitXZWJYUklucHV0U3BhY2U6OldlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKICAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQs
IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpKQotICAgICwgbV9zZXNzaW9uKFdURk1vdmUo
c2Vzc2lvbikpCisgICAgLCBtX3Nlc3Npb24obWFrZVdlYWtQdHIoc2Vzc2lvbikpCiAgICAgLCBt
X3Bvc2UocG9zZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJJbnB1dFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
SW5wdXRTcGFjZS5oCmluZGV4IDQ5NWE4Yzg1YjA5NTk0ZDY1N2MzZTYzY2IxN2FmMDMxYWNhN2Jh
NjYuLjQ5OWUxNDNmNzAzNWZiNjhmZmRkZWNmYjYzZTkyMzU5MWY5YmRkODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJYUklucHV0U3BhY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJYUklucHV0U3BhY2U+LCBwdWJsaWMgV2ViWFJTcGFjZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUklucHV0U3BhY2UpOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViWFJJbnB1dFNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9u
PiYmLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3Nl
Jik7CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdl
YlhSU2Vzc2lvbiYsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZVBvc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJYUklucHV0U3BhY2UoKTsKIAogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6cmVmOwpAQCAtNDgsMTQgKzQ4LDE0IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFBvc2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkgeyBtX3Bvc2UgPSBwb3NlOyB9CiAKIHByaXZhdGU6
Ci0gICAgV2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYpOwotICAg
IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5n
ZXQoKTsgfQorICAgIFdlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIGNv
bnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAg
ICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2Vzc2lvbjsgfQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIFJlZjxX
ZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNz
aW9uOwogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2Ug
bV9wb3NlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggODA4M2QzZGUxZDIwNGE5Zjc4NTY0ZjIwOWYzMGMy
ZjJlODY4NWRmOC4uMWNjZDRiMDE4Njc1MjUzNzc3MTVkYTk5YmY2MzM3MzlhMmRmOTM5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3Bh
Y2UuY3BwCkBAIC00MCwyMyArNDAsMjMgQEAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgRGVmYXVs
dFVzZXJIZWlnaHRJbk1ldGVycyA9IDEuNjU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJYUlJlZmVyZW5jZVNwYWNlKTsKIAotUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhS
UmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1JlZjxXZWJYUlJlZmVy
ZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7CiAg
ICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzcGFjZS1uYXRp
dmUtb3JpZ2luCiAgICAgLy8gVGhlIHRyYW5zZm9ybSBmcm9tIHRoZSBlZmZlY3RpdmUgc3BhY2Ug
dG8gdGhlIG5hdGl2ZSBvcmlnaW4ncyBzcGFjZSBpcwogICAgIC8vIGRlZmluZWQgYnkgYW4gb3Jp
Z2luIG9mZnNldCwgd2hpY2ggaXMgYW4gWFJSaWdpZFRyYW5zZm9ybSBpbml0aWFsbHkgc2V0CiAg
ICAgLy8gdG8gYW4gaWRlbnRpdHkgdHJhbnNmb3JtLgotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdlYlhSUmln
aWRUcmFuc2Zvcm06OmNyZWF0ZSgpLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV2ViWFJSaWdpZFRyYW5zZm9y
bTo6Y3JlYXRlKCksIHR5cGUpKTsKIH0KIAotUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhS
UmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVy
ZW5jZVNwYWNlVHlwZSB0eXBlKQorUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJl
bmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lv
biwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlw
ZSB0eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVmZXJlbmNlU3BhY2Uo
ZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIHNlc3Np
b24sIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkpOwogfQogCi1XZWJYUlJlZmVyZW5jZVNwYWNlOjpX
ZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4m
JiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNl
U3BhY2VUeXBlIHR5cGUpCitXZWJYUlJlZmVyZW5jZVNwYWNlOjpXZWJYUlJlZmVyZW5jZVNwYWNl
KERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdp
ZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiAgICAgOiBX
ZWJYUlNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKG9mZnNldCkpCi0gICAgLCBtX3Nlc3Npb24oV1RG
TW92ZShzZXNzaW9uKSkKKyAgICAsIG1fc2Vzc2lvbihtYWtlV2Vha1B0cihzZXNzaW9uKSkKICAg
ICAsIG1fdHlwZSh0eXBlKQogewogfQpAQCAtNzIsNiArNzIsOSBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBXZWJYUlJlZmVyZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAogICAgIC8vIFRo
aXMgd2lsbCByZXF1aXJlIG1vcmUgY29tcGxleCBsb2dpYyBpZiB3ZSBhZGQgcG9ydHMgd2l0aCBk
aWZmZXJlbnQgZGVmYXVsdCBjb29yZGluYXRlcy4KICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAg
IGNhc2UgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlcjogeworICAgICAgICBpZiAoIW1fc2Vz
c2lvbikKKyAgICAgICAgICAgIHJldHVybiBpZGVudGl0eTsKKwogICAgICAgICAvLyBSZXR1cm4g
dGhlIGN1cnJlbnQgcG9zZS4gQ29udGVudCByZW5kZXJlZCBpbiB2aWV3ZXIgcG9zZSB3aWxsIHN0
YXkgaW4gZml4ZWQgcG9pbnQgb24gSE1Ecy4KICAgICAgICAgYXV0byYgZGF0YSA9IG1fc2Vzc2lv
bi0+ZnJhbWVEYXRhKCk7CiAgICAgICAgIHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9z
ZShkYXRhLm9yaWdpbik7CkBAIC05Nyw2ICsxMDAsMTAgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QKIAogRXhjZXB0aW9uT3I8
UmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRS
ZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0p
CiB7CisgICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworICAgIGF1dG8mIHNlc3Npb24gPSAqbV9zZXNzaW9uOworCiAgICAg
YXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTEwNSwxMSArMTEyLDE0IEBAIEV4Y2VwdGlvbk9yPFJlZjxX
ZWJYUlJlZmVyZW5jZVNwYWNlPj4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJl
bmNlU3BhCiAgICAgLy8gU2V0IG9mZnNldFNwYWNl4oCZcyBvcmlnaW4gb2Zmc2V0IHRvIHRoZSBy
ZXN1bHQgb2YgbXVsdGlwbHlpbmcgYmFzZeKAmXMgb3JpZ2luIG9mZnNldCBieSBvcmlnaW5PZmZz
ZXQgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIGJhc2UuCiAgICAgYXV0byBvZmZzZXQgPSBXZWJY
UlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUob3JpZ2luT2Zmc2V0KCkucmF3VHJhbnNmb3JtKCkgKiBv
ZmZzZXRUcmFuc2Zvcm0ucmF3VHJhbnNmb3JtKCkpOwogCi0gICAgcmV0dXJuIGNyZWF0ZSgqZG9j
dW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIFdURk1vdmUob2Zmc2V0KSwgbV90eXBlKTsKKyAg
ICByZXR1cm4gY3JlYXRlKCpkb2N1bWVudCwgc2Vzc2lvbiwgV1RGTW92ZShvZmZzZXQpLCBtX3R5
cGUpOwogfQogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVyZW5jZVNwYWNlOjpmbG9v
ck9yaWdpblRyYW5zZm9ybSgpIGNvbnN0CiB7CisgICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAg
IHJldHVybiB7IH07CisKICAgICBhdXRvJiBkYXRhID0gbV9zZXNzaW9uLT5mcmFtZURhdGEoKTsK
ICAgICBpZiAoIWRhdGEuZmxvb3JUcmFuc2Zvcm0pIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZGVmYXV0VHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaAppbmRleCA5MzQ5NTY0MWQxNDMwZGZjY2EzMzI4OTBl
OGMxZDM5Y2ZjNTg0MGRmLi5iNzA0MmMxNjY4OGZmNDI4YTI1YzYxYjQyYzQ0ZGFlOGE3M2ViNjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNl
U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNl
U3BhY2UuaApAQCAtNDAsMjcgKzQwLDI3IEBAIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIGNsYXNzIFdl
YlhSUmVmZXJlbmNlU3BhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlJlZmVyZW5jZVNwYWNl
PiwgcHVibGljIFdlYlhSU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJS
ZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNw
YWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNw
YWNlVHlwZSk7Ci0gICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9j
dW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwg
WFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFj
ZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUp
OworICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50Jiwg
V2ViWFJTZXNzaW9uJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldlYlhSUmVmZXJlbmNlU3BhY2UoKTsKIAogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8V2ViWFJSZWZlcmVuY2VTcGFjZT46OnJlZjsKICAgICB1c2luZyBSZWZD
b3VudGVkPFdlYlhSUmVmZXJlbmNlU3BhY2U+OjpkZXJlZjsKIAotICAgIFdlYlhSU2Vzc2lvbiYg
c2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorICAgIFdl
YWtQdHI8V2ViWFJTZXNzaW9uPiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNz
aW9uOyB9CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4+
IGdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKTsKICAg
ICBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
IHByb3RlY3RlZDoKLSAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VU
eXBlKTsKKyAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwg
UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKIAogICAg
IGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsb29yT3JpZ2luVHJhbnNmb3JtKCkgY29uc3Q7CiAK
LSAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgV2Vha1B0cjxXZWJYUlNlc3Np
b24+IG1fc2Vzc2lvbjsKICAgICBYUlJlZmVyZW5jZVNwYWNlVHlwZSBtX3R5cGU7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5k
ZXggYzhiZTMwZmMxOGYwOGYzM2ZjYmMxZDM2NGQzZDk2YzliMGI0OTNkOS4uOTY1NzlmYzVlMGRm
NWMyYWIyZjFmOTIyNjJjNjQ1MWNhOTJhNWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtOTgsNyArOTgsNyBAQCBjb25zdCBXZWJYUlJl
bmRlclN0YXRlJiBXZWJYUlNlc3Npb246OnJlbmRlclN0YXRlKCkgY29uc3QKICAgICByZXR1cm4g
Km1fYWN0aXZlUmVuZGVyU3RhdGU7CiB9CiAKLWNvbnN0IFdlYlhSSW5wdXRTb3VyY2VBcnJheSYg
V2ViWFJTZXNzaW9uOjppbnB1dFNvdXJjZXMoKSBjb25zdAorY29uc3QgUmVmUHRyPFdlYlhSSW5w
dXRTb3VyY2VBcnJheT4gV2ViWFJTZXNzaW9uOjppbnB1dFNvdXJjZXMoKSBjb25zdAogewogICAg
IHJldHVybiBtX2lucHV0U291cmNlczsKIH0KQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFdlYlhS
U2Vzc2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUs
IFJlcXVlc3RSZWZlcgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1
Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCiAgICAgICAgICAgICBSZWZQdHI8
V2ViWFJSZWZlcmVuY2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7CiAgICAgICAgICAgICBpZiAodHlw
ZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQotICAgICAgICAgICAgICAg
IHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1
bWVudCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNw
YWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMs
IHR5cGUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNl
ID0gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlUmVmKCp0aGlzKSwg
dHlwZSk7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJlZmVyZW5jZVNw
YWNlOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCB0eXBlKTsKIAogICAgICAgICAgICAgLy8gMi41
LiBSZXNvbHZlIHByb21pc2Ugd2l0aCByZWZlcmVuY2VTcGFjZS4KICAgICAgICAgICAgIHByb21p
c2UucmVzb2x2ZShyZWZlcmVuY2VTcGFjZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTUxOCw3ICs1
MTgsNyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YSYmIGZyYW1lRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUXVldWUgYSB0
YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwcy4KLSAgICBxdWV1ZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbdGhpcywgZnJhbWVEYXRhID0g
V1RGTW92ZShmcmFtZURhdGEpXSgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmpl
Y3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKG1fZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTUyNiw3
ICs1MjYsNyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkKICAgICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0aGUgY3Vy
cmVudCBoaWdoIHJlc29sdXRpb24gdGltZS4KICAgICAgICAgYXV0byBub3cgPSAoTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25kcygpOwogCi0gICAgICAgIGF1
dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigqdGhpcyksIFdlYlhSRnJhbWU6
OklzQW5pbWF0aW9uRnJhbWU6Olllcyk7CisgICAgICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1l
OjpjcmVhdGUocHJvdGVjdGVkVGhpcywgV2ViWFJGcmFtZTo6SXNBbmltYXRpb25GcmFtZTo6WWVz
KTsKICAgICAgICAgLy8gIDIuTGV0IGZyYW1lIGJlIHNlc3Npb27igJlzIGFuaW1hdGlvbiBmcmFt
ZS4KICAgICAgICAgLy8gIDMuU2V0IGZyYW1l4oCZcyB0aW1lIHRvIGZyYW1lVGltZS4KICAgICAg
ICAgZnJhbWUtPnNldFRpbWUoc3RhdGljX2Nhc3Q8RE9NSGlnaFJlc1RpbWVTdGFtcD4oZnJhbWVE
YXRhLnByZWRpY3RlZERpc3BsYXlUaW1lKSk7CkBAIC01NzksNyArNTc5LDYgQEAgdm9pZCBXZWJY
UlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURh
dGEpCiAgICAgICAgICAgICAvLyBJZiB0aGUgc2Vzc2lvbiBpcyBlbmRlZCwgbV9hbmltYXRpb25G
cmFtZS0+c2V0QWN0aXZlIGZhbHNlIGlzIHNldCBpbiBzaHV0ZG93bigpLgogICAgICAgICAgICAg
ZnJhbWUtPnNldEFjdGl2ZShmYWxzZSk7CiAKLQogICAgICAgICAgICAgLy8gU3VibWl0IGN1cnJl
bnQgZnJhbWUgbGF5ZXJzIHRvIHRoZSBkZXZpY2UuCiAgICAgICAgICAgICBWZWN0b3I8UGxhdGZv
cm1YUjo6RGV2aWNlOjpMYXllcj4gZnJhbWVMYXllcnM7CiAgICAgICAgICAgICBpZiAobV9tb2Rl
ID09IFhSU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyICYmIG1fYWN0aXZlUmVuZGVyU3RhdGUtPmJh
c2VMYXllcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgK
aW5kZXggOGVkNDFlMTcyYzlhN2RhZjc3Y2E0YWM2OGQxYTRmMTJhNTgxNWM5Ni4uMDY4MzNmNmMy
MjNjMWU0Zjc2MDUxYmNmMTI4MGFkYTkwOWMzMWFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJX
ZWJYUklucHV0U291cmNlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJYUlJlbmRlclN0YXRlLmgiCiAj
aW5jbHVkZSAiWFJFbnZpcm9ubWVudEJsZW5kTW9kZS5oIgpAQCAtNDcsNiArNDYsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBYUkZyYW1lUmVxdWVzdENhbGxiYWNrOworY2xhc3Mg
V2ViWFJSZWZlcmVuY2VTcGFjZTsKIGNsYXNzIFdlYlhSU3lzdGVtOwogY2xhc3MgV2ViWFJWaWV3
OwogY2xhc3MgV2ViWFJWaWV3ZXJTcGFjZTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IFhSSW50ZXJhY3Rpb25Nb2RlIGludGVyYWN0aW9uTW9kZSgpIGNvbnN0OwogICAgIFhSVmlzaWJp
bGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0OwogICAgIGNvbnN0IFdlYlhSUmVuZGVy
U3RhdGUmIHJlbmRlclN0YXRlKCkgY29uc3Q7Ci0gICAgY29uc3QgV2ViWFJJbnB1dFNvdXJjZUFy
cmF5JiBpbnB1dFNvdXJjZXMoKSBjb25zdDsKKyAgICBjb25zdCBSZWZQdHI8V2ViWFJJbnB1dFNv
dXJjZUFycmF5PiBpbnB1dFNvdXJjZXMoKSBjb25zdDsKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2Uq
IGRldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9CiAKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiB1cGRhdGVSZW5kZXJTdGF0ZShjb25zdCBYUlJlbmRlclN0YXRlSW5pdCYpOwpA
QCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgWFJFbnZpcm9ubWVudEJsZW5kTW9kZSBt
X2Vudmlyb25tZW50QmxlbmRNb2RlOwogICAgIFhSSW50ZXJhY3Rpb25Nb2RlIG1faW50ZXJhY3Rp
b25Nb2RlOwogICAgIFhSVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwotICAgIFJl
ZjxXZWJYUklucHV0U291cmNlQXJyYXk+IG1faW5wdXRTb3VyY2VzOworICAgIFJlZlB0cjxXZWJY
UklucHV0U291cmNlQXJyYXk+IG1faW5wdXRTb3VyY2VzOwogICAgIGJvb2wgbV9lbmRlZCB7IGZh
bHNlIH07CiAgICAgT3B0aW9uYWw8RW5kUHJvbWlzZT4gbV9lbmRQcm9taXNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5pZGwKaW5kZXggMmYxMGNmYTlk
NjIxNGI3NDYxZDdjNTRkOGU1ZmVhMDA1YTE2NzUwYS4uOTdhMDllOTdlNTVjN2M4Y2EwMjZlYTY2
ZDU5NGQyNWQ0ZWU4YmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmlkbApAQCAtMjgsNiArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAog
ICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBTZWN1cmVDb250ZXh0LAorICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uLAogICAgIEV4cG9zZWQ9V2luZG93LAogICAgIEludGVyZmFjZU5hbWU9WFJTZXNz
aW9uCiBdIGludGVyZmFjZSBXZWJYUlNlc3Npb24gOiBFdmVudFRhcmdldCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcAppbmRleCAxMTkyMTQxODlmYzIwMWQ4
NTEzNDRkZWIwZDMxNmQzOWY0NzhhNTkzLi5jMTRlNjZjYWM4MmY3MWFlNzZkMGIyNGYxOGEzMWE1
MDUzZjQwMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHkuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJX
ZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTU2LDcgKzU3LDkgQEAgVHJhbnNmb3JtYXRp
b25NYXRyaXggV2ViWFJTcGFjZTo6ZWZmZWN0aXZlT3JpZ2luKCkgY29uc3QKIAogYm9vbCBXZWJY
UlNwYWNlOjppc1Bvc2l0aW9uRW11bGF0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBzZXNzaW9u
KCkuaXNQb3NpdGlvbkVtdWxhdGVkKCk7CisgICAgaWYgKGF1dG8geHJTZXNzaW9uID0gc2Vzc2lv
bigpKQorICAgICAgICByZXR1cm4geHJTZXNzaW9uLT5pc1Bvc2l0aW9uRW11bGF0ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlZp
ZXdlclNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKaW5k
ZXggZDhmODhlYTU4Yjk1ODQ1MThkNDc2NTQwZWRjOGRkZGIxOTY3OWRiNC4uNTYwN2M3YzE2MTQ3
MDFmY2M3NTA5NjQ3N2M2ZGNkNGQzZjdjZTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlNwYWNlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAi
VHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxNCAr
MzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKLWNsYXNzIFdl
YlhSU2Vzc2lvbjsKIAogY2xhc3MgV2ViWFJTcGFjZSA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoV2ViWFJTcGFjZSk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
WFJTcGFjZSgpOwogCi0gICAgdmlydHVhbCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gc2Vzc2lvbigpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0
ID0gMDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBlZmZlY3RpdmVPcmlnaW4oKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3Q7CkBAIC03Nyw3ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJYUlZpZXdlclNwYWNlKCk7CiAKIHByaXZh
dGU6Ci0gICAgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9z
ZXNzaW9uOyB9CisgICAgV2Vha1B0cjxXZWJYUlNlc3Npb24+IHNlc3Npb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtYWtlV2Vha1B0cihtX3Nlc3Npb24pOyB9CiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IGRlOTU3MGE1MjY3ZWY1Mzk1N2UzN2QxNjYwY2UyZGEzOGNlZTc3ZmIuLjIyYTBlYjU4
MjAxNGExNDM4NDExMmM1MjZjZmZiMDUzNDc1YmFiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02Mjgs
NiArNjI4LDcgQEAgYmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cAogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCiBiaW5kaW5n
cy9qcy9KU1dlYlhSUmVmZXJlbmNlU3BhY2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1dlYlhS
UmlnaWRUcmFuc2Zvcm1DdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1dlYlhSU2Vzc2lvbkN1c3Rv
bS5jcHAKIGJpbmRpbmdzL2pzL0pTV2ViWFJTcGFjZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pT
V2ViWFJWaWV3Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
MTkzNTNjOWYxYjk1NWU1NGQzZDFhMjFkOTMzZTZjMmE0N2M2MzAzLi5kOTZjNTIxNGNjNTQ2MDk5
M2FmZjEwMTdjZDFkNjczZGNhN2YzNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDY2LDYgKzc0NjYsOCBAQAogCQkzMTRC
RTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTRGMTY5QjI2NDBCNjdFMDA2NjNFQ0UgLyog
V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJYUk9wYXF1
ZUZyYW1lYnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE0RjE2OUQy
NjQwQjY3RTAwNjYzRUNFIC8qIFdlYlhST3BhcXVlRnJhbWVidWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMTUyQjVDRjI2MzYyNEE4MDBGOUQxMDMgLyogSlNXZWJYUkZyYW1lQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTV2ViWFJGcmFtZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxNTJCNUQxMjYzNzUzRTAwMEY5RDEwMyAvKiBKU1dlYlhSU2Vzc2lvbkN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYlhSU2Vzc2lvbkN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNTU3NENDMjE4RjY2RDAwMEQ4OEY2NiAvKiBQ
b2ludGVyRXZlbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UG9pbnRlckV2ZW50SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2NDdG
QTgyNTE2MTZCRDAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gT3BlbkdMU29mdExpbmtDb2NvYS5oOyBwYXRoID0gLi4vLi4vLi4vUEFML3BhbC9jb2NvYS9P
cGVuR0xTb2Z0TGlua0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjQ3
RkE5MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gT3BlbkdMU29mdExpbmtDb2NvYS5tbTsgcGF0aCA9IC4uLy4uLy4uL1BBTC9w
YWwvY29jb2EvT3BlbkdMU29mdExpbmtDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzMDUwLDcgKzIzMDUyLDkgQEAKIAkJCQk3MTVEQTVEMzIwMUJCOTAyMDAyRUYyQjAg
LyogSlNXZWJBbmltYXRpb25DdXN0b20uY3BwICovLAogCQkJCUQzRjNEMzU5MUE2OUEzQjAwMDU5
RkMyQiAvKiBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAogCQkJCTQ5RUVE
MTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAg
Ki8sCisJCQkJMzE1MkI1Q0YyNjM2MjRBODAwRjlEMTAzIC8qIEpTV2ViWFJGcmFtZUN1c3RvbS5j
cHAgKi8sCiAJCQkJMTFFNkNGMUIyNUYxNDBFMzAwMTNEM0Q1IC8qIEpTV2ViWFJSZWZlcmVuY2VT
cGFjZUN1c3RvbS5jcHAgKi8sCisJCQkJMzE1MkI1RDEyNjM3NTNFMDAwRjlEMTAzIC8qIEpTV2Vi
WFJTZXNzaW9uQ3VzdG9tLmNwcCAqLywKIAkJCQkxMUU2Q0YxRDI1RjE0MEU0MDAxM0QzRDUgLyog
SlNXZWJYUlNwYWNlQ3VzdG9tLmNwcCAqLywKIAkJCQlFMTgyNThBQjBFRjNDRDcwMDA5MzMyNDIg
LyogSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJNDZGOTFCQzkxRkNERDBG
RTAwMTU5OUMzIC8qIEpTV29ya2VyTmF2aWdhdG9yQ3VzdG9tLmNwcCAqLywKQEAgLTMxNDI2LDcg
KzMxNDMwLDYgQEAKIAkJCQkzMUE3OTVDNzE4ODhCQ0IyMDAzODJGOTAgLyogQU5HTEVJbnN0YW5j
ZWRBcnJheXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMkFCMEVGQUM5MDYwMDlEMENBRiAv
KiBBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTcxRUZDRURDMjAyQjM4QTkwMEQ3QzQx
MSAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ0OUQ4NjRGMjY0MEM5
QzUwMDAxMjJERSAvKiBIaWdobGlnaHRWaXNpYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MUUyQzQyNjIxQzkzNTI4MDAyNEY4QzggLyogQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxOTg0ODAxMUExRDgxN0IwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzExQUQxMjYyMzZEODZFNTAwNkZGMzdDIC8qIEFuaW1hdGlv
bkV2ZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjY0NSw2ICszMjY0OCw3IEBACiAJCQkJ
NDQzMEQwMEIyNTc1QTgzRTAwNDZENDAxIC8qIEhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RDRkFCQkQxOEMwQUY3ODAwNkY4NDUwIC8qIEhpZ2hsaWdodERhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ0MzBEMDBEMjU3NUE4QTUwMDQ2RDQwMSAvKiBIaWdobGlnaHRSZWdpc3Rlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDQ5RDg2NEYyNjQwQzlDNTAwMDEyMkRFIC8qIEhpZ2hsaWdo
dFZpc2liaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTREMTU0MEMyNzVDOEIwMDZCQzYx
NyAvKiBIaXN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RDRTIwMjEwODA3Qzc1MDA1N0Qz
OTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzQxRDExMEIw
NzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDg4Myw3
ICszNDg4Nyw2IEBACiAJCQkJRTQ2QjQxRjkxQ0IyNEU3MDAwOEYxMURFIC8qIFNjcmlwdERpc2Fs
bG93ZWRTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5OEFFRDIxM0ZCMjI0RDAwOTBCMUFB
IC8qIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhB
NDg0NzgwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCUU0RDg2RTZEMjY0MDM5NEMwMEI2MjQyNSAvKiBTdHlsZVNjb3BlT3JkaW5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTNFNEUyQTgxRTNCMTcxMDAwMjNCQjhBIC8qIFNjcmlwdEVsZW1lbnRD
YWNoZWRTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTFDOUQ5QjBFQjM2ODEy
MDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDExMjIzQkEyNjAyNDRGRTAwQjBBMEI2IC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTk5LDYgKzM1MjAyLDcgQEAKIAkJCQlFNDk0NkVB
RjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjk0RjM3RTIzNjYxNjI2MDAzQUE1QzcgLyogU3R5bGVSdWxlVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ2MUQ2NUYxQkIwQzgwRDAwQ0I1NjQ1IC8qIFN0eWxlU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUU0RDg2RTZEMjY0MDM5NEMwMEI2MjQyNSAvKiBTdHlsZVNjb3BlT3JkaW5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjQ4QUExNkIwREZDMDAwRURCQjI5IC8qIFN0eWxl
U2NvcGVSdWxlU2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTVFM0UxOTVCOEM4QTAwNDgz
MTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUQ2Mzgw
MTAxQUYxNzMyMjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJYUlNlc3Np
b25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJYUlNlc3Npb25D
dXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZmIwZDBmYTdlZmZhOGRhMDRiZDQyMzhmNzhlYjlhMjRh
ZTc3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YlhSU2Vzc2lvbkN1c3RvbS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNXZWJYUlNlc3Npb24uaCIKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIkpT
Tm9kZUN1c3RvbS5oIgorI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9y
Pgordm9pZCBKU1dlYlhSU2Vzc2lvbjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oVmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoY29uc3RfY2FzdDxXZWJYUlNl
c3Npb24qPigmd3JhcHBlZCgpKSk7Cit9CisKK0RFRklORV9WSVNJVF9BRERJVElPTkFMX0NISUxE
UkVOKEpTV2ViWFJTZXNzaW9uKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428073</attachid>
            <date>2021-05-07 19:22:37 -0700</date>
            <delta_ts>2021-05-09 02:35:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225025-20210508122235.patch</filename>
            <type>text/plain</type>
            <size>48508</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY4ZjQ5ZTI5ZDExNWVl
ZmRiMzZhNzU1MDI5YThmOGI1MTAzM2JhNi4uODI0MDg2Njk5ODg5NjExMGYzZTFkNmU0YWFjMzAz
ZDA0YjVjMGVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA1LTA3ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIFVzZSB3ZWFrIHBv
aW50ZXJzIHRvIHJlZmVyZW5jZSBXZWJYUlNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc3MTExMjE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYlhSU2Vzc2lvbiB3YXMgYXR0ZW1wdGluZyB0byBjcmVhdGUgYSBXZWJYUklucHV0U291
cmNlQXJyYXkgaW4KKyAgICAgICAgaXRzIGNvbnN0cnVjdG9yIGluaXRpYWxpemF0aW9uIHRoYXQg
aGVsZCBhIHN0cm9uZyByZWZlcmVuY2UgdG8KKyAgICAgICAgaXRzZWxmLCB3aGljaCBjYXVzZWQg
YSBjcmFzaC4gVGhpcyBwYXR0ZXJuIHdhcyB1c2VkIGVsc2V3aGVyZSB0b28uCisKKyAgICAgICAg
UmVwbGFjZSB0aGUgc3Ryb25nIHJlZmVyZW5jZXMgdG8gV2ViWFJTZXNzaW9uIGluIHNvbWUgY2xh
c3NlcworICAgICAgICB3aXRoIHdlYWsgcG9pbnRlcnMsIHdoaWNoIHdpbGwgYXZvaWQgdGhlIHNp
dHVhdGlvbiB3aGVyZSB3ZSBrZWVwCisgICAgICAgIHRoZSBzZXNzaW9uIGFsaXZlIGlmIGFueSBv
ZiB0aGUgb3RoZXIgb2JqZWN0cyBhcmUgc3RpbGwgYXJvdW5kLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oOiBXZSBrbm93IHRoZSBzZXNzaW9u
CisgICAgICAgIGV4aXN0cyB3aGVuIGNvbnN0cnVjdGluZyB0aGlzIHNwYWNlLCBidXQgd2UgZG9u
J3Qgd2FudCB0byBoYXZlCisgICAgICAgIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgc2Vzc2lv
bi4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZSk6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSRnJhbWU6OldlYlhSRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJG
cmFtZTo6cG9wdWxhdGVQb3NlKToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1
dFNvdXJjZS5oOiBXZSBjYW4gdXNlIGEgc2Vzc2lvbiByZWZlcmVuY2UKKyAgICAgICAgd2hlbiBj
b25zdHJ1Y3RpbmcsIGJ1dCB3ZSBrZWVwIGEgd2VhayBwb2ludGVyLgorICAgICAgICAqIE1vZHVs
ZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklu
cHV0U291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6
V2ViWFJJbnB1dFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp1
cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6cG9sbEV2ZW50cyk6
IE1vdmUgdGhlIGNyZWF0aW9uIGFuZCBhcHBlbmRpbmcKKyAgICAgICAgb2YgZXZlbnRzIGludG8g
YSBsYW1iZGEsIHNvIGl0IGlzIGVhc2llciB0byBhY2NvdW50IGZvciB0aGUgY2FzZSB3aGVyZQor
ICAgICAgICB0aGUgc2Vzc2lvbiBubyBsb25nZXIgZXhpc3RzLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlRXZlbnQpOiBEZWxldGVkLgorCisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaDogQWdhaW4sIHdlIGtub3cgdGhlIHNl
c3Npb24KKyAgICAgICAgZXhpc3RzIHdoZW4gY29uc3RydWN0aW5nLCBidXQgd2Uga2VlcCBhIHdl
YWsgcG9pbnRlci4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJh
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3Vy
Y2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OnVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZUFkZGVk
T3JVcGRhdGVkSW5wdXRTb3VyY2VzKToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNwYWNlLmg6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNw
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNlKToKKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oOiBVc2UgYSByZWZlcmVu
Y2UgaW4gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZWZl
cmVuY2VTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6V2ViWFJSZWZl
cmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpuYXRp
dmVPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6
Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVu
Y2VTcGFjZTo6Zmxvb3JPcmlnaW5UcmFuc2Zvcm0gY29uc3QpOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9u
OjpXZWJYUlNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjppbnB1dFNv
dXJjZXMgY29uc3QpOiBSZXR1cm4gYSBSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNl
c3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNl
c3Npb246Om9uRnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNl
Ojppc1Bvc2l0aW9uRW11bGF0ZWQgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
WFJTZXNzaW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dlYlhSU2Vz
c2lvbjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlNwYWNlLmg6IE1ha2UgdGhlIHZpcnR1YWwgc2Vzc2lvbiBnZXR0ZXIKKyAgICAgICAg
cmV0dXJuIGEgV2Vha1B0ciwgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0aGUgc3ViY2xhc3NlcyBhcmUK
KyAgICAgICAgaG9sZGluZy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNS0wNiAgWW9zaGlha2kg
Sml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgogCiAgICAgICAgIFtPcGVu
U1NMXSBJbXBsZW1lbnQgQ3J5cHRvQWxnb3JpdGhtUlNBKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcApp
bmRleCAwYTFhYmVhODgzZDdjY2U2NGM4N2YzY2E2ODcxZWE2YTI5OTZmMDcwLi5hM2QzOTIyYzEz
ZDg0YmZkNzU4M2IyOTA1N2IyYTYwZDhjZDA2OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcApA
QCAtNDQsMTggKzQ0LDE4IEBAIHN0YXRpYyBjb25zdGV4cHIgaW50IE1pbmltdW1Cb3VuZHNWZXJ0
aWNlcyA9IDM7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZSk7CiAKLVJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNl
c3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1JlZjxXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFj
ZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9y
bTo6Y3JlYXRlKCksIHR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6
Y3JlYXRlKCksIHR5cGUpKTsKIH0KIAotUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZz
ZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9m
ZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9u
KSwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIHNlc3Npb24sIFdURk1vdmUob2Zmc2V0
KSwgdHlwZSkpOwogfQogCi1XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNl
c3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFj
ZVR5cGUgdHlwZSkKLSAgICA6IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUo
c2Vzc2lvbiksIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkKK1dlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhS
U2Vzc2lvbiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJl
ZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQorICAgIDogV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVu
dCwgc2Vzc2lvbiwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKQogewogfQogCkBAIC03Niw2ICs3Niwx
MCBAQCBjb25zdCBWZWN0b3I8UmVmPERPTVBvaW50UmVhZE9ubHk+PiYgV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2U6OmJvdW5kc0dlb21ldHJ5KAogCiBFeGNlcHRpb25PcjxSZWY8V2ViWFJSZWZl
cmVuY2VTcGFjZT4+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVu
Y2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0pCiB7Cisg
ICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworICAgIGF1dG8mIHNlc3Npb24gPSAqbV9zZXNzaW9uOworCiAgICAgYXV0byog
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKQEAgLTg0LDcgKzg4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVmZXJl
bmNlU3BhY2U+PiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXIKICAg
ICAvLyBTZXQgb2Zmc2V0U3BhY2XigJlzIG9yaWdpbiBvZmZzZXQgdG8gdGhlIHJlc3VsdCBvZiBt
dWx0aXBseWluZyBiYXNl4oCZcyBvcmlnaW4gb2Zmc2V0IGJ5IG9yaWdpbk9mZnNldCBpbiB0aGUg
cmVsZXZhbnQgcmVhbG0gb2YgYmFzZS4KICAgICBhdXRvIG9mZnNldCA9IFdlYlhSUmlnaWRUcmFu
c2Zvcm06OmNyZWF0ZShvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldFRyYW5z
Zm9ybS5yYXdUcmFuc2Zvcm0oKSk7CiAKLSAgICByZXR1cm4geyBjcmVhdGUoKmRvY3VtZW50LCBt
X3Nlc3Npb24uY29weVJlZigpLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSkgfTsKKyAgICByZXR1
cm4geyBjcmVhdGUoKmRvY3VtZW50LCBzZXNzaW9uLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSkg
fTsKIH0KIAogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhy
Ym91bmRlZHJlZmVyZW5jZXNwYWNlLWJvdW5kc2dlb21ldHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKaW5k
ZXggNzZlMDk2YWE5Y2M3ZDQ2YzRkODA0MTAzZTU3YWVjNGZjY2JiYTc4ZS4uMDkyMzY1ZTlhZWEy
MDVmYjJiNmI0N2JmYTBkNDljNzMzZGIxZDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaApAQCAtMzks
OCArMzksOCBAQCBjbGFzcyBET01Qb2ludFJlYWRPbmx5OwogY2xhc3MgV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UgZmluYWw6IHB1YmxpYyBXZWJYUlJlZmVyZW5jZVNwYWNlIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1l
bnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7Ci0gICAgc3Rh
dGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNl
U3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBj
cmVhdGUoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7Cisg
ICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50
JiwgV2ViWFJTZXNzaW9uJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNl
U3BhY2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKCk7
CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJl
ZmVyZW5jZVNwYWNlPj4gZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdpZFRy
YW5zZm9ybSYpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBXZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYm
LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNw
YWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA3OGY0MWQ5YjhmZDk2ZWI4YzBmZDE1YWVl
M2QzMWI4M2ViMjFjOTIwLi5iMmJmOGY3ODY2MGUwNGFlZDI4OWJhODFkOWRmNzZiODAyMmI3NmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTM4
LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChXZWJYUkZyYW1lKTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6OmNyZWF0
ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRp
b25GcmFtZSkKK1JlZjxXZWJYUkZyYW1lPiBXZWJYUkZyYW1lOjpjcmVhdGUoUmVmPFdlYlhSU2Vz
c2lvbj4mIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkZyYW1lKFdURk1vdmUoc2Vzc2lvbiksIGlzQW5p
bWF0aW9uRnJhbWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkZyYW1lKHNlc3Np
b24sIGlzQW5pbWF0aW9uRnJhbWUpKTsKIH0KIAotV2ViWFJGcmFtZTo6V2ViWFJGcmFtZShSZWY8
V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFt
ZSkKK1dlYlhSRnJhbWU6OldlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mIHNlc3Npb24sIElz
QW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKICAgICA6IG1faXNBbmltYXRpb25GcmFt
ZShpc0FuaW1hdGlvbkZyYW1lID09IElzQW5pbWF0aW9uRnJhbWU6OlllcykKLSAgICAsIG1fc2Vz
c2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9zZXNzaW9uKHNlc3Npb24pCiB7CiB9CiAK
QEAgLTEwNCwxMSArMTA0LDExIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBv
cHVsYXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QKIAogICAgIC8vIDIu
IExldCBzZXNzaW9uIGJlIGZyYW1l4oCZcyBzZXNzaW9uIG9iamVjdC4KICAgICAvLyAzLiBJZiBz
cGFjZeKAmXMgc2Vzc2lvbiBkb2VzIG5vdCBlcXVhbCBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlk
U3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCZzcGFjZS5zZXNzaW9u
KCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgIGlmIChzcGFjZS5zZXNzaW9uKCkgIT0gbV9zZXNz
aW9uLnB0cigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKIAogICAgIC8vIDQuIElmIGJhc2VTcGFjZeKAmXMgc2Vzc2lvbiBkb2VzIG5vdCBlcXVhbCBz
ZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMu
Ci0gICAgaWYgKCZiYXNlU3BhY2Uuc2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICBp
ZiAoYmFzZVNwYWNlLnNlc3Npb24oKSAhPSBtX3Nlc3Npb24ucHRyKCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgLy8gNS4gQ2hlY2sgaWYg
cG9zZXMgbWF5IGJlIHJlcG9ydGVkIGFuZCwgaWYgbm90LCB0aHJvdyBhIFNlY3VyaXR5RXJyb3Ig
YW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
RnJhbWUuaAppbmRleCAxNTA1MDMxNWE1NDI5NTQwMDk4ZWI5M2YzOWI4MDdlZTI2ZDc3ZmU0Li40
NTZhNDM5YTc1OTgyMmUyMTQwYjA0ZWQ4ZDVlNjljNGM1YzAzY2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJY
UkZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJGcmFtZT4gewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoV2ViWFJGcmFtZSk7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJc0FuaW1h
dGlvbkZyYW1lIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+
IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmLCBJc0FuaW1hdGlvbkZyYW1lKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYsIElzQW5pbWF0aW9u
RnJhbWUpOwogICAgIH5XZWJYUkZyYW1lKCk7CiAKICAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNl
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXhGcm9tUG9z
ZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSYpOwogCiBwcml2YXRl
OgotICAgIFdlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJiwgSXNBbmltYXRpb25GcmFtZSk7
CisgICAgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYsIElzQW5pbWF0aW9uRnJhbWUpOwog
CiAgICAgYm9vbCBpc091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5kZWRSZWZlcmVuY2VTcGFjZShj
b25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpIGNvbnN0OwogICAgIGJvb2wgaXNM
b2NhbFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IGFmZDJh
ZDI5MmNmOWU2NDM2NDM2MGE2MmYxYTc2MDhjMDVjYjhmODAuLjY3YTM1NTJmYmMzYmU1ZTU1ZjE1
MDYyOTg4MzllMzc5MDNkYTgwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcApAQCAtNDIsMTQgKzQyLDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRTb3VyY2Up
OwogCi1SZWY8V2ViWFJJbnB1dFNvdXJjZT4gV2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBkb3VibGUgdGltZXN0
YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UmIHNv
dXJjZSkKK1JlZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0U291cmNlOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIGRvdWJsZSB0aW1lc3RhbXAs
IGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNl
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2UoZG9jdW1lbnQs
IFdURk1vdmUoc2Vzc2lvbiksIHRpbWVzdGFtcCwgc291cmNlKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZShkb2N1bWVudCwgc2Vzc2lvbiwgdGltZXN0YW1wLCBz
b3VyY2UpKTsKIH0KIAotV2ViWFJJbnB1dFNvdXJjZTo6V2ViWFJJbnB1dFNvdXJjZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgZG91YmxlIHRpbWVzdGFt
cCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3Vy
Y2UpCi0gICAgOiBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKLSAgICAsIG1fdGFyZ2V0UmF5
U3BhY2UoV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVm
KCksIHNvdXJjZS5wb2ludGVyT3JpZ2luKSkKK1dlYlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRT
b3VyY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIGRvdWJsZSB0
aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZSYgc291cmNlKQorICAgIDogbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Npb24pKQorICAgICwg
bV90YXJnZXRSYXlTcGFjZShXZWJYUklucHV0U3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgc2Vzc2lv
biwgc291cmNlLnBvaW50ZXJPcmlnaW4pKQogICAgICwgbV9jb25uZWN0VGltZSh0aW1lc3RhbXAp
CiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAgICAgLCBtX2dhbWVwYWQoR2FtZXBhZDo6Y3JlYXRlKFdl
YlhSR2FtZXBhZCh0aW1lc3RhbXAsIHRpbWVzdGFtcCwgc291cmNlKSkpCkBAIC02Miw2ICs2Miwx
MCBAQCBXZWJYUklucHV0U291cmNlOjp+V2ViWFJJbnB1dFNvdXJjZSgpID0gZGVmYXVsdDsKIAog
dm9pZCBXZWJYUklucHV0U291cmNlOjp1cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlJiBzb3VyY2UpCiB7CisgICAg
aWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBzZXNzaW9uID0gKm1f
c2Vzc2lvbjsKKwogI2lmICFFTkFCTEUoR0FNRVBBRCkKICAgICBVTlVTRURfUEFSQU0odGltZXN0
YW1wKTsKICNlbmRpZgpAQCAtNzAsOCArNzQsOCBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnVw
ZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRAog
ICAgIGlmIChhdXRvIGdyaXBPcmlnaW4gPSBzb3VyY2UuZ3JpcE9yaWdpbikgewogICAgICAgICBp
ZiAobV9ncmlwU3BhY2UpCiAgICAgICAgICAgICBtX2dyaXBTcGFjZS0+c2V0UG9zZSgqZ3JpcE9y
aWdpbik7Ci0gICAgICAgIGVsc2UgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2Vzc2lvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKLSAgICAgICAgICAgIG1f
Z3JpcFNwYWNlID0gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24u
Y29weVJlZigpLCAqZ3JpcE9yaWdpbik7CisgICAgICAgIGVsc2UgaWYgKGF1dG8qIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNlc3Npb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkK
KyAgICAgICAgICAgIG1fZ3JpcFNwYWNlID0gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoKmRvY3Vt
ZW50LCBzZXNzaW9uLCAqZ3JpcE9yaWdpbik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fZ3JpcFNw
YWNlID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoR0FNRVBBRCkKQEAgLTk3LDE2ICsxMDEsMjggQEAg
dm9pZCBXZWJYUklucHV0U291cmNlOjpkaXNjb25uZWN0KCkKIAogdm9pZCBXZWJYUklucHV0U291
cmNlOjpwb2xsRXZlbnRzKFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGV2ZW50cykK
IHsKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8mIHNlc3Np
b24gPSAqbV9zZXNzaW9uOworICAgIGF1dG8gcHJvdGVjdGVkU2Vzc2lvbiA9IG1ha2VSZWYoc2Vz
c2lvbik7CisKKyAgICBhdXRvIGFwcGVuZEV2ZW50ID0gWyZdIChjb25zdCBBdG9tU3RyaW5nJiBl
dmVudE5hbWUpIHsKKyAgICAgICAgWFJJbnB1dFNvdXJjZUV2ZW50OjpJbml0IGluaXQ7CisgICAg
ICAgIGluaXQuZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUocHJvdGVjdGVkU2Vzc2lvbiwgV2Vi
WFJGcmFtZTo6SXNBbmltYXRpb25GcmFtZTo6Tm8pOworICAgICAgICBpbml0LmlucHV0U291cmNl
ID0gbWFrZVJlZlB0cigqdGhpcyk7CisgICAgICAgIGV2ZW50cy5hcHBlbmQoWFJJbnB1dFNvdXJj
ZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBpbml0KSk7CisgICAgfTsKKwogICAgIGlmICghbV9j
b25uZWN0ZWQpIHsKICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzZWxl
Y3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNl
cyBlbmRzIAogICAgICAgICAvLyB3aGVuIGFuIFhSSW5wdXRTb3VyY2UgdGhhdCBoYXMgYmVndW4g
YSBwcmltYXJ5IHNlbGVjdCBhY3Rpb24gaXMgZGlzY29ubmVjdGVkLgogICAgICAgICBpZiAobV9z
ZWxlY3RTdGFydGVkKQotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVu
dE5hbWVzKCkuc2VsZWN0ZW5kRXZlbnQpKTsKKyAgICAgICAgICAgIGFwcGVuZEV2ZW50KGV2ZW50
TmFtZXMoKS5zZWxlY3RlbmRFdmVudCk7CiAKICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1Qg
ZGlzcGF0Y2ggYSBzcXVlZXplZW5kIGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9uZSBvZiBp
dHMgWFJJbnB1dFNvdXJjZXMgZW5kcyAKICAgICAgICAgLy8gd2hlbiBhbiBYUklucHV0U291cmNl
IHRoYXQgaGFzIGJlZ3VuIGEgcHJpbWFyeSBzcXVlZXplIGFjdGlvbiBpcyBkaXNjb25uZWN0ZWQu
CiAgICAgICAgIGlmIChtX3NxdWVlemVTdGFydGVkKQotICAgICAgICAgICAgZXZlbnRzLmFwcGVu
ZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KSk7CisgICAgICAgICAg
ICBhcHBlbmRFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZWVuZEV2ZW50KTsKIAogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTE5LDEyICsxMzUsMTIgQEAgdm9pZCBXZWJYUklucHV0U291cmNl
Ojpwb2xsRXZlbnRzKFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGV2ZW50cykKICAg
ICBpZiAoc2VsZWN0U3RhcnRlZCAhPSBtX3NlbGVjdFN0YXJ0ZWQpIHsKICAgICAgICAgaWYgKHNl
bGVjdFN0YXJ0ZWQpIHsKICAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBNVVNUIGRpc3BhdGNo
IGEgc2VsZWN0c3RhcnQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklu
cHV0U291cmNlcyBiZWdpbnMgaXRzIHByaW1hcnkgYWN0aW9uLgotICAgICAgICAgICAgZXZlbnRz
LmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudCkpOworICAg
ICAgICAgICAgYXBwZW5kRXZlbnQoZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2gg
YSBzZWxlY3RlbmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklucHV0
U291cmNlcyBlbmRzIGl0cyBwcmltYXJ5IGFjdGlvbi4KICAgICAgICAgICAgIC8vIEEgdXNlciBh
Z2VudCBNVVNUIGRpc3BhdGNoIGEgc2VsZWN0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9u
ZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgaGFzIGZ1bGx5IGNvbXBsZXRlZCBhIHByaW1hcnkgYWN0
aW9uCi0gICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5z
ZWxlY3RFdmVudCkpOwotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVu
dE5hbWVzKCkuc2VsZWN0ZW5kRXZlbnQpKTsKKyAgICAgICAgICAgIGFwcGVuZEV2ZW50KGV2ZW50
TmFtZXMoKS5zZWxlY3RFdmVudCk7CisgICAgICAgICAgICBhcHBlbmRFdmVudChldmVudE5hbWVz
KCkuc2VsZWN0ZW5kRXZlbnQpOwogICAgICAgICB9CiAgICAgICAgIG1fc2VsZWN0U3RhcnRlZCA9
IHNlbGVjdFN0YXJ0ZWQ7CiAgICAgfQpAQCAtMTMyLDI2ICsxNDgsMTcgQEAgdm9pZCBXZWJYUklu
cHV0U291cmNlOjpwb2xsRXZlbnRzKFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mIGV2
ZW50cykKICAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQgIT0gbV9zcXVlZXplU3RhcnRlZCkgewogICAg
ICAgICBpZiAoc3F1ZWV6ZVN0YXJ0ZWQpIHsKICAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBN
VVNUIGRpc3BhdGNoIGEgc3F1ZWV6ZXN0YXJ0IGV2ZW50IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIG9u
ZSBvZiBpdHMgWFJJbnB1dFNvdXJjZXMgYmVnaW5zIGl0cyBwcmltYXJ5IHNxdWVlemUgYWN0aW9u
LgotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1
ZWV6ZXN0YXJ0RXZlbnQpKTsKKyAgICAgICAgICAgIGFwcGVuZEV2ZW50KGV2ZW50TmFtZXMoKS5z
cXVlZXplc3RhcnRFdmVudCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBBIHVz
ZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVjdGVuZCBldmVudCBvbiBhbiBYUlNlc3Npb24g
d2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGVuZHMgaXRzIHByaW1hcnkgc3F1ZWV6ZSBh
Y3Rpb24uCiAgICAgICAgICAgICAvLyBBIHVzZXIgYWdlbnQgTVVTVCBkaXNwYXRjaCBhIHNlbGVj
dCBldmVudCBvbiBhbiBYUlNlc3Npb24gd2hlbiBvbmUgb2YgaXRzIFhSSW5wdXRTb3VyY2VzIGhh
cyBmdWxseSBjb21wbGV0ZWQgYSBwcmltYXJ5IHNxdWVlemUgYWN0aW9uLgotICAgICAgICAgICAg
ZXZlbnRzLmFwcGVuZChjcmVhdGVFdmVudChldmVudE5hbWVzKCkuc3F1ZWV6ZUV2ZW50KSk7Ci0g
ICAgICAgICAgICBldmVudHMuYXBwZW5kKGNyZWF0ZUV2ZW50KGV2ZW50TmFtZXMoKS5zcXVlZXpl
ZW5kRXZlbnQpKTsKKyAgICAgICAgICAgIGFwcGVuZEV2ZW50KGV2ZW50TmFtZXMoKS5zcXVlZXpl
RXZlbnQpOworICAgICAgICAgICAgYXBwZW5kRXZlbnQoZXZlbnROYW1lcygpLnNxdWVlemVlbmRF
dmVudCk7CiAgICAgICAgIH0KICAgICAgICAgbV9zcXVlZXplU3RhcnRlZCA9IHNxdWVlemVTdGFy
dGVkOwogICAgIH0KIH0KIAotUmVmPFhSSW5wdXRTb3VyY2VFdmVudD4gV2ViWFJJbnB1dFNvdXJj
ZTo6Y3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKLXsKLSAgICBYUklucHV0U291
cmNlRXZlbnQ6OkluaXQgaW5pdDsKLSAgICBpbml0LmZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRl
KG1fc2Vzc2lvbi5jb3B5UmVmKCksIFdlYlhSRnJhbWU6OklzQW5pbWF0aW9uRnJhbWU6Ok5vKTsK
LSAgICBpbml0LmlucHV0U291cmNlID0gbWFrZVJlZlB0cigqdGhpcyk7Ci0KLSAgICByZXR1cm4g
WFJJbnB1dFNvdXJjZUV2ZW50OjpjcmVhdGUobmFtZSwgaW5pdCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmgKaW5kZXggYjMyMGFlNzE4OTUzYWM5
NDI3ZjNkNTUyMjFjMjdhZTQ0MDJkN2M0ZC4uZjNmZmY2N2FhMzYxZTI5OGJjZjQxZDRiMjM4MDk0
ZmM2YmU5OWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklu
cHV0U291cmNlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIElucHV0U291
cmNlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlOwogICAgIHVz
aW5nIElucHV0U291cmNlQnV0dG9uID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlQnV0dG9uOwogCi0gICAgc3RhdGljIFJlZjxXZWJYUklucHV0U291cmNlPiBjcmVh
dGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBkb3VibGUgdGltZXN0YW1wLCBjb25z
dCBJbnB1dFNvdXJjZSYpOworICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZT4gY3JlYXRl
KERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRT
b3VyY2UmKTsKICAgICB+V2ViWFJJbnB1dFNvdXJjZSgpOwogCiAgICAgUGxhdGZvcm1YUjo6SW5w
dXRTb3VyY2VIYW5kbGUgaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuaGFuZGxlOyB9
CkBAIC03MywxMSArNzMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb2xsRXZlbnRzKFZlY3RvcjxS
ZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mKTsKIAogcHJpdmF0ZToKLSAgICBXZWJYUklucHV0U291
cmNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgZG91YmxlIHRpbWVzdGFtcCwgY29u
c3QgSW5wdXRTb3VyY2UmKTsKKyAgICBXZWJYUklucHV0U291cmNlKERvY3VtZW50JiwgV2ViWFJT
ZXNzaW9uJiwgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2UmKTsKIAotICAgIFJl
ZjxYUklucHV0U291cmNlRXZlbnQ+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmKTsKLQot
ICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lv
bj4gbV9zZXNzaW9uOwogICAgIElucHV0U291cmNlIG1fc291cmNlOwogICAgIFJlZjxXZWJYUklu
cHV0U3BhY2U+IG1fdGFyZ2V0UmF5U3BhY2U7CiAgICAgUmVmUHRyPFdlYlhSSW5wdXRTcGFjZT4g
bV9ncmlwU3BhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTb3VyY2VBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKaW5kZXggMWI5YzU3NGJiZWQ2MzcyYmQ3M2RiY2JjZDBm
YWYzNmRlYmY3ZGY5NS4uNTRhNTEwNWZlNjhhNjRmZGFlNGMzMGZkNDA0YjRlMTYyYzU5MDg1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNl
QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZUFycmF5LmNwcApAQCAtMzgsMTMgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSW5wdXRTb3VyY2VBcnJheSk7CiAKLVJl
ZjxXZWJYUklucHV0U291cmNlQXJyYXk+IFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKFJl
ZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKK1JlZjxXZWJYUklucHV0U291cmNlQXJyYXk+IFdl
YlhSSW5wdXRTb3VyY2VBcnJheTo6Y3JlYXRlKFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U291cmNlQXJyYXkoV1RGTW92ZShzZXNz
aW9uKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSW5wdXRTb3VyY2VBcnJheShz
ZXNzaW9uKSk7CiB9CiAKLVdlYlhSSW5wdXRTb3VyY2VBcnJheTo6V2ViWFJJbnB1dFNvdXJjZUFy
cmF5KFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKLSAgICA6IG1fc2Vzc2lvbihXVEZNb3Zl
KHNlc3Npb24pKQorV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpXZWJYUklucHV0U291cmNlQXJyYXko
V2ViWFJTZXNzaW9uJiBzZXNzaW9uKQorICAgIDogbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Np
b24pKQogewogfQogCkBAIC02OCw2ICs2OCwxMCBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJh
eTo6Y2xlYXIoKQogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jbGlz
dC1vZi1hY3RpdmUteHItaW5wdXQtc291cmNlcwogdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6
OnVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmIGlucHV0U291
cmNlcykKIHsKKyAgICBhdXRvIHNlc3Npb24gPSBtYWtlUmVmUHRyKG1fc2Vzc2lvbi5nZXQoKSk7
CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKICAgICBWZWN0b3I8UmVmUHRy
PFdlYlhSSW5wdXRTb3VyY2U+PiBhZGRlZDsKICAgICBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRT
b3VyY2U+PiByZW1vdmVkOwogICAgIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4gaW5w
dXRFdmVudHM7CkBAIC03OCwxMiArODIsMTIgQEAgdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6
OnVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZUxpc3QmIGlucHUKICAg
ICBpZiAoIWFkZGVkLmlzRW1wdHkoKSB8fCAhcmVtb3ZlZC5pc0VtcHR5KCkpIHsKICAgICAgICAg
Ly8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYW4gaW5wdXRzb3VyY2VzY2hhbmdlIGV2ZW50
IG9uIGFuIFhSU2Vzc2lvbiB3aGVuIHRoZSBzZXNzaW9u4oCZcyBsaXN0IG9mIGFjdGl2ZSBYUiBp
bnB1dCBzb3VyY2VzIGhhcyBjaGFuZ2VkLgogICAgICAgICBYUklucHV0U291cmNlc0NoYW5nZUV2
ZW50OjpJbml0IGluaXQ7Ci0gICAgICAgIGluaXQuc2Vzc2lvbiA9IG1fc2Vzc2lvbi5jb3B5UmVm
KCk7CisgICAgICAgIGluaXQuc2Vzc2lvbiA9IHNlc3Npb247CiAgICAgICAgIGluaXQuYWRkZWQg
PSBXVEZNb3ZlKGFkZGVkKTsKICAgICAgICAgaW5pdC5yZW1vdmVkID0gV1RGTW92ZShyZW1vdmVk
KTsKICAgICAgICAgCiAgICAgICAgIGF1dG8gZXZlbnQgPSBYUklucHV0U291cmNlc0NoYW5nZUV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlucHV0c291cmNlc2NoYW5nZUV2ZW50LCBpbml0KTsK
LSAgICAgICAgbV9zZXNzaW9uLT5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobV9zZXNzaW9uLmdl
dCgpLCBUYXNrU291cmNlOjpXZWJYUiwgV1RGTW92ZShldmVudCkpOworICAgICAgICBBY3RpdmVE
T01PYmplY3Q6OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqc2Vzc2lvbiwgVGFza1NvdXJjZTo6
V2ViWFIsIFdURk1vdmUoZXZlbnQpKTsKICAgICB9CiAKICAgICBpZiAoIWlucHV0RXZlbnRzLmlz
RW1wdHkoKSkgewpAQCAtOTUsOSArOTksOSBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6
dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdQogICAg
ICAgICAvLyA1LiBTZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRvIGZhbHNlLgogCiAgICAg
ICAgIGZvciAoYXV0byYgZXZlbnQgOiBpbnB1dEV2ZW50cykgewotICAgICAgICAgICAgbV9zZXNz
aW9uLT5xdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUobV9zZXNzaW9uLmdldCgpLCBUYXNrU291
cmNlOjpXZWJYUiwgWyZzZXNzaW9uID0gbV9zZXNzaW9uLmdldCgpLCBldmVudCA9IFdURk1vdmUo
ZXZlbnQpXSgpIHsKKyAgICAgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCptX3Nlc3Npb24uZ2V0KCksIFRhc2tTb3VyY2U6OldlYlhSLCBbc2Vzc2lv
biA9IHNlc3Npb24sIGV2ZW50ID0gV1RGTW92ZShldmVudCldKCkgewogICAgICAgICAgICAgICAg
IGV2ZW50LT5zZXRGcmFtZUFjdGl2ZSh0cnVlKTsKLSAgICAgICAgICAgICAgICBzZXNzaW9uLmRp
c3BhdGNoRXZlbnQoZXZlbnQuY29weVJlZigpKTsKKyAgICAgICAgICAgICAgICBzZXNzaW9uLT5k
aXNwYXRjaEV2ZW50KGV2ZW50LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNl
dEZyYW1lQWN0aXZlKGZhbHNlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC0xMjcs
NyArMTMxLDExIEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVSZW1vdmVkSW5w
dXRTb3VyY2VzKGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wCiAvLyBodHRwczovL2ltbWVyc2l2
ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3VyY2VzCiB2
b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJj
ZXMoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0JiBpbnB1dFNvdXJjZXMs
IFZlY3RvcjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiBhZGRlZCwgVmVjdG9yPFJlZlB0cjxX
ZWJYUklucHV0U291cmNlPj4mIHJlbW92ZWQsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50
Pj4mIGlucHV0RXZlbnRzKQogewotICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2Vzc2lvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fc2Vz
c2lvbikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8mIHNlc3Npb24gPSAqbV9zZXNzaW9uOwor
CisgICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2Vzc2lvbi5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTQxLDcgKzE0OSw3IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVB
ZGRlZE9yVXBkYXRlZElucHV0U291cmNlcyhkb3VibGUgdGltZXN0YW1wLCBjCiAgICAgICAgICAg
ICAvLyAgIDMuMSBMZXQgaW5wdXRTb3VyY2UgYmUgYSBuZXcgWFJJbnB1dFNvdXJjZSBpbiB0aGUg
cmVsZXZhbnQgcmVhbG0gb2YgdGhpcyBYUlNlc3Npb24uCiAgICAgICAgICAgICAvLyAgIDMuMiBB
ZGQgaW5wdXRTb3VyY2UgdG8gYWRkZWQuCiAKLSAgICAgICAgICAgIGF1dG8gaW5wdXQgPSBXZWJY
UklucHV0U291cmNlOjpjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCB0aW1l
c3RhbXAsIGlucHV0U291cmNlKTsKKyAgICAgICAgICAgIGF1dG8gaW5wdXQgPSBXZWJYUklucHV0
U291cmNlOjpjcmVhdGUoKmRvY3VtZW50LCBzZXNzaW9uLCB0aW1lc3RhbXAsIGlucHV0U291cmNl
KTsKICAgICAgICAgICAgIGFkZGVkLmFwcGVuZChpbnB1dC5jb3B5UmVmKCkpOwogICAgICAgICAg
ICAgaW5wdXQtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOwogICAgICAgICAgICAgbV9pbnB1dFNv
dXJjZXMuYXBwZW5kKFdURk1vdmUoaW5wdXQpKTsKQEAgLTE2NSw3ICsxNzMsNyBAQCB2b2lkIFdl
YlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMoZG91
YmxlIHRpbWVzdGFtcCwgYwogICAgICAgICAgICAgaW5wdXQtPnBvbGxFdmVudHMoaW5wdXRFdmVu
dHMpOwogICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMucmVtb3ZlKGluZGV4KTsKIAotICAgICAg
ICAgICAgYXV0byBuZXdJbnB1dFNvdXJjZSA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgqZG9j
dW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOworICAg
ICAgICAgICAgYXV0byBuZXdJbnB1dFNvdXJjZSA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgq
ZG9jdW1lbnQsIHNlc3Npb24sIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOwogICAgICAgICAgICAg
YWRkZWQuYXBwZW5kKG5ld0lucHV0U291cmNlLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBuZXdJ
bnB1dFNvdXJjZS0+cG9sbEV2ZW50cyhpbnB1dEV2ZW50cyk7CiAgICAgICAgICAgICBtX2lucHV0
U291cmNlcy5hcHBlbmQoV1RGTW92ZShuZXdJbnB1dFNvdXJjZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgKaW5kZXggMTE0
MTVjZmNkMDQ3ZGFjYzEyM2MwMGJjNjM3YzAyMTZmNDM4Y2QxMC4uMmU0YTNmYWZjZjQ4NzNmYjIz
MTAwOWUzNTkxOTIyMDc0NDc3MmE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IFdlYlhSSW5wdXRTb3VyY2VBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSW5wdXRTb3Vy
Y2VBcnJheT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJJbnB1dFNvdXJjZUFy
cmF5KTsKIHB1YmxpYzoKICAgICB1c2luZyBJbnB1dFNvdXJjZUxpc3QgPSBWZWN0b3I8UGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPjsKLSAgICBzdGF0aWMgUmVmPFdl
YlhSSW5wdXRTb3VyY2VBcnJheT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYpOworICAgIHN0
YXRpYyBSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBjcmVhdGUoV2ViWFJTZXNzaW9uJik7CiAg
ICAgfldlYlhSSW5wdXRTb3VyY2VBcnJheSgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3Q7CkBAIC01MywxMiArNTMsMTIgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlKGRvdWJsZSB0
aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYpOwogCiBwcml2YXRlOgotICAgIFdlYlhS
SW5wdXRTb3VyY2VBcnJheShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBXZWJYUklucHV0U291
cmNlQXJyYXkoV2ViWFJTZXNzaW9uJik7CiAKICAgICB2b2lkIGhhbmRsZVJlbW92ZWRJbnB1dFNv
dXJjZXMoY29uc3QgSW5wdXRTb3VyY2VMaXN0JiwgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291
cmNlPj4mLCBWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CiAgICAgdm9pZCBoYW5k
bGVBZGRlZE9yVXBkYXRlZElucHV0U291cmNlcyhkb3VibGUgdGltZXN0YW1wLCBjb25zdCBJbnB1
dFNvdXJjZUxpc3QmLCBWZWN0b3I8UmVmUHRyPFdlYlhSSW5wdXRTb3VyY2U+PiYsIFZlY3RvcjxS
ZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVjdG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+
PiYpOwogCi0gICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2Vi
WFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgVmVjdG9yPFJlZjxXZWJYUklucHV0U291cmNlPj4g
bV9pbnB1dFNvdXJjZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSW5wdXRTcGFjZS5jcHAKaW5kZXggZjc3Y2E1MjM3MmE0ZWNiNTZmZTQ2NzFkZDc2ZTU0
NTE4MzVkZGRlNy4uOGQ4ODEzNzUzZTQ5Mzc1ZTY3NDhlZmExZGFjY2Y0ZjY1YzgzYjM4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmNwcApA
QCAtMzksMTQgKzM5LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0
U3BhY2UpOwogCiAvLyBXZWJYUklucHV0U3BhY2UKIAotUmVmPFdlYlhSSW5wdXRTcGFjZT4gV2Vi
WFJJbnB1dFNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9u
PiYmIHNlc3Npb24sIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZVBvc2UmIHBvc2UpCitSZWY8V2ViWFJJbnB1dFNwYWNlPiBXZWJYUklucHV0U3BhY2U6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U3BhY2UoZG9jdW1lbnQsIFdURk1vdmUo
c2Vzc2lvbiksIHBvc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U3Bh
Y2UoZG9jdW1lbnQsIHNlc3Npb24sIHBvc2UpKTsKIH0KIAotV2ViWFJJbnB1dFNwYWNlOjpXZWJY
UklucHV0U3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Np
b24sIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2Um
IHBvc2UpCitXZWJYUklucHV0U3BhY2U6OldlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKICAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQs
IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpKQotICAgICwgbV9zZXNzaW9uKFdURk1vdmUo
c2Vzc2lvbikpCisgICAgLCBtX3Nlc3Npb24obWFrZVdlYWtQdHIoc2Vzc2lvbikpCiAgICAgLCBt
X3Bvc2UocG9zZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJJbnB1dFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
SW5wdXRTcGFjZS5oCmluZGV4IDQ5NWE4Yzg1YjA5NTk0ZDY1N2MzZTYzY2IxN2FmMDMxYWNhN2Jh
NjYuLjQ5OWUxNDNmNzAzNWZiNjhmZmRkZWNmYjYzZTkyMzU5MWY5YmRkODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJYUklucHV0U3BhY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJYUklucHV0U3BhY2U+LCBwdWJsaWMgV2ViWFJTcGFjZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUklucHV0U3BhY2UpOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViWFJJbnB1dFNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9u
PiYmLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3Nl
Jik7CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdl
YlhSU2Vzc2lvbiYsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZVBvc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJYUklucHV0U3BhY2UoKTsKIAogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6cmVmOwpAQCAtNDgsMTQgKzQ4LDE0IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFBvc2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkgeyBtX3Bvc2UgPSBwb3NlOyB9CiAKIHByaXZhdGU6
Ci0gICAgV2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSYpOwotICAg
IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5n
ZXQoKTsgfQorICAgIFdlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIGNv
bnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAg
ICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2Vzc2lvbjsgfQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIFJlZjxX
ZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNz
aW9uOwogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2Ug
bV9wb3NlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggODA4M2QzZGUxZDIwNGE5Zjc4NTY0ZjIwOWYzMGMy
ZjJlODY4NWRmOC4uMWNjZDRiMDE4Njc1MjUzNzc3MTVkYTk5YmY2MzM3MzlhMmRmOTM5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3Bh
Y2UuY3BwCkBAIC00MCwyMyArNDAsMjMgQEAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgRGVmYXVs
dFVzZXJIZWlnaHRJbk1ldGVycyA9IDEuNjU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJYUlJlZmVyZW5jZVNwYWNlKTsKIAotUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhS
UmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1JlZjxXZWJYUlJlZmVy
ZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7CiAg
ICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzcGFjZS1uYXRp
dmUtb3JpZ2luCiAgICAgLy8gVGhlIHRyYW5zZm9ybSBmcm9tIHRoZSBlZmZlY3RpdmUgc3BhY2Ug
dG8gdGhlIG5hdGl2ZSBvcmlnaW4ncyBzcGFjZSBpcwogICAgIC8vIGRlZmluZWQgYnkgYW4gb3Jp
Z2luIG9mZnNldCwgd2hpY2ggaXMgYW4gWFJSaWdpZFRyYW5zZm9ybSBpbml0aWFsbHkgc2V0CiAg
ICAgLy8gdG8gYW4gaWRlbnRpdHkgdHJhbnNmb3JtLgotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdlYlhSUmln
aWRUcmFuc2Zvcm06OmNyZWF0ZSgpLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV2ViWFJSaWdpZFRyYW5zZm9y
bTo6Y3JlYXRlKCksIHR5cGUpKTsKIH0KIAotUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhS
UmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVy
ZW5jZVNwYWNlVHlwZSB0eXBlKQorUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJl
bmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lv
biwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlw
ZSB0eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVmZXJlbmNlU3BhY2Uo
ZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIHNlc3Np
b24sIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkpOwogfQogCi1XZWJYUlJlZmVyZW5jZVNwYWNlOjpX
ZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4m
JiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNl
U3BhY2VUeXBlIHR5cGUpCitXZWJYUlJlZmVyZW5jZVNwYWNlOjpXZWJYUlJlZmVyZW5jZVNwYWNl
KERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdp
ZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiAgICAgOiBX
ZWJYUlNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKG9mZnNldCkpCi0gICAgLCBtX3Nlc3Npb24oV1RG
TW92ZShzZXNzaW9uKSkKKyAgICAsIG1fc2Vzc2lvbihtYWtlV2Vha1B0cihzZXNzaW9uKSkKICAg
ICAsIG1fdHlwZSh0eXBlKQogewogfQpAQCAtNzIsNiArNzIsOSBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBXZWJYUlJlZmVyZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAogICAgIC8vIFRo
aXMgd2lsbCByZXF1aXJlIG1vcmUgY29tcGxleCBsb2dpYyBpZiB3ZSBhZGQgcG9ydHMgd2l0aCBk
aWZmZXJlbnQgZGVmYXVsdCBjb29yZGluYXRlcy4KICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAg
IGNhc2UgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlcjogeworICAgICAgICBpZiAoIW1fc2Vz
c2lvbikKKyAgICAgICAgICAgIHJldHVybiBpZGVudGl0eTsKKwogICAgICAgICAvLyBSZXR1cm4g
dGhlIGN1cnJlbnQgcG9zZS4gQ29udGVudCByZW5kZXJlZCBpbiB2aWV3ZXIgcG9zZSB3aWxsIHN0
YXkgaW4gZml4ZWQgcG9pbnQgb24gSE1Ecy4KICAgICAgICAgYXV0byYgZGF0YSA9IG1fc2Vzc2lv
bi0+ZnJhbWVEYXRhKCk7CiAgICAgICAgIHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9z
ZShkYXRhLm9yaWdpbik7CkBAIC05Nyw2ICsxMDAsMTAgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QKIAogRXhjZXB0aW9uT3I8
UmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRS
ZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0p
CiB7CisgICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworICAgIGF1dG8mIHNlc3Npb24gPSAqbV9zZXNzaW9uOworCiAgICAg
YXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTEwNSwxMSArMTEyLDE0IEBAIEV4Y2VwdGlvbk9yPFJlZjxX
ZWJYUlJlZmVyZW5jZVNwYWNlPj4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJl
bmNlU3BhCiAgICAgLy8gU2V0IG9mZnNldFNwYWNl4oCZcyBvcmlnaW4gb2Zmc2V0IHRvIHRoZSBy
ZXN1bHQgb2YgbXVsdGlwbHlpbmcgYmFzZeKAmXMgb3JpZ2luIG9mZnNldCBieSBvcmlnaW5PZmZz
ZXQgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIGJhc2UuCiAgICAgYXV0byBvZmZzZXQgPSBXZWJY
UlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUob3JpZ2luT2Zmc2V0KCkucmF3VHJhbnNmb3JtKCkgKiBv
ZmZzZXRUcmFuc2Zvcm0ucmF3VHJhbnNmb3JtKCkpOwogCi0gICAgcmV0dXJuIGNyZWF0ZSgqZG9j
dW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIFdURk1vdmUob2Zmc2V0KSwgbV90eXBlKTsKKyAg
ICByZXR1cm4gY3JlYXRlKCpkb2N1bWVudCwgc2Vzc2lvbiwgV1RGTW92ZShvZmZzZXQpLCBtX3R5
cGUpOwogfQogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVyZW5jZVNwYWNlOjpmbG9v
ck9yaWdpblRyYW5zZm9ybSgpIGNvbnN0CiB7CisgICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAg
IHJldHVybiB7IH07CisKICAgICBhdXRvJiBkYXRhID0gbV9zZXNzaW9uLT5mcmFtZURhdGEoKTsK
ICAgICBpZiAoIWRhdGEuZmxvb3JUcmFuc2Zvcm0pIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZGVmYXV0VHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaAppbmRleCA5MzQ5NTY0MWQxNDMwZGZjY2EzMzI4OTBl
OGMxZDM5Y2ZjNTg0MGRmLi5iNzA0MmMxNjY4OGZmNDI4YTI1YzYxYjQyYzQ0ZGFlOGE3M2ViNjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNl
U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNl
U3BhY2UuaApAQCAtNDAsMjcgKzQwLDI3IEBAIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIGNsYXNzIFdl
YlhSUmVmZXJlbmNlU3BhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlJlZmVyZW5jZVNwYWNl
PiwgcHVibGljIFdlYlhSU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJS
ZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNw
YWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNw
YWNlVHlwZSk7Ci0gICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9j
dW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwg
WFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFj
ZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUp
OworICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50Jiwg
V2ViWFJTZXNzaW9uJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldlYlhSUmVmZXJlbmNlU3BhY2UoKTsKIAogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8V2ViWFJSZWZlcmVuY2VTcGFjZT46OnJlZjsKICAgICB1c2luZyBSZWZD
b3VudGVkPFdlYlhSUmVmZXJlbmNlU3BhY2U+OjpkZXJlZjsKIAotICAgIFdlYlhSU2Vzc2lvbiYg
c2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorICAgIFdl
YWtQdHI8V2ViWFJTZXNzaW9uPiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNz
aW9uOyB9CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4+
IGdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKTsKICAg
ICBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
IHByb3RlY3RlZDoKLSAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VU
eXBlKTsKKyAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwg
UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKIAogICAg
IGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsb29yT3JpZ2luVHJhbnNmb3JtKCkgY29uc3Q7CiAK
LSAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgV2Vha1B0cjxXZWJYUlNlc3Np
b24+IG1fc2Vzc2lvbjsKICAgICBYUlJlZmVyZW5jZVNwYWNlVHlwZSBtX3R5cGU7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5k
ZXggYzhiZTMwZmMxOGYwOGYzM2ZjYmMxZDM2NGQzZDk2YzliMGI0OTNkOS4uMjExYmExZTEzZjll
OTNkMjNlNTYyOTc3YTNlYjk4NTA4ODVlMzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtOTgsNyArOTgsNyBAQCBjb25zdCBXZWJYUlJl
bmRlclN0YXRlJiBXZWJYUlNlc3Npb246OnJlbmRlclN0YXRlKCkgY29uc3QKICAgICByZXR1cm4g
Km1fYWN0aXZlUmVuZGVyU3RhdGU7CiB9CiAKLWNvbnN0IFdlYlhSSW5wdXRTb3VyY2VBcnJheSYg
V2ViWFJTZXNzaW9uOjppbnB1dFNvdXJjZXMoKSBjb25zdAorY29uc3QgUmVmPFdlYlhSSW5wdXRT
b3VyY2VBcnJheT4gV2ViWFJTZXNzaW9uOjppbnB1dFNvdXJjZXMoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2lucHV0U291cmNlczsKIH0KQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFdlYlhSU2Vz
c2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUsIFJl
cXVlc3RSZWZlcgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5p
by93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCiAgICAgICAgICAgICBSZWZQdHI8V2Vi
WFJSZWZlcmVuY2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7CiAgICAgICAgICAgICBpZiAodHlwZSA9
PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQotICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVu
dCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNl
ID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMsIHR5
cGUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0g
V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlUmVmKCp0aGlzKSwgdHlw
ZSk7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJlZmVyZW5jZVNwYWNl
OjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCB0eXBlKTsKIAogICAgICAgICAgICAgLy8gMi41LiBS
ZXNvbHZlIHByb21pc2Ugd2l0aCByZWZlcmVuY2VTcGFjZS4KICAgICAgICAgICAgIHByb21pc2Uu
cmVzb2x2ZShyZWZlcmVuY2VTcGFjZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTUxOCw3ICs1MTgs
NyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YSYmIGZyYW1lRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUXVldWUgYSB0YXNr
IHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwcy4KLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbdGhpcywgZnJhbWVEYXRhID0gV1RG
TW92ZShmcmFtZURhdGEpXSgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKG1fZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTUyNiw3ICs1
MjYsNyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YSYmIGZyYW1lRGF0YSkKICAgICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0aGUgY3VycmVu
dCBoaWdoIHJlc29sdXRpb24gdGltZS4KICAgICAgICAgYXV0byBub3cgPSAoTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25kcygpOwogCi0gICAgICAgIGF1dG8g
ZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigqdGhpcyksIFdlYlhSRnJhbWU6Oklz
QW5pbWF0aW9uRnJhbWU6Olllcyk7CisgICAgICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpj
cmVhdGUocHJvdGVjdGVkVGhpcywgV2ViWFJGcmFtZTo6SXNBbmltYXRpb25GcmFtZTo6WWVzKTsK
ICAgICAgICAgLy8gIDIuTGV0IGZyYW1lIGJlIHNlc3Npb27igJlzIGFuaW1hdGlvbiBmcmFtZS4K
ICAgICAgICAgLy8gIDMuU2V0IGZyYW1l4oCZcyB0aW1lIHRvIGZyYW1lVGltZS4KICAgICAgICAg
ZnJhbWUtPnNldFRpbWUoc3RhdGljX2Nhc3Q8RE9NSGlnaFJlc1RpbWVTdGFtcD4oZnJhbWVEYXRh
LnByZWRpY3RlZERpc3BsYXlUaW1lKSk7CkBAIC01NzksNyArNTc5LDYgQEAgdm9pZCBXZWJYUlNl
c3Npb246Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEp
CiAgICAgICAgICAgICAvLyBJZiB0aGUgc2Vzc2lvbiBpcyBlbmRlZCwgbV9hbmltYXRpb25GcmFt
ZS0+c2V0QWN0aXZlIGZhbHNlIGlzIHNldCBpbiBzaHV0ZG93bigpLgogICAgICAgICAgICAgZnJh
bWUtPnNldEFjdGl2ZShmYWxzZSk7CiAKLQogICAgICAgICAgICAgLy8gU3VibWl0IGN1cnJlbnQg
ZnJhbWUgbGF5ZXJzIHRvIHRoZSBkZXZpY2UuCiAgICAgICAgICAgICBWZWN0b3I8UGxhdGZvcm1Y
Ujo6RGV2aWNlOjpMYXllcj4gZnJhbWVMYXllcnM7CiAgICAgICAgICAgICBpZiAobV9tb2RlID09
IFhSU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyICYmIG1fYWN0aXZlUmVuZGVyU3RhdGUtPmJhc2VM
YXllcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKaW5k
ZXggOGVkNDFlMTcyYzlhN2RhZjc3Y2E0YWM2OGQxYTRmMTJhNTgxNWM5Ni4uZmE2ZTVkZjYwZjIw
ZTZlMmM2NGFkNDU0ZTQxNjZmZGE0NzViNjJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJY
UklucHV0U291cmNlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJYUlJlbmRlclN0YXRlLmgiCiAjaW5j
bHVkZSAiWFJFbnZpcm9ubWVudEJsZW5kTW9kZS5oIgpAQCAtNDcsNiArNDYsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBYUkZyYW1lUmVxdWVzdENhbGxiYWNrOworY2xhc3MgV2Vi
WFJSZWZlcmVuY2VTcGFjZTsKIGNsYXNzIFdlYlhSU3lzdGVtOwogY2xhc3MgV2ViWFJWaWV3Owog
Y2xhc3MgV2ViWFJWaWV3ZXJTcGFjZTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFhS
SW50ZXJhY3Rpb25Nb2RlIGludGVyYWN0aW9uTW9kZSgpIGNvbnN0OwogICAgIFhSVmlzaWJpbGl0
eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0OwogICAgIGNvbnN0IFdlYlhSUmVuZGVyU3Rh
dGUmIHJlbmRlclN0YXRlKCkgY29uc3Q7Ci0gICAgY29uc3QgV2ViWFJJbnB1dFNvdXJjZUFycmF5
JiBpbnB1dFNvdXJjZXMoKSBjb25zdDsKKyAgICBjb25zdCBSZWY8V2ViWFJJbnB1dFNvdXJjZUFy
cmF5PiBpbnB1dFNvdXJjZXMoKSBjb25zdDsKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2UqIGRldmlj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9CiAKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiB1cGRhdGVSZW5kZXJTdGF0ZShjb25zdCBYUlJlbmRlclN0YXRlSW5pdCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaWRsCmluZGV4IDJmMTBjZmE5
ZDYyMTRiNzQ2MWQ3YzU0ZDhlNWZlYTAwNWExNjc1MGEuLjk3YTA5ZTk3ZTU1YzdjOGNhMDI2ZWE2
NmQ1OTRkMjVkNGVlOGJiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTZXNzaW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU2Vzc2lvbi5pZGwKQEAgLTI4LDYgKzI4LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJYUiwK
ICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgU2VjdXJlQ29udGV4dCwKKyAgICBKU0N1c3RvbU1h
cmtGdW5jdGlvbiwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbnRlcmZhY2VOYW1lPVhSU2Vz
c2lvbgogXSBpbnRlcmZhY2UgV2ViWFJTZXNzaW9uIDogRXZlbnRUYXJnZXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKaW5kZXggMTE5MjE0MTg5ZmMyMDFk
ODUxMzQ0ZGViMGQzMTZkMzlmNDc4YTU5My4uYzE0ZTY2Y2FjODJmNzFhZTc2ZDBiMjRmMThhMzFh
NTA1M2Y0MDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2Uu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJET01Qb2ludFJlYWRPbmx5LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCiAjaW5jbHVkZSAi
V2ViWFJSaWdpZFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC01Niw3ICs1Nyw5IEBAIFRyYW5zZm9ybWF0
aW9uTWF0cml4IFdlYlhSU3BhY2U6OmVmZmVjdGl2ZU9yaWdpbigpIGNvbnN0CiAKIGJvb2wgV2Vi
WFJTcGFjZTo6aXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc2Vzc2lv
bigpLmlzUG9zaXRpb25FbXVsYXRlZCgpOworICAgIGlmIChhdXRvIHhyU2Vzc2lvbiA9IHNlc3Np
b24oKSkKKyAgICAgICAgcmV0dXJuIHhyU2Vzc2lvbi0+aXNQb3NpdGlvbkVtdWxhdGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJW
aWV3ZXJTcGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCmlu
ZGV4IGQ4Zjg4ZWE1OGI5NTg0NTE4ZDQ3NjU0MGVkYzhkZGRiMTk2NzlkYjQuLjU2MDdjN2MxNjE0
NzAxZmNjNzUwOTY0NzdjNmRjZDRkM2Y3Y2UxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTcGFjZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMTQg
KzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm07Ci1jbGFzcyBX
ZWJYUlNlc3Npb247CiAKIGNsYXNzIFdlYlhSU3BhY2UgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSU3BhY2UpOwogcHVibGljOgogICAgIHZpcnR1YWwgfldl
YlhSU3BhY2UoKTsKIAotICAgIHZpcnR1YWwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgV2Vha1B0cjxXZWJYUlNlc3Npb24+IHNlc3Npb24oKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25z
dCA9IDA7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZWZmZWN0aXZlT3JpZ2luKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0OwpAQCAtNzcsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViWFJWaWV3ZXJTcGFjZSgpOwogCiBwcml2
YXRlOgotICAgIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2Vzc2lvbjsgfQorICAgIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiBzZXNzaW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbWFrZVdlYWtQdHIobV9zZXNzaW9uKTsgfQogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCBkZTk1NzBhNTI2N2VmNTM5NTdlMzdkMTY2MGNlMmRhMzhjZWU3N2ZiLi4yMmEwZWI1
ODIwMTRhMTQzODQxMTJjNTI2Y2ZmYjA1MzQ3NWJhYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNjI4
LDYgKzYyOCw3IEBAIGJpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAKIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAogYmluZGlu
Z3MvanMvSlNXZWJYUlJlZmVyZW5jZVNwYWNlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNXZWJY
UlJpZ2lkVHJhbnNmb3JtQ3VzdG9tLmNwcAorYmluZGluZ3MvanMvSlNXZWJYUlNlc3Npb25DdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU1dlYlhSU3BhY2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9K
U1dlYlhSVmlld0N1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZjE5MzUzYzlmMWI5NTVlNTRkM2QxYTIxZDkzM2U2YzJhNDdjNjMwMy4uZDk2YzUyMTRjYzU0NjA5
OTNhZmYxMDE3Y2QxZDY3M2RjYTdmMzY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQ2Niw2ICs3NDY2LDggQEAKIAkJMzE0
QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE0RjE2OUIyNjQwQjY3RTAwNjYzRUNFIC8q
IFdlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViWFJPcGFx
dWVGcmFtZWJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNEYxNjlE
MjY0MEI2N0UwMDY2M0VDRSAvKiBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlhST3BhcXVlRnJhbWVidWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzE1MkI1Q0YyNjM2MjRBODAwRjlEMTAzIC8qIEpTV2ViWFJGcmFtZUN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dlYlhSRnJhbWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMTUyQjVEMTI2Mzc1M0UwMDBGOUQxMDMgLyogSlNXZWJYUlNlc3Npb25D
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJYUlNlc3Npb25DdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTU1NzRDQzIxOEY2NkQwMDBEODhGNjYgLyog
UG9pbnRlckV2ZW50SU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBvaW50ZXJFdmVudElPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNjQ3
RkE4MjUxNjE2QkQwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE9wZW5HTFNvZnRMaW5rQ29jb2EuaDsgcGF0aCA9IC4uLy4uLy4uL1BBTC9wYWwvY29jb2Ev
T3BlbkdMU29mdExpbmtDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTY0
N0ZBOTI1MTYxNkJEMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IE9wZW5HTFNvZnRMaW5rQ29jb2EubW07IHBhdGggPSAuLi8uLi8uLi9QQUwv
cGFsL2NvY29hL09wZW5HTFNvZnRMaW5rQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzA1MCw3ICsyMzA1Miw5IEBACiAJCQkJNzE1REE1RDMyMDFCQjkwMjAwMkVGMkIw
IC8qIEpTV2ViQW5pbWF0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlEM0YzRDM1OTFBNjlBM0IwMDA1
OUZDMkIgLyogSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVF
RDE0QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
ICovLAorCQkJCTMxNTJCNUNGMjYzNjI0QTgwMEY5RDEwMyAvKiBKU1dlYlhSRnJhbWVDdXN0b20u
Y3BwICovLAogCQkJCTExRTZDRjFCMjVGMTQwRTMwMDEzRDNENSAvKiBKU1dlYlhSUmVmZXJlbmNl
U3BhY2VDdXN0b20uY3BwICovLAorCQkJCTMxNTJCNUQxMjYzNzUzRTAwMEY5RDEwMyAvKiBKU1dl
YlhSU2Vzc2lvbkN1c3RvbS5jcHAgKi8sCiAJCQkJMTFFNkNGMUQyNUYxNDBFNDAwMTNEM0Q1IC8q
IEpTV2ViWFJTcGFjZUN1c3RvbS5jcHAgKi8sCiAJCQkJRTE4MjU4QUIwRUYzQ0Q3MDAwOTMzMjQy
IC8qIEpTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTQ2RjkxQkM5MUZDREQw
RkUwMDE1OTlDMyAvKiBKU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAgKi8sCkBAIC0zMTQyNiw3
ICszMTQzMCw2IEBACiAJCQkJMzFBNzk1QzcxODg4QkNCMjAwMzgyRjkwIC8qIEFOR0xFSW5zdGFu
Y2VkQXJyYXlzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBQjBFRkFDOTA2MDA5RDBDQUYg
LyogQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUVGQ0VEQzIwMkIzOEE5MDBEN0M0
MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0NDlEODY0RjI2NDBD
OUM1MDAwMTIyREUgLyogSGlnaGxpZ2h0VmlzaWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzFFMkM0MjYyMUM5MzUyODAwMjRGOEM4IC8qIEFuaW1hdGlvbkVmZmVjdFBoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTk4NDgwMTFBMUQ4MTdCMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcxMUFEMTI2MjM2RDg2RTUwMDZGRjM3QyAvKiBBbmltYXRp
b25FdmVudEJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzI2NDUsNiArMzI2NDgsNyBAQAogCQkJ
CTQ0MzBEMDBCMjU3NUE4M0UwMDQ2RDQwMSAvKiBIaWdobGlnaHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQ0ZBQkJEMThDMEFGNzgwMDZGODQ1MCAvKiBIaWdobGlnaHREYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NDMwRDAwRDI1NzVBOEE1MDA0NkQ0MDEgLyogSGlnaGxpZ2h0UmVnaXN0ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ0OUQ4NjRGMjY0MEM5QzUwMDAxMjJERSAvKiBIaWdobGln
aHRWaXNpYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk0RDE1NDBDMjc1QzhCMDA2QkM2
MTcgLyogSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdEQ0UyMDIxMDgwN0M3NTAwNTdE
Mzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTc0MUQxMTBC
MDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCBpbiBIZWFkZXJzICovLApAQCAtMzQ4ODMs
NyArMzQ4ODcsNiBAQAogCQkJCUU0NkI0MUY5MUNCMjRFNzAwMDhGMTFERSAvKiBTY3JpcHREaXNh
bGxvd2VkU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OThBRUQyMTNGQjIyNEQwMDkwQjFB
QSAvKiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
QTQ4NDc4MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQlFNEQ4NkU2RDI2NDAzOTRDMDBCNjI0MjUgLyogU3R5bGVTY29wZU9yZGluYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzRTRFMkE4MUUzQjE3MTAwMDIzQkI4QSAvKiBTY3JpcHRFbGVtZW50
Q2FjaGVkU2NyaXB0RmV0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTExQzlEOUIwRUIzNjgx
MjAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxMTIyM0JBMjYwMjQ0RkUwMEIwQTBCNiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTE5OSw2ICszNTIwMiw3IEBACiAJCQkJRTQ5NDZF
QUYxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5NEYzN0UyMzY2MTYyNjAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NjFENjVGMUJCMEM4MEQwMENCNTY0NSAvKiBTdHlsZVNjb3BlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFNEQ4NkU2RDI2NDAzOTRDMDBCNjI0MjUgLyogU3R5bGVTY29wZU9yZGlu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY0OEFBMTZCMERGQzAwMEVEQkIyOSAvKiBTdHls
ZVNjb3BlUnVsZVNldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0N0E1RTNFMTk1QjhDOEEwMDQ4
MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlENjM4
MDEwMUFGMTczMjIwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGlnbm1lbnREYXRhLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViWFJTZXNz
aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViWFJTZXNzaW9u
Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGZiMGQwZmE3ZWZmYThkYTA0YmQ0MjM4Zjc4ZWI5YTI0
YWU3NzQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJYUlNlc3Npb25DdXN0b20uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTV2ViWFJTZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJK
U05vZGVDdXN0b20uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KK3ZvaWQgSlNXZWJYUlNlc3Npb246OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGNvbnN0X2Nhc3Q8V2ViWFJT
ZXNzaW9uKj4oJndyYXBwZWQoKSkpOworfQorCitERUZJTkVfVklTSVRfQURESVRJT05BTF9DSElM
RFJFTihKU1dlYlhSU2Vzc2lvbik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428121</attachid>
            <date>2021-05-09 02:35:45 -0700</date>
            <delta_ts>2021-05-09 09:13:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225025-20210509193544.patch</filename>
            <type>text/plain</type>
            <size>24162</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJhZDhjNjk3MGZmY2I3
MDg5ZjY3ZTY5ODVlMGJkMTA1MzBkOTI2OC4uNzkxOWE1MWM3ZjZlZGQwM2ViNWZkNGQyOGZkODA2
NDA4Mzk1NWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTA1LTA5ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIFJlbW92ZSByZWZl
cmVuY2UgY3ljbGUgaW4gV2ViWFJTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUwMjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc3MTEx
MjE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
dGNoIGJ5IFNhbSBXZWluaWcsIHdobyB0b29rIG15IGJhZCBwYXRjaCBhbmQgbWFkZSBpdCBiZXR0
ZXIuCisKKyAgICAgICAgV2ViWFJTZXNzaW9uIHdhcyBhdHRlbXB0aW5nIHRvIGNyZWF0ZSBhbiBX
ZWJYUklucHV0U291cmNlQXJyYXkgaW4KKyAgICAgICAgaXRzIGNvbnN0cnVjdG9yLCB3aGljaCBp
dHNlbGYgd2FzIHRyeWluZyB0byBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZQorICAgICAgICBiYWNr
IHRvIFdlYlhSU2Vzc2lvbiAtIGNhdXNpbmcgYSBjcmFzaC4KKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaDogRml4IHNtYWxsIHR5cG8uCisKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOiBVc2UgcmVmZXJlbmNlIGluIGNv
bnN0cnVjdG9yLCBzaW5jZSB3ZQorICAgICAgICBrbm93IHRoZSBzZXNzaW9uIGV4aXN0cy4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHA6IFVz
ZSBhIFdlYWtQdHIgYXMgYSByZWZlcmVuY2UgYmFjaworICAgICAgICB0byB0aGUgV2ViWFJTZXNz
aW9uLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6c2Vzc2lvbik6IEFkZCB0aGlzIGdldHRlci4K
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OnVwZGF0ZSk6IENoZWNrIGZvciBu
dWxsLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6cG9sbEV2ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjpjcmVhdGVFdmVudCk6IERlbGV0ZWQg
LSBtb3ZlZCB0byBsYW1iZGEuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291
cmNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbDoKKwor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcDogQWRkIEdl
bmVyYXRlSXNSZWFjaGFibGUuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJy
YXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6Oldl
YlhSSW5wdXRTb3VyY2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNl
QXJyYXk6OnJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmRl
cmVmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2VBcnJheTo6dXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVw
ZGF0ZWRJbnB1dFNvdXJjZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZUFycmF5Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJy
YXkuaWRsOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwOiBV
c2UgcmVmZXJlbmNlIGluIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1
dFNwYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNwYWNlOjpXZWJY
UklucHV0U3BhY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmg6
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6IFVzZSBhIFVuaXF1
ZVJlZiBmb3IgaW5wdXQgc291cmNlIGFycmF5LgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNz
aW9uOjpvbkZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IEFkZCBJbXBs
V2ViWFJTZXNzaW9uUm9vdCB0byBHZW5lcmF0ZUlzUmVhY2hhYmxlLgorICAgICAgICAoR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbik6CisKIDIwMjEtMDUtMDggIFJpY2t5IE1vbmRlbGxvICA8cm1vbmRl
bGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYSB0eXBvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKaW5k
ZXggNzZlMDk2YWE5Y2M3ZDQ2YzRkODA0MTAzZTU3YWVjNGZjY2JiYTc4ZS4uZDkyZGU1NWZhNzM4
YmM1OWQ1YTZhNDExYTFiY2I3ZjY0Mzg0MjZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVBvaW50UmVhZE9ubHk7
CiAKLWNsYXNzIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlIGZpbmFsOiBwdWJsaWMgV2ViWFJS
ZWZlcmVuY2VTcGFjZSB7CitjbGFzcyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSBmaW5hbCA6
IHB1YmxpYyBXZWJYUlJlZmVyZW5jZVNwYWNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNz
aW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA3OGY0MWQ5YjhmZDk2ZWI4YzBmZDE1YWVlM2QzMWI4
M2ViMjFjOTIwLi41NzU2MjEwYmRlMWVjYzMzZjZhMTIxMzIwZTVmMGIxM2M1YWE0NGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTM4LDE0ICsz
OCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJYUkZyYW1lKTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6OmNyZWF0ZShSZWY8
V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFt
ZSkKK1JlZjxXZWJYUkZyYW1lPiBXZWJYUkZyYW1lOjpjcmVhdGUoV2ViWFJTZXNzaW9uJiBzZXNz
aW9uLCBJc0FuaW1hdGlvbkZyYW1lIGlzQW5pbWF0aW9uRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJGcmFtZShXVEZNb3ZlKHNlc3Npb24pLCBpc0FuaW1hdGlvbkZyYW1l
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJGcmFtZShzZXNzaW9uLCBpc0FuaW1h
dGlvbkZyYW1lKSk7CiB9CiAKLVdlYlhSRnJhbWU6OldlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lv
bj4mJiBzZXNzaW9uLCBJc0FuaW1hdGlvbkZyYW1lIGlzQW5pbWF0aW9uRnJhbWUpCitXZWJYUkZy
YW1lOjpXZWJYUkZyYW1lKFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgSXNBbmltYXRpb25GcmFtZSBp
c0FuaW1hdGlvbkZyYW1lKQogICAgIDogbV9pc0FuaW1hdGlvbkZyYW1lKGlzQW5pbWF0aW9uRnJh
bWUgPT0gSXNBbmltYXRpb25GcmFtZTo6WWVzKQotICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vz
c2lvbikpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAppbmRleCAxNTA1MDMxNWE1NDI5NTQwMDk4ZWI5M2Yz
OWI4MDdlZTI2ZDc3ZmU0Li41MTliMzAzNzBjNjlhMWE4OTViZDI5NDc5YmQ2YzU0MzQ5Mzk4YTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtNDgsNyAr
NDgsNyBAQCBjbGFzcyBXZWJYUkZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJGcmFtZT4g
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJGcmFtZSk7CiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBJc0FuaW1hdGlvbkZyYW1lIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0
aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmLCBJc0FuaW1hdGlv
bkZyYW1lKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShXZWJYUlNlc3Npb24m
LCBJc0FuaW1hdGlvbkZyYW1lKTsKICAgICB+V2ViWFJGcmFtZSgpOwogCiAgICAgY29uc3QgV2Vi
WFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bWF0cml4RnJvbVBvc2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2Um
KTsKIAogcHJpdmF0ZToKLSAgICBXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYsIElzQW5p
bWF0aW9uRnJhbWUpOworICAgIFdlYlhSRnJhbWUoV2ViWFJTZXNzaW9uJiwgSXNBbmltYXRpb25G
cmFtZSk7CiAKICAgICBib29sIGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5j
ZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJikgY29uc3Q7CiAgICAg
Ym9vbCBpc0xvY2FsUmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKaW5k
ZXggYWZkMmFkMjkyY2Y5ZTY0MzY0MzYwYTYyZjFhNzYwOGMwNWNiOGY4MC4uM2Q4NmIyMjBlN2Nh
MGUwY2E5ODFlYjI5NDMwYmRkOGZmNDgyYmQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwCkBAIC00MiwxNCArNDIsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJJbnB1
dFNvdXJjZSk7CiAKLVJlZjxXZWJYUklucHV0U291cmNlPiBXZWJYUklucHV0U291cmNlOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIGRvdWJs
ZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZSYgc291cmNlKQorUmVmPFdlYlhSSW5wdXRTb3VyY2U+IFdlYlhSSW5wdXRTb3VyY2U6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgZG91YmxlIHRp
bWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNl
JiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZShk
b2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdGltZXN0YW1wLCBzb3VyY2UpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJYUklucHV0U291cmNlKGRvY3VtZW50LCBzZXNzaW9uLCB0aW1l
c3RhbXAsIHNvdXJjZSkpOwogfQogCi1XZWJYUklucHV0U291cmNlOjpXZWJYUklucHV0U291cmNl
KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBkb3VibGUg
dGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2UmIHNvdXJjZSkKLSAgICA6IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQotICAgICwgbV90
YXJnZXRSYXlTcGFjZShXZWJYUklucHV0U3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbV9zZXNzaW9u
LmNvcHlSZWYoKSwgc291cmNlLnBvaW50ZXJPcmlnaW4pKQorV2ViWFJJbnB1dFNvdXJjZTo6V2Vi
WFJJbnB1dFNvdXJjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwg
ZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlJiBzb3VyY2UpCisgICAgOiBtX3Nlc3Npb24obWFrZVdlYWtQdHIoc2Vzc2lvbikp
CisgICAgLCBtX3RhcmdldFJheVNwYWNlKFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKGRvY3VtZW50
LCBzZXNzaW9uLCBzb3VyY2UucG9pbnRlck9yaWdpbikpCiAgICAgLCBtX2Nvbm5lY3RUaW1lKHRp
bWVzdGFtcCkKICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICAsIG1fZ2FtZXBhZChHYW1lcGFkOjpj
cmVhdGUoV2ViWFJHYW1lcGFkKHRpbWVzdGFtcCwgdGltZXN0YW1wLCBzb3VyY2UpKSkKQEAgLTYw
LDggKzYwLDE3IEBAIFdlYlhSSW5wdXRTb3VyY2U6OldlYlhSSW5wdXRTb3VyY2UoRG9jdW1lbnQm
IGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3NpCiAKIFdlYlhSSW5wdXRTb3VyY2U6
On5XZWJYUklucHV0U291cmNlKCkgPSBkZWZhdWx0OwogCitXZWJYUlNlc3Npb24qIFdlYlhSSW5w
dXRTb3VyY2U6OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7Cit9CisK
IHZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgc291cmNlKQogeworICAg
IGF1dG8gc2Vzc2lvbiA9IG1ha2VSZWZQdHIobV9zZXNzaW9uLmdldCgpKTsKKyAgICBpZiAoIXNl
c3Npb24pCisgICAgICAgIHJldHVybjsKKwogI2lmICFFTkFCTEUoR0FNRVBBRCkKICAgICBVTlVT
RURfUEFSQU0odGltZXN0YW1wKTsKICNlbmRpZgpAQCAtNzAsOCArNzksOCBAQCB2b2lkIFdlYlhS
SW5wdXRTb3VyY2U6OnVwZGF0ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRAogICAgIGlmIChhdXRvIGdyaXBPcmlnaW4gPSBzb3VyY2UuZ3JpcE9yaWdp
bikgewogICAgICAgICBpZiAobV9ncmlwU3BhY2UpCiAgICAgICAgICAgICBtX2dyaXBTcGFjZS0+
c2V0UG9zZSgqZ3JpcE9yaWdpbik7Ci0gICAgICAgIGVsc2UgaWYgKGF1dG8qIGRvY3VtZW50ID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2Vzc2lvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkK
LSAgICAgICAgICAgIG1fZ3JpcFNwYWNlID0gV2ViWFJJbnB1dFNwYWNlOjpjcmVhdGUoKmRvY3Vt
ZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCAqZ3JpcE9yaWdpbik7CisgICAgICAgIGVsc2UgaWYg
KGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNlc3Npb24tPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkpCisgICAgICAgICAgICBtX2dyaXBTcGFjZSA9IFdlYlhSSW5wdXRTcGFj
ZTo6Y3JlYXRlKCpkb2N1bWVudCwgKnNlc3Npb24sICpncmlwT3JpZ2luKTsKICAgICB9IGVsc2UK
ICAgICAgICAgbV9ncmlwU3BhY2UgPSBudWxscHRyOwogI2lmIEVOQUJMRShHQU1FUEFEKQpAQCAt
OTcsNiArMTA2LDE4IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZTo6ZGlzY29ubmVjdCgpCiAKIHZv
aWQgV2ViWFJJbnB1dFNvdXJjZTo6cG9sbEV2ZW50cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VF
dmVudD4+JiBldmVudHMpCiB7CisgICAgYXV0byBzZXNzaW9uID0gbWFrZVJlZlB0cihtX3Nlc3Np
b24uZ2V0KCkpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBjcmVhdGVFdmVudCA9IFt0aGlzLCBzZXNzaW9uXShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSAt
PiBSZWY8WFJJbnB1dFNvdXJjZUV2ZW50PiB7CisgICAgICAgIFhSSW5wdXRTb3VyY2VFdmVudDo6
SW5pdCBpbml0OworICAgICAgICBpbml0LmZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRlKCpzZXNz
aW9uLCBXZWJYUkZyYW1lOjpJc0FuaW1hdGlvbkZyYW1lOjpObyk7CisgICAgICAgIGluaXQuaW5w
dXRTb3VyY2UgPSBtYWtlUmVmUHRyKCp0aGlzKTsKKworICAgICAgICByZXR1cm4gWFJJbnB1dFNv
dXJjZUV2ZW50OjpjcmVhdGUobmFtZSwgaW5pdCk7CisgICAgfTsKKwogICAgIGlmICghbV9jb25u
ZWN0ZWQpIHsKICAgICAgICAgLy8gQSB1c2VyIGFnZW50IE1VU1QgZGlzcGF0Y2ggYSBzZWxlY3Rl
bmQgZXZlbnQgb24gYW4gWFJTZXNzaW9uIHdoZW4gb25lIG9mIGl0cyBYUklucHV0U291cmNlcyBl
bmRzIAogICAgICAgICAvLyB3aGVuIGFuIFhSSW5wdXRTb3VyY2UgdGhhdCBoYXMgYmVndW4gYSBw
cmltYXJ5IHNlbGVjdCBhY3Rpb24gaXMgZGlzY29ubmVjdGVkLgpAQCAtMTQzLDE1ICsxNjQsNiBA
QCB2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnBvbGxFdmVudHMoVmVjdG9yPFJlZjxYUklucHV0U291
cmNlRXZlbnQ+PiYgZXZlbnRzKQogICAgIH0KIH0KIAotUmVmPFhSSW5wdXRTb3VyY2VFdmVudD4g
V2ViWFJJbnB1dFNvdXJjZTo6Y3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKLXsK
LSAgICBYUklucHV0U291cmNlRXZlbnQ6OkluaXQgaW5pdDsKLSAgICBpbml0LmZyYW1lID0gV2Vi
WFJGcmFtZTo6Y3JlYXRlKG1fc2Vzc2lvbi5jb3B5UmVmKCksIFdlYlhSRnJhbWU6OklzQW5pbWF0
aW9uRnJhbWU6Ok5vKTsKLSAgICBpbml0LmlucHV0U291cmNlID0gbWFrZVJlZlB0cigqdGhpcyk7
Ci0KLSAgICByZXR1cm4gWFJJbnB1dFNvdXJjZUV2ZW50OjpjcmVhdGUobmFtZSwgaW5pdCk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmgKaW5kZXgg
YjMyMGFlNzE4OTUzYWM5NDI3ZjNkNTUyMjFjMjdhZTQ0MDJkN2M0ZC4uMmE1MTgwMThlMzI2YTg1
MWM5MjM4ZTkwZTNmNzRhZDM5MzYzNjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIElucHV0U291cmNlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlOwogICAgIHVzaW5nIElucHV0U291cmNlQnV0dG9uID0gUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOwogCi0gICAgc3RhdGljIFJlZjxXZWJYUklu
cHV0U291cmNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBkb3VibGUg
dGltZXN0YW1wLCBjb25zdCBJbnB1dFNvdXJjZSYpOworICAgIHN0YXRpYyBSZWY8V2ViWFJJbnB1
dFNvdXJjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwgZG91YmxlIHRpbWVzdGFt
cCwgY29uc3QgSW5wdXRTb3VyY2UmKTsKICAgICB+V2ViWFJJbnB1dFNvdXJjZSgpOwogCiAgICAg
UGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2UuaGFuZGxlOyB9CkBAIC03MiwxMiArNzIsMTMgQEAgcHVibGljOgogICAgIAogICAgIHZv
aWQgcG9sbEV2ZW50cyhWZWN0b3I8UmVmPFhSSW5wdXRTb3VyY2VFdmVudD4+Jik7CiAKLXByaXZh
dGU6Ci0gICAgV2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYs
IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlJik7CisgICAgLy8gRm9yIEdDIHJl
YWNoYWJsaXRpeS4KKyAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKTsKIAotICAgIFJlZjxYUklu
cHV0U291cmNlRXZlbnQ+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmKTsKK3ByaXZhdGU6
CisgICAgV2ViWFJJbnB1dFNvdXJjZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIGRvdWJsZSB0
aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlJik7CiAKLSAgICBSZWY8V2ViWFJTZXNzaW9uPiBt
X3Nlc3Npb247CisgICAgV2Vha1B0cjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBJbnB1
dFNvdXJjZSBtX3NvdXJjZTsKICAgICBSZWY8V2ViWFJJbnB1dFNwYWNlPiBtX3RhcmdldFJheVNw
YWNlOwogICAgIFJlZlB0cjxXZWJYUklucHV0U3BhY2U+IG1fZ3JpcFNwYWNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5pZGwKaW5kZXggMmZh
N2VhNTRiZGU1OTJjZmZhOGEzZjQwMzRkMzUyMzhiMWM2ZjFjNS4uYmVjZmYzZGZlMTA0MjNmZDU1
MDNiYWQ3MjA5ZGIzNDRhOWZlMzM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuaWRsCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogWwor
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYlhSU2Vzc2lvblJvb3QsCiAgICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJYUiwKICAgICBDb25kaXRpb25hbD1XRUJYUiwKICAgICBTZWN1cmVDb250
ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlQXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0
U291cmNlQXJyYXkuY3BwCmluZGV4IDFiOWM1NzRiYmVkNjM3MmJkNzNkYmNiY2QwZmFmMzZkZWJm
N2RmOTUuLjE4MDRiZWIxODk0OTA3OTE5MzQ4ZGY2MDM5Y2JiYTQ1YmQ0ZTE0YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJh
eS5jcHAKQEAgLTM4LDE4ICszOCwyOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJYUklucHV0U291cmNlQXJyYXkpOwogCi1SZWY8V2ViWFJJ
bnB1dFNvdXJjZUFycmF5PiBXZWJYUklucHV0U291cmNlQXJyYXk6OmNyZWF0ZShSZWY8V2ViWFJT
ZXNzaW9uPiYmIHNlc3Npb24pCitVbmlxdWVSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBXZWJY
UklucHV0U291cmNlQXJyYXk6OmNyZWF0ZShXZWJYUlNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNvdXJjZUFycmF5KFdURk1vdmUoc2Vzc2lv
bikpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxXZWJYUklucHV0U291cmNlQXJyYXk+KHNl
c3Npb24pOwogfQogCi1XZWJYUklucHV0U291cmNlQXJyYXk6OldlYlhSSW5wdXRTb3VyY2VBcnJh
eShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCi0gICAgOiBtX3Nlc3Npb24oV1RGTW92ZShz
ZXNzaW9uKSkKK1dlYlhSSW5wdXRTb3VyY2VBcnJheTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5KFdl
YlhSU2Vzc2lvbiYgc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQogewogfQogCiBX
ZWJYUklucHV0U291cmNlQXJyYXk6On5XZWJYUklucHV0U291cmNlQXJyYXkoKSA9IGRlZmF1bHQ7
CiAKKwordm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OnJlZigpCit7CisgICAgbV9zZXNzaW9u
LnJlZigpOworfQorCit2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6ZGVyZWYoKQoreworICAg
IG1fc2Vzc2lvbi5kZXJlZigpOworfQorCiB1bnNpZ25lZCBXZWJYUklucHV0U291cmNlQXJyYXk6
Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5wdXRTb3VyY2VzLnNpemUoKTsKQEAg
LTc4LDEyICs4OSwxMiBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6dXBkYXRlKGRvdWJs
ZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdQogICAgIGlmICghYWRkZWQu
aXNFbXB0eSgpIHx8ICFyZW1vdmVkLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBBIHVzZXIgYWdl
bnQgTVVTVCBkaXNwYXRjaCBhbiBpbnB1dHNvdXJjZXNjaGFuZ2UgZXZlbnQgb24gYW4gWFJTZXNz
aW9uIHdoZW4gdGhlIHNlc3Npb27igJlzIGxpc3Qgb2YgYWN0aXZlIFhSIGlucHV0IHNvdXJjZXMg
aGFzIGNoYW5nZWQuCiAgICAgICAgIFhSSW5wdXRTb3VyY2VzQ2hhbmdlRXZlbnQ6OkluaXQgaW5p
dDsKLSAgICAgICAgaW5pdC5zZXNzaW9uID0gbV9zZXNzaW9uLmNvcHlSZWYoKTsKKyAgICAgICAg
aW5pdC5zZXNzaW9uID0gbWFrZVJlZihtX3Nlc3Npb24pOwogICAgICAgICBpbml0LmFkZGVkID0g
V1RGTW92ZShhZGRlZCk7CiAgICAgICAgIGluaXQucmVtb3ZlZCA9IFdURk1vdmUocmVtb3ZlZCk7
CiAgICAgICAgIAogICAgICAgICBhdXRvIGV2ZW50ID0gWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dHNvdXJjZXNjaGFuZ2VFdmVudCwgaW5pdCk7Ci0g
ICAgICAgIG1fc2Vzc2lvbi0+cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KG1fc2Vzc2lvbi5nZXQo
KSwgVGFza1NvdXJjZTo6V2ViWFIsIFdURk1vdmUoZXZlbnQpKTsKKyAgICAgICAgQWN0aXZlRE9N
T2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQobV9zZXNzaW9uLCBUYXNrU291cmNlOjpX
ZWJYUiwgV1RGTW92ZShldmVudCkpOwogICAgIH0KIAogICAgIGlmICghaW5wdXRFdmVudHMuaXNF
bXB0eSgpKSB7CkBAIC05NSw5ICsxMDYsOSBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6
dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wdQogICAg
ICAgICAvLyA1LiBTZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRvIGZhbHNlLgogCiAgICAg
ICAgIGZvciAoYXV0byYgZXZlbnQgOiBpbnB1dEV2ZW50cykgewotICAgICAgICAgICAgbV9zZXNz
aW9uLT5xdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUobV9zZXNzaW9uLmdldCgpLCBUYXNrU291
cmNlOjpXZWJYUiwgWyZzZXNzaW9uID0gbV9zZXNzaW9uLmdldCgpLCBldmVudCA9IFdURk1vdmUo
ZXZlbnQpXSgpIHsKKyAgICAgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKG1fc2Vzc2lvbiwgVGFza1NvdXJjZTo6V2ViWFIsIFtzZXNzaW9uID0gbWFr
ZVJlZlB0cihtX3Nlc3Npb24pLCBldmVudCA9IFdURk1vdmUoZXZlbnQpXSgpIHsKICAgICAgICAg
ICAgICAgICBldmVudC0+c2V0RnJhbWVBY3RpdmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgc2Vz
c2lvbi5kaXNwYXRjaEV2ZW50KGV2ZW50LmNvcHlSZWYoKSk7CisgICAgICAgICAgICAgICAgc2Vz
c2lvbi0+ZGlzcGF0Y2hFdmVudChldmVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIGV2
ZW50LT5zZXRGcmFtZUFjdGl2ZShmYWxzZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpA
QCAtMTI3LDcgKzEzOCw3IEBAIHZvaWQgV2ViWFJJbnB1dFNvdXJjZUFycmF5OjpoYW5kbGVSZW1v
dmVkSW5wdXRTb3VyY2VzKGNvbnN0IElucHV0U291cmNlTGlzdCYgaW5wCiAvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNsaXN0LW9mLWFjdGl2ZS14ci1pbnB1dC1zb3Vy
Y2VzCiB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1
dFNvdXJjZXMoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0JiBpbnB1dFNv
dXJjZXMsIFZlY3RvcjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiBhZGRlZCwgVmVjdG9yPFJl
ZlB0cjxXZWJYUklucHV0U291cmNlPj4mIHJlbW92ZWQsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJj
ZUV2ZW50Pj4mIGlucHV0RXZlbnRzKQogewotICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KG1fc2Vzc2lvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBhdXRv
KiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3Nlc3Npb24uc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTE0
MSw3ICsxNTIsNyBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVw
ZGF0ZWRJbnB1dFNvdXJjZXMoZG91YmxlIHRpbWVzdGFtcCwgYwogICAgICAgICAgICAgLy8gICAz
LjEgTGV0IGlucHV0U291cmNlIGJlIGEgbmV3IFhSSW5wdXRTb3VyY2UgaW4gdGhlIHJlbGV2YW50
IHJlYWxtIG9mIHRoaXMgWFJTZXNzaW9uLgogICAgICAgICAgICAgLy8gICAzLjIgQWRkIGlucHV0
U291cmNlIHRvIGFkZGVkLgogCi0gICAgICAgICAgICBhdXRvIGlucHV0ID0gV2ViWFJJbnB1dFNv
dXJjZTo6Y3JlYXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLmNvcHlSZWYoKSwgdGltZXN0YW1wLCBp
bnB1dFNvdXJjZSk7CisgICAgICAgICAgICBhdXRvIGlucHV0ID0gV2ViWFJJbnB1dFNvdXJjZTo6
Y3JlYXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLCB0aW1lc3RhbXAsIGlucHV0U291cmNlKTsKICAg
ICAgICAgICAgIGFkZGVkLmFwcGVuZChpbnB1dC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgaW5w
dXQtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOwogICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMu
YXBwZW5kKFdURk1vdmUoaW5wdXQpKTsKQEAgLTE2NSw3ICsxNzYsNyBAQCB2b2lkIFdlYlhSSW5w
dXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMoZG91YmxlIHRp
bWVzdGFtcCwgYwogICAgICAgICAgICAgaW5wdXQtPnBvbGxFdmVudHMoaW5wdXRFdmVudHMpOwog
ICAgICAgICAgICAgbV9pbnB1dFNvdXJjZXMucmVtb3ZlKGluZGV4KTsKIAotICAgICAgICAgICAg
YXV0byBuZXdJbnB1dFNvdXJjZSA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgqZG9jdW1lbnQs
IG1fc2Vzc2lvbi5jb3B5UmVmKCksIHRpbWVzdGFtcCwgaW5wdXRTb3VyY2UpOworICAgICAgICAg
ICAgYXV0byBuZXdJbnB1dFNvdXJjZSA9IFdlYlhSSW5wdXRTb3VyY2U6OmNyZWF0ZSgqZG9jdW1l
bnQsIG1fc2Vzc2lvbiwgdGltZXN0YW1wLCBpbnB1dFNvdXJjZSk7CiAgICAgICAgICAgICBhZGRl
ZC5hcHBlbmQobmV3SW5wdXRTb3VyY2UuY29weVJlZigpKTsKICAgICAgICAgICAgIG5ld0lucHV0
U291cmNlLT5wb2xsRXZlbnRzKGlucHV0RXZlbnRzKTsKICAgICAgICAgICAgIG1faW5wdXRTb3Vy
Y2VzLmFwcGVuZChXVEZNb3ZlKG5ld0lucHV0U291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaAppbmRleCAxMTQxNWNm
Y2QwNDdkYWNjMTIzYzAwYmM2MzdjMDIxNmY0MzhjZDEwLi5hNDkwZTU5MzZiM2E0OTM3Y2EyYzM1
ODQ2ZGQ4OGNkZWE5NmY0MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgKQEAgLTI4LDkgKzI4LDExIEBACiAjaWYgRU5B
QkxFKFdFQlhSKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorI2luY2x1ZGUgIlNjcmlwdFdy
YXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzksMjYgKzQxLDMzIEBAIGNsYXNzIFdl
YlhSSW5wdXRTb3VyY2U7CiBjbGFzcyBYUklucHV0U291cmNlRXZlbnQ7CiBjbGFzcyBXZWJYUlNl
c3Npb247CiAKLWNsYXNzIFdlYlhSSW5wdXRTb3VyY2VBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlhSSW5wdXRTb3VyY2VBcnJheT4geworY2xhc3MgV2ViWFJJbnB1dFNvdXJjZUFycmF5IGZp
bmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChXZWJYUklucHV0U291cmNlQXJyYXkpOworICAgIGZyaWVuZCBVbmlxdWVSZWY8V2ViWFJJbnB1
dFNvdXJjZUFycmF5PiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdl
YlhSSW5wdXRTb3VyY2VBcnJheSwgV2ViWFJTZXNzaW9uJj4oV2ViWFJTZXNzaW9uJik7CiBwdWJs
aWM6CiAgICAgdXNpbmcgSW5wdXRTb3VyY2VMaXN0ID0gVmVjdG9yPFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT47Ci0gICAgc3RhdGljIFJlZjxXZWJYUklucHV0U291
cmNlQXJyYXk+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBzdGF0aWMgVW5pcXVl
UmVmPFdlYlhSSW5wdXRTb3VyY2VBcnJheT4gY3JlYXRlKFdlYlhSU2Vzc2lvbiYpOwogICAgIH5X
ZWJYUklucHV0U291cmNlQXJyYXkoKTsKIAorICAgIHZvaWQgcmVmKCk7CisgICAgdm9pZCBkZXJl
ZigpOworCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgV2ViWFJJbnB1dFNvdXJj
ZSogaXRlbSh1bnNpZ25lZCkgY29uc3Q7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCB1
cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0Jik7CiAKKyAgICAv
LyBGb3IgR0MgcmVhY2hhYmxpdGl5LgorICAgIFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0
IHsgcmV0dXJuICZtX3Nlc3Npb247IH0KKwogcHJpdmF0ZToKLSAgICBXZWJYUklucHV0U291cmNl
QXJyYXkoUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAgV2ViWFJJbnB1dFNvdXJjZUFycmF5KFdl
YlhSU2Vzc2lvbiYpOwogCiAgICAgdm9pZCBoYW5kbGVSZW1vdmVkSW5wdXRTb3VyY2VzKGNvbnN0
IElucHV0U291cmNlTGlzdCYsIFZlY3RvcjxSZWZQdHI8V2ViWFJJbnB1dFNvdXJjZT4+JiwgVmVj
dG9yPFJlZjxYUklucHV0U291cmNlRXZlbnQ+PiYpOwogICAgIHZvaWQgaGFuZGxlQWRkZWRPclVw
ZGF0ZWRJbnB1dFNvdXJjZXMoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgSW5wdXRTb3VyY2VMaXN0
JiwgVmVjdG9yPFJlZlB0cjxXZWJYUklucHV0U291cmNlPj4mLCBWZWN0b3I8UmVmUHRyPFdlYlhS
SW5wdXRTb3VyY2U+PiYsIFZlY3RvcjxSZWY8WFJJbnB1dFNvdXJjZUV2ZW50Pj4mKTsKIAotICAg
IFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWJYUlNlc3Npb24mIG1fc2Vzc2lv
bjsKICAgICBWZWN0b3I8UmVmPFdlYlhSSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZUFycmF5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZUFycmF5LmlkbAppbmRleCA1ODVhZjFhZDhiYzZkYzlmZWNkNmFmMDQ1M2JlMTJiZWVjYmU0
ODNlLi5hODFlYjFmNzA2ZTM2M2YxN2ViNjA4NGZiMDc1ZWZmMzRhNmM0ZjEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXku
aWRsCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogWworICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9
SW1wbFdlYlhSU2Vzc2lvblJvb3QsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJYUiwKICAgICBD
b25kaXRpb25hbD1XRUJYUiwKICAgICBTZWN1cmVDb250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwCmluZGV4IGY3N2NhNTIzNzJhNGVj
YjU2ZmU0NjcxZGQ3NmU1NDUxODM1ZGRkZTcuLjU0MGQ3MWFlMjk5Mjg2N2EzNTIyZTY2NjBmM2Ex
ZWE5MGJkMGIxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJJbnB1dFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
SW5wdXRTcGFjZS5jcHAKQEAgLTM5LDE0ICszOSwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoV2ViWFJJbnB1dFNwYWNlKTsKIAogLy8gV2ViWFJJbnB1dFNwYWNlCiAKLVJlZjxXZWJY
UklucHV0U3BhY2U+IFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
UmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQorUmVmPFdlYlhSSW5wdXRTcGFjZT4gV2Vi
WFJJbnB1dFNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBv
c2UmIHBvc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJJbnB1dFNwYWNlKGRv
Y3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBwb3NlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViWFJJbnB1dFNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBwb3NlKSk7CiB9CiAKLVdlYlhS
SW5wdXRTcGFjZTo6V2ViWFJJbnB1dFNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiBzZXNzaW9uLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQorV2ViWFJJbnB1dFNwYWNlOjpXZWJYUklucHV0U3BhY2Uo
RG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmIHBvc2UpCiAgICAgOiBXZWJY
UlNwYWNlKGRvY3VtZW50LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKLSAgICAsIG1f
c2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9zZXNzaW9uKHNlc3Npb24pCiAgICAg
LCBtX3Bvc2UocG9zZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTcGFjZS5oCmluZGV4IDQ5NWE4Yzg1YjA5NTk0ZDY1N2MzZTYzY2IxN2FmMDMxYWNh
N2JhNjYuLjE5Mjg5NzkyZWE5NDBlZWZjODUyNjM0ZGJjN2JkNGQxN2M0YWQ4MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuaApAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJYUklucHV0U3BhY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJYUklucHV0U3BhY2U+LCBwdWJsaWMgV2ViWFJTcGFjZSB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUklucHV0U3BhY2UpOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8V2ViWFJJbnB1dFNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNz
aW9uPiYmLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQ
b3NlJik7CisgICAgc3RhdGljIFJlZjxXZWJYUklucHV0U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYs
IFdlYlhSU2Vzc2lvbiYsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1
dFNvdXJjZVBvc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJYUklucHV0U3BhY2UoKTsKIAogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8V2ViWFJJbnB1dFNwYWNlPjo6cmVmOwpAQCAtNDgsNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRQb3NlKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZVBvc2UmIHBvc2UpIHsgbV9wb3NlID0gcG9zZTsgfQogCiBwcml2YXRl
OgotICAgIFdlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIGNv
bnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKTsKKyAg
ICBXZWJYUklucHV0U3BhY2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mLCBjb25zdCBQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJik7CiAgICAgV2ViWFJTZXNz
aW9uJiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBjOGJl
MzBmYzE4ZjA4ZjMzZmNiYzFkMzY0ZDNkOTZjOWIwYjQ5M2Q5Li5jYzdkZDJhODM1MTZlNDhiYjIz
MDlmMDgzNGNiNGVhYjQwMjVlODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uY3BwCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBXZWJYUlNlc3Npb246
Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAg
ICAgIC8vICAxLkxldCBub3cgYmUgdGhlIGN1cnJlbnQgaGlnaCByZXNvbHV0aW9uIHRpbWUuCiAg
ICAgICAgIGF1dG8gbm93ID0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV90aW1lT3JpZ2luKS5t
aWxsaXNlY29uZHMoKTsKIAotICAgICAgICBhdXRvIGZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRl
KG1ha2VSZWYoKnRoaXMpLCBXZWJYUkZyYW1lOjpJc0FuaW1hdGlvbkZyYW1lOjpZZXMpOworICAg
ICAgICBhdXRvIGZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRlKCp0aGlzLCBXZWJYUkZyYW1lOjpJ
c0FuaW1hdGlvbkZyYW1lOjpZZXMpOwogICAgICAgICAvLyAgMi5MZXQgZnJhbWUgYmUgc2Vzc2lv
buKAmXMgYW5pbWF0aW9uIGZyYW1lLgogICAgICAgICAvLyAgMy5TZXQgZnJhbWXigJlzIHRpbWUg
dG8gZnJhbWVUaW1lLgogICAgICAgICBmcmFtZS0+c2V0VGltZShzdGF0aWNfY2FzdDxET01IaWdo
UmVzVGltZVN0YW1wPihmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IDhlZDQxZTE3MmM5YTdk
YWY3N2NhNGFjNjhkMWE0ZjEyYTU4MTVjOTYuLjQ5YzlmNjhiNzFlZmI0Yzk0ODkxNTVjNmZkMTJj
OGVjMWVjMzliMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Np
b24uaApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgWFJFbnZpcm9ubWVudEJsZW5k
TW9kZSBtX2Vudmlyb25tZW50QmxlbmRNb2RlOwogICAgIFhSSW50ZXJhY3Rpb25Nb2RlIG1faW50
ZXJhY3Rpb25Nb2RlOwogICAgIFhSVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwot
ICAgIFJlZjxXZWJYUklucHV0U291cmNlQXJyYXk+IG1faW5wdXRTb3VyY2VzOworICAgIFVuaXF1
ZVJlZjxXZWJYUklucHV0U291cmNlQXJyYXk+IG1faW5wdXRTb3VyY2VzOwogICAgIGJvb2wgbV9l
bmRlZCB7IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8RW5kUHJvbWlzZT4gbV9lbmRQcm9taXNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IDZiNWI0OGE0NjU1MTU4YzAyYmYzMTFlNWE0MWM3Nzk2ZDMyZTJhYjAuLjNlMjU2
MWZhM2M5NmI3Mjg5MWVhYjI0MjBhNjA1ZjgzNDU2YzcwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC01MDg3LDYgKzUw
ODcsMTIgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAkcm9v
dFN0cmluZyAuPSAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iOwogICAgICAgICAgICAgICAgICRy
b290U3RyaW5nIC49ICIgICAgaWYgKFVOTElLRUxZKHJlYXNvbikpXG4iOwogICAgICAgICAgICAg
ICAgICRyb290U3RyaW5nIC49ICIgICAgICAgICpyZWFzb24gPSBcIlJlYWNoYWJsZSBmcm9tIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRcIjtcbiI7CisgICAgICAgICAgICB9IGVsc2lmIChHZXRHZW5l
cmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsV2ViWFJTZXNzaW9uUm9vdCIpIHsK
KyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIFdlYlhSU2Vzc2lvbiogcm9vdCA9
IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZhY2VOYW1lfS0+d3JhcHBlZCgpLnNlc3Npb24oKSk7XG4i
OworICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYgKCFyb290KVxuIjsKKyAg
ICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iOwor
ICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYgKFVOTElLRUxZKHJlYXNvbikp
XG4iOworICAgICAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgICAgICpyZWFzb24gPSBc
IlJlYWNoYWJsZSBmcm9tIFdlYlhSU2Vzc2lvblwiO1xuIjsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29y
ZTo6cm9vdCgmanMke2ludGVyZmFjZU5hbWV9LT53cmFwcGVkKCkpO1xuIjsKICAgICAgICAgICAg
ICAgICAkcm9vdFN0cmluZyAuPSAiICAgIGlmIChVTkxJS0VMWShyZWFzb24pKVxuIjsK
</data>
<flag name="review"
          id="448947"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="448948"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>