<?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>170599</bug_id>
          
          <creation_ts>2017-04-07 06:24:35 -0700</creation_ts>
          <short_desc>[GTK] Use the DisplayRefreshMonitor facilities</short_desc>
          <delta_ts>2017-04-11 23:50:57 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>magomez</cc>
    
    <cc>yoon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1295299</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-07 06:24:35 -0700</bug_when>
    <thetext>Instead of relying on a dumb timer in ThreadedCompositor, we should follow the vsync updates as reported by EGL/GLX, and coordinate frame completions with a DisplayRefreshMonitor object instance that lives on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295301</commentid>
    <comment_count>1</comment_count>
      <attachid>306494</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-07 06:25:42 -0700</bug_when>
    <thetext>Created attachment 306494
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295302</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-07 06:26:04 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #1)
&gt; Created attachment 306494 [details]
&gt; WIP patch

This still needs more work, but it gives the idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295912</commentid>
    <comment_count>3</comment_count>
      <attachid>306666</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-10 00:19:01 -0700</bug_when>
    <thetext>Created attachment 306666
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295914</commentid>
    <comment_count>4</comment_count>
      <attachid>306494</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-10 00:36:18 -0700</bug_when>
    <thetext>Comment on attachment 306494
WIP patch

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

Thanks for working on this. I see this is enabling refresh monitor but only implementing it in the threaded compositor, what happens in case of RAF animation with accelerated compositing disabled?

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:50
&gt; +#if PLATFORM(WPE)

I guess you mean GTK here.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:125
&gt; +    if (currentRootLayer-&gt;descendantsOrSelfHaveRunningAnimations() &amp;&amp; m_client)
&gt; +        m_client-&gt;updateViewport();

Why? is it because you know this is always happening in the compositing thread and then we don&apos;t need to go through dispatchOnClientRunLoop? It looks unrelated to this patch in any case.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:173
&gt; -    updateViewport();
&gt; +    if (m_client)
&gt; +        m_client-&gt;updateViewport();

Ditto. Also, these are the only callers of updateViewport, so if we do these changes we should remove updateViewport(). Is onNewBufferAvailable guaranteed to be called from the compositing thread? I would add an asert there just in case.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:27
&gt; +#include &quot;TCDisplayRefreshMonitor.h&quot;

I think this file should be called DisplayRefreshMonitorTC or even better DisplayRefreshMonitorThreadedCompositor, since it&apos;s the DisplayRefreshMonitor implementation for the threaded compositor.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:33
&gt; +#include &lt;glib.h&gt;

I don&apos;t think we need glib here.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:44
&gt; +    m_displayRefreshTimer.setPriority(RunLoopSourcePriority::LayerFlushTimer);

I think we should give a name to this timer priority.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:53
&gt; +    if (isPreviousFrameDone() &amp;&amp; m_compositor) {

m_compositor being nullptr means the monitor has been invalidated, do we want to set is scheduled in that case too? Wouldn&apos;t it be better to early return in case m_compositor is nullptr?

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:56
&gt; +        m_compositor-&gt;m_coordinateUpdateCompletionWithClient.store(true);
&gt; +        if (!m_compositor-&gt;m_compositingRunLoop-&gt;isActive())
&gt; +            m_compositor-&gt;m_compositingRunLoop-&gt;scheduleUpdate();

Maybe we could add a method to ThreadedCompositor coordinateUpdateCompletionWithClient() that does this, since this is also duplicated below. I also don&apos;t like this friendship, I prefer to add public methods to the threaded compositor.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:70
&gt; +    m_displayRefreshTimer.startOneShot(0);

So, this timer is only to do the displayRefreshCallback in the main thread? and the high priority to do that asap?

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:75
&gt; +    m_compositor = nullptr;

I think we should probably stop the timer here too.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:94
&gt; +        if (m_compositor-&gt;m_clientRendersNextFrame.compareExchangeStrong(true, false))
&gt; +            m_compositor-&gt;m_scene-&gt;renderNextFrame();

ThreadedCompositor::renderNextFrameIfNeeded()?

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:100
&gt; +                m_compositor-&gt;m_compositingRunLoop-&gt;scheduleUpdate();

In the case of the GTK+ port we shouldn&apos;t schedule this update immediately, we should check the time since the last frame to ensure we don not render at more than 60fps, because we are not actually using the display refresh in the web process.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.h:27
&gt; +#ifndef ThreadedCompositor_DisplayRefreshMonitor_h
&gt; +#define ThreadedCompositor_DisplayRefreshMonitor_h

This should be DisplayRefreshMonitorThreadedCompositor

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.h:32
&gt; +

Extra line here.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:61
&gt; +    , m_displayRefreshMonitor(adoptRef(new WebKit::DisplayRefreshMonitor(*this)))

We are inside WebKit namespace here. I would add a create method that returns a Ref instead of doing the adop + new here, though.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:220
&gt; +    // For the GTK+ port, {egl,glx}SwapBuffers() does the frame sync.
&gt; +    sceneUpdateFinished();

This is not true. In the GTK+ port the frame sync is done by GTK+ in the UI process. EGL/GLX frame sync is disabled in the web process because we are not rendering to the screen.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:255
&gt; +RefPtr&lt;WebCore::DisplayRefreshMonitor&gt; ThreadedCompositor::createDisplayRefreshMonitor(PlatformDisplayID)

I would call this displayRefreshMonitor(), since this is not creating anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295915</commentid>
    <comment_count>5</comment_count>
      <attachid>306494</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-10 00:37:15 -0700</bug_when>
    <thetext>Comment on attachment 306494
WIP patch

I was reviewing this while the new patch was submitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295928</commentid>
    <comment_count>6</comment_count>
      <attachid>306494</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-10 01:29:13 -0700</bug_when>
    <thetext>Comment on attachment 306494
WIP patch

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

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:125
&gt;&gt; +        m_client-&gt;updateViewport();
&gt; 
&gt; Why? is it because you know this is always happening in the compositing thread and then we don&apos;t need to go through dispatchOnClientRunLoop? It looks unrelated to this patch in any case.

We don&apos;t need dispatched on the composition thread anymore because we&apos;re now updating an atomic variable. It is related to this patch.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:27
&gt;&gt; +#include &quot;TCDisplayRefreshMonitor.h&quot;
&gt; 
&gt; I think this file should be called DisplayRefreshMonitorTC or even better DisplayRefreshMonitorThreadedCompositor, since it&apos;s the DisplayRefreshMonitor implementation for the threaded compositor.

I&apos;ll be using ThreadedDisplayRefreshMonitor.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:44
&gt;&gt; +    m_displayRefreshTimer.setPriority(RunLoopSourcePriority::LayerFlushTimer);
&gt; 
&gt; I think we should give a name to this timer priority.

It should have the same value as the LayerFlushTimer priority, so I don&apos;t know whether it makes sense to add a new one.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:53
&gt;&gt; +    if (isPreviousFrameDone() &amp;&amp; m_compositor) {
&gt; 
&gt; m_compositor being nullptr means the monitor has been invalidated, do we want to set is scheduled in that case too? Wouldn&apos;t it be better to early return in case m_compositor is nullptr?

OK.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:70
&gt;&gt; +    m_displayRefreshTimer.startOneShot(0);
&gt; 
&gt; So, this timer is only to do the displayRefreshCallback in the main thread? and the high priority to do that asap?

Priority is as high as it is for the layer flush timer.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:75
&gt;&gt; +    m_compositor = nullptr;
&gt; 
&gt; I think we should probably stop the timer here too.

OK.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:100
&gt;&gt; +                m_compositor-&gt;m_compositingRunLoop-&gt;scheduleUpdate();
&gt; 
&gt; In the case of the GTK+ port we shouldn&apos;t schedule this update immediately, we should check the time since the last frame to ensure we don not render at more than 60fps, because we are not actually using the display refresh in the web process.

Figures.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:61
&gt;&gt; +    , m_displayRefreshMonitor(adoptRef(new WebKit::DisplayRefreshMonitor(*this)))
&gt; 
&gt; We are inside WebKit namespace here. I would add a create method that returns a Ref instead of doing the adop + new here, though.

The problem was that it clashed with WebCore::DisplayRefreshMonitor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295931</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-10 01:43:13 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #6)
&gt; Comment on attachment 306494 [details]
&gt; WIP patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=306494&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:125
&gt; &gt;&gt; +        m_client-&gt;updateViewport();
&gt; &gt; 
&gt; &gt; Why? is it because you know this is always happening in the compositing thread and then we don&apos;t need to go through dispatchOnClientRunLoop? It looks unrelated to this patch in any case.
&gt; 
&gt; We don&apos;t need dispatched on the composition thread anymore because we&apos;re now
&gt; updating an atomic variable. It is related to this patch.

In that case, since updateViewport is now thread safe, I would change the updateViewport impl to not schedule to the compositing thread, instead of modifying the callers and leaving updateViewport unused.

&gt; &gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:27
&gt; &gt;&gt; +#include &quot;TCDisplayRefreshMonitor.h&quot;
&gt; &gt; 
&gt; &gt; I think this file should be called DisplayRefreshMonitorTC or even better DisplayRefreshMonitorThreadedCompositor, since it&apos;s the DisplayRefreshMonitor implementation for the threaded compositor.
&gt; 
&gt; I&apos;ll be using ThreadedDisplayRefreshMonitor.
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:44
&gt; &gt;&gt; +    m_displayRefreshTimer.setPriority(RunLoopSourcePriority::LayerFlushTimer);
&gt; &gt; 
&gt; &gt; I think we should give a name to this timer priority.
&gt; 
&gt; It should have the same value as the LayerFlushTimer priority, so I don&apos;t
&gt; know whether it makes sense to add a new one.

We decided to choose names based on what the timer does instead of generic names like urgent, high, medium, low, etc. That&apos;s what would allow us to use different values for the same timer in different ports. We have several priorities with the same value already.

&gt; &gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:53
&gt; &gt;&gt; +    if (isPreviousFrameDone() &amp;&amp; m_compositor) {
&gt; &gt; 
&gt; &gt; m_compositor being nullptr means the monitor has been invalidated, do we want to set is scheduled in that case too? Wouldn&apos;t it be better to early return in case m_compositor is nullptr?
&gt; 
&gt; OK.
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:70
&gt; &gt;&gt; +    m_displayRefreshTimer.startOneShot(0);
&gt; &gt; 
&gt; &gt; So, this timer is only to do the displayRefreshCallback in the main thread? and the high priority to do that asap?
&gt; 
&gt; Priority is as high as it is for the layer flush timer.
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:75
&gt; &gt;&gt; +    m_compositor = nullptr;
&gt; &gt; 
&gt; &gt; I think we should probably stop the timer here too.
&gt; 
&gt; OK.
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/TCDisplayRefreshMonitor.cpp:100
&gt; &gt;&gt; +                m_compositor-&gt;m_compositingRunLoop-&gt;scheduleUpdate();
&gt; &gt; 
&gt; &gt; In the case of the GTK+ port we shouldn&apos;t schedule this update immediately, we should check the time since the last frame to ensure we don not render at more than 60fps, because we are not actually using the display refresh in the web process.
&gt; 
&gt; Figures.
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:61
&gt; &gt;&gt; +    , m_displayRefreshMonitor(adoptRef(new WebKit::DisplayRefreshMonitor(*this)))
&gt; &gt; 
&gt; &gt; We are inside WebKit namespace here. I would add a create method that returns a Ref instead of doing the adop + new here, though.
&gt; 
&gt; The problem was that it clashed with WebCore::DisplayRefreshMonitor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295932</commentid>
    <comment_count>8</comment_count>
      <attachid>306671</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-10 01:48:42 -0700</bug_when>
    <thetext>Created attachment 306671
WIP

Still needs the helper methods, at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295950</commentid>
    <comment_count>9</comment_count>
      <attachid>306678</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-10 03:16:28 -0700</bug_when>
    <thetext>Created attachment 306678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295960</commentid>
    <comment_count>10</comment_count>
      <attachid>306682</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-10 04:30:53 -0700</bug_when>
    <thetext>Created attachment 306682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295961</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-10 04:34:07 -0700</bug_when>
    <thetext>Attachment 306682 did not pass style-queue:


ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:61:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296366</commentid>
    <comment_count>12</comment_count>
      <attachid>306682</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-11 05:53:13 -0700</bug_when>
    <thetext>Comment on attachment 306682
Patch

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

I&apos;ve been doing tests in both X11 and Wayland enabling again the sync frame and not using the timer introduced in this patch, and things seem to work fine. So, the performance of resizes in wayland might have been fixed somehow, not sure if it&apos;s mesa, wayland or WebKit. So, to make things easier let&apos;s forget about the timer for now and enable frame sync.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:-135
&gt; -    if (!m_client)
&gt; -        return;
&gt; -    dispatchOnClientRunLoop([this] {
&gt; -        if (m_client)
&gt; -            m_client-&gt;updateViewport();
&gt; -    });

Please add an assert here to ensure it&apos;s called from the compositing thread.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:197
&gt; +#ifndef NDEBUG
&gt; +bool CompositingRunLoop::isCurrent()
&gt; +{
&gt; +    return &amp;RunLoop::current() == &amp;m_runLoop;
&gt; +}
&gt; +#endif

This doesn&apos;t seem to be used.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:61
&gt; +    , m_displayRefreshMonitor(adoptRef(new ThreadedDisplayRefreshMonitor(*this)))

Could this be a Ref instead of RefPtr?

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:75
&gt; +
&gt; +        m_frameCompletion.timer = std::make_unique&lt;RunLoop::Timer&lt;ThreadedCompositor&gt;&gt;(RunLoop::current(), this, &amp;ThreadedCompositor::performFrameCompletion);

Let&apos;s remove this.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:186
&gt;  void ThreadedCompositor::updateViewport()
&gt;  {
&gt; -    m_compositingRunLoop-&gt;startUpdateTimer(CompositingRunLoop::WaitUntilNextFrame);
&gt; +    m_compositingRunLoop-&gt;scheduleUpdate();
&gt;  }
&gt;  
&gt;  void ThreadedCompositor::scheduleDisplayImmediately()
&gt;  {
&gt; -    m_compositingRunLoop-&gt;startUpdateTimer(CompositingRunLoop::Immediate);
&gt; +    m_compositingRunLoop-&gt;scheduleUpdate();
&gt;  }

I think it&apos;s clearer if updateViewport() calls scheduleDisplayImmediately() instead of having two methods with the same implementation. I wonder if if we could get rid of scheduleDisplayImmediately() now and use m_compositingRunLoop-&gt;scheduleUpdate(); or if we keep it, we can rename it as scheduleDisplay(), because now it&apos;s always immediately and there&apos;s no other way to schedule a display.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:224
&gt; +
&gt; +    const static double targetFPS = 60;
&gt; +    double nextUpdateTime = std::max((1 / targetFPS) - (monotonicallyIncreasingTime() - m_frameCompletion.lastTime), 0.0);
&gt; +    m_frameCompletion.timer-&gt;startOneShot(1_s * nextUpdateTime);

So, do not remove the m_doFrameSync yet, and simply use it here to decide whether to call sceneUpdateFinished() or not. Remember to update the layer tree host to pass ShouldDoFrameSync::Yes. We can remove the option entirely in the future if we don&apos;t use it at all, but for now, it helps to leave for testing both ways.

&gt; Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.cpp:229
&gt; +    if (!m_layerTreeHost)

if (!m_layerTreeHost || m_wantsToExitAcceleratedCompositingMode || exitAcceleratedCompositingModePending())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296388</commentid>
    <comment_count>13</comment_count>
      <attachid>306816</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-11 07:45:21 -0700</bug_when>
    <thetext>Created attachment 306816
Patch for landing

Cleaned up, addressed review comments. Still needs updated ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296400</commentid>
    <comment_count>14</comment_count>
      <attachid>306816</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-11 08:31:10 -0700</bug_when>
    <thetext>Comment on attachment 306816
Patch for landing

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

LGTM, thanks!

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:-135
&gt; -    if (!m_client)
&gt; -        return;
&gt; -    dispatchOnClientRunLoop([this] {
&gt; -        if (m_client)
&gt; -            m_client-&gt;updateViewport();
&gt; -    });

Please add an assert here to ensure it&apos;s called from the compositing thread.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:214
&gt; +    sceneUpdateFinished();

My idea was to do this here only when doing frame sync, but then it will not work when not doing it unless we add the timer back, so let&apos;s leave it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296418</commentid>
    <comment_count>15</comment_count>
      <attachid>306816</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-11 08:55:34 -0700</bug_when>
    <thetext>Comment on attachment 306816
Patch for landing

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

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:-135
&gt;&gt; -    });
&gt; 
&gt; Please add an assert here to ensure it&apos;s called from the compositing thread.

It&apos;s not necessarily called on the composition thread, but we don&apos;t need to dispatch a new task anymore on that thread for the call to have an effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296423</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-11 09:05:51 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #15)
&gt; Comment on attachment 306816 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=306816&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:-135
&gt; &gt;&gt; -    });
&gt; &gt; 
&gt; &gt; Please add an assert here to ensure it&apos;s called from the compositing thread.
&gt; 
&gt; It&apos;s not necessarily called on the composition thread, but we don&apos;t need to
&gt; dispatch a new task anymore on that thread for the call to have an effect.

Ah, right, it was because now it only updates an atomic, sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296664</commentid>
    <comment_count>17</comment_count>
      <attachid>306816</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-11 23:50:53 -0700</bug_when>
    <thetext>Comment on attachment 306816
Patch for landing

Clearing flags on attachment: 306816

Committed r215259: &lt;http://trac.webkit.org/changeset/215259&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296665</commentid>
    <comment_count>18</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-11 23:50:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306494</attachid>
            <date>2017-04-07 06:25:42 -0700</date>
            <delta_ts>2017-04-10 00:37:15 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>drm.patch</filename>
            <type>text/plain</type>
            <size>27207</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IGRmMGQ3ZmZmMTU4Li4yNDcyYjZmNDJjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBA
IC0xMDQ5LDcgKzEwNDksNyBAQAogI2RlZmluZSBVU0VfUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
VElNRVIgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgUExBVEZPUk0oR1RLKQogI2RlZmluZSBVU0VfUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
RElTUExBWV9NT05JVE9SIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDUxNjAz
ZjI1NDBmLi4zOTIzMmQ1MjhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyNDcsNyArMjI0
Nyw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuZGVkQ29sb3IuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cAppbmRleCAyY2JlZmNjOTUwZS4uM2UyN2Y1MDJkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIkRpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUy5oIgotI2Vsc2UKKyNlbGlmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRl
ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCIKICNlbmRpZgogCkBAIC00Nyw2ICs0NywxMCBA
QCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNy
ZWF0ZURlZmF1bHREaXNwbGF5UmVmcmVzaAogI2lmIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4g
RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpjcmVhdGUoZGlzcGxheUlEKTsKICNlbmRpZgorI2lm
IFBMQVRGT1JNKFdQRSkKKyAgICBVTlVTRURfUEFSQU0oZGlzcGxheUlEKTsKKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKaW5kZXggNWNjMGJlMzVjM2UuLmVlODQ5ODRhNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNzE0LDYg
KzcxNCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVQbGF0Zm9ybUxh
eWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaG91bGRVcGRhdGVQbGF0Zm9ybUxheWVy
ID0gZmFsc2U7CisgICAgbV9sYXllclN0YXRlLnBsYXRmb3JtTGF5ZXJVcGRhdGVkID0gdHJ1ZTsK
ICAgICBpZiAobV9wbGF0Zm9ybUxheWVyKQogICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnN3YXBC
dWZmZXJzSWZOZWVkZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCmluZGV4IGM4MTA1MzBiNWU3Li5lZDRmMzRiYTAz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
U3RhdGUuaApAQCAtODYsNiArODYsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
U3RhdGUgewogICAgICAgICAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQ6IDE7CiAgICAgICAgICAg
ICBib29sIHJlcGFpbnRDb3VudENoYW5nZWQgOiAxOwogICAgICAgICAgICAgYm9vbCBwbGF0Zm9y
bUxheWVyQ2hhbmdlZDogMTsKKyAgICAgICAgICAgIGJvb2wgcGxhdGZvcm1MYXllclVwZGF0ZWQ6
IDE7CiAgICAgICAgICAgICBib29sIHBsYXRmb3JtTGF5ZXJTaG91bGRTd2FwQnVmZmVyczogMTsK
ICAgICAgICAgICAgIGJvb2wgaXNTY3JvbGxhYmxlQ2hhbmdlZDogMTsKICAgICAgICAgICAgIGJv
b2wgY29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlZDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKaW5kZXggNGFhMjA2YTAzYTguLjNkZWRlMDg3NGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQpAQCAtNjQsNiArNjQsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIuY3BwCiAK
ICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9z
aXRpbmdSdW5Mb29wLmNwcAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UQ0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKICAgICBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHAKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcAppbmRleCBiOTRmYWVhMmNjNC4uMzU1MDNkMWFkZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMTIxLDggKzEyMSw4IEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7CiAg
ICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGluZygpOwogCi0gICAgaWYgKGN1cnJlbnRSb290
TGF5ZXItPmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkpCi0gICAgICAg
IHVwZGF0ZVZpZXdwb3J0KCk7CisgICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPmRlc2NlbmRhbnRz
T3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgJiYgbV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT51cGRhdGVWaWV3cG9ydCgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6dXBkYXRlVmlld3BvcnQoKQpAQCAtMTY5LDcgKzE2OSw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXll
ciogbGF5CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6Om9uTmV3QnVmZmVyQXZhaWxhYmxlKCkKIHsKLSAgICB1cGRh
dGVWaWV3cG9ydCgpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZVZpZXdwb3J0KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuaAppbmRleCAxMjhiN2JlNzZlOC4uOTllYTdkYTgxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEFjdGl2ZShib29sKTsKIAogICAgIHZvaWQgY29tbWl0U2NlbmVTdGF0ZShjb25zdCBX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKKyAgICB2b2lkIHJlbmRlck5leHRG
cmFtZSgpOwogCiAgICAgdm9pZCBzZXRWaWV3QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBjb2xvcikgeyBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIFdl
YkNvcmU6OkNvbG9yIHZpZXdCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdC
YWNrZ3JvdW5kQ29sb3I7IH0KQEAgLTEyMyw3ICsxMjQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlzcGF0Y2hPbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICB2b2lkIGRpc3Bh
dGNoT25DbGllbnRSdW5Mb29wKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVW
aWV3cG9ydCgpOwotICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAKICAgICB2b2lkIGNyZWF0
ZUxheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBkZWxldGVMYXll
cihXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0
aW5nUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAppbmRleCBhYWRkNmFi
YjI2YS4uZDE5MTI0NWMyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC0xMTAsOCArMTEwLDEzIEBAIHBy
aXZhdGU6CiAKIENvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4mJiB1cGRhdGVGdW5jdGlvbikKICAgICA6IG1fdXBkYXRlVGltZXIoV29y
a1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVuTG9vcCh0aGlzKSwgdGhpcywgJkNvbXBvc2l0aW5n
UnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCkKKyNpZm5kZWYgTkRFQlVHCisgICAgLCBtX3J1bkxv
b3AoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVuTG9vcCh0aGlzKSkKKyNlbmRpZgogICAg
ICwgbV91cGRhdGVGdW5jdGlvbihXVEZNb3ZlKHVwZGF0ZUZ1bmN0aW9uKSkKIHsKKyAgICBtX3Vw
ZGF0ZVN0YXRlLnN0b3JlKFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQpOworCiAjaWYgVVNFKEdMSUJf
RVZFTlRfTE9PUCkKICAgICBtX3VwZGF0ZVRpbWVyLnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQ
cmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVUaW1lcik7CiAjZW5kaWYKQEAgLTE0NCwz
MCArMTQ5LDUzIEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpwZXJmb3JtVGFza1N5bmMoRnVu
Y3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbi53
YWl0KG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXgpOwogfQogCi12b2lkIENvbXBvc2l0aW5n
UnVuTG9vcDo6c3RhcnRVcGRhdGVUaW1lcihVcGRhdGVUaW1pbmcgdGltaW5nKQorYm9vbCBDb21w
b3NpdGluZ1J1bkxvb3A6OmlzQWN0aXZlKCkKIHsKLSAgICBpZiAobV91cGRhdGVUaW1lci5pc0Fj
dGl2ZSgpKQotICAgICAgICByZXR1cm47CisgICAgcmV0dXJuIG1fdXBkYXRlU3RhdGUubG9hZCgp
ICE9IFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQ7Cit9CiAKLSAgICBjb25zdCBzdGF0aWMgZG91Ymxl
IHRhcmdldEZQUyA9IDYwOwotICAgIGRvdWJsZSBuZXh0VXBkYXRlVGltZSA9IDA7Ci0gICAgaWYg
KHRpbWluZyA9PSBXYWl0VW50aWxOZXh0RnJhbWUpCi0gICAgICAgIG5leHRVcGRhdGVUaW1lID0g
c3RkOjptYXgoKDEgLyB0YXJnZXRGUFMpIC0gKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
IC0gbV9sYXN0VXBkYXRlVGltZSksIDAuMCk7Cit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c2No
ZWR1bGVVcGRhdGUoKQoreworICAgIGlmIChtX3VwZGF0ZVN0YXRlLmNvbXBhcmVFeGNoYW5nZVN0
cm9uZyhVcGRhdGVTdGF0ZTo6Q29tcGxldGVkLCBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykgPT0g
VXBkYXRlU3RhdGU6OkNvbXBsZXRlZCkgeworICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIG1fdXBkYXRlVGltZXIuc3Rh
cnRPbmVTaG90KG5leHRVcGRhdGVUaW1lKTsKKyAgICBpZiAobV91cGRhdGVTdGF0ZS5jb21wYXJl
RXhjaGFuZ2VTdHJvbmcoVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MsIFVwZGF0ZVN0YXRlOjpQZW5k
aW5nQWZ0ZXJDb21wbGV0aW9uKSA9PSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykKKyAgICAgICAg
cmV0dXJuOwogfQogCi12b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RvcFVwZGF0ZVRpbWVyKCkK
K3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlcygpCiB7CiAgICAgbV91cGRhdGVU
aW1lci5zdG9wKCk7CisgICAgbV91cGRhdGVTdGF0ZS5zdG9yZShVcGRhdGVTdGF0ZTo6Q29tcGxl
dGVkKTsKK30KKwordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZUNvbXBsZXRlZCgpCit7
CisgICAgaWYgKG1fdXBkYXRlU3RhdGUuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRl
OjpJblByb2dyZXNzLCBVcGRhdGVTdGF0ZTo6Q29tcGxldGVkKSA9PSBVcGRhdGVTdGF0ZTo6SW5Q
cm9ncmVzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdXBkYXRlU3RhdGUuY29tcGFy
ZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRlOjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uLCBVcGRh
dGVTdGF0ZTo6SW5Qcm9ncmVzcykgPT0gVXBkYXRlU3RhdGU6OlBlbmRpbmdBZnRlckNvbXBsZXRp
b24pIHsKKyAgICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBDb21w
b3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQoKQogewogICAgIG1fdXBkYXRlRnVuY3Rp
b24oKTsKLSAgICBtX2xhc3RVcGRhdGVUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCitib29sIENvbXBvc2l0aW5nUnVuTG9vcDo6aXNDdXJy
ZW50KCkKK3sKKyAgICByZXR1cm4gJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9ydW5Mb29wOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVu
TG9vcC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4IDUyYjVkN2QxMDAxLi42YmM5
ZDIyMGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9D
b21wb3NpdGluZ1J1bkxvb3AuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKQogCisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNs
dWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KQEAgLTQxLDI5ICs0MiwzOSBAQCBjbGFzcyBDb21wb3NpdGlu
Z1J1bkxvb3AgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbXBvc2l0aW5nUnVuTG9vcCk7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZW51bSBVcGRhdGVU
aW1pbmcgewotICAgICAgICBJbW1lZGlhdGUsCi0gICAgICAgIFdhaXRVbnRpbE5leHRGcmFtZSwK
LSAgICB9OwotCiAgICAgQ29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4m
Jik7CiAgICAgfkNvbXBvc2l0aW5nUnVuTG9vcCgpOwogCiAgICAgdm9pZCBwZXJmb3JtVGFzayhG
dW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB2b2lkIHBlcmZvcm1UYXNrU3luYyhGdW5jdGlvbjx2
b2lkICgpPiYmKTsKIAotICAgIHZvaWQgc3RhcnRVcGRhdGVUaW1lcihVcGRhdGVUaW1pbmcgPSBJ
bW1lZGlhdGUpOwotICAgIHZvaWQgc3RvcFVwZGF0ZVRpbWVyKCk7CisgICAgYm9vbCBpc0FjdGl2
ZSgpOworICAgIHZvaWQgc2NoZWR1bGVVcGRhdGUoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGVzKCk7
CisKKyAgICB2b2lkIHVwZGF0ZUNvbXBsZXRlZCgpOworCisjaWZuZGVmIE5ERUJVRworICAgIGJv
b2wgaXNDdXJyZW50KCk7CisjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIFVwZGF0
ZVN0YXRlIHsKKyAgICAgICAgQ29tcGxldGVkLAorICAgICAgICBJblByb2dyZXNzLAorICAgICAg
ICBQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uLAorICAgIH07CisKICAgICB2b2lkIHVwZGF0ZVRpbWVy
RmlyZWQoKTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPENvbXBvc2l0aW5nUnVuTG9vcD4gbV91cGRh
dGVUaW1lcjsKKyNpZm5kZWYgTkRFQlVHCisgICAgUnVuTG9vcCYgbV9ydW5Mb29wOworI2VuZGlm
CiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBtX3VwZGF0ZUZ1bmN0aW9uOworICAgIEF0b21p
YzxVcGRhdGVTdGF0ZT4gbV91cGRhdGVTdGF0ZTsKICAgICBMb2NrIG1fZGlzcGF0Y2hTeW5jQ29u
ZGl0aW9uTXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uOwotCi0g
ICAgZG91YmxlIG1fbGFzdFVwZGF0ZVRpbWUgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UQ0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
VENEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi4xZmVhMGFlZTJiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UQ0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlRDRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQpICYmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCisKKyNpbmNsdWRlICJDb21wb3NpdGluZ1J1bkxvb3AuaCIKKyNpbmNsdWRlICJUaHJl
YWRlZENvbXBvc2l0b3IuaCIKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIv
UnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitEaXNwbGF5
UmVmcmVzaE1vbml0b3I6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZENvbXBvc2l0b3Im
IGNvbXBvc2l0b3IpCisgICAgOiBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IoMCkKKyAg
ICAsIG1fZGlzcGxheVJlZnJlc2hUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZEaXNwbGF5
UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2spCisgICAgLCBtX2NvbXBvc2l0
b3IoJmNvbXBvc2l0b3IpCit7CisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKKyAgICBtX2Rpc3Bs
YXlSZWZyZXNoVGltZXIuc2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpMYXllckZs
dXNoVGltZXIpOworI2VuZGlmCit9CisKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1
ZXN0UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtdXRleCgpKTsK
KyAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKworICAgIGlmIChpc1ByZXZpb3VzRnJhbWVEb25l
KCkgJiYgbV9jb21wb3NpdG9yKSB7CisgICAgICAgIG1fY29tcG9zaXRvci0+bV9jb29yZGluYXRl
VXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQuc3RvcmUodHJ1ZSk7CisgICAgICAgIGlmICghbV9j
b21wb3NpdG9yLT5tX2NvbXBvc2l0aW5nUnVuTG9vcC0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAg
IG1fY29tcG9zaXRvci0+bV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpyZXF1aXJlc0Rpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQoreworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG11dGV4KCkpOworICAgIHJldHVybiBpc1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFt
ZURvbmUoKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BhdGNoRGlzcGxh
eVJlZnJlc2hDYWxsYmFjaygpCit7CisgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmludmFsaWRhdGUoKQor
eworICAgIG1fY29tcG9zaXRvciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpkaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBib29sIHNob3VsZEhhbmRs
ZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uID0gZmFsc2U7CisgICAgeworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtdXRleCgpKTsKKyAgICAgICAgc2hvdWxkSGFuZGxlRGlzcGxheVJlZnJl
c2hOb3RpZmljYXRpb24gPSBpc1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFtZURvbmUoKTsK
KyAgICAgICAgaWYgKHNob3VsZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uKSB7Cisg
ICAgICAgICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChzaG91bGRIYW5kbGVEaXNwbGF5UmVmcmVzaE5vdGlmaWNhdGlvbikKKyAg
ICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZp
Y2F0aW9uT25NYWluVGhyZWFkKHRoaXMpOworCisgICAgaWYgKG1fY29tcG9zaXRvcikgeworICAg
ICAgICBpZiAobV9jb21wb3NpdG9yLT5tX2NsaWVudFJlbmRlcnNOZXh0RnJhbWUuY29tcGFyZUV4
Y2hhbmdlU3Ryb25nKHRydWUsIGZhbHNlKSkKKyAgICAgICAgICAgIG1fY29tcG9zaXRvci0+bV9z
Y2VuZS0+cmVuZGVyTmV4dEZyYW1lKCk7CisgICAgICAgIGlmIChtX2NvbXBvc2l0b3ItPm1fY29v
cmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50LmNvbXBhcmVFeGNoYW5nZVN0cm9uZyh0
cnVlLCBmYWxzZSkpCisgICAgICAgICAgICBtX2NvbXBvc2l0b3ItPm1fY29tcG9zaXRpbmdSdW5M
b29wLT51cGRhdGVDb21wbGV0ZWQoKTsKKyAgICAgICAgaWYgKGlzU2NoZWR1bGVkKCkpIHsKKyAg
ICAgICAgICAgIG1fY29tcG9zaXRvci0+bV9jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhD
bGllbnQuc3RvcmUodHJ1ZSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcG9zaXRvci0+bV9jb21w
b3NpdGluZ1J1bkxvb3AtPmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgbV9jb21wb3NpdG9y
LT5tX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfVEhSRUFERUQpICYmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQ
TEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVENEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UQ0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi44MGQ5YzU2Y2E5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UQ0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUaHJlYWRlZENvbXBvc2l0b3Jf
RGlzcGxheVJlZnJlc2hNb25pdG9yX2gKKyNkZWZpbmUgVGhyZWFkZWRDb21wb3NpdG9yX0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvcl9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpICYmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oPgorCisjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFRocmVhZGVkQ29tcG9z
aXRvcjsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yIDogcHVibGljIFdlYkNvcmU6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvciB7CitwdWJsaWM6CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9y
KFRocmVhZGVkQ29tcG9zaXRvciYpOworCisgICAgdmlydHVhbCBib29sIHJlcXVlc3RSZWZyZXNo
Q2FsbGJhY2soKSBvdmVycmlkZTsKKworICAgIGJvb2wgcmVxdWlyZXNEaXNwbGF5UmVmcmVzaENh
bGxiYWNrKCk7CisgICAgdm9pZCBkaXNwYXRjaERpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKTsKKyAg
ICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGRpc3BsYXlSZWZyZXNo
Q2FsbGJhY2soKTsKKyAgICBSdW5Mb29wOjpUaW1lcjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IG1f
ZGlzcGxheVJlZnJlc2hUaW1lcjsKKyAgICBUaHJlYWRlZENvbXBvc2l0b3IqIG1fY29tcG9zaXRv
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKSAmJiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQorCisjZW5kaWYgLy8gVGhyZWFkZWRDb21wb3NpdG9yX0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvclRDX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggYzdhZDgzN2M4MzMuLjgxYTMxMDQ0NDA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKIAogI2luY2x1ZGUgIkNvbXBvc2l0aW5nUnVuTG9vcC5oIgorI2lu
Y2x1ZGUgIlRDRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+
CiAKQEAgLTU2LDcgKzU3LDEzIEBAIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3Np
dG9yKENsaWVudCYgY2xpZW50LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpCiAgICAgLCBtX3Bh
aW50RmxhZ3MocGFpbnRGbGFncykKICAgICAsIG1fbmVlZHNSZXNpemUoIXZpZXdwb3J0U2l6ZS5p
c0VtcHR5KCkpCiAgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChzdGQ6Om1ha2VfdW5pcXVlPENv
bXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQorI2lmIFVT
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAgLCBtX2Rpc3Bs
YXlSZWZyZXNoTW9uaXRvcihhZG9wdFJlZihuZXcgV2ViS2l0OjpEaXNwbGF5UmVmcmVzaE1vbml0
b3IoKnRoaXMpKSkKKyNlbmRpZgogeworICAgIG1fY2xpZW50UmVuZGVyc05leHRGcmFtZS5zdG9y
ZShmYWxzZSk7CisgICAgbV9jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQuc3Rv
cmUoZmFsc2UpOworCiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrU3luYyhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIG1fc2NlbmUg
PSBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKHRoaXMpKTsKICAgICAgICAg
aWYgKG1fbmF0aXZlU3VyZmFjZUhhbmRsZSkgewpAQCAtODksMTggKzk2LDIxIEBAIHZvaWQgVGhy
ZWFkZWRDb21wb3NpdG9yOjpjcmVhdGVHTENvbnRleHQoKQogdm9pZCBUaHJlYWRlZENvbXBvc2l0
b3I6OmludmFsaWRhdGUoKQogewogICAgIG1fc2NlbmUtPmRldGFjaCgpOwotICAgIG1fY29tcG9z
aXRpbmdSdW5Mb29wLT5zdG9wVXBkYXRlVGltZXIoKTsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+c3RvcFVwZGF0ZXMoKTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tT
eW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgbV9z
Y2VuZS0+cHVyZ2VHTFJlc291cmNlcygpOwogICAgICAgICBtX2NvbnRleHQgPSBudWxscHRyOwog
ICAgICAgICBtX3NjZW5lID0gbnVsbHB0cjsKICAgICB9KTsKKyNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9y
LT5pbnZhbGlkYXRlKCk7CisjZW5kaWYKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcCA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXROYXRpdmVTdXJmYWNlSGFuZGxl
Rm9yQ29tcG9zaXRpbmcodWludDY0X3QgaGFuZGxlKQogewotICAgIG1fY29tcG9zaXRpbmdSdW5M
b29wLT5zdG9wVXBkYXRlVGltZXIoKTsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RvcFVw
ZGF0ZXMoKTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGhhbmRsZV0gewogICAgICAgICAvLyBB
IG5ldyBuYXRpdmUgaGFuZGxlIGNhbid0IGJlIHNldCB3aXRob3V0IGRlc3Ryb3lpbmcgdGhlIHBy
ZXZpb3VzIG9uZSBmaXJzdCBpZiBhbnkuCiAgICAgICAgIEFTU0VSVCghIWhhbmRsZSBeICEhbV9u
YXRpdmVTdXJmYWNlSGFuZGxlKTsKQEAgLTE2NCwxMiArMTc0LDEyIEBAIHZvaWQgVGhyZWFkZWRD
b21wb3NpdG9yOjpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50
U2l6ZSYgb2ZmCiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVWaWV3cG9ydCgpCiB7
Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0YXJ0VXBkYXRlVGltZXIoQ29tcG9zaXRpbmdS
dW5Mb29wOjpXYWl0VW50aWxOZXh0RnJhbWUpOworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5z
Y2hlZHVsZVVwZGF0ZSgpOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2NoZWR1bGVE
aXNwbGF5SW1tZWRpYXRlbHkoKQogewotICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdGFydFVw
ZGF0ZVRpbWVyKENvbXBvc2l0aW5nUnVuTG9vcDo6SW1tZWRpYXRlKTsKKyAgICBtX2NvbXBvc2l0
aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0
b3I6OmZvcmNlUmVwYWludCgpCkBAIC0yMDUsMTggKzIxNSw0OCBAQCB2b2lkIFRocmVhZGVkQ29t
cG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdM
Q29udGV4dCh2aWV3cG9ydFRyYW5zZm9ybSwgMSwgY2xpcFJlY3QsIENvbG9yOjp0cmFuc3BhcmVu
dCwgIW1fZHJhd3NCYWNrZ3JvdW5kLCBtX3Njcm9sbFBvc2l0aW9uLCBtX3BhaW50RmxhZ3MpOwog
CiAgICAgbV9jb250ZXh0LT5zd2FwQnVmZmVycygpOworCisgICAgLy8gRm9yIHRoZSBHVEsrIHBv
cnQsIHtlZ2wsZ2x4fVN3YXBCdWZmZXJzKCkgZG9lcyB0aGUgZnJhbWUgc3luYy4KKyAgICBzY2Vu
ZVVwZGF0ZUZpbmlzaGVkKCk7Cit9CisKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzY2VuZVVw
ZGF0ZUZpbmlzaGVkKCkKK3sKKyAgICBib29sIHNob3VsZERpc3BhdGNoRGlzcGxheVJlZnJlc2hD
YWxsYmFjayA9IG1fY2xpZW50UmVuZGVyc05leHRGcmFtZS5sb2FkKCkKKyAgICAgICAgfHwgbV9k
aXNwbGF5UmVmcmVzaE1vbml0b3ItPnJlcXVpcmVzRGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOwor
ICAgIGJvb2wgc2hvdWxkQ29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50ID0gbV9j
b29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQubG9hZCgpOworCisgICAgaWYgKHNo
b3VsZERpc3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjaykKKyAgICAgICAgbV9kaXNwbGF5UmVm
cmVzaE1vbml0b3ItPmRpc3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOworICAgIGlmICgh
c2hvdWxkQ29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50KQorICAgICAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+dXBkYXRlQ29tcGxldGVkKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRD
b21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZSYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSZWZQdHI8VGhy
ZWFkZWRDb21wb3NpdG9yPiBwcm90ZWN0b3IodGhpcyk7CiAgICAgUmVmUHRyPENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZT4gc2NlbmUgPSBtX3NjZW5lOwotICAgIG1fc2NlbmUtPmFwcGVuZFVwZGF0
ZShbc2NlbmUsIHN0YXRlXSB7CisgICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKFtwcm90ZWN0b3Is
IHNjZW5lLCBzdGF0ZV0gewogICAgICAgICBzY2VuZS0+Y29tbWl0U2NlbmVTdGF0ZShzdGF0ZSk7
CisKKyAgICAgICAgcHJvdGVjdG9yLT5tX2NsaWVudFJlbmRlcnNOZXh0RnJhbWUuc3RvcmUodHJ1
ZSk7CisgICAgICAgIGJvb2wgY29vcmRpbmF0ZVVwZGF0ZSA9IHN0ZDo6YW55X29mKHN0YXRlLmxh
eWVyc1RvVXBkYXRlLmJlZ2luKCksIHN0YXRlLmxheWVyc1RvVXBkYXRlLmVuZCgpLAorICAgICAg
ICAgICAgW10oY29uc3Qgc3RkOjpwYWlyPENvb3JkaW5hdGVkTGF5ZXJJRCwgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyU3RhdGU+JiBpdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpdC5zZWNv
bmQucGxhdGZvcm1MYXllckNoYW5nZWQgfHwgaXQuc2Vjb25kLnBsYXRmb3JtTGF5ZXJVcGRhdGVk
OworICAgICAgICAgICAgfSk7CisgICAgICAgIHByb3RlY3Rvci0+bV9jb29yZGluYXRlVXBkYXRl
Q29tcGxldGlvbldpdGhDbGllbnQuc3RvcmUoY29vcmRpbmF0ZVVwZGF0ZSk7CiAgICAgfSk7CiAK
ICAgICBzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSgpOwogfQogCisjaWYgVVNFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlRGlzcGxheVJlZnJlc2hN
b25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKQoreworICAgIHJldHVybiBtX2Rpc3BsYXlSZWZyZXNo
TW9uaXRvcjsKK30KKyNlbmRpZgorCiB9CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5oCmluZGV4IGJhYzgxYTM5NjIyLi5kM2ZhNmYwMmY3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuaApAQCAtMzMsMTAgKzMzLDE1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1
cmVNYXBwZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
RElTUExBWV9NT05JVE9SKQorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9y
Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NTdGF0ZTsKIH0KQEAgLTQ1LDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZUNsaWVudDsKK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKIAogY2xhc3MgVGhyZWFk
ZWRDb21wb3NpdG9yIDogcHVibGljIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCwgcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZGVkQ29tcG9zaXRvcj4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRocmVhZGVkQ29tcG9zaXRvcik7CkBAIC03Myw2ICs3OSwxMCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGZvcmNlUmVwYWludCgpOwogCisjaWYgVVNFKFJFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5SUQpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgVGhyZWFkZWRDb21wb3Np
dG9yKENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBmbG9hdCBzY2FsZUZhY3Rvciwg
dWludDY0X3QgbmF0aXZlU3VyZmFjZUhhbmRsZSwgU2hvdWxkRG9GcmFtZVN5bmMsIFdlYkNvcmU6
OlRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MpOwogCkBAIC04Miw2ICs5Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgb2Zmc2V0KSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVuZGVyTGF5ZXJU
cmVlKCk7CisgICAgdm9pZCBzY2VuZVVwZGF0ZUZpbmlzaGVkKCk7CiAgICAgdm9pZCBzY2hlZHVs
ZURpc3BsYXlJbW1lZGlhdGVseSgpOwogCiAgICAgdm9pZCBjcmVhdGVHTENvbnRleHQoKTsKQEAg
LTEwMCw2ICsxMTEsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVlZHNSZXNpemUgeyBmYWxz
ZSB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbXBvc2l0aW5nUnVuTG9vcD4gbV9jb21wb3Np
dGluZ1J1bkxvb3A7CisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SKQorICAgIGZyaWVuZCBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3I7CisgICAgUmVm
UHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbV9kaXNwbGF5UmVmcmVzaE1vbml0b3I7CisjZW5k
aWYKKworICAgIEF0b21pYzxib29sPiBtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWU7CisgICAgQXRv
bWljPGJvb2w+IG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMjgx
MzUzYjhhZTMuLjAyOTdjNWE2OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0y
NDcsNiArMjQ3LDEzIEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNl
dElzRGlzY2FyZGFibGUoYm9vbCBkaXNjYXJkYWJsZSkKICAgICAgICAgZGlkQ2hhbmdlVmlld3Bv
cnQoKTsKIH0KIAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklU
T1IpCitSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICByZXR1cm4gbV9jb21wb3NpdG9yLT5jcmVhdGVE
aXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IGNhOGFlYWM2M2MwLi5mNTdlNmE4OTYyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oCkBAIC0xMDEsNiArMTAxLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRGbHVzaFJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIGNvbW1pdFNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJikgb3ZlcnJpZGU7CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
RElTUExBWV9NT05JVE9SKQorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheUlEKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgZW51bSBjbGFzcyBEaXNjYXJkYWJs
ZVN5bmNBY3Rpb25zIHsKICAgICAgICAgVXBkYXRlU2l6ZSA9IDEgPDwgMSwKICAgICAgICAgVXBk
YXRlVmlld3BvcnQgPSAxIDw8IDIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA1MWFmNTgxYzY1Yy4uNzZjNTI3ZWI3MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3Qu
aApAQCAtMjksNiArMjksOCBAQAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykgfHwgVVNF
KFRFWFRVUkVfTUFQUEVSKQogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC05Niw2ICs5OCwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpID0gMDsKICNlbmRpZgogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BM
QVlfTU9OSVRPUikKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXlJRCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogdmlld092ZXJsYXlS
b290TGF5ZXIpIHsgbV92aWV3T3ZlcmxheVJvb3RMYXllciA9IHZpZXdPdmVybGF5Um9vdExheWVy
OyB9CiAKIHByb3RlY3RlZDoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306666</attachid>
            <date>2017-04-10 00:19:01 -0700</date>
            <delta_ts>2017-04-10 01:48:38 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-170599-20170410091900.patch</filename>
            <type>text/plain</type>
            <size>37829</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUxZGE3ZmRhYWZiZWNhOTAzYmNjMGRi
NzdiYTVlYWMzZjE5NWI2NTAuLmJlNmE4ODc3NzRmOWZmYTcxODc2N2YzMDUxZDA4YjhhM2Q1NWM1
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDQtMDkgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSB0aGUgRGlzcGxheVJlZnJlc2hN
b25pdG9yIGZhY2lsaXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVuYWJsZSBVU0VfUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SCisgICAgICAgIGZvciB0aGUgR1RLKyBwb3J0LgorCiAyMDE3
LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAg
IFtXVEZdIEFubm90YXRlIFNlY29uZHMnIG1lbWJlciBmdW5jdGlvbnMgYW5kIG9wZXJhdG9ycyB3
aXRoIGNvbnN0ZXhwcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY1NjZhOTBjMzIxMmRjMzMwMjJhNjBlYmVlNjQ1
NTgwNTU0NmRkYmMuLmYwMWY1NjE2NmYzMzNhOWM2NjJjMzYzY2NhMDMyMjAyZmY5ODA2ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wNC0wOSAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIHRoZSBEaXNwbGF5UmVmcmVz
aE1vbml0b3IgZmFjaWxpdGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwNTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG1pc3NpbmcgZmlsZXMgdG8gdGhlIGJ1
aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHA6IEJ1aWxkIGZpeGVzLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9y
OjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlUGxh
dGZvcm1MYXllcik6IE1hcmsgdGhlCisgICAgICAgIHBsYXRmb3JtIGxheWVyIGFzIHVwZGF0ZWQg
aW4gdGhlIGxheWVyJ3MgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUu
aDoKKwogMjAxNy0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBbV1RGXSBBbm5vdGF0ZSBTZWNvbmRzJyBtZW1iZXIgZnVuY3Rpb25zIGFuZCBv
cGVyYXRvcnMgd2l0aCBjb25zdGV4cHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMmYwZTUwZTkwODk3OTY0Njdi
YjYzYTY4ZjM0ZWQ5ZWQ0ZjI3NDk2Li42M2E2ZGM2ZGMwNTNhMjYzMDY4MDk0MTc3ZjkwMzI5ZjIx
NmE4ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTctMDQtMDkgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSB0aGUgRGlz
cGxheVJlZnJlc2hNb25pdG9yIGZhY2lsaXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRocmVhZGVkQ29tcG9zaXRvciBnYWlucyBhIERpc3BsYXlS
ZWZyZXNoTW9uaXRvciBtZW1iZXIgdGhhdCBpdCBjYW4gdXNlCisgICAgICAgIHRvIGJldHRlciBj
b29yZGluYXRlIGRpc3BsYXkgcmVmcmVzaCBjYWxsYmFja3Mgb24gdGhlIG1haW4gdGhyZWFkLiBJ
bnN0ZWFkCisgICAgICAgIG9mIHJvdWdobHkgZXN0aW1hdGluZyB2c3luYy1hbGlnbmVkIHVwZGF0
ZXMsIHRoZSBUaHJlYWRlZENvbXBvc2l0b3Igbm93CisgICAgICAgIHdhaXRzIGZvciB0aGUgc3dh
cCBidWZmZXIgY2FsbCB0byBjb21wbGV0ZSBhbmQgdGhlbiBkZWNpZGVzIGhvdyB0byBwcm9jZWVk
CisgICAgICAgIGJhc2VkIG9uIHN0YXRlIGNoYW5nZXMgdGhhdCBtaWdodCBoYXZlIG9jY3VycmVk
IGR1cmluZyBjb21wb3NpdGlvbiBvcgorICAgICAgICB3aGV0aGVyIHRoZXJlJ3MgYW55IGRpc3Bs
YXkgcmVmcmVzaCBjYWxsYmFja3MgdGhhdCByZXF1aXJlIGhhbmRsaW5nIG9uIHRoZQorICAgICAg
ICBtYWluIHRocmVhZC4KKworICAgICAgICBDb21wb3NpdGluZ1J1bkxvb3Agbm93IHN0b3JlcyBp
dHMgc3RhdGUgaW4gYW4gYXRvbWljIHZhcmlhYmxlIHRoYXQncyB0aGVuCisgICAgICAgIGluc3Bl
Y3RlZCB3aGVuZXZlciBhIG5ldyB1cGRhdGUgaXMgc2NoZWR1bGVkIG9yIGNvbXBsZXRlZC4gV2hl
biBzY2hlZHVsZWQsCisgICAgICAgIGlmIHRoZXJlJ3Mgbm8gdXBkYXRlIGluIHByb2dyZXNzLCBh
IG5ldyB1cGRhdGUgaXMgcmVxdWVzdGVkIHRocm91Z2ggdGhlCisgICAgICAgIHRpbWVyLiBJZiB0
aGVyZSdzIGFscmVhZHkgYW4gdXBkYXRlIGluIHByb2dyZXNzLCBhIG5ldyB1cGRhdGUgaXMgbWFy
a2VkCisgICAgICAgIGFzIHBlbmRpbmcgYWZ0ZXIgdGhlIGN1cnJlbnQgb25lIGNvbXBsZXRlcy4g
SW4gdGhhdCBjYXNlLCB3aGVuIHRoZSB1cGRhdGUKKyAgICAgICAgaXMgY29tcGxldGVkLCBhIG5l
dyB1cGRhdGUgaXMgcmVxdWVzdGVkIHRocm91Z2ggdGhlIHRpbWVyLgorCisgICAgICAgIFRocmVh
ZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yIGlzIHVzZWQgdG8gY29vcmRpbmF0ZSB1cGRhdGVzIGJl
dHdlZW4gdGhlCisgICAgICAgIG1haW4gYW5kIHRoZSBjb21wb3NpdGlvbiB0aHJlYWQgd2hlbmV2
ZXIgdGhlIENvb3JkaW5hdGVkR3JhcGhpY3Mgc3RhdGUKKyAgICAgICAgZGVtYW5kcyBpdCwgb3Ig
d2hlbmV2ZXIgdGhlcmUgYXJlIGNsaWVudHMgcmVnaXN0ZXJlZCB0byB0aGF0IG1vbml0b3IgdGhh
dAorICAgICAgICByZXF1aXJlIGFuIHVwZGF0ZSAoZS5nLiBhIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSgpIGNhbGxiYWNrKS4gQWZ0ZXIgdGhlCisgICAgICAgIHVwZGF0ZSBvbiB0aGUgY29tcG9zaXRp
b24gdGhyZWFkIGlzIGZpbmlzaGVkLCBhbmQgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRvcgorICAg
ICAgICBvYmplY3QgcmVxdWlyZXMgYW4gdXBkYXRlLCBhIGNhbGxiYWNrIGF0IHRoZSBzYW1lIHBy
aW9yaXR5IGFzIHRoZSBsYXllcgorICAgICAgICBmbHVzaCB0aW1lciBpcyBzY2hlZHVsZWQgb24g
dGhlIG1haW4gdGhyZWFkLiBJbiB0aGF0IGNhbGxiYWNrIHdlIGhhbmRsZQorICAgICAgICBhbnkg
Y2xpZW50cyByZWdpc3RlcmVkIGZvciB0aGlzIERpc3BsYXlSZWZyZXNoTW9uaXRvciBiZWZvcmUg
cHJvY2VlZGluZworICAgICAgICB0byBoYW5kbGUgYW55IGNoYW5nZXMgdG8gdGhlIENvb3JkaW5h
dGVkR3JhcGhpY3Mgc2NlbmUuIEluIGNhc2UgdGhlCisgICAgICAgIERpc3BsYXlSZWZyZXNoTW9u
aXRvciBjbGllbnRzIG9yIHRoZSBsYXllciBmbHVzaGVzIGFscmVhZHkgcXVldWVkIHVwCisgICAg
ICAgIGFueSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSwgd2UgaW1tZWRpYXRlbHkgYXNrIHRoZSBUaHJl
YWRlZENvbXBvc2l0b3IgZm9yCisgICAgICAgIGFuIHVwZGF0ZS4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6Om9uTmV3QnVmZmVyQXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRp
bmdSdW5Mb29wOjpDb21wb3NpdGluZ1J1bkxvb3ApOgorICAgICAgICAoV2ViS2l0OjpDb21wb3Np
dGluZ1J1bkxvb3A6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5M
b29wOjpzY2hlZHVsZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9v
cDo6c3RvcFVwZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnVw
ZGF0ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBk
YXRlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6aXND
dXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzdGFydFVwZGF0
ZVRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpz
dG9wVXBkYXRlVGltZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaDoKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1f
ZGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3Np
dG9yOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpz
ZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSk6CisgICAgICAgIChX
ZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKToKKyAgICAgICAgKFdl
YktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpzY2VuZVVwZGF0ZUZpbmlzaGVkKToKKyAgICAgICAg
KFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3Ip
OgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6
OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5UmVmcmVz
aE1vbml0b3I6OnJlcXVpcmVzRGlzcGxheVJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjppbnZhbGlkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVzaENh
bGxiYWNrKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L0NvbXBvc2l0aW5nUnVuTG9vcC5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2Nl
bGVyYXRlZERyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0
b3IpOgorCiAyMDE3LTA0LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCBUaW1lcjo6c3RhcnRSZXBlYXRpbmcoKSBvdmVybG9hZCB0YWtpbmcgYSBkb3Vi
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCmluZGV4IGRmMGQ3ZmZmMTU4MTgzMjYzMjYwNTQyMzYxMTM4ZDg0OTVmMDIw
MzkuLjI0NzJiNmY0MmNlMTY3ZmQ3MzM4N2ZiMjE0M2FjYjc0NzE2Nzk3NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aApAQCAtMTA0OSw3ICsxMDQ5LDcgQEAKICNkZWZpbmUgVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX1RJTUVSIDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX0RJU1BMQVlfTU9OSVRPUiAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBl
MDZjODBkYjgxYmUxN2VmYTRmMmQ5MWZhOWViYmI2ZWZjZGU3MWU0Li40MDU4YjJjYmMwNDUzMWEz
ZDFhNGEwMzQxNGYwMjU1MjY1ODQ2MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjI1Myw3
ICsyMjUzLDkgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwCmluZGV4IDJjYmVmY2M5NTBlNzlhNTNjMmY1ODQwM2Y5NGIxNzRmZmNmYmEwMGQuLjc3
ODBlYThmZGIzYWYzMGU0MDc4OGZlMmM0ODEzZWY4NDBlNzcyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIkRp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oIgotI2Vsc2UKKyNlbGlmIFBMQVRGT1JNKE1BQykKICNp
bmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCIKICNlbmRpZgogCkBAIC00Nyw2ICs0
Nyw3IEBAIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IERpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6Y3JlYXRlRGVmYXVsdERpc3BsYXlSZWZyZXNoCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHJl
dHVybiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OmNyZWF0ZShkaXNwbGF5SUQpOwogI2VuZGlm
CisgICAgVU5VU0VEX1BBUkFNKGRpc3BsYXlJRCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKaW5kZXggOGNiZDJiZTNjODQ3ZDg5ZGM2NGIzMWE2MmFlNTIwZGNiOGEwZGU3ZC4uNGZk
ZmZiMDM2N2E2MzZkOTEwMGE4ODY3OGZmZTlhNTIyM2I2ZDJjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTcxNCw2
ICs3MTQsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlUGxhdGZvcm1M
YXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2hvdWxkVXBkYXRlUGxhdGZvcm1MYXll
ciA9IGZhbHNlOworICAgIG1fbGF5ZXJTdGF0ZS5wbGF0Zm9ybUxheWVyVXBkYXRlZCA9IHRydWU7
CiAgICAgaWYgKG1fcGxhdGZvcm1MYXllcikKICAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zd2Fw
QnVmZmVyc0lmTmVlZGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAppbmRleCBjODEwNTMwYjVlN2ZmZjY1MzRkMjUy
YzM0NjkwMWQ1YTNkZmE1ZjkzLi5lZDRmMzRiYTAzY2E1Yzk0ZTFjYjY4YjMxNTRiYTAzYTk0MGNm
NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZS5oCkBAIC04Niw2ICs4Niw3IEBAIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJTdGF0ZSB7CiAgICAgICAgICAgICBib29sIGNoaWxkcmVuQ2hhbmdlZDogMTsKICAgICAgICAg
ICAgIGJvb2wgcmVwYWludENvdW50Q2hhbmdlZCA6IDE7CiAgICAgICAgICAgICBib29sIHBsYXRm
b3JtTGF5ZXJDaGFuZ2VkOiAxOworICAgICAgICAgICAgYm9vbCBwbGF0Zm9ybUxheWVyVXBkYXRl
ZDogMTsKICAgICAgICAgICAgIGJvb2wgcGxhdGZvcm1MYXllclNob3VsZFN3YXBCdWZmZXJzOiAx
OwogICAgICAgICAgICAgYm9vbCBpc1Njcm9sbGFibGVDaGFuZ2VkOiAxOwogICAgICAgICAgICAg
Ym9vbCBjb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2VkOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA0YWEyMDZhMDNhOGVlOTcyNjZhZTE3YTg1MzUzMjc5MDlhOTJiNmY0Li5mZjI1
MGFlMWQ0NTc3ZTk1YTE5Zjg3YzM5YzIwZDZkNzQ2YjUwMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtNjUsNiArNjUsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAog
ICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3Np
dGluZ1J1bkxvb3AuY3BwCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UuY3BwCisgICAgU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJl
c2hNb25pdG9yLmNwcAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCiAKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBiOTRmYWVhMmNjNGEyYWYxYzQ2OTRkZWJiZTE5
Yjk5NTkwOTI4OTNiLi44OTMyNzRiNTdmNjhiMGI1ZDIxMjNhNjIzMzEyNmE2MWYzY2M2ODIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTEyMSw4ICsx
MjEsOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENv
bnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaQogICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5k
Q2xpcCgpOwogICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kUGFpbnRpbmcoKTsKIAotICAgIGlmIChj
dXJyZW50Um9vdExheWVyLT5kZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygp
KQotICAgICAgICB1cGRhdGVWaWV3cG9ydCgpOworICAgIGlmIChjdXJyZW50Um9vdExheWVyLT5k
ZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpICYmIG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+dXBkYXRlVmlld3BvcnQoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnVwZGF0ZVZpZXdwb3J0KCkKQEAgLTE2OSw3ICsxNjksOCBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJl
TWFwcGVyTGF5ZXIqIGxheQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWlsYWJsZSgpCiB7
Ci0gICAgdXBkYXRlVmlld3BvcnQoKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT51cGRhdGVWaWV3cG9ydCgpOwogfQogI2VuZGlmCiAKQEAgLTU0Nyw5ICs1NDgsNiBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2NlbmVTdGF0ZShjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUmCiAKICAgICBjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3Bl
cmF0aW9ucygpOwogICAgIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVlZGVkKCk7Ci0K
LSAgICAvLyBUaGUgcGVuZGluZyB0aWxlcyBzdGF0ZSBpcyBvbiBpdHMgd2F5IGZvciB0aGUgc2Ny
ZWVuLCB0ZWxsIHRoZSB3ZWIgcHJvY2VzcyB0byByZW5kZXIgdGhlIG5leHQgb25lLgotICAgIHJl
bmRlck5leHRGcmFtZSgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVu
ZGVyTmV4dEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5k
ZXggMTI4YjdiZTc2ZTgwM2RkZWZmNGZjNTkxNDI4MTUzZGEyMDVkYWJlYS4uOTllYTdkYTgxY2Jh
M2MyYzYwYzExZjJkYWFiMjNhZmYwYTc0M2JiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmgKQEAgLTgwLDYgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWN0
aXZlKGJvb2wpOwogCiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOworICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAK
ICAgICB2b2lkIHNldFZpZXdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNv
bG9yKSB7IG1fdmlld0JhY2tncm91bmRDb2xvciA9IGNvbG9yOyB9CiAgICAgV2ViQ29yZTo6Q29s
b3Igdmlld0JhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0JhY2tncm91bmRD
b2xvcjsgfQpAQCAtMTIzLDcgKzEyNCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE9u
TWFpblRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGlzcGF0Y2hPbkNsaWVu
dFJ1bkxvb3AoRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0KCk7
Ci0gICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKIAogICAgIHZvaWQgY3JlYXRlTGF5ZXIoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIGRlbGV0ZUxheWVyKFdlYkNvcmU6
OkNvb3JkaW5hdGVkTGF5ZXJJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29w
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCmluZGV4IGFhZGQ2YWJiMjZhNTZmYTQ0
NzZiYWE1N2ZkMWZmOTE3YzNkYzYxMjAuLmQxOTEyNDVjMmYyZDI4ZDU1MzA5OWVjNjlmYjQxYmJi
NmM0NWQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC0xMTAsOCArMTEwLDEzIEBAIHByaXZhdGU6CiAK
IENvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4mJiB1cGRhdGVGdW5jdGlvbikKICAgICA6IG1fdXBkYXRlVGltZXIoV29ya1F1ZXVlUG9v
bDo6c2luZ2xldG9uKCkucnVuTG9vcCh0aGlzKSwgdGhpcywgJkNvbXBvc2l0aW5nUnVuTG9vcDo6
dXBkYXRlVGltZXJGaXJlZCkKKyNpZm5kZWYgTkRFQlVHCisgICAgLCBtX3J1bkxvb3AoV29ya1F1
ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVuTG9vcCh0aGlzKSkKKyNlbmRpZgogICAgICwgbV91cGRh
dGVGdW5jdGlvbihXVEZNb3ZlKHVwZGF0ZUZ1bmN0aW9uKSkKIHsKKyAgICBtX3VwZGF0ZVN0YXRl
LnN0b3JlKFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQpOworCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkKICAgICBtX3VwZGF0ZVRpbWVyLnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6
Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVUaW1lcik7CiAjZW5kaWYKQEAgLTE0NCwzMCArMTQ5LDUz
IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpwZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKICAgICBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbi53YWl0KG1fZGlz
cGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXgpOwogfQogCi12b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6
c3RhcnRVcGRhdGVUaW1lcihVcGRhdGVUaW1pbmcgdGltaW5nKQorYm9vbCBDb21wb3NpdGluZ1J1
bkxvb3A6OmlzQWN0aXZlKCkKIHsKLSAgICBpZiAobV91cGRhdGVUaW1lci5pc0FjdGl2ZSgpKQot
ICAgICAgICByZXR1cm47CisgICAgcmV0dXJuIG1fdXBkYXRlU3RhdGUubG9hZCgpICE9IFVwZGF0
ZVN0YXRlOjpDb21wbGV0ZWQ7Cit9CiAKLSAgICBjb25zdCBzdGF0aWMgZG91YmxlIHRhcmdldEZQ
UyA9IDYwOwotICAgIGRvdWJsZSBuZXh0VXBkYXRlVGltZSA9IDA7Ci0gICAgaWYgKHRpbWluZyA9
PSBXYWl0VW50aWxOZXh0RnJhbWUpCi0gICAgICAgIG5leHRVcGRhdGVUaW1lID0gc3RkOjptYXgo
KDEgLyB0YXJnZXRGUFMpIC0gKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9sYXN0
VXBkYXRlVGltZSksIDAuMCk7Cit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVVcGRh
dGUoKQoreworICAgIGlmIChtX3VwZGF0ZVN0YXRlLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRh
dGVTdGF0ZTo6Q29tcGxldGVkLCBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykgPT0gVXBkYXRlU3Rh
dGU6OkNvbXBsZXRlZCkgeworICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90
KG5leHRVcGRhdGVUaW1lKTsKKyAgICBpZiAobV91cGRhdGVTdGF0ZS5jb21wYXJlRXhjaGFuZ2VT
dHJvbmcoVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MsIFVwZGF0ZVN0YXRlOjpQZW5kaW5nQWZ0ZXJD
b21wbGV0aW9uKSA9PSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuOwog
fQogCi12b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RvcFVwZGF0ZVRpbWVyKCkKK3ZvaWQgQ29t
cG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlcygpCiB7CiAgICAgbV91cGRhdGVUaW1lci5zdG9w
KCk7CisgICAgbV91cGRhdGVTdGF0ZS5zdG9yZShVcGRhdGVTdGF0ZTo6Q29tcGxldGVkKTsKK30K
Kwordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZUNvbXBsZXRlZCgpCit7CisgICAgaWYg
KG1fdXBkYXRlU3RhdGUuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRlOjpJblByb2dy
ZXNzLCBVcGRhdGVTdGF0ZTo6Q29tcGxldGVkKSA9PSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdXBkYXRlU3RhdGUuY29tcGFyZUV4Y2hhbmdl
U3Ryb25nKFVwZGF0ZVN0YXRlOjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uLCBVcGRhdGVTdGF0ZTo6
SW5Qcm9ncmVzcykgPT0gVXBkYXRlU3RhdGU6OlBlbmRpbmdBZnRlckNvbXBsZXRpb24pIHsKKyAg
ICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBDb21wb3NpdGluZ1J1
bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQoKQogewogICAgIG1fdXBkYXRlRnVuY3Rpb24oKTsKLSAg
ICBtX2xhc3RVcGRhdGVUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiB9CiAK
KyNpZm5kZWYgTkRFQlVHCitib29sIENvbXBvc2l0aW5nUnVuTG9vcDo6aXNDdXJyZW50KCkKK3sK
KyAgICByZXR1cm4gJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9ydW5Mb29wOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4IDUyYjVkN2QxMDAxMTFjNGNiOGQzMWMwYzE2
ZTJiZDQwZTNkODY4NDYuLjZiYzlkMjIwZTE5MmZmMzY1YzBmMTEyNzI1ODU0MTY5OTAxNDk3ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRp
bmdSdW5Mb29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDU19USFJFQURFRCkKIAorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3Rm
L0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CkBAIC00MSwyOSArNDIsMzkgQEAgY2xhc3MgQ29tcG9zaXRpbmdSdW5Mb29w
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdGluZ1J1bkxvb3ApOwogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGVudW0gVXBkYXRlVGltaW5nIHsK
LSAgICAgICAgSW1tZWRpYXRlLAotICAgICAgICBXYWl0VW50aWxOZXh0RnJhbWUsCi0gICAgfTsK
LQogICAgIENvbXBvc2l0aW5nUnVuTG9vcChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogICAg
IH5Db21wb3NpdGluZ1J1bkxvb3AoKTsKIAogICAgIHZvaWQgcGVyZm9ybVRhc2soRnVuY3Rpb248
dm9pZCAoKT4mJik7CiAgICAgdm9pZCBwZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9pZCAoKT4m
Jik7CiAKLSAgICB2b2lkIHN0YXJ0VXBkYXRlVGltZXIoVXBkYXRlVGltaW5nID0gSW1tZWRpYXRl
KTsKLSAgICB2b2lkIHN0b3BVcGRhdGVUaW1lcigpOworICAgIGJvb2wgaXNBY3RpdmUoKTsKKyAg
ICB2b2lkIHNjaGVkdWxlVXBkYXRlKCk7CisgICAgdm9pZCBzdG9wVXBkYXRlcygpOworCisgICAg
dm9pZCB1cGRhdGVDb21wbGV0ZWQoKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBib29sIGlzQ3Vy
cmVudCgpOworI2VuZGlmCiAKIHByaXZhdGU6CisgICAgZW51bSBjbGFzcyBVcGRhdGVTdGF0ZSB7
CisgICAgICAgIENvbXBsZXRlZCwKKyAgICAgICAgSW5Qcm9ncmVzcywKKyAgICAgICAgUGVuZGlu
Z0FmdGVyQ29tcGxldGlvbiwKKyAgICB9OworCiAgICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKCk7
CiAKICAgICBSdW5Mb29wOjpUaW1lcjxDb21wb3NpdGluZ1J1bkxvb3A+IG1fdXBkYXRlVGltZXI7
CisjaWZuZGVmIE5ERUJVRworICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsKKyNlbmRpZgogICAgIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKKyAgICBBdG9taWM8VXBkYXRl
U3RhdGU+IG1fdXBkYXRlU3RhdGU7CiAgICAgTG9jayBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11
dGV4OwogICAgIENvbmRpdGlvbiBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbjsKLQotICAgIGRvdWJs
ZSBtX2xhc3RVcGRhdGVUaW1lIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuY3BwCmluZGV4IGM3YWQ4MzdjODMzMjk2NzM1NGNhNzU1Nzg0MjM0ODNlMjdiMzY3ZjMu
LmU4ZWUxYThiMmI0ODc1ZWVkMGRhOTIxNGU4OTQxYWEwMWRiMzUyYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVE
KQogCiAjaW5jbHVkZSAiQ29tcG9zaXRpbmdSdW5Mb29wLmgiCisjaW5jbHVkZSAiVGhyZWFkZWRE
aXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxh
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIApAQCAtNTYs
NyArNTcsMTMgQEAgVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50
JiBjbGllbnQsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2kKICAgICAsIG1fcGFpbnRGbGFncyhw
YWludEZsYWdzKQogICAgICwgbV9uZWVkc1Jlc2l6ZSghdmlld3BvcnRTaXplLmlzRW1wdHkoKSkK
ICAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdS
dW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUoKTsgfSkpCisjaWYgVVNFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICAsIG1fZGlzcGxheVJlZnJlc2hN
b25pdG9yKGFkb3B0UmVmKG5ldyBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcigqdGhpcykp
KQorI2VuZGlmCiB7CisgICAgbV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLnN0b3JlKGZhbHNlKTsK
KyAgICBtX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5zdG9yZShmYWxzZSk7
CisKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgbV9zY2VuZSA9IGFkb3B0UmVm
KG5ldyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUodGhpcykpOwogICAgICAgICBpZiAobV9uYXRp
dmVTdXJmYWNlSGFuZGxlKSB7CkBAIC04OSwxOCArOTYsMjEgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OmNyZWF0ZUdMQ29udGV4dCgpCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6aW52YWxp
ZGF0ZSgpCiB7CiAgICAgbV9zY2VuZS0+ZGV0YWNoKCk7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxv
b3AtPnN0b3BVcGRhdGVUaW1lcigpOworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdG9wVXBk
YXRlcygpOwogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBtX3NjZW5lLT5wdXJn
ZUdMUmVzb3VyY2VzKCk7CiAgICAgICAgIG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgIG1f
c2NlbmUgPSBudWxscHRyOwogICAgIH0pOworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RV9ESVNQTEFZX01PTklUT1IpCisgICAgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3ItPmludmFsaWRh
dGUoKTsKKyNlbmRpZgogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wID0gbnVsbHB0cjsKIH0KIAog
dm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3Np
dGluZyh1aW50NjRfdCBoYW5kbGUpCiB7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0b3BV
cGRhdGVUaW1lcigpOworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdG9wVXBkYXRlcygpOwog
ICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaGFuZGxlXSB7CiAgICAgICAgIC8vIEEgbmV3IG5hdGl2
ZSBoYW5kbGUgY2FuJ3QgYmUgc2V0IHdpdGhvdXQgZGVzdHJveWluZyB0aGUgcHJldmlvdXMgb25l
IGZpcnN0IGlmIGFueS4KICAgICAgICAgQVNTRVJUKCEhaGFuZGxlIF4gISFtX25hdGl2ZVN1cmZh
Y2VIYW5kbGUpOwpAQCAtMTY0LDEyICsxNzQsMTIgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6
OmNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmYK
IAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0KCkKIHsKLSAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+c3RhcnRVcGRhdGVUaW1lcihDb21wb3NpdGluZ1J1bkxvb3A6Oldh
aXRVbnRpbE5leHRGcmFtZSk7CisgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBk
YXRlKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzY2hlZHVsZURpc3BsYXlJbW1l
ZGlhdGVseSgpCiB7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0YXJ0VXBkYXRlVGltZXIo
Q29tcG9zaXRpbmdSdW5Mb29wOjpJbW1lZGlhdGUpOworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29w
LT5zY2hlZHVsZVVwZGF0ZSgpOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Zm9yY2VS
ZXBhaW50KCkKQEAgLTIwNSwxOCArMjE1LDQ4IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpy
ZW5kZXJMYXllclRyZWUoKQogICAgIG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZp
ZXdwb3J0VHJhbnNmb3JtLCAxLCBjbGlwUmVjdCwgQ29sb3I6OnRyYW5zcGFyZW50LCAhbV9kcmF3
c0JhY2tncm91bmQsIG1fc2Nyb2xsUG9zaXRpb24sIG1fcGFpbnRGbGFncyk7CiAKICAgICBtX2Nv
bnRleHQtPnN3YXBCdWZmZXJzKCk7CisKKyAgICAvLyBGb3IgdGhlIEdUSysgcG9ydCwge2VnbCxn
bHh9U3dhcEJ1ZmZlcnMoKSBkb2VzIHRoZSBmcmFtZSBzeW5jLgorICAgIHNjZW5lVXBkYXRlRmlu
aXNoZWQoKTsKK30KKwordm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNjZW5lVXBkYXRlRmluaXNo
ZWQoKQoreworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrID0g
bV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLmxvYWQoKQorICAgICAgICB8fCBtX2Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci0+cmVxdWlyZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CisgICAgYm9vbCBz
aG91bGRDb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQgPSBtX2Nvb3JkaW5hdGVV
cGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5sb2FkKCk7CisKKyAgICBpZiAoc2hvdWxkRGlzcGF0
Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKQorICAgICAgICBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci0+ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CisgICAgaWYgKCFzaG91bGRDb29y
ZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQpCisgICAgICAgIG1fY29tcG9zaXRpbmdS
dW5Mb29wLT51cGRhdGVDb21wbGV0ZWQoKTsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6
OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJlZlB0cjxUaHJlYWRlZENvbXBv
c2l0b3I+IHByb3RlY3Rvcih0aGlzKTsKICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lPiBzY2VuZSA9IG1fc2NlbmU7Ci0gICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKFtzY2VuZSwg
c3RhdGVdIHsKKyAgICBtX3NjZW5lLT5hcHBlbmRVcGRhdGUoW3Byb3RlY3Rvciwgc2NlbmUsIHN0
YXRlXSB7CiAgICAgICAgIHNjZW5lLT5jb21taXRTY2VuZVN0YXRlKHN0YXRlKTsKKworICAgICAg
ICBwcm90ZWN0b3ItPm1fY2xpZW50UmVuZGVyc05leHRGcmFtZS5zdG9yZSh0cnVlKTsKKyAgICAg
ICAgYm9vbCBjb29yZGluYXRlVXBkYXRlID0gc3RkOjphbnlfb2Yoc3RhdGUubGF5ZXJzVG9VcGRh
dGUuYmVnaW4oKSwgc3RhdGUubGF5ZXJzVG9VcGRhdGUuZW5kKCksCisgICAgICAgICAgICBbXShj
b25zdCBzdGQ6OnBhaXI8Q29vcmRpbmF0ZWRMYXllcklELCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJTdGF0ZT4mIGl0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0LnNlY29uZC5wbGF0Zm9y
bUxheWVyQ2hhbmdlZCB8fCBpdC5zZWNvbmQucGxhdGZvcm1MYXllclVwZGF0ZWQ7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgcHJvdGVjdG9yLT5tX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9u
V2l0aENsaWVudC5zdG9yZShjb29yZGluYXRlVXBkYXRlKTsKICAgICB9KTsKIAogICAgIHNjaGVk
dWxlRGlzcGxheUltbWVkaWF0ZWx5KCk7CiB9CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SKQorUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxh
dGZvcm1EaXNwbGF5SUQpCit7CisgICAgcmV0dXJuIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yOwor
fQorI2VuZGlmCisKIH0KICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmgKaW5kZXggYmFjODFhMzk2MjIzODUzMTkwOWFkNDRkZWIwMTRmN2FmM2MzNzQ4
OS4uYmQzOTNmMTg2OTEwZTU5YjM2Yzg4MTE5NGEzYjdiOGJjMWI2ZTgwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaApA
QCAtMzMsMTAgKzMzLDE1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXIu
aD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SKQorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9yLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZTsKIH0KQEAgLTQ1LDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTsKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVu
dDsKK2NsYXNzIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOwogCiBjbGFzcyBUaHJlYWRl
ZENvbXBvc2l0b3IgOiBwdWJsaWMgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50LCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkZWRDb21wb3NpdG9yPiB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVGhyZWFkZWRDb21wb3NpdG9yKTsKQEAgLTczLDYgKzc5LDEwIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZm9yY2VSZXBhaW50KCk7CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBUaHJlYWRlZENvbXBvc2l0
b3IoQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0IHNjYWxlRmFjdG9yLCB1
aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlLCBTaG91bGREb0ZyYW1lU3luYywgV2ViQ29yZTo6
VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyk7CiAKQEAgLTgyLDYgKzkyLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBvZmZzZXQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZW5kZXJMYXllclRy
ZWUoKTsKKyAgICB2b2lkIHNjZW5lVXBkYXRlRmluaXNoZWQoKTsKICAgICB2b2lkIHNjaGVkdWxl
RGlzcGxheUltbWVkaWF0ZWx5KCk7CiAKICAgICB2b2lkIGNyZWF0ZUdMQ29udGV4dCgpOwpAQCAt
MTAwLDYgKzExMSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc1Jlc2l6ZSB7IGZhbHNl
IH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX2NvbXBvc2l0
aW5nUnVuTG9vcDsKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCisgICAgZnJpZW5kIGNsYXNzIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOwor
ICAgIFJlZlB0cjxUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbV9kaXNwbGF5UmVmcmVz
aE1vbml0b3I7CisjZW5kaWYKKworICAgIEF0b21pYzxib29sPiBtX2NsaWVudFJlbmRlcnNOZXh0
RnJhbWU7CisgICAgQXRvbWljPGJvb2w+IG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRo
Q2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJl
c2hNb25pdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDdlZjRmMmI4ZTM0MTNhNzEzZDQyNjQxYTE3OTBi
MTg5MDlhNzYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDU19USFJFQURFRCkgJiYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9O
SVRPUikKKworI2luY2x1ZGUgIkNvbXBvc2l0aW5nUnVuTG9vcC5oIgorI2luY2x1ZGUgIlRocmVh
ZGVkQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9S
dW5Mb29wU291cmNlUHJpb3JpdHkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1RocmVhZGVk
RGlzcGxheVJlZnJlc2hNb25pdG9yOjpUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJl
YWRlZENvbXBvc2l0b3ImIGNvbXBvc2l0b3IpCisgICAgOiBXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3IoMCkKKyAgICAsIG1fZGlzcGxheVJlZnJlc2hUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheVJlZnJlc2hDYWxs
YmFjaykKKyAgICAsIG1fY29tcG9zaXRvcigmY29tcG9zaXRvcikKK3sKKyNpZiBVU0UoR0xJQl9F
VkVOVF9MT09QKQorICAgIG1fZGlzcGxheVJlZnJlc2hUaW1lci5zZXRQcmlvcml0eShSdW5Mb29w
U291cmNlUHJpb3JpdHk6OkxheWVyRmx1c2hUaW1lcik7CisjZW5kaWYKK30KKworYm9vbCBUaHJl
YWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCit7Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobXV0ZXgoKSk7CisgICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7
CisKKyAgICBpZiAoaXNQcmV2aW91c0ZyYW1lRG9uZSgpICYmIG1fY29tcG9zaXRvcikgeworICAg
ICAgICBtX2NvbXBvc2l0b3ItPm1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50
LnN0b3JlKHRydWUpOworICAgICAgICBpZiAoIW1fY29tcG9zaXRvci0+bV9jb21wb3NpdGluZ1J1
bkxvb3AtPmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX2NvbXBvc2l0b3ItPm1fY29tcG9zaXRp
bmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1aXJlc0Rpc3BsYXlS
ZWZyZXNoQ2FsbGJhY2soKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4KCkpOworICAg
IHJldHVybiBpc1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFtZURvbmUoKTsKK30KKwordm9p
ZCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENh
bGxiYWNrKCkKK3sKKyAgICBtX2Rpc3BsYXlSZWZyZXNoVGltZXIuc3RhcnRPbmVTaG90KDApOwor
fQorCit2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjppbnZhbGlkYXRlKCkKK3sK
KyAgICBtX2NvbXBvc2l0b3IgPSBudWxscHRyOworfQorCit2b2lkIFRocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBib29sIHNob3Vs
ZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uID0gZmFsc2U7CisgICAgeworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtdXRleCgpKTsKKyAgICAgICAgc2hvdWxkSGFuZGxlRGlzcGxh
eVJlZnJlc2hOb3RpZmljYXRpb24gPSBpc1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFtZURv
bmUoKTsKKyAgICAgICAgaWYgKHNob3VsZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9u
KSB7CisgICAgICAgICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChzaG91bGRIYW5kbGVEaXNwbGF5UmVmcmVzaE5vdGlmaWNhdGlv
bikKKyAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpoYW5kbGVEaXNwbGF5UmVmcmVzaGVk
Tm90aWZpY2F0aW9uT25NYWluVGhyZWFkKHRoaXMpOworCisgICAgaWYgKG1fY29tcG9zaXRvcikg
eworICAgICAgICBpZiAobV9jb21wb3NpdG9yLT5tX2NsaWVudFJlbmRlcnNOZXh0RnJhbWUuY29t
cGFyZUV4Y2hhbmdlU3Ryb25nKHRydWUsIGZhbHNlKSkKKyAgICAgICAgICAgIG1fY29tcG9zaXRv
ci0+bV9zY2VuZS0+cmVuZGVyTmV4dEZyYW1lKCk7CisgICAgICAgIGlmIChtX2NvbXBvc2l0b3It
Pm1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50LmNvbXBhcmVFeGNoYW5nZVN0
cm9uZyh0cnVlLCBmYWxzZSkpCisgICAgICAgICAgICBtX2NvbXBvc2l0b3ItPm1fY29tcG9zaXRp
bmdSdW5Mb29wLT51cGRhdGVDb21wbGV0ZWQoKTsKKyAgICAgICAgaWYgKGlzU2NoZWR1bGVkKCkp
IHsKKyAgICAgICAgICAgIG1fY29tcG9zaXRvci0+bV9jb29yZGluYXRlVXBkYXRlQ29tcGxldGlv
bldpdGhDbGllbnQuc3RvcmUodHJ1ZSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcG9zaXRvci0+
bV9jb21wb3NpdGluZ1J1bkxvb3AtPmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgbV9jb21w
b3NpdG9yLT5tX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpICYmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNiYzRlMWMyYjc4YzEzYmIxZjdiOTU3OTUxYzI1MGU3MTZiMWU5ZmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaApAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3JfaAorI2RlZmluZSBUaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvcl9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpICYmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisK
KyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oPgorCisjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFRocmVhZGVkQ29t
cG9zaXRvcjsKKworY2xhc3MgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IgOiBwdWJsaWMg
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yIHsKK3B1YmxpYzoKKyAgICBUaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZENvbXBvc2l0b3ImKTsKKworICAgIHZpcnR1YWwg
Ym9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIHJlcXVp
cmVzRGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOworICAgIHZvaWQgZGlzcGF0Y2hEaXNwbGF5UmVm
cmVzaENhbGxiYWNrKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBkaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CisgICAgUnVuTG9vcDo6VGltZXI8VGhyZWFk
ZWREaXNwbGF5UmVmcmVzaE1vbml0b3I+IG1fZGlzcGxheVJlZnJlc2hUaW1lcjsKKyAgICBUaHJl
YWRlZENvbXBvc2l0b3IqIG1fY29tcG9zaXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKSAmJiBVU0Uo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjZW5kaWYgLy8gVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCmluZGV4
IGY0MjgyMTBmYmFmYWIzMGQxODNiZWE4YTYyMWY3YzIwMzQ5NDQ4ZTUuLjE4MTAxOTE3ODAxYTU0
YzNlMWE2MjRhYmVjMmU1YzVhMjBkZjVhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKQEAg
LTIyMyw2ICsyMjMsMTUgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpzY2hlZHVsZUNv
bXBvc2l0aW5nTGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCkKICAgICBzY2hlZHVsZUNvbXBvc2l0aW5n
TGF5ZXJGbHVzaCgpOwogfQogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BM
QVlfTU9OSVRPUikKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IEFjY2Vs
ZXJhdGVkRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3Qp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2xheWVyVHJlZUhvc3QtPmNy
ZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpOworfQorI2VuZGlmCisKIHZvaWQg
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6dXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3Qg
c3RhdGVJRCwgYm9vbCByZXNwb25kSW1tZWRpYXRlbHksIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
LCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCiB7CiAg
ICAgQVNTRVJUKCFtX2luVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
LmgKaW5kZXggZWFkMzJhYjZkNDNlMmQzYzQ0MDkzODU3MGRkYzMxNGI5NjI1NDE5My4uNzJhN2Jj
MjY1M2RmZDdjYjhjNjk2YTk1MDAwYTljNTJlZTBlZWMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5o
CkBAIC01OSw2ICs1OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0
aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xh
eWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3Jl
OjpQbGF0Zm9ybURpc3BsYXlJRCk7CisjZW5kaWYKKwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21w
b3NpdGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXN0cm95TmF0aXZlU3VyZmFj
ZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcAppbmRleCAyODEzNTNiOGFlM2UwMGRkMzliMzIxMGFlNGE1NzI5OGE1MzgxMmVmLi4w
Mjk3YzVhNjhlNjIwYjBiNmE5MmI3OTNhN2IwNWFmNDFiY2QwNDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCkBAIC0yNDcsNiArMjQ3LDEzIEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUoYm9vbCBkaXNjYXJkYWJsZSkKICAgICAg
ICAgZGlkQ2hhbmdlVmlld3BvcnQoKTsKIH0KIAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9ESVNQTEFZX01PTklUT1IpCitSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yPiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlRGlzcGxheVJlZnJl
c2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICByZXR1cm4gbV9j
b21wb3NpdG9yLT5jcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKTsKK30KKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9U
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGNhOGFlYWM2M2MwMTNlNGQ5
YjBkNzk5ZDZlNGZkNDc1MzY0NTVjNGIuLmY1N2U2YTg5NjI4YjAxNjdhODRkMzllNDhkYTY2YjQ2
NzViMTJiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMTAxLDYgKzEwMSwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0Jikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRlOwogCisjaWYgVVNFKFJFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRv
cihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIGVu
dW0gY2xhc3MgRGlzY2FyZGFibGVTeW5jQWN0aW9ucyB7CiAgICAgICAgIFVwZGF0ZVNpemUgPSAx
IDw8IDEsCiAgICAgICAgIFVwZGF0ZVZpZXdwb3J0ID0gMSA8PCAyLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5kZXggNTFhZjU4MWM2
NWMwMWIwODE1NWZiNmNmYjY2N2QxZTMzYTExMzZjZC4uNzZjNTI3ZWI3MWI3NzVkYmUzN2ZjMWNh
OGY0MjYyNjBjOGE2ZmQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIpCiAKICNpbmNsdWRlICJMYXllclRy
ZWVDb250ZXh0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTk2LDYgKzk4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgPSAwOwogI2VuZGlmCiAKKyNpZiBVU0UoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdl
YkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKiB2aWV3T3ZlcmxheVJvb3RMYXllcikgeyBtX3ZpZXdPdmVybGF5Um9vdExheWVyID0g
dmlld092ZXJsYXlSb290TGF5ZXI7IH0KIAogcHJvdGVjdGVkOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306671</attachid>
            <date>2017-04-10 01:48:42 -0700</date>
            <delta_ts>2017-04-10 03:16:24 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-170599-20170410104840.patch</filename>
            <type>text/plain</type>
            <size>38351</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUxZGE3ZmRhYWZiZWNhOTAzYmNjMGRi
NzdiYTVlYWMzZjE5NWI2NTAuLjllZTgyOWIyNDIwOWI4NTRjMTQwOTVkY2ZhYWIwZTBhNzVjYmU2
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDQtMTAgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSB0aGUgRGlzcGxheVJlZnJlc2hN
b25pdG9yIGZhY2lsaXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVuYWJsZSBVU0VfUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SCisgICAgICAgIGZvciB0aGUgR1RLKyBwb3J0LgorCiAyMDE3
LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAg
IFtXVEZdIEFubm90YXRlIFNlY29uZHMnIG1lbWJlciBmdW5jdGlvbnMgYW5kIG9wZXJhdG9ycyB3
aXRoIGNvbnN0ZXhwcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY1NjZhOTBjMzIxMmRjMzMwMjJhNjBlYmVlNjQ1
NTgwNTU0NmRkYmMuLmVhZTcwOGM5YThhZTJjODM3MmU0NTdkNjc0NTI5ZTgxNTUwMzRkOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wNC0xMCAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIHRoZSBEaXNwbGF5UmVmcmVz
aE1vbml0b3IgZmFjaWxpdGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwNTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG1pc3NpbmcgZmlsZXMgdG8gdGhlIGJ1
aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHA6IEJ1aWxkIGZpeGVzLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9y
OjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlUGxh
dGZvcm1MYXllcik6IE1hcmsgdGhlCisgICAgICAgIHBsYXRmb3JtIGxheWVyIGFzIHVwZGF0ZWQg
aW4gdGhlIGxheWVyJ3MgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUu
aDoKKwogMjAxNy0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBbV1RGXSBBbm5vdGF0ZSBTZWNvbmRzJyBtZW1iZXIgZnVuY3Rpb25zIGFuZCBv
cGVyYXRvcnMgd2l0aCBjb25zdGV4cHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMmYwZTUwZTkwODk3OTY0Njdi
YjYzYTY4ZjM0ZWQ5ZWQ0ZjI3NDk2Li5iOTQyNWJhY2ZhOGFmZGEwOTdhMjNjNjFkNDE2MTJlNTVi
NjQ3NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTctMDQtMTAgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSB0aGUgRGlz
cGxheVJlZnJlc2hNb25pdG9yIGZhY2lsaXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRocmVhZGVkQ29tcG9zaXRvciBnYWlucyBhIERpc3BsYXlS
ZWZyZXNoTW9uaXRvciBtZW1iZXIgdGhhdCBpdCBjYW4gdXNlCisgICAgICAgIHRvIGJldHRlciBj
b29yZGluYXRlIGRpc3BsYXkgcmVmcmVzaCBjYWxsYmFja3Mgb24gdGhlIG1haW4gdGhyZWFkLiBJ
bnN0ZWFkCisgICAgICAgIG9mIHJvdWdobHkgZXN0aW1hdGluZyB2c3luYy1hbGlnbmVkIHVwZGF0
ZXMsIHRoZSBUaHJlYWRlZENvbXBvc2l0b3Igbm93CisgICAgICAgIHdhaXRzIGZvciB0aGUgc3dh
cCBidWZmZXIgY2FsbCB0byBjb21wbGV0ZSBhbmQgdGhlbiBkZWNpZGVzIGhvdyB0byBwcm9jZWVk
CisgICAgICAgIGJhc2VkIG9uIHN0YXRlIGNoYW5nZXMgdGhhdCBtaWdodCBoYXZlIG9jY3VycmVk
IGR1cmluZyBjb21wb3NpdGlvbiBvcgorICAgICAgICB3aGV0aGVyIHRoZXJlJ3MgYW55IGRpc3Bs
YXkgcmVmcmVzaCBjYWxsYmFja3MgdGhhdCByZXF1aXJlIGhhbmRsaW5nIG9uIHRoZQorICAgICAg
ICBtYWluIHRocmVhZC4KKworICAgICAgICBDb21wb3NpdGluZ1J1bkxvb3Agbm93IHN0b3JlcyBp
dHMgc3RhdGUgaW4gYW4gYXRvbWljIHZhcmlhYmxlIHRoYXQncyB0aGVuCisgICAgICAgIGluc3Bl
Y3RlZCB3aGVuZXZlciBhIG5ldyB1cGRhdGUgaXMgc2NoZWR1bGVkIG9yIGNvbXBsZXRlZC4gV2hl
biBzY2hlZHVsZWQsCisgICAgICAgIGlmIHRoZXJlJ3Mgbm8gdXBkYXRlIGluIHByb2dyZXNzLCBh
IG5ldyB1cGRhdGUgaXMgcmVxdWVzdGVkIHRocm91Z2ggdGhlCisgICAgICAgIHRpbWVyLiBJZiB0
aGVyZSdzIGFscmVhZHkgYW4gdXBkYXRlIGluIHByb2dyZXNzLCBhIG5ldyB1cGRhdGUgaXMgbWFy
a2VkCisgICAgICAgIGFzIHBlbmRpbmcgYWZ0ZXIgdGhlIGN1cnJlbnQgb25lIGNvbXBsZXRlcy4g
SW4gdGhhdCBjYXNlLCB3aGVuIHRoZSB1cGRhdGUKKyAgICAgICAgaXMgY29tcGxldGVkLCBhIG5l
dyB1cGRhdGUgaXMgcmVxdWVzdGVkIHRocm91Z2ggdGhlIHRpbWVyLgorCisgICAgICAgIFRocmVh
ZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yIGlzIHVzZWQgdG8gY29vcmRpbmF0ZSB1cGRhdGVzIGJl
dHdlZW4gdGhlCisgICAgICAgIG1haW4gYW5kIHRoZSBjb21wb3NpdGlvbiB0aHJlYWQgd2hlbmV2
ZXIgdGhlIENvb3JkaW5hdGVkR3JhcGhpY3Mgc3RhdGUKKyAgICAgICAgZGVtYW5kcyBpdCwgb3Ig
d2hlbmV2ZXIgdGhlcmUgYXJlIGNsaWVudHMgcmVnaXN0ZXJlZCB0byB0aGF0IG1vbml0b3IgdGhh
dAorICAgICAgICByZXF1aXJlIGFuIHVwZGF0ZSAoZS5nLiBhIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSgpIGNhbGxiYWNrKS4gQWZ0ZXIgdGhlCisgICAgICAgIHVwZGF0ZSBvbiB0aGUgY29tcG9zaXRp
b24gdGhyZWFkIGlzIGZpbmlzaGVkLCBhbmQgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRvcgorICAg
ICAgICBvYmplY3QgcmVxdWlyZXMgYW4gdXBkYXRlLCBhIGNhbGxiYWNrIGF0IHRoZSBzYW1lIHBy
aW9yaXR5IGFzIHRoZSBsYXllcgorICAgICAgICBmbHVzaCB0aW1lciBpcyBzY2hlZHVsZWQgb24g
dGhlIG1haW4gdGhyZWFkLiBJbiB0aGF0IGNhbGxiYWNrIHdlIGhhbmRsZQorICAgICAgICBhbnkg
Y2xpZW50cyByZWdpc3RlcmVkIGZvciB0aGlzIERpc3BsYXlSZWZyZXNoTW9uaXRvciBiZWZvcmUg
cHJvY2VlZGluZworICAgICAgICB0byBoYW5kbGUgYW55IGNoYW5nZXMgdG8gdGhlIENvb3JkaW5h
dGVkR3JhcGhpY3Mgc2NlbmUuIEluIGNhc2UgdGhlCisgICAgICAgIERpc3BsYXlSZWZyZXNoTW9u
aXRvciBjbGllbnRzIG9yIHRoZSBsYXllciBmbHVzaGVzIGFscmVhZHkgcXVldWVkIHVwCisgICAg
ICAgIGFueSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSwgd2UgaW1tZWRpYXRlbHkgYXNrIHRoZSBUaHJl
YWRlZENvbXBvc2l0b3IgZm9yCisgICAgICAgIGFuIHVwZGF0ZS4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6Om9uTmV3QnVmZmVyQXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRp
bmdSdW5Mb29wOjpDb21wb3NpdGluZ1J1bkxvb3ApOgorICAgICAgICAoV2ViS2l0OjpDb21wb3Np
dGluZ1J1bkxvb3A6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5M
b29wOjpzY2hlZHVsZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9v
cDo6c3RvcFVwZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnVw
ZGF0ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBk
YXRlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6aXND
dXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzdGFydFVwZGF0
ZVRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpz
dG9wVXBkYXRlVGltZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaDoKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1f
ZGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3Np
dG9yOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpz
ZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSk6CisgICAgICAgIChX
ZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKToKKyAgICAgICAgKFdl
YktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpzY2VuZVVwZGF0ZUZpbmlzaGVkKToKKyAgICAgICAg
KFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3Ip
OgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6
OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5UmVmcmVz
aE1vbml0b3I6OnJlcXVpcmVzRGlzcGxheVJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjppbnZhbGlkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVzaENh
bGxiYWNrKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L0NvbXBvc2l0aW5nUnVuTG9vcC5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2Nl
bGVyYXRlZERyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0
b3IpOgorCiAyMDE3LTA0LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCBUaW1lcjo6c3RhcnRSZXBlYXRpbmcoKSBvdmVybG9hZCB0YWtpbmcgYSBkb3Vi
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCmluZGV4IGRmMGQ3ZmZmMTU4MTgzMjYzMjYwNTQyMzYxMTM4ZDg0OTVmMDIw
MzkuLjI0NzJiNmY0MmNlMTY3ZmQ3MzM4N2ZiMjE0M2FjYjc0NzE2Nzk3NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aApAQCAtMTA0OSw3ICsxMDQ5LDcgQEAKICNkZWZpbmUgVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX1RJTUVSIDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX0RJU1BMQVlfTU9OSVRPUiAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBl
MDZjODBkYjgxYmUxN2VmYTRmMmQ5MWZhOWViYmI2ZWZjZGU3MWU0Li40MDU4YjJjYmMwNDUzMWEz
ZDFhNGEwMzQxNGYwMjU1MjY1ODQ2MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjI1Myw3
ICsyMjUzLDkgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwCmluZGV4IDJjYmVmY2M5NTBlNzlhNTNjMmY1ODQwM2Y5NGIxNzRmZmNmYmEwMGQuLjc3
ODBlYThmZGIzYWYzMGU0MDc4OGZlMmM0ODEzZWY4NDBlNzcyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIkRp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oIgotI2Vsc2UKKyNlbGlmIFBMQVRGT1JNKE1BQykKICNp
bmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCIKICNlbmRpZgogCkBAIC00Nyw2ICs0
Nyw3IEBAIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IERpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6Y3JlYXRlRGVmYXVsdERpc3BsYXlSZWZyZXNoCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHJl
dHVybiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OmNyZWF0ZShkaXNwbGF5SUQpOwogI2VuZGlm
CisgICAgVU5VU0VEX1BBUkFNKGRpc3BsYXlJRCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKaW5kZXggOGNiZDJiZTNjODQ3ZDg5ZGM2NGIzMWE2MmFlNTIwZGNiOGEwZGU3ZC4uNGZk
ZmZiMDM2N2E2MzZkOTEwMGE4ODY3OGZmZTlhNTIyM2I2ZDJjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTcxNCw2
ICs3MTQsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlUGxhdGZvcm1M
YXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2hvdWxkVXBkYXRlUGxhdGZvcm1MYXll
ciA9IGZhbHNlOworICAgIG1fbGF5ZXJTdGF0ZS5wbGF0Zm9ybUxheWVyVXBkYXRlZCA9IHRydWU7
CiAgICAgaWYgKG1fcGxhdGZvcm1MYXllcikKICAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zd2Fw
QnVmZmVyc0lmTmVlZGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAppbmRleCBjODEwNTMwYjVlN2ZmZjY1MzRkMjUy
YzM0NjkwMWQ1YTNkZmE1ZjkzLi5lZDRmMzRiYTAzY2E1Yzk0ZTFjYjY4YjMxNTRiYTAzYTk0MGNm
NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZS5oCkBAIC04Niw2ICs4Niw3IEBAIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJTdGF0ZSB7CiAgICAgICAgICAgICBib29sIGNoaWxkcmVuQ2hhbmdlZDogMTsKICAgICAgICAg
ICAgIGJvb2wgcmVwYWludENvdW50Q2hhbmdlZCA6IDE7CiAgICAgICAgICAgICBib29sIHBsYXRm
b3JtTGF5ZXJDaGFuZ2VkOiAxOworICAgICAgICAgICAgYm9vbCBwbGF0Zm9ybUxheWVyVXBkYXRl
ZDogMTsKICAgICAgICAgICAgIGJvb2wgcGxhdGZvcm1MYXllclNob3VsZFN3YXBCdWZmZXJzOiAx
OwogICAgICAgICAgICAgYm9vbCBpc1Njcm9sbGFibGVDaGFuZ2VkOiAxOwogICAgICAgICAgICAg
Ym9vbCBjb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2VkOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA0YWEyMDZhMDNhOGVlOTcyNjZhZTE3YTg1MzUzMjc5MDlhOTJiNmY0Li5mZjI1
MGFlMWQ0NTc3ZTk1YTE5Zjg3YzM5YzIwZDZkNzQ2YjUwMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtNjUsNiArNjUsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAog
ICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3Np
dGluZ1J1bkxvb3AuY3BwCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UuY3BwCisgICAgU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJl
c2hNb25pdG9yLmNwcAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCiAKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBiOTRmYWVhMmNjNGEyYWYxYzQ2OTRkZWJiZTE5
Yjk5NTkwOTI4OTNiLi41MmEzNDRiYjYwODM4NTBlNDhmYmZhMTA1NWYwYmYzMTdhMDcxN2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTEyMSwxOCAr
MTIxLDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xD
b250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cmkKICAgICBtX3RleHR1cmVNYXBwZXItPmVu
ZENsaXAoKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7CiAKLSAgICBpZiAo
Y3VycmVudFJvb3RMYXllci0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMo
KSkKLSAgICAgICAgdXBkYXRlVmlld3BvcnQoKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnVwZGF0ZVZpZXdwb3J0KCkKLXsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgZGlzcGF0Y2hPbkNsaWVudFJ1bkxvb3AoW3RoaXNdIHsKLSAgICAgICAg
aWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPnVwZGF0ZVZpZXdwb3J0KCk7Ci0g
ICAgfSk7CisgICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1
bm5pbmdBbmltYXRpb25zKCkgJiYgbV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVW
aWV3cG9ydCgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YWRqdXN0UG9z
aXRpb25Gb3JGaXhlZExheWVycyhjb25zdCBGbG9hdFBvaW50JiBjb250ZW50UG9zaXRpb24pCkBA
IC0xNjksNyArMTU5LDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNQbGF0
Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXkKICNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
b25OZXdCdWZmZXJBdmFpbGFibGUoKQogewotICAgIHVwZGF0ZVZpZXdwb3J0KCk7CisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dXBkYXRlVmlld3BvcnQoKTsKIH0KICNlbmRp
ZgogCkBAIC01NDcsOSArNTM4LDYgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNv
bW1pdFNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJgogCiAgICAgY29t
bWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKTsKICAgICByZW1vdmVSZWxlYXNlZElt
YWdlQmFja2luZ3NJZk5lZWRlZCgpOwotCi0gICAgLy8gVGhlIHBlbmRpbmcgdGlsZXMgc3RhdGUg
aXMgb24gaXRzIHdheSBmb3IgdGhlIHNjcmVlbiwgdGVsbCB0aGUgd2ViIHByb2Nlc3MgdG8gcmVu
ZGVyIHRoZSBuZXh0IG9uZS4KLSAgICByZW5kZXJOZXh0RnJhbWUoKTsKIH0KIAogdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbmRlck5leHRGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDEyOGI3YmU3NmU4MDNkZGVmZjRmYzU5MTQyODE1
M2RhMjA1ZGFiZWEuLmM5NjFlM2RjZWUxYWM2MWE5NjBiYTNiZjcwNTg4MzA4MGQ1MmYxOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC04MCw2ICs4MCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKIAogICAgIHZvaWQgY29tbWl0U2Nl
bmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKKyAgICB2
b2lkIHJlbmRlck5leHRGcmFtZSgpOwogCiAgICAgdm9pZCBzZXRWaWV3QmFja2dyb3VuZENvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikgeyBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBj
b2xvcjsgfQogICAgIFdlYkNvcmU6OkNvbG9yIHZpZXdCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3I7IH0KQEAgLTEyMiw4ICsxMjMsNiBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgZGlzcGF0Y2hPbkNsaWVudFJ1bkxvb3AoRnVuY3Rpb248dm9pZCgpPiYmKTsK
LSAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0KCk7Ci0gICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsK
IAogICAgIHZvaWQgY3JlYXRlTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklEKTsKICAg
ICB2b2lkIGRlbGV0ZUxheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3Au
Y3BwCmluZGV4IGFhZGQ2YWJiMjZhNTZmYTQ0NzZiYWE1N2ZkMWZmOTE3YzNkYzYxMjAuLmQxOTEy
NDVjMmYyZDI4ZDU1MzA5OWVjNjlmYjQxYmJiNmM0NWQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21w
b3NpdGluZ1J1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC0x
MTAsOCArMTEwLDEzIEBAIHByaXZhdGU6CiAKIENvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRp
bmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiB1cGRhdGVGdW5jdGlvbikKICAgICA6
IG1fdXBkYXRlVGltZXIoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVuTG9vcCh0aGlzKSwg
dGhpcywgJkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCkKKyNpZm5kZWYgTkRF
QlVHCisgICAgLCBtX3J1bkxvb3AoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVuTG9vcCh0
aGlzKSkKKyNlbmRpZgogICAgICwgbV91cGRhdGVGdW5jdGlvbihXVEZNb3ZlKHVwZGF0ZUZ1bmN0
aW9uKSkKIHsKKyAgICBtX3VwZGF0ZVN0YXRlLnN0b3JlKFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQp
OworCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX3VwZGF0ZVRpbWVyLnNldFByaW9y
aXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVUaW1lcik7
CiAjZW5kaWYKQEAgLTE0NCwzMCArMTQ5LDUzIEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpw
ZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICBtX2Rpc3Bh
dGNoU3luY0NvbmRpdGlvbi53YWl0KG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXgpOwogfQog
Ci12b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RhcnRVcGRhdGVUaW1lcihVcGRhdGVUaW1pbmcg
dGltaW5nKQorYm9vbCBDb21wb3NpdGluZ1J1bkxvb3A6OmlzQWN0aXZlKCkKIHsKLSAgICBpZiAo
bV91cGRhdGVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47CisgICAgcmV0dXJuIG1f
dXBkYXRlU3RhdGUubG9hZCgpICE9IFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQ7Cit9CiAKLSAgICBj
b25zdCBzdGF0aWMgZG91YmxlIHRhcmdldEZQUyA9IDYwOwotICAgIGRvdWJsZSBuZXh0VXBkYXRl
VGltZSA9IDA7Ci0gICAgaWYgKHRpbWluZyA9PSBXYWl0VW50aWxOZXh0RnJhbWUpCi0gICAgICAg
IG5leHRVcGRhdGVUaW1lID0gc3RkOjptYXgoKDEgLyB0YXJnZXRGUFMpIC0gKG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpIC0gbV9sYXN0VXBkYXRlVGltZSksIDAuMCk7Cit2b2lkIENvbXBv
c2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVVcGRhdGUoKQoreworICAgIGlmIChtX3VwZGF0ZVN0YXRl
LmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRhdGVTdGF0ZTo6Q29tcGxldGVkLCBVcGRhdGVTdGF0
ZTo6SW5Qcm9ncmVzcykgPT0gVXBkYXRlU3RhdGU6OkNvbXBsZXRlZCkgeworICAgICAgICBtX3Vw
ZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAg
IG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KG5leHRVcGRhdGVUaW1lKTsKKyAgICBpZiAobV91
cGRhdGVTdGF0ZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3Ms
IFVwZGF0ZVN0YXRlOjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uKSA9PSBVcGRhdGVTdGF0ZTo6SW5Q
cm9ncmVzcykKKyAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6
c3RvcFVwZGF0ZVRpbWVyKCkKK3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlcygp
CiB7CiAgICAgbV91cGRhdGVUaW1lci5zdG9wKCk7CisgICAgbV91cGRhdGVTdGF0ZS5zdG9yZShV
cGRhdGVTdGF0ZTo6Q29tcGxldGVkKTsKK30KKwordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnVw
ZGF0ZUNvbXBsZXRlZCgpCit7CisgICAgaWYgKG1fdXBkYXRlU3RhdGUuY29tcGFyZUV4Y2hhbmdl
U3Ryb25nKFVwZGF0ZVN0YXRlOjpJblByb2dyZXNzLCBVcGRhdGVTdGF0ZTo6Q29tcGxldGVkKSA9
PSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
dXBkYXRlU3RhdGUuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRlOjpQZW5kaW5nQWZ0
ZXJDb21wbGV0aW9uLCBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykgPT0gVXBkYXRlU3RhdGU6OlBl
bmRpbmdBZnRlckNvbXBsZXRpb24pIHsKKyAgICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9uZVNo
b3QoMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAogdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQoKQogewog
ICAgIG1fdXBkYXRlRnVuY3Rpb24oKTsKLSAgICBtX2xhc3RVcGRhdGVUaW1lID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCitib29sIENvbXBvc2l0
aW5nUnVuTG9vcDo6aXNDdXJyZW50KCkKK3sKKyAgICByZXR1cm4gJlJ1bkxvb3A6OmN1cnJlbnQo
KSA9PSAmbV9ydW5Mb29wOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4
IDUyYjVkN2QxMDAxMTFjNGNiOGQzMWMwYzE2ZTJiZDQwZTNkODY4NDYuLjZiYzlkMjIwZTE5MmZm
MzY1YzBmMTEyNzI1ODU0MTY5OTAxNDk3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1
bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAorI2luY2x1ZGUgPHd0
Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC00MSwyOSArNDIsMzkg
QEAgY2xhc3MgQ29tcG9zaXRpbmdSdW5Mb29wIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
b21wb3NpdGluZ1J1bkxvb3ApOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIGVudW0gVXBkYXRlVGltaW5nIHsKLSAgICAgICAgSW1tZWRpYXRlLAotICAgICAgICBX
YWl0VW50aWxOZXh0RnJhbWUsCi0gICAgfTsKLQogICAgIENvbXBvc2l0aW5nUnVuTG9vcChzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogICAgIH5Db21wb3NpdGluZ1J1bkxvb3AoKTsKIAogICAg
IHZvaWQgcGVyZm9ybVRhc2soRnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCBwZXJmb3Jt
VGFza1N5bmMoRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKLSAgICB2b2lkIHN0YXJ0VXBkYXRlVGlt
ZXIoVXBkYXRlVGltaW5nID0gSW1tZWRpYXRlKTsKLSAgICB2b2lkIHN0b3BVcGRhdGVUaW1lcigp
OworICAgIGJvb2wgaXNBY3RpdmUoKTsKKyAgICB2b2lkIHNjaGVkdWxlVXBkYXRlKCk7CisgICAg
dm9pZCBzdG9wVXBkYXRlcygpOworCisgICAgdm9pZCB1cGRhdGVDb21wbGV0ZWQoKTsKKworI2lm
bmRlZiBOREVCVUcKKyAgICBib29sIGlzQ3VycmVudCgpOworI2VuZGlmCiAKIHByaXZhdGU6Cisg
ICAgZW51bSBjbGFzcyBVcGRhdGVTdGF0ZSB7CisgICAgICAgIENvbXBsZXRlZCwKKyAgICAgICAg
SW5Qcm9ncmVzcywKKyAgICAgICAgUGVuZGluZ0FmdGVyQ29tcGxldGlvbiwKKyAgICB9OworCiAg
ICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKCk7CiAKICAgICBSdW5Mb29wOjpUaW1lcjxDb21wb3Np
dGluZ1J1bkxvb3A+IG1fdXBkYXRlVGltZXI7CisjaWZuZGVmIE5ERUJVRworICAgIFJ1bkxvb3Am
IG1fcnVuTG9vcDsKKyNlbmRpZgogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV91cGRhdGVG
dW5jdGlvbjsKKyAgICBBdG9taWM8VXBkYXRlU3RhdGU+IG1fdXBkYXRlU3RhdGU7CiAgICAgTG9j
ayBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11dGV4OwogICAgIENvbmRpdGlvbiBtX2Rpc3BhdGNo
U3luY0NvbmRpdGlvbjsKLQotICAgIGRvdWJsZSBtX2xhc3RVcGRhdGVUaW1lIHsgMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGM3YWQ4MzdjODMzMjk2
NzM1NGNhNzU1Nzg0MjM0ODNlMjdiMzY3ZjMuLmQyMjA1NWI4NGFmOTBjZDY4MzhjZWQxMWYyZTE4
NDU5ZDc3OGRlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogCiAjaW5jbHVkZSAiQ29tcG9zaXRpbmdSdW5M
b29wLmgiCisjaW5jbHVkZSAiVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNm
b3JtYXRpb25NYXRyaXguaD4KIApAQCAtNTYsNyArNTcsMTMgQEAgVGhyZWFkZWRDb21wb3NpdG9y
OjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQsIGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2kKICAgICAsIG1fcGFpbnRGbGFncyhwYWludEZsYWdzKQogICAgICwgbV9uZWVkc1Jlc2l6
ZSghdmlld3BvcnRTaXplLmlzRW1wdHkoKSkKICAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKHN0
ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRy
ZWUoKTsgfSkpCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRP
UikKKyAgICAsIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yKGFkb3B0UmVmKG5ldyBUaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvcigqdGhpcykpKQorI2VuZGlmCiB7CisgICAgbV9jbGllbnRSZW5k
ZXJzTmV4dEZyYW1lLnN0b3JlKGZhbHNlKTsKKyAgICBtX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0
aW9uV2l0aENsaWVudC5zdG9yZShmYWxzZSk7CisKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+
cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsK
ICAgICAgICAgbV9zY2VuZSA9IGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUo
dGhpcykpOwogICAgICAgICBpZiAobV9uYXRpdmVTdXJmYWNlSGFuZGxlKSB7CkBAIC04OSwxOCAr
OTYsMjEgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZUdMQ29udGV4dCgpCiB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6aW52YWxpZGF0ZSgpCiB7CiAgICAgbV9zY2VuZS0+ZGV0YWNo
KCk7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0b3BVcGRhdGVUaW1lcigpOworICAgIG1f
Y29tcG9zaXRpbmdSdW5Mb29wLT5zdG9wVXBkYXRlcygpOwogICAgIG1fY29tcG9zaXRpbmdSdW5M
b29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gewogICAgICAgICBtX3NjZW5lLT5wdXJnZUdMUmVzb3VyY2VzKCk7CiAgICAgICAgIG1fY29u
dGV4dCA9IG51bGxwdHI7CiAgICAgICAgIG1fc2NlbmUgPSBudWxscHRyOwogICAgIH0pOworI2lm
IFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAgbV9kaXNw
bGF5UmVmcmVzaE1vbml0b3ItPmludmFsaWRhdGUoKTsKKyNlbmRpZgogICAgIG1fY29tcG9zaXRp
bmdSdW5Mb29wID0gbnVsbHB0cjsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldE5h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCBoYW5kbGUpCiB7Ci0gICAg
bV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0b3BVcGRhdGVUaW1lcigpOworICAgIG1fY29tcG9zaXRp
bmdSdW5Mb29wLT5zdG9wVXBkYXRlcygpOwogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJm
b3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaGFuZGxl
XSB7CiAgICAgICAgIC8vIEEgbmV3IG5hdGl2ZSBoYW5kbGUgY2FuJ3QgYmUgc2V0IHdpdGhvdXQg
ZGVzdHJveWluZyB0aGUgcHJldmlvdXMgb25lIGZpcnN0IGlmIGFueS4KICAgICAgICAgQVNTRVJU
KCEhaGFuZGxlIF4gISFtX25hdGl2ZVN1cmZhY2VIYW5kbGUpOwpAQCAtMTY0LDEyICsxNzQsMTIg
QEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBs
YXllcklELCBjb25zdCBJbnRTaXplJiBvZmYKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVw
ZGF0ZVZpZXdwb3J0KCkKIHsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RhcnRVcGRhdGVU
aW1lcihDb21wb3NpdGluZ1J1bkxvb3A6OldhaXRVbnRpbE5leHRGcmFtZSk7CisgICAgbV9jb21w
b3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb21w
b3NpdG9yOjpzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSgpCiB7Ci0gICAgbV9jb21wb3NpdGlu
Z1J1bkxvb3AtPnN0YXJ0VXBkYXRlVGltZXIoQ29tcG9zaXRpbmdSdW5Mb29wOjpJbW1lZGlhdGUp
OworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwogfQogCiB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6Zm9yY2VSZXBhaW50KCkKQEAgLTIwNCwxOSArMjE0LDU1IEBA
IHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogCiAgICAgbV9zY2Vu
ZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodmlld3BvcnRUcmFuc2Zvcm0sIDEsIGNsaXBSZWN0
LCBDb2xvcjo6dHJhbnNwYXJlbnQsICFtX2RyYXdzQmFja2dyb3VuZCwgbV9zY3JvbGxQb3NpdGlv
biwgbV9wYWludEZsYWdzKTsKIAorICAgIGRvdWJsZSBhID0gY3VycmVudFRpbWUoKTsKICAgICBt
X2NvbnRleHQtPnN3YXBCdWZmZXJzKCk7CisgICAgc3RhdGljIGRvdWJsZSBzX2xhc3QgPSBhOwor
ICAgIGRvdWJsZSBiID0gY3VycmVudFRpbWUoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgInN3YXBC
dWZmZXJzKCkgJS4yZm1zLCBzaW5jZSBsYXMgJS4yZlxuIiwKKyAgICAgICAgKGIgLSBhKSAqIDEw
MDAsIChiIC0gc19sYXN0KSAqIDEwMDApOworICAgIHNfbGFzdCA9IGI7CisKKyAgICAvLyBGb3Ig
dGhlIEdUSysgcG9ydCwge2VnbCxnbHh9U3dhcEJ1ZmZlcnMoKSBkb2VzIHRoZSBmcmFtZSBzeW5j
LgorICAgIHNjZW5lVXBkYXRlRmluaXNoZWQoKTsKK30KKwordm9pZCBUaHJlYWRlZENvbXBvc2l0
b3I6OnNjZW5lVXBkYXRlRmluaXNoZWQoKQoreworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hEaXNw
bGF5UmVmcmVzaENhbGxiYWNrID0gbV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLmxvYWQoKQorICAg
ICAgICB8fCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvci0+cmVxdWlyZXNEaXNwbGF5UmVmcmVzaENh
bGxiYWNrKCk7CisgICAgYm9vbCBzaG91bGRDb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhD
bGllbnQgPSBtX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5sb2FkKCk7CisK
KyAgICBpZiAoc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKQorICAgICAgICBt
X2Rpc3BsYXlSZWZyZXNoTW9uaXRvci0+ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7
CisgICAgaWYgKCFzaG91bGRDb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQpCisg
ICAgICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT51cGRhdGVDb21wbGV0ZWQoKTsKIH0KIAogdm9p
ZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRH
cmFwaGljc1N0YXRlJiBzdGF0ZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IFJlZlB0cjxUaHJlYWRlZENvbXBvc2l0b3I+IHByb3RlY3Rvcih0aGlzKTsKICAgICBSZWZQdHI8
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiBzY2VuZSA9IG1fc2NlbmU7Ci0gICAgbV9zY2VuZS0+
YXBwZW5kVXBkYXRlKFtzY2VuZSwgc3RhdGVdIHsKKyAgICBtX3NjZW5lLT5hcHBlbmRVcGRhdGUo
W3Byb3RlY3Rvciwgc2NlbmUsIHN0YXRlXSB7CiAgICAgICAgIHNjZW5lLT5jb21taXRTY2VuZVN0
YXRlKHN0YXRlKTsKKworICAgICAgICBwcm90ZWN0b3ItPm1fY2xpZW50UmVuZGVyc05leHRGcmFt
ZS5zdG9yZSh0cnVlKTsKKyAgICAgICAgYm9vbCBjb29yZGluYXRlVXBkYXRlID0gc3RkOjphbnlf
b2Yoc3RhdGUubGF5ZXJzVG9VcGRhdGUuYmVnaW4oKSwgc3RhdGUubGF5ZXJzVG9VcGRhdGUuZW5k
KCksCisgICAgICAgICAgICBbXShjb25zdCBzdGQ6OnBhaXI8Q29vcmRpbmF0ZWRMYXllcklELCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZT4mIGl0KSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGl0LnNlY29uZC5wbGF0Zm9ybUxheWVyQ2hhbmdlZCB8fCBpdC5zZWNvbmQucGxhdGZvcm1M
YXllclVwZGF0ZWQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcHJvdGVjdG9yLT5tX2Nvb3Jk
aW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5zdG9yZShjb29yZGluYXRlVXBkYXRlKTsK
ICAgICB9KTsKIAogICAgIHNjaGVkdWxlRGlzcGxheUltbWVkaWF0ZWx5KCk7CiB9CiAKKyNpZiBV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorUmVmUHRyPFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpkaXNwbGF5UmVm
cmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpCit7CisgICAgcmV0dXJuIG1fZGlzcGxheVJl
ZnJlc2hNb25pdG9yOworfQorI2VuZGlmCisKIH0KICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1NfVEhSRUFERUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKaW5kZXggYmFjODFhMzk2MjIzODUzMTkwOWFkNDRk
ZWIwMTRmN2FmM2MzNzQ4OS4uYmE0OWI2YjFlYzlmN2YwMzExNWYyNThkODAzNjA1YWViODAzNzFi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZENvbXBvc2l0b3IuaApAQCAtMzMsMTAgKzMzLDE1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HTENv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHR1cmVNYXBwZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SKQorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZTsKIH0KQEAgLTQ1LDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKIGNsYXNzIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZUNsaWVudDsKK2NsYXNzIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOwog
CiBjbGFzcyBUaHJlYWRlZENvbXBvc2l0b3IgOiBwdWJsaWMgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lQ2xpZW50LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkZWRDb21wb3NpdG9y
PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkZWRDb21wb3NpdG9yKTsKQEAgLTcz
LDYgKzc5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yY2VSZXBhaW50KCk7CiAKKyNpZiBV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIFJlZlB0cjxX
ZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGRpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBUaHJlYWRl
ZENvbXBvc2l0b3IoQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0IHNjYWxl
RmFjdG9yLCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlLCBTaG91bGREb0ZyYW1lU3luYywg
V2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyk7CiAKQEAgLTgyLDYgKzkyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZW5k
ZXJMYXllclRyZWUoKTsKKyAgICB2b2lkIHNjZW5lVXBkYXRlRmluaXNoZWQoKTsKICAgICB2b2lk
IHNjaGVkdWxlRGlzcGxheUltbWVkaWF0ZWx5KCk7CiAKICAgICB2b2lkIGNyZWF0ZUdMQ29udGV4
dCgpOwpAQCAtMTAwLDYgKzExMSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc1Jlc2l6
ZSB7IGZhbHNlIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcG9zaXRpbmdSdW5Mb29wPiBt
X2NvbXBvc2l0aW5nUnVuTG9vcDsKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9E
SVNQTEFZX01PTklUT1IpCisgICAgZnJpZW5kIGNsYXNzIFRocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yOworICAgIFJlZlB0cjxUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbV9kaXNw
bGF5UmVmcmVzaE1vbml0b3I7CisjZW5kaWYKKworICAgIEF0b21pYzxib29sPiBtX2NsaWVudFJl
bmRlcnNOZXh0RnJhbWU7CisgICAgQXRvbWljPGJvb2w+IG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBs
ZXRpb25XaXRoQ2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlz
cGxheVJlZnJlc2hNb25pdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmFjMzYzNTNmODZlY2ZkNjg2ODZm
ZDkyOWI5N2IwYTcyZmNlZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKworI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkgJiYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikKKworI2luY2x1ZGUgIkNvbXBvc2l0aW5nUnVuTG9vcC5oIgorI2luY2x1
ZGUgIlRocmVhZGVkQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3Vy
Y2VQcmlvcml0eS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworVGhyZWFkZWREaXNwbGF5UmVm
cmVzaE1vbml0b3I6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yKFRocmVhZGVkQ29tcG9z
aXRvciYgY29tcG9zaXRvcikKKyAgICA6IFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcigw
KQorICAgICwgbV9kaXNwbGF5UmVmcmVzaFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRo
cmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVzaENhbGxiYWNrKQorICAg
ICwgbV9jb21wb3NpdG9yKCZjb21wb3NpdG9yKQoreworI2lmIFVTRShHTElCX0VWRU5UX0xPT1Ap
CisgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVyLnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlv
cml0eTo6TGF5ZXJGbHVzaFRpbWVyKTsKKyNlbmRpZgorfQorCitib29sIFRocmVhZGVkRGlzcGxh
eVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBpZiAoIW1f
Y29tcG9zaXRvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobXV0ZXgoKSk7CisgICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7CisKKyAgICBpZiAoaXNQcmV2
aW91c0ZyYW1lRG9uZSgpICYmIG1fY29tcG9zaXRvcikgeworICAgICAgICBtX2NvbXBvc2l0b3It
Pm1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50LnN0b3JlKHRydWUpOworICAg
ICAgICBpZiAoIW1fY29tcG9zaXRvci0+bV9jb21wb3NpdGluZ1J1bkxvb3AtPmlzQWN0aXZlKCkp
CisgICAgICAgICAgICBtX2NvbXBvc2l0b3ItPm1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVs
ZVVwZGF0ZSgpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRocmVhZGVk
RGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1aXJlc0Rpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQor
eworICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4KCkpOworICAgIHJldHVybiBpc1NjaGVkdWxl
ZCgpICYmIGlzUHJldmlvdXNGcmFtZURvbmUoKTsKK30KKwordm9pZCBUaHJlYWRlZERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBt
X2Rpc3BsYXlSZWZyZXNoVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFRocmVhZGVk
RGlzcGxheVJlZnJlc2hNb25pdG9yOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2Rpc3BsYXlSZWZy
ZXNoVGltZXIuc3RvcCgpOworICAgIG1fY29tcG9zaXRvciA9IG51bGxwdHI7Cit9CisKK3ZvaWQg
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQor
eworICAgIGJvb2wgc2hvdWxkSGFuZGxlRGlzcGxheVJlZnJlc2hOb3RpZmljYXRpb24gPSBmYWxz
ZTsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4KCkpOworICAgICAgICBz
aG91bGRIYW5kbGVEaXNwbGF5UmVmcmVzaE5vdGlmaWNhdGlvbiA9IGlzU2NoZWR1bGVkKCkgJiYg
aXNQcmV2aW91c0ZyYW1lRG9uZSgpOworICAgICAgICBpZiAoc2hvdWxkSGFuZGxlRGlzcGxheVJl
ZnJlc2hOb3RpZmljYXRpb24pIHsKKyAgICAgICAgICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUo
ZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNob3VsZEhhbmRsZURpc3BsYXlS
ZWZyZXNoTm90aWZpY2F0aW9uKQorICAgICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmhhbmRs
ZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQodGhpcyk7CisKKyAgICBp
ZiAobV9jb21wb3NpdG9yKSB7CisgICAgICAgIGlmIChtX2NvbXBvc2l0b3ItPm1fY2xpZW50UmVu
ZGVyc05leHRGcmFtZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcodHJ1ZSwgZmFsc2UpKQorICAgICAg
ICAgICAgbV9jb21wb3NpdG9yLT5tX3NjZW5lLT5yZW5kZXJOZXh0RnJhbWUoKTsKKyAgICAgICAg
aWYgKG1fY29tcG9zaXRvci0+bV9jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQu
Y29tcGFyZUV4Y2hhbmdlU3Ryb25nKHRydWUsIGZhbHNlKSkKKyAgICAgICAgICAgIG1fY29tcG9z
aXRvci0+bV9jb21wb3NpdGluZ1J1bkxvb3AtPnVwZGF0ZUNvbXBsZXRlZCgpOworICAgICAgICBp
ZiAoaXNTY2hlZHVsZWQoKSkgeworICAgICAgICAgICAgbV9jb21wb3NpdG9yLT5tX2Nvb3JkaW5h
dGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5zdG9yZSh0cnVlKTsKKyAgICAgICAgICAgIGlm
ICghbV9jb21wb3NpdG9yLT5tX2NvbXBvc2l0aW5nUnVuTG9vcC0+aXNBY3RpdmUoKSkKKyAgICAg
ICAgICAgICAgICBtX2NvbXBvc2l0b3ItPm1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVw
ZGF0ZSgpOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgJiYgVVNFKFJFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE2ODRjODQ3YzEyOTMyODg2MTY0ODlmNjM5Yjc4NjBhMDdh
ZWRjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcl9oCisj
ZGVmaW5lIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yX2gKKworI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkgJiYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikKKworI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFRocmVhZGVkQ29tcG9zaXRvcjsKKworY2xhc3MgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bml0b3IgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yIHsKK3B1YmxpYzoK
KyAgICBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZENvbXBvc2l0b3ImKTsK
KworICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7CisK
KyAgICBib29sIHJlcXVpcmVzRGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOworICAgIHZvaWQgZGlz
cGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBkaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CisgICAgUnVuTG9v
cDo6VGltZXI8VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I+IG1fZGlzcGxheVJlZnJlc2hU
aW1lcjsKKyAgICBUaHJlYWRlZENvbXBvc2l0b3IqIG1fY29tcG9zaXRvcjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKSAmJiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQor
CisjZW5kaWYgLy8gVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3JfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2lu
Z0FyZWEuY3BwCmluZGV4IGY0MjgyMTBmYmFmYWIzMGQxODNiZWE4YTYyMWY3YzIwMzQ5NDQ4ZTUu
LjE4MTAxOTE3ODAxYTU0YzNlMWE2MjRhYmVjMmU1YzVhMjBkZjVhYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYS5jcHAKQEAgLTIyMyw2ICsyMjMsMTUgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdB
cmVhOjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCkKICAgICBzY2hl
ZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpOwogfQogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3I+IEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9u
aXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisgICAgaWYgKCFt
X2xheWVyVHJlZUhvc3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2xh
eWVyVHJlZUhvc3QtPmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpOworfQor
I2VuZGlmCisKIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6dXBkYXRlQmFja2luZ1N0b3Jl
U3RhdGUodWludDY0X3Qgc3RhdGVJRCwgYm9vbCByZXNwb25kSW1tZWRpYXRlbHksIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBzY3Jv
bGxPZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFtX2luVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVy
YXRlZERyYXdpbmdBcmVhLmgKaW5kZXggZWFkMzJhYjZkNDNlMmQzYzQ0MDkzODU3MGRkYzMxNGI5
NjI1NDE5My4uNzJhN2JjMjY1M2RmZDdjYjhjNjk2YTk1MDAwYTljNTJlZTBlZWMwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2lu
Z0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5oCkBAIC01OSw2ICs1OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBz
Y2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2NoZWR1
bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCisjaWYgVVNF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNo
TW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CisjZW5kaWYKKwogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFV
U0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZh
Y2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXN0
cm95TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCAyODEzNTNiOGFlM2UwMGRkMzliMzIxMGFlNGE1
NzI5OGE1MzgxMmVmLi5mNTk5YWUzZmYwZTc1NWQ5MjkzMjhiOWYyMmEyOGZjZjFkYTczNDA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0yNDcsNiArMjQ3LDEzIEBAIHZvaWQgVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUoYm9vbCBkaXNj
YXJkYWJsZSkKICAgICAgICAgZGlkQ2hhbmdlVmlld3BvcnQoKTsKIH0KIAorI2lmIFVTRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCitSZWZQdHI8V2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yPiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sK
KyAgICByZXR1cm4gbV9jb21wb3NpdG9yLT5kaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlE
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGNhOGFlYWM2
M2MwMTNlNGQ5YjBkNzk5ZDZlNGZkNDc1MzY0NTVjNGIuLmY1N2U2YTg5NjI4YjAxNjdhODRkMzll
NDhkYTY2YjQ2NzViMTJiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMTAxLDYgKzEw
MSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNv
bnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRlOwogCisjaWYg
VVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICB2aXJ0dWFs
IFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZy
ZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgb3ZlcnJpZGU7CisjZW5kaWYK
KwogICAgIGVudW0gY2xhc3MgRGlzY2FyZGFibGVTeW5jQWN0aW9ucyB7CiAgICAgICAgIFVwZGF0
ZVNpemUgPSAxIDw8IDEsCiAgICAgICAgIFVwZGF0ZVZpZXdwb3J0ID0gMSA8PCAyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5kZXgg
NTFhZjU4MWM2NWMwMWIwODE1NWZiNmNmYjY2N2QxZTMzYTExMzZjZC4uNzZjNTI3ZWI3MWI3NzVk
YmUzN2ZjMWNhOGY0MjYyNjBjOGE2ZmQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIpCiAKICNpbmNsdWRl
ICJMYXllclRyZWVDb250ZXh0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTk2LDYgKzk4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgPSAwOwogI2VuZGlmCiAKKyNpZiBVU0Uo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hN
b25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSB7IHJldHVybiBudWxscHRyOyB9Cisj
ZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKiB2aWV3T3ZlcmxheVJvb3RMYXllcikgeyBtX3ZpZXdPdmVybGF5Um9v
dExheWVyID0gdmlld092ZXJsYXlSb290TGF5ZXI7IH0KIAogcHJvdGVjdGVkOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306678</attachid>
            <date>2017-04-10 03:16:28 -0700</date>
            <delta_ts>2017-04-10 04:30:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170599-20170410121627.patch</filename>
            <type>text/plain</type>
            <size>39581</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUxZGE3ZmRhYWZiZWNhOTAzYmNjMGRi
NzdiYTVlYWMzZjE5NWI2NTAuLmZjOTUxYjdhNDRlMTI2ODRlMmZiMzA1MzRjY2Y3MWMyN2Q0NzJj
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDQtMTAgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSB0aGUgRGlzcGxheVJlZnJlc2hN
b25pdG9yIGZhY2lsaXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVuYWJsZSBVU0VfUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SIGZvciB0aGUgR1RLKyBwb3J0LgorICAgICAgICAqIHd0Zi9n
bGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oOiBBZGQgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRv
clRpbWVyIGVudHJ5IHRoYXQKKyAgICAgICAgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgTGF5ZXJGbHVz
aFRpbWVyLgorCiAyMDE3LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgogCiAgICAgICAgIFtXVEZdIEFubm90YXRlIFNlY29uZHMnIG1lbWJlciBmdW5jdGlvbnMg
YW5kIG9wZXJhdG9ycyB3aXRoIGNvbnN0ZXhwcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY1NjZhOTBjMzIxMmRj
MzMwMjJhNjBlYmVlNjQ1NTgwNTU0NmRkYmMuLmVhZTcwOGM5YThhZTJjODM3MmU0NTdkNjc0NTI5
ZTgxNTUwMzRkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wNC0xMCAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIHRo
ZSBEaXNwbGF5UmVmcmVzaE1vbml0b3IgZmFjaWxpdGllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG1pc3Npbmcg
ZmlsZXMgdG8gdGhlIGJ1aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHA6IEJ1aWxkIGZpeGVzLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yOjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6dXBkYXRlUGxhdGZvcm1MYXllcik6IE1hcmsgdGhlCisgICAgICAgIHBsYXRmb3JtIGxh
eWVyIGFzIHVwZGF0ZWQgaW4gdGhlIGxheWVyJ3MgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzU3RhdGUuaDoKKwogMjAxNy0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBBbm5vdGF0ZSBTZWNvbmRzJyBtZW1iZXIg
ZnVuY3Rpb25zIGFuZCBvcGVyYXRvcnMgd2l0aCBjb25zdGV4cHIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMmYw
ZTUwZTkwODk3OTY0NjdiYjYzYTY4ZjM0ZWQ5ZWQ0ZjI3NDk2Li4wYjI3ZDU5OTg1Yzk0OWU3MWU3
NGQyZjUwMDk0YjMwNTY2MTNmZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMTct
MDQtMTAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIFVzZSB0aGUgRGlzcGxheVJlZnJlc2hNb25pdG9yIGZhY2lsaXRpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDU5OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRocmVhZGVkQ29tcG9zaXRvciBn
YWlucyBhIERpc3BsYXlSZWZyZXNoTW9uaXRvciBtZW1iZXIgdGhhdCBpdCBjYW4gdXNlCisgICAg
ICAgIHRvIGJldHRlciBjb29yZGluYXRlIGRpc3BsYXkgcmVmcmVzaCBjYWxsYmFja3Mgb24gdGhl
IG1haW4gdGhyZWFkLiBTdGlsbCwKKyAgICAgICAgYmVjYXVzZSBjdXJyZW50bHkgdGhlIEdUSysg
cG9ydCBkb2Vzbid0IGhhdmUgYSByZWxpYWJsZSB3YXkgb2Ygbm90aWZ5aW5nCisgICAgICAgIHRo
ZSBUaHJlYWRlZENvbXBvc2l0b3Igb2YgYSB2c3luYyBldmVudCwgYSB0aW1lciB0YXJnZXRpbmcg
NjBGUFMgaXMgdXNlZAorICAgICAgICBpbiBvcmRlciB0byBrZWVwIHRoZSB1cGRhdGVzIGF0IGEg
cmVhc29uYWJsZSByYXRlLiBXaGVuIHRoZSB0aW1lciBpcyBmaXJlZCwKKyAgICAgICAgdGhlIFRo
cmVhZGVkQ29tcG9zaXRvciBkZWNpZGVzIGhvdyB0byBwcm9jZWVkIGJhc2VkIG9uIHN0YXRlIGNo
YW5nZXMgdGhhdAorICAgICAgICBtaWdodCBoYXZlIG9jY3VycmVkIGR1cmluZyBjb21wb3NpdGlv
biBvciB3aGV0aGVyIHRoZXJlJ3MgYW55IGRpc3BsYXkKKyAgICAgICAgcmVmcmVzaCBjYWxsYmFj
a3MgdGhhdCByZXF1aXJlIGhhbmRsaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBD
b21wb3NpdGluZ1J1bkxvb3Agbm93IHN0b3JlcyBpdHMgc3RhdGUgaW4gYW4gYXRvbWljIHZhcmlh
YmxlIHRoYXQncyB0aGVuCisgICAgICAgIGluc3BlY3RlZCB3aGVuZXZlciBhIG5ldyB1cGRhdGUg
aXMgc2NoZWR1bGVkIG9yIGNvbXBsZXRlZC4gV2hlbiBzY2hlZHVsZWQsCisgICAgICAgIGlmIHRo
ZXJlJ3Mgbm8gdXBkYXRlIGluIHByb2dyZXNzLCBhIG5ldyB1cGRhdGUgaXMgcmVxdWVzdGVkIHRo
cm91Z2ggdGhlCisgICAgICAgIHRpbWVyLiBJZiB0aGVyZSdzIGFscmVhZHkgYW4gdXBkYXRlIGlu
IHByb2dyZXNzLCBhIG5ldyB1cGRhdGUgaXMgbWFya2VkCisgICAgICAgIGFzIHBlbmRpbmcgYWZ0
ZXIgdGhlIGN1cnJlbnQgb25lIGNvbXBsZXRlcy4gSW4gdGhhdCBjYXNlLCB3aGVuIHRoZSB1cGRh
dGUKKyAgICAgICAgaXMgY29tcGxldGVkLCBhIG5ldyB1cGRhdGUgaXMgcmVxdWVzdGVkIHRocm91
Z2ggdGhlIHRpbWVyLgorCisgICAgICAgIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yIGlz
IHVzZWQgdG8gY29vcmRpbmF0ZSB1cGRhdGVzIGJldHdlZW4gdGhlCisgICAgICAgIG1haW4gYW5k
IHRoZSBjb21wb3NpdGlvbiB0aHJlYWQgd2hlbmV2ZXIgdGhlIENvb3JkaW5hdGVkR3JhcGhpY3Mg
c3RhdGUKKyAgICAgICAgZGVtYW5kcyBpdCwgb3Igd2hlbmV2ZXIgdGhlcmUgYXJlIGNsaWVudHMg
cmVnaXN0ZXJlZCB0byB0aGF0IG1vbml0b3IgdGhhdAorICAgICAgICByZXF1aXJlIGFuIHVwZGF0
ZSAoZS5nLiBhIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGNhbGxiYWNrKS4gQWZ0ZXIgdGhlCisg
ICAgICAgIHVwZGF0ZSBvbiB0aGUgY29tcG9zaXRpb24gdGhyZWFkIGlzIGZpbmlzaGVkLCBhbmQg
dGhlIERpc3BsYXlSZWZyZXNoTW9uaXRvcgorICAgICAgICBvYmplY3QgcmVxdWlyZXMgYW4gdXBk
YXRlLCBhIGNhbGxiYWNrIGF0IHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBsYXllcgorICAgICAg
ICBmbHVzaCB0aW1lciBpcyBzY2hlZHVsZWQgb24gdGhlIG1haW4gdGhyZWFkLiBJbiB0aGF0IGNh
bGxiYWNrIHdlIGhhbmRsZQorICAgICAgICBhbnkgY2xpZW50cyByZWdpc3RlcmVkIGZvciB0aGlz
IERpc3BsYXlSZWZyZXNoTW9uaXRvciBiZWZvcmUgcHJvY2VlZGluZworICAgICAgICB0byBoYW5k
bGUgYW55IGNoYW5nZXMgdG8gdGhlIENvb3JkaW5hdGVkR3JhcGhpY3Mgc2NlbmUuIEluIGNhc2Ug
dGhlCisgICAgICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciBjbGllbnRzIG9yIHRoZSBsYXllciBm
bHVzaGVzIGFscmVhZHkgcXVldWVkIHVwCisgICAgICAgIGFueSBjaGFuZ2VzIHRvIHRoZSBzdGF0
ZSwgd2UgaW1tZWRpYXRlbHkgYXNrIHRoZSBUaHJlYWRlZENvbXBvc2l0b3IgZm9yCisgICAgICAg
IGFuIHVwZGF0ZS4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlVmlld3BvcnQp
OgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1pdFNjZW5l
U3RhdGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDb21wb3NpdGluZ1J1bkxvb3A6OkNvbXBvc2l0aW5nUnVuTG9vcCk6CisgICAgICAgIChXZWJL
aXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpDb21w
b3NpdGluZ1J1bkxvb3A6OnNjaGVkdWxlVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9z
aXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5n
UnVuTG9vcDo6dXBkYXRlQ29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdS
dW5Mb29wOjp1cGRhdGVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdS
dW5Mb29wOjppc0N1cnJlbnQpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6
OnN0YXJ0VXBkYXRlVGltZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGlu
Z1J1bkxvb3A6OnN0b3BVcGRhdGVUaW1lcik6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV9kaXNwbGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENv
bXBvc2l0b3I6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlVmlld3BvcnQpOgorICAgICAgICAo
V2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OnNjaGVkdWxlRGlzcGxheUltbWVkaWF0ZWx5KToK
KyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUpOgor
ICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OnNjZW5lVXBkYXRlRmluaXNoZWQp
OgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OmRpc3BsYXlSZWZyZXNoTW9u
aXRvcik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTmV4dEZy
YW1lSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OmNvbXBs
ZXRlQ29vcmRpbmF0ZWRVcGRhdGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
Q29tcG9zaXRvcjo6Y29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpwZXJmb3JtRnJhbWVDb21wbGV0aW9uKToK
KyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
VGhyZWFkZWRDb21wb3NpdG9yLmg6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpU
aHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
RGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVpcmVzRGlzcGxheVJl
ZnJlc2hDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpkaXNwYXRjaERpc3BsYXlSZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVzaENhbGxi
YWNrKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0Nv
bXBvc2l0aW5nUnVuTG9vcC5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVy
YXRlZERyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWREcmF3aW5n
QXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oOgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3Ip
OgorCiAyMDE3LTA0LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCBUaW1lcjo6c3RhcnRSZXBlYXRpbmcoKSBvdmVybG9hZCB0YWtpbmcgYSBkb3VibGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IGRmMGQ3ZmZmMTU4MTgzMjYzMjYwNTQyMzYxMTM4ZDg0OTVmMDIwMzku
LjI0NzJiNmY0MmNlMTY3ZmQ3MzM4N2ZiMjE0M2FjYjc0NzE2Nzk3NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApA
QCAtMTA0OSw3ICsxMDQ5LDcgQEAKICNkZWZpbmUgVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X1RJTUVSIDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X0RJU1BMQVlfTU9OSVRPUiAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Z2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9v
cFNvdXJjZVByaW9yaXR5LmgKaW5kZXggNDk4ZGQ2YmNiNGVhYjViYzM5YTk2Yjk1ODVlMjlmMjMx
MzA0NWQwYi4uYTFkZGUxM2RkMjgxZjY4MDE2YjgyY2JmOWUwMDNjNzM1YThkYzRlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oCkBAIC02NCw2ICs2NCw5
IEBAIGVudW0gUnVuTG9vcFNvdXJjZVByaW9yaXR5IHsKICAgICAvLyBMYXllciBmbHVzaC4KICAg
ICBMYXllckZsdXNoVGltZXIgPSAtMTAwLAogCisgICAgLy8gRGlzcGxheVJlZnJlc2hNb25pdG9y
IHRpbWVyLCBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgTGF5ZXJGbHVzaFRpbWVy
LgorICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvclRpbWVyID0gLTEwMCwKKwogICAgIC8vIFJlbmRl
cmluZyB0aW1lciBpbiB0aGUgbWFpbiB0aHJlYWQgd2hlbiBhY2NlbGVyYXRlZCBjb21wb3NpdGlu
ZyBpcyBub3QgdXNlZC4KICAgICBOb25BY2NlbGVyYXRlZERyYXdpbmdUaW1lciA9IDEwMAogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTA2YzgwZGI4MWJlMTdlZmE0ZjJkOTFmYTllYmJiNmVm
Y2RlNzFlNC4uNDA1OGIyY2JjMDQ1MzFhM2QxYTRhMDM0MTRmMDI1NTI2NTg0NjA0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTIyNTMsNyArMjI1Myw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNs
aWVudC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvaW50M0QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAppbmRleCAyY2JlZmNjOTUwZTc5YTUzYzJm
NTg0MDNmOTRiMTc0ZmZjZmJhMDBkLi43NzgwZWE4ZmRiM2FmMzBlNDA3ODhmZTJjNDgxM2VmODQw
ZTc3MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNw
bGF5UmVmcmVzaE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIFBM
QVRGT1JNKElPUykKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCIKLSNlbHNl
CisjZWxpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
LmgiCiAjZW5kaWYKIApAQCAtNDcsNiArNDcsNyBAQCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25p
dG9yPiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZURlZmF1bHREaXNwbGF5UmVmcmVzaAog
I2lmIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpj
cmVhdGUoZGlzcGxheUlEKTsKICNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShkaXNwbGF5SUQpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDhjYmQyYmUzYzg0N2Q4OWRjNjRi
MzFhNjJhZTUyMGRjYjhhMGRlN2QuLjRmZGZmYjAzNjdhNjM2ZDkxMDBhODg2NzhmZmU5YTUyMjNi
NmQyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCkBAIC03MTQsNiArNzE0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X3Nob3VsZFVwZGF0ZVBsYXRmb3JtTGF5ZXIgPSBmYWxzZTsKKyAgICBtX2xheWVyU3RhdGUucGxh
dGZvcm1MYXllclVwZGF0ZWQgPSB0cnVlOwogICAgIGlmIChtX3BsYXRmb3JtTGF5ZXIpCiAgICAg
ICAgIG1fcGxhdGZvcm1MYXllci0+c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKaW5k
ZXggYzgxMDUzMGI1ZTdmZmY2NTM0ZDI1MmMzNDY5MDFkNWEzZGZhNWY5My4uZWQ0ZjM0YmEwM2Nh
NWM5NGUxY2I2OGIzMTU0YmEwM2E5NDBjZjRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaApAQCAtODYsNiArODYsNyBAQCBzdHJ1
Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUgewogICAgICAgICAgICAgYm9vbCBjaGls
ZHJlbkNoYW5nZWQ6IDE7CiAgICAgICAgICAgICBib29sIHJlcGFpbnRDb3VudENoYW5nZWQgOiAx
OwogICAgICAgICAgICAgYm9vbCBwbGF0Zm9ybUxheWVyQ2hhbmdlZDogMTsKKyAgICAgICAgICAg
IGJvb2wgcGxhdGZvcm1MYXllclVwZGF0ZWQ6IDE7CiAgICAgICAgICAgICBib29sIHBsYXRmb3Jt
TGF5ZXJTaG91bGRTd2FwQnVmZmVyczogMTsKICAgICAgICAgICAgIGJvb2wgaXNTY3JvbGxhYmxl
Q2hhbmdlZDogMTsKICAgICAgICAgICAgIGJvb2wgY29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdl
ZDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNGFhMjA2YTAzYThlZTk3MjY2YWUx
N2E4NTM1MzI3OTA5YTkyYjZmNC4uZmYyNTBhZTFkNDU3N2U5NWExOWY4N2MzOWMyMGQ2ZDc0NmI1
MDBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTY1LDYgKzY1LDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAogICAgIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRT
dXJmYWNlLmNwcAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKICAgICBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAog
CiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDEx
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggYjk0
ZmFlYTJjYzRhMmFmMWM0Njk0ZGViYmUxOWI5OTU5MDkyODkzYi4uNTZlNmY4YjAwZjU1NmQ2YjNm
OTU4NzgyMDQ1ODljODE2MmY5YWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCkBAIC0xMjcsMTIgKzEyNyw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVWaWV3cG9ydCgpCiB7Ci0g
ICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGRpc3BhdGNoT25DbGllbnRS
dW5Mb29wKFt0aGlzXSB7Ci0gICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xp
ZW50LT51cGRhdGVWaWV3cG9ydCgpOwotICAgIH0pOworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPnVwZGF0ZVZpZXdwb3J0KCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjphZGp1c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKGNvbnN0IEZsb2F0UG9pbnQm
IGNvbnRlbnRQb3NpdGlvbikKQEAgLTU0Nyw5ICs1NDMsNiBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Y29tbWl0U2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUmCiAKICAgICBjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpOwogICAgIHJl
bW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVlZGVkKCk7Ci0KLSAgICAvLyBUaGUgcGVuZGlu
ZyB0aWxlcyBzdGF0ZSBpcyBvbiBpdHMgd2F5IGZvciB0aGUgc2NyZWVuLCB0ZWxsIHRoZSB3ZWIg
cHJvY2VzcyB0byByZW5kZXIgdGhlIG5leHQgb25lLgotICAgIHJlbmRlck5leHRGcmFtZSgpOwog
fQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVuZGVyTmV4dEZyYW1lKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5kZXggMTI4YjdiZTc2ZTgwM2Rk
ZWZmNGZjNTkxNDI4MTUzZGEyMDVkYWJlYS4uOTllYTdkYTgxY2JhM2MyYzYwYzExZjJkYWFiMjNh
ZmYwYTc0M2JiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAg
LTgwLDYgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogCiAgICAg
dm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZSYpOworICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAKICAgICB2b2lkIHNldFZpZXdC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fdmlld0JhY2tn
cm91bmRDb2xvciA9IGNvbG9yOyB9CiAgICAgV2ViQ29yZTo6Q29sb3Igdmlld0JhY2tncm91bmRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0JhY2tncm91bmRDb2xvcjsgfQpAQCAtMTIzLDcg
KzEyNCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZChGdW5jdGlv
bjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGlzcGF0Y2hPbkNsaWVudFJ1bkxvb3AoRnVuY3Rpb248
dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0KCk7Ci0gICAgdm9pZCByZW5kZXJO
ZXh0RnJhbWUoKTsKIAogICAgIHZvaWQgY3JlYXRlTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRM
YXllcklEKTsKICAgICB2b2lkIGRlbGV0ZUxheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3Np
dGluZ1J1bkxvb3AuY3BwCmluZGV4IGFhZGQ2YWJiMjZhNTZmYTQ0NzZiYWE1N2ZkMWZmOTE3YzNk
YzYxMjAuLmQxOTEyNDVjMmYyZDI4ZDU1MzA5OWVjNjlmYjQxYmJiNmM0NWQ5YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxv
b3AuY3BwCkBAIC0xMTAsOCArMTEwLDEzIEBAIHByaXZhdGU6CiAKIENvbXBvc2l0aW5nUnVuTG9v
cDo6Q29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiB1cGRhdGVGdW5j
dGlvbikKICAgICA6IG1fdXBkYXRlVGltZXIoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVu
TG9vcCh0aGlzKSwgdGhpcywgJkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCkK
KyNpZm5kZWYgTkRFQlVHCisgICAgLCBtX3J1bkxvb3AoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9u
KCkucnVuTG9vcCh0aGlzKSkKKyNlbmRpZgogICAgICwgbV91cGRhdGVGdW5jdGlvbihXVEZNb3Zl
KHVwZGF0ZUZ1bmN0aW9uKSkKIHsKKyAgICBtX3VwZGF0ZVN0YXRlLnN0b3JlKFVwZGF0ZVN0YXRl
OjpDb21wbGV0ZWQpOworCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX3VwZGF0ZVRp
bWVyLnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRV
cGRhdGVUaW1lcik7CiAjZW5kaWYKQEAgLTE0NCwzMCArMTQ5LDUzIEBAIHZvaWQgQ29tcG9zaXRp
bmdSdW5Mb29wOjpwZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikK
ICAgICBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbi53YWl0KG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9u
TXV0ZXgpOwogfQogCi12b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RhcnRVcGRhdGVUaW1lcihV
cGRhdGVUaW1pbmcgdGltaW5nKQorYm9vbCBDb21wb3NpdGluZ1J1bkxvb3A6OmlzQWN0aXZlKCkK
IHsKLSAgICBpZiAobV91cGRhdGVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Cisg
ICAgcmV0dXJuIG1fdXBkYXRlU3RhdGUubG9hZCgpICE9IFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQ7
Cit9CiAKLSAgICBjb25zdCBzdGF0aWMgZG91YmxlIHRhcmdldEZQUyA9IDYwOwotICAgIGRvdWJs
ZSBuZXh0VXBkYXRlVGltZSA9IDA7Ci0gICAgaWYgKHRpbWluZyA9PSBXYWl0VW50aWxOZXh0RnJh
bWUpCi0gICAgICAgIG5leHRVcGRhdGVUaW1lID0gc3RkOjptYXgoKDEgLyB0YXJnZXRGUFMpIC0g
KG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9sYXN0VXBkYXRlVGltZSksIDAuMCk7
Cit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVVcGRhdGUoKQoreworICAgIGlmICht
X3VwZGF0ZVN0YXRlLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRhdGVTdGF0ZTo6Q29tcGxldGVk
LCBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykgPT0gVXBkYXRlU3RhdGU6OkNvbXBsZXRlZCkgewor
ICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAotICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KG5leHRVcGRhdGVUaW1lKTsK
KyAgICBpZiAobV91cGRhdGVTdGF0ZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoVXBkYXRlU3RhdGU6
OkluUHJvZ3Jlc3MsIFVwZGF0ZVN0YXRlOjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uKSA9PSBVcGRh
dGVTdGF0ZTo6SW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIENvbXBvc2l0
aW5nUnVuTG9vcDo6c3RvcFVwZGF0ZVRpbWVyKCkKK3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpz
dG9wVXBkYXRlcygpCiB7CiAgICAgbV91cGRhdGVUaW1lci5zdG9wKCk7CisgICAgbV91cGRhdGVT
dGF0ZS5zdG9yZShVcGRhdGVTdGF0ZTo6Q29tcGxldGVkKTsKK30KKwordm9pZCBDb21wb3NpdGlu
Z1J1bkxvb3A6OnVwZGF0ZUNvbXBsZXRlZCgpCit7CisgICAgaWYgKG1fdXBkYXRlU3RhdGUuY29t
cGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRlOjpJblByb2dyZXNzLCBVcGRhdGVTdGF0ZTo6
Q29tcGxldGVkKSA9PSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fdXBkYXRlU3RhdGUuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRl
OjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uLCBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykgPT0gVXBk
YXRlU3RhdGU6OlBlbmRpbmdBZnRlckNvbXBsZXRpb24pIHsKKyAgICAgICAgbV91cGRhdGVUaW1l
ci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVy
RmlyZWQoKQogewogICAgIG1fdXBkYXRlRnVuY3Rpb24oKTsKLSAgICBtX2xhc3RVcGRhdGVUaW1l
ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCiti
b29sIENvbXBvc2l0aW5nUnVuTG9vcDo6aXNDdXJyZW50KCkKK3sKKyAgICByZXR1cm4gJlJ1bkxv
b3A6OmN1cnJlbnQoKSA9PSAmbV9ydW5Mb29wOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVu
TG9vcC5oCmluZGV4IDUyYjVkN2QxMDAxMTFjNGNiOGQzMWMwYzE2ZTJiZDQwZTNkODY4NDYuLjZi
YzlkMjIwZTE5MmZmMzY1YzBmMTEyNzI1ODU0MTY5OTAxNDk3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9D
b21wb3NpdGluZ1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAor
I2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC00
MSwyOSArNDIsMzkgQEAgY2xhc3MgQ29tcG9zaXRpbmdSdW5Mb29wIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDb21wb3NpdGluZ1J1bkxvb3ApOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIGVudW0gVXBkYXRlVGltaW5nIHsKLSAgICAgICAgSW1tZWRpYXRl
LAotICAgICAgICBXYWl0VW50aWxOZXh0RnJhbWUsCi0gICAgfTsKLQogICAgIENvbXBvc2l0aW5n
UnVuTG9vcChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogICAgIH5Db21wb3NpdGluZ1J1bkxv
b3AoKTsKIAogICAgIHZvaWQgcGVyZm9ybVRhc2soRnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAg
dm9pZCBwZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKLSAgICB2b2lkIHN0
YXJ0VXBkYXRlVGltZXIoVXBkYXRlVGltaW5nID0gSW1tZWRpYXRlKTsKLSAgICB2b2lkIHN0b3BV
cGRhdGVUaW1lcigpOworICAgIGJvb2wgaXNBY3RpdmUoKTsKKyAgICB2b2lkIHNjaGVkdWxlVXBk
YXRlKCk7CisgICAgdm9pZCBzdG9wVXBkYXRlcygpOworCisgICAgdm9pZCB1cGRhdGVDb21wbGV0
ZWQoKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBib29sIGlzQ3VycmVudCgpOworI2VuZGlmCiAK
IHByaXZhdGU6CisgICAgZW51bSBjbGFzcyBVcGRhdGVTdGF0ZSB7CisgICAgICAgIENvbXBsZXRl
ZCwKKyAgICAgICAgSW5Qcm9ncmVzcywKKyAgICAgICAgUGVuZGluZ0FmdGVyQ29tcGxldGlvbiwK
KyAgICB9OworCiAgICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKCk7CiAKICAgICBSdW5Mb29wOjpU
aW1lcjxDb21wb3NpdGluZ1J1bkxvb3A+IG1fdXBkYXRlVGltZXI7CisjaWZuZGVmIE5ERUJVRwor
ICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsKKyNlbmRpZgogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gbV91cGRhdGVGdW5jdGlvbjsKKyAgICBBdG9taWM8VXBkYXRlU3RhdGU+IG1fdXBkYXRlU3Rh
dGU7CiAgICAgTG9jayBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11dGV4OwogICAgIENvbmRpdGlv
biBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbjsKLQotICAgIGRvdWJsZSBtX2xhc3RVcGRhdGVUaW1l
IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGM3
YWQ4MzdjODMzMjk2NzM1NGNhNzU1Nzg0MjM0ODNlMjdiMzY3ZjMuLjg5OGZiYzFiYzMxMmFhMGI2
NGE4N2NiY2Y0YmNiY2ZkYTg1ZWNhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogCiAjaW5jbHVkZSAiQ29t
cG9zaXRpbmdSdW5Mb29wLmgiCisjaW5jbHVkZSAiVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0
b3IuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIApAQCAtNTYsNyArNTcsMTMgQEAgVGhyZWFk
ZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQsIGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2kKICAgICAsIG1fcGFpbnRGbGFncyhwYWludEZsYWdzKQogICAgICwg
bV9uZWVkc1Jlc2l6ZSghdmlld3BvcnRTaXplLmlzRW1wdHkoKSkKICAgICAsIG1fY29tcG9zaXRp
bmdSdW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyBy
ZW5kZXJMYXllclRyZWUoKTsgfSkpCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikKKyAgICAsIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yKGFkb3B0UmVmKG5l
dyBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcigqdGhpcykpKQorI2VuZGlmCiB7CisgICAg
bV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLnN0b3JlKGZhbHNlKTsKKyAgICBtX2Nvb3JkaW5hdGVV
cGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5zdG9yZShmYWxzZSk7CisKICAgICBtX2NvbXBvc2l0
aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKICAgICAgICAgbV9zY2VuZSA9IGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUodGhpcykpOwogICAgICAgICBpZiAobV9uYXRpdmVTdXJmYWNlSGFuZGxlKSB7
CkBAIC02NCw2ICs3MSw4IEBAIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9y
KENsaWVudCYgY2xpZW50LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpCiAgICAgICAgICAgICBt
X3NjZW5lLT5zZXRBY3RpdmUodHJ1ZSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9z
Y2VuZS0+c2V0QWN0aXZlKGZhbHNlKTsKKworICAgICAgICBtX2ZyYW1lQ29tcGxldGlvbi50aW1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8VGhyZWFkZWRDb21wb3NpdG9yPj4o
UnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGhyZWFkZWRDb21wb3NpdG9yOjpwZXJmb3JtRnJh
bWVDb21wbGV0aW9uKTsKICAgICB9KTsKIH0KIApAQCAtODksMTggKzk4LDIyIEBAIHZvaWQgVGhy
ZWFkZWRDb21wb3NpdG9yOjpjcmVhdGVHTENvbnRleHQoKQogdm9pZCBUaHJlYWRlZENvbXBvc2l0
b3I6OmludmFsaWRhdGUoKQogewogICAgIG1fc2NlbmUtPmRldGFjaCgpOwotICAgIG1fY29tcG9z
aXRpbmdSdW5Mb29wLT5zdG9wVXBkYXRlVGltZXIoKTsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+c3RvcFVwZGF0ZXMoKTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tT
eW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgbV9m
cmFtZUNvbXBsZXRpb24udGltZXIgPSBudWxscHRyOwogICAgICAgICBtX3NjZW5lLT5wdXJnZUdM
UmVzb3VyY2VzKCk7CiAgICAgICAgIG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgIG1fc2Nl
bmUgPSBudWxscHRyOwogICAgIH0pOworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9E
SVNQTEFZX01PTklUT1IpCisgICAgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3ItPmludmFsaWRhdGUo
KTsKKyNlbmRpZgogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGlu
Zyh1aW50NjRfdCBoYW5kbGUpCiB7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0b3BVcGRh
dGVUaW1lcigpOworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdG9wVXBkYXRlcygpOwogICAg
IG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgaGFuZGxlXSB7CiAgICAgICAgIC8vIEEgbmV3IG5hdGl2ZSBo
YW5kbGUgY2FuJ3QgYmUgc2V0IHdpdGhvdXQgZGVzdHJveWluZyB0aGUgcHJldmlvdXMgb25lIGZp
cnN0IGlmIGFueS4KICAgICAgICAgQVNTRVJUKCEhaGFuZGxlIF4gISFtX25hdGl2ZVN1cmZhY2VI
YW5kbGUpOwpAQCAtMTY0LDEyICsxNzcsMTIgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmNv
bW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmYKIAog
dm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0KCkKIHsKLSAgICBtX2NvbXBv
c2l0aW5nUnVuTG9vcC0+c3RhcnRVcGRhdGVUaW1lcihDb21wb3NpdGluZ1J1bkxvb3A6OldhaXRV
bnRpbE5leHRGcmFtZSk7CisgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRl
KCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzY2hlZHVsZURpc3BsYXlJbW1lZGlh
dGVseSgpCiB7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0YXJ0VXBkYXRlVGltZXIoQ29t
cG9zaXRpbmdSdW5Mb29wOjpJbW1lZGlhdGUpOworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5z
Y2hlZHVsZVVwZGF0ZSgpOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Zm9yY2VSZXBh
aW50KCkKQEAgLTIwNSwxOCArMjE4LDczIEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5k
ZXJMYXllclRyZWUoKQogICAgIG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZpZXdw
b3J0VHJhbnNmb3JtLCAxLCBjbGlwUmVjdCwgQ29sb3I6OnRyYW5zcGFyZW50LCAhbV9kcmF3c0Jh
Y2tncm91bmQsIG1fc2Nyb2xsUG9zaXRpb24sIG1fcGFpbnRGbGFncyk7CiAKICAgICBtX2NvbnRl
eHQtPnN3YXBCdWZmZXJzKCk7CisKKyAgICBjb25zdCBzdGF0aWMgZG91YmxlIHRhcmdldEZQUyA9
IDYwOworICAgIGRvdWJsZSBuZXh0VXBkYXRlVGltZSA9IHN0ZDo6bWF4KCgxIC8gdGFyZ2V0RlBT
KSAtIChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fZnJhbWVDb21wbGV0aW9uLmxh
c3RUaW1lKSwgMC4wKTsKKyAgICBtX2ZyYW1lQ29tcGxldGlvbi50aW1lci0+c3RhcnRPbmVTaG90
KG5leHRVcGRhdGVUaW1lKTsKK30KKwordm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNjZW5lVXBk
YXRlRmluaXNoZWQoKQoreworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENh
bGxiYWNrID0gbV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLmxvYWQoKQorICAgICAgICB8fCBtX2Rp
c3BsYXlSZWZyZXNoTW9uaXRvci0+cmVxdWlyZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7Cisg
ICAgYm9vbCBzaG91bGRDb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQgPSBtX2Nv
b3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5sb2FkKCk7CisKKyAgICBpZiAoc2hv
dWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKQorICAgICAgICBtX2Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci0+ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CisgICAgaWYgKCFz
aG91bGRDb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQpCisgICAgICAgIG1fY29t
cG9zaXRpbmdSdW5Mb29wLT51cGRhdGVDb21wbGV0ZWQoKTsKIH0KIAogdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
JiBzdGF0ZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFJlZlB0cjxDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU+IHNjZW5lID0gbV9zY2VuZTsKLSAgICBtX3NjZW5lLT5hcHBl
bmRVcGRhdGUoW3NjZW5lLCBzdGF0ZV0geworICAgIG1fc2NlbmUtPmFwcGVuZFVwZGF0ZShbdGhp
cywgc2NlbmUsIHN0YXRlXSB7CiAgICAgICAgIHNjZW5lLT5jb21taXRTY2VuZVN0YXRlKHN0YXRl
KTsKKworICAgICAgICBtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWUuc3RvcmUodHJ1ZSk7CisgICAg
ICAgIGJvb2wgY29vcmRpbmF0ZVVwZGF0ZSA9IHN0ZDo6YW55X29mKHN0YXRlLmxheWVyc1RvVXBk
YXRlLmJlZ2luKCksIHN0YXRlLmxheWVyc1RvVXBkYXRlLmVuZCgpLAorICAgICAgICAgICAgW10o
Y29uc3Qgc3RkOjpwYWlyPENvb3JkaW5hdGVkTGF5ZXJJRCwgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyU3RhdGU+JiBpdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpdC5zZWNvbmQucGxhdGZv
cm1MYXllckNoYW5nZWQgfHwgaXQuc2Vjb25kLnBsYXRmb3JtTGF5ZXJVcGRhdGVkOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50
LnN0b3JlKGNvb3JkaW5hdGVVcGRhdGUpOwogICAgIH0pOwogCiAgICAgc2NoZWR1bGVEaXNwbGF5
SW1tZWRpYXRlbHkoKTsKIH0KIAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQ
TEFZX01PTklUT1IpCitSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaHJl
YWRlZENvbXBvc2l0b3I6OmRpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkK
K3sKKyAgICByZXR1cm4gbV9kaXNwbGF5UmVmcmVzaE1vbml0b3I7Cit9CisKK3ZvaWQgVGhyZWFk
ZWRDb21wb3NpdG9yOjpyZW5kZXJOZXh0RnJhbWVJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fY2xp
ZW50UmVuZGVyc05leHRGcmFtZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcodHJ1ZSwgZmFsc2UpKQor
ICAgICAgICBtX3NjZW5lLT5yZW5kZXJOZXh0RnJhbWUoKTsKK30KKwordm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OmNvbXBsZXRlQ29vcmRpbmF0ZWRVcGRhdGVJZk5lZWRlZCgpCit7CisgICAgaWYg
KG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50LmNvbXBhcmVFeGNoYW5nZVN0
cm9uZyh0cnVlLCBmYWxzZSkpCisgICAgICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT51cGRhdGVD
b21wbGV0ZWQoKTsKK30KKwordm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmNvb3JkaW5hdGVVcGRh
dGVDb21wbGV0aW9uV2l0aENsaWVudCgpCit7CisgICAgbV9jb29yZGluYXRlVXBkYXRlQ29tcGxl
dGlvbldpdGhDbGllbnQuc3RvcmUodHJ1ZSk7CisgICAgaWYgKCFtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+aXNBY3RpdmUoKSkKKyAgICAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBk
YXRlKCk7Cit9CisjZW5kaWYKKwordm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnBlcmZvcm1GcmFt
ZUNvbXBsZXRpb24oKQoreworICAgIHNjZW5lVXBkYXRlRmluaXNoZWQoKTsKKyAgICBtX2ZyYW1l
Q29tcGxldGlvbi5sYXN0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworfQor
CiB9CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5o
CmluZGV4IGJhYzgxYTM5NjIyMzg1MzE5MDlhZDQ0ZGViMDE0ZjdhZjNjMzc0ODkuLjgwOGNlMWUw
ZGEzYmI1YWJlNzAwMDBhMzM0NTI2NTg0ZDRlMzNiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKQEAgLTMzLDEwICsz
MywxNSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oPgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU7CiB9CkBAIC00
NSw2ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU7CiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQ7CitjbGFzcyBU
aHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKIAogY2xhc3MgVGhyZWFkZWRDb21wb3NpdG9y
IDogcHVibGljIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCwgcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFRocmVhZGVkQ29tcG9zaXRvcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRocmVhZGVkQ29tcG9zaXRvcik7CkBAIC03Myw2ICs3OSwxMyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGZvcmNlUmVwYWludCgpOwogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X0RJU1BMQVlfTU9OSVRPUikKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yPiBkaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOwor
ICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lSWZOZWVkZWQoKTsKKyAgICB2b2lkIGNvbXBsZXRlQ29v
cmRpbmF0ZWRVcGRhdGVJZk5lZWRlZCgpOworICAgIHZvaWQgY29vcmRpbmF0ZVVwZGF0ZUNvbXBs
ZXRpb25XaXRoQ2xpZW50KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBUaHJlYWRlZENvbXBv
c2l0b3IoQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0IHNjYWxlRmFjdG9y
LCB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlLCBTaG91bGREb0ZyYW1lU3luYywgV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyk7CiAKQEAgLTgyLDYgKzk1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZW5kZXJMYXll
clRyZWUoKTsKKyAgICB2b2lkIHNjZW5lVXBkYXRlRmluaXNoZWQoKTsKICAgICB2b2lkIHNjaGVk
dWxlRGlzcGxheUltbWVkaWF0ZWx5KCk7CiAKICAgICB2b2lkIGNyZWF0ZUdMQ29udGV4dCgpOwpA
QCAtMTAwLDYgKzExNCwyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc1Jlc2l6ZSB7IGZh
bHNlIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX2NvbXBv
c2l0aW5nUnVuTG9vcDsKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZ
X01PTklUT1IpCisgICAgUmVmUHRyPFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yPiBtX2Rp
c3BsYXlSZWZyZXNoTW9uaXRvcjsKKyNlbmRpZgorCisgICAgQXRvbWljPGJvb2w+IG1fY2xpZW50
UmVuZGVyc05leHRGcmFtZTsKKyAgICBBdG9taWM8Ym9vbD4gbV9jb29yZGluYXRlVXBkYXRlQ29t
cGxldGlvbldpdGhDbGllbnQ7CisKKyAgICB2b2lkIHBlcmZvcm1GcmFtZUNvbXBsZXRpb24oKTsK
KworICAgIHN0cnVjdCB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxU
aHJlYWRlZENvbXBvc2l0b3I+PiB0aW1lcjsKKyAgICAgICAgZG91YmxlIGxhc3RUaW1lIHsgMCB9
OworICAgIH0gbV9mcmFtZUNvbXBsZXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNDg3MDk1OGE0
MDYxNzBiODhmNjc2YmI3N2I1ZjdhY2Y2YzUzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKSAmJiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAiQ29tcG9zaXRpbmdSdW5Mb29w
LmgiCisjaW5jbHVkZSAiVGhyZWFkZWRDb21wb3NpdG9yLmgiCisjaW5jbHVkZSA8d3RmL2dsaWIv
UnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitUaHJlYWRl
ZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IoVGhy
ZWFkZWRDb21wb3NpdG9yJiBjb21wb3NpdG9yKQorICAgIDogV2ViQ29yZTo6RGlzcGxheVJlZnJl
c2hNb25pdG9yKDApCisgICAgLCBtX2Rpc3BsYXlSZWZyZXNoVGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlSZWZyZXNoQ2Fs
bGJhY2spCisgICAgLCBtX2NvbXBvc2l0b3IoJmNvbXBvc2l0b3IpCit7CisjaWYgVVNFKEdMSUJf
RVZFTlRfTE9PUCkKKyAgICBtX2Rpc3BsYXlSZWZyZXNoVGltZXIuc2V0UHJpb3JpdHkoUnVuTG9v
cFNvdXJjZVByaW9yaXR5OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7CisjZW5kaWYKK30K
KworYm9vbCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxs
YmFjaygpCit7CisgICAgaWYgKCFtX2NvbXBvc2l0b3IpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4KCkpOworICAgIHNldElzU2NoZWR1bGVkKHRy
dWUpOworCisgICAgaWYgKGlzUHJldmlvdXNGcmFtZURvbmUoKSkKKyAgICAgICAgbV9jb21wb3Np
dG9yLT5jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQoKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1aXJl
c0Rpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4
KCkpOworICAgIHJldHVybiBpc1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFtZURvbmUoKTsK
K30KKwordm9pZCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGF0Y2hEaXNwbGF5
UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBtX2Rpc3BsYXlSZWZyZXNoVGltZXIuc3RhcnRPbmVT
aG90KDApOworfQorCit2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjppbnZhbGlk
YXRlKCkKK3sKKyAgICBtX2Rpc3BsYXlSZWZyZXNoVGltZXIuc3RvcCgpOworICAgIG1fY29tcG9z
aXRvciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6
OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQoreworICAgIGJvb2wgc2hvdWxkSGFuZGxlRGlzcGxh
eVJlZnJlc2hOb3RpZmljYXRpb24gPSBmYWxzZTsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG11dGV4KCkpOworICAgICAgICBzaG91bGRIYW5kbGVEaXNwbGF5UmVmcmVzaE5vdGlm
aWNhdGlvbiA9IGlzU2NoZWR1bGVkKCkgJiYgaXNQcmV2aW91c0ZyYW1lRG9uZSgpOworICAgICAg
ICBpZiAoc2hvdWxkSGFuZGxlRGlzcGxheVJlZnJlc2hOb3RpZmljYXRpb24pCisgICAgICAgICAg
ICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxk
SGFuZGxlRGlzcGxheVJlZnJlc2hOb3RpZmljYXRpb24pCisgICAgICAgIERpc3BsYXlSZWZyZXNo
TW9uaXRvcjo6aGFuZGxlRGlzcGxheVJlZnJlc2hlZE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZCh0
aGlzKTsKKworICAgIGlmIChtX2NvbXBvc2l0b3IpIHsKKyAgICAgICAgbV9jb21wb3NpdG9yLT5y
ZW5kZXJOZXh0RnJhbWVJZk5lZWRlZCgpOworICAgICAgICBtX2NvbXBvc2l0b3ItPmNvbXBsZXRl
Q29vcmRpbmF0ZWRVcGRhdGVJZk5lZWRlZCgpOworICAgICAgICBpZiAoaXNTY2hlZHVsZWQoKSkK
KyAgICAgICAgICAgIG1fY29tcG9zaXRvci0+Y29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRo
Q2xpZW50KCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgJiYgVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3Bs
YXlSZWZyZXNoTW9uaXRvci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzRmMmVjYzY4MzRmODM2OTFhMTk2YmMyNjk5ZTU0NjI4NjgwZTIzOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpICYmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oPgorI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBUaHJlYWRlZENvbXBvc2l0
b3I7CisKK2NsYXNzIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yIDogcHVibGljIFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvciB7CitwdWJsaWM6CisgICAgVGhyZWFkZWREaXNwbGF5
UmVmcmVzaE1vbml0b3IoVGhyZWFkZWRDb21wb3NpdG9yJik7CisKKyAgICBib29sIHJlcXVlc3RS
ZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKworICAgIGJvb2wgcmVxdWlyZXNEaXNwbGF5UmVm
cmVzaENhbGxiYWNrKCk7CisgICAgdm9pZCBkaXNwYXRjaERpc3BsYXlSZWZyZXNoQ2FsbGJhY2so
KTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGRpc3BsYXlS
ZWZyZXNoQ2FsbGJhY2soKTsKKyAgICBSdW5Mb29wOjpUaW1lcjxUaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvcj4gbV9kaXNwbGF5UmVmcmVzaFRpbWVyOworICAgIFRocmVhZGVkQ29tcG9zaXRv
ciogbV9jb21wb3NpdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpICYmIFVTRShSRVFVRVNUX0FOSU1B
VElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKaW5kZXgg
ZjQyODIxMGZiYWZhYjMwZDE4M2JlYThhNjIxZjdjMjAzNDk0NDhlNS4uMTgxMDE5MTc4MDFhNTRj
M2UxYTYyNGFiZWMyZTVjNWEyMGRmNWFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcApAQCAt
MjIzLDYgKzIyMywxNSBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnNjaGVkdWxlQ29t
cG9zaXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHkoKQogICAgIHNjaGVkdWxlQ29tcG9zaXRpbmdM
YXllckZsdXNoKCk7CiB9CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExB
WV9NT05JVE9SKQorUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gQWNjZWxl
cmF0ZWREcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC0+Y3Jl
YXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCk7Cit9CisjZW5kaWYKKwogdm9pZCBB
Y2NlbGVyYXRlZERyYXdpbmdBcmVhOjp1cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50NjRfdCBz
dGF0ZUlELCBib29sIHJlc3BvbmRJbW1lZGlhdGVseSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Is
IGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkKIHsKICAg
ICBBU1NFUlQoIW1faW5VcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aAppbmRleCBlYWQzMmFiNmQ0M2UyZDNjNDQwOTM4NTcwZGRjMzE0Yjk2MjU0MTkzLi43MmE3YmMy
NjUzZGZkN2NiOGM2OTZhOTUwMDBhOWM1MmVlMGVlYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgK
QEAgLTU5LDYgKzU5LDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRp
bmdMYXllckZsdXNoKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5
ZXJGbHVzaEltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheUlEKTsKKyNlbmRpZgorCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBv
c2l0aW5nKHVpbnQ2NF90KSBvdmVycmlkZTsKICAgICB2b2lkIGRlc3Ryb3lOYXRpdmVTdXJmYWNl
SGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCmluZGV4IDI4MTM1M2I4YWUzZTAwZGQzOWIzMjEwYWU0YTU3Mjk4YTUzODEyZWYuLmY1
OTlhZTNmZjBlNzU1ZDkyOTMyOGI5ZjIyYTI4ZmNmMWRhNzM0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAKQEAgLTI0Nyw2ICsyNDcsMTMgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6c2V0SXNEaXNjYXJkYWJsZShib29sIGRpc2NhcmRhYmxlKQogICAgICAg
ICBkaWRDaGFuZ2VWaWV3cG9ydCgpOwogfQogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX0RJU1BMQVlfTU9OSVRPUikKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3I+IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQoreworICAgIHJldHVybiBtX2Nv
bXBvc2l0b3ItPmRpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpOworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggY2E4YWVhYzYzYzAxM2U0ZDliMGQ3OTlk
NmU0ZmQ0NzUzNjQ1NWM0Yi4uMjZjYjUyYTg0YjllMTBhNWJhNjA2MmEzZmIyZmEwZTJmODdjNDYw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMDEsNiArMTAxLDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRGbHVzaFJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBv
dmVycmlkZSB7IH0KICAgICB2b2lkIGNvbW1pdFNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlJikgb3ZlcnJpZGU7CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlJRCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIGVudW0gY2xhc3MgRGlzY2Fy
ZGFibGVTeW5jQWN0aW9ucyB7CiAgICAgICAgIFVwZGF0ZVNpemUgPSAxIDw8IDEsCiAgICAgICAg
IFVwZGF0ZVZpZXdwb3J0ID0gMSA8PCAyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5kZXggNTFhZjU4MWM2NWMwMWIwODE1NWZiNmNm
YjY2N2QxZTMzYTExMzZjZC4uNzZjNTI3ZWI3MWI3NzVkYmUzN2ZjMWNhOGY0MjYyNjBjOGE2ZmQ4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVl
SG9zdC5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8
fCBVU0UoVEVYVFVSRV9NQVBQRVIpCiAKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTk2LDYgKzk4
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JD
aGFuZ2VkKCkgPSAwOwogI2VuZGlmCiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
RElTUExBWV9NT05JVE9SKQorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheUlEKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiB2aWV3T3Zl
cmxheVJvb3RMYXllcikgeyBtX3ZpZXdPdmVybGF5Um9vdExheWVyID0gdmlld092ZXJsYXlSb290
TGF5ZXI7IH0KIAogcHJvdGVjdGVkOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306682</attachid>
            <date>2017-04-10 04:30:53 -0700</date>
            <delta_ts>2017-04-11 07:45:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170599-20170410133051.patch</filename>
            <type>text/plain</type>
            <size>39591</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUxZGE3ZmRhYWZiZWNhOTAzYmNjMGRi
NzdiYTVlYWMzZjE5NWI2NTAuLmZjOTUxYjdhNDRlMTI2ODRlMmZiMzA1MzRjY2Y3MWMyN2Q0NzJj
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDQtMTAgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSB0aGUgRGlzcGxheVJlZnJlc2hN
b25pdG9yIGZhY2lsaXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVuYWJsZSBVU0VfUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SIGZvciB0aGUgR1RLKyBwb3J0LgorICAgICAgICAqIHd0Zi9n
bGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oOiBBZGQgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRv
clRpbWVyIGVudHJ5IHRoYXQKKyAgICAgICAgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgTGF5ZXJGbHVz
aFRpbWVyLgorCiAyMDE3LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgogCiAgICAgICAgIFtXVEZdIEFubm90YXRlIFNlY29uZHMnIG1lbWJlciBmdW5jdGlvbnMg
YW5kIG9wZXJhdG9ycyB3aXRoIGNvbnN0ZXhwcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZjNGNkNGVjNjM4YmVh
NWZjZWI1MmU0YWY5NjI1MzNlMGU3MDI3OWMuLmRkZTNmNmEzOTMxYWYzMTg3MDdkMjFhZjA5YjJh
ZDViNDVjNDQ2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wNC0xMCAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIHRo
ZSBEaXNwbGF5UmVmcmVzaE1vbml0b3IgZmFjaWxpdGllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG1pc3Npbmcg
ZmlsZXMgdG8gdGhlIGJ1aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHA6IEJ1aWxkIGZpeGVzLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yOjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6dXBkYXRlUGxhdGZvcm1MYXllcik6IE1hcmsgdGhlCisgICAgICAgIHBsYXRmb3JtIGxh
eWVyIGFzIHVwZGF0ZWQgaW4gdGhlIGxheWVyJ3MgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzU3RhdGUuaDoKKwogMjAxNy0wNC0xMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGZhbGxiYWNrIGZvbnRzIHRvIHZpZGVvIGNhcHRp
b25zIHN0eWxlc2hlZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTI3MTg0OTU5NmJmNzE4ZWUyOGY4NjI1OTk2
YzRlNjc0N2JlYzBiNi4uMDNiMDkwODhiOWIyNmNkZDUzNjljZjk3YmRmYzgzMjU3MTk0ZTUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE3LTA0LTEwICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBVc2UgdGhlIERpc3BsYXlSZWZy
ZXNoTW9uaXRvciBmYWNpbGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzA1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaHJlYWRlZENvbXBvc2l0b3IgZ2FpbnMgYSBEaXNwbGF5UmVmcmVzaE1v
bml0b3IgbWVtYmVyIHRoYXQgaXQgY2FuIHVzZQorICAgICAgICB0byBiZXR0ZXIgY29vcmRpbmF0
ZSBkaXNwbGF5IHJlZnJlc2ggY2FsbGJhY2tzIG9uIHRoZSBtYWluIHRocmVhZC4gU3RpbGwsCisg
ICAgICAgIGJlY2F1c2UgY3VycmVudGx5IHRoZSBHVEsrIHBvcnQgZG9lc24ndCBoYXZlIGEgcmVs
aWFibGUgd2F5IG9mIG5vdGlmeWluZworICAgICAgICB0aGUgVGhyZWFkZWRDb21wb3NpdG9yIG9m
IGEgdnN5bmMgZXZlbnQsIGEgdGltZXIgdGFyZ2V0aW5nIDYwRlBTIGlzIHVzZWQKKyAgICAgICAg
aW4gb3JkZXIgdG8ga2VlcCB0aGUgdXBkYXRlcyBhdCBhIHJlYXNvbmFibGUgcmF0ZS4gV2hlbiB0
aGUgdGltZXIgaXMgZmlyZWQsCisgICAgICAgIHRoZSBUaHJlYWRlZENvbXBvc2l0b3IgZGVjaWRl
cyBob3cgdG8gcHJvY2VlZCBiYXNlZCBvbiBzdGF0ZSBjaGFuZ2VzIHRoYXQKKyAgICAgICAgbWln
aHQgaGF2ZSBvY2N1cnJlZCBkdXJpbmcgY29tcG9zaXRpb24gb3Igd2hldGhlciB0aGVyZSdzIGFu
eSBkaXNwbGF5CisgICAgICAgIHJlZnJlc2ggY2FsbGJhY2tzIHRoYXQgcmVxdWlyZSBoYW5kbGlu
ZyBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgQ29tcG9zaXRpbmdSdW5Mb29wIG5vdyBz
dG9yZXMgaXRzIHN0YXRlIGluIGFuIGF0b21pYyB2YXJpYWJsZSB0aGF0J3MgdGhlbgorICAgICAg
ICBpbnNwZWN0ZWQgd2hlbmV2ZXIgYSBuZXcgdXBkYXRlIGlzIHNjaGVkdWxlZCBvciBjb21wbGV0
ZWQuIFdoZW4gc2NoZWR1bGVkLAorICAgICAgICBpZiB0aGVyZSdzIG5vIHVwZGF0ZSBpbiBwcm9n
cmVzcywgYSBuZXcgdXBkYXRlIGlzIHJlcXVlc3RlZCB0aHJvdWdoIHRoZQorICAgICAgICB0aW1l
ci4gSWYgdGhlcmUncyBhbHJlYWR5IGFuIHVwZGF0ZSBpbiBwcm9ncmVzcywgYSBuZXcgdXBkYXRl
IGlzIG1hcmtlZAorICAgICAgICBhcyBwZW5kaW5nIGFmdGVyIHRoZSBjdXJyZW50IG9uZSBjb21w
bGV0ZXMuIEluIHRoYXQgY2FzZSwgd2hlbiB0aGUgdXBkYXRlCisgICAgICAgIGlzIGNvbXBsZXRl
ZCwgYSBuZXcgdXBkYXRlIGlzIHJlcXVlc3RlZCB0aHJvdWdoIHRoZSB0aW1lci4KKworICAgICAg
ICBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvciBpcyB1c2VkIHRvIGNvb3JkaW5hdGUgdXBk
YXRlcyBiZXR3ZWVuIHRoZQorICAgICAgICBtYWluIGFuZCB0aGUgY29tcG9zaXRpb24gdGhyZWFk
IHdoZW5ldmVyIHRoZSBDb29yZGluYXRlZEdyYXBoaWNzIHN0YXRlCisgICAgICAgIGRlbWFuZHMg
aXQsIG9yIHdoZW5ldmVyIHRoZXJlIGFyZSBjbGllbnRzIHJlZ2lzdGVyZWQgdG8gdGhhdCBtb25p
dG9yIHRoYXQKKyAgICAgICAgcmVxdWlyZSBhbiB1cGRhdGUgKGUuZy4gYSByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoKSBjYWxsYmFjaykuIEFmdGVyIHRoZQorICAgICAgICB1cGRhdGUgb24gdGhlIGNv
bXBvc2l0aW9uIHRocmVhZCBpcyBmaW5pc2hlZCwgYW5kIHRoZSBEaXNwbGF5UmVmcmVzaE1vbml0
b3IKKyAgICAgICAgb2JqZWN0IHJlcXVpcmVzIGFuIHVwZGF0ZSwgYSBjYWxsYmFjayBhdCB0aGUg
c2FtZSBwcmlvcml0eSBhcyB0aGUgbGF5ZXIKKyAgICAgICAgZmx1c2ggdGltZXIgaXMgc2NoZWR1
bGVkIG9uIHRoZSBtYWluIHRocmVhZC4gSW4gdGhhdCBjYWxsYmFjayB3ZSBoYW5kbGUKKyAgICAg
ICAgYW55IGNsaWVudHMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBEaXNwbGF5UmVmcmVzaE1vbml0b3Ig
YmVmb3JlIHByb2NlZWRpbmcKKyAgICAgICAgdG8gaGFuZGxlIGFueSBjaGFuZ2VzIHRvIHRoZSBD
b29yZGluYXRlZEdyYXBoaWNzIHNjZW5lLiBJbiBjYXNlIHRoZQorICAgICAgICBEaXNwbGF5UmVm
cmVzaE1vbml0b3IgY2xpZW50cyBvciB0aGUgbGF5ZXIgZmx1c2hlcyBhbHJlYWR5IHF1ZXVlZCB1
cAorICAgICAgICBhbnkgY2hhbmdlcyB0byB0aGUgc3RhdGUsIHdlIGltbWVkaWF0ZWx5IGFzayB0
aGUgVGhyZWFkZWRDb21wb3NpdG9yIGZvcgorICAgICAgICBhbiB1cGRhdGUuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlKToKKyAgICAgICAgKiBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9z
aXRpbmdSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpD
b21wb3NpdGluZ1J1bkxvb3ApOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6
OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzY2hlZHVs
ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6c3RvcFVwZGF0
ZXMpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZUNvbXBsZXRl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6aXNDdXJyZW50KToKKyAg
ICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzdGFydFVwZGF0ZVRpbWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlVGlt
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fZGlzcGxheVJlZnJl
c2hNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpzZXROYXRpdmVTdXJm
YWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBv
c2l0b3I6OnVwZGF0ZVZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3Np
dG9yOjpzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFk
ZWRDb21wb3NpdG9yOjpzY2VuZVVwZGF0ZUZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpkaXNwbGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViS2l0
OjpUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlck5leHRGcmFtZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpjb21wbGV0ZUNvb3JkaW5hdGVkVXBkYXRlSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OmNvb3JkaW5hdGVV
cGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29t
cG9zaXRvcjo6cGVyZm9ybUZyYW1lQ29tcGxldGlvbik6CisgICAgICAgICogU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bml0b3IpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkRGlzcGxh
eVJlZnJlc2hNb25pdG9yOjpyZXF1aXJlc0Rpc3BsYXlSZWZyZXNoQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGF0Y2hEaXNwbGF5
UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3I6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6ZGlzcGxheVJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZy
ZXNoTW9uaXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJh
d2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKwogMjAxNy0wNC0xMCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gRW5h
YmxlIERPTSB0aW1lciB0aHJvdHRsaW5nIGFuZCBDU1MgYW5pbWF0aW9ucyBzdXNwZW5zaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAppbmRleCBkZjBkN2ZmZjE1ODE4MzI2MzI2MDU0MjM2MTEzOGQ4NDk1ZjAyMDM5Li4y
NDcyYjZmNDJjZTE2N2ZkNzMzODdmYjIxNDNhY2I3NDcxNjc5NzZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAg
LTEwNDksNyArMTA0OSw3IEBACiAjZGVmaW5lIFVTRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9U
SU1FUiAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShHVEspCiAjZGVmaW5lIFVTRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9E
SVNQTEFZX01PTklUT1IgMQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2ds
aWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmggYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BT
b3VyY2VQcmlvcml0eS5oCmluZGV4IDQ5OGRkNmJjYjRlYWI1YmMzOWE5NmI5NTg1ZTI5ZjIzMTMw
NDVkMGIuLmExZGRlMTNkZDI4MWY2ODAxNmI4MmNiZjllMDAzYzczNWE4ZGM0ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgKKysrIGIvU291
cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaApAQCAtNjQsNiArNjQsOSBA
QCBlbnVtIFJ1bkxvb3BTb3VyY2VQcmlvcml0eSB7CiAgICAgLy8gTGF5ZXIgZmx1c2guCiAgICAg
TGF5ZXJGbHVzaFRpbWVyID0gLTEwMCwKIAorICAgIC8vIERpc3BsYXlSZWZyZXNoTW9uaXRvciB0
aW1lciwgc2hvdWxkIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIExheWVyRmx1c2hUaW1lci4K
KyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lciA9IC0xMDAsCisKICAgICAvLyBSZW5kZXJp
bmcgdGltZXIgaW4gdGhlIG1haW4gdGhyZWFkIHdoZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
aXMgbm90IHVzZWQuCiAgICAgTm9uQWNjZWxlcmF0ZWREcmF3aW5nVGltZXIgPSAxMDAKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGUwNmM4MGRiODFiZTE3ZWZhNGYyZDkxZmE5ZWJiYjZlZmNk
ZTcxZTQuLjQwNThiMmNiYzA0NTMxYTNkMWE0YTAzNDE0ZjAyNTUyNjU4NDYwNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0yMjUzLDcgKzIyNTMsOSBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdl
bmVyYXRlZEltYWdlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdl
ci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQ
b2ludDNELmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggMmNiZWZjYzk1MGU3OWE1M2MyZjU4
NDAzZjk0YjE3NGZmY2ZiYTAwZC4uNzc4MGVhOGZkYjNhZjMwZTQwNzg4ZmUyYzQ4MTNlZjg0MGU3
NzJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBQTEFU
Rk9STShJT1MpCiAjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgiCi0jZWxzZQor
I2VsaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5o
IgogI2VuZGlmCiAKQEAgLTQ3LDYgKzQ3LDcgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRv
cj4gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2gKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6Y3Jl
YXRlKGRpc3BsYXlJRCk7CiAjZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oZGlzcGxheUlEKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA4Y2JkMmJlM2M4NDdkODlkYzY0YjMx
YTYyYWU1MjBkY2I4YTBkZTdkLi40ZmRmZmIwMzY3YTYzNmQ5MTAwYTg4Njc4ZmZlOWE1MjIzYjZk
MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcApAQCAtNzE0LDYgKzcxNCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjp1cGRhdGVQbGF0Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9z
aG91bGRVcGRhdGVQbGF0Zm9ybUxheWVyID0gZmFsc2U7CisgICAgbV9sYXllclN0YXRlLnBsYXRm
b3JtTGF5ZXJVcGRhdGVkID0gdHJ1ZTsKICAgICBpZiAobV9wbGF0Zm9ybUxheWVyKQogICAgICAg
ICBtX3BsYXRmb3JtTGF5ZXItPnN3YXBCdWZmZXJzSWZOZWVkZWQoKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCmluZGV4
IGM4MTA1MzBiNWU3ZmZmNjUzNGQyNTJjMzQ2OTAxZDVhM2RmYTVmOTMuLmVkNGYzNGJhMDNjYTVj
OTRlMWNiNjhiMzE1NGJhMDNhOTQwY2Y0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKQEAgLTg2LDYgKzg2LDcgQEAgc3RydWN0
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlIHsKICAgICAgICAgICAgIGJvb2wgY2hpbGRy
ZW5DaGFuZ2VkOiAxOwogICAgICAgICAgICAgYm9vbCByZXBhaW50Q291bnRDaGFuZ2VkIDogMTsK
ICAgICAgICAgICAgIGJvb2wgcGxhdGZvcm1MYXllckNoYW5nZWQ6IDE7CisgICAgICAgICAgICBi
b29sIHBsYXRmb3JtTGF5ZXJVcGRhdGVkOiAxOwogICAgICAgICAgICAgYm9vbCBwbGF0Zm9ybUxh
eWVyU2hvdWxkU3dhcEJ1ZmZlcnM6IDE7CiAgICAgICAgICAgICBib29sIGlzU2Nyb2xsYWJsZUNo
YW5nZWQ6IDE7CiAgICAgICAgICAgICBib29sIGNvbW1pdHRlZFNjcm9sbE9mZnNldENoYW5nZWQ6
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDRhYTIwNmEwM2E4ZWU5NzI2NmFlMTdh
ODUzNTMyNzkwOWE5MmI2ZjQuLmZmMjUwYWUxZDQ1NzdlOTVhMTlmODdjMzljMjBkNmQ3NDZiNTAw
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02NSw2ICs2NSw3IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKICAgICBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCiAgICAgU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKIAog
ICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGI5NGZh
ZWEyY2M0YTJhZjFjNDY5NGRlYmJlMTliOTk1OTA5Mjg5M2IuLjU2ZTZmOGIwMGY1NTZkNmIzZjk1
ODc4MjA0NTg5YzgxNjJmOWFiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcApAQCAtMTI3LDEyICsxMjcsOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaQog
CiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlVmlld3BvcnQoKQogewotICAg
IGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBkaXNwYXRjaE9uQ2xpZW50UnVu
TG9vcChbdGhpc10gewotICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVu
dC0+dXBkYXRlVmlld3BvcnQoKTsKLSAgICB9KTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT51cGRhdGVWaWV3cG9ydCgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6YWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycyhjb25zdCBGbG9hdFBvaW50JiBj
b250ZW50UG9zaXRpb24pCkBAIC01NDcsOSArNTQzLDYgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OmNvbW1pdFNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
JgogCiAgICAgY29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKTsKICAgICByZW1v
dmVSZWxlYXNlZEltYWdlQmFja2luZ3NJZk5lZWRlZCgpOwotCi0gICAgLy8gVGhlIHBlbmRpbmcg
dGlsZXMgc3RhdGUgaXMgb24gaXRzIHdheSBmb3IgdGhlIHNjcmVlbiwgdGVsbCB0aGUgd2ViIHBy
b2Nlc3MgdG8gcmVuZGVyIHRoZSBuZXh0IG9uZS4KLSAgICByZW5kZXJOZXh0RnJhbWUoKTsKIH0K
IAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbmRlck5leHRGcmFtZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDEyOGI3YmU3NmU4MDNkZGVm
ZjRmYzU5MTQyODE1M2RhMjA1ZGFiZWEuLjk5ZWE3ZGE4MWNiYTNjMmM2MGMxMWYyZGFhYjIzYWZm
MGE3NDNiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC04
MCw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKIAogICAgIHZv
aWQgY29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUmKTsKKyAgICB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwogCiAgICAgdm9pZCBzZXRWaWV3QmFj
a2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikgeyBtX3ZpZXdCYWNrZ3Jv
dW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIFdlYkNvcmU6OkNvbG9yIHZpZXdCYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3I7IH0KQEAgLTEyMyw3ICsx
MjQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hPbk1haW5UaHJlYWQoRnVuY3Rpb248
dm9pZCgpPiYmKTsKICAgICB2b2lkIGRpc3BhdGNoT25DbGllbnRSdW5Mb29wKEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydCgpOwotICAgIHZvaWQgcmVuZGVyTmV4
dEZyYW1lKCk7CiAKICAgICB2b2lkIGNyZWF0ZUxheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5
ZXJJRCk7CiAgICAgdm9pZCBkZWxldGVMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRp
bmdSdW5Mb29wLmNwcAppbmRleCA1NjE3YmJhZDAxMDdlZTRlZmZkMzdmMTgxZjJhZWVjYzJjM2Vi
OWY2Li5kMTkxMjQ1YzJmMmQyOGQ1NTMwOTllYzY5ZmI0MWJiYjZjNDVkOWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29w
LmNwcApAQCAtMTEwLDggKzExMCwxMyBAQCBwcml2YXRlOgogCiBDb21wb3NpdGluZ1J1bkxvb3A6
OkNvbXBvc2l0aW5nUnVuTG9vcChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgdXBkYXRlRnVuY3Rp
b24pCiAgICAgOiBtX3VwZGF0ZVRpbWVyKFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigpLnJ1bkxv
b3AodGhpcyksIHRoaXMsICZDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQpCisj
aWZuZGVmIE5ERUJVRworICAgICwgbV9ydW5Mb29wKFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigp
LnJ1bkxvb3AodGhpcykpCisjZW5kaWYKICAgICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGTW92ZSh1
cGRhdGVGdW5jdGlvbikpCiB7CisgICAgbV91cGRhdGVTdGF0ZS5zdG9yZShVcGRhdGVTdGF0ZTo6
Q29tcGxldGVkKTsKKwogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgbV91cGRhdGVUaW1l
ci5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkNvbXBvc2l0aW5nVGhyZWFkVXBk
YXRlVGltZXIpOwogI2VuZGlmCkBAIC0xNDQsMzAgKzE0OSw1MyBAQCB2b2lkIENvbXBvc2l0aW5n
UnVuTG9vcDo6cGVyZm9ybVRhc2tTeW5jKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAg
ICAgbV9kaXNwYXRjaFN5bmNDb25kaXRpb24ud2FpdChtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11
dGV4KTsKIH0KIAotdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnN0YXJ0VXBkYXRlVGltZXIoVXBk
YXRlVGltaW5nIHRpbWluZykKK2Jvb2wgQ29tcG9zaXRpbmdSdW5Mb29wOjppc0FjdGl2ZSgpCiB7
Ci0gICAgaWYgKG1fdXBkYXRlVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOworICAg
IHJldHVybiBtX3VwZGF0ZVN0YXRlLmxvYWQoKSAhPSBVcGRhdGVTdGF0ZTo6Q29tcGxldGVkOwor
fQogCi0gICAgY29uc3Qgc3RhdGljIGRvdWJsZSB0YXJnZXRGUFMgPSA2MDsKLSAgICBkb3VibGUg
bmV4dFVwZGF0ZVRpbWUgPSAwOwotICAgIGlmICh0aW1pbmcgPT0gV2FpdFVudGlsTmV4dEZyYW1l
KQotICAgICAgICBuZXh0VXBkYXRlVGltZSA9IHN0ZDo6bWF4KCgxIC8gdGFyZ2V0RlBTKSAtICht
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fbGFzdFVwZGF0ZVRpbWUpLCAwLjApOwor
dm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnNjaGVkdWxlVXBkYXRlKCkKK3sKKyAgICBpZiAobV91
cGRhdGVTdGF0ZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoVXBkYXRlU3RhdGU6OkNvbXBsZXRlZCwg
VXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MpID09IFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQpIHsKKyAg
ICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgxX3MgKiBuZXh0VXBkYXRlVGlt
ZSk7CisgICAgaWYgKG1fdXBkYXRlU3RhdGUuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0
YXRlOjpJblByb2dyZXNzLCBVcGRhdGVTdGF0ZTo6UGVuZGluZ0FmdGVyQ29tcGxldGlvbikgPT0g
VXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybjsKIH0KIAotdm9pZCBDb21w
b3NpdGluZ1J1bkxvb3A6OnN0b3BVcGRhdGVUaW1lcigpCit2b2lkIENvbXBvc2l0aW5nUnVuTG9v
cDo6c3RvcFVwZGF0ZXMoKQogewogICAgIG1fdXBkYXRlVGltZXIuc3RvcCgpOworICAgIG1fdXBk
YXRlU3RhdGUuc3RvcmUoVXBkYXRlU3RhdGU6OkNvbXBsZXRlZCk7Cit9CisKK3ZvaWQgQ29tcG9z
aXRpbmdSdW5Mb29wOjp1cGRhdGVDb21wbGV0ZWQoKQoreworICAgIGlmIChtX3VwZGF0ZVN0YXRl
LmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcywgVXBkYXRlU3Rh
dGU6OkNvbXBsZXRlZCkgPT0gVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX3VwZGF0ZVN0YXRlLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRhdGVT
dGF0ZTo6UGVuZGluZ0FmdGVyQ29tcGxldGlvbiwgVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3MpID09
IFVwZGF0ZVN0YXRlOjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uKSB7CisgICAgICAgIG1fdXBkYXRl
VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVU
aW1lckZpcmVkKCkKIHsKICAgICBtX3VwZGF0ZUZ1bmN0aW9uKCk7Ci0gICAgbV9sYXN0VXBkYXRl
VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogfQogCisjaWZuZGVmIE5ERUJV
RworYm9vbCBDb21wb3NpdGluZ1J1bkxvb3A6OmlzQ3VycmVudCgpCit7CisgICAgcmV0dXJuICZS
dW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcnVuTG9vcDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURF
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGlu
Z1J1bkxvb3AuaAppbmRleCA1MmI1ZDdkMTAwMTExYzRjYjhkMzFjMGMxNmUyYmQ0MGUzZDg2ODQ2
Li42YmM5ZDIyMGUxOTJmZjM2NWMwZjExMjcyNTg1NDE2OTkwMTQ5N2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQp
CiAKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4K
ICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpA
QCAtNDEsMjkgKzQyLDM5IEBAIGNsYXNzIENvbXBvc2l0aW5nUnVuTG9vcCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ29tcG9zaXRpbmdSdW5Mb29wKTsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBlbnVtIFVwZGF0ZVRpbWluZyB7Ci0gICAgICAgIEltbWVk
aWF0ZSwKLSAgICAgICAgV2FpdFVudGlsTmV4dEZyYW1lLAotICAgIH07Ci0KICAgICBDb21wb3Np
dGluZ1J1bkxvb3Aoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB+Q29tcG9zaXRpbmdS
dW5Mb29wKCk7CiAKICAgICB2b2lkIHBlcmZvcm1UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwog
ICAgIHZvaWQgcGVyZm9ybVRhc2tTeW5jKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCi0gICAgdm9p
ZCBzdGFydFVwZGF0ZVRpbWVyKFVwZGF0ZVRpbWluZyA9IEltbWVkaWF0ZSk7Ci0gICAgdm9pZCBz
dG9wVXBkYXRlVGltZXIoKTsKKyAgICBib29sIGlzQWN0aXZlKCk7CisgICAgdm9pZCBzY2hlZHVs
ZVVwZGF0ZSgpOworICAgIHZvaWQgc3RvcFVwZGF0ZXMoKTsKKworICAgIHZvaWQgdXBkYXRlQ29t
cGxldGVkKCk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgYm9vbCBpc0N1cnJlbnQoKTsKKyNlbmRp
ZgogCiBwcml2YXRlOgorICAgIGVudW0gY2xhc3MgVXBkYXRlU3RhdGUgeworICAgICAgICBDb21w
bGV0ZWQsCisgICAgICAgIEluUHJvZ3Jlc3MsCisgICAgICAgIFBlbmRpbmdBZnRlckNvbXBsZXRp
b24sCisgICAgfTsKKwogICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwogCiAgICAgUnVuTG9v
cDo6VGltZXI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX3VwZGF0ZVRpbWVyOworI2lmbmRlZiBOREVC
VUcKKyAgICBSdW5Mb29wJiBtX3J1bkxvb3A7CisjZW5kaWYKICAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+IG1fdXBkYXRlRnVuY3Rpb247CisgICAgQXRvbWljPFVwZGF0ZVN0YXRlPiBtX3VwZGF0
ZVN0YXRlOwogICAgIExvY2sgbV9kaXNwYXRjaFN5bmNDb25kaXRpb25NdXRleDsKICAgICBDb25k
aXRpb24gbV9kaXNwYXRjaFN5bmNDb25kaXRpb247Ci0KLSAgICBkb3VibGUgbV9sYXN0VXBkYXRl
VGltZSB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRl
eCBjN2FkODM3YzgzMzI5NjczNTRjYTc1NTc4NDIzNDgzZTI3YjM2N2YzLi4wMDgzMjY1OGE0MGU3
NjI1NjdlYjg0ZDdiZTc1ZjU2YjQyNzYzNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21w
b3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKIAogI2luY2x1ZGUg
IkNvbXBvc2l0aW5nUnVuTG9vcC5oIgorI2luY2x1ZGUgIlRocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKQEAgLTU2LDcgKzU3LDEzIEBAIFRo
cmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCYgY2xpZW50LCBjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpCiAgICAgLCBtX3BhaW50RmxhZ3MocGFpbnRGbGFncykKICAg
ICAsIG1fbmVlZHNSZXNpemUoIXZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkpCiAgICAgLCBtX2NvbXBv
c2l0aW5nUnVuTG9vcChzdGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNd
IHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RV9ESVNQTEFZX01PTklUT1IpCisgICAgLCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcihhZG9wdFJl
ZihuZXcgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IoKnRoaXMpKSkKKyNlbmRpZgogewor
ICAgIG1fY2xpZW50UmVuZGVyc05leHRGcmFtZS5zdG9yZShmYWxzZSk7CisgICAgbV9jb29yZGlu
YXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQuc3RvcmUoZmFsc2UpOworCiAgICAgbV9jb21w
b3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrU3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIG1fc2NlbmUgPSBhZG9wdFJlZihuZXcgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lKHRoaXMpKTsKICAgICAgICAgaWYgKG1fbmF0aXZlU3VyZmFjZUhhbmRs
ZSkgewpAQCAtNjQsNiArNzEsOCBAQCBUaHJlYWRlZENvbXBvc2l0b3I6OlRocmVhZGVkQ29tcG9z
aXRvcihDbGllbnQmIGNsaWVudCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaQogICAgICAgICAg
ICAgbV9zY2VuZS0+c2V0QWN0aXZlKHRydWUpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IG1fc2NlbmUtPnNldEFjdGl2ZShmYWxzZSk7CisKKyAgICAgICAgbV9mcmFtZUNvbXBsZXRpb24u
dGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRocmVhZGVkQ29tcG9zaXRv
cj4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRocmVhZGVkQ29tcG9zaXRvcjo6cGVyZm9y
bUZyYW1lQ29tcGxldGlvbik7CiAgICAgfSk7CiB9CiAKQEAgLTg5LDE4ICs5OCwyMiBAQCB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlR0xDb250ZXh0KCkKIHZvaWQgVGhyZWFkZWRDb21w
b3NpdG9yOjppbnZhbGlkYXRlKCkKIHsKICAgICBtX3NjZW5lLT5kZXRhY2goKTsKLSAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+c3RvcFVwZGF0ZVRpbWVyKCk7CisgICAgbV9jb21wb3NpdGluZ1J1
bkxvb3AtPnN0b3BVcGRhdGVzKCk7CiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1U
YXNrU3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAg
IG1fZnJhbWVDb21wbGV0aW9uLnRpbWVyID0gbnVsbHB0cjsKICAgICAgICAgbV9zY2VuZS0+cHVy
Z2VHTFJlc291cmNlcygpOwogICAgICAgICBtX2NvbnRleHQgPSBudWxscHRyOwogICAgICAgICBt
X3NjZW5lID0gbnVsbHB0cjsKICAgICB9KTsKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUVfRElTUExBWV9NT05JVE9SKQorICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yLT5pbnZhbGlk
YXRlKCk7CisjZW5kaWYKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcCA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9z
aXRpbmcodWludDY0X3QgaGFuZGxlKQogewotICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdG9w
VXBkYXRlVGltZXIoKTsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RvcFVwZGF0ZXMoKTsK
ICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGhhbmRsZV0gewogICAgICAgICAvLyBBIG5ldyBuYXRp
dmUgaGFuZGxlIGNhbid0IGJlIHNldCB3aXRob3V0IGRlc3Ryb3lpbmcgdGhlIHByZXZpb3VzIG9u
ZSBmaXJzdCBpZiBhbnkuCiAgICAgICAgIEFTU0VSVCghIWhhbmRsZSBeICEhbV9uYXRpdmVTdXJm
YWNlSGFuZGxlKTsKQEAgLTE2NCwxMiArMTc3LDEyIEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9y
Ojpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zm
CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVWaWV3cG9ydCgpCiB7Ci0gICAgbV9j
b21wb3NpdGluZ1J1bkxvb3AtPnN0YXJ0VXBkYXRlVGltZXIoQ29tcG9zaXRpbmdSdW5Mb29wOjpX
YWl0VW50aWxOZXh0RnJhbWUpOworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVw
ZGF0ZSgpOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2NoZWR1bGVEaXNwbGF5SW1t
ZWRpYXRlbHkoKQogewotICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdGFydFVwZGF0ZVRpbWVy
KENvbXBvc2l0aW5nUnVuTG9vcDo6SW1tZWRpYXRlKTsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+c2NoZWR1bGVVcGRhdGUoKTsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmZvcmNl
UmVwYWludCgpCkBAIC0yMDUsMTggKzIxOCw3MyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6
cmVuZGVyTGF5ZXJUcmVlKCkKICAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh2
aWV3cG9ydFRyYW5zZm9ybSwgMSwgY2xpcFJlY3QsIENvbG9yOjp0cmFuc3BhcmVudCwgIW1fZHJh
d3NCYWNrZ3JvdW5kLCBtX3Njcm9sbFBvc2l0aW9uLCBtX3BhaW50RmxhZ3MpOwogCiAgICAgbV9j
b250ZXh0LT5zd2FwQnVmZmVycygpOworCisgICAgY29uc3Qgc3RhdGljIGRvdWJsZSB0YXJnZXRG
UFMgPSA2MDsKKyAgICBkb3VibGUgbmV4dFVwZGF0ZVRpbWUgPSBzdGQ6Om1heCgoMSAvIHRhcmdl
dEZQUykgLSAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX2ZyYW1lQ29tcGxldGlv
bi5sYXN0VGltZSksIDAuMCk7CisgICAgbV9mcmFtZUNvbXBsZXRpb24udGltZXItPnN0YXJ0T25l
U2hvdCgxX3MgKiBuZXh0VXBkYXRlVGltZSk7Cit9CisKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9y
OjpzY2VuZVVwZGF0ZUZpbmlzaGVkKCkKK3sKKyAgICBib29sIHNob3VsZERpc3BhdGNoRGlzcGxh
eVJlZnJlc2hDYWxsYmFjayA9IG1fY2xpZW50UmVuZGVyc05leHRGcmFtZS5sb2FkKCkKKyAgICAg
ICAgfHwgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3ItPnJlcXVpcmVzRGlzcGxheVJlZnJlc2hDYWxs
YmFjaygpOworICAgIGJvb2wgc2hvdWxkQ29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xp
ZW50ID0gbV9jb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQubG9hZCgpOworCisg
ICAgaWYgKHNob3VsZERpc3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjaykKKyAgICAgICAgbV9k
aXNwbGF5UmVmcmVzaE1vbml0b3ItPmRpc3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOwor
ICAgIGlmICghc2hvdWxkQ29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50KQorICAg
ICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+dXBkYXRlQ29tcGxldGVkKCk7CiB9CiAKIHZvaWQg
VGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NTdGF0ZSYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBS
ZWZQdHI8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiBzY2VuZSA9IG1fc2NlbmU7Ci0gICAgbV9z
Y2VuZS0+YXBwZW5kVXBkYXRlKFtzY2VuZSwgc3RhdGVdIHsKKyAgICBtX3NjZW5lLT5hcHBlbmRV
cGRhdGUoW3RoaXMsIHNjZW5lLCBzdGF0ZV0gewogICAgICAgICBzY2VuZS0+Y29tbWl0U2NlbmVT
dGF0ZShzdGF0ZSk7CisKKyAgICAgICAgbV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLnN0b3JlKHRy
dWUpOworICAgICAgICBib29sIGNvb3JkaW5hdGVVcGRhdGUgPSBzdGQ6OmFueV9vZihzdGF0ZS5s
YXllcnNUb1VwZGF0ZS5iZWdpbigpLCBzdGF0ZS5sYXllcnNUb1VwZGF0ZS5lbmQoKSwKKyAgICAg
ICAgICAgIFtdKGNvbnN0IHN0ZDo6cGFpcjxDb29yZGluYXRlZExheWVySUQsIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllclN0YXRlPiYgaXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXQuc2Vj
b25kLnBsYXRmb3JtTGF5ZXJDaGFuZ2VkIHx8IGl0LnNlY29uZC5wbGF0Zm9ybUxheWVyVXBkYXRl
ZDsKKyAgICAgICAgICAgIH0pOworICAgICAgICBtX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9u
V2l0aENsaWVudC5zdG9yZShjb29yZGluYXRlVXBkYXRlKTsKICAgICB9KTsKIAogICAgIHNjaGVk
dWxlRGlzcGxheUltbWVkaWF0ZWx5KCk7CiB9CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SKQorUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpkaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1E
aXNwbGF5SUQpCit7CisgICAgcmV0dXJuIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yOworfQorCit2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTmV4dEZyYW1lSWZOZWVkZWQoKQoreworICAg
IGlmIChtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWUuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHRydWUs
IGZhbHNlKSkKKyAgICAgICAgbV9zY2VuZS0+cmVuZGVyTmV4dEZyYW1lKCk7Cit9CisKK3ZvaWQg
VGhyZWFkZWRDb21wb3NpdG9yOjpjb21wbGV0ZUNvb3JkaW5hdGVkVXBkYXRlSWZOZWVkZWQoKQor
eworICAgIGlmIChtX2Nvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5jb21wYXJl
RXhjaGFuZ2VTdHJvbmcodHJ1ZSwgZmFsc2UpKQorICAgICAgICBtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+dXBkYXRlQ29tcGxldGVkKCk7Cit9CisKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpjb29y
ZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQoKQoreworICAgIG1fY29vcmRpbmF0ZVVw
ZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50LnN0b3JlKHRydWUpOworICAgIGlmICghbV9jb21wb3Np
dGluZ1J1bkxvb3AtPmlzQWN0aXZlKCkpCisgICAgICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5z
Y2hlZHVsZVVwZGF0ZSgpOworfQorI2VuZGlmCisKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpw
ZXJmb3JtRnJhbWVDb21wbGV0aW9uKCkKK3sKKyAgICBzY2VuZVVwZGF0ZUZpbmlzaGVkKCk7Cisg
ICAgbV9mcmFtZUNvbXBsZXRpb24ubGFzdFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURF
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuaAppbmRleCBiYWM4MWEzOTYyMjM4NTMxOTA5YWQ0NGRlYjAxNGY3YWYzYzM3NDg5
Li44MDhjZTFlMGRhM2JiNWFiZTcwMDAwYTMzNDUyNjU4NGQ0ZTMzYjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCkBA
IC0zMywxMCArMzMsMTUgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlci5o
PgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KIAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
OwogfQpAQCAtNDUsNiArNTAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOwogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50
OworY2xhc3MgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I7CiAKIGNsYXNzIFRocmVhZGVk
Q29tcG9zaXRvciA6IHB1YmxpYyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQsIHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWRlZENvbXBvc2l0b3I+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShUaHJlYWRlZENvbXBvc2l0b3IpOwpAQCAtNzMsNiArNzksMTMgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKTsKIAorI2lmIFVTRShSRVFVRVNUX0FOSU1B
VElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlS
ZWZyZXNoTW9uaXRvcj4gZGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheUlEKTsKKyAgICB2b2lkIHJlbmRlck5leHRGcmFtZUlmTmVlZGVkKCk7CisgICAgdm9pZCBj
b21wbGV0ZUNvb3JkaW5hdGVkVXBkYXRlSWZOZWVkZWQoKTsKKyAgICB2b2lkIGNvb3JkaW5hdGVV
cGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgVGhy
ZWFkZWRDb21wb3NpdG9yKENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBmbG9hdCBz
Y2FsZUZhY3RvciwgdWludDY0X3QgbmF0aXZlU3VyZmFjZUhhbmRsZSwgU2hvdWxkRG9GcmFtZVN5
bmMsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MpOwogCkBAIC04Miw2ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJ
RCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KSBvdmVycmlkZTsKIAogICAgIHZvaWQg
cmVuZGVyTGF5ZXJUcmVlKCk7CisgICAgdm9pZCBzY2VuZVVwZGF0ZUZpbmlzaGVkKCk7CiAgICAg
dm9pZCBzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSgpOwogCiAgICAgdm9pZCBjcmVhdGVHTENv
bnRleHQoKTsKQEAgLTEwMCw2ICsxMTQsMjAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVlZHNS
ZXNpemUgeyBmYWxzZSB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbXBvc2l0aW5nUnVuTG9v
cD4gbV9jb21wb3NpdGluZ1J1bkxvb3A7CisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUVfRElTUExBWV9NT05JVE9SKQorICAgIFJlZlB0cjxUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gbV9kaXNwbGF5UmVmcmVzaE1vbml0b3I7CisjZW5kaWYKKworICAgIEF0b21pYzxib29s
PiBtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWU7CisgICAgQXRvbWljPGJvb2w+IG1fY29vcmRpbmF0
ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50OworCisgICAgdm9pZCBwZXJmb3JtRnJhbWVDb21w
bGV0aW9uKCk7CisKKyAgICBzdHJ1Y3QgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVuTG9v
cDo6VGltZXI8VGhyZWFkZWRDb21wb3NpdG9yPj4gdGltZXI7CisgICAgICAgIGRvdWJsZSBsYXN0
VGltZSB7IDAgfTsKKyAgICB9IG1fZnJhbWVDb21wbGV0aW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MzQ4NzA5NThhNDA2MTcwYjg4ZjY3NmJiNzdiNWY3YWNmNmM1M2YwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMCwwICsxLDEwMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgJiYgVVNFKFJFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKworI2luY2x1ZGUgIkNvbXBvc2l0
aW5nUnVuTG9vcC5oIgorI2luY2x1ZGUgIlRocmVhZGVkQ29tcG9zaXRvci5oIgorI2luY2x1ZGUg
PHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yKFRocmVhZGVkQ29tcG9zaXRvciYgY29tcG9zaXRvcikKKyAgICA6IFdlYkNvcmU6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvcigwKQorICAgICwgbV9kaXNwbGF5UmVmcmVzaFRpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5
UmVmcmVzaENhbGxiYWNrKQorICAgICwgbV9jb21wb3NpdG9yKCZjb21wb3NpdG9yKQoreworI2lm
IFVTRShHTElCX0VWRU5UX0xPT1ApCisgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVyLnNldFByaW9y
aXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25pdG9yVGltZXIpOwor
I2VuZGlmCit9CisKK2Jvb2wgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RS
ZWZyZXNoQ2FsbGJhY2soKQoreworICAgIGlmICghbV9jb21wb3NpdG9yKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtdXRleCgpKTsKKyAgICBzZXRJc1Nj
aGVkdWxlZCh0cnVlKTsKKworICAgIGlmIChpc1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgICAg
IG1fY29tcG9zaXRvci0+Y29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50KCk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6cmVxdWlyZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtdXRleCgpKTsKKyAgICByZXR1cm4gaXNTY2hlZHVsZWQoKSAmJiBpc1ByZXZpb3VzRnJh
bWVEb25lKCk7Cit9CisKK3ZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3Bh
dGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjaygpCit7CisgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVyLnN0b3AoKTsKKyAg
ICBtX2NvbXBvc2l0b3IgPSBudWxscHRyOworfQorCit2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJl
c2hNb25pdG9yOjpkaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBib29sIHNob3VsZEhh
bmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uID0gZmFsc2U7CisgICAgeworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtdXRleCgpKTsKKyAgICAgICAgc2hvdWxkSGFuZGxlRGlzcGxheVJl
ZnJlc2hOb3RpZmljYXRpb24gPSBpc1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFtZURvbmUo
KTsKKyAgICAgICAgaWYgKHNob3VsZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uKQor
ICAgICAgICAgICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7CisgICAgfQorCisgICAg
aWYgKHNob3VsZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uKQorICAgICAgICBEaXNw
bGF5UmVmcmVzaE1vbml0b3I6OmhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1h
aW5UaHJlYWQodGhpcyk7CisKKyAgICBpZiAobV9jb21wb3NpdG9yKSB7CisgICAgICAgIG1fY29t
cG9zaXRvci0+cmVuZGVyTmV4dEZyYW1lSWZOZWVkZWQoKTsKKyAgICAgICAgbV9jb21wb3NpdG9y
LT5jb21wbGV0ZUNvb3JkaW5hdGVkVXBkYXRlSWZOZWVkZWQoKTsKKyAgICAgICAgaWYgKGlzU2No
ZWR1bGVkKCkpCisgICAgICAgICAgICBtX2NvbXBvc2l0b3ItPmNvb3JkaW5hdGVVcGRhdGVDb21w
bGV0aW9uV2l0aENsaWVudCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpICYmIFVTRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNo
TW9uaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZjJlY2M2ODM0ZjgzNjkxYTE5NmJjMjY5OWU1NDYyODY4
MGUyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0
b3IuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKSAmJiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05J
VE9SKQorCisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVGhyZWFk
ZWRDb21wb3NpdG9yOworCitjbGFzcyBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvciA6IHB1
YmxpYyBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IgeworcHVibGljOgorICAgIFRocmVh
ZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yKFRocmVhZGVkQ29tcG9zaXRvciYpOworCisgICAgYm9v
bCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIHJlcXVpcmVz
RGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOworICAgIHZvaWQgZGlzcGF0Y2hEaXNwbGF5UmVmcmVz
aENhbGxiYWNrKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBkaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CisgICAgUnVuTG9vcDo6VGltZXI8VGhyZWFkZWRE
aXNwbGF5UmVmcmVzaE1vbml0b3I+IG1fZGlzcGxheVJlZnJlc2hUaW1lcjsKKyAgICBUaHJlYWRl
ZENvbXBvc2l0b3IqIG1fY29tcG9zaXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKSAmJiBVU0UoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
Y3BwCmluZGV4IGUzYzU4Yzg2MDk2MGYwYmEyZWU5ZTgwN2E4YTI3NThjZGE1YzA1MDguLmVmMmE2
ZGI5ZjViN2JkMTYwY2VhOTYwNGU3YTFhMWUzOTlkOWRlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YS5jcHAKQEAgLTIyMyw2ICsyMjMsMTUgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpz
Y2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCkKICAgICBzY2hlZHVsZUNv
bXBvc2l0aW5nTGF5ZXJGbHVzaCgpOwogfQogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX0RJU1BMQVlfTU9OSVRPUikKK1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3I+IEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisgICAgaWYgKCFtX2xheWVy
VHJlZUhvc3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2xheWVyVHJl
ZUhvc3QtPmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpOworfQorI2VuZGlm
CisKIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6dXBkYXRlQmFja2luZ1N0b3JlU3RhdGUo
dWludDY0X3Qgc3RhdGVJRCwgYm9vbCByZXNwb25kSW1tZWRpYXRlbHksIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZz
ZXQpCiB7CiAgICAgQVNTRVJUKCFtX2luVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2lu
Z0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERy
YXdpbmdBcmVhLmgKaW5kZXggZWFkMzJhYjZkNDNlMmQzYzQ0MDkzODU3MGRkYzMxNGI5NjI1NDE5
My4uNzJhN2JjMjY1M2RmZDdjYjhjNjk2YTk1MDAwYTljNTJlZTBlZWMwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYS5oCkBAIC01OSw2ICs1OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2NoZWR1bGVDb21w
b3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCisjaWYgVVNFKFJFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRv
cihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CisjZW5kaWYKKwogI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5k
bGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXN0cm95TmF0
aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcAppbmRleCAyODEzNTNiOGFlM2UwMGRkMzliMzIxMGFlNGE1NzI5OGE1
MzgxMmVmLi5mNTk5YWUzZmYwZTc1NWQ5MjkzMjhiOWYyMmEyOGZjZjFkYTczNDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0yNDcsNiArMjQ3LDEzIEBAIHZvaWQgVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUoYm9vbCBkaXNjYXJkYWJs
ZSkKICAgICAgICAgZGlkQ2hhbmdlVmlld3BvcnQoKTsKIH0KIAorI2lmIFVTRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCitSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yPiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlRGlz
cGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICBy
ZXR1cm4gbV9jb21wb3NpdG9yLT5kaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGNhOGFlYWM2M2MwMTNl
NGQ5YjBkNzk5ZDZlNGZkNDc1MzY0NTVjNGIuLjI2Y2I1MmE4NGI5ZTEwYTViYTYwNjJhM2ZiMmZh
MGUyZjg3YzQ2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMTAxLDYgKzEwMSwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRlOwogCisjaWYgVVNFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2Vi
Q29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICBlbnVtIGNs
YXNzIERpc2NhcmRhYmxlU3luY0FjdGlvbnMgewogICAgICAgICBVcGRhdGVTaXplID0gMSA8PCAx
LAogICAgICAgICBVcGRhdGVWaWV3cG9ydCA9IDEgPDwgMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDUxYWY1ODFjNjVjMDFi
MDgxNTVmYjZjZmI2NjdkMWUzM2ExMTM2Y2QuLjc2YzUyN2ViNzFiNzc1ZGJlMzdmYzFjYThmNDI2
MjYwYzhhNmZkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9MYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0xheWVyVHJlZUhvc3QuaApAQCAtMjksNiArMjksOCBAQAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykgfHwgVVNFKFRFWFRVUkVfTUFQUEVSKQogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29u
dGV4dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9yLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBA
IC05Niw2ICs5OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpID0gMDsKICNlbmRpZgogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3Jl
OjpQbGF0Zm9ybURpc3BsYXlJRCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciogdmlld092ZXJsYXlSb290TGF5ZXIpIHsgbV92aWV3T3ZlcmxheVJvb3RMYXllciA9IHZpZXdP
dmVybGF5Um9vdExheWVyOyB9CiAKIHByb3RlY3RlZDoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306816</attachid>
            <date>2017-04-11 07:45:21 -0700</date>
            <delta_ts>2017-04-11 07:45:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-170599-20170411164519.patch</filename>
            <type>text/plain</type>
            <size>40999</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNhODA0MmQ1Y2MyMDRhZTc1MmZiMWM5
OTA1YTJkODNhM2M4ZTNmOTEuLjQxMzkyZWFlMjQzYmFlMTJhNWM0NTAwMDlhZGZhOGM4Y2JjOWQx
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDQtMTEgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSB0aGUgRGlzcGxheVJlZnJlc2hN
b25pdG9yIGZhY2lsaXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2Ft
cG9zLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVuYWJsZSBVU0VfUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SIGZvciB0aGUgR1RLKyBwb3J0LgorICAgICAgICAq
IHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oOiBBZGQgdGhlIERpc3BsYXlSZWZyZXNo
TW9uaXRvclRpbWVyIGVudHJ5IHRoYXQKKyAgICAgICAgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgTGF5
ZXJGbHVzaFRpbWVyLgorCiAyMDE3LTA0LTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIEVuYWJsZSBKU1J1bkxvb3BUaW1lciBmb3IgSlND
T25seSBhbmQgV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdmZjM3ZWRhNmEwODdiM2I0ZjJhNWY4MTBi
ZWZhZDU2NjZmNTRmNWIuLjllNTQ0NjdhNzVmZWFmYWM0Y2YxOGIxNzI5NDFlNGM5OWJlNzFiM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wNC0xMSAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIHRoZSBEaXNwbGF5UmVm
cmVzaE1vbml0b3IgZmFjaWxpdGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcwNTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNp
YSBDYW1wb3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG1pc3NpbmcgZmlsZXMg
dG8gdGhlIGJ1aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHA6IEJ1aWxkIGZpeGVzLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJl
c2hNb25pdG9yOjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
dXBkYXRlUGxhdGZvcm1MYXllcik6IE1hcmsgdGhlCisgICAgICAgIHBsYXRmb3JtIGxheWVyIGFz
IHVwZGF0ZWQgaW4gdGhlIGxheWVyJ3MgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU3RhdGUuaDoKKwogMjAxNy0wNC0xMSAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIxNTIxMSk6IFtHVEtdIExvdHMgb2YgaW1hZ2Ug
cmVsYXRlZCB0ZXN0cyBhcmUgdGltaW5nIG91dCwgY2F1c2luZyB0aGUgdGVzdCBib3QgdG8gZXhp
dCBlYXJseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDU3YTc3MjZkNmNhMzRjZmE1OGY3Yzg1Y2JhMWYzNGQ4Mjc3
MTViYzIuLjNlMGRjMWM5ZGM2YTJkMWQyNzM4M2VlMmE5NjI3ZGRlOWU5NzFmOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4OCBAQAorMjAxNy0wNC0xMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIHRoZSBEaXNwbGF5UmVmcmVzaE1vbml0
b3IgZmFjaWxpdGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcwNTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3Mu
CisKKyAgICAgICAgVGhyZWFkZWRDb21wb3NpdG9yIGdhaW5zIGEgRGlzcGxheVJlZnJlc2hNb25p
dG9yIG1lbWJlciB0aGF0IGl0IGNhbiB1c2UKKyAgICAgICAgdG8gYmV0dGVyIGNvb3JkaW5hdGUg
ZGlzcGxheSByZWZyZXNoIGNhbGxiYWNrcyBvbiB0aGUgbWFpbiB0aHJlYWQuIFN0aWxsLAorICAg
ICAgICBiZWNhdXNlIGN1cnJlbnRseSB0aGUgR1RLKyBwb3J0IGRvZXNuJ3QgaGF2ZSBhIHJlbGlh
YmxlIHdheSBvZiBub3RpZnlpbmcKKyAgICAgICAgdGhlIFRocmVhZGVkQ29tcG9zaXRvciBvZiBh
IHZzeW5jIGV2ZW50LCBhIHRpbWVyIHRhcmdldGluZyA2MEZQUyBpcyB1c2VkCisgICAgICAgIGlu
IG9yZGVyIHRvIGtlZXAgdGhlIHVwZGF0ZXMgYXQgYSByZWFzb25hYmxlIHJhdGUuIFdoZW4gdGhl
IHRpbWVyIGlzIGZpcmVkLAorICAgICAgICB0aGUgVGhyZWFkZWRDb21wb3NpdG9yIGRlY2lkZXMg
aG93IHRvIHByb2NlZWQgYmFzZWQgb24gc3RhdGUgY2hhbmdlcyB0aGF0CisgICAgICAgIG1pZ2h0
IGhhdmUgb2NjdXJyZWQgZHVyaW5nIGNvbXBvc2l0aW9uIG9yIHdoZXRoZXIgdGhlcmUncyBhbnkg
ZGlzcGxheQorICAgICAgICByZWZyZXNoIGNhbGxiYWNrcyB0aGF0IHJlcXVpcmUgaGFuZGxpbmcg
b24gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIENvbXBvc2l0aW5nUnVuTG9vcCBub3cgc3Rv
cmVzIGl0cyBzdGF0ZSBpbiBhbiBhdG9taWMgdmFyaWFibGUgdGhhdCdzIHRoZW4KKyAgICAgICAg
aW5zcGVjdGVkIHdoZW5ldmVyIGEgbmV3IHVwZGF0ZSBpcyBzY2hlZHVsZWQgb3IgY29tcGxldGVk
LiBXaGVuIHNjaGVkdWxlZCwKKyAgICAgICAgaWYgdGhlcmUncyBubyB1cGRhdGUgaW4gcHJvZ3Jl
c3MsIGEgbmV3IHVwZGF0ZSBpcyByZXF1ZXN0ZWQgdGhyb3VnaCB0aGUKKyAgICAgICAgdGltZXIu
IElmIHRoZXJlJ3MgYWxyZWFkeSBhbiB1cGRhdGUgaW4gcHJvZ3Jlc3MsIGEgbmV3IHVwZGF0ZSBp
cyBtYXJrZWQKKyAgICAgICAgYXMgcGVuZGluZyBhZnRlciB0aGUgY3VycmVudCBvbmUgY29tcGxl
dGVzLiBJbiB0aGF0IGNhc2UsIHdoZW4gdGhlIHVwZGF0ZQorICAgICAgICBpcyBjb21wbGV0ZWQs
IGEgbmV3IHVwZGF0ZSBpcyByZXF1ZXN0ZWQgdGhyb3VnaCB0aGUgdGltZXIuCisKKyAgICAgICAg
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IgaXMgdXNlZCB0byBjb29yZGluYXRlIHVwZGF0
ZXMgYmV0d2VlbiB0aGUKKyAgICAgICAgbWFpbiBhbmQgdGhlIGNvbXBvc2l0aW9uIHRocmVhZCB3
aGVuZXZlciB0aGUgQ29vcmRpbmF0ZWRHcmFwaGljcyBzdGF0ZQorICAgICAgICBkZW1hbmRzIGl0
LCBvciB3aGVuZXZlciB0aGVyZSBhcmUgY2xpZW50cyByZWdpc3RlcmVkIHRvIHRoYXQgbW9uaXRv
ciB0aGF0CisgICAgICAgIHJlcXVpcmUgYW4gdXBkYXRlIChlLmcuIGEgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKCkgY2FsbGJhY2spLiBBZnRlciB0aGUKKyAgICAgICAgdXBkYXRlIG9uIHRoZSBjb21w
b3NpdGlvbiB0aHJlYWQgaXMgZmluaXNoZWQsIGFuZCB0aGUgRGlzcGxheVJlZnJlc2hNb25pdG9y
CisgICAgICAgIG9iamVjdCByZXF1aXJlcyBhbiB1cGRhdGUsIGEgY2FsbGJhY2sgYXQgdGhlIHNh
bWUgcHJpb3JpdHkgYXMgdGhlIGxheWVyCisgICAgICAgIGZsdXNoIHRpbWVyIGlzIHNjaGVkdWxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuIEluIHRoYXQgY2FsbGJhY2sgd2UgaGFuZGxlCisgICAgICAg
IGFueSBjbGllbnRzIHJlZ2lzdGVyZWQgZm9yIHRoaXMgRGlzcGxheVJlZnJlc2hNb25pdG9yIGJl
Zm9yZSBwcm9jZWVkaW5nCisgICAgICAgIHRvIGhhbmRsZSBhbnkgY2hhbmdlcyB0byB0aGUgQ29v
cmRpbmF0ZWRHcmFwaGljcyBzY2VuZS4gSW4gY2FzZSB0aGUKKyAgICAgICAgRGlzcGxheVJlZnJl
c2hNb25pdG9yIGNsaWVudHMgb3IgdGhlIGxheWVyIGZsdXNoZXMgYWxyZWFkeSBxdWV1ZWQgdXAK
KyAgICAgICAgYW55IGNoYW5nZXMgdG8gdGhlIHN0YXRlLCB3ZSBpbW1lZGlhdGVseSBhc2sgdGhl
IFRocmVhZGVkQ29tcG9zaXRvciBmb3IKKyAgICAgICAgYW4gdXBkYXRlLgorCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVWaWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2NlbmVTdGF0ZSk6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAg
ICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0
aW5nUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6Q29t
cG9zaXRpbmdSdW5Mb29wKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpp
c0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVV
cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnN0b3BVcGRhdGVz
KToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVDb21wbGV0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OmlzQ3VycmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6c3RhcnRVcGRhdGVUaW1lcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6c3RvcFVwZGF0ZVRpbWVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmg6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2Rpc3BsYXlSZWZyZXNo
TW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6aW52YWxpZGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6c2V0TmF0aXZlU3VyZmFj
ZUhhbmRsZUZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3Np
dG9yOjp1cGRhdGVWaWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRv
cjo6c2NoZWR1bGVEaXNwbGF5SW1tZWRpYXRlbHkpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRl
ZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
Q29tcG9zaXRvcjo6c2NlbmVVcGRhdGVGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6dXBkYXRlU2NlbmVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6ZGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6
VGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJOZXh0RnJhbWVJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6Y29tcGxldGVDb29yZGluYXRlZFVwZGF0ZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpjb29yZGluYXRlVXBk
YXRlQ29tcGxldGlvbldpdGhDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBv
c2l0b3I6OnBlcmZvcm1GcmFtZUNvbXBsZXRpb24pOgorICAgICAgICAqIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25p
dG9yKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJl
cXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6cmVxdWlyZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BhdGNoRGlzcGxheVJl
ZnJlc2hDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVm
cmVzaE1vbml0b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAqIFNoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmguCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdp
bmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hN
b25pdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisKIDIwMTctMDQtMTEgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBdHRh
Y2ggcG9wdXAgbWVudSB0byB3ZWIgdmlldyB3aWRnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGI1Y2Y2ODI3
YTM3NmU0ZmVmZDAxN2NhYjkyNDAxMGY0M2FmZDhjOTYuLjYzZGY2MjViYmU3ZDgzODI4NDc3YTk4
ZGZmNDJiNTljY2Y3NGU2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTA0OCw3ICsxMDQ4LDcgQEAKICNk
ZWZpbmUgVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSIDEKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICNk
ZWZpbmUgVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUiAxCiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3Jp
dHkuaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgKaW5kZXgg
NDk4ZGQ2YmNiNGVhYjViYzM5YTk2Yjk1ODVlMjlmMjMxMzA0NWQwYi4uYTFkZGUxM2RkMjgxZjY4
MDE2YjgyY2JmOWUwMDNjNzM1YThkYzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xp
Yi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxv
b3BTb3VyY2VQcmlvcml0eS5oCkBAIC02NCw2ICs2NCw5IEBAIGVudW0gUnVuTG9vcFNvdXJjZVBy
aW9yaXR5IHsKICAgICAvLyBMYXllciBmbHVzaC4KICAgICBMYXllckZsdXNoVGltZXIgPSAtMTAw
LAogCisgICAgLy8gRGlzcGxheVJlZnJlc2hNb25pdG9yIHRpbWVyLCBzaG91bGQgaGF2ZSB0aGUg
c2FtZSB2YWx1ZSBhcyB0aGUgTGF5ZXJGbHVzaFRpbWVyLgorICAgIERpc3BsYXlSZWZyZXNoTW9u
aXRvclRpbWVyID0gLTEwMCwKKwogICAgIC8vIFJlbmRlcmluZyB0aW1lciBpbiB0aGUgbWFpbiB0
aHJlYWQgd2hlbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBub3QgdXNlZC4KICAgICBOb25B
Y2NlbGVyYXRlZERyYXdpbmdUaW1lciA9IDEwMAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZTA2YzgwZGI4MWJlMTdlZmE0ZjJkOTFmYTllYmJiNmVmY2RlNzFlNC4uNDA1OGIyY2JjMDQ1MzFh
M2QxYTRhMDM0MTRmMDI1NTI2NTg0NjA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyNTMs
NyArMjI1Myw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2lu
dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcAppbmRleCAyY2JlZmNjOTUwZTc5YTUzYzJmNTg0MDNmOTRiMTc0ZmZjZmJhMDBkLi43
NzgwZWE4ZmRiM2FmMzBlNDA3ODhmZTJjNDgxM2VmODQwZTc3MmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRlICJE
aXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCIKLSNlbHNlCisjZWxpZiBQTEFURk9STShNQUMpCiAj
aW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgiCiAjZW5kaWYKIApAQCAtNDcsNiAr
NDcsNyBAQCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBEaXNwbGF5UmVmcmVzaE1vbml0
b3I6OmNyZWF0ZURlZmF1bHREaXNwbGF5UmVmcmVzaAogI2lmIFBMQVRGT1JNKElPUykKICAgICBy
ZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpjcmVhdGUoZGlzcGxheUlEKTsKICNlbmRp
ZgorICAgIFVOVVNFRF9QQVJBTShkaXNwbGF5SUQpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCmluZGV4IDhjYmQyYmUzYzg0N2Q4OWRjNjRiMzFhNjJhZTUyMGRjYjhhMGRlN2QuLjRm
ZGZmYjAzNjdhNjM2ZDkxMDBhODg2NzhmZmU5YTUyMjNiNmQyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC03MTQs
NiArNzE0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVBsYXRmb3Jt
TGF5ZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nob3VsZFVwZGF0ZVBsYXRmb3JtTGF5
ZXIgPSBmYWxzZTsKKyAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1MYXllclVwZGF0ZWQgPSB0cnVl
OwogICAgIGlmIChtX3BsYXRmb3JtTGF5ZXIpCiAgICAgICAgIG1fcGxhdGZvcm1MYXllci0+c3dh
cEJ1ZmZlcnNJZk5lZWRlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKaW5kZXggYzgxMDUzMGI1ZTdmZmY2NTM0ZDI1
MmMzNDY5MDFkNWEzZGZhNWY5My4uZWQ0ZjM0YmEwM2NhNWM5NGUxY2I2OGIzMTU0YmEwM2E5NDBj
ZjRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU3RhdGUuaApAQCAtODYsNiArODYsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyU3RhdGUgewogICAgICAgICAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQ6IDE7CiAgICAgICAg
ICAgICBib29sIHJlcGFpbnRDb3VudENoYW5nZWQgOiAxOwogICAgICAgICAgICAgYm9vbCBwbGF0
Zm9ybUxheWVyQ2hhbmdlZDogMTsKKyAgICAgICAgICAgIGJvb2wgcGxhdGZvcm1MYXllclVwZGF0
ZWQ6IDE7CiAgICAgICAgICAgICBib29sIHBsYXRmb3JtTGF5ZXJTaG91bGRTd2FwQnVmZmVyczog
MTsKICAgICAgICAgICAgIGJvb2wgaXNTY3JvbGxhYmxlQ2hhbmdlZDogMTsKICAgICAgICAgICAg
IGJvb2wgY29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlZDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKaW5kZXggNGFhMjA2YTAzYThlZTk3MjY2YWUxN2E4NTM1MzI3OTA5YTkyYjZmNC4uZmYy
NTBhZTFkNDU3N2U5NWExOWY4N2MzOWMyMGQ2ZDc0NmI1MDBjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UKQEAgLTY1LDYgKzY1LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAK
ICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9z
aXRpbmdSdW5Mb29wLmNwcAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAorICAgIFNoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvci5jcHAKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAogCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggYjk0ZmFlYTJjYzRhMmFmMWM0Njk0ZGViYmUx
OWI5OTU5MDkyODkzYi4uNTZlNmY4YjAwZjU1NmQ2YjNmOTU4NzgyMDQ1ODljODE2MmY5YWI2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0xMjcsMTIg
KzEyNyw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdM
Q29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjp1cGRhdGVWaWV3cG9ydCgpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGRpc3BhdGNoT25DbGllbnRSdW5Mb29wKFt0aGlzXSB7Ci0gICAgICAg
IGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT51cGRhdGVWaWV3cG9ydCgpOwot
ICAgIH0pOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZVZpZXdw
b3J0KCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphZGp1c3RQb3NpdGlv
bkZvckZpeGVkTGF5ZXJzKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRlbnRQb3NpdGlvbikKQEAgLTU0
Nyw5ICs1NDMsNiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2NlbmVT
dGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmCiAKICAgICBjb21taXRQZW5kaW5n
QmFja2luZ1N0b3JlT3BlcmF0aW9ucygpOwogICAgIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5n
c0lmTmVlZGVkKCk7Ci0KLSAgICAvLyBUaGUgcGVuZGluZyB0aWxlcyBzdGF0ZSBpcyBvbiBpdHMg
d2F5IGZvciB0aGUgc2NyZWVuLCB0ZWxsIHRoZSB3ZWIgcHJvY2VzcyB0byByZW5kZXIgdGhlIG5l
eHQgb25lLgotICAgIHJlbmRlck5leHRGcmFtZSgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6cmVuZGVyTmV4dEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmgKaW5kZXggMTI4YjdiZTc2ZTgwM2RkZWZmNGZjNTkxNDI4MTUzZGEyMDVkYWJl
YS4uOTllYTdkYTgxY2JhM2MyYzYwYzExZjJkYWFiMjNhZmYwYTc0M2JiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTgwLDYgKzgwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogCiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNv
bnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOworICAgIHZvaWQgcmVuZGVy
TmV4dEZyYW1lKCk7CiAKICAgICB2b2lkIHNldFZpZXdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fdmlld0JhY2tncm91bmRDb2xvciA9IGNvbG9yOyB9CiAg
ICAgV2ViQ29yZTo6Q29sb3Igdmlld0JhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld0JhY2tncm91bmRDb2xvcjsgfQpAQCAtMTIzLDcgKzEyNCw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGlzcGF0Y2hPbkNsaWVudFJ1bkxvb3AoRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICB2b2lkIHVw
ZGF0ZVZpZXdwb3J0KCk7Ci0gICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKIAogICAgIHZvaWQg
Y3JlYXRlTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIGRlbGV0
ZUxheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29t
cG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCmluZGV4IDU2
MTdiYmFkMDEwN2VlNGVmZmQzN2YxODFmMmFlZWNjMmMzZWI5ZjYuLjhhY2Y1MDY5MjEwYjU5MGFk
NWVmOTVjMWE5NWI2NjQxODViZjJlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxv
b3AuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC0xMTIsNiArMTEyLDgg
QEAgQ29tcG9zaXRpbmdSdW5Mb29wOjpDb21wb3NpdGluZ1J1bkxvb3Aoc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiYmIHVwZGF0ZUZ1bmN0aW9uKQogICAgIDogbV91cGRhdGVUaW1lcihXb3JrUXVldWVQ
b29sOjpzaW5nbGV0b24oKS5ydW5Mb29wKHRoaXMpLCB0aGlzLCAmQ29tcG9zaXRpbmdSdW5Mb29w
Ojp1cGRhdGVUaW1lckZpcmVkKQogICAgICwgbV91cGRhdGVGdW5jdGlvbihXVEZNb3ZlKHVwZGF0
ZUZ1bmN0aW9uKSkKIHsKKyAgICBtX3VwZGF0ZVN0YXRlLnN0b3JlKFVwZGF0ZVN0YXRlOjpDb21w
bGV0ZWQpOworCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX3VwZGF0ZVRpbWVyLnNl
dFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVU
aW1lcik7CiAjZW5kaWYKQEAgLTE0NCwyOCArMTQ2LDQ0IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5M
b29wOjpwZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICBt
X2Rpc3BhdGNoU3luY0NvbmRpdGlvbi53YWl0KG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXgp
OwogfQogCi12b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RhcnRVcGRhdGVUaW1lcihVcGRhdGVU
aW1pbmcgdGltaW5nKQorYm9vbCBDb21wb3NpdGluZ1J1bkxvb3A6OmlzQWN0aXZlKCkKIHsKLSAg
ICBpZiAobV91cGRhdGVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47CisgICAgcmV0
dXJuIG1fdXBkYXRlU3RhdGUubG9hZCgpICE9IFVwZGF0ZVN0YXRlOjpDb21wbGV0ZWQ7Cit9CiAK
LSAgICBjb25zdCBzdGF0aWMgZG91YmxlIHRhcmdldEZQUyA9IDYwOwotICAgIGRvdWJsZSBuZXh0
VXBkYXRlVGltZSA9IDA7Ci0gICAgaWYgKHRpbWluZyA9PSBXYWl0VW50aWxOZXh0RnJhbWUpCi0g
ICAgICAgIG5leHRVcGRhdGVUaW1lID0gc3RkOjptYXgoKDEgLyB0YXJnZXRGUFMpIC0gKG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9sYXN0VXBkYXRlVGltZSksIDAuMCk7Cit2b2lk
IENvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVVcGRhdGUoKQoreworICAgIGlmIChtX3VwZGF0
ZVN0YXRlLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhVcGRhdGVTdGF0ZTo6Q29tcGxldGVkLCBVcGRh
dGVTdGF0ZTo6SW5Qcm9ncmVzcykgPT0gVXBkYXRlU3RhdGU6OkNvbXBsZXRlZCkgeworICAgICAg
ICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDFfcyAqIG5leHRVcGRhdGVUaW1lKTsK
KyAgICBpZiAobV91cGRhdGVTdGF0ZS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoVXBkYXRlU3RhdGU6
OkluUHJvZ3Jlc3MsIFVwZGF0ZVN0YXRlOjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uKSA9PSBVcGRh
dGVTdGF0ZTo6SW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIENvbXBvc2l0
aW5nUnVuTG9vcDo6c3RvcFVwZGF0ZVRpbWVyKCkKK3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpz
dG9wVXBkYXRlcygpCiB7CiAgICAgbV91cGRhdGVUaW1lci5zdG9wKCk7CisgICAgbV91cGRhdGVT
dGF0ZS5zdG9yZShVcGRhdGVTdGF0ZTo6Q29tcGxldGVkKTsKK30KKwordm9pZCBDb21wb3NpdGlu
Z1J1bkxvb3A6OnVwZGF0ZUNvbXBsZXRlZCgpCit7CisgICAgaWYgKG1fdXBkYXRlU3RhdGUuY29t
cGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRlOjpJblByb2dyZXNzLCBVcGRhdGVTdGF0ZTo6
Q29tcGxldGVkKSA9PSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fdXBkYXRlU3RhdGUuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKFVwZGF0ZVN0YXRl
OjpQZW5kaW5nQWZ0ZXJDb21wbGV0aW9uLCBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzcykgPT0gVXBk
YXRlU3RhdGU6OlBlbmRpbmdBZnRlckNvbXBsZXRpb24pIHsKKyAgICAgICAgbV91cGRhdGVUaW1l
ci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVy
RmlyZWQoKQogewogICAgIG1fdXBkYXRlRnVuY3Rpb24oKTsKLSAgICBtX2xhc3RVcGRhdGVUaW1l
ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0
aW5nUnVuTG9vcC5oCmluZGV4IDUyYjVkN2QxMDAxMTFjNGNiOGQzMWMwYzE2ZTJiZDQwZTNkODY4
NDYuLjZiYzlkMjIwZTE5MmZmMzY1YzBmMTEyNzI1ODU0MTY5OTAxNDk3ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURF
RCkKIAorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CkBAIC00MSwyOSArNDIsMzkgQEAgY2xhc3MgQ29tcG9zaXRpbmdSdW5Mb29wIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDb21wb3NpdGluZ1J1bkxvb3ApOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIGVudW0gVXBkYXRlVGltaW5nIHsKLSAgICAgICAgSW1t
ZWRpYXRlLAotICAgICAgICBXYWl0VW50aWxOZXh0RnJhbWUsCi0gICAgfTsKLQogICAgIENvbXBv
c2l0aW5nUnVuTG9vcChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogICAgIH5Db21wb3NpdGlu
Z1J1bkxvb3AoKTsKIAogICAgIHZvaWQgcGVyZm9ybVRhc2soRnVuY3Rpb248dm9pZCAoKT4mJik7
CiAgICAgdm9pZCBwZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKLSAgICB2
b2lkIHN0YXJ0VXBkYXRlVGltZXIoVXBkYXRlVGltaW5nID0gSW1tZWRpYXRlKTsKLSAgICB2b2lk
IHN0b3BVcGRhdGVUaW1lcigpOworICAgIGJvb2wgaXNBY3RpdmUoKTsKKyAgICB2b2lkIHNjaGVk
dWxlVXBkYXRlKCk7CisgICAgdm9pZCBzdG9wVXBkYXRlcygpOworCisgICAgdm9pZCB1cGRhdGVD
b21wbGV0ZWQoKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBib29sIGlzQ3VycmVudCgpOworI2Vu
ZGlmCiAKIHByaXZhdGU6CisgICAgZW51bSBjbGFzcyBVcGRhdGVTdGF0ZSB7CisgICAgICAgIENv
bXBsZXRlZCwKKyAgICAgICAgSW5Qcm9ncmVzcywKKyAgICAgICAgUGVuZGluZ0FmdGVyQ29tcGxl
dGlvbiwKKyAgICB9OworCiAgICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKCk7CiAKICAgICBSdW5M
b29wOjpUaW1lcjxDb21wb3NpdGluZ1J1bkxvb3A+IG1fdXBkYXRlVGltZXI7CisjaWZuZGVmIE5E
RUJVRworICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsKKyNlbmRpZgogICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKKyAgICBBdG9taWM8VXBkYXRlU3RhdGU+IG1fdXBk
YXRlU3RhdGU7CiAgICAgTG9jayBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11dGV4OwogICAgIENv
bmRpdGlvbiBtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbjsKLQotICAgIGRvdWJsZSBtX2xhc3RVcGRh
dGVUaW1lIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmlu
ZGV4IGM3YWQ4MzdjODMzMjk2NzM1NGNhNzU1Nzg0MjM0ODNlMjdiMzY3ZjMuLjU0ZDk2MGIzZDBl
ZmJhMGVkZmVhYjkwOTgyMDY5YzRmN2ZiYjJkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogCiAjaW5jbHVk
ZSAiQ29tcG9zaXRpbmdSdW5Mb29wLmgiCisjaW5jbHVkZSAiVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3IuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIApAQCAtNTYsNyArNTcsMTMgQEAg
VGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQsIGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2kKICAgICAsIG1fcGFpbnRGbGFncyhwYWludEZsYWdzKQog
ICAgICwgbV9uZWVkc1Jlc2l6ZSghdmlld3BvcnRTaXplLmlzRW1wdHkoKSkKICAgICAsIG1fY29t
cG9zaXRpbmdSdW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhp
c10geyByZW5kZXJMYXllclRyZWUoKTsgfSkpCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICAsIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yKFRocmVh
ZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoKnRoaXMpKQorI2VuZGlmCiB7CisgICAg
bV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLnN0b3JlKGZhbHNlKTsKKyAgICBtX2Nvb3JkaW5hdGVV
cGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5zdG9yZShmYWxzZSk7CisKICAgICBtX2NvbXBvc2l0
aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKICAgICAgICAgbV9zY2VuZSA9IGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUodGhpcykpOwogICAgICAgICBpZiAobV9uYXRpdmVTdXJmYWNlSGFuZGxlKSB7
CkBAIC04OSwxOCArOTYsMjEgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZUdMQ29u
dGV4dCgpCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6aW52YWxpZGF0ZSgpCiB7CiAgICAgbV9z
Y2VuZS0+ZGV0YWNoKCk7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0b3BVcGRhdGVUaW1l
cigpOworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdG9wVXBkYXRlcygpOwogICAgIG1fY29t
cG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gewogICAgICAgICBtX3NjZW5lLT5wdXJnZUdMUmVzb3VyY2VzKCk7CiAg
ICAgICAgIG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgIG1fc2NlbmUgPSBudWxscHRyOwog
ICAgIH0pOworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1Ip
CisgICAgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3ItPmludmFsaWRhdGUoKTsKKyNlbmRpZgogICAg
IG1fY29tcG9zaXRpbmdSdW5Mb29wID0gbnVsbHB0cjsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCBoYW5k
bGUpCiB7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0b3BVcGRhdGVUaW1lcigpOworICAg
IG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdG9wVXBkYXRlcygpOwogICAgIG1fY29tcG9zaXRpbmdS
dW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgaGFuZGxlXSB7CiAgICAgICAgIC8vIEEgbmV3IG5hdGl2ZSBoYW5kbGUgY2FuJ3QgYmUg
c2V0IHdpdGhvdXQgZGVzdHJveWluZyB0aGUgcHJldmlvdXMgb25lIGZpcnN0IGlmIGFueS4KICAg
ICAgICAgQVNTRVJUKCEhaGFuZGxlIF4gISFtX25hdGl2ZVN1cmZhY2VIYW5kbGUpOwpAQCAtMTE5
LDcgKzEyOSw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXRTY2FsZUZhY3RvcihmbG9h
dCBzY2FsZSkKIHsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2NhbGVdIHsKICAgICAgICAgbV9zY2Fs
ZUZhY3RvciA9IHNjYWxlOwotICAgICAgICBzY2hlZHVsZURpc3BsYXlJbW1lZGlhdGVseSgpOwor
ICAgICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKICAgICB9KTsK
IH0KIApAQCAtMTI4LDcgKzEzOCw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXRTY3Jv
bGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGZsb2F0CiAgICAgbV9j
b21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHNjcm9sbFBvc2l0aW9uLCBzY2FsZV0gewogICAgICAgICBtX3Njcm9sbFBv
c2l0aW9uID0gc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIG1fc2NhbGVGYWN0b3IgPSBzY2FsZTsK
LSAgICAgICAgc2NoZWR1bGVEaXNwbGF5SW1tZWRpYXRlbHkoKTsKKyAgICAgICAgbV9jb21wb3Np
dGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7CiAgICAgfSk7CiB9CiAKQEAgLTEzOCw3ICsx
NDgsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbAogICAgICAgICBtX3ZpZXdwb3J0U2l6ZSA9
IHZpZXdwb3J0U2l6ZTsKICAgICAgICAgbV9zY2FsZUZhY3RvciA9IHNjYWxlOwogICAgICAgICBt
X25lZWRzUmVzaXplID0gdHJ1ZTsKLSAgICAgICAgc2NoZWR1bGVEaXNwbGF5SW1tZWRpYXRlbHko
KTsKKyAgICAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7CiAgICAg
fSk7CiB9CiAKQEAgLTE0Niw3ICsxNTYsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0
RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogewogICAgIG1fY29tcG9zaXRp
bmdSdW5Mb29wLT5wZXJmb3JtVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRl
ZENvbXBvc2l0b3I+KCp0aGlzKSwgZHJhd3NCYWNrZ3JvdW5kXSB7CiAgICAgICAgIG1fZHJhd3NC
YWNrZ3JvdW5kID0gZHJhd3NCYWNrZ3JvdW5kOwotICAgICAgICBzY2hlZHVsZURpc3BsYXlJbW1l
ZGlhdGVseSgpOworICAgICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUo
KTsKICAgICB9KTsKIH0KIApAQCAtMTY0LDEyICsxNzQsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9z
aXRvcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUm
IG9mZgogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlVmlld3BvcnQoKQogewotICAg
IG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdGFydFVwZGF0ZVRpbWVyKENvbXBvc2l0aW5nUnVuTG9v
cDo6V2FpdFVudGlsTmV4dEZyYW1lKTsKLX0KLQotdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNj
aGVkdWxlRGlzcGxheUltbWVkaWF0ZWx5KCkKLXsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+
c3RhcnRVcGRhdGVUaW1lcihDb21wb3NpdGluZ1J1bkxvb3A6OkltbWVkaWF0ZSk7CisgICAgbV9j
b21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRD
b21wb3NpdG9yOjpmb3JjZVJlcGFpbnQoKQpAQCAtMjA1LDE4ICsyMTAsNjUgQEAgdm9pZCBUaHJl
YWRlZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSgpCiAgICAgbV9zY2VuZS0+cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQodmlld3BvcnRUcmFuc2Zvcm0sIDEsIGNsaXBSZWN0LCBDb2xvcjo6dHJh
bnNwYXJlbnQsICFtX2RyYXdzQmFja2dyb3VuZCwgbV9zY3JvbGxQb3NpdGlvbiwgbV9wYWludEZs
YWdzKTsKIAogICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKKworICAgIHNjZW5lVXBkYXRl
RmluaXNoZWQoKTsKK30KKwordm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNjZW5lVXBkYXRlRmlu
aXNoZWQoKQoreworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNr
ID0gbV9jbGllbnRSZW5kZXJzTmV4dEZyYW1lLmxvYWQoKQorICAgICAgICB8fCBtX2Rpc3BsYXlS
ZWZyZXNoTW9uaXRvci0+cmVxdWlyZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CisgICAgYm9v
bCBzaG91bGRDb29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQgPSBtX2Nvb3JkaW5h
dGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5sb2FkKCk7CisKKyAgICBpZiAoc2hvdWxkRGlz
cGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKQorICAgICAgICBtX2Rpc3BsYXlSZWZyZXNoTW9u
aXRvci0+ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CisgICAgaWYgKCFzaG91bGRD
b29yZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQpCisgICAgICAgIG1fY29tcG9zaXRp
bmdSdW5Mb29wLT51cGRhdGVDb21wbGV0ZWQoKTsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0
b3I6OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0
ZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFJlZlB0cjxDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU+IHNjZW5lID0gbV9zY2VuZTsKLSAgICBtX3NjZW5lLT5hcHBlbmRVcGRh
dGUoW3NjZW5lLCBzdGF0ZV0geworICAgIG1fc2NlbmUtPmFwcGVuZFVwZGF0ZShbdGhpcywgc2Nl
bmUsIHN0YXRlXSB7CiAgICAgICAgIHNjZW5lLT5jb21taXRTY2VuZVN0YXRlKHN0YXRlKTsKKwor
ICAgICAgICBtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWUuc3RvcmUodHJ1ZSk7CisgICAgICAgIGJv
b2wgY29vcmRpbmF0ZVVwZGF0ZSA9IHN0ZDo6YW55X29mKHN0YXRlLmxheWVyc1RvVXBkYXRlLmJl
Z2luKCksIHN0YXRlLmxheWVyc1RvVXBkYXRlLmVuZCgpLAorICAgICAgICAgICAgW10oY29uc3Qg
c3RkOjpwYWlyPENvb3JkaW5hdGVkTGF5ZXJJRCwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3Rh
dGU+JiBpdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpdC5zZWNvbmQucGxhdGZvcm1MYXll
ckNoYW5nZWQgfHwgaXQuc2Vjb25kLnBsYXRmb3JtTGF5ZXJVcGRhdGVkOworICAgICAgICAgICAg
fSk7CisgICAgICAgIG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50LnN0b3Jl
KGNvb3JkaW5hdGVVcGRhdGUpOwogICAgIH0pOwogCi0gICAgc2NoZWR1bGVEaXNwbGF5SW1tZWRp
YXRlbHkoKTsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKK30K
KworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCitSZWZQ
dHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmRp
c3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkKK3sKKyAgICByZXR1cm4gbV9k
aXNwbGF5UmVmcmVzaE1vbml0b3IuY29weVJlZigpOworfQorCit2b2lkIFRocmVhZGVkQ29tcG9z
aXRvcjo6cmVuZGVyTmV4dEZyYW1lSWZOZWVkZWQoKQoreworICAgIGlmIChtX2NsaWVudFJlbmRl
cnNOZXh0RnJhbWUuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHRydWUsIGZhbHNlKSkKKyAgICAgICAg
bV9zY2VuZS0+cmVuZGVyTmV4dEZyYW1lKCk7Cit9CisKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9y
Ojpjb21wbGV0ZUNvb3JkaW5hdGVkVXBkYXRlSWZOZWVkZWQoKQoreworICAgIGlmIChtX2Nvb3Jk
aW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudC5jb21wYXJlRXhjaGFuZ2VTdHJvbmcodHJ1
ZSwgZmFsc2UpKQorICAgICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+dXBkYXRlQ29tcGxldGVk
KCk7Cit9CisKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpjb29yZGluYXRlVXBkYXRlQ29tcGxl
dGlvbldpdGhDbGllbnQoKQoreworICAgIG1fY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRo
Q2xpZW50LnN0b3JlKHRydWUpOworICAgIGlmICghbV9jb21wb3NpdGluZ1J1bkxvb3AtPmlzQWN0
aXZlKCkpCisgICAgICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwog
fQorI2VuZGlmCiAKIH0KICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmgKaW5kZXggYmFjODFhMzk2MjIzODUzMTkwOWFkNDRkZWIwMTRmN2FmM2MzNzQ4
OS4uNjc5NTRhMDdhNDY5OTJkMjZiYjczMGU0YjFmZTI0OTQ0NTgxZWU3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaApA
QCAtMzMsMTAgKzMzLDE1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXIu
aD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SKQorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9yLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZTsKIH0KQEAgLTQ1LDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTsKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVu
dDsKK2NsYXNzIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOwogCiBjbGFzcyBUaHJlYWRl
ZENvbXBvc2l0b3IgOiBwdWJsaWMgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50LCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkZWRDb21wb3NpdG9yPiB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVGhyZWFkZWRDb21wb3NpdG9yKTsKQEAgLTczLDYgKzc5LDEzIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZm9yY2VSZXBhaW50KCk7CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3I+IGRpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXlJRCk7CisgICAgdm9pZCByZW5kZXJOZXh0RnJhbWVJZk5lZWRlZCgpOworICAgIHZvaWQg
Y29tcGxldGVDb29yZGluYXRlZFVwZGF0ZUlmTmVlZGVkKCk7CisgICAgdm9pZCBjb29yZGluYXRl
VXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFRo
cmVhZGVkQ29tcG9zaXRvcihDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZmxvYXQg
c2NhbGVGYWN0b3IsIHVpbnQ2NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUsIFNob3VsZERvRnJhbWVT
eW5jLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzKTsKIApAQCAtODIsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVy
SUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHJlbmRlckxheWVyVHJlZSgpOwotICAgIHZvaWQgc2NoZWR1bGVEaXNwbGF5SW1tZWRpYXRlbHko
KTsKKyAgICB2b2lkIHNjZW5lVXBkYXRlRmluaXNoZWQoKTsKIAogICAgIHZvaWQgY3JlYXRlR0xD
b250ZXh0KCk7CiAKQEAgLTEwMCw2ICsxMTMsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVl
ZHNSZXNpemUgeyBmYWxzZSB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbXBvc2l0aW5nUnVu
TG9vcD4gbV9jb21wb3NpdGluZ1J1bkxvb3A7CisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIFJlZjxUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gbV9kaXNwbGF5UmVmcmVzaE1vbml0b3I7CisjZW5kaWYKKworICAgIEF0b21pYzxib29s
PiBtX2NsaWVudFJlbmRlcnNOZXh0RnJhbWU7CisgICAgQXRvbWljPGJvb2w+IG1fY29vcmRpbmF0
ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzQ4NzA5NThh
NDA2MTcwYjg4ZjY3NmJiNzdiNWY3YWNmNmM1M2YwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKworI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgJiYgVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKworI2luY2x1ZGUgIkNvbXBvc2l0aW5nUnVuTG9v
cC5oIgorI2luY2x1ZGUgIlRocmVhZGVkQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgPHd0Zi9nbGli
L1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworVGhyZWFk
ZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yKFRo
cmVhZGVkQ29tcG9zaXRvciYgY29tcG9zaXRvcikKKyAgICA6IFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcigwKQorICAgICwgbV9kaXNwbGF5UmVmcmVzaFRpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVzaENh
bGxiYWNrKQorICAgICwgbV9jb21wb3NpdG9yKCZjb21wb3NpdG9yKQoreworI2lmIFVTRShHTElC
X0VWRU5UX0xPT1ApCisgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVyLnNldFByaW9yaXR5KFJ1bkxv
b3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25pdG9yVGltZXIpOworI2VuZGlmCit9
CisKK2Jvb2wgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2Fs
bGJhY2soKQoreworICAgIGlmICghbV9jb21wb3NpdG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtdXRleCgpKTsKKyAgICBzZXRJc1NjaGVkdWxlZCh0
cnVlKTsKKworICAgIGlmIChpc1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgICAgIG1fY29tcG9z
aXRvci0+Y29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50KCk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWly
ZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtdXRl
eCgpKTsKKyAgICByZXR1cm4gaXNTY2hlZHVsZWQoKSAmJiBpc1ByZXZpb3VzRnJhbWVEb25lKCk7
Cit9CisKK3ZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BhdGNoRGlzcGxh
eVJlZnJlc2hDYWxsYmFjaygpCit7CisgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKK30KKwordm9pZCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6aW52YWxp
ZGF0ZSgpCit7CisgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVyLnN0b3AoKTsKKyAgICBtX2NvbXBv
c2l0b3IgPSBudWxscHRyOworfQorCit2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpkaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBib29sIHNob3VsZEhhbmRsZURpc3Bs
YXlSZWZyZXNoTm90aWZpY2F0aW9uID0gZmFsc2U7CisgICAgeworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtdXRleCgpKTsKKyAgICAgICAgc2hvdWxkSGFuZGxlRGlzcGxheVJlZnJlc2hOb3Rp
ZmljYXRpb24gPSBpc1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFtZURvbmUoKTsKKyAgICAg
ICAgaWYgKHNob3VsZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uKQorICAgICAgICAg
ICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7CisgICAgfQorCisgICAgaWYgKHNob3Vs
ZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uKQorICAgICAgICBEaXNwbGF5UmVmcmVz
aE1vbml0b3I6OmhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQo
dGhpcyk7CisKKyAgICBpZiAobV9jb21wb3NpdG9yKSB7CisgICAgICAgIG1fY29tcG9zaXRvci0+
cmVuZGVyTmV4dEZyYW1lSWZOZWVkZWQoKTsKKyAgICAgICAgbV9jb21wb3NpdG9yLT5jb21wbGV0
ZUNvb3JkaW5hdGVkVXBkYXRlSWZOZWVkZWQoKTsKKyAgICAgICAgaWYgKGlzU2NoZWR1bGVkKCkp
CisgICAgICAgICAgICBtX2NvbXBvc2l0b3ItPmNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0
aENsaWVudCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpICYmIFVTRShSRVFVRVNUX0FOSU1B
VElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNw
bGF5UmVmcmVzaE1vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkNDZlM2RmNzQ1ZDhlYzQwNmEwN2FiNjg5MmMyYTg4YjlmYzI5N2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaApAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVB
REVEKSAmJiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVGhyZWFkZWRDb21wb3Np
dG9yOworCitjbGFzcyBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvciA6IHB1YmxpYyBXZWJD
b3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZShUaHJlYWRlZENvbXBvc2l0b3ImIGNv
bXBvc2l0b3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvcihjb21wb3NpdG9yKSk7CisgICAgfQorICAgIHZpcnR1YWwgflRo
cmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCByZXF1
ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIHJlcXVpcmVzRGlzcGxh
eVJlZnJlc2hDYWxsYmFjaygpOworICAgIHZvaWQgZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxi
YWNrKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6CisgICAgVGhyZWFkZWRE
aXNwbGF5UmVmcmVzaE1vbml0b3IoVGhyZWFkZWRDb21wb3NpdG9yJik7CisKKyAgICB2b2lkIGRp
c3BsYXlSZWZyZXNoQ2FsbGJhY2soKTsKKyAgICBSdW5Mb29wOjpUaW1lcjxUaHJlYWRlZERpc3Bs
YXlSZWZyZXNoTW9uaXRvcj4gbV9kaXNwbGF5UmVmcmVzaFRpbWVyOworICAgIFRocmVhZGVkQ29t
cG9zaXRvciogbV9jb21wb3NpdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpICYmIFVTRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAK
aW5kZXggZTNjNThjODYwOTYwZjBiYTJlZTllODA3YThhMjc1OGNkYTVjMDUwOC4uMWVhOGEzY2Iw
ZjAxMjVjNmMxNDVhNzkwODY5NTc2ZDVkN2VjZjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNw
cApAQCAtMjIzLDYgKzIyMywxNSBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnNjaGVk
dWxlQ29tcG9zaXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHkoKQogICAgIHNjaGVkdWxlQ29tcG9z
aXRpbmdMYXllckZsdXNoKCk7CiB9CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
RElTUExBWV9NT05JVE9SKQorUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4g
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICBpZiAoIW1fbGF5ZXJUcmVl
SG9zdCB8fCBtX3dhbnRzVG9FeGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgfHwgZXhpdEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUGVuZGluZygpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0
b3IoZGlzcGxheUlEKTsKK30KKyNlbmRpZgorCiB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6
OnVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IHN0YXRlSUQsIGJvb2wgcmVzcG9uZElt
bWVkaWF0ZWx5LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQogewogICAgIEFTU0VSVCghbV9pblVwZGF0ZUJh
Y2tpbmdTdG9yZVN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCmluZGV4IGVhZDMyYWI2ZDQzZTJk
M2M0NDA5Mzg1NzBkZGMzMTRiOTYyNTQxOTMuLjcyYTdiYzI2NTNkZmQ3Y2I4YzY5NmE5NTAwMGE5
YzUyZWUwZWVjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaApAQCAtNTksNiArNTksMTAgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHkoKSBv
dmVycmlkZTsKIAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklU
T1IpCisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBj
cmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOwor
I2VuZGlmCisKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYg
UExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAgICAg
dm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGVzdHJveU5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhi
b29sJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMjgxMzUzYjhh
ZTNlMDBkZDM5YjMyMTBhZTRhNTcyOThhNTM4MTJlZi4uNjBlOTE2Nzk5YjNiMjM5YThmYjcxMTA4
MGRhZWEwN2UzMWQzN2YzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtNzQsNyAr
NzQsNyBAQCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6VGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYgd2ViUAogICAgICAgICAvLyBEbyBub3QgZG8gZnJh
bWUgc3luYyB3aGVuIHJlbmRlcmluZyBvZmZzY3JlZW4gaW4gdGhlIHdlYiBwcm9jZXNzIHRvIGVu
c3VyZSB0aGF0IFN3YXBCdWZmZXJzIG5ldmVyIGJsb2Nrcy4KICAgICAgICAgLy8gUmVuZGVyaW5n
IHRvIHRoZSBhY3R1YWwgc2NyZWVuIHdpbGwgaGFwcGVuIGxhdGVyIGFueXdheSBzaW5jZSB0aGUg
VUkgcHJvY2VzcyBzY2hlZHVsZXMgYSByZWRyYXcgZm9yIGV2ZXJ5IHVwZGF0ZSwKICAgICAgICAg
Ly8gdGhlIGNvbXBvc2l0b3Igd2lsbCB0YWtlIGNhcmUgb2Ygc3luY2luZyB0byB2YmxhbmsuCi0g
ICAgICAgIG1fY29tcG9zaXRvciA9IFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKG1fY29tcG9z
aXRvckNsaWVudCwgc2NhbGVkU2l6ZSwgc2NhbGVGYWN0b3IsIG1fc3VyZmFjZS0+d2luZG93KCks
IFRocmVhZGVkQ29tcG9zaXRvcjo6U2hvdWxkRG9GcmFtZVN5bmM6Ok5vLCBwYWludEZsYWdzKTsK
KyAgICAgICAgbV9jb21wb3NpdG9yID0gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUobV9jb21w
b3NpdG9yQ2xpZW50LCBzY2FsZWRTaXplLCBzY2FsZUZhY3RvciwgbV9zdXJmYWNlLT53aW5kb3co
KSwgVGhyZWFkZWRDb21wb3NpdG9yOjpTaG91bGREb0ZyYW1lU3luYzo6WWVzLCBwYWludEZsYWdz
KTsKICAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3Vy
ZmFjZUlEKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fY29tcG9zaXRvciA9IFRocmVhZGVkQ29t
cG9zaXRvcjo6Y3JlYXRlKG1fY29tcG9zaXRvckNsaWVudCwgc2NhbGVkU2l6ZSwgc2NhbGVGYWN0
b3IpOwpAQCAtMjQ3LDYgKzI0NywxMyBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKGJvb2wgZGlzY2FyZGFibGUpCiAgICAgICAgIGRpZENo
YW5nZVZpZXdwb3J0KCk7CiB9CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQorUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRv
cihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisgICAgcmV0dXJuIG1fY29tcG9zaXRv
ci0+ZGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBjYThhZWFjNjNjMDEzZTRkOWIwZDc5OWQ2ZTRmZDQ3
NTM2NDU1YzRiLi4yNmNiNTJhODRiOWUxMGE1YmE2MDYyYTNmYjJmYTBlMmY4N2M0NjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEwMSw2ICsxMDEsMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZEZsdXNoUm9vdExheWVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRl
IHsgfQogICAgIHZvaWQgY29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzU3RhdGUmKSBvdmVycmlkZTsKIAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheUlEKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgZW51bSBjbGFzcyBEaXNjYXJkYWJsZVN5
bmNBY3Rpb25zIHsKICAgICAgICAgVXBkYXRlU2l6ZSA9IDEgPDwgMSwKICAgICAgICAgVXBkYXRl
Vmlld3BvcnQgPSAxIDw8IDIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA1MWFmNTgxYzY1YzAxYjA4MTU1ZmI2Y2ZiNjY3ZDFl
MzNhMTEzNmNkLi43NmM1MjdlYjcxYjc3NWRiZTM3ZmMxY2E4ZjQyNjI2MGM4YTZmZDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgK
QEAgLTI5LDYgKzI5LDggQEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVTRShU
RVhUVVJFX01BUFBFUikKIAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtOTYsNiArOTgsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQo
KSA9IDA7CiAjZW5kaWYKIAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZ
X01PTklUT1IpCisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5
SUQpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHNldFZp
ZXdPdmVybGF5Um9vdExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9v
dExheWVyKSB7IG1fdmlld092ZXJsYXlSb290TGF5ZXIgPSB2aWV3T3ZlcmxheVJvb3RMYXllcjsg
fQogCiBwcm90ZWN0ZWQ6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>