<?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>190902</bug_id>
          
          <creation_ts>2018-10-25 08:43:28 -0700</creation_ts>
          <short_desc>[MSE][GStreamer] Introduce AbortableTaskQueue</short_desc>
          <delta_ts>2018-11-12 06:41:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alicia Boya García">aboya</reporter>
          <assigned_to name="Alicia Boya García">aboya</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cturner</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472065</commentid>
    <comment_count>0</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-25 08:43:28 -0700</bug_when>
    <thetext>A new synchronization primitive is introduced: AbortableTaskQueue,
which allows to send work to the main thread from a background thread
with the option to perform two-phase cancellation.

Tests for AbortableTaskQueue are included.

This new primitive has been used to overhaul GstBus messaging in
AppendPipeline. A lot of code made redundant has been deleted in the
process and lots of internal functions were now able to be made
private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472080</commentid>
    <comment_count>1</comment_count>
      <attachid>353088</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-25 09:35:52 -0700</bug_when>
    <thetext>Created attachment 353088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472197</commentid>
    <comment_count>2</comment_count>
      <attachid>353114</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-25 15:15:15 -0700</bug_when>
    <thetext>Created attachment 353114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472202</commentid>
    <comment_count>3</comment_count>
      <attachid>353116</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-25 15:31:38 -0700</bug_when>
    <thetext>Created attachment 353116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472204</commentid>
    <comment_count>4</comment_count>
      <attachid>353118</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-25 15:40:31 -0700</bug_when>
    <thetext>Created attachment 353118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472277</commentid>
    <comment_count>5</comment_count>
      <attachid>353136</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-25 18:22:13 -0700</bug_when>
    <thetext>Created attachment 353136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472490</commentid>
    <comment_count>6</comment_count>
      <attachid>353116</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-26 10:30:32 -0700</bug_when>
    <thetext>Comment on attachment 353116
Patch

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

WIP review written by calvaris on my laptop:

&gt; Source/WebCore/platform/AbortableTaskQueue.h:68
&gt; +class AbortableTaskQueue final {
&gt; +    WTF_MAKE_NONCOPYABLE(AbortableTaskQueue);

fast allocated?

&gt; Source/WebCore/platform/AbortableTaskQueue.h:72
&gt; +        ASSERT(WTF::isMainThread());

I think you can just call isMainThread() without prefixing the WTF. Please check in all places.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:83
&gt; +

Too many capitals.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:119
&gt; +    void tryEnqueueTask(std::function&lt;void()&gt; mainThreadHandler)

WTF::Function, please check in all places

&gt; Source/WebCore/platform/AbortableTaskQueue.h:133
&gt; +    std::optional&lt;R&gt; tryEnqueueTaskAndWaitForReply(std::function&lt;R()&gt; mainThreadHandler)

I think mainThreadHandler is kind of misleading. Shouldn&apos;t it be more like a task?

&gt; Source/WebCore/platform/AbortableTaskQueue.h:135
&gt; +        ASSERT(!WTF::isMainThread()); // don&apos;t deadlock main thread with itself

1) comment should start with uppercase and be in its own line IIRC
2) Whether we should allow main thread usage and run immediately the task

&gt; Source/WebCore/platform/AbortableTaskQueue.h:139
&gt; +            return std::optional&lt;R&gt;();

Shouldn&apos;t this be std::nullopt?

&gt; Source/WebCore/platform/AbortableTaskQueue.h:157
&gt; +    // This is class is provided for convenience when you want to use tryEnqueueTaskAndWaitForReply() but
&gt; +    // you don&apos;t need any particular data from the main thread in return and just knowing that it finished
&gt; +    // running the handler function is enough.
&gt; +    class DummyResponse { };

void does not work, but Void could do, as when we use this we&apos;ll have to specify AsyncTaskQueue::Void. I think this gives a better idea, conceptually speaking.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:164
&gt; +    class Task {
&gt; +        WTF_MAKE_NONCOPYABLE(Task);

fast allocated?

&gt; Source/WebCore/platform/AbortableTaskQueue.h:172
&gt; +            return m_taskQueue == nullptr;

return m_taskQueue;

&gt; Source/WebCore/platform/AbortableTaskQueue.h:177
&gt; +            ASSERT(!isCancelled());

Is this really necessary?

&gt; Source/WebCore/platform/AbortableTaskQueue.h:215
&gt; +        while (!m_channel.empty()) {
&gt; +            Task* task = m_channel.front();
&gt; +            task-&gt;cancel();
&gt; +            m_channel.pop();
&gt; +        }

Could you use an iterator and then clear? For efficiency.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:218
&gt; +    bool m_aborting = false;

bool m_aborting { false };

&gt; Source/WebCore/platform/AbortableTaskQueue.h:221
&gt; +    std::queue&lt;Task*&gt; m_channel;

WTF::Deque

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:35
&gt; +#include &lt;functional&gt;

WTF::Function does not require this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472688</commentid>
    <comment_count>7</comment_count>
      <attachid>353136</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-10-27 04:25:56 -0700</bug_when>
    <thetext>Comment on attachment 353136
Patch

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

You might need to rebase as well.

Amazing patch Alicia, thanks for writing it, it is a very good refactor. Just some things need to be worked out and we will be good to go.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:24
&gt; +#include &lt;functional&gt;
&gt; +#include &lt;memory&gt;
&gt; +#include &lt;queue&gt;

I don&apos;t think you need all these, do you?

&gt; Source/WebCore/platform/AbortableTaskQueue.h:31
&gt; +#include &lt;wtf/StdLibExtras.h&gt;
&gt; +#include &lt;wtf/ThreadSafeRefCounted.h&gt;
&gt; +#include &lt;wtf/Vector.h&gt;
&gt; +#include &lt;wtf/glib/GRefPtr.h&gt;

Ditto?

&gt; Source/WebCore/platform/AbortableTaskQueue.h:106
&gt; +    void stopAborting()

I think I would call this finishAborting.

Besides this, I see this is not used in the AppendPipeline code yet, it&apos;s for short term future patches. We should comment this in the changelog about this.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:149
&gt; +            return m_aborting || response.has_value();

has_value -&gt; operator bool in all places

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:137
&gt; +    g_signal_connect(m_bus.get(), &quot;sync-message::need-context&quot;, G_CALLBACK(+[](GstBus*, GstMessage* message, AppendPipeline* appendPipeline) {
&gt; +        appendPipeline-&gt;handleNeedContextSyncMessage(message);
&gt; +    }), this);

From what I see, this is not an integral part of this patch and it could be done in a separate one. I don&apos;t dislike it being here, it can fit, but please, add a comment to the changelog.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:191
&gt; +    g_signal_connect(m_demux.get(), &quot;pad-added&quot;, G_CALLBACK(+[](GstElement*, GstPad* demuxerSrcPad, AppendPipeline* appendPipeline) {
&gt; +        appendPipeline-&gt;connectDemuxerSrcPadToAppsinkFromAnyThread(demuxerSrcPad);
&gt; +    }), this);

This *FromAnyThread functions could suffer a name change. Feel free to do it now or consider it for another patch.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:203
&gt; +        ASSERT(!WTF::isMainThread());

This is redundant since it is checked in the method called bellow.

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:30
&gt; +#include &lt;thread&gt;

Not needed with WTF::Thread

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:40
&gt; +    bool testFinished = false;
&gt; +    int currentStep = 0;

You might want to use { } to initialize.

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:57
&gt; +        std::thread(backgroundThreadFunction).detach();

You might want to use WTF::Thread.

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:87
&gt; +    bool testFinished = false;
&gt; +    int currentStep = 0;

Ditto

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:96
&gt; +            FancyResponse ret(100);

returnValue

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:167
&gt; +    bool testFinished = false;
&gt; +    int currentStep = 0;

Ditto

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:181
&gt; +        // Main thread has called startAborting()

Period at the end.

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:187
&gt; +        // This call must return immediately because we are aborting

Ditto

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:197
&gt; +        // Main thread has called stopAborting()

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472960</commentid>
    <comment_count>8</comment_count>
      <attachid>353136</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-10-29 11:21:11 -0700</bug_when>
    <thetext>Comment on attachment 353136
Patch

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

Nice patch :) Initial drive-by review.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:36
&gt; + * thread(s) that need to send requests to the main thread.

Nit, but does this rephrasing capture the intention, it seems a little more to the point: &quot;AbortableTaskQueue is a high-level synchronization object to manage abortable tasks posted from background threads&quot;, since it has little to do with processes from what I can tell.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:38
&gt; + * The requests sent by the background thread(s) may be asynchronous, using tryEnqueueTask(), which returns

The tasks ..

&gt; Source/WebCore/platform/AbortableTaskQueue.h:68
&gt; +    WTF_MAKE_NONCOPYABLE(AbortableTaskQueue);

We may as well WTF_MAKE_FAST_ALLOCATED;

&gt; Source/WebCore/platform/AbortableTaskQueue.h:119
&gt; +    void tryEnqueueTask(std::function&lt;void()&gt; mainThreadHandler)

You&apos;ll probably want a WTF::Function instead of a std::function here and elsewhere in the patch. It has two advantages, 1) by-value captures are not copied and 2) it uses the fast allocator rather than system malloc. Point 1) can cause some unpleasant thread-safety bugs. I see you by-value capture append pipeline variables in the usage code, which could trip this up if I&apos;ve understood correctly. I don&apos;t think you rely on the copying features of std::function for this classes&apos; intended use-case, so it seems a good change to switch to WTF::Function and move the tasks into the task queue.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:163
&gt; +    class Task {

Perhaps this should be thread safe ref-counted to avoid using unique_ptr. It might even be nicer to use WTF::SharedTask&apos;s somehow.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:172
&gt; +            return m_taskQueue == nullptr;

return !m_taskQueue

&gt; Source/WebCore/platform/AbortableTaskQueue.h:221
&gt; +    std::queue&lt;Task*&gt; m_channel;

I&apos;d use a WTF queue here.

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:43
&gt; +    auto backgroundThreadFunction = [&amp;testFinished, &amp;taskQueue, &amp;currentStep]() {

You may as well use [&amp;] { ... } here rather than listing the closure capture individually. Ditto for other places in this patch.

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:50
&gt; +            g_assert(WTF::isMainThread());

Why g_assert now and not EXPECT_TRUE?

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:91
&gt; +        EXPECT_FALSE(WTF::isMainThread());

Perhaps this check should be in the above test as well.

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:101
&gt; +        EXPECT_TRUE(reply.has_value());

EXPECT_TRUE(reply)

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:193
&gt; +        EXPECT_FALSE(response.has_value());

EXPECT_FALSE(response)

&gt; Tools/TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:219
&gt; +}

Another test that might be nice is if a background thread posts a task that never returns using the synchronous api before a call to start aborting, to make sure the early return in tryEnqueueTaskAndWaitForReply on m_aborting works correctly. IIUC, that case isn&apos;t covered so far, but was the one that initially concerned me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473698</commentid>
    <comment_count>9</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-31 07:16:49 -0700</bug_when>
    <thetext>I&apos;ve found this patch regresses media/media-source/media-source-stpp-crash.html -- it deadlocked when parsing a file with an unsupported track.

That stall was caused by dangling usages of the padAdded lock/condition pair that is not needed anymore with ATQ. These are the changes to fix it, in case someone wants to look at them in isolation:

diff --git a/Source/WebCore/platform/AbortableTaskQueue.h b/Source/WebCore/platform/AbortableTaskQueue.h
index f1741db2d80..be89c7720a7 100644
--- a/Source/WebCore/platform/AbortableTaskQueue.h
+++ b/Source/WebCore/platform/AbortableTaskQueue.h
@@ -87,13 +87,14 @@ public:
     //
     // Until stopAborting is called, all present and future calls to postRequestAndWait() will immediately
     // return an empty optional.
+    //
+    // This method is idempotent.
     void startAborting()
     {
         ASSERT(WTF::isMainThread());
 
         {
             LockHolder lockHolder(m_mutex);
-            ASSERT(!m_aborting);
             m_aborting = true;
             cancelAllTasks();
         }
diff --git a/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp b/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp
index 4ac0a2ffd65..b34cb70992d 100644
--- a/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp
+++ b/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp
@@ -226,12 +226,6 @@ AppendPipeline::~AppendPipeline()
     // Forget all pending tasks and unblock the streaming thread if it was blocked.
     m_taskQueue.startAborting();
 
-    {
-        LockHolder locker(m_padAddRemoveLock);
-        m_playerPrivate = nullptr;
-        m_padAddRemoveCondition.notifyOne();
-    }
-
     GST_TRACE(&quot;Destroying AppendPipeline (%p)&quot;, this);
 
     // FIXME: Maybe notify appendComplete here?
@@ -308,12 +302,7 @@ void AppendPipeline::clearPlayerPrivate()
     // Make sure that AppendPipeline won&apos;t process more data from now on and
     // instruct handleNewSample to abort itself from now on as well.
     setAppendState(AppendState::Invalid);
-
-    {
-        LockHolder locker(m_padAddRemoveLock);
-        m_playerPrivate = nullptr;
-        m_padAddRemoveCondition.notifyOne();
-    }
+    m_taskQueue.startAborting();
 
     // And now that no handleNewSample operations will remain stalled waiting
     // for the main thread, stop the pipeline.
@@ -935,7 +924,6 @@ void AppendPipeline::connectDemuxerSrcPadToAppsink(GstPad* demuxerSrcPad)
     if (type.endsWith(&quot;webm&quot;))
         gst_pad_add_probe(demuxerSrcPad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM, matroskademuxForceSegmentStartToEqualZero, nullptr, nullptr);
 
-    LockHolder locker(m_padAddRemoveLock);
     GRefPtr&lt;GstPad&gt; sinkSinkPad = adoptGRef(gst_element_get_static_pad(m_appsink.get(), &quot;sink&quot;));
 
     // Only one stream per demuxer is supported.
@@ -944,7 +932,6 @@ void AppendPipeline::connectDemuxerSrcPadToAppsink(GstPad* demuxerSrcPad)
     GRefPtr&lt;GstCaps&gt; caps = adoptGRef(gst_pad_get_current_caps(GST_PAD(demuxerSrcPad)));
 
     if (!caps || m_appendState == AppendState::Invalid || !m_playerPrivate) {
-        m_padAddRemoveCondition.notifyOne();
         return;
     }
 
@@ -980,8 +967,6 @@ void AppendPipeline::connectDemuxerSrcPadToAppsink(GstPad* demuxerSrcPad)
         // This is going to cause an error which will detach the SourceBuffer and tear down this
         // AppendPipeline, so we need the padAddRemove lock released before continuing.
         m_track = nullptr;
-        m_padAddRemoveCondition.notifyOne();
-        locker.unlockEarly();
         didReceiveInitializationSegment();
         return;
     default:
@@ -992,8 +977,6 @@ void AppendPipeline::connectDemuxerSrcPadToAppsink(GstPad* demuxerSrcPad)
     m_appsinkCaps = WTFMove(caps);
     if (m_playerPrivate)
         m_playerPrivate-&gt;trackDetected(this, m_track, true);
-
-    m_padAddRemoveCondition.notifyOne();
 }
 
 void AppendPipeline::disconnectDemuxerSrcPadFromAppsinkFromAnyThread(GstPad*)
diff --git a/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.h b/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.h
index 0546a50c675..e27aada76ab 100644
--- a/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.h
+++ b/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.h
@@ -133,9 +133,6 @@ private:
     // queue, instead of it growing unbounded.
     std::atomic_flag m_wasBusAlreadyNotifiedOfAvailableSamples;
 
-    Lock m_padAddRemoveLock;
-    Condition m_padAddRemoveCondition;
-
     GRefPtr&lt;GstCaps&gt; m_appsinkCaps;
     GRefPtr&lt;GstCaps&gt; m_demuxerSrcPadCaps;
     FloatSize m_presentationSize;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473877</commentid>
    <comment_count>10</comment_count>
      <attachid>353533</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-31 14:35:07 -0700</bug_when>
    <thetext>Created attachment 353533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473879</commentid>
    <comment_count>11</comment_count>
      <attachid>353533</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-10-31 14:37:12 -0700</bug_when>
    <thetext>Comment on attachment 353533
Patch

Note to self: never again `webkit-patch upload -g` anything else than HEAD. It&apos;s completely broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474033</commentid>
    <comment_count>12</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-10-31 23:47:15 -0700</bug_when>
    <thetext>Alicia, I find a bit confusing because no patch is marked for review. Should I review what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474146</commentid>
    <comment_count>13</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-11-01 09:54:24 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #12)
&gt; Alicia, I find a bit confusing because no patch is marked for review. Should
&gt; I review what?

There is no new patch (yet). I used webkit-patch to upload a completely unrelated patch and because it&apos;s buggy, it uploaded it here, obsoleting the previous (ATQ related) patch, so I had to un-obsolete it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477316</commentid>
    <comment_count>14</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-11-10 15:05:06 -0800</bug_when>
    <thetext>(In reply to Alicia Boya García from comment #6)
&gt; Comment on attachment 353116 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353116&amp;action=review
&gt; 
&gt; WIP review written by calvaris on my laptop:
&gt; 
&gt; &gt; Source/WebCore/platform/AbortableTaskQueue.h:68
&gt; &gt; +class AbortableTaskQueue final {
&gt; &gt; +    WTF_MAKE_NONCOPYABLE(AbortableTaskQueue);
&gt; 
&gt; fast allocated?

Not necessary, since AbortableTaskQueue is not constructed with `new`, but rather as a member of the class that makes use of it.

&gt; &gt; Source/WebCore/platform/AbortableTaskQueue.h:164
&gt; &gt; +    class Task {
&gt; &gt; +        WTF_MAKE_NONCOPYABLE(Task);
&gt; 
&gt; fast allocated?

Here it is actually useful.

&gt; &gt; Source/WebCore/platform/AbortableTaskQueue.h:177
&gt; &gt; +            ASSERT(!isCancelled());
&gt; 
&gt; Is this really necessary?

It checks the task is not cancelled twice, which should not happen... but that&apos;s what asserts are for, crashing in Debug when things that should not happen, happen.


(In reply to Xabier Rodríguez Calvar from comment #7)
&gt; &gt; Source/WebCore/platform/AbortableTaskQueue.h:31
&gt; &gt; +#include &lt;wtf/StdLibExtras.h&gt;
This one is needed for std::optional pre-C++17

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:191
&gt; &gt; +    g_signal_connect(m_demux.get(), &quot;pad-added&quot;, G_CALLBACK(+[](GstElement*, GstPad* demuxerSrcPad, AppendPipeline* appendPipeline) {
&gt; &gt; +        appendPipeline-&gt;connectDemuxerSrcPadToAppsinkFromAnyThread(demuxerSrcPad);
&gt; &gt; +    }), this);
&gt; 
&gt; This *FromAnyThread functions could suffer a name change. Feel free to do it
&gt; now or consider it for another patch.

Done. The remaining *FromAnyThread function can actually be called from both threads.

(In reply to Charlie Turner from comment #8)
&gt; Comment on attachment 353136 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353136&amp;action=review
&gt; 
&gt; Nice patch :) Initial drive-by review.
&gt; 
&gt; &gt; Source/WebCore/platform/AbortableTaskQueue.h:36
&gt; &gt; + * thread(s) that need to send requests to the main thread.
&gt; 
&gt; Nit, but does this rephrasing capture the intention, it seems a little more
&gt; to the point: &quot;AbortableTaskQueue is a high-level synchronization object to
&gt; manage abortable tasks posted from background threads&quot;, since it has little
&gt; to do with processes from what I can tell.

There &quot;process&quot; means &quot;work, sequence of steps to accomplish something&quot;, not &quot;Operating system process&quot;. I&apos;ve made changes in the phrasing to hopefully make it clearer.

&gt; Another test that might be nice is if a background thread posts a task that
&gt; never returns using the synchronous api before a call to start aborting, to
&gt; make sure the early return in tryEnqueueTaskAndWaitForReply on m_aborting
&gt; works correctly. IIUC, that case isn&apos;t covered so far, but was the one that
&gt; initially concerned me.

I have added such a test. Unfortunately, this one cannot be scheduled exactly because we need to wait for the background thread to be suspended and there is no easy cross-platform way to do that in an accurate manner... A small sleep is used instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477320</commentid>
    <comment_count>15</comment_count>
      <attachid>354478</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-11-10 15:16:33 -0800</bug_when>
    <thetext>Created attachment 354478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477508</commentid>
    <comment_count>16</comment_count>
      <attachid>354478</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-12 01:48:47 -0800</bug_when>
    <thetext>Comment on attachment 354478
Patch

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

&gt; Source/WebCore/platform/AbortableTaskQueue.h:122
&gt; +    void tryEnqueueTask(WTF::Function&lt;void()&gt;&amp;&amp; mainThreadTaskHandler)

I would just name this enqueueTask. I don&apos;t think we need the try here, it is obvious because of the nature of this ATQ that we&apos;ll fail if it&apos;s aborting.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:124
&gt; +        LockHolder lockHolder(m_mutex);

I&apos;d suggest to ASSERT(!isMainThread()); before this as well.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:136
&gt; +    std::optional&lt;R&gt; tryEnqueueTaskAndWaitForReply(WTF::Function&lt;R()&gt;&amp;&amp; mainThreadTaskHandler)

Similar to what I commented above, I would call this enqueueTaskAndWait. I think we neither need the try nor the ForReply.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:191
&gt; +            if (!isCancelled()) {

We better bail out here if it&apos;d cancelled.

&gt; Source/WebCore/platform/AbortableTaskQueue.h:229
&gt; +    WTF::Deque&lt;Ref&lt;Task&gt;&gt; m_channel;

I guess what made you switch to Ref was actually switching to Deque, right?

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:140
&gt; +    g_signal_connect(m_bus.get(), &quot;sync-message::need-context&quot;, G_CALLBACK(+[](GstBus*, GstMessage* message, AppendPipeline* appendPipeline) {
&gt; +        appendPipeline-&gt;handleNeedContextSyncMessage(message);
&gt; +    }), this);
&gt; +    g_signal_connect(m_bus.get(), &quot;message::state-changed&quot;, G_CALLBACK(+[](GstBus*, GstMessage* message, AppendPipeline* appendPipeline) {
&gt; +        appendPipeline-&gt;handleStateChangeMessage(message);
&gt; +    }), this);

I still see no references to this on the changelog.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:333
&gt; -    ASSERT(WTF::isMainThread());
&gt; +    ASSERT(isMainThread());

Please, comment about this in the Changelog as well.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:872
&gt; +    if (!response.has_value()) {

if (!response) {
...
}

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.h:60
&gt; +private:

You made lost of methods private, please comment it on the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477515</commentid>
    <comment_count>17</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-11-12 03:10:45 -0800</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #16)
&gt; &gt; Source/WebCore/platform/AbortableTaskQueue.h:229
&gt; &gt; +    WTF::Deque&lt;Ref&lt;Task&gt;&gt; m_channel;
&gt; 
&gt; I guess what made you switch to Ref was actually switching to Deque, right?

No, it was Charlie preferring ThreadSafeRefCounted over unique_ptr.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:140
&gt; &gt; +    g_signal_connect(m_bus.get(), &quot;sync-message::need-context&quot;, G_CALLBACK(+[](GstBus*, GstMessage* message, AppendPipeline* appendPipeline) {
&gt; &gt; +        appendPipeline-&gt;handleNeedContextSyncMessage(message);
&gt; &gt; +    }), this);
&gt; &gt; +    g_signal_connect(m_bus.get(), &quot;message::state-changed&quot;, G_CALLBACK(+[](GstBus*, GstMessage* message, AppendPipeline* appendPipeline) {
&gt; &gt; +        appendPipeline-&gt;handleStateChangeMessage(message);
&gt; &gt; +    }), this);
&gt; 
&gt; I still see no references to this on the changelog.

Emphasis in caps:

        This new primitive has been used to overhaul GstBus messaging in
        AppendPipeline. A lot of code made redundant has been deleted in the
        process and lots of internal functions were now able to be made
        private. AS PART OF THE REFACTOR ALL GLIB SIGNALS IN APPENDPIPELINE
        NOW USE LAMBDAS.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:333
&gt; &gt; -    ASSERT(WTF::isMainThread());
&gt; &gt; +    ASSERT(isMainThread());
&gt; 
&gt; Please, comment about this in the Changelog as well.

OK.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.h:60
&gt; &gt; +private:
&gt; 
&gt; You made lost of methods private, please comment it on the changelog.

Emphasis in caps:

        This new primitive has been used to overhaul GstBus messaging in
        AppendPipeline. A lot of code made redundant has been deleted in the
        process and LOTS OF INTERNAL FUNCTIONS WERE NOW ABLE TO BE MADE
        PRIVATE. As part of the refactor all glib signals in AppendPipeline
        now use lambdas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477543</commentid>
    <comment_count>18</comment_count>
      <attachid>354552</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-11-12 06:02:10 -0800</bug_when>
    <thetext>Created attachment 354552
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477550</commentid>
    <comment_count>19</comment_count>
      <attachid>354552</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-12 06:40:34 -0800</bug_when>
    <thetext>Comment on attachment 354552
Patch for landing

Clearing flags on attachment: 354552

Committed r238084: &lt;https://trac.webkit.org/changeset/238084&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477551</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-12 06:40:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477552</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-12 06:41:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/45988278&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353088</attachid>
            <date>2018-10-25 09:35:52 -0700</date>
            <delta_ts>2018-10-25 15:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190902-20181025173550.patch</filename>
            <type>text/plain</type>
            <size>41014</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc4ODcxZDczYzRhM2My
N2JjOWExYzE5M2RiN2MzZmM3NGI2OGNiNC4uN2U4ZmZjNjgyZDkyNzUzMmNhNjBhYWRmMzA4ZGUy
NWI5ZDMxMjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTI1ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXVtHU3Ry
ZWFtZXJdIEludHJvZHVjZSBBYm9ydGFibGVUYXNrUXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IHN5bmNocm9uaXphdGlvbiBwcmltaXRp
dmUgaXMgaW50cm9kdWNlZDogQWJvcnRhYmxlVGFza1F1ZXVlLAorICAgICAgICB3aGljaCBhbGxv
d3MgdG8gc2VuZCB3b3JrIHRvIHRoZSBtYWluIHRocmVhZCBmcm9tIGEgYmFja2dyb3VuZCB0aHJl
YWQKKyAgICAgICAgd2l0aCB0aGUgb3B0aW9uIHRvIHBlcmZvcm0gdHdvLXBoYXNlIGNhbmNlbGxh
dGlvbi4KKworICAgICAgICBUaGlzIG5ldyBwcmltaXRpdmUgaGFzIGJlZW4gdXNlZCB0byBvdmVy
aGF1bCBHc3RCdXMgbWVzc2FnaW5nIGluCisgICAgICAgIEFwcGVuZFBpcGVsaW5lLiBBIGxvdCBv
ZiBjb2RlIG1hZGUgcmVkdW5kYW50IGhhcyBiZWVuIGRlbGV0ZWQgaW4gdGhlCisgICAgICAgIHBy
b2Nlc3MgYW5kIGxvdHMgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHdlcmUgbm93IGFibGUgdG8gYmUg
bWFkZQorICAgICAgICBwcml2YXRlLgorCisgICAgICAgICogcGxhdGZvcm0vQWJvcnRhYmxlVGFz
a1F1ZXVlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6
OmR1bXBBcHBlbmRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6QXBw
ZW5kUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6On5BcHBlbmRQ
aXBlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6YXBwc3JjRW5kT2ZB
cHBlbmRDaGVja2VyUHJvYmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6Omhh
bmRsZUFwcGxpY2F0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGlu
ZTo6aGFuZGxlQXBwc2lua05ld1NhbXBsZUZyb21BbnlUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwZW5kUGlwZWxpbmU6OmNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRo
cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQ
aXBlbGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OnNvdXJjZUJ1ZmZl
clByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtDYXBz
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjp0cmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6ZGVtdXhlclNyY1BhZENhcHMpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwZW5kUGlwZWxpbmU6OnBsYXllclByaXZhdGUpOgorCiAyMDE4LTA5LTI4ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTVNFXSBVc2Ug
dG9sZXJhbmNlIHdoZW4gZ3Jvd2luZyB0aGUgY29kZWQgZnJhbWUgZ3JvdXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3NDFkYjJk
ODBiOGQxODVjZjk0N2UxNzBhMzBlZGQxNzIyZDIyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCkBAIC0wLDAgKzEsMjI0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHF1ZXVlPgor
I2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
LyogQWJvcnRhYmxlVGFza1F1ZXVlIGlzIGEgaGlnaC1sZXZlbCBzeW5jaHJvbml6YXRpb24gb2Jq
ZWN0IGZvciBhYm9ydGFibGUgcHJvY2Vzc2VzIGRvbmUgaW4gYmFja2dyb3VuZAorICogdGhyZWFk
KHMpIHRoYXQgbmVlZCB0byBzZW5kIHJlcXVlc3RzIHRvIHRoZSBtYWluIHRocmVhZC4KKyAqCisg
KiBUaGUgcmVxdWVzdHMgc2VudCBieSB0aGUgYmFja2dyb3VuZCB0aHJlYWQocykgbWF5IGJlIGFz
eW5jaHJvbm91cywgdXNpbmcgdHJ5RW5xdWV1ZVRhc2soKSwgd2hpY2ggcmV0dXJucworICogaW1t
ZWRpYXRlbHk7IG9yIHN5bmNocm9ub3VzLCB1c2luZyB0cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JS
ZXBseSgpLCB3aGljaCBibG9ja3MgdGhlIGNhbGxpbmcgYmFja2dyb3VuZAorICogdGhyZWFkIHVu
dGlsIHRoZSByZXF1ZXN0IGlzIHNhdGlzZmllZCBieSB0aGUgbWFpbiB0aHJlYWQgKHBvc3NpYmx5
IHJldHVybmluZyBhIHJlc3BvbnNlIHZhbHVlKS4KKyAqCisgKiBXaGF0IG1ha2VzIEFib3J0YWJs
ZVRhc2tRdWV1ZSBkaWZmZXJlbnQgZnJvbSBvdGhlciB0YXNrIHF1ZXVlaW5nIG1lY2hhbmlzbXMg
aXMgdGhhdCBpdCB1c2VzIGEgdHdvLXBoYXNlCisgKiBhYm9ydCBwcm9jZXNzIHRoYXQgYXZvaWRz
IGRlYWRsb2NrcyBhbmQgbGF0ZSBub3RpZmljYXRpb24gYnVncy4KKyAqCisgKiBXaXRob3V0IGEg
dHdvLXBoYXNlIGRlc2lnbiBkZWFkbG9ja3Mgd291bGQgb2NjdXIgd2hlbiBhdHRlbXB0aW5nIGFu
IGFib3J0IGlmIGEgYmFja2dyb3VuZCB0aHJlYWQgd2FzCisgKiBibG9ja2VkIGluIGEgc3luY2hy
b25vdXMgcmVxdWVzdCBhbmQgbmVlZGVkIHRvIHJldHVybiBmcm9tIHRoZXJlIGZvciB0aGUgYWJv
cnQgdG8gYmUgaGFuZGxlZC4gQWxzbywgd2l0aG91dAorICogYSBkZXNpZ24gbGlrZSB0aGlzLCBy
ZXF1ZXN0cyBhbHJlYWR5IGVucXVldWVkIGF0IHRoYXQgcG9pbnQgb3Igc29vbiB0aGVyZWFmdGVy
IHVudGlsIHRoZSBhYm9ydCBpcyBjb21wbGV0ZQorICogd291bGQgc3RpbGwgYmUgaGFuZGxlZCBi
eSB0aGUgbWFpbiB0aHJlYWQsIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHdhbnQgdG8gYW55bW9yZS4K
KyAqCisgKiBBYm9ydGluZyBiYWNrZ3JvdW5kIHByb2Nlc3Npbmcgd2l0aCBBYm9ydGFibGVUYXNr
UXVldWUgaXMgYSBzZXZlcmFsIHN0ZXAgcHJvY2VzczoKKyAqCisgKiAgMS4gQ2FsbCBhYm9ydGFi
bGVUYXNrUXVldWUuc3RhcnRBYm9ydGluZygpIC0tIFRoaXMgd2lsbCBtYWtlIGFueSBjdXJyZW50
IG9yIGZ1dHVyZSAodW50aWwgZnVydGhlciBub3RpY2UpCisgKiAgICAgYXN5bmNocm9ub3VzIHJl
cXVlc3QgZmFpbCBpbW1lZGlhdGVseSwgc28gdGhhdCB3ZSBkb24ndCBkZWFkbG9jayBpbiB0aGUg
bmV4dCBzdGVwLiBBbHNvLCByZXF1ZXN0cyBvZgorICogICAgIGFueSBraW5kIGFscmVhZHkgZW5x
dWV1ZWQgd2lsbCBub3QgYmUgYXR0ZW5kZWQuCisgKgorICogIDIuIFNlbmQgdGhlIGFib3J0IHNp
Z25hbCB0byB0aGUgYmFja2dyb3VuZCB0aHJlYWRzLiBUaGlzIGlzIGNvbXBsZXRlbHkgYXBwbGlj
YXRpb24gc3BlY2lmaWMuIEZvciBpbnN0YW5jZSwKKyAqICAgICBpbiB0aGUgQXBwZW5kUGlwZWxp
bmUgY2FzZSB5b3Ugd291bGQgZmx1c2ggb3IgcmVzZXQgdGhlIEdTdHJlYW1lciBwaXBlbGluZSBo
ZXJlLiBXYWl0IHVudGlsIGFsbCB0aGUKKyAqICAgICBiYWNrZ3JvdW5kIHRocmVhZHMgaGF2ZSBm
aW5pc2hlZCBhYm9ydGluZy4KKyAqCisgKiAgMy4gQ2FsbCBhYm9ydGFibGVUYXNrUXVldWUuc3Rv
cEFib3J0aW5nKCkgLS0gVGhpcyB3aWxsIGFsbG93IG5ldyByZXF1ZXN0cyBzZW50IGZyb20gdGhp
cyBwb2ludCBvbiB0byBiZQorICogICAgIGhhbmRsZWQgYXMgYmVmb3JlIHRoZSBhYm9ydCB3YXMg
bWFkZS4KKyAqCisgKiAgNC4gQWZ0ZXIgdGhpcywgdGhlIGJhY2tncm91bmQgdGhyZWFkKHMpIGNh
biBiZSBwdXQgdG8gd29yayBhZ2FpbiBzYWZlbHkuCisgKgorICogVGhpcyBjbGFzcyBpcyB1c2Vk
IGZvciBoYW5kbGluZyBkZW11eGVyIGV2ZW50cyBpbiBBcHBlbmRQaXBlbGluZSwgdGFraW5nIGlu
dG8gYWNjb3VudCBkZW11eGluZyBjYW4gYmUKKyAqIGFib3J0ZWQgYXQgYW55IG1vbWVudC4gKi8K
K2NsYXNzIEFib3J0YWJsZVRhc2tRdWV1ZSBmaW5hbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQWJvcnRhYmxlVGFza1F1ZXVlKTsKK3B1YmxpYzoKKyAgICBBYm9ydGFibGVUYXNrUXVldWUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIH0KKwor
ICAgIH5BYm9ydGFibGVUYXNrUXVldWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNN
YWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoIW1fbXV0ZXguaXNIZWxkKCkpOworICAgICAg
ICBBU1NFUlQobV9jaGFubmVsLmVtcHR5KCkpOworICAgIH0KKworICAgIC8vIE1FVEhPRFMgRk9S
IFRIRSBNQUlOIFRIUkVBRDoKKworICAgIC8vIFN0YXJ0cyBhbiBhYm9ydCBwcm9jZXNzLgorICAg
IC8vCisgICAgLy8gVGFza3MgYWxyZWFkeSBxdWV1ZWQgd2lsbCBiZSBkaXNjYXJkZWQuCisgICAg
Ly8KKyAgICAvLyBVbnRpbCBzdG9wQWJvcnRpbmcgaXMgY2FsbGVkLCBhbGwgcHJlc2VudCBhbmQg
ZnV0dXJlIGNhbGxzIHRvIHBvc3RSZXF1ZXN0QW5kV2FpdCgpIHdpbGwgaW1tZWRpYXRlbHkKKyAg
ICAvLyByZXR1cm4gYW4gZW1wdHkgb3B0aW9uYWwuCisgICAgdm9pZCBzdGFydEFib3J0aW5nKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKworICAgICAgICB7
CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgICAg
ICBBU1NFUlQoIW1fYWJvcnRpbmcpOworICAgICAgICAgICAgbV9hYm9ydGluZyA9IHRydWU7Cisg
ICAgICAgICAgICBjYW5jZWxBbGxUYXNrcygpOworICAgICAgICB9CisgICAgICAgIG1fYWJvcnRl
ZE9yUmVzcG9uc2VTZXQubm90aWZ5QWxsKCk7CisgICAgfQorCisgICAgLy8gRGVjbGFyZXMgdGhl
IHByZXZpb3VzIGFib3J0IGZpbmlzaGVkLgorICAgIC8vCisgICAgLy8gSW4gb3JkZXIgdG8gYXZv
aWQgcmFjZSBjb25kaXRpb25zIHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMgbXVzdCBiZSB1bmFibGUg
dG8gcG9zdCB0YXNrcyBhdCB0aGlzIHBvaW50LgorICAgIHZvaWQgc3RvcEFib3J0aW5nKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgIEFTU0VSVChtX2Fib3J0aW5nKTsK
KyAgICAgICAgbV9hYm9ydGluZyA9IGZhbHNlOworICAgIH0KKworICAgIC8vIE1FVEhPRFMgRk9S
IFRIRSBCQUNLR1JPVU5EIFRIUkVBRFM6CisKKyAgICAvLyBFbnF1ZXVlIGEgdGFzayB0byBiZSBy
dW4gb24gdGhlIG1haW4gdGhyZWFkLiBUaGUgdGFzayBtYXkgYmUgY2FuY2VsbGVkIGlmIGFuIGFi
b3J0IHN0YXJ0cyBiZWZvcmUgaXQncworICAgIC8vIGhhbmRsZWQuCisgICAgdm9pZCB0cnlFbnF1
ZXVlVGFzayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbWFpblRocmVhZEhhbmRsZXIpCisgICAgewor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgIGlmIChtX2Fi
b3J0aW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHBvc3RUYXNrKFdURk1vdmUo
bWFpblRocmVhZEhhbmRsZXIpKTsKKyAgICB9CisKKyAgICAvLyBFbnF1ZXVlIGEgdGFzayB0byBi
ZSBydW4gb24gdGhlIG1haW4gdGhyZWFkIGFuZCB3YWl0IGZvciBpdCB0byByZXR1cm4uIFRoZSBy
ZXR1cm4gdmFsdWUgb2YgdGhlIHRhc2sgaXMKKyAgICAvLyBmb3J3YXJkZWQgdG8gdGhlIGJhY2tn
cm91bmQgdGhyZWFkLCB3cmFwcGVkIGluIGFuIG9wdGlvbmFsLgorICAgIC8vCisgICAgLy8gSWYg
d2UgYXJlIGFib3J0aW5nLCB0aGUgY2FsbCBmaW5pc2hlcyBpbW1lZGlhdGVseSwgcmV0dXJuaW5n
IGFuIGVtcHR5IG9wdGlvbmFsLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFI+CisgICAgc3RkOjpv
cHRpb25hbDxSPiB0cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseShzdGQ6OmZ1bmN0aW9uPFIo
KT4gbWFpblRocmVhZEhhbmRsZXIpCisgICAgeworICAgICAgICBBU1NFUlQoIVdURjo6aXNNYWlu
VGhyZWFkKCkpOyAvLyBkb24ndCBkZWFkbG9jayBtYWluIHRocmVhZCB3aXRoIGl0c2VsZgorCisg
ICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgaWYgKG1fYWJv
cnRpbmcpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSPigpOworCisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Uj4gcmVzcG9uc2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHBvc3RU
YXNrKFt0aGlzLCAmcmVzcG9uc2UsICZtYWluVGhyZWFkSGFuZGxlcl0oKSB7CisgICAgICAgICAg
ICBSIHJlc3BvbnNlVmFsdWUgPSBtYWluVGhyZWFkSGFuZGxlcigpOworICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlVmFsdWUpOworICAgICAgICAgICAgbV9hYm9ydGVkT3JSZXNwb25zZVNldC5u
b3RpZnlBbGwoKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQu
d2FpdChtX211dGV4LCBbdGhpcywgJnJlc3BvbnNlXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBt
X2Fib3J0aW5nIHx8IHJlc3BvbnNlLmhhc192YWx1ZSgpOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuIHJlc3BvbnNlOworICAgIH0KKworICAgIC8vIFRoaXMgaXMgY2xhc3MgaXMgcHJvdmlk
ZWQgZm9yIGNvbnZlbmllbmNlIHdoZW4geW91IHdhbnQgdG8gdXNlIHRyeUVucXVldWVUYXNrQW5k
V2FpdEZvclJlcGx5KCkgYnV0CisgICAgLy8geW91IGRvbid0IG5lZWQgYW55IHBhcnRpY3VsYXIg
ZGF0YSBmcm9tIHRoZSBtYWluIHRocmVhZCBpbiByZXR1cm4gYW5kIGp1c3Qga25vd2luZyB0aGF0
IGl0IGZpbmlzaGVkCisgICAgLy8gcnVubmluZyB0aGUgaGFuZGxlciBmdW5jdGlvbiBpcyBlbm91
Z2guCisgICAgY2xhc3MgRHVtbXlSZXNwb25zZSB7IH07CisKK3ByaXZhdGU6CisgICAgLy8gUHJv
dGVjdGVkIHN0YXRlOgorICAgIC8vICAgTWFpbiB0aHJlYWQ6IHJlYWQtd3JpdGUuIFdyaXRlcyBt
dXN0IGJlIG1hZGUgd2l0aCB0aGUgbG9jay4KKyAgICAvLyAgIEJhY2tncm91bmQgdGhyZWFkczog
cmVhZCBvbmx5LiBSZWFkcyBtdXN0IGJlIG1hZGUgd2l0aCB0aGUgbG9jay4KKyAgICBjbGFzcyBU
YXNrIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGFzayk7CisgICAgcHVibGljOgor
ICAgICAgICBUYXNrKEFib3J0YWJsZVRhc2tRdWV1ZSogdGFza1F1ZXVlLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4mJiB0YXNrQ2FsbGJhY2spCisgICAgICAgICAgICA6IG1fdGFza1F1ZXVlKHRhc2tR
dWV1ZSksIG1fdGFza0NhbGxiYWNrKFdURk1vdmUodGFza0NhbGxiYWNrKSkKKyAgICAgICAgeyB9
CisKKyAgICAgICAgYm9vbCBpc0NhbmNlbGxlZCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBtX3Rhc2tRdWV1ZSA9PSBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBjYW5jZWwoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIWlzQ2FuY2VsbGVk
KCkpOworICAgICAgICAgICAgbV90YXNrQ2FsbGJhY2sgPSBudWxscHRyOworICAgICAgICAgICAg
bV90YXNrUXVldWUgPSBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaXNwYXRj
aCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgICAgIGlmICghaXNDYW5jZWxsZWQoKSkgeworICAgICAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9jayhtX3Rhc2tRdWV1ZS0+bV9tdXRleCk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHRoaXMgPT0gbV90YXNrUXVldWUtPm1fY2hhbm5lbC5mcm9udCgpKTsKKyAgICAgICAgICAgICAg
ICBtX3Rhc2tRdWV1ZS0+bV9jaGFubmVsLnBvcCgpOworICAgICAgICAgICAgICAgIGxvY2sudW5s
b2NrRWFybHkoKTsKKyAgICAgICAgICAgICAgICBtX3Rhc2tDYWxsYmFjaygpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBBYm9ydGFibGVUYXNrUXVl
dWUqIG1fdGFza1F1ZXVlOworICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV90YXNrQ2Fs
bGJhY2s7CisgICAgfTsKKworICAgIHZvaWQgcG9zdFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+
JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBBU1NFUlQobV9tdXRleC5pc0hlbGQoKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXNrPiB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxUYXNr
Pih0aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIG1fY2hhbm5lbC5wdXNoKHRhc2su
Z2V0KCkpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXSgpIHsgdGFzay0+ZGlzcGF0Y2goKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBjYW5j
ZWxBbGxUYXNrcygpCisgICAgeworICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CisgICAgICAgIEFTU0VSVChtX211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgd2hpbGUgKCFtX2No
YW5uZWwuZW1wdHkoKSkgeworICAgICAgICAgICAgVGFzayogdGFzayA9IG1fY2hhbm5lbC5mcm9u
dCgpOworICAgICAgICAgICAgdGFzay0+Y2FuY2VsKCk7CisgICAgICAgICAgICBtX2NoYW5uZWwu
cG9wKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIG1fYWJvcnRpbmcgPSBmYWxzZTsK
KyAgICBMb2NrIG1fbXV0ZXg7CisgICAgQ29uZGl0aW9uIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQ7
CisgICAgc3RkOjpxdWV1ZTxUYXNrKj4gbV9jaGFubmVsOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAppbmRleCA5NmNmNzE2YTcz
YzkyMWY2MzQyOTZmOTViOWZiYWY0ZDRhMjUzYzUxLi5mNDg1OTcyNzAwODE3MjU1MWViOTM0ZDJi
ODdlMjM2YTIxMDQ2NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPGdzdC9hcHAv
Z3N0YXBwc2luay5oPgogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+CiAjaW5jbHVkZSA8
Z3N0L2dzdC5oPgpAQCAtNzEsNyArNzIsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpzdGF0aWNJ
bml0aWFsaXphdGlvbigpCiAgICAgc193ZWJLaXRFbmRPZkFwcGVuZE1ldGFJbmZvID0gZ3N0X21l
dGFfcmVnaXN0ZXIoc19lbmRPZkFwcGVuZE1ldGFUeXBlLCAiV2ViS2l0RW5kT2ZBcHBlbmRNZXRh
Iiwgc2l6ZW9mKEVuZE9mQXBwZW5kTWV0YSksIEVuZE9mQXBwZW5kTWV0YTo6aW5pdCwgRW5kT2ZB
cHBlbmRNZXRhOjpmcmVlLCBFbmRPZkFwcGVuZE1ldGE6OnRyYW5zZm9ybSk7CiB9CiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBkdW1wQXBwZW5kU3RhdGUoQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFN0YXRl
IGFwcGVuZFN0YXRlKQorY29uc3QgY2hhciogQXBwZW5kUGlwZWxpbmU6OmR1bXBBcHBlbmRTdGF0
ZShBcHBlbmRQaXBlbGluZTo6QXBwZW5kU3RhdGUgYXBwZW5kU3RhdGUpCiB7CiAgICAgc3dpdGNo
IChhcHBlbmRTdGF0ZSkgewogICAgIGNhc2UgQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFN0YXRlOjpJ
bnZhbGlkOgpAQCAtOTMsOSArOTQsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogZHVtcEFwcGVuZFN0
YXRlKEFwcGVuZFBpcGVsaW5lOjpBcHBlbmRTdGF0ZSBhcHBlbmRTdGF0ZSkKICAgICB9CiB9CiAK
LXN0YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5lRGVtdXhlclBhZEFkZGVkKEdzdEVsZW1lbnQqLCBH
c3RQYWQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVEZW11
eGVyUGFkUmVtb3ZlZChHc3RFbGVtZW50KiwgR3N0UGFkKiwgQXBwZW5kUGlwZWxpbmUqKTsKLXN0
YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5lQXBwc2lua0NhcHNDaGFuZ2VkKEdPYmplY3QqLCBHUGFy
YW1TcGVjKiwgQXBwZW5kUGlwZWxpbmUqKTsKICNpZiAhTE9HX0RJU0FCTEVECiBzdGF0aWMgR3N0
UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVQYWRQcm9iZURlYnVnSW5mb3JtYXRpb24oR3N0
UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiwgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24qKTsKICNl
bmRpZgpAQCAtMTA1LDI4ICsxMDMsOSBAQCBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5k
UGlwZWxpbmVBcHBzaW5rUGFkRXZlbnRQcm9iZShHc3RQYWQqLCBHc3RQYWRQcm9iZQogI2VuZGlm
CiAKIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBlbGluZURlbXV4ZXJCbGFja0hv
bGVQYWRQcm9iZShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qLCBncG9pbnRlcik7Ci1zdGF0aWMg
R3N0Rmxvd1JldHVybiBhcHBlbmRQaXBlbGluZUFwcHNpbmtOZXdTYW1wbGUoR3N0RWxlbWVudCos
IEFwcGVuZFBpcGVsaW5lKik7Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtFT1Mo
R3N0RWxlbWVudCosIEFwcGVuZFBpcGVsaW5lKik7Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGlu
ZURlbXV4ZXJOb01vcmVQYWRzKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwogCiBzdGF0
aWMgR3N0UGFkUHJvYmVSZXR1cm4gbWF0cm9za2FkZW11eEZvcmNlU2VnbWVudFN0YXJ0VG9FcXVh
bFplcm8oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiwgdm9pZCopOwogCi1zdGF0aWMgdm9pZCBh
cHBlbmRQaXBlbGluZU5lZWRDb250ZXh0TWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3Nh
Z2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBHU1Rf
VFJBQ0UoInJlY2VpdmVkIGNhbGxiYWNrIik7Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZU5l
ZWRDb250ZXh0U3luY01lc3NhZ2UobWVzc2FnZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGVuZFBp
cGVsaW5lQXBwbGljYXRpb25NZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVz
c2FnZSwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKQotewotICAgIGFwcGVuZFBpcGVs
aW5lLT5oYW5kbGVBcHBsaWNhdGlvbk1lc3NhZ2UobWVzc2FnZSk7Ci19Ci0KLXN0YXRpYyB2b2lk
IGFwcGVuZFBpcGVsaW5lU3RhdGVDaGFuZ2VNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVz
c2FnZSogbWVzc2FnZSwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKQotewotICAgIGFw
cGVuZFBpcGVsaW5lLT5oYW5kbGVTdGF0ZUNoYW5nZU1lc3NhZ2UobWVzc2FnZSk7Ci19Ci0KIEFw
cGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZShSZWY8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFt
ZXJNU0U+IG1lZGlhU291cmNlQ2xpZW50LCBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cj4gc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFJiBw
bGF5ZXJQcml2YXRlKQogICAgIDogbV9tZWRpYVNvdXJjZUNsaWVudChtZWRpYVNvdXJjZUNsaWVu
dC5nZXQoKSkKICAgICAsIG1fc291cmNlQnVmZmVyUHJpdmF0ZShzb3VyY2VCdWZmZXJQcml2YXRl
LmdldCgpKQpAQCAtMTUzLDkgKzEzMiwxNSBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxp
bmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogICAg
IGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaF9mdWxsKG1fYnVzLmdldCgpLCBSdW5Mb29wU291cmNl
UHJpb3JpdHk6OlJ1bkxvb3BEaXNwYXRjaGVyKTsKICAgICBnc3RfYnVzX2VuYWJsZV9zeW5jX21l
c3NhZ2VfZW1pc3Npb24obV9idXMuZ2V0KCkpOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChtX2J1
cy5nZXQoKSwgInN5bmMtbWVzc2FnZTo6bmVlZC1jb250ZXh0IiwgR19DQUxMQkFDSyhhcHBlbmRQ
aXBlbGluZU5lZWRDb250ZXh0TWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxf
Y29ubmVjdChtX2J1cy5nZXQoKSwgIm1lc3NhZ2U6OmFwcGxpY2F0aW9uIiwgR19DQUxMQkFDSyhh
cHBlbmRQaXBlbGluZUFwcGxpY2F0aW9uTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19z
aWduYWxfY29ubmVjdChtX2J1cy5nZXQoKSwgIm1lc3NhZ2U6OnN0YXRlLWNoYW5nZWQiLCBHX0NB
TExCQUNLKGFwcGVuZFBpcGVsaW5lU3RhdGVDaGFuZ2VNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYnVzLmdldCgpLCAic3luYy1tZXNzYWdlOjpuZWVkLWNv
bnRleHQiLCBHX0NBTExCQUNLKCtbXShHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBcHBl
bmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhh
bmRsZU5lZWRDb250ZXh0U3luY01lc3NhZ2UobWVzc2FnZSk7CisgICAgfSksIHRoaXMpOworICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV9idXMuZ2V0KCksICJtZXNzYWdlOjphcHBsaWNhdGlvbiIsIEdf
Q0FMTEJBQ0soK1tdKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5l
KiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlQXBwbGlj
YXRpb25NZXNzYWdlKG1lc3NhZ2UpOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fYnVzLmdldCgpLCAibWVzc2FnZTo6c3RhdGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soK1td
KEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBl
bGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdl
KG1lc3NhZ2UpOworICAgIH0pLCB0aGlzKTsKIAogICAgIC8vIFdlIGFzc2lnbiB0aGUgY3JlYXRl
ZCBpbnN0YW5jZXMgaGVyZSBpbnN0ZWFkIG9mIGFkb3B0UmVmKCkgYmVjYXVzZSBnc3RfYmluX2Fk
ZF9tYW55KCkKICAgICAvLyBiZWxvdyB3aWxsIGFscmVhZHkgdGFrZSB0aGUgaW5pdGlhbCByZWZl
cmVuY2UgYW5kIHdlIG5lZWQgYW4gYWRkaXRpb25hbCBvbmUgZm9yIHVzLgpAQCAtMTgxLDcgKzE2
NiwxMSBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogICAgIGdzdF9iYXNlX3Npbmtfc2V0X2xh
c3Rfc2FtcGxlX2VuYWJsZWQoR1NUX0JBU0VfU0lOSyhtX2FwcHNpbmsuZ2V0KCkpLCBGQUxTRSk7
CiAKICAgICBHUmVmUHRyPEdzdFBhZD4gYXBwc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVu
dF9nZXRfc3RhdGljX3BhZChtX2FwcHNpbmsuZ2V0KCksICJzaW5rIikpOwotICAgIGdfc2lnbmFs
X2Nvbm5lY3QoYXBwc2lua1BhZC5nZXQoKSwgIm5vdGlmeTo6Y2FwcyIsIEdfQ0FMTEJBQ0soYXBw
ZW5kUGlwZWxpbmVBcHBzaW5rQ2Fwc0NoYW5nZWQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KGFwcHNpbmtQYWQuZ2V0KCksICJub3RpZnk6OmNhcHMiLCBHX0NBTExCQUNLKCtbXShHT2Jq
ZWN0KiwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAg
ICAgICBhcHBlbmRQaXBlbGluZS0+bV90YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2soW2FwcGVuZFBp
cGVsaW5lXSgpIHsKKyAgICAgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5hcHBzaW5rQ2Fwc0NoYW5n
ZWQoKTsKKyAgICAgICAgfSk7CisgICAgfSksIHRoaXMpOwogCiAjaWYgIUxPR19ESVNBQkxFRAog
ICAgIEdSZWZQdHI8R3N0UGFkPiBkZW11eGVyUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKG1fZGVtdXguZ2V0KCksICJzaW5rIikpOwpAQCAtMjAwLDExICsxODksMzAg
QEAgQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdT
dHJlYW1lck1TRT4gbWVkaWFTb3VyY2VDbGkKICNlbmRpZgogCiAgICAgLy8gVGhlc2Ugc2lnbmFs
cyB3b24ndCBiZSBjb25uZWN0ZWQgb3V0c2lkZSBvZiB0aGUgbGlmZXRpbWUgb2YgInRoaXMiLgot
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJB
Q0soYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkQWRkZWQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9j
b25uZWN0KG1fZGVtdXguZ2V0KCksICJwYWQtcmVtb3ZlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlw
ZWxpbmVEZW11eGVyUGFkUmVtb3ZlZCksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9k
ZW11eC5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11
eGVyTm9Nb3JlUGFkcyksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9hcHBzaW5rLmdl
dCgpLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2Ft
cGxlKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2FwcHNpbmsuZ2V0KCksICJlb3Mi
LCBHX0NBTExCQUNLKGFwcGVuZFBpcGVsaW5lQXBwc2lua0VPUyksIHRoaXMpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0soK1tdKEdz
dEVsZW1lbnQqLCBHc3RQYWQqIGRlbXV4ZXJTcmNQYWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQ
aXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGluZS0+Y29ubmVjdERlbXV4ZXJTcmNQYWRU
b0FwcHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJTcmNQYWQpOworICAgIH0pLCB0aGlzKTsKKyAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fZGVtdXguZ2V0KCksICJwYWQtcmVtb3ZlZCIsIEdfQ0FMTEJB
Q0soK1tdKEdzdEVsZW1lbnQqLCBHc3RQYWQqIGRlbXV4ZXJTcmNQYWQsIEFwcGVuZFBpcGVsaW5l
KiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGluZS0+ZGlzY29ubmVjdERl
bXV4ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlUaHJlYWQoZGVtdXhlclNyY1BhZCk7CisgICAg
fSksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgIm5vLW1vcmUt
cGFkcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSogYXBwZW5k
UGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAg
ICAgR1NUX0RFQlVHKCJQb3N0aW5nIG5vLW1vcmUtcGFkcyB0YXNrIHRvIG1haW4gdGhyZWFkIik7
CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5tX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbYXBw
ZW5kUGlwZWxpbmVdKCkgeworICAgICAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmRlbXV4ZXJOb01v
cmVQYWRzKCk7CisgICAgICAgIH0pOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fYXBwc2luay5nZXQoKSwgIm5ldy1zYW1wbGUiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVt
ZW50KiBhcHBzaW5rLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAg
QVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhh
bmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tQW55VGhyZWFkKGFwcHNpbmspOworICAgIH0pLCB0aGlz
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBwc2luay5nZXQoKSwgImVvcyIsIEdfQ0FMTEJB
Q0soK1tdKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAg
ICAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQ
b3N0aW5nIGFwcHNpbmstZW9zIHRhc2sgdG8gbWFpbiB0aHJlYWQiKTsKKyAgICAgICAgYXBwZW5k
UGlwZWxpbmUtPm1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFthcHBlbmRQaXBlbGluZV0oKSB7
CisgICAgICAgICAgICBhcHBlbmRQaXBlbGluZS0+YXBwc2lua0VPUygpOworICAgICAgICB9KTsK
KyAgICB9KSwgdGhpcyk7CiAKICAgICAvLyBBZGRfbWFueSB3aWxsIHRha2Ugb3duZXJzaGlwIG9m
IGEgcmVmZXJlbmNlLiBUaGF0J3Mgd2h5IHdlIHVzZWQgYW4gYXNzaWdubWVudCBiZWZvcmUuCiAg
ICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUuZ2V0KCkpLCBtX2FwcHNyYy5n
ZXQoKSwgbV9kZW11eC5nZXQoKSwgbnVsbHB0cik7CkBAIC0yMTgsNiArMjI2LDggQEAgQXBwZW5k
UGlwZWxpbmU6On5BcHBlbmRQaXBlbGluZSgpCiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFk
KCkpOwogCiAgICAgc2V0QXBwZW5kU3RhdGUoQXBwZW5kU3RhdGU6OkludmFsaWQpOworICAgIC8v
IEZvcmdldCBhbGwgcGVuZGluZyB0YXNrcyBhbmQgdW5ibG9jayB0aGUgc3RyZWFtaW5nIHRocmVh
ZCBpZiBpdCB3YXMgYmxvY2tlZC4KKyAgICBtX3Rhc2tRdWV1ZS5zdGFydEFib3J0aW5nKCk7CiAK
ICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGFkQWRkUmVtb3ZlTG9jayk7CkBA
IC0yMzEsNyArMjQxLDcgQEAgQXBwZW5kUGlwZWxpbmU6On5BcHBlbmRQaXBlbGluZSgpCiAKICAg
ICBpZiAobV9waXBlbGluZSkgewogICAgICAgICBBU1NFUlQobV9idXMpOwotICAgICAgICBnX3Np
Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9idXMuZ2V0KCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Z3BvaW50ZXI+KGFwcGVuZFBpcGVsaW5lTmVlZENvbnRleHRNZXNzYWdlQ2FsbGJhY2sp
LCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1f
YnVzLmdldCgpLCB0aGlzKTsKICAgICAgICAgZ3N0X2J1c19kaXNhYmxlX3N5bmNfbWVzc2FnZV9l
bWlzc2lvbihtX2J1cy5nZXQoKSk7CiAgICAgICAgIGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRj
aChtX2J1cy5nZXQoKSk7CiAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5l
LmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CkBAIC0yODYsMTAgKzI5NiwxMCBAQCBHc3RQYWRQcm9i
ZVJldHVybiBBcHBlbmRQaXBlbGluZTo6YXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0
UGFkUHJvYmVJbmZvKgogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAgICB9CiAK
LSAgICBHU1RfVFJBQ0VfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJwb3N0aW5nIGVuZC1vZi1h
cHBlbmQgcmVxdWVzdCB0byBidXMiKTsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdz
dF9zdHJ1Y3R1cmVfbmV3X2VtcHR5KCJlbmQtb2YtYXBwZW5kIik7Ci0gICAgR3N0TWVzc2FnZSog
bWVzc2FnZSA9IGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKG1fYXBwc3Jj
LmdldCgpKSwgc3RydWN0dXJlKTsKLSAgICBnc3RfYnVzX3Bvc3QobV9idXMuZ2V0KCksIG1lc3Nh
Z2UpOworICAgIEdTVF9UUkFDRV9PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlBvc3RpbmcgZW5k
LW9mLWFwcGVuZCB0YXNrIHRvIHRoZSBtYWluIHRocmVhZCIpOworICAgIG1fdGFza1F1ZXVlLnRy
eUVucXVldWVUYXNrKFt0aGlzXSgpIHsKKyAgICAgICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKKyAg
ICB9KTsKICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOwogfQogCkBAIC0zMzAsNDAgKzM0
MCw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmhhbmRsZUFwcGxpY2F0aW9uTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKIAogICAg
IGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVy
ZShtZXNzYWdlKTsKLQotICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwg
ImRlbXV4ZXItY29ubmVjdC10by1hcHBzaW5rIikpIHsKLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+
IGRlbXV4ZXJTcmNQYWQ7Ci0gICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0KHN0cnVjdHVyZSwgImRl
bXV4ZXItc3JjLXBhZCIsIEdfVFlQRV9PQkpFQ1QsICZkZW11eGVyU3JjUGFkLm91dFB0cigpLCBu
dWxscHRyKTsKLSAgICAgICAgQVNTRVJUKGRlbXV4ZXJTcmNQYWQpOwotICAgICAgICBjb25uZWN0
RGVtdXhlclNyY1BhZFRvQXBwc2luayhkZW11eGVyU3JjUGFkLmdldCgpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwg
ImFwcHNpbmstY2Fwcy1jaGFuZ2VkIikpIHsKLSAgICAgICAgYXBwc2lua0NhcHNDaGFuZ2VkKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFt
ZShzdHJ1Y3R1cmUsICJhcHBzaW5rLW5ldy1zYW1wbGUiKSkgewotICAgICAgICBtX3dhc0J1c0Fs
cmVhZHlOb3RpZmllZE9mQXZhaWxhYmxlU2FtcGxlcy5jbGVhcigpOwotICAgICAgICBjb25zdW1l
QXBwc2lua0F2YWlsYWJsZVNhbXBsZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImFwcHNpbmstZW9zIikpIHsK
LSAgICAgICAgYXBwc2lua0VPUygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZGVtdXhlci1uby1tb3JlLXBhZHMi
KSkgewotICAgICAgICBkZW11eGVyTm9Nb3JlUGFkcygpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZW5kLW9mLWFw
cGVuZCIpKSB7Ci0gICAgICAgIGhhbmRsZUVuZE9mQXBwZW5kKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgR1NUX0VSUk9SKCJVbmV4cGVjdGVkIG1lc3NhZ2U6ICVzIiwgZ3N0X3N0cnVj
dHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQpAQCAtODIzLDcgKzgwMCw3IEBAIEdzdEZsb3dSZXR1cm4gQXBwZW5kUGlwZWxpbmU6OnB1c2hO
ZXdCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQog
Ci1Hc3RGbG93UmV0dXJuIEFwcGVuZFBpcGVsaW5lOjpoYW5kbGVOZXdBcHBzaW5rU2FtcGxlKEdz
dEVsZW1lbnQqIGFwcHNpbmspCitHc3RGbG93UmV0dXJuIEFwcGVuZFBpcGVsaW5lOjpoYW5kbGVB
cHBzaW5rTmV3U2FtcGxlRnJvbUFueVRocmVhZChHc3RFbGVtZW50KikKIHsKICAgICBBU1NFUlQo
IVdURjo6aXNNYWluVGhyZWFkKCkpOwogICAgIGlmICgmV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKSAh
PSBtX3N0cmVhbWluZ1RocmVhZCkgewpAQCAtODQzLDEwICs4MjAsMTEgQEAgR3N0Rmxvd1JldHVy
biBBcHBlbmRQaXBlbGluZTo6aGFuZGxlTmV3QXBwc2lua1NhbXBsZShHc3RFbGVtZW50KiBhcHBz
aW5rKQogICAgIH0KIAogICAgIGlmICghbV93YXNCdXNBbHJlYWR5Tm90aWZpZWRPZkF2YWlsYWJs
ZVNhbXBsZXMudGVzdF9hbmRfc2V0KCkpIHsKLSAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSgiYXBwc2luay1uZXctc2FtcGxlIik7Ci0gICAg
ICAgIEdzdE1lc3NhZ2UqIG1lc3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdfYXBwbGljYXRpb24oR1NU
X09CSkVDVChhcHBzaW5rKSwgc3RydWN0dXJlKTsKLSAgICAgICAgZ3N0X2J1c19wb3N0KG1fYnVz
LmdldCgpLCBtZXNzYWdlKTsKLSAgICAgICAgR1NUX1RSQUNFKCJhcHBzaW5rLW5ldy1zYW1wbGUg
bWVzc2FnZSBwb3N0ZWQgdG8gYnVzIik7CisgICAgICAgIEdTVF9UUkFDRSgiUG9zdGluZyBhcHBz
aW5rLW5ldy1zYW1wbGUgdGFzayB0byB0aGUgbWFpbiB0aHJlYWQiKTsKKyAgICAgICAgbV90YXNr
UXVldWUudHJ5RW5xdWV1ZVRhc2soW3RoaXNdKCkgeworICAgICAgICAgICAgbV93YXNCdXNBbHJl
YWR5Tm90aWZpZWRPZkF2YWlsYWJsZVNhbXBsZXMuY2xlYXIoKTsKKyAgICAgICAgICAgIGNvbnN1
bWVBcHBzaW5rQXZhaWxhYmxlU2FtcGxlcygpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBy
ZXR1cm4gR1NUX0ZMT1dfT0s7CkBAIC04ODYsNiArODY0LDcgQEAgY3JlYXRlT3B0aW9uYWxQYXJz
ZXJGb3JGb3JtYXQoR3N0UGFkKiBkZW11eGVyU3JjUGFkKQogCiB2b2lkIEFwcGVuZFBpcGVsaW5l
Ojpjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBwc2lua0Zyb21BbnlUaHJlYWQoR3N0UGFkKiBkZW11
eGVyU3JjUGFkKQogeworICAgIEFTU0VSVCghV1RGOjppc01haW5UaHJlYWQoKSk7CiAgICAgaWYg
KCFtX2FwcHNpbmspCiAgICAgICAgIHJldHVybjsKIApAQCAtOTEwLDIzICs4ODksMTQgQEAgdm9p
ZCBBcHBlbmRQaXBlbGluZTo6Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhy
ZWFkKEdzdFBhZCogZGVtdXhlclMKICAgICBlbHNlCiAgICAgICAgIG1faW5pdGlhbER1cmF0aW9u
ID0gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgaWYgKFdURjo6aXNN
YWluVGhyZWFkKCkpCisgICAgR1NUX0RFQlVHKCJSZXF1ZXN0aW5nIGRlbXV4ZXItY29ubmVjdC10
by1hcHBzaW5rIHRvIG1haW4gdGhyZWFkIik7CisgICAgYXV0byByZXNwb25zZSA9IG1fdGFza1F1
ZXVlLnRyeUVucXVldWVUYXNrQW5kV2FpdEZvclJlcGx5PEFib3J0YWJsZVRhc2tRdWV1ZTo6RHVt
bXlSZXNwb25zZT4oW3RoaXMsIGRlbXV4ZXJTcmNQYWRdKCkgewogICAgICAgICBjb25uZWN0RGVt
dXhlclNyY1BhZFRvQXBwc2luayhkZW11eGVyU3JjUGFkKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
Ly8gQ2FsbCBjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBwc2luaygpIGluIHRoZSBtYWluIHRocmVh
ZCBhbmQgd2FpdC4KLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wYWRBZGRSZW1vdmVMb2Nr
KTsKLSAgICAgICAgaWYgKCFtX3BsYXllclByaXZhdGUpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ldygiZGVt
dXhlci1jb25uZWN0LXRvLWFwcHNpbmsiLCAiZGVtdXhlci1zcmMtcGFkIiwgR19UWVBFX09CSkVD
VCwgZGVtdXhlclNyY1BhZCwgbnVsbHB0cik7Ci0gICAgICAgIEdzdE1lc3NhZ2UqIG1lc3NhZ2Ug
PSBnc3RfbWVzc2FnZV9uZXdfYXBwbGljYXRpb24oR1NUX09CSkVDVChtX2RlbXV4LmdldCgpKSwg
c3RydWN0dXJlKTsKLSAgICAgICAgZ3N0X2J1c19wb3N0KG1fYnVzLmdldCgpLCBtZXNzYWdlKTsK
LSAgICAgICAgR1NUX1RSQUNFKCJkZW11eGVyLWNvbm5lY3QtdG8tYXBwc2luayBtZXNzYWdlIHBv
c3RlZCB0byBidXMiKTsKLQotICAgICAgICBtX3BhZEFkZFJlbW92ZUNvbmRpdGlvbi53YWl0KG1f
cGFkQWRkUmVtb3ZlTG9jayk7Ci0KLSAgICAgICAgaWYgKCFtX3BsYXllclByaXZhdGUpCi0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBBYm9ydGFibGVUYXNrUXVldWU6OkR1bW15
UmVzcG9uc2UoKTsKKyAgICB9KTsKKyAgICBpZiAoIXJlc3BvbnNlLmhhc192YWx1ZSgpKSB7Cisg
ICAgICAgIC8vIFRoZSBBcHBlbmRQaXBlbGluZSBoYXMgYmVlbiBkZXN0cm95ZWQgb3IgYWJvcnRl
ZCBiZWZvcmUgd2UgcmVjZWl2ZWQgYSByZXNwb25zZS4KKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIC8vIE11c3QgYmUgZG9uZSBpbiB0aGUgdGhyZWFkIHdlIHdlcmUgY2FsbGVkIGZyb20g
KHVzdWFsbHkgc3RyZWFtaW5nIHRocmVhZCkuCkBAIC0xMDU0LDIzICsxMDI0LDYgQEAgdm9pZCBB
cHBlbmRQaXBlbGluZTo6ZGlzY29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlU
aHJlYWQoR3N0UGFkKikKICAgICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NU
X0JJTihtX3BpcGVsaW5lLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCAicGFkLXJl
bW92ZWQtYWZ0ZXIiKTsKIH0KIAotdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwZW5kUGlwZWxpbmVE
ZW11eGVyTm9Nb3JlUGFkc0Zyb21BbnlUaHJlYWQoKQotewotICAgIEdTVF9UUkFDRSgiYXBwZW5k
UGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkc0Zyb21BbnlUaHJlYWQiKTsKLSAgICBHc3RTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5KCJkZW11eGVyLW5vLW1vcmUt
cGFkcyIpOwotICAgIEdzdE1lc3NhZ2UqIG1lc3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdfYXBwbGlj
YXRpb24oR1NUX09CSkVDVChtX2FwcHNyYy5nZXQoKSksIHN0cnVjdHVyZSk7Ci0gICAgZ3N0X2J1
c19wb3N0KG1fYnVzLmdldCgpLCBtZXNzYWdlKTsKLSAgICBHU1RfVFJBQ0UoImFwcGVuZFBpcGVs
aW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkIC0gcG9zdGVkIHRvIGJ1cyIpOwotfQot
Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtDYXBzQ2hhbmdlZChHT2JqZWN0KiBh
cHBzaW5rUGFkLCBHUGFyYW1TcGVjKiwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKQot
ewotICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHko
ImFwcHNpbmstY2Fwcy1jaGFuZ2VkIik7Ci0gICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9t
ZXNzYWdlX25ld19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKGFwcHNpbmtQYWQpLCBzdHJ1Y3R1cmUp
OwotICAgIGdzdF9idXNfcG9zdChhcHBlbmRQaXBlbGluZS0+YnVzKCksIG1lc3NhZ2UpOwotICAg
IEdTVF9UUkFDRSgiYXBwc2luay1jYXBzLWNoYW5nZWQgbWVzc2FnZSBwb3N0ZWQgdG8gYnVzIik7
Ci19Ci0KICNpZiAhTE9HX0RJU0FCTEVECiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5k
UGlwZWxpbmVQYWRQcm9iZURlYnVnSW5mb3JtYXRpb24oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZv
KiBpbmZvLCBzdHJ1Y3QgUGFkUHJvYmVJbmZvcm1hdGlvbiogcGFkUHJvYmVJbmZvcm1hdGlvbikK
IHsKQEAgLTExMTAsNDAgKzEwNjMsNiBAQCBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5k
UGlwZWxpbmVEZW11eGVyQmxhY2tIb2xlUGFkUHJvYmUoR3N0UGFkKiwgR3N0UGFkUAogICAgIHJl
dHVybiBHU1RfUEFEX1BST0JFX0RST1A7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5l
RGVtdXhlclBhZEFkZGVkKEdzdEVsZW1lbnQqLCBHc3RQYWQqIGRlbXV4ZXJTcmNQYWQsIEFwcGVu
ZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBhcHBlbmRQaXBlbGluZS0+Y29ubmVj
dERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJTcmNQYWQpOwotfQot
Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRSZW1vdmVkKEdzdEVsZW1lbnQq
LCBHc3RQYWQqIGRlbXV4ZXJTcmNQYWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkK
LXsKLSAgICBhcHBlbmRQaXBlbGluZS0+ZGlzY29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBwc2lu
a0Zyb21BbnlUaHJlYWQoZGVtdXhlclNyY1BhZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGVuZFBp
cGVsaW5lRGVtdXhlck5vTW9yZVBhZHMoR3N0RWxlbWVudCosIEFwcGVuZFBpcGVsaW5lKiBhcHBl
bmRQaXBlbGluZSkKLXsKLSAgICBhcHBlbmRQaXBlbGluZS0+YXBwZW5kUGlwZWxpbmVEZW11eGVy
Tm9Nb3JlUGFkc0Zyb21BbnlUaHJlYWQoKTsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4gYXBw
ZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2FtcGxlKEdzdEVsZW1lbnQqIGFwcHNpbmssIEFwcGVuZFBp
cGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICByZXR1cm4gYXBwZW5kUGlwZWxpbmUtPmhh
bmRsZU5ld0FwcHNpbmtTYW1wbGUoYXBwc2luayk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGVuZFBp
cGVsaW5lQXBwc2lua0VPUyhHc3RFbGVtZW50KiwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVs
aW5lKQotewotICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgpKQotICAgICAgICBhcHBlbmRQaXBl
bGluZS0+YXBwc2lua0VPUygpOwotICAgIGVsc2UgewotICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5KCJhcHBzaW5rLWVvcyIpOwotICAgICAg
ICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKEdTVF9P
QkpFQ1QoYXBwZW5kUGlwZWxpbmUtPmFwcHNpbmsoKSksIHN0cnVjdHVyZSk7Ci0gICAgICAgIGdz
dF9idXNfcG9zdChhcHBlbmRQaXBlbGluZS0+YnVzKCksIG1lc3NhZ2UpOwotICAgICAgICBHU1Rf
VFJBQ0UoImFwcHNpbmstZW9zIG1lc3NhZ2UgcG9zdGVkIHRvIGJ1cyIpOwotICAgIH0KLQotICAg
IEdTVF9ERUJVRygiJXMgbWFpbiB0aHJlYWQiLCAoV1RGOjppc01haW5UaHJlYWQoKSkgPyAiSXMi
IDogIk5vdCIpOwotfQotCiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gbWF0cm9za2FkZW11eEZv
cmNlU2VnbWVudFN0YXJ0VG9FcXVhbFplcm8oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZv
LCB2b2lkKikKIHsKICAgICAvLyBtYXRyb3NrYWRlbXV4IHNldHMgR3N0U2VnbWVudC5zdGFydCB0
byB0aGUgUFRTIG9mIHRoZSBmaXJzdCBmcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
aAppbmRleCBkYTRmNzVlZWMzYWM2ODY3MmU3ZGM1MzQ4ODdhZTg0N2Y3OGEyN2Y3Li44OThjMmVj
YjFmZWMzYzUxMTdiNzNjZTY2NjNkYjUxMjkyYmY3YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQ
aXBlbGluZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJBYm9ydGFibGVU
YXNrUXVldWUuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZUNsaWVu
dEdTdHJlYW1lck1TRS5oIgpAQCAtNDUsMTEgKzQ2LDE5IEBAIHN0cnVjdCBQYWRQcm9iZUluZm9y
bWF0aW9uIHsKIAogY2xhc3MgQXBwZW5kUGlwZWxpbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8QXBwZW5kUGlwZWxpbmU+IHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEFwcGVuZFN0
YXRlIHsgSW52YWxpZCwgTm90U3RhcnRlZCwgT25nb2luZywgRGF0YVN0YXJ2ZSwgU2FtcGxpbmcs
IExhc3RTYW1wbGUsIEFib3J0aW5nIH07Ci0KICAgICBBcHBlbmRQaXBlbGluZShSZWY8TWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+LCBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cj4sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSYpOwogICAgIHZpcnR1YWwgfkFwcGVu
ZFBpcGVsaW5lKCk7CiAKKyAgICBHc3RGbG93UmV0dXJuIHB1c2hOZXdCdWZmZXIoR3N0QnVmZmVy
Kik7CisgICAgdm9pZCBjbGVhclBsYXllclByaXZhdGUoKTsKKyAgICB2b2lkIGFib3J0KCk7Cisg
ICAgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUo
KSB7IHJldHVybiBtX3NvdXJjZUJ1ZmZlclByaXZhdGUuZ2V0KCk7IH0KKyAgICBHc3RDYXBzKiBh
cHBzaW5rQ2FwcygpIHsgcmV0dXJuIG1fYXBwc2lua0NhcHMuZ2V0KCk7IH0KKyAgICBSZWZQdHI8
V2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZT4gdHJhY2soKSB7IHJldHVybiBtX3RyYWNrOyB9CisK
K3ByaXZhdGU6CisgICAgZW51bSBjbGFzcyBBcHBlbmRTdGF0ZSB7IEludmFsaWQsIE5vdFN0YXJ0
ZWQsIE9uZ29pbmcsIERhdGFTdGFydmUsIFNhbXBsaW5nLCBMYXN0U2FtcGxlLCBBYm9ydGluZyB9
OworCiAgICAgdm9pZCBoYW5kbGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqKTsK
ICAgICB2b2lkIGhhbmRsZUFwcGxpY2F0aW9uTWVzc2FnZShHc3RNZXNzYWdlKik7CiAgICAgdm9p
ZCBoYW5kbGVTdGF0ZUNoYW5nZU1lc3NhZ2UoR3N0TWVzc2FnZSopOwpAQCAtNTgsOCArNjcsNyBA
QCBwdWJsaWM6CiAgICAgQXBwZW5kU3RhdGUgYXBwZW5kU3RhdGUoKSB7IHJldHVybiBtX2FwcGVu
ZFN0YXRlOyB9CiAgICAgdm9pZCBzZXRBcHBlbmRTdGF0ZShBcHBlbmRTdGF0ZSk7CiAKLSAgICBH
c3RGbG93UmV0dXJuIGhhbmRsZU5ld0FwcHNpbmtTYW1wbGUoR3N0RWxlbWVudCopOwotICAgIEdz
dEZsb3dSZXR1cm4gcHVzaE5ld0J1ZmZlcihHc3RCdWZmZXIqKTsKKyAgICBHc3RGbG93UmV0dXJu
IGhhbmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tQW55VGhyZWFkKEdzdEVsZW1lbnQqKTsKIAogICAg
IC8vIFRha2VzIG93bmVyc2hpcCBvZiBjYXBzLgogICAgIHZvaWQgcGFyc2VEZW11eGVyU3JjUGFk
Q2FwcyhHc3RDYXBzKik7CkBAIC02OSwxOCArNzcsMTMgQEAgcHVibGljOgogICAgIHZvaWQgaGFu
ZGxlRW5kT2ZBcHBlbmQoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoKTsKICAgICBBdG9taWNTdHJpbmcgdHJhY2tJZCgpOwotICAgIHZvaWQgYWJvcnQoKTsKIAot
ICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7Ci0gICAgUmVmPFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUoKSB7IHJldHVybiBtX3NvdXJjZUJ1ZmZl
clByaXZhdGUuZ2V0KCk7IH0KICAgICBHc3RCdXMqIGJ1cygpIHsgcmV0dXJuIG1fYnVzLmdldCgp
OyB9CiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKSB7IHJldHVybiBtX3BpcGVsaW5lLmdldCgp
OyB9CiAgICAgR3N0RWxlbWVudCogYXBwc3JjKCkgeyByZXR1cm4gbV9hcHBzcmMuZ2V0KCk7IH0K
ICAgICBHc3RFbGVtZW50KiBhcHBzaW5rKCkgeyByZXR1cm4gbV9hcHBzaW5rLmdldCgpOyB9CiAg
ICAgR3N0Q2FwcyogZGVtdXhlclNyY1BhZENhcHMoKSB7IHJldHVybiBtX2RlbXV4ZXJTcmNQYWRD
YXBzLmdldCgpOyB9Ci0gICAgR3N0Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVybiBtX2FwcHNp
bmtDYXBzLmdldCgpOyB9CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKiBwbGF5
ZXJQcml2YXRlKCkgeyByZXR1cm4gbV9wbGF5ZXJQcml2YXRlOyB9Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQogICAgIFdl
YkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lciBzdHJlYW1UeXBlKCkgeyByZXR1
cm4gbV9zdHJlYW1UeXBlOyB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3REZW11eGVyU3JjUGFkRnJv
bUFwcHNpbmtGcm9tQW55VGhyZWFkKEdzdFBhZCopOwpAQCAtODgsNyArOTEsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBwc2lua0Zyb21BbnlUaHJlYWQoR3N0
UGFkKik7CiAgICAgdm9pZCBjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBwc2luayhHc3RQYWQqKTsK
IAotcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0UGlwZWxpbmUoKTsKICAgICB2b2lkIGNoZWNrRW5k
T2ZBcHBlbmQoKTsKICAgICB2b2lkIGRlbXV4ZXJOb01vcmVQYWRzKCk7CkBAIC05OCw2ICsxMDAs
NyBAQCBwcml2YXRlOgogICAgIEdzdFBhZFByb2JlUmV0dXJuIGFwcHNyY0VuZE9mQXBwZW5kQ2hl
Y2tlclByb2JlKEdzdFBhZFByb2JlSW5mbyopOwogCiAgICAgc3RhdGljIHZvaWQgc3RhdGljSW5p
dGlhbGl6YXRpb24oKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZHVtcEFwcGVuZFN0YXRlKEFw
cGVuZFBpcGVsaW5lOjpBcHBlbmRTdGF0ZSk7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
c19zdGF0aWNJbml0aWFsaXphdGlvbkZsYWc7CiAgICAgc3RhdGljIEdUeXBlIHNfZW5kT2ZBcHBl
bmRNZXRhVHlwZTsKQEAgLTE1OCw2ICsxNjEsOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok1l
ZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lciBtX3N0cmVhbVR5cGU7CiAgICAgUmVmUHRyPFdl
YkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2U+IG1fdHJhY2s7CiAKKyAgICBBYm9ydGFibGVUYXNrUXVl
dWUgbV90YXNrUXVldWU7CisKICAgICBHUmVmUHRyPEdzdEJ1ZmZlcj4gbV9wZW5kaW5nQnVmZmVy
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwCmluZGV4IGViMzFhODg1MTFkYTU0NTIwNjVkMDMwN2I3MDQ1MmY4YmVi
MzIxMDkuLmMxNjU5OTJkODUxMzQ0ZjA1NDQwOGU5MmNiZjcyYWEyNTZjNmZlNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKQEAgLTUwLDExICs1MCwxMSBAQAogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotI2lu
Y2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
I2luY2x1ZGUgIkNETUNsZWFyS2V5LmgiCkBAIC04OCw4ICs4OCw4IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyIHJlCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFKE1lZGlhUGxheWVyKiBwbGF5ZXIpCi0gICAgOiBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIocGxheWVyKSwKLSAgICAgIG1fcXVldWVVc2FnZVRpbWVyKCp0
aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpxdWV1ZVVzYWdlVGltZXJGaXJl
ZCkKKyAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihwbGF5ZXIpCisgICAgLCBtX3F1
ZXVlVXNhZ2VUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6cXVl
dWVVc2FnZVRpbWVyRmlyZWQpCiB7CiAgICAgR1NUX1RSQUNFKCJjcmVhdGluZyB0aGUgcGxheWVy
ICglcCkiLCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDhhZDE3YmYyNWY0M2Y3NmY2MWUwNjQ3MzQ1ZmQ1MjVhZWUwYzE2NjAuLjZh
NjBkMzBhODExOTU4YTQ3NjQxZTkzZTRmMTg4ODU2MzU2ZTYyMzggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0x
MC0yNSAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W01TRV1bR1N0cmVhbWVyXSBJbnRyb2R1Y2UgQWJvcnRhYmxlVGFza1F1ZXVlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgQWJvcnRhYmxl
VGFza1F1ZXVlIGFyZSBpbmNsdWRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZv
cm1HVEsuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0
YWJsZVRhc2tRdWV1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGYW5jeVJlc3BvbnNlOjpGYW5jeVJlc3BvbnNlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkZhbmN5UmVzcG9uc2U6Om9wZXJhdG9yPSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpEZXRlcm1pbmlzdGlj
U2NoZWR1bGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRldGVybWluaXN0aWNTY2hlZHVs
ZXI6OlRocmVhZENvbnRleHQ6OlRocmVhZENvbnRleHQpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjo6VGhyZWFkQ29udGV4dDo6d2FpdE15VHVybik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpUaHJlYWRDb250
ZXh0Ojp5aWVsZFRvVGhyZWFkKToKKwogMjAxOC0xMC0yNCAgQWxpY2lhIEJveWEgR2FyY8OtYSAg
PGFib3lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW01TRV1bV1RGXVtNZWRpYV0gSW52YWxpZCBN
ZWRpYVRpbWUgc2hvdWxkIGJlIGZhbHN5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFr
ZQppbmRleCBiMGUyNjhlZjI2ZWJjOGY4YzU5Y2YxZTU0YmFiZmM5OTRmYWM5YmY0Li42NGNhNDAw
NjZiODZmYWExZDE4MmQ3Mzk3Nzk5MjRjODExY2NkNDg0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTEwNCw2ICsxMDQsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2Vi
Q29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtz
LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNw
cAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1
ZXVlLmNwcAogKQogCiB0YXJnZXRfbGlua19saWJyYXJpZXMoVGVzdFdlYkNvcmUgJHt0ZXN0X3dl
YmNvcmVfTElCUkFSSUVTfSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRkZTI0NWFhMThh
NGNhYTdiZGJjYjQzOTJhMTM3Njg5NjJlMDM2ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCkBAIC0wLDAg
KzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5MLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
IDxBYm9ydGFibGVUYXNrUXVldWUuaD4KKyNpbmNsdWRlIDxVdGlsaXRpZXMuaD4KKyNpbmNsdWRl
IDx0aHJlYWQ+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK1RFU1QoQWJvcnRhYmxlVGFza1F1ZXVlLCBBc3luY1Rhc2tzKQoreworICAg
IEFib3J0YWJsZVRhc2tRdWV1ZSB0YXNrUXVldWU7CisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBm
YWxzZTsKKyAgICBpbnQgY3VycmVudFN0ZXAgPSAwOworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVN
YWluUnVuTG9vcCgpOworCisgICAgYXV0byBiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24gPSBbJnRl
c3RGaW5pc2hlZCwgJnRhc2tRdWV1ZSwgJmN1cnJlbnRTdGVwXSgpIHsKKyAgICAgICAgdGFza1F1
ZXVlLnRyeUVucXVldWVUYXNrKFsmY3VycmVudFN0ZXBdKCkgeworICAgICAgICAgICAgRVhQRUNU
X1RSVUUoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICBjdXJyZW50U3RlcCsrOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKDEsIGN1cnJlbnRTdGVwKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbJnRlc3RGaW5pc2hlZCwgJmN1cnJlbnRTdGVw
XSgpIHsKKyAgICAgICAgICAgIGdfYXNzZXJ0KFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgICAg
ICAgICAgY3VycmVudFN0ZXArKzsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3Rl
cCk7CisgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICB9KTsKKyAgICB9
OworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJmJhY2tncm91bmRUaHJlYWRGdW5j
dGlvbl0oKSB7CisgICAgICAgIHN0ZDo6dGhyZWFkKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbiku
ZGV0YWNoKCk7CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisK
K3N0cnVjdCBGYW5jeVJlc3BvbnNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGYW5jeVJl
c3BvbnNlKTsKK3B1YmxpYzoKKyAgICBGYW5jeVJlc3BvbnNlKGludCBmYW5jeUludCkKKyAgICAg
ICAgOiBmYW5jeUludChmYW5jeUludCkKKyAgICB7IH0KKworICAgIEZhbmN5UmVzcG9uc2UoRmFu
Y3lSZXNwb25zZSYmIGEpCisgICAgICAgIDogZmFuY3lJbnQoYS5mYW5jeUludCkKKyAgICB7IH0K
KworICAgIEZhbmN5UmVzcG9uc2UmIG9wZXJhdG9yPShGYW5jeVJlc3BvbnNlJiYgYSkKKyAgICB7
CisgICAgICAgIHRoaXMtPmZhbmN5SW50ID0gYS5mYW5jeUludDsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworICAgIGludCBmYW5jeUludDsKK307CisKK1RFU1QoQWJvcnRhYmxlVGFz
a1F1ZXVlLCBTeW5jVGFza3MpCit7CisgICAgQWJvcnRhYmxlVGFza1F1ZXVlIHRhc2tRdWV1ZTsK
KyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIGludCBjdXJyZW50U3RlcCA9IDA7
CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBhdXRvIGJhY2tn
cm91bmRUaHJlYWRGdW5jdGlvbiA9IFsmdGVzdEZpbmlzaGVkLCAmdGFza1F1ZXVlLCAmY3VycmVu
dFN0ZXBdKCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoV1RGOjppc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVwbHkgPSB0YXNrUXVldWUudHJ5
RW5xdWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHk8RmFuY3lSZXNwb25zZT4oWyZjdXJyZW50U3RlcCwg
JnRlc3RGaW5pc2hlZF0oKSAtPiBGYW5jeVJlc3BvbnNlIHsKKyAgICAgICAgICAgIEVYUEVDVF9U
UlVFKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgY3VycmVudFN0ZXArKzsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUSgxLCBjdXJyZW50U3RlcCk7CisgICAgICAgICAgICBGYW5jeVJl
c3BvbnNlIHJldCgxMDApOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfSk7Cisg
ICAgICAgIGN1cnJlbnRTdGVwKys7CisgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7
CisgICAgICAgIEVYUEVDVF9UUlVFKHJlcGx5Lmhhc192YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDEwMCwgcmVwbHktPmZhbmN5SW50KTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFsmdGVzdEZpbmlzaGVkXSgpIHsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7
CisgICAgICAgIH0pOworICAgIH07CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsm
YmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uXSgpIHsKKyAgICAgICAgc3RkOjp0aHJlYWQoYmFja2dy
b3VuZFRocmVhZEZ1bmN0aW9uKS5kZXRhY2goKTsKKyAgICB9KTsKKworICAgIFV0aWw6OnJ1bigm
dGVzdEZpbmlzaGVkKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFRocmVhZEVudW0+CitjbGFz
cyBEZXRlcm1pbmlzdGljU2NoZWR1bGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXRl
cm1pbmlzdGljU2NoZWR1bGVyKTsKK3B1YmxpYzoKKyAgICBEZXRlcm1pbmlzdGljU2NoZWR1bGVy
KFRocmVhZEVudW0gZmlyc3RUaHJlYWQpCisgICAgICAgIDogbV9jdXJyZW50VGhyZWFkKGZpcnN0
VGhyZWFkKQorICAgIHsgfQorCisgICAgY2xhc3MgVGhyZWFkQ29udGV4dCB7CisgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZENvbnRleHQpOworICAgIHB1YmxpYzoKKyAgICAgICAg
VGhyZWFkQ29udGV4dChEZXRlcm1pbmlzdGljU2NoZWR1bGVyJiBzY2hlZHVsZXIsIFRocmVhZEVu
dW0gdGhpc1RocmVhZCkKKyAgICAgICAgICAgIDogbV9zY2hlZHVsZXIoc2NoZWR1bGVyKSwgbV90
aGlzVGhyZWFkKHRoaXNUaHJlYWQpCisgICAgICAgIHsgfQorCisgICAgICAgIHZvaWQgd2FpdE15
VHVybigpCisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxl
ci5tX211dGV4KTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZENoYW5n
ZWQud2FpdChtX3NjaGVkdWxlci5tX211dGV4LCBbdGhpc10oKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZCA9PSBtX3RoaXNUaHJlYWQ7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgeWllbGRUb1RocmVhZChUaHJl
YWRFbnVtIG5leHRUaHJlYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
ayhtX3NjaGVkdWxlci5tX211dGV4KTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVu
dFRocmVhZCA9IG5leHRUaHJlYWQ7CisgICAgICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRU
aHJlYWRDaGFuZ2VkLm5vdGlmeUFsbCgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBEZXRlcm1pbmlzdGljU2NoZWR1bGVyJiBtX3NjaGVkdWxlcjsKKyAgICAgICAgVGhyZWFk
RW51bSBtX3RoaXNUaHJlYWQ7CisgICAgfTsKKworCitwcml2YXRlOgorICAgIFRocmVhZEVudW0g
bV9jdXJyZW50VGhyZWFkOworICAgIENvbmRpdGlvbiBtX2N1cnJlbnRUaHJlYWRDaGFuZ2VkOwor
ICAgIExvY2sgbV9tdXRleDsKK307CisKK2VudW0gY2xhc3MgVGVzdFRocmVhZCB7CisgICAgTWFp
biwKKyAgICBCYWNrZ3JvdW5kCit9OworCitURVNUKEFib3J0YWJsZVRhc2tRdWV1ZSwgQWJvcnQp
Cit7CisgICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPiBzY2hlZHVsZXIoVGVz
dFRocmVhZDo6QmFja2dyb3VuZCk7CisKKyAgICBBYm9ydGFibGVUYXNrUXVldWUgdGFza1F1ZXVl
OworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisgICAgaW50IGN1cnJlbnRTdGVwID0g
MDsKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGF1dG8gYmFj
a2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZzY2hlZHVsZXIsICZ0ZXN0RmluaXNoZWQsICZ0YXNr
UXVldWUsICZjdXJyZW50U3RlcF0oKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShXVEY6OmlzTWFp
blRocmVhZCgpKTsKKyAgICAgICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPjo6
VGhyZWFkQ29udGV4dCBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dChzY2hlZHVsZXIsIFRlc3RUaHJl
YWQ6OkJhY2tncm91bmQpOworCisgICAgICAgIHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbXSgp
IHsKKyAgICAgICAgICAgIC8vIFRoaXMgdGFzayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRv
IHJ1biB1bmRlciB0aGUgc2NoZWR1bGluZyBvZiB0aGlzIHRlc3QuCisgICAgICAgICAgICBFWFBF
Q1RfVFJVRShmYWxzZSk7CisgICAgICAgIH0pOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29u
dGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6Ok1haW4pOworICAgICAgICBiYWNrZ3JvdW5k
VGhyZWFkQ29udGV4dC53YWl0TXlUdXJuKCk7CisKKyAgICAgICAgLy8gTWFpbiB0aHJlYWQgaGFz
IGNhbGxlZCBzdGFydEFib3J0aW5nKCkKKworICAgICAgICB0YXNrUXVldWUudHJ5RW5xdWV1ZVRh
c2soW10oKSB7CisgICAgICAgICAgICAvLyBUaGlzIHRhc2sgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
YWJsZSB0byBydW4gdW5kZXIgdGhlIHNjaGVkdWxpbmcgb2YgdGhpcyB0ZXN0LgorICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAgICAgICB9KTsKKyAgICAgICAgLy8gVGhpcyBjYWxs
IG11c3QgcmV0dXJuIGltbWVkaWF0ZWx5IGJlY2F1c2Ugd2UgYXJlIGFib3J0aW5nCisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUudHJ5RW5x
dWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHk8RmFuY3lSZXNwb25zZT4oW10oKSAtPiBGYW5jeVJlc3Bv
bnNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMgdGFzayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxl
IHRvIHJ1biB1bmRlciB0aGUgc2NoZWR1bGluZyBvZiB0aGlzIHRlc3QuCisgICAgICAgICAgICBF
WFBFQ1RfVFJVRShmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gRmFuY3lSZXNwb25zZSgxMDAp
OworICAgICAgICB9KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlLmhhc192YWx1ZSgp
KTsKKyAgICAgICAgYmFja2dyb3VuZFRocmVhZENvbnRleHQueWllbGRUb1RocmVhZChUZXN0VGhy
ZWFkOjpNYWluKTsKKyAgICAgICAgYmFja2dyb3VuZFRocmVhZENvbnRleHQud2FpdE15VHVybigp
OworCisgICAgICAgIC8vIE1haW4gdGhyZWFkIGhhcyBjYWxsZWQgc3RvcEFib3J0aW5nKCkKKwor
ICAgICAgICB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2soWyZ0ZXN0RmluaXNoZWRdKCkgeworICAg
ICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZzY2hlZHVsZXIsICZiYWNrZ3JvdW5kVGhyZWFk
RnVuY3Rpb24sICZ0YXNrUXVldWVdKCkgeworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmlzTWFp
blRocmVhZCgpKTsKKyAgICAgICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPjo6
VGhyZWFkQ29udGV4dCBtYWluVGhyZWFkQ29udGV4dChzY2hlZHVsZXIsIFRlc3RUaHJlYWQ6Ok1h
aW4pOworICAgICAgICBzdGQ6OnRocmVhZChiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24pLmRldGFj
aCgpOworCisgICAgICAgIG1haW5UaHJlYWRDb250ZXh0LndhaXRNeVR1cm4oKTsKKworICAgICAg
ICB0YXNrUXVldWUuc3RhcnRBYm9ydGluZygpOworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC55
aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6OkJhY2tncm91bmQpOworICAgICAgICBtYWluVGhyZWFk
Q29udGV4dC53YWl0TXlUdXJuKCk7CisKKyAgICAgICAgdGFza1F1ZXVlLnN0b3BBYm9ydGluZygp
OworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6OkJh
Y2tncm91bmQpOworICAgIH0pOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353114</attachid>
            <date>2018-10-25 15:15:15 -0700</date>
            <delta_ts>2018-10-25 15:31:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190902-20181025231512.patch</filename>
            <type>text/plain</type>
            <size>47595</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc4ODcxZDczYzRhM2My
N2JjOWExYzE5M2RiN2MzZmM3NGI2OGNiNC4uOGE5MmEwZTUyNmU0NWVlNTQ3YzA2YzBhNjA5YTYy
N2EwODIwMGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE4LTEwLTI1ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXVtHU3Ry
ZWFtZXJdIEludHJvZHVjZSBBYm9ydGFibGVUYXNrUXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IHN5bmNocm9uaXphdGlvbiBwcmltaXRp
dmUgaXMgaW50cm9kdWNlZDogQWJvcnRhYmxlVGFza1F1ZXVlLAorICAgICAgICB3aGljaCBhbGxv
d3MgdG8gc2VuZCB3b3JrIHRvIHRoZSBtYWluIHRocmVhZCBmcm9tIGEgYmFja2dyb3VuZCB0aHJl
YWQKKyAgICAgICAgd2l0aCB0aGUgb3B0aW9uIHRvIHBlcmZvcm0gdHdvLXBoYXNlIGNhbmNlbGxh
dGlvbi4KKworICAgICAgICBUaGlzIG5ldyBwcmltaXRpdmUgaGFzIGJlZW4gdXNlZCB0byBvdmVy
aGF1bCBHc3RCdXMgbWVzc2FnaW5nIGluCisgICAgICAgIEFwcGVuZFBpcGVsaW5lLiBBIGxvdCBv
ZiBjb2RlIG1hZGUgcmVkdW5kYW50IGhhcyBiZWVuIGRlbGV0ZWQgaW4gdGhlCisgICAgICAgIHBy
b2Nlc3MgYW5kIGxvdHMgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHdlcmUgbm93IGFibGUgdG8gYmUg
bWFkZQorICAgICAgICBwcml2YXRlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpkdW1wQXBwZW5k
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OmFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tl
clByb2JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpoYW5kbGVBcHBsaWNh
dGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OmhhbmRsZUFw
cHNpbmtOZXdTYW1wbGVGcm9tQW55VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBp
cGVsaW5lOjpjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBwc2lua0Zyb21BbnlUaHJlYWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpzb3VyY2VCdWZmZXJQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rQ2Fwcyk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6dHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXBw
ZW5kUGlwZWxpbmU6OmRlbXV4ZXJTcmNQYWRDYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVu
ZFBpcGVsaW5lOjpwbGF5ZXJQcml2YXRlKToKKwogMjAxOC0wOS0yOCAgQWxpY2lhIEJveWEgR2Fy
Y8OtYSAgPGFib3lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW01TRV0gVXNlIHRvbGVyYW5jZSB3
aGVuIGdyb3dpbmcgdGhlIGNvZGVkIGZyYW1lIGdyb3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTQxMTA2ZjY5ZjZjZjVjYmFj
YmVhNDY4NzlkYWFiMWUwNDM4NDNlZi4uYTRiOTBkNTQxMTkwZDE0MTlhMzE3NGU0NWRlZTEyOGM5
ODJkMjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTI0Miw2ICsxMjQyLDcgQEAKIAkJNDZCOTUxOUEyMDdENjM1NDAwQTdE
MkREIC8qIFJlbW90ZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkI5NTE5MjIwN0Q2MzJFMDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkJDQkJDMjIw
ODUwMDhGMDA3MTA2MzggLyogSlNSZW1vdGVET01XaW5kb3dCYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJDQkJDMDIwODUwMDdGMDA3MTA2Mzgg
LyogSlNSZW1vdGVET01XaW5kb3dCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDMzc2NjIyMDg1MTc3RDAwQzczODI5IC8qIEpTUmVtb3Rl
RE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkMzNzY2MTIwODUxNzZEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cuaCAqLzsgfTsK
KwkJQ0Q1RjNFREQ5RDMzM0M0MEE5QTM4QTU0IC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREZEQjkxMkNGOEU4OEE2
REExQUQyNjRGIC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5
NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAq
LzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5
MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNzY4NSw2ICs3Njg2LDcgQEAKIAkJNDZCQ0JCQzMyMDg1MDBB
NzAwNzEwNjM4IC8qIFJlbW90ZURPTVdpbmRvdy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UmVtb3RlRE9NV2luZG93LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDMzc2
NUYyMDg1MTc2QzAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVtb3RlRE9NV2luZG93LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDMzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3Rl
RE9NV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3RlRE9N
V2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGREI5MTJDRjhFODhBNkRB
MUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWJvcnRhYmxlVGFza1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENQVU1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1BVTW9uaXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzgzRUZCMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3Rp
Zmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9Ob3RpZmll
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDg1NCw2ICsyNDg1Niw3IEBA
CiAJCQkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oICovLAogCQkJCTMzOUI1
QjYyMTMxREFBMzIwMEY0OEQwMiAvKiBDb29raWVzU3RyYXRlZ3kuaCAqLywKIAkJCQk4NjJGMTI5
RDE4QzE1NzJDMDA1QzU0QUYgLyogQ291bnRlZFVzZXJBY3Rpdml0eS5oICovLAorCQkJCURGREI5
MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCAqLywKIAkJCQk0NkM2
OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi8sCiAJCQkJNDZDNjk2Qzkx
RTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLywKIAkJCQlFMTFBRjE1MDExQjlBMUEz
MDA4MDUxMDMgLyogQ3Vyc29yLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJv
cnRhYmxlVGFza1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3NDFkYjJkODBiOGQxODVjZjk0N2UxNzBh
MzBlZGQxNzIyZDIyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Fib3J0YWJsZVRhc2tRdWV1ZS5oCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHF1ZXVlPgorI2luY2x1ZGUgPHd0Zi9Db25k
aXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvZ2xp
Yi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogQWJvcnRhYmxlVGFza1F1
ZXVlIGlzIGEgaGlnaC1sZXZlbCBzeW5jaHJvbml6YXRpb24gb2JqZWN0IGZvciBhYm9ydGFibGUg
cHJvY2Vzc2VzIGRvbmUgaW4gYmFja2dyb3VuZAorICogdGhyZWFkKHMpIHRoYXQgbmVlZCB0byBz
ZW5kIHJlcXVlc3RzIHRvIHRoZSBtYWluIHRocmVhZC4KKyAqCisgKiBUaGUgcmVxdWVzdHMgc2Vu
dCBieSB0aGUgYmFja2dyb3VuZCB0aHJlYWQocykgbWF5IGJlIGFzeW5jaHJvbm91cywgdXNpbmcg
dHJ5RW5xdWV1ZVRhc2soKSwgd2hpY2ggcmV0dXJucworICogaW1tZWRpYXRlbHk7IG9yIHN5bmNo
cm9ub3VzLCB1c2luZyB0cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseSgpLCB3aGljaCBibG9j
a3MgdGhlIGNhbGxpbmcgYmFja2dyb3VuZAorICogdGhyZWFkIHVudGlsIHRoZSByZXF1ZXN0IGlz
IHNhdGlzZmllZCBieSB0aGUgbWFpbiB0aHJlYWQgKHBvc3NpYmx5IHJldHVybmluZyBhIHJlc3Bv
bnNlIHZhbHVlKS4KKyAqCisgKiBXaGF0IG1ha2VzIEFib3J0YWJsZVRhc2tRdWV1ZSBkaWZmZXJl
bnQgZnJvbSBvdGhlciB0YXNrIHF1ZXVlaW5nIG1lY2hhbmlzbXMgaXMgdGhhdCBpdCB1c2VzIGEg
dHdvLXBoYXNlCisgKiBhYm9ydCBwcm9jZXNzIHRoYXQgYXZvaWRzIGRlYWRsb2NrcyBhbmQgbGF0
ZSBub3RpZmljYXRpb24gYnVncy4KKyAqCisgKiBXaXRob3V0IGEgdHdvLXBoYXNlIGRlc2lnbiBk
ZWFkbG9ja3Mgd291bGQgb2NjdXIgd2hlbiBhdHRlbXB0aW5nIGFuIGFib3J0IGlmIGEgYmFja2dy
b3VuZCB0aHJlYWQgd2FzCisgKiBibG9ja2VkIGluIGEgc3luY2hyb25vdXMgcmVxdWVzdCBhbmQg
bmVlZGVkIHRvIHJldHVybiBmcm9tIHRoZXJlIGZvciB0aGUgYWJvcnQgdG8gYmUgaGFuZGxlZC4g
QWxzbywgd2l0aG91dAorICogYSBkZXNpZ24gbGlrZSB0aGlzLCByZXF1ZXN0cyBhbHJlYWR5IGVu
cXVldWVkIGF0IHRoYXQgcG9pbnQgb3Igc29vbiB0aGVyZWFmdGVyIHVudGlsIHRoZSBhYm9ydCBp
cyBjb21wbGV0ZQorICogd291bGQgc3RpbGwgYmUgaGFuZGxlZCBieSB0aGUgbWFpbiB0aHJlYWQs
IGV2ZW4gdGhvdWdoIHdlIGRvbid0IHdhbnQgdG8gYW55bW9yZS4KKyAqCisgKiBBYm9ydGluZyBi
YWNrZ3JvdW5kIHByb2Nlc3Npbmcgd2l0aCBBYm9ydGFibGVUYXNrUXVldWUgaXMgYSBzZXZlcmFs
IHN0ZXAgcHJvY2VzczoKKyAqCisgKiAgMS4gQ2FsbCBhYm9ydGFibGVUYXNrUXVldWUuc3RhcnRB
Ym9ydGluZygpIC0tIFRoaXMgd2lsbCBtYWtlIGFueSBjdXJyZW50IG9yIGZ1dHVyZSAodW50aWwg
ZnVydGhlciBub3RpY2UpCisgKiAgICAgYXN5bmNocm9ub3VzIHJlcXVlc3QgZmFpbCBpbW1lZGlh
dGVseSwgc28gdGhhdCB3ZSBkb24ndCBkZWFkbG9jayBpbiB0aGUgbmV4dCBzdGVwLiBBbHNvLCBy
ZXF1ZXN0cyBvZgorICogICAgIGFueSBraW5kIGFscmVhZHkgZW5xdWV1ZWQgd2lsbCBub3QgYmUg
YXR0ZW5kZWQuCisgKgorICogIDIuIFNlbmQgdGhlIGFib3J0IHNpZ25hbCB0byB0aGUgYmFja2dy
b3VuZCB0aHJlYWRzLiBUaGlzIGlzIGNvbXBsZXRlbHkgYXBwbGljYXRpb24gc3BlY2lmaWMuIEZv
ciBpbnN0YW5jZSwKKyAqICAgICBpbiB0aGUgQXBwZW5kUGlwZWxpbmUgY2FzZSB5b3Ugd291bGQg
Zmx1c2ggb3IgcmVzZXQgdGhlIEdTdHJlYW1lciBwaXBlbGluZSBoZXJlLiBXYWl0IHVudGlsIGFs
bCB0aGUKKyAqICAgICBiYWNrZ3JvdW5kIHRocmVhZHMgaGF2ZSBmaW5pc2hlZCBhYm9ydGluZy4K
KyAqCisgKiAgMy4gQ2FsbCBhYm9ydGFibGVUYXNrUXVldWUuc3RvcEFib3J0aW5nKCkgLS0gVGhp
cyB3aWxsIGFsbG93IG5ldyByZXF1ZXN0cyBzZW50IGZyb20gdGhpcyBwb2ludCBvbiB0byBiZQor
ICogICAgIGhhbmRsZWQgYXMgYmVmb3JlIHRoZSBhYm9ydCB3YXMgbWFkZS4KKyAqCisgKiAgNC4g
QWZ0ZXIgdGhpcywgdGhlIGJhY2tncm91bmQgdGhyZWFkKHMpIGNhbiBiZSBwdXQgdG8gd29yayBh
Z2FpbiBzYWZlbHkuCisgKgorICogVGhpcyBjbGFzcyBpcyB1c2VkIGZvciBoYW5kbGluZyBkZW11
eGVyIGV2ZW50cyBpbiBBcHBlbmRQaXBlbGluZSwgdGFraW5nIGludG8gYWNjb3VudCBkZW11eGlu
ZyBjYW4gYmUKKyAqIGFib3J0ZWQgYXQgYW55IG1vbWVudC4gKi8KK2NsYXNzIEFib3J0YWJsZVRh
c2tRdWV1ZSBmaW5hbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJvcnRhYmxlVGFza1F1
ZXVlKTsKK3B1YmxpYzoKKyAgICBBYm9ydGFibGVUYXNrUXVldWUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIH0KKworICAgIH5BYm9ydGFibGVUYXNr
UXVldWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAg
ICAgICBBU1NFUlQoIW1fbXV0ZXguaXNIZWxkKCkpOworICAgICAgICBBU1NFUlQobV9jaGFubmVs
LmVtcHR5KCkpOworICAgIH0KKworICAgIC8vIE1FVEhPRFMgRk9SIFRIRSBNQUlOIFRIUkVBRDoK
KworICAgIC8vIFN0YXJ0cyBhbiBhYm9ydCBwcm9jZXNzLgorICAgIC8vCisgICAgLy8gVGFza3Mg
YWxyZWFkeSBxdWV1ZWQgd2lsbCBiZSBkaXNjYXJkZWQuCisgICAgLy8KKyAgICAvLyBVbnRpbCBz
dG9wQWJvcnRpbmcgaXMgY2FsbGVkLCBhbGwgcHJlc2VudCBhbmQgZnV0dXJlIGNhbGxzIHRvIHBv
c3RSZXF1ZXN0QW5kV2FpdCgpIHdpbGwgaW1tZWRpYXRlbHkKKyAgICAvLyByZXR1cm4gYW4gZW1w
dHkgb3B0aW9uYWwuCisgICAgdm9pZCBzdGFydEFib3J0aW5nKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKworICAgICAgICB7CisgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgICAgICBBU1NFUlQoIW1fYWJvcnRp
bmcpOworICAgICAgICAgICAgbV9hYm9ydGluZyA9IHRydWU7CisgICAgICAgICAgICBjYW5jZWxB
bGxUYXNrcygpOworICAgICAgICB9CisgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQubm90
aWZ5QWxsKCk7CisgICAgfQorCisgICAgLy8gRGVjbGFyZXMgdGhlIHByZXZpb3VzIGFib3J0IGZp
bmlzaGVkLgorICAgIC8vCisgICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25z
IHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMgbXVzdCBiZSB1bmFibGUgdG8gcG9zdCB0YXNrcyBhdCB0
aGlzIHBvaW50LgorICAgIHZvaWQgc3RvcEFib3J0aW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChXVEY6OmlzTWFpblRocmVhZCgpKTsKKworICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIo
bV9tdXRleCk7CisgICAgICAgIEFTU0VSVChtX2Fib3J0aW5nKTsKKyAgICAgICAgbV9hYm9ydGlu
ZyA9IGZhbHNlOworICAgIH0KKworICAgIC8vIE1FVEhPRFMgRk9SIFRIRSBCQUNLR1JPVU5EIFRI
UkVBRFM6CisKKyAgICAvLyBFbnF1ZXVlIGEgdGFzayB0byBiZSBydW4gb24gdGhlIG1haW4gdGhy
ZWFkLiBUaGUgdGFzayBtYXkgYmUgY2FuY2VsbGVkIGlmIGFuIGFib3J0IHN0YXJ0cyBiZWZvcmUg
aXQncworICAgIC8vIGhhbmRsZWQuCisgICAgdm9pZCB0cnlFbnF1ZXVlVGFzayhzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gbWFpblRocmVhZEhhbmRsZXIpCisgICAgeworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgIGlmIChtX2Fib3J0aW5nKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHBvc3RUYXNrKFdURk1vdmUobWFpblRocmVhZEhhbmRsZXIp
KTsKKyAgICB9CisKKyAgICAvLyBFbnF1ZXVlIGEgdGFzayB0byBiZSBydW4gb24gdGhlIG1haW4g
dGhyZWFkIGFuZCB3YWl0IGZvciBpdCB0byByZXR1cm4uIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhl
IHRhc2sgaXMKKyAgICAvLyBmb3J3YXJkZWQgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkLCB3cmFw
cGVkIGluIGFuIG9wdGlvbmFsLgorICAgIC8vCisgICAgLy8gSWYgd2UgYXJlIGFib3J0aW5nLCB0
aGUgY2FsbCBmaW5pc2hlcyBpbW1lZGlhdGVseSwgcmV0dXJuaW5nIGFuIGVtcHR5IG9wdGlvbmFs
LgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFI+CisgICAgc3RkOjpvcHRpb25hbDxSPiB0cnlFbnF1
ZXVlVGFza0FuZFdhaXRGb3JSZXBseShzdGQ6OmZ1bmN0aW9uPFIoKT4gbWFpblRocmVhZEhhbmRs
ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoIVdURjo6aXNNYWluVGhyZWFkKCkpOyAvLyBkb24n
dCBkZWFkbG9jayBtYWluIHRocmVhZCB3aXRoIGl0c2VsZgorCisgICAgICAgIExvY2tIb2xkZXIg
bG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgaWYgKG1fYWJvcnRpbmcpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxSPigpOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Uj4g
cmVzcG9uc2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHBvc3RUYXNrKFt0aGlzLCAmcmVzcG9u
c2UsICZtYWluVGhyZWFkSGFuZGxlcl0oKSB7CisgICAgICAgICAgICBSIHJlc3BvbnNlVmFsdWUg
PSBtYWluVGhyZWFkSGFuZGxlcigpOworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVy
KG1fbXV0ZXgpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlVmFsdWUp
OworICAgICAgICAgICAgbV9hYm9ydGVkT3JSZXNwb25zZVNldC5ub3RpZnlBbGwoKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQud2FpdChtX211dGV4LCBbdGhp
cywgJnJlc3BvbnNlXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Fib3J0aW5nIHx8IHJlc3Bv
bnNlLmhhc192YWx1ZSgpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwor
ICAgIH0KKworICAgIC8vIFRoaXMgaXMgY2xhc3MgaXMgcHJvdmlkZWQgZm9yIGNvbnZlbmllbmNl
IHdoZW4geW91IHdhbnQgdG8gdXNlIHRyeUVucXVldWVUYXNrQW5kV2FpdEZvclJlcGx5KCkgYnV0
CisgICAgLy8geW91IGRvbid0IG5lZWQgYW55IHBhcnRpY3VsYXIgZGF0YSBmcm9tIHRoZSBtYWlu
IHRocmVhZCBpbiByZXR1cm4gYW5kIGp1c3Qga25vd2luZyB0aGF0IGl0IGZpbmlzaGVkCisgICAg
Ly8gcnVubmluZyB0aGUgaGFuZGxlciBmdW5jdGlvbiBpcyBlbm91Z2guCisgICAgY2xhc3MgRHVt
bXlSZXNwb25zZSB7IH07CisKK3ByaXZhdGU6CisgICAgLy8gUHJvdGVjdGVkIHN0YXRlOgorICAg
IC8vICAgTWFpbiB0aHJlYWQ6IHJlYWQtd3JpdGUuIFdyaXRlcyBtdXN0IGJlIG1hZGUgd2l0aCB0
aGUgbG9jay4KKyAgICAvLyAgIEJhY2tncm91bmQgdGhyZWFkczogcmVhZCBvbmx5LiBSZWFkcyBt
dXN0IGJlIG1hZGUgd2l0aCB0aGUgbG9jay4KKyAgICBjbGFzcyBUYXNrIHsKKyAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVGFzayk7CisgICAgcHVibGljOgorICAgICAgICBUYXNrKEFib3J0
YWJsZVRhc2tRdWV1ZSogdGFza1F1ZXVlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrQ2Fs
bGJhY2spCisgICAgICAgICAgICA6IG1fdGFza1F1ZXVlKHRhc2tRdWV1ZSksIG1fdGFza0NhbGxi
YWNrKFdURk1vdmUodGFza0NhbGxiYWNrKSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgYm9vbCBp
c0NhbmNlbGxlZCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3Rhc2tR
dWV1ZSA9PSBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjYW5jZWwoKQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIWlzQ2FuY2VsbGVkKCkpOworICAgICAgICAgICAg
bV90YXNrQ2FsbGJhY2sgPSBudWxscHRyOworICAgICAgICAgICAgbV90YXNrUXVldWUgPSBudWxs
cHRyOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaXNwYXRjaCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIGlmICgh
aXNDYW5jZWxsZWQoKSkgeworICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3Rhc2tR
dWV1ZS0+bV9tdXRleCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRoaXMgPT0gbV90YXNrUXVl
dWUtPm1fY2hhbm5lbC5mcm9udCgpKTsKKyAgICAgICAgICAgICAgICBtX3Rhc2tRdWV1ZS0+bV9j
aGFubmVsLnBvcCgpOworICAgICAgICAgICAgICAgIGxvY2sudW5sb2NrRWFybHkoKTsKKyAgICAg
ICAgICAgICAgICBtX3Rhc2tDYWxsYmFjaygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBBYm9ydGFibGVUYXNrUXVldWUqIG1fdGFza1F1ZXVlOwor
ICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV90YXNrQ2FsbGJhY2s7CisgICAgfTsKKwor
ICAgIHZvaWQgcG9zdFRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCisgICAg
eworICAgICAgICBBU1NFUlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxUYXNrPiB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxUYXNrPih0aGlzLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIG1fY2hhbm5lbC5wdXNoKHRhc2suZ2V0KCkpOworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSgpIHsgdGFzay0+
ZGlzcGF0Y2goKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBjYW5jZWxBbGxUYXNrcygpCisgICAg
eworICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVCht
X211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgd2hpbGUgKCFtX2NoYW5uZWwuZW1wdHkoKSkgewor
ICAgICAgICAgICAgVGFzayogdGFzayA9IG1fY2hhbm5lbC5mcm9udCgpOworICAgICAgICAgICAg
dGFzay0+Y2FuY2VsKCk7CisgICAgICAgICAgICBtX2NoYW5uZWwucG9wKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBib29sIG1fYWJvcnRpbmcgPSBmYWxzZTsKKyAgICBMb2NrIG1fbXV0ZXg7
CisgICAgQ29uZGl0aW9uIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQ7CisgICAgc3RkOjpxdWV1ZTxU
YXNrKj4gbV9jaGFubmVsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQ
aXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL0FwcGVuZFBpcGVsaW5lLmNwcAppbmRleCA5NmNmNzE2YTczYzkyMWY2MzQyOTZmOTViOWZi
YWY0ZDRhMjUzYzUxLi5mNDg1OTcyNzAwODE3MjU1MWViOTM0ZDJiODdlMjM2YTIxMDQ2NjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKKyNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgogI2lu
Y2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpAQCAtNzEs
NyArNzIsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpzdGF0aWNJbml0aWFsaXphdGlvbigpCiAg
ICAgc193ZWJLaXRFbmRPZkFwcGVuZE1ldGFJbmZvID0gZ3N0X21ldGFfcmVnaXN0ZXIoc19lbmRP
ZkFwcGVuZE1ldGFUeXBlLCAiV2ViS2l0RW5kT2ZBcHBlbmRNZXRhIiwgc2l6ZW9mKEVuZE9mQXBw
ZW5kTWV0YSksIEVuZE9mQXBwZW5kTWV0YTo6aW5pdCwgRW5kT2ZBcHBlbmRNZXRhOjpmcmVlLCBF
bmRPZkFwcGVuZE1ldGE6OnRyYW5zZm9ybSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBkdW1w
QXBwZW5kU3RhdGUoQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFN0YXRlIGFwcGVuZFN0YXRlKQorY29u
c3QgY2hhciogQXBwZW5kUGlwZWxpbmU6OmR1bXBBcHBlbmRTdGF0ZShBcHBlbmRQaXBlbGluZTo6
QXBwZW5kU3RhdGUgYXBwZW5kU3RhdGUpCiB7CiAgICAgc3dpdGNoIChhcHBlbmRTdGF0ZSkgewog
ICAgIGNhc2UgQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFN0YXRlOjpJbnZhbGlkOgpAQCAtOTMsOSAr
OTQsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogZHVtcEFwcGVuZFN0YXRlKEFwcGVuZFBpcGVsaW5l
OjpBcHBlbmRTdGF0ZSBhcHBlbmRTdGF0ZSkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVu
ZFBpcGVsaW5lRGVtdXhlclBhZEFkZGVkKEdzdEVsZW1lbnQqLCBHc3RQYWQqLCBBcHBlbmRQaXBl
bGluZSopOwotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkUmVtb3ZlZChHc3RF
bGVtZW50KiwgR3N0UGFkKiwgQXBwZW5kUGlwZWxpbmUqKTsKLXN0YXRpYyB2b2lkIGFwcGVuZFBp
cGVsaW5lQXBwc2lua0NhcHNDaGFuZ2VkKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgQXBwZW5kUGlw
ZWxpbmUqKTsKICNpZiAhTE9HX0RJU0FCTEVECiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBw
ZW5kUGlwZWxpbmVQYWRQcm9iZURlYnVnSW5mb3JtYXRpb24oR3N0UGFkKiwgR3N0UGFkUHJvYmVJ
bmZvKiwgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24qKTsKICNlbmRpZgpAQCAtMTA1LDI4ICsx
MDMsOSBAQCBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBzaW5rUGFk
RXZlbnRQcm9iZShHc3RQYWQqLCBHc3RQYWRQcm9iZQogI2VuZGlmCiAKIHN0YXRpYyBHc3RQYWRQ
cm9iZVJldHVybiBhcHBlbmRQaXBlbGluZURlbXV4ZXJCbGFja0hvbGVQYWRQcm9iZShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qLCBncG9pbnRlcik7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBhcHBl
bmRQaXBlbGluZUFwcHNpbmtOZXdTYW1wbGUoR3N0RWxlbWVudCosIEFwcGVuZFBpcGVsaW5lKik7
Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtFT1MoR3N0RWxlbWVudCosIEFwcGVu
ZFBpcGVsaW5lKik7Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRz
KEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwogCiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1
cm4gbWF0cm9za2FkZW11eEZvcmNlU2VnbWVudFN0YXJ0VG9FcXVhbFplcm8oR3N0UGFkKiwgR3N0
UGFkUHJvYmVJbmZvKiwgdm9pZCopOwogCi1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZU5lZWRD
b250ZXh0TWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVu
ZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBHU1RfVFJBQ0UoInJlY2VpdmVkIGNh
bGxiYWNrIik7Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZU5lZWRDb250ZXh0U3luY01lc3Nh
Z2UobWVzc2FnZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5lQXBwbGljYXRpb25N
ZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgQXBwZW5kUGlwZWxp
bmUqIGFwcGVuZFBpcGVsaW5lKQotewotICAgIGFwcGVuZFBpcGVsaW5lLT5oYW5kbGVBcHBsaWNh
dGlvbk1lc3NhZ2UobWVzc2FnZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5lU3Rh
dGVDaGFuZ2VNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgQXBw
ZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKQotewotICAgIGFwcGVuZFBpcGVsaW5lLT5oYW5k
bGVTdGF0ZUNoYW5nZU1lc3NhZ2UobWVzc2FnZSk7Ci19Ci0KIEFwcGVuZFBpcGVsaW5lOjpBcHBl
bmRQaXBlbGluZShSZWY8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+IG1lZGlhU291cmNl
Q2xpZW50LCBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJp
dmF0ZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFJiBwbGF5ZXJQcml2YXRlKQogICAg
IDogbV9tZWRpYVNvdXJjZUNsaWVudChtZWRpYVNvdXJjZUNsaWVudC5nZXQoKSkKICAgICAsIG1f
c291cmNlQnVmZmVyUHJpdmF0ZShzb3VyY2VCdWZmZXJQcml2YXRlLmdldCgpKQpAQCAtMTUzLDkg
KzEzMiwxNSBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogICAgIGdzdF9idXNfYWRkX3NpZ25h
bF93YXRjaF9mdWxsKG1fYnVzLmdldCgpLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OlJ1bkxvb3BE
aXNwYXRjaGVyKTsKICAgICBnc3RfYnVzX2VuYWJsZV9zeW5jX21lc3NhZ2VfZW1pc3Npb24obV9i
dXMuZ2V0KCkpOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChtX2J1cy5nZXQoKSwgInN5bmMtbWVz
c2FnZTo6bmVlZC1jb250ZXh0IiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZU5lZWRDb250ZXh0
TWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2J1cy5nZXQo
KSwgIm1lc3NhZ2U6OmFwcGxpY2F0aW9uIiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZUFwcGxp
Y2F0aW9uTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2J1
cy5nZXQoKSwgIm1lc3NhZ2U6OnN0YXRlLWNoYW5nZWQiLCBHX0NBTExCQUNLKGFwcGVuZFBpcGVs
aW5lU3RhdGVDaGFuZ2VNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fYnVzLmdldCgpLCAic3luYy1tZXNzYWdlOjpuZWVkLWNvbnRleHQiLCBHX0NBTExCQUNL
KCtbXShHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBcHBlbmRQaXBlbGluZSogYXBwZW5k
UGlwZWxpbmUpIHsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZU5lZWRDb250ZXh0U3lu
Y01lc3NhZ2UobWVzc2FnZSk7CisgICAgfSksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9idXMuZ2V0KCksICJtZXNzYWdlOjphcHBsaWNhdGlvbiIsIEdfQ0FMTEJBQ0soK1tdKEdzdEJ1
cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkg
eworICAgICAgICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKG1lc3Nh
Z2UpOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYnVzLmdldCgpLCAi
bWVzc2FnZTo6c3RhdGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEJ1cyosIEdzdE1lc3Nh
Z2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBh
cHBlbmRQaXBlbGluZS0+aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0p
LCB0aGlzKTsKIAogICAgIC8vIFdlIGFzc2lnbiB0aGUgY3JlYXRlZCBpbnN0YW5jZXMgaGVyZSBp
bnN0ZWFkIG9mIGFkb3B0UmVmKCkgYmVjYXVzZSBnc3RfYmluX2FkZF9tYW55KCkKICAgICAvLyBi
ZWxvdyB3aWxsIGFscmVhZHkgdGFrZSB0aGUgaW5pdGlhbCByZWZlcmVuY2UgYW5kIHdlIG5lZWQg
YW4gYWRkaXRpb25hbCBvbmUgZm9yIHVzLgpAQCAtMTgxLDcgKzE2NiwxMSBAQCBBcHBlbmRQaXBl
bGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBt
ZWRpYVNvdXJjZUNsaQogICAgIGdzdF9iYXNlX3Npbmtfc2V0X2xhc3Rfc2FtcGxlX2VuYWJsZWQo
R1NUX0JBU0VfU0lOSyhtX2FwcHNpbmsuZ2V0KCkpLCBGQUxTRSk7CiAKICAgICBHUmVmUHRyPEdz
dFBhZD4gYXBwc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCht
X2FwcHNpbmsuZ2V0KCksICJzaW5rIikpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXBwc2lua1Bh
ZC5nZXQoKSwgIm5vdGlmeTo6Y2FwcyIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzaW5r
Q2Fwc0NoYW5nZWQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGFwcHNpbmtQYWQuZ2V0
KCksICJub3RpZnk6OmNhcHMiLCBHX0NBTExCQUNLKCtbXShHT2JqZWN0KiwgR1BhcmFtU3BlYyos
IEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGlu
ZS0+bV90YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2soW2FwcGVuZFBpcGVsaW5lXSgpIHsKKyAgICAg
ICAgICAgIGFwcGVuZFBpcGVsaW5lLT5hcHBzaW5rQ2Fwc0NoYW5nZWQoKTsKKyAgICAgICAgfSk7
CisgICAgfSksIHRoaXMpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIEdSZWZQdHI8R3N0UGFk
PiBkZW11eGVyUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKG1fZGVt
dXguZ2V0KCksICJzaW5rIikpOwpAQCAtMjAwLDExICsxODksMzAgQEAgQXBwZW5kUGlwZWxpbmU6
OkFwcGVuZFBpcGVsaW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFT
b3VyY2VDbGkKICNlbmRpZgogCiAgICAgLy8gVGhlc2Ugc2lnbmFscyB3b24ndCBiZSBjb25uZWN0
ZWQgb3V0c2lkZSBvZiB0aGUgbGlmZXRpbWUgb2YgInRoaXMiLgotICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9kZW11eC5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVE
ZW11eGVyUGFkQWRkZWQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fZGVtdXguZ2V0
KCksICJwYWQtcmVtb3ZlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkUmVt
b3ZlZCksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgIm5vLW1v
cmUtcGFkcyIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkcyksIHRo
aXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9hcHBzaW5rLmdldCgpLCAibmV3LXNhbXBsZSIs
IEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2FtcGxlKSwgdGhpcyk7Ci0gICAg
Z19zaWduYWxfY29ubmVjdChtX2FwcHNpbmsuZ2V0KCksICJlb3MiLCBHX0NBTExCQUNLKGFwcGVu
ZFBpcGVsaW5lQXBwc2lua0VPUyksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11
eC5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBHc3RQYWQq
IGRlbXV4ZXJTcmNQYWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAg
ICBhcHBlbmRQaXBlbGluZS0+Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhy
ZWFkKGRlbXV4ZXJTcmNQYWQpOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KG1fZGVtdXguZ2V0KCksICJwYWQtcmVtb3ZlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQq
LCBHc3RQYWQqIGRlbXV4ZXJTcmNQYWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkg
eworICAgICAgICBhcHBlbmRQaXBlbGluZS0+ZGlzY29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBw
c2lua0Zyb21BbnlUaHJlYWQoZGVtdXhlclNyY1BhZCk7CisgICAgfSksIHRoaXMpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0so
K1tdKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAg
ICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQb3N0
aW5nIG5vLW1vcmUtcGFkcyB0YXNrIHRvIG1haW4gdGhyZWFkIik7CisgICAgICAgIGFwcGVuZFBp
cGVsaW5lLT5tX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbYXBwZW5kUGlwZWxpbmVdKCkgewor
ICAgICAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmRlbXV4ZXJOb01vcmVQYWRzKCk7CisgICAgICAg
IH0pOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBwc2luay5nZXQo
KSwgIm5ldy1zYW1wbGUiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVtZW50KiBhcHBzaW5rLCBBcHBl
bmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFXVEY6OmlzTWFp
blRocmVhZCgpKTsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZUFwcHNpbmtOZXdTYW1w
bGVGcm9tQW55VGhyZWFkKGFwcHNpbmspOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0KG1fYXBwc2luay5nZXQoKSwgImVvcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQq
LCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFXVEY6
OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQb3N0aW5nIGFwcHNpbmstZW9z
IHRhc2sgdG8gbWFpbiB0aHJlYWQiKTsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPm1fdGFza1F1
ZXVlLnRyeUVucXVldWVUYXNrKFthcHBlbmRQaXBlbGluZV0oKSB7CisgICAgICAgICAgICBhcHBl
bmRQaXBlbGluZS0+YXBwc2lua0VPUygpOworICAgICAgICB9KTsKKyAgICB9KSwgdGhpcyk7CiAK
ICAgICAvLyBBZGRfbWFueSB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIGEgcmVmZXJlbmNlLiBUaGF0
J3Mgd2h5IHdlIHVzZWQgYW4gYXNzaWdubWVudCBiZWZvcmUuCiAgICAgZ3N0X2Jpbl9hZGRfbWFu
eShHU1RfQklOKG1fcGlwZWxpbmUuZ2V0KCkpLCBtX2FwcHNyYy5nZXQoKSwgbV9kZW11eC5nZXQo
KSwgbnVsbHB0cik7CkBAIC0yMTgsNiArMjI2LDggQEAgQXBwZW5kUGlwZWxpbmU6On5BcHBlbmRQ
aXBlbGluZSgpCiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogCiAgICAgc2V0QXBw
ZW5kU3RhdGUoQXBwZW5kU3RhdGU6OkludmFsaWQpOworICAgIC8vIEZvcmdldCBhbGwgcGVuZGlu
ZyB0YXNrcyBhbmQgdW5ibG9jayB0aGUgc3RyZWFtaW5nIHRocmVhZCBpZiBpdCB3YXMgYmxvY2tl
ZC4KKyAgICBtX3Rhc2tRdWV1ZS5zdGFydEFib3J0aW5nKCk7CiAKICAgICB7CiAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fcGFkQWRkUmVtb3ZlTG9jayk7CkBAIC0yMzEsNyArMjQxLDcgQEAg
QXBwZW5kUGlwZWxpbmU6On5BcHBlbmRQaXBlbGluZSgpCiAKICAgICBpZiAobV9waXBlbGluZSkg
ewogICAgICAgICBBU1NFUlQobV9idXMpOwotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNj
b25uZWN0X2J5X2Z1bmMobV9idXMuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KGFw
cGVuZFBpcGVsaW5lTmVlZENvbnRleHRNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAg
Z19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fYnVzLmdldCgpLCB0aGlzKTsK
ICAgICAgICAgZ3N0X2J1c19kaXNhYmxlX3N5bmNfbWVzc2FnZV9lbWlzc2lvbihtX2J1cy5nZXQo
KSk7CiAgICAgICAgIGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaChtX2J1cy5nZXQoKSk7CiAg
ICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVf
TlVMTCk7CkBAIC0yODYsMTAgKzI5NiwxMCBAQCBHc3RQYWRQcm9iZVJldHVybiBBcHBlbmRQaXBl
bGluZTo6YXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJvYmVJbmZvKgogICAg
ICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAgICB9CiAKLSAgICBHU1RfVFJBQ0VfT0JK
RUNUKG1fcGlwZWxpbmUuZ2V0KCksICJwb3N0aW5nIGVuZC1vZi1hcHBlbmQgcmVxdWVzdCB0byBi
dXMiKTsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2Vt
cHR5KCJlbmQtb2YtYXBwZW5kIik7Ci0gICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNz
YWdlX25ld19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKG1fYXBwc3JjLmdldCgpKSwgc3RydWN0dXJl
KTsKLSAgICBnc3RfYnVzX3Bvc3QobV9idXMuZ2V0KCksIG1lc3NhZ2UpOworICAgIEdTVF9UUkFD
RV9PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlBvc3RpbmcgZW5kLW9mLWFwcGVuZCB0YXNrIHRv
IHRoZSBtYWluIHRocmVhZCIpOworICAgIG1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFt0aGlz
XSgpIHsKKyAgICAgICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKKyAgICB9KTsKICAgICByZXR1cm4g
R1NUX1BBRF9QUk9CRV9EUk9QOwogfQogCkBAIC0zMzAsNDAgKzM0MCw3IEBAIHZvaWQgQXBwZW5k
UGlwZWxpbmU6OmhhbmRsZUFwcGxpY2F0aW9uTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQog
ICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKIAogICAgIGNvbnN0IEdzdFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZShtZXNzYWdlKTsKLQotICAg
IGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImRlbXV4ZXItY29ubmVjdC10
by1hcHBzaW5rIikpIHsKLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IGRlbXV4ZXJTcmNQYWQ7Ci0g
ICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0KHN0cnVjdHVyZSwgImRlbXV4ZXItc3JjLXBhZCIsIEdf
VFlQRV9PQkpFQ1QsICZkZW11eGVyU3JjUGFkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAg
QVNTRVJUKGRlbXV4ZXJTcmNQYWQpOwotICAgICAgICBjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBw
c2luayhkZW11eGVyU3JjUGFkLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImFwcHNpbmstY2Fwcy1jaGFu
Z2VkIikpIHsKLSAgICAgICAgYXBwc2lua0NhcHNDaGFuZ2VkKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJhcHBz
aW5rLW5ldy1zYW1wbGUiKSkgewotICAgICAgICBtX3dhc0J1c0FscmVhZHlOb3RpZmllZE9mQXZh
aWxhYmxlU2FtcGxlcy5jbGVhcigpOwotICAgICAgICBjb25zdW1lQXBwc2lua0F2YWlsYWJsZVNh
bXBsZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnc3Rfc3RydWN0dXJl
X2hhc19uYW1lKHN0cnVjdHVyZSwgImFwcHNpbmstZW9zIikpIHsKLSAgICAgICAgYXBwc2lua0VP
UygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFz
X25hbWUoc3RydWN0dXJlLCAiZGVtdXhlci1uby1tb3JlLXBhZHMiKSkgewotICAgICAgICBkZW11
eGVyTm9Nb3JlUGFkcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdzdF9z
dHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZW5kLW9mLWFwcGVuZCIpKSB7Ci0gICAgICAg
IGhhbmRsZUVuZE9mQXBwZW5kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgR1NUX0VS
Uk9SKCJVbmV4cGVjdGVkIG1lc3NhZ2U6ICVzIiwgZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1
Y3R1cmUpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtODIzLDcgKzgwMCw3
IEBAIEdzdEZsb3dSZXR1cm4gQXBwZW5kUGlwZWxpbmU6OnB1c2hOZXdCdWZmZXIoR3N0QnVmZmVy
KiBidWZmZXIpCiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCi1Hc3RGbG93UmV0dXJuIEFw
cGVuZFBpcGVsaW5lOjpoYW5kbGVOZXdBcHBzaW5rU2FtcGxlKEdzdEVsZW1lbnQqIGFwcHNpbmsp
CitHc3RGbG93UmV0dXJuIEFwcGVuZFBpcGVsaW5lOjpoYW5kbGVBcHBzaW5rTmV3U2FtcGxlRnJv
bUFueVRocmVhZChHc3RFbGVtZW50KikKIHsKICAgICBBU1NFUlQoIVdURjo6aXNNYWluVGhyZWFk
KCkpOwogICAgIGlmICgmV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKSAhPSBtX3N0cmVhbWluZ1RocmVh
ZCkgewpAQCAtODQzLDEwICs4MjAsMTEgQEAgR3N0Rmxvd1JldHVybiBBcHBlbmRQaXBlbGluZTo6
aGFuZGxlTmV3QXBwc2lua1NhbXBsZShHc3RFbGVtZW50KiBhcHBzaW5rKQogICAgIH0KIAogICAg
IGlmICghbV93YXNCdXNBbHJlYWR5Tm90aWZpZWRPZkF2YWlsYWJsZVNhbXBsZXMudGVzdF9hbmRf
c2V0KCkpIHsKLSAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJl
X25ld19lbXB0eSgiYXBwc2luay1uZXctc2FtcGxlIik7Ci0gICAgICAgIEdzdE1lc3NhZ2UqIG1l
c3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdfYXBwbGljYXRpb24oR1NUX09CSkVDVChhcHBzaW5rKSwg
c3RydWN0dXJlKTsKLSAgICAgICAgZ3N0X2J1c19wb3N0KG1fYnVzLmdldCgpLCBtZXNzYWdlKTsK
LSAgICAgICAgR1NUX1RSQUNFKCJhcHBzaW5rLW5ldy1zYW1wbGUgbWVzc2FnZSBwb3N0ZWQgdG8g
YnVzIik7CisgICAgICAgIEdTVF9UUkFDRSgiUG9zdGluZyBhcHBzaW5rLW5ldy1zYW1wbGUgdGFz
ayB0byB0aGUgbWFpbiB0aHJlYWQiKTsKKyAgICAgICAgbV90YXNrUXVldWUudHJ5RW5xdWV1ZVRh
c2soW3RoaXNdKCkgeworICAgICAgICAgICAgbV93YXNCdXNBbHJlYWR5Tm90aWZpZWRPZkF2YWls
YWJsZVNhbXBsZXMuY2xlYXIoKTsKKyAgICAgICAgICAgIGNvbnN1bWVBcHBzaW5rQXZhaWxhYmxl
U2FtcGxlcygpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7
CkBAIC04ODYsNiArODY0LDcgQEAgY3JlYXRlT3B0aW9uYWxQYXJzZXJGb3JGb3JtYXQoR3N0UGFk
KiBkZW11eGVyU3JjUGFkKQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpjb25uZWN0RGVtdXhlclNy
Y1BhZFRvQXBwc2lua0Zyb21BbnlUaHJlYWQoR3N0UGFkKiBkZW11eGVyU3JjUGFkKQogeworICAg
IEFTU0VSVCghV1RGOjppc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2FwcHNpbmspCiAgICAg
ICAgIHJldHVybjsKIApAQCAtOTEwLDIzICs4ODksMTQgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6
Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFkKEdzdFBhZCogZGVtdXhl
clMKICAgICBlbHNlCiAgICAgICAgIG1faW5pdGlhbER1cmF0aW9uID0gTWVkaWFUaW1lOjpwb3Np
dGl2ZUluZmluaXRlVGltZSgpOwogCi0gICAgaWYgKFdURjo6aXNNYWluVGhyZWFkKCkpCisgICAg
R1NUX0RFQlVHKCJSZXF1ZXN0aW5nIGRlbXV4ZXItY29ubmVjdC10by1hcHBzaW5rIHRvIG1haW4g
dGhyZWFkIik7CisgICAgYXV0byByZXNwb25zZSA9IG1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNr
QW5kV2FpdEZvclJlcGx5PEFib3J0YWJsZVRhc2tRdWV1ZTo6RHVtbXlSZXNwb25zZT4oW3RoaXMs
IGRlbXV4ZXJTcmNQYWRdKCkgewogICAgICAgICBjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBwc2lu
ayhkZW11eGVyU3JjUGFkKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gQ2FsbCBjb25uZWN0RGVt
dXhlclNyY1BhZFRvQXBwc2luaygpIGluIHRoZSBtYWluIHRocmVhZCBhbmQgd2FpdC4KLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9wYWRBZGRSZW1vdmVMb2NrKTsKLSAgICAgICAgaWYgKCFt
X3BsYXllclByaXZhdGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgR3N0U3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ldygiZGVtdXhlci1jb25uZWN0LXRvLWFw
cHNpbmsiLCAiZGVtdXhlci1zcmMtcGFkIiwgR19UWVBFX09CSkVDVCwgZGVtdXhlclNyY1BhZCwg
bnVsbHB0cik7Ci0gICAgICAgIEdzdE1lc3NhZ2UqIG1lc3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdf
YXBwbGljYXRpb24oR1NUX09CSkVDVChtX2RlbXV4LmdldCgpKSwgc3RydWN0dXJlKTsKLSAgICAg
ICAgZ3N0X2J1c19wb3N0KG1fYnVzLmdldCgpLCBtZXNzYWdlKTsKLSAgICAgICAgR1NUX1RSQUNF
KCJkZW11eGVyLWNvbm5lY3QtdG8tYXBwc2luayBtZXNzYWdlIHBvc3RlZCB0byBidXMiKTsKLQot
ICAgICAgICBtX3BhZEFkZFJlbW92ZUNvbmRpdGlvbi53YWl0KG1fcGFkQWRkUmVtb3ZlTG9jayk7
Ci0KLSAgICAgICAgaWYgKCFtX3BsYXllclByaXZhdGUpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBBYm9ydGFibGVUYXNrUXVldWU6OkR1bW15UmVzcG9uc2UoKTsKKyAgICB9
KTsKKyAgICBpZiAoIXJlc3BvbnNlLmhhc192YWx1ZSgpKSB7CisgICAgICAgIC8vIFRoZSBBcHBl
bmRQaXBlbGluZSBoYXMgYmVlbiBkZXN0cm95ZWQgb3IgYWJvcnRlZCBiZWZvcmUgd2UgcmVjZWl2
ZWQgYSByZXNwb25zZS4KKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIE11c3QgYmUg
ZG9uZSBpbiB0aGUgdGhyZWFkIHdlIHdlcmUgY2FsbGVkIGZyb20gKHVzdWFsbHkgc3RyZWFtaW5n
IHRocmVhZCkuCkBAIC0xMDU0LDIzICsxMDI0LDYgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6ZGlz
Y29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlUaHJlYWQoR3N0UGFkKikKICAg
ICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJTihtX3BpcGVsaW5lLmdl
dCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCAicGFkLXJlbW92ZWQtYWZ0ZXIiKTsKIH0K
IAotdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkc0Zy
b21BbnlUaHJlYWQoKQotewotICAgIEdTVF9UUkFDRSgiYXBwZW5kUGlwZWxpbmVEZW11eGVyTm9N
b3JlUGFkc0Zyb21BbnlUaHJlYWQiKTsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdz
dF9zdHJ1Y3R1cmVfbmV3X2VtcHR5KCJkZW11eGVyLW5vLW1vcmUtcGFkcyIpOwotICAgIEdzdE1l
c3NhZ2UqIG1lc3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdfYXBwbGljYXRpb24oR1NUX09CSkVDVCht
X2FwcHNyYy5nZXQoKSksIHN0cnVjdHVyZSk7Ci0gICAgZ3N0X2J1c19wb3N0KG1fYnVzLmdldCgp
LCBtZXNzYWdlKTsKLSAgICBHU1RfVFJBQ0UoImFwcGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBh
ZHNGcm9tQW55VGhyZWFkIC0gcG9zdGVkIHRvIGJ1cyIpOwotfQotCi1zdGF0aWMgdm9pZCBhcHBl
bmRQaXBlbGluZUFwcHNpbmtDYXBzQ2hhbmdlZChHT2JqZWN0KiBhcHBzaW5rUGFkLCBHUGFyYW1T
cGVjKiwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKQotewotICAgIEdzdFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoImFwcHNpbmstY2Fwcy1jaGFu
Z2VkIik7Ci0gICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25ld19hcHBsaWNh
dGlvbihHU1RfT0JKRUNUKGFwcHNpbmtQYWQpLCBzdHJ1Y3R1cmUpOwotICAgIGdzdF9idXNfcG9z
dChhcHBlbmRQaXBlbGluZS0+YnVzKCksIG1lc3NhZ2UpOwotICAgIEdTVF9UUkFDRSgiYXBwc2lu
ay1jYXBzLWNoYW5nZWQgbWVzc2FnZSBwb3N0ZWQgdG8gYnVzIik7Ci19Ci0KICNpZiAhTE9HX0RJ
U0FCTEVECiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVQYWRQcm9iZURl
YnVnSW5mb3JtYXRpb24oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBzdHJ1Y3QgUGFk
UHJvYmVJbmZvcm1hdGlvbiogcGFkUHJvYmVJbmZvcm1hdGlvbikKIHsKQEAgLTExMTAsNDAgKzEw
NjMsNiBAQCBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVEZW11eGVyQmxh
Y2tIb2xlUGFkUHJvYmUoR3N0UGFkKiwgR3N0UGFkUAogICAgIHJldHVybiBHU1RfUEFEX1BST0JF
X0RST1A7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5lRGVtdXhlclBhZEFkZGVkKEdz
dEVsZW1lbnQqLCBHc3RQYWQqIGRlbXV4ZXJTcmNQYWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQ
aXBlbGluZSkKLXsKLSAgICBhcHBlbmRQaXBlbGluZS0+Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0Fw
cHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJTcmNQYWQpOwotfQotCi1zdGF0aWMgdm9pZCBhcHBl
bmRQaXBlbGluZURlbXV4ZXJQYWRSZW1vdmVkKEdzdEVsZW1lbnQqLCBHc3RQYWQqIGRlbXV4ZXJT
cmNQYWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBhcHBlbmRQaXBl
bGluZS0+ZGlzY29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlUaHJlYWQoZGVt
dXhlclNyY1BhZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5lRGVtdXhlck5vTW9y
ZVBhZHMoR3N0RWxlbWVudCosIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAg
ICBhcHBlbmRQaXBlbGluZS0+YXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkc0Zyb21BbnlU
aHJlYWQoKTsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBzaW5r
TmV3U2FtcGxlKEdzdEVsZW1lbnQqIGFwcHNpbmssIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBl
bGluZSkKLXsKLSAgICByZXR1cm4gYXBwZW5kUGlwZWxpbmUtPmhhbmRsZU5ld0FwcHNpbmtTYW1w
bGUoYXBwc2luayk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5lQXBwc2lua0VPUyhH
c3RFbGVtZW50KiwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKQotewotICAgIGlmIChX
VEY6OmlzTWFpblRocmVhZCgpKQotICAgICAgICBhcHBlbmRQaXBlbGluZS0+YXBwc2lua0VPUygp
OwotICAgIGVsc2UgewotICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1
Y3R1cmVfbmV3X2VtcHR5KCJhcHBzaW5rLWVvcyIpOwotICAgICAgICBHc3RNZXNzYWdlKiBtZXNz
YWdlID0gZ3N0X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpFQ1QoYXBwZW5kUGlwZWxp
bmUtPmFwcHNpbmsoKSksIHN0cnVjdHVyZSk7Ci0gICAgICAgIGdzdF9idXNfcG9zdChhcHBlbmRQ
aXBlbGluZS0+YnVzKCksIG1lc3NhZ2UpOwotICAgICAgICBHU1RfVFJBQ0UoImFwcHNpbmstZW9z
IG1lc3NhZ2UgcG9zdGVkIHRvIGJ1cyIpOwotICAgIH0KLQotICAgIEdTVF9ERUJVRygiJXMgbWFp
biB0aHJlYWQiLCAoV1RGOjppc01haW5UaHJlYWQoKSkgPyAiSXMiIDogIk5vdCIpOwotfQotCiBz
dGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gbWF0cm9za2FkZW11eEZvcmNlU2VnbWVudFN0YXJ0VG9F
cXVhbFplcm8oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCB2b2lkKikKIHsKICAgICAv
LyBtYXRyb3NrYWRlbXV4IHNldHMgR3N0U2VnbWVudC5zdGFydCB0byB0aGUgUFRTIG9mIHRoZSBm
aXJzdCBmcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaAppbmRleCBkYTRmNzVlZWMz
YWM2ODY3MmU3ZGM1MzQ4ODdhZTg0N2Y3OGEyN2Y3Li44OThjMmVjYjFmZWMzYzUxMTdiNzNjZTY2
NjNkYjUxMjkyYmY3YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oCkBAIC0yMiw2
ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCiAKKyNpbmNsdWRlICJBYm9ydGFibGVUYXNrUXVldWUuaCIKICNpbmNs
dWRlICJHU3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oIgpA
QCAtNDUsMTEgKzQ2LDE5IEBAIHN0cnVjdCBQYWRQcm9iZUluZm9ybWF0aW9uIHsKIAogY2xhc3Mg
QXBwZW5kUGlwZWxpbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXBwZW5kUGlwZWxp
bmU+IHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEFwcGVuZFN0YXRlIHsgSW52YWxpZCwgTm90
U3RhcnRlZCwgT25nb2luZywgRGF0YVN0YXJ2ZSwgU2FtcGxpbmcsIExhc3RTYW1wbGUsIEFib3J0
aW5nIH07Ci0KICAgICBBcHBlbmRQaXBlbGluZShSZWY8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFt
ZXJNU0U+LCBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRSYpOwogICAgIHZpcnR1YWwgfkFwcGVuZFBpcGVsaW5lKCk7CiAKKyAg
ICBHc3RGbG93UmV0dXJuIHB1c2hOZXdCdWZmZXIoR3N0QnVmZmVyKik7CisgICAgdm9pZCBjbGVh
clBsYXllclByaXZhdGUoKTsKKyAgICB2b2lkIGFib3J0KCk7CisgICAgUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUoKSB7IHJldHVybiBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGUuZ2V0KCk7IH0KKyAgICBHc3RDYXBzKiBhcHBzaW5rQ2FwcygpIHsgcmV0
dXJuIG1fYXBwc2lua0NhcHMuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6VHJhY2tQcml2
YXRlQmFzZT4gdHJhY2soKSB7IHJldHVybiBtX3RyYWNrOyB9CisKK3ByaXZhdGU6CisgICAgZW51
bSBjbGFzcyBBcHBlbmRTdGF0ZSB7IEludmFsaWQsIE5vdFN0YXJ0ZWQsIE9uZ29pbmcsIERhdGFT
dGFydmUsIFNhbXBsaW5nLCBMYXN0U2FtcGxlLCBBYm9ydGluZyB9OworCiAgICAgdm9pZCBoYW5k
bGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIGhhbmRsZUFw
cGxpY2F0aW9uTWVzc2FnZShHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBoYW5kbGVTdGF0ZUNoYW5n
ZU1lc3NhZ2UoR3N0TWVzc2FnZSopOwpAQCAtNTgsOCArNjcsNyBAQCBwdWJsaWM6CiAgICAgQXBw
ZW5kU3RhdGUgYXBwZW5kU3RhdGUoKSB7IHJldHVybiBtX2FwcGVuZFN0YXRlOyB9CiAgICAgdm9p
ZCBzZXRBcHBlbmRTdGF0ZShBcHBlbmRTdGF0ZSk7CiAKLSAgICBHc3RGbG93UmV0dXJuIGhhbmRs
ZU5ld0FwcHNpbmtTYW1wbGUoR3N0RWxlbWVudCopOwotICAgIEdzdEZsb3dSZXR1cm4gcHVzaE5l
d0J1ZmZlcihHc3RCdWZmZXIqKTsKKyAgICBHc3RGbG93UmV0dXJuIGhhbmRsZUFwcHNpbmtOZXdT
YW1wbGVGcm9tQW55VGhyZWFkKEdzdEVsZW1lbnQqKTsKIAogICAgIC8vIFRha2VzIG93bmVyc2hp
cCBvZiBjYXBzLgogICAgIHZvaWQgcGFyc2VEZW11eGVyU3JjUGFkQ2FwcyhHc3RDYXBzKik7CkBA
IC02OSwxOCArNzcsMTMgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRW5kT2ZBcHBlbmQoKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoKTsKICAgICBBdG9taWNT
dHJpbmcgdHJhY2tJZCgpOwotICAgIHZvaWQgYWJvcnQoKTsKIAotICAgIHZvaWQgY2xlYXJQbGF5
ZXJQcml2YXRlKCk7Ci0gICAgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJj
ZUJ1ZmZlclByaXZhdGUoKSB7IHJldHVybiBtX3NvdXJjZUJ1ZmZlclByaXZhdGUuZ2V0KCk7IH0K
ICAgICBHc3RCdXMqIGJ1cygpIHsgcmV0dXJuIG1fYnVzLmdldCgpOyB9CiAgICAgR3N0RWxlbWVu
dCogcGlwZWxpbmUoKSB7IHJldHVybiBtX3BpcGVsaW5lLmdldCgpOyB9CiAgICAgR3N0RWxlbWVu
dCogYXBwc3JjKCkgeyByZXR1cm4gbV9hcHBzcmMuZ2V0KCk7IH0KICAgICBHc3RFbGVtZW50KiBh
cHBzaW5rKCkgeyByZXR1cm4gbV9hcHBzaW5rLmdldCgpOyB9CiAgICAgR3N0Q2FwcyogZGVtdXhl
clNyY1BhZENhcHMoKSB7IHJldHVybiBtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpOyB9Ci0gICAg
R3N0Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVybiBtX2FwcHNpbmtDYXBzLmdldCgpOyB9CiAg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKiBwbGF5ZXJQcml2YXRlKCkgeyByZXR1
cm4gbV9wbGF5ZXJQcml2YXRlOyB9Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJh
c2U+IHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQogICAgIFdlYkNvcmU6Ok1lZGlhU291cmNl
U3RyZWFtVHlwZUdTdHJlYW1lciBzdHJlYW1UeXBlKCkgeyByZXR1cm4gbV9zdHJlYW1UeXBlOyB9
CiAKICAgICB2b2lkIGRpc2Nvbm5lY3REZW11eGVyU3JjUGFkRnJvbUFwcHNpbmtGcm9tQW55VGhy
ZWFkKEdzdFBhZCopOwpAQCAtODgsNyArOTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25uZWN0
RGVtdXhlclNyY1BhZFRvQXBwc2lua0Zyb21BbnlUaHJlYWQoR3N0UGFkKik7CiAgICAgdm9pZCBj
b25uZWN0RGVtdXhlclNyY1BhZFRvQXBwc2luayhHc3RQYWQqKTsKIAotcHJpdmF0ZToKICAgICB2
b2lkIHJlc2V0UGlwZWxpbmUoKTsKICAgICB2b2lkIGNoZWNrRW5kT2ZBcHBlbmQoKTsKICAgICB2
b2lkIGRlbXV4ZXJOb01vcmVQYWRzKCk7CkBAIC05OCw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
IEdzdFBhZFByb2JlUmV0dXJuIGFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tlclByb2JlKEdzdFBhZFBy
b2JlSW5mbyopOwogCiAgICAgc3RhdGljIHZvaWQgc3RhdGljSW5pdGlhbGl6YXRpb24oKTsKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogZHVtcEFwcGVuZFN0YXRlKEFwcGVuZFBpcGVsaW5lOjpBcHBl
bmRTdGF0ZSk7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc19zdGF0aWNJbml0aWFsaXph
dGlvbkZsYWc7CiAgICAgc3RhdGljIEdUeXBlIHNfZW5kT2ZBcHBlbmRNZXRhVHlwZTsKQEAgLTE1
OCw2ICsxNjEsOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlw
ZUdTdHJlYW1lciBtX3N0cmVhbVR5cGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlRyYWNrUHJpdmF0
ZUJhc2U+IG1fdHJhY2s7CiAKKyAgICBBYm9ydGFibGVUYXNrUXVldWUgbV90YXNrUXVldWU7CisK
ICAgICBHUmVmUHRyPEdzdEJ1ZmZlcj4gbV9wZW5kaW5nQnVmZmVyOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmlu
ZGV4IGViMzFhODg1MTFkYTU0NTIwNjVkMDMwN2I3MDQ1MmY4YmViMzIxMDkuLmMxNjU5OTJkODUx
MzQ0ZjA1NDQwOGU5MmNiZjcyYWEyNTZjNmZlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTUwLDExICs1MCwx
MSBAQAogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmlu
Z1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi9KU09OVmFs
dWVzLmg+CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIkNETUNsZWFy
S2V5LmgiCkBAIC04OCw4ICs4OCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlCiB9CiAKIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFKE1lZGlhUGxheWVyKiBwbGF5ZXIpCi0gICAgOiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIocGxheWVyKSwKLSAgICAgIG1fcXVldWVVc2FnZVRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFOjpxdWV1ZVVzYWdlVGltZXJGaXJlZCkKKyAgICA6IE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcihwbGF5ZXIpCisgICAgLCBtX3F1ZXVlVXNhZ2VUaW1lcigqdGhp
cywgJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6cXVldWVVc2FnZVRpbWVyRmlyZWQp
CiB7CiAgICAgR1NUX1RSQUNFKCJjcmVhdGluZyB0aGUgcGxheWVyICglcCkiLCB0aGlzKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhhZDE3
YmYyNWY0M2Y3NmY2MWUwNjQ3MzQ1ZmQ1MjVhZWUwYzE2NjAuLjljM2EyYjFlNDNmZjA2ZjdlMzNk
YjcwOWU2YjIzNTMxOTE1YjgxMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0xMC0yNSAgQWxpY2lhIEJveWEg
R2FyY8OtYSAgPGFib3lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW01TRV1bR1N0cmVhbWVyXSBJ
bnRyb2R1Y2UgQWJvcnRhYmxlVGFza1F1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgQWJvcnRhYmxlVGFza1F1ZXVlIGFyZSBpbmNs
dWRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21h
a2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tR
dWV1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpGYW5jeVJlc3BvbnNlOjpGYW5jeVJlc3BvbnNlKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkZhbmN5UmVzcG9uc2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVy
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRldGVybWluaXN0aWNTY2hlZHVsZXI6OlRocmVh
ZENvbnRleHQ6OlRocmVhZENvbnRleHQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0ZXJt
aW5pc3RpY1NjaGVkdWxlcjo6VGhyZWFkQ29udGV4dDo6d2FpdE15VHVybik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpUaHJlYWRDb250ZXh0Ojp5aWVs
ZFRvVGhyZWFkKToKKwogMjAxOC0xMC0yNCAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW01TRV1bV1RGXVtNZWRpYV0gSW52YWxpZCBNZWRpYVRpbWUg
c2hvdWxkIGJlIGZhbHN5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
R1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBi
MGUyNjhlZjI2ZWJjOGY4YzU5Y2YxZTU0YmFiZmM5OTRmYWM5YmY0Li42NGNhNDAwNjZiODZmYWEx
ZDE4MmQ3Mzk3Nzk5MjRjODExY2NkNDg0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsu
Y21ha2UKQEAgLTEwNCw2ICsxMDQsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAorICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcAog
KQogCiB0YXJnZXRfbGlua19saWJyYXJpZXMoVGVzdFdlYkNvcmUgJHt0ZXN0X3dlYmNvcmVfTElC
UkFSSUVTfSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDk4MmY0ZmM5YjEzODY5MDVlZDY5
ZTBlYzczMGRjZDg1NzM0NjY4Zi4uNmVlMTM0NGUwNDM4MDZmMmMyNDIyOWZmNzBhMDQwNWEyYWMz
MWI1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4Nyw2ICs0ODcsNyBAQAogCQk3Q0NF
N0VEQjFBNDExQTkyMDA0NDdDNEMgLyogQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ1MUU5MTlFNDFGOUQwMDE2OTM2RiAvKiBD
U1NQYXJzZXIuY3BwICovOyB9OwogCQk3Q0NFN0VEQzFBNDExQTkyMDA0NDdDNEMgLyogQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0E3MjBFNTE4RjFBMEU4MDBBODQ4RTEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi87
IH07CiAJCTdDQ0U3RUREMUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzJDNzE0MTc5NzA4OUQw
MEU2MjdGQiAvKiBUaW1lUmFuZ2VzLmNwcCAqLzsgfTsKKwkJQ0Q1MUMyQTkzRTc4QjVDMUZGMzM3
QzA4IC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQkY1MTA2MzJBMTlCOEFDN0VDNDBFMTcgLyogQWJvcnRhYmxl
VGFza1F1ZXVlLmNwcCAqLzsgfTsKIAkJN0NDRTdFREUxQTQxMUE5MjAwNDQ3QzRDIC8qIFVSTC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDBBMUQz
ODE0QTAxMDNBMDA4QTY2RjIgLyogVVJMLmNwcCAqLzsgfTsKIAkJN0NDRTdFREYxQTQxMUE5MjAw
NDQ3QzRDIC8qIExheW91dFVuaXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3Bw
ICovOyB9OwogCQk3Q0NFN0VFMDFBNDExQTlBMDA0NDdDNEMgLyogRWRpdG9yQ29tbWFuZHMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FBNDg1NzE0
QTA0NEQ0MDA4OEZBQzQgLyogRWRpdG9yQ29tbWFuZHMubW0gKi87IH07CkBAIC0xOTg1LDYgKzE5
ODYsNyBAQAogCQlDREJGQ0M0MjFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0
aWFsRnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEZ1bGxzY3JlZW5ab29t
SW5pdGlhbEZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkZDQzQz
MUE5RkY0NDgwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZy
YW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREMyQzcxNDE3OTcwODlEMDBF
NjI3RkIgLyogVGltZVJhbmdlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lUmFuZ2VzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUJGNTEwNjMyQTE5QjhBQzdFQzQwRTE3
IC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYm9ydGFibGVU
YXNrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREM4RTQ4NTFCQzVC
MTk0MDA1OTRGRUMgLyogQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEU0ODkxQkM1Qzk2MjAwNTk0RkVDIC8qIHZp
ZGVvLXdpdGgtYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ2aWRlby13
aXRoLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREM4RTQ4QTFC
QzVDOTYyMDA1OTRGRUMgLyogdmlkZW8td2l0aC1hdWRpby5tcDQgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gInZpZGVvLXdpdGgt
YXVkaW8ubXA0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NjcsNiArMjU2OSw3
IEBACiAJCQkJQ0U0RDVERTUxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24u
Y3BwICovLAogCQkJCTkzQTI1ODk4MUY5MkZGMTUwMDNFNTEwQyAvKiBUZXh0Q29kZWMuY3BwICov
LAogCQkJCUNEQzJDNzE0MTc5NzA4OUQwMEU2MjdGQiAvKiBUaW1lUmFuZ2VzLmNwcCAqLywKKwkJ
CQlBQkY1MTA2MzJBMTlCOEFDN0VDNDBFMTcgLyogQWJvcnRhYmxlVGFza1F1ZXVlLmNwcCAqLywK
IAkJCQk3QUQzRkU4RDFENzVGQjhEMDBCMTY5QTQgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguY3Bw
ICovLAogCQkJCTQ0MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBVUkwuY3BwICovLAogCQkJCTVD
NkU2NTQxMUQ1Q0VGODUwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNGRlMjQ1YWExOGE0Y2FhN2JkYmNiNDM5MmExMzc2ODk2MmUwMzZmCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0
YWJsZVRhc2tRdWV1ZS5jcHAKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggSWdhbGlhLCBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPEFib3J0YWJsZVRhc2tRdWV1ZS5oPgorI2luY2x1
ZGUgPFV0aWxpdGllcy5oPgorI2luY2x1ZGUgPHRocmVhZD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChBYm9ydGFibGVUYXNr
UXVldWUsIEFzeW5jVGFza3MpCit7CisgICAgQWJvcnRhYmxlVGFza1F1ZXVlIHRhc2tRdWV1ZTsK
KyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIGludCBjdXJyZW50U3RlcCA9IDA7
CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBhdXRvIGJhY2tn
cm91bmRUaHJlYWRGdW5jdGlvbiA9IFsmdGVzdEZpbmlzaGVkLCAmdGFza1F1ZXVlLCAmY3VycmVu
dFN0ZXBdKCkgeworICAgICAgICB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2soWyZjdXJyZW50U3Rl
cF0oKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAg
ICAgICAgICAgIGN1cnJlbnRTdGVwKys7CisgICAgICAgICAgICBFWFBFQ1RfRVEoMSwgY3VycmVu
dFN0ZXApOworICAgICAgICB9KTsKKyAgICAgICAgdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFsm
dGVzdEZpbmlzaGVkLCAmY3VycmVudFN0ZXBdKCkgeworICAgICAgICAgICAgZ19hc3NlcnQoV1RG
Ojppc01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICBjdXJyZW50U3RlcCsrOworICAgICAgICAg
ICAgRVhQRUNUX0VRKDIsIGN1cnJlbnRTdGVwKTsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9
IHRydWU7CisgICAgICAgIH0pOworICAgIH07CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFsmYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uXSgpIHsKKyAgICAgICAgc3RkOjp0aHJlYWQo
YmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uKS5kZXRhY2goKTsKKyAgICB9KTsKKworICAgIFV0aWw6
OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKworc3RydWN0IEZhbmN5UmVzcG9uc2UgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEZhbmN5UmVzcG9uc2UpOworcHVibGljOgorICAgIEZhbmN5UmVz
cG9uc2UoaW50IGZhbmN5SW50KQorICAgICAgICA6IGZhbmN5SW50KGZhbmN5SW50KQorICAgIHsg
fQorCisgICAgRmFuY3lSZXNwb25zZShGYW5jeVJlc3BvbnNlJiYgYSkKKyAgICAgICAgOiBmYW5j
eUludChhLmZhbmN5SW50KQorICAgIHsgfQorCisgICAgRmFuY3lSZXNwb25zZSYgb3BlcmF0b3I9
KEZhbmN5UmVzcG9uc2UmJiBhKQorICAgIHsKKyAgICAgICAgdGhpcy0+ZmFuY3lJbnQgPSBhLmZh
bmN5SW50OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgaW50IGZhbmN5SW50
OworfTsKKworVEVTVChBYm9ydGFibGVUYXNrUXVldWUsIFN5bmNUYXNrcykKK3sKKyAgICBBYm9y
dGFibGVUYXNrUXVldWUgdGFza1F1ZXVlOworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7
CisgICAgaW50IGN1cnJlbnRTdGVwID0gMDsKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKKworICAgIGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZ0ZXN0Rmlu
aXNoZWQsICZ0YXNrUXVldWUsICZjdXJyZW50U3RlcF0oKSB7CisgICAgICAgIEVYUEVDVF9GQUxT
RShXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGYW5jeVJlc3Bv
bnNlPiByZXBseSA9IHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseTxGYW5j
eVJlc3BvbnNlPihbJmN1cnJlbnRTdGVwLCAmdGVzdEZpbmlzaGVkXSgpIC0+IEZhbmN5UmVzcG9u
c2UgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAg
ICAgICAgICBjdXJyZW50U3RlcCsrOworICAgICAgICAgICAgRVhQRUNUX0VRKDEsIGN1cnJlbnRT
dGVwKTsKKyAgICAgICAgICAgIEZhbmN5UmVzcG9uc2UgcmV0KDEwMCk7CisgICAgICAgICAgICBy
ZXR1cm4gcmV0OworICAgICAgICB9KTsKKyAgICAgICAgY3VycmVudFN0ZXArKzsKKyAgICAgICAg
RVhQRUNUX0VRKDIsIGN1cnJlbnRTdGVwKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVwbHkuaGFz
X3ZhbHVlKCkpOworICAgICAgICBFWFBFQ1RfRVEoMTAwLCByZXBseS0+ZmFuY3lJbnQpOworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goWyZ0ZXN0RmluaXNoZWRdKCkgeworICAgICAg
ICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb25dKCkgewor
ICAgICAgICBzdGQ6OnRocmVhZChiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24pLmRldGFjaCgpOwor
ICAgIH0pOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVGhyZWFkRW51bT4KK2NsYXNzIERldGVybWluaXN0aWNTY2hlZHVsZXIgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERldGVybWluaXN0aWNTY2hlZHVsZXIpOworcHVibGljOgor
ICAgIERldGVybWluaXN0aWNTY2hlZHVsZXIoVGhyZWFkRW51bSBmaXJzdFRocmVhZCkKKyAgICAg
ICAgOiBtX2N1cnJlbnRUaHJlYWQoZmlyc3RUaHJlYWQpCisgICAgeyB9CisKKyAgICBjbGFzcyBU
aHJlYWRDb250ZXh0IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkQ29udGV4
dCk7CisgICAgcHVibGljOgorICAgICAgICBUaHJlYWRDb250ZXh0KERldGVybWluaXN0aWNTY2hl
ZHVsZXImIHNjaGVkdWxlciwgVGhyZWFkRW51bSB0aGlzVGhyZWFkKQorICAgICAgICAgICAgOiBt
X3NjaGVkdWxlcihzY2hlZHVsZXIpLCBtX3RoaXNUaHJlYWQodGhpc1RocmVhZCkKKyAgICAgICAg
eyB9CisKKyAgICAgICAgdm9pZCB3YWl0TXlUdXJuKCkKKyAgICAgICAgeworICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrKG1fc2NoZWR1bGVyLm1fbXV0ZXgpOworICAgICAgICAgICAgbV9zY2hl
ZHVsZXIubV9jdXJyZW50VGhyZWFkQ2hhbmdlZC53YWl0KG1fc2NoZWR1bGVyLm1fbXV0ZXgsIFt0
aGlzXSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zY2hlZHVsZXIubV9jdXJyZW50VGhy
ZWFkID09IG1fdGhpc1RocmVhZDsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgdm9pZCB5aWVsZFRvVGhyZWFkKFRocmVhZEVudW0gbmV4dFRocmVhZCkKKyAgICAgICAgewor
ICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fc2NoZWR1bGVyLm1fbXV0ZXgpOworICAgICAg
ICAgICAgbV9zY2hlZHVsZXIubV9jdXJyZW50VGhyZWFkID0gbmV4dFRocmVhZDsKKyAgICAgICAg
ICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZENoYW5nZWQubm90aWZ5QWxsKCk7CisgICAg
ICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIERldGVybWluaXN0aWNTY2hlZHVsZXImIG1f
c2NoZWR1bGVyOworICAgICAgICBUaHJlYWRFbnVtIG1fdGhpc1RocmVhZDsKKyAgICB9OworCisK
K3ByaXZhdGU6CisgICAgVGhyZWFkRW51bSBtX2N1cnJlbnRUaHJlYWQ7CisgICAgQ29uZGl0aW9u
IG1fY3VycmVudFRocmVhZENoYW5nZWQ7CisgICAgTG9jayBtX211dGV4OworfTsKKworZW51bSBj
bGFzcyBUZXN0VGhyZWFkIHsKKyAgICBNYWluLAorICAgIEJhY2tncm91bmQKK307CisKK1RFU1Qo
QWJvcnRhYmxlVGFza1F1ZXVlLCBBYm9ydCkKK3sKKyAgICBEZXRlcm1pbmlzdGljU2NoZWR1bGVy
PFRlc3RUaHJlYWQ+IHNjaGVkdWxlcihUZXN0VGhyZWFkOjpCYWNrZ3JvdW5kKTsKKworICAgIEFi
b3J0YWJsZVRhc2tRdWV1ZSB0YXNrUXVldWU7CisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxz
ZTsKKyAgICBpbnQgY3VycmVudFN0ZXAgPSAwOworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOworCisgICAgYXV0byBiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24gPSBbJnNjaGVk
dWxlciwgJnRlc3RGaW5pc2hlZCwgJnRhc2tRdWV1ZSwgJmN1cnJlbnRTdGVwXSgpIHsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgICAgICBEZXRlcm1pbmlz
dGljU2NoZWR1bGVyPFRlc3RUaHJlYWQ+OjpUaHJlYWRDb250ZXh0IGJhY2tncm91bmRUaHJlYWRD
b250ZXh0KHNjaGVkdWxlciwgVGVzdFRocmVhZDo6QmFja2dyb3VuZCk7CisKKyAgICAgICAgdGFz
a1F1ZXVlLnRyeUVucXVldWVUYXNrKFtdKCkgeworICAgICAgICAgICAgLy8gVGhpcyB0YXNrIHNo
b3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gcnVuIHVuZGVyIHRoZSBzY2hlZHVsaW5nIG9mIHRo
aXMgdGVzdC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIGJhY2tncm91bmRUaHJlYWRDb250ZXh0LnlpZWxkVG9UaHJlYWQoVGVzdFRocmVhZDo6
TWFpbik7CisgICAgICAgIGJhY2tncm91bmRUaHJlYWRDb250ZXh0LndhaXRNeVR1cm4oKTsKKwor
ICAgICAgICAvLyBNYWluIHRocmVhZCBoYXMgY2FsbGVkIHN0YXJ0QWJvcnRpbmcoKQorCisgICAg
ICAgIHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbXSgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMg
dGFzayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHJ1biB1bmRlciB0aGUgc2NoZWR1bGlu
ZyBvZiB0aGlzIHRlc3QuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgICAg
IH0pOworICAgICAgICAvLyBUaGlzIGNhbGwgbXVzdCByZXR1cm4gaW1tZWRpYXRlbHkgYmVjYXVz
ZSB3ZSBhcmUgYWJvcnRpbmcKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGYW5jeVJlc3BvbnNlPiBy
ZXNwb25zZSA9IHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseTxGYW5jeVJl
c3BvbnNlPihbXSgpIC0+IEZhbmN5UmVzcG9uc2UgeworICAgICAgICAgICAgLy8gVGhpcyB0YXNr
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gcnVuIHVuZGVyIHRoZSBzY2hlZHVsaW5nIG9m
IHRoaXMgdGVzdC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICAgICAgICAg
IHJldHVybiBGYW5jeVJlc3BvbnNlKDEwMCk7CisgICAgICAgIH0pOworICAgICAgICBFWFBFQ1Rf
RkFMU0UocmVzcG9uc2UuaGFzX3ZhbHVlKCkpOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29u
dGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6Ok1haW4pOworICAgICAgICBiYWNrZ3JvdW5k
VGhyZWFkQ29udGV4dC53YWl0TXlUdXJuKCk7CisKKyAgICAgICAgLy8gTWFpbiB0aHJlYWQgaGFz
IGNhbGxlZCBzdG9wQWJvcnRpbmcoKQorCisgICAgICAgIHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFz
ayhbJnRlc3RGaW5pc2hlZF0oKSB7CisgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwor
ICAgICAgICB9KTsKKyAgICB9OworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJnNj
aGVkdWxlciwgJmJhY2tncm91bmRUaHJlYWRGdW5jdGlvbiwgJnRhc2tRdWV1ZV0oKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgICAgICBEZXRlcm1pbmlz
dGljU2NoZWR1bGVyPFRlc3RUaHJlYWQ+OjpUaHJlYWRDb250ZXh0IG1haW5UaHJlYWRDb250ZXh0
KHNjaGVkdWxlciwgVGVzdFRocmVhZDo6TWFpbik7CisgICAgICAgIHN0ZDo6dGhyZWFkKGJhY2tn
cm91bmRUaHJlYWRGdW5jdGlvbikuZGV0YWNoKCk7CisKKyAgICAgICAgbWFpblRocmVhZENvbnRl
eHQud2FpdE15VHVybigpOworCisgICAgICAgIHRhc2tRdWV1ZS5zdGFydEFib3J0aW5nKCk7Cisg
ICAgICAgIG1haW5UaHJlYWRDb250ZXh0LnlpZWxkVG9UaHJlYWQoVGVzdFRocmVhZDo6QmFja2dy
b3VuZCk7CisgICAgICAgIG1haW5UaHJlYWRDb250ZXh0LndhaXRNeVR1cm4oKTsKKworICAgICAg
ICB0YXNrUXVldWUuc3RvcEFib3J0aW5nKCk7CisgICAgICAgIG1haW5UaHJlYWRDb250ZXh0Lnlp
ZWxkVG9UaHJlYWQoVGVzdFRocmVhZDo6QmFja2dyb3VuZCk7CisgICAgfSk7CisKKyAgICBVdGls
OjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353116</attachid>
            <date>2018-10-25 15:31:38 -0700</date>
            <delta_ts>2018-10-26 10:31:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190902-20181025233135.patch</filename>
            <type>text/plain</type>
            <size>46126</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc4ODcxZDczYzRhM2My
N2JjOWExYzE5M2RiN2MzZmM3NGI2OGNiNC4uOWNjZjM1YjAyOTlhNDRmY2FmODUxMjM3Yzc1NmJj
NmNiYjM0YzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTI1ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXVtHU3Ry
ZWFtZXJdIEludHJvZHVjZSBBYm9ydGFibGVUYXNrUXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IHN5bmNocm9uaXphdGlvbiBwcmltaXRp
dmUgaXMgaW50cm9kdWNlZDogQWJvcnRhYmxlVGFza1F1ZXVlLAorICAgICAgICB3aGljaCBhbGxv
d3MgdG8gc2VuZCB3b3JrIHRvIHRoZSBtYWluIHRocmVhZCBmcm9tIGEgYmFja2dyb3VuZCB0aHJl
YWQKKyAgICAgICAgd2l0aCB0aGUgb3B0aW9uIHRvIHBlcmZvcm0gdHdvLXBoYXNlIGNhbmNlbGxh
dGlvbi4KKworICAgICAgICBUaGlzIG5ldyBwcmltaXRpdmUgaGFzIGJlZW4gdXNlZCB0byBvdmVy
aGF1bCBHc3RCdXMgbWVzc2FnaW5nIGluCisgICAgICAgIEFwcGVuZFBpcGVsaW5lLiBBIGxvdCBv
ZiBjb2RlIG1hZGUgcmVkdW5kYW50IGhhcyBiZWVuIGRlbGV0ZWQgaW4gdGhlCisgICAgICAgIHBy
b2Nlc3MgYW5kIGxvdHMgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHdlcmUgbm93IGFibGUgdG8gYmUg
bWFkZQorICAgICAgICBwcml2YXRlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpkdW1wQXBwZW5k
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OmFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tl
clByb2JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpoYW5kbGVBcHBzaW5r
TmV3U2FtcGxlRnJvbUFueVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGlu
ZTo6Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmg6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6c291cmNlQnVmZmVyUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6YXBwc2lua0NhcHMpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwZW5kUGlwZWxpbmU6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBp
cGVsaW5lOjpkZW11eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBl
bGluZTo6cGxheWVyUHJpdmF0ZSk6CisKIDIwMTgtMDktMjggIEFsaWNpYSBCb3lhIEdhcmPDrWEg
IDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNU0VdIFVzZSB0b2xlcmFuY2Ugd2hlbiBn
cm93aW5nIHRoZSBjb2RlZCBmcmFtZSBncm91cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0MTEwNmY2OWY2Y2Y1Y2JhY2JlYTQ2
ODc5ZGFhYjFlMDQzODQzZWYuLjA5ZjEyMjE3MmVjNzYxZmU0OTEyYjhjMzkyOTdmMTBhYjIyM2Q4
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyNDIsNiArMTI0Miw3IEBACiAJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAv
KiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4
RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCQ0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpT
UmVtb3RlRE9NV2luZG93QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QzM3NjYyMjA4NTE3N0QwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdp
bmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
Mzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggKi87IH07CisJCUNE
NUYzRUREOUQzMzNDNDBBOUEzOEE1NCAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGREI5MTJDRjhFODhBNkRBMUFE
MjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9u
aXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
Njk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5Mzcg
LyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07
CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5
QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTc2ODUsNiArNzY4Niw3IEBACiAJCTQ2QkNCQkMzMjA4NTAwQTcwMDcx
MDYzOCAvKiBSZW1vdGVET01XaW5kb3cuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90
ZURPTVdpbmRvdy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM3NjVGMjA4
NTE3NkMwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QzM3NjYxMjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdp
bmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRv
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERkRCOTEyQ0Y4RTg4QTZEQTFBRDI2
NEYgLyogQWJvcnRhYmxlVGFza1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFib3J0YWJsZVRhc2tRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90aWZpZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ4MzgsNiArMjQ4NDAsNyBAQAogCQkJ
CTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMx
RDAwRUY2RjI2IC8qIHRleHQgKi8sCiAJCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZy
ICovLAorCQkJCURGREI5MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUu
aCAqLywKIAkJCQk0OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5j
cHAgKi8sCiAJCQkJNDlBRTJEOTUxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUu
aCAqLywKIAkJCQlDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxNzQxZGIyZDgwYjhkMTg1Y2Y5NDdlMTcwYTMwZWRkMTcyMmQyMjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAt
MCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNs
dWRlIDxxdWV1ZT4KKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8qIEFib3J0YWJsZVRhc2tRdWV1ZSBpcyBhIGhpZ2gtbGV2ZWwgc3luY2hy
b25pemF0aW9uIG9iamVjdCBmb3IgYWJvcnRhYmxlIHByb2Nlc3NlcyBkb25lIGluIGJhY2tncm91
bmQKKyAqIHRocmVhZChzKSB0aGF0IG5lZWQgdG8gc2VuZCByZXF1ZXN0cyB0byB0aGUgbWFpbiB0
aHJlYWQuCisgKgorICogVGhlIHJlcXVlc3RzIHNlbnQgYnkgdGhlIGJhY2tncm91bmQgdGhyZWFk
KHMpIG1heSBiZSBhc3luY2hyb25vdXMsIHVzaW5nIHRyeUVucXVldWVUYXNrKCksIHdoaWNoIHJl
dHVybnMKKyAqIGltbWVkaWF0ZWx5OyBvciBzeW5jaHJvbm91cywgdXNpbmcgdHJ5RW5xdWV1ZVRh
c2tBbmRXYWl0Rm9yUmVwbHkoKSwgd2hpY2ggYmxvY2tzIHRoZSBjYWxsaW5nIGJhY2tncm91bmQK
KyAqIHRocmVhZCB1bnRpbCB0aGUgcmVxdWVzdCBpcyBzYXRpc2ZpZWQgYnkgdGhlIG1haW4gdGhy
ZWFkIChwb3NzaWJseSByZXR1cm5pbmcgYSByZXNwb25zZSB2YWx1ZSkuCisgKgorICogV2hhdCBt
YWtlcyBBYm9ydGFibGVUYXNrUXVldWUgZGlmZmVyZW50IGZyb20gb3RoZXIgdGFzayBxdWV1ZWlu
ZyBtZWNoYW5pc21zIGlzIHRoYXQgaXQgdXNlcyBhIHR3by1waGFzZQorICogYWJvcnQgcHJvY2Vz
cyB0aGF0IGF2b2lkcyBkZWFkbG9ja3MgYW5kIGxhdGUgbm90aWZpY2F0aW9uIGJ1Z3MuCisgKgor
ICogV2l0aG91dCBhIHR3by1waGFzZSBkZXNpZ24gZGVhZGxvY2tzIHdvdWxkIG9jY3VyIHdoZW4g
YXR0ZW1wdGluZyBhbiBhYm9ydCBpZiBhIGJhY2tncm91bmQgdGhyZWFkIHdhcworICogYmxvY2tl
ZCBpbiBhIHN5bmNocm9ub3VzIHJlcXVlc3QgYW5kIG5lZWRlZCB0byByZXR1cm4gZnJvbSB0aGVy
ZSBmb3IgdGhlIGFib3J0IHRvIGJlIGhhbmRsZWQuIEFsc28sIHdpdGhvdXQKKyAqIGEgZGVzaWdu
IGxpa2UgdGhpcywgcmVxdWVzdHMgYWxyZWFkeSBlbnF1ZXVlZCBhdCB0aGF0IHBvaW50IG9yIHNv
b24gdGhlcmVhZnRlciB1bnRpbCB0aGUgYWJvcnQgaXMgY29tcGxldGUKKyAqIHdvdWxkIHN0aWxs
IGJlIGhhbmRsZWQgYnkgdGhlIG1haW4gdGhyZWFkLCBldmVuIHRob3VnaCB3ZSBkb24ndCB3YW50
IHRvIGFueW1vcmUuCisgKgorICogQWJvcnRpbmcgYmFja2dyb3VuZCBwcm9jZXNzaW5nIHdpdGgg
QWJvcnRhYmxlVGFza1F1ZXVlIGlzIGEgc2V2ZXJhbCBzdGVwIHByb2Nlc3M6CisgKgorICogIDEu
IENhbGwgYWJvcnRhYmxlVGFza1F1ZXVlLnN0YXJ0QWJvcnRpbmcoKSAtLSBUaGlzIHdpbGwgbWFr
ZSBhbnkgY3VycmVudCBvciBmdXR1cmUgKHVudGlsIGZ1cnRoZXIgbm90aWNlKQorICogICAgIGFz
eW5jaHJvbm91cyByZXF1ZXN0IGZhaWwgaW1tZWRpYXRlbHksIHNvIHRoYXQgd2UgZG9uJ3QgZGVh
ZGxvY2sgaW4gdGhlIG5leHQgc3RlcC4gQWxzbywgcmVxdWVzdHMgb2YKKyAqICAgICBhbnkga2lu
ZCBhbHJlYWR5IGVucXVldWVkIHdpbGwgbm90IGJlIGF0dGVuZGVkLgorICoKKyAqICAyLiBTZW5k
IHRoZSBhYm9ydCBzaWduYWwgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkcy4gVGhpcyBpcyBjb21w
bGV0ZWx5IGFwcGxpY2F0aW9uIHNwZWNpZmljLiBGb3IgaW5zdGFuY2UsCisgKiAgICAgaW4gdGhl
IEFwcGVuZFBpcGVsaW5lIGNhc2UgeW91IHdvdWxkIGZsdXNoIG9yIHJlc2V0IHRoZSBHU3RyZWFt
ZXIgcGlwZWxpbmUgaGVyZS4gV2FpdCB1bnRpbCBhbGwgdGhlCisgKiAgICAgYmFja2dyb3VuZCB0
aHJlYWRzIGhhdmUgZmluaXNoZWQgYWJvcnRpbmcuCisgKgorICogIDMuIENhbGwgYWJvcnRhYmxl
VGFza1F1ZXVlLnN0b3BBYm9ydGluZygpIC0tIFRoaXMgd2lsbCBhbGxvdyBuZXcgcmVxdWVzdHMg
c2VudCBmcm9tIHRoaXMgcG9pbnQgb24gdG8gYmUKKyAqICAgICBoYW5kbGVkIGFzIGJlZm9yZSB0
aGUgYWJvcnQgd2FzIG1hZGUuCisgKgorICogIDQuIEFmdGVyIHRoaXMsIHRoZSBiYWNrZ3JvdW5k
IHRocmVhZChzKSBjYW4gYmUgcHV0IHRvIHdvcmsgYWdhaW4gc2FmZWx5LgorICoKKyAqIFRoaXMg
Y2xhc3MgaXMgdXNlZCBmb3IgaGFuZGxpbmcgZGVtdXhlciBldmVudHMgaW4gQXBwZW5kUGlwZWxp
bmUsIHRha2luZyBpbnRvIGFjY291bnQgZGVtdXhpbmcgY2FuIGJlCisgKiBhYm9ydGVkIGF0IGFu
eSBtb21lbnQuICovCitjbGFzcyBBYm9ydGFibGVUYXNrUXVldWUgZmluYWwgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFib3J0YWJsZVRhc2tRdWV1ZSk7CitwdWJsaWM6CisgICAgQWJvcnRh
YmxlVGFza1F1ZXVlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgp
KTsKKyAgICB9CisKKyAgICB+QWJvcnRhYmxlVGFza1F1ZXVlKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX211dGV4LmlzSGVs
ZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fY2hhbm5lbC5lbXB0eSgpKTsKKyAgICB9CisKKyAgICAv
LyBNRVRIT0RTIEZPUiBUSEUgTUFJTiBUSFJFQUQ6CisKKyAgICAvLyBTdGFydHMgYW4gYWJvcnQg
cHJvY2Vzcy4KKyAgICAvLworICAgIC8vIFRhc2tzIGFscmVhZHkgcXVldWVkIHdpbGwgYmUgZGlz
Y2FyZGVkLgorICAgIC8vCisgICAgLy8gVW50aWwgc3RvcEFib3J0aW5nIGlzIGNhbGxlZCwgYWxs
IHByZXNlbnQgYW5kIGZ1dHVyZSBjYWxscyB0byBwb3N0UmVxdWVzdEFuZFdhaXQoKSB3aWxsIGlt
bWVkaWF0ZWx5CisgICAgLy8gcmV0dXJuIGFuIGVtcHR5IG9wdGlvbmFsLgorICAgIHZvaWQgc3Rh
cnRBYm9ydGluZygpCisgICAgeworICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CisKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgp
OworICAgICAgICAgICAgQVNTRVJUKCFtX2Fib3J0aW5nKTsKKyAgICAgICAgICAgIG1fYWJvcnRp
bmcgPSB0cnVlOworICAgICAgICAgICAgY2FuY2VsQWxsVGFza3MoKTsKKyAgICAgICAgfQorICAg
ICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0Lm5vdGlmeUFsbCgpOworICAgIH0KKworICAgIC8v
IERlY2xhcmVzIHRoZSBwcmV2aW91cyBhYm9ydCBmaW5pc2hlZC4KKyAgICAvLworICAgIC8vIElu
IG9yZGVyIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyB0aGUgYmFja2dyb3VuZCB0aHJlYWRzIG11
c3QgYmUgdW5hYmxlIHRvIHBvc3QgdGFza3MgYXQgdGhpcyBwb2ludC4KKyAgICB2b2lkIHN0b3BB
Ym9ydGluZygpCisgICAgeworICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBBU1NFUlQo
bV9hYm9ydGluZyk7CisgICAgICAgIG1fYWJvcnRpbmcgPSBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBNRVRIT0RTIEZPUiBUSEUgQkFDS0dST1VORCBUSFJFQURTOgorCisgICAgLy8gRW5xdWV1ZSBh
IHRhc2sgdG8gYmUgcnVuIG9uIHRoZSBtYWluIHRocmVhZC4gVGhlIHRhc2sgbWF5IGJlIGNhbmNl
bGxlZCBpZiBhbiBhYm9ydCBzdGFydHMgYmVmb3JlIGl0J3MKKyAgICAvLyBoYW5kbGVkLgorICAg
IHZvaWQgdHJ5RW5xdWV1ZVRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1haW5UaHJlYWRIYW5k
bGVyKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAg
ICAgICBpZiAobV9hYm9ydGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwb3N0
VGFzayhXVEZNb3ZlKG1haW5UaHJlYWRIYW5kbGVyKSk7CisgICAgfQorCisgICAgLy8gRW5xdWV1
ZSBhIHRhc2sgdG8gYmUgcnVuIG9uIHRoZSBtYWluIHRocmVhZCBhbmQgd2FpdCBmb3IgaXQgdG8g
cmV0dXJuLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXNrIGlzCisgICAgLy8gZm9yd2FyZGVk
IHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCwgd3JhcHBlZCBpbiBhbiBvcHRpb25hbC4KKyAgICAv
LworICAgIC8vIElmIHdlIGFyZSBhYm9ydGluZywgdGhlIGNhbGwgZmluaXNoZXMgaW1tZWRpYXRl
bHksIHJldHVybmluZyBhbiBlbXB0eSBvcHRpb25hbC4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBS
PgorICAgIHN0ZDo6b3B0aW9uYWw8Uj4gdHJ5RW5xdWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHkoc3Rk
OjpmdW5jdGlvbjxSKCk+IG1haW5UaHJlYWRIYW5kbGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFXVEY6OmlzTWFpblRocmVhZCgpKTsgLy8gZG9uJ3QgZGVhZGxvY2sgbWFpbiB0aHJlYWQgd2l0
aCBpdHNlbGYKKworICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAg
ICAgIGlmIChtX2Fib3J0aW5nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Uj4o
KTsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFI+IHJlc3BvbnNlID0gc3RkOjpudWxsb3B0Owor
ICAgICAgICBwb3N0VGFzayhbdGhpcywgJnJlc3BvbnNlLCAmbWFpblRocmVhZEhhbmRsZXJdKCkg
eworICAgICAgICAgICAgUiByZXNwb25zZVZhbHVlID0gbWFpblRocmVhZEhhbmRsZXIoKTsKKyAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgICAgIHJl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZVZhbHVlKTsKKyAgICAgICAgICAgIG1fYWJvcnRlZE9y
UmVzcG9uc2VTZXQubm90aWZ5QWxsKCk7CisgICAgICAgIH0pOworICAgICAgICBtX2Fib3J0ZWRP
clJlc3BvbnNlU2V0LndhaXQobV9tdXRleCwgW3RoaXMsICZyZXNwb25zZV0oKSB7CisgICAgICAg
ICAgICByZXR1cm4gbV9hYm9ydGluZyB8fCByZXNwb25zZS5oYXNfdmFsdWUoKTsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybiByZXNwb25zZTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIGNs
YXNzIGlzIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZSB3aGVuIHlvdSB3YW50IHRvIHVzZSB0cnlF
bnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseSgpIGJ1dAorICAgIC8vIHlvdSBkb24ndCBuZWVkIGFu
eSBwYXJ0aWN1bGFyIGRhdGEgZnJvbSB0aGUgbWFpbiB0aHJlYWQgaW4gcmV0dXJuIGFuZCBqdXN0
IGtub3dpbmcgdGhhdCBpdCBmaW5pc2hlZAorICAgIC8vIHJ1bm5pbmcgdGhlIGhhbmRsZXIgZnVu
Y3Rpb24gaXMgZW5vdWdoLgorICAgIGNsYXNzIER1bW15UmVzcG9uc2UgeyB9OworCitwcml2YXRl
OgorICAgIC8vIFByb3RlY3RlZCBzdGF0ZToKKyAgICAvLyAgIE1haW4gdGhyZWFkOiByZWFkLXdy
aXRlLiBXcml0ZXMgbXVzdCBiZSBtYWRlIHdpdGggdGhlIGxvY2suCisgICAgLy8gICBCYWNrZ3Jv
dW5kIHRocmVhZHM6IHJlYWQgb25seS4gUmVhZHMgbXVzdCBiZSBtYWRlIHdpdGggdGhlIGxvY2su
CisgICAgY2xhc3MgVGFzayB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgVGFzayhBYm9ydGFibGVUYXNrUXVldWUqIHRhc2tRdWV1ZSwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgdGFza0NhbGxiYWNrKQorICAgICAgICAgICAgOiBtX3Rh
c2tRdWV1ZSh0YXNrUXVldWUpLCBtX3Rhc2tDYWxsYmFjayhXVEZNb3ZlKHRhc2tDYWxsYmFjaykp
CisgICAgICAgIHsgfQorCisgICAgICAgIGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV90YXNrUXVldWUgPT0gbnVsbHB0cjsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgY2FuY2VsKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KCFpc0NhbmNlbGxlZCgpKTsKKyAgICAgICAgICAgIG1fdGFza0NhbGxiYWNrID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fdGFza1F1ZXVlID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgZGlzcGF0Y2goKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoV1RGOjppc01h
aW5UaHJlYWQoKSk7CisgICAgICAgICAgICBpZiAoIWlzQ2FuY2VsbGVkKCkpIHsKKyAgICAgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YXNrUXVldWUtPm1fbXV0ZXgpOworICAgICAgICAg
ICAgICAgIEFTU0VSVCh0aGlzID09IG1fdGFza1F1ZXVlLT5tX2NoYW5uZWwuZnJvbnQoKSk7Cisg
ICAgICAgICAgICAgICAgbV90YXNrUXVldWUtPm1fY2hhbm5lbC5wb3AoKTsKKyAgICAgICAgICAg
ICAgICBsb2NrLnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAgICAgbV90YXNrQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQWJv
cnRhYmxlVGFza1F1ZXVlKiBtX3Rhc2tRdWV1ZTsKKyAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IG1fdGFza0NhbGxiYWNrOworICAgIH07CisKKyAgICB2b2lkIHBvc3RUYXNrKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbXV0ZXgu
aXNIZWxkKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4gdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGFzaz4odGhpcywgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICBtX2NoYW5u
ZWwucHVzaCh0YXNrLmdldCgpKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0oKSB7IHRhc2stPmRpc3BhdGNoKCk7IH0pOworICAgIH0KKwor
ICAgIHZvaWQgY2FuY2VsQWxsVGFza3MoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNN
YWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAg
IHdoaWxlICghbV9jaGFubmVsLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIFRhc2sqIHRhc2sgPSBt
X2NoYW5uZWwuZnJvbnQoKTsKKyAgICAgICAgICAgIHRhc2stPmNhbmNlbCgpOworICAgICAgICAg
ICAgbV9jaGFubmVsLnBvcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBtX2Fib3J0
aW5nID0gZmFsc2U7CisgICAgTG9jayBtX211dGV4OworICAgIENvbmRpdGlvbiBtX2Fib3J0ZWRP
clJlc3BvbnNlU2V0OworICAgIHN0ZDo6cXVldWU8VGFzayo+IG1fY2hhbm5lbDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5k
ZXggOTZjZjcxNmE3M2M5MjFmNjM0Mjk2Zjk1YjlmYmFmNGQ0YTI1M2M1MS4uNGFjMGEyZmZkNjVk
YWVkZGUyZDNjODk2ZjMzZjQ4NWQ3YjcyOTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBl
bGluZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgi
CiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNs
dWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5o
PgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTcxLDcgKzcyLDcgQEAgdm9pZCBBcHBlbmRQaXBl
bGluZTo6c3RhdGljSW5pdGlhbGl6YXRpb24oKQogICAgIHNfd2ViS2l0RW5kT2ZBcHBlbmRNZXRh
SW5mbyA9IGdzdF9tZXRhX3JlZ2lzdGVyKHNfZW5kT2ZBcHBlbmRNZXRhVHlwZSwgIldlYktpdEVu
ZE9mQXBwZW5kTWV0YSIsIHNpemVvZihFbmRPZkFwcGVuZE1ldGEpLCBFbmRPZkFwcGVuZE1ldGE6
OmluaXQsIEVuZE9mQXBwZW5kTWV0YTo6ZnJlZSwgRW5kT2ZBcHBlbmRNZXRhOjp0cmFuc2Zvcm0p
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogZHVtcEFwcGVuZFN0YXRlKEFwcGVuZFBpcGVsaW5l
OjpBcHBlbmRTdGF0ZSBhcHBlbmRTdGF0ZSkKK2NvbnN0IGNoYXIqIEFwcGVuZFBpcGVsaW5lOjpk
dW1wQXBwZW5kU3RhdGUoQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFN0YXRlIGFwcGVuZFN0YXRlKQog
ewogICAgIHN3aXRjaCAoYXBwZW5kU3RhdGUpIHsKICAgICBjYXNlIEFwcGVuZFBpcGVsaW5lOjpB
cHBlbmRTdGF0ZTo6SW52YWxpZDoKQEAgLTkzLDkgKzk0LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGR1bXBBcHBlbmRTdGF0ZShBcHBlbmRQaXBlbGluZTo6QXBwZW5kU3RhdGUgYXBwZW5kU3RhdGUp
CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRBZGRlZChH
c3RFbGVtZW50KiwgR3N0UGFkKiwgQXBwZW5kUGlwZWxpbmUqKTsKLXN0YXRpYyB2b2lkIGFwcGVu
ZFBpcGVsaW5lRGVtdXhlclBhZFJlbW92ZWQoR3N0RWxlbWVudCosIEdzdFBhZCosIEFwcGVuZFBp
cGVsaW5lKik7Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtDYXBzQ2hhbmdlZChH
T2JqZWN0KiwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5lKik7CiAjaWYgIUxPR19ESVNBQkxF
RAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0lu
Zm9ybWF0aW9uKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHN0cnVjdCBQYWRQcm9iZUluZm9y
bWF0aW9uKik7CiAjZW5kaWYKQEAgLTEwNSwyOCArMTAzLDkgQEAgc3RhdGljIEdzdFBhZFByb2Jl
UmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua1BhZEV2ZW50UHJvYmUoR3N0UGFkKiwgR3N0UGFk
UHJvYmUKICNlbmRpZgogCiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVE
ZW11eGVyQmxhY2tIb2xlUGFkUHJvYmUoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiwgZ3BvaW50
ZXIpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2FtcGxl
KEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxp
bmVBcHBzaW5rRU9TKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGljIHZvaWQg
YXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkcyhHc3RFbGVtZW50KiwgQXBwZW5kUGlwZWxp
bmUqKTsKIAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIG1hdHJvc2thZGVtdXhGb3JjZVNlZ21l
bnRTdGFydFRvRXF1YWxaZXJvKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHZvaWQqKTsKIAot
c3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVOZWVkQ29udGV4dE1lc3NhZ2VDYWxsYmFjayhHc3RC
dXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUp
Ci17Ci0gICAgR1NUX1RSQUNFKCJyZWNlaXZlZCBjYWxsYmFjayIpOwotICAgIGFwcGVuZFBpcGVs
aW5lLT5oYW5kbGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKG1lc3NhZ2UpOwotfQotCi1zdGF0aWMg
dm9pZCBhcHBlbmRQaXBlbGluZUFwcGxpY2F0aW9uTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdz
dE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAg
ICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKG1lc3NhZ2UpOwotfQot
Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZVN0YXRlQ2hhbmdlTWVzc2FnZUNhbGxiYWNrKEdz
dEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGlu
ZSkKLXsKLSAgICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKG1lc3Nh
Z2UpOwotfQotCiBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaWVudCwgUmVmPFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRSYgcGxheWVyUHJpdmF0ZSkKICAgICA6IG1fbWVkaWFTb3VyY2VDbGllbnQobWVk
aWFTb3VyY2VDbGllbnQuZ2V0KCkpCiAgICAgLCBtX3NvdXJjZUJ1ZmZlclByaXZhdGUoc291cmNl
QnVmZmVyUHJpdmF0ZS5nZXQoKSkKQEAgLTE1Myw5ICsxMzIsMTIgQEAgQXBwZW5kUGlwZWxpbmU6
OkFwcGVuZFBpcGVsaW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFT
b3VyY2VDbGkKICAgICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2hfZnVsbChtX2J1cy5nZXQoKSwg
UnVuTG9vcFNvdXJjZVByaW9yaXR5OjpSdW5Mb29wRGlzcGF0Y2hlcik7CiAgICAgZ3N0X2J1c19l
bmFibGVfc3luY19tZXNzYWdlX2VtaXNzaW9uKG1fYnVzLmdldCgpKTsKIAotICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9idXMuZ2V0KCksICJzeW5jLW1lc3NhZ2U6Om5lZWQtY29udGV4dCIsIEdfQ0FM
TEJBQ0soYXBwZW5kUGlwZWxpbmVOZWVkQ29udGV4dE1lc3NhZ2VDYWxsYmFjayksIHRoaXMpOwot
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9idXMuZ2V0KCksICJtZXNzYWdlOjphcHBsaWNhdGlvbiIs
IEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBsaWNhdGlvbk1lc3NhZ2VDYWxsYmFjayksIHRo
aXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9idXMuZ2V0KCksICJtZXNzYWdlOjpzdGF0ZS1j
aGFuZ2VkIiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZVN0YXRlQ2hhbmdlTWVzc2FnZUNhbGxi
YWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2J1cy5nZXQoKSwgInN5bmMtbWVz
c2FnZTo6bmVlZC1jb250ZXh0IiwgR19DQUxMQkFDSygrW10oR3N0QnVzKiwgR3N0TWVzc2FnZSog
bWVzc2FnZSwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKSB7CisgICAgICAgIGFwcGVu
ZFBpcGVsaW5lLT5oYW5kbGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0p
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYnVzLmdldCgpLCAibWVzc2FnZTo6c3Rh
dGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2Us
IEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGlu
ZS0+aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0pLCB0aGlzKTsKIAog
ICAgIC8vIFdlIGFzc2lnbiB0aGUgY3JlYXRlZCBpbnN0YW5jZXMgaGVyZSBpbnN0ZWFkIG9mIGFk
b3B0UmVmKCkgYmVjYXVzZSBnc3RfYmluX2FkZF9tYW55KCkKICAgICAvLyBiZWxvdyB3aWxsIGFs
cmVhZHkgdGFrZSB0aGUgaW5pdGlhbCByZWZlcmVuY2UgYW5kIHdlIG5lZWQgYW4gYWRkaXRpb25h
bCBvbmUgZm9yIHVzLgpAQCAtMTgxLDcgKzE2MywxMSBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5k
UGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNs
aQogICAgIGdzdF9iYXNlX3Npbmtfc2V0X2xhc3Rfc2FtcGxlX2VuYWJsZWQoR1NUX0JBU0VfU0lO
SyhtX2FwcHNpbmsuZ2V0KCkpLCBGQUxTRSk7CiAKICAgICBHUmVmUHRyPEdzdFBhZD4gYXBwc2lu
a1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX2FwcHNpbmsuZ2V0
KCksICJzaW5rIikpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXBwc2lua1BhZC5nZXQoKSwgIm5v
dGlmeTo6Y2FwcyIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzaW5rQ2Fwc0NoYW5nZWQp
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGFwcHNpbmtQYWQuZ2V0KCksICJub3RpZnk6
OmNhcHMiLCBHX0NBTExCQUNLKCtbXShHT2JqZWN0KiwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVs
aW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGluZS0+bV90YXNrUXVl
dWUudHJ5RW5xdWV1ZVRhc2soW2FwcGVuZFBpcGVsaW5lXSgpIHsKKyAgICAgICAgICAgIGFwcGVu
ZFBpcGVsaW5lLT5hcHBzaW5rQ2Fwc0NoYW5nZWQoKTsKKyAgICAgICAgfSk7CisgICAgfSksIHRo
aXMpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIEdSZWZQdHI8R3N0UGFkPiBkZW11eGVyUGFk
ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKG1fZGVtdXguZ2V0KCksICJz
aW5rIikpOwpAQCAtMjAwLDExICsxODYsMzAgQEAgQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVs
aW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFTb3VyY2VDbGkKICNl
bmRpZgogCiAgICAgLy8gVGhlc2Ugc2lnbmFscyB3b24ndCBiZSBjb25uZWN0ZWQgb3V0c2lkZSBv
ZiB0aGUgbGlmZXRpbWUgb2YgInRoaXMiLgotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5n
ZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkQWRk
ZWQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fZGVtdXguZ2V0KCksICJwYWQtcmVt
b3ZlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkUmVtb3ZlZCksIHRoaXMp
OwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdf
Q0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkcyksIHRoaXMpOwotICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9hcHBzaW5rLmdldCgpLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0so
YXBwZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2FtcGxlKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChtX2FwcHNpbmsuZ2V0KCksICJlb3MiLCBHX0NBTExCQUNLKGFwcGVuZFBpcGVsaW5lQXBw
c2lua0VPUyksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBh
ZC1hZGRlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBHc3RQYWQqIGRlbXV4ZXJTcmNQ
YWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBl
bGluZS0+Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJT
cmNQYWQpOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZGVtdXguZ2V0
KCksICJwYWQtcmVtb3ZlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBHc3RQYWQqIGRl
bXV4ZXJTcmNQYWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBh
cHBlbmRQaXBlbGluZS0+ZGlzY29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlU
aHJlYWQoZGVtdXhlclNyY1BhZCk7CisgICAgfSksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9kZW11eC5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1l
bnQqLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFX
VEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQb3N0aW5nIG5vLW1vcmUt
cGFkcyB0YXNrIHRvIG1haW4gdGhyZWFkIik7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5tX3Rh
c2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbYXBwZW5kUGlwZWxpbmVdKCkgeworICAgICAgICAgICAg
YXBwZW5kUGlwZWxpbmUtPmRlbXV4ZXJOb01vcmVQYWRzKCk7CisgICAgICAgIH0pOworICAgIH0p
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBwc2luay5nZXQoKSwgIm5ldy1zYW1w
bGUiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVtZW50KiBhcHBzaW5rLCBBcHBlbmRQaXBlbGluZSog
YXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tQW55VGhy
ZWFkKGFwcHNpbmspOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBw
c2luay5nZXQoKSwgImVvcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBl
bGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVh
ZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQb3N0aW5nIGFwcHNpbmstZW9zIHRhc2sgdG8gbWFp
biB0aHJlYWQiKTsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPm1fdGFza1F1ZXVlLnRyeUVucXVl
dWVUYXNrKFthcHBlbmRQaXBlbGluZV0oKSB7CisgICAgICAgICAgICBhcHBlbmRQaXBlbGluZS0+
YXBwc2lua0VPUygpOworICAgICAgICB9KTsKKyAgICB9KSwgdGhpcyk7CiAKICAgICAvLyBBZGRf
bWFueSB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIGEgcmVmZXJlbmNlLiBUaGF0J3Mgd2h5IHdlIHVz
ZWQgYW4gYXNzaWdubWVudCBiZWZvcmUuCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1f
cGlwZWxpbmUuZ2V0KCkpLCBtX2FwcHNyYy5nZXQoKSwgbV9kZW11eC5nZXQoKSwgbnVsbHB0cik7
CkBAIC0yMTgsNiArMjIzLDggQEAgQXBwZW5kUGlwZWxpbmU6On5BcHBlbmRQaXBlbGluZSgpCiAg
ICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogCiAgICAgc2V0QXBwZW5kU3RhdGUoQXBw
ZW5kU3RhdGU6OkludmFsaWQpOworICAgIC8vIEZvcmdldCBhbGwgcGVuZGluZyB0YXNrcyBhbmQg
dW5ibG9jayB0aGUgc3RyZWFtaW5nIHRocmVhZCBpZiBpdCB3YXMgYmxvY2tlZC4KKyAgICBtX3Rh
c2tRdWV1ZS5zdGFydEFib3J0aW5nKCk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fcGFkQWRkUmVtb3ZlTG9jayk7CkBAIC0yMzEsNyArMjM4LDcgQEAgQXBwZW5kUGlwZWxp
bmU6On5BcHBlbmRQaXBlbGluZSgpCiAKICAgICBpZiAobV9waXBlbGluZSkgewogICAgICAgICBB
U1NFUlQobV9idXMpOwotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1
bmMobV9idXMuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KGFwcGVuZFBpcGVsaW5l
TmVlZENvbnRleHRNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fYnVzLmdldCgpLCB0aGlzKTsKICAgICAgICAgZ3N0
X2J1c19kaXNhYmxlX3N5bmNfbWVzc2FnZV9lbWlzc2lvbihtX2J1cy5nZXQoKSk7CiAgICAgICAg
IGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaChtX2J1cy5nZXQoKSk7CiAgICAgICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CkBAIC0y
ODYsMTAgKzI5MywxMCBAQCBHc3RQYWRQcm9iZVJldHVybiBBcHBlbmRQaXBlbGluZTo6YXBwc3Jj
RW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJvYmVJbmZvKgogICAgICAgICByZXR1cm4g
R1NUX1BBRF9QUk9CRV9PSzsKICAgICB9CiAKLSAgICBHU1RfVFJBQ0VfT0JKRUNUKG1fcGlwZWxp
bmUuZ2V0KCksICJwb3N0aW5nIGVuZC1vZi1hcHBlbmQgcmVxdWVzdCB0byBidXMiKTsKLSAgICBH
c3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5KCJlbmQtb2Yt
YXBwZW5kIik7Ci0gICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25ld19hcHBs
aWNhdGlvbihHU1RfT0JKRUNUKG1fYXBwc3JjLmdldCgpKSwgc3RydWN0dXJlKTsKLSAgICBnc3Rf
YnVzX3Bvc3QobV9idXMuZ2V0KCksIG1lc3NhZ2UpOworICAgIEdTVF9UUkFDRV9PQkpFQ1QobV9w
aXBlbGluZS5nZXQoKSwgIlBvc3RpbmcgZW5kLW9mLWFwcGVuZCB0YXNrIHRvIHRoZSBtYWluIHRo
cmVhZCIpOworICAgIG1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFt0aGlzXSgpIHsKKyAgICAg
ICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKKyAgICB9KTsKICAgICByZXR1cm4gR1NUX1BBRF9QUk9C
RV9EUk9QOwogfQogCkBAIC0zMjUsNDkgKzMzMiw2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6Omhh
bmRsZU5lZWRDb250ZXh0U3luY01lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAg
bV9wbGF5ZXJQcml2YXRlLT5oYW5kbGVTeW5jTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBB
cHBlbmRQaXBlbGluZTo6aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UpCi17Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotCi0gICAgY29uc3QgR3N0
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1lc3NhZ2Up
OwotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZGVtdXhlci1j
b25uZWN0LXRvLWFwcHNpbmsiKSkgewotICAgICAgICBHUmVmUHRyPEdzdFBhZD4gZGVtdXhlclNy
Y1BhZDsKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0dXJlLCAiZGVtdXhlci1zcmMt
cGFkIiwgR19UWVBFX09CSkVDVCwgJmRlbXV4ZXJTcmNQYWQub3V0UHRyKCksIG51bGxwdHIpOwot
ICAgICAgICBBU1NFUlQoZGVtdXhlclNyY1BhZCk7Ci0gICAgICAgIGNvbm5lY3REZW11eGVyU3Jj
UGFkVG9BcHBzaW5rKGRlbXV4ZXJTcmNQYWQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwc2luay1j
YXBzLWNoYW5nZWQiKSkgewotICAgICAgICBhcHBzaW5rQ2Fwc0NoYW5nZWQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVy
ZSwgImFwcHNpbmstbmV3LXNhbXBsZSIpKSB7Ci0gICAgICAgIG1fd2FzQnVzQWxyZWFkeU5vdGlm
aWVkT2ZBdmFpbGFibGVTYW1wbGVzLmNsZWFyKCk7Ci0gICAgICAgIGNvbnN1bWVBcHBzaW5rQXZh
aWxhYmxlU2FtcGxlcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdzdF9z
dHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwc2luay1lb3MiKSkgewotICAgICAgICBh
cHBzaW5rRU9TKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ3N0X3N0cnVj
dHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkZW11eGVyLW5vLW1vcmUtcGFkcyIpKSB7Ci0gICAg
ICAgIGRlbXV4ZXJOb01vcmVQYWRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJlbmQtb2YtYXBwZW5kIikpIHsK
LSAgICAgICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkZW11
eGVyTm9Nb3JlUGFkcygpCiB7CiAgICAgR1NUX1RSQUNFKCJjYWxsaW5nIGRpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQiKTsKQEAgLTgyMyw3ICs3ODcsNyBAQCBHc3RGbG93UmV0dXJuIEFw
cGVuZFBpcGVsaW5lOjpwdXNoTmV3QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHJldHVy
biBHU1RfRkxPV19PSzsKIH0KIAotR3N0Rmxvd1JldHVybiBBcHBlbmRQaXBlbGluZTo6aGFuZGxl
TmV3QXBwc2lua1NhbXBsZShHc3RFbGVtZW50KiBhcHBzaW5rKQorR3N0Rmxvd1JldHVybiBBcHBl
bmRQaXBlbGluZTo6aGFuZGxlQXBwc2lua05ld1NhbXBsZUZyb21BbnlUaHJlYWQoR3N0RWxlbWVu
dCopCiB7CiAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoJldURjo6
VGhyZWFkOjpjdXJyZW50KCkgIT0gbV9zdHJlYW1pbmdUaHJlYWQpIHsKQEAgLTg0MywxMCArODA3
LDExIEBAIEdzdEZsb3dSZXR1cm4gQXBwZW5kUGlwZWxpbmU6OmhhbmRsZU5ld0FwcHNpbmtTYW1w
bGUoR3N0RWxlbWVudCogYXBwc2luaykKICAgICB9CiAKICAgICBpZiAoIW1fd2FzQnVzQWxyZWFk
eU5vdGlmaWVkT2ZBdmFpbGFibGVTYW1wbGVzLnRlc3RfYW5kX3NldCgpKSB7Ci0gICAgICAgIEdz
dFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoImFwcHNpbmst
bmV3LXNhbXBsZSIpOwotICAgICAgICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2Vf
bmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpFQ1QoYXBwc2luayksIHN0cnVjdHVyZSk7Ci0gICAgICAg
IGdzdF9idXNfcG9zdChtX2J1cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgICAgIEdTVF9UUkFDRSgi
YXBwc2luay1uZXctc2FtcGxlIG1lc3NhZ2UgcG9zdGVkIHRvIGJ1cyIpOworICAgICAgICBHU1Rf
VFJBQ0UoIlBvc3RpbmcgYXBwc2luay1uZXctc2FtcGxlIHRhc2sgdG8gdGhlIG1haW4gdGhyZWFk
Iik7CisgICAgICAgIG1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFt0aGlzXSgpIHsKKyAgICAg
ICAgICAgIG1fd2FzQnVzQWxyZWFkeU5vdGlmaWVkT2ZBdmFpbGFibGVTYW1wbGVzLmNsZWFyKCk7
CisgICAgICAgICAgICBjb25zdW1lQXBwc2lua0F2YWlsYWJsZVNhbXBsZXMoKTsKKyAgICAgICAg
fSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwpAQCAtODg2LDYgKzg1MSw3IEBA
IGNyZWF0ZU9wdGlvbmFsUGFyc2VyRm9yRm9ybWF0KEdzdFBhZCogZGVtdXhlclNyY1BhZCkKIAog
dm9pZCBBcHBlbmRQaXBlbGluZTo6Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55
VGhyZWFkKEdzdFBhZCogZGVtdXhlclNyY1BhZCkKIHsKKyAgICBBU1NFUlQoIVdURjo6aXNNYWlu
VGhyZWFkKCkpOwogICAgIGlmICghbV9hcHBzaW5rKQogICAgICAgICByZXR1cm47CiAKQEAgLTkx
MCwyMyArODc2LDE0IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmNvbm5lY3REZW11eGVyU3JjUGFk
VG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqIGRlbXV4ZXJTCiAgICAgZWxzZQogICAgICAg
ICBtX2luaXRpYWxEdXJhdGlvbiA9IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsK
IAotICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgpKQorICAgIEdTVF9ERUJVRygiUmVxdWVzdGlu
ZyBkZW11eGVyLWNvbm5lY3QtdG8tYXBwc2luayB0byBtYWluIHRocmVhZCIpOworICAgIGF1dG8g
cmVzcG9uc2UgPSBtX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseTxBYm9y
dGFibGVUYXNrUXVldWU6OkR1bW15UmVzcG9uc2U+KFt0aGlzLCBkZW11eGVyU3JjUGFkXSgpIHsK
ICAgICAgICAgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmsoZGVtdXhlclNyY1BhZCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIC8vIENhbGwgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmso
KSBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIHdhaXQuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fcGFkQWRkUmVtb3ZlTG9jayk7Ci0gICAgICAgIGlmICghbV9wbGF5ZXJQcml2YXRlKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X3N0cnVjdHVyZV9uZXcoImRlbXV4ZXItY29ubmVjdC10by1hcHBzaW5rIiwgImRlbXV4ZXItc3Jj
LXBhZCIsIEdfVFlQRV9PQkpFQ1QsIGRlbXV4ZXJTcmNQYWQsIG51bGxwdHIpOwotICAgICAgICBH
c3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpF
Q1QobV9kZW11eC5nZXQoKSksIHN0cnVjdHVyZSk7Ci0gICAgICAgIGdzdF9idXNfcG9zdChtX2J1
cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgICAgIEdTVF9UUkFDRSgiZGVtdXhlci1jb25uZWN0LXRv
LWFwcHNpbmsgbWVzc2FnZSBwb3N0ZWQgdG8gYnVzIik7Ci0KLSAgICAgICAgbV9wYWRBZGRSZW1v
dmVDb25kaXRpb24ud2FpdChtX3BhZEFkZFJlbW92ZUxvY2spOwotCi0gICAgICAgIGlmICghbV9w
bGF5ZXJQcml2YXRlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQWJvcnRh
YmxlVGFza1F1ZXVlOjpEdW1teVJlc3BvbnNlKCk7CisgICAgfSk7CisgICAgaWYgKCFyZXNwb25z
ZS5oYXNfdmFsdWUoKSkgeworICAgICAgICAvLyBUaGUgQXBwZW5kUGlwZWxpbmUgaGFzIGJlZW4g
ZGVzdHJveWVkIG9yIGFib3J0ZWQgYmVmb3JlIHdlIHJlY2VpdmVkIGEgcmVzcG9uc2UuCisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBNdXN0IGJlIGRvbmUgaW4gdGhlIHRocmVhZCB3
ZSB3ZXJlIGNhbGxlZCBmcm9tICh1c3VhbGx5IHN0cmVhbWluZyB0aHJlYWQpLgpAQCAtMTA1NCwy
MyArMTAxMSw2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpc2Nvbm5lY3REZW11eGVyU3JjUGFk
RnJvbUFwcHNpbmtGcm9tQW55VGhyZWFkKEdzdFBhZCopCiAgICAgR1NUX0RFQlVHX0JJTl9UT19E
T1RfRklMRV9XSVRIX1RTKEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQ
SF9TSE9XX0FMTCwgInBhZC1yZW1vdmVkLWFmdGVyIik7CiB9CiAKLXZvaWQgQXBwZW5kUGlwZWxp
bmU6OmFwcGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkKCkKLXsKLSAg
ICBHU1RfVFJBQ0UoImFwcGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFk
Iik7Ci0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0
eSgiZGVtdXhlci1uby1tb3JlLXBhZHMiKTsKLSAgICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0
X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpFQ1QobV9hcHBzcmMuZ2V0KCkpLCBzdHJ1
Y3R1cmUpOwotICAgIGdzdF9idXNfcG9zdChtX2J1cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgR1NU
X1RSQUNFKCJhcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzRnJvbUFueVRocmVhZCAtIHBv
c3RlZCB0byBidXMiKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVBcHBzaW5rQ2Fw
c0NoYW5nZWQoR09iamVjdCogYXBwc2lua1BhZCwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5l
KiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9z
dHJ1Y3R1cmVfbmV3X2VtcHR5KCJhcHBzaW5rLWNhcHMtY2hhbmdlZCIpOwotICAgIEdzdE1lc3Nh
Z2UqIG1lc3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdfYXBwbGljYXRpb24oR1NUX09CSkVDVChhcHBz
aW5rUGFkKSwgc3RydWN0dXJlKTsKLSAgICBnc3RfYnVzX3Bvc3QoYXBwZW5kUGlwZWxpbmUtPmJ1
cygpLCBtZXNzYWdlKTsKLSAgICBHU1RfVFJBQ0UoImFwcHNpbmstY2Fwcy1jaGFuZ2VkIG1lc3Nh
Z2UgcG9zdGVkIHRvIGJ1cyIpOwotfQotCiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIEdzdFBh
ZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0luZm9ybWF0aW9uKEdzdFBh
ZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24qIHBh
ZFByb2JlSW5mb3JtYXRpb24pCiB7CkBAIC0xMTEwLDQwICsxMDUwLDYgQEAgc3RhdGljIEdzdFBh
ZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lRGVtdXhlckJsYWNrSG9sZVBhZFByb2JlKEdzdFBh
ZCosIEdzdFBhZFAKICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOwogfQogCi1zdGF0aWMg
dm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRBZGRlZChHc3RFbGVtZW50KiwgR3N0UGFkKiBk
ZW11eGVyU3JjUGFkLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBw
ZW5kUGlwZWxpbmUtPmNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChk
ZW11eGVyU3JjUGFkKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFk
UmVtb3ZlZChHc3RFbGVtZW50KiwgR3N0UGFkKiBkZW11eGVyU3JjUGFkLCBBcHBlbmRQaXBlbGlu
ZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmRpc2Nvbm5lY3REZW11
eGVyU3JjUGFkRnJvbUFwcHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJTcmNQYWQpOwotfQotCi1z
dGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzKEdzdEVsZW1lbnQqLCBB
cHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmFw
cGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkKCk7Ci19Ci0KLXN0YXRp
YyBHc3RGbG93UmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua05ld1NhbXBsZShHc3RFbGVtZW50
KiBhcHBzaW5rLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgcmV0dXJu
IGFwcGVuZFBpcGVsaW5lLT5oYW5kbGVOZXdBcHBzaW5rU2FtcGxlKGFwcHNpbmspOwotfQotCi1z
dGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtFT1MoR3N0RWxlbWVudCosIEFwcGVuZFBp
cGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBpZiAoV1RGOjppc01haW5UaHJlYWQoKSkK
LSAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmFwcHNpbmtFT1MoKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSgiYXBw
c2luay1lb3MiKTsKLSAgICAgICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25l
d19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKGFwcGVuZFBpcGVsaW5lLT5hcHBzaW5rKCkpLCBzdHJ1
Y3R1cmUpOwotICAgICAgICBnc3RfYnVzX3Bvc3QoYXBwZW5kUGlwZWxpbmUtPmJ1cygpLCBtZXNz
YWdlKTsKLSAgICAgICAgR1NUX1RSQUNFKCJhcHBzaW5rLWVvcyBtZXNzYWdlIHBvc3RlZCB0byBi
dXMiKTsKLSAgICB9Ci0KLSAgICBHU1RfREVCVUcoIiVzIG1haW4gdGhyZWFkIiwgKFdURjo6aXNN
YWluVGhyZWFkKCkpID8gIklzIiA6ICJOb3QiKTsKLX0KLQogc3RhdGljIEdzdFBhZFByb2JlUmV0
dXJuIG1hdHJvc2thZGVtdXhGb3JjZVNlZ21lbnRTdGFydFRvRXF1YWxaZXJvKEdzdFBhZCosIEdz
dFBhZFByb2JlSW5mbyogaW5mbywgdm9pZCopCiB7CiAgICAgLy8gbWF0cm9za2FkZW11eCBzZXRz
IEdzdFNlZ21lbnQuc3RhcnQgdG8gdGhlIFBUUyBvZiB0aGUgZmlyc3QgZnJhbWUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL0FwcGVuZFBpcGVsaW5lLmgKaW5kZXggZGE0Zjc1ZWVjM2FjNjg2NzJlN2RjNTM0ODg3YWU4
NDdmNzhhMjdmNy4uODk4YzJlY2IxZmVjM2M1MTE3YjczY2U2NjYzZGI1MTI5MmJmN2FlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9B
cHBlbmRQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisj
aW5jbHVkZSAiQWJvcnRhYmxlVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9u
LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaCIKQEAgLTQ1LDExICs0NiwxOSBAQCBz
dHJ1Y3QgUGFkUHJvYmVJbmZvcm1hdGlvbiB7CiAKIGNsYXNzIEFwcGVuZFBpcGVsaW5lIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFwcGVuZFBpcGVsaW5lPiB7CiBwdWJsaWM6Ci0gICAg
ZW51bSBjbGFzcyBBcHBlbmRTdGF0ZSB7IEludmFsaWQsIE5vdFN0YXJ0ZWQsIE9uZ29pbmcsIERh
dGFTdGFydmUsIFNhbXBsaW5nLCBMYXN0U2FtcGxlLCBBYm9ydGluZyB9OwotCiAgICAgQXBwZW5k
UGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiwgUmVmPFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UmKTsK
ICAgICB2aXJ0dWFsIH5BcHBlbmRQaXBlbGluZSgpOwogCisgICAgR3N0Rmxvd1JldHVybiBwdXNo
TmV3QnVmZmVyKEdzdEJ1ZmZlciopOworICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7Cisg
ICAgdm9pZCBhYm9ydCgpOworICAgIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBz
b3VyY2VCdWZmZXJQcml2YXRlKCkgeyByZXR1cm4gbV9zb3VyY2VCdWZmZXJQcml2YXRlLmdldCgp
OyB9CisgICAgR3N0Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVybiBtX2FwcHNpbmtDYXBzLmdl
dCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrKCkgeyBy
ZXR1cm4gbV90cmFjazsgfQorCitwcml2YXRlOgorICAgIGVudW0gY2xhc3MgQXBwZW5kU3RhdGUg
eyBJbnZhbGlkLCBOb3RTdGFydGVkLCBPbmdvaW5nLCBEYXRhU3RhcnZlLCBTYW1wbGluZywgTGFz
dFNhbXBsZSwgQWJvcnRpbmcgfTsKKwogICAgIHZvaWQgaGFuZGxlTmVlZENvbnRleHRTeW5jTWVz
c2FnZShHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBoYW5kbGVBcHBsaWNhdGlvbk1lc3NhZ2UoR3N0
TWVzc2FnZSopOwogICAgIHZvaWQgaGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKEdzdE1lc3NhZ2Uq
KTsKQEAgLTU4LDggKzY3LDcgQEAgcHVibGljOgogICAgIEFwcGVuZFN0YXRlIGFwcGVuZFN0YXRl
KCkgeyByZXR1cm4gbV9hcHBlbmRTdGF0ZTsgfQogICAgIHZvaWQgc2V0QXBwZW5kU3RhdGUoQXBw
ZW5kU3RhdGUpOwogCi0gICAgR3N0Rmxvd1JldHVybiBoYW5kbGVOZXdBcHBzaW5rU2FtcGxlKEdz
dEVsZW1lbnQqKTsKLSAgICBHc3RGbG93UmV0dXJuIHB1c2hOZXdCdWZmZXIoR3N0QnVmZmVyKik7
CisgICAgR3N0Rmxvd1JldHVybiBoYW5kbGVBcHBzaW5rTmV3U2FtcGxlRnJvbUFueVRocmVhZChH
c3RFbGVtZW50Kik7CiAKICAgICAvLyBUYWtlcyBvd25lcnNoaXAgb2YgY2Fwcy4KICAgICB2b2lk
IHBhcnNlRGVtdXhlclNyY1BhZENhcHMoR3N0Q2FwcyopOwpAQCAtNjksMTggKzc3LDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIGhhbmRsZUVuZE9mQXBwZW5kKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KCk7CiAgICAgQXRvbWljU3RyaW5nIHRyYWNrSWQoKTsKLSAg
ICB2b2lkIGFib3J0KCk7CiAKLSAgICB2b2lkIGNsZWFyUGxheWVyUHJpdmF0ZSgpOwotICAgIFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdWZmZXJQcml2YXRlKCkgeyBy
ZXR1cm4gbV9zb3VyY2VCdWZmZXJQcml2YXRlLmdldCgpOyB9CiAgICAgR3N0QnVzKiBidXMoKSB7
IHJldHVybiBtX2J1cy5nZXQoKTsgfQogICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lKCkgeyByZXR1
cm4gbV9waXBlbGluZS5nZXQoKTsgfQogICAgIEdzdEVsZW1lbnQqIGFwcHNyYygpIHsgcmV0dXJu
IG1fYXBwc3JjLmdldCgpOyB9CiAgICAgR3N0RWxlbWVudCogYXBwc2luaygpIHsgcmV0dXJuIG1f
YXBwc2luay5nZXQoKTsgfQogICAgIEdzdENhcHMqIGRlbXV4ZXJTcmNQYWRDYXBzKCkgeyByZXR1
cm4gbV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKTsgfQotICAgIEdzdENhcHMqIGFwcHNpbmtDYXBz
KCkgeyByZXR1cm4gbV9hcHBzaW5rQ2Fwcy5nZXQoKTsgfQogICAgIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRSogcGxheWVyUHJpdmF0ZSgpIHsgcmV0dXJuIG1fcGxheWVyUHJpdmF0ZTsg
fQotICAgIFJlZlB0cjxXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlPiB0cmFjaygpIHsgcmV0dXJu
IG1fdHJhY2s7IH0KICAgICBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXIg
c3RyZWFtVHlwZSgpIHsgcmV0dXJuIG1fc3RyZWFtVHlwZTsgfQogCiAgICAgdm9pZCBkaXNjb25u
ZWN0RGVtdXhlclNyY1BhZEZyb21BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqKTsKQEAgLTg4
LDcgKzkxLDYgQEAgcHVibGljOgogICAgIHZvaWQgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNp
bmtGcm9tQW55VGhyZWFkKEdzdFBhZCopOwogICAgIHZvaWQgY29ubmVjdERlbXV4ZXJTcmNQYWRU
b0FwcHNpbmsoR3N0UGFkKik7CiAKLXByaXZhdGU6CiAgICAgdm9pZCByZXNldFBpcGVsaW5lKCk7
CiAgICAgdm9pZCBjaGVja0VuZE9mQXBwZW5kKCk7CiAgICAgdm9pZCBkZW11eGVyTm9Nb3JlUGFk
cygpOwpAQCAtOTgsNiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBHc3RQYWRQcm9iZVJldHVybiBh
cHBzcmNFbmRPZkFwcGVuZENoZWNrZXJQcm9iZShHc3RQYWRQcm9iZUluZm8qKTsKIAogICAgIHN0
YXRpYyB2b2lkIHN0YXRpY0luaXRpYWxpemF0aW9uKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGR1bXBBcHBlbmRTdGF0ZShBcHBlbmRQaXBlbGluZTo6QXBwZW5kU3RhdGUpOwogCiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIHNfc3RhdGljSW5pdGlhbGl6YXRpb25GbGFnOwogICAgIHN0YXRp
YyBHVHlwZSBzX2VuZE9mQXBwZW5kTWV0YVR5cGU7CkBAIC0xNTgsNiArMTYxLDggQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXIgbV9zdHJlYW1U
eXBlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlPiBtX3RyYWNrOwogCisg
ICAgQWJvcnRhYmxlVGFza1F1ZXVlIG1fdGFza1F1ZXVlOworCiAgICAgR1JlZlB0cjxHc3RCdWZm
ZXI+IG1fcGVuZGluZ0J1ZmZlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YWQxN2JmMjVmNDNmNzZmNjFlMDY0NzM0NWZkNTI1YWVl
MGMxNjYwLi45YzNhMmIxZTQzZmYwNmY3ZTMzZGI3MDllNmIyMzUzMTkxNWI4MTJjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTgtMTAtMjUgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtNU0VdW0dTdHJlYW1lcl0gSW50cm9kdWNlIEFib3J0YWJsZVRhc2tRdWV1ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9y
IEFib3J0YWJsZVRhc2tRdWV1ZSBhcmUgaW5jbHVkZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RmFuY3lSZXNwb25z
ZTo6RmFuY3lSZXNwb25zZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGYW5jeVJlc3BvbnNl
OjpvcGVyYXRvcj0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0ZXJtaW5pc3RpY1NjaGVk
dWxlcjo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpE
ZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpUaHJlYWRDb250ZXh0OjpUaHJlYWRDb250ZXh0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OkRldGVybWluaXN0aWNTY2hlZHVsZXI6OlRocmVhZENvbnRl
eHQ6OndhaXRNeVR1cm4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0ZXJtaW5pc3RpY1Nj
aGVkdWxlcjo6VGhyZWFkQ29udGV4dDo6eWllbGRUb1RocmVhZCk6CisKIDIwMTgtMTAtMjQgIEFs
aWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNU0VdW1dU
Rl1bTWVkaWFdIEludmFsaWQgTWVkaWFUaW1lIHNob3VsZCBiZSBmYWxzeQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYjBlMjY4ZWYyNmViYzhmOGM1OWNmMWU1NGJhYmZj
OTk0ZmFjOWJmNC4uNjRjYTQwMDY2Yjg2ZmFhMWQxODJkNzM5Nzc5OTI0YzgxMWNjZDQ4NCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMDQsNiArMTA0LDcgQEAgYWRk
X2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
ZWJDb3JlL1VSTFBhcnNlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
ZWJDb3JlL1NhbXBsZU1hcC5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKFRl
c3RXZWJDb3JlICR7dGVzdF93ZWJjb3JlX0xJQlJBUklFU30pCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDQ5ODJmNGZjOWIxMzg2OTA1ZWQ2OWUwZWM3MzBkY2Q4NTczNDY2OGYuLjI4YWM4ZWFi
ZWI3YzIwODhhM2IwYmJlNzNiYWQzOWNmOTY1ODc2ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00ODcsNiArNDg3LDcgQEAKIAkJN0NDRTdFREIxQTQxMUE5MjAwNDQ3QzRDIC8qIENTU1Bh
cnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDU0NTFFOTE5RTQxRjlEMDAxNjkzNkYgLyogQ1NTUGFyc2VyLmNwcCAqLzsgfTsKIAkJN0NDRTdF
REMxQTQxMUE5MjAwNDQ3QzRDIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBNzIwRTUxOEYxQTBFODAwQTg0OEUx
IC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwICovOyB9OwogCQk3Q0NFN0VERDFBNDExQTkyMDA0NDdD
NEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREMyQzcxNDE3OTcwODlEMDBFNjI3RkIgLyogVGltZVJhbmdlcy5jcHAgKi87
IH07CisJCUNENTFDMkE5M0U3OEI1QzFGRjMzN0MwOCAvKiBBYm9ydGFibGVUYXNrUXVldWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGNTEwNjMy
QTE5QjhBQzdFQzQwRTE3IC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5jcHAgKi87IH07CiAJCTdDQ0U3
RURFMUE0MTFBOTIwMDQ0N0M0QyAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8qIFVSTC5jcHAg
Ki87IH07CiAJCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBMYXlvdXRVbml0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDY0MDEyMTY3QTgz
MDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0LmNwcCAqLzsgfTsKIAkJN0NDRTdFRTAxQTQxMUE5QTAw
NDQ3QzRDIC8qIEVkaXRvckNvbW1hbmRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4NTcxNEEwNDRENDAwODhGQUM0IC8qIEVkaXRvckNvbW1h
bmRzLm1tICovOyB9OwpAQCAtMTk4NSw2ICsxOTg2LDcgQEAKIAkJQ0RCRkNDNDIxQTlGRjQ0ODAw
QTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREJGQ0M0MzFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVl
blpvb21Jbml0aWFsRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RDMkM3MTQxNzk3MDg5RDAwRTYyN0ZCIC8qIFRpbWVSYW5nZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGltZVJhbmdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFCRjUxMDYzMkExOUI4QUM3RUM0MEUxNyAvKiBBYm9ydGFibGVUYXNrUXVldWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWJvcnRhYmxlVGFza1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RDOEU0ODUxQkM1QjE5NDAwNTk0RkVDIC8qIEF1ZGlvU2Vzc2lvbkNh
dGVnb3J5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVk
aW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
QzhFNDg5MUJDNUM5NjIwMDU5NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAidmlkZW8td2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEU0OEExQkM1Qzk2MjAwNTk0RkVDIC8qIHZpZGVvLXdpdGgt
YXVkaW8ubXA0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gZmlsZTsgcGF0aCA9ICJ2aWRlby13aXRoLWF1ZGlvLm1wNCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNTIxLDYgKzI1MjMsNyBAQAogCQkJCUNEODlEMDM3MUM0RURCMTMwMDA0
MEEwNCAvKiBjb2NvYSAqLywKIAkJCQlBMUVDMTE4NTFGNDI1M0Q5MDBEMDE0NkUgLyogaW9zICov
LAogCQkJCTMxNjJBRTlBMUU2RjJGOEYwMDBFNERCQyAvKiBtYWMgKi8sCisJCQkJQUJGNTEwNjMy
QTE5QjhBQzdFQzQwRTE3IC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5jcHAgKi8sCiAJCQkJN0E5MDlB
NkYxRDg3NzQ3NTAwN0UxMEY4IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgKi8sCiAJCQkJNjM1NEY0
RDAxRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovLAog
CQkJCTkzQTcyMEU1MThGMUEwRTgwMEE4NDhFMSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVU
YXNrUXVldWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJs
ZVRhc2tRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRkZTI0NWFhMThhNGNhYTdiZGJjYjQzOTJhMTM3
Njg5NjJlMDM2ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxBYm9ydGFibGVUYXNrUXVl
dWUuaD4KKyNpbmNsdWRlIDxVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx0aHJlYWQ+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1Qo
QWJvcnRhYmxlVGFza1F1ZXVlLCBBc3luY1Rhc2tzKQoreworICAgIEFib3J0YWJsZVRhc2tRdWV1
ZSB0YXNrUXVldWU7CisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKyAgICBpbnQgY3Vy
cmVudFN0ZXAgPSAwOworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisg
ICAgYXV0byBiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24gPSBbJnRlc3RGaW5pc2hlZCwgJnRhc2tR
dWV1ZSwgJmN1cnJlbnRTdGVwXSgpIHsKKyAgICAgICAgdGFza1F1ZXVlLnRyeUVucXVldWVUYXNr
KFsmY3VycmVudFN0ZXBdKCkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjppc01haW5U
aHJlYWQoKSk7CisgICAgICAgICAgICBjdXJyZW50U3RlcCsrOworICAgICAgICAgICAgRVhQRUNU
X0VRKDEsIGN1cnJlbnRTdGVwKTsKKyAgICAgICAgfSk7CisgICAgICAgIHRhc2tRdWV1ZS50cnlF
bnF1ZXVlVGFzayhbJnRlc3RGaW5pc2hlZCwgJmN1cnJlbnRTdGVwXSgpIHsKKyAgICAgICAgICAg
IGdfYXNzZXJ0KFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgY3VycmVudFN0ZXAr
KzsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7CisgICAgICAgICAgICB0
ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICB9KTsKKyAgICB9OworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbJmJhY2tncm91bmRUaHJlYWRGdW5jdGlvbl0oKSB7CisgICAgICAg
IHN0ZDo6dGhyZWFkKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbikuZGV0YWNoKCk7CisgICAgfSk7
CisKKyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK3N0cnVjdCBGYW5jeVJlc3Bv
bnNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGYW5jeVJlc3BvbnNlKTsKK3B1YmxpYzoK
KyAgICBGYW5jeVJlc3BvbnNlKGludCBmYW5jeUludCkKKyAgICAgICAgOiBmYW5jeUludChmYW5j
eUludCkKKyAgICB7IH0KKworICAgIEZhbmN5UmVzcG9uc2UoRmFuY3lSZXNwb25zZSYmIGEpCisg
ICAgICAgIDogZmFuY3lJbnQoYS5mYW5jeUludCkKKyAgICB7IH0KKworICAgIEZhbmN5UmVzcG9u
c2UmIG9wZXJhdG9yPShGYW5jeVJlc3BvbnNlJiYgYSkKKyAgICB7CisgICAgICAgIHRoaXMtPmZh
bmN5SW50ID0gYS5mYW5jeUludDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAg
IGludCBmYW5jeUludDsKK307CisKK1RFU1QoQWJvcnRhYmxlVGFza1F1ZXVlLCBTeW5jVGFza3Mp
Cit7CisgICAgQWJvcnRhYmxlVGFza1F1ZXVlIHRhc2tRdWV1ZTsKKyAgICBib29sIHRlc3RGaW5p
c2hlZCA9IGZhbHNlOworICAgIGludCBjdXJyZW50U3RlcCA9IDA7CisgICAgUnVuTG9vcDo6aW5p
dGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBhdXRvIGJhY2tncm91bmRUaHJlYWRGdW5jdGlv
biA9IFsmdGVzdEZpbmlzaGVkLCAmdGFza1F1ZXVlLCAmY3VycmVudFN0ZXBdKCkgeworICAgICAg
ICBFWFBFQ1RfRkFMU0UoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8RmFuY3lSZXNwb25zZT4gcmVwbHkgPSB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2tBbmRXYWl0
Rm9yUmVwbHk8RmFuY3lSZXNwb25zZT4oWyZjdXJyZW50U3RlcCwgJnRlc3RGaW5pc2hlZF0oKSAt
PiBGYW5jeVJlc3BvbnNlIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6aXNNYWluVGhy
ZWFkKCkpOworICAgICAgICAgICAgY3VycmVudFN0ZXArKzsKKyAgICAgICAgICAgIEVYUEVDVF9F
USgxLCBjdXJyZW50U3RlcCk7CisgICAgICAgICAgICBGYW5jeVJlc3BvbnNlIHJldCgxMDApOwor
ICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfSk7CisgICAgICAgIGN1cnJlbnRTdGVw
Kys7CisgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7CisgICAgICAgIEVYUEVDVF9U
UlVFKHJlcGx5Lmhhc192YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDEwMCwgcmVwbHktPmZh
bmN5SW50KTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFsmdGVzdEZpbmlzaGVk
XSgpIHsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAg
IH07CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsmYmFja2dyb3VuZFRocmVhZEZ1
bmN0aW9uXSgpIHsKKyAgICAgICAgc3RkOjp0aHJlYWQoYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9u
KS5kZXRhY2goKTsKKyAgICB9KTsKKworICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFRocmVhZEVudW0+CitjbGFzcyBEZXRlcm1pbmlzdGljU2No
ZWR1bGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXRlcm1pbmlzdGljU2NoZWR1bGVy
KTsKK3B1YmxpYzoKKyAgICBEZXRlcm1pbmlzdGljU2NoZWR1bGVyKFRocmVhZEVudW0gZmlyc3RU
aHJlYWQpCisgICAgICAgIDogbV9jdXJyZW50VGhyZWFkKGZpcnN0VGhyZWFkKQorICAgIHsgfQor
CisgICAgY2xhc3MgVGhyZWFkQ29udGV4dCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFRocmVhZENvbnRleHQpOworICAgIHB1YmxpYzoKKyAgICAgICAgVGhyZWFkQ29udGV4dChEZXRl
cm1pbmlzdGljU2NoZWR1bGVyJiBzY2hlZHVsZXIsIFRocmVhZEVudW0gdGhpc1RocmVhZCkKKyAg
ICAgICAgICAgIDogbV9zY2hlZHVsZXIoc2NoZWR1bGVyKSwgbV90aGlzVGhyZWFkKHRoaXNUaHJl
YWQpCisgICAgICAgIHsgfQorCisgICAgICAgIHZvaWQgd2FpdE15VHVybigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxlci5tX211dGV4KTsKKyAgICAg
ICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZENoYW5nZWQud2FpdChtX3NjaGVkdWxl
ci5tX211dGV4LCBbdGhpc10oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVy
Lm1fY3VycmVudFRocmVhZCA9PSBtX3RoaXNUaHJlYWQ7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgeWllbGRUb1RocmVhZChUaHJlYWRFbnVtIG5leHRUaHJlYWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxlci5tX211
dGV4KTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZCA9IG5leHRUaHJl
YWQ7CisgICAgICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWRDaGFuZ2VkLm5vdGlm
eUFsbCgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBEZXRlcm1pbmlzdGlj
U2NoZWR1bGVyJiBtX3NjaGVkdWxlcjsKKyAgICAgICAgVGhyZWFkRW51bSBtX3RoaXNUaHJlYWQ7
CisgICAgfTsKKworCitwcml2YXRlOgorICAgIFRocmVhZEVudW0gbV9jdXJyZW50VGhyZWFkOwor
ICAgIENvbmRpdGlvbiBtX2N1cnJlbnRUaHJlYWRDaGFuZ2VkOworICAgIExvY2sgbV9tdXRleDsK
K307CisKK2VudW0gY2xhc3MgVGVzdFRocmVhZCB7CisgICAgTWFpbiwKKyAgICBCYWNrZ3JvdW5k
Cit9OworCitURVNUKEFib3J0YWJsZVRhc2tRdWV1ZSwgQWJvcnQpCit7CisgICAgRGV0ZXJtaW5p
c3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPiBzY2hlZHVsZXIoVGVzdFRocmVhZDo6QmFja2dyb3Vu
ZCk7CisKKyAgICBBYm9ydGFibGVUYXNrUXVldWUgdGFza1F1ZXVlOworICAgIGJvb2wgdGVzdEZp
bmlzaGVkID0gZmFsc2U7CisgICAgaW50IGN1cnJlbnRTdGVwID0gMDsKKyAgICBSdW5Mb29wOjpp
bml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0
aW9uID0gWyZzY2hlZHVsZXIsICZ0ZXN0RmluaXNoZWQsICZ0YXNrUXVldWUsICZjdXJyZW50U3Rl
cF0oKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAg
ICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPjo6VGhyZWFkQ29udGV4dCBiYWNr
Z3JvdW5kVGhyZWFkQ29udGV4dChzY2hlZHVsZXIsIFRlc3RUaHJlYWQ6OkJhY2tncm91bmQpOwor
CisgICAgICAgIHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbXSgpIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgdGFzayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHJ1biB1bmRlciB0aGUgc2No
ZWR1bGluZyBvZiB0aGlzIHRlc3QuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7Cisg
ICAgICAgIH0pOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFk
KFRlc3RUaHJlYWQ6Ok1haW4pOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dC53YWl0
TXlUdXJuKCk7CisKKyAgICAgICAgLy8gTWFpbiB0aHJlYWQgaGFzIGNhbGxlZCBzdGFydEFib3J0
aW5nKCkKKworICAgICAgICB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2soW10oKSB7CisgICAgICAg
ICAgICAvLyBUaGlzIHRhc2sgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBydW4gdW5kZXIg
dGhlIHNjaGVkdWxpbmcgb2YgdGhpcyB0ZXN0LgorICAgICAgICAgICAgRVhQRUNUX1RSVUUoZmFs
c2UpOworICAgICAgICB9KTsKKyAgICAgICAgLy8gVGhpcyBjYWxsIG11c3QgcmV0dXJuIGltbWVk
aWF0ZWx5IGJlY2F1c2Ugd2UgYXJlIGFib3J0aW5nCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFu
Y3lSZXNwb25zZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2tBbmRXYWl0Rm9y
UmVwbHk8RmFuY3lSZXNwb25zZT4oW10oKSAtPiBGYW5jeVJlc3BvbnNlIHsKKyAgICAgICAgICAg
IC8vIFRoaXMgdGFzayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHJ1biB1bmRlciB0aGUg
c2NoZWR1bGluZyBvZiB0aGlzIHRlc3QuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7
CisgICAgICAgICAgICByZXR1cm4gRmFuY3lSZXNwb25zZSgxMDApOworICAgICAgICB9KTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlLmhhc192YWx1ZSgpKTsKKyAgICAgICAgYmFja2dy
b3VuZFRocmVhZENvbnRleHQueWllbGRUb1RocmVhZChUZXN0VGhyZWFkOjpNYWluKTsKKyAgICAg
ICAgYmFja2dyb3VuZFRocmVhZENvbnRleHQud2FpdE15VHVybigpOworCisgICAgICAgIC8vIE1h
aW4gdGhyZWFkIGhhcyBjYWxsZWQgc3RvcEFib3J0aW5nKCkKKworICAgICAgICB0YXNrUXVldWUu
dHJ5RW5xdWV1ZVRhc2soWyZ0ZXN0RmluaXNoZWRdKCkgeworICAgICAgICAgICAgdGVzdEZpbmlz
aGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goWyZzY2hlZHVsZXIsICZiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24sICZ0YXNrUXVl
dWVdKCkgeworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAg
ICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPjo6VGhyZWFkQ29udGV4dCBtYWlu
VGhyZWFkQ29udGV4dChzY2hlZHVsZXIsIFRlc3RUaHJlYWQ6Ok1haW4pOworICAgICAgICBzdGQ6
OnRocmVhZChiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24pLmRldGFjaCgpOworCisgICAgICAgIG1h
aW5UaHJlYWRDb250ZXh0LndhaXRNeVR1cm4oKTsKKworICAgICAgICB0YXNrUXVldWUuc3RhcnRB
Ym9ydGluZygpOworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFkKFRlc3RU
aHJlYWQ6OkJhY2tncm91bmQpOworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC53YWl0TXlUdXJu
KCk7CisKKyAgICAgICAgdGFza1F1ZXVlLnN0b3BBYm9ydGluZygpOworICAgICAgICBtYWluVGhy
ZWFkQ29udGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6OkJhY2tncm91bmQpOworICAgIH0p
OworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353118</attachid>
            <date>2018-10-25 15:40:31 -0700</date>
            <delta_ts>2018-10-25 18:22:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190902-20181025234028.patch</filename>
            <type>text/plain</type>
            <size>46117</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc4ODcxZDczYzRhM2My
N2JjOWExYzE5M2RiN2MzZmM3NGI2OGNiNC4uOWNjZjM1YjAyOTlhNDRmY2FmODUxMjM3Yzc1NmJj
NmNiYjM0YzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTI1ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXVtHU3Ry
ZWFtZXJdIEludHJvZHVjZSBBYm9ydGFibGVUYXNrUXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IHN5bmNocm9uaXphdGlvbiBwcmltaXRp
dmUgaXMgaW50cm9kdWNlZDogQWJvcnRhYmxlVGFza1F1ZXVlLAorICAgICAgICB3aGljaCBhbGxv
d3MgdG8gc2VuZCB3b3JrIHRvIHRoZSBtYWluIHRocmVhZCBmcm9tIGEgYmFja2dyb3VuZCB0aHJl
YWQKKyAgICAgICAgd2l0aCB0aGUgb3B0aW9uIHRvIHBlcmZvcm0gdHdvLXBoYXNlIGNhbmNlbGxh
dGlvbi4KKworICAgICAgICBUaGlzIG5ldyBwcmltaXRpdmUgaGFzIGJlZW4gdXNlZCB0byBvdmVy
aGF1bCBHc3RCdXMgbWVzc2FnaW5nIGluCisgICAgICAgIEFwcGVuZFBpcGVsaW5lLiBBIGxvdCBv
ZiBjb2RlIG1hZGUgcmVkdW5kYW50IGhhcyBiZWVuIGRlbGV0ZWQgaW4gdGhlCisgICAgICAgIHBy
b2Nlc3MgYW5kIGxvdHMgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHdlcmUgbm93IGFibGUgdG8gYmUg
bWFkZQorICAgICAgICBwcml2YXRlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpkdW1wQXBwZW5k
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OmFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tl
clByb2JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpoYW5kbGVBcHBzaW5r
TmV3U2FtcGxlRnJvbUFueVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGlu
ZTo6Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmg6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6c291cmNlQnVmZmVyUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6YXBwc2lua0NhcHMpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwZW5kUGlwZWxpbmU6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBp
cGVsaW5lOjpkZW11eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBl
bGluZTo6cGxheWVyUHJpdmF0ZSk6CisKIDIwMTgtMDktMjggIEFsaWNpYSBCb3lhIEdhcmPDrWEg
IDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNU0VdIFVzZSB0b2xlcmFuY2Ugd2hlbiBn
cm93aW5nIHRoZSBjb2RlZCBmcmFtZSBncm91cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0MTEwNmY2OWY2Y2Y1Y2JhY2JlYTQ2
ODc5ZGFhYjFlMDQzODQzZWYuLjA5ZjEyMjE3MmVjNzYxZmU0OTEyYjhjMzkyOTdmMTBhYjIyM2Q4
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyNDIsNiArMTI0Miw3IEBACiAJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAv
KiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4
RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCQ0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpT
UmVtb3RlRE9NV2luZG93QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QzM3NjYyMjA4NTE3N0QwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdp
bmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
Mzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggKi87IH07CisJCUNE
NUYzRUREOUQzMzNDNDBBOUEzOEE1NCAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGREI5MTJDRjhFODhBNkRBMUFE
MjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9u
aXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
Njk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5Mzcg
LyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07
CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5
QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTc2ODUsNiArNzY4Niw3IEBACiAJCTQ2QkNCQkMzMjA4NTAwQTcwMDcx
MDYzOCAvKiBSZW1vdGVET01XaW5kb3cuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90
ZURPTVdpbmRvdy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM3NjVGMjA4
NTE3NkMwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QzM3NjYxMjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdp
bmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRv
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERkRCOTEyQ0Y4RTg4QTZEQTFBRDI2
NEYgLyogQWJvcnRhYmxlVGFza1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFib3J0YWJsZVRhc2tRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90aWZpZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ4MzgsNiArMjQ4NDAsNyBAQAogCQkJ
CTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMx
RDAwRUY2RjI2IC8qIHRleHQgKi8sCiAJCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZy
ICovLAorCQkJCURGREI5MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUu
aCAqLywKIAkJCQk0OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5j
cHAgKi8sCiAJCQkJNDlBRTJEOTUxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUu
aCAqLywKIAkJCQlDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxNzQxZGIyZDgwYjhkMTg1Y2Y5NDdlMTcwYTMwZWRkMTcyMmQyMjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAt
MCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNs
dWRlIDxxdWV1ZT4KKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8qIEFib3J0YWJsZVRhc2tRdWV1ZSBpcyBhIGhpZ2gtbGV2ZWwgc3luY2hy
b25pemF0aW9uIG9iamVjdCBmb3IgYWJvcnRhYmxlIHByb2Nlc3NlcyBkb25lIGluIGJhY2tncm91
bmQKKyAqIHRocmVhZChzKSB0aGF0IG5lZWQgdG8gc2VuZCByZXF1ZXN0cyB0byB0aGUgbWFpbiB0
aHJlYWQuCisgKgorICogVGhlIHJlcXVlc3RzIHNlbnQgYnkgdGhlIGJhY2tncm91bmQgdGhyZWFk
KHMpIG1heSBiZSBhc3luY2hyb25vdXMsIHVzaW5nIHRyeUVucXVldWVUYXNrKCksIHdoaWNoIHJl
dHVybnMKKyAqIGltbWVkaWF0ZWx5OyBvciBzeW5jaHJvbm91cywgdXNpbmcgdHJ5RW5xdWV1ZVRh
c2tBbmRXYWl0Rm9yUmVwbHkoKSwgd2hpY2ggYmxvY2tzIHRoZSBjYWxsaW5nIGJhY2tncm91bmQK
KyAqIHRocmVhZCB1bnRpbCB0aGUgcmVxdWVzdCBpcyBzYXRpc2ZpZWQgYnkgdGhlIG1haW4gdGhy
ZWFkIChwb3NzaWJseSByZXR1cm5pbmcgYSByZXNwb25zZSB2YWx1ZSkuCisgKgorICogV2hhdCBt
YWtlcyBBYm9ydGFibGVUYXNrUXVldWUgZGlmZmVyZW50IGZyb20gb3RoZXIgdGFzayBxdWV1ZWlu
ZyBtZWNoYW5pc21zIGlzIHRoYXQgaXQgdXNlcyBhIHR3by1waGFzZQorICogYWJvcnQgcHJvY2Vz
cyB0aGF0IGF2b2lkcyBkZWFkbG9ja3MgYW5kIGxhdGUgbm90aWZpY2F0aW9uIGJ1Z3MuCisgKgor
ICogV2l0aG91dCBhIHR3by1waGFzZSBkZXNpZ24gZGVhZGxvY2tzIHdvdWxkIG9jY3VyIHdoZW4g
YXR0ZW1wdGluZyBhbiBhYm9ydCBpZiBhIGJhY2tncm91bmQgdGhyZWFkIHdhcworICogYmxvY2tl
ZCBpbiBhIHN5bmNocm9ub3VzIHJlcXVlc3QgYW5kIG5lZWRlZCB0byByZXR1cm4gZnJvbSB0aGVy
ZSBmb3IgdGhlIGFib3J0IHRvIGJlIGhhbmRsZWQuIEFsc28sIHdpdGhvdXQKKyAqIGEgZGVzaWdu
IGxpa2UgdGhpcywgcmVxdWVzdHMgYWxyZWFkeSBlbnF1ZXVlZCBhdCB0aGF0IHBvaW50IG9yIHNv
b24gdGhlcmVhZnRlciB1bnRpbCB0aGUgYWJvcnQgaXMgY29tcGxldGUKKyAqIHdvdWxkIHN0aWxs
IGJlIGhhbmRsZWQgYnkgdGhlIG1haW4gdGhyZWFkLCBldmVuIHRob3VnaCB3ZSBkb24ndCB3YW50
IHRvIGFueW1vcmUuCisgKgorICogQWJvcnRpbmcgYmFja2dyb3VuZCBwcm9jZXNzaW5nIHdpdGgg
QWJvcnRhYmxlVGFza1F1ZXVlIGlzIGEgc2V2ZXJhbCBzdGVwIHByb2Nlc3M6CisgKgorICogIDEu
IENhbGwgYWJvcnRhYmxlVGFza1F1ZXVlLnN0YXJ0QWJvcnRpbmcoKSAtLSBUaGlzIHdpbGwgbWFr
ZSBhbnkgY3VycmVudCBvciBmdXR1cmUgKHVudGlsIGZ1cnRoZXIgbm90aWNlKQorICogICAgIGFz
eW5jaHJvbm91cyByZXF1ZXN0IGZhaWwgaW1tZWRpYXRlbHksIHNvIHRoYXQgd2UgZG9uJ3QgZGVh
ZGxvY2sgaW4gdGhlIG5leHQgc3RlcC4gQWxzbywgcmVxdWVzdHMgb2YKKyAqICAgICBhbnkga2lu
ZCBhbHJlYWR5IGVucXVldWVkIHdpbGwgbm90IGJlIGF0dGVuZGVkLgorICoKKyAqICAyLiBTZW5k
IHRoZSBhYm9ydCBzaWduYWwgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkcy4gVGhpcyBpcyBjb21w
bGV0ZWx5IGFwcGxpY2F0aW9uIHNwZWNpZmljLiBGb3IgaW5zdGFuY2UsCisgKiAgICAgaW4gdGhl
IEFwcGVuZFBpcGVsaW5lIGNhc2UgeW91IHdvdWxkIGZsdXNoIG9yIHJlc2V0IHRoZSBHU3RyZWFt
ZXIgcGlwZWxpbmUgaGVyZS4gV2FpdCB1bnRpbCBhbGwgdGhlCisgKiAgICAgYmFja2dyb3VuZCB0
aHJlYWRzIGhhdmUgZmluaXNoZWQgYWJvcnRpbmcuCisgKgorICogIDMuIENhbGwgYWJvcnRhYmxl
VGFza1F1ZXVlLnN0b3BBYm9ydGluZygpIC0tIFRoaXMgd2lsbCBhbGxvdyBuZXcgcmVxdWVzdHMg
c2VudCBmcm9tIHRoaXMgcG9pbnQgb24gdG8gYmUKKyAqICAgICBoYW5kbGVkIGFzIGJlZm9yZSB0
aGUgYWJvcnQgd2FzIG1hZGUuCisgKgorICogIDQuIEFmdGVyIHRoaXMsIHRoZSBiYWNrZ3JvdW5k
IHRocmVhZChzKSBjYW4gYmUgcHV0IHRvIHdvcmsgYWdhaW4gc2FmZWx5LgorICoKKyAqIFRoaXMg
Y2xhc3MgaXMgdXNlZCBmb3IgaGFuZGxpbmcgZGVtdXhlciBldmVudHMgaW4gQXBwZW5kUGlwZWxp
bmUsIHRha2luZyBpbnRvIGFjY291bnQgZGVtdXhpbmcgY2FuIGJlCisgKiBhYm9ydGVkIGF0IGFu
eSBtb21lbnQuICovCitjbGFzcyBBYm9ydGFibGVUYXNrUXVldWUgZmluYWwgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFib3J0YWJsZVRhc2tRdWV1ZSk7CitwdWJsaWM6CisgICAgQWJvcnRh
YmxlVGFza1F1ZXVlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgp
KTsKKyAgICB9CisKKyAgICB+QWJvcnRhYmxlVGFza1F1ZXVlKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX211dGV4LmlzSGVs
ZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fY2hhbm5lbC5lbXB0eSgpKTsKKyAgICB9CisKKyAgICAv
LyBNRVRIT0RTIEZPUiBUSEUgTUFJTiBUSFJFQUQ6CisKKyAgICAvLyBTdGFydHMgYW4gYWJvcnQg
cHJvY2Vzcy4KKyAgICAvLworICAgIC8vIFRhc2tzIGFscmVhZHkgcXVldWVkIHdpbGwgYmUgZGlz
Y2FyZGVkLgorICAgIC8vCisgICAgLy8gVW50aWwgc3RvcEFib3J0aW5nIGlzIGNhbGxlZCwgYWxs
IHByZXNlbnQgYW5kIGZ1dHVyZSBjYWxscyB0byBwb3N0UmVxdWVzdEFuZFdhaXQoKSB3aWxsIGlt
bWVkaWF0ZWx5CisgICAgLy8gcmV0dXJuIGFuIGVtcHR5IG9wdGlvbmFsLgorICAgIHZvaWQgc3Rh
cnRBYm9ydGluZygpCisgICAgeworICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CisKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgp
OworICAgICAgICAgICAgQVNTRVJUKCFtX2Fib3J0aW5nKTsKKyAgICAgICAgICAgIG1fYWJvcnRp
bmcgPSB0cnVlOworICAgICAgICAgICAgY2FuY2VsQWxsVGFza3MoKTsKKyAgICAgICAgfQorICAg
ICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0Lm5vdGlmeUFsbCgpOworICAgIH0KKworICAgIC8v
IERlY2xhcmVzIHRoZSBwcmV2aW91cyBhYm9ydCBmaW5pc2hlZC4KKyAgICAvLworICAgIC8vIElu
IG9yZGVyIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyB0aGUgYmFja2dyb3VuZCB0aHJlYWRzIG11
c3QgYmUgdW5hYmxlIHRvIHBvc3QgdGFza3MgYXQgdGhpcyBwb2ludC4KKyAgICB2b2lkIHN0b3BB
Ym9ydGluZygpCisgICAgeworICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBBU1NFUlQo
bV9hYm9ydGluZyk7CisgICAgICAgIG1fYWJvcnRpbmcgPSBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBNRVRIT0RTIEZPUiBUSEUgQkFDS0dST1VORCBUSFJFQURTOgorCisgICAgLy8gRW5xdWV1ZSBh
IHRhc2sgdG8gYmUgcnVuIG9uIHRoZSBtYWluIHRocmVhZC4gVGhlIHRhc2sgbWF5IGJlIGNhbmNl
bGxlZCBpZiBhbiBhYm9ydCBzdGFydHMgYmVmb3JlIGl0J3MKKyAgICAvLyBoYW5kbGVkLgorICAg
IHZvaWQgdHJ5RW5xdWV1ZVRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1haW5UaHJlYWRIYW5k
bGVyKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAg
ICAgICBpZiAobV9hYm9ydGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwb3N0
VGFzayhXVEZNb3ZlKG1haW5UaHJlYWRIYW5kbGVyKSk7CisgICAgfQorCisgICAgLy8gRW5xdWV1
ZSBhIHRhc2sgdG8gYmUgcnVuIG9uIHRoZSBtYWluIHRocmVhZCBhbmQgd2FpdCBmb3IgaXQgdG8g
cmV0dXJuLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXNrIGlzCisgICAgLy8gZm9yd2FyZGVk
IHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCwgd3JhcHBlZCBpbiBhbiBvcHRpb25hbC4KKyAgICAv
LworICAgIC8vIElmIHdlIGFyZSBhYm9ydGluZywgdGhlIGNhbGwgZmluaXNoZXMgaW1tZWRpYXRl
bHksIHJldHVybmluZyBhbiBlbXB0eSBvcHRpb25hbC4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBS
PgorICAgIHN0ZDo6b3B0aW9uYWw8Uj4gdHJ5RW5xdWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHkoc3Rk
OjpmdW5jdGlvbjxSKCk+IG1haW5UaHJlYWRIYW5kbGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFXVEY6OmlzTWFpblRocmVhZCgpKTsgLy8gZG9uJ3QgZGVhZGxvY2sgbWFpbiB0aHJlYWQgd2l0
aCBpdHNlbGYKKworICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAg
ICAgIGlmIChtX2Fib3J0aW5nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Uj4o
KTsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFI+IHJlc3BvbnNlID0gc3RkOjpudWxsb3B0Owor
ICAgICAgICBwb3N0VGFzayhbdGhpcywgJnJlc3BvbnNlLCAmbWFpblRocmVhZEhhbmRsZXJdKCkg
eworICAgICAgICAgICAgUiByZXNwb25zZVZhbHVlID0gbWFpblRocmVhZEhhbmRsZXIoKTsKKyAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgICAgIHJl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZVZhbHVlKTsKKyAgICAgICAgICAgIG1fYWJvcnRlZE9y
UmVzcG9uc2VTZXQubm90aWZ5QWxsKCk7CisgICAgICAgIH0pOworICAgICAgICBtX2Fib3J0ZWRP
clJlc3BvbnNlU2V0LndhaXQobV9tdXRleCwgW3RoaXMsICZyZXNwb25zZV0oKSB7CisgICAgICAg
ICAgICByZXR1cm4gbV9hYm9ydGluZyB8fCByZXNwb25zZS5oYXNfdmFsdWUoKTsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybiByZXNwb25zZTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIGNs
YXNzIGlzIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZSB3aGVuIHlvdSB3YW50IHRvIHVzZSB0cnlF
bnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseSgpIGJ1dAorICAgIC8vIHlvdSBkb24ndCBuZWVkIGFu
eSBwYXJ0aWN1bGFyIGRhdGEgZnJvbSB0aGUgbWFpbiB0aHJlYWQgaW4gcmV0dXJuIGFuZCBqdXN0
IGtub3dpbmcgdGhhdCBpdCBmaW5pc2hlZAorICAgIC8vIHJ1bm5pbmcgdGhlIGhhbmRsZXIgZnVu
Y3Rpb24gaXMgZW5vdWdoLgorICAgIGNsYXNzIER1bW15UmVzcG9uc2UgeyB9OworCitwcml2YXRl
OgorICAgIC8vIFByb3RlY3RlZCBzdGF0ZToKKyAgICAvLyAgIE1haW4gdGhyZWFkOiByZWFkLXdy
aXRlLiBXcml0ZXMgbXVzdCBiZSBtYWRlIHdpdGggdGhlIGxvY2suCisgICAgLy8gICBCYWNrZ3Jv
dW5kIHRocmVhZHM6IHJlYWQgb25seS4gUmVhZHMgbXVzdCBiZSBtYWRlIHdpdGggdGhlIGxvY2su
CisgICAgY2xhc3MgVGFzayB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgVGFzayhBYm9ydGFibGVUYXNrUXVldWUqIHRhc2tRdWV1ZSwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgdGFza0NhbGxiYWNrKQorICAgICAgICAgICAgOiBtX3Rh
c2tRdWV1ZSh0YXNrUXVldWUpLCBtX3Rhc2tDYWxsYmFjayhXVEZNb3ZlKHRhc2tDYWxsYmFjaykp
CisgICAgICAgIHsgfQorCisgICAgICAgIGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV90YXNrUXVldWUgPT0gbnVsbHB0cjsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgY2FuY2VsKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KCFpc0NhbmNlbGxlZCgpKTsKKyAgICAgICAgICAgIG1fdGFza0NhbGxiYWNrID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fdGFza1F1ZXVlID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgZGlzcGF0Y2goKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoV1RGOjppc01h
aW5UaHJlYWQoKSk7CisgICAgICAgICAgICBpZiAoIWlzQ2FuY2VsbGVkKCkpIHsKKyAgICAgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YXNrUXVldWUtPm1fbXV0ZXgpOworICAgICAgICAg
ICAgICAgIEFTU0VSVCh0aGlzID09IG1fdGFza1F1ZXVlLT5tX2NoYW5uZWwuZnJvbnQoKSk7Cisg
ICAgICAgICAgICAgICAgbV90YXNrUXVldWUtPm1fY2hhbm5lbC5wb3AoKTsKKyAgICAgICAgICAg
ICAgICBsb2NrLnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAgICAgbV90YXNrQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQWJv
cnRhYmxlVGFza1F1ZXVlKiBtX3Rhc2tRdWV1ZTsKKyAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IG1fdGFza0NhbGxiYWNrOworICAgIH07CisKKyAgICB2b2lkIHBvc3RUYXNrKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbXV0ZXgu
aXNIZWxkKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4gdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGFzaz4odGhpcywgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICBtX2NoYW5u
ZWwucHVzaCh0YXNrLmdldCgpKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0oKSB7IHRhc2stPmRpc3BhdGNoKCk7IH0pOworICAgIH0KKwor
ICAgIHZvaWQgY2FuY2VsQWxsVGFza3MoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNN
YWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAg
IHdoaWxlICghbV9jaGFubmVsLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIFRhc2sqIHRhc2sgPSBt
X2NoYW5uZWwuZnJvbnQoKTsKKyAgICAgICAgICAgIHRhc2stPmNhbmNlbCgpOworICAgICAgICAg
ICAgbV9jaGFubmVsLnBvcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBtX2Fib3J0
aW5nID0gZmFsc2U7CisgICAgTG9jayBtX211dGV4OworICAgIENvbmRpdGlvbiBtX2Fib3J0ZWRP
clJlc3BvbnNlU2V0OworICAgIHN0ZDo6cXVldWU8VGFzayo+IG1fY2hhbm5lbDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5k
ZXggOTZjZjcxNmE3M2M5MjFmNjM0Mjk2Zjk1YjlmYmFmNGQ0YTI1M2M1MS4uNGFjMGEyZmZkNjVk
YWVkZGUyZDNjODk2ZjMzZjQ4NWQ3YjcyOTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBl
bGluZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgi
CiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNs
dWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5o
PgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTcxLDcgKzcyLDcgQEAgdm9pZCBBcHBlbmRQaXBl
bGluZTo6c3RhdGljSW5pdGlhbGl6YXRpb24oKQogICAgIHNfd2ViS2l0RW5kT2ZBcHBlbmRNZXRh
SW5mbyA9IGdzdF9tZXRhX3JlZ2lzdGVyKHNfZW5kT2ZBcHBlbmRNZXRhVHlwZSwgIldlYktpdEVu
ZE9mQXBwZW5kTWV0YSIsIHNpemVvZihFbmRPZkFwcGVuZE1ldGEpLCBFbmRPZkFwcGVuZE1ldGE6
OmluaXQsIEVuZE9mQXBwZW5kTWV0YTo6ZnJlZSwgRW5kT2ZBcHBlbmRNZXRhOjp0cmFuc2Zvcm0p
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogZHVtcEFwcGVuZFN0YXRlKEFwcGVuZFBpcGVsaW5l
OjpBcHBlbmRTdGF0ZSBhcHBlbmRTdGF0ZSkKK2NvbnN0IGNoYXIqIEFwcGVuZFBpcGVsaW5lOjpk
dW1wQXBwZW5kU3RhdGUoQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFN0YXRlIGFwcGVuZFN0YXRlKQog
ewogICAgIHN3aXRjaCAoYXBwZW5kU3RhdGUpIHsKICAgICBjYXNlIEFwcGVuZFBpcGVsaW5lOjpB
cHBlbmRTdGF0ZTo6SW52YWxpZDoKQEAgLTkzLDkgKzk0LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGR1bXBBcHBlbmRTdGF0ZShBcHBlbmRQaXBlbGluZTo6QXBwZW5kU3RhdGUgYXBwZW5kU3RhdGUp
CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRBZGRlZChH
c3RFbGVtZW50KiwgR3N0UGFkKiwgQXBwZW5kUGlwZWxpbmUqKTsKLXN0YXRpYyB2b2lkIGFwcGVu
ZFBpcGVsaW5lRGVtdXhlclBhZFJlbW92ZWQoR3N0RWxlbWVudCosIEdzdFBhZCosIEFwcGVuZFBp
cGVsaW5lKik7Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtDYXBzQ2hhbmdlZChH
T2JqZWN0KiwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5lKik7CiAjaWYgIUxPR19ESVNBQkxF
RAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0lu
Zm9ybWF0aW9uKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHN0cnVjdCBQYWRQcm9iZUluZm9y
bWF0aW9uKik7CiAjZW5kaWYKQEAgLTEwNSwyOCArMTAzLDkgQEAgc3RhdGljIEdzdFBhZFByb2Jl
UmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua1BhZEV2ZW50UHJvYmUoR3N0UGFkKiwgR3N0UGFk
UHJvYmUKICNlbmRpZgogCiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVE
ZW11eGVyQmxhY2tIb2xlUGFkUHJvYmUoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiwgZ3BvaW50
ZXIpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2FtcGxl
KEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxp
bmVBcHBzaW5rRU9TKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGljIHZvaWQg
YXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkcyhHc3RFbGVtZW50KiwgQXBwZW5kUGlwZWxp
bmUqKTsKIAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIG1hdHJvc2thZGVtdXhGb3JjZVNlZ21l
bnRTdGFydFRvRXF1YWxaZXJvKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHZvaWQqKTsKIAot
c3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVOZWVkQ29udGV4dE1lc3NhZ2VDYWxsYmFjayhHc3RC
dXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUp
Ci17Ci0gICAgR1NUX1RSQUNFKCJyZWNlaXZlZCBjYWxsYmFjayIpOwotICAgIGFwcGVuZFBpcGVs
aW5lLT5oYW5kbGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKG1lc3NhZ2UpOwotfQotCi1zdGF0aWMg
dm9pZCBhcHBlbmRQaXBlbGluZUFwcGxpY2F0aW9uTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdz
dE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAg
ICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKG1lc3NhZ2UpOwotfQot
Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZVN0YXRlQ2hhbmdlTWVzc2FnZUNhbGxiYWNrKEdz
dEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGlu
ZSkKLXsKLSAgICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKG1lc3Nh
Z2UpOwotfQotCiBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaWVudCwgUmVmPFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRSYgcGxheWVyUHJpdmF0ZSkKICAgICA6IG1fbWVkaWFTb3VyY2VDbGllbnQobWVk
aWFTb3VyY2VDbGllbnQuZ2V0KCkpCiAgICAgLCBtX3NvdXJjZUJ1ZmZlclByaXZhdGUoc291cmNl
QnVmZmVyUHJpdmF0ZS5nZXQoKSkKQEAgLTE1Myw5ICsxMzIsMTIgQEAgQXBwZW5kUGlwZWxpbmU6
OkFwcGVuZFBpcGVsaW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFT
b3VyY2VDbGkKICAgICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2hfZnVsbChtX2J1cy5nZXQoKSwg
UnVuTG9vcFNvdXJjZVByaW9yaXR5OjpSdW5Mb29wRGlzcGF0Y2hlcik7CiAgICAgZ3N0X2J1c19l
bmFibGVfc3luY19tZXNzYWdlX2VtaXNzaW9uKG1fYnVzLmdldCgpKTsKIAotICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9idXMuZ2V0KCksICJzeW5jLW1lc3NhZ2U6Om5lZWQtY29udGV4dCIsIEdfQ0FM
TEJBQ0soYXBwZW5kUGlwZWxpbmVOZWVkQ29udGV4dE1lc3NhZ2VDYWxsYmFjayksIHRoaXMpOwot
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9idXMuZ2V0KCksICJtZXNzYWdlOjphcHBsaWNhdGlvbiIs
IEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBsaWNhdGlvbk1lc3NhZ2VDYWxsYmFjayksIHRo
aXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9idXMuZ2V0KCksICJtZXNzYWdlOjpzdGF0ZS1j
aGFuZ2VkIiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZVN0YXRlQ2hhbmdlTWVzc2FnZUNhbGxi
YWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2J1cy5nZXQoKSwgInN5bmMtbWVz
c2FnZTo6bmVlZC1jb250ZXh0IiwgR19DQUxMQkFDSygrW10oR3N0QnVzKiwgR3N0TWVzc2FnZSog
bWVzc2FnZSwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKSB7CisgICAgICAgIGFwcGVu
ZFBpcGVsaW5lLT5oYW5kbGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0p
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYnVzLmdldCgpLCAibWVzc2FnZTo6c3Rh
dGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2Us
IEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGlu
ZS0+aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0pLCB0aGlzKTsKIAog
ICAgIC8vIFdlIGFzc2lnbiB0aGUgY3JlYXRlZCBpbnN0YW5jZXMgaGVyZSBpbnN0ZWFkIG9mIGFk
b3B0UmVmKCkgYmVjYXVzZSBnc3RfYmluX2FkZF9tYW55KCkKICAgICAvLyBiZWxvdyB3aWxsIGFs
cmVhZHkgdGFrZSB0aGUgaW5pdGlhbCByZWZlcmVuY2UgYW5kIHdlIG5lZWQgYW4gYWRkaXRpb25h
bCBvbmUgZm9yIHVzLgpAQCAtMTgxLDcgKzE2MywxMSBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5k
UGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNs
aQogICAgIGdzdF9iYXNlX3Npbmtfc2V0X2xhc3Rfc2FtcGxlX2VuYWJsZWQoR1NUX0JBU0VfU0lO
SyhtX2FwcHNpbmsuZ2V0KCkpLCBGQUxTRSk7CiAKICAgICBHUmVmUHRyPEdzdFBhZD4gYXBwc2lu
a1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX2FwcHNpbmsuZ2V0
KCksICJzaW5rIikpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXBwc2lua1BhZC5nZXQoKSwgIm5v
dGlmeTo6Y2FwcyIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzaW5rQ2Fwc0NoYW5nZWQp
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGFwcHNpbmtQYWQuZ2V0KCksICJub3RpZnk6
OmNhcHMiLCBHX0NBTExCQUNLKCtbXShHT2JqZWN0KiwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVs
aW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGluZS0+bV90YXNrUXVl
dWUudHJ5RW5xdWV1ZVRhc2soW2FwcGVuZFBpcGVsaW5lXSgpIHsKKyAgICAgICAgICAgIGFwcGVu
ZFBpcGVsaW5lLT5hcHBzaW5rQ2Fwc0NoYW5nZWQoKTsKKyAgICAgICAgfSk7CisgICAgfSksIHRo
aXMpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIEdSZWZQdHI8R3N0UGFkPiBkZW11eGVyUGFk
ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKG1fZGVtdXguZ2V0KCksICJz
aW5rIikpOwpAQCAtMjAwLDExICsxODYsMzAgQEAgQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVs
aW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFTb3VyY2VDbGkKICNl
bmRpZgogCiAgICAgLy8gVGhlc2Ugc2lnbmFscyB3b24ndCBiZSBjb25uZWN0ZWQgb3V0c2lkZSBv
ZiB0aGUgbGlmZXRpbWUgb2YgInRoaXMiLgotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5n
ZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkQWRk
ZWQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fZGVtdXguZ2V0KCksICJwYWQtcmVt
b3ZlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkUmVtb3ZlZCksIHRoaXMp
OwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdf
Q0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkcyksIHRoaXMpOwotICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9hcHBzaW5rLmdldCgpLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0so
YXBwZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2FtcGxlKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChtX2FwcHNpbmsuZ2V0KCksICJlb3MiLCBHX0NBTExCQUNLKGFwcGVuZFBpcGVsaW5lQXBw
c2lua0VPUyksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBh
ZC1hZGRlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBHc3RQYWQqIGRlbXV4ZXJTcmNQ
YWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBl
bGluZS0+Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJT
cmNQYWQpOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZGVtdXguZ2V0
KCksICJwYWQtcmVtb3ZlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBHc3RQYWQqIGRl
bXV4ZXJTcmNQYWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBh
cHBlbmRQaXBlbGluZS0+ZGlzY29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlU
aHJlYWQoZGVtdXhlclNyY1BhZCk7CisgICAgfSksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9kZW11eC5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1l
bnQqLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFX
VEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQb3N0aW5nIG5vLW1vcmUt
cGFkcyB0YXNrIHRvIG1haW4gdGhyZWFkIik7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5tX3Rh
c2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbYXBwZW5kUGlwZWxpbmVdKCkgeworICAgICAgICAgICAg
YXBwZW5kUGlwZWxpbmUtPmRlbXV4ZXJOb01vcmVQYWRzKCk7CisgICAgICAgIH0pOworICAgIH0p
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBwc2luay5nZXQoKSwgIm5ldy1zYW1w
bGUiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVtZW50KiBhcHBzaW5rLCBBcHBlbmRQaXBlbGluZSog
YXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tQW55VGhy
ZWFkKGFwcHNpbmspOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBw
c2luay5nZXQoKSwgImVvcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBl
bGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVh
ZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQb3N0aW5nIGFwcHNpbmstZW9zIHRhc2sgdG8gbWFp
biB0aHJlYWQiKTsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPm1fdGFza1F1ZXVlLnRyeUVucXVl
dWVUYXNrKFthcHBlbmRQaXBlbGluZV0oKSB7CisgICAgICAgICAgICBhcHBlbmRQaXBlbGluZS0+
YXBwc2lua0VPUygpOworICAgICAgICB9KTsKKyAgICB9KSwgdGhpcyk7CiAKICAgICAvLyBBZGRf
bWFueSB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIGEgcmVmZXJlbmNlLiBUaGF0J3Mgd2h5IHdlIHVz
ZWQgYW4gYXNzaWdubWVudCBiZWZvcmUuCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1f
cGlwZWxpbmUuZ2V0KCkpLCBtX2FwcHNyYy5nZXQoKSwgbV9kZW11eC5nZXQoKSwgbnVsbHB0cik7
CkBAIC0yMTgsNiArMjIzLDggQEAgQXBwZW5kUGlwZWxpbmU6On5BcHBlbmRQaXBlbGluZSgpCiAg
ICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogCiAgICAgc2V0QXBwZW5kU3RhdGUoQXBw
ZW5kU3RhdGU6OkludmFsaWQpOworICAgIC8vIEZvcmdldCBhbGwgcGVuZGluZyB0YXNrcyBhbmQg
dW5ibG9jayB0aGUgc3RyZWFtaW5nIHRocmVhZCBpZiBpdCB3YXMgYmxvY2tlZC4KKyAgICBtX3Rh
c2tRdWV1ZS5zdGFydEFib3J0aW5nKCk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fcGFkQWRkUmVtb3ZlTG9jayk7CkBAIC0yMzEsNyArMjM4LDcgQEAgQXBwZW5kUGlwZWxp
bmU6On5BcHBlbmRQaXBlbGluZSgpCiAKICAgICBpZiAobV9waXBlbGluZSkgewogICAgICAgICBB
U1NFUlQobV9idXMpOwotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1
bmMobV9idXMuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KGFwcGVuZFBpcGVsaW5l
TmVlZENvbnRleHRNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fYnVzLmdldCgpLCB0aGlzKTsKICAgICAgICAgZ3N0
X2J1c19kaXNhYmxlX3N5bmNfbWVzc2FnZV9lbWlzc2lvbihtX2J1cy5nZXQoKSk7CiAgICAgICAg
IGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaChtX2J1cy5nZXQoKSk7CiAgICAgICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CkBAIC0y
ODYsMTAgKzI5MywxMCBAQCBHc3RQYWRQcm9iZVJldHVybiBBcHBlbmRQaXBlbGluZTo6YXBwc3Jj
RW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJvYmVJbmZvKgogICAgICAgICByZXR1cm4g
R1NUX1BBRF9QUk9CRV9PSzsKICAgICB9CiAKLSAgICBHU1RfVFJBQ0VfT0JKRUNUKG1fcGlwZWxp
bmUuZ2V0KCksICJwb3N0aW5nIGVuZC1vZi1hcHBlbmQgcmVxdWVzdCB0byBidXMiKTsKLSAgICBH
c3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5KCJlbmQtb2Yt
YXBwZW5kIik7Ci0gICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25ld19hcHBs
aWNhdGlvbihHU1RfT0JKRUNUKG1fYXBwc3JjLmdldCgpKSwgc3RydWN0dXJlKTsKLSAgICBnc3Rf
YnVzX3Bvc3QobV9idXMuZ2V0KCksIG1lc3NhZ2UpOworICAgIEdTVF9UUkFDRV9PQkpFQ1QobV9w
aXBlbGluZS5nZXQoKSwgIlBvc3RpbmcgZW5kLW9mLWFwcGVuZCB0YXNrIHRvIHRoZSBtYWluIHRo
cmVhZCIpOworICAgIG1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFt0aGlzXSgpIHsKKyAgICAg
ICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKKyAgICB9KTsKICAgICByZXR1cm4gR1NUX1BBRF9QUk9C
RV9EUk9QOwogfQogCkBAIC0zMjUsNDkgKzMzMiw2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6Omhh
bmRsZU5lZWRDb250ZXh0U3luY01lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAg
bV9wbGF5ZXJQcml2YXRlLT5oYW5kbGVTeW5jTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBB
cHBlbmRQaXBlbGluZTo6aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UpCi17Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotCi0gICAgY29uc3QgR3N0
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1lc3NhZ2Up
OwotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZGVtdXhlci1j
b25uZWN0LXRvLWFwcHNpbmsiKSkgewotICAgICAgICBHUmVmUHRyPEdzdFBhZD4gZGVtdXhlclNy
Y1BhZDsKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0dXJlLCAiZGVtdXhlci1zcmMt
cGFkIiwgR19UWVBFX09CSkVDVCwgJmRlbXV4ZXJTcmNQYWQub3V0UHRyKCksIG51bGxwdHIpOwot
ICAgICAgICBBU1NFUlQoZGVtdXhlclNyY1BhZCk7Ci0gICAgICAgIGNvbm5lY3REZW11eGVyU3Jj
UGFkVG9BcHBzaW5rKGRlbXV4ZXJTcmNQYWQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwc2luay1j
YXBzLWNoYW5nZWQiKSkgewotICAgICAgICBhcHBzaW5rQ2Fwc0NoYW5nZWQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVy
ZSwgImFwcHNpbmstbmV3LXNhbXBsZSIpKSB7Ci0gICAgICAgIG1fd2FzQnVzQWxyZWFkeU5vdGlm
aWVkT2ZBdmFpbGFibGVTYW1wbGVzLmNsZWFyKCk7Ci0gICAgICAgIGNvbnN1bWVBcHBzaW5rQXZh
aWxhYmxlU2FtcGxlcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdzdF9z
dHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwc2luay1lb3MiKSkgewotICAgICAgICBh
cHBzaW5rRU9TKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ3N0X3N0cnVj
dHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkZW11eGVyLW5vLW1vcmUtcGFkcyIpKSB7Ci0gICAg
ICAgIGRlbXV4ZXJOb01vcmVQYWRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJlbmQtb2YtYXBwZW5kIikpIHsK
LSAgICAgICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkZW11
eGVyTm9Nb3JlUGFkcygpCiB7CiAgICAgR1NUX1RSQUNFKCJjYWxsaW5nIGRpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQiKTsKQEAgLTgyMyw3ICs3ODcsNyBAQCBHc3RGbG93UmV0dXJuIEFw
cGVuZFBpcGVsaW5lOjpwdXNoTmV3QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHJldHVy
biBHU1RfRkxPV19PSzsKIH0KIAotR3N0Rmxvd1JldHVybiBBcHBlbmRQaXBlbGluZTo6aGFuZGxl
TmV3QXBwc2lua1NhbXBsZShHc3RFbGVtZW50KiBhcHBzaW5rKQorR3N0Rmxvd1JldHVybiBBcHBl
bmRQaXBlbGluZTo6aGFuZGxlQXBwc2lua05ld1NhbXBsZUZyb21BbnlUaHJlYWQoR3N0RWxlbWVu
dCopCiB7CiAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoJldURjo6
VGhyZWFkOjpjdXJyZW50KCkgIT0gbV9zdHJlYW1pbmdUaHJlYWQpIHsKQEAgLTg0MywxMCArODA3
LDExIEBAIEdzdEZsb3dSZXR1cm4gQXBwZW5kUGlwZWxpbmU6OmhhbmRsZU5ld0FwcHNpbmtTYW1w
bGUoR3N0RWxlbWVudCogYXBwc2luaykKICAgICB9CiAKICAgICBpZiAoIW1fd2FzQnVzQWxyZWFk
eU5vdGlmaWVkT2ZBdmFpbGFibGVTYW1wbGVzLnRlc3RfYW5kX3NldCgpKSB7Ci0gICAgICAgIEdz
dFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoImFwcHNpbmst
bmV3LXNhbXBsZSIpOwotICAgICAgICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2Vf
bmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpFQ1QoYXBwc2luayksIHN0cnVjdHVyZSk7Ci0gICAgICAg
IGdzdF9idXNfcG9zdChtX2J1cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgICAgIEdTVF9UUkFDRSgi
YXBwc2luay1uZXctc2FtcGxlIG1lc3NhZ2UgcG9zdGVkIHRvIGJ1cyIpOworICAgICAgICBHU1Rf
VFJBQ0UoIlBvc3RpbmcgYXBwc2luay1uZXctc2FtcGxlIHRhc2sgdG8gdGhlIG1haW4gdGhyZWFk
Iik7CisgICAgICAgIG1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFt0aGlzXSgpIHsKKyAgICAg
ICAgICAgIG1fd2FzQnVzQWxyZWFkeU5vdGlmaWVkT2ZBdmFpbGFibGVTYW1wbGVzLmNsZWFyKCk7
CisgICAgICAgICAgICBjb25zdW1lQXBwc2lua0F2YWlsYWJsZVNhbXBsZXMoKTsKKyAgICAgICAg
fSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwpAQCAtODg2LDYgKzg1MSw3IEBA
IGNyZWF0ZU9wdGlvbmFsUGFyc2VyRm9yRm9ybWF0KEdzdFBhZCogZGVtdXhlclNyY1BhZCkKIAog
dm9pZCBBcHBlbmRQaXBlbGluZTo6Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55
VGhyZWFkKEdzdFBhZCogZGVtdXhlclNyY1BhZCkKIHsKKyAgICBBU1NFUlQoIVdURjo6aXNNYWlu
VGhyZWFkKCkpOwogICAgIGlmICghbV9hcHBzaW5rKQogICAgICAgICByZXR1cm47CiAKQEAgLTkx
MCwyMyArODc2LDE0IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmNvbm5lY3REZW11eGVyU3JjUGFk
VG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqIGRlbXV4ZXJTCiAgICAgZWxzZQogICAgICAg
ICBtX2luaXRpYWxEdXJhdGlvbiA9IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsK
IAotICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgpKQorICAgIEdTVF9ERUJVRygiUmVxdWVzdGlu
ZyBkZW11eGVyLWNvbm5lY3QtdG8tYXBwc2luayB0byBtYWluIHRocmVhZCIpOworICAgIGF1dG8g
cmVzcG9uc2UgPSBtX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseTxBYm9y
dGFibGVUYXNrUXVldWU6OkR1bW15UmVzcG9uc2U+KFt0aGlzLCBkZW11eGVyU3JjUGFkXSgpIHsK
ICAgICAgICAgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmsoZGVtdXhlclNyY1BhZCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIC8vIENhbGwgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmso
KSBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIHdhaXQuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fcGFkQWRkUmVtb3ZlTG9jayk7Ci0gICAgICAgIGlmICghbV9wbGF5ZXJQcml2YXRlKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X3N0cnVjdHVyZV9uZXcoImRlbXV4ZXItY29ubmVjdC10by1hcHBzaW5rIiwgImRlbXV4ZXItc3Jj
LXBhZCIsIEdfVFlQRV9PQkpFQ1QsIGRlbXV4ZXJTcmNQYWQsIG51bGxwdHIpOwotICAgICAgICBH
c3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpF
Q1QobV9kZW11eC5nZXQoKSksIHN0cnVjdHVyZSk7Ci0gICAgICAgIGdzdF9idXNfcG9zdChtX2J1
cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgICAgIEdTVF9UUkFDRSgiZGVtdXhlci1jb25uZWN0LXRv
LWFwcHNpbmsgbWVzc2FnZSBwb3N0ZWQgdG8gYnVzIik7Ci0KLSAgICAgICAgbV9wYWRBZGRSZW1v
dmVDb25kaXRpb24ud2FpdChtX3BhZEFkZFJlbW92ZUxvY2spOwotCi0gICAgICAgIGlmICghbV9w
bGF5ZXJQcml2YXRlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQWJvcnRh
YmxlVGFza1F1ZXVlOjpEdW1teVJlc3BvbnNlKCk7CisgICAgfSk7CisgICAgaWYgKCFyZXNwb25z
ZS5oYXNfdmFsdWUoKSkgeworICAgICAgICAvLyBUaGUgQXBwZW5kUGlwZWxpbmUgaGFzIGJlZW4g
ZGVzdHJveWVkIG9yIGFib3J0ZWQgYmVmb3JlIHdlIHJlY2VpdmVkIGEgcmVzcG9uc2UuCisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBNdXN0IGJlIGRvbmUgaW4gdGhlIHRocmVhZCB3
ZSB3ZXJlIGNhbGxlZCBmcm9tICh1c3VhbGx5IHN0cmVhbWluZyB0aHJlYWQpLgpAQCAtMTA1NCwy
MyArMTAxMSw2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpc2Nvbm5lY3REZW11eGVyU3JjUGFk
RnJvbUFwcHNpbmtGcm9tQW55VGhyZWFkKEdzdFBhZCopCiAgICAgR1NUX0RFQlVHX0JJTl9UT19E
T1RfRklMRV9XSVRIX1RTKEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQ
SF9TSE9XX0FMTCwgInBhZC1yZW1vdmVkLWFmdGVyIik7CiB9CiAKLXZvaWQgQXBwZW5kUGlwZWxp
bmU6OmFwcGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkKCkKLXsKLSAg
ICBHU1RfVFJBQ0UoImFwcGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFk
Iik7Ci0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0
eSgiZGVtdXhlci1uby1tb3JlLXBhZHMiKTsKLSAgICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0
X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpFQ1QobV9hcHBzcmMuZ2V0KCkpLCBzdHJ1
Y3R1cmUpOwotICAgIGdzdF9idXNfcG9zdChtX2J1cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgR1NU
X1RSQUNFKCJhcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzRnJvbUFueVRocmVhZCAtIHBv
c3RlZCB0byBidXMiKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVBcHBzaW5rQ2Fw
c0NoYW5nZWQoR09iamVjdCogYXBwc2lua1BhZCwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5l
KiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9z
dHJ1Y3R1cmVfbmV3X2VtcHR5KCJhcHBzaW5rLWNhcHMtY2hhbmdlZCIpOwotICAgIEdzdE1lc3Nh
Z2UqIG1lc3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdfYXBwbGljYXRpb24oR1NUX09CSkVDVChhcHBz
aW5rUGFkKSwgc3RydWN0dXJlKTsKLSAgICBnc3RfYnVzX3Bvc3QoYXBwZW5kUGlwZWxpbmUtPmJ1
cygpLCBtZXNzYWdlKTsKLSAgICBHU1RfVFJBQ0UoImFwcHNpbmstY2Fwcy1jaGFuZ2VkIG1lc3Nh
Z2UgcG9zdGVkIHRvIGJ1cyIpOwotfQotCiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIEdzdFBh
ZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0luZm9ybWF0aW9uKEdzdFBh
ZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24qIHBh
ZFByb2JlSW5mb3JtYXRpb24pCiB7CkBAIC0xMTEwLDQwICsxMDUwLDYgQEAgc3RhdGljIEdzdFBh
ZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lRGVtdXhlckJsYWNrSG9sZVBhZFByb2JlKEdzdFBh
ZCosIEdzdFBhZFAKICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOwogfQogCi1zdGF0aWMg
dm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRBZGRlZChHc3RFbGVtZW50KiwgR3N0UGFkKiBk
ZW11eGVyU3JjUGFkLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBw
ZW5kUGlwZWxpbmUtPmNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChk
ZW11eGVyU3JjUGFkKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFk
UmVtb3ZlZChHc3RFbGVtZW50KiwgR3N0UGFkKiBkZW11eGVyU3JjUGFkLCBBcHBlbmRQaXBlbGlu
ZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmRpc2Nvbm5lY3REZW11
eGVyU3JjUGFkRnJvbUFwcHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJTcmNQYWQpOwotfQotCi1z
dGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzKEdzdEVsZW1lbnQqLCBB
cHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmFw
cGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkKCk7Ci19Ci0KLXN0YXRp
YyBHc3RGbG93UmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua05ld1NhbXBsZShHc3RFbGVtZW50
KiBhcHBzaW5rLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgcmV0dXJu
IGFwcGVuZFBpcGVsaW5lLT5oYW5kbGVOZXdBcHBzaW5rU2FtcGxlKGFwcHNpbmspOwotfQotCi1z
dGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtFT1MoR3N0RWxlbWVudCosIEFwcGVuZFBp
cGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBpZiAoV1RGOjppc01haW5UaHJlYWQoKSkK
LSAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmFwcHNpbmtFT1MoKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSgiYXBw
c2luay1lb3MiKTsKLSAgICAgICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25l
d19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKGFwcGVuZFBpcGVsaW5lLT5hcHBzaW5rKCkpLCBzdHJ1
Y3R1cmUpOwotICAgICAgICBnc3RfYnVzX3Bvc3QoYXBwZW5kUGlwZWxpbmUtPmJ1cygpLCBtZXNz
YWdlKTsKLSAgICAgICAgR1NUX1RSQUNFKCJhcHBzaW5rLWVvcyBtZXNzYWdlIHBvc3RlZCB0byBi
dXMiKTsKLSAgICB9Ci0KLSAgICBHU1RfREVCVUcoIiVzIG1haW4gdGhyZWFkIiwgKFdURjo6aXNN
YWluVGhyZWFkKCkpID8gIklzIiA6ICJOb3QiKTsKLX0KLQogc3RhdGljIEdzdFBhZFByb2JlUmV0
dXJuIG1hdHJvc2thZGVtdXhGb3JjZVNlZ21lbnRTdGFydFRvRXF1YWxaZXJvKEdzdFBhZCosIEdz
dFBhZFByb2JlSW5mbyogaW5mbywgdm9pZCopCiB7CiAgICAgLy8gbWF0cm9za2FkZW11eCBzZXRz
IEdzdFNlZ21lbnQuc3RhcnQgdG8gdGhlIFBUUyBvZiB0aGUgZmlyc3QgZnJhbWUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL0FwcGVuZFBpcGVsaW5lLmgKaW5kZXggZGE0Zjc1ZWVjM2FjNjg2NzJlN2RjNTM0ODg3YWU4
NDdmNzhhMjdmNy4uN2YwYzFhMWRjZjZkODY1MjVjNDIzNjFmYTk1ZDliYmMwMDczMWRkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9B
cHBlbmRQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisj
aW5jbHVkZSAiQWJvcnRhYmxlVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9u
LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaCIKQEAgLTQ1LDIxICs0NiwyNyBAQCBz
dHJ1Y3QgUGFkUHJvYmVJbmZvcm1hdGlvbiB7CiAKIGNsYXNzIEFwcGVuZFBpcGVsaW5lIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFwcGVuZFBpcGVsaW5lPiB7CiBwdWJsaWM6Ci0gICAg
ZW51bSBjbGFzcyBBcHBlbmRTdGF0ZSB7IEludmFsaWQsIE5vdFN0YXJ0ZWQsIE9uZ29pbmcsIERh
dGFTdGFydmUsIFNhbXBsaW5nLCBMYXN0U2FtcGxlLCBBYm9ydGluZyB9OwotCiAgICAgQXBwZW5k
UGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiwgUmVmPFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UmKTsK
ICAgICB2aXJ0dWFsIH5BcHBlbmRQaXBlbGluZSgpOwogCisgICAgR3N0Rmxvd1JldHVybiBwdXNo
TmV3QnVmZmVyKEdzdEJ1ZmZlciopOworICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7Cisg
ICAgdm9pZCBhYm9ydCgpOworICAgIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBz
b3VyY2VCdWZmZXJQcml2YXRlKCkgeyByZXR1cm4gbV9zb3VyY2VCdWZmZXJQcml2YXRlLmdldCgp
OyB9CisgICAgR3N0Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVybiBtX2FwcHNpbmtDYXBzLmdl
dCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrKCkgeyBy
ZXR1cm4gbV90cmFjazsgfQorCitwcml2YXRlOgorICAgIGVudW0gY2xhc3MgQXBwZW5kU3RhdGUg
eyBJbnZhbGlkLCBOb3RTdGFydGVkLCBPbmdvaW5nLCBEYXRhU3RhcnZlLCBTYW1wbGluZywgTGFz
dFNhbXBsZSwgQWJvcnRpbmcgfTsKKwogICAgIHZvaWQgaGFuZGxlTmVlZENvbnRleHRTeW5jTWVz
c2FnZShHc3RNZXNzYWdlKik7Ci0gICAgdm9pZCBoYW5kbGVBcHBsaWNhdGlvbk1lc3NhZ2UoR3N0
TWVzc2FnZSopOwogICAgIHZvaWQgaGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKEdzdE1lc3NhZ2Uq
KTsKIAogICAgIGdpbnQgaWQoKTsKICAgICBBcHBlbmRTdGF0ZSBhcHBlbmRTdGF0ZSgpIHsgcmV0
dXJuIG1fYXBwZW5kU3RhdGU7IH0KICAgICB2b2lkIHNldEFwcGVuZFN0YXRlKEFwcGVuZFN0YXRl
KTsKIAotICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlTmV3QXBwc2lua1NhbXBsZShHc3RFbGVtZW50
Kik7Ci0gICAgR3N0Rmxvd1JldHVybiBwdXNoTmV3QnVmZmVyKEdzdEJ1ZmZlciopOworICAgIEdz
dEZsb3dSZXR1cm4gaGFuZGxlQXBwc2lua05ld1NhbXBsZUZyb21BbnlUaHJlYWQoR3N0RWxlbWVu
dCopOwogCiAgICAgLy8gVGFrZXMgb3duZXJzaGlwIG9mIGNhcHMuCiAgICAgdm9pZCBwYXJzZURl
bXV4ZXJTcmNQYWRDYXBzKEdzdENhcHMqKTsKQEAgLTY5LDE4ICs3NiwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBoYW5kbGVFbmRPZkFwcGVuZCgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudCgpOwogICAgIEF0b21pY1N0cmluZyB0cmFja0lkKCk7Ci0gICAgdm9pZCBh
Ym9ydCgpOwogCi0gICAgdm9pZCBjbGVhclBsYXllclByaXZhdGUoKTsKLSAgICBSZWY8U291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZSgpIHsgcmV0dXJuIG1f
c291cmNlQnVmZmVyUHJpdmF0ZS5nZXQoKTsgfQogICAgIEdzdEJ1cyogYnVzKCkgeyByZXR1cm4g
bV9idXMuZ2V0KCk7IH0KICAgICBHc3RFbGVtZW50KiBwaXBlbGluZSgpIHsgcmV0dXJuIG1fcGlw
ZWxpbmUuZ2V0KCk7IH0KICAgICBHc3RFbGVtZW50KiBhcHBzcmMoKSB7IHJldHVybiBtX2FwcHNy
Yy5nZXQoKTsgfQogICAgIEdzdEVsZW1lbnQqIGFwcHNpbmsoKSB7IHJldHVybiBtX2FwcHNpbmsu
Z2V0KCk7IH0KICAgICBHc3RDYXBzKiBkZW11eGVyU3JjUGFkQ2FwcygpIHsgcmV0dXJuIG1fZGVt
dXhlclNyY1BhZENhcHMuZ2V0KCk7IH0KLSAgICBHc3RDYXBzKiBhcHBzaW5rQ2FwcygpIHsgcmV0
dXJuIG1fYXBwc2lua0NhcHMuZ2V0KCk7IH0KICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UqIHBsYXllclByaXZhdGUoKSB7IHJldHVybiBtX3BsYXllclByaXZhdGU7IH0KLSAgICBS
ZWZQdHI8V2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZT4gdHJhY2soKSB7IHJldHVybiBtX3RyYWNr
OyB9CiAgICAgV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyIHN0cmVhbVR5
cGUoKSB7IHJldHVybiBtX3N0cmVhbVR5cGU7IH0KIAogICAgIHZvaWQgZGlzY29ubmVjdERlbXV4
ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlUaHJlYWQoR3N0UGFkKik7CkBAIC04OCw3ICs5MCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFu
eVRocmVhZChHc3RQYWQqKTsKICAgICB2b2lkIGNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5r
KEdzdFBhZCopOwogCi1wcml2YXRlOgogICAgIHZvaWQgcmVzZXRQaXBlbGluZSgpOwogICAgIHZv
aWQgY2hlY2tFbmRPZkFwcGVuZCgpOwogICAgIHZvaWQgZGVtdXhlck5vTW9yZVBhZHMoKTsKQEAg
LTk4LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBHc3RQYWRQcm9iZVJldHVybiBhcHBzcmNFbmRP
ZkFwcGVuZENoZWNrZXJQcm9iZShHc3RQYWRQcm9iZUluZm8qKTsKIAogICAgIHN0YXRpYyB2b2lk
IHN0YXRpY0luaXRpYWxpemF0aW9uKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGR1bXBBcHBl
bmRTdGF0ZShBcHBlbmRQaXBlbGluZTo6QXBwZW5kU3RhdGUpOwogCiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIHNfc3RhdGljSW5pdGlhbGl6YXRpb25GbGFnOwogICAgIHN0YXRpYyBHVHlwZSBz
X2VuZE9mQXBwZW5kTWV0YVR5cGU7CkBAIC0xNTgsNiArMTYwLDggQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXIgbV9zdHJlYW1UeXBlOwogICAg
IFJlZlB0cjxXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlPiBtX3RyYWNrOwogCisgICAgQWJvcnRh
YmxlVGFza1F1ZXVlIG1fdGFza1F1ZXVlOworCiAgICAgR1JlZlB0cjxHc3RCdWZmZXI+IG1fcGVu
ZGluZ0J1ZmZlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA4YWQxN2JmMjVmNDNmNzZmNjFlMDY0NzM0NWZkNTI1YWVlMGMxNjYwLi45
YzNhMmIxZTQzZmYwNmY3ZTMzZGI3MDllNmIyMzUzMTkxNWI4MTJjIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgt
MTAtMjUgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtNU0VdW0dTdHJlYW1lcl0gSW50cm9kdWNlIEFib3J0YWJsZVRhc2tRdWV1ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTAyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIEFib3J0YWJs
ZVRhc2tRdWV1ZSBhcmUgaW5jbHVkZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RmFuY3lSZXNwb25zZTo6RmFuY3lS
ZXNwb25zZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGYW5jeVJlc3BvbnNlOjpvcGVyYXRv
cj0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjo6RGV0
ZXJtaW5pc3RpY1NjaGVkdWxlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXRlcm1pbmlz
dGljU2NoZWR1bGVyOjpUaHJlYWRDb250ZXh0OjpUaHJlYWRDb250ZXh0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkRldGVybWluaXN0aWNTY2hlZHVsZXI6OlRocmVhZENvbnRleHQ6OndhaXRN
eVR1cm4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjo6
VGhyZWFkQ29udGV4dDo6eWllbGRUb1RocmVhZCk6CisKIDIwMTgtMTAtMjQgIEFsaWNpYSBCb3lh
IEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNU0VdW1dURl1bTWVkaWFd
IEludmFsaWQgTWVkaWFUaW1lIHNob3VsZCBiZSBmYWxzeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1HVEsuY21ha2UKaW5kZXggYjBlMjY4ZWYyNmViYzhmOGM1OWNmMWU1NGJhYmZjOTk0ZmFjOWJm
NC4uNjRjYTQwMDY2Yjg2ZmFhMWQxODJkNzM5Nzc5OTI0YzgxMWNjZDQ4NCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMDQsNiArMTA0LDcgQEAgYWRkX2V4ZWN1dGFi
bGUoVGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1VS
TFBhcnNlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1VzZXJB
Z2VudFF1aXJrcy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1Nh
bXBsZU1hcC5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0Fib3J0
YWJsZVRhc2tRdWV1ZS5jcHAKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKFRlc3RXZWJDb3Jl
ICR7dGVzdF93ZWJjb3JlX0xJQlJBUklFU30pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ5
ODJmNGZjOWIxMzg2OTA1ZWQ2OWUwZWM3MzBkY2Q4NTczNDY2OGYuLjI4YWM4ZWFiZWI3YzIwODhh
M2IwYmJlNzNiYWQzOWNmOTY1ODc2ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODcs
NiArNDg3LDcgQEAKIAkJN0NDRTdFREIxQTQxMUE5MjAwNDQ3QzRDIC8qIENTU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0NTFFOTE5
RTQxRjlEMDAxNjkzNkYgLyogQ1NTUGFyc2VyLmNwcCAqLzsgfTsKIAkJN0NDRTdFREMxQTQxMUE5
MjAwNDQ3QzRDIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBNzIwRTUxOEYxQTBFODAwQTg0OEUxIC8qIENhbGN1
bGF0aW9uVmFsdWUuY3BwICovOyB9OwogCQk3Q0NFN0VERDFBNDExQTkyMDA0NDdDNEMgLyogVGlt
ZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREMyQzcxNDE3OTcwODlEMDBFNjI3RkIgLyogVGltZVJhbmdlcy5jcHAgKi87IH07CisJCUNE
NTFDMkE5M0U3OEI1QzFGRjMzN0MwOCAvKiBBYm9ydGFibGVUYXNrUXVldWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGNTEwNjMyQTE5QjhBQzdF
QzQwRTE3IC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5jcHAgKi87IH07CiAJCTdDQ0U3RURFMUE0MTFB
OTIwMDQ0N0M0QyAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8qIFVSTC5jcHAgKi87IH07CiAJ
CTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBMYXlvdXRVbml0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDY0MDEyMTY3QTgzMDUwMDBCRDIx
OCAvKiBMYXlvdXRVbml0LmNwcCAqLzsgfTsKIAkJN0NDRTdFRTAxQTQxMUE5QTAwNDQ3QzRDIC8q
IEVkaXRvckNvbW1hbmRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNBQTQ4NTcxNEEwNDRENDAwODhGQUM0IC8qIEVkaXRvckNvbW1hbmRzLm1tICov
OyB9OwpAQCAtMTk4NSw2ICsxOTg2LDcgQEAKIAkJQ0RCRkNDNDIxQTlGRjQ0ODAwQTdCNjkxIC8q
IEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREJGQ0M0MzFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0
aWFsRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGdWxs
c2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RDMkM3MTQxNzk3MDg5RDAwRTYyN0ZCIC8qIFRpbWVSYW5nZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGltZVJhbmdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFCRjUx
MDYzMkExOUI4QUM3RUM0MEUxNyAvKiBBYm9ydGFibGVUYXNrUXVldWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQWJvcnRhYmxlVGFza1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RDOEU0ODUxQkM1QjE5NDAwNTk0RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TZXNzaW9u
Q2F0ZWdvcnlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzhFNDg5MUJD
NUM5NjIwMDU5NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAidmlkZW8td2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RDOEU0OEExQkM1Qzk2MjAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8ubXA0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsg
cGF0aCA9ICJ2aWRlby13aXRoLWF1ZGlvLm1wNCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNTIxLDYgKzI1MjMsNyBAQAogCQkJCUNEODlEMDM3MUM0RURCMTMwMDA0MEEwNCAvKiBj
b2NvYSAqLywKIAkJCQlBMUVDMTE4NTFGNDI1M0Q5MDBEMDE0NkUgLyogaW9zICovLAogCQkJCTMx
NjJBRTlBMUU2RjJGOEYwMDBFNERCQyAvKiBtYWMgKi8sCisJCQkJQUJGNTEwNjMyQTE5QjhBQzdF
QzQwRTE3IC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5jcHAgKi8sCiAJCQkJN0E5MDlBNkYxRDg3NzQ3
NTAwN0UxMEY4IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgKi8sCiAJCQkJNjM1NEY0RDAxRjdDM0FC
NTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovLAogCQkJCTkzQTcy
MEU1MThGMUEwRTgwMEE4NDhFMSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTRkZTI0NWFhMThhNGNhYTdiZGJjYjQzOTJhMTM3Njg5NjJlMDM2
ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9B
Ym9ydGFibGVUYXNrUXVldWUuY3BwCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxBYm9ydGFibGVUYXNrUXVldWUuaD4KKyNp
bmNsdWRlIDxVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx0aHJlYWQ+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoQWJvcnRhYmxl
VGFza1F1ZXVlLCBBc3luY1Rhc2tzKQoreworICAgIEFib3J0YWJsZVRhc2tRdWV1ZSB0YXNrUXVl
dWU7CisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKyAgICBpbnQgY3VycmVudFN0ZXAg
PSAwOworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgYXV0byBi
YWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24gPSBbJnRlc3RGaW5pc2hlZCwgJnRhc2tRdWV1ZSwgJmN1
cnJlbnRTdGVwXSgpIHsKKyAgICAgICAgdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFsmY3VycmVu
dFN0ZXBdKCkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjppc01haW5UaHJlYWQoKSk7
CisgICAgICAgICAgICBjdXJyZW50U3RlcCsrOworICAgICAgICAgICAgRVhQRUNUX0VRKDEsIGN1
cnJlbnRTdGVwKTsKKyAgICAgICAgfSk7CisgICAgICAgIHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFz
ayhbJnRlc3RGaW5pc2hlZCwgJmN1cnJlbnRTdGVwXSgpIHsKKyAgICAgICAgICAgIGdfYXNzZXJ0
KFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgY3VycmVudFN0ZXArKzsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7CisgICAgICAgICAgICB0ZXN0RmluaXNo
ZWQgPSB0cnVlOworICAgICAgICB9KTsKKyAgICB9OworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbJmJhY2tncm91bmRUaHJlYWRGdW5jdGlvbl0oKSB7CisgICAgICAgIHN0ZDo6dGhy
ZWFkKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbikuZGV0YWNoKCk7CisgICAgfSk7CisKKyAgICBV
dGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK3N0cnVjdCBGYW5jeVJlc3BvbnNlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShGYW5jeVJlc3BvbnNlKTsKK3B1YmxpYzoKKyAgICBGYW5j
eVJlc3BvbnNlKGludCBmYW5jeUludCkKKyAgICAgICAgOiBmYW5jeUludChmYW5jeUludCkKKyAg
ICB7IH0KKworICAgIEZhbmN5UmVzcG9uc2UoRmFuY3lSZXNwb25zZSYmIGEpCisgICAgICAgIDog
ZmFuY3lJbnQoYS5mYW5jeUludCkKKyAgICB7IH0KKworICAgIEZhbmN5UmVzcG9uc2UmIG9wZXJh
dG9yPShGYW5jeVJlc3BvbnNlJiYgYSkKKyAgICB7CisgICAgICAgIHRoaXMtPmZhbmN5SW50ID0g
YS5mYW5jeUludDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGludCBmYW5j
eUludDsKK307CisKK1RFU1QoQWJvcnRhYmxlVGFza1F1ZXVlLCBTeW5jVGFza3MpCit7CisgICAg
QWJvcnRhYmxlVGFza1F1ZXVlIHRhc2tRdWV1ZTsKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZh
bHNlOworICAgIGludCBjdXJyZW50U3RlcCA9IDA7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7CisKKyAgICBhdXRvIGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbiA9IFsmdGVz
dEZpbmlzaGVkLCAmdGFza1F1ZXVlLCAmY3VycmVudFN0ZXBdKCkgeworICAgICAgICBFWFBFQ1Rf
RkFMU0UoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFuY3lS
ZXNwb25zZT4gcmVwbHkgPSB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHk8
RmFuY3lSZXNwb25zZT4oWyZjdXJyZW50U3RlcCwgJnRlc3RGaW5pc2hlZF0oKSAtPiBGYW5jeVJl
c3BvbnNlIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFdURjo6aXNNYWluVGhyZWFkKCkpOwor
ICAgICAgICAgICAgY3VycmVudFN0ZXArKzsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgxLCBjdXJy
ZW50U3RlcCk7CisgICAgICAgICAgICBGYW5jeVJlc3BvbnNlIHJldCgxMDApOworICAgICAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICAgICAgfSk7CisgICAgICAgIGN1cnJlbnRTdGVwKys7CisgICAg
ICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHJlcGx5
Lmhhc192YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDEwMCwgcmVwbHktPmZhbmN5SW50KTsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFsmdGVzdEZpbmlzaGVkXSgpIHsKKyAg
ICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgIH07CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsmYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uXSgp
IHsKKyAgICAgICAgc3RkOjp0aHJlYWQoYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uKS5kZXRhY2go
KTsKKyAgICB9KTsKKworICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFRocmVhZEVudW0+CitjbGFzcyBEZXRlcm1pbmlzdGljU2NoZWR1bGVyIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXRlcm1pbmlzdGljU2NoZWR1bGVyKTsKK3B1Ymxp
YzoKKyAgICBEZXRlcm1pbmlzdGljU2NoZWR1bGVyKFRocmVhZEVudW0gZmlyc3RUaHJlYWQpCisg
ICAgICAgIDogbV9jdXJyZW50VGhyZWFkKGZpcnN0VGhyZWFkKQorICAgIHsgfQorCisgICAgY2xh
c3MgVGhyZWFkQ29udGV4dCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZENv
bnRleHQpOworICAgIHB1YmxpYzoKKyAgICAgICAgVGhyZWFkQ29udGV4dChEZXRlcm1pbmlzdGlj
U2NoZWR1bGVyJiBzY2hlZHVsZXIsIFRocmVhZEVudW0gdGhpc1RocmVhZCkKKyAgICAgICAgICAg
IDogbV9zY2hlZHVsZXIoc2NoZWR1bGVyKSwgbV90aGlzVGhyZWFkKHRoaXNUaHJlYWQpCisgICAg
ICAgIHsgfQorCisgICAgICAgIHZvaWQgd2FpdE15VHVybigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxlci5tX211dGV4KTsKKyAgICAgICAgICAgIG1f
c2NoZWR1bGVyLm1fY3VycmVudFRocmVhZENoYW5nZWQud2FpdChtX3NjaGVkdWxlci5tX211dGV4
LCBbdGhpc10oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVyLm1fY3VycmVu
dFRocmVhZCA9PSBtX3RoaXNUaHJlYWQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZvaWQgeWllbGRUb1RocmVhZChUaHJlYWRFbnVtIG5leHRUaHJlYWQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxlci5tX211dGV4KTsKKyAg
ICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZCA9IG5leHRUaHJlYWQ7CisgICAg
ICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWRDaGFuZ2VkLm5vdGlmeUFsbCgpOwor
ICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBEZXRlcm1pbmlzdGljU2NoZWR1bGVy
JiBtX3NjaGVkdWxlcjsKKyAgICAgICAgVGhyZWFkRW51bSBtX3RoaXNUaHJlYWQ7CisgICAgfTsK
KworCitwcml2YXRlOgorICAgIFRocmVhZEVudW0gbV9jdXJyZW50VGhyZWFkOworICAgIENvbmRp
dGlvbiBtX2N1cnJlbnRUaHJlYWRDaGFuZ2VkOworICAgIExvY2sgbV9tdXRleDsKK307CisKK2Vu
dW0gY2xhc3MgVGVzdFRocmVhZCB7CisgICAgTWFpbiwKKyAgICBCYWNrZ3JvdW5kCit9OworCitU
RVNUKEFib3J0YWJsZVRhc2tRdWV1ZSwgQWJvcnQpCit7CisgICAgRGV0ZXJtaW5pc3RpY1NjaGVk
dWxlcjxUZXN0VGhyZWFkPiBzY2hlZHVsZXIoVGVzdFRocmVhZDo6QmFja2dyb3VuZCk7CisKKyAg
ICBBYm9ydGFibGVUYXNrUXVldWUgdGFza1F1ZXVlOworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0g
ZmFsc2U7CisgICAgaW50IGN1cnJlbnRTdGVwID0gMDsKKyAgICBSdW5Mb29wOjppbml0aWFsaXpl
TWFpblJ1bkxvb3AoKTsKKworICAgIGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZz
Y2hlZHVsZXIsICZ0ZXN0RmluaXNoZWQsICZ0YXNrUXVldWUsICZjdXJyZW50U3RlcF0oKSB7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgRGV0ZXJt
aW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPjo6VGhyZWFkQ29udGV4dCBiYWNrZ3JvdW5kVGhy
ZWFkQ29udGV4dChzY2hlZHVsZXIsIFRlc3RUaHJlYWQ6OkJhY2tncm91bmQpOworCisgICAgICAg
IHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbXSgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgdGFz
ayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHJ1biB1bmRlciB0aGUgc2NoZWR1bGluZyBv
ZiB0aGlzIHRlc3QuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgICAgIH0p
OworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJl
YWQ6Ok1haW4pOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dC53YWl0TXlUdXJuKCk7
CisKKyAgICAgICAgLy8gTWFpbiB0aHJlYWQgaGFzIGNhbGxlZCBzdGFydEFib3J0aW5nKCkKKwor
ICAgICAgICB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2soW10oKSB7CisgICAgICAgICAgICAvLyBU
aGlzIHRhc2sgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBydW4gdW5kZXIgdGhlIHNjaGVk
dWxpbmcgb2YgdGhpcyB0ZXN0LgorICAgICAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAg
ICAgICB9KTsKKyAgICAgICAgLy8gVGhpcyBjYWxsIG11c3QgcmV0dXJuIGltbWVkaWF0ZWx5IGJl
Y2F1c2Ugd2UgYXJlIGFib3J0aW5nCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25z
ZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHk8RmFu
Y3lSZXNwb25zZT4oW10oKSAtPiBGYW5jeVJlc3BvbnNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMg
dGFzayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHJ1biB1bmRlciB0aGUgc2NoZWR1bGlu
ZyBvZiB0aGlzIHRlc3QuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgICAg
ICAgICByZXR1cm4gRmFuY3lSZXNwb25zZSgxMDApOworICAgICAgICB9KTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKHJlc3BvbnNlLmhhc192YWx1ZSgpKTsKKyAgICAgICAgYmFja2dyb3VuZFRocmVh
ZENvbnRleHQueWllbGRUb1RocmVhZChUZXN0VGhyZWFkOjpNYWluKTsKKyAgICAgICAgYmFja2dy
b3VuZFRocmVhZENvbnRleHQud2FpdE15VHVybigpOworCisgICAgICAgIC8vIE1haW4gdGhyZWFk
IGhhcyBjYWxsZWQgc3RvcEFib3J0aW5nKCkKKworICAgICAgICB0YXNrUXVldWUudHJ5RW5xdWV1
ZVRhc2soWyZ0ZXN0RmluaXNoZWRdKCkgeworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1
ZTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
WyZzY2hlZHVsZXIsICZiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24sICZ0YXNrUXVldWVdKCkgewor
ICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgRGV0ZXJt
aW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPjo6VGhyZWFkQ29udGV4dCBtYWluVGhyZWFkQ29u
dGV4dChzY2hlZHVsZXIsIFRlc3RUaHJlYWQ6Ok1haW4pOworICAgICAgICBzdGQ6OnRocmVhZChi
YWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24pLmRldGFjaCgpOworCisgICAgICAgIG1haW5UaHJlYWRD
b250ZXh0LndhaXRNeVR1cm4oKTsKKworICAgICAgICB0YXNrUXVldWUuc3RhcnRBYm9ydGluZygp
OworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6OkJh
Y2tncm91bmQpOworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC53YWl0TXlUdXJuKCk7CisKKyAg
ICAgICAgdGFza1F1ZXVlLnN0b3BBYm9ydGluZygpOworICAgICAgICBtYWluVGhyZWFkQ29udGV4
dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6OkJhY2tncm91bmQpOworICAgIH0pOworCisgICAg
VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353136</attachid>
            <date>2018-10-25 18:22:13 -0700</date>
            <delta_ts>2018-11-10 15:16:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190902-20181026022210.patch</filename>
            <type>text/plain</type>
            <size>46198</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc4ODcxZDczYzRhM2My
N2JjOWExYzE5M2RiN2MzZmM3NGI2OGNiNC4uOWNjZjM1YjAyOTlhNDRmY2FmODUxMjM3Yzc1NmJj
NmNiYjM0YzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTI1ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXVtHU3Ry
ZWFtZXJdIEludHJvZHVjZSBBYm9ydGFibGVUYXNrUXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IHN5bmNocm9uaXphdGlvbiBwcmltaXRp
dmUgaXMgaW50cm9kdWNlZDogQWJvcnRhYmxlVGFza1F1ZXVlLAorICAgICAgICB3aGljaCBhbGxv
d3MgdG8gc2VuZCB3b3JrIHRvIHRoZSBtYWluIHRocmVhZCBmcm9tIGEgYmFja2dyb3VuZCB0aHJl
YWQKKyAgICAgICAgd2l0aCB0aGUgb3B0aW9uIHRvIHBlcmZvcm0gdHdvLXBoYXNlIGNhbmNlbGxh
dGlvbi4KKworICAgICAgICBUaGlzIG5ldyBwcmltaXRpdmUgaGFzIGJlZW4gdXNlZCB0byBvdmVy
aGF1bCBHc3RCdXMgbWVzc2FnaW5nIGluCisgICAgICAgIEFwcGVuZFBpcGVsaW5lLiBBIGxvdCBv
ZiBjb2RlIG1hZGUgcmVkdW5kYW50IGhhcyBiZWVuIGRlbGV0ZWQgaW4gdGhlCisgICAgICAgIHBy
b2Nlc3MgYW5kIGxvdHMgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHdlcmUgbm93IGFibGUgdG8gYmUg
bWFkZQorICAgICAgICBwcml2YXRlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpkdW1wQXBwZW5k
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OmFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tl
clByb2JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpoYW5kbGVBcHBzaW5r
TmV3U2FtcGxlRnJvbUFueVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGlu
ZTo6Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmg6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6c291cmNlQnVmZmVyUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6YXBwc2lua0NhcHMpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwZW5kUGlwZWxpbmU6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBp
cGVsaW5lOjpkZW11eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBl
bGluZTo6cGxheWVyUHJpdmF0ZSk6CisKIDIwMTgtMDktMjggIEFsaWNpYSBCb3lhIEdhcmPDrWEg
IDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNU0VdIFVzZSB0b2xlcmFuY2Ugd2hlbiBn
cm93aW5nIHRoZSBjb2RlZCBmcmFtZSBncm91cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0MTEwNmY2OWY2Y2Y1Y2JhY2JlYTQ2
ODc5ZGFhYjFlMDQzODQzZWYuLjA5ZjEyMjE3MmVjNzYxZmU0OTEyYjhjMzkyOTdmMTBhYjIyM2Q4
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyNDIsNiArMTI0Miw3IEBACiAJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAv
KiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCOTUxOTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4
RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCQ0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpT
UmVtb3RlRE9NV2luZG93QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QzM3NjYyMjA4NTE3N0QwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdp
bmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
Mzc2NjEyMDg1MTc2RDAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggKi87IH07CisJCUNE
NUYzRUREOUQzMzNDNDBBOUEzOEE1NCAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGREI5MTJDRjhFODhBNkRBMUFE
MjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9u
aXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
Njk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5Mzcg
LyogQ1BVTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07
CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5
QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTc2ODUsNiArNzY4Niw3IEBACiAJCTQ2QkNCQkMzMjA4NTAwQTcwMDcx
MDYzOCAvKiBSZW1vdGVET01XaW5kb3cuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90
ZURPTVdpbmRvdy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM3NjVGMjA4
NTE3NkMwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QzM3NjYxMjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdp
bmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRv
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERkRCOTEyQ0Y4RTg4QTZEQTFBRDI2
NEYgLyogQWJvcnRhYmxlVGFza1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFib3J0YWJsZVRhc2tRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2QzY5NkNBMUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90aWZpZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ4MzgsNiArMjQ4NDAsNyBAQAogCQkJ
CTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMx
RDAwRUY2RjI2IC8qIHRleHQgKi8sCiAJCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZy
ICovLAorCQkJCURGREI5MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUu
aCAqLywKIAkJCQk0OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5j
cHAgKi8sCiAJCQkJNDlBRTJEOTUxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUu
aCAqLywKIAkJCQlDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxNzQxZGIyZDgwYjhkMTg1Y2Y5NDdlMTcwYTMwZWRkMTcyMmQyMjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAt
MCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNs
dWRlIDxxdWV1ZT4KKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8qIEFib3J0YWJsZVRhc2tRdWV1ZSBpcyBhIGhpZ2gtbGV2ZWwgc3luY2hy
b25pemF0aW9uIG9iamVjdCBmb3IgYWJvcnRhYmxlIHByb2Nlc3NlcyBkb25lIGluIGJhY2tncm91
bmQKKyAqIHRocmVhZChzKSB0aGF0IG5lZWQgdG8gc2VuZCByZXF1ZXN0cyB0byB0aGUgbWFpbiB0
aHJlYWQuCisgKgorICogVGhlIHJlcXVlc3RzIHNlbnQgYnkgdGhlIGJhY2tncm91bmQgdGhyZWFk
KHMpIG1heSBiZSBhc3luY2hyb25vdXMsIHVzaW5nIHRyeUVucXVldWVUYXNrKCksIHdoaWNoIHJl
dHVybnMKKyAqIGltbWVkaWF0ZWx5OyBvciBzeW5jaHJvbm91cywgdXNpbmcgdHJ5RW5xdWV1ZVRh
c2tBbmRXYWl0Rm9yUmVwbHkoKSwgd2hpY2ggYmxvY2tzIHRoZSBjYWxsaW5nIGJhY2tncm91bmQK
KyAqIHRocmVhZCB1bnRpbCB0aGUgcmVxdWVzdCBpcyBzYXRpc2ZpZWQgYnkgdGhlIG1haW4gdGhy
ZWFkIChwb3NzaWJseSByZXR1cm5pbmcgYSByZXNwb25zZSB2YWx1ZSkuCisgKgorICogV2hhdCBt
YWtlcyBBYm9ydGFibGVUYXNrUXVldWUgZGlmZmVyZW50IGZyb20gb3RoZXIgdGFzayBxdWV1ZWlu
ZyBtZWNoYW5pc21zIGlzIHRoYXQgaXQgdXNlcyBhIHR3by1waGFzZQorICogYWJvcnQgcHJvY2Vz
cyB0aGF0IGF2b2lkcyBkZWFkbG9ja3MgYW5kIGxhdGUgbm90aWZpY2F0aW9uIGJ1Z3MuCisgKgor
ICogV2l0aG91dCBhIHR3by1waGFzZSBkZXNpZ24gZGVhZGxvY2tzIHdvdWxkIG9jY3VyIHdoZW4g
YXR0ZW1wdGluZyBhbiBhYm9ydCBpZiBhIGJhY2tncm91bmQgdGhyZWFkIHdhcworICogYmxvY2tl
ZCBpbiBhIHN5bmNocm9ub3VzIHJlcXVlc3QgYW5kIG5lZWRlZCB0byByZXR1cm4gZnJvbSB0aGVy
ZSBmb3IgdGhlIGFib3J0IHRvIGJlIGhhbmRsZWQuIEFsc28sIHdpdGhvdXQKKyAqIGEgZGVzaWdu
IGxpa2UgdGhpcywgcmVxdWVzdHMgYWxyZWFkeSBlbnF1ZXVlZCBhdCB0aGF0IHBvaW50IG9yIHNv
b24gdGhlcmVhZnRlciB1bnRpbCB0aGUgYWJvcnQgaXMgY29tcGxldGUKKyAqIHdvdWxkIHN0aWxs
IGJlIGhhbmRsZWQgYnkgdGhlIG1haW4gdGhyZWFkLCBldmVuIHRob3VnaCB3ZSBkb24ndCB3YW50
IHRvIGFueW1vcmUuCisgKgorICogQWJvcnRpbmcgYmFja2dyb3VuZCBwcm9jZXNzaW5nIHdpdGgg
QWJvcnRhYmxlVGFza1F1ZXVlIGlzIGEgc2V2ZXJhbCBzdGVwIHByb2Nlc3M6CisgKgorICogIDEu
IENhbGwgYWJvcnRhYmxlVGFza1F1ZXVlLnN0YXJ0QWJvcnRpbmcoKSAtLSBUaGlzIHdpbGwgbWFr
ZSBhbnkgY3VycmVudCBvciBmdXR1cmUgKHVudGlsIGZ1cnRoZXIgbm90aWNlKQorICogICAgIGFz
eW5jaHJvbm91cyByZXF1ZXN0IGZhaWwgaW1tZWRpYXRlbHksIHNvIHRoYXQgd2UgZG9uJ3QgZGVh
ZGxvY2sgaW4gdGhlIG5leHQgc3RlcC4gQWxzbywgcmVxdWVzdHMgb2YKKyAqICAgICBhbnkga2lu
ZCBhbHJlYWR5IGVucXVldWVkIHdpbGwgbm90IGJlIGF0dGVuZGVkLgorICoKKyAqICAyLiBTZW5k
IHRoZSBhYm9ydCBzaWduYWwgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkcy4gVGhpcyBpcyBjb21w
bGV0ZWx5IGFwcGxpY2F0aW9uIHNwZWNpZmljLiBGb3IgaW5zdGFuY2UsCisgKiAgICAgaW4gdGhl
IEFwcGVuZFBpcGVsaW5lIGNhc2UgeW91IHdvdWxkIGZsdXNoIG9yIHJlc2V0IHRoZSBHU3RyZWFt
ZXIgcGlwZWxpbmUgaGVyZS4gV2FpdCB1bnRpbCBhbGwgdGhlCisgKiAgICAgYmFja2dyb3VuZCB0
aHJlYWRzIGhhdmUgZmluaXNoZWQgYWJvcnRpbmcuCisgKgorICogIDMuIENhbGwgYWJvcnRhYmxl
VGFza1F1ZXVlLnN0b3BBYm9ydGluZygpIC0tIFRoaXMgd2lsbCBhbGxvdyBuZXcgcmVxdWVzdHMg
c2VudCBmcm9tIHRoaXMgcG9pbnQgb24gdG8gYmUKKyAqICAgICBoYW5kbGVkIGFzIGJlZm9yZSB0
aGUgYWJvcnQgd2FzIG1hZGUuCisgKgorICogIDQuIEFmdGVyIHRoaXMsIHRoZSBiYWNrZ3JvdW5k
IHRocmVhZChzKSBjYW4gYmUgcHV0IHRvIHdvcmsgYWdhaW4gc2FmZWx5LgorICoKKyAqIFRoaXMg
Y2xhc3MgaXMgdXNlZCBmb3IgaGFuZGxpbmcgZGVtdXhlciBldmVudHMgaW4gQXBwZW5kUGlwZWxp
bmUsIHRha2luZyBpbnRvIGFjY291bnQgZGVtdXhpbmcgY2FuIGJlCisgKiBhYm9ydGVkIGF0IGFu
eSBtb21lbnQuICovCitjbGFzcyBBYm9ydGFibGVUYXNrUXVldWUgZmluYWwgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFib3J0YWJsZVRhc2tRdWV1ZSk7CitwdWJsaWM6CisgICAgQWJvcnRh
YmxlVGFza1F1ZXVlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgp
KTsKKyAgICB9CisKKyAgICB+QWJvcnRhYmxlVGFza1F1ZXVlKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX211dGV4LmlzSGVs
ZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fY2hhbm5lbC5lbXB0eSgpKTsKKyAgICB9CisKKyAgICAv
LyBNRVRIT0RTIEZPUiBUSEUgTUFJTiBUSFJFQUQ6CisKKyAgICAvLyBTdGFydHMgYW4gYWJvcnQg
cHJvY2Vzcy4KKyAgICAvLworICAgIC8vIFRhc2tzIGFscmVhZHkgcXVldWVkIHdpbGwgYmUgZGlz
Y2FyZGVkLgorICAgIC8vCisgICAgLy8gVW50aWwgc3RvcEFib3J0aW5nIGlzIGNhbGxlZCwgYWxs
IHByZXNlbnQgYW5kIGZ1dHVyZSBjYWxscyB0byBwb3N0UmVxdWVzdEFuZFdhaXQoKSB3aWxsIGlt
bWVkaWF0ZWx5CisgICAgLy8gcmV0dXJuIGFuIGVtcHR5IG9wdGlvbmFsLgorICAgIHZvaWQgc3Rh
cnRBYm9ydGluZygpCisgICAgeworICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CisKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgp
OworICAgICAgICAgICAgQVNTRVJUKCFtX2Fib3J0aW5nKTsKKyAgICAgICAgICAgIG1fYWJvcnRp
bmcgPSB0cnVlOworICAgICAgICAgICAgY2FuY2VsQWxsVGFza3MoKTsKKyAgICAgICAgfQorICAg
ICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0Lm5vdGlmeUFsbCgpOworICAgIH0KKworICAgIC8v
IERlY2xhcmVzIHRoZSBwcmV2aW91cyBhYm9ydCBmaW5pc2hlZC4KKyAgICAvLworICAgIC8vIElu
IG9yZGVyIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyB0aGUgYmFja2dyb3VuZCB0aHJlYWRzIG11
c3QgYmUgdW5hYmxlIHRvIHBvc3QgdGFza3MgYXQgdGhpcyBwb2ludC4KKyAgICB2b2lkIHN0b3BB
Ym9ydGluZygpCisgICAgeworICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBBU1NFUlQo
bV9hYm9ydGluZyk7CisgICAgICAgIG1fYWJvcnRpbmcgPSBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBNRVRIT0RTIEZPUiBUSEUgQkFDS0dST1VORCBUSFJFQURTOgorCisgICAgLy8gRW5xdWV1ZSBh
IHRhc2sgdG8gYmUgcnVuIG9uIHRoZSBtYWluIHRocmVhZC4gVGhlIHRhc2sgbWF5IGJlIGNhbmNl
bGxlZCBpZiBhbiBhYm9ydCBzdGFydHMgYmVmb3JlIGl0J3MKKyAgICAvLyBoYW5kbGVkLgorICAg
IHZvaWQgdHJ5RW5xdWV1ZVRhc2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1haW5UaHJlYWRIYW5k
bGVyKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAg
ICAgICBpZiAobV9hYm9ydGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwb3N0
VGFzayhXVEZNb3ZlKG1haW5UaHJlYWRIYW5kbGVyKSk7CisgICAgfQorCisgICAgLy8gRW5xdWV1
ZSBhIHRhc2sgdG8gYmUgcnVuIG9uIHRoZSBtYWluIHRocmVhZCBhbmQgd2FpdCBmb3IgaXQgdG8g
cmV0dXJuLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXNrIGlzCisgICAgLy8gZm9yd2FyZGVk
IHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCwgd3JhcHBlZCBpbiBhbiBvcHRpb25hbC4KKyAgICAv
LworICAgIC8vIElmIHdlIGFyZSBhYm9ydGluZywgdGhlIGNhbGwgZmluaXNoZXMgaW1tZWRpYXRl
bHksIHJldHVybmluZyBhbiBlbXB0eSBvcHRpb25hbC4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBS
PgorICAgIHN0ZDo6b3B0aW9uYWw8Uj4gdHJ5RW5xdWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHkoc3Rk
OjpmdW5jdGlvbjxSKCk+IG1haW5UaHJlYWRIYW5kbGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFXVEY6OmlzTWFpblRocmVhZCgpKTsgLy8gZG9uJ3QgZGVhZGxvY2sgbWFpbiB0aHJlYWQgd2l0
aCBpdHNlbGYKKworICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAg
ICAgIGlmIChtX2Fib3J0aW5nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Uj4o
KTsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFI+IHJlc3BvbnNlID0gc3RkOjpudWxsb3B0Owor
ICAgICAgICBwb3N0VGFzayhbdGhpcywgJnJlc3BvbnNlLCAmbWFpblRocmVhZEhhbmRsZXJdKCkg
eworICAgICAgICAgICAgUiByZXNwb25zZVZhbHVlID0gbWFpblRocmVhZEhhbmRsZXIoKTsKKyAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgICAgIHJl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZVZhbHVlKTsKKyAgICAgICAgICAgIG1fYWJvcnRlZE9y
UmVzcG9uc2VTZXQubm90aWZ5QWxsKCk7CisgICAgICAgIH0pOworICAgICAgICBtX2Fib3J0ZWRP
clJlc3BvbnNlU2V0LndhaXQobV9tdXRleCwgW3RoaXMsICZyZXNwb25zZV0oKSB7CisgICAgICAg
ICAgICByZXR1cm4gbV9hYm9ydGluZyB8fCByZXNwb25zZS5oYXNfdmFsdWUoKTsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybiByZXNwb25zZTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIGNs
YXNzIGlzIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZSB3aGVuIHlvdSB3YW50IHRvIHVzZSB0cnlF
bnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseSgpIGJ1dAorICAgIC8vIHlvdSBkb24ndCBuZWVkIGFu
eSBwYXJ0aWN1bGFyIGRhdGEgZnJvbSB0aGUgbWFpbiB0aHJlYWQgaW4gcmV0dXJuIGFuZCBqdXN0
IGtub3dpbmcgdGhhdCBpdCBmaW5pc2hlZAorICAgIC8vIHJ1bm5pbmcgdGhlIGhhbmRsZXIgZnVu
Y3Rpb24gaXMgZW5vdWdoLgorICAgIGNsYXNzIER1bW15UmVzcG9uc2UgeyB9OworCitwcml2YXRl
OgorICAgIC8vIFByb3RlY3RlZCBzdGF0ZToKKyAgICAvLyAgIE1haW4gdGhyZWFkOiByZWFkLXdy
aXRlLiBXcml0ZXMgbXVzdCBiZSBtYWRlIHdpdGggdGhlIGxvY2suCisgICAgLy8gICBCYWNrZ3Jv
dW5kIHRocmVhZHM6IHJlYWQgb25seS4gUmVhZHMgbXVzdCBiZSBtYWRlIHdpdGggdGhlIGxvY2su
CisgICAgY2xhc3MgVGFzayB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgVGFzayhBYm9ydGFibGVUYXNrUXVldWUqIHRhc2tRdWV1ZSwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgdGFza0NhbGxiYWNrKQorICAgICAgICAgICAgOiBtX3Rh
c2tRdWV1ZSh0YXNrUXVldWUpLCBtX3Rhc2tDYWxsYmFjayhXVEZNb3ZlKHRhc2tDYWxsYmFjaykp
CisgICAgICAgIHsgfQorCisgICAgICAgIGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV90YXNrUXVldWUgPT0gbnVsbHB0cjsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgY2FuY2VsKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KCFpc0NhbmNlbGxlZCgpKTsKKyAgICAgICAgICAgIG1fdGFza0NhbGxiYWNrID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fdGFza1F1ZXVlID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgZGlzcGF0Y2goKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoV1RGOjppc01h
aW5UaHJlYWQoKSk7CisgICAgICAgICAgICBpZiAoIWlzQ2FuY2VsbGVkKCkpIHsKKyAgICAgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YXNrUXVldWUtPm1fbXV0ZXgpOworICAgICAgICAg
ICAgICAgIEFTU0VSVCh0aGlzID09IG1fdGFza1F1ZXVlLT5tX2NoYW5uZWwuZnJvbnQoKSk7Cisg
ICAgICAgICAgICAgICAgbV90YXNrUXVldWUtPm1fY2hhbm5lbC5wb3AoKTsKKyAgICAgICAgICAg
ICAgICBsb2NrLnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAgICAgbV90YXNrQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQWJv
cnRhYmxlVGFza1F1ZXVlKiBtX3Rhc2tRdWV1ZTsKKyAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IG1fdGFza0NhbGxiYWNrOworICAgIH07CisKKyAgICB2b2lkIHBvc3RUYXNrKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbXV0ZXgu
aXNIZWxkKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4gdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGFzaz4odGhpcywgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICBtX2NoYW5u
ZWwucHVzaCh0YXNrLmdldCgpKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0oKSB7IHRhc2stPmRpc3BhdGNoKCk7IH0pOworICAgIH0KKwor
ICAgIHZvaWQgY2FuY2VsQWxsVGFza3MoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNN
YWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAg
IHdoaWxlICghbV9jaGFubmVsLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIFRhc2sqIHRhc2sgPSBt
X2NoYW5uZWwuZnJvbnQoKTsKKyAgICAgICAgICAgIHRhc2stPmNhbmNlbCgpOworICAgICAgICAg
ICAgbV9jaGFubmVsLnBvcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBtX2Fib3J0
aW5nID0gZmFsc2U7CisgICAgTG9jayBtX211dGV4OworICAgIENvbmRpdGlvbiBtX2Fib3J0ZWRP
clJlc3BvbnNlU2V0OworICAgIHN0ZDo6cXVldWU8VGFzayo+IG1fY2hhbm5lbDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5k
ZXggOTZjZjcxNmE3M2M5MjFmNjM0Mjk2Zjk1YjlmYmFmNGQ0YTI1M2M1MS4uNGFjMGEyZmZkNjVk
YWVkZGUyZDNjODk2ZjMzZjQ4NWQ3YjcyOTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBl
bGluZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgi
CiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNs
dWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5o
PgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTcxLDcgKzcyLDcgQEAgdm9pZCBBcHBlbmRQaXBl
bGluZTo6c3RhdGljSW5pdGlhbGl6YXRpb24oKQogICAgIHNfd2ViS2l0RW5kT2ZBcHBlbmRNZXRh
SW5mbyA9IGdzdF9tZXRhX3JlZ2lzdGVyKHNfZW5kT2ZBcHBlbmRNZXRhVHlwZSwgIldlYktpdEVu
ZE9mQXBwZW5kTWV0YSIsIHNpemVvZihFbmRPZkFwcGVuZE1ldGEpLCBFbmRPZkFwcGVuZE1ldGE6
OmluaXQsIEVuZE9mQXBwZW5kTWV0YTo6ZnJlZSwgRW5kT2ZBcHBlbmRNZXRhOjp0cmFuc2Zvcm0p
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogZHVtcEFwcGVuZFN0YXRlKEFwcGVuZFBpcGVsaW5l
OjpBcHBlbmRTdGF0ZSBhcHBlbmRTdGF0ZSkKK2NvbnN0IGNoYXIqIEFwcGVuZFBpcGVsaW5lOjpk
dW1wQXBwZW5kU3RhdGUoQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFN0YXRlIGFwcGVuZFN0YXRlKQog
ewogICAgIHN3aXRjaCAoYXBwZW5kU3RhdGUpIHsKICAgICBjYXNlIEFwcGVuZFBpcGVsaW5lOjpB
cHBlbmRTdGF0ZTo6SW52YWxpZDoKQEAgLTkzLDkgKzk0LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGR1bXBBcHBlbmRTdGF0ZShBcHBlbmRQaXBlbGluZTo6QXBwZW5kU3RhdGUgYXBwZW5kU3RhdGUp
CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRBZGRlZChH
c3RFbGVtZW50KiwgR3N0UGFkKiwgQXBwZW5kUGlwZWxpbmUqKTsKLXN0YXRpYyB2b2lkIGFwcGVu
ZFBpcGVsaW5lRGVtdXhlclBhZFJlbW92ZWQoR3N0RWxlbWVudCosIEdzdFBhZCosIEFwcGVuZFBp
cGVsaW5lKik7Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtDYXBzQ2hhbmdlZChH
T2JqZWN0KiwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5lKik7CiAjaWYgIUxPR19ESVNBQkxF
RAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0lu
Zm9ybWF0aW9uKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHN0cnVjdCBQYWRQcm9iZUluZm9y
bWF0aW9uKik7CiAjZW5kaWYKQEAgLTEwNSwyOCArMTAzLDkgQEAgc3RhdGljIEdzdFBhZFByb2Jl
UmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua1BhZEV2ZW50UHJvYmUoR3N0UGFkKiwgR3N0UGFk
UHJvYmUKICNlbmRpZgogCiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVE
ZW11eGVyQmxhY2tIb2xlUGFkUHJvYmUoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiwgZ3BvaW50
ZXIpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2FtcGxl
KEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxp
bmVBcHBzaW5rRU9TKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGljIHZvaWQg
YXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkcyhHc3RFbGVtZW50KiwgQXBwZW5kUGlwZWxp
bmUqKTsKIAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIG1hdHJvc2thZGVtdXhGb3JjZVNlZ21l
bnRTdGFydFRvRXF1YWxaZXJvKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHZvaWQqKTsKIAot
c3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVOZWVkQ29udGV4dE1lc3NhZ2VDYWxsYmFjayhHc3RC
dXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUp
Ci17Ci0gICAgR1NUX1RSQUNFKCJyZWNlaXZlZCBjYWxsYmFjayIpOwotICAgIGFwcGVuZFBpcGVs
aW5lLT5oYW5kbGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKG1lc3NhZ2UpOwotfQotCi1zdGF0aWMg
dm9pZCBhcHBlbmRQaXBlbGluZUFwcGxpY2F0aW9uTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdz
dE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAg
ICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKG1lc3NhZ2UpOwotfQot
Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZVN0YXRlQ2hhbmdlTWVzc2FnZUNhbGxiYWNrKEdz
dEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGlu
ZSkKLXsKLSAgICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKG1lc3Nh
Z2UpOwotfQotCiBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaWVudCwgUmVmPFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRSYgcGxheWVyUHJpdmF0ZSkKICAgICA6IG1fbWVkaWFTb3VyY2VDbGllbnQobWVk
aWFTb3VyY2VDbGllbnQuZ2V0KCkpCiAgICAgLCBtX3NvdXJjZUJ1ZmZlclByaXZhdGUoc291cmNl
QnVmZmVyUHJpdmF0ZS5nZXQoKSkKQEAgLTE1Myw5ICsxMzIsMTIgQEAgQXBwZW5kUGlwZWxpbmU6
OkFwcGVuZFBpcGVsaW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFT
b3VyY2VDbGkKICAgICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2hfZnVsbChtX2J1cy5nZXQoKSwg
UnVuTG9vcFNvdXJjZVByaW9yaXR5OjpSdW5Mb29wRGlzcGF0Y2hlcik7CiAgICAgZ3N0X2J1c19l
bmFibGVfc3luY19tZXNzYWdlX2VtaXNzaW9uKG1fYnVzLmdldCgpKTsKIAotICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9idXMuZ2V0KCksICJzeW5jLW1lc3NhZ2U6Om5lZWQtY29udGV4dCIsIEdfQ0FM
TEJBQ0soYXBwZW5kUGlwZWxpbmVOZWVkQ29udGV4dE1lc3NhZ2VDYWxsYmFjayksIHRoaXMpOwot
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9idXMuZ2V0KCksICJtZXNzYWdlOjphcHBsaWNhdGlvbiIs
IEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBsaWNhdGlvbk1lc3NhZ2VDYWxsYmFjayksIHRo
aXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9idXMuZ2V0KCksICJtZXNzYWdlOjpzdGF0ZS1j
aGFuZ2VkIiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZVN0YXRlQ2hhbmdlTWVzc2FnZUNhbGxi
YWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2J1cy5nZXQoKSwgInN5bmMtbWVz
c2FnZTo6bmVlZC1jb250ZXh0IiwgR19DQUxMQkFDSygrW10oR3N0QnVzKiwgR3N0TWVzc2FnZSog
bWVzc2FnZSwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKSB7CisgICAgICAgIGFwcGVu
ZFBpcGVsaW5lLT5oYW5kbGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0p
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYnVzLmdldCgpLCAibWVzc2FnZTo6c3Rh
dGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2Us
IEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGlu
ZS0+aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0pLCB0aGlzKTsKIAog
ICAgIC8vIFdlIGFzc2lnbiB0aGUgY3JlYXRlZCBpbnN0YW5jZXMgaGVyZSBpbnN0ZWFkIG9mIGFk
b3B0UmVmKCkgYmVjYXVzZSBnc3RfYmluX2FkZF9tYW55KCkKICAgICAvLyBiZWxvdyB3aWxsIGFs
cmVhZHkgdGFrZSB0aGUgaW5pdGlhbCByZWZlcmVuY2UgYW5kIHdlIG5lZWQgYW4gYWRkaXRpb25h
bCBvbmUgZm9yIHVzLgpAQCAtMTgxLDcgKzE2MywxMSBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5k
UGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNs
aQogICAgIGdzdF9iYXNlX3Npbmtfc2V0X2xhc3Rfc2FtcGxlX2VuYWJsZWQoR1NUX0JBU0VfU0lO
SyhtX2FwcHNpbmsuZ2V0KCkpLCBGQUxTRSk7CiAKICAgICBHUmVmUHRyPEdzdFBhZD4gYXBwc2lu
a1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX2FwcHNpbmsuZ2V0
KCksICJzaW5rIikpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXBwc2lua1BhZC5nZXQoKSwgIm5v
dGlmeTo6Y2FwcyIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzaW5rQ2Fwc0NoYW5nZWQp
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGFwcHNpbmtQYWQuZ2V0KCksICJub3RpZnk6
OmNhcHMiLCBHX0NBTExCQUNLKCtbXShHT2JqZWN0KiwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVs
aW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBlbGluZS0+bV90YXNrUXVl
dWUudHJ5RW5xdWV1ZVRhc2soW2FwcGVuZFBpcGVsaW5lXSgpIHsKKyAgICAgICAgICAgIGFwcGVu
ZFBpcGVsaW5lLT5hcHBzaW5rQ2Fwc0NoYW5nZWQoKTsKKyAgICAgICAgfSk7CisgICAgfSksIHRo
aXMpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIEdSZWZQdHI8R3N0UGFkPiBkZW11eGVyUGFk
ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKG1fZGVtdXguZ2V0KCksICJz
aW5rIikpOwpAQCAtMjAwLDExICsxODYsMzAgQEAgQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVs
aW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFTb3VyY2VDbGkKICNl
bmRpZgogCiAgICAgLy8gVGhlc2Ugc2lnbmFscyB3b24ndCBiZSBjb25uZWN0ZWQgb3V0c2lkZSBv
ZiB0aGUgbGlmZXRpbWUgb2YgInRoaXMiLgotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5n
ZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkQWRk
ZWQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fZGVtdXguZ2V0KCksICJwYWQtcmVt
b3ZlZCIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkUmVtb3ZlZCksIHRoaXMp
OwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdf
Q0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkcyksIHRoaXMpOwotICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9hcHBzaW5rLmdldCgpLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0so
YXBwZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2FtcGxlKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChtX2FwcHNpbmsuZ2V0KCksICJlb3MiLCBHX0NBTExCQUNLKGFwcGVuZFBpcGVsaW5lQXBw
c2lua0VPUyksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBh
ZC1hZGRlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBHc3RQYWQqIGRlbXV4ZXJTcmNQ
YWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBhcHBlbmRQaXBl
bGluZS0+Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJT
cmNQYWQpOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZGVtdXguZ2V0
KCksICJwYWQtcmVtb3ZlZCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBHc3RQYWQqIGRl
bXV4ZXJTcmNQYWQsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBh
cHBlbmRQaXBlbGluZS0+ZGlzY29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlU
aHJlYWQoZGVtdXhlclNyY1BhZCk7CisgICAgfSksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9kZW11eC5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1l
bnQqLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFX
VEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQb3N0aW5nIG5vLW1vcmUt
cGFkcyB0YXNrIHRvIG1haW4gdGhyZWFkIik7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5tX3Rh
c2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbYXBwZW5kUGlwZWxpbmVdKCkgeworICAgICAgICAgICAg
YXBwZW5kUGlwZWxpbmUtPmRlbXV4ZXJOb01vcmVQYWRzKCk7CisgICAgICAgIH0pOworICAgIH0p
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBwc2luay5nZXQoKSwgIm5ldy1zYW1w
bGUiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVtZW50KiBhcHBzaW5rLCBBcHBlbmRQaXBlbGluZSog
YXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tQW55VGhy
ZWFkKGFwcHNpbmspOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBw
c2luay5nZXQoKSwgImVvcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBl
bGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVh
ZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQb3N0aW5nIGFwcHNpbmstZW9zIHRhc2sgdG8gbWFp
biB0aHJlYWQiKTsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPm1fdGFza1F1ZXVlLnRyeUVucXVl
dWVUYXNrKFthcHBlbmRQaXBlbGluZV0oKSB7CisgICAgICAgICAgICBhcHBlbmRQaXBlbGluZS0+
YXBwc2lua0VPUygpOworICAgICAgICB9KTsKKyAgICB9KSwgdGhpcyk7CiAKICAgICAvLyBBZGRf
bWFueSB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIGEgcmVmZXJlbmNlLiBUaGF0J3Mgd2h5IHdlIHVz
ZWQgYW4gYXNzaWdubWVudCBiZWZvcmUuCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1f
cGlwZWxpbmUuZ2V0KCkpLCBtX2FwcHNyYy5nZXQoKSwgbV9kZW11eC5nZXQoKSwgbnVsbHB0cik7
CkBAIC0yMTgsNiArMjIzLDggQEAgQXBwZW5kUGlwZWxpbmU6On5BcHBlbmRQaXBlbGluZSgpCiAg
ICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogCiAgICAgc2V0QXBwZW5kU3RhdGUoQXBw
ZW5kU3RhdGU6OkludmFsaWQpOworICAgIC8vIEZvcmdldCBhbGwgcGVuZGluZyB0YXNrcyBhbmQg
dW5ibG9jayB0aGUgc3RyZWFtaW5nIHRocmVhZCBpZiBpdCB3YXMgYmxvY2tlZC4KKyAgICBtX3Rh
c2tRdWV1ZS5zdGFydEFib3J0aW5nKCk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fcGFkQWRkUmVtb3ZlTG9jayk7CkBAIC0yMzEsNyArMjM4LDcgQEAgQXBwZW5kUGlwZWxp
bmU6On5BcHBlbmRQaXBlbGluZSgpCiAKICAgICBpZiAobV9waXBlbGluZSkgewogICAgICAgICBB
U1NFUlQobV9idXMpOwotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1
bmMobV9idXMuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KGFwcGVuZFBpcGVsaW5l
TmVlZENvbnRleHRNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fYnVzLmdldCgpLCB0aGlzKTsKICAgICAgICAgZ3N0
X2J1c19kaXNhYmxlX3N5bmNfbWVzc2FnZV9lbWlzc2lvbihtX2J1cy5nZXQoKSk7CiAgICAgICAg
IGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaChtX2J1cy5nZXQoKSk7CiAgICAgICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CkBAIC0y
ODYsMTAgKzI5MywxMCBAQCBHc3RQYWRQcm9iZVJldHVybiBBcHBlbmRQaXBlbGluZTo6YXBwc3Jj
RW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJvYmVJbmZvKgogICAgICAgICByZXR1cm4g
R1NUX1BBRF9QUk9CRV9PSzsKICAgICB9CiAKLSAgICBHU1RfVFJBQ0VfT0JKRUNUKG1fcGlwZWxp
bmUuZ2V0KCksICJwb3N0aW5nIGVuZC1vZi1hcHBlbmQgcmVxdWVzdCB0byBidXMiKTsKLSAgICBH
c3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5KCJlbmQtb2Yt
YXBwZW5kIik7Ci0gICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25ld19hcHBs
aWNhdGlvbihHU1RfT0JKRUNUKG1fYXBwc3JjLmdldCgpKSwgc3RydWN0dXJlKTsKLSAgICBnc3Rf
YnVzX3Bvc3QobV9idXMuZ2V0KCksIG1lc3NhZ2UpOworICAgIEdTVF9UUkFDRV9PQkpFQ1QobV9w
aXBlbGluZS5nZXQoKSwgIlBvc3RpbmcgZW5kLW9mLWFwcGVuZCB0YXNrIHRvIHRoZSBtYWluIHRo
cmVhZCIpOworICAgIG1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFt0aGlzXSgpIHsKKyAgICAg
ICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKKyAgICB9KTsKICAgICByZXR1cm4gR1NUX1BBRF9QUk9C
RV9EUk9QOwogfQogCkBAIC0zMjUsNDkgKzMzMiw2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6Omhh
bmRsZU5lZWRDb250ZXh0U3luY01lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAg
bV9wbGF5ZXJQcml2YXRlLT5oYW5kbGVTeW5jTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBB
cHBlbmRQaXBlbGluZTo6aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UpCi17Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotCi0gICAgY29uc3QgR3N0
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1lc3NhZ2Up
OwotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZGVtdXhlci1j
b25uZWN0LXRvLWFwcHNpbmsiKSkgewotICAgICAgICBHUmVmUHRyPEdzdFBhZD4gZGVtdXhlclNy
Y1BhZDsKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0dXJlLCAiZGVtdXhlci1zcmMt
cGFkIiwgR19UWVBFX09CSkVDVCwgJmRlbXV4ZXJTcmNQYWQub3V0UHRyKCksIG51bGxwdHIpOwot
ICAgICAgICBBU1NFUlQoZGVtdXhlclNyY1BhZCk7Ci0gICAgICAgIGNvbm5lY3REZW11eGVyU3Jj
UGFkVG9BcHBzaW5rKGRlbXV4ZXJTcmNQYWQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwc2luay1j
YXBzLWNoYW5nZWQiKSkgewotICAgICAgICBhcHBzaW5rQ2Fwc0NoYW5nZWQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVy
ZSwgImFwcHNpbmstbmV3LXNhbXBsZSIpKSB7Ci0gICAgICAgIG1fd2FzQnVzQWxyZWFkeU5vdGlm
aWVkT2ZBdmFpbGFibGVTYW1wbGVzLmNsZWFyKCk7Ci0gICAgICAgIGNvbnN1bWVBcHBzaW5rQXZh
aWxhYmxlU2FtcGxlcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdzdF9z
dHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwc2luay1lb3MiKSkgewotICAgICAgICBh
cHBzaW5rRU9TKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ3N0X3N0cnVj
dHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkZW11eGVyLW5vLW1vcmUtcGFkcyIpKSB7Ci0gICAg
ICAgIGRlbXV4ZXJOb01vcmVQYWRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJlbmQtb2YtYXBwZW5kIikpIHsK
LSAgICAgICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkZW11
eGVyTm9Nb3JlUGFkcygpCiB7CiAgICAgR1NUX1RSQUNFKCJjYWxsaW5nIGRpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQiKTsKQEAgLTgyMyw3ICs3ODcsNyBAQCBHc3RGbG93UmV0dXJuIEFw
cGVuZFBpcGVsaW5lOjpwdXNoTmV3QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHJldHVy
biBHU1RfRkxPV19PSzsKIH0KIAotR3N0Rmxvd1JldHVybiBBcHBlbmRQaXBlbGluZTo6aGFuZGxl
TmV3QXBwc2lua1NhbXBsZShHc3RFbGVtZW50KiBhcHBzaW5rKQorR3N0Rmxvd1JldHVybiBBcHBl
bmRQaXBlbGluZTo6aGFuZGxlQXBwc2lua05ld1NhbXBsZUZyb21BbnlUaHJlYWQoR3N0RWxlbWVu
dCopCiB7CiAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoJldURjo6
VGhyZWFkOjpjdXJyZW50KCkgIT0gbV9zdHJlYW1pbmdUaHJlYWQpIHsKQEAgLTg0MywxMCArODA3
LDExIEBAIEdzdEZsb3dSZXR1cm4gQXBwZW5kUGlwZWxpbmU6OmhhbmRsZU5ld0FwcHNpbmtTYW1w
bGUoR3N0RWxlbWVudCogYXBwc2luaykKICAgICB9CiAKICAgICBpZiAoIW1fd2FzQnVzQWxyZWFk
eU5vdGlmaWVkT2ZBdmFpbGFibGVTYW1wbGVzLnRlc3RfYW5kX3NldCgpKSB7Ci0gICAgICAgIEdz
dFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoImFwcHNpbmst
bmV3LXNhbXBsZSIpOwotICAgICAgICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2Vf
bmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpFQ1QoYXBwc2luayksIHN0cnVjdHVyZSk7Ci0gICAgICAg
IGdzdF9idXNfcG9zdChtX2J1cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgICAgIEdTVF9UUkFDRSgi
YXBwc2luay1uZXctc2FtcGxlIG1lc3NhZ2UgcG9zdGVkIHRvIGJ1cyIpOworICAgICAgICBHU1Rf
VFJBQ0UoIlBvc3RpbmcgYXBwc2luay1uZXctc2FtcGxlIHRhc2sgdG8gdGhlIG1haW4gdGhyZWFk
Iik7CisgICAgICAgIG1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFt0aGlzXSgpIHsKKyAgICAg
ICAgICAgIG1fd2FzQnVzQWxyZWFkeU5vdGlmaWVkT2ZBdmFpbGFibGVTYW1wbGVzLmNsZWFyKCk7
CisgICAgICAgICAgICBjb25zdW1lQXBwc2lua0F2YWlsYWJsZVNhbXBsZXMoKTsKKyAgICAgICAg
fSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwpAQCAtODg2LDYgKzg1MSw3IEBA
IGNyZWF0ZU9wdGlvbmFsUGFyc2VyRm9yRm9ybWF0KEdzdFBhZCogZGVtdXhlclNyY1BhZCkKIAog
dm9pZCBBcHBlbmRQaXBlbGluZTo6Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55
VGhyZWFkKEdzdFBhZCogZGVtdXhlclNyY1BhZCkKIHsKKyAgICBBU1NFUlQoIVdURjo6aXNNYWlu
VGhyZWFkKCkpOwogICAgIGlmICghbV9hcHBzaW5rKQogICAgICAgICByZXR1cm47CiAKQEAgLTkx
MCwyMyArODc2LDE0IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmNvbm5lY3REZW11eGVyU3JjUGFk
VG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqIGRlbXV4ZXJTCiAgICAgZWxzZQogICAgICAg
ICBtX2luaXRpYWxEdXJhdGlvbiA9IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsK
IAotICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgpKQorICAgIEdTVF9ERUJVRygiUmVxdWVzdGlu
ZyBkZW11eGVyLWNvbm5lY3QtdG8tYXBwc2luayB0byBtYWluIHRocmVhZCIpOworICAgIGF1dG8g
cmVzcG9uc2UgPSBtX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseTxBYm9y
dGFibGVUYXNrUXVldWU6OkR1bW15UmVzcG9uc2U+KFt0aGlzLCBkZW11eGVyU3JjUGFkXSgpIHsK
ICAgICAgICAgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmsoZGVtdXhlclNyY1BhZCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIC8vIENhbGwgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmso
KSBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIHdhaXQuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fcGFkQWRkUmVtb3ZlTG9jayk7Ci0gICAgICAgIGlmICghbV9wbGF5ZXJQcml2YXRlKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X3N0cnVjdHVyZV9uZXcoImRlbXV4ZXItY29ubmVjdC10by1hcHBzaW5rIiwgImRlbXV4ZXItc3Jj
LXBhZCIsIEdfVFlQRV9PQkpFQ1QsIGRlbXV4ZXJTcmNQYWQsIG51bGxwdHIpOwotICAgICAgICBH
c3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpF
Q1QobV9kZW11eC5nZXQoKSksIHN0cnVjdHVyZSk7Ci0gICAgICAgIGdzdF9idXNfcG9zdChtX2J1
cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgICAgIEdTVF9UUkFDRSgiZGVtdXhlci1jb25uZWN0LXRv
LWFwcHNpbmsgbWVzc2FnZSBwb3N0ZWQgdG8gYnVzIik7Ci0KLSAgICAgICAgbV9wYWRBZGRSZW1v
dmVDb25kaXRpb24ud2FpdChtX3BhZEFkZFJlbW92ZUxvY2spOwotCi0gICAgICAgIGlmICghbV9w
bGF5ZXJQcml2YXRlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQWJvcnRh
YmxlVGFza1F1ZXVlOjpEdW1teVJlc3BvbnNlKCk7CisgICAgfSk7CisgICAgaWYgKCFyZXNwb25z
ZS5oYXNfdmFsdWUoKSkgeworICAgICAgICAvLyBUaGUgQXBwZW5kUGlwZWxpbmUgaGFzIGJlZW4g
ZGVzdHJveWVkIG9yIGFib3J0ZWQgYmVmb3JlIHdlIHJlY2VpdmVkIGEgcmVzcG9uc2UuCisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBNdXN0IGJlIGRvbmUgaW4gdGhlIHRocmVhZCB3
ZSB3ZXJlIGNhbGxlZCBmcm9tICh1c3VhbGx5IHN0cmVhbWluZyB0aHJlYWQpLgpAQCAtMTA1NCwy
MyArMTAxMSw2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpc2Nvbm5lY3REZW11eGVyU3JjUGFk
RnJvbUFwcHNpbmtGcm9tQW55VGhyZWFkKEdzdFBhZCopCiAgICAgR1NUX0RFQlVHX0JJTl9UT19E
T1RfRklMRV9XSVRIX1RTKEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQ
SF9TSE9XX0FMTCwgInBhZC1yZW1vdmVkLWFmdGVyIik7CiB9CiAKLXZvaWQgQXBwZW5kUGlwZWxp
bmU6OmFwcGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkKCkKLXsKLSAg
ICBHU1RfVFJBQ0UoImFwcGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFk
Iik7Ci0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0
eSgiZGVtdXhlci1uby1tb3JlLXBhZHMiKTsKLSAgICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0
X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKEdTVF9PQkpFQ1QobV9hcHBzcmMuZ2V0KCkpLCBzdHJ1
Y3R1cmUpOwotICAgIGdzdF9idXNfcG9zdChtX2J1cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgR1NU
X1RSQUNFKCJhcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzRnJvbUFueVRocmVhZCAtIHBv
c3RlZCB0byBidXMiKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVBcHBzaW5rQ2Fw
c0NoYW5nZWQoR09iamVjdCogYXBwc2lua1BhZCwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5l
KiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9z
dHJ1Y3R1cmVfbmV3X2VtcHR5KCJhcHBzaW5rLWNhcHMtY2hhbmdlZCIpOwotICAgIEdzdE1lc3Nh
Z2UqIG1lc3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdfYXBwbGljYXRpb24oR1NUX09CSkVDVChhcHBz
aW5rUGFkKSwgc3RydWN0dXJlKTsKLSAgICBnc3RfYnVzX3Bvc3QoYXBwZW5kUGlwZWxpbmUtPmJ1
cygpLCBtZXNzYWdlKTsKLSAgICBHU1RfVFJBQ0UoImFwcHNpbmstY2Fwcy1jaGFuZ2VkIG1lc3Nh
Z2UgcG9zdGVkIHRvIGJ1cyIpOwotfQotCiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIEdzdFBh
ZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0luZm9ybWF0aW9uKEdzdFBh
ZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24qIHBh
ZFByb2JlSW5mb3JtYXRpb24pCiB7CkBAIC0xMTEwLDQwICsxMDUwLDYgQEAgc3RhdGljIEdzdFBh
ZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lRGVtdXhlckJsYWNrSG9sZVBhZFByb2JlKEdzdFBh
ZCosIEdzdFBhZFAKICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOwogfQogCi1zdGF0aWMg
dm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRBZGRlZChHc3RFbGVtZW50KiwgR3N0UGFkKiBk
ZW11eGVyU3JjUGFkLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBw
ZW5kUGlwZWxpbmUtPmNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChk
ZW11eGVyU3JjUGFkKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFk
UmVtb3ZlZChHc3RFbGVtZW50KiwgR3N0UGFkKiBkZW11eGVyU3JjUGFkLCBBcHBlbmRQaXBlbGlu
ZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmRpc2Nvbm5lY3REZW11
eGVyU3JjUGFkRnJvbUFwcHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJTcmNQYWQpOwotfQotCi1z
dGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzKEdzdEVsZW1lbnQqLCBB
cHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmFw
cGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkKCk7Ci19Ci0KLXN0YXRp
YyBHc3RGbG93UmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua05ld1NhbXBsZShHc3RFbGVtZW50
KiBhcHBzaW5rLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgcmV0dXJu
IGFwcGVuZFBpcGVsaW5lLT5oYW5kbGVOZXdBcHBzaW5rU2FtcGxlKGFwcHNpbmspOwotfQotCi1z
dGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtFT1MoR3N0RWxlbWVudCosIEFwcGVuZFBp
cGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBpZiAoV1RGOjppc01haW5UaHJlYWQoKSkK
LSAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmFwcHNpbmtFT1MoKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSgiYXBw
c2luay1lb3MiKTsKLSAgICAgICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25l
d19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKGFwcGVuZFBpcGVsaW5lLT5hcHBzaW5rKCkpLCBzdHJ1
Y3R1cmUpOwotICAgICAgICBnc3RfYnVzX3Bvc3QoYXBwZW5kUGlwZWxpbmUtPmJ1cygpLCBtZXNz
YWdlKTsKLSAgICAgICAgR1NUX1RSQUNFKCJhcHBzaW5rLWVvcyBtZXNzYWdlIHBvc3RlZCB0byBi
dXMiKTsKLSAgICB9Ci0KLSAgICBHU1RfREVCVUcoIiVzIG1haW4gdGhyZWFkIiwgKFdURjo6aXNN
YWluVGhyZWFkKCkpID8gIklzIiA6ICJOb3QiKTsKLX0KLQogc3RhdGljIEdzdFBhZFByb2JlUmV0
dXJuIG1hdHJvc2thZGVtdXhGb3JjZVNlZ21lbnRTdGFydFRvRXF1YWxaZXJvKEdzdFBhZCosIEdz
dFBhZFByb2JlSW5mbyogaW5mbywgdm9pZCopCiB7CiAgICAgLy8gbWF0cm9za2FkZW11eCBzZXRz
IEdzdFNlZ21lbnQuc3RhcnQgdG8gdGhlIFBUUyBvZiB0aGUgZmlyc3QgZnJhbWUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL0FwcGVuZFBpcGVsaW5lLmgKaW5kZXggZGE0Zjc1ZWVjM2FjNjg2NzJlN2RjNTM0ODg3YWU4
NDdmNzhhMjdmNy4uMDU0NmE1MGM2NzViYWI1MGQ2NGUzNzY2NmNhODQ0MDkwMjBjNDcwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9B
cHBlbmRQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisj
aW5jbHVkZSAiQWJvcnRhYmxlVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9u
LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaCIKQEAgLTQ1LDIxICs0NiwyOCBAQCBz
dHJ1Y3QgUGFkUHJvYmVJbmZvcm1hdGlvbiB7CiAKIGNsYXNzIEFwcGVuZFBpcGVsaW5lIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFwcGVuZFBpcGVsaW5lPiB7CiBwdWJsaWM6Ci0gICAg
ZW51bSBjbGFzcyBBcHBlbmRTdGF0ZSB7IEludmFsaWQsIE5vdFN0YXJ0ZWQsIE9uZ29pbmcsIERh
dGFTdGFydmUsIFNhbXBsaW5nLCBMYXN0U2FtcGxlLCBBYm9ydGluZyB9OwotCiAgICAgQXBwZW5k
UGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiwgUmVmPFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UmKTsK
ICAgICB2aXJ0dWFsIH5BcHBlbmRQaXBlbGluZSgpOwogCisgICAgR3N0Rmxvd1JldHVybiBwdXNo
TmV3QnVmZmVyKEdzdEJ1ZmZlciopOworICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7Cisg
ICAgdm9pZCBhYm9ydCgpOworICAgIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBz
b3VyY2VCdWZmZXJQcml2YXRlKCkgeyByZXR1cm4gbV9zb3VyY2VCdWZmZXJQcml2YXRlLmdldCgp
OyB9CisgICAgR3N0Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVybiBtX2FwcHNpbmtDYXBzLmdl
dCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrKCkgeyBy
ZXR1cm4gbV90cmFjazsgfQorICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSogcGxh
eWVyUHJpdmF0ZSgpIHsgcmV0dXJuIG1fcGxheWVyUHJpdmF0ZTsgfQorCitwcml2YXRlOgorICAg
IGVudW0gY2xhc3MgQXBwZW5kU3RhdGUgeyBJbnZhbGlkLCBOb3RTdGFydGVkLCBPbmdvaW5nLCBE
YXRhU3RhcnZlLCBTYW1wbGluZywgTGFzdFNhbXBsZSwgQWJvcnRpbmcgfTsKKwogICAgIHZvaWQg
aGFuZGxlTmVlZENvbnRleHRTeW5jTWVzc2FnZShHc3RNZXNzYWdlKik7Ci0gICAgdm9pZCBoYW5k
bGVBcHBsaWNhdGlvbk1lc3NhZ2UoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgaGFuZGxlU3RhdGVD
aGFuZ2VNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKIAogICAgIGdpbnQgaWQoKTsKICAgICBBcHBlbmRT
dGF0ZSBhcHBlbmRTdGF0ZSgpIHsgcmV0dXJuIG1fYXBwZW5kU3RhdGU7IH0KICAgICB2b2lkIHNl
dEFwcGVuZFN0YXRlKEFwcGVuZFN0YXRlKTsKIAotICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlTmV3
QXBwc2lua1NhbXBsZShHc3RFbGVtZW50Kik7Ci0gICAgR3N0Rmxvd1JldHVybiBwdXNoTmV3QnVm
ZmVyKEdzdEJ1ZmZlciopOworICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlQXBwc2lua05ld1NhbXBs
ZUZyb21BbnlUaHJlYWQoR3N0RWxlbWVudCopOwogCiAgICAgLy8gVGFrZXMgb3duZXJzaGlwIG9m
IGNhcHMuCiAgICAgdm9pZCBwYXJzZURlbXV4ZXJTcmNQYWRDYXBzKEdzdENhcHMqKTsKQEAgLTY5
LDE4ICs3NywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVFbmRPZkFwcGVuZCgpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCgpOwogICAgIEF0b21pY1N0cmlu
ZyB0cmFja0lkKCk7Ci0gICAgdm9pZCBhYm9ydCgpOwogCi0gICAgdm9pZCBjbGVhclBsYXllclBy
aXZhdGUoKTsKLSAgICBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVm
ZmVyUHJpdmF0ZSgpIHsgcmV0dXJuIG1fc291cmNlQnVmZmVyUHJpdmF0ZS5nZXQoKTsgfQogICAg
IEdzdEJ1cyogYnVzKCkgeyByZXR1cm4gbV9idXMuZ2V0KCk7IH0KICAgICBHc3RFbGVtZW50KiBw
aXBlbGluZSgpIHsgcmV0dXJuIG1fcGlwZWxpbmUuZ2V0KCk7IH0KICAgICBHc3RFbGVtZW50KiBh
cHBzcmMoKSB7IHJldHVybiBtX2FwcHNyYy5nZXQoKTsgfQogICAgIEdzdEVsZW1lbnQqIGFwcHNp
bmsoKSB7IHJldHVybiBtX2FwcHNpbmsuZ2V0KCk7IH0KICAgICBHc3RDYXBzKiBkZW11eGVyU3Jj
UGFkQ2FwcygpIHsgcmV0dXJuIG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCk7IH0KLSAgICBHc3RD
YXBzKiBhcHBzaW5rQ2FwcygpIHsgcmV0dXJuIG1fYXBwc2lua0NhcHMuZ2V0KCk7IH0KLSAgICBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UqIHBsYXllclByaXZhdGUoKSB7IHJldHVybiBt
X3BsYXllclByaXZhdGU7IH0KLSAgICBSZWZQdHI8V2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZT4g
dHJhY2soKSB7IHJldHVybiBtX3RyYWNrOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJl
YW1UeXBlR1N0cmVhbWVyIHN0cmVhbVR5cGUoKSB7IHJldHVybiBtX3N0cmVhbVR5cGU7IH0KIAog
ICAgIHZvaWQgZGlzY29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlUaHJlYWQo
R3N0UGFkKik7CkBAIC04OCw3ICs5MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbm5lY3REZW11
eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqKTsKICAgICB2b2lkIGNvbm5l
Y3REZW11eGVyU3JjUGFkVG9BcHBzaW5rKEdzdFBhZCopOwogCi1wcml2YXRlOgogICAgIHZvaWQg
cmVzZXRQaXBlbGluZSgpOwogICAgIHZvaWQgY2hlY2tFbmRPZkFwcGVuZCgpOwogICAgIHZvaWQg
ZGVtdXhlck5vTW9yZVBhZHMoKTsKQEAgLTk4LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBHc3RQ
YWRQcm9iZVJldHVybiBhcHBzcmNFbmRPZkFwcGVuZENoZWNrZXJQcm9iZShHc3RQYWRQcm9iZUlu
Zm8qKTsKIAogICAgIHN0YXRpYyB2b2lkIHN0YXRpY0luaXRpYWxpemF0aW9uKCk7CisgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGR1bXBBcHBlbmRTdGF0ZShBcHBlbmRQaXBlbGluZTo6QXBwZW5kU3Rh
dGUpOwogCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfc3RhdGljSW5pdGlhbGl6YXRpb25G
bGFnOwogICAgIHN0YXRpYyBHVHlwZSBzX2VuZE9mQXBwZW5kTWV0YVR5cGU7CkBAIC0xNTgsNiAr
MTYwLDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3Ry
ZWFtZXIgbV9zdHJlYW1UeXBlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNl
PiBtX3RyYWNrOwogCisgICAgQWJvcnRhYmxlVGFza1F1ZXVlIG1fdGFza1F1ZXVlOworCiAgICAg
R1JlZlB0cjxHc3RCdWZmZXI+IG1fcGVuZGluZ0J1ZmZlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YWQxN2JmMjVmNDNmNzZmNjFl
MDY0NzM0NWZkNTI1YWVlMGMxNjYwLi45YzNhMmIxZTQzZmYwNmY3ZTMzZGI3MDllNmIyMzUzMTkx
NWI4MTJjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMTAtMjUgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtNU0VdW0dTdHJlYW1lcl0gSW50cm9kdWNlIEFib3J0
YWJsZVRhc2tRdWV1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwOTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdHMgZm9yIEFib3J0YWJsZVRhc2tRdWV1ZSBhcmUgaW5jbHVkZWQuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6RmFuY3lSZXNwb25zZTo6RmFuY3lSZXNwb25zZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpGYW5jeVJlc3BvbnNlOjpvcGVyYXRvcj0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0
ZXJtaW5pc3RpY1NjaGVkdWxlcjo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpUaHJlYWRDb250ZXh0OjpUaHJl
YWRDb250ZXh0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRldGVybWluaXN0aWNTY2hlZHVs
ZXI6OlRocmVhZENvbnRleHQ6OndhaXRNeVR1cm4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjo6VGhyZWFkQ29udGV4dDo6eWllbGRUb1RocmVhZCk6CisK
IDIwMTgtMTAtMjQgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtNU0VdW1dURl1bTWVkaWFdIEludmFsaWQgTWVkaWFUaW1lIHNob3VsZCBiZSBmYWxz
eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYjBlMjY4ZWYyNmViYzhm
OGM1OWNmMWU1NGJhYmZjOTk0ZmFjOWJmNC4uNjRjYTQwMDY2Yjg2ZmFhMWQxODJkNzM5Nzc5OTI0
YzgxMWNjZDQ4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5j
bWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMDQs
NiArMTA0LDcgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKICkKIAogdGFyZ2V0X2xp
bmtfbGlicmFyaWVzKFRlc3RXZWJDb3JlICR7dGVzdF93ZWJjb3JlX0xJQlJBUklFU30pCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ5ODJmNGZjOWIxMzg2OTA1ZWQ2OWUwZWM3MzBkY2Q4NTcz
NDY2OGYuLjI4YWM4ZWFiZWI3YzIwODhhM2IwYmJlNzNiYWQzOWNmOTY1ODc2ZDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00ODcsNiArNDg3LDcgQEAKIAkJN0NDRTdFREIxQTQxMUE5MjAw
NDQ3QzRDIC8qIENTU1BhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDU0NTFFOTE5RTQxRjlEMDAxNjkzNkYgLyogQ1NTUGFyc2VyLmNwcCAq
LzsgfTsKIAkJN0NDRTdFREMxQTQxMUE5MjAwNDQ3QzRDIC8qIENhbGN1bGF0aW9uVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBNzIwRTUx
OEYxQTBFODAwQTg0OEUxIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwICovOyB9OwogCQk3Q0NFN0VE
RDFBNDExQTkyMDA0NDdDNEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMyQzcxNDE3OTcwODlEMDBFNjI3RkIgLyogVGlt
ZVJhbmdlcy5jcHAgKi87IH07CisJCUNENTFDMkE5M0U3OEI1QzFGRjMzN0MwOCAvKiBBYm9ydGFi
bGVUYXNrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUJGNTEwNjMyQTE5QjhBQzdFQzQwRTE3IC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5jcHAg
Ki87IH07CiAJCTdDQ0U3RURFMUE0MTFBOTIwMDQ0N0M0QyAvKiBVUkwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwQTFEMzgxNEEwMTAzQTAwOEE2
NkYyIC8qIFVSTC5jcHAgKi87IH07CiAJCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBMYXlv
dXRVbml0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0LmNwcCAqLzsgfTsKIAkJN0ND
RTdFRTAxQTQxMUE5QTAwNDQ3QzRDIC8qIEVkaXRvckNvbW1hbmRzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4NTcxNEEwNDRENDAwODhGQUM0
IC8qIEVkaXRvckNvbW1hbmRzLm1tICovOyB9OwpAQCAtMTk4NSw2ICsxOTg2LDcgQEAKIAkJQ0RC
RkNDNDIxQTlGRjQ0ODAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5o
dG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREJGQ0M0MzFBOUZGNDQ4MDBBN0I2
OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMkM3MTQxNzk3MDg5RDAwRTYyN0ZCIC8qIFRpbWVS
YW5nZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGltZVJhbmdlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFCRjUxMDYzMkExOUI4QUM3RUM0MEUxNyAvKiBBYm9ydGFibGVU
YXNrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJvcnRhYmxlVGFza1F1ZXVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEU0ODUxQkM1QjE5NDAwNTk0RkVDIC8q
IEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEQzhFNDg5MUJDNUM5NjIwMDU5NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlv
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidmlkZW8td2l0aC1hdWRpby5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEU0OEExQkM1Qzk2MjAwNTk0RkVD
IC8qIHZpZGVvLXdpdGgtYXVkaW8ubXA0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJ2aWRlby13aXRoLWF1ZGlvLm1wNCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTIxLDYgKzI1MjMsNyBAQAogCQkJCUNEODlE
MDM3MUM0RURCMTMwMDA0MEEwNCAvKiBjb2NvYSAqLywKIAkJCQlBMUVDMTE4NTFGNDI1M0Q5MDBE
MDE0NkUgLyogaW9zICovLAogCQkJCTMxNjJBRTlBMUU2RjJGOEYwMDBFNERCQyAvKiBtYWMgKi8s
CisJCQkJQUJGNTEwNjMyQTE5QjhBQzdFQzQwRTE3IC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5jcHAg
Ki8sCiAJCQkJN0E5MDlBNkYxRDg3NzQ3NTAwN0UxMEY4IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAg
Ki8sCiAJCQkJNjM1NEY0RDAxRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQ
YXJzZXIuY3BwICovLAogCQkJCTkzQTcyMEU1MThGMUEwRTgwMEE4NDhFMSAvKiBDYWxjdWxhdGlv
blZhbHVlLmNwcCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRkZTI0NWFhMThhNGNh
YTdiZGJjYjQzOTJhMTM3Njg5NjJlMDM2ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCkBAIC0wLDAgKzEs
MjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxB
Ym9ydGFibGVUYXNrUXVldWUuaD4KKyNpbmNsdWRlIDxVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx0
aHJlYWQ+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKK1RFU1QoQWJvcnRhYmxlVGFza1F1ZXVlLCBBc3luY1Rhc2tzKQoreworICAgIEFi
b3J0YWJsZVRhc2tRdWV1ZSB0YXNrUXVldWU7CisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxz
ZTsKKyAgICBpbnQgY3VycmVudFN0ZXAgPSAwOworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOworCisgICAgYXV0byBiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24gPSBbJnRlc3RG
aW5pc2hlZCwgJnRhc2tRdWV1ZSwgJmN1cnJlbnRTdGVwXSgpIHsKKyAgICAgICAgdGFza1F1ZXVl
LnRyeUVucXVldWVUYXNrKFsmY3VycmVudFN0ZXBdKCkgeworICAgICAgICAgICAgRVhQRUNUX1RS
VUUoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICBjdXJyZW50U3RlcCsrOworICAg
ICAgICAgICAgRVhQRUNUX0VRKDEsIGN1cnJlbnRTdGVwKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbJnRlc3RGaW5pc2hlZCwgJmN1cnJlbnRTdGVwXSgp
IHsKKyAgICAgICAgICAgIGdfYXNzZXJ0KFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgICAgICAg
ICAgY3VycmVudFN0ZXArKzsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7
CisgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICB9KTsKKyAgICB9Owor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJmJhY2tncm91bmRUaHJlYWRGdW5jdGlv
bl0oKSB7CisgICAgICAgIHN0ZDo6dGhyZWFkKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbikuZGV0
YWNoKCk7CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK3N0
cnVjdCBGYW5jeVJlc3BvbnNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGYW5jeVJlc3Bv
bnNlKTsKK3B1YmxpYzoKKyAgICBGYW5jeVJlc3BvbnNlKGludCBmYW5jeUludCkKKyAgICAgICAg
OiBmYW5jeUludChmYW5jeUludCkKKyAgICB7IH0KKworICAgIEZhbmN5UmVzcG9uc2UoRmFuY3lS
ZXNwb25zZSYmIGEpCisgICAgICAgIDogZmFuY3lJbnQoYS5mYW5jeUludCkKKyAgICB7IH0KKwor
ICAgIEZhbmN5UmVzcG9uc2UmIG9wZXJhdG9yPShGYW5jeVJlc3BvbnNlJiYgYSkKKyAgICB7Cisg
ICAgICAgIHRoaXMtPmZhbmN5SW50ID0gYS5mYW5jeUludDsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIGludCBmYW5jeUludDsKK307CisKK1RFU1QoQWJvcnRhYmxlVGFza1F1
ZXVlLCBTeW5jVGFza3MpCit7CisgICAgQWJvcnRhYmxlVGFza1F1ZXVlIHRhc2tRdWV1ZTsKKyAg
ICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIGludCBjdXJyZW50U3RlcCA9IDA7Cisg
ICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBhdXRvIGJhY2tncm91
bmRUaHJlYWRGdW5jdGlvbiA9IFsmdGVzdEZpbmlzaGVkLCAmdGFza1F1ZXVlLCAmY3VycmVudFN0
ZXBdKCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVwbHkgPSB0YXNrUXVldWUudHJ5RW5x
dWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHk8RmFuY3lSZXNwb25zZT4oWyZjdXJyZW50U3RlcCwgJnRl
c3RGaW5pc2hlZF0oKSAtPiBGYW5jeVJlc3BvbnNlIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgY3VycmVudFN0ZXArKzsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUSgxLCBjdXJyZW50U3RlcCk7CisgICAgICAgICAgICBGYW5jeVJlc3Bv
bnNlIHJldCgxMDApOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfSk7CisgICAg
ICAgIGN1cnJlbnRTdGVwKys7CisgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKHJlcGx5Lmhhc192YWx1ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDEwMCwgcmVwbHktPmZhbmN5SW50KTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFsmdGVzdEZpbmlzaGVkXSgpIHsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Cisg
ICAgICAgIH0pOworICAgIH07CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsmYmFj
a2dyb3VuZFRocmVhZEZ1bmN0aW9uXSgpIHsKKyAgICAgICAgc3RkOjp0aHJlYWQoYmFja2dyb3Vu
ZFRocmVhZEZ1bmN0aW9uKS5kZXRhY2goKTsKKyAgICB9KTsKKworICAgIFV0aWw6OnJ1bigmdGVz
dEZpbmlzaGVkKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFRocmVhZEVudW0+CitjbGFzcyBE
ZXRlcm1pbmlzdGljU2NoZWR1bGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXRlcm1p
bmlzdGljU2NoZWR1bGVyKTsKK3B1YmxpYzoKKyAgICBEZXRlcm1pbmlzdGljU2NoZWR1bGVyKFRo
cmVhZEVudW0gZmlyc3RUaHJlYWQpCisgICAgICAgIDogbV9jdXJyZW50VGhyZWFkKGZpcnN0VGhy
ZWFkKQorICAgIHsgfQorCisgICAgY2xhc3MgVGhyZWFkQ29udGV4dCB7CisgICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRocmVhZENvbnRleHQpOworICAgIHB1YmxpYzoKKyAgICAgICAgVGhy
ZWFkQ29udGV4dChEZXRlcm1pbmlzdGljU2NoZWR1bGVyJiBzY2hlZHVsZXIsIFRocmVhZEVudW0g
dGhpc1RocmVhZCkKKyAgICAgICAgICAgIDogbV9zY2hlZHVsZXIoc2NoZWR1bGVyKSwgbV90aGlz
VGhyZWFkKHRoaXNUaHJlYWQpCisgICAgICAgIHsgfQorCisgICAgICAgIHZvaWQgd2FpdE15VHVy
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxlci5t
X211dGV4KTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZENoYW5nZWQu
d2FpdChtX3NjaGVkdWxlci5tX211dGV4LCBbdGhpc10oKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZCA9PSBtX3RoaXNUaHJlYWQ7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgeWllbGRUb1RocmVhZChUaHJlYWRF
bnVtIG5leHRUaHJlYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayht
X3NjaGVkdWxlci5tX211dGV4KTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRo
cmVhZCA9IG5leHRUaHJlYWQ7CisgICAgICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJl
YWRDaGFuZ2VkLm5vdGlmeUFsbCgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBEZXRlcm1pbmlzdGljU2NoZWR1bGVyJiBtX3NjaGVkdWxlcjsKKyAgICAgICAgVGhyZWFkRW51
bSBtX3RoaXNUaHJlYWQ7CisgICAgfTsKKworCitwcml2YXRlOgorICAgIFRocmVhZEVudW0gbV9j
dXJyZW50VGhyZWFkOworICAgIENvbmRpdGlvbiBtX2N1cnJlbnRUaHJlYWRDaGFuZ2VkOworICAg
IExvY2sgbV9tdXRleDsKK307CisKK2VudW0gY2xhc3MgVGVzdFRocmVhZCB7CisgICAgTWFpbiwK
KyAgICBCYWNrZ3JvdW5kCit9OworCitURVNUKEFib3J0YWJsZVRhc2tRdWV1ZSwgQWJvcnQpCit7
CisgICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPiBzY2hlZHVsZXIoVGVzdFRo
cmVhZDo6QmFja2dyb3VuZCk7CisKKyAgICBBYm9ydGFibGVUYXNrUXVldWUgdGFza1F1ZXVlOwor
ICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisgICAgaW50IGN1cnJlbnRTdGVwID0gMDsK
KyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGF1dG8gYmFja2dy
b3VuZFRocmVhZEZ1bmN0aW9uID0gWyZzY2hlZHVsZXIsICZ0ZXN0RmluaXNoZWQsICZ0YXNrUXVl
dWUsICZjdXJyZW50U3RlcF0oKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShXVEY6OmlzTWFpblRo
cmVhZCgpKTsKKyAgICAgICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPjo6VGhy
ZWFkQ29udGV4dCBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dChzY2hlZHVsZXIsIFRlc3RUaHJlYWQ6
OkJhY2tncm91bmQpOworCisgICAgICAgIHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbXSgpIHsK
KyAgICAgICAgICAgIC8vIFRoaXMgdGFzayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHJ1
biB1bmRlciB0aGUgc2NoZWR1bGluZyBvZiB0aGlzIHRlc3QuCisgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShmYWxzZSk7CisgICAgICAgIH0pOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4
dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6Ok1haW4pOworICAgICAgICBiYWNrZ3JvdW5kVGhy
ZWFkQ29udGV4dC53YWl0TXlUdXJuKCk7CisKKyAgICAgICAgLy8gTWFpbiB0aHJlYWQgaGFzIGNh
bGxlZCBzdGFydEFib3J0aW5nKCkKKworICAgICAgICB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2so
W10oKSB7CisgICAgICAgICAgICAvLyBUaGlzIHRhc2sgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJs
ZSB0byBydW4gdW5kZXIgdGhlIHNjaGVkdWxpbmcgb2YgdGhpcyB0ZXN0LgorICAgICAgICAgICAg
RVhQRUNUX1RSVUUoZmFsc2UpOworICAgICAgICB9KTsKKyAgICAgICAgLy8gVGhpcyBjYWxsIG11
c3QgcmV0dXJuIGltbWVkaWF0ZWx5IGJlY2F1c2Ugd2UgYXJlIGFib3J0aW5nCisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUudHJ5RW5xdWV1
ZVRhc2tBbmRXYWl0Rm9yUmVwbHk8RmFuY3lSZXNwb25zZT4oW10oKSAtPiBGYW5jeVJlc3BvbnNl
IHsKKyAgICAgICAgICAgIC8vIFRoaXMgdGFzayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRv
IHJ1biB1bmRlciB0aGUgc2NoZWR1bGluZyBvZiB0aGlzIHRlc3QuCisgICAgICAgICAgICBFWFBF
Q1RfVFJVRShmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gRmFuY3lSZXNwb25zZSgxMDApOwor
ICAgICAgICB9KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlLmhhc192YWx1ZSgpKTsK
KyAgICAgICAgYmFja2dyb3VuZFRocmVhZENvbnRleHQueWllbGRUb1RocmVhZChUZXN0VGhyZWFk
OjpNYWluKTsKKyAgICAgICAgYmFja2dyb3VuZFRocmVhZENvbnRleHQud2FpdE15VHVybigpOwor
CisgICAgICAgIC8vIE1haW4gdGhyZWFkIGhhcyBjYWxsZWQgc3RvcEFib3J0aW5nKCkKKworICAg
ICAgICB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2soWyZ0ZXN0RmluaXNoZWRdKCkgeworICAgICAg
ICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZzY2hlZHVsZXIsICZiYWNrZ3JvdW5kVGhyZWFkRnVu
Y3Rpb24sICZ0YXNrUXVldWVdKCkgeworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6OmlzTWFpblRo
cmVhZCgpKTsKKyAgICAgICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPjo6VGhy
ZWFkQ29udGV4dCBtYWluVGhyZWFkQ29udGV4dChzY2hlZHVsZXIsIFRlc3RUaHJlYWQ6Ok1haW4p
OworICAgICAgICBzdGQ6OnRocmVhZChiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24pLmRldGFjaCgp
OworCisgICAgICAgIG1haW5UaHJlYWRDb250ZXh0LndhaXRNeVR1cm4oKTsKKworICAgICAgICB0
YXNrUXVldWUuc3RhcnRBYm9ydGluZygpOworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC55aWVs
ZFRvVGhyZWFkKFRlc3RUaHJlYWQ6OkJhY2tncm91bmQpOworICAgICAgICBtYWluVGhyZWFkQ29u
dGV4dC53YWl0TXlUdXJuKCk7CisKKyAgICAgICAgdGFza1F1ZXVlLnN0b3BBYm9ydGluZygpOwor
ICAgICAgICBtYWluVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6OkJhY2tn
cm91bmQpOworICAgIH0pOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>353533</attachid>
            <date>2018-10-31 14:35:07 -0700</date>
            <delta_ts>2018-10-31 14:37:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190902-20181031223505.patch</filename>
            <type>text/plain</type>
            <size>72279</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWUyM2YyOWZkNzlkOTNi
ZmEwMDU4NjYxNjFiMDZmYjYyODk4YWQxMy4uMjI3NzkwNDU4NDc2YThmODhhNGQ5Mjc3N2Q4Zjkx
YzA0ZTc3YWZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE4LTA5LTI4ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXSBVc2Ug
dG9sZXJhbmNlIHdoZW4gZ3Jvd2luZyB0aGUgY29kZWQgZnJhbWUgZ3JvdXAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBUZXN0OiBtZWRpYS9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLWFwcGVuZC1hY2ItdG9sZXJhbmNlLmh0bWwKKworICAgICAgICBUaGlzIHBh
dGNoIGludHJvZHVjZXMgYSBtaWxsaXNlY29uZCB0b2xlcmFuY2UgaW4gdGhlIHJhbmdlIG9mCisg
ICAgICAgIHBvdGVudGlhbCBmcmFtZXMgdGhhdCBzaG91bGQgYmUgZXJhc2VkIGZyYW1lIGZyb20g
dGhlIHRyYWNrIGJ1ZmZlcgorICAgICAgICB3aGVuIHRoZSBjb2RlZCBmcmFtZSBncm91cCBpcyBn
cm93aW5nLgorCisgICAgICAgIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc29tZSBmaWxlcyBo
YXZlIGltcHJlY2lzZSBvdmVybGFwcGluZworICAgICAgICB0aW1lc3RhbXBzIChlc3BlY2lhbGx5
IFdlYk0gZmlsZXMpLgorCisgICAgICAgIFRoaXMgZml4ZXMgYSBzdGFsbCB3aGVuIHNlZWtpbmcg
YmFjayBhbmQgZm9ydGggaW4gWW91VHViZSB3aXRoIFdlYk0KKyAgICAgICAgdmlkZW8uCisKKyAg
ICAgICAgQSB0ZXN0IGNhc2Ugc2ltdWxhdGluZyB0aGUgcHJvYmxlbSB3aXRoIHZpZGVvL21vY2sg
dXNpbmcgdGltZXN0YW1wcworICAgICAgICBzaW1pbGFyIHRvIHRob3NlIG9mIGEgdHlwaWNhbCAz
MCBmcHMgV2ViTSB2aWRlbyBpcyBhbHNvIGFkZGVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSk6CisKIDIwMTgtMTAtMjIgIEp1
c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ2lz
dGVyZWQgY3VzdG9tIHByb3BlcnRpZXMgc2hvdWxkIHN1cHBvcnQgc3ludGF4IHBhcmFtZXRlciBm
b3IgPGxlbmd0aD4gYW5kICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCA1NDA2ZGQ5MzA5YjlhZDBhZjMwOGQzY2VjNTk2
YzMwNTU3ZGY5YjZiLi5iYzcwNDUyMzA5ODYzYjM4NzQ5NzgyNDkwMzBlYThkNWIxZWQ0MmYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuY3BwCkBAIC0xNjYzLDYgKzE2NjMsMTQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICAvLyBUaGVyZSBhcmUgbWFueSBmaWxlcyBvdXQg
dGhlcmUgd2hlcmUgdGhlIGZyYW1lIHRpbWVzIGFyZSBub3QgcGVyZmVjdGx5IGNvbnRpZ3VvdXMg
YW5kIG1heSBoYXZlIHNtYWxsIG92ZXJsYXBzCisgICAgICAgIC8vIGJldHdlZW4gdGhlIGJlZ2lu
bmluZyBvZiBhIGZyYW1lIGFuZCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBvbmU7IHRoZXJlZm9y
ZSBhIHRvbGVyYW5jZSBpcyBuZWVkZWQgd2hlbmV2ZXIKKyAgICAgICAgLy8gZHVyYXRpb25zIGFy
ZSBjb25zaWRlcmVkLgorICAgICAgICAvLyBGb3IgaW5zdGFuY2UsIG1vc3QgV2ViTSBmaWxlcyBh
cmUgbXV4ZWQgcm91bmRlZCB0byB0aGUgbWlsbGlzZWNvbmQgKHRoZSBkZWZhdWx0IFRpbWVjb2Rl
U2NhbGUgb2YgdGhlIGZvcm1hdCkKKyAgICAgICAgLy8gYnV0IHRoZWlyIGR1cmF0aW9ucyB1c2Ug
YSBmaW5lciB0aW1lc2NhbGUgKGNhdXNpbmcgYSBzdWItbWlsbGlzZWNvbmQgb3ZlcmxhcCkuIE1v
cmUgcmFyZWx5LCB0aGVyZSBhcmUgYWxzbworICAgICAgICAvLyBNUDQgZmlsZXMgd2l0aCBzbGln
aHRseSBvZmYgdGZkdCBib3hlcywgcHJlc2VudGluZyBhIHNpbWlsYXIgcHJvYmxlbSBhdCB0aGUg
YmVnaW5uaW5nIG9mIGVhY2ggZnJhZ21lbnQuCisgICAgICAgIGNvbnN0IE1lZGlhVGltZSBjb250
aWd1b3VzRnJhbWVUb2xlcmFuY2UgPSBNZWRpYVRpbWUoMSwgMTAwMCk7CisKICAgICAgICAgLy8g
SWYgaGlnaGVzdCBwcmVzZW50YXRpb24gdGltZXN0YW1wIGZvciB0cmFjayBidWZmZXIgaXMgc2V0
IGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcHJlc2VudGF0aW9uIHRpbWVzdGFtcAogICAgICAg
ICBpZiAodHJhY2tCdWZmZXIuaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcC5pc1ZhbGlkKCkg
JiYgdHJhY2tCdWZmZXIuaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCA8PSBwcmVzZW50YXRp
b25UaW1lc3RhbXApIHsKICAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY29kZWQgZnJhbWVzIGZy
b20gdHJhY2sgYnVmZmVyIHRoYXQgaGF2ZSBhIHByZXNlbnRhdGlvbiB0aW1lc3RhbXAgZ3JlYXRl
ciB0aGFuIGhpZ2hlc3QKQEAgLTE2NzYsMTQgKzE2ODQsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgTWVkaWFUaW1l
IGhpZ2hlc3RCdWZmZXJlZFRpbWUgPSB0cmFja0J1ZmZlci5idWZmZXJlZC5tYXhpbXVtQnVmZmVy
ZWRUaW1lKCk7CisgICAgICAgICAgICAgICAgTWVkaWFUaW1lIGVyYXNlQmVnaW5UaW1lID0gdHJh
Y2tCdWZmZXIuaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcDsKKyAgICAgICAgICAgICAgICBN
ZWRpYVRpbWUgZXJhc2VFbmRUaW1lID0gZnJhbWVFbmRUaW1lc3RhbXAgLSBjb250aWd1b3VzRnJh
bWVUb2xlcmFuY2U7CiAKICAgICAgICAgICAgICAgICBQcmVzZW50YXRpb25PcmRlclNhbXBsZU1h
cDo6aXRlcmF0b3JfcmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAgICAgaWYgKGhpZ2hlc3RCdWZm
ZXJlZFRpbWUgLSB0cmFja0J1ZmZlci5oaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wIDwgdHJh
Y2tCdWZmZXIubGFzdEZyYW1lRHVyYXRpb24pCiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRo
ZSBuZXcgZnJhbWUgaXMgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyZWQgcmFuZ2VzLCBwZXJmb3Jt
IGEgc2VxdWVudGlhbCBzY2FuIGZyb20gZW5kIChPKDEpKS4KLSAgICAgICAgICAgICAgICAgICAg
cmFuZ2UgPSB0cmFja0J1ZmZlci5zYW1wbGVzLnByZXNlbnRhdGlvbk9yZGVyKCkuZmluZFNhbXBs
ZXNCZXR3ZWVuUHJlc2VudGF0aW9uVGltZXNGcm9tRW5kKHRyYWNrQnVmZmVyLmhpZ2hlc3RQcmVz
ZW50YXRpb25UaW1lc3RhbXAsIGZyYW1lRW5kVGltZXN0YW1wKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmFuZ2UgPSB0cmFja0J1ZmZlci5zYW1wbGVzLnByZXNlbnRhdGlvbk9yZGVyKCkuZmluZFNh
bXBsZXNCZXR3ZWVuUHJlc2VudGF0aW9uVGltZXNGcm9tRW5kKGVyYXNlQmVnaW5UaW1lLCBlcmFz
ZUVuZFRpbWUpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgLy8g
SW4gYW55IG90aGVyIGNhc2UsIHBlcmZvcm0gYSBiaW5hcnkgc2VhcmNoIChPKGxvZyhuKSkuCi0g
ICAgICAgICAgICAgICAgICAgIHJhbmdlID0gdHJhY2tCdWZmZXIuc2FtcGxlcy5wcmVzZW50YXRp
b25PcmRlcigpLmZpbmRTYW1wbGVzQmV0d2VlblByZXNlbnRhdGlvblRpbWVzKHRyYWNrQnVmZmVy
LmhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAsIGZyYW1lRW5kVGltZXN0YW1wKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmFuZ2UgPSB0cmFja0J1ZmZlci5zYW1wbGVzLnByZXNlbnRhdGlvbk9y
ZGVyKCkuZmluZFNhbXBsZXNCZXR3ZWVuUHJlc2VudGF0aW9uVGltZXMoZXJhc2VCZWdpblRpbWUs
IGVyYXNlRW5kVGltZSk7CiAKICAgICAgICAgICAgICAgICBpZiAocmFuZ2UuZmlyc3QgIT0gdHJh
Y2tCdWZmZXIuc2FtcGxlcy5wcmVzZW50YXRpb25PcmRlcigpLmVuZCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJhc2luZyBvdmVybGFwcGluZyByYW5nZTogJWYg
dG8gJWYgKCVkIHNhbXBsZXMpIGFmdGVyIHJlY2VpdmluZyAlZiAoY2FzZSAzKVxuIiwKQEAgLTE3
NDgsMTAgKzE3NTgsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURp
ZFJlY2VpdmVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKICAgICAgICAgLy8KICAgICAgICAg
Ly8gSW4gb3JkZXIgdG8gY2hlY2sgd2hldGhlciBhIGZyYW1lIHNob3VsZCBiZSBhZGRlZCB0byB0
aGUgZGVjb2RlIHF1ZXVlIHdlIGNoZWNrIHdoZXRoZXIgaXQgc3RhcnRzIGFmdGVyIHRoZQogICAg
ICAgICAvLyBsYXN0RW5xdWV1ZWREZWNvZGVFbmRUaW1lIG9yIGV2ZW4gYSBiaXQgYmVmb3JlIHRo
YXQgdG8gYWNjb21vZGF0ZSBmaWxlcyB3aXRoIGltcHJlY2lzZSB0aW1pbmcgaW5mb3JtYXRpb24u
Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoZXJlIGFyZSBtYW55IGZpbGVzIG91dCB0aGVyZSB3
aGVyZSB0aGUgZnJhbWUgdGltZXMgYXJlIG5vdCBwZXJmZWN0bHkgY29udGlndW91cywgdGhlcmVm
b3JlIGEgdG9sZXJhbmNlIGlzIG5lZWRlZC4KLSAgICAgICAgLy8gRm9yIGluc3RhbmNlLCBtb3N0
IFdlYk0gZmlsZXMgYXJlIG11eGVkIHJvdW5kZWQgdG8gdGhlIG1pbGxpc2Vjb25kICh0aGUgZGVm
YXVsdCBUaW1lY29kZVNjYWxlIG9mIHRoZSBmb3JtYXQpLgotICAgICAgICBjb25zdCBNZWRpYVRp
bWUgY29udGlndW91c0ZyYW1lVG9sZXJhbmNlID0gTWVkaWFUaW1lKDEsIDEwMDApOwogICAgICAg
ICBpZiAodHJhY2tCdWZmZXIubGFzdEVucXVldWVkRGVjb2RlRW5kVGltZS5pc0ludmFsaWQoKSB8
fCBkZWNvZGVUaW1lc3RhbXAgPj0gKHRyYWNrQnVmZmVyLmxhc3RFbnF1ZXVlZERlY29kZUVuZFRp
bWUgLSBjb250aWd1b3VzRnJhbWVUb2xlcmFuY2UpKSB7CiAgICAgICAgICAgICBEZWNvZGVPcmRl
clNhbXBsZU1hcDo6S2V5VHlwZSBkZWNvZGVLZXkoc2FtcGxlLmRlY29kZVRpbWUoKSwgc2FtcGxl
LnByZXNlbnRhdGlvblRpbWUoKSk7CiAgICAgICAgICAgICB0cmFja0J1ZmZlci5kZWNvZGVRdWV1
ZS5pbnNlcnQoRGVjb2RlT3JkZXJTYW1wbGVNYXA6Ok1hcFR5cGU6OnZhbHVlX3R5cGUoZGVjb2Rl
S2V5LCAmc2FtcGxlKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzgwMTZjZDY0ZTU2ZWZjZjNmOTI3ZjRhNjdiNWM1MzRm
Njc2MGY3Zi4uNGZlYzJiZjkyODRkYjZmOWQzMDEyOThlNjkzMjliOTA0YThlNzc0MiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDE4LTA5LTI4ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXSBVc2UgdG9sZXJhbmNlIHdoZW4gZ3Jvd2luZyB0
aGUgY29kZWQgZnJhbWUgZ3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKwor
ICAgICAgICBBIHRlc3Qgc2ltdWxhdGluZyB1bm9yZGVyZWQgYXBwZW5kcyB3aXRoIGltcHJlY2lz
ZSB0aW1lc3RhbXBzLAorICAgICAgICBvdmVybGFwcGluZyA8MW1zIChyZXBsaWNhdGluZyBhIHR5
cGljYWwgV2ViTSAzMGZwcyB2aWRlbyBmaWxlKSBpcworICAgICAgICBhZGRlZC4KKworICAgICAg
ICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWFjYi10b2xlcmFuY2Uu
aHRtbDogQWRkZWQuCisKIDIwMTgtMTAtMzEgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtNU0VdIFdlYktpdCB0ZXN0czogVXNlIGZpeGVkIHBvaW50
IGluIG1ha2VBU2FtcGxlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWFjYi10b2xlcmFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYWNiLXRvbGVy
YW5jZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJiMmJjYTllYjNjNWEzZDVhNmI4ZDc2YTE4
NjdlM2MxYTQwNDMyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWFjYi10b2xlcmFuY2UtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNDY2IEBACisKK0VYUEVDVEVEIChzb3VyY2UucmVhZHlTdGF0ZSA9PSAnY2xvc2Vk
JykgT0sKK0VWRU5UKHNvdXJjZW9wZW4pCitSVU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNv
dXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKSkKK1JVTihzb3VyY2VCdWZmZXIu
YXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KSkKK0VWRU5UKHVwZGF0ZWVuZCkKK1JVTihzb3VyY2VC
dWZmZXIuYXBwZW5kQnVmZmVyKGltcHJlY2lzZVNhbXBsZVJ1bigwLCA1KSkpCitFVkVOVCh1cGRh
dGVlbmQpCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbXByZWNpc2VTYW1wbGVSdW4o
MTAsIDE1KSkpCitFVkVOVCh1cGRhdGVlbmQpCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZl
cihpbXByZWNpc2VTYW1wbGVSdW4oNSwgMTApKSkKK0VWRU5UKHVwZGF0ZWVuZCkKK0VYUEVDVEVE
IChidWZmZXJlZFNhbXBsZXMubGVuZ3RoID09ICc0NTAnKSBPSworRVhQRUNURUQgKGVucXVldWVk
U2FtcGxlcy5sZW5ndGggPT0gJzQ1MCcpIE9LCit7UFRTKHswLzEwMDAwMDAgPSAwLjAwMDAwMH0p
LCBEVFMoezAvMTAwMDAwMCA9IDAuMDAwMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0g
MC4wMzMzMzN9KSwgZmxhZ3MoMSksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHszMzAwMC8xMDAwMDAw
ID0gMC4wMzMwMDB9KSwgRFRTKHszMzAwMC8xMDAwMDAwID0gMC4wMzMwMDB9KSwgZHVyYXRpb24o
ezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQ
VFMoezY3MDAwLzEwMDAwMDAgPSAwLjA2NzAwMH0pLCBEVFMoezY3MDAwLzEwMDAwMDAgPSAwLjA2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MTAwMDAwLzEwMDAwMDAgPSAwLjEwMDAwMH0pLCBEVFMoezEw
MDAwMC8xMDAwMDAwID0gMC4xMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEzMzAwMC8xMDAwMDAwID0g
MC4xMzMwMDB9KSwgRFRTKHsxMzMwMDAvMTAwMDAwMCA9IDAuMTMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHsxNjcwMDAvMTAwMDAwMCA9IDAuMTY3MDAwfSksIERUUyh7MTY3MDAwLzEwMDAwMDAgPSAwLjE2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MjAwMDAwLzEwMDAwMDAgPSAwLjIwMDAwMH0pLCBEVFMoezIw
MDAwMC8xMDAwMDAwID0gMC4yMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezIzMzAwMC8xMDAwMDAwID0g
MC4yMzMwMDB9KSwgRFRTKHsyMzMwMDAvMTAwMDAwMCA9IDAuMjMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHsyNjcwMDAvMTAwMDAwMCA9IDAuMjY3MDAwfSksIERUUyh7MjY3MDAwLzEwMDAwMDAgPSAwLjI2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MzAwMDAwLzEwMDAwMDAgPSAwLjMwMDAwMH0pLCBEVFMoezMw
MDAwMC8xMDAwMDAwID0gMC4zMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezMzMzAwMC8xMDAwMDAwID0g
MC4zMzMwMDB9KSwgRFRTKHszMzMwMDAvMTAwMDAwMCA9IDAuMzMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHszNjcwMDAvMTAwMDAwMCA9IDAuMzY3MDAwfSksIERUUyh7MzY3MDAwLzEwMDAwMDAgPSAwLjM2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NDAwMDAwLzEwMDAwMDAgPSAwLjQwMDAwMH0pLCBEVFMoezQw
MDAwMC8xMDAwMDAwID0gMC40MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezQzMzAwMC8xMDAwMDAwID0g
MC40MzMwMDB9KSwgRFRTKHs0MzMwMDAvMTAwMDAwMCA9IDAuNDMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHs0NjcwMDAvMTAwMDAwMCA9IDAuNDY3MDAwfSksIERUUyh7NDY3MDAwLzEwMDAwMDAgPSAwLjQ2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NTAwMDAwLzEwMDAwMDAgPSAwLjUwMDAwMH0pLCBEVFMoezUw
MDAwMC8xMDAwMDAwID0gMC41MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezUzMzAwMC8xMDAwMDAwID0g
MC41MzMwMDB9KSwgRFRTKHs1MzMwMDAvMTAwMDAwMCA9IDAuNTMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHs1NjcwMDAvMTAwMDAwMCA9IDAuNTY3MDAwfSksIERUUyh7NTY3MDAwLzEwMDAwMDAgPSAwLjU2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NjAwMDAwLzEwMDAwMDAgPSAwLjYwMDAwMH0pLCBEVFMoezYw
MDAwMC8xMDAwMDAwID0gMC42MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezYzMzAwMC8xMDAwMDAwID0g
MC42MzMwMDB9KSwgRFRTKHs2MzMwMDAvMTAwMDAwMCA9IDAuNjMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHs2NjcwMDAvMTAwMDAwMCA9IDAuNjY3MDAwfSksIERUUyh7NjY3MDAwLzEwMDAwMDAgPSAwLjY2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NzAwMDAwLzEwMDAwMDAgPSAwLjcwMDAwMH0pLCBEVFMoezcw
MDAwMC8xMDAwMDAwID0gMC43MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezczMzAwMC8xMDAwMDAwID0g
MC43MzMwMDB9KSwgRFRTKHs3MzMwMDAvMTAwMDAwMCA9IDAuNzMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHs3NjcwMDAvMTAwMDAwMCA9IDAuNzY3MDAwfSksIERUUyh7NzY3MDAwLzEwMDAwMDAgPSAwLjc2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7ODAwMDAwLzEwMDAwMDAgPSAwLjgwMDAwMH0pLCBEVFMoezgw
MDAwMC8xMDAwMDAwID0gMC44MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezgzMzAwMC8xMDAwMDAwID0g
MC44MzMwMDB9KSwgRFRTKHs4MzMwMDAvMTAwMDAwMCA9IDAuODMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHs4NjcwMDAvMTAwMDAwMCA9IDAuODY3MDAwfSksIERUUyh7ODY3MDAwLzEwMDAwMDAgPSAwLjg2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7OTAwMDAwLzEwMDAwMDAgPSAwLjkwMDAwMH0pLCBEVFMoezkw
MDAwMC8xMDAwMDAwID0gMC45MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezkzMzAwMC8xMDAwMDAwID0g
MC45MzMwMDB9KSwgRFRTKHs5MzMwMDAvMTAwMDAwMCA9IDAuOTMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHs5NjcwMDAvMTAwMDAwMCA9IDAuOTY3MDAwfSksIERUUyh7OTY3MDAwLzEwMDAwMDAgPSAwLjk2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MTAwMDAwMC8xMDAwMDAwID0gMS4wMDAwMDB9KSwgRFRTKHsx
MDAwMDAwLzEwMDAwMDAgPSAxLjAwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTAzMzAwMC8xMDAwMDAw
ID0gMS4wMzMwMDB9KSwgRFRTKHsxMDMzMDAwLzEwMDAwMDAgPSAxLjAzMzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7MTA2NzAwMC8xMDAwMDAwID0gMS4wNjcwMDB9KSwgRFRTKHsxMDY3MDAwLzEwMDAwMDAg
PSAxLjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTEwMDAwMC8xMDAwMDAwID0gMS4xMDAwMDB9KSwg
RFRTKHsxMTAwMDAwLzEwMDAwMDAgPSAxLjEwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTEzMzAwMC8x
MDAwMDAwID0gMS4xMzMwMDB9KSwgRFRTKHsxMTMzMDAwLzEwMDAwMDAgPSAxLjEzMzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7MTE2NzAwMC8xMDAwMDAwID0gMS4xNjcwMDB9KSwgRFRTKHsxMTY3MDAwLzEw
MDAwMDAgPSAxLjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTIwMDAwMC8xMDAwMDAwID0gMS4yMDAw
MDB9KSwgRFRTKHsxMjAwMDAwLzEwMDAwMDAgPSAxLjIwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTIz
MzAwMC8xMDAwMDAwID0gMS4yMzMwMDB9KSwgRFRTKHsxMjMzMDAwLzEwMDAwMDAgPSAxLjIzMzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7MTI2NzAwMC8xMDAwMDAwID0gMS4yNjcwMDB9KSwgRFRTKHsxMjY3
MDAwLzEwMDAwMDAgPSAxLjI2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTMwMDAwMC8xMDAwMDAwID0g
MS4zMDAwMDB9KSwgRFRTKHsxMzAwMDAwLzEwMDAwMDAgPSAxLjMwMDAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7MTMzMzAwMC8xMDAwMDAwID0gMS4zMzMwMDB9KSwgRFRTKHsxMzMzMDAwLzEwMDAwMDAgPSAx
LjMzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTM2NzAwMC8xMDAwMDAwID0gMS4zNjcwMDB9KSwgRFRT
KHsxMzY3MDAwLzEwMDAwMDAgPSAxLjM2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTQwMDAwMC8xMDAw
MDAwID0gMS40MDAwMDB9KSwgRFRTKHsxNDAwMDAwLzEwMDAwMDAgPSAxLjQwMDAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7MTQzMzAwMC8xMDAwMDAwID0gMS40MzMwMDB9KSwgRFRTKHsxNDMzMDAwLzEwMDAw
MDAgPSAxLjQzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTQ2NzAwMC8xMDAwMDAwID0gMS40NjcwMDB9
KSwgRFRTKHsxNDY3MDAwLzEwMDAwMDAgPSAxLjQ2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTUwMDAw
MC8xMDAwMDAwID0gMS41MDAwMDB9KSwgRFRTKHsxNTAwMDAwLzEwMDAwMDAgPSAxLjUwMDAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7MTUzMzAwMC8xMDAwMDAwID0gMS41MzMwMDB9KSwgRFRTKHsxNTMzMDAw
LzEwMDAwMDAgPSAxLjUzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTU2NzAwMC8xMDAwMDAwID0gMS41
NjcwMDB9KSwgRFRTKHsxNTY3MDAwLzEwMDAwMDAgPSAxLjU2NzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
MTYwMDAwMC8xMDAwMDAwID0gMS42MDAwMDB9KSwgRFRTKHsxNjAwMDAwLzEwMDAwMDAgPSAxLjYw
MDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MTYzMzAwMC8xMDAwMDAwID0gMS42MzMwMDB9KSwgRFRTKHsx
NjMzMDAwLzEwMDAwMDAgPSAxLjYzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTY2NzAwMC8xMDAwMDAw
ID0gMS42NjcwMDB9KSwgRFRTKHsxNjY3MDAwLzEwMDAwMDAgPSAxLjY2NzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7MTcwMDAwMC8xMDAwMDAwID0gMS43MDAwMDB9KSwgRFRTKHsxNzAwMDAwLzEwMDAwMDAg
PSAxLjcwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTczMzAwMC8xMDAwMDAwID0gMS43MzMwMDB9KSwg
RFRTKHsxNzMzMDAwLzEwMDAwMDAgPSAxLjczMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTc2NzAwMC8x
MDAwMDAwID0gMS43NjcwMDB9KSwgRFRTKHsxNzY3MDAwLzEwMDAwMDAgPSAxLjc2NzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7MTgwMDAwMC8xMDAwMDAwID0gMS44MDAwMDB9KSwgRFRTKHsxODAwMDAwLzEw
MDAwMDAgPSAxLjgwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTgzMzAwMC8xMDAwMDAwID0gMS44MzMw
MDB9KSwgRFRTKHsxODMzMDAwLzEwMDAwMDAgPSAxLjgzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTg2
NzAwMC8xMDAwMDAwID0gMS44NjcwMDB9KSwgRFRTKHsxODY3MDAwLzEwMDAwMDAgPSAxLjg2NzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7MTkwMDAwMC8xMDAwMDAwID0gMS45MDAwMDB9KSwgRFRTKHsxOTAw
MDAwLzEwMDAwMDAgPSAxLjkwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTkzMzAwMC8xMDAwMDAwID0g
MS45MzMwMDB9KSwgRFRTKHsxOTMzMDAwLzEwMDAwMDAgPSAxLjkzMzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7MTk2NzAwMC8xMDAwMDAwID0gMS45NjcwMDB9KSwgRFRTKHsxOTY3MDAwLzEwMDAwMDAgPSAx
Ljk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjAwMDAwMC8xMDAwMDAwID0gMi4wMDAwMDB9KSwgRFRT
KHsyMDAwMDAwLzEwMDAwMDAgPSAyLjAwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjAzMzAwMC8xMDAw
MDAwID0gMi4wMzMwMDB9KSwgRFRTKHsyMDMzMDAwLzEwMDAwMDAgPSAyLjAzMzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7MjA2NzAwMC8xMDAwMDAwID0gMi4wNjcwMDB9KSwgRFRTKHsyMDY3MDAwLzEwMDAw
MDAgPSAyLjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjEwMDAwMC8xMDAwMDAwID0gMi4xMDAwMDB9
KSwgRFRTKHsyMTAwMDAwLzEwMDAwMDAgPSAyLjEwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjEzMzAw
MC8xMDAwMDAwID0gMi4xMzMwMDB9KSwgRFRTKHsyMTMzMDAwLzEwMDAwMDAgPSAyLjEzMzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7MjE2NzAwMC8xMDAwMDAwID0gMi4xNjcwMDB9KSwgRFRTKHsyMTY3MDAw
LzEwMDAwMDAgPSAyLjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjIwMDAwMC8xMDAwMDAwID0gMi4y
MDAwMDB9KSwgRFRTKHsyMjAwMDAwLzEwMDAwMDAgPSAyLjIwMDAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
MjIzMzAwMC8xMDAwMDAwID0gMi4yMzMwMDB9KSwgRFRTKHsyMjMzMDAwLzEwMDAwMDAgPSAyLjIz
MzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MjI2NzAwMC8xMDAwMDAwID0gMi4yNjcwMDB9KSwgRFRTKHsy
MjY3MDAwLzEwMDAwMDAgPSAyLjI2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjMwMDAwMC8xMDAwMDAw
ID0gMi4zMDAwMDB9KSwgRFRTKHsyMzAwMDAwLzEwMDAwMDAgPSAyLjMwMDAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7MjMzMzAwMC8xMDAwMDAwID0gMi4zMzMwMDB9KSwgRFRTKHsyMzMzMDAwLzEwMDAwMDAg
PSAyLjMzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjM2NzAwMC8xMDAwMDAwID0gMi4zNjcwMDB9KSwg
RFRTKHsyMzY3MDAwLzEwMDAwMDAgPSAyLjM2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjQwMDAwMC8x
MDAwMDAwID0gMi40MDAwMDB9KSwgRFRTKHsyNDAwMDAwLzEwMDAwMDAgPSAyLjQwMDAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7MjQzMzAwMC8xMDAwMDAwID0gMi40MzMwMDB9KSwgRFRTKHsyNDMzMDAwLzEw
MDAwMDAgPSAyLjQzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjQ2NzAwMC8xMDAwMDAwID0gMi40Njcw
MDB9KSwgRFRTKHsyNDY3MDAwLzEwMDAwMDAgPSAyLjQ2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjUw
MDAwMC8xMDAwMDAwID0gMi41MDAwMDB9KSwgRFRTKHsyNTAwMDAwLzEwMDAwMDAgPSAyLjUwMDAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7MjUzMzAwMC8xMDAwMDAwID0gMi41MzMwMDB9KSwgRFRTKHsyNTMz
MDAwLzEwMDAwMDAgPSAyLjUzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjU2NzAwMC8xMDAwMDAwID0g
Mi41NjcwMDB9KSwgRFRTKHsyNTY3MDAwLzEwMDAwMDAgPSAyLjU2NzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7MjYwMDAwMC8xMDAwMDAwID0gMi42MDAwMDB9KSwgRFRTKHsyNjAwMDAwLzEwMDAwMDAgPSAy
LjYwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjYzMzAwMC8xMDAwMDAwID0gMi42MzMwMDB9KSwgRFRT
KHsyNjMzMDAwLzEwMDAwMDAgPSAyLjYzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjY2NzAwMC8xMDAw
MDAwID0gMi42NjcwMDB9KSwgRFRTKHsyNjY3MDAwLzEwMDAwMDAgPSAyLjY2NzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7MjcwMDAwMC8xMDAwMDAwID0gMi43MDAwMDB9KSwgRFRTKHsyNzAwMDAwLzEwMDAw
MDAgPSAyLjcwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjczMzAwMC8xMDAwMDAwID0gMi43MzMwMDB9
KSwgRFRTKHsyNzMzMDAwLzEwMDAwMDAgPSAyLjczMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7Mjc2NzAw
MC8xMDAwMDAwID0gMi43NjcwMDB9KSwgRFRTKHsyNzY3MDAwLzEwMDAwMDAgPSAyLjc2NzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7MjgwMDAwMC8xMDAwMDAwID0gMi44MDAwMDB9KSwgRFRTKHsyODAwMDAw
LzEwMDAwMDAgPSAyLjgwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjgzMzAwMC8xMDAwMDAwID0gMi44
MzMwMDB9KSwgRFRTKHsyODMzMDAwLzEwMDAwMDAgPSAyLjgzMzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
Mjg2NzAwMC8xMDAwMDAwID0gMi44NjcwMDB9KSwgRFRTKHsyODY3MDAwLzEwMDAwMDAgPSAyLjg2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MjkwMDAwMC8xMDAwMDAwID0gMi45MDAwMDB9KSwgRFRTKHsy
OTAwMDAwLzEwMDAwMDAgPSAyLjkwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjkzMzAwMC8xMDAwMDAw
ID0gMi45MzMwMDB9KSwgRFRTKHsyOTMzMDAwLzEwMDAwMDAgPSAyLjkzMzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7Mjk2NzAwMC8xMDAwMDAwID0gMi45NjcwMDB9KSwgRFRTKHsyOTY3MDAwLzEwMDAwMDAg
PSAyLjk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzAwMDAwMC8xMDAwMDAwID0gMy4wMDAwMDB9KSwg
RFRTKHszMDAwMDAwLzEwMDAwMDAgPSAzLjAwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzAzMzAwMC8x
MDAwMDAwID0gMy4wMzMwMDB9KSwgRFRTKHszMDMzMDAwLzEwMDAwMDAgPSAzLjAzMzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7MzA2NzAwMC8xMDAwMDAwID0gMy4wNjcwMDB9KSwgRFRTKHszMDY3MDAwLzEw
MDAwMDAgPSAzLjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzEwMDAwMC8xMDAwMDAwID0gMy4xMDAw
MDB9KSwgRFRTKHszMTAwMDAwLzEwMDAwMDAgPSAzLjEwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzEz
MzAwMC8xMDAwMDAwID0gMy4xMzMwMDB9KSwgRFRTKHszMTMzMDAwLzEwMDAwMDAgPSAzLjEzMzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7MzE2NzAwMC8xMDAwMDAwID0gMy4xNjcwMDB9KSwgRFRTKHszMTY3
MDAwLzEwMDAwMDAgPSAzLjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzIwMDAwMC8xMDAwMDAwID0g
My4yMDAwMDB9KSwgRFRTKHszMjAwMDAwLzEwMDAwMDAgPSAzLjIwMDAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7MzIzMzAwMC8xMDAwMDAwID0gMy4yMzMwMDB9KSwgRFRTKHszMjMzMDAwLzEwMDAwMDAgPSAz
LjIzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzI2NzAwMC8xMDAwMDAwID0gMy4yNjcwMDB9KSwgRFRT
KHszMjY3MDAwLzEwMDAwMDAgPSAzLjI2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzMwMDAwMC8xMDAw
MDAwID0gMy4zMDAwMDB9KSwgRFRTKHszMzAwMDAwLzEwMDAwMDAgPSAzLjMwMDAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7MzMzMzAwMC8xMDAwMDAwID0gMy4zMzMwMDB9KSwgRFRTKHszMzMzMDAwLzEwMDAw
MDAgPSAzLjMzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzM2NzAwMC8xMDAwMDAwID0gMy4zNjcwMDB9
KSwgRFRTKHszMzY3MDAwLzEwMDAwMDAgPSAzLjM2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzQwMDAw
MC8xMDAwMDAwID0gMy40MDAwMDB9KSwgRFRTKHszNDAwMDAwLzEwMDAwMDAgPSAzLjQwMDAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7MzQzMzAwMC8xMDAwMDAwID0gMy40MzMwMDB9KSwgRFRTKHszNDMzMDAw
LzEwMDAwMDAgPSAzLjQzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzQ2NzAwMC8xMDAwMDAwID0gMy40
NjcwMDB9KSwgRFRTKHszNDY3MDAwLzEwMDAwMDAgPSAzLjQ2NzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
MzUwMDAwMC8xMDAwMDAwID0gMy41MDAwMDB9KSwgRFRTKHszNTAwMDAwLzEwMDAwMDAgPSAzLjUw
MDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MzUzMzAwMC8xMDAwMDAwID0gMy41MzMwMDB9KSwgRFRTKHsz
NTMzMDAwLzEwMDAwMDAgPSAzLjUzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzU2NzAwMC8xMDAwMDAw
ID0gMy41NjcwMDB9KSwgRFRTKHszNTY3MDAwLzEwMDAwMDAgPSAzLjU2NzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7MzYwMDAwMC8xMDAwMDAwID0gMy42MDAwMDB9KSwgRFRTKHszNjAwMDAwLzEwMDAwMDAg
PSAzLjYwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzYzMzAwMC8xMDAwMDAwID0gMy42MzMwMDB9KSwg
RFRTKHszNjMzMDAwLzEwMDAwMDAgPSAzLjYzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzY2NzAwMC8x
MDAwMDAwID0gMy42NjcwMDB9KSwgRFRTKHszNjY3MDAwLzEwMDAwMDAgPSAzLjY2NzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7MzcwMDAwMC8xMDAwMDAwID0gMy43MDAwMDB9KSwgRFRTKHszNzAwMDAwLzEw
MDAwMDAgPSAzLjcwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzczMzAwMC8xMDAwMDAwID0gMy43MzMw
MDB9KSwgRFRTKHszNzMzMDAwLzEwMDAwMDAgPSAzLjczMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7Mzc2
NzAwMC8xMDAwMDAwID0gMy43NjcwMDB9KSwgRFRTKHszNzY3MDAwLzEwMDAwMDAgPSAzLjc2NzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7MzgwMDAwMC8xMDAwMDAwID0gMy44MDAwMDB9KSwgRFRTKHszODAw
MDAwLzEwMDAwMDAgPSAzLjgwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzgzMzAwMC8xMDAwMDAwID0g
My44MzMwMDB9KSwgRFRTKHszODMzMDAwLzEwMDAwMDAgPSAzLjgzMzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7Mzg2NzAwMC8xMDAwMDAwID0gMy44NjcwMDB9KSwgRFRTKHszODY3MDAwLzEwMDAwMDAgPSAz
Ljg2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzkwMDAwMC8xMDAwMDAwID0gMy45MDAwMDB9KSwgRFRT
KHszOTAwMDAwLzEwMDAwMDAgPSAzLjkwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MzkzMzAwMC8xMDAw
MDAwID0gMy45MzMwMDB9KSwgRFRTKHszOTMzMDAwLzEwMDAwMDAgPSAzLjkzMzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7Mzk2NzAwMC8xMDAwMDAwID0gMy45NjcwMDB9KSwgRFRTKHszOTY3MDAwLzEwMDAw
MDAgPSAzLjk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDAwMDAwMC8xMDAwMDAwID0gNC4wMDAwMDB9
KSwgRFRTKHs0MDAwMDAwLzEwMDAwMDAgPSA0LjAwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDAzMzAw
MC8xMDAwMDAwID0gNC4wMzMwMDB9KSwgRFRTKHs0MDMzMDAwLzEwMDAwMDAgPSA0LjAzMzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7NDA2NzAwMC8xMDAwMDAwID0gNC4wNjcwMDB9KSwgRFRTKHs0MDY3MDAw
LzEwMDAwMDAgPSA0LjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDEwMDAwMC8xMDAwMDAwID0gNC4x
MDAwMDB9KSwgRFRTKHs0MTAwMDAwLzEwMDAwMDAgPSA0LjEwMDAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
NDEzMzAwMC8xMDAwMDAwID0gNC4xMzMwMDB9KSwgRFRTKHs0MTMzMDAwLzEwMDAwMDAgPSA0LjEz
MzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NDE2NzAwMC8xMDAwMDAwID0gNC4xNjcwMDB9KSwgRFRTKHs0
MTY3MDAwLzEwMDAwMDAgPSA0LjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDIwMDAwMC8xMDAwMDAw
ID0gNC4yMDAwMDB9KSwgRFRTKHs0MjAwMDAwLzEwMDAwMDAgPSA0LjIwMDAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7NDIzMzAwMC8xMDAwMDAwID0gNC4yMzMwMDB9KSwgRFRTKHs0MjMzMDAwLzEwMDAwMDAg
PSA0LjIzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDI2NzAwMC8xMDAwMDAwID0gNC4yNjcwMDB9KSwg
RFRTKHs0MjY3MDAwLzEwMDAwMDAgPSA0LjI2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDMwMDAwMC8x
MDAwMDAwID0gNC4zMDAwMDB9KSwgRFRTKHs0MzAwMDAwLzEwMDAwMDAgPSA0LjMwMDAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7NDMzMzAwMC8xMDAwMDAwID0gNC4zMzMwMDB9KSwgRFRTKHs0MzMzMDAwLzEw
MDAwMDAgPSA0LjMzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDM2NzAwMC8xMDAwMDAwID0gNC4zNjcw
MDB9KSwgRFRTKHs0MzY3MDAwLzEwMDAwMDAgPSA0LjM2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDQw
MDAwMC8xMDAwMDAwID0gNC40MDAwMDB9KSwgRFRTKHs0NDAwMDAwLzEwMDAwMDAgPSA0LjQwMDAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7NDQzMzAwMC8xMDAwMDAwID0gNC40MzMwMDB9KSwgRFRTKHs0NDMz
MDAwLzEwMDAwMDAgPSA0LjQzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDQ2NzAwMC8xMDAwMDAwID0g
NC40NjcwMDB9KSwgRFRTKHs0NDY3MDAwLzEwMDAwMDAgPSA0LjQ2NzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7NDUwMDAwMC8xMDAwMDAwID0gNC41MDAwMDB9KSwgRFRTKHs0NTAwMDAwLzEwMDAwMDAgPSA0
LjUwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDUzMzAwMC8xMDAwMDAwID0gNC41MzMwMDB9KSwgRFRT
KHs0NTMzMDAwLzEwMDAwMDAgPSA0LjUzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDU2NzAwMC8xMDAw
MDAwID0gNC41NjcwMDB9KSwgRFRTKHs0NTY3MDAwLzEwMDAwMDAgPSA0LjU2NzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7NDYwMDAwMC8xMDAwMDAwID0gNC42MDAwMDB9KSwgRFRTKHs0NjAwMDAwLzEwMDAw
MDAgPSA0LjYwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDYzMzAwMC8xMDAwMDAwID0gNC42MzMwMDB9
KSwgRFRTKHs0NjMzMDAwLzEwMDAwMDAgPSA0LjYzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDY2NzAw
MC8xMDAwMDAwID0gNC42NjcwMDB9KSwgRFRTKHs0NjY3MDAwLzEwMDAwMDAgPSA0LjY2NzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7NDcwMDAwMC8xMDAwMDAwID0gNC43MDAwMDB9KSwgRFRTKHs0NzAwMDAw
LzEwMDAwMDAgPSA0LjcwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDczMzAwMC8xMDAwMDAwID0gNC43
MzMwMDB9KSwgRFRTKHs0NzMzMDAwLzEwMDAwMDAgPSA0LjczMzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
NDc2NzAwMC8xMDAwMDAwID0gNC43NjcwMDB9KSwgRFRTKHs0NzY3MDAwLzEwMDAwMDAgPSA0Ljc2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NDgwMDAwMC8xMDAwMDAwID0gNC44MDAwMDB9KSwgRFRTKHs0
ODAwMDAwLzEwMDAwMDAgPSA0LjgwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDgzMzAwMC8xMDAwMDAw
ID0gNC44MzMwMDB9KSwgRFRTKHs0ODMzMDAwLzEwMDAwMDAgPSA0LjgzMzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7NDg2NzAwMC8xMDAwMDAwID0gNC44NjcwMDB9KSwgRFRTKHs0ODY3MDAwLzEwMDAwMDAg
PSA0Ljg2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDkwMDAwMC8xMDAwMDAwID0gNC45MDAwMDB9KSwg
RFRTKHs0OTAwMDAwLzEwMDAwMDAgPSA0LjkwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NDkzMzAwMC8x
MDAwMDAwID0gNC45MzMwMDB9KSwgRFRTKHs0OTMzMDAwLzEwMDAwMDAgPSA0LjkzMzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7NDk2NzAwMC8xMDAwMDAwID0gNC45NjcwMDB9KSwgRFRTKHs0OTY3MDAwLzEw
MDAwMDAgPSA0Ljk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTAwMDAwMC8xMDAwMDAwID0gNS4wMDAw
MDB9KSwgRFRTKHs1MDAwMDAwLzEwMDAwMDAgPSA1LjAwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDEpLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTAz
MzAwMC8xMDAwMDAwID0gNS4wMzMwMDB9KSwgRFRTKHs1MDMzMDAwLzEwMDAwMDAgPSA1LjAzMzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7NTA2NzAwMC8xMDAwMDAwID0gNS4wNjcwMDB9KSwgRFRTKHs1MDY3
MDAwLzEwMDAwMDAgPSA1LjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTEwMDAwMC8xMDAwMDAwID0g
NS4xMDAwMDB9KSwgRFRTKHs1MTAwMDAwLzEwMDAwMDAgPSA1LjEwMDAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7NTEzMzAwMC8xMDAwMDAwID0gNS4xMzMwMDB9KSwgRFRTKHs1MTMzMDAwLzEwMDAwMDAgPSA1
LjEzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTE2NzAwMC8xMDAwMDAwID0gNS4xNjcwMDB9KSwgRFRT
KHs1MTY3MDAwLzEwMDAwMDAgPSA1LjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTIwMDAwMC8xMDAw
MDAwID0gNS4yMDAwMDB9KSwgRFRTKHs1MjAwMDAwLzEwMDAwMDAgPSA1LjIwMDAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7NTIzMzAwMC8xMDAwMDAwID0gNS4yMzMwMDB9KSwgRFRTKHs1MjMzMDAwLzEwMDAw
MDAgPSA1LjIzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTI2NzAwMC8xMDAwMDAwID0gNS4yNjcwMDB9
KSwgRFRTKHs1MjY3MDAwLzEwMDAwMDAgPSA1LjI2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTMwMDAw
MC8xMDAwMDAwID0gNS4zMDAwMDB9KSwgRFRTKHs1MzAwMDAwLzEwMDAwMDAgPSA1LjMwMDAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7NTMzMzAwMC8xMDAwMDAwID0gNS4zMzMwMDB9KSwgRFRTKHs1MzMzMDAw
LzEwMDAwMDAgPSA1LjMzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTM2NzAwMC8xMDAwMDAwID0gNS4z
NjcwMDB9KSwgRFRTKHs1MzY3MDAwLzEwMDAwMDAgPSA1LjM2NzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
NTQwMDAwMC8xMDAwMDAwID0gNS40MDAwMDB9KSwgRFRTKHs1NDAwMDAwLzEwMDAwMDAgPSA1LjQw
MDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NTQzMzAwMC8xMDAwMDAwID0gNS40MzMwMDB9KSwgRFRTKHs1
NDMzMDAwLzEwMDAwMDAgPSA1LjQzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTQ2NzAwMC8xMDAwMDAw
ID0gNS40NjcwMDB9KSwgRFRTKHs1NDY3MDAwLzEwMDAwMDAgPSA1LjQ2NzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7NTUwMDAwMC8xMDAwMDAwID0gNS41MDAwMDB9KSwgRFRTKHs1NTAwMDAwLzEwMDAwMDAg
PSA1LjUwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTUzMzAwMC8xMDAwMDAwID0gNS41MzMwMDB9KSwg
RFRTKHs1NTMzMDAwLzEwMDAwMDAgPSA1LjUzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTU2NzAwMC8x
MDAwMDAwID0gNS41NjcwMDB9KSwgRFRTKHs1NTY3MDAwLzEwMDAwMDAgPSA1LjU2NzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7NTYwMDAwMC8xMDAwMDAwID0gNS42MDAwMDB9KSwgRFRTKHs1NjAwMDAwLzEw
MDAwMDAgPSA1LjYwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTYzMzAwMC8xMDAwMDAwID0gNS42MzMw
MDB9KSwgRFRTKHs1NjMzMDAwLzEwMDAwMDAgPSA1LjYzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTY2
NzAwMC8xMDAwMDAwID0gNS42NjcwMDB9KSwgRFRTKHs1NjY3MDAwLzEwMDAwMDAgPSA1LjY2NzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7NTcwMDAwMC8xMDAwMDAwID0gNS43MDAwMDB9KSwgRFRTKHs1NzAw
MDAwLzEwMDAwMDAgPSA1LjcwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTczMzAwMC8xMDAwMDAwID0g
NS43MzMwMDB9KSwgRFRTKHs1NzMzMDAwLzEwMDAwMDAgPSA1LjczMzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7NTc2NzAwMC8xMDAwMDAwID0gNS43NjcwMDB9KSwgRFRTKHs1NzY3MDAwLzEwMDAwMDAgPSA1
Ljc2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTgwMDAwMC8xMDAwMDAwID0gNS44MDAwMDB9KSwgRFRT
KHs1ODAwMDAwLzEwMDAwMDAgPSA1LjgwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTgzMzAwMC8xMDAw
MDAwID0gNS44MzMwMDB9KSwgRFRTKHs1ODMzMDAwLzEwMDAwMDAgPSA1LjgzMzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7NTg2NzAwMC8xMDAwMDAwID0gNS44NjcwMDB9KSwgRFRTKHs1ODY3MDAwLzEwMDAw
MDAgPSA1Ljg2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTkwMDAwMC8xMDAwMDAwID0gNS45MDAwMDB9
KSwgRFRTKHs1OTAwMDAwLzEwMDAwMDAgPSA1LjkwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTkzMzAw
MC8xMDAwMDAwID0gNS45MzMwMDB9KSwgRFRTKHs1OTMzMDAwLzEwMDAwMDAgPSA1LjkzMzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7NTk2NzAwMC8xMDAwMDAwID0gNS45NjcwMDB9KSwgRFRTKHs1OTY3MDAw
LzEwMDAwMDAgPSA1Ljk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjAwMDAwMC8xMDAwMDAwID0gNi4w
MDAwMDB9KSwgRFRTKHs2MDAwMDAwLzEwMDAwMDAgPSA2LjAwMDAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
NjAzMzAwMC8xMDAwMDAwID0gNi4wMzMwMDB9KSwgRFRTKHs2MDMzMDAwLzEwMDAwMDAgPSA2LjAz
MzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NjA2NzAwMC8xMDAwMDAwID0gNi4wNjcwMDB9KSwgRFRTKHs2
MDY3MDAwLzEwMDAwMDAgPSA2LjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjEwMDAwMC8xMDAwMDAw
ID0gNi4xMDAwMDB9KSwgRFRTKHs2MTAwMDAwLzEwMDAwMDAgPSA2LjEwMDAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7NjEzMzAwMC8xMDAwMDAwID0gNi4xMzMwMDB9KSwgRFRTKHs2MTMzMDAwLzEwMDAwMDAg
PSA2LjEzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjE2NzAwMC8xMDAwMDAwID0gNi4xNjcwMDB9KSwg
RFRTKHs2MTY3MDAwLzEwMDAwMDAgPSA2LjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjIwMDAwMC8x
MDAwMDAwID0gNi4yMDAwMDB9KSwgRFRTKHs2MjAwMDAwLzEwMDAwMDAgPSA2LjIwMDAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7NjIzMzAwMC8xMDAwMDAwID0gNi4yMzMwMDB9KSwgRFRTKHs2MjMzMDAwLzEw
MDAwMDAgPSA2LjIzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjI2NzAwMC8xMDAwMDAwID0gNi4yNjcw
MDB9KSwgRFRTKHs2MjY3MDAwLzEwMDAwMDAgPSA2LjI2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjMw
MDAwMC8xMDAwMDAwID0gNi4zMDAwMDB9KSwgRFRTKHs2MzAwMDAwLzEwMDAwMDAgPSA2LjMwMDAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7NjMzMzAwMC8xMDAwMDAwID0gNi4zMzMwMDB9KSwgRFRTKHs2MzMz
MDAwLzEwMDAwMDAgPSA2LjMzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjM2NzAwMC8xMDAwMDAwID0g
Ni4zNjcwMDB9KSwgRFRTKHs2MzY3MDAwLzEwMDAwMDAgPSA2LjM2NzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7NjQwMDAwMC8xMDAwMDAwID0gNi40MDAwMDB9KSwgRFRTKHs2NDAwMDAwLzEwMDAwMDAgPSA2
LjQwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjQzMzAwMC8xMDAwMDAwID0gNi40MzMwMDB9KSwgRFRT
KHs2NDMzMDAwLzEwMDAwMDAgPSA2LjQzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjQ2NzAwMC8xMDAw
MDAwID0gNi40NjcwMDB9KSwgRFRTKHs2NDY3MDAwLzEwMDAwMDAgPSA2LjQ2NzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7NjUwMDAwMC8xMDAwMDAwID0gNi41MDAwMDB9KSwgRFRTKHs2NTAwMDAwLzEwMDAw
MDAgPSA2LjUwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjUzMzAwMC8xMDAwMDAwID0gNi41MzMwMDB9
KSwgRFRTKHs2NTMzMDAwLzEwMDAwMDAgPSA2LjUzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjU2NzAw
MC8xMDAwMDAwID0gNi41NjcwMDB9KSwgRFRTKHs2NTY3MDAwLzEwMDAwMDAgPSA2LjU2NzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7NjYwMDAwMC8xMDAwMDAwID0gNi42MDAwMDB9KSwgRFRTKHs2NjAwMDAw
LzEwMDAwMDAgPSA2LjYwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjYzMzAwMC8xMDAwMDAwID0gNi42
MzMwMDB9KSwgRFRTKHs2NjMzMDAwLzEwMDAwMDAgPSA2LjYzMzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
NjY2NzAwMC8xMDAwMDAwID0gNi42NjcwMDB9KSwgRFRTKHs2NjY3MDAwLzEwMDAwMDAgPSA2LjY2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NjcwMDAwMC8xMDAwMDAwID0gNi43MDAwMDB9KSwgRFRTKHs2
NzAwMDAwLzEwMDAwMDAgPSA2LjcwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjczMzAwMC8xMDAwMDAw
ID0gNi43MzMwMDB9KSwgRFRTKHs2NzMzMDAwLzEwMDAwMDAgPSA2LjczMzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7Njc2NzAwMC8xMDAwMDAwID0gNi43NjcwMDB9KSwgRFRTKHs2NzY3MDAwLzEwMDAwMDAg
PSA2Ljc2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjgwMDAwMC8xMDAwMDAwID0gNi44MDAwMDB9KSwg
RFRTKHs2ODAwMDAwLzEwMDAwMDAgPSA2LjgwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjgzMzAwMC8x
MDAwMDAwID0gNi44MzMwMDB9KSwgRFRTKHs2ODMzMDAwLzEwMDAwMDAgPSA2LjgzMzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7Njg2NzAwMC8xMDAwMDAwID0gNi44NjcwMDB9KSwgRFRTKHs2ODY3MDAwLzEw
MDAwMDAgPSA2Ljg2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NjkwMDAwMC8xMDAwMDAwID0gNi45MDAw
MDB9KSwgRFRTKHs2OTAwMDAwLzEwMDAwMDAgPSA2LjkwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7Njkz
MzAwMC8xMDAwMDAwID0gNi45MzMwMDB9KSwgRFRTKHs2OTMzMDAwLzEwMDAwMDAgPSA2LjkzMzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7Njk2NzAwMC8xMDAwMDAwID0gNi45NjcwMDB9KSwgRFRTKHs2OTY3
MDAwLzEwMDAwMDAgPSA2Ljk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzAwMDAwMC8xMDAwMDAwID0g
Ny4wMDAwMDB9KSwgRFRTKHs3MDAwMDAwLzEwMDAwMDAgPSA3LjAwMDAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7NzAzMzAwMC8xMDAwMDAwID0gNy4wMzMwMDB9KSwgRFRTKHs3MDMzMDAwLzEwMDAwMDAgPSA3
LjAzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzA2NzAwMC8xMDAwMDAwID0gNy4wNjcwMDB9KSwgRFRT
KHs3MDY3MDAwLzEwMDAwMDAgPSA3LjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzEwMDAwMC8xMDAw
MDAwID0gNy4xMDAwMDB9KSwgRFRTKHs3MTAwMDAwLzEwMDAwMDAgPSA3LjEwMDAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7NzEzMzAwMC8xMDAwMDAwID0gNy4xMzMwMDB9KSwgRFRTKHs3MTMzMDAwLzEwMDAw
MDAgPSA3LjEzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzE2NzAwMC8xMDAwMDAwID0gNy4xNjcwMDB9
KSwgRFRTKHs3MTY3MDAwLzEwMDAwMDAgPSA3LjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzIwMDAw
MC8xMDAwMDAwID0gNy4yMDAwMDB9KSwgRFRTKHs3MjAwMDAwLzEwMDAwMDAgPSA3LjIwMDAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7NzIzMzAwMC8xMDAwMDAwID0gNy4yMzMwMDB9KSwgRFRTKHs3MjMzMDAw
LzEwMDAwMDAgPSA3LjIzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzI2NzAwMC8xMDAwMDAwID0gNy4y
NjcwMDB9KSwgRFRTKHs3MjY3MDAwLzEwMDAwMDAgPSA3LjI2NzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
NzMwMDAwMC8xMDAwMDAwID0gNy4zMDAwMDB9KSwgRFRTKHs3MzAwMDAwLzEwMDAwMDAgPSA3LjMw
MDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7NzMzMzAwMC8xMDAwMDAwID0gNy4zMzMwMDB9KSwgRFRTKHs3
MzMzMDAwLzEwMDAwMDAgPSA3LjMzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzM2NzAwMC8xMDAwMDAw
ID0gNy4zNjcwMDB9KSwgRFRTKHs3MzY3MDAwLzEwMDAwMDAgPSA3LjM2NzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7NzQwMDAwMC8xMDAwMDAwID0gNy40MDAwMDB9KSwgRFRTKHs3NDAwMDAwLzEwMDAwMDAg
PSA3LjQwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzQzMzAwMC8xMDAwMDAwID0gNy40MzMwMDB9KSwg
RFRTKHs3NDMzMDAwLzEwMDAwMDAgPSA3LjQzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzQ2NzAwMC8x
MDAwMDAwID0gNy40NjcwMDB9KSwgRFRTKHs3NDY3MDAwLzEwMDAwMDAgPSA3LjQ2NzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7NzUwMDAwMC8xMDAwMDAwID0gNy41MDAwMDB9KSwgRFRTKHs3NTAwMDAwLzEw
MDAwMDAgPSA3LjUwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzUzMzAwMC8xMDAwMDAwID0gNy41MzMw
MDB9KSwgRFRTKHs3NTMzMDAwLzEwMDAwMDAgPSA3LjUzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzU2
NzAwMC8xMDAwMDAwID0gNy41NjcwMDB9KSwgRFRTKHs3NTY3MDAwLzEwMDAwMDAgPSA3LjU2NzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7NzYwMDAwMC8xMDAwMDAwID0gNy42MDAwMDB9KSwgRFRTKHs3NjAw
MDAwLzEwMDAwMDAgPSA3LjYwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzYzMzAwMC8xMDAwMDAwID0g
Ny42MzMwMDB9KSwgRFRTKHs3NjMzMDAwLzEwMDAwMDAgPSA3LjYzMzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7NzY2NzAwMC8xMDAwMDAwID0gNy42NjcwMDB9KSwgRFRTKHs3NjY3MDAwLzEwMDAwMDAgPSA3
LjY2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzcwMDAwMC8xMDAwMDAwID0gNy43MDAwMDB9KSwgRFRT
KHs3NzAwMDAwLzEwMDAwMDAgPSA3LjcwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzczMzAwMC8xMDAw
MDAwID0gNy43MzMwMDB9KSwgRFRTKHs3NzMzMDAwLzEwMDAwMDAgPSA3LjczMzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7Nzc2NzAwMC8xMDAwMDAwID0gNy43NjcwMDB9KSwgRFRTKHs3NzY3MDAwLzEwMDAw
MDAgPSA3Ljc2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzgwMDAwMC8xMDAwMDAwID0gNy44MDAwMDB9
KSwgRFRTKHs3ODAwMDAwLzEwMDAwMDAgPSA3LjgwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzgzMzAw
MC8xMDAwMDAwID0gNy44MzMwMDB9KSwgRFRTKHs3ODMzMDAwLzEwMDAwMDAgPSA3LjgzMzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7Nzg2NzAwMC8xMDAwMDAwID0gNy44NjcwMDB9KSwgRFRTKHs3ODY3MDAw
LzEwMDAwMDAgPSA3Ljg2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NzkwMDAwMC8xMDAwMDAwID0gNy45
MDAwMDB9KSwgRFRTKHs3OTAwMDAwLzEwMDAwMDAgPSA3LjkwMDAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
NzkzMzAwMC8xMDAwMDAwID0gNy45MzMwMDB9KSwgRFRTKHs3OTMzMDAwLzEwMDAwMDAgPSA3Ljkz
MzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7Nzk2NzAwMC8xMDAwMDAwID0gNy45NjcwMDB9KSwgRFRTKHs3
OTY3MDAwLzEwMDAwMDAgPSA3Ljk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODAwMDAwMC8xMDAwMDAw
ID0gOC4wMDAwMDB9KSwgRFRTKHs4MDAwMDAwLzEwMDAwMDAgPSA4LjAwMDAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7ODAzMzAwMC8xMDAwMDAwID0gOC4wMzMwMDB9KSwgRFRTKHs4MDMzMDAwLzEwMDAwMDAg
PSA4LjAzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODA2NzAwMC8xMDAwMDAwID0gOC4wNjcwMDB9KSwg
RFRTKHs4MDY3MDAwLzEwMDAwMDAgPSA4LjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODEwMDAwMC8x
MDAwMDAwID0gOC4xMDAwMDB9KSwgRFRTKHs4MTAwMDAwLzEwMDAwMDAgPSA4LjEwMDAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7ODEzMzAwMC8xMDAwMDAwID0gOC4xMzMwMDB9KSwgRFRTKHs4MTMzMDAwLzEw
MDAwMDAgPSA4LjEzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODE2NzAwMC8xMDAwMDAwID0gOC4xNjcw
MDB9KSwgRFRTKHs4MTY3MDAwLzEwMDAwMDAgPSA4LjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODIw
MDAwMC8xMDAwMDAwID0gOC4yMDAwMDB9KSwgRFRTKHs4MjAwMDAwLzEwMDAwMDAgPSA4LjIwMDAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7ODIzMzAwMC8xMDAwMDAwID0gOC4yMzMwMDB9KSwgRFRTKHs4MjMz
MDAwLzEwMDAwMDAgPSA4LjIzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODI2NzAwMC8xMDAwMDAwID0g
OC4yNjcwMDB9KSwgRFRTKHs4MjY3MDAwLzEwMDAwMDAgPSA4LjI2NzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7ODMwMDAwMC8xMDAwMDAwID0gOC4zMDAwMDB9KSwgRFRTKHs4MzAwMDAwLzEwMDAwMDAgPSA4
LjMwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODMzMzAwMC8xMDAwMDAwID0gOC4zMzMwMDB9KSwgRFRT
KHs4MzMzMDAwLzEwMDAwMDAgPSA4LjMzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODM2NzAwMC8xMDAw
MDAwID0gOC4zNjcwMDB9KSwgRFRTKHs4MzY3MDAwLzEwMDAwMDAgPSA4LjM2NzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7ODQwMDAwMC8xMDAwMDAwID0gOC40MDAwMDB9KSwgRFRTKHs4NDAwMDAwLzEwMDAw
MDAgPSA4LjQwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODQzMzAwMC8xMDAwMDAwID0gOC40MzMwMDB9
KSwgRFRTKHs4NDMzMDAwLzEwMDAwMDAgPSA4LjQzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODQ2NzAw
MC8xMDAwMDAwID0gOC40NjcwMDB9KSwgRFRTKHs4NDY3MDAwLzEwMDAwMDAgPSA4LjQ2NzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7ODUwMDAwMC8xMDAwMDAwID0gOC41MDAwMDB9KSwgRFRTKHs4NTAwMDAw
LzEwMDAwMDAgPSA4LjUwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODUzMzAwMC8xMDAwMDAwID0gOC41
MzMwMDB9KSwgRFRTKHs4NTMzMDAwLzEwMDAwMDAgPSA4LjUzMzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
ODU2NzAwMC8xMDAwMDAwID0gOC41NjcwMDB9KSwgRFRTKHs4NTY3MDAwLzEwMDAwMDAgPSA4LjU2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7ODYwMDAwMC8xMDAwMDAwID0gOC42MDAwMDB9KSwgRFRTKHs4
NjAwMDAwLzEwMDAwMDAgPSA4LjYwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODYzMzAwMC8xMDAwMDAw
ID0gOC42MzMwMDB9KSwgRFRTKHs4NjMzMDAwLzEwMDAwMDAgPSA4LjYzMzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7ODY2NzAwMC8xMDAwMDAwID0gOC42NjcwMDB9KSwgRFRTKHs4NjY3MDAwLzEwMDAwMDAg
PSA4LjY2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODcwMDAwMC8xMDAwMDAwID0gOC43MDAwMDB9KSwg
RFRTKHs4NzAwMDAwLzEwMDAwMDAgPSA4LjcwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODczMzAwMC8x
MDAwMDAwID0gOC43MzMwMDB9KSwgRFRTKHs4NzMzMDAwLzEwMDAwMDAgPSA4LjczMzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7ODc2NzAwMC8xMDAwMDAwID0gOC43NjcwMDB9KSwgRFRTKHs4NzY3MDAwLzEw
MDAwMDAgPSA4Ljc2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODgwMDAwMC8xMDAwMDAwID0gOC44MDAw
MDB9KSwgRFRTKHs4ODAwMDAwLzEwMDAwMDAgPSA4LjgwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODgz
MzAwMC8xMDAwMDAwID0gOC44MzMwMDB9KSwgRFRTKHs4ODMzMDAwLzEwMDAwMDAgPSA4LjgzMzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7ODg2NzAwMC8xMDAwMDAwID0gOC44NjcwMDB9KSwgRFRTKHs4ODY3
MDAwLzEwMDAwMDAgPSA4Ljg2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODkwMDAwMC8xMDAwMDAwID0g
OC45MDAwMDB9KSwgRFRTKHs4OTAwMDAwLzEwMDAwMDAgPSA4LjkwMDAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7ODkzMzAwMC8xMDAwMDAwID0gOC45MzMwMDB9KSwgRFRTKHs4OTMzMDAwLzEwMDAwMDAgPSA4
LjkzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7ODk2NzAwMC8xMDAwMDAwID0gOC45NjcwMDB9KSwgRFRT
KHs4OTY3MDAwLzEwMDAwMDAgPSA4Ljk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTAwMDAwMC8xMDAw
MDAwID0gOS4wMDAwMDB9KSwgRFRTKHs5MDAwMDAwLzEwMDAwMDAgPSA5LjAwMDAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7OTAzMzAwMC8xMDAwMDAwID0gOS4wMzMwMDB9KSwgRFRTKHs5MDMzMDAwLzEwMDAw
MDAgPSA5LjAzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTA2NzAwMC8xMDAwMDAwID0gOS4wNjcwMDB9
KSwgRFRTKHs5MDY3MDAwLzEwMDAwMDAgPSA5LjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTEwMDAw
MC8xMDAwMDAwID0gOS4xMDAwMDB9KSwgRFRTKHs5MTAwMDAwLzEwMDAwMDAgPSA5LjEwMDAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7OTEzMzAwMC8xMDAwMDAwID0gOS4xMzMwMDB9KSwgRFRTKHs5MTMzMDAw
LzEwMDAwMDAgPSA5LjEzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTE2NzAwMC8xMDAwMDAwID0gOS4x
NjcwMDB9KSwgRFRTKHs5MTY3MDAwLzEwMDAwMDAgPSA5LjE2NzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
OTIwMDAwMC8xMDAwMDAwID0gOS4yMDAwMDB9KSwgRFRTKHs5MjAwMDAwLzEwMDAwMDAgPSA5LjIw
MDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7OTIzMzAwMC8xMDAwMDAwID0gOS4yMzMwMDB9KSwgRFRTKHs5
MjMzMDAwLzEwMDAwMDAgPSA5LjIzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTI2NzAwMC8xMDAwMDAw
ID0gOS4yNjcwMDB9KSwgRFRTKHs5MjY3MDAwLzEwMDAwMDAgPSA5LjI2NzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7OTMwMDAwMC8xMDAwMDAwID0gOS4zMDAwMDB9KSwgRFRTKHs5MzAwMDAwLzEwMDAwMDAg
PSA5LjMwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTMzMzAwMC8xMDAwMDAwID0gOS4zMzMwMDB9KSwg
RFRTKHs5MzMzMDAwLzEwMDAwMDAgPSA5LjMzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTM2NzAwMC8x
MDAwMDAwID0gOS4zNjcwMDB9KSwgRFRTKHs5MzY3MDAwLzEwMDAwMDAgPSA5LjM2NzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7OTQwMDAwMC8xMDAwMDAwID0gOS40MDAwMDB9KSwgRFRTKHs5NDAwMDAwLzEw
MDAwMDAgPSA5LjQwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTQzMzAwMC8xMDAwMDAwID0gOS40MzMw
MDB9KSwgRFRTKHs5NDMzMDAwLzEwMDAwMDAgPSA5LjQzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTQ2
NzAwMC8xMDAwMDAwID0gOS40NjcwMDB9KSwgRFRTKHs5NDY3MDAwLzEwMDAwMDAgPSA5LjQ2NzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7OTUwMDAwMC8xMDAwMDAwID0gOS41MDAwMDB9KSwgRFRTKHs5NTAw
MDAwLzEwMDAwMDAgPSA5LjUwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTUzMzAwMC8xMDAwMDAwID0g
OS41MzMwMDB9KSwgRFRTKHs5NTMzMDAwLzEwMDAwMDAgPSA5LjUzMzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7OTU2NzAwMC8xMDAwMDAwID0gOS41NjcwMDB9KSwgRFRTKHs5NTY3MDAwLzEwMDAwMDAgPSA5
LjU2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTYwMDAwMC8xMDAwMDAwID0gOS42MDAwMDB9KSwgRFRT
KHs5NjAwMDAwLzEwMDAwMDAgPSA5LjYwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTYzMzAwMC8xMDAw
MDAwID0gOS42MzMwMDB9KSwgRFRTKHs5NjMzMDAwLzEwMDAwMDAgPSA5LjYzMzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7OTY2NzAwMC8xMDAwMDAwID0gOS42NjcwMDB9KSwgRFRTKHs5NjY3MDAwLzEwMDAw
MDAgPSA5LjY2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTcwMDAwMC8xMDAwMDAwID0gOS43MDAwMDB9
KSwgRFRTKHs5NzAwMDAwLzEwMDAwMDAgPSA5LjcwMDAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTczMzAw
MC8xMDAwMDAwID0gOS43MzMwMDB9KSwgRFRTKHs5NzMzMDAwLzEwMDAwMDAgPSA5LjczMzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7OTc2NzAwMC8xMDAwMDAwID0gOS43NjcwMDB9KSwgRFRTKHs5NzY3MDAw
LzEwMDAwMDAgPSA5Ljc2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTgwMDAwMC8xMDAwMDAwID0gOS44
MDAwMDB9KSwgRFRTKHs5ODAwMDAwLzEwMDAwMDAgPSA5LjgwMDAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
OTgzMzAwMC8xMDAwMDAwID0gOS44MzMwMDB9KSwgRFRTKHs5ODMzMDAwLzEwMDAwMDAgPSA5Ljgz
MzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7OTg2NzAwMC8xMDAwMDAwID0gOS44NjcwMDB9KSwgRFRTKHs5
ODY3MDAwLzEwMDAwMDAgPSA5Ljg2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTkwMDAwMC8xMDAwMDAw
ID0gOS45MDAwMDB9KSwgRFRTKHs5OTAwMDAwLzEwMDAwMDAgPSA5LjkwMDAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7OTkzMzAwMC8xMDAwMDAwID0gOS45MzMwMDB9KSwgRFRTKHs5OTMzMDAwLzEwMDAwMDAg
PSA5LjkzMzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7OTk2NzAwMC8xMDAwMDAwID0gOS45NjcwMDB9KSwg
RFRTKHs5OTY3MDAwLzEwMDAwMDAgPSA5Ljk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTAwMDAwMDAv
MTAwMDAwMCA9IDEwLjAwMDAwMH0pLCBEVFMoezEwMDAwMDAwLzEwMDAwMDAgPSAxMC4wMDAwMDB9
KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygxKSwgZ2VuZXJh
dGlvbigwKX0KK3tQVFMoezEwMDMzMDAwLzEwMDAwMDAgPSAxMC4wMzMwMDB9KSwgRFRTKHsxMDAz
MzAwMC8xMDAwMDAwID0gMTAuMDMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4w
MzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMDA2NzAwMC8xMDAwMDAw
ID0gMTAuMDY3MDAwfSksIERUUyh7MTAwNjcwMDAvMTAwMDAwMCA9IDEwLjA2NzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7MTAxMDAwMDAvMTAwMDAwMCA9IDEwLjEwMDAwMH0pLCBEVFMoezEwMTAwMDAwLzEw
MDAwMDAgPSAxMC4xMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30p
LCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEwMTMzMDAwLzEwMDAwMDAgPSAxMC4x
MzMwMDB9KSwgRFRTKHsxMDEzMzAwMC8xMDAwMDAwID0gMTAuMTMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHsxMDE2NzAwMC8xMDAwMDAwID0gMTAuMTY3MDAwfSksIERUUyh7MTAxNjcwMDAvMTAwMDAwMCA9
IDEwLjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTAyMDAwMDAvMTAwMDAwMCA9IDEwLjIwMDAwMH0p
LCBEVFMoezEwMjAwMDAwLzEwMDAwMDAgPSAxMC4yMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEw
MDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEwMjMz
MDAwLzEwMDAwMDAgPSAxMC4yMzMwMDB9KSwgRFRTKHsxMDIzMzAwMC8xMDAwMDAwID0gMTAuMjMz
MDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdl
bmVyYXRpb24oMCl9Cit7UFRTKHsxMDI2NzAwMC8xMDAwMDAwID0gMTAuMjY3MDAwfSksIERUUyh7
MTAyNjcwMDAvMTAwMDAwMCA9IDEwLjI2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTAzMDAwMDAvMTAw
MDAwMCA9IDEwLjMwMDAwMH0pLCBEVFMoezEwMzAwMDAwLzEwMDAwMDAgPSAxMC4zMDAwMDB9KSwg
ZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlv
bigwKX0KK3tQVFMoezEwMzMzMDAwLzEwMDAwMDAgPSAxMC4zMzMwMDB9KSwgRFRTKHsxMDMzMzAw
MC8xMDAwMDAwID0gMTAuMzMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMz
MzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMDM2NzAwMC8xMDAwMDAwID0g
MTAuMzY3MDAwfSksIERUUyh7MTAzNjcwMDAvMTAwMDAwMCA9IDEwLjM2NzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7MTA0MDAwMDAvMTAwMDAwMCA9IDEwLjQwMDAwMH0pLCBEVFMoezEwNDAwMDAwLzEwMDAw
MDAgPSAxMC40MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBm
bGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEwNDMzMDAwLzEwMDAwMDAgPSAxMC40MzMw
MDB9KSwgRFRTKHsxMDQzMzAwMC8xMDAwMDAwID0gMTAuNDMzMDAwfSksIGR1cmF0aW9uKHszMzMz
My8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsx
MDQ2NzAwMC8xMDAwMDAwID0gMTAuNDY3MDAwfSksIERUUyh7MTA0NjcwMDAvMTAwMDAwMCA9IDEw
LjQ2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTA1MDAwMDAvMTAwMDAwMCA9IDEwLjUwMDAwMH0pLCBE
VFMoezEwNTAwMDAwLzEwMDAwMDAgPSAxMC41MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAw
MDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEwNTMzMDAw
LzEwMDAwMDAgPSAxMC41MzMwMDB9KSwgRFRTKHsxMDUzMzAwMC8xMDAwMDAwID0gMTAuNTMzMDAw
fSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVy
YXRpb24oMCl9Cit7UFRTKHsxMDU2NzAwMC8xMDAwMDAwID0gMTAuNTY3MDAwfSksIERUUyh7MTA1
NjcwMDAvMTAwMDAwMCA9IDEwLjU2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTA2MDAwMDAvMTAwMDAw
MCA9IDEwLjYwMDAwMH0pLCBEVFMoezEwNjAwMDAwLzEwMDAwMDAgPSAxMC42MDAwMDB9KSwgZHVy
YXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigw
KX0KK3tQVFMoezEwNjMzMDAwLzEwMDAwMDAgPSAxMC42MzMwMDB9KSwgRFRTKHsxMDYzMzAwMC8x
MDAwMDAwID0gMTAuNjMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9
KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMDY2NzAwMC8xMDAwMDAwID0gMTAu
NjY3MDAwfSksIERUUyh7MTA2NjcwMDAvMTAwMDAwMCA9IDEwLjY2NzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7MTA3MDAwMDAvMTAwMDAwMCA9IDEwLjcwMDAwMH0pLCBEVFMoezEwNzAwMDAwLzEwMDAwMDAg
PSAxMC43MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFn
cygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEwNzMzMDAwLzEwMDAwMDAgPSAxMC43MzMwMDB9
KSwgRFRTKHsxMDczMzAwMC8xMDAwMDAwID0gMTAuNzMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8x
MDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMDc2
NzAwMC8xMDAwMDAwID0gMTAuNzY3MDAwfSksIERUUyh7MTA3NjcwMDAvMTAwMDAwMCA9IDEwLjc2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MTA4MDAwMDAvMTAwMDAwMCA9IDEwLjgwMDAwMH0pLCBEVFMo
ezEwODAwMDAwLzEwMDAwMDAgPSAxMC44MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAg
PSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEwODMzMDAwLzEw
MDAwMDAgPSAxMC44MzMwMDB9KSwgRFRTKHsxMDgzMzAwMC8xMDAwMDAwID0gMTAuODMzMDAwfSks
IGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRp
b24oMCl9Cit7UFRTKHsxMDg2NzAwMC8xMDAwMDAwID0gMTAuODY3MDAwfSksIERUUyh7MTA4Njcw
MDAvMTAwMDAwMCA9IDEwLjg2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTA5MDAwMDAvMTAwMDAwMCA9
IDEwLjkwMDAwMH0pLCBEVFMoezEwOTAwMDAwLzEwMDAwMDAgPSAxMC45MDAwMDB9KSwgZHVyYXRp
b24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0K
K3tQVFMoezEwOTMzMDAwLzEwMDAwMDAgPSAxMC45MzMwMDB9KSwgRFRTKHsxMDkzMzAwMC8xMDAw
MDAwID0gMTAuOTMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwg
ZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMDk2NzAwMC8xMDAwMDAwID0gMTAuOTY3
MDAwfSksIERUUyh7MTA5NjcwMDAvMTAwMDAwMCA9IDEwLjk2NzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
MTEwMDAwMDAvMTAwMDAwMCA9IDExLjAwMDAwMH0pLCBEVFMoezExMDAwMDAwLzEwMDAwMDAgPSAx
MS4wMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygw
KSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezExMDMzMDAwLzEwMDAwMDAgPSAxMS4wMzMwMDB9KSwg
RFRTKHsxMTAzMzAwMC8xMDAwMDAwID0gMTEuMDMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAw
MDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMTA2NzAw
MC8xMDAwMDAwID0gMTEuMDY3MDAwfSksIERUUyh7MTEwNjcwMDAvMTAwMDAwMCA9IDExLjA2NzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7MTExMDAwMDAvMTAwMDAwMCA9IDExLjEwMDAwMH0pLCBEVFMoezEx
MTAwMDAwLzEwMDAwMDAgPSAxMS4xMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAw
LjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezExMTMzMDAwLzEwMDAw
MDAgPSAxMS4xMzMwMDB9KSwgRFRTKHsxMTEzMzAwMC8xMDAwMDAwID0gMTEuMTMzMDAwfSksIGR1
cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24o
MCl9Cit7UFRTKHsxMTE2NzAwMC8xMDAwMDAwID0gMTEuMTY3MDAwfSksIERUUyh7MTExNjcwMDAv
MTAwMDAwMCA9IDExLjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTEyMDAwMDAvMTAwMDAwMCA9IDEx
LjIwMDAwMH0pLCBEVFMoezExMjAwMDAwLzEwMDAwMDAgPSAxMS4yMDAwMDB9KSwgZHVyYXRpb24o
ezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQ
VFMoezExMjMzMDAwLzEwMDAwMDAgPSAxMS4yMzMwMDB9KSwgRFRTKHsxMTIzMzAwMC8xMDAwMDAw
ID0gMTEuMjMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxh
Z3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMTI2NzAwMC8xMDAwMDAwID0gMTEuMjY3MDAw
fSksIERUUyh7MTEyNjcwMDAvMTAwMDAwMCA9IDExLjI2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTEz
MDAwMDAvMTAwMDAwMCA9IDExLjMwMDAwMH0pLCBEVFMoezExMzAwMDAwLzEwMDAwMDAgPSAxMS4z
MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwg
Z2VuZXJhdGlvbigwKX0KK3tQVFMoezExMzMzMDAwLzEwMDAwMDAgPSAxMS4zMzMwMDB9KSwgRFRT
KHsxMTMzMzAwMC8xMDAwMDAwID0gMTEuMzMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAw
ID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMTM2NzAwMC8x
MDAwMDAwID0gMTEuMzY3MDAwfSksIERUUyh7MTEzNjcwMDAvMTAwMDAwMCA9IDExLjM2NzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7MTE0MDAwMDAvMTAwMDAwMCA9IDExLjQwMDAwMH0pLCBEVFMoezExNDAw
MDAwLzEwMDAwMDAgPSAxMS40MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezExNDMzMDAwLzEwMDAwMDAg
PSAxMS40MzMwMDB9KSwgRFRTKHsxMTQzMzAwMC8xMDAwMDAwID0gMTEuNDMzMDAwfSksIGR1cmF0
aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9
Cit7UFRTKHsxMTQ2NzAwMC8xMDAwMDAwID0gMTEuNDY3MDAwfSksIERUUyh7MTE0NjcwMDAvMTAw
MDAwMCA9IDExLjQ2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTE1MDAwMDAvMTAwMDAwMCA9IDExLjUw
MDAwMH0pLCBEVFMoezExNTAwMDAwLzEwMDAwMDAgPSAxMS41MDAwMDB9KSwgZHVyYXRpb24oezMz
MzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMo
ezExNTMzMDAwLzEwMDAwMDAgPSAxMS41MzMwMDB9KSwgRFRTKHsxMTUzMzAwMC8xMDAwMDAwID0g
MTEuNTMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3Mo
MCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMTU2NzAwMC8xMDAwMDAwID0gMTEuNTY3MDAwfSks
IERUUyh7MTE1NjcwMDAvMTAwMDAwMCA9IDExLjU2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTE2MDAw
MDAvMTAwMDAwMCA9IDExLjYwMDAwMH0pLCBEVFMoezExNjAwMDAwLzEwMDAwMDAgPSAxMS42MDAw
MDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2Vu
ZXJhdGlvbigwKX0KK3tQVFMoezExNjMzMDAwLzEwMDAwMDAgPSAxMS42MzMwMDB9KSwgRFRTKHsx
MTYzMzAwMC8xMDAwMDAwID0gMTEuNjMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0g
MC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMTY2NzAwMC8xMDAw
MDAwID0gMTEuNjY3MDAwfSksIERUUyh7MTE2NjcwMDAvMTAwMDAwMCA9IDExLjY2NzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7MTE3MDAwMDAvMTAwMDAwMCA9IDExLjcwMDAwMH0pLCBEVFMoezExNzAwMDAw
LzEwMDAwMDAgPSAxMS43MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMz
M30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezExNzMzMDAwLzEwMDAwMDAgPSAx
MS43MzMwMDB9KSwgRFRTKHsxMTczMzAwMC8xMDAwMDAwID0gMTEuNzMzMDAwfSksIGR1cmF0aW9u
KHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7
UFRTKHsxMTc2NzAwMC8xMDAwMDAwID0gMTEuNzY3MDAwfSksIERUUyh7MTE3NjcwMDAvMTAwMDAw
MCA9IDExLjc2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTE4MDAwMDAvMTAwMDAwMCA9IDExLjgwMDAw
MH0pLCBEVFMoezExODAwMDAwLzEwMDAwMDAgPSAxMS44MDAwMDB9KSwgZHVyYXRpb24oezMzMzMz
LzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEx
ODMzMDAwLzEwMDAwMDAgPSAxMS44MzMwMDB9KSwgRFRTKHsxMTgzMzAwMC8xMDAwMDAwID0gMTEu
ODMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCks
IGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMTg2NzAwMC8xMDAwMDAwID0gMTEuODY3MDAwfSksIERU
Uyh7MTE4NjcwMDAvMTAwMDAwMCA9IDExLjg2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTE5MDAwMDAv
MTAwMDAwMCA9IDExLjkwMDAwMH0pLCBEVFMoezExOTAwMDAwLzEwMDAwMDAgPSAxMS45MDAwMDB9
KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJh
dGlvbigwKX0KK3tQVFMoezExOTMzMDAwLzEwMDAwMDAgPSAxMS45MzMwMDB9KSwgRFRTKHsxMTkz
MzAwMC8xMDAwMDAwID0gMTEuOTMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4w
MzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMTk2NzAwMC8xMDAwMDAw
ID0gMTEuOTY3MDAwfSksIERUUyh7MTE5NjcwMDAvMTAwMDAwMCA9IDExLjk2NzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7MTIwMDAwMDAvMTAwMDAwMCA9IDEyLjAwMDAwMH0pLCBEVFMoezEyMDAwMDAwLzEw
MDAwMDAgPSAxMi4wMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30p
LCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEyMDMzMDAwLzEwMDAwMDAgPSAxMi4w
MzMwMDB9KSwgRFRTKHsxMjAzMzAwMC8xMDAwMDAwID0gMTIuMDMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHsxMjA2NzAwMC8xMDAwMDAwID0gMTIuMDY3MDAwfSksIERUUyh7MTIwNjcwMDAvMTAwMDAwMCA9
IDEyLjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTIxMDAwMDAvMTAwMDAwMCA9IDEyLjEwMDAwMH0p
LCBEVFMoezEyMTAwMDAwLzEwMDAwMDAgPSAxMi4xMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEw
MDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEyMTMz
MDAwLzEwMDAwMDAgPSAxMi4xMzMwMDB9KSwgRFRTKHsxMjEzMzAwMC8xMDAwMDAwID0gMTIuMTMz
MDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdl
bmVyYXRpb24oMCl9Cit7UFRTKHsxMjE2NzAwMC8xMDAwMDAwID0gMTIuMTY3MDAwfSksIERUUyh7
MTIxNjcwMDAvMTAwMDAwMCA9IDEyLjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTIyMDAwMDAvMTAw
MDAwMCA9IDEyLjIwMDAwMH0pLCBEVFMoezEyMjAwMDAwLzEwMDAwMDAgPSAxMi4yMDAwMDB9KSwg
ZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlv
bigwKX0KK3tQVFMoezEyMjMzMDAwLzEwMDAwMDAgPSAxMi4yMzMwMDB9KSwgRFRTKHsxMjIzMzAw
MC8xMDAwMDAwID0gMTIuMjMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMz
MzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMjI2NzAwMC8xMDAwMDAwID0g
MTIuMjY3MDAwfSksIERUUyh7MTIyNjcwMDAvMTAwMDAwMCA9IDEyLjI2NzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7MTIzMDAwMDAvMTAwMDAwMCA9IDEyLjMwMDAwMH0pLCBEVFMoezEyMzAwMDAwLzEwMDAw
MDAgPSAxMi4zMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBm
bGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEyMzMzMDAwLzEwMDAwMDAgPSAxMi4zMzMw
MDB9KSwgRFRTKHsxMjMzMzAwMC8xMDAwMDAwID0gMTIuMzMzMDAwfSksIGR1cmF0aW9uKHszMzMz
My8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsx
MjM2NzAwMC8xMDAwMDAwID0gMTIuMzY3MDAwfSksIERUUyh7MTIzNjcwMDAvMTAwMDAwMCA9IDEy
LjM2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTI0MDAwMDAvMTAwMDAwMCA9IDEyLjQwMDAwMH0pLCBE
VFMoezEyNDAwMDAwLzEwMDAwMDAgPSAxMi40MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAw
MDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEyNDMzMDAw
LzEwMDAwMDAgPSAxMi40MzMwMDB9KSwgRFRTKHsxMjQzMzAwMC8xMDAwMDAwID0gMTIuNDMzMDAw
fSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVy
YXRpb24oMCl9Cit7UFRTKHsxMjQ2NzAwMC8xMDAwMDAwID0gMTIuNDY3MDAwfSksIERUUyh7MTI0
NjcwMDAvMTAwMDAwMCA9IDEyLjQ2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTI1MDAwMDAvMTAwMDAw
MCA9IDEyLjUwMDAwMH0pLCBEVFMoezEyNTAwMDAwLzEwMDAwMDAgPSAxMi41MDAwMDB9KSwgZHVy
YXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigw
KX0KK3tQVFMoezEyNTMzMDAwLzEwMDAwMDAgPSAxMi41MzMwMDB9KSwgRFRTKHsxMjUzMzAwMC8x
MDAwMDAwID0gMTIuNTMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9
KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMjU2NzAwMC8xMDAwMDAwID0gMTIu
NTY3MDAwfSksIERUUyh7MTI1NjcwMDAvMTAwMDAwMCA9IDEyLjU2NzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7MTI2MDAwMDAvMTAwMDAwMCA9IDEyLjYwMDAwMH0pLCBEVFMoezEyNjAwMDAwLzEwMDAwMDAg
PSAxMi42MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFn
cygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEyNjMzMDAwLzEwMDAwMDAgPSAxMi42MzMwMDB9
KSwgRFRTKHsxMjYzMzAwMC8xMDAwMDAwID0gMTIuNjMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8x
MDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMjY2
NzAwMC8xMDAwMDAwID0gMTIuNjY3MDAwfSksIERUUyh7MTI2NjcwMDAvMTAwMDAwMCA9IDEyLjY2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MTI3MDAwMDAvMTAwMDAwMCA9IDEyLjcwMDAwMH0pLCBEVFMo
ezEyNzAwMDAwLzEwMDAwMDAgPSAxMi43MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAg
PSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEyNzMzMDAwLzEw
MDAwMDAgPSAxMi43MzMwMDB9KSwgRFRTKHsxMjczMzAwMC8xMDAwMDAwID0gMTIuNzMzMDAwfSks
IGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRp
b24oMCl9Cit7UFRTKHsxMjc2NzAwMC8xMDAwMDAwID0gMTIuNzY3MDAwfSksIERUUyh7MTI3Njcw
MDAvMTAwMDAwMCA9IDEyLjc2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTI4MDAwMDAvMTAwMDAwMCA9
IDEyLjgwMDAwMH0pLCBEVFMoezEyODAwMDAwLzEwMDAwMDAgPSAxMi44MDAwMDB9KSwgZHVyYXRp
b24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0K
K3tQVFMoezEyODMzMDAwLzEwMDAwMDAgPSAxMi44MzMwMDB9KSwgRFRTKHsxMjgzMzAwMC8xMDAw
MDAwID0gMTIuODMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwg
ZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMjg2NzAwMC8xMDAwMDAwID0gMTIuODY3
MDAwfSksIERUUyh7MTI4NjcwMDAvMTAwMDAwMCA9IDEyLjg2NzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
MTI5MDAwMDAvMTAwMDAwMCA9IDEyLjkwMDAwMH0pLCBEVFMoezEyOTAwMDAwLzEwMDAwMDAgPSAx
Mi45MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygw
KSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEyOTMzMDAwLzEwMDAwMDAgPSAxMi45MzMwMDB9KSwg
RFRTKHsxMjkzMzAwMC8xMDAwMDAwID0gMTIuOTMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAw
MDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMjk2NzAw
MC8xMDAwMDAwID0gMTIuOTY3MDAwfSksIERUUyh7MTI5NjcwMDAvMTAwMDAwMCA9IDEyLjk2NzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7MTMwMDAwMDAvMTAwMDAwMCA9IDEzLjAwMDAwMH0pLCBEVFMoezEz
MDAwMDAwLzEwMDAwMDAgPSAxMy4wMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAw
LjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEzMDMzMDAwLzEwMDAw
MDAgPSAxMy4wMzMwMDB9KSwgRFRTKHsxMzAzMzAwMC8xMDAwMDAwID0gMTMuMDMzMDAwfSksIGR1
cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24o
MCl9Cit7UFRTKHsxMzA2NzAwMC8xMDAwMDAwID0gMTMuMDY3MDAwfSksIERUUyh7MTMwNjcwMDAv
MTAwMDAwMCA9IDEzLjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTMxMDAwMDAvMTAwMDAwMCA9IDEz
LjEwMDAwMH0pLCBEVFMoezEzMTAwMDAwLzEwMDAwMDAgPSAxMy4xMDAwMDB9KSwgZHVyYXRpb24o
ezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQ
VFMoezEzMTMzMDAwLzEwMDAwMDAgPSAxMy4xMzMwMDB9KSwgRFRTKHsxMzEzMzAwMC8xMDAwMDAw
ID0gMTMuMTMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxh
Z3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMzE2NzAwMC8xMDAwMDAwID0gMTMuMTY3MDAw
fSksIERUUyh7MTMxNjcwMDAvMTAwMDAwMCA9IDEzLjE2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMv
MTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTMy
MDAwMDAvMTAwMDAwMCA9IDEzLjIwMDAwMH0pLCBEVFMoezEzMjAwMDAwLzEwMDAwMDAgPSAxMy4y
MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwg
Z2VuZXJhdGlvbigwKX0KK3tQVFMoezEzMjMzMDAwLzEwMDAwMDAgPSAxMy4yMzMwMDB9KSwgRFRT
KHsxMzIzMzAwMC8xMDAwMDAwID0gMTMuMjMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAw
ID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMzI2NzAwMC8x
MDAwMDAwID0gMTMuMjY3MDAwfSksIERUUyh7MTMyNjcwMDAvMTAwMDAwMCA9IDEzLjI2NzAwMH0p
LCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0
aW9uKDApfQore1BUUyh7MTMzMDAwMDAvMTAwMDAwMCA9IDEzLjMwMDAwMH0pLCBEVFMoezEzMzAw
MDAwLzEwMDAwMDAgPSAxMy4zMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAz
MzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEzMzMzMDAwLzEwMDAwMDAg
PSAxMy4zMzMwMDB9KSwgRFRTKHsxMzMzMzAwMC8xMDAwMDAwID0gMTMuMzMzMDAwfSksIGR1cmF0
aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9
Cit7UFRTKHsxMzM2NzAwMC8xMDAwMDAwID0gMTMuMzY3MDAwfSksIERUUyh7MTMzNjcwMDAvMTAw
MDAwMCA9IDEzLjM2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTM0MDAwMDAvMTAwMDAwMCA9IDEzLjQw
MDAwMH0pLCBEVFMoezEzNDAwMDAwLzEwMDAwMDAgPSAxMy40MDAwMDB9KSwgZHVyYXRpb24oezMz
MzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMo
ezEzNDMzMDAwLzEwMDAwMDAgPSAxMy40MzMwMDB9KSwgRFRTKHsxMzQzMzAwMC8xMDAwMDAwID0g
MTMuNDMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3Mo
MCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMzQ2NzAwMC8xMDAwMDAwID0gMTMuNDY3MDAwfSks
IERUUyh7MTM0NjcwMDAvMTAwMDAwMCA9IDEzLjQ2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAw
MDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTM1MDAw
MDAvMTAwMDAwMCA9IDEzLjUwMDAwMH0pLCBEVFMoezEzNTAwMDAwLzEwMDAwMDAgPSAxMy41MDAw
MDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2Vu
ZXJhdGlvbigwKX0KK3tQVFMoezEzNTMzMDAwLzEwMDAwMDAgPSAxMy41MzMwMDB9KSwgRFRTKHsx
MzUzMzAwMC8xMDAwMDAwID0gMTMuNTMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0g
MC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMzU2NzAwMC8xMDAw
MDAwID0gMTMuNTY3MDAwfSksIERUUyh7MTM1NjcwMDAvMTAwMDAwMCA9IDEzLjU2NzAwMH0pLCBk
dXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9u
KDApfQore1BUUyh7MTM2MDAwMDAvMTAwMDAwMCA9IDEzLjYwMDAwMH0pLCBEVFMoezEzNjAwMDAw
LzEwMDAwMDAgPSAxMy42MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMz
M30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEzNjMzMDAwLzEwMDAwMDAgPSAx
My42MzMwMDB9KSwgRFRTKHsxMzYzMzAwMC8xMDAwMDAwID0gMTMuNjMzMDAwfSksIGR1cmF0aW9u
KHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7
UFRTKHsxMzY2NzAwMC8xMDAwMDAwID0gMTMuNjY3MDAwfSksIERUUyh7MTM2NjcwMDAvMTAwMDAw
MCA9IDEzLjY2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZs
YWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTM3MDAwMDAvMTAwMDAwMCA9IDEzLjcwMDAw
MH0pLCBEVFMoezEzNzAwMDAwLzEwMDAwMDAgPSAxMy43MDAwMDB9KSwgZHVyYXRpb24oezMzMzMz
LzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEz
NzMzMDAwLzEwMDAwMDAgPSAxMy43MzMwMDB9KSwgRFRTKHsxMzczMzAwMC8xMDAwMDAwID0gMTMu
NzMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCks
IGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMzc2NzAwMC8xMDAwMDAwID0gMTMuNzY3MDAwfSksIERU
Uyh7MTM3NjcwMDAvMTAwMDAwMCA9IDEzLjc2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAw
MCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTM4MDAwMDAv
MTAwMDAwMCA9IDEzLjgwMDAwMH0pLCBEVFMoezEzODAwMDAwLzEwMDAwMDAgPSAxMy44MDAwMDB9
KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJh
dGlvbigwKX0KK3tQVFMoezEzODMzMDAwLzEwMDAwMDAgPSAxMy44MzMwMDB9KSwgRFRTKHsxMzgz
MzAwMC8xMDAwMDAwID0gMTMuODMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4w
MzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxMzg2NzAwMC8xMDAwMDAw
ID0gMTMuODY3MDAwfSksIERUUyh7MTM4NjcwMDAvMTAwMDAwMCA9IDEzLjg2NzAwMH0pLCBkdXJh
dGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDAp
fQore1BUUyh7MTM5MDAwMDAvMTAwMDAwMCA9IDEzLjkwMDAwMH0pLCBEVFMoezEzOTAwMDAwLzEw
MDAwMDAgPSAxMy45MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30p
LCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEzOTMzMDAwLzEwMDAwMDAgPSAxMy45
MzMwMDB9KSwgRFRTKHsxMzkzMzAwMC8xMDAwMDAwID0gMTMuOTMzMDAwfSksIGR1cmF0aW9uKHsz
MzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRT
KHsxMzk2NzAwMC8xMDAwMDAwID0gMTMuOTY3MDAwfSksIERUUyh7MTM5NjcwMDAvMTAwMDAwMCA9
IDEzLjk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdz
KDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTQwMDAwMDAvMTAwMDAwMCA9IDE0LjAwMDAwMH0p
LCBEVFMoezE0MDAwMDAwLzEwMDAwMDAgPSAxNC4wMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEw
MDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezE0MDMz
MDAwLzEwMDAwMDAgPSAxNC4wMzMwMDB9KSwgRFRTKHsxNDAzMzAwMC8xMDAwMDAwID0gMTQuMDMz
MDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdl
bmVyYXRpb24oMCl9Cit7UFRTKHsxNDA2NzAwMC8xMDAwMDAwID0gMTQuMDY3MDAwfSksIERUUyh7
MTQwNjcwMDAvMTAwMDAwMCA9IDE0LjA2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9
IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTQxMDAwMDAvMTAw
MDAwMCA9IDE0LjEwMDAwMH0pLCBEVFMoezE0MTAwMDAwLzEwMDAwMDAgPSAxNC4xMDAwMDB9KSwg
ZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlv
bigwKX0KK3tQVFMoezE0MTMzMDAwLzEwMDAwMDAgPSAxNC4xMzMwMDB9KSwgRFRTKHsxNDEzMzAw
MC8xMDAwMDAwID0gMTQuMTMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMz
MzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxNDE2NzAwMC8xMDAwMDAwID0g
MTQuMTY3MDAwfSksIERUUyh7MTQxNjcwMDAvMTAwMDAwMCA9IDE0LjE2NzAwMH0pLCBkdXJhdGlv
bih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7MTQyMDAwMDAvMTAwMDAwMCA9IDE0LjIwMDAwMH0pLCBEVFMoezE0MjAwMDAwLzEwMDAw
MDAgPSAxNC4yMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBm
bGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezE0MjMzMDAwLzEwMDAwMDAgPSAxNC4yMzMw
MDB9KSwgRFRTKHsxNDIzMzAwMC8xMDAwMDAwID0gMTQuMjMzMDAwfSksIGR1cmF0aW9uKHszMzMz
My8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsx
NDI2NzAwMC8xMDAwMDAwID0gMTQuMjY3MDAwfSksIERUUyh7MTQyNjcwMDAvMTAwMDAwMCA9IDE0
LjI2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTQzMDAwMDAvMTAwMDAwMCA9IDE0LjMwMDAwMH0pLCBE
VFMoezE0MzAwMDAwLzEwMDAwMDAgPSAxNC4zMDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAw
MDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezE0MzMzMDAw
LzEwMDAwMDAgPSAxNC4zMzMwMDB9KSwgRFRTKHsxNDMzMzAwMC8xMDAwMDAwID0gMTQuMzMzMDAw
fSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVy
YXRpb24oMCl9Cit7UFRTKHsxNDM2NzAwMC8xMDAwMDAwID0gMTQuMzY3MDAwfSksIERUUyh7MTQz
NjcwMDAvMTAwMDAwMCA9IDE0LjM2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAu
MDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTQ0MDAwMDAvMTAwMDAw
MCA9IDE0LjQwMDAwMH0pLCBEVFMoezE0NDAwMDAwLzEwMDAwMDAgPSAxNC40MDAwMDB9KSwgZHVy
YXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigw
KX0KK3tQVFMoezE0NDMzMDAwLzEwMDAwMDAgPSAxNC40MzMwMDB9KSwgRFRTKHsxNDQzMzAwMC8x
MDAwMDAwID0gMTQuNDMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9
KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxNDQ2NzAwMC8xMDAwMDAwID0gMTQu
NDY3MDAwfSksIERUUyh7MTQ0NjcwMDAvMTAwMDAwMCA9IDE0LjQ2NzAwMH0pLCBkdXJhdGlvbih7
MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7MTQ1MDAwMDAvMTAwMDAwMCA9IDE0LjUwMDAwMH0pLCBEVFMoezE0NTAwMDAwLzEwMDAwMDAg
PSAxNC41MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFn
cygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezE0NTMzMDAwLzEwMDAwMDAgPSAxNC41MzMwMDB9
KSwgRFRTKHsxNDUzMzAwMC8xMDAwMDAwID0gMTQuNTMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8x
MDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxNDU2
NzAwMC8xMDAwMDAwID0gMTQuNTY3MDAwfSksIERUUyh7MTQ1NjcwMDAvMTAwMDAwMCA9IDE0LjU2
NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBn
ZW5lcmF0aW9uKDApfQore1BUUyh7MTQ2MDAwMDAvMTAwMDAwMCA9IDE0LjYwMDAwMH0pLCBEVFMo
ezE0NjAwMDAwLzEwMDAwMDAgPSAxNC42MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAg
PSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezE0NjMzMDAwLzEw
MDAwMDAgPSAxNC42MzMwMDB9KSwgRFRTKHsxNDYzMzAwMC8xMDAwMDAwID0gMTQuNjMzMDAwfSks
IGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRp
b24oMCl9Cit7UFRTKHsxNDY2NzAwMC8xMDAwMDAwID0gMTQuNjY3MDAwfSksIERUUyh7MTQ2Njcw
MDAvMTAwMDAwMCA9IDE0LjY2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMz
MzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTQ3MDAwMDAvMTAwMDAwMCA9
IDE0LjcwMDAwMH0pLCBEVFMoezE0NzAwMDAwLzEwMDAwMDAgPSAxNC43MDAwMDB9KSwgZHVyYXRp
b24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0K
K3tQVFMoezE0NzMzMDAwLzEwMDAwMDAgPSAxNC43MzMwMDB9KSwgRFRTKHsxNDczMzAwMC8xMDAw
MDAwID0gMTQuNzMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwg
ZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxNDc2NzAwMC8xMDAwMDAwID0gMTQuNzY3
MDAwfSksIERUUyh7MTQ3NjcwMDAvMTAwMDAwMCA9IDE0Ljc2NzAwMH0pLCBkdXJhdGlvbih7MzMz
MzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7
MTQ4MDAwMDAvMTAwMDAwMCA9IDE0LjgwMDAwMH0pLCBEVFMoezE0ODAwMDAwLzEwMDAwMDAgPSAx
NC44MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAwLjAzMzMzM30pLCBmbGFncygw
KSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezE0ODMzMDAwLzEwMDAwMDAgPSAxNC44MzMwMDB9KSwg
RFRTKHsxNDgzMzAwMC8xMDAwMDAwID0gMTQuODMzMDAwfSksIGR1cmF0aW9uKHszMzMzMy8xMDAw
MDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxNDg2NzAw
MC8xMDAwMDAwID0gMTQuODY3MDAwfSksIERUUyh7MTQ4NjcwMDAvMTAwMDAwMCA9IDE0Ljg2NzAw
MH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMzfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7MTQ5MDAwMDAvMTAwMDAwMCA9IDE0LjkwMDAwMH0pLCBEVFMoezE0
OTAwMDAwLzEwMDAwMDAgPSAxNC45MDAwMDB9KSwgZHVyYXRpb24oezMzMzMzLzEwMDAwMDAgPSAw
LjAzMzMzM30pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezE0OTMzMDAwLzEwMDAw
MDAgPSAxNC45MzMwMDB9KSwgRFRTKHsxNDkzMzAwMC8xMDAwMDAwID0gMTQuOTMzMDAwfSksIGR1
cmF0aW9uKHszMzMzMy8xMDAwMDAwID0gMC4wMzMzMzN9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24o
MCl9Cit7UFRTKHsxNDk2NzAwMC8xMDAwMDAwID0gMTQuOTY3MDAwfSksIERUUyh7MTQ5NjcwMDAv
MTAwMDAwMCA9IDE0Ljk2NzAwMH0pLCBkdXJhdGlvbih7MzMzMzMvMTAwMDAwMCA9IDAuMDMzMzMz
fSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYWNiLXRv
bGVyYW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJj
ZS1hcHBlbmQtYWNiLXRvbGVyYW5jZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyOTYwMWQwOGQ2YzEyMTBh
NTFkOWJjNmI3NTczMTEyNzlkMDUyMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1hY2ItdG9sZXJhbmNlLmh0bWwK
QEAgLTAsMCArMSw4MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0
aXRsZT5tZWRpYS1zb3VyY2UtYXBwZW5kLWFjYi10b2xlcmFuY2U8L3RpdGxlPgorICAgIDxzY3Jp
cHQgc3JjPSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHNvdXJj
ZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworICAgIHZhciBpbml0U2VnbWVudDsKKyAgICB2YXIg
YnVmZmVyZWRTYW1wbGVzOworICAgIHZhciBlbnF1ZXVlZFNhbXBsZXM7CisKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3Vy
Y2UoKTsKKworICAgIGZ1bmN0aW9uIGltcHJlY2lzZVNhbXBsZVJ1bihzdGFydCwgZW5kKSB7Cisg
ICAgICAgIC8vIEEgY29tbW9uIGNhc2UgZm9yIFdlYk0gZmlsZXMgaXMgZm9yIGR1cmF0aW9uIHRv
IGhhdmUgZ3JlYXRlciBwcmVjaXNpb24gdGhhbiB0aW1lc3RhbXBzLgorICAgICAgICAvLyBUaGlz
IGlzIGJlY2F1c2UgRGVmYXVsdER1cmF0aW9uIGlzIGFsd2F5cyBzZXQgaW4gbmFub3NlY29uZHMg
KHBlciBzcGVjKSwgd2hpbGUgb3RoZXIgdGltZXN0YW1wcyBhcmUgc2V0IGluCisgICAgICAgIC8v
IFRpbWVzY2FsZSAodXN1YWxseSBtaWxsaXNlY29uZHMpLgorICAgICAgICAvLyBUaGVzZSBzZXR0
aW5ncyB0cnkgdG8gcmVwbGljYXRlIHRoZSB0aW1pbmcgZm91bmQgaW4gYSB0eXBpY2FsIFdlYk0g
MzAgZnBzIHZpZGVvLgorICAgICAgICAvLyBEdXJhdGlvbiBoZXJlIGlzIHNldCB0byBtaWNyb3Nl
Y29uZHMgaW5zdGVhZCBvZiBuYW5vc2Vjb25kcyBiZWNhdXNlIG90aGVyd2lzZSBNb2NrU2FtcGxl
Qm94IHdvdWxkIG92ZXJmbG93CisgICAgICAgIC8vIGFmdGVyIGp1c3QgMi4xMzMgc2Vjb25kcy4K
KyAgICAgICAgY29uc3Qgc2FtcGxlcyA9IFtdOworICAgICAgICBjb25zdCBmcHMgPSAzMDsKKyAg
ICAgICAgY29uc3QgbnVtRnJhbWVzID0gKGVuZCAtIHN0YXJ0KSAqIGZwczsKKyAgICAgICAgZm9y
IChsZXQgbnVtRnJhbWUgPSAwOyBudW1GcmFtZSA8IG51bUZyYW1lczsgbnVtRnJhbWUrKykgewor
ICAgICAgICAgICAgY29uc3QgcHRzTWlsbGlzZWNvbmRzID0gTWF0aC5yb3VuZCgxMDAwICogKHN0
YXJ0ICsgbnVtRnJhbWUgLyBmcHMpKTsKKyAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uTWljcm9z
ZWNvbmRzID0gMzMzMzM7CisgICAgICAgICAgICBzYW1wbGVzLnB1c2gobWFrZUFTYW1wbGUoMTAw
MCAqIHB0c01pbGxpc2Vjb25kcywgMTAwMCAqIHB0c01pbGxpc2Vjb25kcywgZHVyYXRpb25NaWNy
b3NlY29uZHMsIDFlNiwKKyAgICAgICAgICAgICAgICAxLCBudW1GcmFtZSA9PT0gMCA/IFNBTVBM
RV9GTEFHLlNZTkMgOiBTQU1QTEVfRkxBRy5OT05FKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGNvbmNhdGVuYXRlU2FtcGxlcyhzYW1wbGVzKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jICgpID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxl
bWVudCgpOworICAgICAgICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgdGVz
dEV4cGVjdGVkKCdzb3VyY2UucmVhZHlTdGF0ZScsICdjbG9zZWQnKTsKKyAgICAgICAgY29uc3Qg
c291cmNlT3BlbmVkID0gd2FpdEZvcihzb3VyY2UsICdzb3VyY2VvcGVuJyk7CisKKyAgICAgICAg
Y29uc3QgdmlkZW9Tb3VyY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzb3VyY2UnKTsKKyAg
ICAgICAgdmlkZW9Tb3VyY2UudHlwZSA9ICd2aWRlby9tb2NrOyBjb2RlY3M9bW9jayc7CisgICAg
ICAgIHZpZGVvU291cmNlLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKTsKKyAgICAg
ICAgdmlkZW8uYXBwZW5kQ2hpbGQodmlkZW9Tb3VyY2UpOworCisgICAgICAgIGF3YWl0IHNvdXJj
ZU9wZW5lZDsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVm
ZmVyKCJ2aWRlby9tb2NrOyBjb2RlY3M9bW9jayIpJyk7CisKKyAgICAgICAgaW5pdFNlZ21lbnQg
PSBtYWtlQUluaXQoMTUsIFttYWtlQVRyYWNrKDEsICdtb2NrJywgVFJBQ0tfS0lORC5WSURFTyld
KTsKKworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIoaW5pdFNlZ21lbnQp
Jyk7CisgICAgICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlQnVmZmVyLCAndXBkYXRlZW5kJyk7CisK
KyAgICAgICAgLy8gU2VnbWVudCBBCisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1
ZmZlcihpbXByZWNpc2VTYW1wbGVSdW4oMCwgNSkpJyk7CisgICAgICAgIGF3YWl0IHdhaXRGb3Io
c291cmNlQnVmZmVyLCAndXBkYXRlZW5kJyk7CisKKyAgICAgICAgLy8gU2VnbWVudCBDCisgICAg
ICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbXByZWNpc2VTYW1wbGVSdW4oMTAs
IDE1KSknKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcihzb3VyY2VCdWZmZXIsICd1cGRhdGVlbmQn
KTsKKworICAgICAgICAvLyBTZWdtZW50IEIKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIuYXBw
ZW5kQnVmZmVyKGltcHJlY2lzZVNhbXBsZVJ1big1LCAxMCkpJyk7CisgICAgICAgIGF3YWl0IHdh
aXRGb3Ioc291cmNlQnVmZmVyLCAndXBkYXRlZW5kJyk7CisKKyAgICAgICAgYnVmZmVyZWRTYW1w
bGVzID0gaW50ZXJuYWxzLmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoc291cmNlQnVmZmVyLCAx
KTsKKyAgICAgICAgZW5xdWV1ZWRTYW1wbGVzID0gaW50ZXJuYWxzLmVucXVldWVkU2FtcGxlc0Zv
clRyYWNrSUQoc291cmNlQnVmZmVyLCAxKTsKKworICAgICAgICAvLyAzMCBzYW1wbGVzIHdlcmUg
YXBwZW5kZWQgaW4gdG90YWwuIEFsbCBvZiB0aGVtIHNob3VsZCBoYXZlIGVuZGVkIHVwIGluIGJ1
ZmZlcmVkIHNhbXBsZXMgYW5kIGluIHRoZSBkZWNvZGUgcXVldWUuCisgICAgICAgIHRlc3RFeHBl
Y3RlZCgnYnVmZmVyZWRTYW1wbGVzLmxlbmd0aCcsIDE1ICogMzApOworICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ2VucXVldWVkU2FtcGxlcy5sZW5ndGgnLCAxNSAqIDMwKTsKKworICAgICAgICBlbnF1
ZXVlZFNhbXBsZXMuZm9yRWFjaChjb25zb2xlV3JpdGUpOworCisgICAgICAgIGVuZFRlc3QoKTsK
KyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBjb250
cm9scz48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354478</attachid>
            <date>2018-11-10 15:16:33 -0800</date>
            <delta_ts>2018-11-12 06:02:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190902-20181111001631.patch</filename>
            <type>text/plain</type>
            <size>56964</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzUwNzU1MGZhNzViMjg2
YjU3YmIyMjhiN2FiNmExNDJiNDVmODFmYi4uNWRkMWYyNDczYWM0M2VmNzgzOTI3MTRjYmNjMWUy
YmJhOGRjZTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE4LTEwLTI1ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXVtHU3Ry
ZWFtZXJdIEludHJvZHVjZSBBYm9ydGFibGVUYXNrUXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IHN5bmNocm9uaXphdGlvbiBwcmltaXRp
dmUgaXMgaW50cm9kdWNlZDogQWJvcnRhYmxlVGFza1F1ZXVlLAorICAgICAgICB3aGljaCBhbGxv
d3MgdG8gc2VuZCB3b3JrIHRvIHRoZSBtYWluIHRocmVhZCBmcm9tIGEgYmFja2dyb3VuZCB0aHJl
YWQKKyAgICAgICAgd2l0aCB0aGUgb3B0aW9uIHRvIHBlcmZvcm0gdHdvLXBoYXNlIGNhbmNlbGxh
dGlvbiAoc3RhcnRBYm9ydGluZygpIGFuZAorICAgICAgICBmaW5pc2hBYm9ydGluZygpKS4KKwor
ICAgICAgICBUaGlzIG5ldyBwcmltaXRpdmUgaGFzIGJlZW4gdXNlZCB0byBvdmVyaGF1bCBHc3RC
dXMgbWVzc2FnaW5nIGluCisgICAgICAgIEFwcGVuZFBpcGVsaW5lLiBBIGxvdCBvZiBjb2RlIG1h
ZGUgcmVkdW5kYW50IGhhcyBiZWVuIGRlbGV0ZWQgaW4gdGhlCisgICAgICAgIHByb2Nlc3MgYW5k
IGxvdHMgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHdlcmUgbm93IGFibGUgdG8gYmUgbWFkZQorICAg
ICAgICBwcml2YXRlLiBBcyBwYXJ0IG9mIHRoZSByZWZhY3RvciBhbGwgZ2xpYiBzaWduYWxzIGlu
IEFwcGVuZFBpcGVsaW5lCisgICAgICAgIG5vdyB1c2UgbGFtYmRhcy4KKworICAgICAgICBUd28t
cGhhc2UgY2FuY2VsbGF0aW9uIGlzIHN0aWxsIG5vdCB1c2VkIGluIEFwcGVuZFBpcGVsaW5lIGFz
IG9mIHRoaXMKKyAgICAgICAgcGF0Y2gsIGJ1dCBpdCB3aWxsIGJlIHVzZWQgaW4gYSBmdXR1cmUg
cGF0Y2ggdGhhdCBtYWtlcyB1c2Ugb2YKKyAgICAgICAgR1N0cmVhbWVyIGZsdXNoZXMgdG8gaW1w
bGVtZW50IGNvcnJlY3QgTVNFIGFib3J0IHNlbWFudGljcy4gVGhlcmUgYXJlCisgICAgICAgIHVu
aXQgdGVzdHMgdG8gZW5zdXJlIGl0IHdvcmtzIGNvcnJlY3RseSwgZXZlbiBpZiBpdCdzIHN0aWxs
IG5vdCB1c2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHBsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpkdW1wQXBwZW5kU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwZW5kUGlwZWxpbmU6OmFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tlclByb2JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpoYW5kbGVBcHBzaW5rTmV3U2FtcGxlRnJv
bUFueVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6Y29ubmVjdERl
bXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmg6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBlbmRQaXBlbGluZTo6c291cmNlQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBlbmRQaXBlbGluZTo6YXBwc2lua0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5k
UGlwZWxpbmU6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpkZW11
eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cGxheWVy
UHJpdmF0ZSk6CisKIDIwMTgtMTAtMzEgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtNU0VdIFVzZSB0b2xlcmFuY2Ugd2hlbiBncm93aW5nIHRoZSBj
b2RlZCBmcmFtZSBncm91cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDExY2IwZTdjNTY5ZjUwYjZiYWFhYWI1ZDcxOTgyNWNkNmUx
MGE1YjIuLjlkZjU0ZDQwNjIyYzVkODYxM2RhNGU5Y2JlZmM0NTQ2MDU2MTU1NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NDAsNiArMTI0MCw3IEBACiAJCTQ2Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUx
OTIyMDdENjMyRTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCQ0JCQzIyMDg1MDA4RjAwNzEwNjM4IC8q
IEpTUmVtb3RlRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCQ0JCQzAyMDg1MDA3RjAwNzEwNjM4IC8qIEpTUmVtb3RlRE9NV2lu
ZG93QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2QzM3NjYyMjA4NTE3N0QwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMzc2NjEyMDg1MTc2
RDAwQzczODI5IC8qIEpTUmVtb3RlRE9NV2luZG93LmggKi87IH07CisJCUNENUYzRUREOUQzMzND
NDBBOUEzOEE1NCAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGREI5MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9y
dGFibGVUYXNrUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkM2OTZDQjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2QzkxRTcyMDVF
NDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2
OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZF
MUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05v
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTc2ODIsNiArNzY4Myw3IEBACiAJCTQ2QkNCQkMzMjA4NTAwQTcwMDcxMDYzOCAvKiBSZW1v
dGVET01XaW5kb3cuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzM3NjVGMjA4NTE3NkMwMEM3Mzgy
OSAvKiBKU1JlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1JlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2QzM3NjYxMjA4NTE3NkQwMEM3MzgyOSAvKiBKU1JlbW90ZURPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZURPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlERkRCOTEyQ0Y4RTg4QTZEQTFBRDI2NEYgLyogQWJvcnRh
YmxlVGFza1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFib3J0YWJs
ZVRhc2tRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDOTFFNzIw
NUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDUFVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzY5NkNB
MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENQVU1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90aWZpZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjQ4NTYsNiArMjQ4NTgsNyBAQAogCQkJCTFBMkU2RTU2MEND
NTUxRTAwMDRBMjA2MiAvKiBzcWwgKi8sCiAJCQkJQjJDM0Q5RUMwRDAwNkMxRDAwRUY2RjI2IC8q
IHRleHQgKi8sCiAJCQkJRTE4ODIzNUYyMDMxRjUwRjAwQjQyREYzIC8qIHZyICovLAorCQkJCURG
REI5MTJDRjhFODhBNkRBMUFEMjY0RiAvKiBBYm9ydGFibGVUYXNrUXVldWUuaCAqLywKIAkJCQk0
OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi8sCiAJCQkJ
NDlBRTJEOTUxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUuaCAqLywKIAkJCQlD
MzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkNjRlYmE5
YzM4ODQ3M2Q2ZDcwOGYyNGVhZDM5ZjZlMDg2MTUwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAtMCwwICsxLDIzMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEsIFMuTC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLyogQWJvcnRhYmxlVGFza1F1ZXVlIGlzIGEgaGlnaC1sZXZlbCBzeW5jaHJvbml6YXRpb24g
b2JqZWN0IGZvciBjYXNlcyB3aGVyZSBhYm9ydGFibGUgd29yayBpcyBkb25lIGluCisgKiBiYWNr
Z3JvdW5kIHRocmVhZChzKSB0aGF0IHNvbWV0aW1lcyBuZWVkcyB0byBwb3N0IHRhc2tzIHRvIHRo
ZSBtYWluIHRocmVhZC4KKyAqCisgKiBUaGUgdGFza3MgcG9zdGVkIGJ5IHRoZSBiYWNrZ3JvdW5k
IHRocmVhZChzKSB0byB0aGUgbWFpbiB0aHJlYWQgbWF5IGJlIGFzeW5jaHJvbm91cywgdXNpbmcg
dHJ5RW5xdWV1ZVRhc2soKSwKKyAqIHdoaWNoIHJldHVybnMgaW1tZWRpYXRlbHk7IG9yIHN5bmNo
cm9ub3VzLCB1c2luZyB0cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseSgpLCB3aGljaCBibG9j
a3MgdGhlIGNhbGxpbmcKKyAqIGJhY2tncm91bmQgdGhyZWFkIHVudGlsIHRoZSB0YXNrIGlzIHJ1
biBieSB0aGUgbWFpbiB0aHJlYWQgKHBvc3NpYmx5IHJldHVybmluZyBhIHZhbHVlKS4KKyAqCisg
KiBXaGF0IG1ha2VzIEFib3J0YWJsZVRhc2tRdWV1ZSBkaWZmZXJlbnQgZnJvbSBvdGhlciB0YXNr
IHF1ZXVlaW5nIG1lY2hhbmlzbXMgaXMgdGhhdCBpdCBwcm92aWRlcyBhIHR3by1waGFzZQorICog
cHJvdG9jb2wgZm9yIGFib3J0aW5nIHRoZSB3b3JrIGluIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCBp
biBwcmVzZW5jZSBvZiBxdWV1ZWQgdGFza3Mgd2l0aG91dCBkZWFkbG9ja3Mgb3IKKyAqIGxhdGUg
bm90aWZpY2F0aW9uIGJ1Z3MuCisgKgorICogV2l0aG91dCBhIHR3by1waGFzZSBkZXNpZ24gZGVh
ZGxvY2tzIHdvdWxkIG9jY3VyIHdoZW4gYXR0ZW1wdGluZyBhbiBhYm9ydCBpZiBhIGJhY2tncm91
bmQgdGhyZWFkIHdhcworICogYmxvY2tlZCBpbiBhIHN5bmNocm9ub3VzIHRhc2sgYW5kIG5lZWRl
ZCB0byByZXR1cm4gZnJvbSB0aGVyZSBmb3IgdGhlIGFib3J0IHRvIGJlIGhhbmRsZWQuIEFsc28s
IHdpdGhvdXQKKyAqIGEgZGVzaWduIGxpa2UgdGhpcywgdGFza3MgYWxyZWFkeSBlbnF1ZXVlZCBh
dCB0aGF0IHBvaW50IG9yIHNvb24gdGhlcmVhZnRlciB1bnRpbCB0aGUgYWJvcnQgaXMgY29tcGxl
dGUKKyAqIHdvdWxkIHN0aWxsIGJlIGhhbmRsZWQgYnkgdGhlIG1haW4gdGhyZWFkLCBldmVuIHRo
b3VnaCB3ZSBkb24ndCB3YW50IHRvIGFueW1vcmUuCisgKgorICogQWJvcnRpbmcgYmFja2dyb3Vu
ZCBwcm9jZXNzaW5nIHdpdGggQWJvcnRhYmxlVGFza1F1ZXVlIGlzIGEgc2V2ZXJhbCBzdGVwIHBy
b2Nlc3M6CisgKgorICogIDEuIENhbGwgYWJvcnRhYmxlVGFza1F1ZXVlLnN0YXJ0QWJvcnRpbmco
KSAtLSBUaGlzIHdpbGwgbWFrZSBhbnkgY3VycmVudCBvciBmdXR1cmUgKHVudGlsIGZ1cnRoZXIg
bm90aWNlKQorICogICAgIHN5bmNocm9ub3VzIHRhc2tzIGZhaWwgaW1tZWRpYXRlbHksIHNvIHRo
YXQgd2UgZG9uJ3QgZGVhZGxvY2sgaW4gdGhlIG5leHQgc3RlcC4gQWxzbywgdGFza3Mgb2YgYW55
IGtpbmQKKyAqICAgICBhbHJlYWR5IGVucXVldWVkIHdpbGwgbm90IGJlIHJ1bi4KKyAqCisgKiAg
Mi4gU2VuZCB0aGUgYWJvcnQgc2lnbmFsIHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMuIFRoaXMg
aXMgY29tcGxldGVseSBhcHBsaWNhdGlvbiBzcGVjaWZpYy4gRm9yIGluc3RhbmNlLAorICogICAg
IGluIHRoZSBBcHBlbmRQaXBlbGluZSBjYXNlIHlvdSB3b3VsZCBmbHVzaCBvciByZXNldCB0aGUg
R1N0cmVhbWVyIHBpcGVsaW5lIGhlcmUuIFdhaXQgdW50aWwgYWxsIHRoZQorICogICAgIGJhY2tn
cm91bmQgdGhyZWFkcyBoYXZlIGZpbmlzaGVkIGFib3J0aW5nLgorICoKKyAqICAzLiBDYWxsIGFi
b3J0YWJsZVRhc2tRdWV1ZS5maW5pc2hBYm9ydGluZygpIC0tIFRoaXMgd2lsbCBhbGxvdyBuZXcg
dGFza3MgcXVldWVkIGZyb20gdGhpcyBwb2ludCBvbiB0byBiZQorICogICAgIGhhbmRsZWQganVz
dCBhcyBiZWZvcmUgdGhlIGFib3J0IHdhcyBtYWRlLgorICoKKyAqICA0LiBBZnRlciB0aGlzLCB0
aGUgYmFja2dyb3VuZCB0aHJlYWQocykgY2FuIGJlIHB1dCB0byB3b3JrIGFnYWluIHNhZmVseS4K
KyAqCisgKiBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIGhhbmRsaW5nIGRlbXV4ZXIgZXZlbnRzIGlu
IEFwcGVuZFBpcGVsaW5lLCB0YWtpbmcgaW50byBhY2NvdW50IGRlbXV4aW5nIGNhbiBiZQorICog
YWJvcnRlZCBhdCBhbnkgbW9tZW50IGlmIFNvdXJjZUJ1ZmZlci5hYm9ydCgpIGlzIGNhbGxlZCBv
ciB0aGUgU291cmNlQnVmZmVyIGlzIGRlc3Ryb3llZC4gKi8KK2NsYXNzIEFib3J0YWJsZVRhc2tR
dWV1ZSBmaW5hbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJvcnRhYmxlVGFza1F1ZXVl
KTsKK3B1YmxpYzoKKyAgICBBYm9ydGFibGVUYXNrUXVldWUoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICB9CisKKyAgICB+QWJvcnRhYmxlVGFza1F1ZXVlKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVCgh
bV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAgIEFTU0VSVChtX2NoYW5uZWwuaXNFbXB0eSgpKTsK
KyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBNZXRo
b2RzIGZvciB0aGUgbWFpbiB0aHJlYWQKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT0KKworICAgIC8vIFN0YXJ0cyBhbiBhYm9ydCBwcm9jZXNzLgorICAgIC8vCisgICAgLy8gVGFz
a3MgYWxyZWFkeSBxdWV1ZWQgd2lsbCBiZSBkaXNjYXJkZWQuCisgICAgLy8KKyAgICAvLyBVbnRp
bCBmaW5pc2hBYm9ydGluZyBpcyBjYWxsZWQsIGFsbCBwcmVzZW50IGFuZCBmdXR1cmUgY2FsbHMg
dG8gdHJ5RW5xdWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHkoKSB3aWxsIGltbWVkaWF0ZWx5CisgICAg
Ly8gcmV0dXJuIGFuIGVtcHR5IG9wdGlvbmFsLgorICAgIC8vCisgICAgLy8gVGhpcyBtZXRob2Qg
aXMgaWRlbXBvdGVudC4KKyAgICB2b2lkIHN0YXJ0QWJvcnRpbmcoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgICAgICBtX2Fib3J0aW5nID0gdHJ1ZTsK
KyAgICAgICAgICAgIGNhbmNlbEFsbFRhc2tzKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9hYm9y
dGVkT3JSZXNwb25zZVNldC5ub3RpZnlBbGwoKTsKKyAgICB9CisKKyAgICAvLyBEZWNsYXJlcyB0
aGUgcHJldmlvdXMgYWJvcnQgZmluaXNoZWQuCisgICAgLy8KKyAgICAvLyBJbiBvcmRlciB0byBh
dm9pZCByYWNlIGNvbmRpdGlvbnMgdGhlIGJhY2tncm91bmQgdGhyZWFkcyBtdXN0IGJlIHVuYWJs
ZSB0byBwb3N0IHRhc2tzIGF0IHRoaXMgcG9pbnQuCisgICAgdm9pZCBmaW5pc2hBYm9ydGluZygp
CisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgICAgIExvY2tI
b2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgQVNTRVJUKG1fYWJvcnRpbmcpOwor
ICAgICAgICBtX2Fib3J0aW5nID0gZmFsc2U7CisgICAgfQorCisgICAgLy8gPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIE1ldGhvZHMgZm9yIHRoZSBiYWNrZ3JvdW5k
IHRocmVhZHMKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAg
ICAvLyBFbnF1ZXVlIGEgdGFzayB0byBiZSBydW4gb24gdGhlIG1haW4gdGhyZWFkLiBUaGUgdGFz
ayBtYXkgYmUgY2FuY2VsbGVkIGlmIGFuIGFib3J0IHN0YXJ0cyBiZWZvcmUgaXQncworICAgIC8v
IGhhbmRsZWQuCisgICAgdm9pZCB0cnlFbnF1ZXVlVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBtYWluVGhyZWFkVGFza0hhbmRsZXIpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tI
b2xkZXIobV9tdXRleCk7CisgICAgICAgIGlmIChtX2Fib3J0aW5nKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHBvc3RUYXNrKFdURk1vdmUobWFpblRocmVhZFRhc2tIYW5kbGVyKSk7
CisgICAgfQorCisgICAgLy8gRW5xdWV1ZSBhIHRhc2sgdG8gYmUgcnVuIG9uIHRoZSBtYWluIHRo
cmVhZCBhbmQgd2FpdCBmb3IgaXQgdG8gcmV0dXJuLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0
YXNrIGlzCisgICAgLy8gZm9yd2FyZGVkIHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCwgd3JhcHBl
ZCBpbiBhbiBvcHRpb25hbC4KKyAgICAvLworICAgIC8vIElmIHdlIGFyZSBhYm9ydGluZywgdGhl
IGNhbGwgZmluaXNoZXMgaW1tZWRpYXRlbHksIHJldHVybmluZyBhbiBlbXB0eSBvcHRpb25hbC4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSPgorICAgIHN0ZDo6b3B0aW9uYWw8Uj4gdHJ5RW5xdWV1
ZVRhc2tBbmRXYWl0Rm9yUmVwbHkoV1RGOjpGdW5jdGlvbjxSKCk+JiYgbWFpblRocmVhZFRhc2tI
YW5kbGVyKQorICAgIHsKKyAgICAgICAgLy8gRG9uJ3QgZGVhZGxvY2sgdGhlIG1haW4gdGhyZWFk
IHdpdGggaXRzZWxmLgorICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgIGlmIChtX2Fib3J0aW5n
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFI+IHJlc3BvbnNlID0gc3RkOjpudWxsb3B0OworICAgICAgICBwb3N0VGFzayhbdGhpcywg
JnJlc3BvbnNlLCAmbWFpblRocmVhZFRhc2tIYW5kbGVyXSgpIHsKKyAgICAgICAgICAgIFIgcmVz
cG9uc2VWYWx1ZSA9IG1haW5UaHJlYWRUYXNrSGFuZGxlcigpOworICAgICAgICAgICAgTG9ja0hv
bGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3Zl
KHJlc3BvbnNlVmFsdWUpOworICAgICAgICAgICAgbV9hYm9ydGVkT3JSZXNwb25zZVNldC5ub3Rp
ZnlBbGwoKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQud2Fp
dChtX211dGV4LCBbdGhpcywgJnJlc3BvbnNlXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Fi
b3J0aW5nIHx8IHJlc3BvbnNlOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNl
OworICAgIH0KKworICAgIC8vIFRoaXMgaXMgY2xhc3MgaXMgcHJvdmlkZWQgZm9yIGNvbnZlbmll
bmNlIHdoZW4geW91IHdhbnQgdG8gdXNlIHRyeUVucXVldWVUYXNrQW5kV2FpdEZvclJlcGx5KCkg
YnV0CisgICAgLy8geW91IGRvbid0IG5lZWQgYW55IHBhcnRpY3VsYXIgZGF0YSBmcm9tIHRoZSBt
YWluIHRocmVhZCBpbiByZXR1cm4gYW5kIGp1c3Qga25vd2luZyB0aGF0IGl0IGZpbmlzaGVkCisg
ICAgLy8gcnVubmluZyB0aGUgaGFuZGxlciBmdW5jdGlvbiBpcyBlbm91Z2guCisgICAgY2xhc3Mg
Vm9pZCB7IH07CisKK3ByaXZhdGU6CisgICAgLy8gUHJvdGVjdGVkIHN0YXRlOgorICAgIC8vICAg
TWFpbiB0aHJlYWQ6IHJlYWQtd3JpdGUuIFdyaXRlcyBtdXN0IGJlIG1hZGUgd2l0aCB0aGUgbG9j
ay4KKyAgICAvLyAgIEJhY2tncm91bmQgdGhyZWFkczogcmVhZCBvbmx5LiBSZWFkcyBtdXN0IGJl
IG1hZGUgd2l0aCB0aGUgbG9jay4KKyAgICBjbGFzcyBUYXNrIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFRhc2s+IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGFzayk7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFRhc2spOworICAgIHB1YmxpYzoKKyAgICAg
ICAgc3RhdGljIFJlZjxUYXNrPiBjcmVhdGUoQWJvcnRhYmxlVGFza1F1ZXVlKiB0YXNrUXVldWUs
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2tDYWxsYmFjaykKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzayh0YXNrUXVldWUsIFdURk1vdmUodGFza0Nh
bGxiYWNrKSkpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc0NhbmNlbGxlZCgpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbV90YXNrUXVldWU7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIGNhbmNlbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCgh
aXNDYW5jZWxsZWQoKSk7CisgICAgICAgICAgICBtX3Rhc2tDYWxsYmFjayA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBtX3Rhc2tRdWV1ZSA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIGRpc3BhdGNoKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICAgICAgICAgIGlmICghaXNDYW5jZWxsZWQoKSkgeworICAgICAgICAgICAgICAg
IExvY2tIb2xkZXIgbG9jayhtX3Rhc2tRdWV1ZS0+bV9tdXRleCk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHRoaXMgPT0gbV90YXNrUXVldWUtPm1fY2hhbm5lbC5maXJzdCgpLnB0cigpKTsKKyAg
ICAgICAgICAgICAgICBtX3Rhc2tRdWV1ZS0+bV9jaGFubmVsLnJlbW92ZUZpcnN0KCk7CisgICAg
ICAgICAgICAgICAgbG9jay51bmxvY2tFYXJseSgpOworICAgICAgICAgICAgICAgIG1fdGFza0Nh
bGxiYWNrKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIEFib3J0YWJsZVRhc2tRdWV1ZSogbV90YXNrUXVldWU7CisgICAgICAgIFdURjo6RnVuY3Rp
b248dm9pZCgpPiBtX3Rhc2tDYWxsYmFjazsKKworICAgICAgICBUYXNrKEFib3J0YWJsZVRhc2tR
dWV1ZSogdGFza1F1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrQ2FsbGJhY2spCisg
ICAgICAgICAgICA6IG1fdGFza1F1ZXVlKHRhc2tRdWV1ZSksIG1fdGFza0NhbGxiYWNrKFdURk1v
dmUodGFza0NhbGxiYWNrKSkKKyAgICAgICAgeyB9CisgICAgfTsKKworICAgIHZvaWQgcG9zdFRh
c2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBBU1NF
UlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAgIFJlZjxUYXNrPiB0YXNrID0gVGFzazo6Y3Jl
YXRlKHRoaXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgbV9jaGFubmVsLmFwcGVuZCh0
YXNrLmNvcHlSZWYoKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGFzayA9
IFdURk1vdmUodGFzayldKCkgeyB0YXNrLT5kaXNwYXRjaCgpOyB9KTsKKyAgICB9CisKKyAgICB2
b2lkIGNhbmNlbEFsbFRhc2tzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgICAgIEFTU0VSVChtX211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgZm9yIChSZWY8
VGFzaz4mIHRhc2sgOiBtX2NoYW5uZWwpCisgICAgICAgICAgICB0YXNrLT5jYW5jZWwoKTsKKyAg
ICAgICAgbV9jaGFubmVsLmNsZWFyKCk7CisgICAgfQorCisgICAgYm9vbCBtX2Fib3J0aW5nIHsg
ZmFsc2UgfTsKKyAgICBMb2NrIG1fbXV0ZXg7CisgICAgQ29uZGl0aW9uIG1fYWJvcnRlZE9yUmVz
cG9uc2VTZXQ7CisgICAgV1RGOjpEZXF1ZTxSZWY8VGFzaz4+IG1fY2hhbm5lbDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5k
ZXggOTZjZjcxNmE3M2M5MjFmNjM0Mjk2Zjk1YjlmYmFmNGQ0YTI1M2M1MS4uYTI0YzI0MzBjM2Vi
YzllNTNmODFlNjdmNjY4NGZkMzk3MGE1YjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBl
bGluZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgi
CiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNs
dWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5o
PgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTY0LDE0ICs2NSwxNCBAQCBzdHJ1Y3QgRW5kT2ZB
cHBlbmRNZXRhIHsKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6c3RhdGljSW5pdGlhbGl6YXRpb24o
KQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCiAgICAgY29uc3QgY2hhciogdGFnc1tdID0geyBudWxscHRyIH07CiAgICAg
c19lbmRPZkFwcGVuZE1ldGFUeXBlID0gZ3N0X21ldGFfYXBpX3R5cGVfcmVnaXN0ZXIoIldlYktp
dEVuZE9mQXBwZW5kTWV0YUFQSSIsIHRhZ3MpOwogICAgIHNfd2ViS2l0RW5kT2ZBcHBlbmRNZXRh
SW5mbyA9IGdzdF9tZXRhX3JlZ2lzdGVyKHNfZW5kT2ZBcHBlbmRNZXRhVHlwZSwgIldlYktpdEVu
ZE9mQXBwZW5kTWV0YSIsIHNpemVvZihFbmRPZkFwcGVuZE1ldGEpLCBFbmRPZkFwcGVuZE1ldGE6
OmluaXQsIEVuZE9mQXBwZW5kTWV0YTo6ZnJlZSwgRW5kT2ZBcHBlbmRNZXRhOjp0cmFuc2Zvcm0p
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogZHVtcEFwcGVuZFN0YXRlKEFwcGVuZFBpcGVsaW5l
OjpBcHBlbmRTdGF0ZSBhcHBlbmRTdGF0ZSkKK2NvbnN0IGNoYXIqIEFwcGVuZFBpcGVsaW5lOjpk
dW1wQXBwZW5kU3RhdGUoQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFN0YXRlIGFwcGVuZFN0YXRlKQog
ewogICAgIHN3aXRjaCAoYXBwZW5kU3RhdGUpIHsKICAgICBjYXNlIEFwcGVuZFBpcGVsaW5lOjpB
cHBlbmRTdGF0ZTo6SW52YWxpZDoKQEAgLTkzLDkgKzk0LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGR1bXBBcHBlbmRTdGF0ZShBcHBlbmRQaXBlbGluZTo6QXBwZW5kU3RhdGUgYXBwZW5kU3RhdGUp
CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRBZGRlZChH
c3RFbGVtZW50KiwgR3N0UGFkKiwgQXBwZW5kUGlwZWxpbmUqKTsKLXN0YXRpYyB2b2lkIGFwcGVu
ZFBpcGVsaW5lRGVtdXhlclBhZFJlbW92ZWQoR3N0RWxlbWVudCosIEdzdFBhZCosIEFwcGVuZFBp
cGVsaW5lKik7Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcHNpbmtDYXBzQ2hhbmdlZChH
T2JqZWN0KiwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5lKik7CiAjaWYgIUxPR19ESVNBQkxF
RAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0lu
Zm9ybWF0aW9uKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHN0cnVjdCBQYWRQcm9iZUluZm9y
bWF0aW9uKik7CiAjZW5kaWYKQEAgLTEwNSwyOCArMTAzLDkgQEAgc3RhdGljIEdzdFBhZFByb2Jl
UmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua1BhZEV2ZW50UHJvYmUoR3N0UGFkKiwgR3N0UGFk
UHJvYmUKICNlbmRpZgogCiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gYXBwZW5kUGlwZWxpbmVE
ZW11eGVyQmxhY2tIb2xlUGFkUHJvYmUoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiwgZ3BvaW50
ZXIpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gYXBwZW5kUGlwZWxpbmVBcHBzaW5rTmV3U2FtcGxl
KEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxp
bmVBcHBzaW5rRU9TKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGljIHZvaWQg
YXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkcyhHc3RFbGVtZW50KiwgQXBwZW5kUGlwZWxp
bmUqKTsKIAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIG1hdHJvc2thZGVtdXhGb3JjZVNlZ21l
bnRTdGFydFRvRXF1YWxaZXJvKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHZvaWQqKTsKIAot
c3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVOZWVkQ29udGV4dE1lc3NhZ2VDYWxsYmFjayhHc3RC
dXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUp
Ci17Ci0gICAgR1NUX1RSQUNFKCJyZWNlaXZlZCBjYWxsYmFjayIpOwotICAgIGFwcGVuZFBpcGVs
aW5lLT5oYW5kbGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKG1lc3NhZ2UpOwotfQotCi1zdGF0aWMg
dm9pZCBhcHBlbmRQaXBlbGluZUFwcGxpY2F0aW9uTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdz
dE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAg
ICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKG1lc3NhZ2UpOwotfQot
Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZVN0YXRlQ2hhbmdlTWVzc2FnZUNhbGxiYWNrKEdz
dEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGlu
ZSkKLXsKLSAgICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdlKG1lc3Nh
Z2UpOwotfQotCiBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaWVudCwgUmVmPFNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRSYgcGxheWVyUHJpdmF0ZSkKICAgICA6IG1fbWVkaWFTb3VyY2VDbGllbnQobWVk
aWFTb3VyY2VDbGllbnQuZ2V0KCkpCiAgICAgLCBtX3NvdXJjZUJ1ZmZlclByaXZhdGUoc291cmNl
QnVmZmVyUHJpdmF0ZS5nZXQoKSkKQEAgLTEzNyw3ICsxMTYsNyBAQCBBcHBlbmRQaXBlbGluZTo6
QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNv
dXJjZUNsaQogICAgICwgbV9hYm9ydFBlbmRpbmcoZmFsc2UpCiAgICAgLCBtX3N0cmVhbVR5cGUo
VW5rbm93bikKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBzdGQ6OmNhbGxfb25jZShzX3N0YXRpY0luaXRpYWxpemF0
aW9uRmxhZywgQXBwZW5kUGlwZWxpbmU6OnN0YXRpY0luaXRpYWxpemF0aW9uKTsKIAogICAgIEdT
VF9UUkFDRSgiQ3JlYXRpbmcgQXBwZW5kUGlwZWxpbmUgKCVwKSIsIHRoaXMpOwpAQCAtMTUzLDkg
KzEzMiwxMiBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogICAgIGdzdF9idXNfYWRkX3NpZ25h
bF93YXRjaF9mdWxsKG1fYnVzLmdldCgpLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OlJ1bkxvb3BE
aXNwYXRjaGVyKTsKICAgICBnc3RfYnVzX2VuYWJsZV9zeW5jX21lc3NhZ2VfZW1pc3Npb24obV9i
dXMuZ2V0KCkpOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChtX2J1cy5nZXQoKSwgInN5bmMtbWVz
c2FnZTo6bmVlZC1jb250ZXh0IiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZU5lZWRDb250ZXh0
TWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2J1cy5nZXQo
KSwgIm1lc3NhZ2U6OmFwcGxpY2F0aW9uIiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZUFwcGxp
Y2F0aW9uTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2J1
cy5nZXQoKSwgIm1lc3NhZ2U6OnN0YXRlLWNoYW5nZWQiLCBHX0NBTExCQUNLKGFwcGVuZFBpcGVs
aW5lU3RhdGVDaGFuZ2VNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fYnVzLmdldCgpLCAic3luYy1tZXNzYWdlOjpuZWVkLWNvbnRleHQiLCBHX0NBTExCQUNL
KCtbXShHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBcHBlbmRQaXBlbGluZSogYXBwZW5k
UGlwZWxpbmUpIHsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZU5lZWRDb250ZXh0U3lu
Y01lc3NhZ2UobWVzc2FnZSk7CisgICAgfSksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9idXMuZ2V0KCksICJtZXNzYWdlOjpzdGF0ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSygrW10oR3N0
QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5l
KSB7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5oYW5kbGVTdGF0ZUNoYW5nZU1lc3NhZ2UobWVz
c2FnZSk7CisgICAgfSksIHRoaXMpOwogCiAgICAgLy8gV2UgYXNzaWduIHRoZSBjcmVhdGVkIGlu
c3RhbmNlcyBoZXJlIGluc3RlYWQgb2YgYWRvcHRSZWYoKSBiZWNhdXNlIGdzdF9iaW5fYWRkX21h
bnkoKQogICAgIC8vIGJlbG93IHdpbGwgYWxyZWFkeSB0YWtlIHRoZSBpbml0aWFsIHJlZmVyZW5j
ZSBhbmQgd2UgbmVlZCBhbiBhZGRpdGlvbmFsIG9uZSBmb3IgdXMuCkBAIC0xODEsNyArMTYzLDEx
IEBAIEFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZShSZWY8TWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXJNU0U+IG1lZGlhU291cmNlQ2xpCiAgICAgZ3N0X2Jhc2Vfc2lua19zZXRfbGFzdF9z
YW1wbGVfZW5hYmxlZChHU1RfQkFTRV9TSU5LKG1fYXBwc2luay5nZXQoKSksIEZBTFNFKTsKIAog
ICAgIEdSZWZQdHI8R3N0UGFkPiBhcHBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKG1fYXBwc2luay5nZXQoKSwgInNpbmsiKSk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChhcHBzaW5rUGFkLmdldCgpLCAibm90aWZ5OjpjYXBzIiwgR19DQUxMQkFDSyhhcHBlbmRQ
aXBlbGluZUFwcHNpbmtDYXBzQ2hhbmdlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
YXBwc2lua1BhZC5nZXQoKSwgIm5vdGlmeTo6Y2FwcyIsIEdfQ0FMTEJBQ0soK1tdKEdPYmplY3Qq
LCBHUGFyYW1TcGVjKiwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKSB7CisgICAgICAg
IGFwcGVuZFBpcGVsaW5lLT5tX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbYXBwZW5kUGlwZWxp
bmVdKCkgeworICAgICAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmFwcHNpbmtDYXBzQ2hhbmdlZCgp
OworICAgICAgICB9KTsKKyAgICB9KSwgdGhpcyk7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAg
R1JlZlB0cjxHc3RQYWQ+IGRlbXV4ZXJQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0
YXRpY19wYWQobV9kZW11eC5nZXQoKSwgInNpbmsiKSk7CkBAIC0yMDAsMTEgKzE4NiwyOSBAQCBB
cHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVh
bWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogI2VuZGlmCiAKICAgICAvLyBUaGVzZSBzaWduYWxzIHdv
bid0IGJlIGNvbm5lY3RlZCBvdXRzaWRlIG9mIHRoZSBsaWZldGltZSBvZiAidGhpcyIuCi0gICAg
Z19zaWduYWxfY29ubmVjdChtX2RlbXV4LmdldCgpLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhh
cHBlbmRQaXBlbGluZURlbXV4ZXJQYWRBZGRlZCksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9kZW11eC5nZXQoKSwgInBhZC1yZW1vdmVkIiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGlu
ZURlbXV4ZXJQYWRSZW1vdmVkKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2RlbXV4
LmdldCgpLCAibm8tbW9yZS1wYWRzIiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZURlbXV4ZXJO
b01vcmVQYWRzKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2FwcHNpbmsuZ2V0KCks
ICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZUFwcHNpbmtOZXdTYW1wbGUp
LCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBwc2luay5nZXQoKSwgImVvcyIsIEdf
Q0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzaW5rRU9TKSwgdGhpcyk7CisgICAgZ19zaWduYWxf
Y29ubmVjdChtX2RlbXV4LmdldCgpLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSygrW10oR3N0RWxl
bWVudCosIEdzdFBhZCogZGVtdXhlclNyY1BhZCwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVs
aW5lKSB7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5jb25uZWN0RGVtdXhlclNyY1BhZFRvQXBw
c2lua0Zyb21TdHJlYW1pbmdUaHJlYWQoZGVtdXhlclNyY1BhZCk7CisgICAgfSksIHRoaXMpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBhZC1yZW1vdmVkIiwgR19DQUxM
QkFDSygrW10oR3N0RWxlbWVudCosIEdzdFBhZCogZGVtdXhlclNyY1BhZCwgQXBwZW5kUGlwZWxp
bmUqIGFwcGVuZFBpcGVsaW5lKSB7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5kaXNjb25uZWN0
RGVtdXhlclNyY1BhZEZyb21BcHBzaW5rRnJvbUFueVRocmVhZChkZW11eGVyU3JjUGFkKTsKKyAg
ICB9KSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2RlbXV4LmdldCgpLCAibm8tbW9y
ZS1wYWRzIiwgR19DQUxMQkFDSygrW10oR3N0RWxlbWVudCosIEFwcGVuZFBpcGVsaW5lKiBhcHBl
bmRQaXBlbGluZSkgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAg
R1NUX0RFQlVHKCJQb3N0aW5nIG5vLW1vcmUtcGFkcyB0YXNrIHRvIG1haW4gdGhyZWFkIik7Cisg
ICAgICAgIGFwcGVuZFBpcGVsaW5lLT5tX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbYXBwZW5k
UGlwZWxpbmVdKCkgeworICAgICAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmRlbXV4ZXJOb01vcmVQ
YWRzKCk7CisgICAgICAgIH0pOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KG1fYXBwc2luay5nZXQoKSwgIm5ldy1zYW1wbGUiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVtZW50
KiBhcHBzaW5rLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgYXBw
ZW5kUGlwZWxpbmUtPmhhbmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tU3RyZWFtaW5nVGhyZWFkKGFw
cHNpbmspOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBwc2luay5n
ZXQoKSwgImVvcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSog
YXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
ICAgIEdTVF9ERUJVRygiUG9zdGluZyBhcHBzaW5rLWVvcyB0YXNrIHRvIG1haW4gdGhyZWFkIik7
CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5tX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbYXBw
ZW5kUGlwZWxpbmVdKCkgeworICAgICAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmFwcHNpbmtFT1Mo
KTsKKyAgICAgICAgfSk7CisgICAgfSksIHRoaXMpOwogCiAgICAgLy8gQWRkX21hbnkgd2lsbCB0
YWtlIG93bmVyc2hpcCBvZiBhIHJlZmVyZW5jZS4gVGhhdCdzIHdoeSB3ZSB1c2VkIGFuIGFzc2ln
bm1lbnQgYmVmb3JlLgogICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lLmdl
dCgpKSwgbV9hcHBzcmMuZ2V0KCksIG1fZGVtdXguZ2V0KCksIG51bGxwdHIpOwpAQCAtMjE1LDE1
ICsyMTksMTEgQEAgQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5lKFJlZjxNZWRpYVNvdXJj
ZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFTb3VyY2VDbGkKIAogQXBwZW5kUGlwZWxpbmU6On5B
cHBlbmRQaXBlbGluZSgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBzZXRBcHBlbmRTdGF0ZShBcHBlbmRTdGF0
ZTo6SW52YWxpZCk7Ci0KLSAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGFkQWRk
UmVtb3ZlTG9jayk7Ci0gICAgICAgIG1fcGxheWVyUHJpdmF0ZSA9IG51bGxwdHI7Ci0gICAgICAg
IG1fcGFkQWRkUmVtb3ZlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotICAgIH0KKyAgICAvLyBGb3Jn
ZXQgYWxsIHBlbmRpbmcgdGFza3MgYW5kIHVuYmxvY2sgdGhlIHN0cmVhbWluZyB0aHJlYWQgaWYg
aXQgd2FzIGJsb2NrZWQuCisgICAgbV90YXNrUXVldWUuc3RhcnRBYm9ydGluZygpOwogCiAgICAg
R1NUX1RSQUNFKCJEZXN0cm95aW5nIEFwcGVuZFBpcGVsaW5lICglcCkiLCB0aGlzKTsKIApAQCAt
MjMxLDcgKzIzMSw3IEBAIEFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUoKQogCiAgICAg
aWYgKG1fcGlwZWxpbmUpIHsKICAgICAgICAgQVNTRVJUKG1fYnVzKTsKLSAgICAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fYnVzLmdldCgpLCByZWludGVycHJldF9j
YXN0PGdwb2ludGVyPihhcHBlbmRQaXBlbGluZU5lZWRDb250ZXh0TWVzc2FnZUNhbGxiYWNrKSwg
dGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZGF0YShtX2J1
cy5nZXQoKSwgdGhpcyk7CiAgICAgICAgIGdzdF9idXNfZGlzYWJsZV9zeW5jX21lc3NhZ2VfZW1p
c3Npb24obV9idXMuZ2V0KCkpOwogICAgICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0Y2go
bV9idXMuZ2V0KCkpOwogICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5n
ZXQoKSwgR1NUX1NUQVRFX05VTEwpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIEFwcGVuZFBpcGVsaW5l
Ojp+QXBwZW5kUGlwZWxpbmUoKQogCiBHc3RQYWRQcm9iZVJldHVybiBBcHBlbmRQaXBlbGluZTo6
YXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJvYmVJbmZvKiBwYWRQcm9iZUlu
Zm8pCiB7Ci0gICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBtX3N0cmVhbWluZ1RocmVhZCA9ICZXVEY6OlRocmVhZDo6Y3Vy
cmVudCgpOwogCiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBHU1RfQlVGRkVSKHBhZFByb2JlSW5m
by0+ZGF0YSk7CkBAIC0yODYsMjcgKzI4NiwyMiBAQCBHc3RQYWRQcm9iZVJldHVybiBBcHBlbmRQ
aXBlbGluZTo6YXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJvYmVJbmZvKgog
ICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAgICB9CiAKLSAgICBHU1RfVFJBQ0Vf
T0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJwb3N0aW5nIGVuZC1vZi1hcHBlbmQgcmVxdWVzdCB0
byBidXMiKTsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3
X2VtcHR5KCJlbmQtb2YtYXBwZW5kIik7Ci0gICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9t
ZXNzYWdlX25ld19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKG1fYXBwc3JjLmdldCgpKSwgc3RydWN0
dXJlKTsKLSAgICBnc3RfYnVzX3Bvc3QobV9idXMuZ2V0KCksIG1lc3NhZ2UpOworICAgIEdTVF9U
UkFDRV9PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlBvc3RpbmcgZW5kLW9mLWFwcGVuZCB0YXNr
IHRvIHRoZSBtYWluIHRocmVhZCIpOworICAgIG1fdGFza1F1ZXVlLnRyeUVucXVldWVUYXNrKFt0
aGlzXSgpIHsKKyAgICAgICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKKyAgICB9KTsKICAgICByZXR1
cm4gR1NUX1BBRF9QUk9CRV9EUk9QOwogfQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpjbGVhclBs
YXllclByaXZhdGUoKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEdTVF9ERUJVRygiY2xlYW5pbmcgcHJpdmF0ZSBw
bGF5ZXIiKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IEFwcGVuZFBpcGVsaW5lIHdvbid0IHBy
b2Nlc3MgbW9yZSBkYXRhIGZyb20gbm93IG9uIGFuZAogICAgIC8vIGluc3RydWN0IGhhbmRsZU5l
d1NhbXBsZSB0byBhYm9ydCBpdHNlbGYgZnJvbSBub3cgb24gYXMgd2VsbC4KICAgICBzZXRBcHBl
bmRTdGF0ZShBcHBlbmRTdGF0ZTo6SW52YWxpZCk7Ci0KLSAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fcGFkQWRkUmVtb3ZlTG9jayk7Ci0gICAgICAgIG1fcGxheWVyUHJpdmF0ZSA9
IG51bGxwdHI7Ci0gICAgICAgIG1fcGFkQWRkUmVtb3ZlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwot
ICAgIH0KKyAgICBtX3Rhc2tRdWV1ZS5zdGFydEFib3J0aW5nKCk7CiAKICAgICAvLyBBbmQgbm93
IHRoYXQgbm8gaGFuZGxlTmV3U2FtcGxlIG9wZXJhdGlvbnMgd2lsbCByZW1haW4gc3RhbGxlZCB3
YWl0aW5nCiAgICAgLy8gZm9yIHRoZSBtYWluIHRocmVhZCwgc3RvcCB0aGUgcGlwZWxpbmUuCkBA
IC0zMjUsNDkgKzMyMCw2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmhhbmRsZU5lZWRDb250ZXh0
U3luY01lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgbV9wbGF5ZXJQcml2YXRl
LT5oYW5kbGVTeW5jTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBBcHBlbmRQaXBlbGluZTo6
aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCi17Ci0gICAgQVNT
RVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotCi0gICAgY29uc3QgR3N0U3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1lc3NhZ2UpOwotCi0gICAgaWYgKGdz
dF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZGVtdXhlci1jb25uZWN0LXRvLWFwcHNp
bmsiKSkgewotICAgICAgICBHUmVmUHRyPEdzdFBhZD4gZGVtdXhlclNyY1BhZDsKLSAgICAgICAg
Z3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0dXJlLCAiZGVtdXhlci1zcmMtcGFkIiwgR19UWVBFX09C
SkVDVCwgJmRlbXV4ZXJTcmNQYWQub3V0UHRyKCksIG51bGxwdHIpOwotICAgICAgICBBU1NFUlQo
ZGVtdXhlclNyY1BhZCk7Ci0gICAgICAgIGNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rKGRl
bXV4ZXJTcmNQYWQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdz
dF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwc2luay1jYXBzLWNoYW5nZWQiKSkg
ewotICAgICAgICBhcHBzaW5rQ2Fwc0NoYW5nZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImFwcHNpbmstbmV3
LXNhbXBsZSIpKSB7Ci0gICAgICAgIG1fd2FzQnVzQWxyZWFkeU5vdGlmaWVkT2ZBdmFpbGFibGVT
YW1wbGVzLmNsZWFyKCk7Ci0gICAgICAgIGNvbnN1bWVBcHBzaW5rQXZhaWxhYmxlU2FtcGxlcygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiYXBwc2luay1lb3MiKSkgewotICAgICAgICBhcHBzaW5rRU9TKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShz
dHJ1Y3R1cmUsICJkZW11eGVyLW5vLW1vcmUtcGFkcyIpKSB7Ci0gICAgICAgIGRlbXV4ZXJOb01v
cmVQYWRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ3N0X3N0cnVjdHVy
ZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJlbmQtb2YtYXBwZW5kIikpIHsKLSAgICAgICAgaGFuZGxl
RW5kT2ZBcHBlbmQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkZW11eGVyTm9Nb3JlUGFkcygp
CiB7CiAgICAgR1NUX1RSQUNFKCJjYWxsaW5nIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQiKTsKQEAgLTM3OCw3ICszMzAsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkZW11eGVyTm9N
b3JlUGFkcygpCiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmhhbmRsZVN0YXRlQ2hhbmdlTWVzc2Fn
ZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKEdTVF9NRVNTQUdFX1NS
QyhtZXNzYWdlKSA9PSByZWludGVycHJldF9jYXN0PEdzdE9iamVjdCo+KG1fcGlwZWxpbmUuZ2V0
KCkpKSB7CiAgICAgICAgIEdzdFN0YXRlIGN1cnJlbnRTdGF0ZSwgbmV3U3RhdGU7CkBAIC0zOTYs
NyArMzQ4LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6aGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdl
KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAKIGdpbnQgQXBwZW5kUGlwZWxpbmU6OmlkKCkKIHsKLSAg
ICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIGlmIChtX2lkKQogICAgICAgICByZXR1cm4gbV9pZDsKQEAgLTQyOSw3ICszODEs
NyBAQCBnaW50IEFwcGVuZFBpcGVsaW5lOjppZCgpCiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OnNl
dEFwcGVuZFN0YXRlKEFwcGVuZFN0YXRlIG5ld0FwcGVuZFN0YXRlKQogewotICAgIEFTU0VSVChX
VEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIC8v
IFZhbGlkIHRyYW5zaXRpb25zOgogICAgIC8vIE5vdFN0YXJ0ZWQtLT5PbmdvaW5nLS0+RGF0YVN0
YXJ2ZS0tPk5vdFN0YXJ0ZWQKICAgICAvLyAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAg
ICBgLT5BYm9ydGluZy0tPk5vdFN0YXJ0ZWQKQEAgLTU2OSw3ICs1MjEsNyBAQCB2b2lkIEFwcGVu
ZFBpcGVsaW5lOjpzZXRBcHBlbmRTdGF0ZShBcHBlbmRTdGF0ZSBuZXdBcHBlbmRTdGF0ZSkKIAog
dm9pZCBBcHBlbmRQaXBlbGluZTo6cGFyc2VEZW11eGVyU3JjUGFkQ2FwcyhHc3RDYXBzKiBkZW11
eGVyU3JjUGFkQ2FwcykKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fZGVtdXhlclNyY1BhZENhcHMgPSBhZG9w
dEdSZWYoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNvcmU6Ok1l
ZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VW5rbm93bjsKQEAgLTU5Nyw3ICs1NDksNyBA
QCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpwYXJzZURlbXV4ZXJTcmNQYWRDYXBzKEdzdENhcHMqIGRl
bXV4ZXJTcmNQYWRDYXBzKQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rQ2Fwc0NoYW5n
ZWQoKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX2FwcHNpbmspCiAgICAgICAgIHJldHVybjsKQEAg
LTYyMSw3ICs1NzMsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rQ2Fwc0NoYW5nZWQo
KQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpoYW5kbGVFbmRPZkFwcGVuZCgpCiB7Ci0gICAgQVNT
RVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgR1NUX1RSQUNFX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAicmVjZWl2ZWQgZW5kLW9mLWFw
cGVuZCIpOwogCiAgICAgLy8gUmVnYXJkbGVzcyBvZiB0aGUgc3RhdGUgdHJhbnNpdGlvbiwgdGhl
IHJlc3VsdCBpcyB0aGUgc2FtZTogZGlkUmVjZWl2ZUFsbFBlbmRpbmdTYW1wbGVzKCkgaXMgY2Fs
bGVkLgpAQCAtNjQyLDcgKzU5NCw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmhhbmRsZUVuZE9m
QXBwZW5kKCkKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRy
PEdzdFNhbXBsZT4mJiBzYW1wbGUpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIWdzdF9z
YW1wbGVfZ2V0X2J1ZmZlcihzYW1wbGUuZ2V0KCkpKSkgewogICAgICAgICBHU1RfV0FSTklORygi
UmVjZWl2ZWQgc2FtcGxlIHdpdGhvdXQgYnVmZmVyIGZyb20gYXBwc2luay4iKTsKQEAgLTY3OCw3
ICs2MzAsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSkKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lua0VPUygp
CiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICBzd2l0Y2ggKG1fYXBwZW5kU3RhdGUpIHsKICAgICBjYXNlIEFwcGVu
ZFN0YXRlOjpBYm9ydGluZzoKQEAgLTY5OSw3ICs2NTEsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5l
OjphcHBzaW5rRU9TKCkKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6ZGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudCgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQgaW5pdGlhbGl6YXRpb25TZWdtZW50Owog
CkBAIC03MzEsNyArNjgzLDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6ZGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudCgpCiAKIEF0b21pY1N0cmluZyBBcHBlbmRQaXBlbGluZTo6dHJhY2tJ
ZCgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdHJhY2spCiAgICAgICAgIHJldHVybiBBdG9taWNT
dHJpbmcoKTsKQEAgLTc0MSw3ICs2OTMsNyBAQCBBdG9taWNTdHJpbmcgQXBwZW5kUGlwZWxpbmU6
OnRyYWNrSWQoKQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpjb25zdW1lQXBwc2lua0F2YWlsYWJs
ZVNhbXBsZXMoKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZTsKICAg
ICBpbnQgYmF0Y2hlZFNhbXBsZUNvdW50ID0gMDsKQEAgLTc1NSw3ICs3MDcsNyBAQCB2b2lkIEFw
cGVuZFBpcGVsaW5lOjpjb25zdW1lQXBwc2lua0F2YWlsYWJsZVNhbXBsZXMoKQogCiB2b2lkIEFw
cGVuZFBpcGVsaW5lOjpyZXNldFBpcGVsaW5lKCkKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBHU1RfREVCVUcoInJl
c2V0dGluZyBwaXBlbGluZSIpOwogCiAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxp
bmUuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7CkBAIC03NzQsNyArNzI2LDcgQEAgdm9pZCBBcHBl
bmRQaXBlbGluZTo6cmVzZXRQaXBlbGluZSgpCiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmFib3J0
KCkKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBHU1RfREVCVUcoImFib3J0aW5nIik7CiAKICAgICBtX3BlbmRpbmdC
dWZmZXIgPSBudWxscHRyOwpAQCAtODIzLDkgKzc3NSw5IEBAIEdzdEZsb3dSZXR1cm4gQXBwZW5k
UGlwZWxpbmU6OnB1c2hOZXdCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCiAgICAgcmV0dXJuIEdT
VF9GTE9XX09LOwogfQogCi1Hc3RGbG93UmV0dXJuIEFwcGVuZFBpcGVsaW5lOjpoYW5kbGVOZXdB
cHBzaW5rU2FtcGxlKEdzdEVsZW1lbnQqIGFwcHNpbmspCitHc3RGbG93UmV0dXJuIEFwcGVuZFBp
cGVsaW5lOjpoYW5kbGVBcHBzaW5rTmV3U2FtcGxlRnJvbVN0cmVhbWluZ1RocmVhZChHc3RFbGVt
ZW50KikKIHsKLSAgICBBU1NFUlQoIVdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIGlmICgmV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKSAhPSBtX3N0
cmVhbWluZ1RocmVhZCkgewogICAgICAgICAvLyBtX3N0cmVhbWluZ1RocmVhZElkIGhhcyBiZWVu
IGluaXRpYWxpemVkIGluIGFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tlclByb2JlKCkuCiAgICAgICAg
IC8vIEZvciBhIGJ1ZmZlciB0byByZWFjaCB0aGUgYXBwc2luaywgYSBidWZmZXIgbXVzdCBoYXZl
IHBhc3NlZCB0aHJvdWdoIGFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tlclByb2JlKCkgZmlyc3QuCkBA
IC04NDMsMTAgKzc5NSwxMSBAQCBHc3RGbG93UmV0dXJuIEFwcGVuZFBpcGVsaW5lOjpoYW5kbGVO
ZXdBcHBzaW5rU2FtcGxlKEdzdEVsZW1lbnQqIGFwcHNpbmspCiAgICAgfQogCiAgICAgaWYgKCFt
X3dhc0J1c0FscmVhZHlOb3RpZmllZE9mQXZhaWxhYmxlU2FtcGxlcy50ZXN0X2FuZF9zZXQoKSkg
ewotICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2Vt
cHR5KCJhcHBzaW5rLW5ldy1zYW1wbGUiKTsKLSAgICAgICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9
IGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKGFwcHNpbmspLCBzdHJ1Y3R1
cmUpOwotICAgICAgICBnc3RfYnVzX3Bvc3QobV9idXMuZ2V0KCksIG1lc3NhZ2UpOwotICAgICAg
ICBHU1RfVFJBQ0UoImFwcHNpbmstbmV3LXNhbXBsZSBtZXNzYWdlIHBvc3RlZCB0byBidXMiKTsK
KyAgICAgICAgR1NUX1RSQUNFKCJQb3N0aW5nIGFwcHNpbmstbmV3LXNhbXBsZSB0YXNrIHRvIHRo
ZSBtYWluIHRocmVhZCIpOworICAgICAgICBtX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbdGhp
c10oKSB7CisgICAgICAgICAgICBtX3dhc0J1c0FscmVhZHlOb3RpZmllZE9mQXZhaWxhYmxlU2Ft
cGxlcy5jbGVhcigpOworICAgICAgICAgICAgY29uc3VtZUFwcHNpbmtBdmFpbGFibGVTYW1wbGVz
KCk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIHJldHVybiBHU1RfRkxPV19PSzsKQEAgLTg4
NCw4ICs4MzcsOSBAQCBjcmVhdGVPcHRpb25hbFBhcnNlckZvckZvcm1hdChHc3RQYWQqIGRlbXV4
ZXJTcmNQYWQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXBwZW5kUGlwZWxpbmU6
OmNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqIGRlbXV4
ZXJTcmNQYWQpCit2b2lkIEFwcGVuZFBpcGVsaW5lOjpjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBw
c2lua0Zyb21TdHJlYW1pbmdUaHJlYWQoR3N0UGFkKiBkZW11eGVyU3JjUGFkKQogeworICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9hcHBzaW5rKQogICAgICAgICByZXR1
cm47CiAKQEAgLTkxMCwyMyArODY0LDE0IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmNvbm5lY3RE
ZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqIGRlbXV4ZXJTCiAgICAg
ZWxzZQogICAgICAgICBtX2luaXRpYWxEdXJhdGlvbiA9IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZp
bml0ZVRpbWUoKTsKIAotICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgpKQorICAgIEdTVF9ERUJV
RygiUmVxdWVzdGluZyBkZW11eGVyLWNvbm5lY3QtdG8tYXBwc2luayB0byBtYWluIHRocmVhZCIp
OworICAgIGF1dG8gcmVzcG9uc2UgPSBtX3Rhc2tRdWV1ZS50cnlFbnF1ZXVlVGFza0FuZFdhaXRG
b3JSZXBseTxBYm9ydGFibGVUYXNrUXVldWU6OlZvaWQ+KFt0aGlzLCBkZW11eGVyU3JjUGFkXSgp
IHsKICAgICAgICAgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmsoZGVtdXhlclNyY1BhZCk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIENhbGwgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNp
bmsoKSBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIHdhaXQuCi0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fcGFkQWRkUmVtb3ZlTG9jayk7Ci0gICAgICAgIGlmICghbV9wbGF5ZXJQcml2YXRlKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Z3N0X3N0cnVjdHVyZV9uZXcoImRlbXV4ZXItY29ubmVjdC10by1hcHBzaW5rIiwgImRlbXV4ZXIt
c3JjLXBhZCIsIEdfVFlQRV9PQkpFQ1QsIGRlbXV4ZXJTcmNQYWQsIG51bGxwdHIpOwotICAgICAg
ICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKEdTVF9P
QkpFQ1QobV9kZW11eC5nZXQoKSksIHN0cnVjdHVyZSk7Ci0gICAgICAgIGdzdF9idXNfcG9zdCht
X2J1cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgICAgIEdTVF9UUkFDRSgiZGVtdXhlci1jb25uZWN0
LXRvLWFwcHNpbmsgbWVzc2FnZSBwb3N0ZWQgdG8gYnVzIik7Ci0KLSAgICAgICAgbV9wYWRBZGRS
ZW1vdmVDb25kaXRpb24ud2FpdChtX3BhZEFkZFJlbW92ZUxvY2spOwotCi0gICAgICAgIGlmICgh
bV9wbGF5ZXJQcml2YXRlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gQWJv
cnRhYmxlVGFza1F1ZXVlOjpWb2lkKCk7CisgICAgfSk7CisgICAgaWYgKCFyZXNwb25zZS5oYXNf
dmFsdWUoKSkgeworICAgICAgICAvLyBUaGUgQXBwZW5kUGlwZWxpbmUgaGFzIGJlZW4gZGVzdHJv
eWVkIG9yIGFib3J0ZWQgYmVmb3JlIHdlIHJlY2VpdmVkIGEgcmVzcG9uc2UuCisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICAvLyBNdXN0IGJlIGRvbmUgaW4gdGhlIHRocmVhZCB3ZSB3ZXJl
IGNhbGxlZCBmcm9tICh1c3VhbGx5IHN0cmVhbWluZyB0aHJlYWQpLgpAQCAtOTcxLDE0ICs5MTYs
MTMgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtG
cm9tQW55VGhyZWFkKEdzdFBhZCogZGVtdXhlclMKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6Y29u
bmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmsoR3N0UGFkKiBkZW11eGVyU3JjUGFkKQogewotICAg
IEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIEdTVF9ERUJVRygiQ29ubmVjdGluZyB0byBhcHBzaW5rIik7CiAKICAgICBjb25zdCBT
dHJpbmcmIHR5cGUgPSBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnR5cGUoKS5jb250YWluZXJUeXBl
KCk7CiAgICAgaWYgKHR5cGUuZW5kc1dpdGgoIndlYm0iKSkKICAgICAgICAgZ3N0X3BhZF9hZGRf
cHJvYmUoZGVtdXhlclNyY1BhZCwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0s
IG1hdHJvc2thZGVtdXhGb3JjZVNlZ21lbnRTdGFydFRvRXF1YWxaZXJvLCBudWxscHRyLCBudWxs
cHRyKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGFkQWRkUmVtb3ZlTG9jayk7CiAgICAg
R1JlZlB0cjxHc3RQYWQ+IHNpbmtTaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9z
dGF0aWNfcGFkKG1fYXBwc2luay5nZXQoKSwgInNpbmsiKSk7CiAKICAgICAvLyBPbmx5IG9uZSBz
dHJlYW0gcGVyIGRlbXV4ZXIgaXMgc3VwcG9ydGVkLgpAQCAtOTg3LDcgKzkzMSw2IEBAIHZvaWQg
QXBwZW5kUGlwZWxpbmU6OmNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rKEdzdFBhZCogZGVt
dXhlclNyY1BhZCkKICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBhZG9wdEdSZWYoZ3N0X3Bh
ZF9nZXRfY3VycmVudF9jYXBzKEdTVF9QQUQoZGVtdXhlclNyY1BhZCkpKTsKIAogICAgIGlmICgh
Y2FwcyB8fCBtX2FwcGVuZFN0YXRlID09IEFwcGVuZFN0YXRlOjpJbnZhbGlkIHx8ICFtX3BsYXll
clByaXZhdGUpIHsKLSAgICAgICAgbV9wYWRBZGRSZW1vdmVDb25kaXRpb24ubm90aWZ5T25lKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwMjMsOCArOTY2LDYgQEAgdm9pZCBBcHBl
bmRQaXBlbGluZTo6Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmsoR3N0UGFkKiBkZW11eGVy
U3JjUGFkKQogICAgICAgICAvLyBUaGlzIGlzIGdvaW5nIHRvIGNhdXNlIGFuIGVycm9yIHdoaWNo
IHdpbGwgZGV0YWNoIHRoZSBTb3VyY2VCdWZmZXIgYW5kIHRlYXIgZG93biB0aGlzCiAgICAgICAg
IC8vIEFwcGVuZFBpcGVsaW5lLCBzbyB3ZSBuZWVkIHRoZSBwYWRBZGRSZW1vdmUgbG9jayByZWxl
YXNlZCBiZWZvcmUgY29udGludWluZy4KICAgICAgICAgbV90cmFjayA9IG51bGxwdHI7Ci0gICAg
ICAgIG1fcGFkQWRkUmVtb3ZlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotICAgICAgICBsb2NrZXIu
dW5sb2NrRWFybHkoKTsKICAgICAgICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCgp
OwogICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKQEAgLTEwMzUsMTIgKzk3NiwxMyBAQCB2
b2lkIEFwcGVuZFBpcGVsaW5lOjpjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBwc2luayhHc3RQYWQq
IGRlbXV4ZXJTcmNQYWQpCiAgICAgbV9hcHBzaW5rQ2FwcyA9IFdURk1vdmUoY2Fwcyk7CiAgICAg
aWYgKG1fcGxheWVyUHJpdmF0ZSkKICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT50cmFja0RldGVj
dGVkKHRoaXMsIG1fdHJhY2ssIHRydWUpOwotCi0gICAgbV9wYWRBZGRSZW1vdmVDb25kaXRpb24u
bm90aWZ5T25lKCk7CiB9CiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpc2Nvbm5lY3REZW11eGVy
U3JjUGFkRnJvbUFwcHNpbmtGcm9tQW55VGhyZWFkKEdzdFBhZCopCiB7CisgICAgLy8gTm90ZTog
VGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGVpdGhlciBmcm9tIHRoZSBzdHJlYW1pbmcgdGhy
ZWFkIChlLmcuIGlmIGEgc3RyYW5nZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IHdpdGgKKyAgICAv
LyBpbmNvbXBhdGlibGUgdHJhY2tzIGlzIGFwcGVuZGVkIGFuZCB0aGUgc3JjcGFkIGRpc2Nvbm5l
Y3RlZCkgb3IgLS0gbW9yZSB1c3VhbGx5IC0tIGZyb20gdGhlIG1haW4gdGhyZWFkLCB3aGVuCisg
ICAgLy8gYSBzdGF0ZSBjaGFuZ2UgaXMgbWFkZSB0byBicmluZyB0aGUgZGVtdXhlciBkb3duLiAo
U3RhdGUgY2hhbmdlIG9wZXJhdGlvbnMgcnVuIGluIHRoZSBtYWluIHRocmVhZC4pCiAgICAgR1NU
X0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRIX1RTKEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSks
IEdTVF9ERUJVR19HUkFQSF9TSE9XX0FMTCwgInBhZC1yZW1vdmVkLWJlZm9yZSIpOwogCiAgICAg
R1NUX0RFQlVHKCJEaXNjb25uZWN0aW5nIGFwcHNpbmsiKTsKQEAgLTEwNTQsMjMgKzk5Niw2IEBA
IHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpc2Nvbm5lY3REZW11eGVyU3JjUGFkRnJvbUFwcHNpbmtG
cm9tQW55VGhyZWFkKEdzdFBhZCopCiAgICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRI
X1RTKEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQSF9TSE9XX0FMTCwg
InBhZC1yZW1vdmVkLWFmdGVyIik7CiB9CiAKLXZvaWQgQXBwZW5kUGlwZWxpbmU6OmFwcGVuZFBp
cGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkKCkKLXsKLSAgICBHU1RfVFJBQ0Uo
ImFwcGVuZFBpcGVsaW5lRGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkIik7Ci0gICAgR3N0
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSgiZGVtdXhlci1u
by1tb3JlLXBhZHMiKTsKLSAgICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2VfbmV3
X2FwcGxpY2F0aW9uKEdTVF9PQkpFQ1QobV9hcHBzcmMuZ2V0KCkpLCBzdHJ1Y3R1cmUpOwotICAg
IGdzdF9idXNfcG9zdChtX2J1cy5nZXQoKSwgbWVzc2FnZSk7Ci0gICAgR1NUX1RSQUNFKCJhcHBl
bmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzRnJvbUFueVRocmVhZCAtIHBvc3RlZCB0byBidXMi
KTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVBcHBzaW5rQ2Fwc0NoYW5nZWQoR09i
amVjdCogYXBwc2lua1BhZCwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5lKiBhcHBlbmRQaXBl
bGluZSkKLXsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3
X2VtcHR5KCJhcHBzaW5rLWNhcHMtY2hhbmdlZCIpOwotICAgIEdzdE1lc3NhZ2UqIG1lc3NhZ2Ug
PSBnc3RfbWVzc2FnZV9uZXdfYXBwbGljYXRpb24oR1NUX09CSkVDVChhcHBzaW5rUGFkKSwgc3Ry
dWN0dXJlKTsKLSAgICBnc3RfYnVzX3Bvc3QoYXBwZW5kUGlwZWxpbmUtPmJ1cygpLCBtZXNzYWdl
KTsKLSAgICBHU1RfVFJBQ0UoImFwcHNpbmstY2Fwcy1jaGFuZ2VkIG1lc3NhZ2UgcG9zdGVkIHRv
IGJ1cyIpOwotfQotCiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJu
IGFwcGVuZFBpcGVsaW5lUGFkUHJvYmVEZWJ1Z0luZm9ybWF0aW9uKEdzdFBhZCosIEdzdFBhZFBy
b2JlSW5mbyogaW5mbywgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24qIHBhZFByb2JlSW5mb3Jt
YXRpb24pCiB7CkBAIC0xMTEwLDQwICsxMDM1LDYgQEAgc3RhdGljIEdzdFBhZFByb2JlUmV0dXJu
IGFwcGVuZFBpcGVsaW5lRGVtdXhlckJsYWNrSG9sZVBhZFByb2JlKEdzdFBhZCosIEdzdFBhZFAK
ICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRQ
aXBlbGluZURlbXV4ZXJQYWRBZGRlZChHc3RFbGVtZW50KiwgR3N0UGFkKiBkZW11eGVyU3JjUGFk
LCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBwZW5kUGlwZWxpbmUt
PmNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChkZW11eGVyU3JjUGFk
KTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkUmVtb3ZlZChHc3RF
bGVtZW50KiwgR3N0UGFkKiBkZW11eGVyU3JjUGFkLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlw
ZWxpbmUpCi17Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmRpc2Nvbm5lY3REZW11eGVyU3JjUGFkRnJv
bUFwcHNpbmtGcm9tQW55VGhyZWFkKGRlbXV4ZXJTcmNQYWQpOwotfQotCi1zdGF0aWMgdm9pZCBh
cHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGlu
ZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgYXBwZW5kUGlwZWxpbmUtPmFwcGVuZFBpcGVsaW5l
RGVtdXhlck5vTW9yZVBhZHNGcm9tQW55VGhyZWFkKCk7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0
dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua05ld1NhbXBsZShHc3RFbGVtZW50KiBhcHBzaW5rLCBB
cHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgcmV0dXJuIGFwcGVuZFBpcGVs
aW5lLT5oYW5kbGVOZXdBcHBzaW5rU2FtcGxlKGFwcHNpbmspOwotfQotCi1zdGF0aWMgdm9pZCBh
cHBlbmRQaXBlbGluZUFwcHNpbmtFT1MoR3N0RWxlbWVudCosIEFwcGVuZFBpcGVsaW5lKiBhcHBl
bmRQaXBlbGluZSkKLXsKLSAgICBpZiAoV1RGOjppc01haW5UaHJlYWQoKSkKLSAgICAgICAgYXBw
ZW5kUGlwZWxpbmUtPmFwcHNpbmtFT1MoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgR3N0U3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSgiYXBwc2luay1lb3MiKTsK
LSAgICAgICAgR3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlv
bihHU1RfT0JKRUNUKGFwcGVuZFBpcGVsaW5lLT5hcHBzaW5rKCkpLCBzdHJ1Y3R1cmUpOwotICAg
ICAgICBnc3RfYnVzX3Bvc3QoYXBwZW5kUGlwZWxpbmUtPmJ1cygpLCBtZXNzYWdlKTsKLSAgICAg
ICAgR1NUX1RSQUNFKCJhcHBzaW5rLWVvcyBtZXNzYWdlIHBvc3RlZCB0byBidXMiKTsKLSAgICB9
Ci0KLSAgICBHU1RfREVCVUcoIiVzIG1haW4gdGhyZWFkIiwgKFdURjo6aXNNYWluVGhyZWFkKCkp
ID8gIklzIiA6ICJOb3QiKTsKLX0KLQogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIG1hdHJvc2th
ZGVtdXhGb3JjZVNlZ21lbnRTdGFydFRvRXF1YWxaZXJvKEdzdFBhZCosIEdzdFBhZFByb2JlSW5m
byogaW5mbywgdm9pZCopCiB7CiAgICAgLy8gbWF0cm9za2FkZW11eCBzZXRzIEdzdFNlZ21lbnQu
c3RhcnQgdG8gdGhlIFBUUyBvZiB0aGUgZmlyc3QgZnJhbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmgKaW5kZXggZGE0Zjc1ZWVjM2FjNjg2NzJlN2RjNTM0ODg3YWU4NDdmNzhhMjdmNy4u
M2FkNGQzNDQ1ODliZjhiNzk0ZTRhNGE5YzZjNWQwZTU2YWYzYjhmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
QXBwZW5kUGlwZWxpbmUuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCisjaW5jbHVkZSAiQWJv
cnRhYmxlVGFza1F1ZXVlLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3Vy
Y2VDbGllbnRHU3RyZWFtZXJNU0UuaCIKQEAgLTQ1LDIxICs0NiwyOCBAQCBzdHJ1Y3QgUGFkUHJv
YmVJbmZvcm1hdGlvbiB7CiAKIGNsYXNzIEFwcGVuZFBpcGVsaW5lIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEFwcGVuZFBpcGVsaW5lPiB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBB
cHBlbmRTdGF0ZSB7IEludmFsaWQsIE5vdFN0YXJ0ZWQsIE9uZ29pbmcsIERhdGFTdGFydmUsIFNh
bXBsaW5nLCBMYXN0U2FtcGxlLCBBYm9ydGluZyB9OwotCiAgICAgQXBwZW5kUGlwZWxpbmUoUmVm
PE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiwgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXI+LCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UmKTsKICAgICB2aXJ0dWFs
IH5BcHBlbmRQaXBlbGluZSgpOwogCisgICAgR3N0Rmxvd1JldHVybiBwdXNoTmV3QnVmZmVyKEdz
dEJ1ZmZlciopOworICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7CisgICAgdm9pZCBhYm9y
dCgpOworICAgIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdWZmZXJQ
cml2YXRlKCkgeyByZXR1cm4gbV9zb3VyY2VCdWZmZXJQcml2YXRlLmdldCgpOyB9CisgICAgR3N0
Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVybiBtX2FwcHNpbmtDYXBzLmdldCgpOyB9CisgICAg
UmVmUHRyPFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrKCkgeyByZXR1cm4gbV90cmFj
azsgfQorICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSogcGxheWVyUHJpdmF0ZSgp
IHsgcmV0dXJuIG1fcGxheWVyUHJpdmF0ZTsgfQorCitwcml2YXRlOgorICAgIGVudW0gY2xhc3Mg
QXBwZW5kU3RhdGUgeyBJbnZhbGlkLCBOb3RTdGFydGVkLCBPbmdvaW5nLCBEYXRhU3RhcnZlLCBT
YW1wbGluZywgTGFzdFNhbXBsZSwgQWJvcnRpbmcgfTsKKwogICAgIHZvaWQgaGFuZGxlTmVlZENv
bnRleHRTeW5jTWVzc2FnZShHc3RNZXNzYWdlKik7Ci0gICAgdm9pZCBoYW5kbGVBcHBsaWNhdGlv
bk1lc3NhZ2UoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgaGFuZGxlU3RhdGVDaGFuZ2VNZXNzYWdl
KEdzdE1lc3NhZ2UqKTsKIAogICAgIGdpbnQgaWQoKTsKICAgICBBcHBlbmRTdGF0ZSBhcHBlbmRT
dGF0ZSgpIHsgcmV0dXJuIG1fYXBwZW5kU3RhdGU7IH0KICAgICB2b2lkIHNldEFwcGVuZFN0YXRl
KEFwcGVuZFN0YXRlKTsKIAotICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlTmV3QXBwc2lua1NhbXBs
ZShHc3RFbGVtZW50Kik7Ci0gICAgR3N0Rmxvd1JldHVybiBwdXNoTmV3QnVmZmVyKEdzdEJ1ZmZl
ciopOworICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlQXBwc2lua05ld1NhbXBsZUZyb21TdHJlYW1p
bmdUaHJlYWQoR3N0RWxlbWVudCopOwogCiAgICAgLy8gVGFrZXMgb3duZXJzaGlwIG9mIGNhcHMu
CiAgICAgdm9pZCBwYXJzZURlbXV4ZXJTcmNQYWRDYXBzKEdzdENhcHMqKTsKQEAgLTY5LDI2ICs3
NywxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVFbmRPZkFwcGVuZCgpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCgpOwogICAgIEF0b21pY1N0cmluZyB0cmFj
a0lkKCk7Ci0gICAgdm9pZCBhYm9ydCgpOwogCi0gICAgdm9pZCBjbGVhclBsYXllclByaXZhdGUo
KTsKLSAgICBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJp
dmF0ZSgpIHsgcmV0dXJuIG1fc291cmNlQnVmZmVyUHJpdmF0ZS5nZXQoKTsgfQogICAgIEdzdEJ1
cyogYnVzKCkgeyByZXR1cm4gbV9idXMuZ2V0KCk7IH0KICAgICBHc3RFbGVtZW50KiBwaXBlbGlu
ZSgpIHsgcmV0dXJuIG1fcGlwZWxpbmUuZ2V0KCk7IH0KICAgICBHc3RFbGVtZW50KiBhcHBzcmMo
KSB7IHJldHVybiBtX2FwcHNyYy5nZXQoKTsgfQogICAgIEdzdEVsZW1lbnQqIGFwcHNpbmsoKSB7
IHJldHVybiBtX2FwcHNpbmsuZ2V0KCk7IH0KICAgICBHc3RDYXBzKiBkZW11eGVyU3JjUGFkQ2Fw
cygpIHsgcmV0dXJuIG1fZGVtdXhlclNyY1BhZENhcHMuZ2V0KCk7IH0KLSAgICBHc3RDYXBzKiBh
cHBzaW5rQ2FwcygpIHsgcmV0dXJuIG1fYXBwc2lua0NhcHMuZ2V0KCk7IH0KLSAgICBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UqIHBsYXllclByaXZhdGUoKSB7IHJldHVybiBtX3BsYXll
clByaXZhdGU7IH0KLSAgICBSZWZQdHI8V2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZT4gdHJhY2so
KSB7IHJldHVybiBtX3RyYWNrOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1UeXBl
R1N0cmVhbWVyIHN0cmVhbVR5cGUoKSB7IHJldHVybiBtX3N0cmVhbVR5cGU7IH0KIAogICAgIHZv
aWQgZGlzY29ubmVjdERlbXV4ZXJTcmNQYWRGcm9tQXBwc2lua0Zyb21BbnlUaHJlYWQoR3N0UGFk
Kik7Ci0gICAgdm9pZCBhcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzRnJvbUFueVRocmVh
ZCgpOwotICAgIHZvaWQgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tQW55VGhyZWFk
KEdzdFBhZCopOworICAgIHZvaWQgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmtGcm9tU3Ry
ZWFtaW5nVGhyZWFkKEdzdFBhZCopOwogICAgIHZvaWQgY29ubmVjdERlbXV4ZXJTcmNQYWRUb0Fw
cHNpbmsoR3N0UGFkKik7CiAKLXByaXZhdGU6CiAgICAgdm9pZCByZXNldFBpcGVsaW5lKCk7CiAg
ICAgdm9pZCBjaGVja0VuZE9mQXBwZW5kKCk7CiAgICAgdm9pZCBkZW11eGVyTm9Nb3JlUGFkcygp
OwpAQCAtOTgsNiArOTgsNyBAQCBwcml2YXRlOgogICAgIEdzdFBhZFByb2JlUmV0dXJuIGFwcHNy
Y0VuZE9mQXBwZW5kQ2hlY2tlclByb2JlKEdzdFBhZFByb2JlSW5mbyopOwogCiAgICAgc3RhdGlj
IHZvaWQgc3RhdGljSW5pdGlhbGl6YXRpb24oKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZHVt
cEFwcGVuZFN0YXRlKEFwcGVuZFBpcGVsaW5lOjpBcHBlbmRTdGF0ZSk7CiAKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgc19zdGF0aWNJbml0aWFsaXphdGlvbkZsYWc7CiAgICAgc3RhdGljIEdU
eXBlIHNfZW5kT2ZBcHBlbmRNZXRhVHlwZTsKQEAgLTEzMSw5ICsxMzIsNiBAQCBwcml2YXRlOgog
ICAgIC8vIHF1ZXVlLCBpbnN0ZWFkIG9mIGl0IGdyb3dpbmcgdW5ib3VuZGVkLgogICAgIHN0ZDo6
YXRvbWljX2ZsYWcgbV93YXNCdXNBbHJlYWR5Tm90aWZpZWRPZkF2YWlsYWJsZVNhbXBsZXM7CiAK
LSAgICBMb2NrIG1fcGFkQWRkUmVtb3ZlTG9jazsKLSAgICBDb25kaXRpb24gbV9wYWRBZGRSZW1v
dmVDb25kaXRpb247Ci0KICAgICBHUmVmUHRyPEdzdENhcHM+IG1fYXBwc2lua0NhcHM7CiAgICAg
R1JlZlB0cjxHc3RDYXBzPiBtX2RlbXV4ZXJTcmNQYWRDYXBzOwogICAgIEZsb2F0U2l6ZSBtX3By
ZXNlbnRhdGlvblNpemU7CkBAIC0xNTgsNiArMTU2LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3Jl
OjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXIgbV9zdHJlYW1UeXBlOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlPiBtX3RyYWNrOwogCisgICAgQWJvcnRhYmxlVGFz
a1F1ZXVlIG1fdGFza1F1ZXVlOworCiAgICAgR1JlZlB0cjxHc3RCdWZmZXI+IG1fcGVuZGluZ0J1
ZmZlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAxNGRiMjM5MzUxMjZmY2IxZmY1ZGUxNGQ0ZGY1YzEwYTg3MmU4MmMyLi4xNjRkOTA3
YzUwODQyYmM0NGUzM2ZiN2IyMjEzZTQyY2U3NzAwNGJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMTAtMjUg
IEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtNU0Vd
W0dTdHJlYW1lcl0gSW50cm9kdWNlIEFib3J0YWJsZVRhc2tRdWV1ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIEFib3J0YWJsZVRhc2tR
dWV1ZSBhcmUgaW5jbHVkZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9B
Ym9ydGFibGVUYXNrUXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RmFuY3lSZXNwb25zZTo6RmFuY3lSZXNwb25z
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGYW5jeVJlc3BvbnNlOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjo6RGV0ZXJtaW5p
c3RpY1NjaGVkdWxlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2No
ZWR1bGVyOjpUaHJlYWRDb250ZXh0OjpUaHJlYWRDb250ZXh0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkRldGVybWluaXN0aWNTY2hlZHVsZXI6OlRocmVhZENvbnRleHQ6OndhaXRNeVR1cm4p
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjo6VGhyZWFk
Q29udGV4dDo6eWllbGRUb1RocmVhZCk6CisKIDIwMTgtMTAtMzEgIEd1aWxsYXVtZSBFbW9udCAg
PGd1aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAgIERvbid0IHJ1biBKSVQgdGVzdHMgb24g
MzItYml0IHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXgg
YjBlMjY4ZWYyNmViYzhmOGM1OWNmMWU1NGJhYmZjOTk0ZmFjOWJmNC4uNjRjYTQwMDY2Yjg2ZmFh
MWQxODJkNzM5Nzc5OTI0YzgxMWNjZDQ4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlCkBAIC0xMDQsNiArMTA0LDcgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKyAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAK
ICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKFRlc3RXZWJDb3JlICR7dGVzdF93ZWJjb3JlX0xJ
QlJBUklFU30pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ1ZjliNzcyMDgxNmRiZGRkNmMx
MjVhYjRjNTdiZThkM2I5ZDMxNWIuLjc3ODgyYmI5YzRmMjhmMzk3ZjhkNGQxOGVmMzVjMzFlOTAx
YmVkNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODcsNiArNDg3LDcgQEAKIAkJN0ND
RTdFREIxQTQxMUE5MjAwNDQ3QzRDIC8qIENTU1BhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0NTFFOTE5RTQxRjlEMDAxNjkzNkYgLyog
Q1NTUGFyc2VyLmNwcCAqLzsgfTsKIAkJN0NDRTdFREMxQTQxMUE5MjAwNDQ3QzRDIC8qIENhbGN1
bGF0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNBNzIwRTUxOEYxQTBFODAwQTg0OEUxIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwICov
OyB9OwogCQk3Q0NFN0VERDFBNDExQTkyMDA0NDdDNEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMyQzcxNDE3OTcwODlE
MDBFNjI3RkIgLyogVGltZVJhbmdlcy5jcHAgKi87IH07CisJCUNENTFDMkE5M0U3OEI1QzFGRjMz
N0MwOCAvKiBBYm9ydGFibGVUYXNrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGNTEwNjMyQTE5QjhBQzdFQzQwRTE3IC8qIEFib3J0YWJs
ZVRhc2tRdWV1ZS5jcHAgKi87IH07CiAJCTdDQ0U3RURFMUE0MTFBOTIwMDQ0N0M0QyAvKiBVUkwu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwQTFE
MzgxNEEwMTAzQTAwOEE2NkYyIC8qIFVSTC5jcHAgKi87IH07CiAJCTdDQ0U3RURGMUE0MTFBOTIw
MDQ0N0M0QyAvKiBMYXlvdXRVbml0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0LmNw
cCAqLzsgfTsKIAkJN0NDRTdFRTAxQTQxMUE5QTAwNDQ3QzRDIC8qIEVkaXRvckNvbW1hbmRzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4NTcx
NEEwNDRENDAwODhGQUM0IC8qIEVkaXRvckNvbW1hbmRzLm1tICovOyB9OwpAQCAtMTk4NSw2ICsx
OTg2LDcgQEAKIAkJQ0RCRkNDNDIxQTlGRjQ0ODAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5p
dGlhbEZyYW1lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBGdWxsc2NyZWVuWm9v
bUluaXRpYWxGcmFtZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREJGQ0M0
MzFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGdWxsc2NyZWVuWm9vbUluaXRpYWxG
cmFtZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMkM3MTQxNzk3MDg5RDAw
RTYyN0ZCIC8qIFRpbWVSYW5nZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGltZVJhbmdlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFCRjUxMDYzMkExOUI4QUM3RUM0MEUx
NyAvKiBBYm9ydGFibGVUYXNrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJvcnRhYmxl
VGFza1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEU0ODUxQkM1
QjE5NDAwNTk0RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzhFNDg5MUJDNUM5NjIwMDU5NEZFQyAvKiB2
aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidmlkZW8t
d2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEU0OEEx
QkM1Qzk2MjAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8ubXA0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJ2aWRlby13aXRo
LWF1ZGlvLm1wNCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTIxLDYgKzI1MjMs
NyBAQAogCQkJCUNEODlEMDM3MUM0RURCMTMwMDA0MEEwNCAvKiBjb2NvYSAqLywKIAkJCQlBMUVD
MTE4NTFGNDI1M0Q5MDBEMDE0NkUgLyogaW9zICovLAogCQkJCTMxNjJBRTlBMUU2RjJGOEYwMDBF
NERCQyAvKiBtYWMgKi8sCisJCQkJQUJGNTEwNjMyQTE5QjhBQzdFQzQwRTE3IC8qIEFib3J0YWJs
ZVRhc2tRdWV1ZS5jcHAgKi8sCiAJCQkJN0E5MDlBNkYxRDg3NzQ3NTAwN0UxMEY4IC8qIEFmZmlu
ZVRyYW5zZm9ybS5jcHAgKi8sCiAJCQkJNjM1NEY0RDAxRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxp
Y2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovLAogCQkJCTkzQTcyMEU1MThGMUEwRTgwMEE4NDhF
MSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWJlZmY3NmY4MmUxOGEyYjJkYWVjMWU2Yjc1Y2JjMDdjM2RmNGYxMQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUu
Y3BwCkBAIC0wLDAgKzEsMjU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwg
Uy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPEFib3J0YWJsZVRhc2tRdWV1
ZS5oPgorI2luY2x1ZGUgPFV0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KworVEVTVChBYm9ydGFibGVUYXNrUXVldWUsIEFzeW5jVGFza3MpCit7CisgICAgQWJvcnRhYmxl
VGFza1F1ZXVlIHRhc2tRdWV1ZTsKKyAgICBib29sIHRlc3RGaW5pc2hlZCB7IGZhbHNlIH07Cisg
ICAgaW50IGN1cnJlbnRTdGVwIHsgMCB9OworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVu
TG9vcCgpOworCisgICAgYXV0byBiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24gPSBbJl0oKSB7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShpc01haW5UaHJlYWQoKSk7CisgICAgICAgIHRhc2tRdWV1ZS50
cnlFbnF1ZXVlVGFzayhbJl0oKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpc01haW5UaHJl
YWQoKSk7CisgICAgICAgICAgICBjdXJyZW50U3RlcCsrOworICAgICAgICAgICAgRVhQRUNUX0VR
KDEsIGN1cnJlbnRTdGVwKTsKKyAgICAgICAgfSk7CisgICAgICAgIHRhc2tRdWV1ZS50cnlFbnF1
ZXVlVGFzayhbJl0oKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpc01haW5UaHJlYWQoKSk7
CisgICAgICAgICAgICBjdXJyZW50U3RlcCsrOworICAgICAgICAgICAgRVhQRUNUX0VRKDIsIGN1
cnJlbnRTdGVwKTsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0p
OworICAgIH07CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFtiYWNrZ3JvdW5kVGhy
ZWFkRnVuY3Rpb24gPSBXVEZNb3ZlKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbildKCkgbXV0YWJs
ZSB7CisgICAgICAgIFdURjo6VGhyZWFkOjpjcmVhdGUoImF0cS1iYWNrZ3JvdW5kIiwgV1RGTW92
ZShiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24pKS0+ZGV0YWNoKCk7CisgICAgfSk7CisKKyAgICBV
dGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK3N0cnVjdCBGYW5jeVJlc3BvbnNlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShGYW5jeVJlc3BvbnNlKTsKK3B1YmxpYzoKKyAgICBGYW5j
eVJlc3BvbnNlKGludCBmYW5jeUludCkKKyAgICAgICAgOiBmYW5jeUludChmYW5jeUludCkKKyAg
ICB7IH0KKworICAgIEZhbmN5UmVzcG9uc2UoRmFuY3lSZXNwb25zZSYmIGEpCisgICAgICAgIDog
ZmFuY3lJbnQoYS5mYW5jeUludCkKKyAgICB7IH0KKworICAgIEZhbmN5UmVzcG9uc2UmIG9wZXJh
dG9yPShGYW5jeVJlc3BvbnNlJiYgYSkKKyAgICB7CisgICAgICAgIHRoaXMtPmZhbmN5SW50ID0g
YS5mYW5jeUludDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGludCBmYW5j
eUludDsKK307CisKK1RFU1QoQWJvcnRhYmxlVGFza1F1ZXVlLCBTeW5jVGFza3MpCit7CisgICAg
QWJvcnRhYmxlVGFza1F1ZXVlIHRhc2tRdWV1ZTsKKyAgICBib29sIHRlc3RGaW5pc2hlZCB7IGZh
bHNlIH07CisgICAgaW50IGN1cnJlbnRTdGVwIHsgMCB9OworICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOworCisgICAgYXV0byBiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24gPSBb
Jl0oKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShpc01haW5UaHJlYWQoKSk7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUudHJ5RW5xdWV1
ZVRhc2tBbmRXYWl0Rm9yUmVwbHk8RmFuY3lSZXNwb25zZT4oWyZdKCkgLT4gRmFuY3lSZXNwb25z
ZSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpc01haW5UaHJlYWQoKSk7CisgICAgICAgICAg
ICBjdXJyZW50U3RlcCsrOworICAgICAgICAgICAgRVhQRUNUX0VRKDEsIGN1cnJlbnRTdGVwKTsK
KyAgICAgICAgICAgIEZhbmN5UmVzcG9uc2UgcmV0dXJuVmFsdWUoMTAwKTsKKyAgICAgICAgICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIGN1cnJlbnRTdGVwKys7
CisgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7CisgICAgICAgIEVYUEVDVF9UUlVF
KHJlc3BvbnNlKTsKKyAgICAgICAgRVhQRUNUX0VRKDEwMCwgcmVzcG9uc2UtPmZhbmN5SW50KTsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFsmXSgpIHsKKyAgICAgICAgICAgIHRl
c3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgIH07CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFtiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24gPSBXVEZNb3ZlKGJhY2tn
cm91bmRUaHJlYWRGdW5jdGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgIFdURjo6VGhyZWFkOjpj
cmVhdGUoImF0cS1iYWNrZ3JvdW5kIiwgV1RGTW92ZShiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24p
KS0+ZGV0YWNoKCk7CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUaHJlYWRFbnVtPgorY2xhc3MgRGV0ZXJtaW5pc3RpY1Nj
aGVkdWxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGV0ZXJtaW5pc3RpY1NjaGVkdWxl
cik7CitwdWJsaWM6CisgICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcihUaHJlYWRFbnVtIGZpcnN0
VGhyZWFkKQorICAgICAgICA6IG1fY3VycmVudFRocmVhZChmaXJzdFRocmVhZCkKKyAgICB7IH0K
KworICAgIGNsYXNzIFRocmVhZENvbnRleHQgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShUaHJlYWRDb250ZXh0KTsKKyAgICBwdWJsaWM6CisgICAgICAgIFRocmVhZENvbnRleHQoRGV0
ZXJtaW5pc3RpY1NjaGVkdWxlciYgc2NoZWR1bGVyLCBUaHJlYWRFbnVtIHRoaXNUaHJlYWQpCisg
ICAgICAgICAgICA6IG1fc2NoZWR1bGVyKHNjaGVkdWxlciksIG1fdGhpc1RocmVhZCh0aGlzVGhy
ZWFkKQorICAgICAgICB7IH0KKworICAgICAgICB2b2lkIHdhaXRNeVR1cm4oKQorICAgICAgICB7
CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9zY2hlZHVsZXIubV9tdXRleCk7CisgICAg
ICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWRDaGFuZ2VkLndhaXQobV9zY2hlZHVs
ZXIubV9tdXRleCwgW3RoaXNdKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtX3NjaGVkdWxl
ci5tX2N1cnJlbnRUaHJlYWQgPT0gbV90aGlzVGhyZWFkOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIHlpZWxkVG9UaHJlYWQoVGhyZWFkRW51bSBuZXh0VGhyZWFk
KQorICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9zY2hlZHVsZXIubV9t
dXRleCk7CisgICAgICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWQgPSBuZXh0VGhy
ZWFkOworICAgICAgICAgICAgbV9zY2hlZHVsZXIubV9jdXJyZW50VGhyZWFkQ2hhbmdlZC5ub3Rp
ZnlBbGwoKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgRGV0ZXJtaW5pc3Rp
Y1NjaGVkdWxlciYgbV9zY2hlZHVsZXI7CisgICAgICAgIFRocmVhZEVudW0gbV90aGlzVGhyZWFk
OworICAgIH07CisKKworcHJpdmF0ZToKKyAgICBUaHJlYWRFbnVtIG1fY3VycmVudFRocmVhZDsK
KyAgICBDb25kaXRpb24gbV9jdXJyZW50VGhyZWFkQ2hhbmdlZDsKKyAgICBMb2NrIG1fbXV0ZXg7
Cit9OworCitlbnVtIGNsYXNzIFRlc3RUaHJlYWQgeworICAgIE1haW4sCisgICAgQmFja2dyb3Vu
ZAorfTsKKworVEVTVChBYm9ydGFibGVUYXNrUXVldWUsIEFib3J0KQoreworICAgIERldGVybWlu
aXN0aWNTY2hlZHVsZXI8VGVzdFRocmVhZD4gc2NoZWR1bGVyKFRlc3RUaHJlYWQ6OkJhY2tncm91
bmQpOworCisgICAgQWJvcnRhYmxlVGFza1F1ZXVlIHRhc2tRdWV1ZTsKKyAgICBib29sIHRlc3RG
aW5pc2hlZCB7IGZhbHNlIH07CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CisKKyAgICBhdXRvIGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbiA9IFsmXSgpIHsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgRGV0ZXJtaW5pc3RpY1NjaGVk
dWxlcjxUZXN0VGhyZWFkPjo6VGhyZWFkQ29udGV4dCBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dChz
Y2hlZHVsZXIsIFRlc3RUaHJlYWQ6OkJhY2tncm91bmQpOworCisgICAgICAgIHRhc2tRdWV1ZS50
cnlFbnF1ZXVlVGFzayhbXSgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgdGFzayBzaG91bGQgbm90
IGhhdmUgYmVlbiBhYmxlIHRvIHJ1biB1bmRlciB0aGUgc2NoZWR1bGluZyBvZiB0aGlzIHRlc3Qu
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgICAgIH0pOworICAgICAgICBi
YWNrZ3JvdW5kVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6Ok1haW4pOwor
ICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dC53YWl0TXlUdXJuKCk7CisKKyAgICAgICAg
Ly8gTWFpbiB0aHJlYWQgaGFzIGNhbGxlZCBzdGFydEFib3J0aW5nKCkuCisKKyAgICAgICAgdGFz
a1F1ZXVlLnRyeUVucXVldWVUYXNrKFtdKCkgeworICAgICAgICAgICAgLy8gVGhpcyB0YXNrIHNo
b3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gcnVuIHVuZGVyIHRoZSBzY2hlZHVsaW5nIG9mIHRo
aXMgdGVzdC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIC8vIFRoaXMgY2FsbCBtdXN0IHJldHVybiBpbW1lZGlhdGVseSBiZWNhdXNlIHdlIGFy
ZSBhYm9ydGluZy4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxGYW5jeVJlc3BvbnNlPiByZXNwb25z
ZSA9IHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFza0FuZFdhaXRGb3JSZXBseTxGYW5jeVJlc3BvbnNl
PihbXSgpIC0+IEZhbmN5UmVzcG9uc2UgeworICAgICAgICAgICAgLy8gVGhpcyB0YXNrIHNob3Vs
ZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gcnVuIHVuZGVyIHRoZSBzY2hlZHVsaW5nIG9mIHRoaXMg
dGVzdC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVy
biBGYW5jeVJlc3BvbnNlKDEwMCk7CisgICAgICAgIH0pOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
cmVzcG9uc2UpOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFk
KFRlc3RUaHJlYWQ6Ok1haW4pOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dC53YWl0
TXlUdXJuKCk7CisKKyAgICAgICAgLy8gTWFpbiB0aHJlYWQgaGFzIGNhbGxlZCBmaW5pc2hBYm9y
dGluZygpLgorCisgICAgICAgIHRhc2tRdWV1ZS50cnlFbnF1ZXVlVGFzayhbJl0oKSB7CisgICAg
ICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICB9KTsKKyAgICB9OworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJiwgYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0g
V1RGTW92ZShiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24pXSgpIG11dGFibGUgeworICAgICAgICBF
WFBFQ1RfVFJVRShpc01haW5UaHJlYWQoKSk7CisgICAgICAgIERldGVybWluaXN0aWNTY2hlZHVs
ZXI8VGVzdFRocmVhZD46OlRocmVhZENvbnRleHQgbWFpblRocmVhZENvbnRleHQoc2NoZWR1bGVy
LCBUZXN0VGhyZWFkOjpNYWluKTsKKyAgICAgICAgV1RGOjpUaHJlYWQ6OmNyZWF0ZSgiYXRxLWJh
Y2tncm91bmQiLCBXVEZNb3ZlKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbikpLT5kZXRhY2goKTsK
KworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC53YWl0TXlUdXJuKCk7CisKKyAgICAgICAgdGFz
a1F1ZXVlLnN0YXJ0QWJvcnRpbmcoKTsKKyAgICAgICAgbWFpblRocmVhZENvbnRleHQueWllbGRU
b1RocmVhZChUZXN0VGhyZWFkOjpCYWNrZ3JvdW5kKTsKKyAgICAgICAgbWFpblRocmVhZENvbnRl
eHQud2FpdE15VHVybigpOworCisgICAgICAgIHRhc2tRdWV1ZS5maW5pc2hBYm9ydGluZygpOwor
ICAgICAgICBtYWluVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6OkJhY2tn
cm91bmQpOworICAgIH0pOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQorCitU
RVNUKEFib3J0YWJsZVRhc2tRdWV1ZSwgQWJvcnREdXJpbmdTeW5jVGFzaykKK3sKKyAgICBBYm9y
dGFibGVUYXNrUXVldWUgdGFza1F1ZXVlOworICAgIGJvb2wgdGVzdEZpbmlzaGVkIHsgZmFsc2Ug
fTsKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGF1dG8gYmFj
a2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZdKCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNN
YWluVGhyZWFkKCkpOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVz
cG9uc2UgPSB0YXNrUXVldWUudHJ5RW5xdWV1ZVRhc2tBbmRXYWl0Rm9yUmVwbHk8RmFuY3lSZXNw
b25zZT4oW10oKSAtPiBGYW5jeVJlc3BvbnNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMgdGFzayBz
aG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHJ1biB1bmRlciB0aGUgc2NoZWR1bGluZyBvZiB0
aGlzIHRlc3QuCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgICAgICAgICBy
ZXR1cm4gRmFuY3lSZXNwb25zZSgxMDApOworICAgICAgICB9KTsKKworICAgICAgICAvLyBNYWlu
IHRocmVhZCBoYXMgY2FsbGVkIHN0YXJ0QWJvcnRpbmcoKS4KKyAgICAgICAgRVhQRUNUX0ZBTFNF
KHJlc3BvbnNlKTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goWyZdKCkgewor
ICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfTsKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyYsIGJhY2tncm91bmRUaHJlYWRGdW5jdGlv
biA9IFdURk1vdmUoYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBXVEY6OlRocmVhZDo6Y3Jl
YXRlKCJhdHEtYmFja2dyb3VuZCIsIFdURk1vdmUoYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uKSkt
PmRldGFjaCgpOworCisgICAgICAgIC8vIEdpdmUgdGhlIGJhY2tncm91bmQgdGhyZWFkIGEgYml0
IG9mIHRpbWUgdG8gZ2V0IGJsb2NrZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZS4KKyAgICAgICAg
V1RGOjpzbGVlcCgxMDBfbXMpOworCisgICAgICAgIHRhc2tRdWV1ZS5zdGFydEFib3J0aW5nKCk7
CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354552</attachid>
            <date>2018-11-12 06:02:10 -0800</date>
            <delta_ts>2018-11-12 06:40:34 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-190902-20181112150208.patch</filename>
            <type>text/plain</type>
            <size>57019</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzUwNzU1MGZhNzViMjg2
YjU3YmIyMjhiN2FiNmExNDJiNDVmODFmYi4uYmM3NjkyOWE1MGEwYzQ0OTIwMDFkMTBhMDBjMDY4
MjNkZDVmMmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTEwLTI1ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXVtHU3Ry
ZWFtZXJdIEludHJvZHVjZSBBYm9ydGFibGVUYXNrUXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IFhhYmllciBSb2RyaWd1ZXotQ2FsdmFyLgorCisgICAgICAgIEEgbmV3IHN5bmNocm9uaXphdGlv
biBwcmltaXRpdmUgaXMgaW50cm9kdWNlZDogQWJvcnRhYmxlVGFza1F1ZXVlLAorICAgICAgICB3
aGljaCBhbGxvd3MgdG8gc2VuZCB3b3JrIHRvIHRoZSBtYWluIHRocmVhZCBmcm9tIGEgYmFja2dy
b3VuZCB0aHJlYWQKKyAgICAgICAgd2l0aCB0aGUgb3B0aW9uIHRvIHBlcmZvcm0gdHdvLXBoYXNl
IGNhbmNlbGxhdGlvbiAoc3RhcnRBYm9ydGluZygpIGFuZAorICAgICAgICBmaW5pc2hBYm9ydGlu
ZygpKS4KKworICAgICAgICBUaGlzIG5ldyBwcmltaXRpdmUgaGFzIGJlZW4gdXNlZCB0byBvdmVy
aGF1bCBHc3RCdXMgbWVzc2FnaW5nIGluCisgICAgICAgIEFwcGVuZFBpcGVsaW5lLiBBIGxvdCBv
ZiBjb2RlIG1hZGUgcmVkdW5kYW50IGhhcyBiZWVuIGRlbGV0ZWQgaW4gdGhlCisgICAgICAgIHBy
b2Nlc3MgYW5kIGxvdHMgb2YgaW50ZXJuYWwgZnVuY3Rpb25zIHdlcmUgbm93IGFibGUgdG8gYmUg
bWFkZQorICAgICAgICBwcml2YXRlLiBBcyBwYXJ0IG9mIHRoZSByZWZhY3RvciBhbGwgZ2xpYiBz
aWduYWxzIGluIEFwcGVuZFBpcGVsaW5lCisgICAgICAgIG5vdyB1c2UgbGFtYmRhcy4gQWxsIHVz
YWdlcyBvZiBXVEY6OmlzTWFpblRocmVhZCgpIGluIEFwcGVuZFBpcGVsaW5lCisgICAgICAgIGhh
dmUgYmVlbiByZXBsYWNlZCBieSBpc01haW5UaHJlYWQoKSBmb3IgY29uc2lzdGVuY3kgd2l0aCB0
aGUgcmVzdCBvZgorICAgICAgICBXZWJLaXQuCisKKyAgICAgICAgVHdvLXBoYXNlIGNhbmNlbGxh
dGlvbiBpcyBzdGlsbCBub3QgdXNlZCBpbiBBcHBlbmRQaXBlbGluZSBhcyBvZiB0aGlzCisgICAg
ICAgIHBhdGNoLCBidXQgaXQgd2lsbCBiZSB1c2VkIGluIGEgZnV0dXJlIHBhdGNoIHRoYXQgbWFr
ZXMgdXNlIG9mCisgICAgICAgIEdTdHJlYW1lciBmbHVzaGVzIHRvIGltcGxlbWVudCBjb3JyZWN0
IE1TRSBhYm9ydCBzZW1hbnRpY3MuIFRoZXJlIGFyZQorICAgICAgICB1bml0IHRlc3RzIHRvIGVu
c3VyZSBpdCB3b3JrcyBjb3JyZWN0bHksIGV2ZW4gaWYgaXQncyBzdGlsbCBub3QgdXNlZC4KKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBw
bGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBlbmRQaXBlbGluZTo6ZHVtcEFwcGVuZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBl
bmRQaXBlbGluZTo6fkFwcGVuZFBpcGVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBp
cGVsaW5lOjphcHBzcmNFbmRPZkFwcGVuZENoZWNrZXJQcm9iZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBlbmRQaXBlbGluZTo6aGFuZGxlQXBwc2lua05ld1NhbXBsZUZyb21BbnlUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OmNvbm5lY3REZW11eGVyU3JjUGFkVG9B
cHBzaW5rRnJvbUFueVRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9BcHBlbmRQaXBlbGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxp
bmU6OnNvdXJjZUJ1ZmZlclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxp
bmU6OmFwcHNpbmtDYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjp0cmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6ZGVtdXhlclNyY1BhZENhcHMp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OnBsYXllclByaXZhdGUpOgorCiAy
MDE4LTEwLTMxICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbTVNFXSBVc2UgdG9sZXJhbmNlIHdoZW4gZ3Jvd2luZyB0aGUgY29kZWQgZnJhbWUgZ3Jv
dXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxMWNiMGU3YzU2OWY1MGI2YmFhYWFiNWQ3MTk4MjVjZDZlMTBhNWIyLi45ZGY1NGQ0
MDYyMmM1ZDg2MTNkYTRlOWNiZWZjNDU0NjA1NjE1NTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQwLDYgKzEyNDAsNyBA
QAogCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3RlRnJhbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkyMjA3RDYzMkUwMEE3
RDJERCAvKiBSZW1vdGVGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QkNCQkMyMjA4NTAwOEYwMDcxMDYzOCAvKiBKU1JlbW90ZURPTVdp
bmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QkNCQkMwMjA4NTAwN0YwMDcxMDYzOCAvKiBKU1JlbW90ZURPTVdpbmRvd0Jhc2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkMzNzY2MjIw
ODUxNzdEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM3NjYxMjA4NTE3NkQwMEM3MzgyOSAvKiBK
U1JlbW90ZURPTVdpbmRvdy5oICovOyB9OworCQlDRDVGM0VERDlEMzMzQzQwQTlBMzhBNTQgLyog
QWJvcnRhYmxlVGFza1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBERkRCOTEyQ0Y4RTg4QTZEQTFBRDI2NEYgLyogQWJvcnRhYmxlVGFza1F1ZXVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZD
Njk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAw
NTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlB
NDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NjgyLDYgKzc2
ODMsNyBAQAogCQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2MzggLyogUmVtb3RlRE9NV2luZG93Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVET01XaW5kb3cuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkMzNzY1RjIwODUxNzZDMDBDNzM4MjkgLyogSlNSZW1vdGVE
T01XaW5kb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZW1v
dGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMzNzY2MTIw
ODUxNzZEMDBDNzM4MjkgLyogSlNSZW1vdGVET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNSZW1vdGVET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJREZEQjkxMkNGOEU4OEE2REExQUQyNjRGIC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYm9ydGFibGVUYXNrUXVldWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDNjk2QzkxRTcyMDVFNDAwNTk3OTM3IC8q
IENQVU1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVTW9uaXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM2OTZDQTFFNzIwNUU0MDA1OTc5
MzcgLyogQ1BVTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDUFVNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkIx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0ODU2LDYgKzI0ODU4LDcgQEAKIAkJCQkxQTJFNkU1NjBDQzU1MUUwMDA0QTIwNjIg
Lyogc3FsICovLAogCQkJCUIyQzNEOUVDMEQwMDZDMUQwMEVGNkYyNiAvKiB0ZXh0ICovLAogCQkJ
CUUxODgyMzVGMjAzMUY1MEYwMEI0MkRGMyAvKiB2ciAqLywKKwkJCQlERkRCOTEyQ0Y4RTg4QTZE
QTFBRDI2NEYgLyogQWJvcnRhYmxlVGFza1F1ZXVlLmggKi8sCiAJCQkJNDlBRTJEOTQxMzRFRTVG
OTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwICovLAogCQkJCTQ5QUUyRDk1MTM0RUU1
RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmggKi8sCiAJCQkJQzMzMEEyMjExM0VDMTk2
QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9BYm9ydGFibGVUYXNrUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGEzN2Y4YTQ2MzBhMzQ1MjEwYjk4
Njc3NzBkMjRkM2U3YTI3ZjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKQEAgLTAsMCArMSwyMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggSWdhbGlhLCBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9s
b2dpY2FsIEdyb3VwIEIuVi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24u
aD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIEFib3J0YWJs
ZVRhc2tRdWV1ZSBpcyBhIGhpZ2gtbGV2ZWwgc3luY2hyb25pemF0aW9uIG9iamVjdCBmb3IgY2Fz
ZXMgd2hlcmUgYWJvcnRhYmxlIHdvcmsgaXMgZG9uZSBpbgorICogYmFja2dyb3VuZCB0aHJlYWQo
cykgdGhhdCBzb21ldGltZXMgbmVlZHMgdG8gcG9zdCB0YXNrcyB0byB0aGUgbWFpbiB0aHJlYWQu
CisgKgorICogVGhlIHRhc2tzIHBvc3RlZCBieSB0aGUgYmFja2dyb3VuZCB0aHJlYWQocykgdG8g
dGhlIG1haW4gdGhyZWFkIG1heSBiZSBhc3luY2hyb25vdXMsIHVzaW5nIGVucXVldWVUYXNrKCks
CisgKiB3aGljaCByZXR1cm5zIGltbWVkaWF0ZWx5OyBvciBzeW5jaHJvbm91cywgdXNpbmcgZW5x
dWV1ZVRhc2tBbmRXYWl0KCksIHdoaWNoIGJsb2NrcyB0aGUgY2FsbGluZworICogYmFja2dyb3Vu
ZCB0aHJlYWQgdW50aWwgdGhlIHRhc2sgaXMgcnVuIGJ5IHRoZSBtYWluIHRocmVhZCAocG9zc2li
bHkgcmV0dXJuaW5nIGEgdmFsdWUpLgorICoKKyAqIFdoYXQgbWFrZXMgQWJvcnRhYmxlVGFza1F1
ZXVlIGRpZmZlcmVudCBmcm9tIG90aGVyIHRhc2sgcXVldWVpbmcgbWVjaGFuaXNtcyBpcyB0aGF0
IGl0IHByb3ZpZGVzIGEgdHdvLXBoYXNlCisgKiBwcm90b2NvbCBmb3IgYWJvcnRpbmcgdGhlIHdv
cmsgaW4gdGhlIGJhY2tncm91bmQgdGhyZWFkIGluIHByZXNlbmNlIG9mIHF1ZXVlZCB0YXNrcyB3
aXRob3V0IGRlYWRsb2NrcyBvcgorICogbGF0ZSBub3RpZmljYXRpb24gYnVncy4KKyAqCisgKiBX
aXRob3V0IGEgdHdvLXBoYXNlIGRlc2lnbiBkZWFkbG9ja3Mgd291bGQgb2NjdXIgd2hlbiBhdHRl
bXB0aW5nIGFuIGFib3J0IGlmIGEgYmFja2dyb3VuZCB0aHJlYWQgd2FzCisgKiBibG9ja2VkIGlu
IGEgc3luY2hyb25vdXMgdGFzayBhbmQgbmVlZGVkIHRvIHJldHVybiBmcm9tIHRoZXJlIGZvciB0
aGUgYWJvcnQgdG8gYmUgaGFuZGxlZC4gQWxzbywgd2l0aG91dAorICogYSBkZXNpZ24gbGlrZSB0
aGlzLCB0YXNrcyBhbHJlYWR5IGVucXVldWVkIGF0IHRoYXQgcG9pbnQgb3Igc29vbiB0aGVyZWFm
dGVyIHVudGlsIHRoZSBhYm9ydCBpcyBjb21wbGV0ZQorICogd291bGQgc3RpbGwgYmUgaGFuZGxl
ZCBieSB0aGUgbWFpbiB0aHJlYWQsIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHdhbnQgdG8gYW55bW9y
ZS4KKyAqCisgKiBBYm9ydGluZyBiYWNrZ3JvdW5kIHByb2Nlc3Npbmcgd2l0aCBBYm9ydGFibGVU
YXNrUXVldWUgaXMgYSBzZXZlcmFsIHN0ZXAgcHJvY2VzczoKKyAqCisgKiAgMS4gQ2FsbCBhYm9y
dGFibGVUYXNrUXVldWUuc3RhcnRBYm9ydGluZygpIC0tIFRoaXMgd2lsbCBtYWtlIGFueSBjdXJy
ZW50IG9yIGZ1dHVyZSAodW50aWwgZnVydGhlciBub3RpY2UpCisgKiAgICAgc3luY2hyb25vdXMg
dGFza3MgZmFpbCBpbW1lZGlhdGVseSwgc28gdGhhdCB3ZSBkb24ndCBkZWFkbG9jayBpbiB0aGUg
bmV4dCBzdGVwLiBBbHNvLCB0YXNrcyBvZiBhbnkga2luZAorICogICAgIGFscmVhZHkgZW5xdWV1
ZWQgd2lsbCBub3QgYmUgcnVuLgorICoKKyAqICAyLiBTZW5kIHRoZSBhYm9ydCBzaWduYWwgdG8g
dGhlIGJhY2tncm91bmQgdGhyZWFkcy4gVGhpcyBpcyBjb21wbGV0ZWx5IGFwcGxpY2F0aW9uIHNw
ZWNpZmljLiBGb3IgaW5zdGFuY2UsCisgKiAgICAgaW4gdGhlIEFwcGVuZFBpcGVsaW5lIGNhc2Ug
eW91IHdvdWxkIGZsdXNoIG9yIHJlc2V0IHRoZSBHU3RyZWFtZXIgcGlwZWxpbmUgaGVyZS4gV2Fp
dCB1bnRpbCBhbGwgdGhlCisgKiAgICAgYmFja2dyb3VuZCB0aHJlYWRzIGhhdmUgZmluaXNoZWQg
YWJvcnRpbmcuCisgKgorICogIDMuIENhbGwgYWJvcnRhYmxlVGFza1F1ZXVlLmZpbmlzaEFib3J0
aW5nKCkgLS0gVGhpcyB3aWxsIGFsbG93IG5ldyB0YXNrcyBxdWV1ZWQgZnJvbSB0aGlzIHBvaW50
IG9uIHRvIGJlCisgKiAgICAgaGFuZGxlZCBqdXN0IGFzIGJlZm9yZSB0aGUgYWJvcnQgd2FzIG1h
ZGUuCisgKgorICogIDQuIEFmdGVyIHRoaXMsIHRoZSBiYWNrZ3JvdW5kIHRocmVhZChzKSBjYW4g
YmUgcHV0IHRvIHdvcmsgYWdhaW4gc2FmZWx5LgorICoKKyAqIFRoaXMgY2xhc3MgaXMgdXNlZCBm
b3IgaGFuZGxpbmcgZGVtdXhlciBldmVudHMgaW4gQXBwZW5kUGlwZWxpbmUsIHRha2luZyBpbnRv
IGFjY291bnQgZGVtdXhpbmcgY2FuIGJlCisgKiBhYm9ydGVkIGF0IGFueSBtb21lbnQgaWYgU291
cmNlQnVmZmVyLmFib3J0KCkgaXMgY2FsbGVkIG9yIHRoZSBTb3VyY2VCdWZmZXIgaXMgZGVzdHJv
eWVkLiAqLworY2xhc3MgQWJvcnRhYmxlVGFza1F1ZXVlIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShBYm9ydGFibGVUYXNrUXVldWUpOworcHVibGljOgorICAgIEFib3J0YWJsZVRh
c2tRdWV1ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIH0K
KworICAgIH5BYm9ydGFibGVUYXNrUXVldWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAg
QVNTRVJUKG1fY2hhbm5lbC5pc0VtcHR5KCkpOworICAgIH0KKworICAgIC8vID09PT09PT09PT09
PT09PT09PT09PT09PT09PQorICAgIC8vIE1ldGhvZHMgZm9yIHRoZSBtYWluIHRocmVhZAorICAg
IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLy8gU3RhcnRzIGFuIGFib3J0
IHByb2Nlc3MuCisgICAgLy8KKyAgICAvLyBUYXNrcyBhbHJlYWR5IHF1ZXVlZCB3aWxsIGJlIGRp
c2NhcmRlZC4KKyAgICAvLworICAgIC8vIFVudGlsIGZpbmlzaEFib3J0aW5nIGlzIGNhbGxlZCwg
YWxsIHByZXNlbnQgYW5kIGZ1dHVyZSBjYWxscyB0byBlbnF1ZXVlVGFza0FuZFdhaXQoKSB3aWxs
IGltbWVkaWF0ZWx5CisgICAgLy8gcmV0dXJuIGFuIGVtcHR5IG9wdGlvbmFsLgorICAgIC8vCisg
ICAgLy8gVGhpcyBtZXRob2QgaXMgaWRlbXBvdGVudC4KKyAgICB2b2lkIHN0YXJ0QWJvcnRpbmco
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgICAgICB7Cisg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgICAgICBt
X2Fib3J0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGNhbmNlbEFsbFRhc2tzKCk7CisgICAgICAg
IH0KKyAgICAgICAgbV9hYm9ydGVkT3JSZXNwb25zZVNldC5ub3RpZnlBbGwoKTsKKyAgICB9CisK
KyAgICAvLyBEZWNsYXJlcyB0aGUgcHJldmlvdXMgYWJvcnQgZmluaXNoZWQuCisgICAgLy8KKyAg
ICAvLyBJbiBvcmRlciB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgdGhlIGJhY2tncm91bmQgdGhy
ZWFkcyBtdXN0IGJlIHVuYWJsZSB0byBwb3N0IHRhc2tzIGF0IHRoaXMgcG9pbnQuCisgICAgdm9p
ZCBmaW5pc2hBYm9ydGluZygpCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgQVNT
RVJUKG1fYWJvcnRpbmcpOworICAgICAgICBtX2Fib3J0aW5nID0gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIE1ldGhvZHMg
Zm9yIHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisKKyAgICAvLyBFbnF1ZXVlIGEgdGFzayB0byBiZSBydW4gb24gdGhlIG1h
aW4gdGhyZWFkLiBUaGUgdGFzayBtYXkgYmUgY2FuY2VsbGVkIGlmIGFuIGFib3J0IHN0YXJ0cyBi
ZWZvcmUgaXQncworICAgIC8vIGhhbmRsZWQuCisgICAgdm9pZCBlbnF1ZXVlVGFzayhXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBtYWluVGhyZWFkVGFza0hhbmRsZXIpCisgICAgeworICAgICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIo
bV9tdXRleCk7CisgICAgICAgIGlmIChtX2Fib3J0aW5nKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHBvc3RUYXNrKFdURk1vdmUobWFpblRocmVhZFRhc2tIYW5kbGVyKSk7CisgICAg
fQorCisgICAgLy8gRW5xdWV1ZSBhIHRhc2sgdG8gYmUgcnVuIG9uIHRoZSBtYWluIHRocmVhZCBh
bmQgd2FpdCBmb3IgaXQgdG8gcmV0dXJuLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXNrIGlz
CisgICAgLy8gZm9yd2FyZGVkIHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCwgd3JhcHBlZCBpbiBh
biBvcHRpb25hbC4KKyAgICAvLworICAgIC8vIElmIHdlIGFyZSBhYm9ydGluZywgdGhlIGNhbGwg
ZmluaXNoZXMgaW1tZWRpYXRlbHksIHJldHVybmluZyBhbiBlbXB0eSBvcHRpb25hbC4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBSPgorICAgIHN0ZDo6b3B0aW9uYWw8Uj4gZW5xdWV1ZVRhc2tBbmRX
YWl0KFdURjo6RnVuY3Rpb248UigpPiYmIG1haW5UaHJlYWRUYXNrSGFuZGxlcikKKyAgICB7Cisg
ICAgICAgIC8vIERvbid0IGRlYWRsb2NrIHRoZSBtYWluIHRocmVhZCB3aXRoIGl0c2VsZi4KKyAg
ICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
SG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBpZiAobV9hYm9ydGluZykKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSPiByZXNwb25zZSA9
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcG9zdFRhc2soW3RoaXMsICZyZXNwb25zZSwgJm1haW5U
aHJlYWRUYXNrSGFuZGxlcl0oKSB7CisgICAgICAgICAgICBSIHJlc3BvbnNlVmFsdWUgPSBtYWlu
VGhyZWFkVGFza0hhbmRsZXIoKTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlciht
X211dGV4KTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZVZhbHVlKTsK
KyAgICAgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQubm90aWZ5QWxsKCk7CisgICAgICAg
IH0pOworICAgICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0LndhaXQobV9tdXRleCwgW3RoaXMs
ICZyZXNwb25zZV0oKSB7CisgICAgICAgICAgICByZXR1cm4gbV9hYm9ydGluZyB8fCByZXNwb25z
ZTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiByZXNwb25zZTsKKyAgICB9CisKKyAgICAv
LyBUaGlzIGlzIGNsYXNzIGlzIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZSB3aGVuIHlvdSB3YW50
IHRvIHVzZSBlbnF1ZXVlVGFza0FuZFdhaXQoKSBidXQKKyAgICAvLyB5b3UgZG9uJ3QgbmVlZCBh
bnkgcGFydGljdWxhciBkYXRhIGZyb20gdGhlIG1haW4gdGhyZWFkIGluIHJldHVybiBhbmQganVz
dCBrbm93aW5nIHRoYXQgaXQgZmluaXNoZWQKKyAgICAvLyBydW5uaW5nIHRoZSBoYW5kbGVyIGZ1
bmN0aW9uIGlzIGVub3VnaC4KKyAgICBjbGFzcyBWb2lkIHsgfTsKKworcHJpdmF0ZToKKyAgICAv
LyBQcm90ZWN0ZWQgc3RhdGU6CisgICAgLy8gICBNYWluIHRocmVhZDogcmVhZC13cml0ZS4gV3Jp
dGVzIG11c3QgYmUgbWFkZSB3aXRoIHRoZSBsb2NrLgorICAgIC8vICAgQmFja2dyb3VuZCB0aHJl
YWRzOiByZWFkIG9ubHkuIFJlYWRzIG11c3QgYmUgbWFkZSB3aXRoIHRoZSBsb2NrLgorICAgIGNs
YXNzIFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGFzaz4geworICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShUYXNrKTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQoVGFzayk7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPFRhc2s+IGNyZWF0ZShB
Ym9ydGFibGVUYXNrUXVldWUqIHRhc2tRdWV1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFz
a0NhbGxiYWNrKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
YXNrKHRhc2tRdWV1ZSwgV1RGTW92ZSh0YXNrQ2FsbGJhY2spKSk7CisgICAgICAgIH0KKworICAg
ICAgICBib29sIGlzQ2FuY2VsbGVkKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuICFtX3Rhc2tRdWV1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY2FuY2VsKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCFpc0NhbmNlbGxlZCgpKTsKKyAgICAgICAgICAg
IG1fdGFza0NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fdGFza1F1ZXVlID0gbnVs
bHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlzcGF0Y2goKQorICAgICAgICB7Cisg
ICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgaWYgKGlzQ2Fu
Y2VsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2sobV90YXNrUXVldWUtPm1fbXV0ZXgpOworICAgICAgICAgICAgQVNTRVJUKHRoaXMg
PT0gbV90YXNrUXVldWUtPm1fY2hhbm5lbC5maXJzdCgpLnB0cigpKTsKKyAgICAgICAgICAgIG1f
dGFza1F1ZXVlLT5tX2NoYW5uZWwucmVtb3ZlRmlyc3QoKTsKKyAgICAgICAgICAgIGxvY2sudW5s
b2NrRWFybHkoKTsKKyAgICAgICAgICAgIG1fdGFza0NhbGxiYWNrKCk7CisgICAgICAgIH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIEFib3J0YWJsZVRhc2tRdWV1ZSogbV90YXNrUXVldWU7Cisg
ICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3Rhc2tDYWxsYmFjazsKKworICAgICAgICBU
YXNrKEFib3J0YWJsZVRhc2tRdWV1ZSogdGFza1F1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrQ2FsbGJhY2spCisgICAgICAgICAgICA6IG1fdGFza1F1ZXVlKHRhc2tRdWV1ZSksIG1f
dGFza0NhbGxiYWNrKFdURk1vdmUodGFza0NhbGxiYWNrKSkKKyAgICAgICAgeyB9CisgICAgfTsK
KworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCisg
ICAgeworICAgICAgICBBU1NFUlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAgIFJlZjxUYXNr
PiB0YXNrID0gVGFzazo6Y3JlYXRlKHRoaXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAg
bV9jaGFubmVsLmFwcGVuZCh0YXNrLmNvcHlSZWYoKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGFzayA9IFdURk1vdmUodGFzayldKCkgeyB0YXNrLT5kaXNwYXRjaCgpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGNhbmNlbEFsbFRhc2tzKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChtX211dGV4LmlzSGVsZCgpKTsK
KyAgICAgICAgZm9yIChSZWY8VGFzaz4mIHRhc2sgOiBtX2NoYW5uZWwpCisgICAgICAgICAgICB0
YXNrLT5jYW5jZWwoKTsKKyAgICAgICAgbV9jaGFubmVsLmNsZWFyKCk7CisgICAgfQorCisgICAg
Ym9vbCBtX2Fib3J0aW5nIHsgZmFsc2UgfTsKKyAgICBMb2NrIG1fbXV0ZXg7CisgICAgQ29uZGl0
aW9uIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQ7CisgICAgV1RGOjpEZXF1ZTxSZWY8VGFzaz4+IG1f
Y2hhbm5lbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5jcHAKaW5kZXggOTZjZjcxNmE3M2M5MjFmNjM0Mjk2Zjk1YjlmYmFmNGQ0YTI1
M2M1MS4uMWE4ODRlZDk5ZTMyMzU1N2FiMzAyMjEwYjRhMWZiMGFjNTdiN2FkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQ
aXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJN
ZWRpYURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
ci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KICNpbmNsdWRlIDxn
c3QvYXBwL2dzdGFwcHNyYy5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTY0LDE0ICs2NSwx
NCBAQCBzdHJ1Y3QgRW5kT2ZBcHBlbmRNZXRhIHsKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6c3Rh
dGljSW5pdGlhbGl6YXRpb24oKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgY29uc3QgY2hhciogdGFnc1tdID0g
eyBudWxscHRyIH07CiAgICAgc19lbmRPZkFwcGVuZE1ldGFUeXBlID0gZ3N0X21ldGFfYXBpX3R5
cGVfcmVnaXN0ZXIoIldlYktpdEVuZE9mQXBwZW5kTWV0YUFQSSIsIHRhZ3MpOwogICAgIHNfd2Vi
S2l0RW5kT2ZBcHBlbmRNZXRhSW5mbyA9IGdzdF9tZXRhX3JlZ2lzdGVyKHNfZW5kT2ZBcHBlbmRN
ZXRhVHlwZSwgIldlYktpdEVuZE9mQXBwZW5kTWV0YSIsIHNpemVvZihFbmRPZkFwcGVuZE1ldGEp
LCBFbmRPZkFwcGVuZE1ldGE6OmluaXQsIEVuZE9mQXBwZW5kTWV0YTo6ZnJlZSwgRW5kT2ZBcHBl
bmRNZXRhOjp0cmFuc2Zvcm0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogZHVtcEFwcGVuZFN0
YXRlKEFwcGVuZFBpcGVsaW5lOjpBcHBlbmRTdGF0ZSBhcHBlbmRTdGF0ZSkKK2NvbnN0IGNoYXIq
IEFwcGVuZFBpcGVsaW5lOjpkdW1wQXBwZW5kU3RhdGUoQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFN0
YXRlIGFwcGVuZFN0YXRlKQogewogICAgIHN3aXRjaCAoYXBwZW5kU3RhdGUpIHsKICAgICBjYXNl
IEFwcGVuZFBpcGVsaW5lOjpBcHBlbmRTdGF0ZTo6SW52YWxpZDoKQEAgLTkzLDkgKzk0LDYgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIGR1bXBBcHBlbmRTdGF0ZShBcHBlbmRQaXBlbGluZTo6QXBwZW5k
U3RhdGUgYXBwZW5kU3RhdGUpCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGlu
ZURlbXV4ZXJQYWRBZGRlZChHc3RFbGVtZW50KiwgR3N0UGFkKiwgQXBwZW5kUGlwZWxpbmUqKTsK
LXN0YXRpYyB2b2lkIGFwcGVuZFBpcGVsaW5lRGVtdXhlclBhZFJlbW92ZWQoR3N0RWxlbWVudCos
IEdzdFBhZCosIEFwcGVuZFBpcGVsaW5lKik7Ci1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFw
cHNpbmtDYXBzQ2hhbmdlZChHT2JqZWN0KiwgR1BhcmFtU3BlYyosIEFwcGVuZFBpcGVsaW5lKik7
CiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVs
aW5lUGFkUHJvYmVEZWJ1Z0luZm9ybWF0aW9uKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyosIHN0
cnVjdCBQYWRQcm9iZUluZm9ybWF0aW9uKik7CiAjZW5kaWYKQEAgLTEwNSwyOCArMTAzLDkgQEAg
c3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGFwcGVuZFBpcGVsaW5lQXBwc2lua1BhZEV2ZW50UHJv
YmUoR3N0UGFkKiwgR3N0UGFkUHJvYmUKICNlbmRpZgogCiBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1
cm4gYXBwZW5kUGlwZWxpbmVEZW11eGVyQmxhY2tIb2xlUGFkUHJvYmUoR3N0UGFkKiwgR3N0UGFk
UHJvYmVJbmZvKiwgZ3BvaW50ZXIpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gYXBwZW5kUGlwZWxp
bmVBcHBzaW5rTmV3U2FtcGxlKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSopOwotc3RhdGlj
IHZvaWQgYXBwZW5kUGlwZWxpbmVBcHBzaW5rRU9TKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGlu
ZSopOwotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkcyhHc3RFbGVt
ZW50KiwgQXBwZW5kUGlwZWxpbmUqKTsKIAogc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIG1hdHJv
c2thZGVtdXhGb3JjZVNlZ21lbnRTdGFydFRvRXF1YWxaZXJvKEdzdFBhZCosIEdzdFBhZFByb2Jl
SW5mbyosIHZvaWQqKTsKIAotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVOZWVkQ29udGV4dE1l
c3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBcHBlbmRQaXBlbGlu
ZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgR1NUX1RSQUNFKCJyZWNlaXZlZCBjYWxsYmFjayIp
OwotICAgIGFwcGVuZFBpcGVsaW5lLT5oYW5kbGVOZWVkQ29udGV4dFN5bmNNZXNzYWdlKG1lc3Nh
Z2UpOwotfQotCi1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZUFwcGxpY2F0aW9uTWVzc2FnZUNh
bGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVsaW5lKiBhcHBl
bmRQaXBlbGluZSkKLXsKLSAgICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlQXBwbGljYXRpb25NZXNz
YWdlKG1lc3NhZ2UpOwotfQotCi1zdGF0aWMgdm9pZCBhcHBlbmRQaXBlbGluZVN0YXRlQ2hhbmdl
TWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEFwcGVuZFBpcGVs
aW5lKiBhcHBlbmRQaXBlbGluZSkKLXsKLSAgICBhcHBlbmRQaXBlbGluZS0+aGFuZGxlU3RhdGVD
aGFuZ2VNZXNzYWdlKG1lc3NhZ2UpOwotfQotCiBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxp
bmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaWVudCwg
UmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSYgcGxheWVyUHJpdmF0ZSkKICAgICA6IG1fbWVk
aWFTb3VyY2VDbGllbnQobWVkaWFTb3VyY2VDbGllbnQuZ2V0KCkpCiAgICAgLCBtX3NvdXJjZUJ1
ZmZlclByaXZhdGUoc291cmNlQnVmZmVyUHJpdmF0ZS5nZXQoKSkKQEAgLTEzNyw3ICsxMTYsNyBA
QCBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0
cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogICAgICwgbV9hYm9ydFBlbmRpbmcoZmFsc2UpCiAg
ICAgLCBtX3N0cmVhbVR5cGUoVW5rbm93bikKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGQ6OmNhbGxfb25jZShz
X3N0YXRpY0luaXRpYWxpemF0aW9uRmxhZywgQXBwZW5kUGlwZWxpbmU6OnN0YXRpY0luaXRpYWxp
emF0aW9uKTsKIAogICAgIEdTVF9UUkFDRSgiQ3JlYXRpbmcgQXBwZW5kUGlwZWxpbmUgKCVwKSIs
IHRoaXMpOwpAQCAtMTUzLDkgKzEzMiwxMiBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxp
bmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogICAg
IGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaF9mdWxsKG1fYnVzLmdldCgpLCBSdW5Mb29wU291cmNl
UHJpb3JpdHk6OlJ1bkxvb3BEaXNwYXRjaGVyKTsKICAgICBnc3RfYnVzX2VuYWJsZV9zeW5jX21l
c3NhZ2VfZW1pc3Npb24obV9idXMuZ2V0KCkpOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChtX2J1
cy5nZXQoKSwgInN5bmMtbWVzc2FnZTo6bmVlZC1jb250ZXh0IiwgR19DQUxMQkFDSyhhcHBlbmRQ
aXBlbGluZU5lZWRDb250ZXh0TWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxf
Y29ubmVjdChtX2J1cy5nZXQoKSwgIm1lc3NhZ2U6OmFwcGxpY2F0aW9uIiwgR19DQUxMQkFDSyhh
cHBlbmRQaXBlbGluZUFwcGxpY2F0aW9uTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19z
aWduYWxfY29ubmVjdChtX2J1cy5nZXQoKSwgIm1lc3NhZ2U6OnN0YXRlLWNoYW5nZWQiLCBHX0NB
TExCQUNLKGFwcGVuZFBpcGVsaW5lU3RhdGVDaGFuZ2VNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0KG1fYnVzLmdldCgpLCAic3luYy1tZXNzYWdlOjpuZWVkLWNv
bnRleHQiLCBHX0NBTExCQUNLKCtbXShHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBcHBl
bmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhh
bmRsZU5lZWRDb250ZXh0U3luY01lc3NhZ2UobWVzc2FnZSk7CisgICAgfSksIHRoaXMpOworICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV9idXMuZ2V0KCksICJtZXNzYWdlOjpzdGF0ZS1jaGFuZ2VkIiwg
R19DQUxMQkFDSygrW10oR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgQXBwZW5kUGlwZWxp
bmUqIGFwcGVuZFBpcGVsaW5lKSB7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5oYW5kbGVTdGF0
ZUNoYW5nZU1lc3NhZ2UobWVzc2FnZSk7CisgICAgfSksIHRoaXMpOwogCiAgICAgLy8gV2UgYXNz
aWduIHRoZSBjcmVhdGVkIGluc3RhbmNlcyBoZXJlIGluc3RlYWQgb2YgYWRvcHRSZWYoKSBiZWNh
dXNlIGdzdF9iaW5fYWRkX21hbnkoKQogICAgIC8vIGJlbG93IHdpbGwgYWxyZWFkeSB0YWtlIHRo
ZSBpbml0aWFsIHJlZmVyZW5jZSBhbmQgd2UgbmVlZCBhbiBhZGRpdGlvbmFsIG9uZSBmb3IgdXMu
CkBAIC0xODEsNyArMTYzLDExIEBAIEFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZShSZWY8
TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+IG1lZGlhU291cmNlQ2xpCiAgICAgZ3N0X2Jh
c2Vfc2lua19zZXRfbGFzdF9zYW1wbGVfZW5hYmxlZChHU1RfQkFTRV9TSU5LKG1fYXBwc2luay5n
ZXQoKSksIEZBTFNFKTsKIAogICAgIEdSZWZQdHI8R3N0UGFkPiBhcHBzaW5rUGFkID0gYWRvcHRH
UmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKG1fYXBwc2luay5nZXQoKSwgInNpbmsiKSk7
Ci0gICAgZ19zaWduYWxfY29ubmVjdChhcHBzaW5rUGFkLmdldCgpLCAibm90aWZ5OjpjYXBzIiwg
R19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZUFwcHNpbmtDYXBzQ2hhbmdlZCksIHRoaXMpOworICAg
IGdfc2lnbmFsX2Nvbm5lY3QoYXBwc2lua1BhZC5nZXQoKSwgIm5vdGlmeTo6Y2FwcyIsIEdfQ0FM
TEJBQ0soK1tdKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBp
cGVsaW5lKSB7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5tX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFz
ayhbYXBwZW5kUGlwZWxpbmVdKCkgeworICAgICAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmFwcHNp
bmtDYXBzQ2hhbmdlZCgpOworICAgICAgICB9KTsKKyAgICB9KSwgdGhpcyk7CiAKICNpZiAhTE9H
X0RJU0FCTEVECiAgICAgR1JlZlB0cjxHc3RQYWQ+IGRlbXV4ZXJQYWQgPSBhZG9wdEdSZWYoZ3N0
X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQobV9kZW11eC5nZXQoKSwgInNpbmsiKSk7CkBAIC0yMDAs
MTEgKzE4NiwyOSBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxpbmUoUmVmPE1lZGlhU291
cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogI2VuZGlmCiAKICAgICAvLyBU
aGVzZSBzaWduYWxzIHdvbid0IGJlIGNvbm5lY3RlZCBvdXRzaWRlIG9mIHRoZSBsaWZldGltZSBv
ZiAidGhpcyIuCi0gICAgZ19zaWduYWxfY29ubmVjdChtX2RlbXV4LmdldCgpLCAicGFkLWFkZGVk
IiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRBZGRlZCksIHRoaXMpOwotICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBhZC1yZW1vdmVkIiwgR19DQUxMQkFD
SyhhcHBlbmRQaXBlbGluZURlbXV4ZXJQYWRSZW1vdmVkKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxf
Y29ubmVjdChtX2RlbXV4LmdldCgpLCAibm8tbW9yZS1wYWRzIiwgR19DQUxMQkFDSyhhcHBlbmRQ
aXBlbGluZURlbXV4ZXJOb01vcmVQYWRzKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdCht
X2FwcHNpbmsuZ2V0KCksICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSyhhcHBlbmRQaXBlbGluZUFw
cHNpbmtOZXdTYW1wbGUpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fYXBwc2luay5n
ZXQoKSwgImVvcyIsIEdfQ0FMTEJBQ0soYXBwZW5kUGlwZWxpbmVBcHBzaW5rRU9TKSwgdGhpcyk7
CisgICAgZ19zaWduYWxfY29ubmVjdChtX2RlbXV4LmdldCgpLCAicGFkLWFkZGVkIiwgR19DQUxM
QkFDSygrW10oR3N0RWxlbWVudCosIEdzdFBhZCogZGVtdXhlclNyY1BhZCwgQXBwZW5kUGlwZWxp
bmUqIGFwcGVuZFBpcGVsaW5lKSB7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5jb25uZWN0RGVt
dXhlclNyY1BhZFRvQXBwc2lua0Zyb21TdHJlYW1pbmdUaHJlYWQoZGVtdXhlclNyY1BhZCk7Cisg
ICAgfSksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZW11eC5nZXQoKSwgInBhZC1y
ZW1vdmVkIiwgR19DQUxMQkFDSygrW10oR3N0RWxlbWVudCosIEdzdFBhZCogZGVtdXhlclNyY1Bh
ZCwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKSB7CisgICAgICAgIGFwcGVuZFBpcGVs
aW5lLT5kaXNjb25uZWN0RGVtdXhlclNyY1BhZEZyb21BcHBzaW5rRnJvbUFueVRocmVhZChkZW11
eGVyU3JjUGFkKTsKKyAgICB9KSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2RlbXV4
LmdldCgpLCAibm8tbW9yZS1wYWRzIiwgR19DQUxMQkFDSygrW10oR3N0RWxlbWVudCosIEFwcGVu
ZFBpcGVsaW5lKiBhcHBlbmRQaXBlbGluZSkgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJQb3N0aW5nIG5vLW1vcmUtcGFkcyB0YXNrIHRvIG1h
aW4gdGhyZWFkIik7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5tX3Rhc2tRdWV1ZS5lbnF1ZXVl
VGFzayhbYXBwZW5kUGlwZWxpbmVdKCkgeworICAgICAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmRl
bXV4ZXJOb01vcmVQYWRzKCk7CisgICAgICAgIH0pOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KG1fYXBwc2luay5nZXQoKSwgIm5ldy1zYW1wbGUiLCBHX0NBTExCQUNLKCtb
XShHc3RFbGVtZW50KiBhcHBzaW5rLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsK
KyAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tU3RyZWFt
aW5nVGhyZWFkKGFwcHNpbmspOworICAgIH0pLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KG1fYXBwc2luay5nZXQoKSwgImVvcyIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqLCBBcHBl
bmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CisgICAgICAgIEdTVF9ERUJVRygiUG9zdGluZyBhcHBzaW5rLWVvcyB0YXNrIHRvIG1h
aW4gdGhyZWFkIik7CisgICAgICAgIGFwcGVuZFBpcGVsaW5lLT5tX3Rhc2tRdWV1ZS5lbnF1ZXVl
VGFzayhbYXBwZW5kUGlwZWxpbmVdKCkgeworICAgICAgICAgICAgYXBwZW5kUGlwZWxpbmUtPmFw
cHNpbmtFT1MoKTsKKyAgICAgICAgfSk7CisgICAgfSksIHRoaXMpOwogCiAgICAgLy8gQWRkX21h
bnkgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiBhIHJlZmVyZW5jZS4gVGhhdCdzIHdoeSB3ZSB1c2Vk
IGFuIGFzc2lnbm1lbnQgYmVmb3JlLgogICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3Bp
cGVsaW5lLmdldCgpKSwgbV9hcHBzcmMuZ2V0KCksIG1fZGVtdXguZ2V0KCksIG51bGxwdHIpOwpA
QCAtMjE1LDE1ICsyMTksMTEgQEAgQXBwZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5lKFJlZjxN
ZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRT4gbWVkaWFTb3VyY2VDbGkKIAogQXBwZW5kUGlw
ZWxpbmU6On5BcHBlbmRQaXBlbGluZSgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBzZXRBcHBlbmRTdGF0ZShB
cHBlbmRTdGF0ZTo6SW52YWxpZCk7Ci0KLSAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fcGFkQWRkUmVtb3ZlTG9jayk7Ci0gICAgICAgIG1fcGxheWVyUHJpdmF0ZSA9IG51bGxwdHI7
Ci0gICAgICAgIG1fcGFkQWRkUmVtb3ZlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotICAgIH0KKyAg
ICAvLyBGb3JnZXQgYWxsIHBlbmRpbmcgdGFza3MgYW5kIHVuYmxvY2sgdGhlIHN0cmVhbWluZyB0
aHJlYWQgaWYgaXQgd2FzIGJsb2NrZWQuCisgICAgbV90YXNrUXVldWUuc3RhcnRBYm9ydGluZygp
OwogCiAgICAgR1NUX1RSQUNFKCJEZXN0cm95aW5nIEFwcGVuZFBpcGVsaW5lICglcCkiLCB0aGlz
KTsKIApAQCAtMjMxLDcgKzIzMSw3IEBAIEFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUo
KQogCiAgICAgaWYgKG1fcGlwZWxpbmUpIHsKICAgICAgICAgQVNTRVJUKG1fYnVzKTsKLSAgICAg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fYnVzLmdldCgpLCByZWlu
dGVycHJldF9jYXN0PGdwb2ludGVyPihhcHBlbmRQaXBlbGluZU5lZWRDb250ZXh0TWVzc2FnZUNh
bGxiYWNrKSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlf
ZGF0YShtX2J1cy5nZXQoKSwgdGhpcyk7CiAgICAgICAgIGdzdF9idXNfZGlzYWJsZV9zeW5jX21l
c3NhZ2VfZW1pc3Npb24obV9idXMuZ2V0KCkpOwogICAgICAgICBnc3RfYnVzX3JlbW92ZV9zaWdu
YWxfd2F0Y2gobV9idXMuZ2V0KCkpOwogICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9w
aXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIEFwcGVu
ZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUoKQogCiBHc3RQYWRQcm9iZVJldHVybiBBcHBlbmRQ
aXBlbGluZTo6YXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJvYmVJbmZvKiBw
YWRQcm9iZUluZm8pCiB7Ci0gICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBtX3N0cmVhbWluZ1RocmVhZCA9ICZXVEY6OlRo
cmVhZDo6Y3VycmVudCgpOwogCiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBHU1RfQlVGRkVSKHBh
ZFByb2JlSW5mby0+ZGF0YSk7CkBAIC0yODYsMjcgKzI4NiwyMiBAQCBHc3RQYWRQcm9iZVJldHVy
biBBcHBlbmRQaXBlbGluZTo6YXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJv
YmVJbmZvKgogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAgICB9CiAKLSAgICBH
U1RfVFJBQ0VfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJwb3N0aW5nIGVuZC1vZi1hcHBlbmQg
cmVxdWVzdCB0byBidXMiKTsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1
Y3R1cmVfbmV3X2VtcHR5KCJlbmQtb2YtYXBwZW5kIik7Ci0gICAgR3N0TWVzc2FnZSogbWVzc2Fn
ZSA9IGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKG1fYXBwc3JjLmdldCgp
KSwgc3RydWN0dXJlKTsKLSAgICBnc3RfYnVzX3Bvc3QobV9idXMuZ2V0KCksIG1lc3NhZ2UpOwor
ICAgIEdTVF9UUkFDRV9PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlBvc3RpbmcgZW5kLW9mLWFw
cGVuZCB0YXNrIHRvIHRoZSBtYWluIHRocmVhZCIpOworICAgIG1fdGFza1F1ZXVlLmVucXVldWVU
YXNrKFt0aGlzXSgpIHsKKyAgICAgICAgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKKyAgICB9KTsKICAg
ICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOwogfQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpj
bGVhclBsYXllclByaXZhdGUoKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEdTVF9ERUJVRygiY2xlYW5pbmcgcHJp
dmF0ZSBwbGF5ZXIiKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IEFwcGVuZFBpcGVsaW5lIHdv
bid0IHByb2Nlc3MgbW9yZSBkYXRhIGZyb20gbm93IG9uIGFuZAogICAgIC8vIGluc3RydWN0IGhh
bmRsZU5ld1NhbXBsZSB0byBhYm9ydCBpdHNlbGYgZnJvbSBub3cgb24gYXMgd2VsbC4KICAgICBz
ZXRBcHBlbmRTdGF0ZShBcHBlbmRTdGF0ZTo6SW52YWxpZCk7Ci0KLSAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fcGFkQWRkUmVtb3ZlTG9jayk7Ci0gICAgICAgIG1fcGxheWVyUHJp
dmF0ZSA9IG51bGxwdHI7Ci0gICAgICAgIG1fcGFkQWRkUmVtb3ZlQ29uZGl0aW9uLm5vdGlmeU9u
ZSgpOwotICAgIH0KKyAgICBtX3Rhc2tRdWV1ZS5zdGFydEFib3J0aW5nKCk7CiAKICAgICAvLyBB
bmQgbm93IHRoYXQgbm8gaGFuZGxlTmV3U2FtcGxlIG9wZXJhdGlvbnMgd2lsbCByZW1haW4gc3Rh
bGxlZCB3YWl0aW5nCiAgICAgLy8gZm9yIHRoZSBtYWluIHRocmVhZCwgc3RvcCB0aGUgcGlwZWxp
bmUuCkBAIC0zMjUsNDkgKzMyMCw2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmhhbmRsZU5lZWRD
b250ZXh0U3luY01lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgbV9wbGF5ZXJQ
cml2YXRlLT5oYW5kbGVTeW5jTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBBcHBlbmRQaXBl
bGluZTo6aGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCi17Ci0g
ICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotCi0gICAgY29uc3QgR3N0U3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1lc3NhZ2UpOwotCi0gICAg
aWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZGVtdXhlci1jb25uZWN0LXRv
LWFwcHNpbmsiKSkgewotICAgICAgICBHUmVmUHRyPEdzdFBhZD4gZGVtdXhlclNyY1BhZDsKLSAg
ICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0dXJlLCAiZGVtdXhlci1zcmMtcGFkIiwgR19U
WVBFX09CSkVDVCwgJmRlbXV4ZXJTcmNQYWQub3V0UHRyKCksIG51bGxwdHIpOwotICAgICAgICBB
U1NFUlQoZGVtdXhlclNyY1BhZCk7Ci0gICAgICAgIGNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBz
aW5rKGRlbXV4ZXJTcmNQYWQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiYXBwc2luay1jYXBzLWNoYW5n
ZWQiKSkgewotICAgICAgICBhcHBzaW5rQ2Fwc0NoYW5nZWQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImFwcHNp
bmstbmV3LXNhbXBsZSIpKSB7Ci0gICAgICAgIG1fd2FzQnVzQWxyZWFkeU5vdGlmaWVkT2ZBdmFp
bGFibGVTYW1wbGVzLmNsZWFyKCk7Ci0gICAgICAgIGNvbnN1bWVBcHBzaW5rQXZhaWxhYmxlU2Ft
cGxlcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVf
aGFzX25hbWUoc3RydWN0dXJlLCAiYXBwc2luay1lb3MiKSkgewotICAgICAgICBhcHBzaW5rRU9T
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNf
bmFtZShzdHJ1Y3R1cmUsICJkZW11eGVyLW5vLW1vcmUtcGFkcyIpKSB7Ci0gICAgICAgIGRlbXV4
ZXJOb01vcmVQYWRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ3N0X3N0
cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJlbmQtb2YtYXBwZW5kIikpIHsKLSAgICAgICAg
aGFuZGxlRW5kT2ZBcHBlbmQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkZW11eGVyTm9Nb3Jl
UGFkcygpCiB7CiAgICAgR1NUX1RSQUNFKCJjYWxsaW5nIGRpZFJlY2VpdmVJbml0aWFsaXphdGlv
blNlZ21lbnQiKTsKQEAgLTM3OCw3ICszMzAsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkZW11
eGVyTm9Nb3JlUGFkcygpCiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmhhbmRsZVN0YXRlQ2hhbmdl
TWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKEdTVF9NRVNT
QUdFX1NSQyhtZXNzYWdlKSA9PSByZWludGVycHJldF9jYXN0PEdzdE9iamVjdCo+KG1fcGlwZWxp
bmUuZ2V0KCkpKSB7CiAgICAgICAgIEdzdFN0YXRlIGN1cnJlbnRTdGF0ZSwgbmV3U3RhdGU7CkBA
IC0zOTYsNyArMzQ4LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6aGFuZGxlU3RhdGVDaGFuZ2VN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAKIGdpbnQgQXBwZW5kUGlwZWxpbmU6OmlkKCkK
IHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIGlmIChtX2lkKQogICAgICAgICByZXR1cm4gbV9pZDsKQEAgLTQyOSw3
ICszODEsNyBAQCBnaW50IEFwcGVuZFBpcGVsaW5lOjppZCgpCiAKIHZvaWQgQXBwZW5kUGlwZWxp
bmU6OnNldEFwcGVuZFN0YXRlKEFwcGVuZFN0YXRlIG5ld0FwcGVuZFN0YXRlKQogewotICAgIEFT
U0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIC8vIFZhbGlkIHRyYW5zaXRpb25zOgogICAgIC8vIE5vdFN0YXJ0ZWQtLT5PbmdvaW5nLS0+
RGF0YVN0YXJ2ZS0tPk5vdFN0YXJ0ZWQKICAgICAvLyAgICAgICAgICAgfCAgICAgICAgIHwgICAg
ICAgICAgICBgLT5BYm9ydGluZy0tPk5vdFN0YXJ0ZWQKQEAgLTU2OSw3ICs1MjEsNyBAQCB2b2lk
IEFwcGVuZFBpcGVsaW5lOjpzZXRBcHBlbmRTdGF0ZShBcHBlbmRTdGF0ZSBuZXdBcHBlbmRTdGF0
ZSkKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6cGFyc2VEZW11eGVyU3JjUGFkQ2FwcyhHc3RDYXBz
KiBkZW11eGVyU3JjUGFkQ2FwcykKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fZGVtdXhlclNyY1BhZENhcHMg
PSBhZG9wdEdSZWYoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIG1fc3RyZWFtVHlwZSA9IFdlYkNv
cmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VW5rbm93bjsKQEAgLTU5Nyw3ICs1
NDksNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpwYXJzZURlbXV4ZXJTcmNQYWRDYXBzKEdzdENh
cHMqIGRlbXV4ZXJTcmNQYWRDYXBzKQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rQ2Fw
c0NoYW5nZWQoKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX2FwcHNpbmspCiAgICAgICAgIHJldHVy
bjsKQEAgLTYyMSw3ICs1NzMsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rQ2Fwc0No
YW5nZWQoKQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpoYW5kbGVFbmRPZkFwcGVuZCgpCiB7Ci0g
ICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgR1NUX1RSQUNFX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAicmVjZWl2ZWQgZW5k
LW9mLWFwcGVuZCIpOwogCiAgICAgLy8gUmVnYXJkbGVzcyBvZiB0aGUgc3RhdGUgdHJhbnNpdGlv
biwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZTogZGlkUmVjZWl2ZUFsbFBlbmRpbmdTYW1wbGVzKCkg
aXMgY2FsbGVkLgpAQCAtNjQyLDcgKzU5NCw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmhhbmRs
ZUVuZE9mQXBwZW5kKCkKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShH
UmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoVU5MSUtFTFko
IWdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihzYW1wbGUuZ2V0KCkpKSkgewogICAgICAgICBHU1RfV0FS
TklORygiUmVjZWl2ZWQgc2FtcGxlIHdpdGhvdXQgYnVmZmVyIGZyb20gYXBwc2luay4iKTsKQEAg
LTY3OCw3ICs2MzAsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdS
ZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lu
a0VPUygpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKICAgICBzd2l0Y2ggKG1fYXBwZW5kU3RhdGUpIHsKICAgICBjYXNl
IEFwcGVuZFN0YXRlOjpBYm9ydGluZzoKQEAgLTY5OSw3ICs2NTEsNyBAQCB2b2lkIEFwcGVuZFBp
cGVsaW5lOjphcHBzaW5rRU9TKCkKIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6ZGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudCgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQgaW5pdGlhbGl6YXRpb25TZWdt
ZW50OwogCkBAIC03MzEsNyArNjgzLDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6ZGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudCgpCiAKIEF0b21pY1N0cmluZyBBcHBlbmRQaXBlbGluZTo6
dHJhY2tJZCgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdHJhY2spCiAgICAgICAgIHJldHVybiBB
dG9taWNTdHJpbmcoKTsKQEAgLTc0MSw3ICs2OTMsNyBAQCBBdG9taWNTdHJpbmcgQXBwZW5kUGlw
ZWxpbmU6OnRyYWNrSWQoKQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpjb25zdW1lQXBwc2lua0F2
YWlsYWJsZVNhbXBsZXMoKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBs
ZTsKICAgICBpbnQgYmF0Y2hlZFNhbXBsZUNvdW50ID0gMDsKQEAgLTc1NSw3ICs3MDcsNyBAQCB2
b2lkIEFwcGVuZFBpcGVsaW5lOjpjb25zdW1lQXBwc2lua0F2YWlsYWJsZVNhbXBsZXMoKQogCiB2
b2lkIEFwcGVuZFBpcGVsaW5lOjpyZXNldFBpcGVsaW5lKCkKIHsKLSAgICBBU1NFUlQoV1RGOjpp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBHU1RfREVC
VUcoInJlc2V0dGluZyBwaXBlbGluZSIpOwogCiAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1f
cGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9SRUFEWSk7CkBAIC03NzQsNyArNzI2LDcgQEAgdm9p
ZCBBcHBlbmRQaXBlbGluZTo6cmVzZXRQaXBlbGluZSgpCiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6
OmFib3J0KCkKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBHU1RfREVCVUcoImFib3J0aW5nIik7CiAKICAgICBtX3Bl
bmRpbmdCdWZmZXIgPSBudWxscHRyOwpAQCAtODIzLDkgKzc3NSw5IEBAIEdzdEZsb3dSZXR1cm4g
QXBwZW5kUGlwZWxpbmU6OnB1c2hOZXdCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCiAgICAgcmV0
dXJuIEdTVF9GTE9XX09LOwogfQogCi1Hc3RGbG93UmV0dXJuIEFwcGVuZFBpcGVsaW5lOjpoYW5k
bGVOZXdBcHBzaW5rU2FtcGxlKEdzdEVsZW1lbnQqIGFwcHNpbmspCitHc3RGbG93UmV0dXJuIEFw
cGVuZFBpcGVsaW5lOjpoYW5kbGVBcHBzaW5rTmV3U2FtcGxlRnJvbVN0cmVhbWluZ1RocmVhZChH
c3RFbGVtZW50KikKIHsKLSAgICBBU1NFUlQoIVdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICgmV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKSAh
PSBtX3N0cmVhbWluZ1RocmVhZCkgewogICAgICAgICAvLyBtX3N0cmVhbWluZ1RocmVhZElkIGhh
cyBiZWVuIGluaXRpYWxpemVkIGluIGFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tlclByb2JlKCkuCiAg
ICAgICAgIC8vIEZvciBhIGJ1ZmZlciB0byByZWFjaCB0aGUgYXBwc2luaywgYSBidWZmZXIgbXVz
dCBoYXZlIHBhc3NlZCB0aHJvdWdoIGFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tlclByb2JlKCkgZmly
c3QuCkBAIC04NDMsMTAgKzc5NSwxMSBAQCBHc3RGbG93UmV0dXJuIEFwcGVuZFBpcGVsaW5lOjpo
YW5kbGVOZXdBcHBzaW5rU2FtcGxlKEdzdEVsZW1lbnQqIGFwcHNpbmspCiAgICAgfQogCiAgICAg
aWYgKCFtX3dhc0J1c0FscmVhZHlOb3RpZmllZE9mQXZhaWxhYmxlU2FtcGxlcy50ZXN0X2FuZF9z
ZXQoKSkgewotICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVf
bmV3X2VtcHR5KCJhcHBzaW5rLW5ldy1zYW1wbGUiKTsKLSAgICAgICAgR3N0TWVzc2FnZSogbWVz
c2FnZSA9IGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKGFwcHNpbmspLCBz
dHJ1Y3R1cmUpOwotICAgICAgICBnc3RfYnVzX3Bvc3QobV9idXMuZ2V0KCksIG1lc3NhZ2UpOwot
ICAgICAgICBHU1RfVFJBQ0UoImFwcHNpbmstbmV3LXNhbXBsZSBtZXNzYWdlIHBvc3RlZCB0byBi
dXMiKTsKKyAgICAgICAgR1NUX1RSQUNFKCJQb3N0aW5nIGFwcHNpbmstbmV3LXNhbXBsZSB0YXNr
IHRvIHRoZSBtYWluIHRocmVhZCIpOworICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhb
dGhpc10oKSB7CisgICAgICAgICAgICBtX3dhc0J1c0FscmVhZHlOb3RpZmllZE9mQXZhaWxhYmxl
U2FtcGxlcy5jbGVhcigpOworICAgICAgICAgICAgY29uc3VtZUFwcHNpbmtBdmFpbGFibGVTYW1w
bGVzKCk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIHJldHVybiBHU1RfRkxPV19PSzsKQEAg
LTg4NCw4ICs4MzcsOSBAQCBjcmVhdGVPcHRpb25hbFBhcnNlckZvckZvcm1hdChHc3RQYWQqIGRl
bXV4ZXJTcmNQYWQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXBwZW5kUGlwZWxp
bmU6OmNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqIGRl
bXV4ZXJTcmNQYWQpCit2b2lkIEFwcGVuZFBpcGVsaW5lOjpjb25uZWN0RGVtdXhlclNyY1BhZFRv
QXBwc2lua0Zyb21TdHJlYW1pbmdUaHJlYWQoR3N0UGFkKiBkZW11eGVyU3JjUGFkKQogeworICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9hcHBzaW5rKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTkxMCwyMyArODY0LDE0IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmNvbm5l
Y3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqIGRlbXV4ZXJTCiAg
ICAgZWxzZQogICAgICAgICBtX2luaXRpYWxEdXJhdGlvbiA9IE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKTsKIAotICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgpKQorICAgIEdTVF9E
RUJVRygiUmVxdWVzdGluZyBkZW11eGVyLWNvbm5lY3QtdG8tYXBwc2luayB0byBtYWluIHRocmVh
ZCIpOworICAgIGF1dG8gcmVzcG9uc2UgPSBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFza0FuZFdhaXQ8
QWJvcnRhYmxlVGFza1F1ZXVlOjpWb2lkPihbdGhpcywgZGVtdXhlclNyY1BhZF0oKSB7CiAgICAg
ICAgIGNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rKGRlbXV4ZXJTcmNQYWQpOwotICAgIGVs
c2UgewotICAgICAgICAvLyBDYWxsIGNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rKCkgaW4g
dGhlIG1haW4gdGhyZWFkIGFuZCB3YWl0LgotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Bh
ZEFkZFJlbW92ZUxvY2spOwotICAgICAgICBpZiAoIW1fcGxheWVyUHJpdmF0ZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9zdHJ1
Y3R1cmVfbmV3KCJkZW11eGVyLWNvbm5lY3QtdG8tYXBwc2luayIsICJkZW11eGVyLXNyYy1wYWQi
LCBHX1RZUEVfT0JKRUNULCBkZW11eGVyU3JjUGFkLCBudWxscHRyKTsKLSAgICAgICAgR3N0TWVz
c2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlvbihHU1RfT0JKRUNUKG1f
ZGVtdXguZ2V0KCkpLCBzdHJ1Y3R1cmUpOwotICAgICAgICBnc3RfYnVzX3Bvc3QobV9idXMuZ2V0
KCksIG1lc3NhZ2UpOwotICAgICAgICBHU1RfVFJBQ0UoImRlbXV4ZXItY29ubmVjdC10by1hcHBz
aW5rIG1lc3NhZ2UgcG9zdGVkIHRvIGJ1cyIpOwotCi0gICAgICAgIG1fcGFkQWRkUmVtb3ZlQ29u
ZGl0aW9uLndhaXQobV9wYWRBZGRSZW1vdmVMb2NrKTsKLQotICAgICAgICBpZiAoIW1fcGxheWVy
UHJpdmF0ZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEFib3J0YWJsZVRh
c2tRdWV1ZTo6Vm9pZCgpOworICAgIH0pOworICAgIGlmICghcmVzcG9uc2UpIHsKKyAgICAgICAg
Ly8gVGhlIEFwcGVuZFBpcGVsaW5lIGhhcyBiZWVuIGRlc3Ryb3llZCBvciBhYm9ydGVkIGJlZm9y
ZSB3ZSByZWNlaXZlZCBhIHJlc3BvbnNlLgorICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
Ly8gTXVzdCBiZSBkb25lIGluIHRoZSB0aHJlYWQgd2Ugd2VyZSBjYWxsZWQgZnJvbSAodXN1YWxs
eSBzdHJlYW1pbmcgdGhyZWFkKS4KQEAgLTk3MSwxNCArOTE2LDEzIEBAIHZvaWQgQXBwZW5kUGlw
ZWxpbmU6OmNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQq
IGRlbXV4ZXJTCiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmNvbm5lY3REZW11eGVyU3JjUGFkVG9B
cHBzaW5rKEdzdFBhZCogZGVtdXhlclNyY1BhZCkKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBHU1RfREVCVUcoIkNv
bm5lY3RpbmcgdG8gYXBwc2luayIpOwogCiAgICAgY29uc3QgU3RyaW5nJiB0eXBlID0gbV9zb3Vy
Y2VCdWZmZXJQcml2YXRlLT50eXBlKCkuY29udGFpbmVyVHlwZSgpOwogICAgIGlmICh0eXBlLmVu
ZHNXaXRoKCJ3ZWJtIikpCiAgICAgICAgIGdzdF9wYWRfYWRkX3Byb2JlKGRlbXV4ZXJTcmNQYWQs
IEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLCBtYXRyb3NrYWRlbXV4Rm9yY2VT
ZWdtZW50U3RhcnRUb0VxdWFsWmVybywgbnVsbHB0ciwgbnVsbHB0cik7CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3BhZEFkZFJlbW92ZUxvY2spOwogICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5r
U2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX2FwcHNpbmsu
Z2V0KCksICJzaW5rIikpOwogCiAgICAgLy8gT25seSBvbmUgc3RyZWFtIHBlciBkZW11eGVyIGlz
IHN1cHBvcnRlZC4KQEAgLTk4Nyw3ICs5MzEsNiBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpjb25u
ZWN0RGVtdXhlclNyY1BhZFRvQXBwc2luayhHc3RQYWQqIGRlbXV4ZXJTcmNQYWQpCiAgICAgR1Jl
ZlB0cjxHc3RDYXBzPiBjYXBzID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyhH
U1RfUEFEKGRlbXV4ZXJTcmNQYWQpKSk7CiAKICAgICBpZiAoIWNhcHMgfHwgbV9hcHBlbmRTdGF0
ZSA9PSBBcHBlbmRTdGF0ZTo6SW52YWxpZCB8fCAhbV9wbGF5ZXJQcml2YXRlKSB7Ci0gICAgICAg
IG1fcGFkQWRkUmVtb3ZlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMDIzLDggKzk2Niw2IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmNvbm5lY3RE
ZW11eGVyU3JjUGFkVG9BcHBzaW5rKEdzdFBhZCogZGVtdXhlclNyY1BhZCkKICAgICAgICAgLy8g
VGhpcyBpcyBnb2luZyB0byBjYXVzZSBhbiBlcnJvciB3aGljaCB3aWxsIGRldGFjaCB0aGUgU291
cmNlQnVmZmVyIGFuZCB0ZWFyIGRvd24gdGhpcwogICAgICAgICAvLyBBcHBlbmRQaXBlbGluZSwg
c28gd2UgbmVlZCB0aGUgcGFkQWRkUmVtb3ZlIGxvY2sgcmVsZWFzZWQgYmVmb3JlIGNvbnRpbnVp
bmcuCiAgICAgICAgIG1fdHJhY2sgPSBudWxscHRyOwotICAgICAgICBtX3BhZEFkZFJlbW92ZUNv
bmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CiAgICAg
ICAgIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGRlZmF1bHQ6CkBAIC0xMDM1LDEyICs5NzYsMTMgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6
Y29ubmVjdERlbXV4ZXJTcmNQYWRUb0FwcHNpbmsoR3N0UGFkKiBkZW11eGVyU3JjUGFkKQogICAg
IG1fYXBwc2lua0NhcHMgPSBXVEZNb3ZlKGNhcHMpOwogICAgIGlmIChtX3BsYXllclByaXZhdGUp
CiAgICAgICAgIG1fcGxheWVyUHJpdmF0ZS0+dHJhY2tEZXRlY3RlZCh0aGlzLCBtX3RyYWNrLCB0
cnVlKTsKLQotICAgIG1fcGFkQWRkUmVtb3ZlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQogCiB2
b2lkIEFwcGVuZFBpcGVsaW5lOjpkaXNjb25uZWN0RGVtdXhlclNyY1BhZEZyb21BcHBzaW5rRnJv
bUFueVRocmVhZChHc3RQYWQqKQogeworICAgIC8vIE5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIGJl
IGNhbGxlZCBlaXRoZXIgZnJvbSB0aGUgc3RyZWFtaW5nIHRocmVhZCAoZS5nLiBpZiBhIHN0cmFu
Z2UgaW5pdGlhbGl6YXRpb24gc2VnbWVudCB3aXRoCisgICAgLy8gaW5jb21wYXRpYmxlIHRyYWNr
cyBpcyBhcHBlbmRlZCBhbmQgdGhlIHNyY3BhZCBkaXNjb25uZWN0ZWQpIG9yIC0tIG1vcmUgdXN1
YWxseSAtLSBmcm9tIHRoZSBtYWluIHRocmVhZCwgd2hlbgorICAgIC8vIGEgc3RhdGUgY2hhbmdl
IGlzIG1hZGUgdG8gYnJpbmcgdGhlIGRlbXV4ZXIgZG93bi4gKFN0YXRlIGNoYW5nZSBvcGVyYXRp
b25zIHJ1biBpbiB0aGUgbWFpbiB0aHJlYWQuKQogICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJ
TEVfV0lUSF9UUyhHU1RfQklOKG1fcGlwZWxpbmUuZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hP
V19BTEwsICJwYWQtcmVtb3ZlZC1iZWZvcmUiKTsKIAogICAgIEdTVF9ERUJVRygiRGlzY29ubmVj
dGluZyBhcHBzaW5rIik7CkBAIC0xMDU0LDIzICs5OTYsNiBAQCB2b2lkIEFwcGVuZFBpcGVsaW5l
OjpkaXNjb25uZWN0RGVtdXhlclNyY1BhZEZyb21BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQq
KQogICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOKG1fcGlwZWxp
bmUuZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsICJwYWQtcmVtb3ZlZC1hZnRlciIp
OwogfQogCi12b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQ
YWRzRnJvbUFueVRocmVhZCgpCi17Ci0gICAgR1NUX1RSQUNFKCJhcHBlbmRQaXBlbGluZURlbXV4
ZXJOb01vcmVQYWRzRnJvbUFueVRocmVhZCIpOwotICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoImRlbXV4ZXItbm8tbW9yZS1wYWRzIik7Ci0gICAg
R3N0TWVzc2FnZSogbWVzc2FnZSA9IGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlvbihHU1RfT0JK
RUNUKG1fYXBwc3JjLmdldCgpKSwgc3RydWN0dXJlKTsKLSAgICBnc3RfYnVzX3Bvc3QobV9idXMu
Z2V0KCksIG1lc3NhZ2UpOwotICAgIEdTVF9UUkFDRSgiYXBwZW5kUGlwZWxpbmVEZW11eGVyTm9N
b3JlUGFkc0Zyb21BbnlUaHJlYWQgLSBwb3N0ZWQgdG8gYnVzIik7Ci19Ci0KLXN0YXRpYyB2b2lk
IGFwcGVuZFBpcGVsaW5lQXBwc2lua0NhcHNDaGFuZ2VkKEdPYmplY3QqIGFwcHNpbmtQYWQsIEdQ
YXJhbVNwZWMqLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAgR3N0U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSgiYXBwc2luay1jYXBz
LWNoYW5nZWQiKTsKLSAgICBHc3RNZXNzYWdlKiBtZXNzYWdlID0gZ3N0X21lc3NhZ2VfbmV3X2Fw
cGxpY2F0aW9uKEdTVF9PQkpFQ1QoYXBwc2lua1BhZCksIHN0cnVjdHVyZSk7Ci0gICAgZ3N0X2J1
c19wb3N0KGFwcGVuZFBpcGVsaW5lLT5idXMoKSwgbWVzc2FnZSk7Ci0gICAgR1NUX1RSQUNFKCJh
cHBzaW5rLWNhcHMtY2hhbmdlZCBtZXNzYWdlIHBvc3RlZCB0byBidXMiKTsKLX0KLQogI2lmICFM
T0dfRElTQUJMRUQKIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBlbGluZVBhZFBy
b2JlRGVidWdJbmZvcm1hdGlvbihHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIHN0cnVj
dCBQYWRQcm9iZUluZm9ybWF0aW9uKiBwYWRQcm9iZUluZm9ybWF0aW9uKQogewpAQCAtMTExMCw0
MCArMTAzNSw2IEBAIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBhcHBlbmRQaXBlbGluZURlbXV4
ZXJCbGFja0hvbGVQYWRQcm9iZShHc3RQYWQqLCBHc3RQYWRQCiAgICAgcmV0dXJuIEdTVF9QQURf
UFJPQkVfRFJPUDsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVEZW11eGVyUGFkQWRk
ZWQoR3N0RWxlbWVudCosIEdzdFBhZCogZGVtdXhlclNyY1BhZCwgQXBwZW5kUGlwZWxpbmUqIGFw
cGVuZFBpcGVsaW5lKQotewotICAgIGFwcGVuZFBpcGVsaW5lLT5jb25uZWN0RGVtdXhlclNyY1Bh
ZFRvQXBwc2lua0Zyb21BbnlUaHJlYWQoZGVtdXhlclNyY1BhZCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IGFwcGVuZFBpcGVsaW5lRGVtdXhlclBhZFJlbW92ZWQoR3N0RWxlbWVudCosIEdzdFBhZCogZGVt
dXhlclNyY1BhZCwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKQotewotICAgIGFwcGVu
ZFBpcGVsaW5lLT5kaXNjb25uZWN0RGVtdXhlclNyY1BhZEZyb21BcHBzaW5rRnJvbUFueVRocmVh
ZChkZW11eGVyU3JjUGFkKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVEZW11eGVy
Tm9Nb3JlUGFkcyhHc3RFbGVtZW50KiwgQXBwZW5kUGlwZWxpbmUqIGFwcGVuZFBpcGVsaW5lKQot
ewotICAgIGFwcGVuZFBpcGVsaW5lLT5hcHBlbmRQaXBlbGluZURlbXV4ZXJOb01vcmVQYWRzRnJv
bUFueVRocmVhZCgpOwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybiBhcHBlbmRQaXBlbGluZUFw
cHNpbmtOZXdTYW1wbGUoR3N0RWxlbWVudCogYXBwc2luaywgQXBwZW5kUGlwZWxpbmUqIGFwcGVu
ZFBpcGVsaW5lKQotewotICAgIHJldHVybiBhcHBlbmRQaXBlbGluZS0+aGFuZGxlTmV3QXBwc2lu
a1NhbXBsZShhcHBzaW5rKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kUGlwZWxpbmVBcHBzaW5r
RU9TKEdzdEVsZW1lbnQqLCBBcHBlbmRQaXBlbGluZSogYXBwZW5kUGlwZWxpbmUpCi17Ci0gICAg
aWYgKFdURjo6aXNNYWluVGhyZWFkKCkpCi0gICAgICAgIGFwcGVuZFBpcGVsaW5lLT5hcHBzaW5r
RU9TKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X3N0cnVjdHVyZV9uZXdfZW1wdHkoImFwcHNpbmstZW9zIik7Ci0gICAgICAgIEdzdE1lc3NhZ2Uq
IG1lc3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdfYXBwbGljYXRpb24oR1NUX09CSkVDVChhcHBlbmRQ
aXBlbGluZS0+YXBwc2luaygpKSwgc3RydWN0dXJlKTsKLSAgICAgICAgZ3N0X2J1c19wb3N0KGFw
cGVuZFBpcGVsaW5lLT5idXMoKSwgbWVzc2FnZSk7Ci0gICAgICAgIEdTVF9UUkFDRSgiYXBwc2lu
ay1lb3MgbWVzc2FnZSBwb3N0ZWQgdG8gYnVzIik7Ci0gICAgfQotCi0gICAgR1NUX0RFQlVHKCIl
cyBtYWluIHRocmVhZCIsIChXVEY6OmlzTWFpblRocmVhZCgpKSA/ICJJcyIgOiAiTm90Iik7Ci19
Ci0KIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBtYXRyb3NrYWRlbXV4Rm9yY2VTZWdtZW50U3Rh
cnRUb0VxdWFsWmVybyhHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIHZvaWQqKQogewog
ICAgIC8vIG1hdHJvc2thZGVtdXggc2V0cyBHc3RTZWdtZW50LnN0YXJ0IHRvIHRoZSBQVFMgb2Yg
dGhlIGZpcnN0IGZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oCmluZGV4IGRhNGY3
NWVlYzNhYzY4NjcyZTdkYzUzNDg4N2FlODQ3Zjc4YTI3ZjcuLjNhZDRkMzQ0NTg5YmY4Yjc5NGU0
YTRhOWM2YzVkMGU1NmFmM2I4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgKQEAg
LTIyLDYgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKIAorI2luY2x1ZGUgIkFib3J0YWJsZVRhc2tRdWV1ZS5oIgog
I2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5oIgogI2luY2x1ZGUgIk1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNF
LmgiCkBAIC00NSwyMSArNDYsMjggQEAgc3RydWN0IFBhZFByb2JlSW5mb3JtYXRpb24gewogCiBj
bGFzcyBBcHBlbmRQaXBlbGluZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBcHBlbmRQ
aXBlbGluZT4gewogcHVibGljOgotICAgIGVudW0gY2xhc3MgQXBwZW5kU3RhdGUgeyBJbnZhbGlk
LCBOb3RTdGFydGVkLCBPbmdvaW5nLCBEYXRhU3RhcnZlLCBTYW1wbGluZywgTGFzdFNhbXBsZSwg
QWJvcnRpbmcgfTsKLQogICAgIEFwcGVuZFBpcGVsaW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdT
dHJlYW1lck1TRT4sIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFJik7CiAgICAgdmlydHVhbCB+QXBwZW5kUGlwZWxpbmUoKTsK
IAorICAgIEdzdEZsb3dSZXR1cm4gcHVzaE5ld0J1ZmZlcihHc3RCdWZmZXIqKTsKKyAgICB2b2lk
IGNsZWFyUGxheWVyUHJpdmF0ZSgpOworICAgIHZvaWQgYWJvcnQoKTsKKyAgICBSZWY8U291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZSgpIHsgcmV0dXJuIG1f
c291cmNlQnVmZmVyUHJpdmF0ZS5nZXQoKTsgfQorICAgIEdzdENhcHMqIGFwcHNpbmtDYXBzKCkg
eyByZXR1cm4gbV9hcHBzaW5rQ2Fwcy5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpUcmFj
a1ByaXZhdGVCYXNlPiB0cmFjaygpIHsgcmV0dXJuIG1fdHJhY2s7IH0KKyAgICBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UqIHBsYXllclByaXZhdGUoKSB7IHJldHVybiBtX3BsYXllclBy
aXZhdGU7IH0KKworcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIEFwcGVuZFN0YXRlIHsgSW52YWxp
ZCwgTm90U3RhcnRlZCwgT25nb2luZywgRGF0YVN0YXJ2ZSwgU2FtcGxpbmcsIExhc3RTYW1wbGUs
IEFib3J0aW5nIH07CisKICAgICB2b2lkIGhhbmRsZU5lZWRDb250ZXh0U3luY01lc3NhZ2UoR3N0
TWVzc2FnZSopOwotICAgIHZvaWQgaGFuZGxlQXBwbGljYXRpb25NZXNzYWdlKEdzdE1lc3NhZ2Uq
KTsKICAgICB2b2lkIGhhbmRsZVN0YXRlQ2hhbmdlTWVzc2FnZShHc3RNZXNzYWdlKik7CiAKICAg
ICBnaW50IGlkKCk7CiAgICAgQXBwZW5kU3RhdGUgYXBwZW5kU3RhdGUoKSB7IHJldHVybiBtX2Fw
cGVuZFN0YXRlOyB9CiAgICAgdm9pZCBzZXRBcHBlbmRTdGF0ZShBcHBlbmRTdGF0ZSk7CiAKLSAg
ICBHc3RGbG93UmV0dXJuIGhhbmRsZU5ld0FwcHNpbmtTYW1wbGUoR3N0RWxlbWVudCopOwotICAg
IEdzdEZsb3dSZXR1cm4gcHVzaE5ld0J1ZmZlcihHc3RCdWZmZXIqKTsKKyAgICBHc3RGbG93UmV0
dXJuIGhhbmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tU3RyZWFtaW5nVGhyZWFkKEdzdEVsZW1lbnQq
KTsKIAogICAgIC8vIFRha2VzIG93bmVyc2hpcCBvZiBjYXBzLgogICAgIHZvaWQgcGFyc2VEZW11
eGVyU3JjUGFkQ2FwcyhHc3RDYXBzKik7CkBAIC02OSwyNiArNzcsMTggQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlRW5kT2ZBcHBlbmQoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQoKTsKICAgICBBdG9taWNTdHJpbmcgdHJhY2tJZCgpOwotICAgIHZvaWQgYWJv
cnQoKTsKIAotICAgIHZvaWQgY2xlYXJQbGF5ZXJQcml2YXRlKCk7Ci0gICAgUmVmPFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUoKSB7IHJldHVybiBtX3Nv
dXJjZUJ1ZmZlclByaXZhdGUuZ2V0KCk7IH0KICAgICBHc3RCdXMqIGJ1cygpIHsgcmV0dXJuIG1f
YnVzLmdldCgpOyB9CiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKSB7IHJldHVybiBtX3BpcGVs
aW5lLmdldCgpOyB9CiAgICAgR3N0RWxlbWVudCogYXBwc3JjKCkgeyByZXR1cm4gbV9hcHBzcmMu
Z2V0KCk7IH0KICAgICBHc3RFbGVtZW50KiBhcHBzaW5rKCkgeyByZXR1cm4gbV9hcHBzaW5rLmdl
dCgpOyB9CiAgICAgR3N0Q2FwcyogZGVtdXhlclNyY1BhZENhcHMoKSB7IHJldHVybiBtX2RlbXV4
ZXJTcmNQYWRDYXBzLmdldCgpOyB9Ci0gICAgR3N0Q2FwcyogYXBwc2lua0NhcHMoKSB7IHJldHVy
biBtX2FwcHNpbmtDYXBzLmdldCgpOyB9Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFKiBwbGF5ZXJQcml2YXRlKCkgeyByZXR1cm4gbV9wbGF5ZXJQcml2YXRlOyB9Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2U+IHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsg
fQogICAgIFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lciBzdHJlYW1UeXBl
KCkgeyByZXR1cm4gbV9zdHJlYW1UeXBlOyB9CiAKICAgICB2b2lkIGRpc2Nvbm5lY3REZW11eGVy
U3JjUGFkRnJvbUFwcHNpbmtGcm9tQW55VGhyZWFkKEdzdFBhZCopOwotICAgIHZvaWQgYXBwZW5k
UGlwZWxpbmVEZW11eGVyTm9Nb3JlUGFkc0Zyb21BbnlUaHJlYWQoKTsKLSAgICB2b2lkIGNvbm5l
Y3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbUFueVRocmVhZChHc3RQYWQqKTsKKyAgICB2b2lk
IGNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rRnJvbVN0cmVhbWluZ1RocmVhZChHc3RQYWQq
KTsKICAgICB2b2lkIGNvbm5lY3REZW11eGVyU3JjUGFkVG9BcHBzaW5rKEdzdFBhZCopOwogCi1w
cml2YXRlOgogICAgIHZvaWQgcmVzZXRQaXBlbGluZSgpOwogICAgIHZvaWQgY2hlY2tFbmRPZkFw
cGVuZCgpOwogICAgIHZvaWQgZGVtdXhlck5vTW9yZVBhZHMoKTsKQEAgLTk4LDYgKzk4LDcgQEAg
cHJpdmF0ZToKICAgICBHc3RQYWRQcm9iZVJldHVybiBhcHBzcmNFbmRPZkFwcGVuZENoZWNrZXJQ
cm9iZShHc3RQYWRQcm9iZUluZm8qKTsKIAogICAgIHN0YXRpYyB2b2lkIHN0YXRpY0luaXRpYWxp
emF0aW9uKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGR1bXBBcHBlbmRTdGF0ZShBcHBlbmRQ
aXBlbGluZTo6QXBwZW5kU3RhdGUpOwogCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfc3Rh
dGljSW5pdGlhbGl6YXRpb25GbGFnOwogICAgIHN0YXRpYyBHVHlwZSBzX2VuZE9mQXBwZW5kTWV0
YVR5cGU7CkBAIC0xMzEsOSArMTMyLDYgQEAgcHJpdmF0ZToKICAgICAvLyBxdWV1ZSwgaW5zdGVh
ZCBvZiBpdCBncm93aW5nIHVuYm91bmRlZC4KICAgICBzdGQ6OmF0b21pY19mbGFnIG1fd2FzQnVz
QWxyZWFkeU5vdGlmaWVkT2ZBdmFpbGFibGVTYW1wbGVzOwogCi0gICAgTG9jayBtX3BhZEFkZFJl
bW92ZUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fcGFkQWRkUmVtb3ZlQ29uZGl0aW9uOwotCiAgICAg
R1JlZlB0cjxHc3RDYXBzPiBtX2FwcHNpbmtDYXBzOwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9k
ZW11eGVyU3JjUGFkQ2FwczsKICAgICBGbG9hdFNpemUgbV9wcmVzZW50YXRpb25TaXplOwpAQCAt
MTU4LDYgKzE1Niw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TWVkaWFTb3VyY2VTdHJlYW1U
eXBlR1N0cmVhbWVyIG1fc3RyZWFtVHlwZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6VHJhY2tQcml2
YXRlQmFzZT4gbV90cmFjazsKIAorICAgIEFib3J0YWJsZVRhc2tRdWV1ZSBtX3Rhc2tRdWV1ZTsK
KwogICAgIEdSZWZQdHI8R3N0QnVmZmVyPiBtX3BlbmRpbmdCdWZmZXI7CiB9OwogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTRkYjIzOTM1MTI2
ZmNiMWZmNWRlMTRkNGRmNWMxMGE4NzJlODJjMi4uYmY0ZTE4M2Y3Mjc1YzY1YTY2MGZlMzQ3MmM1
MWY4ZGI0NzY5Nzg0MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTEwLTI1ICBBbGljaWEgQm95YSBHYXJjw61h
ICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXVtHU3RyZWFtZXJdIEludHJvZHVj
ZSBBYm9ydGFibGVUYXNrUXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDkwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFhhYmllciBSb2RyaWd1
ZXotQ2FsdmFyLgorCisgICAgICAgIFRlc3RzIGZvciBBYm9ydGFibGVUYXNrUXVldWUgYXJlIGlu
Y2x1ZGVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5j
bWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFz
a1F1ZXVlLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkZhbmN5UmVzcG9uc2U6OkZhbmN5UmVzcG9uc2UpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6RmFuY3lSZXNwb25zZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkRldGVybWluaXN0aWNTY2hlZHVsZXI6OkRldGVybWluaXN0aWNTY2hlZHVs
ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjo6VGhy
ZWFkQ29udGV4dDo6VGhyZWFkQ29udGV4dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXRl
cm1pbmlzdGljU2NoZWR1bGVyOjpUaHJlYWRDb250ZXh0Ojp3YWl0TXlUdXJuKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkRldGVybWluaXN0aWNTY2hlZHVsZXI6OlRocmVhZENvbnRleHQ6Onlp
ZWxkVG9UaHJlYWQpOgorCiAyMDE4LTEwLTMxICBHdWlsbGF1bWUgRW1vbnQgIDxndWlqZW1vbnRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBEb24ndCBydW4gSklUIHRlc3RzIG9uIDMyLWJpdCBwbGF0
Zm9ybXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGIwZTI2OGVmMjZl
YmM4ZjhjNTljZjFlNTRiYWJmYzk5NGZhYzliZjQuLjY0Y2E0MDA2NmI4NmZhYTFkMTgyZDczOTc3
OTkyNGM4MTFjY2Q0ODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1H
VEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MTA0LDYgKzEwNCw3IEBAIGFkZF9leGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwCisgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCiApCiAKIHRhcmdl
dF9saW5rX2xpYnJhcmllcyhUZXN0V2ViQ29yZSAke3Rlc3Rfd2ViY29yZV9MSUJSQVJJRVN9KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNWY5Yjc3MjA4MTZkYmRkZDZjMTI1YWI0YzU3YmU4
ZDNiOWQzMTViLi43Nzg4MmJiOWM0ZjI4ZjM5N2Y4ZDRkMThlZjM1YzMxZTkwMWJlZDYxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDg3LDYgKzQ4Nyw3IEBACiAJCTdDQ0U3RURCMUE0MTFB
OTIwMDQ0N0M0QyAvKiBDU1NQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDUxRTkxOUU0MUY5RDAwMTY5MzZGIC8qIENTU1BhcnNlci5j
cHAgKi87IH07CiAJCTdDQ0U3RURDMUE0MTFBOTIwMDQ0N0M0QyAvKiBDYWxjdWxhdGlvblZhbHVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTcy
MEU1MThGMUEwRTgwMEE4NDhFMSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCAqLzsgfTsKIAkJN0ND
RTdFREQxQTQxMUE5MjAwNDQ3QzRDIC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMkM3MTQxNzk3MDg5RDAwRTYyN0ZCIC8q
IFRpbWVSYW5nZXMuY3BwICovOyB9OworCQlDRDUxQzJBOTNFNzhCNUMxRkYzMzdDMDggLyogQWJv
cnRhYmxlVGFza1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFCRjUxMDYzMkExOUI4QUM3RUM0MEUxNyAvKiBBYm9ydGFibGVUYXNrUXVldWUu
Y3BwICovOyB9OwogCQk3Q0NFN0VERTFBNDExQTkyMDA0NDdDNEMgLyogVVJMLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MEExRDM4MTRBMDEwM0Ew
MDhBNjZGMiAvKiBVUkwuY3BwICovOyB9OwogCQk3Q0NFN0VERjFBNDExQTkyMDA0NDdDNEMgLyog
TGF5b3V0VW5pdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDQ2NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi87IH07CiAJ
CTdDQ0U3RUUwMUE0MTFBOUEwMDQ0N0M0QyAvKiBFZGl0b3JDb21tYW5kcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE0ODU3MTRBMDQ0RDQwMDg4
RkFDNCAvKiBFZGl0b3JDb21tYW5kcy5tbSAqLzsgfTsKQEAgLTE5ODUsNiArMTk4Niw3IEBACiAJ
CUNEQkZDQzQyMUE5RkY0NDgwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRnVsbHNjcmVlblpvb21Jbml0aWFsRnJh
bWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRkNDNDMxQTlGRjQ0ODAw
QTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzJDNzE0MTc5NzA4OUQwMEU2MjdGQiAvKiBU
aW1lUmFuZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbWVSYW5nZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBQkY1MTA2MzJBMTlCOEFDN0VDNDBFMTcgLyogQWJvcnRh
YmxlVGFza1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFib3J0YWJsZVRhc2tRdWV1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzhFNDg1MUJDNUIxOTQwMDU5NEZF
QyAvKiBBdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREM4RTQ4OTFCQzVDOTYyMDA1OTRGRUMgLyogdmlkZW8td2l0aC1h
dWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInZpZGVvLXdpdGgtYXVkaW8u
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzhFNDhBMUJDNUM5NjIwMDU5
NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLm1wNCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAidmlkZW8td2l0aC1hdWRpby5tcDQi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUyMSw2ICsyNTIzLDcgQEAKIAkJCQlD
RDg5RDAzNzFDNEVEQjEzMDAwNDBBMDQgLyogY29jb2EgKi8sCiAJCQkJQTFFQzExODUxRjQyNTNE
OTAwRDAxNDZFIC8qIGlvcyAqLywKIAkJCQkzMTYyQUU5QTFFNkYyRjhGMDAwRTREQkMgLyogbWFj
ICovLAorCQkJCUFCRjUxMDYzMkExOUI4QUM3RUM0MEUxNyAvKiBBYm9ydGFibGVUYXNrUXVldWUu
Y3BwICovLAogCQkJCTdBOTA5QTZGMUQ4Nzc0NzUwMDdFMTBGOCAvKiBBZmZpbmVUcmFuc2Zvcm0u
Y3BwICovLAogCQkJCTYzNTRGNEQwMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlm
ZXN0UGFyc2VyLmNwcCAqLywKIAkJCQk5M0E3MjBFNTE4RjFBMEU4MDBBODQ4RTEgLyogQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZjhmNWExMDQx
YzI4OWZkNTQ5YmI4ZjIyYjEzYmRlZWNkYTEyNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcApAQCAtMCww
ICsxLDI1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEsIFMuTC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxBYm9ydGFibGVUYXNrUXVldWUuaD4KKyNpbmNs
dWRlIDxVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoQWJv
cnRhYmxlVGFza1F1ZXVlLCBBc3luY1Rhc2tzKQoreworICAgIEFib3J0YWJsZVRhc2tRdWV1ZSB0
YXNrUXVldWU7CisgICAgYm9vbCB0ZXN0RmluaXNoZWQgeyBmYWxzZSB9OworICAgIGludCBjdXJy
ZW50U3RlcCB7IDAgfTsKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKwor
ICAgIGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZdKCkgeworICAgICAgICBFWFBF
Q1RfRkFMU0UoaXNNYWluVGhyZWFkKCkpOworICAgICAgICB0YXNrUXVldWUuZW5xdWV1ZVRhc2so
WyZdKCkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaXNNYWluVGhyZWFkKCkpOworICAgICAg
ICAgICAgY3VycmVudFN0ZXArKzsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgxLCBjdXJyZW50U3Rl
cCk7CisgICAgICAgIH0pOworICAgICAgICB0YXNrUXVldWUuZW5xdWV1ZVRhc2soWyZdKCkgewor
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgY3Vy
cmVudFN0ZXArKzsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7CisgICAg
ICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICB9KTsKKyAgICB9OworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gV1RG
TW92ZShiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24pXSgpIG11dGFibGUgeworICAgICAgICBXVEY6
OlRocmVhZDo6Y3JlYXRlKCJhdHEtYmFja2dyb3VuZCIsIFdURk1vdmUoYmFja2dyb3VuZFRocmVh
ZEZ1bmN0aW9uKSktPmRldGFjaCgpOworICAgIH0pOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0Rmlu
aXNoZWQpOworfQorCitzdHJ1Y3QgRmFuY3lSZXNwb25zZSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRmFuY3lSZXNwb25zZSk7CitwdWJsaWM6CisgICAgRmFuY3lSZXNwb25zZShpbnQgZmFu
Y3lJbnQpCisgICAgICAgIDogZmFuY3lJbnQoZmFuY3lJbnQpCisgICAgeyB9CisKKyAgICBGYW5j
eVJlc3BvbnNlKEZhbmN5UmVzcG9uc2UmJiBhKQorICAgICAgICA6IGZhbmN5SW50KGEuZmFuY3lJ
bnQpCisgICAgeyB9CisKKyAgICBGYW5jeVJlc3BvbnNlJiBvcGVyYXRvcj0oRmFuY3lSZXNwb25z
ZSYmIGEpCisgICAgeworICAgICAgICB0aGlzLT5mYW5jeUludCA9IGEuZmFuY3lJbnQ7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBpbnQgZmFuY3lJbnQ7Cit9OworCitURVNU
KEFib3J0YWJsZVRhc2tRdWV1ZSwgU3luY1Rhc2tzKQoreworICAgIEFib3J0YWJsZVRhc2tRdWV1
ZSB0YXNrUXVldWU7CisgICAgYm9vbCB0ZXN0RmluaXNoZWQgeyBmYWxzZSB9OworICAgIGludCBj
dXJyZW50U3RlcCB7IDAgfTsKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsK
KworICAgIGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZdKCkgeworICAgICAgICBF
WFBFQ1RfRkFMU0UoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZhbmN5
UmVzcG9uc2U+IHJlc3BvbnNlID0gdGFza1F1ZXVlLmVucXVldWVUYXNrQW5kV2FpdDxGYW5jeVJl
c3BvbnNlPihbJl0oKSAtPiBGYW5jeVJlc3BvbnNlIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIGN1cnJlbnRTdGVwKys7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEoMSwgY3VycmVudFN0ZXApOworICAgICAgICAgICAgRmFuY3lSZXNwb25zZSBy
ZXR1cm5WYWx1ZSgxMDApOworICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgICAg
ICB9KTsKKyAgICAgICAgY3VycmVudFN0ZXArKzsKKyAgICAgICAgRVhQRUNUX0VRKDIsIGN1cnJl
bnRTdGVwKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzcG9uc2UpOworICAgICAgICBFWFBFQ1Rf
RVEoMTAwLCByZXNwb25zZS0+ZmFuY3lJbnQpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goWyZdKCkgeworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAg
fSk7CisgICAgfTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW2JhY2tncm91bmRU
aHJlYWRGdW5jdGlvbiA9IFdURk1vdmUoYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgV1RGOjpUaHJlYWQ6OmNyZWF0ZSgiYXRxLWJhY2tncm91bmQiLCBXVEZN
b3ZlKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbikpLT5kZXRhY2goKTsKKyAgICB9KTsKKworICAg
IFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFRocmVh
ZEVudW0+CitjbGFzcyBEZXRlcm1pbmlzdGljU2NoZWR1bGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEZXRlcm1pbmlzdGljU2NoZWR1bGVyKTsKK3B1YmxpYzoKKyAgICBEZXRlcm1pbmlz
dGljU2NoZWR1bGVyKFRocmVhZEVudW0gZmlyc3RUaHJlYWQpCisgICAgICAgIDogbV9jdXJyZW50
VGhyZWFkKGZpcnN0VGhyZWFkKQorICAgIHsgfQorCisgICAgY2xhc3MgVGhyZWFkQ29udGV4dCB7
CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZENvbnRleHQpOworICAgIHB1Ymxp
YzoKKyAgICAgICAgVGhyZWFkQ29udGV4dChEZXRlcm1pbmlzdGljU2NoZWR1bGVyJiBzY2hlZHVs
ZXIsIFRocmVhZEVudW0gdGhpc1RocmVhZCkKKyAgICAgICAgICAgIDogbV9zY2hlZHVsZXIoc2No
ZWR1bGVyKSwgbV90aGlzVGhyZWFkKHRoaXNUaHJlYWQpCisgICAgICAgIHsgfQorCisgICAgICAg
IHZvaWQgd2FpdE15VHVybigpCisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
ayhtX3NjaGVkdWxlci5tX211dGV4KTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVu
dFRocmVhZENoYW5nZWQud2FpdChtX3NjaGVkdWxlci5tX211dGV4LCBbdGhpc10oKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZCA9PSBtX3RoaXNU
aHJlYWQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgeWllbGRU
b1RocmVhZChUaHJlYWRFbnVtIG5leHRUaHJlYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9jayhtX3NjaGVkdWxlci5tX211dGV4KTsKKyAgICAgICAgICAgIG1fc2NoZWR1
bGVyLm1fY3VycmVudFRocmVhZCA9IG5leHRUaHJlYWQ7CisgICAgICAgICAgICBtX3NjaGVkdWxl
ci5tX2N1cnJlbnRUaHJlYWRDaGFuZ2VkLm5vdGlmeUFsbCgpOworICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBEZXRlcm1pbmlzdGljU2NoZWR1bGVyJiBtX3NjaGVkdWxlcjsKKyAg
ICAgICAgVGhyZWFkRW51bSBtX3RoaXNUaHJlYWQ7CisgICAgfTsKKworCitwcml2YXRlOgorICAg
IFRocmVhZEVudW0gbV9jdXJyZW50VGhyZWFkOworICAgIENvbmRpdGlvbiBtX2N1cnJlbnRUaHJl
YWRDaGFuZ2VkOworICAgIExvY2sgbV9tdXRleDsKK307CisKK2VudW0gY2xhc3MgVGVzdFRocmVh
ZCB7CisgICAgTWFpbiwKKyAgICBCYWNrZ3JvdW5kCit9OworCitURVNUKEFib3J0YWJsZVRhc2tR
dWV1ZSwgQWJvcnQpCit7CisgICAgRGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjxUZXN0VGhyZWFkPiBz
Y2hlZHVsZXIoVGVzdFRocmVhZDo6QmFja2dyb3VuZCk7CisKKyAgICBBYm9ydGFibGVUYXNrUXVl
dWUgdGFza1F1ZXVlOworICAgIGJvb2wgdGVzdEZpbmlzaGVkIHsgZmFsc2UgfTsKKyAgICBSdW5M
b29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGF1dG8gYmFja2dyb3VuZFRocmVh
ZEZ1bmN0aW9uID0gWyZdKCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNNYWluVGhyZWFkKCkp
OworICAgICAgICBEZXRlcm1pbmlzdGljU2NoZWR1bGVyPFRlc3RUaHJlYWQ+OjpUaHJlYWRDb250
ZXh0IGJhY2tncm91bmRUaHJlYWRDb250ZXh0KHNjaGVkdWxlciwgVGVzdFRocmVhZDo6QmFja2dy
b3VuZCk7CisKKyAgICAgICAgdGFza1F1ZXVlLmVucXVldWVUYXNrKFtdKCkgeworICAgICAgICAg
ICAgLy8gVGhpcyB0YXNrIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gcnVuIHVuZGVyIHRo
ZSBzY2hlZHVsaW5nIG9mIHRoaXMgdGVzdC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNl
KTsKKyAgICAgICAgfSk7CisgICAgICAgIGJhY2tncm91bmRUaHJlYWRDb250ZXh0LnlpZWxkVG9U
aHJlYWQoVGVzdFRocmVhZDo6TWFpbik7CisgICAgICAgIGJhY2tncm91bmRUaHJlYWRDb250ZXh0
LndhaXRNeVR1cm4oKTsKKworICAgICAgICAvLyBNYWluIHRocmVhZCBoYXMgY2FsbGVkIHN0YXJ0
QWJvcnRpbmcoKS4KKworICAgICAgICB0YXNrUXVldWUuZW5xdWV1ZVRhc2soW10oKSB7CisgICAg
ICAgICAgICAvLyBUaGlzIHRhc2sgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBydW4gdW5k
ZXIgdGhlIHNjaGVkdWxpbmcgb2YgdGhpcyB0ZXN0LgorICAgICAgICAgICAgRVhQRUNUX1RSVUUo
ZmFsc2UpOworICAgICAgICB9KTsKKyAgICAgICAgLy8gVGhpcyBjYWxsIG11c3QgcmV0dXJuIGlt
bWVkaWF0ZWx5IGJlY2F1c2Ugd2UgYXJlIGFib3J0aW5nLgorICAgICAgICBzdGQ6Om9wdGlvbmFs
PEZhbmN5UmVzcG9uc2U+IHJlc3BvbnNlID0gdGFza1F1ZXVlLmVucXVldWVUYXNrQW5kV2FpdDxG
YW5jeVJlc3BvbnNlPihbXSgpIC0+IEZhbmN5UmVzcG9uc2UgeworICAgICAgICAgICAgLy8gVGhp
cyB0YXNrIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gcnVuIHVuZGVyIHRoZSBzY2hlZHVs
aW5nIG9mIHRoaXMgdGVzdC4KKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICAg
ICAgICAgIHJldHVybiBGYW5jeVJlc3BvbnNlKDEwMCk7CisgICAgICAgIH0pOworICAgICAgICBF
WFBFQ1RfRkFMU0UocmVzcG9uc2UpOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFkQ29udGV4dC55
aWVsZFRvVGhyZWFkKFRlc3RUaHJlYWQ6Ok1haW4pOworICAgICAgICBiYWNrZ3JvdW5kVGhyZWFk
Q29udGV4dC53YWl0TXlUdXJuKCk7CisKKyAgICAgICAgLy8gTWFpbiB0aHJlYWQgaGFzIGNhbGxl
ZCBmaW5pc2hBYm9ydGluZygpLgorCisgICAgICAgIHRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbJl0o
KSB7CisgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICB9KTsKKyAgICB9
OworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJiwgYmFja2dyb3VuZFRocmVhZEZ1
bmN0aW9uID0gV1RGTW92ZShiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24pXSgpIG11dGFibGUgewor
ICAgICAgICBFWFBFQ1RfVFJVRShpc01haW5UaHJlYWQoKSk7CisgICAgICAgIERldGVybWluaXN0
aWNTY2hlZHVsZXI8VGVzdFRocmVhZD46OlRocmVhZENvbnRleHQgbWFpblRocmVhZENvbnRleHQo
c2NoZWR1bGVyLCBUZXN0VGhyZWFkOjpNYWluKTsKKyAgICAgICAgV1RGOjpUaHJlYWQ6OmNyZWF0
ZSgiYXRxLWJhY2tncm91bmQiLCBXVEZNb3ZlKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbikpLT5k
ZXRhY2goKTsKKworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC53YWl0TXlUdXJuKCk7CisKKyAg
ICAgICAgdGFza1F1ZXVlLnN0YXJ0QWJvcnRpbmcoKTsKKyAgICAgICAgbWFpblRocmVhZENvbnRl
eHQueWllbGRUb1RocmVhZChUZXN0VGhyZWFkOjpCYWNrZ3JvdW5kKTsKKyAgICAgICAgbWFpblRo
cmVhZENvbnRleHQud2FpdE15VHVybigpOworCisgICAgICAgIHRhc2tRdWV1ZS5maW5pc2hBYm9y
dGluZygpOworICAgICAgICBtYWluVGhyZWFkQ29udGV4dC55aWVsZFRvVGhyZWFkKFRlc3RUaHJl
YWQ6OkJhY2tncm91bmQpOworICAgIH0pOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQp
OworfQorCitURVNUKEFib3J0YWJsZVRhc2tRdWV1ZSwgQWJvcnREdXJpbmdTeW5jVGFzaykKK3sK
KyAgICBBYm9ydGFibGVUYXNrUXVldWUgdGFza1F1ZXVlOworICAgIGJvb2wgdGVzdEZpbmlzaGVk
IHsgZmFsc2UgfTsKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAg
IGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZdKCkgeworICAgICAgICBFWFBFQ1Rf
RkFMU0UoaXNNYWluVGhyZWFkKCkpOworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFuY3lSZXNw
b25zZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUuZW5xdWV1ZVRhc2tBbmRXYWl0PEZhbmN5UmVzcG9u
c2U+KFtdKCkgLT4gRmFuY3lSZXNwb25zZSB7CisgICAgICAgICAgICAvLyBUaGlzIHRhc2sgc2hv
dWxkIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBydW4gdW5kZXIgdGhlIHNjaGVkdWxpbmcgb2YgdGhp
cyB0ZXN0LgorICAgICAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAgICAgICAgICAgcmV0
dXJuIEZhbmN5UmVzcG9uc2UoMTAwKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gTWFpbiB0
aHJlYWQgaGFzIGNhbGxlZCBzdGFydEFib3J0aW5nKCkuCisgICAgICAgIEVYUEVDVF9GQUxTRShy
ZXNwb25zZSk7CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFsmXSgpIHsKKyAg
ICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgIH07CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsmLCBiYWNrZ3JvdW5kVGhyZWFkRnVuY3Rpb24g
PSBXVEZNb3ZlKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbildKCkgbXV0YWJsZSB7CisgICAgICAg
IEVYUEVDVF9UUlVFKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgV1RGOjpUaHJlYWQ6OmNyZWF0
ZSgiYXRxLWJhY2tncm91bmQiLCBXVEZNb3ZlKGJhY2tncm91bmRUaHJlYWRGdW5jdGlvbikpLT5k
ZXRhY2goKTsKKworICAgICAgICAvLyBHaXZlIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCBhIGJpdCBv
ZiB0aW1lIHRvIGdldCBibG9ja2VkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UuCisgICAgICAgIFdU
Rjo6c2xlZXAoMTAwX21zKTsKKworICAgICAgICB0YXNrUXVldWUuc3RhcnRBYm9ydGluZygpOwor
ICAgIH0pOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQorCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>