<?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>219091</bug_id>
          
          <creation_ts>2020-11-18 08:29:37 -0800</creation_ts>
          <short_desc>[Concurrent display lists] Synchronize display list rendering across remote image buffers</short_desc>
          <delta_ts>2020-12-06 20:31:25 -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>WebKit2</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>
          <dependson>219067</dependson>
    
    <dependson>219089</dependson>
    
    <dependson>219130</dependson>
    
    <dependson>219240</dependson>
    
    <dependson>219262</dependson>
          <blocked>219586</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1708618</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-18 08:29:37 -0800</bug_when>
    <thetext>Remove the display list item batching mechanism in RemoteImageBufferProxy. Instead, we should:

- Attempt to wake up the GPU process as early as possible (i.e. as soon as the first item is appended)
- Always bump the unread bytes count when appending items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709296</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-19 15:26:27 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #0)
&gt; Remove the display list item batching mechanism in RemoteImageBufferProxy.
&gt; Instead, we should:
&gt; 
&gt; - Attempt to wake up the GPU process as early as possible (i.e. as soon as
&gt; the first item is appended)

(Rather than &quot;early as possible&quot;, this should actually be generic so that it&apos;s &quot;after n items&quot;)

&gt; - Always bump the unread bytes count when appending items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710027</commentid>
    <comment_count>2</comment_count>
      <attachid>414854</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-24 15:19:37 -0800</bug_when>
    <thetext>Created attachment 414854
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710073</commentid>
    <comment_count>3</comment_count>
      <attachid>414868</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-25 13:10:10 -0800</bug_when>
    <thetext>Created attachment 414868
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710124</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-26 03:18:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/71747695&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710365</commentid>
    <comment_count>5</comment_count>
      <attachid>414965</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-27 12:16:19 -0800</bug_when>
    <thetext>Created attachment 414965
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710376</commentid>
    <comment_count>6</comment_count>
      <attachid>414967</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-27 12:46:15 -0800</bug_when>
    <thetext>Created attachment 414967
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710381</commentid>
    <comment_count>7</comment_count>
      <attachid>414970</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-27 13:35:15 -0800</bug_when>
    <thetext>Created attachment 414970
Try to fix Win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711235</commentid>
    <comment_count>8</comment_count>
      <attachid>414970</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-01 18:12:32 -0800</bug_when>
    <thetext>Comment on attachment 414970
Try to fix Win build

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

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:126
&gt; +    if (imageBuffer-&gt;isAccelerated())

We need to fix this

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:170
&gt; +    // FIXME: We can remove this either once we introduce a GetImageData display list item.

either??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711267</commentid>
    <comment_count>9</comment_count>
      <attachid>414970</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-01 23:50:10 -0800</bug_when>
    <thetext>Comment on attachment 414970
Try to fix Win build

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:148
&gt; +            // FIXME: We can&apos;t block forever here while waiting for new display list items.
&gt; +            // We will need some mechanism here to stop waiting after a certain time limit
&gt; +            // and coordinate with the web process so that we receive a new wakeup message
&gt; +            // when there are more items to be processed.
&gt; +            sleep(8_us);

&quot;Here&quot;, at the moment, is the GPU process main thread, right? While I recognize that you&apos;ve got a FIXME, and a plan, can we even land it in this state? Won&apos;t things that come via IPC (e.g. Media stuff) get dropped on the floor (or, rather, stuck...)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711338</commentid>
    <comment_count>10</comment_count>
      <attachid>414970</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-02 08:04:41 -0800</bug_when>
    <thetext>Comment on attachment 414970
Try to fix Win build

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:148
&gt;&gt; +            sleep(8_us);
&gt; 
&gt; &quot;Here&quot;, at the moment, is the GPU process main thread, right? While I recognize that you&apos;ve got a FIXME, and a plan, can we even land it in this state? Won&apos;t things that come via IPC (e.g. Media stuff) get dropped on the floor (or, rather, stuck...)?

Yeah, I was pretty iffy about this bit...I had considered preserving the &quot;old model&quot; of going to sleep in the GPUP when we&apos;re done processing all display list items, and then just taking the resulting (sizable) performance hit on MM — at least, until we figure out a fast way for the web process to signal the GPUP to let it know that it should do more work. Perhaps this is preferable (take the temporary perf hit and try to recover it later)?

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:126
&gt;&gt; +    if (imageBuffer-&gt;isAccelerated())
&gt; 
&gt; We need to fix this

Yeah, I&apos;d like to make this better too. Maybe endDisplayList() could be a no-op stub on ImageBuffer that&apos;s implemented in RemoteImageBufferProxy? (I&apos;m not sure if that would be an improvement, but it would remove the need for this casting and isAccelerated check)

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:170
&gt;&gt; +    // FIXME: We can remove this either once we introduce a GetImageData display list item.
&gt; 
&gt; either??

Whoops, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711430</commentid>
    <comment_count>11</comment_count>
      <attachid>414970</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-02 12:43:39 -0800</bug_when>
    <thetext>Comment on attachment 414970
Try to fix Win build

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:915
&gt; +void ItemBuffer::didAppendDataToWritableBuffer(size_t numberOfBytes)

I think it makes code harder to follow when, transiting from point A -&gt; B -&gt; C, the name of something changes ever so slightly. In this case, we have appendEncodedData -&gt; didAppendDataToWritableBuffer -&gt; didAppendData. But I think all three transit points are talking about the same event. So I don&apos;t understand what we&apos;re trying to convey when we drop &quot;EncodedData&quot;, then add &quot;ToWritableBuffer&quot;, then remove &quot;ToWritableBuffer&quot;. Can you change this sequence to use more consistent naming? I think appendEncodedData -&gt; didAppend -&gt; didAppend might be best. But I might even drop &quot;EncodedData&quot; from &quot;appendEncodedData&quot;; C++ will do the right thing.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:918
&gt; +    if (m_writingClient)

I&apos;m curious: Under what conditions do we intend to append in a mode where m_writingClient is null?

&gt; Source/WebKit/GPUProcess/graphics/DisplayListReaderHandle.cpp:34
&gt; +    auto previousUnreadBytes = header().unreadBytes.exchangeSub(amount);

You can use std::memory_order::relaxed here. This logic doesn&apos;t guard any reads or writes -- it just needs to atomically update our shared understanding of how many bytes are left.

&gt; Source/WebKit/GPUProcess/graphics/DisplayListReaderHandle.cpp:37
&gt; +        ASSERT_NOT_REACHED();

Until we make it terminate the web process, this should be RELEASE_ASSERT.

&gt;&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:148
&gt;&gt;&gt; +            sleep(8_us);
&gt;&gt; 
&gt;&gt; &quot;Here&quot;, at the moment, is the GPU process main thread, right? While I recognize that you&apos;ve got a FIXME, and a plan, can we even land it in this state? Won&apos;t things that come via IPC (e.g. Media stuff) get dropped on the floor (or, rather, stuck...)?
&gt; 
&gt; Yeah, I was pretty iffy about this bit...I had considered preserving the &quot;old model&quot; of going to sleep in the GPUP when we&apos;re done processing all display list items, and then just taking the resulting (sizable) performance hit on MM — at least, until we figure out a fast way for the web process to signal the GPUP to let it know that it should do more work. Perhaps this is preferable (take the temporary perf hit and try to recover it later)?

If we&apos;re slower without this sleep then we must have a bug.

Think about it: Previously, the GPU Process only learned about new items every 512 items. That meant that the GPU Process could go to sleep with [0, 512) items still in the queue. That meant that the GPU Process went to sleep more than it had to and had to be woken up more.

In this patch, the GPU Process learns about new items right away. That means that the GPU Process can only go to sleep with [0, 1) items in the queue. That means that the GPU Process will go to sleep less and have to be woken up less.

If a version of this patch that allows the GPU Process to go to sleep causes the GPU Process go to sleep *more*, that has to be a bug. We should look at that version of the patch, and debug it.

&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:53
&gt; +        return header().unreadBytes.load();

You can use std::memory_order::acquire here for better performance. The default (std::memory_order_seq_cst) guarantees that all previous instructions commit before this instruction commits, and no subsequent instructions commit before this instruction commits. But we only need to ensure that all subsequent reads from the buffer commit after this instruction commits. std::memory_order::acquire does that.

&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:39
&gt;      if (UNLIKELY(checkedWritableOffset.hasOverflowed()))
&gt;          RELEASE_ASSERT_NOT_REACHED();

Wouldn&apos;t just calling get() do this for you?

&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:43
&gt; +    CheckedSize checkedUnreadBytes = header().unreadBytes.exchangeAdd(amount);

You can use std::memory_order::release here for better performance. The default (std::memory_order_seq_cst) guarantees that all previous instructions commit before this instruction commits, and no subsequent instructions commit before this instruction commits. But we only need to ensure that all previous writes to the buffer commit before this instruction commits. std::memory_order::release does that.

Related side note: It&apos;s slightly more efficient to do this exchange at the top of the function. That way, you&apos;re saying that it&apos;s OK to proceed with all the checked arithmetic in this function without waiting for the unreadBytes change to commit.

&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:48
&gt;      return checkedUnreadBytes.unsafeGet();

Same comment about get().

&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:76
&gt; +    if (header().hasReader.load())
&gt; +        return false;

Why can&apos;t we move the write cursor when we have a reader? If the reader read everything, we should be good to go.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:243
&gt; +        if (m_remoteRenderingBackendProxy-&gt;setDestinationImageBuffer(m_renderingResourceIdentifier) == RemoteRenderingBackendProxy::IsFirstDestination::Yes)
&gt; +            m_isAppendingDisplayListItemForInitialDestinationImageBuffer = true;
&gt;      }
&gt;  
&gt; -    void willAppendItemOfType(WebCore::DisplayList::ItemType) override
&gt; +    void didAppendData(const WebCore::DisplayList::ItemBufferHandle&amp; handle, size_t numberOfBytes) override
&gt;      {
&gt; -        constexpr size_t DisplayListBatchSize = 512;
&gt; -        auto&amp; displayList = m_drawingContext.displayList();
&gt; -        if (++m_itemCountInCurrentDisplayList &lt; DisplayListBatchSize)
&gt; +        if (UNLIKELY(!m_remoteRenderingBackendProxy))
&gt;              return;
&gt;  
&gt; -        m_itemCountInCurrentDisplayList = 0;
&gt; -        submitDisplayList(displayList);
&gt; -        displayList.clear();
&gt; +        auto needsWakeupMessage = m_isAppendingDisplayListItemForInitialDestinationImageBuffer
&gt; +            ? RemoteRenderingBackendProxy::NeedsWakeupMessage::Yes
&gt; +            : RemoteRenderingBackendProxy::NeedsWakeupMessage::No;

This might be the source of the performance bug. It seems that this patch removes *all* batching. So, we send one item right away, and then invite the GPU Process to go to sleep right away. Any display list item for which processing is faster than generation will cause a sleep. That&apos;s a lot of sleep!

In a way, this changes the best case into the worst case: When the GPU Process is hot and ready to crush its workload, we virtually guarantee that the next display list item will trigger a sleep. Kind of like the Hare in the Tortoise and the Hare.

Instead, I&apos;d suggest maintaining a batch limit of 512 before we wake up, but always keeping the unread bytes count up to date eagerly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712148</commentid>
    <comment_count>12</comment_count>
      <attachid>414970</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-04 13:52:39 -0800</bug_when>
    <thetext>Comment on attachment 414970
Try to fix Win build

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

Thanks for the review! Comments inline:

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:915
&gt;&gt; +void ItemBuffer::didAppendDataToWritableBuffer(size_t numberOfBytes)
&gt; 
&gt; I think it makes code harder to follow when, transiting from point A -&gt; B -&gt; C, the name of something changes ever so slightly. In this case, we have appendEncodedData -&gt; didAppendDataToWritableBuffer -&gt; didAppendData. But I think all three transit points are talking about the same event. So I don&apos;t understand what we&apos;re trying to convey when we drop &quot;EncodedData&quot;, then add &quot;ToWritableBuffer&quot;, then remove &quot;ToWritableBuffer&quot;. Can you change this sequence to use more consistent naming? I think appendEncodedData -&gt; didAppend -&gt; didAppend might be best. But I might even drop &quot;EncodedData&quot; from &quot;appendEncodedData&quot;; C++ will do the right thing.

Good point — this does make the code easier to follow. Renamed appendEncodedData to just append, and renamed didAppendDataToWritableBuffer to didAppendData to match the rest of the codepath.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:918
&gt;&gt; +    if (m_writingClient)
&gt; 
&gt; I&apos;m curious: Under what conditions do we intend to append in a mode where m_writingClient is null?

m_writingClient is null in the case of in-process display lists. AFAIK, these in-process display lists are only used (1) for a text painting optimization where we cache computed glyph data when painting the same text at high frequency, and (2) for some layout tests where we use it to record painting and dump it as text.

There&apos;s also a whole codepath for fully in-process DisplayList rendering, but I don&apos;t think that is really maintained anymore.

&gt;&gt; Source/WebKit/GPUProcess/graphics/DisplayListReaderHandle.cpp:34
&gt;&gt; +    auto previousUnreadBytes = header().unreadBytes.exchangeSub(amount);
&gt; 
&gt; You can use std::memory_order::relaxed here. This logic doesn&apos;t guard any reads or writes -- it just needs to atomically update our shared understanding of how many bytes are left.

Sounds good! I&apos;ll give `std::memory_order_relaxed` a try here.

&gt;&gt; Source/WebKit/GPUProcess/graphics/DisplayListReaderHandle.cpp:37
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; Until we make it terminate the web process, this should be RELEASE_ASSERT.

Okay — changed to a RELEASE_ASSERT.

&gt;&gt;&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:148
&gt;&gt;&gt;&gt; +            sleep(8_us);
&gt;&gt;&gt; 
&gt;&gt;&gt; &quot;Here&quot;, at the moment, is the GPU process main thread, right? While I recognize that you&apos;ve got a FIXME, and a plan, can we even land it in this state? Won&apos;t things that come via IPC (e.g. Media stuff) get dropped on the floor (or, rather, stuck...)?
&gt;&gt; 
&gt;&gt; Yeah, I was pretty iffy about this bit...I had considered preserving the &quot;old model&quot; of going to sleep in the GPUP when we&apos;re done processing all display list items, and then just taking the resulting (sizable) performance hit on MM — at least, until we figure out a fast way for the web process to signal the GPUP to let it know that it should do more work. Perhaps this is preferable (take the temporary perf hit and try to recover it later)?
&gt; 
&gt; If we&apos;re slower without this sleep then we must have a bug.
&gt; 
&gt; Think about it: Previously, the GPU Process only learned about new items every 512 items. That meant that the GPU Process could go to sleep with [0, 512) items still in the queue. That meant that the GPU Process went to sleep more than it had to and had to be woken up more.
&gt; 
&gt; In this patch, the GPU Process learns about new items right away. That means that the GPU Process can only go to sleep with [0, 1) items in the queue. That means that the GPU Process will go to sleep less and have to be woken up less.
&gt; 
&gt; If a version of this patch that allows the GPU Process to go to sleep causes the GPU Process go to sleep *more*, that has to be a bug. We should look at that version of the patch, and debug it.

I&apos;ve rewritten parts of this patch so that:
- The GPUP now goes to sleep when it&apos;s done processing all unread bytes, instead of waiting (indefinitely) for more data.
- We now have a configurable hysteresis (I&apos;m currently starting at 512 items) between when we first append unread data after the GPUP has gone to sleep, and when we actually send the wakeup message.

&gt;&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:53
&gt;&gt; +        return header().unreadBytes.load();
&gt; 
&gt; You can use std::memory_order::acquire here for better performance. The default (std::memory_order_seq_cst) guarantees that all previous instructions commit before this instruction commits, and no subsequent instructions commit before this instruction commits. But we only need to ensure that all subsequent reads from the buffer commit after this instruction commits. std::memory_order::acquire does that.

Good catch! Will give this a try...

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:39
&gt;&gt;          RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; Wouldn&apos;t just calling get() do this for you?

Oh, true. Changed to just unsafeGet().

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:43
&gt;&gt; +    CheckedSize checkedUnreadBytes = header().unreadBytes.exchangeAdd(amount);
&gt; 
&gt; You can use std::memory_order::release here for better performance. The default (std::memory_order_seq_cst) guarantees that all previous instructions commit before this instruction commits, and no subsequent instructions commit before this instruction commits. But we only need to ensure that all previous writes to the buffer commit before this instruction commits. std::memory_order::release does that.
&gt; 
&gt; Related side note: It&apos;s slightly more efficient to do this exchange at the top of the function. That way, you&apos;re saying that it&apos;s OK to proceed with all the checked arithmetic in this function without waiting for the unreadBytes change to commit.

👍🏻 Will try `std::memory_order_release` here.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:48
&gt;&gt;      return checkedUnreadBytes.unsafeGet();
&gt; 
&gt; Same comment about get().

Fixed!

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:76
&gt;&gt; +        return false;
&gt; 
&gt; Why can&apos;t we move the write cursor when we have a reader? If the reader read everything, we should be good to go.

I&apos;ve deleted this in the latest version of this patch (which also removes the `hasReader` flag entirely).

The only reason this was here before was that if the GPUP stopped in the middle of reading to wait for more items, the WP would reset the write cursor and start appending items at the start of the buffer, but the GPUP would still expect items to come in from the offset where it began waiting. I suppose I could&apos;ve made this work by adding some way for the WP to let the GPUP know that it has reset and should read from the start again, but since we now go to sleep after we&apos;re done in the GPUP, this edge case is no longer relevant.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:243
&gt;&gt; +            : RemoteRenderingBackendProxy::NeedsWakeupMessage::No;
&gt; 
&gt; This might be the source of the performance bug. It seems that this patch removes *all* batching. So, we send one item right away, and then invite the GPU Process to go to sleep right away. Any display list item for which processing is faster than generation will cause a sleep. That&apos;s a lot of sleep!
&gt; 
&gt; In a way, this changes the best case into the worst case: When the GPU Process is hot and ready to crush its workload, we virtually guarantee that the next display list item will trigger a sleep. Kind of like the Hare in the Tortoise and the Hare.
&gt; 
&gt; Instead, I&apos;d suggest maintaining a batch limit of 512 before we wake up, but always keeping the unread bytes count up to date eagerly.

Yep! I&apos;ve added an n-item hysteresis before sending the wakeup message in the latest version of my patch (which I&apos;ll upload shortly after I update the changelogs and do some more performance testing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712166</commentid>
    <comment_count>13</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-04 14:26:34 -0800</bug_when>
    <thetext>&gt; &gt; In a way, this changes the best case into the worst case: When the GPU Process is hot and ready to crush its workload, we virtually guarantee that the next display list item will trigger a sleep. Kind of like the Hare in the Tortoise and the Hare.
&gt; &gt; 
&gt; &gt; Instead, I&apos;d suggest maintaining a batch limit of 512 before we wake up, but always keeping the unread bytes count up to date eagerly.
&gt; 
&gt; Yep! I&apos;ve added an n-item hysteresis before sending the wakeup message in
&gt; the latest version of my patch (which I&apos;ll upload shortly after I update the
&gt; changelogs and do some more performance testing).

Overall, this seems to slightly regress performance on lines/paths/arcs, by ~4% (in comparison, I measured the changes in https://bugs.webkit.org/attachment.cgi?id=414970&amp;action=review to be a 3-5% *progression*).

I think going with this approach is fine for now, but we&apos;ll need to do something to recover the lost perf (maybe by experimenting with ways to sleep for a brief period in the GPUP after unread count drops to 0, and wait for additional data).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712178</commentid>
    <comment_count>14</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-04 14:43:17 -0800</bug_when>
    <thetext>&gt; 
&gt; Sounds good! I&apos;ll give `std::memory_order_relaxed` a try here.
&gt; 
&gt; &gt; You can use std::memory_order::acquire here for better performance. The default (std::memory_order_seq_cst) guarantees that all previous instructions commit before this instruction commits, and no subsequent instructions commit before this instruction commits. But we only need to ensure that all subsequent reads from the buffer commit after this instruction commits. std::memory_order::acquire does that.
&gt; 
&gt; Good catch! Will give this a try...
&gt; 
&gt; &gt; You can use std::memory_order::release here for better performance. The default (std::memory_order_seq_cst) guarantees that all previous instructions commit before this instruction commits, and no subsequent instructions commit before this instruction commits. But we only need to ensure that all previous writes to the buffer commit before this instruction commits. std::memory_order::release does that.
&gt; &gt; 
&gt; &gt; Related side note: It&apos;s slightly more efficient to do this exchange at the top of the function. That way, you&apos;re saying that it&apos;s OK to proceed with all the checked arithmetic in this function without waiting for the unreadBytes change to commit.
&gt; 
&gt; 👍🏻 Will try `std::memory_order_release` here.

Using the `std::memory_order_*`s in these three spots above seems to be about perf-neutral (or possibly give slightly worse performance — the difference was not stat. significant).

I&apos;ll hold off on landing this bit for now (it seems like we ought to revisit this — maybe some other details of the implementation are preventing this from being a progression)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712180</commentid>
    <comment_count>15</comment_count>
      <attachid>415460</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-04 14:56:03 -0800</bug_when>
    <thetext>Created attachment 415460
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712184</commentid>
    <comment_count>16</comment_count>
      <attachid>415461</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-04 15:00:27 -0800</bug_when>
    <thetext>Created attachment 415461
v2 (remove unused variable)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712199</commentid>
    <comment_count>17</comment_count>
      <attachid>415469</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-04 15:46:03 -0800</bug_when>
    <thetext>Created attachment 415469
v2 (rebase on trunk)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712214</commentid>
    <comment_count>18</comment_count>
      <attachid>415469</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-04 16:48:09 -0800</bug_when>
    <thetext>Comment on attachment 415469
v2 (rebase on trunk)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712274</commentid>
    <comment_count>19</comment_count>
      <attachid>415497</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-05 13:26:55 -0800</bug_when>
    <thetext>Created attachment 415497
Rebase on trunk again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712279</commentid>
    <comment_count>20</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-05 14:17:37 -0800</bug_when>
    <thetext>Committed r270478: &lt;https://trac.webkit.org/changeset/270478&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414854</attachid>
            <date>2020-11-24 15:19:37 -0800</date>
            <delta_ts>2020-11-25 13:10:08 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-219091-20201124151936.patch</filename>
            <type>text/plain</type>
            <size>58283</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM1ZmY0ZjY3NTEyY2Jm
YWVlZWM2ZTM4MTE5ZTc1OGIxZWU2YTBhZS4uZTA0YjJmMmU5NDZjYWE2Mzk0Yjk5MTI2NzhlNThm
NTIxMzhjYjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTExLTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBiYXRjaGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmRFbmNvZGVkRGF0YSk6CisKKyAg
ICAgICAgQWRkIGEgbmV3IGBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudGAgbWV0aG9kIHRvIGluZm9y
bSBjbGllbnRzIHdoZW4gbmV3IGJ5dGVzIGFyZSBhcHBlbmRlZCB0byBhbiBpdGVtIGJ1ZmZlciwK
KyAgICAgICAgZ2l2ZW4gdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGJ5dGVzIGFkZGVkIGFuZCB0
aGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSBidWZmZXIgaGFuZGxlLgorCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6ZGlkQXBwZW5kRGF0YVRvV3JpdGFibGVCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
Ojp1bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmZsdXNoQ29udGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciBt
ZXRob2QgdG8gYXBwZW5kIGEgYEZsdXNoQ29udGV4dGAgaXRlbSB2aWEgdGhlIGRpc3BsYXkgbGlz
dCByZWNvcmRlciwgdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgICAgIGFwcHJvcHJpYXRlIHJlY29y
ZGVyIGRlbGVnYXRlIG1ldGhvZHMgYXJlIGludm9rZWQgd2hlbiBhcHBlbmRpbmcgYSAiZmx1c2gg
Y29udGV4dCIgaXRlbS4KKwogMjAyMC0xMS0yMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgbmV3IGRpc3BsYXkgbGlzdCBtZXRhIGNv
bW1hbmRzIGluIHByZXBhcmF0aW9uIGZvciB3ZWJraXQub3JnL2IvMjE5MDkxCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDIzMDc0NWQ3NzFjMmEzN2Y0NGRhNDJmZjE0NDEwOWRiMjZiMDI5NmQuLmZjMzJiMjhkNGQ4YmI0
YjJjNGVlNzk3NWVjMjAxMTc3NDQ1MzY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjA5IEBACisy
MDIwLTExLTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb25jdXJyZW50IGRpc3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBi
YXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5MDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVmYWN0b3JzIHRoZSBleGlzdGluZyBjb25jdXJyZW50IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5n
IG1lY2hhbmlzbSwgc3VjaCB0aGF0IHdlIG5vIGxvbmdlciB1cGRhdGUgdGhlIHVucmVhZAorICAg
ICAgICBieXRlcyBjb3VudCBldmVyeSA1MTIgaXRlbXMgKG9yIHdoZW4gZmx1c2hpbmcgdGhlIGRy
YXdpbmcgY29udGV4dCksIGFuZCBpbnN0ZWFkIHVwZGF0ZSBpdCBldmVyeSB0aW1lIHdlIGFwcGVu
ZAorICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLiBJbiBvcmRlciB0byBhY2hpZXZlIHRo
aXMgd2l0aG91dCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IgbXVsdGlwbGUgZGlzcGxheS1saXN0
IGJhY2tlZAorICAgICAgICBpbWFnZSBidWZmZXJzIHRvIHJlbmRlciBzaW11bHRhbmVvdXNseSwg
d2UgYWxzbyBhZGQgc3VwcG9ydCBmb3Igc3luY2hyb25pemluZyBkaXNwbGF5IGxpc3QgaXRlbXMg
YWNyb3NzCisgICAgICAgIGRpZmZlcmVudCBpbWFnZSBidWZmZXJzIGJ5IHVzaW5nIHRoZSBuZXcg
bWV0YSBjb21tYW5kIGl0ZW1zIGFkZGVkIGluIGJ1ZyAjMjE5MjYyLiBBcyBkZXRhaWxlZCBpbiB0
aGUgQ2hhbmdlTG9nCisgICAgICAgIGZvciB0aGF0IGJ1ZywgYSBzdHJlYW0gb2YgZGlzcGxheSBs
aXN0IGRhdGEgd3JpdHRlbiBieSB0aGUgd2ViIHByb2Nlc3MgYW5kIGNvbnN1bWVkIGJ5IHRoZSBH
UFUgcHJvY2VzcyBpcyBub3cKKyAgICAgICAgc3RydWN0dXJlZCBsaWtlIHNvOgorCisgICAgICAg
IFdha2V1cCBtZXNzYWdlIGluaXRpYXRlcyBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyB3aXRoIElt
YWdlIEJ1ZmZlciBBIGFuZCBJdGVtIEJ1ZmZlciAxCisgICAgICAgICAgICB8CisgICAgICAgICAg
ICB8ICAgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKEIpCisgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
KDIpCisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB2ICAgICAgICAg
ICAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgICAg
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rKworICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICAgIHwgfCBEZXN0aW5hdGlvbiAgICAg
ICAgfCB8IERlc3RpbmF0aW9uICAgICAgICAgICAgICAgICAgfCB8IEl0ZW0gQnVmZmVyIDEKKyAg
ICAgICAgICAgIHwgfCBJbWFnZSBCdWZmZXIgQSAgICAgfCB8IEltYWdlIEJ1ZmZlciBCICAgICAg
ICAgICAgICAgfCB8CisgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKyAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tKyArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IHwgRHN0LiBJbWFnZSAgIHwgfCBE
ZXN0aW5hdGlvbiBJbWFnZSAgICAgfCAgVW51c2VkICAgICAgfCBJdGVtIEJ1ZmZlciAyCisgICAg
ICAgICAgICB8IHwgQnVmZmVyIEIgICAgIHwgfCBCdWZmZXIgQSAgICAgICAgICAgICAgfCAgQ2Fw
YWNpdHkgICAgfAorICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgTWV0YUNvbW1hbmRF
bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIE1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihBKQorCisgICAgICAgIEluIG9yZGVyIHRv
IHdyaXRlIGRpc3BsYXkgbGlzdCBkYXRhIGNvbmZvcm1pbmcgdG8gdGhpcyBmb3JtYXQsIHdlIGFk
ZCBhIG1lY2hhbmlzbSB0byB0aGUgd2ViIHByb2Nlc3MgdGhhdCBrZWVwcworICAgICAgICB0cmFj
ayBvZiB0aGUgImN1cnJlbnQgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIiAoaS5lLiB0aGUgaW1h
Z2UgYnVmZmVyIHRoYXQgaGFzIG1vc3QgcmVjZW50bHkKKyAgICAgICAgYXBwZW5kZWQgYSBkaXNw
bGF5IGxpc3QgaXRlbSkuIFJpZ2h0IGJlZm9yZSB0aGlzIGRlc3RpbmF0aW9uIGlzIGFib3V0IHRv
IGNoYW5nZSwgd2UgYXBwZW5kIGEgbmV3CisgICAgICAgIGBNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJgIGl0ZW0gYmVmb3JlIHByb2NlZWRpbmcgdG8gYXBwZW5kIGRpc3Bs
YXkgbGlzdCBpdGVtcyBmb3IgdGhlIG5ldworICAgICAgICBjdXJyZW50IGRlc3RpbmF0aW9uLiBX
ZSBhbHNvIGtlZXAgdHJhY2sgb2YgYWxsIGltYWdlIGJ1ZmZlcnMgd2l0aCBkaXNwbGF5IGxpc3Qg
ZGF0YSB0aGF0IGhhdmUgbm90IHlldCBiZWVuCisgICAgICAgIGZsdXNoZWQsIHN1Y2ggdGhhdCB3
aGVuIGFsbCBpbWFnZSBidWZmZXJzIGhhdmUgZmluaXNoZWQgZmx1c2hpbmcsIHdlIGFwcGVuZCBh
IGZpbmFsIGBNZXRhQ29tbWFuZEVuZGAgaXRlbS4KKworICAgICAgICBPbiB0aGUgcmVhZGVyIChH
UFUgcHJvY2Vzcykgc2lkZSwgd2UgbWFrZSBzb21lIG1pbm9yIGFkanVzdG1lbnRzIHNvIHRoYXQg
dGhlIG1haW4gZGlzcGxheSBsaXN0IHByb2Nlc3NpbmcgbG9vcAorICAgICAgICBvZiB0aGUgR1BV
IHByb2Nlc3MgaXMgY2FwYWJsZSBvZiBjaGFuZ2luZyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXJz
IHdoaWxlIHByb2Nlc3NpbmcgYSBzdHJlYW0gb2YgZGlzcGxheSBsaXN0CisgICAgICAgIGl0ZW1z
LiBXZSBhZGRpdGlvbmFsbHkgY2hhbmdlIHRoaXMgbWFpbiBsb29wIHNvIHRoYXQgd2UnbGwgd2Fp
dCBmb3IgbW9yZSBkaXNwbGF5IGxpc3QgaXRlbXMgd2hlbiB0aGUgdW5yZWFkCisgICAgICAgIGNv
dW50IGRyb3BzIHRvIHplcm8gcmF0aGVyIHRoYW4gZ29pbmcgdG8gc2xlZXAgaW1tZWRpYXRlbHks
IHVudGlsIHdlIHJlY2VpdmUgYSBgTWV0YUNvbW1hbmRFbmRgIGl0ZW0sIHdoaWNoIHRoZW4KKyAg
ICAgICAgcHJvbXB0cyB1cyB0byBnbyB0byBzbGVlcCBpbiB0aGUgR1BVIHByb2Nlc3MuIFRoZSBw
dXJwb3NlIG9mIHRoaXMgaXMgdG8gYXZvaWQgZXhjZXNzaXZlIHNsZWVwaW5nIGFuZCB3YWtpbmcg
d2hlbgorICAgICAgICBwcm9jZXNzaW5nIGRpc3BsYXkgbGlzdHMgd2l0aCBtYW55IGl0ZW1zLCBz
aW5jZSB0aGUgR1BVIHByb2Nlc3MgdGVuZHMgdG8gZnJlcXVlbnRseSAiY2F0Y2ggdXAiIHRvIHRo
ZSB3ZWIKKyAgICAgICAgcHJvY2VzcyBmb3IgYnJpZWYgbW9tZW50cyB3aGVuIHJ1bm5pbmcgdGhl
IE1vdGlvbk1hcmsgc3VidGVzdHMsIHN1Y2ggYXMgQ2FudmFzIExpbmVzIGFuZCBDYW52YXMgQXJj
cy4KKworICAgICAgICBGcm9tIGxvY2FsIHRlc3RpbmcsIEkgbWVhc3VyZWQgYSBzbGlnaHQgKDIt
MyUpIHByb2dyZXNzaW9uIG9uIGJvdGggTGluZXMgYW5kIEFyY3MgdXNpbmcgdGhpcyBuZXcgYXJj
aGl0ZWN0dXJlLAorICAgICAgICB0aG91Z2ggSSBzdXNwZWN0IGl0IGNvdWxkIGJlIGltcHJvdmVk
IGZ1cnRoZXIgKGluIGZ1dHVyZSBwYXRjaGVzKSBieSB0YXJnZXRpbmcgdmFyaW91cyBpbXBsZW1l
bnRhdGlvbiBkZXRhaWxzLAorICAgICAgICBzdWNoIGFzIHRoZSBtZWNoYW5pc20gdXNlZCB0byB3
YWl0IGZvciBuZXcgaXRlbXMgaW4gdGhlIEdQVSBwcm9jZXNzICh0aGUgbmFpdmUgaW1wbGVtZW50
YXRpb24gY3VycmVudGx5IGp1c3QKKyAgICAgICAgY2FsbHMgYHVzbGVlcGAgaW4gYSBsb29wKS4K
KworICAgICAgICBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6YWR2YW5jZSk6CisKKyAgICAgICAgVXBkYXRl
IGBhZHZhbmNlYCBzbyB0aGF0IGl0IGp1c3QgcGVyZm9ybXMgYSBzaW5nbGUgOC1ieXRlIGF0b21p
YyBgZXhjaGFuZ2VTdWJgIHJhdGhlciB0aGFuIGdyYWJiaW5nIGEgc3BpbmxvY2suCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmg6CisgICAg
ICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpIYXNSZWFkZXJGb3JTY29wZTo6
fkhhc1JlYWRlckZvclNjb3BlKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU6Okhhc1JlYWRlckZvclNjb3BlOjpIYXNSZWFkZXJGb3JTY29wZSk6CisgICAgICAgIChX
ZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpjbGFpbVJlYWRlckZvclNjb3BlKToKKwor
ICAgICAgICBNYWtlIHRoZSBHUFUgcHJvY2VzcyBzZXQgYSBiaXQgaW4gdGhlIHNoYXJlZCBkaXNw
bGF5IGxpc3QgYnVmZmVyJ3MgaGVhZGVyIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgYWN0aXZlbHkK
KyAgICAgICAgcmVhZGluZyBkYXRhIGZyb20gdGhpcyBkaXNwbGF5IGxpc3QuIFRoaXMgaXMgbmVj
ZXNzYXJ5IHRvIHByZXZlbnQgdGhlIHdlYiBwcm9jZXNzIGZyb20gcHJlbWF0dXJlbHkgcmVzZXR0
aW5nIHRoZQorICAgICAgICB3cml0ZSBjdXJzb3IgKGBtX3dyaXRhYmxlT2Zmc2V0YCkgb2YgdGhl
IGRpc3BsYXkgbGlzdCBoYW5kbGUgd2hlbiB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50ZXIgaGFzIGRy
b3BwZWQgdG8gMCwgYW5kCisgICAgICAgIHRoZSBHUFUgcHJvY2VzcyBpcyB3YWl0aW5nIGZvciBt
b3JlIGRhdGEgZnJvbSB0aGUgaXRlbSBidWZmZXIuIFByZXZpb3VzbHksIHRoZSBmdW5jdGlvbiB0
byByZXNldCB0aGUgd3JpdGUKKyAgICAgICAgY3Vyc29yIChub3cgcmVuYW1lZCB0byBgbW92ZVdy
aXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGVgKSBvbmx5IGNoZWNrZWQgZm9yIGB1bnJlYWRC
eXRlc2A7IG5vdywgaXQgY29uc3VsdHMKKyAgICAgICAgYm90aCB0aGlzIGZsYWcgYW5kIGB1bnJl
YWRCeXRlc2AuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpu
ZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorCisg
ICAgICAgIFJlbmFtZSBgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlYCB0byBgbmV4dERlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzYCwgYW5kIG1ha2UgaXQK
KyAgICAgICAgcmV0dXJuIHRoZSBjdXJyZW50IGltYWdlIGJ1ZmZlciB0byB1c2UgYXMgdGhlIGRl
c3RpbmF0aW9uIGZvciByZXBsYXlpbmcgZGlzcGxheSBsaXN0IGNvbW1hbmRzLiBUaGlzIGhlbHBl
ciBpcworICAgICAgICBzdGlsbCByZXNwb25zaWJsZSBmb3IgcmVwbGF5aW5nIGEgZGlzcGxheSBs
aXN0IGl0ZW0gYnVmZmVyIHVudGlsIGl0IGhhcyBubyBtb3JlIGRhdGEgKHRoYXQgaXMsIHVudGls
IHdlIGVpdGhlcgorICAgICAgICBlbmNvdW50ZXIgYE1ldGFDb21tYW5kRW5kYCBpdGVtLCBvciBh
IGBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXJgIGl0ZW0gaW5mb3JtaW5nIHVzIG9mIHRoZSBu
ZXh0IGl0ZW0gYnVmZmVyIHRvCisgICAgICAgIGNvbnN1bWUpLgorCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZSk6CisKKyAgICAgICAgQWRqdXN0IHRoZXNlIHRvIGNhbGwgYG5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0c2AuIFdlIGFsc28gbm8g
bG9uZ2VyIG5lZWQgdG8gcGFzcyBpbgorICAgICAgICB0aGUgc3RhcnRpbmcgb2Zmc2V0IGludG8g
dGhlIGJ1ZmZlciwgc2luY2UgZGlzcGxheSBsaXN0cyBub3cgYWx3YXlzIGJlZ2luIGF0IHRoZSBz
dGFydCBvZiBlYWNoIGJ1ZmZlciAoaS5lLgorICAgICAgICBhZnRlciB0aGUgaGVhZGVyKS4KKwor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0
c0Zyb21IYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaDoKKworICAgICAgICBSZW1vdmUgYFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpMb2NrYCBhbHRvZ2V0aGVyLCBub3cgdGhhdCB3ZSBqdXN0IGhhdmUgYSBzaW5nbGUg
YXRvbWljIGB1aW50NjRfdGAgY291bnRlciB0bworICAgICAgICByZXByZXNlbnQgdGhlIG51bWJl
ciBvZiB1bnJlYWQgYnl0ZXMuIEFkZGl0aW9uYWxseSwgYWRkIGEgYGJvb2xgIGZsYWcgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgR1BVIHByb2Nlc3MgaXMKKyAgICAgICAgY3VycmVudGx5IHJlYWRp
bmcgZnJvbSB0aGlzIGl0ZW0gYnVmZmVyIChzZWUgdGhlIGNvbW1lbnQgdW5kZXIgYGNsYWltUmVh
ZGVyRm9yU2NvcGVgIGFib3ZlIGZvciBtb3JlIGRldGFpbHMpLgorCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjp1bnJlYWRCeXRlcyk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrOjpMb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2s6On5Mb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZhbmNl
KToKKworICAgICAgICBNYWtlIHRoaXMgdXNlIHRoZSBzaW5nbGUgYXRvbWljIGNvdW50ZXIsIGlu
c3RlYWQgb2YgZ3JhYmJpbmcgYSBzcGlubG9jay4KKworICAgICAgICAoV2ViS2l0OjpEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTo6bW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6cmVzZXRXcml0YWJsZU9m
ZnNldElmUG9zc2libGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBgcmVzZXRXcml0YWJs
ZU9mZnNldElmUG9zc2libGVgIHRvIHRoZSBtb3JlIGFjY3VyYXRlIGBtb3ZlV3JpdGFibGVPZmZz
ZXRUb1N0YXJ0SWZQb3NzaWJsZWAsIGFuZCBtYWtlIGl0CisgICAgICAgIGFkZGl0aW9uYWxseSBj
aGVjayB0aGUgYGhhc1JlYWRlcmAgZmxhZyBiZWZvcmUgYXR0ZW1wdGluZyB0byBtb3ZlIHRoZSB3
cml0ZSBjdXJzb3IgYmFjayB0byB0aGUgc3RhcnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5kRGlzcGxheUxpc3QpOgorCisgICAgICAgIEFk
ZCBhIGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEgYE1ldGFDb21tYW5kRW5kYCBpdGVtIHRvIHRo
ZSBkaXNwbGF5IGxpc3QuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6Y2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVy
IG1ldGhvZCB0byBhcHBlbmQgYSBgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyYCBpdGVtIHRvIHRoZSBkaXNwbGF5IGxpc3QsIGdpdmVuIHRoZQorICAgICAgICBpZGVudGlm
aWVyIG9mIHRoaXMgbmV4dCBpdGVtIGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpjbGVhckRpc3BsYXlMaXN0KToKKworICAgICAgICBBZGQgYSBoZWxw
ZXIgbWV0aG9kIHRvIGNsZWFyIHRoZSBkaXNwbGF5IGxpc3QsIHN1Y2ggdGhhdCB0aGUgYFJlbW90
ZUltYWdlQnVmZmVyUHJveHlgIHdpbGwgYmUgYXNrZWQgZm9yIGEgbmV3CisgICAgICAgIGJ1ZmZl
ciBoYW5kbGUgdGhlIG5leHQgdGltZSB3ZSBhcHBlbmQgYW4gaXRlbS4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCk6
CisKKyAgICAgICAgTWFrZSB0aGlzIGhpdCB0aGUgbWF4aW11bSBgd2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHlgIGF0dGVtcHQgY291bnQgYW5kICJmYWlsIiBvbmx5IGlmIHRoZSBjYWxsIHRv
CisgICAgICAgIGB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseWAgYWN0dWFsbHkgdGltZXMg
b3V0LiBUaGlzIGNoYW5nZSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgdGhlIHNjZW5hcmlv
IG9mCisgICAgICAgIG11bHRpcGxlIGltYWdlIGJ1ZmZlcnMgc2ltdWx0YW5lb3VzbHkgYXBwZW5k
aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyB3b3JrcyB3aGVuIGFsbCBpbWFnZSBidWZmZXJzIHBlcmZv
cm0gKG5vbi0KKyAgICAgICAgYmxvY2tpbmcpIGZsdXNoZXMgc2ltdWx0YW5lb3VzbHksIGZvbGxv
d2VkIGJ5IGEgc3luYy13YWl0IChibG9ja2luZykgZmx1c2guIEluIHRoaXMgc2l0dWF0aW9uLCB0
aGUgd2ViIHByb2Nlc3MKKyAgICAgICAgbWF5IHJlY2VpdmUgbW9yZSB0aGFuIHRocmVlIGBEaWRG
bHVzaGAgbWVzc2FnZXMgaW4gcmFwaWQgc3VjY2Vzc2lvbiwgY2F1c2luZyBpdCB0byBoaXQgdGhp
cyBtYXhpbXVtIGxpbWl0IG9mIDMKKyAgICAgICAgaW5zdGFudGx5IGFuZCBhdm9pZCB3YWl0aW5n
IGZvciB0aGUgZXhwZWN0ZWQgYERpZEZsdXNoYCBtZXNzYWdlIHRvIGFycml2ZS4KKworICAgICAg
ICBBZGRpdGlvbmFsbHkgcmVuYW1lIHRoaXMgdG8gYG1heGltdW1OdW1iZXJPZlRpbWVvdXRzYCBh
bmQgYG51bWJlck9mVGltZW91dHNgIHRvIHJlZmxlY3QgdGhlIG5ldyBiZWhhdmlvci4KKworICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKworICAgICAgICBSZXNl
dCBgbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoYCBhbmQgYG1fY3VycmVu
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyYCB3aGVuIHRoZSBHUFUKKyAgICAgICAg
cHJvY2VzcyBpcyB0ZXJtaW5hdGVkLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZW5kQ3VycmVudERpc3BsYXlMaXN0KToKKworICAgICAgICBBcHBlbmQg
YSBgTWV0YUNvbW1hbmRFbmRgIGRpc3BsYXkgbGlzdCBpdGVtIHRvIHRoZSBjdXJyZW50IHN0cmVh
bSBvZiBkaXNwbGF5IGxpc3QgZGF0YSwgaW5mb3JtaW5nIHRoZSBHUFUKKyAgICAgICAgcHJvY2Vz
cyB0aGF0IGl0IHNob3VsZCBleHBlY3Qgbm8gbW9yZSBpdGVtcy4gSWRlYWxseSwgdGhpcyBzaG91
bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gbG9uZ2VyIGFueQorICAgICAgICBp
bWFnZSBidWZmZXJzIHdpdGggZGlzcGxheSBsaXN0IGl0ZW1zIHRoYXQgaGF2ZSBub3QgYmVlbiBm
bHVzaGVkLCBidXQgZm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBhbHNvIG5lZWQgdG8gaW52b2tlCisg
ICAgICAgIHRoaXMgYmVmb3JlIG1ha2luZyBhIGNvdXBsZSBvZiBzeW5jIGNhbGxzIHRvIHRoZSBH
UFUgcHJvY2VzcyB0byBhdm9pZCBkZWFkbG9ja2luZy4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVh
dGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJ
bWFnZURhdGEpOgorCisgICAgICAgIEFkZCBhIEZJWE1FIGV4cGxhaW5pbmcgdGhhdCB0aGlzIGNh
bGwgdG8gYGVuZEN1cnJlbnREaXNwbGF5TGlzdGAgaXMgdGVtcG9yYXJ5LCBhbmQgc2hvdWxkIGJl
IHJlbW92ZWQgb25jZSB3ZQorICAgICAgICBtYWtlIGEgZGVkaWNhdGVkIGBHZXRJbWFnZURhdGFg
IGRpc3BsYXkgbGlzdCBpdGVtIGluIGEgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndpbGxXYWl0Rm9yRmx1c2gpOgorCisg
ICAgICAgIFJlbW92ZSB0aGUgaW1hZ2UgYnVmZmVyIGZyb20gYG1faWRlbnRpZmllcnNPZkltYWdl
QnVmZmVyc1BlbmRpbmdGbHVzaGAsIGFuZCBhcHBlbmQgdGhlICJFbmQgb2YgRGlzcGxheSBMaXN0
IgorICAgICAgICBpdGVtIGlmIGl0IHdhcyB0aGUgbGFzdCBpbWFnZSBidWZmZXIgdGhhdCBoYWQg
YSBwZW5kaW5nIGZsdXNoLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6c2V0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgVXBkYXRlIHRo
ZSBjdXJyZW50IGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciAoYG1fY3VycmVudERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJJZGVudGlmaWVyYCkuIElmIHRoaXMgaWRlbnRpZmllcgorICAgICAgICBjaGFu
Z2VkLCB0aGVuIHdlIGFwcGVuZCBhIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJgIGl0ZW0gdG8gdGhlIHByZXZpb3VzIGRlc3RpbmF0aW9uIGJlZm9yZQorICAgICAgICBz
ZXR0aW5nIHRoZSBuZXcgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyLiBXZSBhbHNvIG5lZWQgdG8g
Y2xlYXIgdGhlIG5ldyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIncyBkaXNwbGF5IGxpc3QKKyAg
ICAgICAgYmVmb3JlIHdyaXRpbmcgbmV3IGl0ZW1zLCB0byBwcmV2ZW50IGl0IGZyb20gb3Zlcndy
aXRpbmcgc2hhcmVkIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKToKKworICAgICAgICBJ
bXBsZW1lbnQgYSBuZXcgYEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50YCBob29rIGJ5IGFkdmFuY2lu
ZyB0aGUgY29ycmVzcG9uZGluZyBpdGVtIGJ1ZmZlcidzIHVucmVhZCBjb3VudC4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnNlbmRXYWtldXBNZXNzYWdl
KToKKworICAgICAgICBTcGxpdCBsb2dpYyB0byBzZW5kIHRoZSB3YWtldXAgbWVzc2FnZSBvdXQg
aW50byBhIHNlcGFyYXRlIG1ldGhvZC4gVGhlIHdha2V1cCBtZXNzYWdlIGlzIHNlbnQgdXBvbiBh
ZGRpbmcgdGhlCisgICAgICAgIGluaXRpYWwgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIHRvIGBt
X2lkZW50aWZpZXJzT2ZJbWFnZUJ1ZmZlcnNQZW5kaW5nRmx1c2hgLCBhZnRlciBpdCBoYXMgYmVl
biBlbXB0aWVkLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6ZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUpOgorCisgICAgICAgIFB1bGwgbG9naWMg
dG8gZmluZCBhIHNoYXJlZCBkaXNwbGF5IGxpc3QgaGFuZGxlIHN1aXRhYmxlIGZvciByZXVzZSBp
bnRvIGEgc2VwYXJhdGUgaGVscGVyIG1ldGhvZCwgYW5kIGFkanVzdCBpdAorICAgICAgICBzbyB0
aGF0IGlmIHRoZSBtb3N0IHJlY2VudGx5IHVzZWQgZGlzcGxheSBsaXN0IGhhbmRsZSBoYXMgcnVu
IG91dCBvZiBhdmFpbGFibGUgY2FwYWNpdHksIHdlIG1vdmUgaXQgdG8gdGhlIGVuZAorICAgICAg
ICBvZiB0aGUgcmV1c2UgcXVldWUgYW5kIG9ubHkgcmV1c2UgdGhlIG5ldyBmaXJzdCBzaGFyZWQg
aGFuZGxlIGluIHRoZSBxdWV1ZSBpZiBpdHMgd3JpdGFibGUgb2Zmc2V0IGNhbiBiZSByZXNldC4K
KyAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIEdQVSBwcm9jZXNzIGNhbiBhbHdheXMgY29u
dGludWUgcmVhZGluZyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhIGZyb20gdGhlIHN0YXJ0IG9mIG5l
dyBpdGVtCisgICAgICAgIGJ1ZmZlcnMgLS0gaS5lLiwgd2UgZG9uJ3QgZW5kIHVwIHdpdGggdGhl
IHdlYiBwcm9jZXNzIHdyaXRpbmcgb3V0IGEgc3RyZWFtIG9mIGRpc3BsYXkgbGlzdCBkYXRhIGxp
a2U6CisKKyAgICAgICAgICAgKFN0YXJ0KSBCeXRlcyAoMTYsIDY1NTA0KSBpbiBJdGVtQnVmZmVy
WzFdCisgICAgICAgICAgICAgICAgICAgQnl0ZXMgKDE2LCA2NTUyMCkgaW4gSXRlbUJ1ZmZlclsy
XQorICAgICAgICAgICAgICAgICAgIEJ5dGVzICg2NTUwNCwgNjU1MjApIGluIEl0ZW1CdWZmZXJb
MV0KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0
ZUl0ZW1CdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1cGRhdGVSZXVzYWJsZUhhbmRsZXMpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oOgorCiAyMDIwLTExLTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIENhbGxpbmcgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TT4g
b24gYSBsb29wIGZhaWxzIHdoZW4gbXVsdGlwbGUgTSBtZXNzYWdlcyBhcnJpdmUgc2ltdWx0YW5l
b3VzbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXgg
Y2U2YjBlOWIxOGJkYzdhYWIzODQ0ZDg3MzY2MzY4OTIzOTQwZTIyOC4uZDQ5NDJmY2YwNTRhMTll
NTkxMjFkZjk2MmZlODA4ZDUyMTZlNDlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTkwOSw3ICs5MDksMTQgQEAgdm9pZCBJdGVtQnVmZmVyOjph
cHBlbmRFbmNvZGVkRGF0YShJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50NjRfdCo+KG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1fd3JpdHRlbk51bWJl
ck9mQnl0ZXMpWzFdID0gZGF0YUxlbmd0aDsKICAgICBtZW1jcHkobV93cml0YWJsZUJ1ZmZlci5k
YXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIDIgKiBzaXplb2YodWludDY0X3QpLCBkYXRh
LT5kYXRhQXNVSW50OFB0cigpLCBkYXRhTGVuZ3RoKTsKIAotICAgIG1fd3JpdHRlbk51bWJlck9m
Qnl0ZXMgKz0gYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW07CisgICAgZGlkQXBwZW5k
RGF0YVRvV3JpdGFibGVCdWZmZXIoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0pOwor
fQorCit2b2lkIEl0ZW1CdWZmZXI6OmRpZEFwcGVuZERhdGFUb1dyaXRhYmxlQnVmZmVyKHNpemVf
dCBudW1iZXJPZkJ5dGVzKQoreworICAgIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKz0gbnVtYmVy
T2ZCeXRlczsKKyAgICBpZiAobV93cml0aW5nQ2xpZW50KQorICAgICAgICBtX3dyaXRpbmdDbGll
bnQtPmRpZEFwcGVuZERhdGEobV93cml0YWJsZUJ1ZmZlci5pZGVudGlmaWVyLCBudW1iZXJPZkJ5
dGVzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBjMTBjYzNlNTJhMjBhYjVlYzAyYTU2MDZjZmM4
NDkzMWZmMjEyODZmLi5hOGE1MGNjNjBmOTgzZGJiMmM1YzhiYzQyMzZjY2UyNzBkYjYyNTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC04OSw2ICs4OSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVm
ZmVyKHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2Rl
SXRlbShJdGVtSGFuZGxlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZERh
dGEoSXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdCBudW1iZXJPZkJ5dGVzKSA9IDA7CiB9Owog
CiBjbGFzcyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CkBAIC0xNzEsNiArMTcyLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBjb25zdCBJdGVtQnVmZmVySGFuZGxlcyYgcmVhZE9ubHlCdWZm
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkT25seUJ1ZmZlcnM7IH0KICAgICB2b2lkIGZvckVh
Y2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYpPiYmKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEFwcGVuZERhdGFUb1dyaXRhYmxlQnVm
ZmVyKHNpemVfdCBudW1iZXJPZkJ5dGVzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3dh
cFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kRW5jb2RlZERhdGEoSXRlbUhhbmRsZSk7CkBAIC0xNzksNyAr
MTgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogc3RhcnRPZkl0ZW0gPSAmbV93cml0YWJs
ZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdOwogICAgICAgICBzdGFydE9mSXRl
bVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgbmV3IChz
dGFydE9mSXRlbSArIHNpemVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKLSAgICAgICAgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArPSBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpOworICAgICAgICBkaWRBcHBlbmREYXRhVG9Xcml0
YWJsZUJ1ZmZlcihwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpKTsK
ICAgICB9CiAKICAgICBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCogbV9yZWFkaW5nQ2xpZW50IHsg
bnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNzdj
YmEzMzZkYzViOTRmNGRiMjFkYTY2MTEwN2JkNGMzMmNmNzA4NS4uYTM5ZDcyYmMxOGNjODZlYTY0
MGYxNDViZWM2ZWMxM2FiZDQ4NmMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICB9OwogCisgICAgdm9pZCBmbHVz
aENvbnRleHQoRmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgYXBwZW5kPEZsdXNoQ29udGV4
dD4oaWRlbnRpZmllcik7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRHJhd0dseXBo
c1JlY29yZGVyOwogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTE2NCw4ICsxNjYsOCBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfQogCi0gICAgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7Ci0gICAg
dm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOwogCiAgICAgdm9pZCBhcHBlbmRTdGF0
ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3Bw
CmluZGV4IDRlNGQ0OTFmMGQwOTUzODk2NDNiNDhhMjcwYjI2YWVmMTM3YjdiZmUuLjAwMGIzZDky
N2VlODUwZGYwMmQ2ZDk4NjJiMmQwMWUyM2ExOTQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxl
LmNwcApAQCAtMzEsMTQgKzMxLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzaXpl
X3QgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKIHsKLSAg
ICBhdXRvIGxvY2tlciA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsK
LSAgICBpZiAoTElLRUxZKGFtb3VudCA8PSBoZWFkZXIoKS51bnJlYWRCeXRlcykpCi0gICAgICAg
IHJldHVybiBoZWFkZXIoKS51bnJlYWRCeXRlcyAtPSBhbW91bnQ7Ci0KLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgcmVzdWx0IGluIHRlcm1pbmF0aW5nIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBoZWFkZXIoKS51bnJlYWRCeXRlcyA9IDA7Ci0gICAg
cmV0dXJuIDA7CisgICAgYXV0byBwcmV2aW91c1VucmVhZEJ5dGVzID0gaGVhZGVyKCkudW5yZWFk
Qnl0ZXMuZXhjaGFuZ2VTdWIoYW1vdW50KTsKKyAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNVbnJl
YWRCeXRlcyA8IGFtb3VudCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlc3Vs
dCBpbiB0ZXJtaW5hdGluZyB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHByZXZpb3VzVW5y
ZWFkQnl0ZXMgLSBhbW91bnQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q+IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpkaXNwbGF5TGlzdEZvclJlYWRpbmco
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQmIGNsaWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKaW5kZXggY2I3
MjIzOTc2OTZkYzllMGIwNmU4OWNhYzI1Y2U3MmNiOWE1NzZlMS4uY2EzZThkNWQyNDczYmNmOTRm
NTU2MzBiNWM3NGYwNTgyOWQ3N2RiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKQEAgLTM4LDYg
KzM4LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKSk7CiAgICAg
fQogCisgICAgY2xhc3MgSGFzUmVhZGVyRm9yU2NvcGUgeworICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShIYXNSZWFkZXJGb3JTY29wZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IHB1YmxpYzoKKyAgICAgICAgfkhhc1JlYWRlckZvclNjb3BlKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9oYW5kbGUuaGVhZGVyKCkuaGFzUmVhZGVyLnN0b3JlKGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIERpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlOworCisgICAgICAgIEhhc1JlYWRlckZvclNjb3BlKERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlJiBoYW5kbGUpCisgICAgICAgICAgICA6IG1faGFuZGxlKGhhbmRsZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9oYW5kbGUuaGVhZGVyKCkuaGFzUmVhZGVyLnN0b3JlKHRydWUpOworICAg
ICAgICB9CisKKyAgICAgICAgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmIG1faGFuZGxlOworICAg
IH07CisKKyAgICBIYXNSZWFkZXJGb3JTY29wZSBjbGFpbVJlYWRlckZvclNjb3BlKCkgeyByZXR1
cm4geyAqdGhpcyB9OyB9CisKICAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVy
cmlkZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0PiBkaXNwbGF5TGlzdEZvclJlYWRpbmcoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5
LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDZkZGViMDI3OTI5ZTUwNGY4M2IwYTE4NmM3
ZWVhYjhlNWI5ZDY4NzIuLjAzNWU1MzA2ZjI5NDIyMTVlMTcyYTRjOTRlN2U0Y2VjMGZmNzgwODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTEyOSwzNiArMTI5LDUzIEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgUmVuCiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZm
ZXIobWFrZVJlZigqaW1hZ2VCdWZmZXIpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9u
LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgaGFuZGxlLCBzaXplX3QgaW5pdGlhbE9mZnNldCkK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKEltYWdlQnVmZmVyJiBpbml0
aWFsRGVzdGluYXRpb24sIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUpCiB7CisgICAg
YXV0byBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIoaW5pdGlhbERlc3RpbmF0aW9uKTsKICAgICBh
dXRvIGhhbmRsZVByb3RlY3RvciA9IG1ha2VSZWYoaGFuZGxlKTsKIAotICAgIHNpemVfdCBvZmZz
ZXQgPSBpbml0aWFsT2Zmc2V0OworICAgIGF1dG8gb2Zmc2V0ID0gU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OmhlYWRlclNpemUoKTsKICAgICBzaXplX3Qgc2l6ZVRvUmVhZCA9IDA7CiAKLSAgICBk
byB7Ci0gICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUudW5yZWFkQnl0ZXMoKTsKLSAgICB9IHdo
aWxlICghc2l6ZVRvUmVhZCk7CisgICAgYXV0byByZWFkZXJTY29wZSA9IGhhbmRsZS5jbGFpbVJl
YWRlckZvclNjb3BlKCk7CisgICAgYXV0byB3YWl0Rm9yVW5yZWFkQnl0ZXMgPSBbJl0geworICAg
ICAgICBzaXplX3QgdW5yZWFkQnl0ZXMgPSAwOworICAgICAgICB3aGlsZSAoIXVucmVhZEJ5dGVz
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yZXZlciBoZXJlIHdo
aWxlIHdhaXRpbmcgZm9yIG5ldyBkaXNwbGF5IGxpc3QgaXRlbXMuCisgICAgICAgICAgICAvLyBX
ZSB3aWxsIG5lZWQgc29tZSBtZWNoYW5pc20gaGVyZSB0byBzdG9wIHdhaXRpbmcgYWZ0ZXIgYSBj
ZXJ0YWluIHRpbWUgbGltaXQKKyAgICAgICAgICAgIC8vIGFuZCBjb29yZGluYXRlIHdpdGggdGhl
IHdlYiBwcm9jZXNzIHNvIHRoYXQgd2UgcmVjZWl2ZSBhIG5ldyB3YWtldXAgbWVzc2FnZQorICAg
ICAgICAgICAgLy8gd2hlbiB0aGVyZSBhcmUgbW9yZSBpdGVtcyB0byBiZSBwcm9jZXNzZWQuCisg
ICAgICAgICAgICB1c2xlZXAoOCk7CisgICAgICAgICAgICB1bnJlYWRCeXRlcyA9IGhhbmRsZS51
bnJlYWRCeXRlcygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bnJlYWRCeXRlczsKKyAg
ICB9OworCisgICAgd2hpbGUgKGRlc3RpbmF0aW9uICYmICFtX25leHRJdGVtQnVmZmVyVG9SZWFk
KSB7CisgICAgICAgIGlmICghc2l6ZVRvUmVhZCkKKyAgICAgICAgICAgIHNpemVUb1JlYWQgPSB3
YWl0Rm9yVW5yZWFkQnl0ZXMoKTsKIAotICAgIHdoaWxlIChzaXplVG9SZWFkKSB7CiAgICAgICAg
IGF1dG8gZGlzcGxheUxpc3QgPSBoYW5kbGUuZGlzcGxheUxpc3RGb3JSZWFkaW5nKG9mZnNldCwg
c2l6ZVRvUmVhZCwgKnRoaXMpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWRpc3BsYXlMaXN0KSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRl
IHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoZGVzdGluYXRpb24uaXNBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNw
bGF5TGlzdCgqZGlzcGxheUxpc3QpOworICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0
IHJlc3VsdDsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uLT5pc0FjY2VsZXJhdGVkKCkpCisgICAg
ICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
Jj4oKmRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXImPihkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlciY+KCpkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKwor
ICAgICAgICBzaXplVG9SZWFkID0gaGFuZGxlLmFkdmFuY2UocmVzdWx0Lm51bWJlck9mQnl0ZXNS
ZWFkKTsKIAogICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0gb2Zmc2V0OwotICAg
ICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7CisgICAgICAgIGNoZWNrZWRPZmZzZXQg
Kz0gcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkOwogICAgICAgICBpZiAoVU5MSUtFTFkoY2hlY2tl
ZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEg
bWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCiAgICAgICAgIG9mZnNldCA9IGNoZWNrZWRPZmZzZXQudW5zYWZl
R2V0KCk7CkBAIC0xNjYsMTggKzE4MywyNiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpbwogICAg
ICAgICBpZiAoVU5MSUtFTFkob2Zmc2V0ID4gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSkp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0
ZSB0aGUgd2ViIHByb2Nlc3MuCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6U3RvcFJlcGxh
eVJlYXNvbjo6RW5kT2ZEaXNwbGF5TGlzdCkgeworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBu
dWxscHRyOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplVG9S
ZWFkID0gaGFuZGxlLmFkdmFuY2Uoc2l6ZVRvUmVhZCk7CisgICAgICAgIGlmIChyZXN1bHQucmVh
c29uRm9yU3RvcHBpbmcgPT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlSZWFzb246OkNoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQ
dHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKCpyZXN1bHQubmV4dERl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIpKTsKICAgICB9CisKKyAgICByZXR1cm4gZGVzdGluYXRpb247
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5
TGlzdChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIs
IHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0
aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondh
a2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
IGluaXRpYWxJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRp
b25CdWZmZXJJZGVudGlmaWVyKQogewogICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKFdha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3RTdGFydCwgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdEVuZCk7
Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFn
ZUJ1ZmZlcihkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwotICAgIGlmIChVTkxJS0VMWSgh
aW1hZ2VCdWZmZXIpKSB7CisgICAgYXV0byBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbWFrZVJl
ZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRpb25C
dWZmZXJJZGVudGlmaWVyKSk7CisgICAgaWYgKFVOTElLRUxZKCFkZXN0aW5hdGlvbkltYWdlQnVm
ZmVyKSkgewogICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5h
dGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTkwLDcgKzIxNSwxMiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxl
KCppbWFnZUJ1ZmZlciwgKmluaXRpYWxIYW5kbGUsIGluaXRpYWxPZmZzZXQpOworICAgIGRlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlp
bmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsICppbml0aWFsSGFuZGxlKTsK
KworICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIHdoaWxlIChtX25leHRJ
dGVtQnVmZmVyVG9SZWFkKSB7CiAgICAgICAgIGF1dG8gbmV4dEhhbmRsZSA9IG1fc2hhcmVkRGlz
cGxheUxpc3RIYW5kbGVzLmdldChtX25leHRJdGVtQnVmZmVyVG9SZWFkKTsKQEAgLTE5OSw5ICsy
MjksMTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3Bs
YXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWQKICAgICAgICAgICAgIC8vIElQQyBtZXNz
YWdlIHdpdGggYSBzaGFyZWQgbWVtb3J5IGhhbmRsZSB0byB0aGUgbmV4dCBpdGVtIGJ1ZmZlci4K
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgLy8gT3RoZXJ3aXNlLCBj
b250aW51ZSByZWFkaW5nIHRoZSBuZXh0IGRpc3BsYXkgbGlzdCBpdGVtIGJ1ZmZlciBmcm9tIHRo
ZSBzdGFydC4KICAgICAgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IHsgfTsKLSAgICAgICAg
YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKCppbWFnZUJ1ZmZlciwgKm5leHRIYW5kbGUsIFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCkpOworICAgICAgICBkZXN0aW5hdGlv
bkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlz
cGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCAqbmV4dEhhbmRsZSk7CisKKyAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIH0KIApA
QCAtMjQ2LDcgKzI4Miw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRl
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CCiAKICAgICBpZiAobV9u
ZXh0SXRlbUJ1ZmZlclRvUmVhZCA9PSBpZGVudGlmaWVyKSB7CiAgICAgICAgIG1fbmV4dEl0ZW1C
dWZmZXJUb1JlYWQgPSB7IH07Ci0gICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoaWRl
bnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRp
b25CdWZmZXJJZGVudGlmaWVyKTsKKyAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChp
ZGVudGlmaWVyLCBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKaW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRmNTc1MjQ5NDg5ZDcw
NWM3OC4uYjk1ZDg3NGZkMWM1ZWMxMDM3YjY4Y2VlYzFjZjljOWMxMjliMjAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdm9pZCBhcHBseURpc3BsYXlMaXN0c0Zyb21IYW5k
bGUoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZSYsIHNpemVfdCBvZmZzZXQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdlYkNv
cmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTA0LDcgKzEw
NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2
b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmll
ciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCB3YWtlVXBBbmRB
cHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciBpbml0aWFsSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJl
Y3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lk
IGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lk
IHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCA4ZTI3ZTA0
Zjc3MzgxYTZmYjk5NTczNDJhMjljMjE0NjA3MmVlY2Y4Li44ZGNmZjZkNTY5NzIwNmYyYWVhMGEw
NzQzY2E0Y2MzNmI4NDcyMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbgpAQCAtMjQsNyArMjQsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kIE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0
U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgZW51
bTp1aW50OF90IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAg
IFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCB1aW50NjRfdCBpbml0aWFsT2Zmc2V0LCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVu
dGlmaWVyKQorICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAg
IEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQ
Qzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5h
dGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlIG5hdGl2ZUltYWdlKQogICAg
IERpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uQnVmZmVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZS5oCmluZGV4IDg2NWZhZWRjZGU3MDYzYTg0NDI0MDUwYmJiNzFmYzQ2
ZDAyMmQ1MGIuLmYxMGM1MzQyMWNlZWU5MWVhZmRiZTBlMzQxZjY0OWE1ZGQ3ZTdhOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAtNTAs
MzggKzUwLDEyIEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzKCkKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAq
dGhpcyB9OwotICAgICAgICByZXR1cm4gaGVhZGVyKCkudW5yZWFkQnl0ZXM7CisgICAgICAgIHJl
dHVybiBoZWFkZXIoKS51bnJlYWRCeXRlcy5sb2FkKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBz
aXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBjbGFz
cyBMb2NrIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIExvY2soU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUmIGhhbmRsZSkKLSAgICAgICAgICAgIDogbV9oYW5kbGUoaGFuZGxlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBhdXRvJiBhdG9taWNWYWx1ZSA9IG1faGFuZGxlLmhlYWRlcigpLmxvY2s7Ci0g
ICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIGF2b2lkIHdhaXRpbmcgZm9yZXZlciBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgd2ViIGNv
bnRlbnQgcHJvY2VzcwotICAgICAgICAgICAgICAgIC8vIGhvbGRzIG9uIHRvIHRoZSBsb2NrIGlu
ZGVmaW5pdGVseSAob3IgY3Jhc2hlcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrKS4KLSAgICAgICAg
ICAgICAgICB1aW50NjRfdCB1bmxvY2tlZCA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKGF0b21p
Y1ZhbHVlLmNvbXBhcmVFeGNoYW5nZVdlYWsodW5sb2NrZWQsIDEpKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICB+TG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1faGFuZGxlLmhlYWRlcigpLmxvY2suc3RvcmUoMCk7Ci0gICAgICAgIH0KLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBtX2hhbmRsZTsKLSAgICB9Owot
CiAgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVt
b3J5KQogICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICAgICAsIG1fc2hh
cmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKQEAgLTg5LDggKzYzLDggQEAgcHJvdGVj
dGVkOgogICAgIH0KIAogICAgIHN0cnVjdCBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciB7
Ci0gICAgICAgIEF0b21pYzx1aW50NjRfdD4gbG9jazsKLSAgICAgICAgdWludDY0X3QgdW5yZWFk
Qnl0ZXM7CisgICAgICAgIEF0b21pYzx1aW50NjRfdD4gdW5yZWFkQnl0ZXM7CisgICAgICAgIEF0
b21pYzxib29sPiBoYXNSZWFkZXI7CiAgICAgfTsKIAogICAgIERpc3BsYXlMaXN0U2hhcmVkTWVt
b3J5SGVhZGVyJiBoZWFkZXIoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxEaXNwbGF5TGlz
dFNoYXJlZE1lbW9yeUhlYWRlcio+KGRhdGEoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5jcHAKaW5kZXggZDgyZTNkZmFkZWU4NmViMGQ1NTQxYjI3ODU3NjgyMTg3ZjY1Y2Y4Yi4u
YmVhMDU2OWU0YTE4YWRmMzVjNDBkZWNhOWMzMzk3ZGFlOWNmYTM5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5jcHAKQEAgLTM4LDE0ICszOCwxMyBAQCBzaXplX3QgRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKICAgICBpZiAoVU5MSUtFTFko
Y2hlY2tlZFdyaXRhYmxlT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBhdXRvIGxvY2tlciA9IFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsKLSAgICBDaGVja2VkU2l6ZSBjaGVja2VkVW5yZWFk
Qnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlczsKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gY2hl
Y2tlZFdyaXRhYmxlT2Zmc2V0LnVuc2FmZUdldCgpOworCisgICAgQ2hlY2tlZFNpemUgY2hlY2tl
ZFVucmVhZEJ5dGVzID0gaGVhZGVyKCkudW5yZWFkQnl0ZXMuZXhjaGFuZ2VBZGQoYW1vdW50KTsK
ICAgICBjaGVja2VkVW5yZWFkQnl0ZXMgKz0gYW1vdW50OwogICAgIGlmIChVTkxJS0VMWShjaGVj
a2VkVW5yZWFkQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIAotICAgIG1fd3JpdGFibGVPZmZzZXQgPSBjaGVja2VkV3JpdGFibGVP
ZmZzZXQudW5zYWZlR2V0KCk7Ci0gICAgaGVhZGVyKCkudW5yZWFkQnl0ZXMgPSBjaGVja2VkVW5y
ZWFkQnl0ZXMudW5zYWZlR2V0KCk7CiAgICAgcmV0dXJuIGNoZWNrZWRVbnJlYWRCeXRlcy51bnNh
ZmVHZXQoKTsKIH0KIApAQCAtNjYsMTMgKzY1LDE2IEBAIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SGFuZGxlIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGVIYW5kbGUoKSBjb25zdAogICAg
IH07CiB9CiAKLWJvb2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZz
ZXRJZlBvc3NpYmxlKCkKK2Jvb2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6Om1vdmVXcml0YWJs
ZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCkKIHsKICAgICBpZiAobV93cml0YWJsZU9mZnNldCA8
PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKSB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fd3JpdGFibGVPZmZzZXQgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6Omhl
YWRlclNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlmIChoZWFk
ZXIoKS5oYXNSZWFkZXIubG9hZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAo
dW5yZWFkQnl0ZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmgKaW5kZXggNDRlZWZhYWI0OGY0OTExZmVhZGJlZDU4YWU1N2EyYTYzYjFkOGFk
Ny4uZmM3YTIxNjUzYTBlYjk2ODE5ZWIxYzA5YTlmYzM0NDQ4MWE3Mzk2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90
IHdyaXRhYmxlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV93cml0YWJsZU9mZnNldDsgfQogICAg
IHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0OwogCi0gICAgYm9vbCByZXNldFdyaXRh
YmxlT2Zmc2V0SWZQb3NzaWJsZSgpOworICAgIGJvb2wgbW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFy
dElmUG9zc2libGUoKTsKIAogICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJy
aWRlOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUhh
bmRsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA1MWJkNTcxMjk1
OGFmMTJhMjMxNWQ0MWJhM2QyZDZiOWVkNTdmMmJhLi43NmRiOTcwNTlhZGQ3MGE5MTFjNjM5M2Uz
NTRlMzBiNmVhYzE1NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTExLDYg
KzExMSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3NlbnRGbHVzaElkZW50aWZpZXIg
PT0gdGFyZ2V0Rmx1c2hJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICB2b2lkIGVuZERpc3BsYXlM
aXN0KCkKKyAgICB7CisgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS50ZW1w
bGF0ZSBhcHBlbmQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kRW5kPigpOworICAg
IH0KKworICAgIHZvaWQgY2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbmV4dEltYWdlQnVmZmVyKQorICAgIHsKKyAgICAgICAg
bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihuZXh0
SW1hZ2VCdWZmZXIpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJEaXNwbGF5TGlzdCgpCisgICAg
eworICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuY2xlYXIoKTsKKyAgICB9
CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsK
ICAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQpAQCAtMTM3LDkgKzE1MiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgLy8gV2FpdCBmb3Igb3VyIERpc3BsYXlMaXN0IHRvIGJl
IGZsdXNoZWQgYnV0IGRvIG5vdCBoYW5nLgotICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1heFdhaXRpbmdGbHVzaCA9IDM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbnVtV2FpdGlu
Z0ZsdXNoID0gMDsgbnVtV2FpdGluZ0ZsdXNoIDwgbWF4V2FpdGluZ0ZsdXNoICYmIGhhc1BlbmRp
bmdGbHVzaCgpOyArK251bVdhaXRpbmdGbHVzaCkKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRGlkRmx1c2goKTsKKyAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZUaW1lb3V0cyA9IDM7CisgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mVGltZW91dHMgPSAwOworICAgICAgICB3aGlsZSAobnVtYmVyT2ZUaW1lb3V0
cyA8IG1heGltdW1OdW1iZXJPZlRpbWVvdXRzICYmIGhhc1BlbmRpbmdGbHVzaCgpKSB7CisgICAg
ICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRGlkRmx1
c2goKSkKKyAgICAgICAgICAgICAgICArK251bWJlck9mVGltZW91dHM7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVy
cmlkZQpAQCAtMTUxLDE4ICsxNjksOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQorICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8mIG11dGFibGVUaGlz
ID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpOwotICAgICAgICBh
dXRvJiBkaXNwbGF5TGlzdCA9IG11dGFibGVUaGlzLm1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxp
c3QoKTsKLSAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IG11dGFibGVUaGlzLnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgICAg
IG11dGFibGVUaGlzLm1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOwotICAgICAg
ICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGdldElt
YWdlRGF0YSBpcyBzeW5jaHJvbm91cywgd2hpY2ggbWVhbnMgd2UndmUgYWxyZWFkeSByZWNlaXZl
ZCB0aGUgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQgbWVzc2FnZS4KICAgICAgICAgcmV0
dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXRJbWFnZURhdGEob3V0cHV0Rm9y
bWF0LCBzcmNSZWN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCkBA
IC0xODQsMTQgKzE5MywxOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNoRHJhd2luZ0Nv
bnRleHQoKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgVHJh
Y2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJl
bW90ZUltYWdlQnVmZmVyRW5kKTsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1p
dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2lsbFdhaXRGb3JG
bHVzaChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIHdhaXRGb3JEaWRG
bHVzaFdpdGhUaW1lb3V0KCk7CiAgICAgfQogCiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
QW5kQ29tbWl0KCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpCisgICAgICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8mIGRpc3Bs
YXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwpAQCAtMTk5LDQxICsyMTIs
NDYgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2VudEZs
dXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6Omdl
bmVyYXRlKCk7Ci0gICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIpOwotICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxh
eUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAgbV9pdGVtQ291
bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7
CisgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5mbHVzaENvbnRleHQobV9zZW50
Rmx1c2hJZGVudGlmaWVyKTsKKyAgICAgICAgY2xlYXJEaXNwbGF5TGlzdCgpOwogICAgIH0KIAot
ICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29y
ZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAg
ICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNo
ZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICB9CisKKyAgICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZU
eXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2V0
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcihtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgPT0g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJc0ZpcnN0RGVzdGluYXRpb246OlllcykKKyAg
ICAgICAgICAgIG1fbmVlZHNUb1NlbmRXYWtldXBNZXNzYWdlID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEFwcGVuZERhdGEoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBudW1iZXJPZkJ5dGVzKSBv
dmVycmlkZQogICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJhdGNo
U2l6ZSA9IDUxMjsKLSAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0
LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmICgrK21faXRlbUNvdW50SW5DdXJyZW50RGlzcGxh
eUxpc3QgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIHN1Ym1pdERp
c3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmRpZEFwcGVuZERhdGEoaWRlbnRp
ZmllciwgbnVtYmVyT2ZCeXRlcyk7CisgICAgICAgIGlmIChtX25lZWRzVG9TZW5kV2FrZXVwTWVz
c2FnZSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kV2Fr
ZXVwTWVzc2FnZShpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgfQogCi0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiBp
bWFnZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAobV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVJbWFn
ZShpbWFnZSk7CisgICAgICAgIG1fbmVlZHNUb1NlbmRXYWtldXBNZXNzYWdlID0gZmFsc2U7CisK
KyAgICAgICAgaWYgKHR5cGUgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CiAgICAgfQog
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1
ZmZlcihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAobV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIGlmIChMSUtFTFkobV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LT5jcmVhdGVJdGVtQnVmZmVyKGNhcGFjaXR5LCBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMzYs
MTIgKzM1NCw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgZGlk
QXBwZW5kSXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIGlmICh0eXBlID09IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKQotICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4
dCgpOwotICAgIH0KLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1h
Z2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IHJldHVybiBXVEY6Om1ha2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hl
cjxCYWNrZW5kVHlwZT4+KCp0aGlzKTsKQEAgLTM1OCw2ICszNzAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgZmxvYXQgbV9yZXNvbHV0aW9uU2NhbGU7CiAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZSBtX2Nv
bG9yU3BhY2U7CiAgICAgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgbV9waXhlbEZvcm1hdDsKKyAgICBi
b29sIG1fbmVlZHNUb1NlbmRXYWtldXBNZXNzYWdlIHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEJhY2tlbmRUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCmluZGV4IGU1MmNhNDA3MzVlOTc5ZTM4N2Q4M2QxNGQyN2M0OTY2MTc4ZWNmYzcuLjA4
MmEyYzIyMmVkMDk4MTRjN2VmMjI0MmM0M2EyZGVhNjExMWY0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTk2LDkgKzk2LDExIEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVBy
b2Nlc3NDb25uZWN0CiAgICAgcHJldmlvdXNDb25uZWN0aW9uLnJlbW92ZUNsaWVudCgqdGhpcyk7
CiAKICAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuY2xlYXIoKTsKLSAgICBtX2lk
ZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5jbGVhcigpOwogICAgIG1fc2hh
cmVkRGlzcGxheUxpc3RIYW5kbGVzLmNsZWFyKCk7CiAKKyAgICBtX2lkZW50aWZpZXJzT2ZJbWFn
ZUJ1ZmZlcnNQZW5kaW5nRmx1c2guY2xlYXIoKTsKKyAgICBtX2N1cnJlbnREZXN0aW5hdGlvbklt
YWdlQnVmZmVySWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKwogICAgIHJlZXN0YWJsaXNoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIH0KIApAQCAtMTEyLDggKzExNCwyOSBAQCB1aW50NjRfdCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
OwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZW5kQ3VycmVudERpc3Bs
YXlMaXN0KCkKK3sKKyAgICBpZiAoIW1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIoKm1fY3VycmVudERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKKyAgICAg
ICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZm
ZXIpLmVuZERpc3BsYXlMaXN0KCk7CisgICAgZWxzZQorICAgICAgICBkb3duY2FzdDxVbmFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5lbmREaXNwbGF5TGlz
dCgpOworCisgICAgbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoLmNsZWFy
KCk7CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBXVEY6
Om51bGxvcHQ7Cit9CisKIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9y
SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCiB7CisgICAgLy8gRklYTUU6IFdlIGNhbiBy
ZW1vdmUgdGhpcyBvbmNlIGJhY2tlbmQgY3JlYXRpb24gaXMgbm8gbG9uZ2VyIHN5bmNocm9ub3Vz
LgorICAgIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgpOworCiAgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkPihtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01l
c3NhZ2VBcnJpdmVzKTsKIH0KQEAgLTE0NCwzNSArMTY3LDE0IEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpCiAKIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JiBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogeworICAgIC8vIEZJWE1FOiBXZSBjYW4gcmVtb3ZlIHRoaXMgZWl0
aGVyIG9uY2Ugd2UgaW50cm9kdWNlIGEgR2V0SW1hZ2VEYXRhIGRpc3BsYXkgbGlzdCBpdGVtLgor
ICAgIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgpOworCiAgICAgSVBDOjpJbWFnZURhdGFSZWZlcmVu
Y2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwogICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCAxX3MpOwogICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVy
KCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5
TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQotewotICAg
IE9wdGlvbmFsPHN0ZDo6cGFpcjxEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNp
emVfdD4+IGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlOwotICAgIGJvb2wgaXNG
aXJzdEhhbmRsZSA9IHRydWU7Ci0KLSAgICBkaXNwbGF5TGlzdC5mb3JFYWNoSXRlbUJ1ZmZlcihb
Jl0gKGF1dG8mIGhhbmRsZSkgewotICAgICAgICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxh
YmxlRm9yV3JpdGluZy5hZGQoaGFuZGxlLmlkZW50aWZpZXIpOwotCi0gICAgICAgIGF1dG8qIHNo
YXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChoYW5kbGUuaWRlbnRp
Zmllcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShzaGFyZWRIYW5kbGUs
ICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQgZGlzcGxheSBsaXN0IiwgX19QUkVUVFlfRlVOQ1RJ
T05fXyk7Ci0KLSAgICAgICAgYm9vbCB1bnJlYWRDb3VudFdhc0VtcHR5ID0gc2hhcmVkSGFuZGxl
LT5hZHZhbmNlKGhhbmRsZS5jYXBhY2l0eSkgPT0gaGFuZGxlLmNhcGFjaXR5OwotICAgICAgICBp
ZiAoaXNGaXJzdEhhbmRsZSAmJiB1bnJlYWRDb3VudFdhc0VtcHR5KQotICAgICAgICAgICAgaWRl
bnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2UgPSB7eyBoYW5kbGUuaWRlbnRpZmllciwg
aGFuZGxlLmRhdGEgLSBzaGFyZWRIYW5kbGUtPmRhdGEoKSB9fTsKLQotICAgICAgICBpc0ZpcnN0
SGFuZGxlID0gZmFsc2U7Ci0gICAgfSk7Ci0KLSAgICBpZiAoaWRlbnRpZmllckFuZE9mZnNldEZv
cldha2VVcE1lc3NhZ2UpIHsKLSAgICAgICAgYXV0byBbaWRlbnRpZmllciwgb2Zmc2V0XSA9ICpp
ZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2FnZTsKLSAgICAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChpZGVu
dGlmaWVyLCBvZmZzZXQsIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwotICAgIH0KLX0KLQogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQogewogICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlTmF0aXZlSW1hZ2UobWFr
ZVJlZihpbWFnZSkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKQEAgLTIwNywzNyAr
MjA5LDgzIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRGbHVzaChEaXNw
bGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlCiAgICAgICAgIGRvd25jYXN0PFVuYWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmRpZEZsdXNoKGZs
dXNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1
cGRhdGVSZXVzYWJsZUhhbmRsZXMoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OndpbGxXYWl0Rm9yRmx1c2goUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZh
aWxhYmxlRm9yV3JpdGluZykgewotICAgICAgICBhdXRvKiBoYW5kbGUgPSBtX3NoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlcy5nZXQoaWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaGFuZGxlLT5yZXNl
dFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpKQotICAgICAgICAgICAgY29udGludWU7CisgICAg
aWYgKCFtX2lkZW50aWZpZXJzT2ZJbWFnZUJ1ZmZlcnNQZW5kaW5nRmx1c2gucmVtb3ZlKGlkZW50
aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pZGVudGlmaWVyc09mSW1hZ2VC
dWZmZXJzUGVuZGluZ0ZsdXNoLmlzRW1wdHkoKSkKKyAgICAgICAgZW5kQ3VycmVudERpc3BsYXlM
aXN0KCk7Cit9CiAKLSAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5j
b250YWlucyhpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpJc0ZpcnN0RGVzdGluYXRpb24gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpzZXREZXN0aW5hdGlvbkltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKG1fY3VycmVudERlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyID09IG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuIElzRmlyc3REZXN0aW5hdGlvbjo6Tm87CiAKLSAgICAgICAgbV9pZGVu
dGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0
byBwcmV2aW91c0Rlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciA9IHN0ZDo6ZXhjaGFuZ2UobV9j
dXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIsIG5ld0Rlc3RpbmF0aW9uSWRl
bnRpZmllcikpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcigqcHJldmlvdXNEZXN0aW5hdGlvbkJ1ZmZl
cklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0
ZWQoKSkKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVm
ZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihuZXdE
ZXN0aW5hdGlvbklkZW50aWZpZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZm
ZXIpLmNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIobmV3RGVzdGluYXRpb25JZGVudGlmaWVy
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIobmV3RGVzdGluYXRpb25JZGVu
dGlmaWVyKSkgeworICAgICAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKKyAg
ICAgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmlt
YWdlQnVmZmVyKS5jbGVhckRpc3BsYXlMaXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZm
ZXIpLmNsZWFyRGlzcGxheUxpc3QoKTsKICAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IG1faWRl
bnRpZmllcnNPZkltYWdlQnVmZmVyc1BlbmRpbmdGbHVzaC5pc0VtcHR5KCkgPyBJc0ZpcnN0RGVz
dGluYXRpb246OlllcyA6IElzRmlyc3REZXN0aW5hdGlvbjo6Tm87CisgICAgbV9pZGVudGlmaWVy
c09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoLmFkZChuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLURpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxl
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2Fw
YWNpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50
aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQXBwZW5kRGF0YShE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IG51bWJl
ck9mQnl0ZXMpCiB7Ci0gICAgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CisgICAgYXV0byogc2hh
cmVkSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlkZW50aWZpZXIpOwor
ICAgIGlmIChVTkxJS0VMWSghc2hhcmVkSGFuZGxlKSkKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJGYWlsZWQgdG8gZmluZCBzaGFyZWQgZGlzcGxheSBs
aXN0OiAlbGx1IiwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHdoaWxlICghbV9pZGVu
dGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuZmlyc3QoKTsKLSAgICAgICAg
YXV0byogcmV1c2FibGVIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaWRl
bnRpZmllcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShyZXVzYWJsZUhh
bmRsZSwgIiVzIGZhaWxlZCB0byBmaW5kIHNoYXJlZCBkaXNwbGF5IGxpc3QiLCBfX1BSRVRUWV9G
VU5DVElPTl9fKTsKKyAgICBzaGFyZWRIYW5kbGUtPmFkdmFuY2UobnVtYmVyT2ZCeXRlcyk7Cit9
CiAKLSAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5n
LmNvbnRhaW5zKGlkZW50aWZpZXIpICYmIHJldXNhYmxlSGFuZGxlLT5hdmFpbGFibGVDYXBhY2l0
eSgpID49IGNhcGFjaXR5KSB7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZh
aWxhYmxlRm9yV3JpdGluZy5yZW1vdmUoaWRlbnRpZmllcik7Ci0gICAgICAgICAgICByZXR1cm4g
cmV1c2FibGVIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOwotICAgICAgICB9Cit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZFdha2V1cE1lc3NhZ2UoRGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBk
ZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKK30KIAotICAgICAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMucmVtb3ZlRmly
c3QoKTsKK1JlZlB0cjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpmaW5kUmV1c2FibGVEaXNwbGF5TGlzdEhhbmRsZShzaXplX3QgY2FwYWNpdHkp
Cit7CisgICAgaWYgKFVOTElLRUxZKG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5pc0Vt
cHR5KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gbW9zdFJlY2VudGx5
VXNlZElkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuZmlyc3QoKTsK
KyAgICBhdXRvIGhhbmRsZSA9IG1ha2VSZWZQdHIobV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMu
Z2V0KG1vc3RSZWNlbnRseVVzZWRJZGVudGlmaWVyKSk7CisgICAgaGFuZGxlLT5tb3ZlV3JpdGFi
bGVPZmZzZXRUb1N0YXJ0SWZQb3NzaWJsZSgpOworICAgIGlmIChoYW5kbGUtPmF2YWlsYWJsZUNh
cGFjaXR5KCkgPj0gY2FwYWNpdHkpCisgICAgICAgIHJldHVybiBoYW5kbGU7CisKKyAgICBtX2lk
ZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuYXBwZW5kKG1faWRlbnRpZmllcnNPZlJldXNhYmxl
SGFuZGxlcy50YWtlRmlyc3QoKSk7CisKKyAgICBhdXRvIGxlYXN0UmVjZW50bHlVc2VkSWRlbnRp
ZmllciA9IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5maXJzdCgpOworICAgIGlmIChs
ZWFzdFJlY2VudGx5VXNlZElkZW50aWZpZXIgIT0gbW9zdFJlY2VudGx5VXNlZElkZW50aWZpZXIp
IHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBtYWtlUmVmUHRyKG1fc2hhcmVkRGlzcGxheUxpc3RI
YW5kbGVzLmdldChsZWFzdFJlY2VudGx5VXNlZElkZW50aWZpZXIpKTsKKyAgICAgICAgaWYgKGhh
bmRsZS0+bW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUoKSAmJiBoYW5kbGUtPmF2
YWlsYWJsZUNhcGFjaXR5KCkgPj0gY2FwYWNpdHkpCisgICAgICAgICAgICByZXR1cm4gaGFuZGxl
OwogICAgIH0KIAorICAgIHJldHVybiBudWxscHRyOworfQorCitEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIo
c2l6ZV90IGNhcGFjaXR5LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25C
dWZmZXJJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGhhbmRsZSA9IGZpbmRSZXVzYWJsZURp
c3BsYXlMaXN0SGFuZGxlKGNhcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZS0+Y3JlYXRl
SGFuZGxlKCk7CisKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U2hhcmVkSXRl
bUJ1ZmZlclNpemUgPSAxIDw8IDE2OwogICAgIHN0YXRpY19hc3NlcnQoZGVmYXVsdFNoYXJlZEl0
ZW1CdWZmZXJTaXplID4gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSk7CiAK
QEAgLTI1NCw3ICszMDIsNyBAQCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZQogICAgIGF1dG8gbmV3
SGFuZGxlID0gRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmNyZWF0ZShpZGVudGlmaWVyLCBzaGFy
ZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYXV0byBkaXNwbGF5TGlzdEhhbmRsZSA9
IG5ld0hhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7CiAKLSAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJs
ZUhhbmRsZXMuYXBwZW5kKGlkZW50aWZpZXIpOworICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxl
SGFuZGxlcy5wcmVwZW5kKGlkZW50aWZpZXIpOwogICAgIG1fc2hhcmVkRGlzcGxheUxpc3RIYW5k
bGVzLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG5ld0hhbmRsZSkpOwogCiAgICAgcmV0dXJuIGRp
c3BsYXlMaXN0SGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5k
ZXggOTVmOGQyYjQxMmZiOTFkZjc3YzY4ZjEzNmIwMDc4NmYwMjRkN2UyNi4uZTMzYzllNDY3ZjE4
MzMxMmE5MjE1MmJlZDc0NGEwNmZiZDA3ZTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCkBAIC02NSw2ICs2NSwxMiBAQCBwdWJsaWM6CiAKICAgICBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkmIHJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpIHsgcmV0dXJuIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OyB9CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwor
ICAgIHZvaWQgZGlkQXBwZW5kRGF0YShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIsIHNpemVfdCBudW1iZXJPZkJ5dGVzKTsKKyAgICB2b2lkIHNlbmRXYWtldXBNZXNz
YWdlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGVudW0gY2xhc3MgSXNGaXJzdERl
c3RpbmF0aW9uIHsgTm8sIFllcyB9OworICAgIElzRmlyc3REZXN0aW5hdGlvbiBzZXREZXN0aW5h
dGlvbkltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCB3aWxsV2FpdEZvckZsdXNoKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzYsNyArODIs
NiBAQCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0
aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHN1Ym1pdERpc3BsYXlM
aXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlz
dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVOYXRpdmVJ
bWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291
cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC05MiwxNyArOTcs
MjAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdFRvR1BVUHJvY2VzcygpOwogICAgIHZv
aWQgcmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwotICAgIHZvaWQgdXBkYXRlUmV1
c2FibGVIYW5kbGVzKCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2
b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVz
aElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKKyAg
ICB2b2lkIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgpOworICAgIFJlZlB0cjxEaXNwbGF5TGlzdFdy
aXRlckhhbmRsZT4gZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUoc2l6ZV90IGNhcGFjaXR5
KTsKKwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSB7ICp0aGlzIH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4+IG1fc2hhcmVk
RGlzcGxheUxpc3RIYW5kbGVzOwogICAgIERlcXVlPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzOwotICAgIEhh
c2hTZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBtX2lkZW50
aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZzsKICAgICBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHsgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0Zs
dXNoOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
bV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA3YTI3Y2EwOWM1Y2Y1YmE0NmEwMWM5NDM3ZjRjYWI1ZmQzMjM5ZWM4Li44OWI3
MGE0NjUzN2FhZDk5MjljYWFiMWMzOWVhZDBlNjM2NjcyZWEzIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEt
MjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
bmN1cnJlbnQgZGlzcGxheSBsaXN0c10gUmVtb3ZlIGRpc3BsYXkgbGlzdCBpdGVtIGJhdGNoaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTExLTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBuZXcgZGlzcGxheSBsaXN0IG1l
dGEgY29tbWFuZHMgaW4gcHJlcGFyYXRpb24gZm9yIHdlYmtpdC5vcmcvYi8yMTkwOTEKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcAppbmRleCBlYmQ4NmUzMmUwNjJjYWRmNmE5YjAxYWVkY2M3N2FkOGY2ZTI0NTQzLi42YTg3
MmM3NjM1MjgxODZlNjU3N2VkMGQ0N2ViOGJlMWFjOTMxYjU3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0x
NzMsNyArMTczLDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQog
ICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBX
QVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCisgICAg
ICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50
OF90KiBoYW5kbGVMb2NhdGlvbikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgRVhQRUNU
X0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShk
YXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7CkBAIC0yMDUsNiArMjA1LDggQEAgVEVTVChEaXNw
bGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZpbmRleCksIHNpemVv
ZihzaXplX3QpKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgZGlkQXBwZW5kRGF0YShJdGVt
QnVmZmVySWRlbnRpZmllciwgc2l6ZV90KSBmaW5hbCB7IH0KKwogICAgICAgICBWZWN0b3I8U3Ry
b2tlUGF0aD4mIG1faXRlbXM7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414868</attachid>
            <date>2020-11-25 13:10:10 -0800</date>
            <delta_ts>2020-11-27 12:16:17 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-219091-20201125131009.patch</filename>
            <type>text/plain</type>
            <size>58406</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM1ZmY0ZjY3NTEyY2Jm
YWVlZWM2ZTM4MTE5ZTc1OGIxZWU2YTBhZS4uZTA0YjJmMmU5NDZjYWE2Mzk0Yjk5MTI2NzhlNThm
NTIxMzhjYjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTExLTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBiYXRjaGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmRFbmNvZGVkRGF0YSk6CisKKyAg
ICAgICAgQWRkIGEgbmV3IGBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudGAgbWV0aG9kIHRvIGluZm9y
bSBjbGllbnRzIHdoZW4gbmV3IGJ5dGVzIGFyZSBhcHBlbmRlZCB0byBhbiBpdGVtIGJ1ZmZlciwK
KyAgICAgICAgZ2l2ZW4gdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGJ5dGVzIGFkZGVkIGFuZCB0
aGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSBidWZmZXIgaGFuZGxlLgorCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6ZGlkQXBwZW5kRGF0YVRvV3JpdGFibGVCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
Ojp1bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmZsdXNoQ29udGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciBt
ZXRob2QgdG8gYXBwZW5kIGEgYEZsdXNoQ29udGV4dGAgaXRlbSB2aWEgdGhlIGRpc3BsYXkgbGlz
dCByZWNvcmRlciwgdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgICAgIGFwcHJvcHJpYXRlIHJlY29y
ZGVyIGRlbGVnYXRlIG1ldGhvZHMgYXJlIGludm9rZWQgd2hlbiBhcHBlbmRpbmcgYSAiZmx1c2gg
Y29udGV4dCIgaXRlbS4KKwogMjAyMC0xMS0yMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgbmV3IGRpc3BsYXkgbGlzdCBtZXRhIGNv
bW1hbmRzIGluIHByZXBhcmF0aW9uIGZvciB3ZWJraXQub3JnL2IvMjE5MDkxCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDIzMDc0NWQ3NzFjMmEzN2Y0NGRhNDJmZjE0NDEwOWRiMjZiMDI5NmQuLmZjMzJiMjhkNGQ4YmI0
YjJjNGVlNzk3NWVjMjAxMTc3NDQ1MzY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjA5IEBACisy
MDIwLTExLTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb25jdXJyZW50IGRpc3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBi
YXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5MDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVmYWN0b3JzIHRoZSBleGlzdGluZyBjb25jdXJyZW50IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5n
IG1lY2hhbmlzbSwgc3VjaCB0aGF0IHdlIG5vIGxvbmdlciB1cGRhdGUgdGhlIHVucmVhZAorICAg
ICAgICBieXRlcyBjb3VudCBldmVyeSA1MTIgaXRlbXMgKG9yIHdoZW4gZmx1c2hpbmcgdGhlIGRy
YXdpbmcgY29udGV4dCksIGFuZCBpbnN0ZWFkIHVwZGF0ZSBpdCBldmVyeSB0aW1lIHdlIGFwcGVu
ZAorICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLiBJbiBvcmRlciB0byBhY2hpZXZlIHRo
aXMgd2l0aG91dCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IgbXVsdGlwbGUgZGlzcGxheS1saXN0
IGJhY2tlZAorICAgICAgICBpbWFnZSBidWZmZXJzIHRvIHJlbmRlciBzaW11bHRhbmVvdXNseSwg
d2UgYWxzbyBhZGQgc3VwcG9ydCBmb3Igc3luY2hyb25pemluZyBkaXNwbGF5IGxpc3QgaXRlbXMg
YWNyb3NzCisgICAgICAgIGRpZmZlcmVudCBpbWFnZSBidWZmZXJzIGJ5IHVzaW5nIHRoZSBuZXcg
bWV0YSBjb21tYW5kIGl0ZW1zIGFkZGVkIGluIGJ1ZyAjMjE5MjYyLiBBcyBkZXRhaWxlZCBpbiB0
aGUgQ2hhbmdlTG9nCisgICAgICAgIGZvciB0aGF0IGJ1ZywgYSBzdHJlYW0gb2YgZGlzcGxheSBs
aXN0IGRhdGEgd3JpdHRlbiBieSB0aGUgd2ViIHByb2Nlc3MgYW5kIGNvbnN1bWVkIGJ5IHRoZSBH
UFUgcHJvY2VzcyBpcyBub3cKKyAgICAgICAgc3RydWN0dXJlZCBsaWtlIHNvOgorCisgICAgICAg
IFdha2V1cCBtZXNzYWdlIGluaXRpYXRlcyBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyB3aXRoIElt
YWdlIEJ1ZmZlciBBIGFuZCBJdGVtIEJ1ZmZlciAxCisgICAgICAgICAgICB8CisgICAgICAgICAg
ICB8ICAgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKEIpCisgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
KDIpCisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB2ICAgICAgICAg
ICAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgICAg
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rKworICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICAgIHwgfCBEZXN0aW5hdGlvbiAgICAg
ICAgfCB8IERlc3RpbmF0aW9uICAgICAgICAgICAgICAgICAgfCB8IEl0ZW0gQnVmZmVyIDEKKyAg
ICAgICAgICAgIHwgfCBJbWFnZSBCdWZmZXIgQSAgICAgfCB8IEltYWdlIEJ1ZmZlciBCICAgICAg
ICAgICAgICAgfCB8CisgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKyAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tKyArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IHwgRHN0LiBJbWFnZSAgIHwgfCBE
ZXN0aW5hdGlvbiBJbWFnZSAgICAgfCAgVW51c2VkICAgICAgfCBJdGVtIEJ1ZmZlciAyCisgICAg
ICAgICAgICB8IHwgQnVmZmVyIEIgICAgIHwgfCBCdWZmZXIgQSAgICAgICAgICAgICAgfCAgQ2Fw
YWNpdHkgICAgfAorICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgTWV0YUNvbW1hbmRF
bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIE1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihBKQorCisgICAgICAgIEluIG9yZGVyIHRv
IHdyaXRlIGRpc3BsYXkgbGlzdCBkYXRhIGNvbmZvcm1pbmcgdG8gdGhpcyBmb3JtYXQsIHdlIGFk
ZCBhIG1lY2hhbmlzbSB0byB0aGUgd2ViIHByb2Nlc3MgdGhhdCBrZWVwcworICAgICAgICB0cmFj
ayBvZiB0aGUgImN1cnJlbnQgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIiAoaS5lLiB0aGUgaW1h
Z2UgYnVmZmVyIHRoYXQgaGFzIG1vc3QgcmVjZW50bHkKKyAgICAgICAgYXBwZW5kZWQgYSBkaXNw
bGF5IGxpc3QgaXRlbSkuIFJpZ2h0IGJlZm9yZSB0aGlzIGRlc3RpbmF0aW9uIGlzIGFib3V0IHRv
IGNoYW5nZSwgd2UgYXBwZW5kIGEgbmV3CisgICAgICAgIGBNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJgIGl0ZW0gYmVmb3JlIHByb2NlZWRpbmcgdG8gYXBwZW5kIGRpc3Bs
YXkgbGlzdCBpdGVtcyBmb3IgdGhlIG5ldworICAgICAgICBjdXJyZW50IGRlc3RpbmF0aW9uLiBX
ZSBhbHNvIGtlZXAgdHJhY2sgb2YgYWxsIGltYWdlIGJ1ZmZlcnMgd2l0aCBkaXNwbGF5IGxpc3Qg
ZGF0YSB0aGF0IGhhdmUgbm90IHlldCBiZWVuCisgICAgICAgIGZsdXNoZWQsIHN1Y2ggdGhhdCB3
aGVuIGFsbCBpbWFnZSBidWZmZXJzIGhhdmUgZmluaXNoZWQgZmx1c2hpbmcsIHdlIGFwcGVuZCBh
IGZpbmFsIGBNZXRhQ29tbWFuZEVuZGAgaXRlbS4KKworICAgICAgICBPbiB0aGUgcmVhZGVyIChH
UFUgcHJvY2Vzcykgc2lkZSwgd2UgbWFrZSBzb21lIG1pbm9yIGFkanVzdG1lbnRzIHNvIHRoYXQg
dGhlIG1haW4gZGlzcGxheSBsaXN0IHByb2Nlc3NpbmcgbG9vcAorICAgICAgICBvZiB0aGUgR1BV
IHByb2Nlc3MgaXMgY2FwYWJsZSBvZiBjaGFuZ2luZyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXJz
IHdoaWxlIHByb2Nlc3NpbmcgYSBzdHJlYW0gb2YgZGlzcGxheSBsaXN0CisgICAgICAgIGl0ZW1z
LiBXZSBhZGRpdGlvbmFsbHkgY2hhbmdlIHRoaXMgbWFpbiBsb29wIHNvIHRoYXQgd2UnbGwgd2Fp
dCBmb3IgbW9yZSBkaXNwbGF5IGxpc3QgaXRlbXMgd2hlbiB0aGUgdW5yZWFkCisgICAgICAgIGNv
dW50IGRyb3BzIHRvIHplcm8gcmF0aGVyIHRoYW4gZ29pbmcgdG8gc2xlZXAgaW1tZWRpYXRlbHks
IHVudGlsIHdlIHJlY2VpdmUgYSBgTWV0YUNvbW1hbmRFbmRgIGl0ZW0sIHdoaWNoIHRoZW4KKyAg
ICAgICAgcHJvbXB0cyB1cyB0byBnbyB0byBzbGVlcCBpbiB0aGUgR1BVIHByb2Nlc3MuIFRoZSBw
dXJwb3NlIG9mIHRoaXMgaXMgdG8gYXZvaWQgZXhjZXNzaXZlIHNsZWVwaW5nIGFuZCB3YWtpbmcg
d2hlbgorICAgICAgICBwcm9jZXNzaW5nIGRpc3BsYXkgbGlzdHMgd2l0aCBtYW55IGl0ZW1zLCBz
aW5jZSB0aGUgR1BVIHByb2Nlc3MgdGVuZHMgdG8gZnJlcXVlbnRseSAiY2F0Y2ggdXAiIHRvIHRo
ZSB3ZWIKKyAgICAgICAgcHJvY2VzcyBmb3IgYnJpZWYgbW9tZW50cyB3aGVuIHJ1bm5pbmcgdGhl
IE1vdGlvbk1hcmsgc3VidGVzdHMsIHN1Y2ggYXMgQ2FudmFzIExpbmVzIGFuZCBDYW52YXMgQXJj
cy4KKworICAgICAgICBGcm9tIGxvY2FsIHRlc3RpbmcsIEkgbWVhc3VyZWQgYSBzbGlnaHQgKDIt
MyUpIHByb2dyZXNzaW9uIG9uIGJvdGggTGluZXMgYW5kIEFyY3MgdXNpbmcgdGhpcyBuZXcgYXJj
aGl0ZWN0dXJlLAorICAgICAgICB0aG91Z2ggSSBzdXNwZWN0IGl0IGNvdWxkIGJlIGltcHJvdmVk
IGZ1cnRoZXIgKGluIGZ1dHVyZSBwYXRjaGVzKSBieSB0YXJnZXRpbmcgdmFyaW91cyBpbXBsZW1l
bnRhdGlvbiBkZXRhaWxzLAorICAgICAgICBzdWNoIGFzIHRoZSBtZWNoYW5pc20gdXNlZCB0byB3
YWl0IGZvciBuZXcgaXRlbXMgaW4gdGhlIEdQVSBwcm9jZXNzICh0aGUgbmFpdmUgaW1wbGVtZW50
YXRpb24gY3VycmVudGx5IGp1c3QKKyAgICAgICAgY2FsbHMgYHVzbGVlcGAgaW4gYSBsb29wKS4K
KworICAgICAgICBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6YWR2YW5jZSk6CisKKyAgICAgICAgVXBkYXRl
IGBhZHZhbmNlYCBzbyB0aGF0IGl0IGp1c3QgcGVyZm9ybXMgYSBzaW5nbGUgOC1ieXRlIGF0b21p
YyBgZXhjaGFuZ2VTdWJgIHJhdGhlciB0aGFuIGdyYWJiaW5nIGEgc3BpbmxvY2suCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmg6CisgICAg
ICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpIYXNSZWFkZXJGb3JTY29wZTo6
fkhhc1JlYWRlckZvclNjb3BlKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU6Okhhc1JlYWRlckZvclNjb3BlOjpIYXNSZWFkZXJGb3JTY29wZSk6CisgICAgICAgIChX
ZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpjbGFpbVJlYWRlckZvclNjb3BlKToKKwor
ICAgICAgICBNYWtlIHRoZSBHUFUgcHJvY2VzcyBzZXQgYSBiaXQgaW4gdGhlIHNoYXJlZCBkaXNw
bGF5IGxpc3QgYnVmZmVyJ3MgaGVhZGVyIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgYWN0aXZlbHkK
KyAgICAgICAgcmVhZGluZyBkYXRhIGZyb20gdGhpcyBkaXNwbGF5IGxpc3QuIFRoaXMgaXMgbmVj
ZXNzYXJ5IHRvIHByZXZlbnQgdGhlIHdlYiBwcm9jZXNzIGZyb20gcHJlbWF0dXJlbHkgcmVzZXR0
aW5nIHRoZQorICAgICAgICB3cml0ZSBjdXJzb3IgKGBtX3dyaXRhYmxlT2Zmc2V0YCkgb2YgdGhl
IGRpc3BsYXkgbGlzdCBoYW5kbGUgd2hlbiB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50ZXIgaGFzIGRy
b3BwZWQgdG8gMCwgYW5kCisgICAgICAgIHRoZSBHUFUgcHJvY2VzcyBpcyB3YWl0aW5nIGZvciBt
b3JlIGRhdGEgZnJvbSB0aGUgaXRlbSBidWZmZXIuIFByZXZpb3VzbHksIHRoZSBmdW5jdGlvbiB0
byByZXNldCB0aGUgd3JpdGUKKyAgICAgICAgY3Vyc29yIChub3cgcmVuYW1lZCB0byBgbW92ZVdy
aXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGVgKSBvbmx5IGNoZWNrZWQgZm9yIGB1bnJlYWRC
eXRlc2A7IG5vdywgaXQgY29uc3VsdHMKKyAgICAgICAgYm90aCB0aGlzIGZsYWcgYW5kIGB1bnJl
YWRCeXRlc2AuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpu
ZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorCisg
ICAgICAgIFJlbmFtZSBgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlYCB0byBgbmV4dERlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzYCwgYW5kIG1ha2UgaXQK
KyAgICAgICAgcmV0dXJuIHRoZSBjdXJyZW50IGltYWdlIGJ1ZmZlciB0byB1c2UgYXMgdGhlIGRl
c3RpbmF0aW9uIGZvciByZXBsYXlpbmcgZGlzcGxheSBsaXN0IGNvbW1hbmRzLiBUaGlzIGhlbHBl
ciBpcworICAgICAgICBzdGlsbCByZXNwb25zaWJsZSBmb3IgcmVwbGF5aW5nIGEgZGlzcGxheSBs
aXN0IGl0ZW0gYnVmZmVyIHVudGlsIGl0IGhhcyBubyBtb3JlIGRhdGEgKHRoYXQgaXMsIHVudGls
IHdlIGVpdGhlcgorICAgICAgICBlbmNvdW50ZXIgYE1ldGFDb21tYW5kRW5kYCBpdGVtLCBvciBh
IGBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXJgIGl0ZW0gaW5mb3JtaW5nIHVzIG9mIHRoZSBu
ZXh0IGl0ZW0gYnVmZmVyIHRvCisgICAgICAgIGNvbnN1bWUpLgorCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZSk6CisKKyAgICAgICAgQWRqdXN0IHRoZXNlIHRvIGNhbGwgYG5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0c2AuIFdlIGFsc28gbm8g
bG9uZ2VyIG5lZWQgdG8gcGFzcyBpbgorICAgICAgICB0aGUgc3RhcnRpbmcgb2Zmc2V0IGludG8g
dGhlIGJ1ZmZlciwgc2luY2UgZGlzcGxheSBsaXN0cyBub3cgYWx3YXlzIGJlZ2luIGF0IHRoZSBz
dGFydCBvZiBlYWNoIGJ1ZmZlciAoaS5lLgorICAgICAgICBhZnRlciB0aGUgaGVhZGVyKS4KKwor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0
c0Zyb21IYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaDoKKworICAgICAgICBSZW1vdmUgYFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpMb2NrYCBhbHRvZ2V0aGVyLCBub3cgdGhhdCB3ZSBqdXN0IGhhdmUgYSBzaW5nbGUg
YXRvbWljIGB1aW50NjRfdGAgY291bnRlciB0bworICAgICAgICByZXByZXNlbnQgdGhlIG51bWJl
ciBvZiB1bnJlYWQgYnl0ZXMuIEFkZGl0aW9uYWxseSwgYWRkIGEgYGJvb2xgIGZsYWcgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgR1BVIHByb2Nlc3MgaXMKKyAgICAgICAgY3VycmVudGx5IHJlYWRp
bmcgZnJvbSB0aGlzIGl0ZW0gYnVmZmVyIChzZWUgdGhlIGNvbW1lbnQgdW5kZXIgYGNsYWltUmVh
ZGVyRm9yU2NvcGVgIGFib3ZlIGZvciBtb3JlIGRldGFpbHMpLgorCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjp1bnJlYWRCeXRlcyk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrOjpMb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2s6On5Mb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZhbmNl
KToKKworICAgICAgICBNYWtlIHRoaXMgdXNlIHRoZSBzaW5nbGUgYXRvbWljIGNvdW50ZXIsIGlu
c3RlYWQgb2YgZ3JhYmJpbmcgYSBzcGlubG9jay4KKworICAgICAgICAoV2ViS2l0OjpEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTo6bW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6cmVzZXRXcml0YWJsZU9m
ZnNldElmUG9zc2libGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBgcmVzZXRXcml0YWJs
ZU9mZnNldElmUG9zc2libGVgIHRvIHRoZSBtb3JlIGFjY3VyYXRlIGBtb3ZlV3JpdGFibGVPZmZz
ZXRUb1N0YXJ0SWZQb3NzaWJsZWAsIGFuZCBtYWtlIGl0CisgICAgICAgIGFkZGl0aW9uYWxseSBj
aGVjayB0aGUgYGhhc1JlYWRlcmAgZmxhZyBiZWZvcmUgYXR0ZW1wdGluZyB0byBtb3ZlIHRoZSB3
cml0ZSBjdXJzb3IgYmFjayB0byB0aGUgc3RhcnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5kRGlzcGxheUxpc3QpOgorCisgICAgICAgIEFk
ZCBhIGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEgYE1ldGFDb21tYW5kRW5kYCBpdGVtIHRvIHRo
ZSBkaXNwbGF5IGxpc3QuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6Y2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVy
IG1ldGhvZCB0byBhcHBlbmQgYSBgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyYCBpdGVtIHRvIHRoZSBkaXNwbGF5IGxpc3QsIGdpdmVuIHRoZQorICAgICAgICBpZGVudGlm
aWVyIG9mIHRoaXMgbmV4dCBpdGVtIGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpjbGVhckRpc3BsYXlMaXN0KToKKworICAgICAgICBBZGQgYSBoZWxw
ZXIgbWV0aG9kIHRvIGNsZWFyIHRoZSBkaXNwbGF5IGxpc3QsIHN1Y2ggdGhhdCB0aGUgYFJlbW90
ZUltYWdlQnVmZmVyUHJveHlgIHdpbGwgYmUgYXNrZWQgZm9yIGEgbmV3CisgICAgICAgIGJ1ZmZl
ciBoYW5kbGUgdGhlIG5leHQgdGltZSB3ZSBhcHBlbmQgYW4gaXRlbS4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCk6
CisKKyAgICAgICAgTWFrZSB0aGlzIGhpdCB0aGUgbWF4aW11bSBgd2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHlgIGF0dGVtcHQgY291bnQgYW5kICJmYWlsIiBvbmx5IGlmIHRoZSBjYWxsIHRv
CisgICAgICAgIGB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseWAgYWN0dWFsbHkgdGltZXMg
b3V0LiBUaGlzIGNoYW5nZSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgdGhlIHNjZW5hcmlv
IG9mCisgICAgICAgIG11bHRpcGxlIGltYWdlIGJ1ZmZlcnMgc2ltdWx0YW5lb3VzbHkgYXBwZW5k
aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyB3b3JrcyB3aGVuIGFsbCBpbWFnZSBidWZmZXJzIHBlcmZv
cm0gKG5vbi0KKyAgICAgICAgYmxvY2tpbmcpIGZsdXNoZXMgc2ltdWx0YW5lb3VzbHksIGZvbGxv
d2VkIGJ5IGEgc3luYy13YWl0IChibG9ja2luZykgZmx1c2guIEluIHRoaXMgc2l0dWF0aW9uLCB0
aGUgd2ViIHByb2Nlc3MKKyAgICAgICAgbWF5IHJlY2VpdmUgbW9yZSB0aGFuIHRocmVlIGBEaWRG
bHVzaGAgbWVzc2FnZXMgaW4gcmFwaWQgc3VjY2Vzc2lvbiwgY2F1c2luZyBpdCB0byBoaXQgdGhp
cyBtYXhpbXVtIGxpbWl0IG9mIDMKKyAgICAgICAgaW5zdGFudGx5IGFuZCBhdm9pZCB3YWl0aW5n
IGZvciB0aGUgZXhwZWN0ZWQgYERpZEZsdXNoYCBtZXNzYWdlIHRvIGFycml2ZS4KKworICAgICAg
ICBBZGRpdGlvbmFsbHkgcmVuYW1lIHRoaXMgdG8gYG1heGltdW1OdW1iZXJPZlRpbWVvdXRzYCBh
bmQgYG51bWJlck9mVGltZW91dHNgIHRvIHJlZmxlY3QgdGhlIG5ldyBiZWhhdmlvci4KKworICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKworICAgICAgICBSZXNl
dCBgbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoYCBhbmQgYG1fY3VycmVu
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyYCB3aGVuIHRoZSBHUFUKKyAgICAgICAg
cHJvY2VzcyBpcyB0ZXJtaW5hdGVkLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZW5kQ3VycmVudERpc3BsYXlMaXN0KToKKworICAgICAgICBBcHBlbmQg
YSBgTWV0YUNvbW1hbmRFbmRgIGRpc3BsYXkgbGlzdCBpdGVtIHRvIHRoZSBjdXJyZW50IHN0cmVh
bSBvZiBkaXNwbGF5IGxpc3QgZGF0YSwgaW5mb3JtaW5nIHRoZSBHUFUKKyAgICAgICAgcHJvY2Vz
cyB0aGF0IGl0IHNob3VsZCBleHBlY3Qgbm8gbW9yZSBpdGVtcy4gSWRlYWxseSwgdGhpcyBzaG91
bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gbG9uZ2VyIGFueQorICAgICAgICBp
bWFnZSBidWZmZXJzIHdpdGggZGlzcGxheSBsaXN0IGl0ZW1zIHRoYXQgaGF2ZSBub3QgYmVlbiBm
bHVzaGVkLCBidXQgZm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBhbHNvIG5lZWQgdG8gaW52b2tlCisg
ICAgICAgIHRoaXMgYmVmb3JlIG1ha2luZyBhIGNvdXBsZSBvZiBzeW5jIGNhbGxzIHRvIHRoZSBH
UFUgcHJvY2VzcyB0byBhdm9pZCBkZWFkbG9ja2luZy4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVh
dGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJ
bWFnZURhdGEpOgorCisgICAgICAgIEFkZCBhIEZJWE1FIGV4cGxhaW5pbmcgdGhhdCB0aGlzIGNh
bGwgdG8gYGVuZEN1cnJlbnREaXNwbGF5TGlzdGAgaXMgdGVtcG9yYXJ5LCBhbmQgc2hvdWxkIGJl
IHJlbW92ZWQgb25jZSB3ZQorICAgICAgICBtYWtlIGEgZGVkaWNhdGVkIGBHZXRJbWFnZURhdGFg
IGRpc3BsYXkgbGlzdCBpdGVtIGluIGEgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndpbGxXYWl0Rm9yRmx1c2gpOgorCisg
ICAgICAgIFJlbW92ZSB0aGUgaW1hZ2UgYnVmZmVyIGZyb20gYG1faWRlbnRpZmllcnNPZkltYWdl
QnVmZmVyc1BlbmRpbmdGbHVzaGAsIGFuZCBhcHBlbmQgdGhlICJFbmQgb2YgRGlzcGxheSBMaXN0
IgorICAgICAgICBpdGVtIGlmIGl0IHdhcyB0aGUgbGFzdCBpbWFnZSBidWZmZXIgdGhhdCBoYWQg
YSBwZW5kaW5nIGZsdXNoLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6c2V0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgVXBkYXRlIHRo
ZSBjdXJyZW50IGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciAoYG1fY3VycmVudERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJJZGVudGlmaWVyYCkuIElmIHRoaXMgaWRlbnRpZmllcgorICAgICAgICBjaGFu
Z2VkLCB0aGVuIHdlIGFwcGVuZCBhIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJgIGl0ZW0gdG8gdGhlIHByZXZpb3VzIGRlc3RpbmF0aW9uIGJlZm9yZQorICAgICAgICBz
ZXR0aW5nIHRoZSBuZXcgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyLiBXZSBhbHNvIG5lZWQgdG8g
Y2xlYXIgdGhlIG5ldyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIncyBkaXNwbGF5IGxpc3QKKyAg
ICAgICAgYmVmb3JlIHdyaXRpbmcgbmV3IGl0ZW1zLCB0byBwcmV2ZW50IGl0IGZyb20gb3Zlcndy
aXRpbmcgc2hhcmVkIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKToKKworICAgICAgICBJ
bXBsZW1lbnQgYSBuZXcgYEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50YCBob29rIGJ5IGFkdmFuY2lu
ZyB0aGUgY29ycmVzcG9uZGluZyBpdGVtIGJ1ZmZlcidzIHVucmVhZCBjb3VudC4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnNlbmRXYWtldXBNZXNzYWdl
KToKKworICAgICAgICBTcGxpdCBsb2dpYyB0byBzZW5kIHRoZSB3YWtldXAgbWVzc2FnZSBvdXQg
aW50byBhIHNlcGFyYXRlIG1ldGhvZC4gVGhlIHdha2V1cCBtZXNzYWdlIGlzIHNlbnQgdXBvbiBh
ZGRpbmcgdGhlCisgICAgICAgIGluaXRpYWwgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIHRvIGBt
X2lkZW50aWZpZXJzT2ZJbWFnZUJ1ZmZlcnNQZW5kaW5nRmx1c2hgLCBhZnRlciBpdCBoYXMgYmVl
biBlbXB0aWVkLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6ZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUpOgorCisgICAgICAgIFB1bGwgbG9naWMg
dG8gZmluZCBhIHNoYXJlZCBkaXNwbGF5IGxpc3QgaGFuZGxlIHN1aXRhYmxlIGZvciByZXVzZSBp
bnRvIGEgc2VwYXJhdGUgaGVscGVyIG1ldGhvZCwgYW5kIGFkanVzdCBpdAorICAgICAgICBzbyB0
aGF0IGlmIHRoZSBtb3N0IHJlY2VudGx5IHVzZWQgZGlzcGxheSBsaXN0IGhhbmRsZSBoYXMgcnVu
IG91dCBvZiBhdmFpbGFibGUgY2FwYWNpdHksIHdlIG1vdmUgaXQgdG8gdGhlIGVuZAorICAgICAg
ICBvZiB0aGUgcmV1c2UgcXVldWUgYW5kIG9ubHkgcmV1c2UgdGhlIG5ldyBmaXJzdCBzaGFyZWQg
aGFuZGxlIGluIHRoZSBxdWV1ZSBpZiBpdHMgd3JpdGFibGUgb2Zmc2V0IGNhbiBiZSByZXNldC4K
KyAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIEdQVSBwcm9jZXNzIGNhbiBhbHdheXMgY29u
dGludWUgcmVhZGluZyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhIGZyb20gdGhlIHN0YXJ0IG9mIG5l
dyBpdGVtCisgICAgICAgIGJ1ZmZlcnMgLS0gaS5lLiwgd2UgZG9uJ3QgZW5kIHVwIHdpdGggdGhl
IHdlYiBwcm9jZXNzIHdyaXRpbmcgb3V0IGEgc3RyZWFtIG9mIGRpc3BsYXkgbGlzdCBkYXRhIGxp
a2U6CisKKyAgICAgICAgICAgKFN0YXJ0KSBCeXRlcyAoMTYsIDY1NTA0KSBpbiBJdGVtQnVmZmVy
WzFdCisgICAgICAgICAgICAgICAgICAgQnl0ZXMgKDE2LCA2NTUyMCkgaW4gSXRlbUJ1ZmZlclsy
XQorICAgICAgICAgICAgICAgICAgIEJ5dGVzICg2NTUwNCwgNjU1MjApIGluIEl0ZW1CdWZmZXJb
MV0KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0
ZUl0ZW1CdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1cGRhdGVSZXVzYWJsZUhhbmRsZXMpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oOgorCiAyMDIwLTExLTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIENhbGxpbmcgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TT4g
b24gYSBsb29wIGZhaWxzIHdoZW4gbXVsdGlwbGUgTSBtZXNzYWdlcyBhcnJpdmUgc2ltdWx0YW5l
b3VzbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXgg
Y2U2YjBlOWIxOGJkYzdhYWIzODQ0ZDg3MzY2MzY4OTIzOTQwZTIyOC4uZDQ5NDJmY2YwNTRhMTll
NTkxMjFkZjk2MmZlODA4ZDUyMTZlNDlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTkwOSw3ICs5MDksMTQgQEAgdm9pZCBJdGVtQnVmZmVyOjph
cHBlbmRFbmNvZGVkRGF0YShJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50NjRfdCo+KG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1fd3JpdHRlbk51bWJl
ck9mQnl0ZXMpWzFdID0gZGF0YUxlbmd0aDsKICAgICBtZW1jcHkobV93cml0YWJsZUJ1ZmZlci5k
YXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIDIgKiBzaXplb2YodWludDY0X3QpLCBkYXRh
LT5kYXRhQXNVSW50OFB0cigpLCBkYXRhTGVuZ3RoKTsKIAotICAgIG1fd3JpdHRlbk51bWJlck9m
Qnl0ZXMgKz0gYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW07CisgICAgZGlkQXBwZW5k
RGF0YVRvV3JpdGFibGVCdWZmZXIoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0pOwor
fQorCit2b2lkIEl0ZW1CdWZmZXI6OmRpZEFwcGVuZERhdGFUb1dyaXRhYmxlQnVmZmVyKHNpemVf
dCBudW1iZXJPZkJ5dGVzKQoreworICAgIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKz0gbnVtYmVy
T2ZCeXRlczsKKyAgICBpZiAobV93cml0aW5nQ2xpZW50KQorICAgICAgICBtX3dyaXRpbmdDbGll
bnQtPmRpZEFwcGVuZERhdGEobV93cml0YWJsZUJ1ZmZlci5pZGVudGlmaWVyLCBudW1iZXJPZkJ5
dGVzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBjMTBjYzNlNTJhMjBhYjVlYzAyYTU2MDZjZmM4
NDkzMWZmMjEyODZmLi5hOGE1MGNjNjBmOTgzZGJiMmM1YzhiYzQyMzZjY2UyNzBkYjYyNTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC04OSw2ICs4OSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVm
ZmVyKHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2Rl
SXRlbShJdGVtSGFuZGxlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZERh
dGEoSXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdCBudW1iZXJPZkJ5dGVzKSA9IDA7CiB9Owog
CiBjbGFzcyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CkBAIC0xNzEsNiArMTcyLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBjb25zdCBJdGVtQnVmZmVySGFuZGxlcyYgcmVhZE9ubHlCdWZm
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkT25seUJ1ZmZlcnM7IH0KICAgICB2b2lkIGZvckVh
Y2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYpPiYmKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEFwcGVuZERhdGFUb1dyaXRhYmxlQnVm
ZmVyKHNpemVfdCBudW1iZXJPZkJ5dGVzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3dh
cFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kRW5jb2RlZERhdGEoSXRlbUhhbmRsZSk7CkBAIC0xNzksNyAr
MTgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogc3RhcnRPZkl0ZW0gPSAmbV93cml0YWJs
ZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdOwogICAgICAgICBzdGFydE9mSXRl
bVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgbmV3IChz
dGFydE9mSXRlbSArIHNpemVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKLSAgICAgICAgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArPSBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpOworICAgICAgICBkaWRBcHBlbmREYXRhVG9Xcml0
YWJsZUJ1ZmZlcihwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpKTsK
ICAgICB9CiAKICAgICBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCogbV9yZWFkaW5nQ2xpZW50IHsg
bnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNzdj
YmEzMzZkYzViOTRmNGRiMjFkYTY2MTEwN2JkNGMzMmNmNzA4NS4uYTM5ZDcyYmMxOGNjODZlYTY0
MGYxNDViZWM2ZWMxM2FiZDQ4NmMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICB9OwogCisgICAgdm9pZCBmbHVz
aENvbnRleHQoRmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgYXBwZW5kPEZsdXNoQ29udGV4
dD4oaWRlbnRpZmllcik7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRHJhd0dseXBo
c1JlY29yZGVyOwogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTE2NCw4ICsxNjYsOCBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfQogCi0gICAgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7Ci0gICAg
dm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOwogCiAgICAgdm9pZCBhcHBlbmRTdGF0
ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3Bw
CmluZGV4IDRlNGQ0OTFmMGQwOTUzODk2NDNiNDhhMjcwYjI2YWVmMTM3YjdiZmUuLjAwMGIzZDky
N2VlODUwZGYwMmQ2ZDk4NjJiMmQwMWUyM2ExOTQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxl
LmNwcApAQCAtMzEsMTQgKzMxLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzaXpl
X3QgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKIHsKLSAg
ICBhdXRvIGxvY2tlciA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsK
LSAgICBpZiAoTElLRUxZKGFtb3VudCA8PSBoZWFkZXIoKS51bnJlYWRCeXRlcykpCi0gICAgICAg
IHJldHVybiBoZWFkZXIoKS51bnJlYWRCeXRlcyAtPSBhbW91bnQ7Ci0KLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgcmVzdWx0IGluIHRlcm1pbmF0aW5nIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBoZWFkZXIoKS51bnJlYWRCeXRlcyA9IDA7Ci0gICAg
cmV0dXJuIDA7CisgICAgYXV0byBwcmV2aW91c1VucmVhZEJ5dGVzID0gaGVhZGVyKCkudW5yZWFk
Qnl0ZXMuZXhjaGFuZ2VTdWIoYW1vdW50KTsKKyAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNVbnJl
YWRCeXRlcyA8IGFtb3VudCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlc3Vs
dCBpbiB0ZXJtaW5hdGluZyB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHByZXZpb3VzVW5y
ZWFkQnl0ZXMgLSBhbW91bnQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q+IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpkaXNwbGF5TGlzdEZvclJlYWRpbmco
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQmIGNsaWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKaW5kZXggY2I3
MjIzOTc2OTZkYzllMGIwNmU4OWNhYzI1Y2U3MmNiOWE1NzZlMS4uY2EzZThkNWQyNDczYmNmOTRm
NTU2MzBiNWM3NGYwNTgyOWQ3N2RiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKQEAgLTM4LDYg
KzM4LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKSk7CiAgICAg
fQogCisgICAgY2xhc3MgSGFzUmVhZGVyRm9yU2NvcGUgeworICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShIYXNSZWFkZXJGb3JTY29wZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IHB1YmxpYzoKKyAgICAgICAgfkhhc1JlYWRlckZvclNjb3BlKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9oYW5kbGUuaGVhZGVyKCkuaGFzUmVhZGVyLnN0b3JlKGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIERpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlOworCisgICAgICAgIEhhc1JlYWRlckZvclNjb3BlKERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlJiBoYW5kbGUpCisgICAgICAgICAgICA6IG1faGFuZGxlKGhhbmRsZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9oYW5kbGUuaGVhZGVyKCkuaGFzUmVhZGVyLnN0b3JlKHRydWUpOworICAg
ICAgICB9CisKKyAgICAgICAgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmIG1faGFuZGxlOworICAg
IH07CisKKyAgICBIYXNSZWFkZXJGb3JTY29wZSBjbGFpbVJlYWRlckZvclNjb3BlKCkgeyByZXR1
cm4geyAqdGhpcyB9OyB9CisKICAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVy
cmlkZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0PiBkaXNwbGF5TGlzdEZvclJlYWRpbmcoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5
LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDZkZGViMDI3OTI5ZTUwNGY4M2IwYTE4NmM3
ZWVhYjhlNWI5ZDY4NzIuLjAzNWU1MzA2ZjI5NDIyMTVlMTcyYTRjOTRlN2U0Y2VjMGZmNzgwODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTEyOSwzNiArMTI5LDUzIEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgUmVuCiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZm
ZXIobWFrZVJlZigqaW1hZ2VCdWZmZXIpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9u
LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgaGFuZGxlLCBzaXplX3QgaW5pdGlhbE9mZnNldCkK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKEltYWdlQnVmZmVyJiBpbml0
aWFsRGVzdGluYXRpb24sIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUpCiB7CisgICAg
YXV0byBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIoaW5pdGlhbERlc3RpbmF0aW9uKTsKICAgICBh
dXRvIGhhbmRsZVByb3RlY3RvciA9IG1ha2VSZWYoaGFuZGxlKTsKIAotICAgIHNpemVfdCBvZmZz
ZXQgPSBpbml0aWFsT2Zmc2V0OworICAgIGF1dG8gb2Zmc2V0ID0gU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OmhlYWRlclNpemUoKTsKICAgICBzaXplX3Qgc2l6ZVRvUmVhZCA9IDA7CiAKLSAgICBk
byB7Ci0gICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUudW5yZWFkQnl0ZXMoKTsKLSAgICB9IHdo
aWxlICghc2l6ZVRvUmVhZCk7CisgICAgYXV0byByZWFkZXJTY29wZSA9IGhhbmRsZS5jbGFpbVJl
YWRlckZvclNjb3BlKCk7CisgICAgYXV0byB3YWl0Rm9yVW5yZWFkQnl0ZXMgPSBbJl0geworICAg
ICAgICBzaXplX3QgdW5yZWFkQnl0ZXMgPSAwOworICAgICAgICB3aGlsZSAoIXVucmVhZEJ5dGVz
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yZXZlciBoZXJlIHdo
aWxlIHdhaXRpbmcgZm9yIG5ldyBkaXNwbGF5IGxpc3QgaXRlbXMuCisgICAgICAgICAgICAvLyBX
ZSB3aWxsIG5lZWQgc29tZSBtZWNoYW5pc20gaGVyZSB0byBzdG9wIHdhaXRpbmcgYWZ0ZXIgYSBj
ZXJ0YWluIHRpbWUgbGltaXQKKyAgICAgICAgICAgIC8vIGFuZCBjb29yZGluYXRlIHdpdGggdGhl
IHdlYiBwcm9jZXNzIHNvIHRoYXQgd2UgcmVjZWl2ZSBhIG5ldyB3YWtldXAgbWVzc2FnZQorICAg
ICAgICAgICAgLy8gd2hlbiB0aGVyZSBhcmUgbW9yZSBpdGVtcyB0byBiZSBwcm9jZXNzZWQuCisg
ICAgICAgICAgICB1c2xlZXAoOCk7CisgICAgICAgICAgICB1bnJlYWRCeXRlcyA9IGhhbmRsZS51
bnJlYWRCeXRlcygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bnJlYWRCeXRlczsKKyAg
ICB9OworCisgICAgd2hpbGUgKGRlc3RpbmF0aW9uICYmICFtX25leHRJdGVtQnVmZmVyVG9SZWFk
KSB7CisgICAgICAgIGlmICghc2l6ZVRvUmVhZCkKKyAgICAgICAgICAgIHNpemVUb1JlYWQgPSB3
YWl0Rm9yVW5yZWFkQnl0ZXMoKTsKIAotICAgIHdoaWxlIChzaXplVG9SZWFkKSB7CiAgICAgICAg
IGF1dG8gZGlzcGxheUxpc3QgPSBoYW5kbGUuZGlzcGxheUxpc3RGb3JSZWFkaW5nKG9mZnNldCwg
c2l6ZVRvUmVhZCwgKnRoaXMpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWRpc3BsYXlMaXN0KSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRl
IHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoZGVzdGluYXRpb24uaXNBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNw
bGF5TGlzdCgqZGlzcGxheUxpc3QpOworICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0
IHJlc3VsdDsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uLT5pc0FjY2VsZXJhdGVkKCkpCisgICAg
ICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
Jj4oKmRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXImPihkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlciY+KCpkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKwor
ICAgICAgICBzaXplVG9SZWFkID0gaGFuZGxlLmFkdmFuY2UocmVzdWx0Lm51bWJlck9mQnl0ZXNS
ZWFkKTsKIAogICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0gb2Zmc2V0OwotICAg
ICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7CisgICAgICAgIGNoZWNrZWRPZmZzZXQg
Kz0gcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkOwogICAgICAgICBpZiAoVU5MSUtFTFkoY2hlY2tl
ZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEg
bWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCiAgICAgICAgIG9mZnNldCA9IGNoZWNrZWRPZmZzZXQudW5zYWZl
R2V0KCk7CkBAIC0xNjYsMTggKzE4MywyNiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpbwogICAg
ICAgICBpZiAoVU5MSUtFTFkob2Zmc2V0ID4gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSkp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0
ZSB0aGUgd2ViIHByb2Nlc3MuCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6U3RvcFJlcGxh
eVJlYXNvbjo6RW5kT2ZEaXNwbGF5TGlzdCkgeworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBu
dWxscHRyOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplVG9S
ZWFkID0gaGFuZGxlLmFkdmFuY2Uoc2l6ZVRvUmVhZCk7CisgICAgICAgIGlmIChyZXN1bHQucmVh
c29uRm9yU3RvcHBpbmcgPT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlSZWFzb246OkNoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQ
dHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKCpyZXN1bHQubmV4dERl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIpKTsKICAgICB9CisKKyAgICByZXR1cm4gZGVzdGluYXRpb247
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5
TGlzdChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIs
IHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0
aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondh
a2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
IGluaXRpYWxJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRp
b25CdWZmZXJJZGVudGlmaWVyKQogewogICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKFdha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3RTdGFydCwgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdEVuZCk7
Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFn
ZUJ1ZmZlcihkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwotICAgIGlmIChVTkxJS0VMWSgh
aW1hZ2VCdWZmZXIpKSB7CisgICAgYXV0byBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbWFrZVJl
ZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRpb25C
dWZmZXJJZGVudGlmaWVyKSk7CisgICAgaWYgKFVOTElLRUxZKCFkZXN0aW5hdGlvbkltYWdlQnVm
ZmVyKSkgewogICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5h
dGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTkwLDcgKzIxNSwxMiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxl
KCppbWFnZUJ1ZmZlciwgKmluaXRpYWxIYW5kbGUsIGluaXRpYWxPZmZzZXQpOworICAgIGRlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlp
bmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsICppbml0aWFsSGFuZGxlKTsK
KworICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIHdoaWxlIChtX25leHRJ
dGVtQnVmZmVyVG9SZWFkKSB7CiAgICAgICAgIGF1dG8gbmV4dEhhbmRsZSA9IG1fc2hhcmVkRGlz
cGxheUxpc3RIYW5kbGVzLmdldChtX25leHRJdGVtQnVmZmVyVG9SZWFkKTsKQEAgLTE5OSw5ICsy
MjksMTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3Bs
YXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWQKICAgICAgICAgICAgIC8vIElQQyBtZXNz
YWdlIHdpdGggYSBzaGFyZWQgbWVtb3J5IGhhbmRsZSB0byB0aGUgbmV4dCBpdGVtIGJ1ZmZlci4K
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgLy8gT3RoZXJ3aXNlLCBj
b250aW51ZSByZWFkaW5nIHRoZSBuZXh0IGRpc3BsYXkgbGlzdCBpdGVtIGJ1ZmZlciBmcm9tIHRo
ZSBzdGFydC4KICAgICAgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IHsgfTsKLSAgICAgICAg
YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKCppbWFnZUJ1ZmZlciwgKm5leHRIYW5kbGUsIFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCkpOworICAgICAgICBkZXN0aW5hdGlv
bkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlz
cGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCAqbmV4dEhhbmRsZSk7CisKKyAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIH0KIApA
QCAtMjQ2LDcgKzI4Miw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRl
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CCiAKICAgICBpZiAobV9u
ZXh0SXRlbUJ1ZmZlclRvUmVhZCA9PSBpZGVudGlmaWVyKSB7CiAgICAgICAgIG1fbmV4dEl0ZW1C
dWZmZXJUb1JlYWQgPSB7IH07Ci0gICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoaWRl
bnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRp
b25CdWZmZXJJZGVudGlmaWVyKTsKKyAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChp
ZGVudGlmaWVyLCBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKaW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRmNTc1MjQ5NDg5ZDcw
NWM3OC4uYjk1ZDg3NGZkMWM1ZWMxMDM3YjY4Y2VlYzFjZjljOWMxMjliMjAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdm9pZCBhcHBseURpc3BsYXlMaXN0c0Zyb21IYW5k
bGUoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZSYsIHNpemVfdCBvZmZzZXQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdlYkNv
cmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTA0LDcgKzEw
NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2
b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmll
ciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCB3YWtlVXBBbmRB
cHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciBpbml0aWFsSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJl
Y3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lk
IGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lk
IHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCA4ZTI3ZTA0
Zjc3MzgxYTZmYjk5NTczNDJhMjljMjE0NjA3MmVlY2Y4Li44ZGNmZjZkNTY5NzIwNmYyYWVhMGEw
NzQzY2E0Y2MzNmI4NDcyMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbgpAQCAtMjQsNyArMjQsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kIE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0
U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgZW51
bTp1aW50OF90IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAg
IFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCB1aW50NjRfdCBpbml0aWFsT2Zmc2V0LCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVu
dGlmaWVyKQorICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAg
IEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQ
Qzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5h
dGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlIG5hdGl2ZUltYWdlKQogICAg
IERpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uQnVmZmVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZS5oCmluZGV4IDg2NWZhZWRjZGU3MDYzYTg0NDI0MDUwYmJiNzFmYzQ2
ZDAyMmQ1MGIuLmYxMGM1MzQyMWNlZWU5MWVhZmRiZTBlMzQxZjY0OWE1ZGQ3ZTdhOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAtNTAs
MzggKzUwLDEyIEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzKCkKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAq
dGhpcyB9OwotICAgICAgICByZXR1cm4gaGVhZGVyKCkudW5yZWFkQnl0ZXM7CisgICAgICAgIHJl
dHVybiBoZWFkZXIoKS51bnJlYWRCeXRlcy5sb2FkKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBz
aXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBjbGFz
cyBMb2NrIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIExvY2soU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUmIGhhbmRsZSkKLSAgICAgICAgICAgIDogbV9oYW5kbGUoaGFuZGxlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBhdXRvJiBhdG9taWNWYWx1ZSA9IG1faGFuZGxlLmhlYWRlcigpLmxvY2s7Ci0g
ICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIGF2b2lkIHdhaXRpbmcgZm9yZXZlciBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgd2ViIGNv
bnRlbnQgcHJvY2VzcwotICAgICAgICAgICAgICAgIC8vIGhvbGRzIG9uIHRvIHRoZSBsb2NrIGlu
ZGVmaW5pdGVseSAob3IgY3Jhc2hlcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrKS4KLSAgICAgICAg
ICAgICAgICB1aW50NjRfdCB1bmxvY2tlZCA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKGF0b21p
Y1ZhbHVlLmNvbXBhcmVFeGNoYW5nZVdlYWsodW5sb2NrZWQsIDEpKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICB+TG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1faGFuZGxlLmhlYWRlcigpLmxvY2suc3RvcmUoMCk7Ci0gICAgICAgIH0KLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBtX2hhbmRsZTsKLSAgICB9Owot
CiAgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVt
b3J5KQogICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICAgICAsIG1fc2hh
cmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKQEAgLTg5LDggKzYzLDggQEAgcHJvdGVj
dGVkOgogICAgIH0KIAogICAgIHN0cnVjdCBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciB7
Ci0gICAgICAgIEF0b21pYzx1aW50NjRfdD4gbG9jazsKLSAgICAgICAgdWludDY0X3QgdW5yZWFk
Qnl0ZXM7CisgICAgICAgIEF0b21pYzx1aW50NjRfdD4gdW5yZWFkQnl0ZXM7CisgICAgICAgIEF0
b21pYzxib29sPiBoYXNSZWFkZXI7CiAgICAgfTsKIAogICAgIERpc3BsYXlMaXN0U2hhcmVkTWVt
b3J5SGVhZGVyJiBoZWFkZXIoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxEaXNwbGF5TGlz
dFNoYXJlZE1lbW9yeUhlYWRlcio+KGRhdGEoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5jcHAKaW5kZXggZDgyZTNkZmFkZWU4NmViMGQ1NTQxYjI3ODU3NjgyMTg3ZjY1Y2Y4Yi4u
YmVhMDU2OWU0YTE4YWRmMzVjNDBkZWNhOWMzMzk3ZGFlOWNmYTM5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5jcHAKQEAgLTM4LDE0ICszOCwxMyBAQCBzaXplX3QgRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKICAgICBpZiAoVU5MSUtFTFko
Y2hlY2tlZFdyaXRhYmxlT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBhdXRvIGxvY2tlciA9IFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsKLSAgICBDaGVja2VkU2l6ZSBjaGVja2VkVW5yZWFk
Qnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlczsKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gY2hl
Y2tlZFdyaXRhYmxlT2Zmc2V0LnVuc2FmZUdldCgpOworCisgICAgQ2hlY2tlZFNpemUgY2hlY2tl
ZFVucmVhZEJ5dGVzID0gaGVhZGVyKCkudW5yZWFkQnl0ZXMuZXhjaGFuZ2VBZGQoYW1vdW50KTsK
ICAgICBjaGVja2VkVW5yZWFkQnl0ZXMgKz0gYW1vdW50OwogICAgIGlmIChVTkxJS0VMWShjaGVj
a2VkVW5yZWFkQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIAotICAgIG1fd3JpdGFibGVPZmZzZXQgPSBjaGVja2VkV3JpdGFibGVP
ZmZzZXQudW5zYWZlR2V0KCk7Ci0gICAgaGVhZGVyKCkudW5yZWFkQnl0ZXMgPSBjaGVja2VkVW5y
ZWFkQnl0ZXMudW5zYWZlR2V0KCk7CiAgICAgcmV0dXJuIGNoZWNrZWRVbnJlYWRCeXRlcy51bnNh
ZmVHZXQoKTsKIH0KIApAQCAtNjYsMTMgKzY1LDE2IEBAIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SGFuZGxlIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGVIYW5kbGUoKSBjb25zdAogICAg
IH07CiB9CiAKLWJvb2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZz
ZXRJZlBvc3NpYmxlKCkKK2Jvb2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6Om1vdmVXcml0YWJs
ZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCkKIHsKICAgICBpZiAobV93cml0YWJsZU9mZnNldCA8
PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKSB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fd3JpdGFibGVPZmZzZXQgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6Omhl
YWRlclNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlmIChoZWFk
ZXIoKS5oYXNSZWFkZXIubG9hZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAo
dW5yZWFkQnl0ZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmgKaW5kZXggNDRlZWZhYWI0OGY0OTExZmVhZGJlZDU4YWU1N2EyYTYzYjFkOGFk
Ny4uZmM3YTIxNjUzYTBlYjk2ODE5ZWIxYzA5YTlmYzM0NDQ4MWE3Mzk2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90
IHdyaXRhYmxlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV93cml0YWJsZU9mZnNldDsgfQogICAg
IHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0OwogCi0gICAgYm9vbCByZXNldFdyaXRh
YmxlT2Zmc2V0SWZQb3NzaWJsZSgpOworICAgIGJvb2wgbW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFy
dElmUG9zc2libGUoKTsKIAogICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJy
aWRlOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUhh
bmRsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA1MWJkNTcxMjk1
OGFmMTJhMjMxNWQ0MWJhM2QyZDZiOWVkNTdmMmJhLi44ZDUzOGE5ZDlmNzRkZDA2NDExNzNkZWIy
MWRmM2RkZmNmMWJjYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTExLDYg
KzExMSwyNCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3NlbnRGbHVzaElkZW50aWZpZXIg
PT0gdGFyZ2V0Rmx1c2hJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICB2b2lkIGVuZERpc3BsYXlM
aXN0KCkKKyAgICB7CisgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS50ZW1w
bGF0ZSBhcHBlbmQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kRW5kPigpOworICAg
IH0KKworICAgIHZvaWQgY2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbmV4dEltYWdlQnVmZmVyKQorICAgIHsKKyAgICAgICAg
Ym9vbCB3YXNFbXB0eSA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS5pc0VtcHR5KCk7
CisgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS50ZW1wbGF0ZSBhcHBlbmQ8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcj4obmV4dEltYWdlQnVmZmVyKTsKKyAgICAgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICAg
ICAgY2xlYXJEaXNwbGF5TGlzdCgpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJEaXNwbGF5TGlz
dCgpCisgICAgeworICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuY2xlYXIo
KTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKICAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQpAQCAtMTM3LDkgKzE1NSwxMiBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gV2FpdCBmb3Igb3VyIERpc3BsYXlM
aXN0IHRvIGJlIGZsdXNoZWQgYnV0IGRvIG5vdCBoYW5nLgotICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIG1heFdhaXRpbmdGbHVzaCA9IDM7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
bnVtV2FpdGluZ0ZsdXNoID0gMDsgbnVtV2FpdGluZ0ZsdXNoIDwgbWF4V2FpdGluZ0ZsdXNoICYm
IGhhc1BlbmRpbmdGbHVzaCgpOyArK251bVdhaXRpbmdGbHVzaCkKLSAgICAgICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRGlkRmx1c2goKTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZUaW1lb3V0cyA9IDM7CisgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mVGltZW91dHMgPSAwOworICAgICAgICB3aGlsZSAobnVtYmVy
T2ZUaW1lb3V0cyA8IG1heGltdW1OdW1iZXJPZlRpbWVvdXRzICYmIGhhc1BlbmRpbmdGbHVzaCgp
KSB7CisgICAgICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0
Rm9yRGlkRmx1c2goKSkKKyAgICAgICAgICAgICAgICArK251bWJlck9mVGltZW91dHM7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBj
b25zdCBvdmVycmlkZQpAQCAtMTUxLDE4ICsxNzIsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3Qp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KQorICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8mIG11
dGFibGVUaGlzID0gY29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpOwot
ICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG11dGFibGVUaGlzLm1fZHJhd2luZ0NvbnRleHQu
ZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIG11dGFibGVUaGlzLnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAg
ICAgICAgICAgIG11dGFibGVUaGlzLm1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAw
OwotICAgICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIGdldEltYWdlRGF0YSBpcyBzeW5jaHJvbm91cywgd2hpY2ggbWVhbnMgd2UndmUgYWxyZWFk
eSByZWNlaXZlZCB0aGUgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQgbWVzc2FnZS4KICAg
ICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXRJbWFnZURhdGEo
b3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgfQogCkBAIC0xODQsMTQgKzE5NiwxOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNo
RHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCisgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0
LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4
dEFuZENvbW1pdCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2ls
bFdhaXRGb3JGbHVzaChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIHdh
aXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KCk7CiAgICAgfQogCiAgICAgdm9pZCBmbHVzaERyYXdp
bmdDb250ZXh0QW5kQ29tbWl0KCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICghbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1
dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwpAQCAtMTk5
LDQxICsyMTUsNDYgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50
aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIp
OwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxp
c3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAg
bV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIGRpc3BsYXlMaXN0
LmNsZWFyKCk7CisgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5mbHVzaENvbnRl
eHQobV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKKyAgICAgICAgY2xlYXJEaXNwbGF5TGlzdCgpOwog
ICAgIH0KIAotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
aWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5TGlzdC5pc0VtcHR5
KCkpCisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkoKS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICB9CisKKyAgICB2b2lkIHdpbGxBcHBl
bmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS0+c2V0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcihtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikgPT0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJc0ZpcnN0RGVzdGluYXRpb246
OlllcykKKyAgICAgICAgICAgIG1fbmVlZHNUb1NlbmRXYWtldXBNZXNzYWdlID0gdHJ1ZTsKICAg
ICB9CiAKLSAgICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEFwcGVuZERhdGEoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBudW1iZXJP
ZkJ5dGVzKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5
TGlzdEJhdGNoU2l6ZSA9IDUxMjsKLSAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdp
bmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmICgrK21faXRlbUNvdW50SW5DdXJy
ZW50RGlzcGxheUxpc3QgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKKyAgICAgICAgaWYgKFVOTElL
RUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAg
IHN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgZGlzcGxheUxpc3QuY2xl
YXIoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmRpZEFwcGVuZERh
dGEoaWRlbnRpZmllciwgbnVtYmVyT2ZCeXRlcyk7CisgICAgICAgIGlmIChtX25lZWRzVG9TZW5k
V2FrZXVwTWVzc2FnZSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LT5zZW5kV2FrZXVwTWVzc2FnZShpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgfQogCi0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2
ZUltYWdlJiBpbWFnZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUpIG92ZXJyaWRlCiAgICAgewotICAgICAg
ICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVO
YXRpdmVJbWFnZShpbWFnZSk7CisgICAgICAgIG1fbmVlZHNUb1NlbmRXYWtldXBNZXNzYWdlID0g
ZmFsc2U7CisKKyAgICAgICAgaWYgKHR5cGUgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7
CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3Jl
YXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBp
ZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIGlmIChMSUtFTFkobV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5jcmVhdGVJdGVtQnVmZmVyKGNhcGFjaXR5LCBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0zMzYsMTIgKzM1Nyw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAg
IHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUg
dHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmICh0eXBlID09IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKQotICAgICAgICAgICAgZmx1c2hEcmF3
aW5nQ29udGV4dCgpOwotICAgIH0KLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJl
YWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIHJldHVybiBXVEY6Om1ha2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVm
ZmVyRmx1c2hlcjxCYWNrZW5kVHlwZT4+KCp0aGlzKTsKQEAgLTM1OCw2ICszNzMsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgZmxvYXQgbV9yZXNvbHV0aW9uU2NhbGU7CiAgICAgV2ViQ29yZTo6Q29sb3JT
cGFjZSBtX2NvbG9yU3BhY2U7CiAgICAgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgbV9waXhlbEZvcm1h
dDsKKyAgICBib29sIG1fbmVlZHNUb1NlbmRXYWtldXBNZXNzYWdlIHsgZmFsc2UgfTsKIH07CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCmluZGV4IGU1MmNhNDA3MzVlOTc5ZTM4N2Q4M2QxNGQyN2M0OTY2MTc4
ZWNmYzcuLjA4MmEyYzIyMmVkMDk4MTRjN2VmMjI0MmM0M2EyZGVhNjExMWY0MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTk2LDkgKzk2LDExIEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENs
b3NlKEdQVVByb2Nlc3NDb25uZWN0CiAgICAgcHJldmlvdXNDb25uZWN0aW9uLnJlbW92ZUNsaWVu
dCgqdGhpcyk7CiAKICAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuY2xlYXIoKTsK
LSAgICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5jbGVhcigpOwog
ICAgIG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmNsZWFyKCk7CiAKKyAgICBtX2lkZW50aWZp
ZXJzT2ZJbWFnZUJ1ZmZlcnNQZW5kaW5nRmx1c2guY2xlYXIoKTsKKyAgICBtX2N1cnJlbnREZXN0
aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKwogICAgIHJlZXN0
YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIH0KIApAQCAtMTEyLDggKzExNCwyOSBAQCB1
aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50
b1VJbnQ2NCgpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZW5kQ3Vy
cmVudERpc3BsYXlMaXN0KCkKK3sKKyAgICBpZiAoIW1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIoKm1fY3VycmVu
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQo
KSkKKyAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Pigq
aW1hZ2VCdWZmZXIpLmVuZERpc3BsYXlMaXN0KCk7CisgICAgZWxzZQorICAgICAgICBkb3duY2Fz
dDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5lbmRE
aXNwbGF5TGlzdCgpOworCisgICAgbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0Zs
dXNoLmNsZWFyKCk7CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgPSBXVEY6Om51bGxvcHQ7Cit9CisKIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpCiB7CisgICAgLy8gRklYTUU6
IFdlIGNhbiByZW1vdmUgdGhpcyBvbmNlIGJhY2tlbmQgY3JlYXRpb24gaXMgbm8gbG9uZ2VyIHN5
bmNocm9ub3VzLgorICAgIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgpOworCiAgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogICAgIHJldHVybiBjb25uZWN0aW9u
LT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkPihtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGlu
Z0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KQEAgLTE0NCwzNSArMTY3LDE0IEBAIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpCiAKIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogeworICAgIC8vIEZJWE1FOiBXZSBjYW4gcmVtb3Zl
IHRoaXMgZWl0aGVyIG9uY2Ugd2UgaW50cm9kdWNlIGEgR2V0SW1hZ2VEYXRhIGRpc3BsYXkgbGlz
dCBpdGVtLgorICAgIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgpOworCiAgICAgSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwogICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MpOwogICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVu
Y2UuYnVmZmVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJt
aXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVy
KQotewotICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIsIHNpemVfdD4+IGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlOwotICAg
IGJvb2wgaXNGaXJzdEhhbmRsZSA9IHRydWU7Ci0KLSAgICBkaXNwbGF5TGlzdC5mb3JFYWNoSXRl
bUJ1ZmZlcihbJl0gKGF1dG8mIGhhbmRsZSkgewotICAgICAgICBtX2lkZW50aWZpZXJzT2ZIYW5k
bGVzQXZhaWxhYmxlRm9yV3JpdGluZy5hZGQoaGFuZGxlLmlkZW50aWZpZXIpOwotCi0gICAgICAg
IGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChoYW5k
bGUuaWRlbnRpZmllcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShzaGFy
ZWRIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQgZGlzcGxheSBsaXN0IiwgX19QUkVU
VFlfRlVOQ1RJT05fXyk7Ci0KLSAgICAgICAgYm9vbCB1bnJlYWRDb3VudFdhc0VtcHR5ID0gc2hh
cmVkSGFuZGxlLT5hZHZhbmNlKGhhbmRsZS5jYXBhY2l0eSkgPT0gaGFuZGxlLmNhcGFjaXR5Owot
ICAgICAgICBpZiAoaXNGaXJzdEhhbmRsZSAmJiB1bnJlYWRDb3VudFdhc0VtcHR5KQotICAgICAg
ICAgICAgaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2UgPSB7eyBoYW5kbGUuaWRl
bnRpZmllciwgaGFuZGxlLmRhdGEgLSBzaGFyZWRIYW5kbGUtPmRhdGEoKSB9fTsKLQotICAgICAg
ICBpc0ZpcnN0SGFuZGxlID0gZmFsc2U7Ci0gICAgfSk7Ci0KLSAgICBpZiAoaWRlbnRpZmllckFu
ZE9mZnNldEZvcldha2VVcE1lc3NhZ2UpIHsKLSAgICAgICAgYXV0byBbaWRlbnRpZmllciwgb2Zm
c2V0XSA9ICppZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2FnZTsKLSAgICAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5
TGlzdChpZGVudGlmaWVyLCBvZmZzZXQsIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIH0KLX0KLQogdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQog
ewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlTmF0aXZl
SW1hZ2UobWFrZVJlZihpbWFnZSkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKQEAg
LTIwNywzNyArMjA5LDgzIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRG
bHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlCiAgICAgICAgIGRvd25j
YXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmRp
ZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Ojp1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OndpbGxXYWl0Rm9yRmx1c2goUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiB7Ci0gICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBtX2lkZW50aWZpZXJzT2ZI
YW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZykgewotICAgICAgICBhdXRvKiBoYW5kbGUgPSBtX3No
YXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaGFu
ZGxlLT5yZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpKQotICAgICAgICAgICAgY29udGlu
dWU7CisgICAgaWYgKCFtX2lkZW50aWZpZXJzT2ZJbWFnZUJ1ZmZlcnNQZW5kaW5nRmx1c2gucmVt
b3ZlKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pZGVudGlmaWVy
c09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoLmlzRW1wdHkoKSkKKyAgICAgICAgZW5kQ3VycmVu
dERpc3BsYXlMaXN0KCk7Cit9CiAKLSAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZlJldXNhYmxl
SGFuZGxlcy5jb250YWlucyhpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJc0ZpcnN0RGVzdGluYXRpb24gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpzZXREZXN0aW5hdGlvbkltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpCit7CisgICAgaWYgKG1fY3Vy
cmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyID09IG5ld0Rlc3RpbmF0aW9uSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIElzRmlyc3REZXN0aW5hdGlvbjo6Tm87CiAKLSAgICAg
ICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAg
ICBpZiAoYXV0byBwcmV2aW91c0Rlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciA9IHN0ZDo6ZXhj
aGFuZ2UobV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIsIG5ld0Rlc3Rp
bmF0aW9uSWRlbnRpZmllcikpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcigqcHJldmlvdXNEZXN0aW5h
dGlvbkJ1ZmZlcklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXItPmlz
QWNjZWxlcmF0ZWQoKSkKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcihuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Pigq
aW1hZ2VCdWZmZXIpLmNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIobmV3RGVzdGluYXRpb25J
ZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIobmV3RGVzdGlu
YXRpb25JZGVudGlmaWVyKSkgeworICAgICAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0
ZWQoKSkKKyAgICAgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4oKmltYWdlQnVmZmVyKS5jbGVhckRpc3BsYXlMaXN0KCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Pigq
aW1hZ2VCdWZmZXIpLmNsZWFyRGlzcGxheUxpc3QoKTsKICAgICB9CisKKyAgICBhdXRvIHJlc3Vs
dCA9IG1faWRlbnRpZmllcnNPZkltYWdlQnVmZmVyc1BlbmRpbmdGbHVzaC5pc0VtcHR5KCkgPyBJ
c0ZpcnN0RGVzdGluYXRpb246OlllcyA6IElzRmlyc3REZXN0aW5hdGlvbjo6Tm87CisgICAgbV9p
ZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoLmFkZChuZXdEZXN0aW5hdGlvbklk
ZW50aWZpZXIpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLURpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihz
aXplX3QgY2FwYWNpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1
ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQXBw
ZW5kRGF0YShEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6
ZV90IG51bWJlck9mQnl0ZXMpCiB7Ci0gICAgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CisgICAg
YXV0byogc2hhcmVkSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlkZW50
aWZpZXIpOworICAgIGlmIChVTkxJS0VMWSghc2hhcmVkSGFuZGxlKSkKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJGYWlsZWQgdG8gZmluZCBzaGFyZWQg
ZGlzcGxheSBsaXN0OiAlbGx1IiwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHdoaWxl
ICghbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmlzRW1wdHkoKSkgewotICAgICAgICBh
dXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuZmlyc3QoKTsK
LSAgICAgICAgYXV0byogcmV1c2FibGVIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxl
cy5nZXQoaWRlbnRpZmllcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShy
ZXVzYWJsZUhhbmRsZSwgIiVzIGZhaWxlZCB0byBmaW5kIHNoYXJlZCBkaXNwbGF5IGxpc3QiLCBf
X1BSRVRUWV9GVU5DVElPTl9fKTsKKyAgICBzaGFyZWRIYW5kbGUtPmFkdmFuY2UobnVtYmVyT2ZC
eXRlcyk7Cit9CiAKLSAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVG
b3JXcml0aW5nLmNvbnRhaW5zKGlkZW50aWZpZXIpICYmIHJldXNhYmxlSGFuZGxlLT5hdmFpbGFi
bGVDYXBhY2l0eSgpID49IGNhcGFjaXR5KSB7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJzT2ZI
YW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5yZW1vdmUoaWRlbnRpZmllcik7Ci0gICAgICAgICAg
ICByZXR1cm4gcmV1c2FibGVIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOwotICAgICAgICB9Cit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZFdha2V1cE1lc3NhZ2UoRGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChpZGVu
dGlmaWVyLCBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKK30KIAotICAgICAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMu
cmVtb3ZlRmlyc3QoKTsKK1JlZlB0cjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpmaW5kUmV1c2FibGVEaXNwbGF5TGlzdEhhbmRsZShzaXplX3Qg
Y2FwYWNpdHkpCit7CisgICAgaWYgKFVOTElLRUxZKG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFu
ZGxlcy5pc0VtcHR5KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gbW9z
dFJlY2VudGx5VXNlZElkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMu
Zmlyc3QoKTsKKyAgICBhdXRvIGhhbmRsZSA9IG1ha2VSZWZQdHIobV9zaGFyZWREaXNwbGF5TGlz
dEhhbmRsZXMuZ2V0KG1vc3RSZWNlbnRseVVzZWRJZGVudGlmaWVyKSk7CisgICAgaGFuZGxlLT5t
b3ZlV3JpdGFibGVPZmZzZXRUb1N0YXJ0SWZQb3NzaWJsZSgpOworICAgIGlmIChoYW5kbGUtPmF2
YWlsYWJsZUNhcGFjaXR5KCkgPj0gY2FwYWNpdHkpCisgICAgICAgIHJldHVybiBoYW5kbGU7CisK
KyAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuYXBwZW5kKG1faWRlbnRpZmllcnNP
ZlJldXNhYmxlSGFuZGxlcy50YWtlRmlyc3QoKSk7CisKKyAgICBhdXRvIGxlYXN0UmVjZW50bHlV
c2VkSWRlbnRpZmllciA9IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5maXJzdCgpOwor
ICAgIGlmIChsZWFzdFJlY2VudGx5VXNlZElkZW50aWZpZXIgIT0gbW9zdFJlY2VudGx5VXNlZElk
ZW50aWZpZXIpIHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBtYWtlUmVmUHRyKG1fc2hhcmVkRGlz
cGxheUxpc3RIYW5kbGVzLmdldChsZWFzdFJlY2VudGx5VXNlZElkZW50aWZpZXIpKTsKKyAgICAg
ICAgaWYgKGhhbmRsZS0+bW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUoKSAmJiBo
YW5kbGUtPmF2YWlsYWJsZUNhcGFjaXR5KCkgPj0gY2FwYWNpdHkpCisgICAgICAgICAgICByZXR1
cm4gaGFuZGxlOwogICAgIH0KIAorICAgIHJldHVybiBudWxscHRyOworfQorCitEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0
ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVz
dGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGhhbmRsZSA9IGZpbmRS
ZXVzYWJsZURpc3BsYXlMaXN0SGFuZGxlKGNhcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIGhhbmRs
ZS0+Y3JlYXRlSGFuZGxlKCk7CisKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0
U2hhcmVkSXRlbUJ1ZmZlclNpemUgPSAxIDw8IDE2OwogICAgIHN0YXRpY19hc3NlcnQoZGVmYXVs
dFNoYXJlZEl0ZW1CdWZmZXJTaXplID4gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNp
emUoKSk7CiAKQEAgLTI1NCw3ICszMDIsNyBAQCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRs
ZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZQogICAg
IGF1dG8gbmV3SGFuZGxlID0gRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmNyZWF0ZShpZGVudGlm
aWVyLCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYXV0byBkaXNwbGF5TGlz
dEhhbmRsZSA9IG5ld0hhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7CiAKLSAgICBtX2lkZW50aWZpZXJz
T2ZSZXVzYWJsZUhhbmRsZXMuYXBwZW5kKGlkZW50aWZpZXIpOworICAgIG1faWRlbnRpZmllcnNP
ZlJldXNhYmxlSGFuZGxlcy5wcmVwZW5kKGlkZW50aWZpZXIpOwogICAgIG1fc2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGVzLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG5ld0hhbmRsZSkpOwogCiAgICAg
cmV0dXJuIGRpc3BsYXlMaXN0SGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmgKaW5kZXggOTVmOGQyYjQxMmZiOTFkZjc3YzY4ZjEzNmIwMDc4NmYwMjRkN2UyNi4uZTMz
YzllNDY3ZjE4MzMxMmE5MjE1MmJlZDc0NGEwNmZiZDA3ZTVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC02NSw2ICs2NSwxMiBAQCBwdWJsaWM6CiAKICAgICBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkmIHJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpIHsgcmV0
dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OyB9CiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50
aWZpZXIpOworICAgIHZvaWQgZGlkQXBwZW5kRGF0YShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdCBudW1iZXJPZkJ5dGVzKTsKKyAgICB2b2lkIHNlbmRX
YWtldXBNZXNzYWdlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGVudW0gY2xhc3Mg
SXNGaXJzdERlc3RpbmF0aW9uIHsgTm8sIFllcyB9OworICAgIElzRmlyc3REZXN0aW5hdGlvbiBz
ZXREZXN0aW5hdGlvbkltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CisgICAgdm9pZCB3aWxsV2FpdEZvckZsdXNoKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpAQCAt
NzYsNyArODIsNiBAQCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBS
ZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVj
dCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHN1Ym1p
dERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50
aWZpZXIpOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hE
aXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2Fj
aGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQgcmVsZWFzZVJl
bW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC05
MiwxNyArOTcsMjAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdFRvR1BVUHJvY2Vzcygp
OwogICAgIHZvaWQgcmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwotICAgIHZvaWQg
dXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZl
ZC4KICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAKKyAgICB2b2lkIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgpOworICAgIFJlZlB0cjxEaXNw
bGF5TGlzdFdyaXRlckhhbmRsZT4gZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUoc2l6ZV90
IGNhcGFjaXR5KTsKKwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4+
IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAgIERlcXVlPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVz
OwotICAgIEhhc2hTZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
PiBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZzsKICAgICBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHsgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJz
UGVuZGluZ0ZsdXNoOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA3YTI3Y2EwOWM1Y2Y1YmE0NmEwMWM5NDM3ZjRjYWI1ZmQzMjM5
ZWM4Li44OWI3MGE0NjUzN2FhZDk5MjljYWFiMWMzOWVhZDBlNjM2NjcyZWEzIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjAtMTEtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gUmVtb3ZlIGRpc3BsYXkgbGlzdCBpdGVt
IGJhdGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTExLTIzICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBuZXcgZGlzcGxh
eSBsaXN0IG1ldGEgY29tbWFuZHMgaW4gcHJlcGFyYXRpb24gZm9yIHdlYmtpdC5vcmcvYi8yMTkw
OTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5
TGlzdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5
TGlzdFRlc3RzLmNwcAppbmRleCBlYmQ4NmUzMmUwNjJjYWRmNmE5YjAxYWVkY2M3N2FkOGY2ZTI0
NTQzLi42YTg3MmM3NjM1MjgxODZlNjU3N2VkMGQ0N2ViOGJlMWFjOTMxYjU3IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCkBAIC0xNzMsNyArMTczLDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVy
Q2xpZW50KQogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVt
SGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRp
b24pCisgICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNv
ZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0
eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmluYWwKICAgICAgICAgewogICAgICAgICAg
ICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAgIEVY
UEVDVF9FUShkYXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7CkBAIC0yMDUsNiArMjA1LDggQEAg
VEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZpbmRl
eCksIHNpemVvZihzaXplX3QpKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgZGlkQXBwZW5k
RGF0YShJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90KSBmaW5hbCB7IH0KKwogICAgICAgICBW
ZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414965</attachid>
            <date>2020-11-27 12:16:19 -0800</date>
            <delta_ts>2020-11-27 13:00:30 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-219091-20201127121618.patch</filename>
            <type>text/plain</type>
            <size>55378</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTMxNjFhOWU3ZTc5NTVm
YTYzZDJjOTczNmEzMTE0Y2VkZmNkNWNmNy4uNDRkNjc2OGYwZDYzYjdkZGI1N2IxMDJkYjk1YzRk
MDU0NzE3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTExLTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBiYXRjaGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmRFbmNvZGVkRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6ZGlkQXBwZW5kRGF0YVRvV3Jp
dGFibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKworICAgICAgICBBZGQgYSBuZXcgYEl0ZW1CdWZmZXJX
cml0aW5nQ2xpZW50YCBtZXRob2QgdG8gaW5mb3JtIGNsaWVudHMgd2hlbiBuZXcgYnl0ZXMgYXJl
IGFwcGVuZGVkIHRvIGFuIGl0ZW0gYnVmZmVyLAorICAgICAgICBnaXZlbiB0aGUgYWRkaXRpb25h
bCBudW1iZXIgb2YgYnl0ZXMgYWRkZWQgYW5kIHRoZSBpdGVtIGJ1ZmZlciBoYW5kbGUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjp1bmNoZWNrZWRBcHBlbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZsdXNo
Q29udGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEg
YEZsdXNoQ29udGV4dGAgaXRlbSB2aWEgdGhlIGRpc3BsYXkgbGlzdCByZWNvcmRlciwgdG8gZW5z
dXJlIHRoYXQgdGhlCisgICAgICAgIGFwcHJvcHJpYXRlIHJlY29yZGVyIGRlbGVnYXRlIG1ldGhv
ZHMgYXJlIGludm9rZWQgd2hlbiBhcHBlbmRpbmcgYSAiZmx1c2ggY29udGV4dCIgaXRlbS4KKwog
MjAyMC0xMS0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbnRyb2R1Y2UgbmV3IGRpc3BsYXkgbGlzdCBtZXRhIGNvbW1hbmRzIGluIHByZXBhcmF0
aW9uIGZvciB3ZWJraXQub3JnL2IvMjE5MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU4MjliZTUzODQzNzRlMTEw
MzE3ZjQxZmUxMmY2NjAwNDQ0MjJhYWIuLjQ1NTNhNjgzYmIyZGZmNGI4YWZjMTAxNjk5MTcxYWJl
MWMwMDgyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAwIEBACisyMDIwLTExLTI2ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBiYXRjaGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JzIHRoZSBleGlz
dGluZyBjb25jdXJyZW50IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIG1lY2hhbmlzbSwgc3VjaCB0
aGF0IHdlIG5vIGxvbmdlciB1cGRhdGUgdGhlIHVucmVhZAorICAgICAgICBieXRlcyBjb3VudCBl
dmVyeSA1MTIgaXRlbXMgKG9yIHdoZW4gZmx1c2hpbmcgdGhlIGRyYXdpbmcgY29udGV4dCksIGFu
ZCBpbnN0ZWFkIHVwZGF0ZSBpdCBldmVyeSB0aW1lIHdlIGFwcGVuZAorICAgICAgICBkaXNwbGF5
IGxpc3QgaXRlbSBkYXRhLiBJbiBvcmRlciB0byBhY2hpZXZlIHRoaXMgd2l0aG91dCBtYWtpbmcg
aXQgaW1wb3NzaWJsZSBmb3IgbXVsdGlwbGUgZGlzcGxheS1saXN0IGJhY2tlZAorICAgICAgICBp
bWFnZSBidWZmZXJzIHRvIHJlbmRlciBzaW11bHRhbmVvdXNseSwgd2UgYWxzbyBhZGQgc3VwcG9y
dCBmb3Igc3luY2hyb25pemluZyBkaXNwbGF5IGxpc3QgaXRlbXMgYWNyb3NzCisgICAgICAgIGRp
ZmZlcmVudCBpbWFnZSBidWZmZXJzIGJ5IHVzaW5nIHRoZSBuZXcgbWV0YSBjb21tYW5kIGl0ZW1z
IGFkZGVkIGluIGJ1ZyAjMjE5MjYyLiBBcyBkZXRhaWxlZCBpbiB0aGUgQ2hhbmdlTG9nCisgICAg
ICAgIGZvciB0aGF0IGJ1ZywgYSBzdHJlYW0gb2YgZGlzcGxheSBsaXN0IGRhdGEgd3JpdHRlbiBi
eSB0aGUgd2ViIHByb2Nlc3MgYW5kIGNvbnN1bWVkIGJ5IHRoZSBHUFUgcHJvY2VzcyBpcyBub3cK
KyAgICAgICAgc3RydWN0dXJlZCBsaWtlIHNvOgorCisgICAgICAgIFdha2V1cCBtZXNzYWdlIGlu
aXRpYXRlcyBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyB3aXRoIEltYWdlIEJ1ZmZlciBBIGFuZCBJ
dGVtIEJ1ZmZlciAxCisgICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgTWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKEIpCisgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKDIpCisgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICB2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rKworICAgICAgICAg
ICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rIHwKKyAgICAgICAgICAgIHwgfCBEZXN0aW5hdGlvbiAgICAgICAgfCB8IERlc3RpbmF0aW9u
ICAgICAgICAgICAgICAgICAgfCB8IEl0ZW0gQnVmZmVyIDEKKyAgICAgICAgICAgIHwgfCBJbWFn
ZSBCdWZmZXIgQSAgICAgfCB8IEltYWdlIEJ1ZmZlciBCICAgICAgICAgICAgICAgfCB8CisgICAg
ICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAg
IHwgKy0tLS0tLS0tLS0tLS0tKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICB8IHwgRHN0LiBJbWFnZSAgIHwgfCBEZXN0aW5hdGlvbiBJbWFnZSAg
ICAgfCAgVW51c2VkICAgICAgfCBJdGVtIEJ1ZmZlciAyCisgICAgICAgICAgICB8IHwgQnVmZmVy
IEIgICAgIHwgfCBCdWZmZXIgQSAgICAgICAgICAgICAgfCAgQ2FwYWNpdHkgICAgfAorICAgICAg
ICAgICAgfCArLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe
ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgTWV0YUNvbW1hbmRFbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcihBKQorCisgICAgICAgIEluIG9yZGVyIHRvIHdyaXRlIGRpc3BsYXkgbGlz
dCBkYXRhIGNvbmZvcm1pbmcgdG8gdGhpcyBmb3JtYXQsIHdlIGFkZCBhIG1lY2hhbmlzbSB0byB0
aGUgd2ViIHByb2Nlc3MgdGhhdCBrZWVwcworICAgICAgICB0cmFjayBvZiB0aGUgImN1cnJlbnQg
ZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIiAoaS5lLiB0aGUgaW1hZ2UgYnVmZmVyIHRoYXQgaGFz
IG1vc3QgcmVjZW50bHkKKyAgICAgICAgYXBwZW5kZWQgYSBkaXNwbGF5IGxpc3QgaXRlbSkuIFJp
Z2h0IGJlZm9yZSB0aGlzIGRlc3RpbmF0aW9uIGlzIGFib3V0IHRvIGNoYW5nZSwgd2UgYXBwZW5k
IGEgbmV3CisgICAgICAgIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXJg
IGl0ZW0gYmVmb3JlIHByb2NlZWRpbmcgdG8gYXBwZW5kIGRpc3BsYXkgbGlzdCBpdGVtcyBmb3Ig
dGhlIG5ldworICAgICAgICBjdXJyZW50IGRlc3RpbmF0aW9uLiBXZSBhbHNvIGtlZXAgdHJhY2sg
b2YgYWxsIGltYWdlIGJ1ZmZlcnMgd2l0aCBkaXNwbGF5IGxpc3QgZGF0YSB0aGF0IGhhdmUgbm90
IHlldCBiZWVuCisgICAgICAgIGZsdXNoZWQsIHN1Y2ggdGhhdCB3aGVuIGFsbCBpbWFnZSBidWZm
ZXJzIGhhdmUgZmluaXNoZWQgZmx1c2hpbmcsIHdlIGFwcGVuZCBhIGZpbmFsIGBNZXRhQ29tbWFu
ZEVuZGAgaXRlbS4KKworICAgICAgICBPbiB0aGUgcmVhZGVyIChHUFUgcHJvY2Vzcykgc2lkZSwg
d2UgbWFrZSBzb21lIG1pbm9yIGFkanVzdG1lbnRzIHNvIHRoYXQgdGhlIG1haW4gZGlzcGxheSBs
aXN0IHByb2Nlc3NpbmcgbG9vcAorICAgICAgICBvZiB0aGUgR1BVIHByb2Nlc3MgaXMgY2FwYWJs
ZSBvZiBjaGFuZ2luZyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXJzIHdoaWxlIHByb2Nlc3Npbmcg
YSBzdHJlYW0gb2YgZGlzcGxheSBsaXN0CisgICAgICAgIGl0ZW1zLiBXZSBhZGRpdGlvbmFsbHkg
Y2hhbmdlIHRoaXMgbWFpbiBsb29wIHNvIHRoYXQgd2UnbGwgd2FpdCBmb3IgbW9yZSBkaXNwbGF5
IGxpc3QgaXRlbXMgd2hlbiB0aGUgdW5yZWFkCisgICAgICAgIGNvdW50IGRyb3BzIHRvIHplcm8g
cmF0aGVyIHRoYW4gZ29pbmcgdG8gc2xlZXAgaW1tZWRpYXRlbHksIHVudGlsIHdlIHJlY2VpdmUg
YSBgTWV0YUNvbW1hbmRFbmRgIGl0ZW0sIHdoaWNoIHRoZW4KKyAgICAgICAgcHJvbXB0cyB1cyB0
byBnbyB0byBzbGVlcCBpbiB0aGUgR1BVIHByb2Nlc3MuIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMg
dG8gYXZvaWQgZXhjZXNzaXZlIHNsZWVwaW5nIGFuZCB3YWtpbmcgd2hlbgorICAgICAgICBwcm9j
ZXNzaW5nIGRpc3BsYXkgbGlzdHMgd2l0aCBtYW55IGl0ZW1zLCBzaW5jZSB0aGUgR1BVIHByb2Nl
c3MgdGVuZHMgdG8gZnJlcXVlbnRseSAiY2F0Y2ggdXAiIHRvIHRoZSB3ZWIKKyAgICAgICAgcHJv
Y2VzcyBmb3IgYnJpZWYgbW9tZW50cyB3aGVuIHJ1bm5pbmcgdGhlIE1vdGlvbk1hcmsgc3VidGVz
dHMsIHN1Y2ggYXMgQ2FudmFzIExpbmVzIGFuZCBDYW52YXMgQXJjcy4KKworICAgICAgICBGcm9t
IGxvY2FsIHRlc3RpbmcsIEkgbWVhc3VyZWQgYSBzbGlnaHQgKDItMyUpIHByb2dyZXNzaW9uIG9u
IGJvdGggTGluZXMgYW5kIEFyY3MgdXNpbmcgdGhpcyBuZXcgYXJjaGl0ZWN0dXJlLAorICAgICAg
ICB0aG91Z2ggSSBzdXNwZWN0IGl0IGNvdWxkIGJlIGltcHJvdmVkIGZ1cnRoZXIgKGluIGZ1dHVy
ZSBwYXRjaGVzKSBieSB0YXJnZXRpbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLAor
ICAgICAgICBzdWNoIGFzIHRoZSBtZWNoYW5pc20gdXNlZCB0byB3YWl0IGZvciBuZXcgaXRlbXMg
aW4gdGhlIEdQVSBwcm9jZXNzICh0aGUgbmFpdmUgaW1wbGVtZW50YXRpb24gY3VycmVudGx5IGp1
c3QKKyAgICAgICAgY2FsbHMgYHVzbGVlcGAgaW4gYSBsb29wKS4KKworICAgICAgICBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZTo6YWR2YW5jZSk6CisKKyAgICAgICAgVXBkYXRlIGBhZHZhbmNlYCBzbyB0aGF0
IGl0IGp1c3QgcGVyZm9ybXMgYSBzaW5nbGUgOC1ieXRlIGF0b21pYyBgZXhjaGFuZ2VTdWJgIHJh
dGhlciB0aGFuIGdyYWJiaW5nIGEgc3BpbmxvY2suCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OkRpc3Bs
YXlMaXN0UmVhZGVySGFuZGxlOjpIYXNSZWFkZXJGb3JTY29wZTo6fkhhc1JlYWRlckZvclNjb3Bl
KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6Okhhc1JlYWRlckZv
clNjb3BlOjpIYXNSZWFkZXJGb3JTY29wZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0
UmVhZGVySGFuZGxlOjpjbGFpbVJlYWRlckZvclNjb3BlKToKKworICAgICAgICBNYWtlIHRoZSBH
UFUgcHJvY2VzcyBzZXQgYSBiaXQgaW4gdGhlIHNoYXJlZCBkaXNwbGF5IGxpc3QgYnVmZmVyJ3Mg
aGVhZGVyIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgYWN0aXZlbHkKKyAgICAgICAgcmVhZGluZyBk
YXRhIGZyb20gdGhpcyBkaXNwbGF5IGxpc3QuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQg
dGhlIHdlYiBwcm9jZXNzIGZyb20gcHJlbWF0dXJlbHkgcmVzZXR0aW5nIHRoZQorICAgICAgICB3
cml0ZSBjdXJzb3IgKGBtX3dyaXRhYmxlT2Zmc2V0YCkgb2YgdGhlIGRpc3BsYXkgbGlzdCBoYW5k
bGUgd2hlbiB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50ZXIgaGFzIGRyb3BwZWQgdG8gMCwgYW5kCisg
ICAgICAgIHRoZSBHUFUgcHJvY2VzcyBpcyB3YWl0aW5nIGZvciBtb3JlIGRhdGEgZnJvbSB0aGUg
aXRlbSBidWZmZXIuIFByZXZpb3VzbHksIHRoZSBmdW5jdGlvbiB0byByZXNldCB0aGUgd3JpdGUK
KyAgICAgICAgY3Vyc29yIChub3cgcmVuYW1lZCB0byBgbW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFy
dElmUG9zc2libGVgKSBvbmx5IGNoZWNrZWQgZm9yIGB1bnJlYWRCeXRlc2A7IG5vdywgaXQgY29u
c3VsdHMKKyAgICAgICAgYm90aCB0aGlzIGZsYWcgYW5kIGB1bnJlYWRCeXRlc2AuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorCisgICAgICAgIFJlbmFtZSBgYXBw
bHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlYCB0byBgbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJB
ZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzYCwgYW5kIG1ha2UgaXQKKyAgICAgICAgcmV0dXJuIHRo
ZSBjdXJyZW50IGltYWdlIGJ1ZmZlciB0byB1c2UgYXMgdGhlIGRlc3RpbmF0aW9uIGZvciByZXBs
YXlpbmcgZGlzcGxheSBsaXN0IGNvbW1hbmRzLiBUaGlzIGhlbHBlciBpcworICAgICAgICBzdGls
bCByZXNwb25zaWJsZSBmb3IgcmVwbGF5aW5nIGEgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIHVu
dGlsIGl0IGhhcyBubyBtb3JlIGRhdGEgKHRoYXQgaXMsIHVudGlsIHdlIGVpdGhlcgorICAgICAg
ICBlbmNvdW50ZXIgYE1ldGFDb21tYW5kRW5kYCBpdGVtLCBvciBhIGBNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXJgIGl0ZW0gaW5mb3JtaW5nIHVzIG9mIHRoZSBuZXh0IGl0ZW0gYnVmZmVyIHRv
CisgICAgICAgIGNvbnN1bWUpLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QpOgorCisgICAgICAgIEFkanVzdCB0aGlz
IHRvIGNhbGwgYG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlM
aXN0c2AuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlE
aXNwbGF5TGlzdHNGcm9tSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaDoKKworICAgICAgICBSZW1vdmUgYFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpMb2NrYCBhbHRvZ2V0aGVyLCBub3cgdGhhdCB3ZSBqdXN0IGhhdmUgYSBzaW5nbGUg
YXRvbWljIGB1aW50NjRfdGAgY291bnRlciB0bworICAgICAgICByZXByZXNlbnQgdGhlIG51bWJl
ciBvZiB1bnJlYWQgYnl0ZXMuIEFkZGl0aW9uYWxseSwgYWRkIGEgYGJvb2xgIGZsYWcgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgR1BVIHByb2Nlc3MgaXMKKyAgICAgICAgY3VycmVudGx5IHJlYWRp
bmcgZnJvbSB0aGlzIGl0ZW0gYnVmZmVyIChzZWUgdGhlIGNvbW1lbnQgdW5kZXIgYGNsYWltUmVh
ZGVyRm9yU2NvcGVgIGFib3ZlIGZvciBtb3JlIGRldGFpbHMpLgorCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjp1bnJlYWRCeXRlcyk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrOjpMb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2s6On5Mb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZhbmNl
KToKKworICAgICAgICBNYWtlIHRoaXMgdXNlIHRoZSBzaW5nbGUgYXRvbWljIGNvdW50ZXIsIGlu
c3RlYWQgb2YgZ3JhYmJpbmcgYSBzcGlubG9jay4KKworICAgICAgICAoV2ViS2l0OjpEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTo6bW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6cmVzZXRXcml0YWJsZU9m
ZnNldElmUG9zc2libGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBgcmVzZXRXcml0YWJs
ZU9mZnNldElmUG9zc2libGVgIHRvIHRoZSBtb3JlIGFjY3VyYXRlIGBtb3ZlV3JpdGFibGVPZmZz
ZXRUb1N0YXJ0SWZQb3NzaWJsZWAsIGFuZCBtYWtlIGl0CisgICAgICAgIGFkZGl0aW9uYWxseSBj
aGVjayB0aGUgYGhhc1JlYWRlcmAgZmxhZyBiZWZvcmUgYXR0ZW1wdGluZyB0byBtb3ZlIHRoZSB3
cml0ZSBjdXJzb3IgYmFjayB0byB0aGUgc3RhcnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5kRGlzcGxheUxpc3QpOgorCisgICAgICAgIEFk
ZCBhIGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEgYE1ldGFDb21tYW5kRW5kYCBpdGVtIHRvIHRo
ZSBkaXNwbGF5IGxpc3QuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6Y2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVy
IG1ldGhvZCB0byBhcHBlbmQgYSBgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyYCBpdGVtIHRvIHRoZSBkaXNwbGF5IGxpc3QsIGdpdmVuIHRoZQorICAgICAgICBpZGVudGlm
aWVyIG9mIHRoaXMgbmV4dCBpdGVtIGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpjbGVhckRpc3BsYXlMaXN0KToKKworICAgICAgICBBZGQgYSBoZWxw
ZXIgbWV0aG9kIHRvIGNsZWFyIHRoZSBkaXNwbGF5IGxpc3QsIHN1Y2ggdGhhdCB0aGUgYFJlbW90
ZUltYWdlQnVmZmVyUHJveHlgIHdpbGwgYmUgYXNrZWQgZm9yIGEgbmV3CisgICAgICAgIGJ1ZmZl
ciBoYW5kbGUgdGhlIG5leHQgdGltZSB3ZSBhcHBlbmQgYW4gaXRlbS4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCk6
CisKKyAgICAgICAgTWFrZSB0aGlzIGhpdCB0aGUgbWF4aW11bSBgd2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHlgIGF0dGVtcHQgY291bnQgYW5kICJmYWlsIiBvbmx5IGlmIHRoZSBjYWxsIHRv
CisgICAgICAgIGB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseWAgYWN0dWFsbHkgdGltZXMg
b3V0LiBUaGlzIGNoYW5nZSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgdGhlIHNjZW5hcmlv
IG9mCisgICAgICAgIG11bHRpcGxlIGltYWdlIGJ1ZmZlcnMgc2ltdWx0YW5lb3VzbHkgYXBwZW5k
aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyB3b3JrcyB3aGVuIGFsbCBpbWFnZSBidWZmZXJzIHBlcmZv
cm0gKG5vbi0KKyAgICAgICAgYmxvY2tpbmcpIGZsdXNoZXMgc2ltdWx0YW5lb3VzbHksIGZvbGxv
d2VkIGJ5IGEgc3luYy13YWl0IChibG9ja2luZykgZmx1c2guIEluIHRoaXMgc2l0dWF0aW9uLCB0
aGUgd2ViIHByb2Nlc3MKKyAgICAgICAgbWF5IHJlY2VpdmUgbW9yZSB0aGFuIHRocmVlIGBEaWRG
bHVzaGAgbWVzc2FnZXMgaW4gcmFwaWQgc3VjY2Vzc2lvbiwgY2F1c2luZyBpdCB0byBoaXQgdGhp
cyBtYXhpbXVtIGxpbWl0IG9mIDMKKyAgICAgICAgaW5zdGFudGx5IGFuZCBhdm9pZCB3YWl0aW5n
IGZvciB0aGUgZXhwZWN0ZWQgYERpZEZsdXNoYCBtZXNzYWdlIHRvIGFycml2ZS4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKworICAgICAgICBSZXNldCBg
bV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoYCBhbmQgYG1fY3VycmVudERl
c3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyYCB3aGVuIHRoZSBHUFUKKyAgICAgICAgcHJv
Y2VzcyBpcyB0ZXJtaW5hdGVkLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6ZW5kQ3VycmVudERpc3BsYXlMaXN0KToKKworICAgICAgICBBcHBlbmQgYSBg
TWV0YUNvbW1hbmRFbmRgIGRpc3BsYXkgbGlzdCBpdGVtIHRvIHRoZSBjdXJyZW50IHN0cmVhbSBv
ZiBkaXNwbGF5IGxpc3QgZGF0YSwgaW5mb3JtaW5nIHRoZSBHUFUKKyAgICAgICAgcHJvY2VzcyB0
aGF0IGl0IHNob3VsZCBleHBlY3Qgbm8gbW9yZSBpdGVtcy4gSWRlYWxseSwgdGhpcyBzaG91bGQg
b25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gbG9uZ2VyIGFueQorICAgICAgICBpbWFn
ZSBidWZmZXJzIHdpdGggZGlzcGxheSBsaXN0IGl0ZW1zIHRoYXQgaGF2ZSBub3QgYmVlbiBmbHVz
aGVkLCBidXQgZm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBhbHNvIG5lZWQgdG8gaW52b2tlCisgICAg
ICAgIHRoaXMgYmVmb3JlIG1ha2luZyBhIGNvdXBsZSBvZiBzeW5jIGNhbGxzIHRvIHRoZSBHUFUg
cHJvY2VzcyB0byBhdm9pZCBkZWFkbG9ja2luZy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFn
ZURhdGEpOgorCisgICAgICAgIEFkZCBhIEZJWE1FIGV4cGxhaW5pbmcgdGhhdCB0aGlzIGNhbGwg
dG8gYGVuZEN1cnJlbnREaXNwbGF5TGlzdGAgaXMgdGVtcG9yYXJ5LCBhbmQgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSB3ZQorICAgICAgICBtYWtlIGEgZGVkaWNhdGVkIGBHZXRJbWFnZURhdGFgIGRp
c3BsYXkgbGlzdCBpdGVtIGluIGEgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZEZsdXNoQ29udGV4dEl0ZW0p
OgorCisgICAgICAgIFJlbW92ZSB0aGUgaW1hZ2UgYnVmZmVyIGZyb20gYG1faWRlbnRpZmllcnNP
ZkltYWdlQnVmZmVyc1BlbmRpbmdGbHVzaGAsIGFuZCBhcHBlbmQgdGhlICJFbmQgb2YgRGlzcGxh
eSBMaXN0IgorICAgICAgICBpdGVtIGlmIGl0IHdhcyB0aGUgbGFzdCBpbWFnZSBidWZmZXIgdGhh
dCBoYWQgYSBwZW5kaW5nIGZsdXNoLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6c2V0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgVXBk
YXRlIHRoZSBjdXJyZW50IGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciAoYG1fY3VycmVudERlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyYCkuIElmIHRoaXMgaWRlbnRpZmllcgorICAgICAg
ICBjaGFuZ2VkLCB0aGVuIHdlIGFwcGVuZCBhIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJgIGl0ZW0gdG8gdGhlIHByZXZpb3VzIGRlc3RpbmF0aW9uIGJlZm9yZQorICAg
ICAgICBzZXR0aW5nIHRoZSBuZXcgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyLiBXZSBhbHNvIG5l
ZWQgdG8gY2xlYXIgdGhlIG5ldyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIncyBkaXNwbGF5IGxp
c3QKKyAgICAgICAgYmVmb3JlIHdyaXRpbmcgbmV3IGl0ZW1zLCB0byBwcmV2ZW50IGl0IGZyb20g
b3ZlcndyaXRpbmcgc2hhcmVkIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuCisKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKToKKworICAg
ICAgICBJbXBsZW1lbnQgYSBuZXcgYEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50YCBob29rIGJ5IGFk
dmFuY2luZyB0aGUgY29ycmVzcG9uZGluZyBpdGVtIGJ1ZmZlcidzIHVucmVhZCBjb3VudC4KKyAg
ICAgICAgQWRkaXRpb25hbGx5IHNlbmQgdGhlIHdha2V1cCBtZXNzYWdlIHVwb24gYWRkaW5nIHRo
ZSBpbml0aWFsIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciB0bworICAgICAgICBgbV9pZGVudGlm
aWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoYC4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZpbmRSZXVzYWJsZURpc3BsYXlMaXN0SGFuZGxlKToK
KworICAgICAgICBQdWxsIGxvZ2ljIHRvIGZpbmQgYSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRs
ZSBzdWl0YWJsZSBmb3IgcmV1c2UgaW50byBhIHNlcGFyYXRlIGhlbHBlciBtZXRob2QsIGFuZCBh
ZGp1c3QgaXQKKyAgICAgICAgc28gdGhhdCBpZiB0aGUgbW9zdCByZWNlbnRseSB1c2VkIGRpc3Bs
YXkgbGlzdCBoYW5kbGUgaGFzIHJ1biBvdXQgb2YgYXZhaWxhYmxlIGNhcGFjaXR5LCB3ZSBtb3Zl
IGl0IHRvIHRoZSBlbmQKKyAgICAgICAgb2YgdGhlIHJldXNlIHF1ZXVlIGFuZCBvbmx5IHJldXNl
IHRoZSBuZXcgZmlyc3Qgc2hhcmVkIGhhbmRsZSBpbiB0aGUgcXVldWUgaWYgaXRzIHdyaXRhYmxl
IG9mZnNldCBjYW4gYmUgcmVzZXQuCisgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBHUFUg
cHJvY2VzcyBjYW4gYWx3YXlzIGNvbnRpbnVlIHJlYWRpbmcgZGlzcGxheSBsaXN0IGl0ZW0gZGF0
YSBmcm9tIHRoZSBzdGFydCBvZiBuZXcgaXRlbQorICAgICAgICBidWZmZXJzIC0tIGkuZS4sIHdl
IGRvbid0IGVuZCB1cCB3aXRoIHRoZSB3ZWIgcHJvY2VzcyB3cml0aW5nIG91dCBhIHN0cmVhbSBv
ZiBkaXNwbGF5IGxpc3QgZGF0YSBsaWtlOgorCisgICAgICAgICAgIChTdGFydCkgQnl0ZXMgKDE2
LCA2NTUyMCkgaW4gSXRlbUJ1ZmZlclsxXQorICAgICAgICAgICAgICAgICAgIEJ5dGVzICgxNiwg
NjU1MzYpIGluIEl0ZW1CdWZmZXJbMl0KKyAgICAgICAgICAgICAgICAgICBCeXRlcyAoNjU1MjAs
IDY1NTM2KSBpbiBJdGVtQnVmZmVyWzFdCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2Fi
bGVIYW5kbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKwogMjAyMC0xMS0yNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgbmV3IGRpc3Bs
YXkgbGlzdCBtZXRhIGNvbW1hbmRzIGluIHByZXBhcmF0aW9uIGZvciB3ZWJraXQub3JnL2IvMjE5
MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGNl
NmIwZTliMThiZGM3YWFiMzg0NGQ4NzM2NjM2ODkyMzk0MGUyMjguLjM5NGE4MmJkZDJmZmUzM2M1
MWIzMzY1ZjUxNTlhZjQ5ZTA5MzBiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCkBAIC05MDksNyArOTA5LDE0IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBw
ZW5kRW5jb2RlZERhdGEoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1iZXJP
ZkJ5dGVzKVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVCdWZmZXIuZGF0
YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwgZGF0YS0+
ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKLSAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5
dGVzICs9IGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtOworICAgIGRpZEFwcGVuZERh
dGFUb1dyaXRhYmxlQnVmZmVyKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKK30K
Kwordm9pZCBJdGVtQnVmZmVyOjpkaWRBcHBlbmREYXRhVG9Xcml0YWJsZUJ1ZmZlcihzaXplX3Qg
bnVtYmVyT2ZCeXRlcykKK3sKKyAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9IG51bWJlck9m
Qnl0ZXM7CisgICAgaWYgKG1fd3JpdGluZ0NsaWVudCkKKyAgICAgICAgbV93cml0aW5nQ2xpZW50
LT5kaWRBcHBlbmREYXRhKG1fd3JpdGFibGVCdWZmZXIsIG51bWJlck9mQnl0ZXMpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5oCmluZGV4IGMxMGNjM2U1MmEyMGFiNWVjMDJhNTYwNmNmYzg0OTMxZmYyMTI4NmYu
LjFlNDIxMGEwNDk0OWEwM2E3YWEyYmY5NzdiNjUxYjJkMTg4NTBmZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5k
bGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBJdGVt
QnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMpID0gMDsKIH07CiAKIGNsYXNzIEl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKQEAgLTE3MSw2ICsxNzIsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGVzJiByZWFkT25seUJ1ZmZlcnMoKSBjb25z
dCB7IHJldHVybiBtX3JlYWRPbmx5QnVmZmVyczsgfQogICAgIHZvaWQgZm9yRWFjaEl0ZW1CdWZm
ZXIoRnVuY3Rpb248dm9pZChjb25zdCBJdGVtQnVmZmVySGFuZGxlJik+JiYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YVRvV3JpdGFibGVCdWZmZXIoc2l6ZV90
IG51bWJlck9mQnl0ZXMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzd2FwV3JpdGFibGVC
dWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmRFbmNvZGVkRGF0YShJdGVtSGFuZGxlKTsKQEAgLTE3OSw3ICsxODEsNyBAQCBw
cml2YXRlOgogICAgICAgICBhdXRvKiBzdGFydE9mSXRlbSA9ICZtX3dyaXRhYmxlQnVmZmVyLmRh
dGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc107CiAgICAgICAgIHN0YXJ0T2ZJdGVtWzBdID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwogICAgICAgICBuZXcgKHN0YXJ0T2ZJdGVt
ICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAg
ICAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5C
eXRlcyhUOjppdGVtVHlwZSk7CisgICAgICAgIGRpZEFwcGVuZERhdGFUb1dyaXRhYmxlQnVmZmVy
KHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSkpOwogICAgIH0KIAog
ICAgIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KiBtX3JlYWRpbmdDbGllbnQgeyBudWxscHRyIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA3N2NiYTMzNmRjNWI5
NGY0ZGIyMWRhNjYxMTA3YmQ0YzMyY2Y3MDg1Li5hMzlkNzJiYzE4Y2M4NmVhNjQwZjE0NWJlYzZl
YzEzYWJkNDg2YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAg
LTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZSYpIHsgfQogICAgIH07CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dChG
bHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpZGVudGlm
aWVyKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEcmF3R2x5cGhzUmVjb3JkZXI7
CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtMTY0LDggKzE2Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKLSAgICB2b2lkIGRpZEFw
cGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEFw
cGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBw
ZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7CiAKICAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRl
bShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKaW5kZXggNGU0
ZDQ5MWYwZDA5NTM4OTY0M2I0OGEyNzBiMjZhZWYxMzdiN2JmZS4uMDAwYjNkOTI3ZWU4NTBkZjAy
ZDZkOTg2MmIyZDAxZTIzYTE5NDEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCkBAIC0z
MSwxNCArMzEsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHNpemVfdCBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQogewotICAgIGF1dG8gbG9j
a2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhpcyB9OwotICAgIGlmIChM
SUtFTFkoYW1vdW50IDw9IGhlYWRlcigpLnVucmVhZEJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGhl
YWRlcigpLnVucmVhZEJ5dGVzIC09IGFtb3VudDsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCByZXN1bHQgaW4gdGVybWluYXRpbmcgdGhlIHdlYiBwcm9jZXNzLgotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIGhlYWRlcigpLnVucmVhZEJ5dGVzID0gMDsKLSAgICByZXR1cm4gMDsK
KyAgICBhdXRvIHByZXZpb3VzVW5yZWFkQnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlcy5leGNo
YW5nZVN1YihhbW91bnQpOworICAgIGlmIChVTkxJS0VMWShwcmV2aW91c1VucmVhZEJ5dGVzIDwg
YW1vdW50KSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVzdWx0IGluIHRlcm1p
bmF0aW5nIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXNVbnJlYWRCeXRlcyAt
IGFtb3VudDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4g
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmRpc3BsYXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgY2FwYWNpdHksIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVu
dCYgY2xpZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaAppbmRleCBjYjcyMjM5NzY5NmRj
OWUwYjA2ZTg5Y2FjMjVjZTcyY2I5YTU3NmUxLi5jYTNlOGQ1ZDI0NzNiY2Y5NGY1NTYzMGI1Yzc0
ZjA1ODI5ZDc3ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApAQCAtMzgsNiArMzgsMjggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpKTsKICAgICB9CiAKKyAgICBj
bGFzcyBIYXNSZWFkZXJGb3JTY29wZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhh
c1JlYWRlckZvclNjb3BlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICB+SGFzUmVhZGVyRm9yU2NvcGUoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2hh
bmRsZS5oZWFkZXIoKS5oYXNSZWFkZXIuc3RvcmUoZmFsc2UpOworICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU7CisK
KyAgICAgICAgSGFzUmVhZGVyRm9yU2NvcGUoRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmIGhhbmRs
ZSkKKyAgICAgICAgICAgIDogbV9oYW5kbGUoaGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2hhbmRsZS5oZWFkZXIoKS5oYXNSZWFkZXIuc3RvcmUodHJ1ZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgbV9oYW5kbGU7CisgICAgfTsKKworICAg
IEhhc1JlYWRlckZvclNjb3BlIGNsYWltUmVhZGVyRm9yU2NvcGUoKSB7IHJldHVybiB7ICp0aGlz
IH07IH0KKwogICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3Bs
YXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCYpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKaW5kZXggNmRkZWIwMjc5MjllNTA0ZjgzYjBhMTg2YzdlZWFiOGU1Yjlk
Njg3Mi4uN2RmODA1YzBkZDc5MjhkYTA2ZjU4OWVlMGRlNDFjZDdhYzRiNjMwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcApAQCAtMTI5LDM2ICsxMjksNTMgQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBSZW4KICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVJbWFnZUJ1ZmZlcihtYWtlUmVm
KCppbWFnZUJ1ZmZlcikpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5
RGlzcGxheUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24sIERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlJiBoYW5kbGUsIHNpemVfdCBpbml0aWFsT2Zmc2V0KQorUmVmUHRyPElt
YWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoSW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5h
dGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5k
bGUpCiB7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIoaW5pdGlhbERlc3RpbmF0
aW9uKTsKICAgICBhdXRvIGhhbmRsZVByb3RlY3RvciA9IG1ha2VSZWYoaGFuZGxlKTsKIAotICAg
IHNpemVfdCBvZmZzZXQgPSBpbml0aWFsT2Zmc2V0OworICAgIGF1dG8gb2Zmc2V0ID0gaW5pdGlh
bE9mZnNldDsKICAgICBzaXplX3Qgc2l6ZVRvUmVhZCA9IDA7CiAKLSAgICBkbyB7Ci0gICAgICAg
IHNpemVUb1JlYWQgPSBoYW5kbGUudW5yZWFkQnl0ZXMoKTsKLSAgICB9IHdoaWxlICghc2l6ZVRv
UmVhZCk7CisgICAgYXV0byByZWFkZXJTY29wZSA9IGhhbmRsZS5jbGFpbVJlYWRlckZvclNjb3Bl
KCk7CisgICAgYXV0byB3YWl0Rm9yVW5yZWFkQnl0ZXMgPSBbJl0geworICAgICAgICBzaXplX3Qg
dW5yZWFkQnl0ZXMgPSAwOworICAgICAgICB3aGlsZSAoIXVucmVhZEJ5dGVzKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yZXZlciBoZXJlIHdoaWxlIHdhaXRpbmcg
Zm9yIG5ldyBkaXNwbGF5IGxpc3QgaXRlbXMuCisgICAgICAgICAgICAvLyBXZSB3aWxsIG5lZWQg
c29tZSBtZWNoYW5pc20gaGVyZSB0byBzdG9wIHdhaXRpbmcgYWZ0ZXIgYSBjZXJ0YWluIHRpbWUg
bGltaXQKKyAgICAgICAgICAgIC8vIGFuZCBjb29yZGluYXRlIHdpdGggdGhlIHdlYiBwcm9jZXNz
IHNvIHRoYXQgd2UgcmVjZWl2ZSBhIG5ldyB3YWtldXAgbWVzc2FnZQorICAgICAgICAgICAgLy8g
d2hlbiB0aGVyZSBhcmUgbW9yZSBpdGVtcyB0byBiZSBwcm9jZXNzZWQuCisgICAgICAgICAgICB1
c2xlZXAoOCk7CisgICAgICAgICAgICB1bnJlYWRCeXRlcyA9IGhhbmRsZS51bnJlYWRCeXRlcygp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bnJlYWRCeXRlczsKKyAgICB9OworCisgICAg
d2hpbGUgKGRlc3RpbmF0aW9uICYmICFtX25leHRJdGVtQnVmZmVyVG9SZWFkKSB7CisgICAgICAg
IGlmICghc2l6ZVRvUmVhZCkKKyAgICAgICAgICAgIHNpemVUb1JlYWQgPSB3YWl0Rm9yVW5yZWFk
Qnl0ZXMoKTsKIAotICAgIHdoaWxlIChzaXplVG9SZWFkKSB7CiAgICAgICAgIGF1dG8gZGlzcGxh
eUxpc3QgPSBoYW5kbGUuZGlzcGxheUxpc3RGb3JSZWFkaW5nKG9mZnNldCwgc2l6ZVRvUmVhZCwg
KnRoaXMpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWRpc3BsYXlMaXN0KSkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJv
Y2Vzcy4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZGVzdGlu
YXRpb24uaXNBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlz
cGxheUxpc3QpOworICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHJlc3VsdDsKKyAg
ICAgICAgaWYgKGRlc3RpbmF0aW9uLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgICAgICByZXN1
bHQgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oKmRlc3RpbmF0
aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0
aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KCpkZXN0
aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKworICAgICAgICBzaXpl
VG9SZWFkID0gaGFuZGxlLmFkdmFuY2UocmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkKTsKIAogICAg
ICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0gb2Zmc2V0OwotICAgICAgICBjaGVja2Vk
T2Zmc2V0ICs9IHNpemVUb1JlYWQ7CisgICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gcmVzdWx0Lm51
bWJlck9mQnl0ZXNSZWFkOwogICAgICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZE9mZnNldC5oYXNP
dmVyZmxvd2VkKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVj
ayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCiAgICAgICAgIG9mZnNldCA9IGNoZWNrZWRPZmZzZXQudW5zYWZlR2V0KCk7CkBAIC0x
NjYsMTggKzE4MywyNCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxh
eUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpbwogICAgICAgICBpZiAoVU5M
SUtFTFkob2Zmc2V0ID4gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHBy
b2Nlc3MuCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgc2l6ZVRvUmVh
ZCA9IGhhbmRsZS5hZHZhbmNlKHNpemVUb1JlYWQpOworICAgICAgICBpZiAocmVzdWx0LnJlYXNv
bkZvclN0b3BwaW5nID09IERpc3BsYXlMaXN0OjpTdG9wUmVwbGF5UmVhc29uOjpFbmRPZkRpc3Bs
YXlMaXN0KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKHJlc3VsdC5yZWFzb25G
b3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6U3RvcFJlcGxheVJlYXNvbjo6Q2hhbmdlRGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0ciht
X3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoKnJlc3VsdC5uZXh0RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcikpOwogICAgIH0KKworICAgIHJldHVybiBkZXN0aW5hdGlvbjsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5pdGlhbE9mZnNldCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQnVmZmVySWRlbnRpZmllcikKIHsKICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShXYWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0U3RhcnQsIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RFbmQp
OwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1h
Z2VCdWZmZXIoZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKLSAgICBpZiAoVU5MSUtFTFko
IWltYWdlQnVmZmVyKSkgeworICAgIGF1dG8gZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG1ha2VS
ZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllcikpOworICAgIGlmIChVTkxJS0VMWSghZGVzdGluYXRpb25JbWFnZUJ1
ZmZlcikpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWlu
YXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTE5MCw3ICsyMTMsMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWQK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRs
ZSgqaW1hZ2VCdWZmZXIsICppbml0aWFsSGFuZGxlLCBpbml0aWFsT2Zmc2V0KTsKKyAgICBkZXN0
aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5
aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBpbml0aWFsT2Zmc2V0LCAq
aW5pdGlhbEhhbmRsZSk7CisKKyAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICB3aGlsZSAobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkgewogICAgICAgICBhdXRvIG5leHRIYW5k
bGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQobV9uZXh0SXRlbUJ1ZmZlclRvUmVh
ZCk7CkBAIC0xOTksOSArMjI3LDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2Fr
ZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkCiAgICAgICAg
ICAgICAvLyBJUEMgbWVzc2FnZSB3aXRoIGEgc2hhcmVkIG1lbW9yeSBoYW5kbGUgdG8gdGhlIG5l
eHQgaXRlbSBidWZmZXIuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCiAgICAgICAg
IC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRl
bSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAgICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQg
PSB7IH07Ci0gICAgICAgIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZSgqaW1hZ2VCdWZmZXIs
ICpuZXh0SGFuZGxlLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKTsKKyAg
ICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgKm5leHRIYW5kbGUpOworCisgICAgICAg
IGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCmluZGV4IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0ZjU3NTI0OTQ4OWQ3
MDVjNzguLjIyODBmZTM3YWVmNTRiMDI0YjM2ZmY5MTIwMGY3M2UzMGY0MzZlNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaApAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH0KIAotICAgIHZvaWQgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFu
ZGxlKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbiwgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUmLCBzaXplX3Qgb2Zmc2V0KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNl
dCwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
ci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5
TGlzdEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUuaAppbmRleCA4NjVmYWVkY2RlNzA2M2E4NDQyNDA1MGJiYjcxZmM0NmQwMjJkNTBiLi5mMTBj
NTM0MjFjZWVlOTFlYWZkYmUwZTM0MWY2NDlhNWRkN2U3YThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKQEAgLTUwLDM4ICs1MCwxMiBAQCBw
dWJsaWM6CiAKICAgICB1aW50NjRfdCB1bnJlYWRCeXRlcygpCiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsKLSAgICAg
ICAgcmV0dXJuIGhlYWRlcigpLnVucmVhZEJ5dGVzOworICAgICAgICByZXR1cm4gaGVhZGVyKCku
dW5yZWFkQnl0ZXMubG9hZCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgc2l6ZV90IGFkdmFuY2Uo
c2l6ZV90IGFtb3VudCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgY2xhc3MgTG9jayB7Ci0gICAg
cHVibGljOgotICAgICAgICBMb2NrKFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBoYW5kbGUpCi0g
ICAgICAgICAgICA6IG1faGFuZGxlKGhhbmRsZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXV0
byYgYXRvbWljVmFsdWUgPSBtX2hhbmRsZS5oZWFkZXIoKS5sb2NrOwotICAgICAgICAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBhdm9pZCB3
YWl0aW5nIGZvcmV2ZXIgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHdlYiBjb250ZW50IHByb2Nlc3MK
LSAgICAgICAgICAgICAgICAvLyBob2xkcyBvbiB0byB0aGUgbG9jayBpbmRlZmluaXRlbHkgKG9y
IGNyYXNoZXMgd2hpbGUgaG9sZGluZyB0aGUgbG9jaykuCi0gICAgICAgICAgICAgICAgdWludDY0
X3QgdW5sb2NrZWQgPSAwOwotICAgICAgICAgICAgICAgIGlmIChhdG9taWNWYWx1ZS5jb21wYXJl
RXhjaGFuZ2VXZWFrKHVubG9ja2VkLCAxKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgfkxvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2hhbmRsZS5oZWFk
ZXIoKS5sb2NrLnN0b3JlKDApOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgbV9oYW5kbGU7Ci0gICAgfTsKLQogICAgIFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAgICAgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAgICAgLCBtX3NoYXJlZE1lbW9yeShXVEZN
b3ZlKHNoYXJlZE1lbW9yeSkpCkBAIC04OSw4ICs2Myw4IEBAIHByb3RlY3RlZDoKICAgICB9CiAK
ICAgICBzdHJ1Y3QgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIgewotICAgICAgICBBdG9t
aWM8dWludDY0X3Q+IGxvY2s7Ci0gICAgICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzOworICAgICAg
ICBBdG9taWM8dWludDY0X3Q+IHVucmVhZEJ5dGVzOworICAgICAgICBBdG9taWM8Ym9vbD4gaGFz
UmVhZGVyOwogICAgIH07CiAKICAgICBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciYgaGVh
ZGVyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheUxpc3RTaGFyZWRNZW1vcnlI
ZWFkZXIqPihkYXRhKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCmluZGV4
IGQ4MmUzZGZhZGVlODZlYjBkNTU0MWIyNzg1NzY4MjE4N2Y2NWNmOGIuLmJlYTA1NjllNGExOGFk
ZjM1YzQwZGVjYTljMzM5N2RhZTljZmEzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUuY3BwCkBAIC0zOCwxNCArMzgsMTMgQEAgc2l6ZV90IERpc3BsYXlMaXN0V3JpdGVySGFuZGxl
OjphZHZhbmNlKHNpemVfdCBhbW91bnQpCiAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRXcml0YWJs
ZU9mZnNldC5oYXNPdmVyZmxvd2VkKCkpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogCi0gICAgYXV0byBsb2NrZXIgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9j
ayB7ICp0aGlzIH07Ci0gICAgQ2hlY2tlZFNpemUgY2hlY2tlZFVucmVhZEJ5dGVzID0gaGVhZGVy
KCkudW5yZWFkQnl0ZXM7CisgICAgbV93cml0YWJsZU9mZnNldCA9IGNoZWNrZWRXcml0YWJsZU9m
ZnNldC51bnNhZmVHZXQoKTsKKworICAgIENoZWNrZWRTaXplIGNoZWNrZWRVbnJlYWRCeXRlcyA9
IGhlYWRlcigpLnVucmVhZEJ5dGVzLmV4Y2hhbmdlQWRkKGFtb3VudCk7CiAgICAgY2hlY2tlZFVu
cmVhZEJ5dGVzICs9IGFtb3VudDsKICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZFVucmVhZEJ5dGVz
Lmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKLSAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gY2hlY2tlZFdyaXRhYmxlT2Zmc2V0LnVuc2FmZUdl
dCgpOwotICAgIGhlYWRlcigpLnVucmVhZEJ5dGVzID0gY2hlY2tlZFVucmVhZEJ5dGVzLnVuc2Fm
ZUdldCgpOwogICAgIHJldHVybiBjaGVja2VkVW5yZWFkQnl0ZXMudW5zYWZlR2V0KCk7CiB9CiAK
QEAgLTY2LDEzICs2NSwxNiBAQCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRlSGFuZGxlKCkgY29uc3QKICAgICB9OwogfQogCi1ib29s
IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgp
Citib29sIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjptb3ZlV3JpdGFibGVPZmZzZXRUb1N0YXJ0
SWZQb3NzaWJsZSgpCiB7CiAgICAgaWYgKG1fd3JpdGFibGVPZmZzZXQgPD0gU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3dy
aXRhYmxlT2Zmc2V0ID09IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAoaGVhZGVyKCkuaGFzUmVhZGVy
LmxvYWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKHVucmVhZEJ5dGVzKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oCmlu
ZGV4IDQ0ZWVmYWFiNDhmNDkxMWZlYWRiZWQ1OGFlNTdhMmE2M2IxZDhhZDcuLmZjN2EyMTY1M2Ew
ZWI5NjgxOWViMWMwOWE5ZmMzNDQ0ODFhNzM5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHNpemVfdCB3cml0YWJsZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGFibGVPZmZzZXQ7IH0KICAgICBzaXplX3QgYXZhaWxh
YmxlQ2FwYWNpdHkoKSBjb25zdDsKIAotICAgIGJvb2wgcmVzZXRXcml0YWJsZU9mZnNldElmUG9z
c2libGUoKTsKKyAgICBib29sIG1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCk7
CiAKICAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVIYW5kbGUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggNTFiZDU3MTI5NThhZjEyYTIzMTVkNDFi
YTNkMmQ2YjllZDU3ZjJiYS4uNjgwZWI3YjE4ZDQ1YjRlOWVjMzlkMDIyZDZhOWYyNzkwNjQ5NzQz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTExMSw2ICsxMTEsMjQgQEAgcHVi
bGljOgogICAgICAgICBBU1NFUlQobV9zZW50Rmx1c2hJZGVudGlmaWVyID09IHRhcmdldEZsdXNo
SWRlbnRpZmllcik7CiAgICAgfQogCisgICAgdm9pZCBlbmREaXNwbGF5TGlzdCgpCisgICAgewor
ICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkudGVtcGxhdGUgYXBwZW5kPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZEVuZD4oKTsKKyAgICB9CisKKyAgICB2b2lk
IGNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIG5leHRJbWFnZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJvb2wgd2FzRW1wdHkg
PSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuaXNFbXB0eSgpOworICAgICAgICBtX2Ry
YXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkudGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KG5leHRJbWFn
ZUJ1ZmZlcik7CisgICAgICAgIGlmICh3YXNFbXB0eSkKKyAgICAgICAgICAgIGNsZWFyRGlzcGxh
eUxpc3QoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRGlzcGxheUxpc3QoKQorICAgIHsKKyAg
ICAgICAgbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmNsZWFyKCk7CisgICAgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAgICAg
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKQEAgLTEzNyw5ICsxNTUsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIFdhaXQgZm9yIG91ciBEaXNwbGF5TGlzdCB0byBiZSBmbHVz
aGVkIGJ1dCBkbyBub3QgaGFuZy4KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBt
YXhXYWl0aW5nRmx1c2ggPSAzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIG51bVdhaXRpbmdGbHVz
aCA9IDA7IG51bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRpbmdGbHVzaCAmJiBoYXNQZW5kaW5nRmx1
c2goKTsgKytudW1XYWl0aW5nRmx1c2gpCi0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+d2FpdEZvckRpZEZsdXNoKCk7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbWF4aW11bU51bWJlck9mVGltZW91dHMgPSAzOworICAgICAgICB1bnNpZ25lZCBu
dW1iZXJPZlRpbWVvdXRzID0gMDsKKyAgICAgICAgd2hpbGUgKG51bWJlck9mVGltZW91dHMgPCBt
YXhpbXVtTnVtYmVyT2ZUaW1lb3V0cyAmJiBoYXNQZW5kaW5nRmx1c2goKSkgeworICAgICAgICAg
ICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckRpZEZsdXNoKCkp
CisgICAgICAgICAgICAgICAgKytudW1iZXJPZlRpbWVvdXRzOworICAgICAgICB9CiAgICAgfQog
CiAgICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUK
QEAgLTE1MSwxOCArMTcyLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvJiBtdXRhYmxlVGhpcyA9IGNv
bnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSY+KCp0aGlzKTsKLSAgICAgICAgYXV0byYg
ZGlzcGxheUxpc3QgPSBtdXRhYmxlVGhpcy5tX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7
Ci0gICAgICAgIGlmICghZGlzcGxheUxpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtdXRh
YmxlVGhpcy5zdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7Ci0gICAgICAgICAgICBtdXRh
YmxlVGhpcy5tX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0ID0gMDsKLSAgICAgICAgICAg
IGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBnZXRJbWFnZURh
dGEgaXMgc3luY2hyb25vdXMsIHdoaWNoIG1lYW5zIHdlJ3ZlIGFscmVhZHkgcmVjZWl2ZWQgdGhl
IENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0IG1lc3NhZ2UuCiAgICAgICAgIHJldHVybiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwg
c3JjUmVjdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIApAQCAtMTg0
LDYgKzE5Niw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgp
IG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBUcmFjZVNjb3Bl
IHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1h
Z2VCdWZmZXJFbmQpOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCk7CiAg
ICAgICAgIHdhaXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KCk7CkBAIC0xOTEsNDkgKzIwNiw1NiBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKSBv
dmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2Ry
YXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghbV9kcmF3aW5nQ29udGV4
dC5kaXNwbGF5TGlzdCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV9zZW50Rmx1c2hJZGVu
dGlmaWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5mbHVzaENvbnRleHQo
bV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKKyAgICAgICAgfQogCi0gICAgICAgIG1fc2VudEZsdXNo
SWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6OmdlbmVy
YXRlKCk7Ci0gICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIpOwotICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxp
c3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAgbV9pdGVtQ291bnRJ
bkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Cisg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5kaWRBcHBlbmRGbHVzaENvbnRl
eHRJdGVtKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgY2xlYXJEaXNw
bGF5TGlzdCgpOwogICAgIH0KIAotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKKyAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5
TGlzdC5pc0VtcHR5KCkpCisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkoKS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICB9CisKKyAgICB2
b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSB0
eXBlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS0+c2V0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcihtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgPT0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJc0ZpcnN0
RGVzdGluYXRpb246OlllcykKKyAgICAgICAgICAgIG1faXNBcHBlbmRpbmdEaXNwbGF5TGlzdEl0
ZW1Gb3JJbml0aWFsRGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IHRydWU7CiAgICAgfQogCi0gICAg
dm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUp
IG92ZXJyaWRlCisgICAgdm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySGFuZGxlJiBoYW5kbGUsIHNpemVfdCBudW1iZXJPZkJ5dGVzKSBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJhdGNoU2l6
ZSA9IDUxMjsKLSAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRp
c3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmICgrK21faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxp
c3QgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
bV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIHN1Ym1pdERpc3Bs
YXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAg
ICAgYXV0byBuZWVkc1dha2V1cE1lc3NhZ2UgPSBtX2lzQXBwZW5kaW5nRGlzcGxheUxpc3RJdGVt
Rm9ySW5pdGlhbERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIKKyAgICAgICAgICAgID8gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpOZWVkc1dha2V1cE1lc3NhZ2U6OlllcworICAgICAgICAgICAg
OiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Ok5lZWRzV2FrZXVwTWVzc2FnZTo6Tm87CisK
KyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmRpZEFwcGVuZERhdGEoaGFu
ZGxlLCBudW1iZXJPZkJ5dGVzLCBuZWVkc1dha2V1cE1lc3NhZ2UsIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29y
ZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkQXBwZW5kSXRlbU9m
VHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkgb3ZlcnJpZGUKICAgICB7
Ci0gICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHko
KS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICAgICAgbV9pc0FwcGVuZGluZ0Rpc3BsYXlM
aXN0SXRlbUZvckluaXRpYWxEZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gZmFsc2U7CisKKyAgICAg
ICAgaWYgKHR5cGUgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXIpCisgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CiAgICAgfQogCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihz
aXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAobV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIGlmIChMSUtFTFkobV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5jcmVhdGVJdGVtQnVmZmVyKGNhcGFjaXR5LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMzYsMTIgKzM1
OCw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgZGlkQXBwZW5k
SXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGlmICh0eXBlID09IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0ltYWdlQnVmZmVyKQotICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwot
ICAgIH0KLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZm
ZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVy
biBXVEY6Om1ha2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjxCYWNr
ZW5kVHlwZT4+KCp0aGlzKTsKQEAgLTM1OCw2ICszNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZmxv
YXQgbV9yZXNvbHV0aW9uU2NhbGU7CiAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZSBtX2NvbG9yU3Bh
Y2U7CiAgICAgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgbV9waXhlbEZvcm1hdDsKKyAgICBib29sIG1f
aXNBcHBlbmRpbmdEaXNwbGF5TGlzdEl0ZW1Gb3JJbml0aWFsRGVzdGluYXRpb25JbWFnZUJ1ZmZl
ciB7IGZhbHNlIH07CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBjMDdiMjNmYjJiMGU1OGUw
ZTFkZmY1YTE0ZWUwYTg1ZDlhNWI2NDVkLi4xZmUzOWYyYjQ0YjRkMDhlZDQyYWE3YmU2MDAzZGE4
MzZmNjIxNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBA
IC05Niw5ICs5NiwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdAogICAgIHByZXZpb3VzQ29u
bmVjdGlvbi5yZW1vdmVDbGllbnQoKnRoaXMpOwogCiAgICAgbV9pZGVudGlmaWVyc09mUmV1c2Fi
bGVIYW5kbGVzLmNsZWFyKCk7Ci0gICAgbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZv
cldyaXRpbmcuY2xlYXIoKTsKICAgICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5jbGVhcigp
OwogCisgICAgbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoLmNsZWFyKCk7
CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBXVEY6Om51
bGxvcHQ7CisKICAgICByZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiB9CiAKQEAg
LTExMiw4ICsxMTQsMjkgQEAgdWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmVuZEN1cnJlbnREaXNwbGF5TGlzdCgpCit7CisgICAgaWYgKCFtX2N1cnJl
bnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZElt
YWdlQnVmZmVyKCptX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcik7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGltYWdlQnVm
ZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5lbmREaXNwbGF5TGlzdCgpOworICAgIGVs
c2UKKyAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
KCppbWFnZUJ1ZmZlcikuZW5kRGlzcGxheUxpc3QoKTsKKworICAgIG1faWRlbnRpZmllcnNPZklt
YWdlQnVmZmVyc1BlbmRpbmdGbHVzaC5jbGVhcigpOworICAgIG1fY3VycmVudERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworfQorCiBib29sIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQo
KQogeworICAgIC8vIEZJWE1FOiBXZSBjYW4gcmVtb3ZlIHRoaXMgb25jZSBiYWNrZW5kIGNyZWF0
aW9uIGlzIG5vIGxvbmdlciBzeW5jaHJvbm91cy4KKyAgICBlbmRDdXJyZW50RGlzcGxheUxpc3Qo
KTsKKwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKICAg
ICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRp
b246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CkBAIC0xNDQsMzUg
KzE2NywxNCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaQogCiBSZWZQdHI8SW1hZ2VEYXRhPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKKyAgICAvLyBG
SVhNRTogV2UgY2FuIHJlbW92ZSB0aGlzIGVpdGhlciBvbmNlIHdlIGludHJvZHVjZSBhIEdldElt
YWdlRGF0YSBkaXNwbGF5IGxpc3QgaXRlbS4KKyAgICBlbmRDdXJyZW50RGlzcGxheUxpc3QoKTsK
KwogICAgIElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhKG91
dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRh
UmVmZXJlbmNlKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zKTsKICAgICByZXR1
cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6c3VibWl0RGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQnVmZmVySWRlbnRpZmllcikKLXsKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzaXplX3Q+PiBpZGVudGlmaWVyQW5kT2Zmc2V0Rm9y
V2FrZVVwTWVzc2FnZTsKLSAgICBib29sIGlzRmlyc3RIYW5kbGUgPSB0cnVlOwotCi0gICAgZGlz
cGxheUxpc3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZdIChhdXRvJiBoYW5kbGUpIHsKLSAgICAgICAg
bV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuYWRkKGhhbmRsZS5pZGVu
dGlmaWVyKTsKLQotICAgICAgICBhdXRvKiBzaGFyZWRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlcy5nZXQoaGFuZGxlLmlkZW50aWZpZXIpOwotICAgICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX01FU1NBR0Uoc2hhcmVkSGFuZGxlLCAiJXMgZmFpbGVkIHRvIGZpbmQgc2hhcmVkIGRp
c3BsYXkgbGlzdCIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOwotCi0gICAgICAgIGJvb2wgdW5yZWFk
Q291bnRXYXNFbXB0eSA9IHNoYXJlZEhhbmRsZS0+YWR2YW5jZShoYW5kbGUuY2FwYWNpdHkpID09
IGhhbmRsZS5jYXBhY2l0eTsKLSAgICAgICAgaWYgKGlzRmlyc3RIYW5kbGUgJiYgdW5yZWFkQ291
bnRXYXNFbXB0eSkKLSAgICAgICAgICAgIGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNz
YWdlID0ge3sgaGFuZGxlLmlkZW50aWZpZXIsIGhhbmRsZS5kYXRhIC0gc2hhcmVkSGFuZGxlLT5k
YXRhKCkgfX07Ci0KLSAgICAgICAgaXNGaXJzdEhhbmRsZSA9IGZhbHNlOwotICAgIH0pOwotCi0g
ICAgaWYgKGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlKSB7Ci0gICAgICAgIGF1
dG8gW2lkZW50aWZpZXIsIG9mZnNldF0gPSAqaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1l
c3NhZ2U7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Oldh
a2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoaWRlbnRpZmllciwgb2Zmc2V0LCBkZXN0aW5hdGlvbkJ1
ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICB9Ci19
Ci0KIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiBpbWFnZSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoaW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CkBAIC0yMDcsMzcgKzIwOSw4MyBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVz
aElkZQogICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eT4oKmltYWdlQnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOwogfQogCi12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKCkKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmRGbHVzaENvbnRleHRJdGVtKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGZvciAoYXV0byBp
ZGVudGlmaWVyIDogbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcpIHsK
LSAgICAgICAgYXV0byogaGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlk
ZW50aWZpZXIpOwotICAgICAgICBpZiAoIWhhbmRsZS0+cmVzZXRXcml0YWJsZU9mZnNldElmUG9z
c2libGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGlmICghbV9pZGVudGlmaWVyc09m
SW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoLnJlbW92ZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1faWRlbnRpZmllcnNPZkltYWdlQnVmZmVyc1BlbmRpbmdGbHVzaC5p
c0VtcHR5KCkpCisgICAgICAgIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgpOworfQogCi0gICAgICAg
IGlmIChtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuY29udGFpbnMoaWRlbnRpZmllcikp
Ci0gICAgICAgICAgICBjb250aW51ZTsKK1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SXNG
aXJzdERlc3RpbmF0aW9uIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2V0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbmV3RGVzdGluYXRpb25J
ZGVudGlmaWVyKQoreworICAgIGlmIChtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRl
bnRpZmllciA9PSBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBJc0Zp
cnN0RGVzdGluYXRpb246Ok5vOwogCi0gICAgICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFu
ZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8gcHJldmlvdXNEZXN0aW5hdGlv
bkJ1ZmZlcklkZW50aWZpZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY3VycmVudERlc3RpbmF0aW9uSW1h
Z2VCdWZmZXJJZGVudGlmaWVyLCBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpKSB7CisgICAgICAg
IGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVk
SW1hZ2VCdWZmZXIoKnByZXZpb3VzRGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKSkgeworICAg
ICAgICAgICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgICAgICAg
ICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZm
ZXIpLmNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIobmV3RGVzdGluYXRpb25JZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNhY2hlZEltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpIHsKKyAgICAgICAg
aWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgICAgICBkb3duY2FzdDxB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY2xlYXJEaXNw
bGF5TGlzdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jbGVhckRpc3BsYXlMaXN0
KCk7CiAgICAgfQorCisgICAgYXV0byByZXN1bHQgPSBtX2lkZW50aWZpZXJzT2ZJbWFnZUJ1ZmZl
cnNQZW5kaW5nRmx1c2guaXNFbXB0eSgpID8gSXNGaXJzdERlc3RpbmF0aW9uOjpZZXMgOiBJc0Zp
cnN0RGVzdGluYXRpb246Ok5vOworICAgIG1faWRlbnRpZmllcnNPZkltYWdlQnVmZmVyc1BlbmRp
bmdGbHVzaC5hZGQobmV3RGVzdGluYXRpb25JZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1EaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5LCBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEoY29uc3QgRGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJIYW5kbGUmIGhhbmRsZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIE5lZWRzV2FrZXVw
TWVzc2FnZSBuZWVkc1dha2V1cE1lc3NhZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbkltYWdlQnVmZmVyKQogewotICAgIHVwZGF0ZVJldXNhYmxlSGFuZGxlcygpOwor
ICAgIGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldCho
YW5kbGUuaWRlbnRpZmllcik7CisgICAgaWYgKFVOTElLRUxZKCFzaGFyZWRIYW5kbGUpKQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIkZhaWxlZCB0byBm
aW5kIHNoYXJlZCBkaXNwbGF5IGxpc3Q6ICVsbHUiLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwog
Ci0gICAgd2hpbGUgKCFtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxl
cy5maXJzdCgpOwotICAgICAgICBhdXRvKiByZXVzYWJsZUhhbmRsZSA9IG1fc2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGVzLmdldChpZGVudGlmaWVyKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKHJldXNhYmxlSGFuZGxlLCAiJXMgZmFpbGVkIHRvIGZpbmQgc2hhcmVkIGRpc3Bs
YXkgbGlzdCIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOworICAgIHNoYXJlZEhhbmRsZS0+YWR2YW5j
ZShudW1iZXJPZkJ5dGVzKTsKIAotICAgICAgICBpZiAobV9pZGVudGlmaWVyc09mSGFuZGxlc0F2
YWlsYWJsZUZvcldyaXRpbmcuY29udGFpbnMoaWRlbnRpZmllcikgJiYgcmV1c2FibGVIYW5kbGUt
PmF2YWlsYWJsZUNhcGFjaXR5KCkgPj0gY2FwYWNpdHkpIHsKLSAgICAgICAgICAgIG1faWRlbnRp
ZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLnJlbW92ZShpZGVudGlmaWVyKTsKLSAg
ICAgICAgICAgIHJldHVybiByZXVzYWJsZUhhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7Ci0gICAgICAg
IH0KKyAgICBpZiAobmVlZHNXYWtldXBNZXNzYWdlID09IE5lZWRzV2FrZXVwTWVzc2FnZTo6WWVz
KSB7CisgICAgICAgIGF1dG8gaW5pdGlhbE9mZnNldCA9IGhhbmRsZS5kYXRhIC0gc2hhcmVkSGFu
ZGxlLT5kYXRhKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6Oldha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoaGFuZGxlLmlkZW50aWZpZXIsIGluaXRpYWxP
ZmZzZXQsIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKKyAgICB9Cit9CiAKLSAgICAgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVz
LnJlbW92ZUZpcnN0KCk7CitSZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6ZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUoc2l6ZV90
IGNhcGFjaXR5KQoreworICAgIGlmIChVTkxJS0VMWShtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhh
bmRsZXMuaXNFbXB0eSgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIG1v
c3RSZWNlbnRseVVzZWRJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVz
LmZpcnN0KCk7CisgICAgYXV0byBoYW5kbGUgPSBtYWtlUmVmUHRyKG1fc2hhcmVkRGlzcGxheUxp
c3RIYW5kbGVzLmdldChtb3N0UmVjZW50bHlVc2VkSWRlbnRpZmllcikpOworICAgIGhhbmRsZS0+
bW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUoKTsKKyAgICBpZiAoaGFuZGxlLT5h
dmFpbGFibGVDYXBhY2l0eSgpID49IGNhcGFjaXR5KQorICAgICAgICByZXR1cm4gaGFuZGxlOwor
CisgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChtX2lkZW50aWZpZXJz
T2ZSZXVzYWJsZUhhbmRsZXMudGFrZUZpcnN0KCkpOworCisgICAgYXV0byBsZWFzdFJlY2VudGx5
VXNlZElkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuZmlyc3QoKTsK
KyAgICBpZiAobGVhc3RSZWNlbnRseVVzZWRJZGVudGlmaWVyICE9IG1vc3RSZWNlbnRseVVzZWRJ
ZGVudGlmaWVyKSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gbWFrZVJlZlB0cihtX3NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlcy5nZXQobGVhc3RSZWNlbnRseVVzZWRJZGVudGlmaWVyKSk7CisgICAg
ICAgIGlmIChoYW5kbGUtPm1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCkgJiYg
aGFuZGxlLT5hdmFpbGFibGVDYXBhY2l0eSgpID49IGNhcGFjaXR5KQorICAgICAgICAgICAgcmV0
dXJuIGhhbmRsZTsKICAgICB9CiAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
dGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBmaW5k
UmV1c2FibGVEaXNwbGF5TGlzdEhhbmRsZShjYXBhY2l0eSkpCisgICAgICAgIHJldHVybiBoYW5k
bGUtPmNyZWF0ZUhhbmRsZSgpOworCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVs
dFNoYXJlZEl0ZW1CdWZmZXJTaXplID0gMSA8PCAxNjsKICAgICBzdGF0aWNfYXNzZXJ0KGRlZmF1
bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSA+IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJT
aXplKCkpOwogCkBAIC0yNTQsNyArMzAyLDcgQEAgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5k
bGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKHNpemUKICAg
ICBhdXRvIG5ld0hhbmRsZSA9IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGUoaWRlbnRp
Zmllciwgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGF1dG8gZGlzcGxheUxp
c3RIYW5kbGUgPSBuZXdIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOwogCi0gICAgbV9pZGVudGlmaWVy
c09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICBtX2lkZW50aWZpZXJz
T2ZSZXVzYWJsZUhhbmRsZXMucHJlcGVuZChpZGVudGlmaWVyKTsKICAgICBtX3NoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlcy5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShuZXdIYW5kbGUpKTsKIAogICAg
IHJldHVybiBkaXNwbGF5TGlzdEhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oCmluZGV4IDk1ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZiMDA3ODZmMDI0ZDdlMjYuLmZl
NzcwZjFmZmMxNzQ5MTM2Mzk2ZDBiMWIzZWQxY2NhOTlmMjU2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtNjYsNiArNjYsMTMgQEAgcHVibGljOgogICAgIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgeyByZXR1
cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk7IH0KICAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRp
Zmllcik7CiAKKyAgICBlbnVtIGNsYXNzIE5lZWRzV2FrZXVwTWVzc2FnZSA6IGJvb2wgeyBObywg
WWVzIH07CisgICAgdm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIE5lZWRzV2FrZXVwTWVz
c2FnZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIpOworCisgICAgZW51bSBjbGFzcyBJc0ZpcnN0RGVzdGluYXRpb24gOiBib29sIHsg
Tm8sIFllcyB9OworICAgIElzRmlyc3REZXN0aW5hdGlvbiBzZXREZXN0aW5hdGlvbkltYWdlQnVm
ZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRB
cHBlbmRGbHVzaENvbnRleHRJdGVtKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC03Niw3ICs4Myw2
IEBAIHB1YmxpYzoKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgc3VibWl0RGlzcGxheUxp
c3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0
QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUlt
YWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTkyLDE3ICs5OCwy
MCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb25uZWN0VG9HUFVQcm9jZXNzKCk7CiAgICAgdm9p
ZCByZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgdm9pZCB1cGRhdGVSZXVz
YWJsZUhhbmRsZXMoKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAgIHZv
aWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1h
dCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNo
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAorICAg
IHZvaWQgZW5kQ3VycmVudERpc3BsYXlMaXN0KCk7CisgICAgUmVmUHRyPERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlPiBmaW5kUmV1c2FibGVEaXNwbGF5TGlzdEhhbmRsZShzaXplX3QgY2FwYWNpdHkp
OworCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5IHsgKnRoaXMgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciwgUmVmUHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPj4gbV9zaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZXM7CiAgICAgRGVxdWU8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXM7Ci0gICAgSGFz
aFNldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IG1faWRlbnRp
ZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZJbWFnZUJ1ZmZlcnNQZW5kaW5nRmx1
c2g7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBt
X2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGE0NjY0YmFhYzljNDI0YzU2Yzg2YTkyNjA3YTQyYzU2MjA3NjkwNTMuLjNlNGY3
ZTA0MzI2NDRkZWU3YzIwOTRhNGUyODU1YjVmNjljMGNhZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0xMS0y
NCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29u
Y3VycmVudCBkaXNwbGF5IGxpc3RzXSBSZW1vdmUgZGlzcGxheSBsaXN0IGl0ZW0gYmF0Y2hpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTA5MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMTEtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIG5ldyBkaXNwbGF5IGxpc3QgbWV0
YSBjb21tYW5kcyBpbiBwcmVwYXJhdGlvbiBmb3Igd2Via2l0Lm9yZy9iLzIxOTA5MQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCmluZGV4IGViZDg2ZTMyZTA2MmNhZGY2YTliMDFhZWRjYzc3YWQ4ZjZlMjQ1NDMuLmNmYTEw
M2MwM2FkZmQzNTMxNWViYTI2MWM0MmJhNTIzYWZkY2QwYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTE3
Myw3ICsxNzMsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKKyAgICAg
ICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4
X3QqIGhhbmRsZUxvY2F0aW9uKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEodHlwZSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOwogICAgICAgICAgICAgRVhQRUNUX0VRKGRh
dGFMZW5ndGgsIHNpemVvZihzaXplX3QpKTsKQEAgLTIwNSw2ICsyMDUsOCBAQCBURVNUKERpc3Bs
YXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJmluZGV4KSwgc2l6ZW9m
KHNpemVfdCkpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0
IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QpIGZpbmFsIHsgfQorCiAgICAgICAgIFZlY3RvcjxT
dHJva2VQYXRoPiYgbV9pdGVtczsKICAgICB9OwogCg==
</data>
<flag name="commit-queue"
          id="431997"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414967</attachid>
            <date>2020-11-27 12:46:15 -0800</date>
            <delta_ts>2020-11-27 14:04:20 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-219091-20201127124614.patch</filename>
            <type>text/plain</type>
            <size>55385</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTMxNjFhOWU3ZTc5NTVm
YTYzZDJjOTczNmEzMTE0Y2VkZmNkNWNmNy4uNDRkNjc2OGYwZDYzYjdkZGI1N2IxMDJkYjk1YzRk
MDU0NzE3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTExLTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBiYXRjaGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmRFbmNvZGVkRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6ZGlkQXBwZW5kRGF0YVRvV3Jp
dGFibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKworICAgICAgICBBZGQgYSBuZXcgYEl0ZW1CdWZmZXJX
cml0aW5nQ2xpZW50YCBtZXRob2QgdG8gaW5mb3JtIGNsaWVudHMgd2hlbiBuZXcgYnl0ZXMgYXJl
IGFwcGVuZGVkIHRvIGFuIGl0ZW0gYnVmZmVyLAorICAgICAgICBnaXZlbiB0aGUgYWRkaXRpb25h
bCBudW1iZXIgb2YgYnl0ZXMgYWRkZWQgYW5kIHRoZSBpdGVtIGJ1ZmZlciBoYW5kbGUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjp1bmNoZWNrZWRBcHBlbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZsdXNo
Q29udGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEg
YEZsdXNoQ29udGV4dGAgaXRlbSB2aWEgdGhlIGRpc3BsYXkgbGlzdCByZWNvcmRlciwgdG8gZW5z
dXJlIHRoYXQgdGhlCisgICAgICAgIGFwcHJvcHJpYXRlIHJlY29yZGVyIGRlbGVnYXRlIG1ldGhv
ZHMgYXJlIGludm9rZWQgd2hlbiBhcHBlbmRpbmcgYSAiZmx1c2ggY29udGV4dCIgaXRlbS4KKwog
MjAyMC0xMS0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbnRyb2R1Y2UgbmV3IGRpc3BsYXkgbGlzdCBtZXRhIGNvbW1hbmRzIGluIHByZXBhcmF0
aW9uIGZvciB3ZWJraXQub3JnL2IvMjE5MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU4MjliZTUzODQzNzRlMTEw
MzE3ZjQxZmUxMmY2NjAwNDQ0MjJhYWIuLjQ1NTNhNjgzYmIyZGZmNGI4YWZjMTAxNjk5MTcxYWJl
MWMwMDgyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAwIEBACisyMDIwLTExLTI2ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBiYXRjaGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JzIHRoZSBleGlz
dGluZyBjb25jdXJyZW50IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIG1lY2hhbmlzbSwgc3VjaCB0
aGF0IHdlIG5vIGxvbmdlciB1cGRhdGUgdGhlIHVucmVhZAorICAgICAgICBieXRlcyBjb3VudCBl
dmVyeSA1MTIgaXRlbXMgKG9yIHdoZW4gZmx1c2hpbmcgdGhlIGRyYXdpbmcgY29udGV4dCksIGFu
ZCBpbnN0ZWFkIHVwZGF0ZSBpdCBldmVyeSB0aW1lIHdlIGFwcGVuZAorICAgICAgICBkaXNwbGF5
IGxpc3QgaXRlbSBkYXRhLiBJbiBvcmRlciB0byBhY2hpZXZlIHRoaXMgd2l0aG91dCBtYWtpbmcg
aXQgaW1wb3NzaWJsZSBmb3IgbXVsdGlwbGUgZGlzcGxheS1saXN0IGJhY2tlZAorICAgICAgICBp
bWFnZSBidWZmZXJzIHRvIHJlbmRlciBzaW11bHRhbmVvdXNseSwgd2UgYWxzbyBhZGQgc3VwcG9y
dCBmb3Igc3luY2hyb25pemluZyBkaXNwbGF5IGxpc3QgaXRlbXMgYWNyb3NzCisgICAgICAgIGRp
ZmZlcmVudCBpbWFnZSBidWZmZXJzIGJ5IHVzaW5nIHRoZSBuZXcgbWV0YSBjb21tYW5kIGl0ZW1z
IGFkZGVkIGluIGJ1ZyAjMjE5MjYyLiBBcyBkZXRhaWxlZCBpbiB0aGUgQ2hhbmdlTG9nCisgICAg
ICAgIGZvciB0aGF0IGJ1ZywgYSBzdHJlYW0gb2YgZGlzcGxheSBsaXN0IGRhdGEgd3JpdHRlbiBi
eSB0aGUgd2ViIHByb2Nlc3MgYW5kIGNvbnN1bWVkIGJ5IHRoZSBHUFUgcHJvY2VzcyBpcyBub3cK
KyAgICAgICAgc3RydWN0dXJlZCBsaWtlIHNvOgorCisgICAgICAgIFdha2V1cCBtZXNzYWdlIGlu
aXRpYXRlcyBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyB3aXRoIEltYWdlIEJ1ZmZlciBBIGFuZCBJ
dGVtIEJ1ZmZlciAxCisgICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgTWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKEIpCisgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKDIpCisgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICB2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rKworICAgICAgICAg
ICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rIHwKKyAgICAgICAgICAgIHwgfCBEZXN0aW5hdGlvbiAgICAgICAgfCB8IERlc3RpbmF0aW9u
ICAgICAgICAgICAgICAgICAgfCB8IEl0ZW0gQnVmZmVyIDEKKyAgICAgICAgICAgIHwgfCBJbWFn
ZSBCdWZmZXIgQSAgICAgfCB8IEltYWdlIEJ1ZmZlciBCICAgICAgICAgICAgICAgfCB8CisgICAg
ICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAg
IHwgKy0tLS0tLS0tLS0tLS0tKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICB8IHwgRHN0LiBJbWFnZSAgIHwgfCBEZXN0aW5hdGlvbiBJbWFnZSAg
ICAgfCAgVW51c2VkICAgICAgfCBJdGVtIEJ1ZmZlciAyCisgICAgICAgICAgICB8IHwgQnVmZmVy
IEIgICAgIHwgfCBCdWZmZXIgQSAgICAgICAgICAgICAgfCAgQ2FwYWNpdHkgICAgfAorICAgICAg
ICAgICAgfCArLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe
ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgTWV0YUNvbW1hbmRFbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcihBKQorCisgICAgICAgIEluIG9yZGVyIHRvIHdyaXRlIGRpc3BsYXkgbGlz
dCBkYXRhIGNvbmZvcm1pbmcgdG8gdGhpcyBmb3JtYXQsIHdlIGFkZCBhIG1lY2hhbmlzbSB0byB0
aGUgd2ViIHByb2Nlc3MgdGhhdCBrZWVwcworICAgICAgICB0cmFjayBvZiB0aGUgImN1cnJlbnQg
ZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIiAoaS5lLiB0aGUgaW1hZ2UgYnVmZmVyIHRoYXQgaGFz
IG1vc3QgcmVjZW50bHkKKyAgICAgICAgYXBwZW5kZWQgYSBkaXNwbGF5IGxpc3QgaXRlbSkuIFJp
Z2h0IGJlZm9yZSB0aGlzIGRlc3RpbmF0aW9uIGlzIGFib3V0IHRvIGNoYW5nZSwgd2UgYXBwZW5k
IGEgbmV3CisgICAgICAgIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXJg
IGl0ZW0gYmVmb3JlIHByb2NlZWRpbmcgdG8gYXBwZW5kIGRpc3BsYXkgbGlzdCBpdGVtcyBmb3Ig
dGhlIG5ldworICAgICAgICBjdXJyZW50IGRlc3RpbmF0aW9uLiBXZSBhbHNvIGtlZXAgdHJhY2sg
b2YgYWxsIGltYWdlIGJ1ZmZlcnMgd2l0aCBkaXNwbGF5IGxpc3QgZGF0YSB0aGF0IGhhdmUgbm90
IHlldCBiZWVuCisgICAgICAgIGZsdXNoZWQsIHN1Y2ggdGhhdCB3aGVuIGFsbCBpbWFnZSBidWZm
ZXJzIGhhdmUgZmluaXNoZWQgZmx1c2hpbmcsIHdlIGFwcGVuZCBhIGZpbmFsIGBNZXRhQ29tbWFu
ZEVuZGAgaXRlbS4KKworICAgICAgICBPbiB0aGUgcmVhZGVyIChHUFUgcHJvY2Vzcykgc2lkZSwg
d2UgbWFrZSBzb21lIG1pbm9yIGFkanVzdG1lbnRzIHNvIHRoYXQgdGhlIG1haW4gZGlzcGxheSBs
aXN0IHByb2Nlc3NpbmcgbG9vcAorICAgICAgICBvZiB0aGUgR1BVIHByb2Nlc3MgaXMgY2FwYWJs
ZSBvZiBjaGFuZ2luZyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXJzIHdoaWxlIHByb2Nlc3Npbmcg
YSBzdHJlYW0gb2YgZGlzcGxheSBsaXN0CisgICAgICAgIGl0ZW1zLiBXZSBhZGRpdGlvbmFsbHkg
Y2hhbmdlIHRoaXMgbWFpbiBsb29wIHNvIHRoYXQgd2UnbGwgd2FpdCBmb3IgbW9yZSBkaXNwbGF5
IGxpc3QgaXRlbXMgd2hlbiB0aGUgdW5yZWFkCisgICAgICAgIGNvdW50IGRyb3BzIHRvIHplcm8g
cmF0aGVyIHRoYW4gZ29pbmcgdG8gc2xlZXAgaW1tZWRpYXRlbHksIHVudGlsIHdlIHJlY2VpdmUg
YSBgTWV0YUNvbW1hbmRFbmRgIGl0ZW0sIHdoaWNoIHRoZW4KKyAgICAgICAgcHJvbXB0cyB1cyB0
byBnbyB0byBzbGVlcCBpbiB0aGUgR1BVIHByb2Nlc3MuIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMg
dG8gYXZvaWQgZXhjZXNzaXZlIHNsZWVwaW5nIGFuZCB3YWtpbmcgd2hlbgorICAgICAgICBwcm9j
ZXNzaW5nIGRpc3BsYXkgbGlzdHMgd2l0aCBtYW55IGl0ZW1zLCBzaW5jZSB0aGUgR1BVIHByb2Nl
c3MgdGVuZHMgdG8gZnJlcXVlbnRseSAiY2F0Y2ggdXAiIHRvIHRoZSB3ZWIKKyAgICAgICAgcHJv
Y2VzcyBmb3IgYnJpZWYgbW9tZW50cyB3aGVuIHJ1bm5pbmcgdGhlIE1vdGlvbk1hcmsgc3VidGVz
dHMsIHN1Y2ggYXMgQ2FudmFzIExpbmVzIGFuZCBDYW52YXMgQXJjcy4KKworICAgICAgICBGcm9t
IGxvY2FsIHRlc3RpbmcsIEkgbWVhc3VyZWQgYSBzbGlnaHQgKDItMyUpIHByb2dyZXNzaW9uIG9u
IGJvdGggTGluZXMgYW5kIEFyY3MgdXNpbmcgdGhpcyBuZXcgYXJjaGl0ZWN0dXJlLAorICAgICAg
ICB0aG91Z2ggSSBzdXNwZWN0IGl0IGNvdWxkIGJlIGltcHJvdmVkIGZ1cnRoZXIgKGluIGZ1dHVy
ZSBwYXRjaGVzKSBieSB0YXJnZXRpbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLAor
ICAgICAgICBzdWNoIGFzIHRoZSBtZWNoYW5pc20gdXNlZCB0byB3YWl0IGZvciBuZXcgaXRlbXMg
aW4gdGhlIEdQVSBwcm9jZXNzICh0aGUgbmFpdmUgaW1wbGVtZW50YXRpb24gY3VycmVudGx5IGp1
c3QKKyAgICAgICAgY2FsbHMgYHVzbGVlcGAgaW4gYSBsb29wKS4KKworICAgICAgICBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZTo6YWR2YW5jZSk6CisKKyAgICAgICAgVXBkYXRlIGBhZHZhbmNlYCBzbyB0aGF0
IGl0IGp1c3QgcGVyZm9ybXMgYSBzaW5nbGUgOC1ieXRlIGF0b21pYyBgZXhjaGFuZ2VTdWJgIHJh
dGhlciB0aGFuIGdyYWJiaW5nIGEgc3BpbmxvY2suCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OkRpc3Bs
YXlMaXN0UmVhZGVySGFuZGxlOjpIYXNSZWFkZXJGb3JTY29wZTo6fkhhc1JlYWRlckZvclNjb3Bl
KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6Okhhc1JlYWRlckZv
clNjb3BlOjpIYXNSZWFkZXJGb3JTY29wZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0
UmVhZGVySGFuZGxlOjpjbGFpbVJlYWRlckZvclNjb3BlKToKKworICAgICAgICBNYWtlIHRoZSBH
UFUgcHJvY2VzcyBzZXQgYSBiaXQgaW4gdGhlIHNoYXJlZCBkaXNwbGF5IGxpc3QgYnVmZmVyJ3Mg
aGVhZGVyIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgYWN0aXZlbHkKKyAgICAgICAgcmVhZGluZyBk
YXRhIGZyb20gdGhpcyBkaXNwbGF5IGxpc3QuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQg
dGhlIHdlYiBwcm9jZXNzIGZyb20gcHJlbWF0dXJlbHkgcmVzZXR0aW5nIHRoZQorICAgICAgICB3
cml0ZSBjdXJzb3IgKGBtX3dyaXRhYmxlT2Zmc2V0YCkgb2YgdGhlIGRpc3BsYXkgbGlzdCBoYW5k
bGUgd2hlbiB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50ZXIgaGFzIGRyb3BwZWQgdG8gMCwgYW5kCisg
ICAgICAgIHRoZSBHUFUgcHJvY2VzcyBpcyB3YWl0aW5nIGZvciBtb3JlIGRhdGEgZnJvbSB0aGUg
aXRlbSBidWZmZXIuIFByZXZpb3VzbHksIHRoZSBmdW5jdGlvbiB0byByZXNldCB0aGUgd3JpdGUK
KyAgICAgICAgY3Vyc29yIChub3cgcmVuYW1lZCB0byBgbW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFy
dElmUG9zc2libGVgKSBvbmx5IGNoZWNrZWQgZm9yIGB1bnJlYWRCeXRlc2A7IG5vdywgaXQgY29u
c3VsdHMKKyAgICAgICAgYm90aCB0aGlzIGZsYWcgYW5kIGB1bnJlYWRCeXRlc2AuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorCisgICAgICAgIFJlbmFtZSBgYXBw
bHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlYCB0byBgbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJB
ZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzYCwgYW5kIG1ha2UgaXQKKyAgICAgICAgcmV0dXJuIHRo
ZSBjdXJyZW50IGltYWdlIGJ1ZmZlciB0byB1c2UgYXMgdGhlIGRlc3RpbmF0aW9uIGZvciByZXBs
YXlpbmcgZGlzcGxheSBsaXN0IGNvbW1hbmRzLiBUaGlzIGhlbHBlciBpcworICAgICAgICBzdGls
bCByZXNwb25zaWJsZSBmb3IgcmVwbGF5aW5nIGEgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIHVu
dGlsIGl0IGhhcyBubyBtb3JlIGRhdGEgKHRoYXQgaXMsIHVudGlsIHdlIGVpdGhlcgorICAgICAg
ICBlbmNvdW50ZXIgYE1ldGFDb21tYW5kRW5kYCBpdGVtLCBvciBhIGBNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXJgIGl0ZW0gaW5mb3JtaW5nIHVzIG9mIHRoZSBuZXh0IGl0ZW0gYnVmZmVyIHRv
CisgICAgICAgIGNvbnN1bWUpLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QpOgorCisgICAgICAgIEFkanVzdCB0aGlz
IHRvIGNhbGwgYG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlM
aXN0c2AuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlE
aXNwbGF5TGlzdHNGcm9tSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaDoKKworICAgICAgICBSZW1vdmUgYFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpMb2NrYCBhbHRvZ2V0aGVyLCBub3cgdGhhdCB3ZSBqdXN0IGhhdmUgYSBzaW5nbGUg
YXRvbWljIGB1aW50NjRfdGAgY291bnRlciB0bworICAgICAgICByZXByZXNlbnQgdGhlIG51bWJl
ciBvZiB1bnJlYWQgYnl0ZXMuIEFkZGl0aW9uYWxseSwgYWRkIGEgYGJvb2xgIGZsYWcgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgR1BVIHByb2Nlc3MgaXMKKyAgICAgICAgY3VycmVudGx5IHJlYWRp
bmcgZnJvbSB0aGlzIGl0ZW0gYnVmZmVyIChzZWUgdGhlIGNvbW1lbnQgdW5kZXIgYGNsYWltUmVh
ZGVyRm9yU2NvcGVgIGFib3ZlIGZvciBtb3JlIGRldGFpbHMpLgorCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjp1bnJlYWRCeXRlcyk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrOjpMb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2s6On5Mb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZhbmNl
KToKKworICAgICAgICBNYWtlIHRoaXMgdXNlIHRoZSBzaW5nbGUgYXRvbWljIGNvdW50ZXIsIGlu
c3RlYWQgb2YgZ3JhYmJpbmcgYSBzcGlubG9jay4KKworICAgICAgICAoV2ViS2l0OjpEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTo6bW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6cmVzZXRXcml0YWJsZU9m
ZnNldElmUG9zc2libGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBgcmVzZXRXcml0YWJs
ZU9mZnNldElmUG9zc2libGVgIHRvIHRoZSBtb3JlIGFjY3VyYXRlIGBtb3ZlV3JpdGFibGVPZmZz
ZXRUb1N0YXJ0SWZQb3NzaWJsZWAsIGFuZCBtYWtlIGl0CisgICAgICAgIGFkZGl0aW9uYWxseSBj
aGVjayB0aGUgYGhhc1JlYWRlcmAgZmxhZyBiZWZvcmUgYXR0ZW1wdGluZyB0byBtb3ZlIHRoZSB3
cml0ZSBjdXJzb3IgYmFjayB0byB0aGUgc3RhcnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5kRGlzcGxheUxpc3QpOgorCisgICAgICAgIEFk
ZCBhIGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEgYE1ldGFDb21tYW5kRW5kYCBpdGVtIHRvIHRo
ZSBkaXNwbGF5IGxpc3QuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6Y2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVy
IG1ldGhvZCB0byBhcHBlbmQgYSBgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyYCBpdGVtIHRvIHRoZSBkaXNwbGF5IGxpc3QsIGdpdmVuIHRoZQorICAgICAgICBpZGVudGlm
aWVyIG9mIHRoaXMgbmV4dCBpdGVtIGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpjbGVhckRpc3BsYXlMaXN0KToKKworICAgICAgICBBZGQgYSBoZWxw
ZXIgbWV0aG9kIHRvIGNsZWFyIHRoZSBkaXNwbGF5IGxpc3QsIHN1Y2ggdGhhdCB0aGUgYFJlbW90
ZUltYWdlQnVmZmVyUHJveHlgIHdpbGwgYmUgYXNrZWQgZm9yIGEgbmV3CisgICAgICAgIGJ1ZmZl
ciBoYW5kbGUgdGhlIG5leHQgdGltZSB3ZSBhcHBlbmQgYW4gaXRlbS4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCk6
CisKKyAgICAgICAgTWFrZSB0aGlzIGhpdCB0aGUgbWF4aW11bSBgd2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHlgIGF0dGVtcHQgY291bnQgYW5kICJmYWlsIiBvbmx5IGlmIHRoZSBjYWxsIHRv
CisgICAgICAgIGB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseWAgYWN0dWFsbHkgdGltZXMg
b3V0LiBUaGlzIGNoYW5nZSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgdGhlIHNjZW5hcmlv
IG9mCisgICAgICAgIG11bHRpcGxlIGltYWdlIGJ1ZmZlcnMgc2ltdWx0YW5lb3VzbHkgYXBwZW5k
aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyB3b3JrcyB3aGVuIGFsbCBpbWFnZSBidWZmZXJzIHBlcmZv
cm0gKG5vbi0KKyAgICAgICAgYmxvY2tpbmcpIGZsdXNoZXMgc2ltdWx0YW5lb3VzbHksIGZvbGxv
d2VkIGJ5IGEgc3luYy13YWl0IChibG9ja2luZykgZmx1c2guIEluIHRoaXMgc2l0dWF0aW9uLCB0
aGUgd2ViIHByb2Nlc3MKKyAgICAgICAgbWF5IHJlY2VpdmUgbW9yZSB0aGFuIHRocmVlIGBEaWRG
bHVzaGAgbWVzc2FnZXMgaW4gcmFwaWQgc3VjY2Vzc2lvbiwgY2F1c2luZyBpdCB0byBoaXQgdGhp
cyBtYXhpbXVtIGxpbWl0IG9mIDMKKyAgICAgICAgaW5zdGFudGx5IGFuZCBhdm9pZCB3YWl0aW5n
IGZvciB0aGUgZXhwZWN0ZWQgYERpZEZsdXNoYCBtZXNzYWdlIHRvIGFycml2ZS4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKworICAgICAgICBSZXNldCBg
bV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoYCBhbmQgYG1fY3VycmVudERl
c3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyYCB3aGVuIHRoZSBHUFUKKyAgICAgICAgcHJv
Y2VzcyBpcyB0ZXJtaW5hdGVkLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6ZW5kQ3VycmVudERpc3BsYXlMaXN0KToKKworICAgICAgICBBcHBlbmQgYSBg
TWV0YUNvbW1hbmRFbmRgIGRpc3BsYXkgbGlzdCBpdGVtIHRvIHRoZSBjdXJyZW50IHN0cmVhbSBv
ZiBkaXNwbGF5IGxpc3QgZGF0YSwgaW5mb3JtaW5nIHRoZSBHUFUKKyAgICAgICAgcHJvY2VzcyB0
aGF0IGl0IHNob3VsZCBleHBlY3Qgbm8gbW9yZSBpdGVtcy4gSWRlYWxseSwgdGhpcyBzaG91bGQg
b25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gbG9uZ2VyIGFueQorICAgICAgICBpbWFn
ZSBidWZmZXJzIHdpdGggZGlzcGxheSBsaXN0IGl0ZW1zIHRoYXQgaGF2ZSBub3QgYmVlbiBmbHVz
aGVkLCBidXQgZm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBhbHNvIG5lZWQgdG8gaW52b2tlCisgICAg
ICAgIHRoaXMgYmVmb3JlIG1ha2luZyBhIGNvdXBsZSBvZiBzeW5jIGNhbGxzIHRvIHRoZSBHUFUg
cHJvY2VzcyB0byBhdm9pZCBkZWFkbG9ja2luZy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFn
ZURhdGEpOgorCisgICAgICAgIEFkZCBhIEZJWE1FIGV4cGxhaW5pbmcgdGhhdCB0aGlzIGNhbGwg
dG8gYGVuZEN1cnJlbnREaXNwbGF5TGlzdGAgaXMgdGVtcG9yYXJ5LCBhbmQgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSB3ZQorICAgICAgICBtYWtlIGEgZGVkaWNhdGVkIGBHZXRJbWFnZURhdGFgIGRp
c3BsYXkgbGlzdCBpdGVtIGluIGEgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZEZsdXNoQ29udGV4dEl0ZW0p
OgorCisgICAgICAgIFJlbW92ZSB0aGUgaW1hZ2UgYnVmZmVyIGZyb20gYG1faWRlbnRpZmllcnNP
ZkltYWdlQnVmZmVyc1BlbmRpbmdGbHVzaGAsIGFuZCBhcHBlbmQgdGhlICJFbmQgb2YgRGlzcGxh
eSBMaXN0IgorICAgICAgICBpdGVtIGlmIGl0IHdhcyB0aGUgbGFzdCBpbWFnZSBidWZmZXIgdGhh
dCBoYWQgYSBwZW5kaW5nIGZsdXNoLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6c2V0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgVXBk
YXRlIHRoZSBjdXJyZW50IGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciAoYG1fY3VycmVudERlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyYCkuIElmIHRoaXMgaWRlbnRpZmllcgorICAgICAg
ICBjaGFuZ2VkLCB0aGVuIHdlIGFwcGVuZCBhIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJgIGl0ZW0gdG8gdGhlIHByZXZpb3VzIGRlc3RpbmF0aW9uIGJlZm9yZQorICAg
ICAgICBzZXR0aW5nIHRoZSBuZXcgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyLiBXZSBhbHNvIG5l
ZWQgdG8gY2xlYXIgdGhlIG5ldyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIncyBkaXNwbGF5IGxp
c3QKKyAgICAgICAgYmVmb3JlIHdyaXRpbmcgbmV3IGl0ZW1zLCB0byBwcmV2ZW50IGl0IGZyb20g
b3ZlcndyaXRpbmcgc2hhcmVkIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuCisKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKToKKworICAg
ICAgICBJbXBsZW1lbnQgYSBuZXcgYEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50YCBob29rIGJ5IGFk
dmFuY2luZyB0aGUgY29ycmVzcG9uZGluZyBpdGVtIGJ1ZmZlcidzIHVucmVhZCBjb3VudC4KKyAg
ICAgICAgQWRkaXRpb25hbGx5IHNlbmQgdGhlIHdha2V1cCBtZXNzYWdlIHVwb24gYWRkaW5nIHRo
ZSBpbml0aWFsIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciB0bworICAgICAgICBgbV9pZGVudGlm
aWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoYC4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZpbmRSZXVzYWJsZURpc3BsYXlMaXN0SGFuZGxlKToK
KworICAgICAgICBQdWxsIGxvZ2ljIHRvIGZpbmQgYSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRs
ZSBzdWl0YWJsZSBmb3IgcmV1c2UgaW50byBhIHNlcGFyYXRlIGhlbHBlciBtZXRob2QsIGFuZCBh
ZGp1c3QgaXQKKyAgICAgICAgc28gdGhhdCBpZiB0aGUgbW9zdCByZWNlbnRseSB1c2VkIGRpc3Bs
YXkgbGlzdCBoYW5kbGUgaGFzIHJ1biBvdXQgb2YgYXZhaWxhYmxlIGNhcGFjaXR5LCB3ZSBtb3Zl
IGl0IHRvIHRoZSBlbmQKKyAgICAgICAgb2YgdGhlIHJldXNlIHF1ZXVlIGFuZCBvbmx5IHJldXNl
IHRoZSBuZXcgZmlyc3Qgc2hhcmVkIGhhbmRsZSBpbiB0aGUgcXVldWUgaWYgaXRzIHdyaXRhYmxl
IG9mZnNldCBjYW4gYmUgcmVzZXQuCisgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBHUFUg
cHJvY2VzcyBjYW4gYWx3YXlzIGNvbnRpbnVlIHJlYWRpbmcgZGlzcGxheSBsaXN0IGl0ZW0gZGF0
YSBmcm9tIHRoZSBzdGFydCBvZiBuZXcgaXRlbQorICAgICAgICBidWZmZXJzIC0tIGkuZS4sIHdl
IGRvbid0IGVuZCB1cCB3aXRoIHRoZSB3ZWIgcHJvY2VzcyB3cml0aW5nIG91dCBhIHN0cmVhbSBv
ZiBkaXNwbGF5IGxpc3QgZGF0YSBsaWtlOgorCisgICAgICAgICAgIChTdGFydCkgQnl0ZXMgKDE2
LCA2NTUyMCkgaW4gSXRlbUJ1ZmZlclsxXQorICAgICAgICAgICAgICAgICAgIEJ5dGVzICgxNiwg
NjU1MzYpIGluIEl0ZW1CdWZmZXJbMl0KKyAgICAgICAgICAgICAgICAgICBCeXRlcyAoNjU1MjAs
IDY1NTM2KSBpbiBJdGVtQnVmZmVyWzFdCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2Fi
bGVIYW5kbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKwogMjAyMC0xMS0yNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgbmV3IGRpc3Bs
YXkgbGlzdCBtZXRhIGNvbW1hbmRzIGluIHByZXBhcmF0aW9uIGZvciB3ZWJraXQub3JnL2IvMjE5
MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGNl
NmIwZTliMThiZGM3YWFiMzg0NGQ4NzM2NjM2ODkyMzk0MGUyMjguLjM5NGE4MmJkZDJmZmUzM2M1
MWIzMzY1ZjUxNTlhZjQ5ZTA5MzBiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCkBAIC05MDksNyArOTA5LDE0IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBw
ZW5kRW5jb2RlZERhdGEoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1iZXJP
ZkJ5dGVzKVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVCdWZmZXIuZGF0
YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwgZGF0YS0+
ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKLSAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5
dGVzICs9IGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtOworICAgIGRpZEFwcGVuZERh
dGFUb1dyaXRhYmxlQnVmZmVyKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKK30K
Kwordm9pZCBJdGVtQnVmZmVyOjpkaWRBcHBlbmREYXRhVG9Xcml0YWJsZUJ1ZmZlcihzaXplX3Qg
bnVtYmVyT2ZCeXRlcykKK3sKKyAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9IG51bWJlck9m
Qnl0ZXM7CisgICAgaWYgKG1fd3JpdGluZ0NsaWVudCkKKyAgICAgICAgbV93cml0aW5nQ2xpZW50
LT5kaWRBcHBlbmREYXRhKG1fd3JpdGFibGVCdWZmZXIsIG51bWJlck9mQnl0ZXMpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5oCmluZGV4IGMxMGNjM2U1MmEyMGFiNWVjMDJhNTYwNmNmYzg0OTMxZmYyMTI4NmYu
LjFlNDIxMGEwNDk0OWEwM2E3YWEyYmY5NzdiNjUxYjJkMTg4NTBmZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5k
bGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBJdGVt
QnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMpID0gMDsKIH07CiAKIGNsYXNzIEl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKQEAgLTE3MSw2ICsxNzIsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGVzJiByZWFkT25seUJ1ZmZlcnMoKSBjb25z
dCB7IHJldHVybiBtX3JlYWRPbmx5QnVmZmVyczsgfQogICAgIHZvaWQgZm9yRWFjaEl0ZW1CdWZm
ZXIoRnVuY3Rpb248dm9pZChjb25zdCBJdGVtQnVmZmVySGFuZGxlJik+JiYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YVRvV3JpdGFibGVCdWZmZXIoc2l6ZV90
IG51bWJlck9mQnl0ZXMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzd2FwV3JpdGFibGVC
dWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmRFbmNvZGVkRGF0YShJdGVtSGFuZGxlKTsKQEAgLTE3OSw3ICsxODEsNyBAQCBw
cml2YXRlOgogICAgICAgICBhdXRvKiBzdGFydE9mSXRlbSA9ICZtX3dyaXRhYmxlQnVmZmVyLmRh
dGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc107CiAgICAgICAgIHN0YXJ0T2ZJdGVtWzBdID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwogICAgICAgICBuZXcgKHN0YXJ0T2ZJdGVt
ICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAg
ICAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5C
eXRlcyhUOjppdGVtVHlwZSk7CisgICAgICAgIGRpZEFwcGVuZERhdGFUb1dyaXRhYmxlQnVmZmVy
KHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSkpOwogICAgIH0KIAog
ICAgIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KiBtX3JlYWRpbmdDbGllbnQgeyBudWxscHRyIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA3N2NiYTMzNmRjNWI5
NGY0ZGIyMWRhNjYxMTA3YmQ0YzMyY2Y3MDg1Li5hMzlkNzJiYzE4Y2M4NmVhNjQwZjE0NWJlYzZl
YzEzYWJkNDg2YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAg
LTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZSYpIHsgfQogICAgIH07CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dChG
bHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpZGVudGlm
aWVyKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEcmF3R2x5cGhzUmVjb3JkZXI7
CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtMTY0LDggKzE2Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKLSAgICB2b2lkIGRpZEFw
cGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEFw
cGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBw
ZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7CiAKICAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRl
bShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKaW5kZXggNGU0
ZDQ5MWYwZDA5NTM4OTY0M2I0OGEyNzBiMjZhZWYxMzdiN2JmZS4uMDAwYjNkOTI3ZWU4NTBkZjAy
ZDZkOTg2MmIyZDAxZTIzYTE5NDEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCkBAIC0z
MSwxNCArMzEsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHNpemVfdCBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQogewotICAgIGF1dG8gbG9j
a2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhpcyB9OwotICAgIGlmIChM
SUtFTFkoYW1vdW50IDw9IGhlYWRlcigpLnVucmVhZEJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGhl
YWRlcigpLnVucmVhZEJ5dGVzIC09IGFtb3VudDsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCByZXN1bHQgaW4gdGVybWluYXRpbmcgdGhlIHdlYiBwcm9jZXNzLgotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIGhlYWRlcigpLnVucmVhZEJ5dGVzID0gMDsKLSAgICByZXR1cm4gMDsK
KyAgICBhdXRvIHByZXZpb3VzVW5yZWFkQnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlcy5leGNo
YW5nZVN1YihhbW91bnQpOworICAgIGlmIChVTkxJS0VMWShwcmV2aW91c1VucmVhZEJ5dGVzIDwg
YW1vdW50KSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVzdWx0IGluIHRlcm1p
bmF0aW5nIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXNVbnJlYWRCeXRlcyAt
IGFtb3VudDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4g
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmRpc3BsYXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgY2FwYWNpdHksIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVu
dCYgY2xpZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaAppbmRleCBjYjcyMjM5NzY5NmRj
OWUwYjA2ZTg5Y2FjMjVjZTcyY2I5YTU3NmUxLi5jYTNlOGQ1ZDI0NzNiY2Y5NGY1NTYzMGI1Yzc0
ZjA1ODI5ZDc3ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApAQCAtMzgsNiArMzgsMjggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpKTsKICAgICB9CiAKKyAgICBj
bGFzcyBIYXNSZWFkZXJGb3JTY29wZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhh
c1JlYWRlckZvclNjb3BlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICB+SGFzUmVhZGVyRm9yU2NvcGUoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2hh
bmRsZS5oZWFkZXIoKS5oYXNSZWFkZXIuc3RvcmUoZmFsc2UpOworICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU7CisK
KyAgICAgICAgSGFzUmVhZGVyRm9yU2NvcGUoRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmIGhhbmRs
ZSkKKyAgICAgICAgICAgIDogbV9oYW5kbGUoaGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2hhbmRsZS5oZWFkZXIoKS5oYXNSZWFkZXIuc3RvcmUodHJ1ZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgbV9oYW5kbGU7CisgICAgfTsKKworICAg
IEhhc1JlYWRlckZvclNjb3BlIGNsYWltUmVhZGVyRm9yU2NvcGUoKSB7IHJldHVybiB7ICp0aGlz
IH07IH0KKwogICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3Bs
YXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCYpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKaW5kZXggNmRkZWIwMjc5MjllNTA0ZjgzYjBhMTg2YzdlZWFiOGU1Yjlk
Njg3Mi4uN2RmODA1YzBkZDc5MjhkYTA2ZjU4OWVlMGRlNDFjZDdhYzRiNjMwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcApAQCAtMTI5LDM2ICsxMjksNTMgQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBSZW4KICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVJbWFnZUJ1ZmZlcihtYWtlUmVm
KCppbWFnZUJ1ZmZlcikpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5
RGlzcGxheUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24sIERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlJiBoYW5kbGUsIHNpemVfdCBpbml0aWFsT2Zmc2V0KQorUmVmUHRyPElt
YWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoSW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5h
dGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5k
bGUpCiB7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIoaW5pdGlhbERlc3RpbmF0
aW9uKTsKICAgICBhdXRvIGhhbmRsZVByb3RlY3RvciA9IG1ha2VSZWYoaGFuZGxlKTsKIAotICAg
IHNpemVfdCBvZmZzZXQgPSBpbml0aWFsT2Zmc2V0OworICAgIGF1dG8gb2Zmc2V0ID0gaW5pdGlh
bE9mZnNldDsKICAgICBzaXplX3Qgc2l6ZVRvUmVhZCA9IDA7CiAKLSAgICBkbyB7Ci0gICAgICAg
IHNpemVUb1JlYWQgPSBoYW5kbGUudW5yZWFkQnl0ZXMoKTsKLSAgICB9IHdoaWxlICghc2l6ZVRv
UmVhZCk7CisgICAgYXV0byByZWFkZXJTY29wZSA9IGhhbmRsZS5jbGFpbVJlYWRlckZvclNjb3Bl
KCk7CisgICAgYXV0byB3YWl0Rm9yVW5yZWFkQnl0ZXMgPSBbJl0geworICAgICAgICBzaXplX3Qg
dW5yZWFkQnl0ZXMgPSAwOworICAgICAgICB3aGlsZSAoIXVucmVhZEJ5dGVzKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yZXZlciBoZXJlIHdoaWxlIHdhaXRpbmcg
Zm9yIG5ldyBkaXNwbGF5IGxpc3QgaXRlbXMuCisgICAgICAgICAgICAvLyBXZSB3aWxsIG5lZWQg
c29tZSBtZWNoYW5pc20gaGVyZSB0byBzdG9wIHdhaXRpbmcgYWZ0ZXIgYSBjZXJ0YWluIHRpbWUg
bGltaXQKKyAgICAgICAgICAgIC8vIGFuZCBjb29yZGluYXRlIHdpdGggdGhlIHdlYiBwcm9jZXNz
IHNvIHRoYXQgd2UgcmVjZWl2ZSBhIG5ldyB3YWtldXAgbWVzc2FnZQorICAgICAgICAgICAgLy8g
d2hlbiB0aGVyZSBhcmUgbW9yZSBpdGVtcyB0byBiZSBwcm9jZXNzZWQuCisgICAgICAgICAgICB1
c2xlZXAoOCk7CisgICAgICAgICAgICB1bnJlYWRCeXRlcyA9IGhhbmRsZS51bnJlYWRCeXRlcygp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bnJlYWRCeXRlczsKKyAgICB9OworCisgICAg
d2hpbGUgKGRlc3RpbmF0aW9uICYmICFtX25leHRJdGVtQnVmZmVyVG9SZWFkKSB7CisgICAgICAg
IGlmICghc2l6ZVRvUmVhZCkKKyAgICAgICAgICAgIHNpemVUb1JlYWQgPSB3YWl0Rm9yVW5yZWFk
Qnl0ZXMoKTsKIAotICAgIHdoaWxlIChzaXplVG9SZWFkKSB7CiAgICAgICAgIGF1dG8gZGlzcGxh
eUxpc3QgPSBoYW5kbGUuZGlzcGxheUxpc3RGb3JSZWFkaW5nKG9mZnNldCwgc2l6ZVRvUmVhZCwg
KnRoaXMpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWRpc3BsYXlMaXN0KSkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJv
Y2Vzcy4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZGVzdGlu
YXRpb24uaXNBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRlc3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlz
cGxheUxpc3QpOworICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHJlc3VsdDsKKyAg
ICAgICAgaWYgKGRlc3RpbmF0aW9uLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgICAgICByZXN1
bHQgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oKmRlc3RpbmF0
aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0
aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KCpkZXN0
aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKworICAgICAgICBzaXpl
VG9SZWFkID0gaGFuZGxlLmFkdmFuY2UocmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkKTsKIAogICAg
ICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0gb2Zmc2V0OwotICAgICAgICBjaGVja2Vk
T2Zmc2V0ICs9IHNpemVUb1JlYWQ7CisgICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gcmVzdWx0Lm51
bWJlck9mQnl0ZXNSZWFkOwogICAgICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZE9mZnNldC5oYXNP
dmVyZmxvd2VkKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVj
ayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCiAgICAgICAgIG9mZnNldCA9IGNoZWNrZWRPZmZzZXQudW5zYWZlR2V0KCk7CkBAIC0x
NjYsMTggKzE4MywyNCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxh
eUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpbwogICAgICAgICBpZiAoVU5M
SUtFTFkob2Zmc2V0ID4gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHBy
b2Nlc3MuCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgc2l6ZVRvUmVh
ZCA9IGhhbmRsZS5hZHZhbmNlKHNpemVUb1JlYWQpOworICAgICAgICBpZiAocmVzdWx0LnJlYXNv
bkZvclN0b3BwaW5nID09IERpc3BsYXlMaXN0OjpTdG9wUmVwbGF5UmVhc29uOjpFbmRPZkRpc3Bs
YXlMaXN0KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKHJlc3VsdC5yZWFzb25G
b3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6U3RvcFJlcGxheVJlYXNvbjo6Q2hhbmdlRGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0ciht
X3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoKnJlc3VsdC5uZXh0RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcikpOwogICAgIH0KKworICAgIHJldHVybiBkZXN0aW5hdGlvbjsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5pdGlhbE9mZnNldCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQnVmZmVySWRlbnRpZmllcikKIHsKICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShXYWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0U3RhcnQsIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RFbmQp
OwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1h
Z2VCdWZmZXIoZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKLSAgICBpZiAoVU5MSUtFTFko
IWltYWdlQnVmZmVyKSkgeworICAgIGF1dG8gZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG1ha2VS
ZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllcikpOworICAgIGlmIChVTkxJS0VMWSghZGVzdGluYXRpb25JbWFnZUJ1
ZmZlcikpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWlu
YXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTE5MCw3ICsyMTMsMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWQK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRs
ZSgqaW1hZ2VCdWZmZXIsICppbml0aWFsSGFuZGxlLCBpbml0aWFsT2Zmc2V0KTsKKyAgICBkZXN0
aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5
aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBpbml0aWFsT2Zmc2V0LCAq
aW5pdGlhbEhhbmRsZSk7CisKKyAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICB3aGlsZSAobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkgewogICAgICAgICBhdXRvIG5leHRIYW5k
bGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQobV9uZXh0SXRlbUJ1ZmZlclRvUmVh
ZCk7CkBAIC0xOTksOSArMjI3LDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2Fr
ZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkCiAgICAgICAg
ICAgICAvLyBJUEMgbWVzc2FnZSB3aXRoIGEgc2hhcmVkIG1lbW9yeSBoYW5kbGUgdG8gdGhlIG5l
eHQgaXRlbSBidWZmZXIuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCiAgICAgICAg
IC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRl
bSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAgICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQg
PSB7IH07Ci0gICAgICAgIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZSgqaW1hZ2VCdWZmZXIs
ICpuZXh0SGFuZGxlLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKTsKKyAg
ICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgKm5leHRIYW5kbGUpOworCisgICAgICAg
IGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCmluZGV4IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0ZjU3NTI0OTQ4OWQ3
MDVjNzguLjIyODBmZTM3YWVmNTRiMDI0YjM2ZmY5MTIwMGY3M2UzMGY0MzZlNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaApAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH0KIAotICAgIHZvaWQgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFu
ZGxlKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbiwgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUmLCBzaXplX3Qgb2Zmc2V0KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNl
dCwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
ci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5
TGlzdEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUuaAppbmRleCA4NjVmYWVkY2RlNzA2M2E4NDQyNDA1MGJiYjcxZmM0NmQwMjJkNTBiLi5mMTBj
NTM0MjFjZWVlOTFlYWZkYmUwZTM0MWY2NDlhNWRkN2U3YThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKQEAgLTUwLDM4ICs1MCwxMiBAQCBw
dWJsaWM6CiAKICAgICB1aW50NjRfdCB1bnJlYWRCeXRlcygpCiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsKLSAgICAg
ICAgcmV0dXJuIGhlYWRlcigpLnVucmVhZEJ5dGVzOworICAgICAgICByZXR1cm4gaGVhZGVyKCku
dW5yZWFkQnl0ZXMubG9hZCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgc2l6ZV90IGFkdmFuY2Uo
c2l6ZV90IGFtb3VudCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgY2xhc3MgTG9jayB7Ci0gICAg
cHVibGljOgotICAgICAgICBMb2NrKFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBoYW5kbGUpCi0g
ICAgICAgICAgICA6IG1faGFuZGxlKGhhbmRsZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXV0
byYgYXRvbWljVmFsdWUgPSBtX2hhbmRsZS5oZWFkZXIoKS5sb2NrOwotICAgICAgICAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBhdm9pZCB3
YWl0aW5nIGZvcmV2ZXIgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHdlYiBjb250ZW50IHByb2Nlc3MK
LSAgICAgICAgICAgICAgICAvLyBob2xkcyBvbiB0byB0aGUgbG9jayBpbmRlZmluaXRlbHkgKG9y
IGNyYXNoZXMgd2hpbGUgaG9sZGluZyB0aGUgbG9jaykuCi0gICAgICAgICAgICAgICAgdWludDY0
X3QgdW5sb2NrZWQgPSAwOwotICAgICAgICAgICAgICAgIGlmIChhdG9taWNWYWx1ZS5jb21wYXJl
RXhjaGFuZ2VXZWFrKHVubG9ja2VkLCAxKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgfkxvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2hhbmRsZS5oZWFk
ZXIoKS5sb2NrLnN0b3JlKDApOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgbV9oYW5kbGU7Ci0gICAgfTsKLQogICAgIFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKICAgICAgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAgICAgLCBtX3NoYXJlZE1lbW9yeShXVEZN
b3ZlKHNoYXJlZE1lbW9yeSkpCkBAIC04OSw4ICs2Myw4IEBAIHByb3RlY3RlZDoKICAgICB9CiAK
ICAgICBzdHJ1Y3QgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXIgewotICAgICAgICBBdG9t
aWM8dWludDY0X3Q+IGxvY2s7Ci0gICAgICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzOworICAgICAg
ICBBdG9taWM8dWludDY0X3Q+IHVucmVhZEJ5dGVzOworICAgICAgICBBdG9taWM8Ym9vbD4gaGFz
UmVhZGVyOwogICAgIH07CiAKICAgICBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciYgaGVh
ZGVyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheUxpc3RTaGFyZWRNZW1vcnlI
ZWFkZXIqPihkYXRhKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCmluZGV4
IGQ4MmUzZGZhZGVlODZlYjBkNTU0MWIyNzg1NzY4MjE4N2Y2NWNmOGIuLmJlYTA1NjllNGExOGFk
ZjM1YzQwZGVjYTljMzM5N2RhZTljZmEzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUuY3BwCkBAIC0zOCwxNCArMzgsMTMgQEAgc2l6ZV90IERpc3BsYXlMaXN0V3JpdGVySGFuZGxl
OjphZHZhbmNlKHNpemVfdCBhbW91bnQpCiAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRXcml0YWJs
ZU9mZnNldC5oYXNPdmVyZmxvd2VkKCkpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogCi0gICAgYXV0byBsb2NrZXIgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9j
ayB7ICp0aGlzIH07Ci0gICAgQ2hlY2tlZFNpemUgY2hlY2tlZFVucmVhZEJ5dGVzID0gaGVhZGVy
KCkudW5yZWFkQnl0ZXM7CisgICAgbV93cml0YWJsZU9mZnNldCA9IGNoZWNrZWRXcml0YWJsZU9m
ZnNldC51bnNhZmVHZXQoKTsKKworICAgIENoZWNrZWRTaXplIGNoZWNrZWRVbnJlYWRCeXRlcyA9
IGhlYWRlcigpLnVucmVhZEJ5dGVzLmV4Y2hhbmdlQWRkKGFtb3VudCk7CiAgICAgY2hlY2tlZFVu
cmVhZEJ5dGVzICs9IGFtb3VudDsKICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZFVucmVhZEJ5dGVz
Lmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKLSAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gY2hlY2tlZFdyaXRhYmxlT2Zmc2V0LnVuc2FmZUdl
dCgpOwotICAgIGhlYWRlcigpLnVucmVhZEJ5dGVzID0gY2hlY2tlZFVucmVhZEJ5dGVzLnVuc2Fm
ZUdldCgpOwogICAgIHJldHVybiBjaGVja2VkVW5yZWFkQnl0ZXMudW5zYWZlR2V0KCk7CiB9CiAK
QEAgLTY2LDEzICs2NSwxNiBAQCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRlSGFuZGxlKCkgY29uc3QKICAgICB9OwogfQogCi1ib29s
IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgp
Citib29sIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjptb3ZlV3JpdGFibGVPZmZzZXRUb1N0YXJ0
SWZQb3NzaWJsZSgpCiB7CiAgICAgaWYgKG1fd3JpdGFibGVPZmZzZXQgPD0gU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3dy
aXRhYmxlT2Zmc2V0ID09IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAoaGVhZGVyKCkuaGFzUmVhZGVy
LmxvYWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKHVucmVhZEJ5dGVzKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oCmlu
ZGV4IDQ0ZWVmYWFiNDhmNDkxMWZlYWRiZWQ1OGFlNTdhMmE2M2IxZDhhZDcuLmZjN2EyMTY1M2Ew
ZWI5NjgxOWViMWMwOWE5ZmMzNDQ0ODFhNzM5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHNpemVfdCB3cml0YWJsZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGFibGVPZmZzZXQ7IH0KICAgICBzaXplX3QgYXZhaWxh
YmxlQ2FwYWNpdHkoKSBjb25zdDsKIAotICAgIGJvb2wgcmVzZXRXcml0YWJsZU9mZnNldElmUG9z
c2libGUoKTsKKyAgICBib29sIG1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCk7
CiAKICAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVIYW5kbGUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggNTFiZDU3MTI5NThhZjEyYTIzMTVkNDFi
YTNkMmQ2YjllZDU3ZjJiYS4uNjgwZWI3YjE4ZDQ1YjRlOWVjMzlkMDIyZDZhOWYyNzkwNjQ5NzQz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTExMSw2ICsxMTEsMjQgQEAgcHVi
bGljOgogICAgICAgICBBU1NFUlQobV9zZW50Rmx1c2hJZGVudGlmaWVyID09IHRhcmdldEZsdXNo
SWRlbnRpZmllcik7CiAgICAgfQogCisgICAgdm9pZCBlbmREaXNwbGF5TGlzdCgpCisgICAgewor
ICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkudGVtcGxhdGUgYXBwZW5kPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZEVuZD4oKTsKKyAgICB9CisKKyAgICB2b2lk
IGNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIG5leHRJbWFnZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJvb2wgd2FzRW1wdHkg
PSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuaXNFbXB0eSgpOworICAgICAgICBtX2Ry
YXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkudGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KG5leHRJbWFn
ZUJ1ZmZlcik7CisgICAgICAgIGlmICh3YXNFbXB0eSkKKyAgICAgICAgICAgIGNsZWFyRGlzcGxh
eUxpc3QoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRGlzcGxheUxpc3QoKQorICAgIHsKKyAg
ICAgICAgbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmNsZWFyKCk7CisgICAgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAgICAg
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKQEAgLTEzNyw5ICsxNTUsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIFdhaXQgZm9yIG91ciBEaXNwbGF5TGlzdCB0byBiZSBmbHVz
aGVkIGJ1dCBkbyBub3QgaGFuZy4KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBt
YXhXYWl0aW5nRmx1c2ggPSAzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIG51bVdhaXRpbmdGbHVz
aCA9IDA7IG51bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRpbmdGbHVzaCAmJiBoYXNQZW5kaW5nRmx1
c2goKTsgKytudW1XYWl0aW5nRmx1c2gpCi0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+d2FpdEZvckRpZEZsdXNoKCk7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbWF4aW11bU51bWJlck9mVGltZW91dHMgPSAzOworICAgICAgICB1bnNpZ25lZCBu
dW1iZXJPZlRpbWVvdXRzID0gMDsKKyAgICAgICAgd2hpbGUgKG51bWJlck9mVGltZW91dHMgPCBt
YXhpbXVtTnVtYmVyT2ZUaW1lb3V0cyAmJiBoYXNQZW5kaW5nRmx1c2goKSkgeworICAgICAgICAg
ICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckRpZEZsdXNoKCkp
CisgICAgICAgICAgICAgICAgKytudW1iZXJPZlRpbWVvdXRzOworICAgICAgICB9CiAgICAgfQog
CiAgICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUK
QEAgLTE1MSwxOCArMTcyLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvJiBtdXRhYmxlVGhpcyA9IGNv
bnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSY+KCp0aGlzKTsKLSAgICAgICAgYXV0byYg
ZGlzcGxheUxpc3QgPSBtdXRhYmxlVGhpcy5tX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7
Ci0gICAgICAgIGlmICghZGlzcGxheUxpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtdXRh
YmxlVGhpcy5zdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7Ci0gICAgICAgICAgICBtdXRh
YmxlVGhpcy5tX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0ID0gMDsKLSAgICAgICAgICAg
IGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBnZXRJbWFnZURh
dGEgaXMgc3luY2hyb25vdXMsIHdoaWNoIG1lYW5zIHdlJ3ZlIGFscmVhZHkgcmVjZWl2ZWQgdGhl
IENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0IG1lc3NhZ2UuCiAgICAgICAgIHJldHVybiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwg
c3JjUmVjdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIApAQCAtMTg0
LDYgKzE5Niw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgp
IG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBUcmFjZVNjb3Bl
IHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1h
Z2VCdWZmZXJFbmQpOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCk7CiAg
ICAgICAgIHdhaXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KCk7CkBAIC0xOTEsNDkgKzIwNiw1NiBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKSBv
dmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2Ry
YXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghbV9kcmF3aW5nQ29udGV4
dC5kaXNwbGF5TGlzdCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV9zZW50Rmx1c2hJZGVu
dGlmaWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5mbHVzaENvbnRleHQo
bV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKKyAgICAgICAgfQogCi0gICAgICAgIG1fc2VudEZsdXNo
SWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6OmdlbmVy
YXRlKCk7Ci0gICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIpOwotICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxp
c3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAgbV9pdGVtQ291bnRJ
bkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Cisg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5kaWRBcHBlbmRGbHVzaENvbnRl
eHRJdGVtKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgY2xlYXJEaXNw
bGF5TGlzdCgpOwogICAgIH0KIAotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKKyAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5
TGlzdC5pc0VtcHR5KCkpCisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkoKS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICB9CisKKyAgICB2
b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSB0
eXBlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS0+c2V0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcihtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgPT0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJc0ZpcnN0
RGVzdGluYXRpb246OlllcykKKyAgICAgICAgICAgIG1faXNBcHBlbmRpbmdEaXNwbGF5TGlzdEl0
ZW1Gb3JJbml0aWFsRGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IHRydWU7CiAgICAgfQogCi0gICAg
dm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUp
IG92ZXJyaWRlCisgICAgdm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySGFuZGxlJiBoYW5kbGUsIHNpemVfdCBudW1iZXJPZkJ5dGVzKSBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJhdGNoU2l6
ZSA9IDUxMjsKLSAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRp
c3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmICgrK21faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxp
c3QgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
bV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIHN1Ym1pdERpc3Bs
YXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICAg
ICAgYXV0byBuZWVkc1dha2V1cE1lc3NhZ2UgPSBtX2lzQXBwZW5kaW5nRGlzcGxheUxpc3RJdGVt
Rm9ySW5pdGlhbERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIKKyAgICAgICAgICAgID8gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpOZWVkc1dha2V1cE1lc3NhZ2U6OlllcworICAgICAgICAgICAg
OiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Ok5lZWRzV2FrZXVwTWVzc2FnZTo6Tm87CisK
KyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmRpZEFwcGVuZERhdGEoaGFu
ZGxlLCBudW1iZXJPZkJ5dGVzLCBuZWVkc1dha2V1cE1lc3NhZ2UsIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29y
ZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkQXBwZW5kSXRlbU9m
VHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkgb3ZlcnJpZGUKICAgICB7
Ci0gICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHko
KS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICAgICAgbV9pc0FwcGVuZGluZ0Rpc3BsYXlM
aXN0SXRlbUZvckluaXRpYWxEZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gZmFsc2U7CisKKyAgICAg
ICAgaWYgKHR5cGUgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXIpCisgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CiAgICAgfQogCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihz
aXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAobV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIGlmIChMSUtFTFkobV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5jcmVhdGVJdGVtQnVmZmVyKGNhcGFjaXR5LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMzYsMTIgKzM1
OCw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgZGlkQXBwZW5k
SXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGlmICh0eXBlID09IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0ltYWdlQnVmZmVyKQotICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwot
ICAgIH0KLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZm
ZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVy
biBXVEY6Om1ha2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjxCYWNr
ZW5kVHlwZT4+KCp0aGlzKTsKQEAgLTM1OCw2ICszNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZmxv
YXQgbV9yZXNvbHV0aW9uU2NhbGU7CiAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZSBtX2NvbG9yU3Bh
Y2U7CiAgICAgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgbV9waXhlbEZvcm1hdDsKKyAgICBib29sIG1f
aXNBcHBlbmRpbmdEaXNwbGF5TGlzdEl0ZW1Gb3JJbml0aWFsRGVzdGluYXRpb25JbWFnZUJ1ZmZl
ciB7IGZhbHNlIH07CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBjMDdiMjNmYjJiMGU1OGUw
ZTFkZmY1YTE0ZWUwYTg1ZDlhNWI2NDVkLi43MWU2Zjk4NDJhNTZiNzZhYmEyMzhjYjE2MjNmODUx
ZmFkZTM4MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBA
IC05Niw5ICs5NiwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdAogICAgIHByZXZpb3VzQ29u
bmVjdGlvbi5yZW1vdmVDbGllbnQoKnRoaXMpOwogCiAgICAgbV9pZGVudGlmaWVyc09mUmV1c2Fi
bGVIYW5kbGVzLmNsZWFyKCk7Ci0gICAgbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZv
cldyaXRpbmcuY2xlYXIoKTsKICAgICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5jbGVhcigp
OwogCisgICAgbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoLmNsZWFyKCk7
CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBXVEY6Om51
bGxvcHQ7CisKICAgICByZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiB9CiAKQEAg
LTExMiw4ICsxMTQsMjkgQEAgdWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmVuZEN1cnJlbnREaXNwbGF5TGlzdCgpCit7CisgICAgaWYgKCFtX2N1cnJl
bnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZElt
YWdlQnVmZmVyKCptX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcik7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGltYWdlQnVm
ZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5lbmREaXNwbGF5TGlzdCgpOworICAgIGVs
c2UKKyAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
KCppbWFnZUJ1ZmZlcikuZW5kRGlzcGxheUxpc3QoKTsKKworICAgIG1faWRlbnRpZmllcnNPZklt
YWdlQnVmZmVyc1BlbmRpbmdGbHVzaC5jbGVhcigpOworICAgIG1fY3VycmVudERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworfQorCiBib29sIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQo
KQogeworICAgIC8vIEZJWE1FOiBXZSBjYW4gcmVtb3ZlIHRoaXMgb25jZSBiYWNrZW5kIGNyZWF0
aW9uIGlzIG5vIGxvbmdlciBzeW5jaHJvbm91cy4KKyAgICBlbmRDdXJyZW50RGlzcGxheUxpc3Qo
KTsKKwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKICAg
ICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRp
b246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CkBAIC0xNDQsMzUg
KzE2NywxNCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaQogCiBSZWZQdHI8SW1hZ2VEYXRhPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKKyAgICAvLyBG
SVhNRTogV2UgY2FuIHJlbW92ZSB0aGlzIGVpdGhlciBvbmNlIHdlIGludHJvZHVjZSBhIEdldElt
YWdlRGF0YSBkaXNwbGF5IGxpc3QgaXRlbS4KKyAgICBlbmRDdXJyZW50RGlzcGxheUxpc3QoKTsK
KwogICAgIElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhKG91
dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRh
UmVmZXJlbmNlKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zKTsKICAgICByZXR1
cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6c3VibWl0RGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQnVmZmVySWRlbnRpZmllcikKLXsKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzaXplX3Q+PiBpZGVudGlmaWVyQW5kT2Zmc2V0Rm9y
V2FrZVVwTWVzc2FnZTsKLSAgICBib29sIGlzRmlyc3RIYW5kbGUgPSB0cnVlOwotCi0gICAgZGlz
cGxheUxpc3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZdIChhdXRvJiBoYW5kbGUpIHsKLSAgICAgICAg
bV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuYWRkKGhhbmRsZS5pZGVu
dGlmaWVyKTsKLQotICAgICAgICBhdXRvKiBzaGFyZWRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlcy5nZXQoaGFuZGxlLmlkZW50aWZpZXIpOwotICAgICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX01FU1NBR0Uoc2hhcmVkSGFuZGxlLCAiJXMgZmFpbGVkIHRvIGZpbmQgc2hhcmVkIGRp
c3BsYXkgbGlzdCIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOwotCi0gICAgICAgIGJvb2wgdW5yZWFk
Q291bnRXYXNFbXB0eSA9IHNoYXJlZEhhbmRsZS0+YWR2YW5jZShoYW5kbGUuY2FwYWNpdHkpID09
IGhhbmRsZS5jYXBhY2l0eTsKLSAgICAgICAgaWYgKGlzRmlyc3RIYW5kbGUgJiYgdW5yZWFkQ291
bnRXYXNFbXB0eSkKLSAgICAgICAgICAgIGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNz
YWdlID0ge3sgaGFuZGxlLmlkZW50aWZpZXIsIGhhbmRsZS5kYXRhIC0gc2hhcmVkSGFuZGxlLT5k
YXRhKCkgfX07Ci0KLSAgICAgICAgaXNGaXJzdEhhbmRsZSA9IGZhbHNlOwotICAgIH0pOwotCi0g
ICAgaWYgKGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlKSB7Ci0gICAgICAgIGF1
dG8gW2lkZW50aWZpZXIsIG9mZnNldF0gPSAqaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1l
c3NhZ2U7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Oldh
a2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoaWRlbnRpZmllciwgb2Zmc2V0LCBkZXN0aW5hdGlvbkJ1
ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICB9Ci19
Ci0KIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiBpbWFnZSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoaW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CkBAIC0yMDcsMzcgKzIwOSw4MyBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVz
aElkZQogICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eT4oKmltYWdlQnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOwogfQogCi12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKCkKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmRGbHVzaENvbnRleHRJdGVtKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGZvciAoYXV0byBp
ZGVudGlmaWVyIDogbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcpIHsK
LSAgICAgICAgYXV0byogaGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlk
ZW50aWZpZXIpOwotICAgICAgICBpZiAoIWhhbmRsZS0+cmVzZXRXcml0YWJsZU9mZnNldElmUG9z
c2libGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGlmICghbV9pZGVudGlmaWVyc09m
SW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoLnJlbW92ZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1faWRlbnRpZmllcnNPZkltYWdlQnVmZmVyc1BlbmRpbmdGbHVzaC5p
c0VtcHR5KCkpCisgICAgICAgIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgpOworfQogCi0gICAgICAg
IGlmIChtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuY29udGFpbnMoaWRlbnRpZmllcikp
Ci0gICAgICAgICAgICBjb250aW51ZTsKK1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SXNG
aXJzdERlc3RpbmF0aW9uIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2V0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbmV3RGVzdGluYXRpb25J
ZGVudGlmaWVyKQoreworICAgIGlmIChtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRl
bnRpZmllciA9PSBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBJc0Zp
cnN0RGVzdGluYXRpb246Ok5vOwogCi0gICAgICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFu
ZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8gcHJldmlvdXNEZXN0aW5hdGlv
bkJ1ZmZlcklkZW50aWZpZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY3VycmVudERlc3RpbmF0aW9uSW1h
Z2VCdWZmZXJJZGVudGlmaWVyLCBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpKSB7CisgICAgICAg
IGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVk
SW1hZ2VCdWZmZXIoKnByZXZpb3VzRGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKSkgeworICAg
ICAgICAgICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgICAgICAg
ICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZm
ZXIpLmNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIobmV3RGVzdGluYXRpb25JZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcik7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNhY2hlZEltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpIHsKKyAgICAgICAg
aWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgICAgICBkb3duY2FzdDxB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY2xlYXJEaXNw
bGF5TGlzdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jbGVhckRpc3BsYXlMaXN0
KCk7CiAgICAgfQorCisgICAgYXV0byByZXN1bHQgPSBtX2lkZW50aWZpZXJzT2ZJbWFnZUJ1ZmZl
cnNQZW5kaW5nRmx1c2guaXNFbXB0eSgpID8gSXNGaXJzdERlc3RpbmF0aW9uOjpZZXMgOiBJc0Zp
cnN0RGVzdGluYXRpb246Ok5vOworICAgIG1faWRlbnRpZmllcnNPZkltYWdlQnVmZmVyc1BlbmRp
bmdGbHVzaC5hZGQobmV3RGVzdGluYXRpb25JZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1EaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5LCBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEoY29uc3QgRGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJIYW5kbGUmIGhhbmRsZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIE5lZWRzV2FrZXVw
TWVzc2FnZSBuZWVkc1dha2V1cE1lc3NhZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbkltYWdlQnVmZmVyKQogewotICAgIHVwZGF0ZVJldXNhYmxlSGFuZGxlcygpOwor
ICAgIGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldCho
YW5kbGUuaWRlbnRpZmllcik7CisgICAgaWYgKFVOTElLRUxZKCFzaGFyZWRIYW5kbGUpKQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIkZhaWxlZCB0byBm
aW5kIHNoYXJlZCBkaXNwbGF5IGxpc3Q6ICVsbHUiLCBoYW5kbGUuaWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKIAotICAgIHdoaWxlICghbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmlzRW1w
dHkoKSkgewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzT2ZSZXVzYWJs
ZUhhbmRsZXMuZmlyc3QoKTsKLSAgICAgICAgYXV0byogcmV1c2FibGVIYW5kbGUgPSBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaWRlbnRpZmllcik7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRShyZXVzYWJsZUhhbmRsZSwgIiVzIGZhaWxlZCB0byBmaW5kIHNoYXJl
ZCBkaXNwbGF5IGxpc3QiLCBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsKKyAgICBzaGFyZWRIYW5kbGUt
PmFkdmFuY2UobnVtYmVyT2ZCeXRlcyk7CiAKLSAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZkhh
bmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLmNvbnRhaW5zKGlkZW50aWZpZXIpICYmIHJldXNhYmxl
SGFuZGxlLT5hdmFpbGFibGVDYXBhY2l0eSgpID49IGNhcGFjaXR5KSB7Ci0gICAgICAgICAgICBt
X2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5yZW1vdmUoaWRlbnRpZmll
cik7Ci0gICAgICAgICAgICByZXR1cm4gcmV1c2FibGVIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOwot
ICAgICAgICB9CisgICAgaWYgKG5lZWRzV2FrZXVwTWVzc2FnZSA9PSBOZWVkc1dha2V1cE1lc3Nh
Z2U6OlllcykgeworICAgICAgICBhdXRvIGluaXRpYWxPZmZzZXQgPSBoYW5kbGUuZGF0YSAtIHNo
YXJlZEhhbmRsZS0+ZGF0YSgpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGhhbmRsZS5pZGVudGlmaWVyLCBp
bml0aWFsT2Zmc2V0LCBkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CisgICAgfQorfQogCi0gICAgICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxl
SGFuZGxlcy5yZW1vdmVGaXJzdCgpOworUmVmUHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZpbmRSZXVzYWJsZURpc3BsYXlMaXN0SGFuZGxl
KHNpemVfdCBjYXBhY2l0eSkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9pZGVudGlmaWVyc09mUmV1
c2FibGVIYW5kbGVzLmlzRW1wdHkoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
YXV0byBtb3N0UmVjZW50bHlVc2VkSWRlbnRpZmllciA9IG1faWRlbnRpZmllcnNPZlJldXNhYmxl
SGFuZGxlcy5maXJzdCgpOworICAgIGF1dG8gaGFuZGxlID0gbWFrZVJlZlB0cihtX3NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlcy5nZXQobW9zdFJlY2VudGx5VXNlZElkZW50aWZpZXIpKTsKKyAgICBo
YW5kbGUtPm1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCk7CisgICAgaWYgKGhh
bmRsZS0+YXZhaWxhYmxlQ2FwYWNpdHkoKSA+PSBjYXBhY2l0eSkKKyAgICAgICAgcmV0dXJuIGhh
bmRsZTsKKworICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQobV9pZGVu
dGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLnRha2VGaXJzdCgpKTsKKworICAgIGF1dG8gbGVhc3RS
ZWNlbnRseVVzZWRJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmZp
cnN0KCk7CisgICAgaWYgKGxlYXN0UmVjZW50bHlVc2VkSWRlbnRpZmllciAhPSBtb3N0UmVjZW50
bHlVc2VkSWRlbnRpZmllcikgeworICAgICAgICBhdXRvIGhhbmRsZSA9IG1ha2VSZWZQdHIobV9z
aGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGxlYXN0UmVjZW50bHlVc2VkSWRlbnRpZmllcikp
OworICAgICAgICBpZiAoaGFuZGxlLT5tb3ZlV3JpdGFibGVPZmZzZXRUb1N0YXJ0SWZQb3NzaWJs
ZSgpICYmIGhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNpdHkoKSA+PSBjYXBhY2l0eSkKKyAgICAgICAg
ICAgIHJldHVybiBoYW5kbGU7CiAgICAgfQogCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0Rp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaGFuZGxl
ID0gZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUoY2FwYWNpdHkpKQorICAgICAgICByZXR1
cm4gaGFuZGxlLT5jcmVhdGVIYW5kbGUoKTsKKwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSA9IDEgPDwgMTY7CiAgICAgc3RhdGljX2Fzc2Vy
dChkZWZhdWx0U2hhcmVkSXRlbUJ1ZmZlclNpemUgPiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
aGVhZGVyU2l6ZSgpKTsKIApAQCAtMjU0LDcgKzMwMiw3IEBAIERpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihz
aXplCiAgICAgYXV0byBuZXdIYW5kbGUgPSBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRl
KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBhdXRvIGRp
c3BsYXlMaXN0SGFuZGxlID0gbmV3SGFuZGxlLT5jcmVhdGVIYW5kbGUoKTsKIAotICAgIG1faWRl
bnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgbV9pZGVu
dGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLnByZXBlbmQoaWRlbnRpZmllcik7CiAgICAgbV9zaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZpZXIsIFdURk1vdmUobmV3SGFuZGxlKSk7
CiAKICAgICByZXR1cm4gZGlzcGxheUxpc3RIYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaAppbmRleCA5NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAwNzg2ZjAyNGQ3
ZTI2Li5mZTc3MGYxZmZjMTc0OTEzNjM5NmQwYjFiM2VkMWNjYTk5ZjI1NmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTY2LDYgKzY2LDEzIEBAIHB1YmxpYzoK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkmIHJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgp
IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OyB9CiAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNp
dHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZl
cklkZW50aWZpZXIpOwogCisgICAgZW51bSBjbGFzcyBOZWVkc1dha2V1cE1lc3NhZ2UgOiBib29s
IHsgTm8sIFllcyB9OworICAgIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCBudW1iZXJPZkJ5dGVzLCBOZWVkc1dh
a2V1cE1lc3NhZ2UsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5h
dGlvbkltYWdlQnVmZmVyKTsKKworICAgIGVudW0gY2xhc3MgSXNGaXJzdERlc3RpbmF0aW9uIDog
Ym9vbCB7IE5vLCBZZXMgfTsKKyAgICBJc0ZpcnN0RGVzdGluYXRpb24gc2V0RGVzdGluYXRpb25J
bWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZv
aWQgZGlkQXBwZW5kRmx1c2hDb250ZXh0SXRlbShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOworCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVj
dGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzYs
NyArODMsNiBAQCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHN1Ym1pdERp
c3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZp
ZXIpOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC05Miwx
NyArOTgsMjAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdFRvR1BVUHJvY2VzcygpOwog
ICAgIHZvaWQgcmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwotICAgIHZvaWQgdXBk
YXRlUmV1c2FibGVIYW5kbGVzKCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4K
ICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4
ZWxGb3JtYXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAKKyAgICB2b2lkIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgpOworICAgIFJlZlB0cjxEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZT4gZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUoc2l6ZV90IGNh
cGFjaXR5KTsKKwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4+IG1f
c2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAgIERlcXVlPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzOwot
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBt
X2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZzsKICAgICBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHsgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVu
ZGluZ0ZsdXNoOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBhNDY2NGJhYWM5YzQyNGM1NmM4NmE5MjYwN2E0MmM1NjIwNzY5MDUz
Li4zZTRmN2UwNDMyNjQ0ZGVlN2MyMDk0YTRlMjg1NWI1ZjY5YzBjYWU3IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjAtMTEtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gUmVtb3ZlIGRpc3BsYXkgbGlzdCBpdGVtIGJh
dGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTkwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTExLTI3ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBuZXcgZGlzcGxheSBs
aXN0IG1ldGEgY29tbWFuZHMgaW4gcHJlcGFyYXRpb24gZm9yIHdlYmtpdC5vcmcvYi8yMTkwOTEK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlz
dFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlz
dFRlc3RzLmNwcAppbmRleCBlYmQ4NmUzMmUwNjJjYWRmNmE5YjAxYWVkY2M3N2FkOGY2ZTI0NTQz
Li5jZmExMDNjMDNhZGZkMzUzMTVlYmEyNjFjNDJiYTUyM2FmZGNkMGM0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3Bw
CkBAIC0xNzMsNyArMTczLDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xp
ZW50KQogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFu
ZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24p
CisgICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJ
dGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBl
LCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAg
RVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAgIEVYUEVD
VF9FUShkYXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7CkBAIC0yMDUsNiArMjA1LDggQEAgVEVT
VChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZpbmRleCks
IHNpemVvZihzaXplX3QpKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgZGlkQXBwZW5kRGF0
YShjb25zdCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90KSBmaW5hbCB7IH0KKwogICAgICAgICBW
ZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CiAgICAgfTsKIAo=
</data>
<flag name="commit-queue"
          id="432003"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414970</attachid>
            <date>2020-11-27 13:35:15 -0800</date>
            <delta_ts>2020-12-04 14:56:01 -0800</delta_ts>
            <desc>Try to fix Win build</desc>
            <filename>bug-219091-20201127133514.patch</filename>
            <type>text/plain</type>
            <size>55387</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTMxNjFhOWU3ZTc5NTVm
YTYzZDJjOTczNmEzMTE0Y2VkZmNkNWNmNy4uNDRkNjc2OGYwZDYzYjdkZGI1N2IxMDJkYjk1YzRk
MDU0NzE3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTExLTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBiYXRjaGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmRFbmNvZGVkRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6ZGlkQXBwZW5kRGF0YVRvV3Jp
dGFibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKworICAgICAgICBBZGQgYSBuZXcgYEl0ZW1CdWZmZXJX
cml0aW5nQ2xpZW50YCBtZXRob2QgdG8gaW5mb3JtIGNsaWVudHMgd2hlbiBuZXcgYnl0ZXMgYXJl
IGFwcGVuZGVkIHRvIGFuIGl0ZW0gYnVmZmVyLAorICAgICAgICBnaXZlbiB0aGUgYWRkaXRpb25h
bCBudW1iZXIgb2YgYnl0ZXMgYWRkZWQgYW5kIHRoZSBpdGVtIGJ1ZmZlciBoYW5kbGUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjp1bmNoZWNrZWRBcHBlbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZsdXNo
Q29udGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEg
YEZsdXNoQ29udGV4dGAgaXRlbSB2aWEgdGhlIGRpc3BsYXkgbGlzdCByZWNvcmRlciwgdG8gZW5z
dXJlIHRoYXQgdGhlCisgICAgICAgIGFwcHJvcHJpYXRlIHJlY29yZGVyIGRlbGVnYXRlIG1ldGhv
ZHMgYXJlIGludm9rZWQgd2hlbiBhcHBlbmRpbmcgYSAiZmx1c2ggY29udGV4dCIgaXRlbS4KKwog
MjAyMC0xMS0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbnRyb2R1Y2UgbmV3IGRpc3BsYXkgbGlzdCBtZXRhIGNvbW1hbmRzIGluIHByZXBhcmF0
aW9uIGZvciB3ZWJraXQub3JnL2IvMjE5MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU4MjliZTUzODQzNzRlMTEw
MzE3ZjQxZmUxMmY2NjAwNDQ0MjJhYWIuLjQ1NTNhNjgzYmIyZGZmNGI4YWZjMTAxNjk5MTcxYWJl
MWMwMDgyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAwIEBACisyMDIwLTExLTI2ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIFJlbW92ZSBkaXNwbGF5IGxpc3QgaXRlbSBiYXRjaGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JzIHRoZSBleGlz
dGluZyBjb25jdXJyZW50IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIG1lY2hhbmlzbSwgc3VjaCB0
aGF0IHdlIG5vIGxvbmdlciB1cGRhdGUgdGhlIHVucmVhZAorICAgICAgICBieXRlcyBjb3VudCBl
dmVyeSA1MTIgaXRlbXMgKG9yIHdoZW4gZmx1c2hpbmcgdGhlIGRyYXdpbmcgY29udGV4dCksIGFu
ZCBpbnN0ZWFkIHVwZGF0ZSBpdCBldmVyeSB0aW1lIHdlIGFwcGVuZAorICAgICAgICBkaXNwbGF5
IGxpc3QgaXRlbSBkYXRhLiBJbiBvcmRlciB0byBhY2hpZXZlIHRoaXMgd2l0aG91dCBtYWtpbmcg
aXQgaW1wb3NzaWJsZSBmb3IgbXVsdGlwbGUgZGlzcGxheS1saXN0IGJhY2tlZAorICAgICAgICBp
bWFnZSBidWZmZXJzIHRvIHJlbmRlciBzaW11bHRhbmVvdXNseSwgd2UgYWxzbyBhZGQgc3VwcG9y
dCBmb3Igc3luY2hyb25pemluZyBkaXNwbGF5IGxpc3QgaXRlbXMgYWNyb3NzCisgICAgICAgIGRp
ZmZlcmVudCBpbWFnZSBidWZmZXJzIGJ5IHVzaW5nIHRoZSBuZXcgbWV0YSBjb21tYW5kIGl0ZW1z
IGFkZGVkIGluIGJ1ZyAjMjE5MjYyLiBBcyBkZXRhaWxlZCBpbiB0aGUgQ2hhbmdlTG9nCisgICAg
ICAgIGZvciB0aGF0IGJ1ZywgYSBzdHJlYW0gb2YgZGlzcGxheSBsaXN0IGRhdGEgd3JpdHRlbiBi
eSB0aGUgd2ViIHByb2Nlc3MgYW5kIGNvbnN1bWVkIGJ5IHRoZSBHUFUgcHJvY2VzcyBpcyBub3cK
KyAgICAgICAgc3RydWN0dXJlZCBsaWtlIHNvOgorCisgICAgICAgIFdha2V1cCBtZXNzYWdlIGlu
aXRpYXRlcyBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyB3aXRoIEltYWdlIEJ1ZmZlciBBIGFuZCBJ
dGVtIEJ1ZmZlciAxCisgICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgTWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKEIpCisgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKDIpCisgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICB2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rKworICAgICAgICAg
ICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rIHwKKyAgICAgICAgICAgIHwgfCBEZXN0aW5hdGlvbiAgICAgICAgfCB8IERlc3RpbmF0aW9u
ICAgICAgICAgICAgICAgICAgfCB8IEl0ZW0gQnVmZmVyIDEKKyAgICAgICAgICAgIHwgfCBJbWFn
ZSBCdWZmZXIgQSAgICAgfCB8IEltYWdlIEJ1ZmZlciBCICAgICAgICAgICAgICAgfCB8CisgICAg
ICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAg
IHwgKy0tLS0tLS0tLS0tLS0tKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICB8IHwgRHN0LiBJbWFnZSAgIHwgfCBEZXN0aW5hdGlvbiBJbWFnZSAg
ICAgfCAgVW51c2VkICAgICAgfCBJdGVtIEJ1ZmZlciAyCisgICAgICAgICAgICB8IHwgQnVmZmVy
IEIgICAgIHwgfCBCdWZmZXIgQSAgICAgICAgICAgICAgfCAgQ2FwYWNpdHkgICAgfAorICAgICAg
ICAgICAgfCArLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe
ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgTWV0YUNvbW1hbmRFbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcihBKQorCisgICAgICAgIEluIG9yZGVyIHRvIHdyaXRlIGRpc3BsYXkgbGlz
dCBkYXRhIGNvbmZvcm1pbmcgdG8gdGhpcyBmb3JtYXQsIHdlIGFkZCBhIG1lY2hhbmlzbSB0byB0
aGUgd2ViIHByb2Nlc3MgdGhhdCBrZWVwcworICAgICAgICB0cmFjayBvZiB0aGUgImN1cnJlbnQg
ZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIiAoaS5lLiB0aGUgaW1hZ2UgYnVmZmVyIHRoYXQgaGFz
IG1vc3QgcmVjZW50bHkKKyAgICAgICAgYXBwZW5kZWQgYSBkaXNwbGF5IGxpc3QgaXRlbSkuIFJp
Z2h0IGJlZm9yZSB0aGlzIGRlc3RpbmF0aW9uIGlzIGFib3V0IHRvIGNoYW5nZSwgd2UgYXBwZW5k
IGEgbmV3CisgICAgICAgIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXJg
IGl0ZW0gYmVmb3JlIHByb2NlZWRpbmcgdG8gYXBwZW5kIGRpc3BsYXkgbGlzdCBpdGVtcyBmb3Ig
dGhlIG5ldworICAgICAgICBjdXJyZW50IGRlc3RpbmF0aW9uLiBXZSBhbHNvIGtlZXAgdHJhY2sg
b2YgYWxsIGltYWdlIGJ1ZmZlcnMgd2l0aCBkaXNwbGF5IGxpc3QgZGF0YSB0aGF0IGhhdmUgbm90
IHlldCBiZWVuCisgICAgICAgIGZsdXNoZWQsIHN1Y2ggdGhhdCB3aGVuIGFsbCBpbWFnZSBidWZm
ZXJzIGhhdmUgZmluaXNoZWQgZmx1c2hpbmcsIHdlIGFwcGVuZCBhIGZpbmFsIGBNZXRhQ29tbWFu
ZEVuZGAgaXRlbS4KKworICAgICAgICBPbiB0aGUgcmVhZGVyIChHUFUgcHJvY2Vzcykgc2lkZSwg
d2UgbWFrZSBzb21lIG1pbm9yIGFkanVzdG1lbnRzIHNvIHRoYXQgdGhlIG1haW4gZGlzcGxheSBs
aXN0IHByb2Nlc3NpbmcgbG9vcAorICAgICAgICBvZiB0aGUgR1BVIHByb2Nlc3MgaXMgY2FwYWJs
ZSBvZiBjaGFuZ2luZyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXJzIHdoaWxlIHByb2Nlc3Npbmcg
YSBzdHJlYW0gb2YgZGlzcGxheSBsaXN0CisgICAgICAgIGl0ZW1zLiBXZSBhZGRpdGlvbmFsbHkg
Y2hhbmdlIHRoaXMgbWFpbiBsb29wIHNvIHRoYXQgd2UnbGwgd2FpdCBmb3IgbW9yZSBkaXNwbGF5
IGxpc3QgaXRlbXMgd2hlbiB0aGUgdW5yZWFkCisgICAgICAgIGNvdW50IGRyb3BzIHRvIHplcm8g
cmF0aGVyIHRoYW4gZ29pbmcgdG8gc2xlZXAgaW1tZWRpYXRlbHksIHVudGlsIHdlIHJlY2VpdmUg
YSBgTWV0YUNvbW1hbmRFbmRgIGl0ZW0sIHdoaWNoIHRoZW4KKyAgICAgICAgcHJvbXB0cyB1cyB0
byBnbyB0byBzbGVlcCBpbiB0aGUgR1BVIHByb2Nlc3MuIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMg
dG8gYXZvaWQgZXhjZXNzaXZlIHNsZWVwaW5nIGFuZCB3YWtpbmcgd2hlbgorICAgICAgICBwcm9j
ZXNzaW5nIGRpc3BsYXkgbGlzdHMgd2l0aCBtYW55IGl0ZW1zLCBzaW5jZSB0aGUgR1BVIHByb2Nl
c3MgdGVuZHMgdG8gZnJlcXVlbnRseSAiY2F0Y2ggdXAiIHRvIHRoZSB3ZWIKKyAgICAgICAgcHJv
Y2VzcyBmb3IgYnJpZWYgbW9tZW50cyB3aGVuIHJ1bm5pbmcgdGhlIE1vdGlvbk1hcmsgc3VidGVz
dHMsIHN1Y2ggYXMgQ2FudmFzIExpbmVzIGFuZCBDYW52YXMgQXJjcy4KKworICAgICAgICBGcm9t
IGxvY2FsIHRlc3RpbmcsIEkgbWVhc3VyZWQgYSBzbGlnaHQgKDItMyUpIHByb2dyZXNzaW9uIG9u
IGJvdGggTGluZXMgYW5kIEFyY3MgdXNpbmcgdGhpcyBuZXcgYXJjaGl0ZWN0dXJlLAorICAgICAg
ICB0aG91Z2ggSSBzdXNwZWN0IGl0IGNvdWxkIGJlIGltcHJvdmVkIGZ1cnRoZXIgKGluIGZ1dHVy
ZSBwYXRjaGVzKSBieSB0YXJnZXRpbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLAor
ICAgICAgICBzdWNoIGFzIHRoZSBtZWNoYW5pc20gdXNlZCB0byB3YWl0IGZvciBuZXcgaXRlbXMg
aW4gdGhlIEdQVSBwcm9jZXNzICh0aGUgbmFpdmUgaW1wbGVtZW50YXRpb24gY3VycmVudGx5IGp1
c3QKKyAgICAgICAgY2FsbHMgYHVzbGVlcGAgaW4gYSBsb29wKS4KKworICAgICAgICBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZTo6YWR2YW5jZSk6CisKKyAgICAgICAgVXBkYXRlIGBhZHZhbmNlYCBzbyB0aGF0
IGl0IGp1c3QgcGVyZm9ybXMgYSBzaW5nbGUgOC1ieXRlIGF0b21pYyBgZXhjaGFuZ2VTdWJgIHJh
dGhlciB0aGFuIGdyYWJiaW5nIGEgc3BpbmxvY2suCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OkRpc3Bs
YXlMaXN0UmVhZGVySGFuZGxlOjpIYXNSZWFkZXJGb3JTY29wZTo6fkhhc1JlYWRlckZvclNjb3Bl
KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6Okhhc1JlYWRlckZv
clNjb3BlOjpIYXNSZWFkZXJGb3JTY29wZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0
UmVhZGVySGFuZGxlOjpjbGFpbVJlYWRlckZvclNjb3BlKToKKworICAgICAgICBNYWtlIHRoZSBH
UFUgcHJvY2VzcyBzZXQgYSBiaXQgaW4gdGhlIHNoYXJlZCBkaXNwbGF5IGxpc3QgYnVmZmVyJ3Mg
aGVhZGVyIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgYWN0aXZlbHkKKyAgICAgICAgcmVhZGluZyBk
YXRhIGZyb20gdGhpcyBkaXNwbGF5IGxpc3QuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQg
dGhlIHdlYiBwcm9jZXNzIGZyb20gcHJlbWF0dXJlbHkgcmVzZXR0aW5nIHRoZQorICAgICAgICB3
cml0ZSBjdXJzb3IgKGBtX3dyaXRhYmxlT2Zmc2V0YCkgb2YgdGhlIGRpc3BsYXkgbGlzdCBoYW5k
bGUgd2hlbiB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50ZXIgaGFzIGRyb3BwZWQgdG8gMCwgYW5kCisg
ICAgICAgIHRoZSBHUFUgcHJvY2VzcyBpcyB3YWl0aW5nIGZvciBtb3JlIGRhdGEgZnJvbSB0aGUg
aXRlbSBidWZmZXIuIFByZXZpb3VzbHksIHRoZSBmdW5jdGlvbiB0byByZXNldCB0aGUgd3JpdGUK
KyAgICAgICAgY3Vyc29yIChub3cgcmVuYW1lZCB0byBgbW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFy
dElmUG9zc2libGVgKSBvbmx5IGNoZWNrZWQgZm9yIGB1bnJlYWRCeXRlc2A7IG5vdywgaXQgY29u
c3VsdHMKKyAgICAgICAgYm90aCB0aGlzIGZsYWcgYW5kIGB1bnJlYWRCeXRlc2AuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgorCisgICAgICAgIFJlbmFtZSBgYXBw
bHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlYCB0byBgbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJB
ZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzYCwgYW5kIG1ha2UgaXQKKyAgICAgICAgcmV0dXJuIHRo
ZSBjdXJyZW50IGltYWdlIGJ1ZmZlciB0byB1c2UgYXMgdGhlIGRlc3RpbmF0aW9uIGZvciByZXBs
YXlpbmcgZGlzcGxheSBsaXN0IGNvbW1hbmRzLiBUaGlzIGhlbHBlciBpcworICAgICAgICBzdGls
bCByZXNwb25zaWJsZSBmb3IgcmVwbGF5aW5nIGEgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIHVu
dGlsIGl0IGhhcyBubyBtb3JlIGRhdGEgKHRoYXQgaXMsIHVudGlsIHdlIGVpdGhlcgorICAgICAg
ICBlbmNvdW50ZXIgYE1ldGFDb21tYW5kRW5kYCBpdGVtLCBvciBhIGBNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXJgIGl0ZW0gaW5mb3JtaW5nIHVzIG9mIHRoZSBuZXh0IGl0ZW0gYnVmZmVyIHRv
CisgICAgICAgIGNvbnN1bWUpLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QpOgorCisgICAgICAgIEFkanVzdCB0aGlz
IHRvIGNhbGwgYG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlM
aXN0c2AuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlE
aXNwbGF5TGlzdHNGcm9tSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaDoKKworICAgICAgICBSZW1vdmUgYFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpMb2NrYCBhbHRvZ2V0aGVyLCBub3cgdGhhdCB3ZSBqdXN0IGhhdmUgYSBzaW5nbGUg
YXRvbWljIGB1aW50NjRfdGAgY291bnRlciB0bworICAgICAgICByZXByZXNlbnQgdGhlIG51bWJl
ciBvZiB1bnJlYWQgYnl0ZXMuIEFkZGl0aW9uYWxseSwgYWRkIGEgYGJvb2xgIGZsYWcgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgR1BVIHByb2Nlc3MgaXMKKyAgICAgICAgY3VycmVudGx5IHJlYWRp
bmcgZnJvbSB0aGlzIGl0ZW0gYnVmZmVyIChzZWUgdGhlIGNvbW1lbnQgdW5kZXIgYGNsYWltUmVh
ZGVyRm9yU2NvcGVgIGFib3ZlIGZvciBtb3JlIGRldGFpbHMpLgorCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjp1bnJlYWRCeXRlcyk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrOjpMb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2s6On5Mb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZhbmNl
KToKKworICAgICAgICBNYWtlIHRoaXMgdXNlIHRoZSBzaW5nbGUgYXRvbWljIGNvdW50ZXIsIGlu
c3RlYWQgb2YgZ3JhYmJpbmcgYSBzcGlubG9jay4KKworICAgICAgICAoV2ViS2l0OjpEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTo6bW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6cmVzZXRXcml0YWJsZU9m
ZnNldElmUG9zc2libGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBgcmVzZXRXcml0YWJs
ZU9mZnNldElmUG9zc2libGVgIHRvIHRoZSBtb3JlIGFjY3VyYXRlIGBtb3ZlV3JpdGFibGVPZmZz
ZXRUb1N0YXJ0SWZQb3NzaWJsZWAsIGFuZCBtYWtlIGl0CisgICAgICAgIGFkZGl0aW9uYWxseSBj
aGVjayB0aGUgYGhhc1JlYWRlcmAgZmxhZyBiZWZvcmUgYXR0ZW1wdGluZyB0byBtb3ZlIHRoZSB3
cml0ZSBjdXJzb3IgYmFjayB0byB0aGUgc3RhcnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5kRGlzcGxheUxpc3QpOgorCisgICAgICAgIEFk
ZCBhIGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEgYE1ldGFDb21tYW5kRW5kYCBpdGVtIHRvIHRo
ZSBkaXNwbGF5IGxpc3QuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6Y2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgQWRkIGEgaGVscGVy
IG1ldGhvZCB0byBhcHBlbmQgYSBgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyYCBpdGVtIHRvIHRoZSBkaXNwbGF5IGxpc3QsIGdpdmVuIHRoZQorICAgICAgICBpZGVudGlm
aWVyIG9mIHRoaXMgbmV4dCBpdGVtIGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpjbGVhckRpc3BsYXlMaXN0KToKKworICAgICAgICBBZGQgYSBoZWxw
ZXIgbWV0aG9kIHRvIGNsZWFyIHRoZSBkaXNwbGF5IGxpc3QsIHN1Y2ggdGhhdCB0aGUgYFJlbW90
ZUltYWdlQnVmZmVyUHJveHlgIHdpbGwgYmUgYXNrZWQgZm9yIGEgbmV3CisgICAgICAgIGJ1ZmZl
ciBoYW5kbGUgdGhlIG5leHQgdGltZSB3ZSBhcHBlbmQgYW4gaXRlbS4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCk6
CisKKyAgICAgICAgTWFrZSB0aGlzIGhpdCB0aGUgbWF4aW11bSBgd2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHlgIGF0dGVtcHQgY291bnQgYW5kICJmYWlsIiBvbmx5IGlmIHRoZSBjYWxsIHRv
CisgICAgICAgIGB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseWAgYWN0dWFsbHkgdGltZXMg
b3V0LiBUaGlzIGNoYW5nZSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgdGhlIHNjZW5hcmlv
IG9mCisgICAgICAgIG11bHRpcGxlIGltYWdlIGJ1ZmZlcnMgc2ltdWx0YW5lb3VzbHkgYXBwZW5k
aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyB3b3JrcyB3aGVuIGFsbCBpbWFnZSBidWZmZXJzIHBlcmZv
cm0gKG5vbi0KKyAgICAgICAgYmxvY2tpbmcpIGZsdXNoZXMgc2ltdWx0YW5lb3VzbHksIGZvbGxv
d2VkIGJ5IGEgc3luYy13YWl0IChibG9ja2luZykgZmx1c2guIEluIHRoaXMgc2l0dWF0aW9uLCB0
aGUgd2ViIHByb2Nlc3MKKyAgICAgICAgbWF5IHJlY2VpdmUgbW9yZSB0aGFuIHRocmVlIGBEaWRG
bHVzaGAgbWVzc2FnZXMgaW4gcmFwaWQgc3VjY2Vzc2lvbiwgY2F1c2luZyBpdCB0byBoaXQgdGhp
cyBtYXhpbXVtIGxpbWl0IG9mIDMKKyAgICAgICAgaW5zdGFudGx5IGFuZCBhdm9pZCB3YWl0aW5n
IGZvciB0aGUgZXhwZWN0ZWQgYERpZEZsdXNoYCBtZXNzYWdlIHRvIGFycml2ZS4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKworICAgICAgICBSZXNldCBg
bV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoYCBhbmQgYG1fY3VycmVudERl
c3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyYCB3aGVuIHRoZSBHUFUKKyAgICAgICAgcHJv
Y2VzcyBpcyB0ZXJtaW5hdGVkLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6ZW5kQ3VycmVudERpc3BsYXlMaXN0KToKKworICAgICAgICBBcHBlbmQgYSBg
TWV0YUNvbW1hbmRFbmRgIGRpc3BsYXkgbGlzdCBpdGVtIHRvIHRoZSBjdXJyZW50IHN0cmVhbSBv
ZiBkaXNwbGF5IGxpc3QgZGF0YSwgaW5mb3JtaW5nIHRoZSBHUFUKKyAgICAgICAgcHJvY2VzcyB0
aGF0IGl0IHNob3VsZCBleHBlY3Qgbm8gbW9yZSBpdGVtcy4gSWRlYWxseSwgdGhpcyBzaG91bGQg
b25seSBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gbG9uZ2VyIGFueQorICAgICAgICBpbWFn
ZSBidWZmZXJzIHdpdGggZGlzcGxheSBsaXN0IGl0ZW1zIHRoYXQgaGF2ZSBub3QgYmVlbiBmbHVz
aGVkLCBidXQgZm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBhbHNvIG5lZWQgdG8gaW52b2tlCisgICAg
ICAgIHRoaXMgYmVmb3JlIG1ha2luZyBhIGNvdXBsZSBvZiBzeW5jIGNhbGxzIHRvIHRoZSBHUFUg
cHJvY2VzcyB0byBhdm9pZCBkZWFkbG9ja2luZy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFn
ZURhdGEpOgorCisgICAgICAgIEFkZCBhIEZJWE1FIGV4cGxhaW5pbmcgdGhhdCB0aGlzIGNhbGwg
dG8gYGVuZEN1cnJlbnREaXNwbGF5TGlzdGAgaXMgdGVtcG9yYXJ5LCBhbmQgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSB3ZQorICAgICAgICBtYWtlIGEgZGVkaWNhdGVkIGBHZXRJbWFnZURhdGFgIGRp
c3BsYXkgbGlzdCBpdGVtIGluIGEgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZEZsdXNoQ29udGV4dEl0ZW0p
OgorCisgICAgICAgIFJlbW92ZSB0aGUgaW1hZ2UgYnVmZmVyIGZyb20gYG1faWRlbnRpZmllcnNP
ZkltYWdlQnVmZmVyc1BlbmRpbmdGbHVzaGAsIGFuZCBhcHBlbmQgdGhlICJFbmQgb2YgRGlzcGxh
eSBMaXN0IgorICAgICAgICBpdGVtIGlmIGl0IHdhcyB0aGUgbGFzdCBpbWFnZSBidWZmZXIgdGhh
dCBoYWQgYSBwZW5kaW5nIGZsdXNoLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6c2V0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcik6CisKKyAgICAgICAgVXBk
YXRlIHRoZSBjdXJyZW50IGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciAoYG1fY3VycmVudERlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyYCkuIElmIHRoaXMgaWRlbnRpZmllcgorICAgICAg
ICBjaGFuZ2VkLCB0aGVuIHdlIGFwcGVuZCBhIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJgIGl0ZW0gdG8gdGhlIHByZXZpb3VzIGRlc3RpbmF0aW9uIGJlZm9yZQorICAg
ICAgICBzZXR0aW5nIHRoZSBuZXcgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyLiBXZSBhbHNvIG5l
ZWQgdG8gY2xlYXIgdGhlIG5ldyBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIncyBkaXNwbGF5IGxp
c3QKKyAgICAgICAgYmVmb3JlIHdyaXRpbmcgbmV3IGl0ZW1zLCB0byBwcmV2ZW50IGl0IGZyb20g
b3ZlcndyaXRpbmcgc2hhcmVkIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuCisKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKToKKworICAg
ICAgICBJbXBsZW1lbnQgYSBuZXcgYEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50YCBob29rIGJ5IGFk
dmFuY2luZyB0aGUgY29ycmVzcG9uZGluZyBpdGVtIGJ1ZmZlcidzIHVucmVhZCBjb3VudC4KKyAg
ICAgICAgQWRkaXRpb25hbGx5IHNlbmQgdGhlIHdha2V1cCBtZXNzYWdlIHVwb24gYWRkaW5nIHRo
ZSBpbml0aWFsIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciB0bworICAgICAgICBgbV9pZGVudGlm
aWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoYC4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZpbmRSZXVzYWJsZURpc3BsYXlMaXN0SGFuZGxlKToK
KworICAgICAgICBQdWxsIGxvZ2ljIHRvIGZpbmQgYSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRs
ZSBzdWl0YWJsZSBmb3IgcmV1c2UgaW50byBhIHNlcGFyYXRlIGhlbHBlciBtZXRob2QsIGFuZCBh
ZGp1c3QgaXQKKyAgICAgICAgc28gdGhhdCBpZiB0aGUgbW9zdCByZWNlbnRseSB1c2VkIGRpc3Bs
YXkgbGlzdCBoYW5kbGUgaGFzIHJ1biBvdXQgb2YgYXZhaWxhYmxlIGNhcGFjaXR5LCB3ZSBtb3Zl
IGl0IHRvIHRoZSBlbmQKKyAgICAgICAgb2YgdGhlIHJldXNlIHF1ZXVlIGFuZCBvbmx5IHJldXNl
IHRoZSBuZXcgZmlyc3Qgc2hhcmVkIGhhbmRsZSBpbiB0aGUgcXVldWUgaWYgaXRzIHdyaXRhYmxl
IG9mZnNldCBjYW4gYmUgcmVzZXQuCisgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBHUFUg
cHJvY2VzcyBjYW4gYWx3YXlzIGNvbnRpbnVlIHJlYWRpbmcgZGlzcGxheSBsaXN0IGl0ZW0gZGF0
YSBmcm9tIHRoZSBzdGFydCBvZiBuZXcgaXRlbQorICAgICAgICBidWZmZXJzIC0tIGkuZS4sIHdl
IGRvbid0IGVuZCB1cCB3aXRoIHRoZSB3ZWIgcHJvY2VzcyB3cml0aW5nIG91dCBhIHN0cmVhbSBv
ZiBkaXNwbGF5IGxpc3QgZGF0YSBsaWtlOgorCisgICAgICAgICAgIChTdGFydCkgQnl0ZXMgKDE2
LCA2NTUyMCkgaW4gSXRlbUJ1ZmZlclsxXQorICAgICAgICAgICAgICAgICAgIEJ5dGVzICgxNiwg
NjU1MzYpIGluIEl0ZW1CdWZmZXJbMl0KKyAgICAgICAgICAgICAgICAgICBCeXRlcyAoNjU1MjAs
IDY1NTM2KSBpbiBJdGVtQnVmZmVyWzFdCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2Fi
bGVIYW5kbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKwogMjAyMC0xMS0yNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgbmV3IGRpc3Bs
YXkgbGlzdCBtZXRhIGNvbW1hbmRzIGluIHByZXBhcmF0aW9uIGZvciB3ZWJraXQub3JnL2IvMjE5
MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGNl
NmIwZTliMThiZGM3YWFiMzg0NGQ4NzM2NjM2ODkyMzk0MGUyMjguLjM5NGE4MmJkZDJmZmUzM2M1
MWIzMzY1ZjUxNTlhZjQ5ZTA5MzBiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCkBAIC05MDksNyArOTA5LDE0IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBw
ZW5kRW5jb2RlZERhdGEoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1iZXJP
ZkJ5dGVzKVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVCdWZmZXIuZGF0
YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwgZGF0YS0+
ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKLSAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5
dGVzICs9IGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtOworICAgIGRpZEFwcGVuZERh
dGFUb1dyaXRhYmxlQnVmZmVyKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKK30K
Kwordm9pZCBJdGVtQnVmZmVyOjpkaWRBcHBlbmREYXRhVG9Xcml0YWJsZUJ1ZmZlcihzaXplX3Qg
bnVtYmVyT2ZCeXRlcykKK3sKKyAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9IG51bWJlck9m
Qnl0ZXM7CisgICAgaWYgKG1fd3JpdGluZ0NsaWVudCkKKyAgICAgICAgbV93cml0aW5nQ2xpZW50
LT5kaWRBcHBlbmREYXRhKG1fd3JpdGFibGVCdWZmZXIsIG51bWJlck9mQnl0ZXMpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5oCmluZGV4IGMxMGNjM2U1MmEyMGFiNWVjMDJhNTYwNmNmYzg0OTMxZmYyMTI4NmYu
LjFlNDIxMGEwNDk0OWEwM2E3YWEyYmY5NzdiNjUxYjJkMTg4NTBmZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5k
bGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBJdGVt
QnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMpID0gMDsKIH07CiAKIGNsYXNzIEl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKQEAgLTE3MSw2ICsxNzIsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGVzJiByZWFkT25seUJ1ZmZlcnMoKSBjb25z
dCB7IHJldHVybiBtX3JlYWRPbmx5QnVmZmVyczsgfQogICAgIHZvaWQgZm9yRWFjaEl0ZW1CdWZm
ZXIoRnVuY3Rpb248dm9pZChjb25zdCBJdGVtQnVmZmVySGFuZGxlJik+JiYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YVRvV3JpdGFibGVCdWZmZXIoc2l6ZV90
IG51bWJlck9mQnl0ZXMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzd2FwV3JpdGFibGVC
dWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmRFbmNvZGVkRGF0YShJdGVtSGFuZGxlKTsKQEAgLTE3OSw3ICsxODEsNyBAQCBw
cml2YXRlOgogICAgICAgICBhdXRvKiBzdGFydE9mSXRlbSA9ICZtX3dyaXRhYmxlQnVmZmVyLmRh
dGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc107CiAgICAgICAgIHN0YXJ0T2ZJdGVtWzBdID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwogICAgICAgICBuZXcgKHN0YXJ0T2ZJdGVt
ICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAg
ICAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5C
eXRlcyhUOjppdGVtVHlwZSk7CisgICAgICAgIGRpZEFwcGVuZERhdGFUb1dyaXRhYmxlQnVmZmVy
KHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSkpOwogICAgIH0KIAog
ICAgIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KiBtX3JlYWRpbmdDbGllbnQgeyBudWxscHRyIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA3N2NiYTMzNmRjNWI5
NGY0ZGIyMWRhNjYxMTA3YmQ0YzMyY2Y3MDg1Li5hMzlkNzJiYzE4Y2M4NmVhNjQwZjE0NWJlYzZl
YzEzYWJkNDg2YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAg
LTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZSYpIHsgfQogICAgIH07CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dChG
bHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpZGVudGlm
aWVyKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEcmF3R2x5cGhzUmVjb3JkZXI7
CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtMTY0LDggKzE2Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKLSAgICB2b2lkIGRpZEFw
cGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEFw
cGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBw
ZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7CiAKICAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRl
bShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKaW5kZXggNGU0
ZDQ5MWYwZDA5NTM4OTY0M2I0OGEyNzBiMjZhZWYxMzdiN2JmZS4uMDAwYjNkOTI3ZWU4NTBkZjAy
ZDZkOTg2MmIyZDAxZTIzYTE5NDEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCkBAIC0z
MSwxNCArMzEsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHNpemVfdCBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQogewotICAgIGF1dG8gbG9j
a2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhpcyB9OwotICAgIGlmIChM
SUtFTFkoYW1vdW50IDw9IGhlYWRlcigpLnVucmVhZEJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGhl
YWRlcigpLnVucmVhZEJ5dGVzIC09IGFtb3VudDsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCByZXN1bHQgaW4gdGVybWluYXRpbmcgdGhlIHdlYiBwcm9jZXNzLgotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIGhlYWRlcigpLnVucmVhZEJ5dGVzID0gMDsKLSAgICByZXR1cm4gMDsK
KyAgICBhdXRvIHByZXZpb3VzVW5yZWFkQnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlcy5leGNo
YW5nZVN1YihhbW91bnQpOworICAgIGlmIChVTkxJS0VMWShwcmV2aW91c1VucmVhZEJ5dGVzIDwg
YW1vdW50KSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVzdWx0IGluIHRlcm1p
bmF0aW5nIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXNVbnJlYWRCeXRlcyAt
IGFtb3VudDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4g
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmRpc3BsYXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgY2FwYWNpdHksIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVu
dCYgY2xpZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaAppbmRleCBjYjcyMjM5NzY5NmRj
OWUwYjA2ZTg5Y2FjMjVjZTcyY2I5YTU3NmUxLi5jYTNlOGQ1ZDI0NzNiY2Y5NGY1NTYzMGI1Yzc0
ZjA1ODI5ZDc3ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApAQCAtMzgsNiArMzgsMjggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpKTsKICAgICB9CiAKKyAgICBj
bGFzcyBIYXNSZWFkZXJGb3JTY29wZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhh
c1JlYWRlckZvclNjb3BlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICB+SGFzUmVhZGVyRm9yU2NvcGUoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2hh
bmRsZS5oZWFkZXIoKS5oYXNSZWFkZXIuc3RvcmUoZmFsc2UpOworICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU7CisK
KyAgICAgICAgSGFzUmVhZGVyRm9yU2NvcGUoRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmIGhhbmRs
ZSkKKyAgICAgICAgICAgIDogbV9oYW5kbGUoaGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2hhbmRsZS5oZWFkZXIoKS5oYXNSZWFkZXIuc3RvcmUodHJ1ZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgbV9oYW5kbGU7CisgICAgfTsKKworICAg
IEhhc1JlYWRlckZvclNjb3BlIGNsYWltUmVhZGVyRm9yU2NvcGUoKSB7IHJldHVybiB7ICp0aGlz
IH07IH0KKwogICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3Bs
YXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCYpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKaW5kZXggNmRkZWIwMjc5MjllNTA0ZjgzYjBhMTg2YzdlZWFiOGU1Yjlk
Njg3Mi4uMGQzNDg0YjIwYWVkNDU2NDFiZjZlYjUwYWQ0NzQzNmNiODU4Y2RmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcApAQCAtMTI5LDM2ICsxMjksNTMgQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBSZW4KICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVJbWFnZUJ1ZmZlcihtYWtlUmVm
KCppbWFnZUJ1ZmZlcikpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5
RGlzcGxheUxpc3RzRnJvbUhhbmRsZShJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24sIERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlJiBoYW5kbGUsIHNpemVfdCBpbml0aWFsT2Zmc2V0KQorUmVmUHRyPElt
YWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoSW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5h
dGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5k
bGUpCiB7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIoaW5pdGlhbERlc3RpbmF0
aW9uKTsKICAgICBhdXRvIGhhbmRsZVByb3RlY3RvciA9IG1ha2VSZWYoaGFuZGxlKTsKIAotICAg
IHNpemVfdCBvZmZzZXQgPSBpbml0aWFsT2Zmc2V0OworICAgIGF1dG8gb2Zmc2V0ID0gaW5pdGlh
bE9mZnNldDsKICAgICBzaXplX3Qgc2l6ZVRvUmVhZCA9IDA7CiAKLSAgICBkbyB7Ci0gICAgICAg
IHNpemVUb1JlYWQgPSBoYW5kbGUudW5yZWFkQnl0ZXMoKTsKLSAgICB9IHdoaWxlICghc2l6ZVRv
UmVhZCk7CisgICAgYXV0byByZWFkZXJTY29wZSA9IGhhbmRsZS5jbGFpbVJlYWRlckZvclNjb3Bl
KCk7CisgICAgYXV0byB3YWl0Rm9yVW5yZWFkQnl0ZXMgPSBbJl0geworICAgICAgICBzaXplX3Qg
dW5yZWFkQnl0ZXMgPSAwOworICAgICAgICB3aGlsZSAoIXVucmVhZEJ5dGVzKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYmxvY2sgZm9yZXZlciBoZXJlIHdoaWxlIHdhaXRpbmcg
Zm9yIG5ldyBkaXNwbGF5IGxpc3QgaXRlbXMuCisgICAgICAgICAgICAvLyBXZSB3aWxsIG5lZWQg
c29tZSBtZWNoYW5pc20gaGVyZSB0byBzdG9wIHdhaXRpbmcgYWZ0ZXIgYSBjZXJ0YWluIHRpbWUg
bGltaXQKKyAgICAgICAgICAgIC8vIGFuZCBjb29yZGluYXRlIHdpdGggdGhlIHdlYiBwcm9jZXNz
IHNvIHRoYXQgd2UgcmVjZWl2ZSBhIG5ldyB3YWtldXAgbWVzc2FnZQorICAgICAgICAgICAgLy8g
d2hlbiB0aGVyZSBhcmUgbW9yZSBpdGVtcyB0byBiZSBwcm9jZXNzZWQuCisgICAgICAgICAgICBz
bGVlcCg4X3VzKTsKKyAgICAgICAgICAgIHVucmVhZEJ5dGVzID0gaGFuZGxlLnVucmVhZEJ5dGVz
KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVucmVhZEJ5dGVzOworICAgIH07CisKKyAg
ICB3aGlsZSAoZGVzdGluYXRpb24gJiYgIW1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQpIHsKKyAgICAg
ICAgaWYgKCFzaXplVG9SZWFkKQorICAgICAgICAgICAgc2l6ZVRvUmVhZCA9IHdhaXRGb3JVbnJl
YWRCeXRlcygpOwogCi0gICAgd2hpbGUgKHNpemVUb1JlYWQpIHsKICAgICAgICAgYXV0byBkaXNw
bGF5TGlzdCA9IGhhbmRsZS5kaXNwbGF5TGlzdEZvclJlYWRpbmcob2Zmc2V0LCBzaXplVG9SZWFk
LCAqdGhpcyk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghZGlzcGxheUxpc3QpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBw
cm9jZXNzLgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChkZXN0
aW5hdGlvbi5pc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGluYXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpk
aXNwbGF5TGlzdCk7CisgICAgICAgIERpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgcmVzdWx0Owor
ICAgICAgICBpZiAoZGVzdGluYXRpb24tPmlzQWNjZWxlcmF0ZWQoKSkKKyAgICAgICAgICAgIHJl
c3VsdCA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPigqZGVzdGlu
YXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KGRl
c3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOworICAgICAgICAgICAg
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4oKmRl
c3RpbmF0aW9uKS5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOworCisgICAgICAgIHNp
emVUb1JlYWQgPSBoYW5kbGUuYWR2YW5jZShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQpOwogCiAg
ICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRPZmZzZXQgPSBvZmZzZXQ7Ci0gICAgICAgIGNoZWNr
ZWRPZmZzZXQgKz0gc2l6ZVRvUmVhZDsKKyAgICAgICAgY2hlY2tlZE9mZnNldCArPSByZXN1bHQu
bnVtYmVyT2ZCeXRlc1JlYWQ7CiAgICAgICAgIGlmIChVTkxJS0VMWShjaGVja2VkT2Zmc2V0Lmhh
c092ZXJmbG93ZWQoKSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNo
ZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKICAgICAgICAgb2Zmc2V0ID0gY2hlY2tlZE9mZnNldC51bnNhZmVHZXQoKTsKQEAg
LTE2NiwxOCArMTgzLDI0IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNw
bGF5TGlzdHNGcm9tSGFuZGxlKEltYWdlQnVmZmVyJiBkZXN0aW5hdGlvCiAgICAgICAgIGlmIChV
TkxJS0VMWShvZmZzZXQgPiBoYW5kbGUuc2hhcmVkTWVtb3J5KCkuc2l6ZSgpKSkgewogICAgICAg
ICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIg
cHJvY2Vzcy4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplVG9S
ZWFkID0gaGFuZGxlLmFkdmFuY2Uoc2l6ZVRvUmVhZCk7CisgICAgICAgIGlmIChyZXN1bHQucmVh
c29uRm9yU3RvcHBpbmcgPT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlSZWFzb246OkVuZE9mRGlz
cGxheUxpc3QpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAocmVzdWx0LnJlYXNv
bkZvclN0b3BwaW5nID09IERpc3BsYXlMaXN0OjpTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyKQorICAgICAgICAgICAgZGVzdGluYXRpb24gPSBtYWtlUmVmUHRy
KG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcigqcmVzdWx0Lm5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyKSk7CiAgICAgfQorCisgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3QoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCB1
aW50NjRfdCBpbml0aWFsT2Zmc2V0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGlu
YXRpb25CdWZmZXJJZGVudGlmaWVyKQogewogICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKFdh
a2VVcEFuZEFwcGx5RGlzcGxheUxpc3RTdGFydCwgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdEVu
ZCk7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJ
bWFnZUJ1ZmZlcihkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwotICAgIGlmIChVTkxJS0VM
WSghaW1hZ2VCdWZmZXIpKSB7CisgICAgYXV0byBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbWFr
ZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRp
b25CdWZmZXJJZGVudGlmaWVyKSk7CisgICAgaWYgKFVOTElLRUxZKCFkZXN0aW5hdGlvbkltYWdl
QnVmZmVyKSkgewogICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJt
aW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTkwLDcgKzIxMywxMiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFu
ZGxlKCppbWFnZUJ1ZmZlciwgKmluaXRpYWxIYW5kbGUsIGluaXRpYWxPZmZzZXQpOworICAgIGRl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBw
bHlpbmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIGluaXRpYWxPZmZzZXQs
ICppbml0aWFsSGFuZGxlKTsKKworICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIHdoaWxlIChtX25leHRJdGVtQnVmZmVyVG9SZWFkKSB7CiAgICAgICAgIGF1dG8gbmV4dEhh
bmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChtX25leHRJdGVtQnVmZmVyVG9S
ZWFkKTsKQEAgLTE5OSw5ICsyMjcsMTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWQKICAgICAg
ICAgICAgIC8vIElQQyBtZXNzYWdlIHdpdGggYSBzaGFyZWQgbWVtb3J5IGhhbmRsZSB0byB0aGUg
bmV4dCBpdGVtIGJ1ZmZlci4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAg
ICAgLy8gT3RoZXJ3aXNlLCBjb250aW51ZSByZWFkaW5nIHRoZSBuZXh0IGRpc3BsYXkgbGlzdCBp
dGVtIGJ1ZmZlciBmcm9tIHRoZSBzdGFydC4KICAgICAgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVh
ZCA9IHsgfTsKLSAgICAgICAgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKCppbWFnZUJ1ZmZl
ciwgKm5leHRIYW5kbGUsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCkpOwor
ICAgICAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCAqbmV4dEhhbmRsZSk7CisKKyAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRmNTc1MjQ5NDg5
ZDcwNWM3OC4uMjI4MGZlMzdhZWY1NGIwMjRiMzZmZjkxMjAwZjczZTMwZjQzNmU0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdm9pZCBhcHBseURpc3BsYXlMaXN0c0Zyb21I
YW5kbGUoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZSYsIHNpemVfdCBvZmZzZXQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdl
YkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zm
c2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhh
bmRsZS5oCmluZGV4IDg2NWZhZWRjZGU3MDYzYTg0NDI0MDUwYmJiNzFmYzQ2ZDAyMmQ1MGIuLmYx
MGM1MzQyMWNlZWU5MWVhZmRiZTBlMzQxZjY0OWE1ZGQ3ZTdhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAtNTAsMzggKzUwLDEyIEBA
IHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzKCkKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhpcyB9OwotICAg
ICAgICByZXR1cm4gaGVhZGVyKCkudW5yZWFkQnl0ZXM7CisgICAgICAgIHJldHVybiBoZWFkZXIo
KS51bnJlYWRCeXRlcy5sb2FkKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBzaXplX3QgYWR2YW5j
ZShzaXplX3QgYW1vdW50KSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBjbGFzcyBMb2NrIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIExvY2soU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIGhhbmRsZSkK
LSAgICAgICAgICAgIDogbV9oYW5kbGUoaGFuZGxlKQotICAgICAgICB7Ci0gICAgICAgICAgICBh
dXRvJiBhdG9taWNWYWx1ZSA9IG1faGFuZGxlLmhlYWRlcigpLmxvY2s7Ci0gICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGF2b2lk
IHdhaXRpbmcgZm9yZXZlciBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgd2ViIGNvbnRlbnQgcHJvY2Vz
cwotICAgICAgICAgICAgICAgIC8vIGhvbGRzIG9uIHRvIHRoZSBsb2NrIGluZGVmaW5pdGVseSAo
b3IgY3Jhc2hlcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrKS4KLSAgICAgICAgICAgICAgICB1aW50
NjRfdCB1bmxvY2tlZCA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKGF0b21pY1ZhbHVlLmNvbXBh
cmVFeGNoYW5nZVdlYWsodW5sb2NrZWQsIDEpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICB+TG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1faGFuZGxlLmhl
YWRlcigpLmxvY2suc3RvcmUoMCk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAg
IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBtX2hhbmRsZTsKLSAgICB9OwotCiAgICAgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQogICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICAgICAsIG1fc2hhcmVkTWVtb3J5KFdU
Rk1vdmUoc2hhcmVkTWVtb3J5KSkKQEAgLTg5LDggKzYzLDggQEAgcHJvdGVjdGVkOgogICAgIH0K
IAogICAgIHN0cnVjdCBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciB7Ci0gICAgICAgIEF0
b21pYzx1aW50NjRfdD4gbG9jazsKLSAgICAgICAgdWludDY0X3QgdW5yZWFkQnl0ZXM7CisgICAg
ICAgIEF0b21pYzx1aW50NjRfdD4gdW5yZWFkQnl0ZXM7CisgICAgICAgIEF0b21pYzxib29sPiBo
YXNSZWFkZXI7CiAgICAgfTsKIAogICAgIERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyJiBo
ZWFkZXIoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxEaXNwbGF5TGlzdFNoYXJlZE1lbW9y
eUhlYWRlcio+KGRhdGEoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAKaW5k
ZXggZDgyZTNkZmFkZWU4NmViMGQ1NTQxYjI3ODU3NjgyMTg3ZjY1Y2Y4Yi4uYmVhMDU2OWU0YTE4
YWRmMzVjNDBkZWNhOWMzMzk3ZGFlOWNmYTM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5jcHAKQEAgLTM4LDE0ICszOCwxMyBAQCBzaXplX3QgRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZFdyaXRh
YmxlT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAKLSAgICBhdXRvIGxvY2tlciA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpM
b2NrIHsgKnRoaXMgfTsKLSAgICBDaGVja2VkU2l6ZSBjaGVja2VkVW5yZWFkQnl0ZXMgPSBoZWFk
ZXIoKS51bnJlYWRCeXRlczsKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gY2hlY2tlZFdyaXRhYmxl
T2Zmc2V0LnVuc2FmZUdldCgpOworCisgICAgQ2hlY2tlZFNpemUgY2hlY2tlZFVucmVhZEJ5dGVz
ID0gaGVhZGVyKCkudW5yZWFkQnl0ZXMuZXhjaGFuZ2VBZGQoYW1vdW50KTsKICAgICBjaGVja2Vk
VW5yZWFkQnl0ZXMgKz0gYW1vdW50OwogICAgIGlmIChVTkxJS0VMWShjaGVja2VkVW5yZWFkQnl0
ZXMuaGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIAotICAgIG1fd3JpdGFibGVPZmZzZXQgPSBjaGVja2VkV3JpdGFibGVPZmZzZXQudW5zYWZl
R2V0KCk7Ci0gICAgaGVhZGVyKCkudW5yZWFkQnl0ZXMgPSBjaGVja2VkVW5yZWFkQnl0ZXMudW5z
YWZlR2V0KCk7CiAgICAgcmV0dXJuIGNoZWNrZWRVbnJlYWRCeXRlcy51bnNhZmVHZXQoKTsKIH0K
IApAQCAtNjYsMTMgKzY1LDE2IEBAIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGVIYW5kbGUoKSBjb25zdAogICAgIH07CiB9CiAKLWJv
b2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxl
KCkKK2Jvb2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6Om1vdmVXcml0YWJsZU9mZnNldFRvU3Rh
cnRJZlBvc3NpYmxlKCkKIHsKICAgICBpZiAobV93cml0YWJsZU9mZnNldCA8PSBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
d3JpdGFibGVPZmZzZXQgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlmIChoZWFkZXIoKS5oYXNSZWFk
ZXIubG9hZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAodW5yZWFkQnl0ZXMo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgK
aW5kZXggNDRlZWZhYWI0OGY0OTExZmVhZGJlZDU4YWU1N2EyYTYzYjFkOGFkNy4uZmM3YTIxNjUz
YTBlYjk2ODE5ZWIxYzA5YTlmYzM0NDQ4MWE3Mzk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJI
YW5kbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHdyaXRhYmxlT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV93cml0YWJsZU9mZnNldDsgfQogICAgIHNpemVfdCBhdmFp
bGFibGVDYXBhY2l0eSgpIGNvbnN0OwogCi0gICAgYm9vbCByZXNldFdyaXRhYmxlT2Zmc2V0SWZQ
b3NzaWJsZSgpOworICAgIGJvb2wgbW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUo
KTsKIAogICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUhhbmRsZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA1MWJkNTcxMjk1OGFmMTJhMjMxNWQ0
MWJhM2QyZDZiOWVkNTdmMmJhLi42ODBlYjdiMThkNDViNGU5ZWMzOWQwMjJkNmE5ZjI3OTA2NDk3
NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTExLDYgKzExMSwyNCBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3NlbnRGbHVzaElkZW50aWZpZXIgPT0gdGFyZ2V0Rmx1
c2hJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICB2b2lkIGVuZERpc3BsYXlMaXN0KCkKKyAgICB7
CisgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS50ZW1wbGF0ZSBhcHBlbmQ8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kRW5kPigpOworICAgIH0KKworICAgIHZv
aWQgY2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbmV4dEltYWdlQnVmZmVyKQorICAgIHsKKyAgICAgICAgYm9vbCB3YXNFbXB0
eSA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS5pc0VtcHR5KCk7CisgICAgICAgIG1f
ZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS50ZW1wbGF0ZSBhcHBlbmQ8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4obmV4dElt
YWdlQnVmZmVyKTsKKyAgICAgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICAgICAgY2xlYXJEaXNw
bGF5TGlzdCgpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJEaXNwbGF5TGlzdCgpCisgICAgewor
ICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuY2xlYXIoKTsKKyAgICB9CisK
IHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKICAg
ICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwg
V2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KQpAQCAtMTM3LDkgKzE1NSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgLy8gV2FpdCBmb3Igb3VyIERpc3BsYXlMaXN0IHRvIGJlIGZs
dXNoZWQgYnV0IGRvIG5vdCBoYW5nLgotICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heFdhaXRpbmdGbHVzaCA9IDM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbnVtV2FpdGluZ0Zs
dXNoID0gMDsgbnVtV2FpdGluZ0ZsdXNoIDwgbWF4V2FpdGluZ0ZsdXNoICYmIGhhc1BlbmRpbmdG
bHVzaCgpOyArK251bVdhaXRpbmdGbHVzaCkKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LT53YWl0Rm9yRGlkRmx1c2goKTsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZUaW1lb3V0cyA9IDM7CisgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mVGltZW91dHMgPSAwOworICAgICAgICB3aGlsZSAobnVtYmVyT2ZUaW1lb3V0cyA8
IG1heGltdW1OdW1iZXJPZlRpbWVvdXRzICYmIGhhc1BlbmRpbmdGbHVzaCgpKSB7CisgICAgICAg
ICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRGlkRmx1c2go
KSkKKyAgICAgICAgICAgICAgICArK251bWJlck9mVGltZW91dHM7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlk
ZQpAQCAtMTUxLDE4ICsxNzIsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQor
ICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8mIG11dGFibGVUaGlzID0g
Y29uc3RfY2FzdDxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpOwotICAgICAgICBhdXRv
JiBkaXNwbGF5TGlzdCA9IG11dGFibGVUaGlzLm1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3Qo
KTsKLSAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG11
dGFibGVUaGlzLnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgICAgIG11
dGFibGVUaGlzLm1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOwotICAgICAgICAg
ICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGdldEltYWdl
RGF0YSBpcyBzeW5jaHJvbm91cywgd2hpY2ggbWVhbnMgd2UndmUgYWxyZWFkeSByZWNlaXZlZCB0
aGUgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQgbWVzc2FnZS4KICAgICAgICAgcmV0dXJu
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0
LCBzcmNSZWN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCkBAIC0x
ODQsNiArMTk2LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
KCkgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIFRyYWNlU2Nv
cGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJ
bWFnZUJ1ZmZlckVuZCk7CiAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKTsK
ICAgICAgICAgd2FpdEZvckRpZEZsdXNoV2l0aFRpbWVvdXQoKTsKQEAgLTE5MSw0OSArMjA2LDU2
IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgp
IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KQorICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1f
ZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFtX2RyYXdpbmdDb250
ZXh0LmRpc3BsYXlMaXN0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX3NlbnRGbHVzaElk
ZW50aWZpZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOworICAgICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5yZWNvcmRlcigpLmZsdXNoQ29udGV4
dChtX3NlbnRGbHVzaElkZW50aWZpZXIpOworICAgICAgICB9CiAKLSAgICAgICAgbV9zZW50Rmx1
c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKLSAgICAgICAgZGlzcGxheUxpc3QudGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KG1fc2VudEZsdXNoSWRlbnRpZmllcik7Ci0gICAgICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5
TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgICAgICBtX2l0ZW1Db3Vu
dEluQ3VycmVudERpc3BsYXlMaXN0ID0gMDsKLSAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsK
KyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmRpZEFwcGVuZEZsdXNoQ29u
dGV4dEl0ZW0obV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBjbGVhckRp
c3BsYXlMaXN0KCk7CiAgICAgfQogCi0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQorICAgIHZvaWQg
Y2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1hZ2UpIG92ZXJyaWRlCiAg
ICAgewotICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHx8IGRpc3Bs
YXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIH0KKworICAg
IHZvaWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
IHR5cGUpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3Qs
IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5zZXREZXN0aW5hdGlvbkltYWdlQnVmZmVyKG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSA9PSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OklzRmly
c3REZXN0aW5hdGlvbjo6WWVzKQorICAgICAgICAgICAgbV9pc0FwcGVuZGluZ0Rpc3BsYXlMaXN0
SXRlbUZvckluaXRpYWxEZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUmIGhhbmRsZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMpIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBjb25zdGV4cHIgc2l6ZV90IERpc3BsYXlMaXN0QmF0Y2hT
aXplID0gNTEyOwotICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQu
ZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKCsrbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5
TGlzdCA8IERpc3BsYXlMaXN0QmF0Y2hTaXplKQorICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBtX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0ID0gMDsKLSAgICAgICAgc3VibWl0RGlz
cGxheUxpc3QoZGlzcGxheUxpc3QpOwotICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAg
ICAgICBhdXRvIG5lZWRzV2FrZXVwTWVzc2FnZSA9IG1faXNBcHBlbmRpbmdEaXNwbGF5TGlzdEl0
ZW1Gb3JJbml0aWFsRGVzdGluYXRpb25JbWFnZUJ1ZmZlcgorICAgICAgICAgICAgPyBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6Ok5lZWRzV2FrZXVwTWVzc2FnZTo6WWVzCisgICAgICAgICAg
ICA6IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6TmVlZHNXYWtldXBNZXNzYWdlOjpObzsK
KworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+ZGlkQXBwZW5kRGF0YSho
YW5kbGUsIG51bWJlck9mQnl0ZXMsIG5lZWRzV2FrZXVwTWVzc2FnZSwgbV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJD
b3JlOjpOYXRpdmVJbWFnZSYgaW1hZ2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRBcHBlbmRJdGVt
T2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlKSBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgICAgICBtX2lzQXBwZW5kaW5nRGlzcGxh
eUxpc3RJdGVtRm9ySW5pdGlhbERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBmYWxzZTsKKworICAg
ICAgICBpZiAodHlwZSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcikKKyAgICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKICAgICB9CiAKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVy
KHNpemVfdCBjYXBhY2l0eSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgaWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHktPmNyZWF0ZUl0ZW1CdWZmZXIoY2FwYWNpdHksIG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMzNiwxMiAr
MzU4LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBkaWRBcHBl
bmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgaWYgKHR5cGUgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXIpCi0gICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7
Ci0gICAgfQotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1
ZmZlckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0
dXJuIFdURjo6bWFrZVVuaXF1ZTxUaHJlYWRTYWZlUmVtb3RlSW1hZ2VCdWZmZXJGbHVzaGVyPEJh
Y2tlbmRUeXBlPj4oKnRoaXMpOwpAQCAtMzU4LDYgKzM3NCw3IEBAIHByb3RlY3RlZDoKICAgICBm
bG9hdCBtX3Jlc29sdXRpb25TY2FsZTsKICAgICBXZWJDb3JlOjpDb2xvclNwYWNlIG1fY29sb3JT
cGFjZTsKICAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBtX3BpeGVsRm9ybWF0OworICAgIGJvb2wg
bV9pc0FwcGVuZGluZ0Rpc3BsYXlMaXN0SXRlbUZvckluaXRpYWxEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyIHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGMwN2IyM2ZiMmIwZTU4
ZTBlMWRmZjVhMTRlZTBhODVkOWE1YjY0NWQuLjcxZTZmOTg0MmE1NmI3NmFiYTIzOGNiMTYyM2Y4
NTFmYWRlMzgwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAK
QEAgLTk2LDkgKzk2LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0CiAgICAgcHJldmlvdXND
b25uZWN0aW9uLnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKICAgICBtX2lkZW50aWZpZXJzT2ZSZXVz
YWJsZUhhbmRsZXMuY2xlYXIoKTsKLSAgICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxl
Rm9yV3JpdGluZy5jbGVhcigpOwogICAgIG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmNsZWFy
KCk7CiAKKyAgICBtX2lkZW50aWZpZXJzT2ZJbWFnZUJ1ZmZlcnNQZW5kaW5nRmx1c2guY2xlYXIo
KTsKKyAgICBtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllciA9IFdURjo6
bnVsbG9wdDsKKwogICAgIHJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIH0KIApA
QCAtMTEyLDggKzExNCwyOSBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZW5kQ3VycmVudERpc3BsYXlMaXN0KCkKK3sKKyAgICBpZiAoIW1fY3Vy
cmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVk
SW1hZ2VCdWZmZXIoKm1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsK
KyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaW1hZ2VC
dWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKKyAgICAgICAgZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmVuZERpc3BsYXlMaXN0KCk7CisgICAg
ZWxzZQorICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eT4oKmltYWdlQnVmZmVyKS5lbmREaXNwbGF5TGlzdCgpOworCisgICAgbV9pZGVudGlmaWVyc09m
SW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoLmNsZWFyKCk7CisgICAgbV9jdXJyZW50RGVzdGluYXRp
b25JbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit9CisKIGJvb2wgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRl
ZCgpCiB7CisgICAgLy8gRklYTUU6IFdlIGNhbiByZW1vdmUgdGhpcyBvbmNlIGJhY2tlbmQgY3Jl
YXRpb24gaXMgbm8gbG9uZ2VyIHN5bmNocm9ub3VzLgorICAgIGVuZEN1cnJlbnREaXNwbGF5TGlz
dCgpOworCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwog
ICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXND
cmVhdGVkPihtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9w
dGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KQEAgLTE0NCwz
NSArMTY3LDE0IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpCiAKIFJlZlB0cjxJbWFnZURhdGE+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogeworICAgIC8v
IEZJWE1FOiBXZSBjYW4gcmVtb3ZlIHRoaXMgZWl0aGVyIG9uY2Ugd2UgaW50cm9kdWNlIGEgR2V0
SW1hZ2VEYXRhIGRpc3BsYXkgbGlzdCBpdGVtLgorICAgIGVuZEN1cnJlbnREaXNwbGF5TGlzdCgp
OworCiAgICAgSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwogICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGEo
b3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURh
dGFSZWZlcmVuY2UpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAxX3MpOwogICAgIHJl
dHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGlu
YXRpb25CdWZmZXJJZGVudGlmaWVyKQotewotICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+IGlkZW50aWZpZXJBbmRPZmZzZXRG
b3JXYWtlVXBNZXNzYWdlOwotICAgIGJvb2wgaXNGaXJzdEhhbmRsZSA9IHRydWU7Ci0KLSAgICBk
aXNwbGF5TGlzdC5mb3JFYWNoSXRlbUJ1ZmZlcihbJl0gKGF1dG8mIGhhbmRsZSkgewotICAgICAg
ICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5hZGQoaGFuZGxlLmlk
ZW50aWZpZXIpOwotCi0gICAgICAgIGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGVzLmdldChoYW5kbGUuaWRlbnRpZmllcik7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRShzaGFyZWRIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQg
ZGlzcGxheSBsaXN0IiwgV1RGX1BSRVRUWV9GVU5DVElPTik7Ci0KLSAgICAgICAgYm9vbCB1bnJl
YWRDb3VudFdhc0VtcHR5ID0gc2hhcmVkSGFuZGxlLT5hZHZhbmNlKGhhbmRsZS5jYXBhY2l0eSkg
PT0gaGFuZGxlLmNhcGFjaXR5OwotICAgICAgICBpZiAoaXNGaXJzdEhhbmRsZSAmJiB1bnJlYWRD
b3VudFdhc0VtcHR5KQotICAgICAgICAgICAgaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1l
c3NhZ2UgPSB7eyBoYW5kbGUuaWRlbnRpZmllciwgaGFuZGxlLmRhdGEgLSBzaGFyZWRIYW5kbGUt
PmRhdGEoKSB9fTsKLQotICAgICAgICBpc0ZpcnN0SGFuZGxlID0gZmFsc2U7Ci0gICAgfSk7Ci0K
LSAgICBpZiAoaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2UpIHsKLSAgICAgICAg
YXV0byBbaWRlbnRpZmllciwgb2Zmc2V0XSA9ICppZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVw
TWVzc2FnZTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBvZmZzZXQsIGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIH0K
LX0KLQogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmIGltYWdlKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OkNhY2hlTmF0aXZlSW1hZ2UobWFrZVJlZihpbWFnZSkpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKQEAgLTIwNywzNyArMjA5LDgzIEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZs
dXNoSWRlCiAgICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5PigqaW1hZ2VCdWZmZXIpLmRpZEZsdXNoKGZsdXNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKQordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZEZsdXNoQ29udGV4dEl0ZW0o
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZm9yIChhdXRv
IGlkZW50aWZpZXIgOiBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZykg
ewotICAgICAgICBhdXRvKiBoYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQo
aWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaGFuZGxlLT5yZXNldFdyaXRhYmxlT2Zmc2V0SWZQ
b3NzaWJsZSgpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgaWYgKCFtX2lkZW50aWZpZXJz
T2ZJbWFnZUJ1ZmZlcnNQZW5kaW5nRmx1c2gucmVtb3ZlKGlkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNo
LmlzRW1wdHkoKSkKKyAgICAgICAgZW5kQ3VycmVudERpc3BsYXlMaXN0KCk7Cit9CiAKLSAgICAg
ICAgaWYgKG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5jb250YWlucyhpZGVudGlmaWVy
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpJ
c0ZpcnN0RGVzdGluYXRpb24gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzZXREZXN0aW5h
dGlvbkltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBuZXdEZXN0aW5hdGlv
bklkZW50aWZpZXIpCit7CisgICAgaWYgKG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyID09IG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIElz
Rmlyc3REZXN0aW5hdGlvbjo6Tm87CiAKLSAgICAgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVI
YW5kbGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byBwcmV2aW91c0Rlc3RpbmF0
aW9uQnVmZmVySWRlbnRpZmllciA9IHN0ZDo6ZXhjaGFuZ2UobV9jdXJyZW50RGVzdGluYXRpb25J
bWFnZUJ1ZmZlcklkZW50aWZpZXIsIG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpIHsKKyAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNo
ZWRJbWFnZUJ1ZmZlcigqcHJldmlvdXNEZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpKSB7Cisg
ICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKKyAgICAgICAgICAg
ICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1
ZmZlcikuY2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihuZXdEZXN0aW5hdGlvbklkZW50aWZp
ZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRvd25jYXN0PFVuYWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNoYW5nZURlc3RpbmF0
aW9uSW1hZ2VCdWZmZXIobmV3RGVzdGluYXRpb25JZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY2FjaGVkSW1hZ2VCdWZmZXIobmV3RGVzdGluYXRpb25JZGVudGlmaWVyKSkgeworICAgICAg
ICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKKyAgICAgICAgICAgIGRvd25jYXN0
PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jbGVhckRp
c3BsYXlMaXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvd25jYXN0PFVuYWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNsZWFyRGlzcGxheUxp
c3QoKTsKICAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IG1faWRlbnRpZmllcnNPZkltYWdlQnVm
ZmVyc1BlbmRpbmdGbHVzaC5pc0VtcHR5KCkgPyBJc0ZpcnN0RGVzdGluYXRpb246OlllcyA6IElz
Rmlyc3REZXN0aW5hdGlvbjo6Tm87CisgICAgbV9pZGVudGlmaWVyc09mSW1hZ2VCdWZmZXJzUGVu
ZGluZ0ZsdXNoLmFkZChuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLURpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQXBwZW5kRGF0YShjb25zdCBEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlckhhbmRsZSYgaGFuZGxlLCBzaXplX3QgbnVtYmVyT2ZCeXRlcywgTmVlZHNXYWtl
dXBNZXNzYWdlIG5lZWRzV2FrZXVwTWVzc2FnZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpCiB7Ci0gICAgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7
CisgICAgYXV0byogc2hhcmVkSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0
KGhhbmRsZS5pZGVudGlmaWVyKTsKKyAgICBpZiAoVU5MSUtFTFkoIXNoYXJlZEhhbmRsZSkpCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiRmFpbGVkIHRv
IGZpbmQgc2hhcmVkIGRpc3BsYXkgbGlzdDogJWxsdSIsIGhhbmRsZS5pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogCi0gICAgd2hpbGUgKCFtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnNPZlJldXNh
YmxlSGFuZGxlcy5maXJzdCgpOwotICAgICAgICBhdXRvKiByZXVzYWJsZUhhbmRsZSA9IG1fc2hh
cmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVudGlmaWVyKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9NRVNTQUdFKHJldXNhYmxlSGFuZGxlLCAiJXMgZmFpbGVkIHRvIGZpbmQgc2hh
cmVkIGRpc3BsYXkgbGlzdCIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOworICAgIHNoYXJlZEhhbmRs
ZS0+YWR2YW5jZShudW1iZXJPZkJ5dGVzKTsKIAotICAgICAgICBpZiAobV9pZGVudGlmaWVyc09m
SGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuY29udGFpbnMoaWRlbnRpZmllcikgJiYgcmV1c2Fi
bGVIYW5kbGUtPmF2YWlsYWJsZUNhcGFjaXR5KCkgPj0gY2FwYWNpdHkpIHsKLSAgICAgICAgICAg
IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLnJlbW92ZShpZGVudGlm
aWVyKTsKLSAgICAgICAgICAgIHJldHVybiByZXVzYWJsZUhhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7
Ci0gICAgICAgIH0KKyAgICBpZiAobmVlZHNXYWtldXBNZXNzYWdlID09IE5lZWRzV2FrZXVwTWVz
c2FnZTo6WWVzKSB7CisgICAgICAgIGF1dG8gaW5pdGlhbE9mZnNldCA9IGhhbmRsZS5kYXRhIC0g
c2hhcmVkSGFuZGxlLT5kYXRhKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6Oldha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoaGFuZGxlLmlkZW50aWZpZXIs
IGluaXRpYWxPZmZzZXQsIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpLCBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKTsKKyAgICB9Cit9CiAKLSAgICAgICAgbV9pZGVudGlmaWVyc09mUmV1c2Fi
bGVIYW5kbGVzLnJlbW92ZUZpcnN0KCk7CitSZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5k
bGUoc2l6ZV90IGNhcGFjaXR5KQoreworICAgIGlmIChVTkxJS0VMWShtX2lkZW50aWZpZXJzT2ZS
ZXVzYWJsZUhhbmRsZXMuaXNFbXB0eSgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBhdXRvIG1vc3RSZWNlbnRseVVzZWRJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1c2Fi
bGVIYW5kbGVzLmZpcnN0KCk7CisgICAgYXV0byBoYW5kbGUgPSBtYWtlUmVmUHRyKG1fc2hhcmVk
RGlzcGxheUxpc3RIYW5kbGVzLmdldChtb3N0UmVjZW50bHlVc2VkSWRlbnRpZmllcikpOworICAg
IGhhbmRsZS0+bW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFydElmUG9zc2libGUoKTsKKyAgICBpZiAo
aGFuZGxlLT5hdmFpbGFibGVDYXBhY2l0eSgpID49IGNhcGFjaXR5KQorICAgICAgICByZXR1cm4g
aGFuZGxlOworCisgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChtX2lk
ZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMudGFrZUZpcnN0KCkpOworCisgICAgYXV0byBsZWFz
dFJlY2VudGx5VXNlZElkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMu
Zmlyc3QoKTsKKyAgICBpZiAobGVhc3RSZWNlbnRseVVzZWRJZGVudGlmaWVyICE9IG1vc3RSZWNl
bnRseVVzZWRJZGVudGlmaWVyKSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gbWFrZVJlZlB0ciht
X3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQobGVhc3RSZWNlbnRseVVzZWRJZGVudGlmaWVy
KSk7CisgICAgICAgIGlmIChoYW5kbGUtPm1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3Np
YmxlKCkgJiYgaGFuZGxlLT5hdmFpbGFibGVDYXBhY2l0eSgpID49IGNhcGFjaXR5KQorICAgICAg
ICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9CiAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBoYW5k
bGUgPSBmaW5kUmV1c2FibGVEaXNwbGF5TGlzdEhhbmRsZShjYXBhY2l0eSkpCisgICAgICAgIHJl
dHVybiBoYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOworCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgZGVmYXVsdFNoYXJlZEl0ZW1CdWZmZXJTaXplID0gMSA8PCAxNjsKICAgICBzdGF0aWNfYXNz
ZXJ0KGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSA+IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
OjpoZWFkZXJTaXplKCkpOwogCkBAIC0yNTQsNyArMzAyLDcgQEAgRGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJIYW5kbGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVy
KHNpemUKICAgICBhdXRvIG5ld0hhbmRsZSA9IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVh
dGUoaWRlbnRpZmllciwgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGF1dG8g
ZGlzcGxheUxpc3RIYW5kbGUgPSBuZXdIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOwogCi0gICAgbV9p
ZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICBtX2lk
ZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMucHJlcGVuZChpZGVudGlmaWVyKTsKICAgICBtX3No
YXJlZERpc3BsYXlMaXN0SGFuZGxlcy5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShuZXdIYW5kbGUp
KTsKIAogICAgIHJldHVybiBkaXNwbGF5TGlzdEhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCmluZGV4IDk1ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZiMDA3ODZmMDI0
ZDdlMjYuLmZlNzcwZjFmZmMxNzQ5MTM2Mzk2ZDBiMWIzZWQxY2NhOTlmMjU2ZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtNjYsNiArNjYsMTMgQEAgcHVibGlj
OgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
KCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk7IH0KICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBh
Y2l0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVm
ZmVySWRlbnRpZmllcik7CiAKKyAgICBlbnVtIGNsYXNzIE5lZWRzV2FrZXVwTWVzc2FnZSA6IGJv
b2wgeyBObywgWWVzIH07CisgICAgdm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIE5lZWRz
V2FrZXVwTWVzc2FnZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXIpOworCisgICAgZW51bSBjbGFzcyBJc0ZpcnN0RGVzdGluYXRpb24g
OiBib29sIHsgTm8sIFllcyB9OworICAgIElzRmlyc3REZXN0aW5hdGlvbiBzZXREZXN0aW5hdGlv
bkltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAg
dm9pZCBkaWRBcHBlbmRGbHVzaENvbnRleHRJdGVtKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVp
bnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC03
Niw3ICs4Myw2IEBAIHB1YmxpYzoKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAgICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgc3VibWl0
RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRp
Zmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERp
c3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CiAgICAgdm9pZCByZWxlYXNlUmVt
b3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTky
LDE3ICs5OCwyMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb25uZWN0VG9HUFVQcm9jZXNzKCk7
CiAgICAgdm9pZCByZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgdm9pZCB1
cGRhdGVSZXVzYWJsZUhhbmRsZXMoKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVk
LgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIAorICAgIHZvaWQgZW5kQ3VycmVudERpc3BsYXlMaXN0KCk7CisgICAgUmVmUHRyPERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlPiBmaW5kUmV1c2FibGVEaXNwbGF5TGlzdEhhbmRsZShzaXplX3Qg
Y2FwYWNpdHkpOworCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPj4g
bV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXM7CiAgICAgRGVxdWU8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXM7
Ci0gICAgSGFzaFNldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+
IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nOwogICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZJbWFnZUJ1ZmZlcnNQ
ZW5kaW5nRmx1c2g7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGE0NjY0YmFhYzljNDI0YzU2Yzg2YTkyNjA3YTQyYzU2MjA3Njkw
NTMuLjNlNGY3ZTA0MzI2NDRkZWU3YzIwOTRhNGUyODU1YjVmNjljMGNhZTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMC0xMS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29uY3VycmVudCBkaXNwbGF5IGxpc3RzXSBSZW1vdmUgZGlzcGxheSBsaXN0IGl0ZW0g
YmF0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTA5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMTEtMjcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIG5ldyBkaXNwbGF5
IGxpc3QgbWV0YSBjb21tYW5kcyBpbiBwcmVwYXJhdGlvbiBmb3Igd2Via2l0Lm9yZy9iLzIxOTA5
MQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlM
aXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlM
aXN0VGVzdHMuY3BwCmluZGV4IGViZDg2ZTMyZTA2MmNhZGY2YTliMDFhZWRjYzc3YWQ4ZjZlMjQ1
NDMuLmNmYTEwM2MwM2FkZmQzNTMxNWViYTI2MWM0MmJhNTIzYWZkY2QwYzQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJD
bGllbnQpCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE9wdGlvbmFsPEl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikKKyAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29k
ZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5
cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAg
ICBFWFBFQ1RfRVEodHlwZSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOwogICAgICAgICAgICAgRVhQ
RUNUX0VRKGRhdGFMZW5ndGgsIHNpemVvZihzaXplX3QpKTsKQEAgLTIwNSw2ICsyMDUsOCBAQCBU
RVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJmluZGV4
KSwgc2l6ZW9mKHNpemVfdCkpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBkaWRBcHBlbmRE
YXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3QpIGZpbmFsIHsgfQorCiAgICAgICAg
IFZlY3RvcjxTdHJva2VQYXRoPiYgbV9pdGVtczsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415460</attachid>
            <date>2020-12-04 14:56:03 -0800</date>
            <delta_ts>2020-12-04 15:00:25 -0800</delta_ts>
            <desc>v2</desc>
            <filename>bug-219091-20201204145602.patch</filename>
            <type>text/plain</type>
            <size>65606</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY1YmQwZmJjOGI5YjVj
NTBhZDc1MWI1MTEzYTAzM2U5OTIxMzkxYy4uN2Q4YWU5OGRlMzM1MjkwNzZlNTU5YTU5OTlmN2Jh
M2NlZGI3ZjNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEyLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFN5bmNocm9uaXplIGRpc3BsYXkgbGlzdCByZW5kZXJpbmcgYWNyb3Nz
IHJlbW90ZSBpbWFnZSBidWZmZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTkwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNzQ3Njk1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Y29weVRvIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRl
ZCk6CisKKyAgICAgICAgQWRkIHBsdW1iaW5nIHNvIHRoYXQgYGRpZEFwcGVuZERhdGFgIGNhbiBp
bmZvcm0gdGhlIGNsaWVudCB3aGV0aGVyIHRoZSBkYXRhIHdhcyBhcHBlbmRlZCBhZnRlciBzd2l0
Y2hpbmcgdG8gYQorICAgICAgICBuZXcgYnVmZmVyLiBJbiBXZWJLaXQyJ3MgcmVtb3RlIGltYWdl
IGJ1ZmZlciwgd2UgdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Ig
bm90IHdlIG5lZWQgdG8KKyAgICAgICAgc2VuZCBhIHdha2V1cCBtZXNzYWdlIHRvIHRoZSBHUFUg
cHJvY2Vzcy4gTmFtZWx5LCBpbiB0aGUgY2FzZSBvZiBgRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6WWVz
YCwgd2UgZG9uJ3QgbmVlZCB0bworICAgICAgICB3YWtlIHVwIHRoZSBHUFUgcHJvY2VzcyBldmVu
IHRob3VnaCB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50IHdhcyAwIGJlZm9yZSB3ZSBhZHZhbmNlZCwg
c2luY2UgdGhlIEdQVSBwcm9jZXNzIHdpbGwKKyAgICAgICAgYXV0b21hdGljYWxseSBwcm9ncmVz
cyB0byB0aGlzIGl0ZW0gYnVmZmVyIHdoZW4gaXQncyBkb25lIHByb2Nlc3NpbmcgaXRlbXMgaW4g
dGhlIHByZXZpb3VzIGl0ZW0gYnVmZmVyLgorCisgICAgICAgIFNlZSBXZWJLaXQgY2hhbmdlcyAo
aW4gYFJlbW90ZUltYWdlQnVmZmVyUHJveHlgKSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpkaWRBcHBlbmREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmRFbmNvZGVkRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oOgorCisgICAgICAgIEFkZCBhIG5ldyBgSXRlbUJ1ZmZlcldyaXRpbmdD
bGllbnRgIG1ldGhvZCB0byBpbmZvcm0gY2xpZW50cyB3aGVuIG5ldyBieXRlcyBhcmUgYXBwZW5k
ZWQgdG8gYW4gaXRlbSBidWZmZXIsCisgICAgICAgIGdpdmVuIHRoZSBhZGRpdGlvbmFsIG51bWJl
ciBvZiBieXRlcyBhZGRlZCBhbmQgdGhlIGl0ZW0gYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6ZU9mSXRlbUluQnl0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6CisKKyAgICAgICAgUmVtb3ZlIE1ldGFD
b21tYW5kRW5kLiBJIGludHJvZHVjZWQgdGhpcyBpdGVtIHR5cGUgYmVjYXVzZSBJIHdhcyBnb2lu
ZyB0byBtYWtlIHRoZSBHUFUgcHJvY2VzcyBhbHdheXMgc2xlZXAgZm9yCisgICAgICAgIG1vcmUg
ZGlzcGxheSBsaXN0IGl0ZW0gZGF0YSwgYnV0IEkndmUgc2luY2UgY2hhbmdlZCB0aGUgYXBwcm9h
Y2ggc28gdGhhdCB0aGUgR1BVIHByb2Nlc3MgZ29lcyB0byBzbGVlcCBuYXR1cmFsbHkKKyAgICAg
ICAgd2hlbiBpdCdzIGRvbmUgcHJvY2Vzc2luZyBhbGwgdW5yZWFkIGJ5dGVzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmbHVzaENv
bnRleHQpOgorCisgICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgbWV0aG9kIHRvIGFwcGVuZCBhIGBG
bHVzaENvbnRleHRgIGl0ZW0gdmlhIHRoZSBkaXNwbGF5IGxpc3QgcmVjb3JkZXIsIHRvIGVuc3Vy
ZSB0aGF0IHRoZQorICAgICAgICBhcHByb3ByaWF0ZSByZWNvcmRlciBkZWxlZ2F0ZSBtZXRob2Rz
IGFyZSBpbnZva2VkIHdoZW4gYXBwZW5kaW5nIGEgImZsdXNoIGNvbnRleHQiIGl0ZW0uCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaDoKKwogMjAyMC0xMi0wNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdW0Zsb2F0c10gRmxvYXRBdm9pZGVyIGRvZXMgbm90IG5lZWQgdG8ga2Vl
cCBhIHBvaW50ZXIgdG8gTGF5b3V0OjpCb3ggYXJvdW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4Mjc4NjVhZjc5
OWQyYjQxMDY2OThiZGFlM2RjMTg5NWNlZWNkNDVmLi44ZmI1YmJlZjhhNzQ0MTIzMjJmNDBiMWFm
MDI0YzExYTBmNjdlMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAyMC0xMi0wNCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29uY3Vy
cmVudCBkaXNwbGF5IGxpc3RzXSBTeW5jaHJvbml6ZSBkaXNwbGF5IGxpc3QgcmVuZGVyaW5nIGFj
cm9zcyByZW1vdGUgaW1hZ2UgYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc0NzY5
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZh
Y3RvcnMgdGhlIGV4aXN0aW5nIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmcgbWVj
aGFuaXNtLCBzdWNoIHRoYXQgd2Ugbm8gbG9uZ2VyIHVwZGF0ZSB0aGUgdW5yZWFkCisgICAgICAg
IGJ5dGVzIGNvdW50IGV2ZXJ5IDUxMiBpdGVtcyAob3Igd2hlbiBmbHVzaGluZyB0aGUgZHJhd2lu
ZyBjb250ZXh0KSwgYW5kIGluc3RlYWQgdXBkYXRlIGl0IGV2ZXJ5IHRpbWUgd2UgYXBwZW5kCisg
ICAgICAgIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIEluIG9yZGVyIHRvIGFjaGlldmUgdGhpcyB3
aXRob3V0IG1ha2luZyBpdCBpbXBvc3NpYmxlIGZvciBtdWx0aXBsZSBkaXNwbGF5LWxpc3QgYmFj
a2VkCisgICAgICAgIGltYWdlIGJ1ZmZlcnMgdG8gcmVuZGVyIHNpbXVsdGFuZW91c2x5LCB3ZSBh
bHNvIGFkZCBzdXBwb3J0IGZvciBzeW5jaHJvbml6aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyBhY3Jv
c3MKKyAgICAgICAgZGlmZmVyZW50IGltYWdlIGJ1ZmZlcnMgYnkgdXNpbmcgdGhlIG5ldyBtZXRh
IGNvbW1hbmQgaXRlbXMgYWRkZWQgaW4gYnVnICMyMTkyNjIuIEFzIGRldGFpbGVkIGluIHRoZSBD
aGFuZ2VMb2cKKyAgICAgICAgZm9yIHRoYXQgYnVnLCBhIHN0cmVhbSBvZiBkaXNwbGF5IGxpc3Qg
ZGF0YSB3cml0dGVuIGJ5IHRoZSB3ZWIgcHJvY2VzcyBhbmQgY29uc3VtZWQgYnkgdGhlIEdQVSBw
cm9jZXNzIGlzIG5vdworICAgICAgICBzdHJ1Y3R1cmVkIGxpa2Ugc286CisKKyAgICAgICAgV2Fr
ZXVwIG1lc3NhZ2UgaW5pdGlhdGVzIGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIHdpdGggSW1hZ2Ug
QnVmZmVyIEEgYW5kIEl0ZW0gQnVmZmVyIDEKKyAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwg
ICBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoQikKKyAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgICBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIoMikK
KyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHYgICAgICAgICAgICAg
ICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsrCisgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsgfAorICAgICAgICAgICAgfCB8IERlc3RpbmF0aW9uICAgICAgICB8
IHwgRGVzdGluYXRpb24gICAgICAgICAgICAgICAgICB8IHwgSXRlbSBCdWZmZXIgMQorICAgICAg
ICAgICAgfCB8IEltYWdlIEJ1ZmZlciBBICAgICB8IHwgSW1hZ2UgQnVmZmVyIEIgICAgICAgICAg
ICAgICB8IHwKKyAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KworICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgfCBEc3QuIEltYWdlICAgfCB8IERlc3Rp
bmF0aW9uIEltYWdlICAgICB8ICBVbnVzZWQgICAgICB8IEl0ZW0gQnVmZmVyIDIKKyAgICAgICAg
ICAgIHwgfCBCdWZmZXIgQiAgICAgfCB8IEJ1ZmZlciBBICAgICAgICAgICAgICB8ICBDYXBhY2l0
eSAgICB8CisgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKyAgICAgICAgICAgICAgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVz
dGluYXRpb25JbWFnZUJ1ZmZlcihBKQorCisgICAgICAgIChOb3RlIHRoYXQgdGhlIGBNZXRhQ29t
bWFuZEVuZGAgaXRlbSBoYXMgYmVlbiBvbWl0dGVkLCBzaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0
byBleHBsaWNpdGx5IHRlbGwgdGhlIEdQVQorICAgICAgICBwcm9jZXNzIHRvIGdvIHRvIHNsZWVw
IHdpdGggdGhlIGxhdGVzdCBpdGVyYXRpb24gb2YgdGhpcyBwYXRjaCkuCisKKyAgICAgICAgSW4g
b3JkZXIgdG8gd3JpdGUgZGlzcGxheSBsaXN0IGRhdGEgY29uZm9ybWluZyB0byB0aGlzIGZvcm1h
dCwgd2UgYWRkIGEgbWVjaGFuaXNtIHRvIHRoZSB3ZWIgcHJvY2VzcyB0aGF0IGtlZXBzCisgICAg
ICAgIHRyYWNrIG9mIHRoZSAiY3VycmVudCBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIiIChpLmUu
IHRoZSBpbWFnZSBidWZmZXIgdGhhdCBoYXMgbW9zdCByZWNlbnRseQorICAgICAgICBhcHBlbmRl
ZCBhIGRpc3BsYXkgbGlzdCBpdGVtKS4gUmlnaHQgYmVmb3JlIHRoaXMgZGVzdGluYXRpb24gaXMg
YWJvdXQgdG8gY2hhbmdlLCB3ZSBhcHBlbmQgYSBuZXcKKyAgICAgICAgYE1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcmAgaXRlbSBiZWZvcmUgcHJvY2VlZGluZyB0byBhcHBl
bmQgZGlzcGxheSBsaXN0IGl0ZW1zIGZvciB0aGUgbmV3CisgICAgICAgIGN1cnJlbnQgZGVzdGlu
YXRpb24uCisKKyAgICAgICAgU2luY2Ugd2Ugbm93IGJ1bXAgdGhlIHVucmVhZCBjb3VudCBldmVy
eSB0aW1lLCB3ZSBuZWVkIHRvIGRvIHNvbWUgYWRkaXRpb25hbCB3b3JrIHRvIGF2b2lkIGFuIGV4
Y2Vzc2l2ZSBudW1iZXIKKyAgICAgICAgb2Ygd2FrZXVwcyBhbmQgc2xlZXBzIGluIHRoZSBHUFUg
cHJvY2Vzcywgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGNhdXNlIGEgbWFzc2l2ZSByZWdyZXNzaW9u
LiBUbyBkbyB0aGlzLCB3ZQorICAgICAgICBpbnRyb2R1Y2UgYW4gaXRlbSBjb3VudCBoeXN0ZXJl
c2lzIGluIHRoZSB3ZWIgcHJvY2Vzcywgc3VjaCB0aGF0IHdlIHdpbGwgd2FpdCBmb3IgNTEyIGl0
ZW1zIHRvIGJlIHdyaXR0ZW4gYmVmb3JlCisgICAgICAgIGF0dGVtcHRpbmcgdG8gc2VuZCB0aGUg
d2FrZXVwIG1lc3NhZ2UuIFRoaXMgYWxsb3dzIHRoZSB3ZWIgcHJvY2VzcyB0byBnZXQgYSBzbWFs
bCBoZWFkIHN0YXJ0IG92ZXIgdGhlIEdQVQorICAgICAgICBwcm9jZXNzLCBhbmQgdGh1cyBhbGxv
d3MgdGhlIEdQVSBwcm9jZXNzIHRvIGJlIG1vcmUgY29uc2lzdGVudGx5IGJ1c3kgb3ZlciB0aGUg
Y291cnNlIG9mIGEgc2luZ2xlIGZyYW1lLgorCisgICAgICAgIE9uIHRoZSByZWFkZXIgKEdQVSBw
cm9jZXNzKSBzaWRlLCB3ZSBtYWtlIHNvbWUgbWlub3IgYWRqdXN0bWVudHMgc28gdGhhdCB0aGUg
bWFpbiBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyBsb29wCisgICAgICAgIG9mIHRoZSBHUFUgcHJv
Y2VzcyBpcyBjYXBhYmxlIG9mIGNoYW5naW5nIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlcnMgd2hp
bGUgcHJvY2Vzc2luZyBhIHN0cmVhbSBvZiBkaXNwbGF5IGxpc3QKKyAgICAgICAgaXRlbXMuCisK
KyAgICAgICAgU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgorCisgICAgICAgIFVwZGF0ZSBg
YWR2YW5jZWAgc28gdGhhdCBpdCBqdXN0IHBlcmZvcm1zIGEgc2luZ2xlIDgtYnl0ZSBhdG9taWMg
YGV4Y2hhbmdlU3ViYCByYXRoZXIgdGhhbiBncmFiYmluZyBhIHNwaW5sb2NrLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKworICAgICAgICBSZW5hbWUgYGFwcGx5
RGlzcGxheUxpc3RzRnJvbUhhbmRsZWAgdG8gYG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0
ZXJBcHBseWluZ0Rpc3BsYXlMaXN0c2AsIGFuZCBtYWtlIGl0CisgICAgICAgIHJldHVybiB0aGUg
Y3VycmVudCBpbWFnZSBidWZmZXIgdG8gdXNlIGFzIHRoZSBkZXN0aW5hdGlvbiBmb3IgcmVwbGF5
aW5nIGRpc3BsYXkgbGlzdCBjb21tYW5kcy4gVGhpcyBoZWxwZXIgaXMKKyAgICAgICAgc3RpbGwg
cmVzcG9uc2libGUgZm9yIHJlcGxheWluZyBhIGRpc3BsYXkgbGlzdCBpdGVtIGJ1ZmZlciB1bnRp
bCBpdCBoYXMgbm8gbW9yZSBkYXRhICh0aGF0IGlzLCB1bnRpbCB3ZQorICAgICAgICBlbmNvdW50
ZXIgYSBgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyYCBpdGVtIGluZm9ybWluZyB1cyBvZiB0
aGUgbmV4dCBpdGVtIGJ1ZmZlciB0byBjb25zdW1lKS4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KToKKworICAgICAg
ICBBZGp1c3QgdGhpcyB0byBjYWxsIGBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBw
bHlpbmdEaXNwbGF5TGlzdHNgLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFNo
YXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorCisgICAgICAgIFJlbW92ZSBgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OkxvY2tgIGFsdG9nZXRoZXIsIG5vdyB0aGF0IHdlIGp1c3QgaGF2
ZSBhIHNpbmdsZSBhdG9taWMgYHVpbnQ2NF90YCBjb3VudGVyIHRvCisgICAgICAgIHJlcHJlc2Vu
dCB0aGUgbnVtYmVyIG9mIHVucmVhZCBieXRlcy4KKworICAgICAgICAoV2ViS2l0OjpTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6dW5yZWFkQnl0ZXMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6TG9jazo6TG9jayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrOjp+TG9jayk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZSk6CisKKyAg
ICAgICAgTWFrZSB0aGlzIHVzZSB0aGUgc2luZ2xlIGF0b21pYyBjb3VudGVyLCBpbnN0ZWFkIG9m
IGdyYWJiaW5nIGEgc3BpbmxvY2suCisKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0
ZXJIYW5kbGU6Om1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZzZXRJZlBv
c3NpYmxlKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgYHJlc2V0V3JpdGFibGVPZmZzZXRJ
ZlBvc3NpYmxlYCB0byB0aGUgbW9yZSBhY2N1cmF0ZSBgbW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFy
dElmUG9zc2libGVgLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyUHJveHk6OmNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpOgorCisgICAgICAgIEFkZCBh
IGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEgYE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcmAgaXRlbSB0byB0aGUgZGlzcGxheSBsaXN0LCBnaXZlbiB0aGUKKyAgICAgICAg
aWRlbnRpZmllciBvZiB0aGlzIG5leHQgaXRlbSBidWZmZXIuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y2xlYXJEaXNwbGF5TGlzdCk6CisKKyAgICAgICAgQWRk
IGEgaGVscGVyIG1ldGhvZCB0byBjbGVhciB0aGUgZGlzcGxheSBsaXN0LCBzdWNoIHRoYXQgdGhl
IGBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5YCB3aWxsIGJlIGFza2VkIGZvciBhIG5ldworICAgICAg
ICBidWZmZXIgaGFuZGxlIHRoZSBuZXh0IHRpbWUgd2UgYXBwZW5kIGFuIGl0ZW0uCisKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6d2FpdEZvckRpZEZsdXNoV2l0aFRp
bWVvdXQpOgorCisgICAgICAgIE1ha2UgdGhpcyBoaXQgdGhlIG1heGltdW0gYHdhaXRGb3JBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5YCBhdHRlbXB0IGNvdW50IGFuZCAiZmFpbCIgb25seSBpZiB0aGUg
Y2FsbCB0bworICAgICAgICBgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHlgIGFjdHVhbGx5
IHRpbWVzIG91dC4gVGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZSBz
Y2VuYXJpbyBvZgorICAgICAgICBtdWx0aXBsZSBpbWFnZSBidWZmZXJzIHNpbXVsdGFuZW91c2x5
IGFwcGVuZGluZyBkaXNwbGF5IGxpc3QgaXRlbXMgd29ya3Mgd2hlbiBhbGwgaW1hZ2UgYnVmZmVy
cyBwZXJmb3JtIChub24tCisgICAgICAgIGJsb2NraW5nKSBmbHVzaGVzIHNpbXVsdGFuZW91c2x5
LCBmb2xsb3dlZCBieSBhIHN5bmMtd2FpdCAoYmxvY2tpbmcpIGZsdXNoLiBJbiB0aGlzIHNpdHVh
dGlvbiwgdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIG1heSByZWNlaXZlIG1vcmUgdGhhbiB0aHJl
ZSBgRGlkRmx1c2hgIG1lc3NhZ2VzIGluIHJhcGlkIHN1Y2Nlc3Npb24sIGNhdXNpbmcgaXQgdG8g
aGl0IHRoaXMgbWF4aW11bSBsaW1pdCBvZiAzCisgICAgICAgIGluc3RhbnRseSBhbmQgYXZvaWQg
d2FpdGluZyBmb3IgdGhlIGV4cGVjdGVkIGBEaWRGbHVzaGAgbWVzc2FnZSB0byBhcnJpdmUuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6c3VibWl0RGlzcGxheUxp
c3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6CisKKyAgICAgICAg
UmVzZXQgc3RhdGUgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgdGVybWluYXRlZC4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndpbGxBcHBlbmRJdGVtKToK
KworICAgICAgICBVcGRhdGUgdGhlIGN1cnJlbnQgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIChg
bV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXJgKS4gSWYgdGhpcyBpZGVu
dGlmaWVyCisgICAgICAgIGNoYW5nZWQsIHRoZW4gd2UgYXBwZW5kIGEgYE1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcmAgaXRlbSB0byB0aGUgcHJldmlvdXMgZGVzdGluYXRp
b24gYmVmb3JlCisgICAgICAgIHNldHRpbmcgdGhlIG5ldyBkZXN0aW5hdGlvbiBpbWFnZSBidWZm
ZXIuIFdlIGFsc28gbmVlZCB0byBjbGVhciB0aGUgbmV3IGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZl
cidzIGRpc3BsYXkgbGlzdAorICAgICAgICBiZWZvcmUgd3JpdGluZyBuZXcgaXRlbXMsIHRvIHBy
ZXZlbnQgaXQgZnJvbSBvdmVyd3JpdGluZyBzaGFyZWQgZGlzcGxheSBsaXN0IGl0ZW0gZGF0YS4K
KworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnNlbmRXYWtl
dXBNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpzZW5kRGVmZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEpOgorCisgICAgICAgIElt
cGxlbWVudCBhIG5ldyBgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnRgIGhvb2sgYnkgYWR2YW5jaW5n
IHRoZSBjb3JyZXNwb25kaW5nIGl0ZW0gYnVmZmVyJ3MgdW5yZWFkIGNvdW50LgorICAgICAgICBB
ZGRpdGlvbmFsbHksIHNjaGVkdWxlIGEgd2FrZXVwIG1lc3NhZ2UgaW4gdGhlIGNhc2Ugd2hlcmUg
dGhlIHVucmVhZCBjb3VudCB3YXMgemVybyB3aGVuIHdlIGFkdmFuY2VkLCBhbmQgdGhlCisgICAg
ICAgIGl0ZW0gYnVmZmVyIHdlJ3ZlIGFwcGVuZGVkIHRvIGlzIG5vdCAiY29ubmVjdGVkIiB0byBh
IHByZXZpb3VzIGl0ZW0gYnVmZmVyIGJ5IHdheSBvZiBhbiBpdGVtIGJ1ZmZlciBjaGFuZ2UgaXRl
bS4KKworICAgICAgICBBZGRpdGlvbmFsbHksIGluIHRoZSBjYXNlIHdoZXJlIHdlIGRvbid0IHNj
aGVkdWxlIGEgbmV3IHdha2V1cCBtZXNzYWdlLCBjaGVjayB3aGV0aGVyIG9yIG5vdCB0aGVyZSBp
cyBhIGRlZmVycmVkCisgICAgICAgIHdha2V1cCBtZXNzYWdlOyBpZiB0aGVyZSBpcywgdGhlbiBk
ZWNyZW1lbnQgdGhlIHJlbWFpbmluZyBpdGVtIGNvdW50IGJlZm9yZSB3ZSBzZW5kIHRoZSB3YWtl
dXAgbWVzc2FnZSwgYW5kIHNlbmQKKyAgICAgICAgdGhlIG1lc3NhZ2UgaWYgdGhlIGNvdW50IHJl
YWNoZXMgMC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmZpbmRSZXVzYWJsZURpc3BsYXlMaXN0SGFuZGxlKToKKworICAgICAgICBQdWxsIGxvZ2ljIHRv
IGZpbmQgYSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSBzdWl0YWJsZSBmb3IgcmV1c2UgaW50
byBhIHNlcGFyYXRlIGhlbHBlciBtZXRob2QsIGFuZCBhZGp1c3QgaXQKKyAgICAgICAgc28gdGhh
dCBpZiB0aGUgbW9zdCByZWNlbnRseSB1c2VkIGRpc3BsYXkgbGlzdCBoYW5kbGUgaGFzIHJ1biBv
dXQgb2YgYXZhaWxhYmxlIGNhcGFjaXR5LCB3ZSBtb3ZlIGl0IHRvIHRoZSBlbmQKKyAgICAgICAg
b2YgdGhlIHJldXNlIHF1ZXVlIGFuZCBvbmx5IHJldXNlIHRoZSBuZXcgZmlyc3Qgc2hhcmVkIGhh
bmRsZSBpbiB0aGUgcXVldWUgaWYgaXRzIHdyaXRhYmxlIG9mZnNldCBjYW4gYmUgcmVzZXQuCisg
ICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBHUFUgcHJvY2VzcyBjYW4gYWx3YXlzIGNvbnRp
bnVlIHJlYWRpbmcgZGlzcGxheSBsaXN0IGl0ZW0gZGF0YSBmcm9tIHRoZSBzdGFydCBvZiBuZXcg
aXRlbQorICAgICAgICBidWZmZXJzIC0tIGkuZS4sIHdlIGRvbid0IGVuZCB1cCB3aXRoIHRoZSB3
ZWIgcHJvY2VzcyB3cml0aW5nIG91dCBhIHN0cmVhbSBvZiBkaXNwbGF5IGxpc3QgZGF0YSBsaWtl
OgorCisgICAgICAgICAgIChTdGFydCkgQnl0ZXMgKDE2LCA2NTUyMCkgaW4gSXRlbUJ1ZmZlclsx
XQorICAgICAgICAgICAgICAgICAgIEJ5dGVzICgxNiwgNjU1MzYpIGluIEl0ZW1CdWZmZXJbMl0K
KyAgICAgICAgICAgICAgICAgICBCeXRlcyAoNjU1MjAsIDY1NTM2KSBpbiBJdGVtQnVmZmVyWzFd
CisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
dGVtQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaDoKKwogMjAyMC0xMi0wNCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KIAogICAgICAgICBDcmVhdGUgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIHRleHQgaW50ZXJh
Y3Rpb24gZ2VzdHVyZXMgaW4gV0tXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRl
eCA4MTIwNGRmMDg3ZTY1NThlYWU3ZTRkNDAxOGM2NTViNThlMmE1OGE2Li41MWU3OWUwYzdmNTQ0
YzNjZjc0NTQ5N2JkMDg3MmVlYzJkYzhmNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAK
QEAgLTI4Miw4ICsyODIsNiBAQCB2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBp
dGVtKQogICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6
CiAgICAgICAgIHJldHVybiBhcHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPihpdGVt
LmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
Ok1ldGFDb21tYW5kRW5kOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kRW5kPihp
dGVtLmdldDxNZXRhQ29tbWFuZEVuZD4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VE
YXRhOgogICAgICAgICByZXR1cm4gYXBwZW5kPFB1dEltYWdlRGF0YT4oaXRlbS5nZXQ8UHV0SW1h
Z2VEYXRhPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGNlNmIwZTliMThi
ZGM3YWFiMzg0NGQ4NzM2NjM2ODkyMzk0MGUyMjguLmMwNDBlOThkOThjMTE2ZWFmMjg2YTUxZGYz
YTc3ZDVlMGY4MTgyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCkBAIC0yMjgsNyArMjI4LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5k
Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29t
bWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHsKICAg
ICAgICAgZ2V0PFB1dEltYWdlRGF0YT4oKS5hcHBseShjb250ZXh0KTsKQEAgLTQ2NCwxMCArNDYz
LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
Pjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2UgSXRlbVR5cGU6Ok1l
dGFDb21tYW5kRW5kOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPE1ldGFDb21tYW5kRW5kPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYTogewogICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxQYWludEZyYW1lRm9y
TWVkaWE+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTcyMywxMCArNzE4LDYgQEAgdm9p
ZCBJdGVtSGFuZGxlOjpjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAg
ICAgbmV3IChpdGVtT2Zmc2V0KSBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIoZ2V0PE1ldGFD
b21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0
KSBNZXRhQ29tbWFuZEVuZChnZXQ8TWV0YUNvbW1hbmRFbmQ+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYTogewogICAgICAg
ICBuZXcgKGl0ZW1PZmZzZXQpIFBhaW50RnJhbWVGb3JNZWRpYShnZXQ8UGFpbnRGcmFtZUZvck1l
ZGlhPigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODc2LDI1ICs4NjcsMjUgQEAgdm9pZCBJdGVt
QnVmZmVyOjpjbGVhcigpCiAgICAgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyA9IDA7CiB9CiAKLXZv
aWQgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9m
Qnl0ZXMpCitEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZl
cklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogewogICAgIGF1dG8gc2l6ZUZvckJ1ZmZl
clN3aXRjaEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGU6Ok1l
dGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAgaWYgKG1fd3JpdHRlbk51bWJlck9mQnl0
ZXMgKyBudW1iZXJPZkJ5dGVzICsgc2l6ZUZvckJ1ZmZlclN3aXRjaEl0ZW0gPD0gbV93cml0YWJs
ZUJ1ZmZlci5jYXBhY2l0eSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRGlkQ2hh
bmdlSXRlbUJ1ZmZlcjo6Tm87CiAKICAgICBhdXRvIG5leHRCdWZmZXIgPSBjcmVhdGVJdGVtQnVm
ZmVyKG51bWJlck9mQnl0ZXMgKyBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSk7Ci0gICAgYm9vbCBo
YWRQcmV2aW91c0J1ZmZlciA9IG1fd3JpdGFibGVCdWZmZXI7Ci0gICAgaWYgKGhhZFByZXZpb3Vz
QnVmZmVyKQotICAgICAgICB1bmNoZWNrZWRBcHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyPihuZXh0QnVmZmVyLmlkZW50aWZpZXIpOwotICAgIGF1dG8gcHJldmlvdXNCdWZmZXIgPSBz
dGQ6OmV4Y2hhbmdlKG1fd3JpdGFibGVCdWZmZXIsIHsgfSk7Ci0gICAgcHJldmlvdXNCdWZmZXIu
Y2FwYWNpdHkgPSBzdGQ6OmV4Y2hhbmdlKG1fd3JpdHRlbk51bWJlck9mQnl0ZXMsIDApOwotICAg
IGlmIChoYWRQcmV2aW91c0J1ZmZlcikKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlcnMuYXBwZW5k
KFdURk1vdmUocHJldmlvdXNCdWZmZXIpKTsKLQorICAgIGJvb2wgaGFkUHJldmlvdXNCdWZmZXIg
PSBtX3dyaXRhYmxlQnVmZmVyICYmIG1fd3JpdGFibGVCdWZmZXIuaWRlbnRpZmllciAhPSBuZXh0
QnVmZmVyLmlkZW50aWZpZXI7CisgICAgaWYgKGhhZFByZXZpb3VzQnVmZmVyKSB7CisgICAgICAg
IHVuY2hlY2tlZEFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KERpZENoYW5nZUl0
ZW1CdWZmZXI6Ok5vLCBuZXh0QnVmZmVyLmlkZW50aWZpZXIpOworICAgICAgICBtX3dyaXRhYmxl
QnVmZmVyLmNhcGFjaXR5ID0gbV93cml0dGVuTnVtYmVyT2ZCeXRlczsKKyAgICAgICAgbV9yZWFk
T25seUJ1ZmZlcnMuYXBwZW5kKG1fd3JpdGFibGVCdWZmZXIpOworICAgIH0KKyAgICBtX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzID0gMDsKICAgICBtX3dyaXRhYmxlQnVmZmVyID0gV1RGTW92ZShuZXh0
QnVmZmVyKTsKKyAgICByZXR1cm4gaGFkUHJldmlvdXNCdWZmZXIgPyBEaWRDaGFuZ2VJdGVtQnVm
ZmVyOjpZZXMgOiBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpObzsKIH0KIAotdm9pZCBJdGVtQnVmZmVy
OjphcHBlbmRFbmNvZGVkRGF0YShJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCit2b2lkIEl0ZW1C
dWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiB7CiAgICAgYXV0byBkYXRh
ID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtKHRlbXBvcmFyeUl0ZW0pOwogICAgIGlmICgh
ZGF0YSkKQEAgLTkwMywxMyArODk0LDIwIEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kRW5jb2Rl
ZERhdGEoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogICAgIGF1dG8gZGF0YUxlbmd0aCA9IGRh
dGEtPnNpemUoKTsKICAgICBhdXRvIGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtID0g
MiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0
X3QpLCBkYXRhTGVuZ3RoKTsKIAotICAgIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKGFkZGl0
aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKKyAgICBhdXRvIGJ1ZmZlckNoYW5nZWQgPSBz
d2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRl
bSk7CiAKICAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc10g
PSBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZW1wb3JhcnlJdGVtLnR5cGUoKSk7CiAgICAgcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdCo+KG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1fd3JpdHRlbk51
bWJlck9mQnl0ZXMpWzFdID0gZGF0YUxlbmd0aDsKICAgICBtZW1jcHkobV93cml0YWJsZUJ1ZmZl
ci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIDIgKiBzaXplb2YodWludDY0X3QpLCBk
YXRhLT5kYXRhQXNVSW50OFB0cigpLCBkYXRhTGVuZ3RoKTsKIAotICAgIG1fd3JpdHRlbk51bWJl
ck9mQnl0ZXMgKz0gYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW07CisgICAgZGlkQXBw
ZW5kRGF0YShhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbSwgYnVmZmVyQ2hhbmdlZCk7
Cit9CisKK3ZvaWQgSXRlbUJ1ZmZlcjo6ZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZCeXRl
cywgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVmZmVyKQoreworICAgIG1fd3Jp
dHRlbk51bWJlck9mQnl0ZXMgKz0gbnVtYmVyT2ZCeXRlczsKKyAgICBpZiAobV93cml0aW5nQ2xp
ZW50KQorICAgICAgICBtX3dyaXRpbmdDbGllbnQtPmRpZEFwcGVuZERhdGEobV93cml0YWJsZUJ1
ZmZlciwgbnVtYmVyT2ZCeXRlcywgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmgKaW5kZXggYzEwY2MzZTUyYTIwYWI1ZWMwMmE1NjA2Y2ZjODQ5MzFmZjIxMjg2Zi4uNmNlM2I1
ZWNjNDBiNzk0NGQyN2QzNDgxODE2OTlkYTgwMWZjNDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtODMsMTIgKzgzLDE1IEBAIHN0cnVjdCBJdGVtSGFu
ZGxlIHsKICAgICB2b2lkIGNvcHlUbyhJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdDsKIH07
CiAKK2VudW0gY2xhc3MgRGlkQ2hhbmdlSXRlbUJ1ZmZlciA6IGJvb2wgeyBObywgWWVzIH07CisK
IGNsYXNzIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
dGVtQnVmZmVyV3JpdGluZ0NsaWVudCgpIHsgfQogCiAgICAgdmlydHVhbCBJdGVtQnVmZmVySGFu
ZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5kbGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJl
ck9mQnl0ZXMsIERpZENoYW5nZUl0ZW1CdWZmZXIpID0gMDsKIH07CiAKIGNsYXNzIEl0ZW1CdWZm
ZXJSZWFkaW5nQ2xpZW50IHsKQEAgLTE1MiwxNyArMTU1LDE3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHN0YXRpYyB1aW50OF90IHRlbXBvcmFyeUl0ZW1CdWZmZXJbc2l6ZW9mKHVpbnQ2NF90KSAr
IHNpemVvZihUKV07CiAgICAgICAgICAgICB0ZW1wb3JhcnlJdGVtQnVmZmVyWzBdID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwogICAgICAgICAgICAgbmV3ICh0ZW1wb3JhcnlJ
dGVtQnVmZmVyICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOwotICAgICAgICAgICAgYXBwZW5kRW5jb2RlZERhdGEoeyB0ZW1wb3JhcnlJdGVtQnVmZmVy
IH0pOworICAgICAgICAgICAgYXBwZW5kKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKICAgICAg
ICAgICAgIEl0ZW1IYW5kbGUgeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0uZGVzdHJveSgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc3dhcFdyaXRhYmxlQnVmZmVy
SWZOZWVkZWQocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHBh
ZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSkpOwogCiAgICAgICAgIGlm
ICghc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkKICAgICAgICAgICAg
IG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMuYXBwZW5kKHsgJm1fd3JpdGFibGVC
dWZmZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXSB9KTsKIAotICAgICAgICB1bmNoZWNr
ZWRBcHBlbmQ8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgdW5jaGVj
a2VkQXBwZW5kPFQ+KGJ1ZmZlckNoYW5nZWQsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
CiAgICAgfQogCiAgICAgdm9pZCBzZXRDbGllbnQoSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQqIGNs
aWVudCkgeyBtX3dyaXRpbmdDbGllbnQgPSBjbGllbnQ7IH0KQEAgLTE3MSwxNSArMTc0LDE2IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY29uc3QgSXRlbUJ1ZmZlckhhbmRsZXMmIHJlYWRPbmx5
QnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHlCdWZmZXJzOyB9CiAgICAgdm9pZCBm
b3JFYWNoSXRlbUJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmKT4m
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRBcHBlbmREYXRhKHNpemVfdCBu
dW1iZXJPZkJ5dGVzLCBEaWRDaGFuZ2VJdGVtQnVmZmVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRW5jb2RlZERhdGEoSXRlbUhhbmRsZSk7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCB1bmNoZWNrZWRBcHBl
bmQoQXJncyYmLi4uIGFyZ3MpCisgICAgV0VCQ09SRV9FWFBPUlQgRGlkQ2hhbmdlSXRlbUJ1ZmZl
ciBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoSXRlbUhhbmRsZSk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoRGlkQ2hhbmdlSXRl
bUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVmZmVyLCBBcmdzJiYuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIGF1dG8qIHN0YXJ0T2ZJdGVtID0gJm1fd3JpdGFibGVCdWZmZXIuZGF0YVttX3dyaXR0ZW5O
dW1iZXJPZkJ5dGVzXTsKICAgICAgICAgc3RhcnRPZkl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50
OF90PihUOjppdGVtVHlwZSk7CiAgICAgICAgIG5ldyAoc3RhcnRPZkl0ZW0gKyBzaXplb2YodWlu
dDY0X3QpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIG1fd3JpdHRl
bk51bWJlck9mQnl0ZXMgKz0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1U
eXBlKTsKKyAgICAgICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoVDo6aXRlbVR5cGUpLCBkaWRDaGFuZ2VJdGVtQnVmZmVyKTsKICAgICB9CiAKICAgICBJdGVt
QnVmZmVyUmVhZGluZ0NsaWVudCogbV9yZWFkaW5nQ2xpZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4IGYxMWE5ZmVkZDA3YzQwOWYy
OTg5OGRlMzljODIzMTAzMWI0MTdlZDAuLmMwYzczYjgzYmQ1MmVhYTA0YTk1MTc4MTgwNDQ1Mzk0
N2JiYzk1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAg
LTEzMCw4ICsxMzAsNiBAQCBzdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBl
IHR5cGUpCiAgICAgICAgIHJldHVybiBzaXplb2YoTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1C
dWZmZXI6CiAgICAgICAgIHJldHVybiBzaXplb2YoTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihNZXRhQ29tbWFuZEVuZCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgog
ICAgICAgICByZXR1cm4gc2l6ZW9mKFB1dEltYWdlRGF0YSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6
UGFpbnRGcmFtZUZvck1lZGlhOgpAQCAtMTg2LDcgKzE4NCw2IEBAIGJvb2wgaXNEcmF3aW5nSXRl
bShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKICAgICBj
YXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgIGNhc2Ug
SXRlbVR5cGU6Ok1ldGFDb21tYW5kRW5kOgogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgogICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CkBAIC0y
OTksNyArMjk2LDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNl
IEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21t
YW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6UmVzdG9yZToKICAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaAppbmRleCA5ZGZlMmI5OTJkMDFjMzUxOTJlODU4NTdlYzgwN2Qw
Yzk4YWY1M2E2Li4wZTk0N2EwNmRhYjVhMmRmYjQ3NjkwODJmOGNhYzU0OGFmODkzNDNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKQEAgLTc2LDcgKzc2LDYgQEAgZW51
bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEZpbGxQYXRoLAogICAgIEZpbGxFbGxp
cHNlLAogICAgIEZsdXNoQ29udGV4dCwKLSAgICBNZXRhQ29tbWFuZEVuZCwKICAgICBNZXRhQ29t
bWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsCiAgICAgTWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyLAogICAgIFB1dEltYWdlRGF0YSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcAppbmRleCAzMzExOTgzMzBlMTQzOWQyMTAxY2FiYTA1NGZjMGE1OTQzNzM3YzlmLi5i
ZGJkMjM5ZjczMzc4NDAxNTI3NzFhMmY0NTdiYzQ2OTUxMGQwZTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMDE0LDExICsxMDE0LDYgQEAgc3RhdGljIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IE1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb24KICAgICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBNZXRhQ29tbWFuZEVuZCYpCi17Ci0gICAgcmV0
dXJuIHRzOwotfQotCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgSXRlbVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzAsNyArMTA2
NSw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVt
VHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDogdHMgPDwgImZsdXNo
LWNvbnRleHQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXI6IHRzIDw8ICJtZXRhLWNvbW1hbmQtY2hhbmdlLWRlc3RpbmF0
aW9uLWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5k
Q2hhbmdlSXRlbUJ1ZmZlcjogdHMgPDwgIm1ldGEtY29tbWFuZC1jaGFuZ2UtaXRlbS1idWZmZXIi
OyBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDogdHMgPDwgIm1ldGEt
Y29tbWFuZC1lbmQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHRz
IDw8ICJwdXQtaW1hZ2UtZGF0YSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJh
bWVGb3JNZWRpYTogdHMgPDwgInBhaW50LWZyYW1lLWZvci1tZWRpYSI7IGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6IHRzIDw8ICJzdHJva2UtcmVjdCI7IGJyZWFrOwpAQCAt
MTIzMiw5ICsxMjI2LDYgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
SXRlbUhhbmRsZSBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcjoKICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyPigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVu
ZDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRFbmQ+KCk7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKICAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8UHV0SW1hZ2VEYXRhPigpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCmluZGV4IDcwMGM2ODc0OTE1NDdmOTk5Yjg5MDJlZmMyZTQ1ZWQxNzY4YjRj
OGMuLmM3YTlhMjBkOWJhMDllNzc4MTQ2ZDQ4ZDEzOTdkMzE2YTUxZmY0ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjI1MCwxMyArMjI1MCw2IEBAIHByaXZhdGU6CiAg
ICAgSXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotY2xhc3MgTWV0YUNv
bW1hbmRFbmQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5
cGUgPSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzSW5saW5lSXRlbSA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2lu
Z0l0ZW0gPSBmYWxzZTsKLX07Ci0KIGNsYXNzIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVt
VHlwZSA9IEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI7
CkBAIC0yMzMxLDcgKzIzMjQsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RmlsbFBhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
aWxsRWxsaXBzZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29u
dGV4dCwKLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kRW5k
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmgKaW5kZXggNzdjYmEzMzZkYzViOTRmNGRiMjFkYTY2MTEwN2JkNGMzMmNmNzA4NS4uYTM5
ZDcyYmMxOGNjODZlYTY0MGYxNDViZWM2ZWMxM2FiZDQ4NmMzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICB9Owog
CisgICAgdm9pZCBmbHVzaENvbnRleHQoRmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgYXBw
ZW5kPEZsdXNoQ29udGV4dD4oaWRlbnRpZmllcik7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRHJhd0dseXBoc1JlY29yZGVyOwogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE2NCw4ICsxNjYsOCBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJ
dGVtVHlwZSk7Ci0gICAgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOwogCiAgICAg
dm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBkZjQ0YzljMzBhYzZjOGMzYzZm
OTAxZjJhODEwNzNkZWI0NWY5NTE1Li40ZGE4ZTFkN2ZkMmQ5Y2JmODA0MDcxMTRmNWY1ZDYwODA1
OWFlMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0x
MTcsMTIgKzExNyw2IEBAIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpdGVtLmlzPE1ldGFDb21tYW5kRW5kPigpKSB7
Ci0gICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZl
cjsKLSAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFz
b246OkVuZE9mRGlzcGxheUxpc3Q7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAg
ICAgICAgIGlmIChhdXRvIHJlYXNvbkZvclN0b3BwaW5nID0gYXBwbHlJdGVtKGl0ZW0pKSB7CiAg
ICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSAqcmVhc29uRm9yU3RvcHBpbmc7
CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5o
CmluZGV4IGM0NDI3MWYxMGVlZDBiZjAwYWExZjNmYmY3MDJhNDFhZGNhM2Q5MjAuLjEzNzQ2YWJi
ZjhjYWM2OTM2MzJlMTU0YzUyOWZkNjc4M2E2ZGIzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuaApAQCAtNDIsNyArNDIsNiBAQCBlbnVtIGNsYXNzIFN0b3BSZXBsYXlS
ZWFzb24gOiB1aW50OF90IHsKICAgICBSZXBsYXllZEFsbEl0ZW1zLAogICAgIE1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwKICAgICBDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyLAotICAgIEVuZE9m
RGlzcGxheUxpc3QsCiAgICAgRGVjb2RpbmdGYWlsdXJlIC8vIEZJWE1FOiBQcm9wYWdhdGUgZGVj
b2RpbmcgZXJyb3JzIHRvIGRpc3BsYXkgbGlzdCByZXBsYXkgY2xpZW50cyB0aHJvdWdoIHRoaXMg
ZW51bSBhcyB3ZWxsLgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKaW5kZXggNGU0ZDQ5
MWYwZDA5NTM4OTY0M2I0OGEyNzBiMjZhZWYxMzdiN2JmZS4uYWQxMTM2ZTNlOGNlMjZhMDhjZTJi
NzE5MjdlMmNiZDA0Mjg1MmE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCkBAIC0zMSwx
NCArMzEsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHNpemVfdCBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQogewotICAgIGF1dG8gbG9ja2Vy
ID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhpcyB9OwotICAgIGlmIChMSUtF
TFkoYW1vdW50IDw9IGhlYWRlcigpLnVucmVhZEJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGhlYWRl
cigpLnVucmVhZEJ5dGVzIC09IGFtb3VudDsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBy
ZXN1bHQgaW4gdGVybWluYXRpbmcgdGhlIHdlYiBwcm9jZXNzLgotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIGhlYWRlcigpLnVucmVhZEJ5dGVzID0gMDsKLSAgICByZXR1cm4gMDsKKyAg
ICBhdXRvIHByZXZpb3VzVW5yZWFkQnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlcy5leGNoYW5n
ZVN1YihhbW91bnQpOworICAgIGlmIChVTkxJS0VMWShwcmV2aW91c1VucmVhZEJ5dGVzIDwgYW1v
dW50KSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVzdWx0IGluIHRlcm1pbmF0
aW5nIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBwcmV2aW91c1VucmVhZEJ5
dGVzIC0gYW1vdW50OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0PiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6ZGlzcGxheUxpc3RGb3JSZWFkaW5nKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBjYXBhY2l0eSwgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5n
Q2xpZW50JiBjbGllbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggOWZlNmQ4
ZGY1ODJmNzU3ZmE1ZGE3ZDUxOGNmMjFhNzhmMzMxNjQyZi4uNzc3YzZkMTdmODY0OGMzMzM5Nzlh
YjcyNjlkMTM5MjRlOTJhZGM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMTI5LDM2
ICsxMjksMzkgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW4KICAgICBtX3JlbW90ZVJlc291cmNl
Q2FjaGUuY2FjaGVJbWFnZUJ1ZmZlcihtYWtlUmVmKCppbWFnZUJ1ZmZlcikpOwogfQogCi12b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZShJbWFn
ZUJ1ZmZlciYgZGVzdGluYXRpb24sIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUsIHNp
emVfdCBpbml0aWFsT2Zmc2V0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlz
dHMoSW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQs
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUpCiB7CisgICAgYXV0byBkZXN0aW5hdGlv
biA9IG1ha2VSZWZQdHIoaW5pdGlhbERlc3RpbmF0aW9uKTsKICAgICBhdXRvIGhhbmRsZVByb3Rl
Y3RvciA9IG1ha2VSZWYoaGFuZGxlKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBpbml0aWFsT2Zm
c2V0OworICAgIGF1dG8gb2Zmc2V0ID0gaW5pdGlhbE9mZnNldDsKICAgICBzaXplX3Qgc2l6ZVRv
UmVhZCA9IDA7Ci0KICAgICBkbyB7CiAgICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUudW5yZWFk
Qnl0ZXMoKTsKICAgICB9IHdoaWxlICghc2l6ZVRvUmVhZCk7CiAKLSAgICB3aGlsZSAoc2l6ZVRv
UmVhZCkgeworICAgIHdoaWxlIChkZXN0aW5hdGlvbiAmJiAhbV9uZXh0SXRlbUJ1ZmZlclRvUmVh
ZCkgewogICAgICAgICBhdXRvIGRpc3BsYXlMaXN0ID0gaGFuZGxlLmRpc3BsYXlMaXN0Rm9yUmVh
ZGluZyhvZmZzZXQsIHNpemVUb1JlYWQsICp0aGlzKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFk
aXNwbGF5TGlzdCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNr
IHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlv
bikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAgRGlzcGxheUxpc3Q6
OlJlcGxheVJlc3VsdCByZXN1bHQ7CisgICAgICAgIGlmIChkZXN0aW5hdGlvbi0+aXNBY2NlbGVy
YXRlZCgpKQorICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlciY+KCpkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlM
aXN0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRl
ZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGluYXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNw
bGF5TGlzdCk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXImPigqZGVzdGluYXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNw
bGF5TGlzdCk7CisKKyAgICAgICAgc2l6ZVRvUmVhZCA9IGhhbmRsZS5hZHZhbmNlKHJlc3VsdC5u
dW1iZXJPZkJ5dGVzUmVhZCk7CiAKICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE9mZnNldCA9
IG9mZnNldDsKLSAgICAgICAgY2hlY2tlZE9mZnNldCArPSBzaXplVG9SZWFkOworICAgICAgICBj
aGVja2VkT2Zmc2V0ICs9IHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFVO
TElLRUxZKGNoZWNrZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpKSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4K
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBvZmZzZXQgPSBjaGVja2Vk
T2Zmc2V0LnVuc2FmZUdldCgpOwpAQCAtMTY2LDE4ICsxNjksMjQgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRl
c3RpbmF0aW8KICAgICAgICAgaWYgKFVOTElLRUxZKG9mZnNldCA+IGhhbmRsZS5zaGFyZWRNZW1v
cnkoKS5zaXplKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVj
ayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0gICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUuYWR2YW5jZShzaXplVG9SZWFkKTsK
KyAgICAgICAgaWYgKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6U3Rv
cFJlcGxheVJlYXNvbjo6Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcikKKyAgICAgICAgICAg
IGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1h
Z2VCdWZmZXIoKnJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpOworCisgICAgICAg
IGlmICghc2l6ZVRvUmVhZCkKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIHJldHVy
biBkZXN0aW5hdGlvbjsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBB
bmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0
aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKIHsKICAgICBUcmFjZVNjb3Bl
IHRyYWNpbmdTY29wZShXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0U3RhcnQsIFdha2VVcEFuZEFw
cGx5RGlzcGxheUxpc3RFbmQpOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291
cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWltYWdlQnVmZmVyKSkgeworICAgIGF1dG8gZGVzdGluYXRpb25J
bWFnZUJ1ZmZlciA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdl
QnVmZmVyKGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikpOworICAgIGlmIChVTkxJS0VMWSgh
ZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3Nh
Z2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE5MCw3ICsxOTksMTIgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFwcGx5RGlz
cGxheUxpc3RzRnJvbUhhbmRsZSgqaW1hZ2VCdWZmZXIsICppbml0aWFsSGFuZGxlLCBpbml0aWFs
T2Zmc2V0KTsKKyAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1h
Z2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVy
LCBpbml0aWFsT2Zmc2V0LCAqaW5pdGlhbEhhbmRsZSk7CisKKyAgICBpZiAoIWRlc3RpbmF0aW9u
SW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICB3aGlsZSAobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkgewogICAg
ICAgICBhdXRvIG5leHRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQobV9u
ZXh0SXRlbUJ1ZmZlclRvUmVhZCk7CkBAIC0xOTksOSArMjEzLDE1IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkCiAgICAgICAgICAgICAvLyBJUEMgbWVzc2FnZSB3aXRoIGEgc2hhcmVkIG1lbW9y
eSBoYW5kbGUgdG8gdGhlIG5leHQgaXRlbSBidWZmZXIuCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQorCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0aGUgbmV4
dCBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAgICAgICAgIG1fbmV4
dEl0ZW1CdWZmZXJUb1JlYWQgPSB7IH07Ci0gICAgICAgIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhh
bmRsZSgqaW1hZ2VCdWZmZXIsICpuZXh0SGFuZGxlLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
aGVhZGVyU2l6ZSgpKTsKKyAgICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25J
bWFnZUJ1ZmZlciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgKm5leHRI
YW5kbGUpOworCisgICAgICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgeworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KICAgICB9CiB9CiAKQEAgLTMyMCw3ICszNDAsNiBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRl
YwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CiAgICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcjoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFu
Z2VJdGVtQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFu
ZEVuZDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgogICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA1OWFh
MGZlMmRiNTNhYmRlOWRjMjYzMjhjZmJkNDU5ODAxMzNhMGZiLi5kZDJiMTY4OWQwMWQ3YmJkNWZh
YzJlMTkyNjM5OWEyYTEyNzJlOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICB2b2lkIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYg
ZGVzdGluYXRpb24sIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgc2l6ZV90IG9mZnNldCk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZl
ckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRpYWxE
ZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
Jik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKaW5kZXggODY1ZmFlZGNkZTcwNjNh
ODQ0MjQwNTBiYmI3MWZjNDZkMDIyZDUwYi4uMjBhYzk3ZTM0ODgwY2IyODMxZDdiNDAwOTg0ZTg0
NTc5MTJiM2FjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlz
dEhhbmRsZS5oCkBAIC01MCwzOCArNTAsMTIgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgdW5y
ZWFkQnl0ZXMoKQogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZTo6TG9jayB7ICp0aGlzIH07Ci0gICAgICAgIHJldHVybiBoZWFkZXIoKS51bnJlYWRC
eXRlczsKKyAgICAgICAgcmV0dXJuIGhlYWRlcigpLnVucmVhZEJ5dGVzLmxvYWQoKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpID0gMDsKIAogcHJv
dGVjdGVkOgotICAgIGNsYXNzIExvY2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgTG9jayhTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlKQotICAgICAgICAgICAgOiBtX2hhbmRsZShoYW5k
bGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8mIGF0b21pY1ZhbHVlID0gbV9oYW5kbGUu
aGVhZGVyKCkubG9jazsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYXZvaWQgd2FpdGluZyBmb3JldmVyIGluIHRoZSBjYXNl
IHdoZXJlIHRoZSB3ZWIgY29udGVudCBwcm9jZXNzCi0gICAgICAgICAgICAgICAgLy8gaG9sZHMg
b24gdG8gdGhlIGxvY2sgaW5kZWZpbml0ZWx5IChvciBjcmFzaGVzIHdoaWxlIGhvbGRpbmcgdGhl
IGxvY2spLgotICAgICAgICAgICAgICAgIHVpbnQ2NF90IHVubG9ja2VkID0gMDsKLSAgICAgICAg
ICAgICAgICBpZiAoYXRvbWljVmFsdWUuY29tcGFyZUV4Y2hhbmdlV2Vhayh1bmxvY2tlZCwgMSkp
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIFRocmVhZDo6eWll
bGQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIH5Mb2NrKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbV9oYW5kbGUuaGVhZGVyKCkubG9jay5zdG9yZSgwKTsKLSAgICAg
ICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIG1f
aGFuZGxlOwotICAgIH07Ci0KICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1l
bW9yeT4mJiBzaGFyZWRNZW1vcnkpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiAgICAgICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92ZShzaGFyZWRNZW1vcnkpKQpAQCAtODks
OCArNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgc3RydWN0IERpc3BsYXlMaXN0U2hh
cmVkTWVtb3J5SGVhZGVyIHsKLSAgICAgICAgQXRvbWljPHVpbnQ2NF90PiBsb2NrOwotICAgICAg
ICB1aW50NjRfdCB1bnJlYWRCeXRlczsKKyAgICAgICAgQXRvbWljPHVpbnQ2NF90PiB1bnJlYWRC
eXRlczsKICAgICB9OwogCiAgICAgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXImIGhlYWRl
cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVh
ZGVyKj4oZGF0YSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAppbmRleCBk
ODJlM2RmYWRlZTg2ZWIwZDU1NDFiMjc4NTc2ODIxODdmNjVjZjhiLi44ZmYzNjVjZDM0MmE4MjZk
YTA0NDkzYmI2NzI5NGMyYzUxZmEwNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmNwcApAQCAtMzMsMjAgKzMzLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHNpemVf
dCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQogewotICAg
IENoZWNrZWRTaXplIGNoZWNrZWRXcml0YWJsZU9mZnNldCA9IG1fd3JpdGFibGVPZmZzZXQ7Ci0g
ICAgY2hlY2tlZFdyaXRhYmxlT2Zmc2V0ICs9IGFtb3VudDsKLSAgICBpZiAoVU5MSUtFTFkoY2hl
Y2tlZFdyaXRhYmxlT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBhdXRvIGxvY2tlciA9IFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsKLSAgICBDaGVja2VkU2l6ZSBjaGVja2VkVW5yZWFkQnl0
ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlczsKLSAgICBjaGVja2VkVW5yZWFkQnl0ZXMgKz0gYW1v
dW50OwotICAgIGlmIChVTkxJS0VMWShjaGVja2VkVW5yZWFkQnl0ZXMuaGFzT3ZlcmZsb3dlZCgp
KSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIG1fd3JpdGFi
bGVPZmZzZXQgPSBjaGVja2VkV3JpdGFibGVPZmZzZXQudW5zYWZlR2V0KCk7Ci0gICAgaGVhZGVy
KCkudW5yZWFkQnl0ZXMgPSBjaGVja2VkVW5yZWFkQnl0ZXMudW5zYWZlR2V0KCk7Ci0gICAgcmV0
dXJuIGNoZWNrZWRVbnJlYWRCeXRlcy51bnNhZmVHZXQoKTsKKyAgICBtX3dyaXRhYmxlT2Zmc2V0
ID0gKENoZWNrZWRTaXplIHsgbV93cml0YWJsZU9mZnNldCB9ICsgYW1vdW50KS51bnNhZmVHZXQo
KTsKKyAgICByZXR1cm4gKENoZWNrZWRTaXplIHsgaGVhZGVyKCkudW5yZWFkQnl0ZXMuZXhjaGFu
Z2VBZGQoYW1vdW50KSB9ICsgYW1vdW50KS51bnNhZmVHZXQoKTsKIH0KIAogc2l6ZV90IERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlOjphdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0CkBAIC02Niw3ICs1
NCw3IEBAIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlOjpjcmVhdGVIYW5kbGUoKSBjb25zdAogICAgIH07CiB9CiAKLWJvb2wgRGlzcGxheUxpc3RX
cml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKCkKK2Jvb2wgRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGU6Om1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCkK
IHsKICAgICBpZiAobV93cml0YWJsZU9mZnNldCA8PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
aGVhZGVyU2l6ZSgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fd3JpdGFibGVPZmZzZXQg
PT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmgKaW5kZXggNDRlZWZhYWI0OGY0OTExZmVhZGJlZDU4YWU1N2EyYTYzYjFk
OGFkNy4uZmM3YTIxNjUzYTBlYjk2ODE5ZWIxYzA5YTlmYzM0NDQ4MWE3Mzk2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlz
cGxheUxpc3RXcml0ZXJIYW5kbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc2l6
ZV90IHdyaXRhYmxlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV93cml0YWJsZU9mZnNldDsgfQog
ICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0OwogCi0gICAgYm9vbCByZXNldFdy
aXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpOworICAgIGJvb2wgbW92ZVdyaXRhYmxlT2Zmc2V0VG9T
dGFydElmUG9zc2libGUoKTsKIAogICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92
ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0
ZUhhbmRsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA1MWJkNTcx
Mjk1OGFmMTJhMjMxNWQ0MWJhM2QyZDZiOWVkNTdmMmJhLi4wYWRiODIzOTdhMDliOTYxNDY4OWE2
MzZlNDNlZjMzNGJkYzdhYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTEx
LDYgKzExMSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3NlbnRGbHVzaElkZW50aWZp
ZXIgPT0gdGFyZ2V0Rmx1c2hJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICB2b2lkIGNoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IG5leHRJbWFnZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJvb2wgd2FzRW1wdHkgPSBtX2RyYXdp
bmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuaXNFbXB0eSgpOworICAgICAgICBtX2RyYXdpbmdDb250
ZXh0LmRpc3BsYXlMaXN0KCkudGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpN
ZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KG5leHRJbWFnZUJ1ZmZlcik7
CisgICAgICAgIGlmICh3YXNFbXB0eSkKKyAgICAgICAgICAgIGNsZWFyRGlzcGxheUxpc3QoKTsK
KyAgICB9CisKKyAgICB2b2lkIGNsZWFyRGlzcGxheUxpc3QoKQorICAgIHsKKyAgICAgICAgbV9k
cmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmNsZWFyKCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAgICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKQEAgLTEzNyw5ICsxNTAsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIC8vIFdhaXQgZm9yIG91ciBEaXNwbGF5TGlzdCB0byBiZSBmbHVzaGVkIGJ1dCBk
byBub3QgaGFuZy4KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhXYWl0aW5n
Rmx1c2ggPSAzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIG51bVdhaXRpbmdGbHVzaCA9IDA7IG51
bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRpbmdGbHVzaCAmJiBoYXNQZW5kaW5nRmx1c2goKTsgKytu
dW1XYWl0aW5nRmx1c2gpCi0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS0+d2FpdEZvckRpZEZsdXNoKCk7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bWF4aW11bU51bWJlck9mVGltZW91dHMgPSAzOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlRp
bWVvdXRzID0gMDsKKyAgICAgICAgd2hpbGUgKG51bWJlck9mVGltZW91dHMgPCBtYXhpbXVtTnVt
YmVyT2ZUaW1lb3V0cyAmJiBoYXNQZW5kaW5nRmx1c2goKSkgeworICAgICAgICAgICAgaWYgKCFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckRpZEZsdXNoKCkpCisgICAgICAg
ICAgICAgICAgKytudW1iZXJPZlRpbWVvdXRzOworICAgICAgICB9CiAgICAgfQogCiAgICAgQmFj
a2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKQEAgLTE1MSwx
OCArMTY3LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+
IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
Ci0gICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIGlm
IChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byYgbXV0YWJsZVRoaXMgPSBjb25zdF9jYXN0
PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhpcyk7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlM
aXN0ID0gbXV0YWJsZVRoaXMubV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAg
ICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbXV0YWJsZVRoaXMu
c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwotICAgICAgICAgICAgbXV0YWJsZVRoaXMu
bV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgICAgICBkaXNwbGF5
TGlzdC5jbGVhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZ2V0SW1hZ2VEYXRhIGlzIHN5
bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSBDb21taXRJ
bWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgorICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+c2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7CiAgICAg
ICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0SW1hZ2VEYXRhKG91
dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IH0KIApAQCAtMTg0LDYgKzE5Miw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3
aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAg
ICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZs
dXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0QW5k
Q29tbWl0KCk7CiAgICAgICAgIHdhaXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KCk7CkBAIC0xOTEs
NDkgKzIwMiw0NSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgZGlzcGxh
eUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNw
bGF5TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghbV9k
cmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV9z
ZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5m
bHVzaENvbnRleHQobV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKKyAgICAgICAgfQogCi0gICAgICAg
IG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50
aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIp
OwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxp
c3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAg
bV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIGRpc3BsYXlMaXN0
LmNsZWFyKCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kRGVm
ZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQoKTsKKyAgICAgICAgY2xlYXJEaXNwbGF5TGlzdCgp
OwogICAgIH0KIAotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKKyAgICB2b2lkIGNhY2hlTmF0aXZl
SW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5TGlzdC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKICAgICB9CiAKLSAg
ICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZSkgb3ZlcnJpZGUKKyAgICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZSB0eXBlKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgY29uc3RleHBy
IHNpemVfdCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSA9IDUxMjsKLSAgICAgICAgYXV0byYgZGlzcGxh
eUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmICgrK21f
aXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+
d2lsbEFwcGVuZEl0ZW0obV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KIAot
ICAgICAgICBtX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0ID0gMDsKLSAgICAgICAgc3Vi
bWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwotICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigp
OworICAgIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlckhhbmRsZSYgaGFuZGxlLCBzaXplX3QgbnVtYmVyT2ZCeXRlcywgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpZENoYW5nZUl0ZW1CdWZmZXIgZGlkQ2hhbmdlSXRlbUJ1ZmZlcikgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpKQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmRpZEFwcGVu
ZERhdGEoaGFuZGxlLCBudW1iZXJPZkJ5dGVzLCBkaWRDaGFuZ2VJdGVtQnVmZmVyLCBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgdm9pZCBjYWNoZU5hdGl2ZUlt
YWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiBpbWFnZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEFw
cGVuZEl0ZW1PZlR5cGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUpIG92ZXJy
aWRlCiAgICAgewotICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0g
ICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5KCkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgICAgIGlmICh0eXBlID09
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKQorICAgICAg
ICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5
KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KQorICAgICAgICBpZiAoTElLRUxZKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkK
ICAgICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Y3JlYXRl
SXRlbUJ1ZmZlcihjYXBhY2l0eSwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzA3LDcgKzMxNCw2IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29u
dGV4dDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFD
b21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kRW5k
OgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFt
ZUZvck1lZGlhOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
UmVzdG9yZToKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJv
dGF0ZToKQEAgLTMzNiwxMiArMzQyLDYgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZSB0eXBlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKHR5cGUgPT0gV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIpCi0gICAgICAgICAgICBmbHVz
aERyYXdpbmdDb250ZXh0KCk7Ci0gICAgfQotCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxUaHJlYWRTYWZlUmVtb3RlSW1h
Z2VCdWZmZXJGbHVzaGVyPEJhY2tlbmRUeXBlPj4oKnRoaXMpOwpAQCAtMzU4LDYgKzM1OCw3IEBA
IHByb3RlY3RlZDoKICAgICBmbG9hdCBtX3Jlc29sdXRpb25TY2FsZTsKICAgICBXZWJDb3JlOjpD
b2xvclNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBtX3BpeGVs
Rm9ybWF0OworICAgIGJvb2wgbV9pc0FwcGVuZGluZ0Rpc3BsYXlMaXN0SXRlbUZvckluaXRpYWxE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyIHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEJhY2tlbmRUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmlu
ZGV4IDkxODJhNTMyNzU1YTQ3MDRkZDMzZjE4MjgzMzZhZTlkZmU5M2RmZTkuLmYzM2Q0ZjM0ZjE2
YzVjODNlODk1ZDdlZjQwNWE4ZTU4NjRmMGIwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHAKQEAgLTk4LDggKzk4LDEwIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25u
ZWN0CiAgICAgcHJldmlvdXNDb25uZWN0aW9uLnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKICAgICBt
X2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuY2xlYXIoKTsKLSAgICBtX2lkZW50aWZpZXJz
T2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5jbGVhcigpOwogICAgIG1fc2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGVzLmNsZWFyKCk7CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZl
cklkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VB
cmd1bWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVm
b3JlU2VuZGluZ1dha2V1cCA9IDA7CiAKICAgICByZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0
aW9uKCk7CiB9CkBAIC0xNTgsMzAgKzE2MCw2IEBAIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpCiAg
ICAgcmV0dXJuIGltYWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKIH0KIAotdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCi17Ci0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPERp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4gaWRlbnRpZmllckFuZE9m
ZnNldEZvcldha2VVcE1lc3NhZ2U7Ci0gICAgYm9vbCBpc0ZpcnN0SGFuZGxlID0gdHJ1ZTsKLQot
ICAgIGRpc3BsYXlMaXN0LmZvckVhY2hJdGVtQnVmZmVyKFsmXSAoYXV0byYgaGFuZGxlKSB7Ci0g
ICAgICAgIG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLmFkZChoYW5k
bGUuaWRlbnRpZmllcik7Ci0KLSAgICAgICAgYXV0byogc2hhcmVkSGFuZGxlID0gbV9zaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGhhbmRsZS5pZGVudGlmaWVyKTsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKHNoYXJlZEhhbmRsZSwgIiVzIGZhaWxlZCB0byBmaW5kIHNo
YXJlZCBkaXNwbGF5IGxpc3QiLCBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsKLQotICAgICAgICBib29s
IHVucmVhZENvdW50V2FzRW1wdHkgPSBzaGFyZWRIYW5kbGUtPmFkdmFuY2UoaGFuZGxlLmNhcGFj
aXR5KSA9PSBoYW5kbGUuY2FwYWNpdHk7Ci0gICAgICAgIGlmIChpc0ZpcnN0SGFuZGxlICYmIHVu
cmVhZENvdW50V2FzRW1wdHkpCi0gICAgICAgICAgICBpZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2Fr
ZVVwTWVzc2FnZSA9IHt7IGhhbmRsZS5pZGVudGlmaWVyLCBoYW5kbGUuZGF0YSAtIHNoYXJlZEhh
bmRsZS0+ZGF0YSgpIH19OwotCi0gICAgICAgIGlzRmlyc3RIYW5kbGUgPSBmYWxzZTsKLSAgICB9
KTsKLQotICAgIGlmIChpZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2FnZSkgewotICAg
ICAgICBhdXRvIFtpZGVudGlmaWVyLCBvZmZzZXRdID0gKmlkZW50aWZpZXJBbmRPZmZzZXRGb3JX
YWtlVXBNZXNzYWdlOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGlkZW50aWZpZXIsIG9mZnNldCwgZGVzdGlu
YXRpb25CdWZmZXJJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0g
ICAgfQotfQotCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJ
bWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlTmF0aXZlSW1hZ2UoaGFuZGxl
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKQEAgLTIyMCwzNyArMTk4LDEwMyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZQogICAg
ICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdl
QnVmZmVyKS5kaWRGbHVzaChmbHVzaElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKCkKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Ojp3aWxsQXBwZW5kSXRlbShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgbmV3RGVzdGluYXRpb25JZGVudGlmaWVyKQogewotICAgIGZvciAoYXV0byBpZGVudGlm
aWVyIDogbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcpIHsKLSAgICAg
ICAgYXV0byogaGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlkZW50aWZp
ZXIpOwotICAgICAgICBpZiAoIWhhbmRsZS0+cmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUo
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGlmIChtX2N1cnJlbnREZXN0aW5hdGlvbklt
YWdlQnVmZmVySWRlbnRpZmllciA9PSBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpCisgICAgICAg
IHJldHVybjsKIAotICAgICAgICBpZiAobV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgaWYgKGF1dG8g
cHJldmlvdXNEZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY3Vy
cmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBuZXdEZXN0aW5hdGlvbklkZW50
aWZpZXIpKSB7CisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIoKnByZXZpb3VzRGVzdGluYXRpb25CdWZmZXJJ
ZGVudGlmaWVyKSkgeworICAgICAgICAgICAgaWYgKGlzPEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXJNYXBwZWRQcm94eT4oKmltYWdlQnVmZmVyKSkKKyAgICAgICAgICAgICAgICBkb3duY2Fz
dDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyTWFwcGVkUHJveHk+KCppbWFnZUJ1ZmZlciku
Y2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpOwor
ICAgICAgICAgICAgZWxzZSBpZiAoaXM8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
PigqaW1hZ2VCdWZmZXIpKQorICAgICAgICAgICAgICAgIGRvd25jYXN0PEFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jaGFuZ2VEZXN0aW5hdGlvbkltYWdl
QnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
KCppbWFnZUJ1ZmZlcikuY2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihuZXdEZXN0aW5hdGlv
bklkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQogCi0gICAgICAgIG1faWRlbnRpZmllcnNP
ZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcihuZXdE
ZXN0aW5hdGlvbklkZW50aWZpZXIpKSB7CisgICAgICAgIGlmIChpczxBY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyTWFwcGVkUHJveHk+KCppbWFnZUJ1ZmZlcikpCisgICAgICAgICAgICBkb3du
Y2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyTWFwcGVkUHJveHk+KCppbWFnZUJ1ZmZl
cikuY2xlYXJEaXNwbGF5TGlzdCgpOworICAgICAgICBlbHNlIGlmIChpczxBY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikpCisgICAgICAgICAgICBkb3duY2Fz
dDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY2xlYXJE
aXNwbGF5TGlzdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb3duY2FzdDxVbmFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jbGVhckRpc3BsYXlM
aXN0KCk7CiAgICAgfQogfQogCi1EaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5LCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQor
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnNlbmRXYWtldXBNZXNzYWdlKGNvbnN0
IFdha2V1cE1lc3NhZ2VBcmd1bWVudHMmIGFyZ3VtZW50cykKIHsKLSAgICB1cGRhdGVSZXVzYWJs
ZUhhbmRsZXMoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpX
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGFyZ3VtZW50cy5pdGVtQnVmZmVySWRlbnRpZmllciwg
YXJndW1lbnRzLmluaXRpYWxPZmZzZXQsIGFyZ3VtZW50cy5pbWFnZUJ1ZmZlcklkZW50aWZpZXIp
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KIAotICAgIHdoaWxlICghbV9pZGVu
dGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuZmlyc3QoKTsKLSAgICAgICAg
YXV0byogcmV1c2FibGVIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaWRl
bnRpZmllcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShyZXVzYWJsZUhh
bmRsZSwgIiVzIGZhaWxlZCB0byBmaW5kIHNoYXJlZCBkaXNwbGF5IGxpc3QiLCBXVEZfUFJFVFRZ
X0ZVTkNUSU9OKTsKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzZW5kRGVmZXJy
ZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQoKQoreworICAgIGF1dG8gYXJndW1lbnRzID0gc3RkOjpl
eGNoYW5nZShtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0KTsK
KyAgICBpZiAoIWFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChtX2lk
ZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5jb250YWlucyhpZGVudGlmaWVy
KSAmJiByZXVzYWJsZUhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNpdHkoKSA+PSBjYXBhY2l0eSkgewot
ICAgICAgICAgICAgbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcucmVt
b3ZlKGlkZW50aWZpZXIpOwotICAgICAgICAgICAgcmV0dXJuIHJldXNhYmxlSGFuZGxlLT5jcmVh
dGVIYW5kbGUoKTsKLSAgICAgICAgfQorICAgIHNlbmRXYWtldXBNZXNzYWdlKCphcmd1bWVudHMp
OworICAgIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgPSAwOwor
fQogCi0gICAgICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5yZW1vdmVGaXJzdCgp
Owordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEoY29uc3Qg
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUmIGhhbmRsZSwgc2l6ZV90IG51bWJlck9mQnl0
ZXMsIERpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkltYWdlQnVmZmVyKQorewor
ICAgIGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldCho
YW5kbGUuaWRlbnRpZmllcik7CisgICAgaWYgKFVOTElLRUxZKCFzaGFyZWRIYW5kbGUpKQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgYm9vbCB3YXNFbXB0eSA9
IHNoYXJlZEhhbmRsZS0+YWR2YW5jZShudW1iZXJPZkJ5dGVzKSA9PSBudW1iZXJPZkJ5dGVzOwor
ICAgIGlmICghd2FzRW1wdHkgfHwgZGlkQ2hhbmdlSXRlbUJ1ZmZlciA9PSBEaXNwbGF5TGlzdDo6
RGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6WWVzKSB7CisgICAgICAgIGlmIChtX2RlZmVycmVkV2FrZXVw
TWVzc2FnZUFyZ3VtZW50cyAmJiAhLS1tX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5k
aW5nV2FrZXVwKQorICAgICAgICAgICAgc2VuZFdha2V1cE1lc3NhZ2UoKnN0ZDo6ZXhjaGFuZ2Uo
bV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIFdURjo6bnVsbG9wdCkpOworICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgc2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVk
KCk7CisKKyAgICAvLyBJbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIHdha2V1cCBtZXNzYWdlIGltbWVk
aWF0ZWx5LCB3YWl0IGZvciBzb21lIGFkZGl0aW9uYWwgZGF0YS4gVGhpcyBnaXZlcyB0aGUKKyAg
ICAvLyB3ZWIgcHJvY2VzcyBhICJoZWFkIHN0YXJ0IiwgZGVjcmVhc2luZyB0aGUgbGlrZWxpaG9v
ZCB0aGF0IHRoZSBHUFUgcHJvY2VzcyB3aWxsIGVuY291bnRlciBmcmVxdWVudAorICAgIC8vIHdh
a2V1cHMgd2hlbiBwcm9jZXNzaW5nIGEgbGFyZ2UgYW1vdW50IG9mIGRpc3BsYXkgbGlzdCBpdGVt
cy4KKyAgICBjb25zdGV4cHIgdW5zaWduZWQgaXRlbUNvdW50SHlzdGVyZXNpc0JlZm9yZVNlbmRp
bmdXYWtldXAgPSA1MTI7CisKKyAgICBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5k
aW5nV2FrZXVwID0gaXRlbUNvdW50SHlzdGVyZXNpc0JlZm9yZVNlbmRpbmdXYWtldXA7CisgICAg
bV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMgPSB7eworICAgICAgICBoYW5kbGUuaWRl
bnRpZmllciwKKyAgICAgICAgc2hhcmVkSGFuZGxlLT53cml0YWJsZU9mZnNldCgpIC0gbnVtYmVy
T2ZCeXRlcywKKyAgICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlcgorICAgIH19OworfQorCitS
ZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6ZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUoc2l6ZV90IGNhcGFjaXR5KQoreworICAg
IGlmIChVTkxJS0VMWShtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuaXNFbXB0eSgpKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIG1vc3RSZWNlbnRseVVzZWRJZGVu
dGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmZpcnN0KCk7CisgICAgYXV0
byBoYW5kbGUgPSBtYWtlUmVmUHRyKG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChtb3N0
UmVjZW50bHlVc2VkSWRlbnRpZmllcikpOworICAgIGhhbmRsZS0+bW92ZVdyaXRhYmxlT2Zmc2V0
VG9TdGFydElmUG9zc2libGUoKTsKKyAgICBpZiAoaGFuZGxlLT5hdmFpbGFibGVDYXBhY2l0eSgp
ID49IGNhcGFjaXR5KQorICAgICAgICByZXR1cm4gaGFuZGxlOworCisgICAgbV9pZGVudGlmaWVy
c09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMu
dGFrZUZpcnN0KCkpOworCisgICAgYXV0byBsZWFzdFJlY2VudGx5VXNlZElkZW50aWZpZXIgPSBt
X2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuZmlyc3QoKTsKKyAgICBpZiAobGVhc3RSZWNl
bnRseVVzZWRJZGVudGlmaWVyICE9IG1vc3RSZWNlbnRseVVzZWRJZGVudGlmaWVyKSB7CisgICAg
ICAgIGF1dG8gaGFuZGxlID0gbWFrZVJlZlB0cihtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5n
ZXQobGVhc3RSZWNlbnRseVVzZWRJZGVudGlmaWVyKSk7CisgICAgICAgIGlmIChoYW5kbGUtPm1v
dmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCkgJiYgaGFuZGxlLT5hdmFpbGFibGVD
YXBhY2l0eSgpID49IGNhcGFjaXR5KQorICAgICAgICAgICAgcmV0dXJuIGhhbmRsZTsKKyAgICB9
CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5k
bGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBj
YXBhY2l0eSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRl
bnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBmaW5kUmV1c2FibGVEaXNwbGF5TGlz
dEhhbmRsZShjYXBhY2l0eSkpCisgICAgICAgIHJldHVybiBoYW5kbGUtPmNyZWF0ZUhhbmRsZSgp
OworCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdFNoYXJlZEl0ZW1CdWZmZXJT
aXplID0gMSA8PCAxNjsKICAgICBzdGF0aWNfYXNzZXJ0KGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVy
U2l6ZSA+IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCkpOwogCkBAIC0yNjcs
NyArMzExLDcgQEAgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKHNpemUKICAgICBhdXRvIG5ld0hhbmRsZSA9
IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGUoaWRlbnRpZmllciwgc2hhcmVkTWVtb3J5
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGF1dG8gZGlzcGxheUxpc3RIYW5kbGUgPSBuZXdIYW5k
bGUtPmNyZWF0ZUhhbmRsZSgpOwogCi0gICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVz
LmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMu
cHJlcGVuZChpZGVudGlmaWVyKTsKICAgICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5zZXQo
aWRlbnRpZmllciwgV1RGTW92ZShuZXdIYW5kbGUpKTsKIAogICAgIHJldHVybiBkaXNwbGF5TGlz
dEhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDM2Y2Vj
OTEzYThlMDNmZjMyNTBkNWYxZGY5OTkxNzczNzRlNjU1ZDYuLmJkZTg1YTUxMDc2ZTU2MzM5YjRi
ZDdmZTRlZjg2Njc2NjczOThkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaApAQCAtNjYsNiArNjYsMTAgQEAgcHVibGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk7IH0KICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRs
ZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAKKyAgICB2b2lk
IGRpZEFwcGVuZERhdGEoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5k
bGUmLCBzaXplX3QgbnVtYmVyT2ZCeXRlcywgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpZENoYW5n
ZUl0ZW1CdWZmZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5h
dGlvbkltYWdlQnVmZmVyKTsKKyAgICB2b2lkIHdpbGxBcHBlbmRJdGVtKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBzZW5kRGVmZXJyZWRXYWtldXBNZXNz
YWdlSWZOZWVkZWQoKTsKKwogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNv
bm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKQEAg
LTc2LDcgKzgwLDYgQEAgcHVibGljOgogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCiAgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1Jl
Y3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBzdWJt
aXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVu
dGlmaWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNo
RGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291
cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC05MiwxNyArOTUs
MjkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdFRvR1BVUHJvY2VzcygpOwogICAgIHZv
aWQgcmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwotICAgIHZvaWQgdXBkYXRlUmV1
c2FibGVIYW5kbGVzKCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2
b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVz
aElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKKyAg
ICBSZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+IGZpbmRSZXVzYWJsZURpc3BsYXlMaXN0
SGFuZGxlKHNpemVfdCBjYXBhY2l0eSk7CisKKyAgICBzdHJ1Y3QgV2FrZXVwTWVzc2FnZUFyZ3Vt
ZW50cyB7CisgICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciBpdGVtQnVmZmVySWRlbnRpZmllcjsKKyAgICAgICAgc2l6ZV90IGluaXRpYWxPZmZzZXQ7Cisg
ICAgICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklk
ZW50aWZpZXI7CisgICAgfTsKKworICAgIHZvaWQgc2VuZFdha2V1cE1lc3NhZ2UoY29uc3QgV2Fr
ZXVwTWVzc2FnZUFyZ3VtZW50cyYpOworCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1f
cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXM7CiAgICAgRGVxdWU8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZSZXVz
YWJsZUhhbmRsZXM7Ci0gICAgSGFzaFNldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nOwog
ICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZJ
bWFnZUJ1ZmZlcnNQZW5kaW5nRmx1c2g7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRp
ZmllcjsKKyAgICBPcHRpb25hbDxXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBtX2RlZmVycmVkV2Fr
ZXVwTWVzc2FnZUFyZ3VtZW50czsKKyAgICB1bnNpZ25lZCBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBl
bmRCZWZvcmVTZW5kaW5nV2FrZXVwIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGM2
YzNkOTljZjk4OTVjZDUyZDRkY2MyZjA0MjZiNmU2OTdjZjg1YS4uMjcwMmUzYTgzZmE1MzhjMTFh
ZmYyOTkwYzgzZjg3NjRiZDY3YjhkOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTEyLTA0ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRpc3Bs
YXkgbGlzdHNdIFN5bmNocm9uaXplIGRpc3BsYXkgbGlzdCByZW5kZXJpbmcgYWNyb3NzIHJlbW90
ZSBpbWFnZSBidWZmZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTkwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNzQ3Njk1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMjAtMTItMDQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtnaXQtd2Via2l0XSBVc2UgY29udHJpYnV0b3JzLmpzb24KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcAppbmRleCBlYmQ4NmUzMmUwNjJjYWRmNmE5YjAxYWVkY2M3N2FkOGY2ZTI0NTQzLi5m
NzAwYzU2MjlmNjA2ZTVjMjZkZjE2YjIwYmIxZGVhOTU0ZTgwN2E1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBA
IC0xNzMsNyArMTczLDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50
KQogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCisg
ICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVt
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1
aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgRVhQ
RUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAgIEVYUEVDVF9F
UShkYXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7CkBAIC0yMDUsNiArMjA1LDggQEAgVEVTVChE
aXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZpbmRleCksIHNp
emVvZihzaXplX3QpKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgZGlkQXBwZW5kRGF0YShj
b25zdCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90LCBEaWRDaGFuZ2VJdGVtQnVmZmVyKSBmaW5h
bCB7IH0KKwogICAgICAgICBWZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415461</attachid>
            <date>2020-12-04 15:00:27 -0800</date>
            <delta_ts>2020-12-04 15:46:01 -0800</delta_ts>
            <desc>v2 (remove unused variable)</desc>
            <filename>bug-219091-20201204150027.patch</filename>
            <type>text/plain</type>
            <size>65268</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY1YmQwZmJjOGI5YjVj
NTBhZDc1MWI1MTEzYTAzM2U5OTIxMzkxYy4uN2Q4YWU5OGRlMzM1MjkwNzZlNTU5YTU5OTlmN2Jh
M2NlZGI3ZjNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEyLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFN5bmNocm9uaXplIGRpc3BsYXkgbGlzdCByZW5kZXJpbmcgYWNyb3Nz
IHJlbW90ZSBpbWFnZSBidWZmZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTkwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNzQ3Njk1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Y29weVRvIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRl
ZCk6CisKKyAgICAgICAgQWRkIHBsdW1iaW5nIHNvIHRoYXQgYGRpZEFwcGVuZERhdGFgIGNhbiBp
bmZvcm0gdGhlIGNsaWVudCB3aGV0aGVyIHRoZSBkYXRhIHdhcyBhcHBlbmRlZCBhZnRlciBzd2l0
Y2hpbmcgdG8gYQorICAgICAgICBuZXcgYnVmZmVyLiBJbiBXZWJLaXQyJ3MgcmVtb3RlIGltYWdl
IGJ1ZmZlciwgd2UgdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Ig
bm90IHdlIG5lZWQgdG8KKyAgICAgICAgc2VuZCBhIHdha2V1cCBtZXNzYWdlIHRvIHRoZSBHUFUg
cHJvY2Vzcy4gTmFtZWx5LCBpbiB0aGUgY2FzZSBvZiBgRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6WWVz
YCwgd2UgZG9uJ3QgbmVlZCB0bworICAgICAgICB3YWtlIHVwIHRoZSBHUFUgcHJvY2VzcyBldmVu
IHRob3VnaCB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50IHdhcyAwIGJlZm9yZSB3ZSBhZHZhbmNlZCwg
c2luY2UgdGhlIEdQVSBwcm9jZXNzIHdpbGwKKyAgICAgICAgYXV0b21hdGljYWxseSBwcm9ncmVz
cyB0byB0aGlzIGl0ZW0gYnVmZmVyIHdoZW4gaXQncyBkb25lIHByb2Nlc3NpbmcgaXRlbXMgaW4g
dGhlIHByZXZpb3VzIGl0ZW0gYnVmZmVyLgorCisgICAgICAgIFNlZSBXZWJLaXQgY2hhbmdlcyAo
aW4gYFJlbW90ZUltYWdlQnVmZmVyUHJveHlgKSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpkaWRBcHBlbmREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmRFbmNvZGVkRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oOgorCisgICAgICAgIEFkZCBhIG5ldyBgSXRlbUJ1ZmZlcldyaXRpbmdD
bGllbnRgIG1ldGhvZCB0byBpbmZvcm0gY2xpZW50cyB3aGVuIG5ldyBieXRlcyBhcmUgYXBwZW5k
ZWQgdG8gYW4gaXRlbSBidWZmZXIsCisgICAgICAgIGdpdmVuIHRoZSBhZGRpdGlvbmFsIG51bWJl
ciBvZiBieXRlcyBhZGRlZCBhbmQgdGhlIGl0ZW0gYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6ZU9mSXRlbUluQnl0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6CisKKyAgICAgICAgUmVtb3ZlIE1ldGFD
b21tYW5kRW5kLiBJIGludHJvZHVjZWQgdGhpcyBpdGVtIHR5cGUgYmVjYXVzZSBJIHdhcyBnb2lu
ZyB0byBtYWtlIHRoZSBHUFUgcHJvY2VzcyBhbHdheXMgc2xlZXAgZm9yCisgICAgICAgIG1vcmUg
ZGlzcGxheSBsaXN0IGl0ZW0gZGF0YSwgYnV0IEkndmUgc2luY2UgY2hhbmdlZCB0aGUgYXBwcm9h
Y2ggc28gdGhhdCB0aGUgR1BVIHByb2Nlc3MgZ29lcyB0byBzbGVlcCBuYXR1cmFsbHkKKyAgICAg
ICAgd2hlbiBpdCdzIGRvbmUgcHJvY2Vzc2luZyBhbGwgdW5yZWFkIGJ5dGVzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmbHVzaENv
bnRleHQpOgorCisgICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgbWV0aG9kIHRvIGFwcGVuZCBhIGBG
bHVzaENvbnRleHRgIGl0ZW0gdmlhIHRoZSBkaXNwbGF5IGxpc3QgcmVjb3JkZXIsIHRvIGVuc3Vy
ZSB0aGF0IHRoZQorICAgICAgICBhcHByb3ByaWF0ZSByZWNvcmRlciBkZWxlZ2F0ZSBtZXRob2Rz
IGFyZSBpbnZva2VkIHdoZW4gYXBwZW5kaW5nIGEgImZsdXNoIGNvbnRleHQiIGl0ZW0uCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaDoKKwogMjAyMC0xMi0wNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdW0Zsb2F0c10gRmxvYXRBdm9pZGVyIGRvZXMgbm90IG5lZWQgdG8ga2Vl
cCBhIHBvaW50ZXIgdG8gTGF5b3V0OjpCb3ggYXJvdW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4Mjc4NjVhZjc5
OWQyYjQxMDY2OThiZGFlM2RjMTg5NWNlZWNkNDVmLi44ZmI1YmJlZjhhNzQ0MTIzMjJmNDBiMWFm
MDI0YzExYTBmNjdlMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAyMC0xMi0wNCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29uY3Vy
cmVudCBkaXNwbGF5IGxpc3RzXSBTeW5jaHJvbml6ZSBkaXNwbGF5IGxpc3QgcmVuZGVyaW5nIGFj
cm9zcyByZW1vdGUgaW1hZ2UgYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc0NzY5
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZh
Y3RvcnMgdGhlIGV4aXN0aW5nIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmcgbWVj
aGFuaXNtLCBzdWNoIHRoYXQgd2Ugbm8gbG9uZ2VyIHVwZGF0ZSB0aGUgdW5yZWFkCisgICAgICAg
IGJ5dGVzIGNvdW50IGV2ZXJ5IDUxMiBpdGVtcyAob3Igd2hlbiBmbHVzaGluZyB0aGUgZHJhd2lu
ZyBjb250ZXh0KSwgYW5kIGluc3RlYWQgdXBkYXRlIGl0IGV2ZXJ5IHRpbWUgd2UgYXBwZW5kCisg
ICAgICAgIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIEluIG9yZGVyIHRvIGFjaGlldmUgdGhpcyB3
aXRob3V0IG1ha2luZyBpdCBpbXBvc3NpYmxlIGZvciBtdWx0aXBsZSBkaXNwbGF5LWxpc3QgYmFj
a2VkCisgICAgICAgIGltYWdlIGJ1ZmZlcnMgdG8gcmVuZGVyIHNpbXVsdGFuZW91c2x5LCB3ZSBh
bHNvIGFkZCBzdXBwb3J0IGZvciBzeW5jaHJvbml6aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyBhY3Jv
c3MKKyAgICAgICAgZGlmZmVyZW50IGltYWdlIGJ1ZmZlcnMgYnkgdXNpbmcgdGhlIG5ldyBtZXRh
IGNvbW1hbmQgaXRlbXMgYWRkZWQgaW4gYnVnICMyMTkyNjIuIEFzIGRldGFpbGVkIGluIHRoZSBD
aGFuZ2VMb2cKKyAgICAgICAgZm9yIHRoYXQgYnVnLCBhIHN0cmVhbSBvZiBkaXNwbGF5IGxpc3Qg
ZGF0YSB3cml0dGVuIGJ5IHRoZSB3ZWIgcHJvY2VzcyBhbmQgY29uc3VtZWQgYnkgdGhlIEdQVSBw
cm9jZXNzIGlzIG5vdworICAgICAgICBzdHJ1Y3R1cmVkIGxpa2Ugc286CisKKyAgICAgICAgV2Fr
ZXVwIG1lc3NhZ2UgaW5pdGlhdGVzIGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIHdpdGggSW1hZ2Ug
QnVmZmVyIEEgYW5kIEl0ZW0gQnVmZmVyIDEKKyAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwg
ICBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoQikKKyAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgICBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIoMikK
KyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHYgICAgICAgICAgICAg
ICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsrCisgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsgfAorICAgICAgICAgICAgfCB8IERlc3RpbmF0aW9uICAgICAgICB8
IHwgRGVzdGluYXRpb24gICAgICAgICAgICAgICAgICB8IHwgSXRlbSBCdWZmZXIgMQorICAgICAg
ICAgICAgfCB8IEltYWdlIEJ1ZmZlciBBICAgICB8IHwgSW1hZ2UgQnVmZmVyIEIgICAgICAgICAg
ICAgICB8IHwKKyAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KworICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgfCBEc3QuIEltYWdlICAgfCB8IERlc3Rp
bmF0aW9uIEltYWdlICAgICB8ICBVbnVzZWQgICAgICB8IEl0ZW0gQnVmZmVyIDIKKyAgICAgICAg
ICAgIHwgfCBCdWZmZXIgQiAgICAgfCB8IEJ1ZmZlciBBICAgICAgICAgICAgICB8ICBDYXBhY2l0
eSAgICB8CisgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKyAgICAgICAgICAgICAgfAorICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVz
dGluYXRpb25JbWFnZUJ1ZmZlcihBKQorCisgICAgICAgIChOb3RlIHRoYXQgdGhlIGBNZXRhQ29t
bWFuZEVuZGAgaXRlbSBoYXMgYmVlbiBvbWl0dGVkLCBzaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0
byBleHBsaWNpdGx5IHRlbGwgdGhlIEdQVQorICAgICAgICBwcm9jZXNzIHRvIGdvIHRvIHNsZWVw
IHdpdGggdGhlIGxhdGVzdCBpdGVyYXRpb24gb2YgdGhpcyBwYXRjaCkuCisKKyAgICAgICAgSW4g
b3JkZXIgdG8gd3JpdGUgZGlzcGxheSBsaXN0IGRhdGEgY29uZm9ybWluZyB0byB0aGlzIGZvcm1h
dCwgd2UgYWRkIGEgbWVjaGFuaXNtIHRvIHRoZSB3ZWIgcHJvY2VzcyB0aGF0IGtlZXBzCisgICAg
ICAgIHRyYWNrIG9mIHRoZSAiY3VycmVudCBkZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIiIChpLmUu
IHRoZSBpbWFnZSBidWZmZXIgdGhhdCBoYXMgbW9zdCByZWNlbnRseQorICAgICAgICBhcHBlbmRl
ZCBhIGRpc3BsYXkgbGlzdCBpdGVtKS4gUmlnaHQgYmVmb3JlIHRoaXMgZGVzdGluYXRpb24gaXMg
YWJvdXQgdG8gY2hhbmdlLCB3ZSBhcHBlbmQgYSBuZXcKKyAgICAgICAgYE1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcmAgaXRlbSBiZWZvcmUgcHJvY2VlZGluZyB0byBhcHBl
bmQgZGlzcGxheSBsaXN0IGl0ZW1zIGZvciB0aGUgbmV3CisgICAgICAgIGN1cnJlbnQgZGVzdGlu
YXRpb24uCisKKyAgICAgICAgU2luY2Ugd2Ugbm93IGJ1bXAgdGhlIHVucmVhZCBjb3VudCBldmVy
eSB0aW1lLCB3ZSBuZWVkIHRvIGRvIHNvbWUgYWRkaXRpb25hbCB3b3JrIHRvIGF2b2lkIGFuIGV4
Y2Vzc2l2ZSBudW1iZXIKKyAgICAgICAgb2Ygd2FrZXVwcyBhbmQgc2xlZXBzIGluIHRoZSBHUFUg
cHJvY2Vzcywgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGNhdXNlIGEgbWFzc2l2ZSByZWdyZXNzaW9u
LiBUbyBkbyB0aGlzLCB3ZQorICAgICAgICBpbnRyb2R1Y2UgYW4gaXRlbSBjb3VudCBoeXN0ZXJl
c2lzIGluIHRoZSB3ZWIgcHJvY2Vzcywgc3VjaCB0aGF0IHdlIHdpbGwgd2FpdCBmb3IgNTEyIGl0
ZW1zIHRvIGJlIHdyaXR0ZW4gYmVmb3JlCisgICAgICAgIGF0dGVtcHRpbmcgdG8gc2VuZCB0aGUg
d2FrZXVwIG1lc3NhZ2UuIFRoaXMgYWxsb3dzIHRoZSB3ZWIgcHJvY2VzcyB0byBnZXQgYSBzbWFs
bCBoZWFkIHN0YXJ0IG92ZXIgdGhlIEdQVQorICAgICAgICBwcm9jZXNzLCBhbmQgdGh1cyBhbGxv
d3MgdGhlIEdQVSBwcm9jZXNzIHRvIGJlIG1vcmUgY29uc2lzdGVudGx5IGJ1c3kgb3ZlciB0aGUg
Y291cnNlIG9mIGEgc2luZ2xlIGZyYW1lLgorCisgICAgICAgIE9uIHRoZSByZWFkZXIgKEdQVSBw
cm9jZXNzKSBzaWRlLCB3ZSBtYWtlIHNvbWUgbWlub3IgYWRqdXN0bWVudHMgc28gdGhhdCB0aGUg
bWFpbiBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyBsb29wCisgICAgICAgIG9mIHRoZSBHUFUgcHJv
Y2VzcyBpcyBjYXBhYmxlIG9mIGNoYW5naW5nIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlcnMgd2hp
bGUgcHJvY2Vzc2luZyBhIHN0cmVhbSBvZiBkaXNwbGF5IGxpc3QKKyAgICAgICAgaXRlbXMuCisK
KyAgICAgICAgU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgorCisgICAgICAgIFVwZGF0ZSBg
YWR2YW5jZWAgc28gdGhhdCBpdCBqdXN0IHBlcmZvcm1zIGEgc2luZ2xlIDgtYnl0ZSBhdG9taWMg
YGV4Y2hhbmdlU3ViYCByYXRoZXIgdGhhbiBncmFiYmluZyBhIHNwaW5sb2NrLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKworICAgICAgICBSZW5hbWUgYGFwcGx5
RGlzcGxheUxpc3RzRnJvbUhhbmRsZWAgdG8gYG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0
ZXJBcHBseWluZ0Rpc3BsYXlMaXN0c2AsIGFuZCBtYWtlIGl0CisgICAgICAgIHJldHVybiB0aGUg
Y3VycmVudCBpbWFnZSBidWZmZXIgdG8gdXNlIGFzIHRoZSBkZXN0aW5hdGlvbiBmb3IgcmVwbGF5
aW5nIGRpc3BsYXkgbGlzdCBjb21tYW5kcy4gVGhpcyBoZWxwZXIgaXMKKyAgICAgICAgc3RpbGwg
cmVzcG9uc2libGUgZm9yIHJlcGxheWluZyBhIGRpc3BsYXkgbGlzdCBpdGVtIGJ1ZmZlciB1bnRp
bCBpdCBoYXMgbm8gbW9yZSBkYXRhICh0aGF0IGlzLCB1bnRpbCB3ZQorICAgICAgICBlbmNvdW50
ZXIgYSBgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyYCBpdGVtIGluZm9ybWluZyB1cyBvZiB0
aGUgbmV4dCBpdGVtIGJ1ZmZlciB0byBjb25zdW1lKS4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KToKKworICAgICAg
ICBBZGp1c3QgdGhpcyB0byBjYWxsIGBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBw
bHlpbmdEaXNwbGF5TGlzdHNgLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFNo
YXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorCisgICAgICAgIFJlbW92ZSBgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OkxvY2tgIGFsdG9nZXRoZXIsIG5vdyB0aGF0IHdlIGp1c3QgaGF2
ZSBhIHNpbmdsZSBhdG9taWMgYHVpbnQ2NF90YCBjb3VudGVyIHRvCisgICAgICAgIHJlcHJlc2Vu
dCB0aGUgbnVtYmVyIG9mIHVucmVhZCBieXRlcy4KKworICAgICAgICAoV2ViS2l0OjpTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6dW5yZWFkQnl0ZXMpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6TG9jazo6TG9jayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrOjp+TG9jayk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZSk6CisKKyAg
ICAgICAgTWFrZSB0aGlzIHVzZSB0aGUgc2luZ2xlIGF0b21pYyBjb3VudGVyLCBpbnN0ZWFkIG9m
IGdyYWJiaW5nIGEgc3BpbmxvY2suCisKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0
ZXJIYW5kbGU6Om1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZzZXRJZlBv
c3NpYmxlKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgYHJlc2V0V3JpdGFibGVPZmZzZXRJ
ZlBvc3NpYmxlYCB0byB0aGUgbW9yZSBhY2N1cmF0ZSBgbW92ZVdyaXRhYmxlT2Zmc2V0VG9TdGFy
dElmUG9zc2libGVgLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyUHJveHk6OmNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpOgorCisgICAgICAgIEFkZCBh
IGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEgYE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcmAgaXRlbSB0byB0aGUgZGlzcGxheSBsaXN0LCBnaXZlbiB0aGUKKyAgICAgICAg
aWRlbnRpZmllciBvZiB0aGlzIG5leHQgaXRlbSBidWZmZXIuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y2xlYXJEaXNwbGF5TGlzdCk6CisKKyAgICAgICAgQWRk
IGEgaGVscGVyIG1ldGhvZCB0byBjbGVhciB0aGUgZGlzcGxheSBsaXN0LCBzdWNoIHRoYXQgdGhl
IGBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5YCB3aWxsIGJlIGFza2VkIGZvciBhIG5ldworICAgICAg
ICBidWZmZXIgaGFuZGxlIHRoZSBuZXh0IHRpbWUgd2UgYXBwZW5kIGFuIGl0ZW0uCisKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6d2FpdEZvckRpZEZsdXNoV2l0aFRp
bWVvdXQpOgorCisgICAgICAgIE1ha2UgdGhpcyBoaXQgdGhlIG1heGltdW0gYHdhaXRGb3JBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5YCBhdHRlbXB0IGNvdW50IGFuZCAiZmFpbCIgb25seSBpZiB0aGUg
Y2FsbCB0bworICAgICAgICBgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHlgIGFjdHVhbGx5
IHRpbWVzIG91dC4gVGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZSBz
Y2VuYXJpbyBvZgorICAgICAgICBtdWx0aXBsZSBpbWFnZSBidWZmZXJzIHNpbXVsdGFuZW91c2x5
IGFwcGVuZGluZyBkaXNwbGF5IGxpc3QgaXRlbXMgd29ya3Mgd2hlbiBhbGwgaW1hZ2UgYnVmZmVy
cyBwZXJmb3JtIChub24tCisgICAgICAgIGJsb2NraW5nKSBmbHVzaGVzIHNpbXVsdGFuZW91c2x5
LCBmb2xsb3dlZCBieSBhIHN5bmMtd2FpdCAoYmxvY2tpbmcpIGZsdXNoLiBJbiB0aGlzIHNpdHVh
dGlvbiwgdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIG1heSByZWNlaXZlIG1vcmUgdGhhbiB0aHJl
ZSBgRGlkRmx1c2hgIG1lc3NhZ2VzIGluIHJhcGlkIHN1Y2Nlc3Npb24sIGNhdXNpbmcgaXQgdG8g
aGl0IHRoaXMgbWF4aW11bSBsaW1pdCBvZiAzCisgICAgICAgIGluc3RhbnRseSBhbmQgYXZvaWQg
d2FpdGluZyBmb3IgdGhlIGV4cGVjdGVkIGBEaWRGbHVzaGAgbWVzc2FnZSB0byBhcnJpdmUuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6c3VibWl0RGlzcGxheUxp
c3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6CisKKyAgICAgICAg
UmVzZXQgc3RhdGUgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgdGVybWluYXRlZC4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndpbGxBcHBlbmRJdGVtKToK
KworICAgICAgICBVcGRhdGUgdGhlIGN1cnJlbnQgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIChg
bV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXJgKS4gSWYgdGhpcyBpZGVu
dGlmaWVyCisgICAgICAgIGNoYW5nZWQsIHRoZW4gd2UgYXBwZW5kIGEgYE1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcmAgaXRlbSB0byB0aGUgcHJldmlvdXMgZGVzdGluYXRp
b24gYmVmb3JlCisgICAgICAgIHNldHRpbmcgdGhlIG5ldyBkZXN0aW5hdGlvbiBpbWFnZSBidWZm
ZXIuIFdlIGFsc28gbmVlZCB0byBjbGVhciB0aGUgbmV3IGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZl
cidzIGRpc3BsYXkgbGlzdAorICAgICAgICBiZWZvcmUgd3JpdGluZyBuZXcgaXRlbXMsIHRvIHBy
ZXZlbnQgaXQgZnJvbSBvdmVyd3JpdGluZyBzaGFyZWQgZGlzcGxheSBsaXN0IGl0ZW0gZGF0YS4K
KworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnNlbmRXYWtl
dXBNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpzZW5kRGVmZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEpOgorCisgICAgICAgIElt
cGxlbWVudCBhIG5ldyBgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnRgIGhvb2sgYnkgYWR2YW5jaW5n
IHRoZSBjb3JyZXNwb25kaW5nIGl0ZW0gYnVmZmVyJ3MgdW5yZWFkIGNvdW50LgorICAgICAgICBB
ZGRpdGlvbmFsbHksIHNjaGVkdWxlIGEgd2FrZXVwIG1lc3NhZ2UgaW4gdGhlIGNhc2Ugd2hlcmUg
dGhlIHVucmVhZCBjb3VudCB3YXMgemVybyB3aGVuIHdlIGFkdmFuY2VkLCBhbmQgdGhlCisgICAg
ICAgIGl0ZW0gYnVmZmVyIHdlJ3ZlIGFwcGVuZGVkIHRvIGlzIG5vdCAiY29ubmVjdGVkIiB0byBh
IHByZXZpb3VzIGl0ZW0gYnVmZmVyIGJ5IHdheSBvZiBhbiBpdGVtIGJ1ZmZlciBjaGFuZ2UgaXRl
bS4KKworICAgICAgICBBZGRpdGlvbmFsbHksIGluIHRoZSBjYXNlIHdoZXJlIHdlIGRvbid0IHNj
aGVkdWxlIGEgbmV3IHdha2V1cCBtZXNzYWdlLCBjaGVjayB3aGV0aGVyIG9yIG5vdCB0aGVyZSBp
cyBhIGRlZmVycmVkCisgICAgICAgIHdha2V1cCBtZXNzYWdlOyBpZiB0aGVyZSBpcywgdGhlbiBk
ZWNyZW1lbnQgdGhlIHJlbWFpbmluZyBpdGVtIGNvdW50IGJlZm9yZSB3ZSBzZW5kIHRoZSB3YWtl
dXAgbWVzc2FnZSwgYW5kIHNlbmQKKyAgICAgICAgdGhlIG1lc3NhZ2UgaWYgdGhlIGNvdW50IHJl
YWNoZXMgMC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmZpbmRSZXVzYWJsZURpc3BsYXlMaXN0SGFuZGxlKToKKworICAgICAgICBQdWxsIGxvZ2ljIHRv
IGZpbmQgYSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSBzdWl0YWJsZSBmb3IgcmV1c2UgaW50
byBhIHNlcGFyYXRlIGhlbHBlciBtZXRob2QsIGFuZCBhZGp1c3QgaXQKKyAgICAgICAgc28gdGhh
dCBpZiB0aGUgbW9zdCByZWNlbnRseSB1c2VkIGRpc3BsYXkgbGlzdCBoYW5kbGUgaGFzIHJ1biBv
dXQgb2YgYXZhaWxhYmxlIGNhcGFjaXR5LCB3ZSBtb3ZlIGl0IHRvIHRoZSBlbmQKKyAgICAgICAg
b2YgdGhlIHJldXNlIHF1ZXVlIGFuZCBvbmx5IHJldXNlIHRoZSBuZXcgZmlyc3Qgc2hhcmVkIGhh
bmRsZSBpbiB0aGUgcXVldWUgaWYgaXRzIHdyaXRhYmxlIG9mZnNldCBjYW4gYmUgcmVzZXQuCisg
ICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBHUFUgcHJvY2VzcyBjYW4gYWx3YXlzIGNvbnRp
bnVlIHJlYWRpbmcgZGlzcGxheSBsaXN0IGl0ZW0gZGF0YSBmcm9tIHRoZSBzdGFydCBvZiBuZXcg
aXRlbQorICAgICAgICBidWZmZXJzIC0tIGkuZS4sIHdlIGRvbid0IGVuZCB1cCB3aXRoIHRoZSB3
ZWIgcHJvY2VzcyB3cml0aW5nIG91dCBhIHN0cmVhbSBvZiBkaXNwbGF5IGxpc3QgZGF0YSBsaWtl
OgorCisgICAgICAgICAgIChTdGFydCkgQnl0ZXMgKDE2LCA2NTUyMCkgaW4gSXRlbUJ1ZmZlclsx
XQorICAgICAgICAgICAgICAgICAgIEJ5dGVzICgxNiwgNjU1MzYpIGluIEl0ZW1CdWZmZXJbMl0K
KyAgICAgICAgICAgICAgICAgICBCeXRlcyAoNjU1MjAsIDY1NTM2KSBpbiBJdGVtQnVmZmVyWzFd
CisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
dGVtQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpzdWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaDoKKwogMjAyMC0xMi0wNCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KIAogICAgICAgICBDcmVhdGUgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIHRleHQgaW50ZXJh
Y3Rpb24gZ2VzdHVyZXMgaW4gV0tXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRl
eCA4MTIwNGRmMDg3ZTY1NThlYWU3ZTRkNDAxOGM2NTViNThlMmE1OGE2Li41MWU3OWUwYzdmNTQ0
YzNjZjc0NTQ5N2JkMDg3MmVlYzJkYzhmNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAK
QEAgLTI4Miw4ICsyODIsNiBAQCB2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBp
dGVtKQogICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6
CiAgICAgICAgIHJldHVybiBhcHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPihpdGVt
LmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
Ok1ldGFDb21tYW5kRW5kOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kRW5kPihp
dGVtLmdldDxNZXRhQ29tbWFuZEVuZD4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VE
YXRhOgogICAgICAgICByZXR1cm4gYXBwZW5kPFB1dEltYWdlRGF0YT4oaXRlbS5nZXQ8UHV0SW1h
Z2VEYXRhPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGNlNmIwZTliMThi
ZGM3YWFiMzg0NGQ4NzM2NjM2ODkyMzk0MGUyMjguLmMwNDBlOThkOThjMTE2ZWFmMjg2YTUxZGYz
YTc3ZDVlMGY4MTgyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCkBAIC0yMjgsNyArMjI4LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5k
Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29t
bWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHsKICAg
ICAgICAgZ2V0PFB1dEltYWdlRGF0YT4oKS5hcHBseShjb250ZXh0KTsKQEAgLTQ2NCwxMCArNDYz
LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
Pjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2UgSXRlbVR5cGU6Ok1l
dGFDb21tYW5kRW5kOiB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPE1ldGFDb21tYW5kRW5kPjo6dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYTogewogICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxQYWludEZyYW1lRm9y
TWVkaWE+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTcyMywxMCArNzE4LDYgQEAgdm9p
ZCBJdGVtSGFuZGxlOjpjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAg
ICAgbmV3IChpdGVtT2Zmc2V0KSBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIoZ2V0PE1ldGFD
b21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0
KSBNZXRhQ29tbWFuZEVuZChnZXQ8TWV0YUNvbW1hbmRFbmQ+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYTogewogICAgICAg
ICBuZXcgKGl0ZW1PZmZzZXQpIFBhaW50RnJhbWVGb3JNZWRpYShnZXQ8UGFpbnRGcmFtZUZvck1l
ZGlhPigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODc2LDI1ICs4NjcsMjUgQEAgdm9pZCBJdGVt
QnVmZmVyOjpjbGVhcigpCiAgICAgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyA9IDA7CiB9CiAKLXZv
aWQgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9m
Qnl0ZXMpCitEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZl
cklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogewogICAgIGF1dG8gc2l6ZUZvckJ1ZmZl
clN3aXRjaEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGU6Ok1l
dGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAgaWYgKG1fd3JpdHRlbk51bWJlck9mQnl0
ZXMgKyBudW1iZXJPZkJ5dGVzICsgc2l6ZUZvckJ1ZmZlclN3aXRjaEl0ZW0gPD0gbV93cml0YWJs
ZUJ1ZmZlci5jYXBhY2l0eSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRGlkQ2hh
bmdlSXRlbUJ1ZmZlcjo6Tm87CiAKICAgICBhdXRvIG5leHRCdWZmZXIgPSBjcmVhdGVJdGVtQnVm
ZmVyKG51bWJlck9mQnl0ZXMgKyBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSk7Ci0gICAgYm9vbCBo
YWRQcmV2aW91c0J1ZmZlciA9IG1fd3JpdGFibGVCdWZmZXI7Ci0gICAgaWYgKGhhZFByZXZpb3Vz
QnVmZmVyKQotICAgICAgICB1bmNoZWNrZWRBcHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyPihuZXh0QnVmZmVyLmlkZW50aWZpZXIpOwotICAgIGF1dG8gcHJldmlvdXNCdWZmZXIgPSBz
dGQ6OmV4Y2hhbmdlKG1fd3JpdGFibGVCdWZmZXIsIHsgfSk7Ci0gICAgcHJldmlvdXNCdWZmZXIu
Y2FwYWNpdHkgPSBzdGQ6OmV4Y2hhbmdlKG1fd3JpdHRlbk51bWJlck9mQnl0ZXMsIDApOwotICAg
IGlmIChoYWRQcmV2aW91c0J1ZmZlcikKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlcnMuYXBwZW5k
KFdURk1vdmUocHJldmlvdXNCdWZmZXIpKTsKLQorICAgIGJvb2wgaGFkUHJldmlvdXNCdWZmZXIg
PSBtX3dyaXRhYmxlQnVmZmVyICYmIG1fd3JpdGFibGVCdWZmZXIuaWRlbnRpZmllciAhPSBuZXh0
QnVmZmVyLmlkZW50aWZpZXI7CisgICAgaWYgKGhhZFByZXZpb3VzQnVmZmVyKSB7CisgICAgICAg
IHVuY2hlY2tlZEFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KERpZENoYW5nZUl0
ZW1CdWZmZXI6Ok5vLCBuZXh0QnVmZmVyLmlkZW50aWZpZXIpOworICAgICAgICBtX3dyaXRhYmxl
QnVmZmVyLmNhcGFjaXR5ID0gbV93cml0dGVuTnVtYmVyT2ZCeXRlczsKKyAgICAgICAgbV9yZWFk
T25seUJ1ZmZlcnMuYXBwZW5kKG1fd3JpdGFibGVCdWZmZXIpOworICAgIH0KKyAgICBtX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzID0gMDsKICAgICBtX3dyaXRhYmxlQnVmZmVyID0gV1RGTW92ZShuZXh0
QnVmZmVyKTsKKyAgICByZXR1cm4gaGFkUHJldmlvdXNCdWZmZXIgPyBEaWRDaGFuZ2VJdGVtQnVm
ZmVyOjpZZXMgOiBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpObzsKIH0KIAotdm9pZCBJdGVtQnVmZmVy
OjphcHBlbmRFbmNvZGVkRGF0YShJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCit2b2lkIEl0ZW1C
dWZmZXI6OmFwcGVuZChJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiB7CiAgICAgYXV0byBkYXRh
ID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtKHRlbXBvcmFyeUl0ZW0pOwogICAgIGlmICgh
ZGF0YSkKQEAgLTkwMywxMyArODk0LDIwIEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kRW5jb2Rl
ZERhdGEoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogICAgIGF1dG8gZGF0YUxlbmd0aCA9IGRh
dGEtPnNpemUoKTsKICAgICBhdXRvIGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtID0g
MiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0
X3QpLCBkYXRhTGVuZ3RoKTsKIAotICAgIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKGFkZGl0
aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKKyAgICBhdXRvIGJ1ZmZlckNoYW5nZWQgPSBz
d2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRl
bSk7CiAKICAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc10g
PSBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZW1wb3JhcnlJdGVtLnR5cGUoKSk7CiAgICAgcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdCo+KG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1fd3JpdHRlbk51
bWJlck9mQnl0ZXMpWzFdID0gZGF0YUxlbmd0aDsKICAgICBtZW1jcHkobV93cml0YWJsZUJ1ZmZl
ci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIDIgKiBzaXplb2YodWludDY0X3QpLCBk
YXRhLT5kYXRhQXNVSW50OFB0cigpLCBkYXRhTGVuZ3RoKTsKIAotICAgIG1fd3JpdHRlbk51bWJl
ck9mQnl0ZXMgKz0gYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW07CisgICAgZGlkQXBw
ZW5kRGF0YShhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbSwgYnVmZmVyQ2hhbmdlZCk7
Cit9CisKK3ZvaWQgSXRlbUJ1ZmZlcjo6ZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZCeXRl
cywgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVmZmVyKQoreworICAgIG1fd3Jp
dHRlbk51bWJlck9mQnl0ZXMgKz0gbnVtYmVyT2ZCeXRlczsKKyAgICBpZiAobV93cml0aW5nQ2xp
ZW50KQorICAgICAgICBtX3dyaXRpbmdDbGllbnQtPmRpZEFwcGVuZERhdGEobV93cml0YWJsZUJ1
ZmZlciwgbnVtYmVyT2ZCeXRlcywgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmgKaW5kZXggYzEwY2MzZTUyYTIwYWI1ZWMwMmE1NjA2Y2ZjODQ5MzFmZjIxMjg2Zi4uNmNlM2I1
ZWNjNDBiNzk0NGQyN2QzNDgxODE2OTlkYTgwMWZjNDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtODMsMTIgKzgzLDE1IEBAIHN0cnVjdCBJdGVtSGFu
ZGxlIHsKICAgICB2b2lkIGNvcHlUbyhJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdDsKIH07
CiAKK2VudW0gY2xhc3MgRGlkQ2hhbmdlSXRlbUJ1ZmZlciA6IGJvb2wgeyBObywgWWVzIH07CisK
IGNsYXNzIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
dGVtQnVmZmVyV3JpdGluZ0NsaWVudCgpIHsgfQogCiAgICAgdmlydHVhbCBJdGVtQnVmZmVySGFu
ZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBlbmNvZGVJdGVtKEl0ZW1IYW5kbGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJl
ck9mQnl0ZXMsIERpZENoYW5nZUl0ZW1CdWZmZXIpID0gMDsKIH07CiAKIGNsYXNzIEl0ZW1CdWZm
ZXJSZWFkaW5nQ2xpZW50IHsKQEAgLTE1MiwxNyArMTU1LDE3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHN0YXRpYyB1aW50OF90IHRlbXBvcmFyeUl0ZW1CdWZmZXJbc2l6ZW9mKHVpbnQ2NF90KSAr
IHNpemVvZihUKV07CiAgICAgICAgICAgICB0ZW1wb3JhcnlJdGVtQnVmZmVyWzBdID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwogICAgICAgICAgICAgbmV3ICh0ZW1wb3JhcnlJ
dGVtQnVmZmVyICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOwotICAgICAgICAgICAgYXBwZW5kRW5jb2RlZERhdGEoeyB0ZW1wb3JhcnlJdGVtQnVmZmVy
IH0pOworICAgICAgICAgICAgYXBwZW5kKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKICAgICAg
ICAgICAgIEl0ZW1IYW5kbGUgeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0uZGVzdHJveSgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc3dhcFdyaXRhYmxlQnVmZmVy
SWZOZWVkZWQocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHBh
ZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSkpOwogCiAgICAgICAgIGlm
ICghc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkKICAgICAgICAgICAg
IG1faXRlbXNUb0Rlc3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMuYXBwZW5kKHsgJm1fd3JpdGFibGVC
dWZmZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXSB9KTsKIAotICAgICAgICB1bmNoZWNr
ZWRBcHBlbmQ8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgdW5jaGVj
a2VkQXBwZW5kPFQ+KGJ1ZmZlckNoYW5nZWQsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
CiAgICAgfQogCiAgICAgdm9pZCBzZXRDbGllbnQoSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQqIGNs
aWVudCkgeyBtX3dyaXRpbmdDbGllbnQgPSBjbGllbnQ7IH0KQEAgLTE3MSwxNSArMTc0LDE2IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY29uc3QgSXRlbUJ1ZmZlckhhbmRsZXMmIHJlYWRPbmx5
QnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHlCdWZmZXJzOyB9CiAgICAgdm9pZCBm
b3JFYWNoSXRlbUJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmKT4m
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRBcHBlbmREYXRhKHNpemVfdCBu
dW1iZXJPZkJ5dGVzLCBEaWRDaGFuZ2VJdGVtQnVmZmVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRW5jb2RlZERhdGEoSXRlbUhhbmRsZSk7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCB1bmNoZWNrZWRBcHBl
bmQoQXJncyYmLi4uIGFyZ3MpCisgICAgV0VCQ09SRV9FWFBPUlQgRGlkQ2hhbmdlSXRlbUJ1ZmZl
ciBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoSXRlbUhhbmRsZSk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoRGlkQ2hhbmdlSXRl
bUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVmZmVyLCBBcmdzJiYuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIGF1dG8qIHN0YXJ0T2ZJdGVtID0gJm1fd3JpdGFibGVCdWZmZXIuZGF0YVttX3dyaXR0ZW5O
dW1iZXJPZkJ5dGVzXTsKICAgICAgICAgc3RhcnRPZkl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50
OF90PihUOjppdGVtVHlwZSk7CiAgICAgICAgIG5ldyAoc3RhcnRPZkl0ZW0gKyBzaXplb2YodWlu
dDY0X3QpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIG1fd3JpdHRl
bk51bWJlck9mQnl0ZXMgKz0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1U
eXBlKTsKKyAgICAgICAgZGlkQXBwZW5kRGF0YShwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoVDo6aXRlbVR5cGUpLCBkaWRDaGFuZ2VJdGVtQnVmZmVyKTsKICAgICB9CiAKICAgICBJdGVt
QnVmZmVyUmVhZGluZ0NsaWVudCogbV9yZWFkaW5nQ2xpZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4IGYxMWE5ZmVkZDA3YzQwOWYy
OTg5OGRlMzljODIzMTAzMWI0MTdlZDAuLmMwYzczYjgzYmQ1MmVhYTA0YTk1MTc4MTgwNDQ1Mzk0
N2JiYzk1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAg
LTEzMCw4ICsxMzAsNiBAQCBzdGF0aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBl
IHR5cGUpCiAgICAgICAgIHJldHVybiBzaXplb2YoTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1C
dWZmZXI6CiAgICAgICAgIHJldHVybiBzaXplb2YoTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDoKLSAgICAgICAgcmV0dXJuIHNp
emVvZihNZXRhQ29tbWFuZEVuZCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgog
ICAgICAgICByZXR1cm4gc2l6ZW9mKFB1dEltYWdlRGF0YSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6
UGFpbnRGcmFtZUZvck1lZGlhOgpAQCAtMTg2LDcgKzE4NCw2IEBAIGJvb2wgaXNEcmF3aW5nSXRl
bShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKICAgICBj
YXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgIGNhc2Ug
SXRlbVR5cGU6Ok1ldGFDb21tYW5kRW5kOgogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgogICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CkBAIC0y
OTksNyArMjk2LDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNl
IEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21t
YW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6UmVzdG9yZToKICAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaAppbmRleCA5ZGZlMmI5OTJkMDFjMzUxOTJlODU4NTdlYzgwN2Qw
Yzk4YWY1M2E2Li4wZTk0N2EwNmRhYjVhMmRmYjQ3NjkwODJmOGNhYzU0OGFmODkzNDNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKQEAgLTc2LDcgKzc2LDYgQEAgZW51
bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEZpbGxQYXRoLAogICAgIEZpbGxFbGxp
cHNlLAogICAgIEZsdXNoQ29udGV4dCwKLSAgICBNZXRhQ29tbWFuZEVuZCwKICAgICBNZXRhQ29t
bWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsCiAgICAgTWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyLAogICAgIFB1dEltYWdlRGF0YSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcAppbmRleCAzMzExOTgzMzBlMTQzOWQyMTAxY2FiYTA1NGZjMGE1OTQzNzM3YzlmLi5i
ZGJkMjM5ZjczMzc4NDAxNTI3NzFhMmY0NTdiYzQ2OTUxMGQwZTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMDE0LDExICsxMDE0LDYgQEAgc3RhdGljIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IE1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb24KICAgICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBNZXRhQ29tbWFuZEVuZCYpCi17Ci0gICAgcmV0
dXJuIHRzOwotfQotCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgSXRlbVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzAsNyArMTA2
NSw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVt
VHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDogdHMgPDwgImZsdXNo
LWNvbnRleHQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXI6IHRzIDw8ICJtZXRhLWNvbW1hbmQtY2hhbmdlLWRlc3RpbmF0
aW9uLWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5k
Q2hhbmdlSXRlbUJ1ZmZlcjogdHMgPDwgIm1ldGEtY29tbWFuZC1jaGFuZ2UtaXRlbS1idWZmZXIi
OyBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDogdHMgPDwgIm1ldGEt
Y29tbWFuZC1lbmQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHRz
IDw8ICJwdXQtaW1hZ2UtZGF0YSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJh
bWVGb3JNZWRpYTogdHMgPDwgInBhaW50LWZyYW1lLWZvci1tZWRpYSI7IGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6IHRzIDw8ICJzdHJva2UtcmVjdCI7IGJyZWFrOwpAQCAt
MTIzMiw5ICsxMjI2LDYgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
SXRlbUhhbmRsZSBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcjoKICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyPigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVu
ZDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRFbmQ+KCk7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKICAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8UHV0SW1hZ2VEYXRhPigpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCmluZGV4IDcwMGM2ODc0OTE1NDdmOTk5Yjg5MDJlZmMyZTQ1ZWQxNzY4YjRj
OGMuLmM3YTlhMjBkOWJhMDllNzc4MTQ2ZDQ4ZDEzOTdkMzE2YTUxZmY0ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjI1MCwxMyArMjI1MCw2IEBAIHByaXZhdGU6CiAg
ICAgSXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAotY2xhc3MgTWV0YUNv
bW1hbmRFbmQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5
cGUgPSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzSW5saW5lSXRlbSA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2lu
Z0l0ZW0gPSBmYWxzZTsKLX07Ci0KIGNsYXNzIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVt
VHlwZSA9IEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI7
CkBAIC0yMzMxLDcgKzIzMjQsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RmlsbFBhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
aWxsRWxsaXBzZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29u
dGV4dCwKLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kRW5k
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmgKaW5kZXggNzdjYmEzMzZkYzViOTRmNGRiMjFkYTY2MTEwN2JkNGMzMmNmNzA4NS4uYTM5
ZDcyYmMxOGNjODZlYTY0MGYxNDViZWM2ZWMxM2FiZDQ4NmMzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICB9Owog
CisgICAgdm9pZCBmbHVzaENvbnRleHQoRmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgYXBw
ZW5kPEZsdXNoQ29udGV4dD4oaWRlbnRpZmllcik7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRHJhd0dseXBoc1JlY29yZGVyOwogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE2NCw4ICsxNjYsOCBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJ
dGVtVHlwZSk7Ci0gICAgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOwogCiAgICAg
dm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBkZjQ0YzljMzBhYzZjOGMzYzZm
OTAxZjJhODEwNzNkZWI0NWY5NTE1Li40ZGE4ZTFkN2ZkMmQ5Y2JmODA0MDcxMTRmNWY1ZDYwODA1
OWFlMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0x
MTcsMTIgKzExNyw2IEBAIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpdGVtLmlzPE1ldGFDb21tYW5kRW5kPigpKSB7
Ci0gICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZl
cjsKLSAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFz
b246OkVuZE9mRGlzcGxheUxpc3Q7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAg
ICAgICAgIGlmIChhdXRvIHJlYXNvbkZvclN0b3BwaW5nID0gYXBwbHlJdGVtKGl0ZW0pKSB7CiAg
ICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSAqcmVhc29uRm9yU3RvcHBpbmc7
CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5o
CmluZGV4IGM0NDI3MWYxMGVlZDBiZjAwYWExZjNmYmY3MDJhNDFhZGNhM2Q5MjAuLjEzNzQ2YWJi
ZjhjYWM2OTM2MzJlMTU0YzUyOWZkNjc4M2E2ZGIzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuaApAQCAtNDIsNyArNDIsNiBAQCBlbnVtIGNsYXNzIFN0b3BSZXBsYXlS
ZWFzb24gOiB1aW50OF90IHsKICAgICBSZXBsYXllZEFsbEl0ZW1zLAogICAgIE1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwKICAgICBDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyLAotICAgIEVuZE9m
RGlzcGxheUxpc3QsCiAgICAgRGVjb2RpbmdGYWlsdXJlIC8vIEZJWE1FOiBQcm9wYWdhdGUgZGVj
b2RpbmcgZXJyb3JzIHRvIGRpc3BsYXkgbGlzdCByZXBsYXkgY2xpZW50cyB0aHJvdWdoIHRoaXMg
ZW51bSBhcyB3ZWxsLgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKaW5kZXggNGU0ZDQ5
MWYwZDA5NTM4OTY0M2I0OGEyNzBiMjZhZWYxMzdiN2JmZS4uYWQxMTM2ZTNlOGNlMjZhMDhjZTJi
NzE5MjdlMmNiZDA0Mjg1MmE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCkBAIC0zMSwx
NCArMzEsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHNpemVfdCBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQogewotICAgIGF1dG8gbG9ja2Vy
ID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhpcyB9OwotICAgIGlmIChMSUtF
TFkoYW1vdW50IDw9IGhlYWRlcigpLnVucmVhZEJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGhlYWRl
cigpLnVucmVhZEJ5dGVzIC09IGFtb3VudDsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBy
ZXN1bHQgaW4gdGVybWluYXRpbmcgdGhlIHdlYiBwcm9jZXNzLgotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIGhlYWRlcigpLnVucmVhZEJ5dGVzID0gMDsKLSAgICByZXR1cm4gMDsKKyAg
ICBhdXRvIHByZXZpb3VzVW5yZWFkQnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlcy5leGNoYW5n
ZVN1YihhbW91bnQpOworICAgIGlmIChVTkxJS0VMWShwcmV2aW91c1VucmVhZEJ5dGVzIDwgYW1v
dW50KSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVzdWx0IGluIHRlcm1pbmF0
aW5nIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBwcmV2aW91c1VucmVhZEJ5
dGVzIC0gYW1vdW50OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0PiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6ZGlzcGxheUxpc3RGb3JSZWFkaW5nKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBjYXBhY2l0eSwgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5n
Q2xpZW50JiBjbGllbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggOWZlNmQ4
ZGY1ODJmNzU3ZmE1ZGE3ZDUxOGNmMjFhNzhmMzMxNjQyZi4uNzc3YzZkMTdmODY0OGMzMzM5Nzlh
YjcyNjlkMTM5MjRlOTJhZGM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMTI5LDM2
ICsxMjksMzkgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW4KICAgICBtX3JlbW90ZVJlc291cmNl
Q2FjaGUuY2FjaGVJbWFnZUJ1ZmZlcihtYWtlUmVmKCppbWFnZUJ1ZmZlcikpOwogfQogCi12b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZShJbWFn
ZUJ1ZmZlciYgZGVzdGluYXRpb24sIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUsIHNp
emVfdCBpbml0aWFsT2Zmc2V0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlz
dHMoSW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQs
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUpCiB7CisgICAgYXV0byBkZXN0aW5hdGlv
biA9IG1ha2VSZWZQdHIoaW5pdGlhbERlc3RpbmF0aW9uKTsKICAgICBhdXRvIGhhbmRsZVByb3Rl
Y3RvciA9IG1ha2VSZWYoaGFuZGxlKTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBpbml0aWFsT2Zm
c2V0OworICAgIGF1dG8gb2Zmc2V0ID0gaW5pdGlhbE9mZnNldDsKICAgICBzaXplX3Qgc2l6ZVRv
UmVhZCA9IDA7Ci0KICAgICBkbyB7CiAgICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUudW5yZWFk
Qnl0ZXMoKTsKICAgICB9IHdoaWxlICghc2l6ZVRvUmVhZCk7CiAKLSAgICB3aGlsZSAoc2l6ZVRv
UmVhZCkgeworICAgIHdoaWxlIChkZXN0aW5hdGlvbiAmJiAhbV9uZXh0SXRlbUJ1ZmZlclRvUmVh
ZCkgewogICAgICAgICBhdXRvIGRpc3BsYXlMaXN0ID0gaGFuZGxlLmRpc3BsYXlMaXN0Rm9yUmVh
ZGluZyhvZmZzZXQsIHNpemVUb1JlYWQsICp0aGlzKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFk
aXNwbGF5TGlzdCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNr
IHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihkZXN0aW5hdGlv
bikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAgRGlzcGxheUxpc3Q6
OlJlcGxheVJlc3VsdCByZXN1bHQ7CisgICAgICAgIGlmIChkZXN0aW5hdGlvbi0+aXNBY2NlbGVy
YXRlZCgpKQorICAgICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlciY+KCpkZXN0aW5hdGlvbikuc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlM
aXN0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRl
ZFJlbW90ZUltYWdlQnVmZmVyJj4oZGVzdGluYXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNw
bGF5TGlzdCk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXImPigqZGVzdGluYXRpb24pLnN1Ym1pdERpc3BsYXlMaXN0KCpkaXNw
bGF5TGlzdCk7CisKKyAgICAgICAgc2l6ZVRvUmVhZCA9IGhhbmRsZS5hZHZhbmNlKHJlc3VsdC5u
dW1iZXJPZkJ5dGVzUmVhZCk7CiAKICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE9mZnNldCA9
IG9mZnNldDsKLSAgICAgICAgY2hlY2tlZE9mZnNldCArPSBzaXplVG9SZWFkOworICAgICAgICBj
aGVja2VkT2Zmc2V0ICs9IHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFVO
TElLRUxZKGNoZWNrZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpKSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4K
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBvZmZzZXQgPSBjaGVja2Vk
T2Zmc2V0LnVuc2FmZUdldCgpOwpAQCAtMTY2LDE4ICsxNjksMjQgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRl
c3RpbmF0aW8KICAgICAgICAgaWYgKFVOTElLRUxZKG9mZnNldCA+IGhhbmRsZS5zaGFyZWRNZW1v
cnkoKS5zaXplKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVj
ayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0gICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUuYWR2YW5jZShzaXplVG9SZWFkKTsK
KyAgICAgICAgaWYgKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6U3Rv
cFJlcGxheVJlYXNvbjo6Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcikKKyAgICAgICAgICAg
IGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1h
Z2VCdWZmZXIoKnJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpOworCisgICAgICAg
IGlmICghc2l6ZVRvUmVhZCkKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIHJldHVy
biBkZXN0aW5hdGlvbjsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBB
bmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0
aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKIHsKICAgICBUcmFjZVNjb3Bl
IHRyYWNpbmdTY29wZShXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0U3RhcnQsIFdha2VVcEFuZEFw
cGx5RGlzcGxheUxpc3RFbmQpOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291
cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWltYWdlQnVmZmVyKSkgeworICAgIGF1dG8gZGVzdGluYXRpb25J
bWFnZUJ1ZmZlciA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdl
QnVmZmVyKGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikpOworICAgIGlmIChVTkxJS0VMWSgh
ZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3Nh
Z2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE5MCw3ICsxOTksMTIgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFwcGx5RGlz
cGxheUxpc3RzRnJvbUhhbmRsZSgqaW1hZ2VCdWZmZXIsICppbml0aWFsSGFuZGxlLCBpbml0aWFs
T2Zmc2V0KTsKKyAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1h
Z2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVy
LCBpbml0aWFsT2Zmc2V0LCAqaW5pdGlhbEhhbmRsZSk7CisKKyAgICBpZiAoIWRlc3RpbmF0aW9u
SW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICB3aGlsZSAobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkgewogICAg
ICAgICBhdXRvIG5leHRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQobV9u
ZXh0SXRlbUJ1ZmZlclRvUmVhZCk7CkBAIC0xOTksOSArMjEzLDE1IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkCiAgICAgICAgICAgICAvLyBJUEMgbWVzc2FnZSB3aXRoIGEgc2hhcmVkIG1lbW9y
eSBoYW5kbGUgdG8gdGhlIG5leHQgaXRlbSBidWZmZXIuCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQorCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0aGUgbmV4
dCBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAgICAgICAgIG1fbmV4
dEl0ZW1CdWZmZXJUb1JlYWQgPSB7IH07Ci0gICAgICAgIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhh
bmRsZSgqaW1hZ2VCdWZmZXIsICpuZXh0SGFuZGxlLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
aGVhZGVyU2l6ZSgpKTsKKyAgICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25J
bWFnZUJ1ZmZlciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgKm5leHRI
YW5kbGUpOworCisgICAgICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgeworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KICAgICB9CiB9CiAKQEAgLTMyMCw3ICszNDAsNiBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRl
YwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CiAgICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcjoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFu
Z2VJdGVtQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFu
ZEVuZDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgogICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA1OWFh
MGZlMmRiNTNhYmRlOWRjMjYzMjhjZmJkNDU5ODAxMzNhMGZiLi5kZDJiMTY4OWQwMWQ3YmJkNWZh
YzJlMTkyNjM5OWEyYTEyNzJlOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICB2b2lkIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYg
ZGVzdGluYXRpb24sIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgc2l6ZV90IG9mZnNldCk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZl
ckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRpYWxE
ZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
Jik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKaW5kZXggODY1ZmFlZGNkZTcwNjNh
ODQ0MjQwNTBiYmI3MWZjNDZkMDIyZDUwYi4uMjBhYzk3ZTM0ODgwY2IyODMxZDdiNDAwOTg0ZTg0
NTc5MTJiM2FjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlz
dEhhbmRsZS5oCkBAIC01MCwzOCArNTAsMTIgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgdW5y
ZWFkQnl0ZXMoKQogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZTo6TG9jayB7ICp0aGlzIH07Ci0gICAgICAgIHJldHVybiBoZWFkZXIoKS51bnJlYWRC
eXRlczsKKyAgICAgICAgcmV0dXJuIGhlYWRlcigpLnVucmVhZEJ5dGVzLmxvYWQoKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpID0gMDsKIAogcHJv
dGVjdGVkOgotICAgIGNsYXNzIExvY2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgTG9jayhTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlKQotICAgICAgICAgICAgOiBtX2hhbmRsZShoYW5k
bGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8mIGF0b21pY1ZhbHVlID0gbV9oYW5kbGUu
aGVhZGVyKCkubG9jazsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYXZvaWQgd2FpdGluZyBmb3JldmVyIGluIHRoZSBjYXNl
IHdoZXJlIHRoZSB3ZWIgY29udGVudCBwcm9jZXNzCi0gICAgICAgICAgICAgICAgLy8gaG9sZHMg
b24gdG8gdGhlIGxvY2sgaW5kZWZpbml0ZWx5IChvciBjcmFzaGVzIHdoaWxlIGhvbGRpbmcgdGhl
IGxvY2spLgotICAgICAgICAgICAgICAgIHVpbnQ2NF90IHVubG9ja2VkID0gMDsKLSAgICAgICAg
ICAgICAgICBpZiAoYXRvbWljVmFsdWUuY29tcGFyZUV4Y2hhbmdlV2Vhayh1bmxvY2tlZCwgMSkp
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIFRocmVhZDo6eWll
bGQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIH5Mb2NrKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbV9oYW5kbGUuaGVhZGVyKCkubG9jay5zdG9yZSgwKTsKLSAgICAg
ICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIG1f
aGFuZGxlOwotICAgIH07Ci0KICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1l
bW9yeT4mJiBzaGFyZWRNZW1vcnkpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiAgICAgICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92ZShzaGFyZWRNZW1vcnkpKQpAQCAtODks
OCArNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgc3RydWN0IERpc3BsYXlMaXN0U2hh
cmVkTWVtb3J5SGVhZGVyIHsKLSAgICAgICAgQXRvbWljPHVpbnQ2NF90PiBsb2NrOwotICAgICAg
ICB1aW50NjRfdCB1bnJlYWRCeXRlczsKKyAgICAgICAgQXRvbWljPHVpbnQ2NF90PiB1bnJlYWRC
eXRlczsKICAgICB9OwogCiAgICAgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXImIGhlYWRl
cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVh
ZGVyKj4oZGF0YSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAppbmRleCBk
ODJlM2RmYWRlZTg2ZWIwZDU1NDFiMjc4NTc2ODIxODdmNjVjZjhiLi44ZmYzNjVjZDM0MmE4MjZk
YTA0NDkzYmI2NzI5NGMyYzUxZmEwNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmNwcApAQCAtMzMsMjAgKzMzLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHNpemVf
dCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQogewotICAg
IENoZWNrZWRTaXplIGNoZWNrZWRXcml0YWJsZU9mZnNldCA9IG1fd3JpdGFibGVPZmZzZXQ7Ci0g
ICAgY2hlY2tlZFdyaXRhYmxlT2Zmc2V0ICs9IGFtb3VudDsKLSAgICBpZiAoVU5MSUtFTFkoY2hl
Y2tlZFdyaXRhYmxlT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBhdXRvIGxvY2tlciA9IFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsKLSAgICBDaGVja2VkU2l6ZSBjaGVja2VkVW5yZWFkQnl0
ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlczsKLSAgICBjaGVja2VkVW5yZWFkQnl0ZXMgKz0gYW1v
dW50OwotICAgIGlmIChVTkxJS0VMWShjaGVja2VkVW5yZWFkQnl0ZXMuaGFzT3ZlcmZsb3dlZCgp
KSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIG1fd3JpdGFi
bGVPZmZzZXQgPSBjaGVja2VkV3JpdGFibGVPZmZzZXQudW5zYWZlR2V0KCk7Ci0gICAgaGVhZGVy
KCkudW5yZWFkQnl0ZXMgPSBjaGVja2VkVW5yZWFkQnl0ZXMudW5zYWZlR2V0KCk7Ci0gICAgcmV0
dXJuIGNoZWNrZWRVbnJlYWRCeXRlcy51bnNhZmVHZXQoKTsKKyAgICBtX3dyaXRhYmxlT2Zmc2V0
ID0gKENoZWNrZWRTaXplIHsgbV93cml0YWJsZU9mZnNldCB9ICsgYW1vdW50KS51bnNhZmVHZXQo
KTsKKyAgICByZXR1cm4gKENoZWNrZWRTaXplIHsgaGVhZGVyKCkudW5yZWFkQnl0ZXMuZXhjaGFu
Z2VBZGQoYW1vdW50KSB9ICsgYW1vdW50KS51bnNhZmVHZXQoKTsKIH0KIAogc2l6ZV90IERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlOjphdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0CkBAIC02Niw3ICs1
NCw3IEBAIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlOjpjcmVhdGVIYW5kbGUoKSBjb25zdAogICAgIH07CiB9CiAKLWJvb2wgRGlzcGxheUxpc3RX
cml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKCkKK2Jvb2wgRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGU6Om1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCkK
IHsKICAgICBpZiAobV93cml0YWJsZU9mZnNldCA8PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
aGVhZGVyU2l6ZSgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fd3JpdGFibGVPZmZzZXQg
PT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmgKaW5kZXggNDRlZWZhYWI0OGY0OTExZmVhZGJlZDU4YWU1N2EyYTYzYjFk
OGFkNy4uZmM3YTIxNjUzYTBlYjk2ODE5ZWIxYzA5YTlmYzM0NDQ4MWE3Mzk2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlz
cGxheUxpc3RXcml0ZXJIYW5kbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc2l6
ZV90IHdyaXRhYmxlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV93cml0YWJsZU9mZnNldDsgfQog
ICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0OwogCi0gICAgYm9vbCByZXNldFdy
aXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpOworICAgIGJvb2wgbW92ZVdyaXRhYmxlT2Zmc2V0VG9T
dGFydElmUG9zc2libGUoKTsKIAogICAgIHNpemVfdCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92
ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0
ZUhhbmRsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA1MWJkNTcx
Mjk1OGFmMTJhMjMxNWQ0MWJhM2QyZDZiOWVkNTdmMmJhLi4xNzk0M2IxMDgyNTYyNjcyNzA1ZGZh
MzVhNmY0MjA3NmQzNWI4NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTEx
LDYgKzExMSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3NlbnRGbHVzaElkZW50aWZp
ZXIgPT0gdGFyZ2V0Rmx1c2hJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICB2b2lkIGNoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IG5leHRJbWFnZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJvb2wgd2FzRW1wdHkgPSBtX2RyYXdp
bmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuaXNFbXB0eSgpOworICAgICAgICBtX2RyYXdpbmdDb250
ZXh0LmRpc3BsYXlMaXN0KCkudGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpN
ZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KG5leHRJbWFnZUJ1ZmZlcik7
CisgICAgICAgIGlmICh3YXNFbXB0eSkKKyAgICAgICAgICAgIGNsZWFyRGlzcGxheUxpc3QoKTsK
KyAgICB9CisKKyAgICB2b2lkIGNsZWFyRGlzcGxheUxpc3QoKQorICAgIHsKKyAgICAgICAgbV9k
cmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmNsZWFyKCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAgICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKQEAgLTEzNyw5ICsxNTAsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIC8vIFdhaXQgZm9yIG91ciBEaXNwbGF5TGlzdCB0byBiZSBmbHVzaGVkIGJ1dCBk
byBub3QgaGFuZy4KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhXYWl0aW5n
Rmx1c2ggPSAzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIG51bVdhaXRpbmdGbHVzaCA9IDA7IG51
bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRpbmdGbHVzaCAmJiBoYXNQZW5kaW5nRmx1c2goKTsgKytu
dW1XYWl0aW5nRmx1c2gpCi0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS0+d2FpdEZvckRpZEZsdXNoKCk7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bWF4aW11bU51bWJlck9mVGltZW91dHMgPSAzOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlRp
bWVvdXRzID0gMDsKKyAgICAgICAgd2hpbGUgKG51bWJlck9mVGltZW91dHMgPCBtYXhpbXVtTnVt
YmVyT2ZUaW1lb3V0cyAmJiBoYXNQZW5kaW5nRmx1c2goKSkgeworICAgICAgICAgICAgaWYgKCFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckRpZEZsdXNoKCkpCisgICAgICAg
ICAgICAgICAgKytudW1iZXJPZlRpbWVvdXRzOworICAgICAgICB9CiAgICAgfQogCiAgICAgQmFj
a2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKQEAgLTE1MSwx
OCArMTY3LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+
IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
Ci0gICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIGlm
IChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byYgbXV0YWJsZVRoaXMgPSBjb25zdF9jYXN0
PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhpcyk7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlM
aXN0ID0gbXV0YWJsZVRoaXMubV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAg
ICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbXV0YWJsZVRoaXMu
c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwotICAgICAgICAgICAgbXV0YWJsZVRoaXMu
bV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgICAgICBkaXNwbGF5
TGlzdC5jbGVhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZ2V0SW1hZ2VEYXRhIGlzIHN5
bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSBDb21taXRJ
bWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgorICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+c2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7CiAgICAg
ICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0SW1hZ2VEYXRhKG91
dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IH0KIApAQCAtMTg0LDYgKzE5Miw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3
aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAg
ICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZs
dXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0QW5k
Q29tbWl0KCk7CiAgICAgICAgIHdhaXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KCk7CkBAIC0xOTEs
NDkgKzIwMiw0NSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgZGlzcGxh
eUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNw
bGF5TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghbV9k
cmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV9z
ZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5m
bHVzaENvbnRleHQobV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKKyAgICAgICAgfQogCi0gICAgICAg
IG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50
aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIp
OwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxp
c3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAgICAg
bV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIGRpc3BsYXlMaXN0
LmNsZWFyKCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kRGVm
ZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQoKTsKKyAgICAgICAgY2xlYXJEaXNwbGF5TGlzdCgp
OwogICAgIH0KIAotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKKyAgICB2b2lkIGNhY2hlTmF0aXZl
SW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5TGlzdC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKICAgICB9CiAKICAg
ICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RC
YXRjaFNpemUgPSA1MTI7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29u
dGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoKyttX2l0ZW1Db3VudEluQ3VycmVudERp
c3BsYXlMaXN0IDwgRGlzcGxheUxpc3RCYXRjaFNpemUpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmIChMSUtFTFkobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQorICAgICAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndpbGxBcHBlbmRJdGVtKG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CiAKLSAgICAgICAgbV9pdGVtQ291bnRJ
bkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIHN1Ym1pdERpc3BsYXlMaXN0KGRpc3Bs
YXlMaXN0KTsKLSAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICB2b2lkIGRpZEFwcGVu
ZERhdGEoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUmIGhhbmRs
ZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJ
dGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoTElLRUxZKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKKyAgICAgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5kaWRBcHBlbmREYXRhKGhhbmRsZSwgbnVtYmVy
T2ZCeXRlcywgZGlkQ2hhbmdlSXRlbUJ1ZmZlciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJ
bWFnZSYgaW1hZ2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
aWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICAgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLmNhY2hlTmF0
aXZlSW1hZ2UoaW1hZ2UpOworICAgICAgICBpZiAodHlwZSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGZsdXNoRHJhd2luZ0Nv
bnRleHQoKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhh
bmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgaWYgKExJ
S0VMWShtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4g
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmNyZWF0ZUl0ZW1CdWZmZXIoY2FwYWNpdHks
IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTMwNyw3ICszMTQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CiAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0
aW9uSW1hZ2VCdWZmZXI6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDoKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJlc3RvcmU6CiAgICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6CkBAIC0zMzYsMTIgKzM0
Miw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgZGlkQXBwZW5k
SXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGlmICh0eXBlID09IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0ltYWdlQnVmZmVyKQotICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwot
ICAgIH0KLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZm
ZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVy
biBXVEY6Om1ha2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjxCYWNr
ZW5kVHlwZT4+KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAppbmRleCA5MTgyYTUzMjc1NWE0NzA0ZGQzM2YxODI4MzM2YWU5ZGZlOTNkZmU5Li5mMzNkNGYz
NGYxNmM1YzgzZTg5NWQ3ZWY0MDVhOGU1ODY0ZjBiMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC05OCw4ICs5OCwxMCBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNz
Q29ubmVjdAogICAgIHByZXZpb3VzQ29ubmVjdGlvbi5yZW1vdmVDbGllbnQoKnRoaXMpOwogCiAg
ICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmNsZWFyKCk7Ci0gICAgbV9pZGVudGlm
aWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuY2xlYXIoKTsKICAgICBtX3NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlcy5jbGVhcigpOworICAgIG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworICAgIG1fZGVmZXJyZWRXYWtldXBNZXNz
YWdlQXJndW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVu
ZEJlZm9yZVNlbmRpbmdXYWtldXAgPSAwOwogCiAgICAgcmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29u
bmVjdGlvbigpOwogfQpAQCAtMTU4LDMwICsxNjAsNiBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aQogICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7CiB9CiAKLXZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQotewotICAgIE9wdGlvbmFsPHN0ZDo6cGFp
cjxEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+IGlkZW50aWZpZXJB
bmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlOwotICAgIGJvb2wgaXNGaXJzdEhhbmRsZSA9IHRydWU7
Ci0KLSAgICBkaXNwbGF5TGlzdC5mb3JFYWNoSXRlbUJ1ZmZlcihbJl0gKGF1dG8mIGhhbmRsZSkg
ewotICAgICAgICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5hZGQo
aGFuZGxlLmlkZW50aWZpZXIpOwotCi0gICAgICAgIGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hh
cmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChoYW5kbGUuaWRlbnRpZmllcik7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShzaGFyZWRIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmlu
ZCBzaGFyZWQgZGlzcGxheSBsaXN0IiwgV1RGX1BSRVRUWV9GVU5DVElPTik7Ci0KLSAgICAgICAg
Ym9vbCB1bnJlYWRDb3VudFdhc0VtcHR5ID0gc2hhcmVkSGFuZGxlLT5hZHZhbmNlKGhhbmRsZS5j
YXBhY2l0eSkgPT0gaGFuZGxlLmNhcGFjaXR5OwotICAgICAgICBpZiAoaXNGaXJzdEhhbmRsZSAm
JiB1bnJlYWRDb3VudFdhc0VtcHR5KQotICAgICAgICAgICAgaWRlbnRpZmllckFuZE9mZnNldEZv
cldha2VVcE1lc3NhZ2UgPSB7eyBoYW5kbGUuaWRlbnRpZmllciwgaGFuZGxlLmRhdGEgLSBzaGFy
ZWRIYW5kbGUtPmRhdGEoKSB9fTsKLQotICAgICAgICBpc0ZpcnN0SGFuZGxlID0gZmFsc2U7Ci0g
ICAgfSk7Ci0KLSAgICBpZiAoaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2UpIHsK
LSAgICAgICAgYXV0byBbaWRlbnRpZmllciwgb2Zmc2V0XSA9ICppZGVudGlmaWVyQW5kT2Zmc2V0
Rm9yV2FrZVVwTWVzc2FnZTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBvZmZzZXQsIGRl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OwotICAgIH0KLX0KLQogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0
aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKGhh
bmRsZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7CkBAIC0yMjAsMzcgKzE5OCwxMDMgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGUK
ICAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCpp
bWFnZUJ1ZmZlcikuZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0ZVJldXNhYmxlSGFuZGxlcygpCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2lsbEFwcGVuZEl0ZW0oUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikKIHsKLSAgICBmb3IgKGF1dG8gaWRl
bnRpZmllciA6IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nKSB7Ci0g
ICAgICAgIGF1dG8qIGhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVu
dGlmaWVyKTsKLSAgICAgICAgaWYgKCFoYW5kbGUtPnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3Np
YmxlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBpZiAobV9jdXJyZW50RGVzdGluYXRp
b25JbWFnZUJ1ZmZlcklkZW50aWZpZXIgPT0gbmV3RGVzdGluYXRpb25JZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxl
cy5jb250YWlucyhpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGlmIChh
dXRvIHByZXZpb3VzRGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyID0gc3RkOjpleGNoYW5nZSht
X2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllciwgbmV3RGVzdGluYXRpb25J
ZGVudGlmaWVyKSkgeworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKCpwcmV2aW91c0Rlc3RpbmF0aW9uQnVm
ZmVySWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgIGlmIChpczxBY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyTWFwcGVkUHJveHk+KCppbWFnZUJ1ZmZlcikpCisgICAgICAgICAgICAgICAgZG93
bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlck1hcHBlZFByb3h5PigqaW1hZ2VCdWZm
ZXIpLmNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIobmV3RGVzdGluYXRpb25JZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzPEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4oKmltYWdlQnVmZmVyKSkKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRl
ZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlcihuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5PigqaW1hZ2VCdWZmZXIpLmNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIobmV3RGVzdGlu
YXRpb25JZGVudGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KIAotICAgICAgICBtX2lkZW50aWZp
ZXJzT2ZSZXVzYWJsZUhhbmRsZXMuYXBwZW5kKGlkZW50aWZpZXIpOworICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIo
bmV3RGVzdGluYXRpb25JZGVudGlmaWVyKSkgeworICAgICAgICBpZiAoaXM8QWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlck1hcHBlZFByb3h5PigqaW1hZ2VCdWZmZXIpKQorICAgICAgICAgICAg
ZG93bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlck1hcHBlZFByb3h5PigqaW1hZ2VC
dWZmZXIpLmNsZWFyRGlzcGxheUxpc3QoKTsKKyAgICAgICAgZWxzZSBpZiAoaXM8QWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpKQorICAgICAgICAgICAgZG93
bmNhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNs
ZWFyRGlzcGxheUxpc3QoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG93bmNhc3Q8VW5h
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY2xlYXJEaXNw
bGF5TGlzdCgpOwogICAgIH0KIH0KIAotRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0
eSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmll
cikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzZW5kV2FrZXVwTWVzc2FnZShj
b25zdCBXYWtldXBNZXNzYWdlQXJndW1lbnRzJiBhcmd1bWVudHMpCiB7Ci0gICAgdXBkYXRlUmV1
c2FibGVIYW5kbGVzKCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChhcmd1bWVudHMuaXRlbUJ1ZmZlcklkZW50aWZp
ZXIsIGFyZ3VtZW50cy5pbml0aWFsT2Zmc2V0LCBhcmd1bWVudHMuaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CiAKLSAgICB3aGlsZSAoIW1f
aWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBp
ZGVudGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmZpcnN0KCk7Ci0gICAg
ICAgIGF1dG8qIHJldXNhYmxlSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0
KGlkZW50aWZpZXIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UocmV1c2Fi
bGVIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQgZGlzcGxheSBsaXN0IiwgV1RGX1BS
RVRUWV9GVU5DVElPTik7Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZERl
ZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCkKK3sKKyAgICBhdXRvIGFyZ3VtZW50cyA9IHN0
ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIFdURjo6bnVsbG9w
dCk7CisgICAgaWYgKCFhcmd1bWVudHMpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAo
bV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuY29udGFpbnMoaWRlbnRp
ZmllcikgJiYgcmV1c2FibGVIYW5kbGUtPmF2YWlsYWJsZUNhcGFjaXR5KCkgPj0gY2FwYWNpdHkp
IHsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5n
LnJlbW92ZShpZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybiByZXVzYWJsZUhhbmRsZS0+
Y3JlYXRlSGFuZGxlKCk7Ci0gICAgICAgIH0KKyAgICBzZW5kV2FrZXVwTWVzc2FnZSgqYXJndW1l
bnRzKTsKKyAgICBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwID0g
MDsKK30KIAotICAgICAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMucmVtb3ZlRmly
c3QoKTsKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKGNv
bnN0IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlJiBoYW5kbGUsIHNpemVfdCBudW1iZXJP
ZkJ5dGVzLCBEaXNwbGF5TGlzdDo6RGlkQ2hhbmdlSXRlbUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVm
ZmVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikK
K3sKKyAgICBhdXRvKiBzaGFyZWRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5n
ZXQoaGFuZGxlLmlkZW50aWZpZXIpOworICAgIGlmIChVTkxJS0VMWSghc2hhcmVkSGFuZGxlKSkK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIGJvb2wgd2FzRW1w
dHkgPSBzaGFyZWRIYW5kbGUtPmFkdmFuY2UobnVtYmVyT2ZCeXRlcykgPT0gbnVtYmVyT2ZCeXRl
czsKKyAgICBpZiAoIXdhc0VtcHR5IHx8IGRpZENoYW5nZUl0ZW1CdWZmZXIgPT0gRGlzcGxheUxp
c3Q6OkRpZENoYW5nZUl0ZW1CdWZmZXI6OlllcykgeworICAgICAgICBpZiAobV9kZWZlcnJlZFdh
a2V1cE1lc3NhZ2VBcmd1bWVudHMgJiYgIS0tbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3Jl
U2VuZGluZ1dha2V1cCkKKyAgICAgICAgICAgIHNlbmRXYWtldXBNZXNzYWdlKCpzdGQ6OmV4Y2hh
bmdlKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLCBXVEY6Om51bGxvcHQpKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIHNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5l
ZWRlZCgpOworCisgICAgLy8gSW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3YWtldXAgbWVzc2FnZSBp
bW1lZGlhdGVseSwgd2FpdCBmb3Igc29tZSBhZGRpdGlvbmFsIGRhdGEuIFRoaXMgZ2l2ZXMgdGhl
CisgICAgLy8gd2ViIHByb2Nlc3MgYSAiaGVhZCBzdGFydCIsIGRlY3JlYXNpbmcgdGhlIGxpa2Vs
aWhvb2QgdGhhdCB0aGUgR1BVIHByb2Nlc3Mgd2lsbCBlbmNvdW50ZXIgZnJlcXVlbnQKKyAgICAv
LyB3YWtldXBzIHdoZW4gcHJvY2Vzc2luZyBhIGxhcmdlIGFtb3VudCBvZiBkaXNwbGF5IGxpc3Qg
aXRlbXMuCisgICAgY29uc3RleHByIHVuc2lnbmVkIGl0ZW1Db3VudEh5c3RlcmVzaXNCZWZvcmVT
ZW5kaW5nV2FrZXVwID0gNTEyOworCisgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3Jl
U2VuZGluZ1dha2V1cCA9IGl0ZW1Db3VudEh5c3RlcmVzaXNCZWZvcmVTZW5kaW5nV2FrZXVwOwor
ICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0ge3sKKyAgICAgICAgaGFuZGxl
LmlkZW50aWZpZXIsCisgICAgICAgIHNoYXJlZEhhbmRsZS0+d3JpdGFibGVPZmZzZXQoKSAtIG51
bWJlck9mQnl0ZXMsCisgICAgICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIKKyAgICB9fTsKK30K
KworUmVmUHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmZpbmRSZXVzYWJsZURpc3BsYXlMaXN0SGFuZGxlKHNpemVfdCBjYXBhY2l0eSkKK3sK
KyAgICBpZiAoVU5MSUtFTFkobV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmlzRW1wdHko
KSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBtb3N0UmVjZW50bHlVc2Vk
SWRlbnRpZmllciA9IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5maXJzdCgpOworICAg
IGF1dG8gaGFuZGxlID0gbWFrZVJlZlB0cihtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQo
bW9zdFJlY2VudGx5VXNlZElkZW50aWZpZXIpKTsKKyAgICBoYW5kbGUtPm1vdmVXcml0YWJsZU9m
ZnNldFRvU3RhcnRJZlBvc3NpYmxlKCk7CisgICAgaWYgKGhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNp
dHkoKSA+PSBjYXBhY2l0eSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZTsKKworICAgIG1faWRlbnRp
ZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQobV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5k
bGVzLnRha2VGaXJzdCgpKTsKKworICAgIGF1dG8gbGVhc3RSZWNlbnRseVVzZWRJZGVudGlmaWVy
ID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmZpcnN0KCk7CisgICAgaWYgKGxlYXN0
UmVjZW50bHlVc2VkSWRlbnRpZmllciAhPSBtb3N0UmVjZW50bHlVc2VkSWRlbnRpZmllcikgewor
ICAgICAgICBhdXRvIGhhbmRsZSA9IG1ha2VSZWZQdHIobV9zaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZXMuZ2V0KGxlYXN0UmVjZW50bHlVc2VkSWRlbnRpZmllcikpOworICAgICAgICBpZiAoaGFuZGxl
LT5tb3ZlV3JpdGFibGVPZmZzZXRUb1N0YXJ0SWZQb3NzaWJsZSgpICYmIGhhbmRsZS0+YXZhaWxh
YmxlQ2FwYWNpdHkoKSA+PSBjYXBhY2l0eSkKKyAgICAgICAgICAgIHJldHVybiBoYW5kbGU7Cisg
ICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0Rpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXpl
X3QgY2FwYWNpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZl
cklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaGFuZGxlID0gZmluZFJldXNhYmxlRGlzcGxh
eUxpc3RIYW5kbGUoY2FwYWNpdHkpKQorICAgICAgICByZXR1cm4gaGFuZGxlLT5jcmVhdGVIYW5k
bGUoKTsKKwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTaGFyZWRJdGVtQnVm
ZmVyU2l6ZSA9IDEgPDwgMTY7CiAgICAgc3RhdGljX2Fzc2VydChkZWZhdWx0U2hhcmVkSXRlbUJ1
ZmZlclNpemUgPiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKTsKIApAQCAt
MjY3LDcgKzMxMSw3IEBAIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplCiAgICAgYXV0byBuZXdIYW5k
bGUgPSBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRlKGlkZW50aWZpZXIsIHNoYXJlZE1l
bW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBhdXRvIGRpc3BsYXlMaXN0SGFuZGxlID0gbmV3
SGFuZGxlLT5jcmVhdGVIYW5kbGUoKTsKIAotICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFu
ZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5k
bGVzLnByZXBlbmQoaWRlbnRpZmllcik7CiAgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMu
c2V0KGlkZW50aWZpZXIsIFdURk1vdmUobmV3SGFuZGxlKSk7CiAKICAgICByZXR1cm4gZGlzcGxh
eUxpc3RIYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCAz
NmNlYzkxM2E4ZTAzZmYzMjUwZDVmMWRmOTk5MTc3Mzc0ZTY1NWQ2Li5iZGU4NWE1MTA3NmU1NjMz
OWI0YmQ3ZmU0ZWY4NjY3NjY3Mzk4ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmgKQEAgLTY2LDYgKzY2LDEwIEBAIHB1YmxpYzoKICAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkmIHJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OyB9CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJI
YW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogCisgICAg
dm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaWRD
aGFuZ2VJdGVtQnVmZmVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVz
dGluYXRpb25JbWFnZUJ1ZmZlcik7CisgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgc2VuZERlZmVycmVkV2FrZXVw
TWVzc2FnZUlmTmVlZGVkKCk7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBD
OjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7
CkBAIC03Niw3ICs4MCw2IEBAIHB1YmxpYzoKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50Lgog
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQg
c3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVy
SWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBm
bHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtOTIsMTcg
Kzk1LDI5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKICAg
ICB2b2lkIHJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICB2b2lkIHVwZGF0
ZVJldXNhYmxlSGFuZGxlcygpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCiAg
ICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
CisgICAgUmVmUHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPiBmaW5kUmV1c2FibGVEaXNwbGF5
TGlzdEhhbmRsZShzaXplX3QgY2FwYWNpdHkpOworCisgICAgc3RydWN0IFdha2V1cE1lc3NhZ2VB
cmd1bWVudHMgeworICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIgaXRlbUJ1ZmZlcklkZW50aWZpZXI7CisgICAgICAgIHNpemVfdCBpbml0aWFsT2Zmc2V0
OworICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyOworICAgIH07CisKKyAgICB2b2lkIHNlbmRXYWtldXBNZXNzYWdlKGNvbnN0
IFdha2V1cE1lc3NhZ2VBcmd1bWVudHMmKTsKKwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgSGFzaE1hcDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlz
dFdyaXRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAgIERlcXVlPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09m
UmV1c2FibGVIYW5kbGVzOwotICAgIEhhc2hTZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGlu
ZzsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHsgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBI
YXNoU2V0PFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9pZGVudGlmaWVy
c09mSW1hZ2VCdWZmZXJzUGVuZGluZ0ZsdXNoOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklk
ZW50aWZpZXI7CisgICAgT3B0aW9uYWw8V2FrZXVwTWVzc2FnZUFyZ3VtZW50cz4gbV9kZWZlcnJl
ZFdha2V1cE1lc3NhZ2VBcmd1bWVudHM7CisgICAgdW5zaWduZWQgbV9yZW1haW5pbmdJdGVtc1Rv
QXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDRjNmMzZDk5Y2Y5ODk1Y2Q1MmQ0ZGNjMmYwNDI2YjZlNjk3Y2Y4NWEuLjI3MDJlM2E4M2ZhNTM4
YzExYWZmMjk5MGM4M2Y4NzY0YmQ2N2I4ZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0xMi0wNCAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29uY3VycmVudCBk
aXNwbGF5IGxpc3RzXSBTeW5jaHJvbml6ZSBkaXNwbGF5IGxpc3QgcmVuZGVyaW5nIGFjcm9zcyBy
ZW1vdGUgaW1hZ2UgYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5MDkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc0NzY5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTEyLTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gVXNlIGNvbnRyaWJ1dG9ycy5qc29u
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxp
c3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxp
c3RUZXN0cy5jcHAKaW5kZXggZWJkODZlMzJlMDYyY2FkZjZhOWIwMWFlZGNjNzdhZDhmNmUyNDU0
My4uZjcwMGM1NjI5ZjYwNmU1YzI2ZGYxNmIyMGJiMWRlYTk1NGU4MDdhNSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNw
cApAQCAtMTczLDcgKzE3Myw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNs
aWVudCkKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8SXRlbUhh
bmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9u
KQorICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2Rl
SXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlw
ZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAg
IEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6U3Ryb2tlUGF0aCk7CiAgICAgICAgICAgICBFWFBF
Q1RfRVEoZGF0YUxlbmd0aCwgc2l6ZW9mKHNpemVfdCkpOwpAQCAtMjA1LDYgKzIwNSw4IEBAIFRF
U1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmaW5kZXgp
LCBzaXplb2Yoc2l6ZV90KSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGRpZEFwcGVuZERh
dGEoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCwgRGlkQ2hhbmdlSXRlbUJ1ZmZlcikg
ZmluYWwgeyB9CisKICAgICAgICAgVmVjdG9yPFN0cm9rZVBhdGg+JiBtX2l0ZW1zOwogICAgIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415469</attachid>
            <date>2020-12-04 15:46:03 -0800</date>
            <delta_ts>2020-12-04 16:48:09 -0800</delta_ts>
            <desc>v2 (rebase on trunk)</desc>
            <filename>bug-219091-20201204154603.patch</filename>
            <type>text/plain</type>
            <size>66528</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZjNjVmNzkxMGM5ZDFl
NjQ3NDA1YTlmZmYyMWMyMmY2Y2YyMzlmNC4uODRhNDYzYjk4YTdlM2Q2YjhkMTIwYjBkNTM1Mzcw
MzVkODBkMDkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTEyLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFN5bmNocm9uaXplIGRpc3BsYXkgbGlzdCByZW5kZXJpbmcgYWNyb3Nz
IHJlbW90ZSBpbWFnZSBidWZmZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTkwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNzQ3Njk1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlOjpjb3B5VG8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKToKKworICAgICAg
ICBBZGQgcGx1bWJpbmcgc28gdGhhdCBgZGlkQXBwZW5kRGF0YWAgY2FuIGluZm9ybSB0aGUgY2xp
ZW50IHdoZXRoZXIgdGhlIGRhdGEgd2FzIGFwcGVuZGVkIGFmdGVyIHN3aXRjaGluZyB0byBhCisg
ICAgICAgIG5ldyBidWZmZXIuIEluIFdlYktpdDIncyByZW1vdGUgaW1hZ2UgYnVmZmVyLCB3ZSB1
c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UgbmVlZCB0
bworICAgICAgICBzZW5kIGEgd2FrZXVwIG1lc3NhZ2UgdG8gdGhlIEdQVSBwcm9jZXNzLiBOYW1l
bHksIGluIHRoZSBjYXNlIG9mIGBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpZZXNgLCB3ZSBkb24ndCBu
ZWVkIHRvCisgICAgICAgIHdha2UgdXAgdGhlIEdQVSBwcm9jZXNzIGV2ZW4gdGhvdWdoIHRoZSB1
bnJlYWQgYnl0ZXMgY291bnQgd2FzIDAgYmVmb3JlIHdlIGFkdmFuY2VkLCBzaW5jZSB0aGUgR1BV
IHByb2Nlc3Mgd2lsbAorICAgICAgICBhdXRvbWF0aWNhbGx5IHByb2dyZXNzIHRvIHRoaXMgaXRl
bSBidWZmZXIgd2hlbiBpdCdzIGRvbmUgcHJvY2Vzc2luZyBpdGVtcyBpbiB0aGUgcHJldmlvdXMg
aXRlbSBidWZmZXIuCisKKyAgICAgICAgU2VlIFdlYktpdCBjaGFuZ2VzIChpbiBgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eWApIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXI6OmRpZEFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZEVuY29kZWREYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
Lmg6CisKKyAgICAgICAgQWRkIGEgbmV3IGBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudGAgbWV0aG9k
IHRvIGluZm9ybSBjbGllbnRzIHdoZW4gbmV3IGJ5dGVzIGFyZSBhcHBlbmRlZCB0byBhbiBpdGVt
IGJ1ZmZlciwKKyAgICAgICAgZ2l2ZW4gdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGJ5dGVzIGFk
ZGVkIGFuZCB0aGUgaXRlbSBidWZmZXIgaGFuZGxlLgorCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVyOjp1bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpzaXplT2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6aXNJbmxpbmVJdGVtKToKKworICAgICAgICBSZW1vdmUgTWV0YUNvbW1hbmRFbmQuIEkg
aW50cm9kdWNlZCB0aGlzIGl0ZW0gdHlwZSBiZWNhdXNlIEkgd2FzIGdvaW5nIHRvIG1ha2UgdGhl
IEdQVSBwcm9jZXNzIGFsd2F5cyBzbGVlcCBmb3IKKyAgICAgICAgbW9yZSBkaXNwbGF5IGxpc3Qg
aXRlbSBkYXRhLCBidXQgSSd2ZSBzaW5jZSBjaGFuZ2VkIHRoZSBhcHByb2FjaCBzbyB0aGF0IHRo
ZSBHUFUgcHJvY2VzcyBnb2VzIHRvIHNsZWVwIG5hdHVyYWxseQorICAgICAgICB3aGVuIGl0J3Mg
ZG9uZSBwcm9jZXNzaW5nIGFsbCB1bnJlYWQgYnl0ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZsdXNoQ29udGV4dCk6CisKKyAg
ICAgICAgQWRkIGEgbmV3IGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEgYEZsdXNoQ29udGV4dGAg
aXRlbSB2aWEgdGhlIGRpc3BsYXkgbGlzdCByZWNvcmRlciwgdG8gZW5zdXJlIHRoYXQgdGhlCisg
ICAgICAgIGFwcHJvcHJpYXRlIHJlY29yZGVyIGRlbGVnYXRlIG1ldGhvZHMgYXJlIGludm9rZWQg
d2hlbiBhcHBlbmRpbmcgYSAiZmx1c2ggY29udGV4dCIgaXRlbS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorCiAy
MDIwLTEyLTA0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gQWRvcHQgQVZPdXRwdXREZXZpY2UuYWxsb3dzSGVhZFRyYWNrZWRTcGF0aWFsQXVkaW8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZjNmYWJjMmY0NzhlNDFhMGE1M2EyNjZjMDk0NjUxYWUwYTllNTAwZi4uYTU5
MjNiZDE3Y2M0MDNjMWEwMWUwODMxNTg1ZjVlYzExYjQ0MzczYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNjggQEAKKzIwMjAtMTItMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gU3luY2hyb25pemUgZGlz
cGxheSBsaXN0IHJlbmRlcmluZyBhY3Jvc3MgcmVtb3RlIGltYWdlIGJ1ZmZlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTA5MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzE3NDc2OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JzIHRoZSBleGlzdGluZyBjb25jdXJyZW50IGRpc3Bs
YXkgbGlzdCBwcm9jZXNzaW5nIG1lY2hhbmlzbSwgc3VjaCB0aGF0IHdlIG5vIGxvbmdlciB1cGRh
dGUgdGhlIHVucmVhZAorICAgICAgICBieXRlcyBjb3VudCBldmVyeSA1MTIgaXRlbXMgKG9yIHdo
ZW4gZmx1c2hpbmcgdGhlIGRyYXdpbmcgY29udGV4dCksIGFuZCBpbnN0ZWFkIHVwZGF0ZSBpdCBl
dmVyeSB0aW1lIHdlIGFwcGVuZAorICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLiBJbiBv
cmRlciB0byBhY2hpZXZlIHRoaXMgd2l0aG91dCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IgbXVs
dGlwbGUgZGlzcGxheS1saXN0IGJhY2tlZAorICAgICAgICBpbWFnZSBidWZmZXJzIHRvIHJlbmRl
ciBzaW11bHRhbmVvdXNseSwgd2UgYWxzbyBhZGQgc3VwcG9ydCBmb3Igc3luY2hyb25pemluZyBk
aXNwbGF5IGxpc3QgaXRlbXMgYWNyb3NzCisgICAgICAgIGRpZmZlcmVudCBpbWFnZSBidWZmZXJz
IGJ5IHVzaW5nIHRoZSBuZXcgbWV0YSBjb21tYW5kIGl0ZW1zIGFkZGVkIGluIGJ1ZyAjMjE5MjYy
LiBBcyBkZXRhaWxlZCBpbiB0aGUgQ2hhbmdlTG9nCisgICAgICAgIGZvciB0aGF0IGJ1ZywgYSBz
dHJlYW0gb2YgZGlzcGxheSBsaXN0IGRhdGEgd3JpdHRlbiBieSB0aGUgd2ViIHByb2Nlc3MgYW5k
IGNvbnN1bWVkIGJ5IHRoZSBHUFUgcHJvY2VzcyBpcyBub3cKKyAgICAgICAgc3RydWN0dXJlZCBs
aWtlIHNvOgorCisgICAgICAgIFdha2V1cCBtZXNzYWdlIGluaXRpYXRlcyBkaXNwbGF5IGxpc3Qg
cHJvY2Vzc2luZyB3aXRoIEltYWdlIEJ1ZmZlciBBIGFuZCBJdGVtIEJ1ZmZlciAxCisgICAgICAg
ICAgICB8CisgICAgICAgICAgICB8ICAgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdl
QnVmZmVyKEIpCisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgTWV0YUNvbW1h
bmRDaGFuZ2VJdGVtQnVmZmVyKDIpCisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2CisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rKworICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0t
LS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICAgIHwg
fCBEZXN0aW5hdGlvbiAgICAgICAgfCB8IERlc3RpbmF0aW9uICAgICAgICAgICAgICAgICAgfCB8
IEl0ZW0gQnVmZmVyIDEKKyAgICAgICAgICAgIHwgfCBJbWFnZSBCdWZmZXIgQSAgICAgfCB8IElt
YWdlIEJ1ZmZlciBCICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICB8ICstLS0tLS0tLS0t
LS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAorICAgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKworICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tKyAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IHwg
RHN0LiBJbWFnZSAgIHwgfCBEZXN0aW5hdGlvbiBJbWFnZSAgICAgfCAgVW51c2VkICAgICAgfCBJ
dGVtIEJ1ZmZlciAyCisgICAgICAgICAgICB8IHwgQnVmZmVyIEIgICAgIHwgfCBCdWZmZXIgQSAg
ICAgICAgICAgICAgfCAgQ2FwYWNpdHkgICAgfAorICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0t
LS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwKKyAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAg
ICBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoQSkKKworICAgICAgICAo
Tm90ZSB0aGF0IHRoZSBgTWV0YUNvbW1hbmRFbmRgIGl0ZW0gaGFzIGJlZW4gb21pdHRlZCwgc2lu
Y2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZXhwbGljaXRseSB0ZWxsIHRoZSBHUFUKKyAgICAgICAg
cHJvY2VzcyB0byBnbyB0byBzbGVlcCB3aXRoIHRoZSBsYXRlc3QgaXRlcmF0aW9uIG9mIHRoaXMg
cGF0Y2gpLgorCisgICAgICAgIEluIG9yZGVyIHRvIHdyaXRlIGRpc3BsYXkgbGlzdCBkYXRhIGNv
bmZvcm1pbmcgdG8gdGhpcyBmb3JtYXQsIHdlIGFkZCBhIG1lY2hhbmlzbSB0byB0aGUgd2ViIHBy
b2Nlc3MgdGhhdCBrZWVwcworICAgICAgICB0cmFjayBvZiB0aGUgImN1cnJlbnQgZGVzdGluYXRp
b24gaW1hZ2UgYnVmZmVyIiAoaS5lLiB0aGUgaW1hZ2UgYnVmZmVyIHRoYXQgaGFzIG1vc3QgcmVj
ZW50bHkKKyAgICAgICAgYXBwZW5kZWQgYSBkaXNwbGF5IGxpc3QgaXRlbSkuIFJpZ2h0IGJlZm9y
ZSB0aGlzIGRlc3RpbmF0aW9uIGlzIGFib3V0IHRvIGNoYW5nZSwgd2UgYXBwZW5kIGEgbmV3Cisg
ICAgICAgIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXJgIGl0ZW0gYmVm
b3JlIHByb2NlZWRpbmcgdG8gYXBwZW5kIGRpc3BsYXkgbGlzdCBpdGVtcyBmb3IgdGhlIG5ldwor
ICAgICAgICBjdXJyZW50IGRlc3RpbmF0aW9uLgorCisgICAgICAgIFNpbmNlIHdlIG5vdyBidW1w
IHRoZSB1bnJlYWQgY291bnQgZXZlcnkgdGltZSwgd2UgbmVlZCB0byBkbyBzb21lIGFkZGl0aW9u
YWwgd29yayB0byBhdm9pZCBhbiBleGNlc3NpdmUgbnVtYmVyCisgICAgICAgIG9mIHdha2V1cHMg
YW5kIHNsZWVwcyBpbiB0aGUgR1BVIHByb2Nlc3MsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBjYXVz
ZSBhIG1hc3NpdmUgcmVncmVzc2lvbi4gVG8gZG8gdGhpcywgd2UKKyAgICAgICAgaW50cm9kdWNl
IGFuIGl0ZW0gY291bnQgaHlzdGVyZXNpcyBpbiB0aGUgd2ViIHByb2Nlc3MsIHN1Y2ggdGhhdCB3
ZSB3aWxsIHdhaXQgZm9yIDUxMiBpdGVtcyB0byBiZSB3cml0dGVuIGJlZm9yZQorICAgICAgICBh
dHRlbXB0aW5nIHRvIHNlbmQgdGhlIHdha2V1cCBtZXNzYWdlLiBUaGlzIGFsbG93cyB0aGUgd2Vi
IHByb2Nlc3MgdG8gZ2V0IGEgc21hbGwgaGVhZCBzdGFydCBvdmVyIHRoZSBHUFUKKyAgICAgICAg
cHJvY2VzcywgYW5kIHRodXMgYWxsb3dzIHRoZSBHUFUgcHJvY2VzcyB0byBiZSBtb3JlIGNvbnNp
c3RlbnRseSBidXN5IG92ZXIgdGhlIGNvdXJzZSBvZiBhIHNpbmdsZSBmcmFtZS4KKworICAgICAg
ICBPbiB0aGUgcmVhZGVyIChHUFUgcHJvY2Vzcykgc2lkZSwgd2UgbWFrZSBzb21lIG1pbm9yIGFk
anVzdG1lbnRzIHNvIHRoYXQgdGhlIG1haW4gZGlzcGxheSBsaXN0IHByb2Nlc3NpbmcgbG9vcAor
ICAgICAgICBvZiB0aGUgR1BVIHByb2Nlc3MgaXMgY2FwYWJsZSBvZiBjaGFuZ2luZyBkZXN0aW5h
dGlvbiBpbWFnZSBidWZmZXJzIHdoaWxlIHByb2Nlc3NpbmcgYSBzdHJlYW0gb2YgZGlzcGxheSBs
aXN0CisgICAgICAgIGl0ZW1zLgorCisgICAgICAgIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjphZHZhbmNl
KToKKworICAgICAgICBVcGRhdGUgYGFkdmFuY2VgIHNvIHRoYXQgaXQganVzdCBwZXJmb3JtcyBh
IHNpbmdsZSA4LWJ5dGUgYXRvbWljIGBleGNoYW5nZVN1YmAgcmF0aGVyIHRoYW4gZ3JhYmJpbmcg
YSBzcGlubG9jay4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnN1Ym1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHRE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyk6CisKKyAgICAg
ICAgUmVuYW1lIGBhcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGVgIHRvIGBuZXh0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHNgLCBhbmQgbWFrZSBpdAorICAg
ICAgICByZXR1cm4gdGhlIGN1cnJlbnQgaW1hZ2UgYnVmZmVyIHRvIHVzZSBhcyB0aGUgZGVzdGlu
YXRpb24gZm9yIHJlcGxheWluZyBkaXNwbGF5IGxpc3QgY29tbWFuZHMuIFRoaXMgaGVscGVyIGlz
CisgICAgICAgIHN0aWxsIHJlc3BvbnNpYmxlIGZvciByZXBsYXlpbmcgYSBkaXNwbGF5IGxpc3Qg
aXRlbSBidWZmZXIgdW50aWwgaXQgaGFzIG5vIG1vcmUgZGF0YSAodGhhdCBpcywgdW50aWwgd2UK
KyAgICAgICAgZW5jb3VudGVyIGEgYE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcmAgaXRlbSBp
bmZvcm1pbmcgdXMgb2YgdGhlIG5leHQgaXRlbSBidWZmZXIgdG8gY29uc3VtZSkuCisKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5
TGlzdCk6CisKKyAgICAgICAgQWRqdXN0IHRoaXMgdG8gY2FsbCBgbmV4dERlc3RpbmF0aW9uSW1h
Z2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzYC4KKworICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDoKKworICAgICAg
ICBSZW1vdmUgYFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrYCBhbHRvZ2V0aGVyLCBub3cg
dGhhdCB3ZSBqdXN0IGhhdmUgYSBzaW5nbGUgYXRvbWljIGB1aW50NjRfdGAgY291bnRlciB0bwor
ICAgICAgICByZXByZXNlbnQgdGhlIG51bWJlciBvZiB1bnJlYWQgYnl0ZXMuCisKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnVucmVhZEJ5dGVzKToKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2s6OkxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jazo6fkxvY2spOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6
OmFkdmFuY2UpOgorCisgICAgICAgIE1ha2UgdGhpcyB1c2UgdGhlIHNpbmdsZSBhdG9taWMgY291
bnRlciwgaW5zdGVhZCBvZiBncmFiYmluZyBhIHNwaW5sb2NrLgorCisgICAgICAgIChXZWJLaXQ6
OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjptb3ZlV3JpdGFibGVPZmZzZXRUb1N0YXJ0SWZQb3Nz
aWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpyZXNldFdy
aXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIGByZXNl
dFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZWAgdG8gdGhlIG1vcmUgYWNjdXJhdGUgYG1vdmVXcml0
YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlYC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKToK
KworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIGFwcGVuZCBhIGBNZXRhQ29tbWFuZENo
YW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXJgIGl0ZW0gdG8gdGhlIGRpc3BsYXkgbGlzdCwgZ2l2
ZW4gdGhlCisgICAgICAgIGlkZW50aWZpZXIgb2YgdGhpcyBuZXh0IGl0ZW0gYnVmZmVyLgorCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNsZWFyRGlzcGxheUxpc3Qp
OgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2QgdG8gY2xlYXIgdGhlIGRpc3BsYXkgbGlz
dCwgc3VjaCB0aGF0IHRoZSBgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eWAgd2lsbCBiZSBhc2tlZCBm
b3IgYSBuZXcKKyAgICAgICAgYnVmZmVyIGhhbmRsZSB0aGUgbmV4dCB0aW1lIHdlIGFwcGVuZCBh
biBpdGVtLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OndhaXRG
b3JEaWRGbHVzaFdpdGhUaW1lb3V0KToKKworICAgICAgICBNYWtlIHRoaXMgaGl0IHRoZSBtYXhp
bXVtIGB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseWAgYXR0ZW1wdCBjb3VudCBhbmQgImZh
aWwiIG9ubHkgaWYgdGhlIGNhbGwgdG8KKyAgICAgICAgYHdhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5YCBhY3R1YWxseSB0aW1lcyBvdXQuIFRoaXMgY2hhbmdlIGlzIG5lY2Vzc2FyeSB0byBl
bnN1cmUgdGhhdCB0aGUgc2NlbmFyaW8gb2YKKyAgICAgICAgbXVsdGlwbGUgaW1hZ2UgYnVmZmVy
cyBzaW11bHRhbmVvdXNseSBhcHBlbmRpbmcgZGlzcGxheSBsaXN0IGl0ZW1zIHdvcmtzIHdoZW4g
YWxsIGltYWdlIGJ1ZmZlcnMgcGVyZm9ybSAobm9uLQorICAgICAgICBibG9ja2luZykgZmx1c2hl
cyBzaW11bHRhbmVvdXNseSwgZm9sbG93ZWQgYnkgYSBzeW5jLXdhaXQgKGJsb2NraW5nKSBmbHVz
aC4gSW4gdGhpcyBzaXR1YXRpb24sIHRoZSB3ZWIgcHJvY2VzcworICAgICAgICBtYXkgcmVjZWl2
ZSBtb3JlIHRoYW4gdGhyZWUgYERpZEZsdXNoYCBtZXNzYWdlcyBpbiByYXBpZCBzdWNjZXNzaW9u
LCBjYXVzaW5nIGl0IHRvIGhpdCB0aGlzIG1heGltdW0gbGltaXQgb2YgMworICAgICAgICBpbnN0
YW50bHkgYW5kIGF2b2lkIHdhaXRpbmcgZm9yIHRoZSBleHBlY3RlZCBgRGlkRmx1c2hgIG1lc3Nh
Z2UgdG8gYXJyaXZlLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6
OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xv
c2UpOgorCisgICAgICAgIFJlc2V0IHN0YXRlIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIHRlcm1p
bmF0ZWQuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3
aWxsQXBwZW5kSXRlbSk6CisKKyAgICAgICAgVXBkYXRlIHRoZSBjdXJyZW50IGRlc3RpbmF0aW9u
IGltYWdlIGJ1ZmZlciAoYG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVy
YCkuIElmIHRoaXMgaWRlbnRpZmllcgorICAgICAgICBjaGFuZ2VkLCB0aGVuIHdlIGFwcGVuZCBh
IGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXJgIGl0ZW0gdG8gdGhlIHBy
ZXZpb3VzIGRlc3RpbmF0aW9uIGJlZm9yZQorICAgICAgICBzZXR0aW5nIHRoZSBuZXcgZGVzdGlu
YXRpb24gaW1hZ2UgYnVmZmVyLiBXZSBhbHNvIG5lZWQgdG8gY2xlYXIgdGhlIG5ldyBkZXN0aW5h
dGlvbiBpbWFnZSBidWZmZXIncyBkaXNwbGF5IGxpc3QKKyAgICAgICAgYmVmb3JlIHdyaXRpbmcg
bmV3IGl0ZW1zLCB0byBwcmV2ZW50IGl0IGZyb20gb3ZlcndyaXRpbmcgc2hhcmVkIGRpc3BsYXkg
bGlzdCBpdGVtIGRhdGEuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpzZW5kV2FrZXVwTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6c2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRh
KToKKworICAgICAgICBJbXBsZW1lbnQgYSBuZXcgYEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50YCBo
b29rIGJ5IGFkdmFuY2luZyB0aGUgY29ycmVzcG9uZGluZyBpdGVtIGJ1ZmZlcidzIHVucmVhZCBj
b3VudC4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBzY2hlZHVsZSBhIHdha2V1cCBtZXNzYWdlIGlu
IHRoZSBjYXNlIHdoZXJlIHRoZSB1bnJlYWQgY291bnQgd2FzIHplcm8gd2hlbiB3ZSBhZHZhbmNl
ZCwgYW5kIHRoZQorICAgICAgICBpdGVtIGJ1ZmZlciB3ZSd2ZSBhcHBlbmRlZCB0byBpcyBub3Qg
ImNvbm5lY3RlZCIgdG8gYSBwcmV2aW91cyBpdGVtIGJ1ZmZlciBieSB3YXkgb2YgYW4gaXRlbSBi
dWZmZXIgY2hhbmdlIGl0ZW0uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBpbiB0aGUgY2FzZSB3
aGVyZSB3ZSBkb24ndCBzY2hlZHVsZSBhIG5ldyB3YWtldXAgbWVzc2FnZSwgY2hlY2sgd2hldGhl
ciBvciBub3QgdGhlcmUgaXMgYSBkZWZlcnJlZAorICAgICAgICB3YWtldXAgbWVzc2FnZTsgaWYg
dGhlcmUgaXMsIHRoZW4gZGVjcmVtZW50IHRoZSByZW1haW5pbmcgaXRlbSBjb3VudCBiZWZvcmUg
d2Ugc2VuZCB0aGUgd2FrZXVwIG1lc3NhZ2UsIGFuZCBzZW5kCisgICAgICAgIHRoZSBtZXNzYWdl
IGlmIHRoZSBjb3VudCByZWFjaGVzIDAuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpmaW5kUmV1c2FibGVEaXNwbGF5TGlzdEhhbmRsZSk6CisKKyAgICAg
ICAgUHVsbCBsb2dpYyB0byBmaW5kIGEgc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5kbGUgc3VpdGFi
bGUgZm9yIHJldXNlIGludG8gYSBzZXBhcmF0ZSBoZWxwZXIgbWV0aG9kLCBhbmQgYWRqdXN0IGl0
CisgICAgICAgIHNvIHRoYXQgaWYgdGhlIG1vc3QgcmVjZW50bHkgdXNlZCBkaXNwbGF5IGxpc3Qg
aGFuZGxlIGhhcyBydW4gb3V0IG9mIGF2YWlsYWJsZSBjYXBhY2l0eSwgd2UgbW92ZSBpdCB0byB0
aGUgZW5kCisgICAgICAgIG9mIHRoZSByZXVzZSBxdWV1ZSBhbmQgb25seSByZXVzZSB0aGUgbmV3
IGZpcnN0IHNoYXJlZCBoYW5kbGUgaW4gdGhlIHF1ZXVlIGlmIGl0cyB3cml0YWJsZSBvZmZzZXQg
Y2FuIGJlIHJlc2V0LgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgR1BVIHByb2Nlc3Mg
Y2FuIGFsd2F5cyBjb250aW51ZSByZWFkaW5nIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEgZnJvbSB0
aGUgc3RhcnQgb2YgbmV3IGl0ZW0KKyAgICAgICAgYnVmZmVycyAtLSBpLmUuLCB3ZSBkb24ndCBl
bmQgdXAgd2l0aCB0aGUgd2ViIHByb2Nlc3Mgd3JpdGluZyBvdXQgYSBzdHJlYW0gb2YgZGlzcGxh
eSBsaXN0IGRhdGEgbGlrZToKKworICAgICAgICAgICAoU3RhcnQpIEJ5dGVzICgxNiwgNjU1MjAp
IGluIEl0ZW1CdWZmZXJbMV0KKyAgICAgICAgICAgICAgICAgICBCeXRlcyAoMTYsIDY1NTM2KSBp
biBJdGVtQnVmZmVyWzJdCisgICAgICAgICAgICAgICAgICAgQnl0ZXMgKDY1NTIwLCA2NTUzNikg
aW4gSXRlbUJ1ZmZlclsxXQorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0ZVJldXNhYmxlSGFuZGxl
cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lmg6CisKIDIwMjAtMTItMDQgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBZG9wdCBBVk91dHB1dERldmljZS5hbGxv
d3NIZWFkVHJhY2tlZFNwYXRpYWxBdWRpbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggOThiMjJlZThhZTA3ODQyNTlhNDZjYmIxZmIyZjRi
ZTAyZjEyMDhiZS4uMjQ3OGQ5YjcyNTVjMDA1OTdhYTUwNWMzZWFiNzJjYWE0ZDA5NjRmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC03
OSw5ICs3OSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHByZWZlcnNQcmVwYXJhdGlv
bkZvckRpc3BsYXkoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBmbHVzaERy
YXdpbmdDb250ZXh0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3Qg
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZsdXNo
KERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGNo
YW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJEaXNwbGF5TGlzdCgpIHsgfQorCiAgICAgdmlydHVh
bCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggODEyMDRkZjA4
N2U2NTU4ZWFlN2U0ZDQwMThjNjU1YjU4ZTJhNThhNi4uNTFlNzllMGM3ZjU0NGMzY2Y3NDU0OTdi
ZDA4NzJlZWMyZGM4ZjcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0yODIsOCAr
MjgyLDYgQEAgdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkKICAgICAg
ICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+
KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgogICAgICAgICBy
ZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFu
ZEVuZDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZEVuZD4oaXRlbS5nZXQ8TWV0
YUNvbW1hbmRFbmQ+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKICAgICAg
ICAgcmV0dXJuIGFwcGVuZDxQdXRJbWFnZURhdGE+KGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4oKSk7
CiAgICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjZTZiMGU5YjE4YmRjN2FhYjM4NDRk
ODczNjYzNjg5MjM5NDBlMjI4Li5jMDQwZTk4ZDk4YzExNmVhZjI4NmE1MWRmM2E3N2Q1ZTBmODE4
MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAt
MjI4LDcgKzIyOCw2IEBAIHZvaWQgSXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kRW5kOgogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB7CiAgICAgICAgIGdldDxQ
dXRJbWFnZURhdGE+KCkuYXBwbHkoY29udGV4dCk7CkBAIC00NjQsMTAgKzQ2Myw2IEBAIHZvaWQg
SXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj46OnZhbHVlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVu
ZDogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxNZXRhQ29tbWFuZEVuZD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBj
YXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHsKICAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8UGFpbnRGcmFtZUZvck1lZGlhPjo6dmFs
dWUpOwogICAgICAgICByZXR1cm47CkBAIC03MjMsMTAgKzcxOCw2IEBAIHZvaWQgSXRlbUhhbmRs
ZTo6Y29weVRvKEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKGdldDxNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXI+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6Ok1ldGFDb21tYW5kRW5kOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgTWV0YUNvbW1h
bmRFbmQoZ2V0PE1ldGFDb21tYW5kRW5kPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAg
ICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHsKICAgICAgICAgbmV3IChpdGVt
T2Zmc2V0KSBQYWludEZyYW1lRm9yTWVkaWEoZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTg3NiwyNSArODY3LDI1IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6Y2xl
YXIoKQogICAgIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgPSAwOwogfQogCi12b2lkIEl0ZW1CdWZm
ZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQorRGlk
Q2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChz
aXplX3QgbnVtYmVyT2ZCeXRlcykKIHsKICAgICBhdXRvIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVt
ID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXIpOwogICAgIGlmIChtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICsgbnVtYmVy
T2ZCeXRlcyArIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVtIDw9IG1fd3JpdGFibGVCdWZmZXIuY2Fw
YWNpdHkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIERpZENoYW5nZUl0ZW1CdWZm
ZXI6Ok5vOwogCiAgICAgYXV0byBuZXh0QnVmZmVyID0gY3JlYXRlSXRlbUJ1ZmZlcihudW1iZXJP
ZkJ5dGVzICsgc2l6ZUZvckJ1ZmZlclN3aXRjaEl0ZW0pOwotICAgIGJvb2wgaGFkUHJldmlvdXNC
dWZmZXIgPSBtX3dyaXRhYmxlQnVmZmVyOwotICAgIGlmIChoYWRQcmV2aW91c0J1ZmZlcikKLSAg
ICAgICAgdW5jaGVja2VkQXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4obmV4dEJ1
ZmZlci5pZGVudGlmaWVyKTsKLSAgICBhdXRvIHByZXZpb3VzQnVmZmVyID0gc3RkOjpleGNoYW5n
ZShtX3dyaXRhYmxlQnVmZmVyLCB7IH0pOwotICAgIHByZXZpb3VzQnVmZmVyLmNhcGFjaXR5ID0g
c3RkOjpleGNoYW5nZShtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzLCAwKTsKLSAgICBpZiAoaGFkUHJl
dmlvdXNCdWZmZXIpCi0gICAgICAgIG1fcmVhZE9ubHlCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKHBy
ZXZpb3VzQnVmZmVyKSk7Ci0KKyAgICBib29sIGhhZFByZXZpb3VzQnVmZmVyID0gbV93cml0YWJs
ZUJ1ZmZlciAmJiBtX3dyaXRhYmxlQnVmZmVyLmlkZW50aWZpZXIgIT0gbmV4dEJ1ZmZlci5pZGVu
dGlmaWVyOworICAgIGlmIChoYWRQcmV2aW91c0J1ZmZlcikgeworICAgICAgICB1bmNoZWNrZWRB
cHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPihEaWRDaGFuZ2VJdGVtQnVmZmVyOjpO
bywgbmV4dEJ1ZmZlci5pZGVudGlmaWVyKTsKKyAgICAgICAgbV93cml0YWJsZUJ1ZmZlci5jYXBh
Y2l0eSA9IG1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CisgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJz
LmFwcGVuZChtX3dyaXRhYmxlQnVmZmVyKTsKKyAgICB9CisgICAgbV93cml0dGVuTnVtYmVyT2ZC
eXRlcyA9IDA7CiAgICAgbV93cml0YWJsZUJ1ZmZlciA9IFdURk1vdmUobmV4dEJ1ZmZlcik7Cisg
ICAgcmV0dXJuIGhhZFByZXZpb3VzQnVmZmVyID8gRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6WWVzIDog
RGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6Tm87CiB9CiAKLXZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kRW5j
b2RlZERhdGEoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQordm9pZCBJdGVtQnVmZmVyOjphcHBl
bmQoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1dG8gZGF0YSA9IG1fd3JpdGlu
Z0NsaWVudC0+ZW5jb2RlSXRlbSh0ZW1wb3JhcnlJdGVtKTsKICAgICBpZiAoIWRhdGEpCkBAIC05
MDMsMTMgKzg5NCwyMCBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZEVuY29kZWREYXRhKEl0ZW1I
YW5kbGUgdGVtcG9yYXJ5SXRlbSkKICAgICBhdXRvIGRhdGFMZW5ndGggPSBkYXRhLT5zaXplKCk7
CiAgICAgYXV0byBhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbSA9IDIgKiBzaXplb2Yo
dWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxl
bmd0aCk7CiAKLSAgICBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2FwYWNp
dHlGb3JFbmNvZGVkSXRlbSk7CisgICAgYXV0byBidWZmZXJDaGFuZ2VkID0gc3dhcFdyaXRhYmxl
QnVmZmVySWZOZWVkZWQoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0pOwogCiAgICAg
bV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4odGVtcG9yYXJ5SXRlbS50eXBlKCkpOwogICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVz
KVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1f
d3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwgZGF0YS0+ZGF0YUFz
VUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKLSAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9
IGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtOworICAgIGRpZEFwcGVuZERhdGEoYWRk
aXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1ZmZlckNoYW5nZWQpOworfQorCit2b2lk
IEl0ZW1CdWZmZXI6OmRpZEFwcGVuZERhdGEoc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5n
ZUl0ZW1CdWZmZXIgZGlkQ2hhbmdlSXRlbUJ1ZmZlcikKK3sKKyAgICBtX3dyaXR0ZW5OdW1iZXJP
ZkJ5dGVzICs9IG51bWJlck9mQnl0ZXM7CisgICAgaWYgKG1fd3JpdGluZ0NsaWVudCkKKyAgICAg
ICAgbV93cml0aW5nQ2xpZW50LT5kaWRBcHBlbmREYXRhKG1fd3JpdGFibGVCdWZmZXIsIG51bWJl
ck9mQnl0ZXMsIGRpZENoYW5nZUl0ZW1CdWZmZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGMx
MGNjM2U1MmEyMGFiNWVjMDJhNTYwNmNmYzg0OTMxZmYyMTI4NmYuLjZjZTNiNWVjYzQwYjc5NDRk
MjdkMzQ4MTgxNjk5ZGE4MDFmYzQwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmgKQEAgLTgzLDEyICs4MywxNSBAQCBzdHJ1Y3QgSXRlbUhhbmRsZSB7CiAgICAg
dm9pZCBjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3Q7CiB9OwogCitlbnVtIGNs
YXNzIERpZENoYW5nZUl0ZW1CdWZmZXIgOiBib29sIHsgTm8sIFllcyB9OworCiBjbGFzcyBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SXRlbUJ1ZmZlcldy
aXRpbmdDbGllbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJ
dGVtQnVmZmVyKHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZW5jb2RlSXRlbShJdGVtSGFuZGxlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEFw
cGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCBudW1iZXJPZkJ5dGVzLCBE
aWRDaGFuZ2VJdGVtQnVmZmVyKSA9IDA7CiB9OwogCiBjbGFzcyBJdGVtQnVmZmVyUmVhZGluZ0Ns
aWVudCB7CkBAIC0xNTIsMTcgKzE1NSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGF0aWMg
dWludDhfdCB0ZW1wb3JhcnlJdGVtQnVmZmVyW3NpemVvZih1aW50NjRfdCkgKyBzaXplb2YoVCld
OwogICAgICAgICAgICAgdGVtcG9yYXJ5SXRlbUJ1ZmZlclswXSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgICAgIG5ldyAodGVtcG9yYXJ5SXRlbUJ1ZmZlciAr
IHNpemVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAg
ICAgICAgIGFwcGVuZEVuY29kZWREYXRhKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKKyAgICAg
ICAgICAgIGFwcGVuZCh7IHRlbXBvcmFyeUl0ZW1CdWZmZXIgfSk7CiAgICAgICAgICAgICBJdGVt
SGFuZGxlIHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9LmRlc3Ryb3koKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHBh
ZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSkpOworICAgICAgICBhdXRv
IGJ1ZmZlckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpKTsKIAogICAgICAgICBpZiAoIXN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpCiAgICAgICAgICAgICBtX2l0ZW1zVG9E
ZXN0cm95SW5BbGxvY2F0ZWRCdWZmZXJzLmFwcGVuZCh7ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFb
bV93cml0dGVuTnVtYmVyT2ZCeXRlc10gfSk7CiAKLSAgICAgICAgdW5jaGVja2VkQXBwZW5kPFQ+
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgIHVuY2hlY2tlZEFwcGVuZDxU
PihidWZmZXJDaGFuZ2VkLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgIH0KIAog
ICAgIHZvaWQgc2V0Q2xpZW50KEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50KiBjbGllbnQpIHsgbV93
cml0aW5nQ2xpZW50ID0gY2xpZW50OyB9CkBAIC0xNzEsMTUgKzE3NCwxNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGVzJiByZWFkT25seUJ1ZmZlcnMoKSBj
b25zdCB7IHJldHVybiBtX3JlYWRPbmx5QnVmZmVyczsgfQogICAgIHZvaWQgZm9yRWFjaEl0ZW1C
dWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBJdGVtQnVmZmVySGFuZGxlJik+JiYpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZCeXRl
cywgRGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN3YXBX
cml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZEVuY29kZWREYXRhKEl0ZW1IYW5kbGUpOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgdW5jaGVja2VkQXBwZW5kKEFyZ3MmJi4u
LiBhcmdzKQorICAgIFdFQkNPUkVfRVhQT1JUIERpZENoYW5nZUl0ZW1CdWZmZXIgc3dhcFdyaXRh
YmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKEl0ZW1IYW5kbGUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNs
YXNzLi4uIEFyZ3M+IHZvaWQgdW5jaGVja2VkQXBwZW5kKERpZENoYW5nZUl0ZW1CdWZmZXIgZGlk
Q2hhbmdlSXRlbUJ1ZmZlciwgQXJncyYmLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBhdXRvKiBz
dGFydE9mSXRlbSA9ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRl
c107CiAgICAgICAgIHN0YXJ0T2ZJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVDo6aXRl
bVR5cGUpOwogICAgICAgICBuZXcgKHN0YXJ0T2ZJdGVtICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5
dGVzICs9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSk7CisgICAg
ICAgIGRpZEFwcGVuZERhdGEocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1U
eXBlKSwgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAgfQogCiAgICAgSXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQqIG1fcmVhZGluZ0NsaWVudCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBmMTFhOWZlZGQwN2M0MDlmMjk4OThkZTM5Yzgy
MzEwMzFiNDE3ZWQwLi5jMGM3M2I4M2JkNTJlYWEwNGE5NTE3ODE4MDQ0NTM5NDdiYmM5NWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC0xMzAsOCArMTMw
LDYgQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAg
ICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZl
cik7CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgogICAg
ICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoTWV0YUNv
bW1hbmRFbmQpOwogICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKICAgICAgICAgcmV0
dXJuIHNpemVvZihQdXRJbWFnZURhdGEpOwogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVG
b3JNZWRpYToKQEAgLTE4Niw3ICsxODQsNiBAQCBib29sIGlzRHJhd2luZ0l0ZW0oSXRlbVR5cGUg
dHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgogICAgIGNhc2UgSXRl
bVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZEVuZDoKICAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgogICAgIGNhc2UgSXRl
bVR5cGU6OlJvdGF0ZToKICAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgpAQCAtMjk5LDcgKzI5Niw2
IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6
Rmx1c2hDb250ZXh0OgogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0
ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6
CiAgICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmgKaW5kZXggOWRmZTJiOTkyZDAxYzM1MTkyZTg1ODU3ZWM4MDdkMGM5OGFmNTNhNi4u
MGU5NDdhMDZkYWI1YTJkZmI0NzY5MDgyZjhjYWM1NDhhZjg5MzQzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC03Niw3ICs3Niw2IEBAIGVudW0gY2xhc3MgSXRl
bVR5cGUgOiB1aW50OF90IHsKICAgICBGaWxsUGF0aCwKICAgICBGaWxsRWxsaXBzZSwKICAgICBG
bHVzaENvbnRleHQsCi0gICAgTWV0YUNvbW1hbmRFbmQsCiAgICAgTWV0YUNvbW1hbmRDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyLAogICAgIE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciwK
ICAgICBQdXRJbWFnZURhdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5k
ZXggMzMxMTk4MzMwZTE0MzlkMjEwMWNhYmEwNTRmYzBhNTk0MzczN2M5Zi4uYmRiZDIzOWY3MzM3
ODQwMTUyNzcxYTJmNDU3YmM0Njk1MTBkMGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcApAQCAtMTAxNCwxMSArMTAxNCw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9u
CiAgICAgcmV0dXJuIHRzOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgTWV0YUNvbW1hbmRFbmQmKQotewotICAgIHJldHVybiB0czsKLX0K
LQogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBl
IHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xMDcwLDcgKzEwNjUsNiBAQCBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkK
ICAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6IHRzIDw8ICJmbHVzaC1jb250ZXh0Ijsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbklt
YWdlQnVmZmVyOiB0cyA8PCAibWV0YS1jb21tYW5kLWNoYW5nZS1kZXN0aW5hdGlvbi1pbWFnZS1i
dWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1C
dWZmZXI6IHRzIDw8ICJtZXRhLWNvbW1hbmQtY2hhbmdlLWl0ZW0tYnVmZmVyIjsgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6IHRzIDw8ICJtZXRhLWNvbW1hbmQtZW5k
IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB0cyA8PCAicHV0LWlt
YWdlLWRhdGEiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6
IHRzIDw8ICJwYWludC1mcmFtZS1mb3ItbWVkaWEiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VSZWN0OiB0cyA8PCAic3Ryb2tlLXJlY3QiOyBicmVhazsKQEAgLTEyMzIsOSArMTIy
Niw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUg
aXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6CiAg
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21tYW5kRW5kPigpOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFB1dElt
YWdlRGF0YT4oKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAppbmRleCA3MDBjNjg3NDkxNTQ3Zjk5OWI4OTAyZWZjMmU0NWVkMTc2OGI0YzhjLi5jN2E5YTIw
ZDliYTA5ZTc3ODE0NmQ0OGQxMzk3ZDMxNmE1MWZmNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKQEAgLTIyNTAsMTMgKzIyNTAsNiBAQCBwcml2YXRlOgogICAgIEl0ZW1CdWZm
ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKLWNsYXNzIE1ldGFDb21tYW5kRW5kIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5
cGU6Ok1ldGFDb21tYW5kRW5kOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0
ZW0gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFs
c2U7Ci19OwotCiBjbGFzcyBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVt
VHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOwpAQCAtMjMzMSw3
ICsyMzI0LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZp
bGxQYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2Us
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQsCi0gICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZCwKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21t
YW5kQ2hhbmdlSXRlbUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlB1dEltYWdlRGF0YSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4
IDc3Y2JhMzM2ZGM1Yjk0ZjRkYjIxZGE2NjExMDdiZDRjMzJjZjcwODUuLmEzOWQ3MmJjMThjYzg2
ZWE2NDBmMTQ1YmVjNmVjMTNhYmQ0ODZjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJikgeyB9CiAgICAgfTsKIAorICAgIHZvaWQg
Zmx1c2hDb250ZXh0KEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IGFwcGVuZDxGbHVzaENv
bnRleHQ+KGlkZW50aWZpZXIpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERyYXdH
bHlwaHNSZWNvcmRlcjsKICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNjQsOCArMTY2LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOwot
ICAgIHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKIAogICAgIHZvaWQgYXBwZW5k
U3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggZGY0NGM5YzMwYWM2YzhjM2M2ZjkwMWYyYTgxMDcz
ZGViNDVmOTUxNS4uNGRhOGUxZDdmZDJkOWNiZjgwNDA3MTE0ZjVmNWQ2MDgwNTlhZTM4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMTE3LDEyICsxMTcs
NiBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRp
YWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoaXRlbS5pczxNZXRhQ29tbWFuZEVuZD4oKSkgewotICAgICAgICAg
ICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7Ci0gICAgICAg
ICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpFbmRPZkRp
c3BsYXlMaXN0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAo
YXV0byByZWFzb25Gb3JTdG9wcGluZyA9IGFwcGx5SXRlbShpdGVtKSkgewogICAgICAgICAgICAg
cmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3BwaW5nOwogICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCBjNDQy
NzFmMTBlZWQwYmYwMGFhMWYzZmJmNzAyYTQxYWRjYTNkOTIwLi4xMzc0NmFiYmY4Y2FjNjkzNjMy
ZTE1NGM1MjlmZDY3ODNhNmRiM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmgKQEAgLTQyLDcgKzQyLDYgQEAgZW51bSBjbGFzcyBTdG9wUmVwbGF5UmVhc29uIDogdWlu
dDhfdCB7CiAgICAgUmVwbGF5ZWRBbGxJdGVtcywKICAgICBNaXNzaW5nQ2FjaGVkUmVzb3VyY2Us
CiAgICAgQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlciwKLSAgICBFbmRPZkRpc3BsYXlMaXN0
LAogICAgIERlY29kaW5nRmFpbHVyZSAvLyBGSVhNRTogUHJvcGFnYXRlIGRlY29kaW5nIGVycm9y
cyB0byBkaXNwbGF5IGxpc3QgcmVwbGF5IGNsaWVudHMgdGhyb3VnaCB0aGlzIGVudW0gYXMgd2Vs
bC4KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9E
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCmluZGV4IDRlNGQ0OTFmMGQwOTUzODk2
NDNiNDhhMjcwYjI2YWVmMTM3YjdiZmUuLmFkMTEzNmUzZThjZTI2YTA4Y2UyYjcxOTI3ZTJjYmQw
NDI4NTJhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9E
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApAQCAtMzEsMTQgKzMxLDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzaXplX3QgRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsKLSAgICBpZiAoTElLRUxZKGFtb3VudCA8
PSBoZWFkZXIoKS51bnJlYWRCeXRlcykpCi0gICAgICAgIHJldHVybiBoZWFkZXIoKS51bnJlYWRC
eXRlcyAtPSBhbW91bnQ7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVzdWx0IGluIHRl
cm1pbmF0aW5nIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICBoZWFkZXIoKS51bnJlYWRCeXRlcyA9IDA7Ci0gICAgcmV0dXJuIDA7CisgICAgYXV0byBwcmV2
aW91c1VucmVhZEJ5dGVzID0gaGVhZGVyKCkudW5yZWFkQnl0ZXMuZXhjaGFuZ2VTdWIoYW1vdW50
KTsKKyAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNVbnJlYWRCeXRlcyA8IGFtb3VudCkpIHsKKyAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlc3VsdCBpbiB0ZXJtaW5hdGluZyB0aGUgd2Vi
IHByb2Nlc3MuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXNVbnJlYWRCeXRlcyAtIGFtb3Vu
dDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGU6OmRpc3BsYXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgY2FwYWNpdHksIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCYgY2xp
ZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBlNjEzYWQwMDRjNDYzYWUzM2MzODk1ZDA0ODMxMmQz
ZTQyZTU3N2U4Li41Zjk0MjAxYmU0YTM5OWQ4ODRlMWIyNDA3MzM5NDdjNjZkMWNlOGExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaApAQCAtOTAsMTcgKzkwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9
CiAKLSAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAo
ZGlzcGxheUxpc3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNv
bnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVS
ZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7Ci0gICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2
ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCku
bmF0aXZlSW1hZ2VzKCk7Ci0gICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciBy
ZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0
LCAmaW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07Ci0gICAgICAgIHJlcGxheWVy
LnJlcGxheSgpOwotICAgIH0KLQogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDsKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCmluZGV4IDc5ZTViYjhmNTk4YjNlZDVlNzJmOGI2ZDU4ZTQ3NjhlNjAyMTM4YzYuLmM5ZWEw
MmVjYTBlZDFhMjc2N2JlNDNhYzQyYWM2YjI0OTUwODgwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKQEAgLTEyOSwzMyArMTI5LDU0IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZmZXIobWFrZVJlZigqaW1hZ2VCdWZm
ZXIpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0
c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZSYgaGFuZGxlLCBzaXplX3QgaW5pdGlhbE9mZnNldCkKK0Rpc3BsYXlMaXN0OjpSZXBsYXlS
ZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbikKIHsKKyAg
ICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSogcmVwbGF5ZXJEZWxlZ2F0ZSA9IG51bGxw
dHI7CisgICAgaWYgKGRlc3RpbmF0aW9uLnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZCkKKyAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PEFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIqPigmZGVzdGluYXRpb24pOworICAgIGVsc2UKKyAg
ICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlcio+KCZkZXN0aW5hdGlvbik7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyIHsKKyAgICAgICAgZGVzdGluYXRpb24uY29udGV4dCgpLAorICAgICAg
ICBkaXNwbGF5TGlzdCwKKyAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZl
cnMoKSwKKyAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKSwKKyAg
ICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZQorICAgIH0ucmVwbGF5KCk7Cit9CisKK1JlZlB0cjxJbWFn
ZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKEltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRp
b24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgaGFuZGxl
KQoreworICAgIGF1dG8gZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKGluaXRpYWxEZXN0aW5hdGlv
bik7CiAgICAgYXV0byBoYW5kbGVQcm90ZWN0b3IgPSBtYWtlUmVmKGhhbmRsZSk7CiAKLSAgICBz
aXplX3Qgb2Zmc2V0ID0gaW5pdGlhbE9mZnNldDsKKyAgICBhdXRvIG9mZnNldCA9IGluaXRpYWxP
ZmZzZXQ7CiAgICAgc2l6ZV90IHNpemVUb1JlYWQgPSAwOwotCiAgICAgZG8gewogICAgICAgICBz
aXplVG9SZWFkID0gaGFuZGxlLnVucmVhZEJ5dGVzKCk7CiAgICAgfSB3aGlsZSAoIXNpemVUb1Jl
YWQpOwogCi0gICAgd2hpbGUgKHNpemVUb1JlYWQpIHsKKyAgICB3aGlsZSAoZGVzdGluYXRpb24g
JiYgIW1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQpIHsKICAgICAgICAgYXV0byBkaXNwbGF5TGlzdCA9
IGhhbmRsZS5kaXNwbGF5TGlzdEZvclJlYWRpbmcob2Zmc2V0LCBzaXplVG9SZWFkLCAqdGhpcyk7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghZGlzcGxheUxpc3QpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGRlc3RpbmF0aW9uLnN1Ym1p
dERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CisgICAgICAgIERpc3BsYXlMaXN0OjpSZXBsYXlS
ZXN1bHQgcmVzdWx0ID0gc3VibWl0KCpkaXNwbGF5TGlzdCwgKmRlc3RpbmF0aW9uKTsKKyAgICAg
ICAgc2l6ZVRvUmVhZCA9IGhhbmRsZS5hZHZhbmNlKHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCk7
CiAKICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE9mZnNldCA9IG9mZnNldDsKLSAgICAgICAg
Y2hlY2tlZE9mZnNldCArPSBzaXplVG9SZWFkOworICAgICAgICBjaGVja2VkT2Zmc2V0ICs9IHJl
c3VsdC5udW1iZXJPZkJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRPZmZz
ZXQuaGFzT3ZlcmZsb3dlZCgpKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3Nh
Z2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAogICAgICAgICBvZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgp
OwpAQCAtMTYzLDE4ICsxODQsMjQgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBs
eURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW8KICAgICAgICAg
aWYgKFVOTElLRUxZKG9mZnNldCA+IGhhbmRsZS5zaGFyZWRNZW1vcnkoKS5zaXplKCkpKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhl
IHdlYiBwcm9jZXNzLgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHNp
emVUb1JlYWQgPSBoYW5kbGUuYWR2YW5jZShzaXplVG9SZWFkKTsKKyAgICAgICAgaWYgKHJlc3Vs
dC5yZWFzb25Gb3JTdG9wcGluZyA9PSBEaXNwbGF5TGlzdDo6U3RvcFJlcGxheVJlYXNvbjo6Q2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gbWFr
ZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoKnJlc3VsdC5u
ZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpOworCisgICAgICAgIGlmICghc2l6ZVRvUmVhZCkK
KyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIHJldHVybiBkZXN0aW5hdGlvbjsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5pdGlhbE9mZnNldCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQnVmZmVySWRlbnRpZmllcikKIHsKICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShXYWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0U3RhcnQsIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RFbmQp
OwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1h
Z2VCdWZmZXIoZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKLSAgICBpZiAoVU5MSUtFTFko
IWltYWdlQnVmZmVyKSkgeworICAgIGF1dG8gZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG1ha2VS
ZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllcikpOworICAgIGlmIChVTkxJS0VMWSghZGVzdGluYXRpb25JbWFnZUJ1
ZmZlcikpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWlu
YXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTE4Nyw3ICsyMTQsMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWQK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRs
ZSgqaW1hZ2VCdWZmZXIsICppbml0aWFsSGFuZGxlLCBpbml0aWFsT2Zmc2V0KTsKKyAgICBkZXN0
aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5
aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBpbml0aWFsT2Zmc2V0LCAq
aW5pdGlhbEhhbmRsZSk7CisKKyAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICB3aGlsZSAobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkgewogICAgICAgICBhdXRvIG5leHRIYW5k
bGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQobV9uZXh0SXRlbUJ1ZmZlclRvUmVh
ZCk7CkBAIC0xOTYsOSArMjI4LDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2Fr
ZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkCiAgICAgICAg
ICAgICAvLyBJUEMgbWVzc2FnZSB3aXRoIGEgc2hhcmVkIG1lbW9yeSBoYW5kbGUgdG8gdGhlIG5l
eHQgaXRlbSBidWZmZXIuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCiAgICAgICAg
IC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRl
bSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAgICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQg
PSB7IH07Ci0gICAgICAgIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZSgqaW1hZ2VCdWZmZXIs
ICpuZXh0SGFuZGxlLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKTsKKyAg
ICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgKm5leHRIYW5kbGUpOworCisgICAgICAg
IGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAg
LTMxNyw3ICszNTUsNiBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKICAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDoKICAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgogICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpSb3RhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA1ODU5YjNiZjhkNmRmZjgyNDc5YzUy
ZTVlZTQzODI2MWQ5YTdkZDU1Li5lMWYzNTA5NmEzYmQ1Njc3YTFiZDRiMGExYjA0NzQ0NGFlYjk2
ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9E
aXNwbGF5TGlzdFJlcGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtOTIsNyArOTMsOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH0KIAotICAgIHZvaWQgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFu
ZGxlKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbiwgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUmLCBzaXplX3Qgb2Zmc2V0KTsKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5
UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxh
eUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIHNpemVfdCBp
bml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYpOwogCiAgICAgLy8gSVBDOjpN
ZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNw
bGF5TGlzdEhhbmRsZS5oCmluZGV4IDg2NWZhZWRjZGU3MDYzYTg0NDI0MDUwYmJiNzFmYzQ2ZDAy
MmQ1MGIuLjIwYWM5N2UzNDg4MGNiMjgzMWQ3YjQwMDk4NGU4NDU3OTEyYjNhY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAtNTAsMzgg
KzUwLDEyIEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzKCkKICAgICB7Ci0g
ICAgICAgIGF1dG8gbG9ja2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhp
cyB9OwotICAgICAgICByZXR1cm4gaGVhZGVyKCkudW5yZWFkQnl0ZXM7CisgICAgICAgIHJldHVy
biBoZWFkZXIoKS51bnJlYWRCeXRlcy5sb2FkKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBzaXpl
X3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBjbGFzcyBM
b2NrIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIExvY2soU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUm
IGhhbmRsZSkKLSAgICAgICAgICAgIDogbV9oYW5kbGUoaGFuZGxlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBhdXRvJiBhdG9taWNWYWx1ZSA9IG1faGFuZGxlLmhlYWRlcigpLmxvY2s7Ci0gICAg
ICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVk
IHRvIGF2b2lkIHdhaXRpbmcgZm9yZXZlciBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgd2ViIGNvbnRl
bnQgcHJvY2VzcwotICAgICAgICAgICAgICAgIC8vIGhvbGRzIG9uIHRvIHRoZSBsb2NrIGluZGVm
aW5pdGVseSAob3IgY3Jhc2hlcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrKS4KLSAgICAgICAgICAg
ICAgICB1aW50NjRfdCB1bmxvY2tlZCA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKGF0b21pY1Zh
bHVlLmNvbXBhcmVFeGNoYW5nZVdlYWsodW5sb2NrZWQsIDEpKQotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICB+TG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1f
aGFuZGxlLmhlYWRlcigpLmxvY2suc3RvcmUoMCk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBtX2hhbmRsZTsKLSAgICB9OwotCiAg
ICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5
KQogICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICAgICAsIG1fc2hhcmVk
TWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKQEAgLTg5LDggKzYzLDcgQEAgcHJvdGVjdGVk
OgogICAgIH0KIAogICAgIHN0cnVjdCBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciB7Ci0g
ICAgICAgIEF0b21pYzx1aW50NjRfdD4gbG9jazsKLSAgICAgICAgdWludDY0X3QgdW5yZWFkQnl0
ZXM7CisgICAgICAgIEF0b21pYzx1aW50NjRfdD4gdW5yZWFkQnl0ZXM7CiAgICAgfTsKIAogICAg
IERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyJiBoZWFkZXIoKSB7IHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDxEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlcio+KGRhdGEoKSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAKaW5kZXggZDgyZTNkZmFkZWU4NmViMGQ1NTQx
YjI3ODU3NjgyMTg3ZjY1Y2Y4Yi4uOGZmMzY1Y2QzNDJhODI2ZGEwNDQ5M2JiNjcyOTRjMmM1MWZh
MDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9E
aXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAKQEAgLTMzLDIwICszMyw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzaXplX3QgRGlzcGxheUxpc3RXcml0ZXJI
YW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKIHsKLSAgICBDaGVja2VkU2l6ZSBjaGVja2Vk
V3JpdGFibGVPZmZzZXQgPSBtX3dyaXRhYmxlT2Zmc2V0OwotICAgIGNoZWNrZWRXcml0YWJsZU9m
ZnNldCArPSBhbW91bnQ7Ci0gICAgaWYgKFVOTElLRUxZKGNoZWNrZWRXcml0YWJsZU9mZnNldC5o
YXNPdmVyZmxvd2VkKCkpKQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
Ci0gICAgYXV0byBsb2NrZXIgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayB7ICp0aGlz
IH07Ci0gICAgQ2hlY2tlZFNpemUgY2hlY2tlZFVucmVhZEJ5dGVzID0gaGVhZGVyKCkudW5yZWFk
Qnl0ZXM7Ci0gICAgY2hlY2tlZFVucmVhZEJ5dGVzICs9IGFtb3VudDsKLSAgICBpZiAoVU5MSUtF
TFkoY2hlY2tlZFVucmVhZEJ5dGVzLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gY2hlY2tlZFdy
aXRhYmxlT2Zmc2V0LnVuc2FmZUdldCgpOwotICAgIGhlYWRlcigpLnVucmVhZEJ5dGVzID0gY2hl
Y2tlZFVucmVhZEJ5dGVzLnVuc2FmZUdldCgpOwotICAgIHJldHVybiBjaGVja2VkVW5yZWFkQnl0
ZXMudW5zYWZlR2V0KCk7CisgICAgbV93cml0YWJsZU9mZnNldCA9IChDaGVja2VkU2l6ZSB7IG1f
d3JpdGFibGVPZmZzZXQgfSArIGFtb3VudCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChDaGVj
a2VkU2l6ZSB7IGhlYWRlcigpLnVucmVhZEJ5dGVzLmV4Y2hhbmdlQWRkKGFtb3VudCkgfSArIGFt
b3VudCkudW5zYWZlR2V0KCk7CiB9CiAKIHNpemVfdCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6
YXZhaWxhYmxlQ2FwYWNpdHkoKSBjb25zdApAQCAtNjYsNyArNTQsNyBAQCBEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlckhhbmRsZSBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRlSGFuZGxlKCkg
Y29uc3QKICAgICB9OwogfQogCi1ib29sIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpyZXNldFdy
aXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpCitib29sIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpt
b3ZlV3JpdGFibGVPZmZzZXRUb1N0YXJ0SWZQb3NzaWJsZSgpCiB7CiAgICAgaWYgKG1fd3JpdGFi
bGVPZmZzZXQgPD0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSkgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3dyaXRhYmxlT2Zmc2V0ID09IFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpoZWFkZXJTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oCmluZGV4
IDQ0ZWVmYWFiNDhmNDkxMWZlYWRiZWQ1OGFlNTdhMmE2M2IxZDhhZDcuLmZjN2EyMTY1M2EwZWI5
NjgxOWViMWMwOWE5ZmMzNDQ0ODFhNzM5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHNpemVfdCB3cml0YWJsZU9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fd3JpdGFibGVPZmZzZXQ7IH0KICAgICBzaXplX3QgYXZhaWxhYmxl
Q2FwYWNpdHkoKSBjb25zdDsKIAotICAgIGJvb2wgcmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2li
bGUoKTsKKyAgICBib29sIG1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCk7CiAK
ICAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVIYW5kbGUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMjI4MmUxM2FhYmY1M2Q2NDJlODQ0ZDQyNzAx
ZTA2NjVjMWQ1NDM4My4uMDM1NjI1MWE4MmU0MDQ4YjkwOGVkODEyZWJlZDc5ZmE0NWY4NzRmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTExOSw5ICsxMTksMTIgQEAgcHJvdGVj
dGVkOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFdhaXQgZm9yIG91ciBEaXNw
bGF5TGlzdCB0byBiZSBmbHVzaGVkIGJ1dCBkbyBub3QgaGFuZy4KLSAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBtYXhXYWl0aW5nRmx1c2ggPSAzOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIG51bVdhaXRpbmdGbHVzaCA9IDA7IG51bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRpbmdGbHVz
aCAmJiBoYXNQZW5kaW5nRmx1c2goKTsgKytudW1XYWl0aW5nRmx1c2gpCi0gICAgICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckRpZEZsdXNoKCk7CisgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4aW11bU51bWJlck9mVGltZW91dHMgPSAzOwor
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlRpbWVvdXRzID0gMDsKKyAgICAgICAgd2hpbGUgKG51
bWJlck9mVGltZW91dHMgPCBtYXhpbXVtTnVtYmVyT2ZUaW1lb3V0cyAmJiBoYXNQZW5kaW5nRmx1
c2goKSkgeworICAgICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+
d2FpdEZvckRpZEZsdXNoKCkpCisgICAgICAgICAgICAgICAgKytudW1iZXJPZlRpbWVvdXRzOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVk
KCkgY29uc3Qgb3ZlcnJpZGUKQEAgLTEzMywxOCArMTM2LDEwIEBAIHByb3RlY3RlZDoKIAogICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3Jj
UmVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpCisgICAgICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0
byYgbXV0YWJsZVRoaXMgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhp
cyk7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbXV0YWJsZVRoaXMubV9kcmF3aW5nQ29u
dGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgbXV0YWJsZVRoaXMuc3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3Qp
OwotICAgICAgICAgICAgbXV0YWJsZVRoaXMubV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlz
dCA9IDA7Ci0gICAgICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gZ2V0SW1hZ2VEYXRhIGlzIHN5bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBh
bHJlYWR5IHJlY2VpdmVkIHRoZSBDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdl
LgorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZERlZmVycmVkV2Fr
ZXVwTWVzc2FnZUlmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIApAQCAtMTY2LDYgKzE2MSw5IEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgewor
ICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVz
aFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwogICAg
ICAgICBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCk7CiAgICAgICAgIHdhaXRGb3JEaWRG
bHVzaFdpdGhUaW1lb3V0KCk7CkBAIC0xNzMsNDkgKzE3MSw1OCBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoKSBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgaWYgKFVO
TElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3Bs
YXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmICghbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgICAgIG1f
ZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5mbHVzaENvbnRleHQobV9zZW50Rmx1c2hJZGVudGlm
aWVyKTsKKyAgICAgICAgfQogCi0gICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgICAgIGRp
c3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250
ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIpOwotICAgICAgICBzdWJtaXREaXNwbGF5TGlzdChk
aXNwbGF5TGlzdCk7Ci0gICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgICAgIG1faXRl
bUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOworICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+c2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7CisgICAg
ICAgIGNsZWFyRGlzcGxheUxpc3QoKTsKICAgICB9CiAKLSAgICB2b2lkIHN1Ym1pdERpc3BsYXlM
aXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qp
IG92ZXJyaWRlCisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
JiBpbWFnZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkgfHwgZGlzcGxheUxpc3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
KCkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgfQorCisgICAgdm9pZCBjaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBu
ZXh0SW1hZ2VCdWZmZXIpIGZpbmFsCisgICAgeworICAgICAgICBib29sIHdhc0VtcHR5ID0gbV9k
cmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmlzRW1wdHkoKTsKKyAgICAgICAgbV9kcmF3aW5n
Q29udGV4dC5kaXNwbGF5TGlzdCgpLnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihuZXh0SW1hZ2VCdWZm
ZXIpOworICAgICAgICBpZiAod2FzRW1wdHkpCisgICAgICAgICAgICBjbGVhckRpc3BsYXlMaXN0
KCk7CisgICAgfQogCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zdWJt
aXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIHZvaWQgY2xlYXJEaXNwbGF5TGlzdCgpIGZpbmFsCisgICAgeworICAgICAgICBtX2Ry
YXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuY2xlYXIoKTsKICAgICB9CiAKICAgICB2b2lkIHdp
bGxBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNpemUg
PSA1MTI7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNw
bGF5TGlzdCgpOwotICAgICAgICBpZiAoKyttX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0
IDwgRGlzcGxheUxpc3RCYXRjaFNpemUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
IChMSUtFTFkobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQorICAgICAgICAgICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndpbGxBcHBlbmRJdGVtKG1fcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CiAKLSAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnRE
aXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgIHN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsK
LSAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKKyAgICB2b2lkIGRpZEFwcGVuZERhdGEoY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUmIGhhbmRsZSwgc2l6ZV90
IG51bWJlck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJdGVtQnVmZmVy
IGRpZENoYW5nZUl0ZW1CdWZmZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoTElLRUxZ
KG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5kaWRBcHBlbmREYXRhKGhhbmRsZSwgbnVtYmVyT2ZCeXRlcywg
ZGlkQ2hhbmdlSXRlbUJ1ZmZlciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IH0KIAotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1h
Z2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZSB0eXBlKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLmNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOworICAgICAgICBpZiAodHlwZSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdJbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsK
ICAgICB9CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVh
dGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlm
IChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgaWYgKExJS0VMWShtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHktPmNyZWF0ZUl0ZW1CdWZmZXIoY2FwYWNpdHksIG1fcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTI4OSw3ICsyOTYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXI6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRh
Q29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJlc3RvcmU6CiAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6CkBAIC0zMTgsMTIgKzMyNCw2IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlw
ZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIGlmICh0eXBlID09IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyKQotICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwotICAgIH0KLQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVy
PiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6Om1h
a2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjxCYWNrZW5kVHlwZT4+
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA3
NDI2NTk2ODhhYTA3OTc5NzJhNmMwZWQ4YjJhZjQ1YWZhODViYTBmLi4xMTRhYzY1YjE2MmZkNTMw
ODhlNGU0ZWY0NTE5MDJiZGVlYjBmZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCkBAIC04Nyw4ICs4NywxMCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdAog
ICAgIHByZXZpb3VzQ29ubmVjdGlvbi5yZW1vdmVDbGllbnQoKnRoaXMpOwogCiAgICAgbV9pZGVu
dGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmNsZWFyKCk7Ci0gICAgbV9pZGVudGlmaWVyc09mSGFu
ZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuY2xlYXIoKTsKICAgICBtX3NoYXJlZERpc3BsYXlMaXN0
SGFuZGxlcy5jbGVhcigpOworICAgIG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyID0gV1RGOjpudWxsb3B0OworICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1l
bnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNl
bmRpbmdXYWtldXAgPSAwOwogCiAgICAgcmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigp
OwogfQpAQCAtMTQ3LDMwICsxNDksNiBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aQogICAgIHJl
dHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGlu
YXRpb25CdWZmZXJJZGVudGlmaWVyKQotewotICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+IGlkZW50aWZpZXJBbmRPZmZzZXRG
b3JXYWtlVXBNZXNzYWdlOwotICAgIGJvb2wgaXNGaXJzdEhhbmRsZSA9IHRydWU7Ci0KLSAgICBk
aXNwbGF5TGlzdC5mb3JFYWNoSXRlbUJ1ZmZlcihbJl0gKGF1dG8mIGhhbmRsZSkgewotICAgICAg
ICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5hZGQoaGFuZGxlLmlk
ZW50aWZpZXIpOwotCi0gICAgICAgIGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGVzLmdldChoYW5kbGUuaWRlbnRpZmllcik7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRShzaGFyZWRIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQg
ZGlzcGxheSBsaXN0IiwgV1RGX1BSRVRUWV9GVU5DVElPTik7Ci0KLSAgICAgICAgYm9vbCB1bnJl
YWRDb3VudFdhc0VtcHR5ID0gc2hhcmVkSGFuZGxlLT5hZHZhbmNlKGhhbmRsZS5jYXBhY2l0eSkg
PT0gaGFuZGxlLmNhcGFjaXR5OwotICAgICAgICBpZiAoaXNGaXJzdEhhbmRsZSAmJiB1bnJlYWRD
b3VudFdhc0VtcHR5KQotICAgICAgICAgICAgaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1l
c3NhZ2UgPSB7eyBoYW5kbGUuaWRlbnRpZmllciwgaGFuZGxlLmRhdGEgLSBzaGFyZWRIYW5kbGUt
PmRhdGEoKSB9fTsKLQotICAgICAgICBpc0ZpcnN0SGFuZGxlID0gZmFsc2U7Ci0gICAgfSk7Ci0K
LSAgICBpZiAoaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2UpIHsKLSAgICAgICAg
YXV0byBbaWRlbnRpZmllciwgb2Zmc2V0XSA9ICppZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVw
TWVzc2FnZTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBvZmZzZXQsIGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIH0K
LX0KLQogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2Uo
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKGhhbmRsZSwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
CkBAIC0yMDEsMzcgKzE3OSw5MyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZQogICAgICAgICBp
bWFnZUJ1ZmZlci0+ZGlkRmx1c2goZmx1c2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0ZVJldXNhYmxlSGFuZGxlcygpCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2lsbEFwcGVuZEl0ZW0oUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikKIHsKLSAgICBmb3IgKGF1dG8gaWRl
bnRpZmllciA6IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nKSB7Ci0g
ICAgICAgIGF1dG8qIGhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVu
dGlmaWVyKTsKLSAgICAgICAgaWYgKCFoYW5kbGUtPnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3Np
YmxlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAobV9pZGVudGlmaWVy
c09mUmV1c2FibGVIYW5kbGVzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQotICAgICAgICAgICAgY29u
dGludWU7CisgICAgaWYgKG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVy
ID09IG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAg
aWYgKGF1dG8gcHJldmlvdXNEZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBuZXdEZXN0aW5h
dGlvbklkZW50aWZpZXIpKSB7CisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIoKnByZXZpb3VzRGVzdGluYXRp
b25CdWZmZXJJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KKworICAgIGlmIChh
dXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VC
dWZmZXIobmV3RGVzdGluYXRpb25JZGVudGlmaWVyKSkKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNs
ZWFyRGlzcGxheUxpc3QoKTsKIH0KIAotRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0
eSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmll
cikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzZW5kV2FrZXVwTWVzc2FnZShj
b25zdCBXYWtldXBNZXNzYWdlQXJndW1lbnRzJiBhcmd1bWVudHMpCiB7Ci0gICAgdXBkYXRlUmV1
c2FibGVIYW5kbGVzKCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChhcmd1bWVudHMuaXRlbUJ1ZmZlcklkZW50aWZp
ZXIsIGFyZ3VtZW50cy5pbml0aWFsT2Zmc2V0LCBhcmd1bWVudHMuaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CiAKLSAgICB3aGlsZSAoIW1f
aWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBp
ZGVudGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmZpcnN0KCk7Ci0gICAg
ICAgIGF1dG8qIHJldXNhYmxlSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0
KGlkZW50aWZpZXIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UocmV1c2Fi
bGVIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQgZGlzcGxheSBsaXN0IiwgV1RGX1BS
RVRUWV9GVU5DVElPTik7Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZERl
ZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCkKK3sKKyAgICBhdXRvIGFyZ3VtZW50cyA9IHN0
ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIFdURjo6bnVsbG9w
dCk7CisgICAgaWYgKCFhcmd1bWVudHMpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAo
bV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuY29udGFpbnMoaWRlbnRp
ZmllcikgJiYgcmV1c2FibGVIYW5kbGUtPmF2YWlsYWJsZUNhcGFjaXR5KCkgPj0gY2FwYWNpdHkp
IHsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5n
LnJlbW92ZShpZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybiByZXVzYWJsZUhhbmRsZS0+
Y3JlYXRlSGFuZGxlKCk7Ci0gICAgICAgIH0KKyAgICBzZW5kV2FrZXVwTWVzc2FnZSgqYXJndW1l
bnRzKTsKKyAgICBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwID0g
MDsKK30KIAotICAgICAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMucmVtb3ZlRmly
c3QoKTsKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKGNv
bnN0IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlJiBoYW5kbGUsIHNpemVfdCBudW1iZXJP
ZkJ5dGVzLCBEaXNwbGF5TGlzdDo6RGlkQ2hhbmdlSXRlbUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVm
ZmVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikK
K3sKKyAgICBhdXRvKiBzaGFyZWRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5n
ZXQoaGFuZGxlLmlkZW50aWZpZXIpOworICAgIGlmIChVTkxJS0VMWSghc2hhcmVkSGFuZGxlKSkK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIGJvb2wgd2FzRW1w
dHkgPSBzaGFyZWRIYW5kbGUtPmFkdmFuY2UobnVtYmVyT2ZCeXRlcykgPT0gbnVtYmVyT2ZCeXRl
czsKKyAgICBpZiAoIXdhc0VtcHR5IHx8IGRpZENoYW5nZUl0ZW1CdWZmZXIgPT0gRGlzcGxheUxp
c3Q6OkRpZENoYW5nZUl0ZW1CdWZmZXI6OlllcykgeworICAgICAgICBpZiAobV9kZWZlcnJlZFdh
a2V1cE1lc3NhZ2VBcmd1bWVudHMgJiYgIS0tbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3Jl
U2VuZGluZ1dha2V1cCkKKyAgICAgICAgICAgIHNlbmRXYWtldXBNZXNzYWdlKCpzdGQ6OmV4Y2hh
bmdlKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLCBXVEY6Om51bGxvcHQpKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIHNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5l
ZWRlZCgpOworCisgICAgLy8gSW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3YWtldXAgbWVzc2FnZSBp
bW1lZGlhdGVseSwgd2FpdCBmb3Igc29tZSBhZGRpdGlvbmFsIGRhdGEuIFRoaXMgZ2l2ZXMgdGhl
CisgICAgLy8gd2ViIHByb2Nlc3MgYSAiaGVhZCBzdGFydCIsIGRlY3JlYXNpbmcgdGhlIGxpa2Vs
aWhvb2QgdGhhdCB0aGUgR1BVIHByb2Nlc3Mgd2lsbCBlbmNvdW50ZXIgZnJlcXVlbnQKKyAgICAv
LyB3YWtldXBzIHdoZW4gcHJvY2Vzc2luZyBhIGxhcmdlIGFtb3VudCBvZiBkaXNwbGF5IGxpc3Qg
aXRlbXMuCisgICAgY29uc3RleHByIHVuc2lnbmVkIGl0ZW1Db3VudEh5c3RlcmVzaXNCZWZvcmVT
ZW5kaW5nV2FrZXVwID0gNTEyOworCisgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3Jl
U2VuZGluZ1dha2V1cCA9IGl0ZW1Db3VudEh5c3RlcmVzaXNCZWZvcmVTZW5kaW5nV2FrZXVwOwor
ICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0ge3sKKyAgICAgICAgaGFuZGxl
LmlkZW50aWZpZXIsCisgICAgICAgIHNoYXJlZEhhbmRsZS0+d3JpdGFibGVPZmZzZXQoKSAtIG51
bWJlck9mQnl0ZXMsCisgICAgICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIKKyAgICB9fTsKK30K
KworUmVmUHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmZpbmRSZXVzYWJsZURpc3BsYXlMaXN0SGFuZGxlKHNpemVfdCBjYXBhY2l0eSkKK3sK
KyAgICBpZiAoVU5MSUtFTFkobV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmlzRW1wdHko
KSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBtb3N0UmVjZW50bHlVc2Vk
SWRlbnRpZmllciA9IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5maXJzdCgpOworICAg
IGF1dG8gaGFuZGxlID0gbWFrZVJlZlB0cihtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQo
bW9zdFJlY2VudGx5VXNlZElkZW50aWZpZXIpKTsKKyAgICBoYW5kbGUtPm1vdmVXcml0YWJsZU9m
ZnNldFRvU3RhcnRJZlBvc3NpYmxlKCk7CisgICAgaWYgKGhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNp
dHkoKSA+PSBjYXBhY2l0eSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZTsKKworICAgIG1faWRlbnRp
ZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQobV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5k
bGVzLnRha2VGaXJzdCgpKTsKKworICAgIGF1dG8gbGVhc3RSZWNlbnRseVVzZWRJZGVudGlmaWVy
ID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmZpcnN0KCk7CisgICAgaWYgKGxlYXN0
UmVjZW50bHlVc2VkSWRlbnRpZmllciAhPSBtb3N0UmVjZW50bHlVc2VkSWRlbnRpZmllcikgewor
ICAgICAgICBhdXRvIGhhbmRsZSA9IG1ha2VSZWZQdHIobV9zaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZXMuZ2V0KGxlYXN0UmVjZW50bHlVc2VkSWRlbnRpZmllcikpOworICAgICAgICBpZiAoaGFuZGxl
LT5tb3ZlV3JpdGFibGVPZmZzZXRUb1N0YXJ0SWZQb3NzaWJsZSgpICYmIGhhbmRsZS0+YXZhaWxh
YmxlQ2FwYWNpdHkoKSA+PSBjYXBhY2l0eSkKKyAgICAgICAgICAgIHJldHVybiBoYW5kbGU7Cisg
ICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0Rpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXpl
X3QgY2FwYWNpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZl
cklkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaGFuZGxlID0gZmluZFJldXNhYmxlRGlzcGxh
eUxpc3RIYW5kbGUoY2FwYWNpdHkpKQorICAgICAgICByZXR1cm4gaGFuZGxlLT5jcmVhdGVIYW5k
bGUoKTsKKwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTaGFyZWRJdGVtQnVm
ZmVyU2l6ZSA9IDEgPDwgMTY7CiAgICAgc3RhdGljX2Fzc2VydChkZWZhdWx0U2hhcmVkSXRlbUJ1
ZmZlclNpemUgPiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKTsKIApAQCAt
MjQ4LDcgKzI4Miw3IEBAIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplCiAgICAgYXV0byBuZXdIYW5k
bGUgPSBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRlKGlkZW50aWZpZXIsIHNoYXJlZE1l
bW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBhdXRvIGRpc3BsYXlMaXN0SGFuZGxlID0gbmV3
SGFuZGxlLT5jcmVhdGVIYW5kbGUoKTsKIAotICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFu
ZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5k
bGVzLnByZXBlbmQoaWRlbnRpZmllcik7CiAgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMu
c2V0KGlkZW50aWZpZXIsIFdURk1vdmUobmV3SGFuZGxlKSk7CiAKICAgICByZXR1cm4gZGlzcGxh
eUxpc3RIYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCAz
YWI5Y2NiOWFhYWE4YmRiMzE0ZTQ4NGZhMWRmZjRlMjBiYmY0YWNlLi5kYjYwOWZiNDRkNDhiMTky
YzJhODQ1MTdlMzg5MmQzZmYwMzZhYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmgKQEAgLTY2LDYgKzY2LDEwIEBAIHB1YmxpYzoKICAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkmIHJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OyB9CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJI
YW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogCisgICAg
dm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SGFuZGxlJiwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaWRD
aGFuZ2VJdGVtQnVmZmVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVz
dGluYXRpb25JbWFnZUJ1ZmZlcik7CisgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgc2VuZERlZmVycmVkV2FrZXVw
TWVzc2FnZUlmTmVlZGVkKCk7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBD
OjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7
CkBAIC03Niw3ICs4MCw2IEBAIHB1YmxpYzoKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50Lgog
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQg
c3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVy
SWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBm
bHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtOTIsMTcg
Kzk1LDI5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKICAg
ICB2b2lkIHJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICB2b2lkIHVwZGF0
ZVJldXNhYmxlSGFuZGxlcygpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCiAg
ICAgdm9pZCBkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlk
Rmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAorICAgIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZT4gZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUoc2l6ZV90IGNhcGFjaXR5KTsK
KworICAgIHN0cnVjdCBXYWtldXBNZXNzYWdlQXJndW1lbnRzIHsKKyAgICAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGl0ZW1CdWZmZXJJZGVudGlmaWVyOwor
ICAgICAgICBzaXplX3QgaW5pdGlhbE9mZnNldDsKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcjsKKyAgICB9OworCisgICAg
dm9pZCBzZW5kV2FrZXVwTWVzc2FnZShjb25zdCBXYWtldXBNZXNzYWdlQXJndW1lbnRzJik7CisK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkg
eyAqdGhpcyB9OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+PiBtX3NoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlczsKICAgICBEZXF1ZTxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlczsKLSAgICBIYXNoU2V0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVy
c09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmc7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+IG1faWRlbnRpZmllcnNPZkltYWdlQnVmZmVyc1BlbmRpbmdGbHVzaDsK
KyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1fY3Vy
cmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOworICAgIE9wdGlvbmFsPFdha2V1
cE1lc3NhZ2VBcmd1bWVudHM+IG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzOworICAg
IHVuc2lnbmVkIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgeyAw
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkN2JiYjRlYjVkYThkNWZkMzFiMDk1ZWZlZGQ2
MjMxMDRjNDdjMDBhLi45YmZlMmI3ZTRjZWI1MzQ4MmViMTdmZmM0MDdjZTQ4NjhjNGViNTBhIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjAtMTItMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gU3luY2hyb25pemUgZGlz
cGxheSBsaXN0IHJlbmRlcmluZyBhY3Jvc3MgcmVtb3RlIGltYWdlIGJ1ZmZlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTA5MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzE3NDc2OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxp
c3RUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0xMi0w
NCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFN3
aXRjaCB0byA4KzQgYml0cyBmb3Igc291cmNlIElEcyBhbmQgdHJpZ2dlciB2YWx1ZXMgcmVzcGVj
dGl2ZWx5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAKaW5kZXggZWJkODZlMzJlMDYyY2FkZjZhOWIwMWFlZGNjNzdhZDhm
NmUyNDU0My4uZjcwMGM1NjI5ZjYwNmU1YzI2ZGYxNmIyMGJiMWRlYTk1NGU4MDdhNSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1
ZmZlckNsaWVudCkKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8
SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxv
Y2F0aW9uKQorICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4g
ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5
cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIGZpbmFsCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6U3Ryb2tlUGF0aCk7CiAgICAgICAgICAg
ICBFWFBFQ1RfRVEoZGF0YUxlbmd0aCwgc2l6ZW9mKHNpemVfdCkpOwpAQCAtMjA1LDYgKzIwNSw4
IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigm
aW5kZXgpLCBzaXplb2Yoc2l6ZV90KSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGRpZEFw
cGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCwgRGlkQ2hhbmdlSXRlbUJ1
ZmZlcikgZmluYWwgeyB9CisKICAgICAgICAgVmVjdG9yPFN0cm9rZVBhdGg+JiBtX2l0ZW1zOwog
ICAgIH07CiAK
</data>
<flag name="review"
          id="432704"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415497</attachid>
            <date>2020-12-05 13:26:55 -0800</date>
            <delta_ts>2020-12-05 13:26:55 -0800</delta_ts>
            <desc>Rebase on trunk again</desc>
            <filename>bug-219091-20201205132654.patch</filename>
            <type>text/plain</type>
            <size>66487</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ1NTRhYTQ1OGYxNTUz
OGY3NjQ3ZjY5NjEzY2UwODkwYjAwMDE2NS4uYzg5OGJjNTYyN2Y0Y2IwMGFhN2IzMDBkOGVjNDJh
OTUzMmMzNDMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTEyLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50
IGRpc3BsYXkgbGlzdHNdIFN5bmNocm9uaXplIGRpc3BsYXkgbGlzdCByZW5kZXJpbmcgYWNyb3Nz
IHJlbW90ZSBpbWFnZSBidWZmZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTkwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNzQ3Njk1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIFNlZSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtSGFuZGxlOjpjb3B5VG8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKToKKworICAgICAgICBB
ZGQgcGx1bWJpbmcgc28gdGhhdCBgZGlkQXBwZW5kRGF0YWAgY2FuIGluZm9ybSB0aGUgY2xpZW50
IHdoZXRoZXIgdGhlIGRhdGEgd2FzIGFwcGVuZGVkIGFmdGVyIHN3aXRjaGluZyB0byBhCisgICAg
ICAgIG5ldyBidWZmZXIuIEluIFdlYktpdDIncyByZW1vdGUgaW1hZ2UgYnVmZmVyLCB3ZSB1c2Ug
dGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UgbmVlZCB0bwor
ICAgICAgICBzZW5kIGEgd2FrZXVwIG1lc3NhZ2UgdG8gdGhlIEdQVSBwcm9jZXNzLiBOYW1lbHks
IGluIHRoZSBjYXNlIG9mIGBEaWRDaGFuZ2VJdGVtQnVmZmVyOjpZZXNgLCB3ZSBkb24ndCBuZWVk
IHRvCisgICAgICAgIHdha2UgdXAgdGhlIEdQVSBwcm9jZXNzIGV2ZW4gdGhvdWdoIHRoZSB1bnJl
YWQgYnl0ZXMgY291bnQgd2FzIDAgYmVmb3JlIHdlIGFkdmFuY2VkLCBzaW5jZSB0aGUgR1BVIHBy
b2Nlc3Mgd2lsbAorICAgICAgICBhdXRvbWF0aWNhbGx5IHByb2dyZXNzIHRvIHRoaXMgaXRlbSBi
dWZmZXIgd2hlbiBpdCdzIGRvbmUgcHJvY2Vzc2luZyBpdGVtcyBpbiB0aGUgcHJldmlvdXMgaXRl
bSBidWZmZXIuCisKKyAgICAgICAgU2VlIFdlYktpdCBjaGFuZ2VzIChpbiBgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eWApIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXI6OmRpZEFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZEVuY29kZWREYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6
CisKKyAgICAgICAgQWRkIGEgbmV3IGBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudGAgbWV0aG9kIHRv
IGluZm9ybSBjbGllbnRzIHdoZW4gbmV3IGJ5dGVzIGFyZSBhcHBlbmRlZCB0byBhbiBpdGVtIGJ1
ZmZlciwKKyAgICAgICAgZ2l2ZW4gdGhlIGFkZGl0aW9uYWwgbnVtYmVyIG9mIGJ5dGVzIGFkZGVk
IGFuZCB0aGUgaXRlbSBidWZmZXIgaGFuZGxlLgorCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVyOjp1bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpzaXplT2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6aXNJbmxpbmVJdGVtKToKKworICAgICAgICBSZW1vdmUgTWV0YUNvbW1hbmRFbmQuIEkgaW50
cm9kdWNlZCB0aGlzIGl0ZW0gdHlwZSBiZWNhdXNlIEkgd2FzIGdvaW5nIHRvIG1ha2UgdGhlIEdQ
VSBwcm9jZXNzIGFsd2F5cyBzbGVlcCBmb3IKKyAgICAgICAgbW9yZSBkaXNwbGF5IGxpc3QgaXRl
bSBkYXRhLCBidXQgSSd2ZSBzaW5jZSBjaGFuZ2VkIHRoZSBhcHByb2FjaCBzbyB0aGF0IHRoZSBH
UFUgcHJvY2VzcyBnb2VzIHRvIHNsZWVwIG5hdHVyYWxseQorICAgICAgICB3aGVuIGl0J3MgZG9u
ZSBwcm9jZXNzaW5nIGFsbCB1bnJlYWQgYnl0ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZsdXNoQ29udGV4dCk6CisKKyAgICAg
ICAgQWRkIGEgbmV3IGhlbHBlciBtZXRob2QgdG8gYXBwZW5kIGEgYEZsdXNoQ29udGV4dGAgaXRl
bSB2aWEgdGhlIGRpc3BsYXkgbGlzdCByZWNvcmRlciwgdG8gZW5zdXJlIHRoYXQgdGhlCisgICAg
ICAgIGFwcHJvcHJpYXRlIHJlY29yZGVyIGRlbGVnYXRlIG1ldGhvZHMgYXJlIGludm9rZWQgd2hl
biBhcHBlbmRpbmcgYSAiZmx1c2ggY29udGV4dCIgaXRlbS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorCiAyMDIw
LTEyLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkMgRGlzcGxheV0gU3RvcmUgdGhlIGRpc3BsYXkgdHJlZSBhcyBhIHRyZWUgb2Ygc3RhY2tp
bmcgaXRlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMTk1NmQxZWQzOWVmYzlkMmJhMWY1N2VjMmUwZjliMWRmMjQy
YjY3My4uMjY3MzFkYzZjOWRiODJjNTlhNzdjZGIyZDA3NzI5MWU2OGJlYmQyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNjggQEAKKzIwMjAtMTItMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gU3luY2hy
b25pemUgZGlzcGxheSBsaXN0IHJlbmRlcmluZyBhY3Jvc3MgcmVtb3RlIGltYWdlIGJ1ZmZlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTA5MQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE3NDc2OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvZmYgR2FyZW4uCisKKyAgICAgICAgUmVmYWN0b3JzIHRoZSBleGlzdGluZyBjb25jdXJyZW50
IGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nIG1lY2hhbmlzbSwgc3VjaCB0aGF0IHdlIG5vIGxvbmdl
ciB1cGRhdGUgdGhlIHVucmVhZAorICAgICAgICBieXRlcyBjb3VudCBldmVyeSA1MTIgaXRlbXMg
KG9yIHdoZW4gZmx1c2hpbmcgdGhlIGRyYXdpbmcgY29udGV4dCksIGFuZCBpbnN0ZWFkIHVwZGF0
ZSBpdCBldmVyeSB0aW1lIHdlIGFwcGVuZAorICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbSBkYXRh
LiBJbiBvcmRlciB0byBhY2hpZXZlIHRoaXMgd2l0aG91dCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBm
b3IgbXVsdGlwbGUgZGlzcGxheS1saXN0IGJhY2tlZAorICAgICAgICBpbWFnZSBidWZmZXJzIHRv
IHJlbmRlciBzaW11bHRhbmVvdXNseSwgd2UgYWxzbyBhZGQgc3VwcG9ydCBmb3Igc3luY2hyb25p
emluZyBkaXNwbGF5IGxpc3QgaXRlbXMgYWNyb3NzCisgICAgICAgIGRpZmZlcmVudCBpbWFnZSBi
dWZmZXJzIGJ5IHVzaW5nIHRoZSBuZXcgbWV0YSBjb21tYW5kIGl0ZW1zIGFkZGVkIGluIGJ1ZyAj
MjE5MjYyLiBBcyBkZXRhaWxlZCBpbiB0aGUgQ2hhbmdlTG9nCisgICAgICAgIGZvciB0aGF0IGJ1
ZywgYSBzdHJlYW0gb2YgZGlzcGxheSBsaXN0IGRhdGEgd3JpdHRlbiBieSB0aGUgd2ViIHByb2Nl
c3MgYW5kIGNvbnN1bWVkIGJ5IHRoZSBHUFUgcHJvY2VzcyBpcyBub3cKKyAgICAgICAgc3RydWN0
dXJlZCBsaWtlIHNvOgorCisgICAgICAgIFdha2V1cCBtZXNzYWdlIGluaXRpYXRlcyBkaXNwbGF5
IGxpc3QgcHJvY2Vzc2luZyB3aXRoIEltYWdlIEJ1ZmZlciBBIGFuZCBJdGVtIEJ1ZmZlciAxCisg
ICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyKEIpCisgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgTWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKDIpCisgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2CisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rKworICAgICAgICAgICAgfCArLS0tLS0tLS0t
LS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAg
ICAgIHwgfCBEZXN0aW5hdGlvbiAgICAgICAgfCB8IERlc3RpbmF0aW9uICAgICAgICAgICAgICAg
ICAgfCB8IEl0ZW0gQnVmZmVyIDEKKyAgICAgICAgICAgIHwgfCBJbWFnZSBCdWZmZXIgQSAgICAg
fCB8IEltYWdlIEJ1ZmZlciBCICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICB8ICstLS0t
LS0tLS0tLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAorICAg
ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKKworICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0t
LS0tKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8CisgICAgICAgICAg
ICB8IHwgRHN0LiBJbWFnZSAgIHwgfCBEZXN0aW5hdGlvbiBJbWFnZSAgICAgfCAgVW51c2VkICAg
ICAgfCBJdGVtIEJ1ZmZlciAyCisgICAgICAgICAgICB8IHwgQnVmZmVyIEIgICAgIHwgfCBCdWZm
ZXIgQSAgICAgICAgICAgICAgfCAgQ2FwYWNpdHkgICAgfAorICAgICAgICAgICAgfCArLS0tLS0t
LS0tLS0tLS0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwKKyAgICAg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgICAgICBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoQSkKKworICAg
ICAgICAoTm90ZSB0aGF0IHRoZSBgTWV0YUNvbW1hbmRFbmRgIGl0ZW0gaGFzIGJlZW4gb21pdHRl
ZCwgc2luY2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZXhwbGljaXRseSB0ZWxsIHRoZSBHUFUKKyAg
ICAgICAgcHJvY2VzcyB0byBnbyB0byBzbGVlcCB3aXRoIHRoZSBsYXRlc3QgaXRlcmF0aW9uIG9m
IHRoaXMgcGF0Y2gpLgorCisgICAgICAgIEluIG9yZGVyIHRvIHdyaXRlIGRpc3BsYXkgbGlzdCBk
YXRhIGNvbmZvcm1pbmcgdG8gdGhpcyBmb3JtYXQsIHdlIGFkZCBhIG1lY2hhbmlzbSB0byB0aGUg
d2ViIHByb2Nlc3MgdGhhdCBrZWVwcworICAgICAgICB0cmFjayBvZiB0aGUgImN1cnJlbnQgZGVz
dGluYXRpb24gaW1hZ2UgYnVmZmVyIiAoaS5lLiB0aGUgaW1hZ2UgYnVmZmVyIHRoYXQgaGFzIG1v
c3QgcmVjZW50bHkKKyAgICAgICAgYXBwZW5kZWQgYSBkaXNwbGF5IGxpc3QgaXRlbSkuIFJpZ2h0
IGJlZm9yZSB0aGlzIGRlc3RpbmF0aW9uIGlzIGFib3V0IHRvIGNoYW5nZSwgd2UgYXBwZW5kIGEg
bmV3CisgICAgICAgIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXJgIGl0
ZW0gYmVmb3JlIHByb2NlZWRpbmcgdG8gYXBwZW5kIGRpc3BsYXkgbGlzdCBpdGVtcyBmb3IgdGhl
IG5ldworICAgICAgICBjdXJyZW50IGRlc3RpbmF0aW9uLgorCisgICAgICAgIFNpbmNlIHdlIG5v
dyBidW1wIHRoZSB1bnJlYWQgY291bnQgZXZlcnkgdGltZSwgd2UgbmVlZCB0byBkbyBzb21lIGFk
ZGl0aW9uYWwgd29yayB0byBhdm9pZCBhbiBleGNlc3NpdmUgbnVtYmVyCisgICAgICAgIG9mIHdh
a2V1cHMgYW5kIHNsZWVwcyBpbiB0aGUgR1BVIHByb2Nlc3MsIHdoaWNoIHdvdWxkIG90aGVyd2lz
ZSBjYXVzZSBhIG1hc3NpdmUgcmVncmVzc2lvbi4gVG8gZG8gdGhpcywgd2UKKyAgICAgICAgaW50
cm9kdWNlIGFuIGl0ZW0gY291bnQgaHlzdGVyZXNpcyBpbiB0aGUgd2ViIHByb2Nlc3MsIHN1Y2gg
dGhhdCB3ZSB3aWxsIHdhaXQgZm9yIDUxMiBpdGVtcyB0byBiZSB3cml0dGVuIGJlZm9yZQorICAg
ICAgICBhdHRlbXB0aW5nIHRvIHNlbmQgdGhlIHdha2V1cCBtZXNzYWdlLiBUaGlzIGFsbG93cyB0
aGUgd2ViIHByb2Nlc3MgdG8gZ2V0IGEgc21hbGwgaGVhZCBzdGFydCBvdmVyIHRoZSBHUFUKKyAg
ICAgICAgcHJvY2VzcywgYW5kIHRodXMgYWxsb3dzIHRoZSBHUFUgcHJvY2VzcyB0byBiZSBtb3Jl
IGNvbnNpc3RlbnRseSBidXN5IG92ZXIgdGhlIGNvdXJzZSBvZiBhIHNpbmdsZSBmcmFtZS4KKwor
ICAgICAgICBPbiB0aGUgcmVhZGVyIChHUFUgcHJvY2Vzcykgc2lkZSwgd2UgbWFrZSBzb21lIG1p
bm9yIGFkanVzdG1lbnRzIHNvIHRoYXQgdGhlIG1haW4gZGlzcGxheSBsaXN0IHByb2Nlc3Npbmcg
bG9vcAorICAgICAgICBvZiB0aGUgR1BVIHByb2Nlc3MgaXMgY2FwYWJsZSBvZiBjaGFuZ2luZyBk
ZXN0aW5hdGlvbiBpbWFnZSBidWZmZXJzIHdoaWxlIHByb2Nlc3NpbmcgYSBzdHJlYW0gb2YgZGlz
cGxheSBsaXN0CisgICAgICAgIGl0ZW1zLgorCisgICAgICAgIFNlZSBiZWxvdyBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjph
ZHZhbmNlKToKKworICAgICAgICBVcGRhdGUgYGFkdmFuY2VgIHNvIHRoYXQgaXQganVzdCBwZXJm
b3JtcyBhIHNpbmdsZSA4LWJ5dGUgYXRvbWljIGBleGNoYW5nZVN1YmAgcmF0aGVyIHRoYW4gZ3Jh
YmJpbmcgYSBzcGlubG9jay4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OnN1Ym1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyk6CisK
KyAgICAgICAgUmVuYW1lIGBhcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGVgIHRvIGBuZXh0RGVz
dGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHNgLCBhbmQgbWFrZSBp
dAorICAgICAgICByZXR1cm4gdGhlIGN1cnJlbnQgaW1hZ2UgYnVmZmVyIHRvIHVzZSBhcyB0aGUg
ZGVzdGluYXRpb24gZm9yIHJlcGxheWluZyBkaXNwbGF5IGxpc3QgY29tbWFuZHMuIFRoaXMgaGVs
cGVyIGlzCisgICAgICAgIHN0aWxsIHJlc3BvbnNpYmxlIGZvciByZXBsYXlpbmcgYSBkaXNwbGF5
IGxpc3QgaXRlbSBidWZmZXIgdW50aWwgaXQgaGFzIG5vIG1vcmUgZGF0YSAodGhhdCBpcywgdW50
aWwgd2UKKyAgICAgICAgZW5jb3VudGVyIGEgYE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcmAg
aXRlbSBpbmZvcm1pbmcgdXMgb2YgdGhlIG5leHQgaXRlbSBidWZmZXIgdG8gY29uc3VtZSkuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlE
aXNwbGF5TGlzdCk6CisKKyAgICAgICAgQWRqdXN0IHRoaXMgdG8gY2FsbCBgbmV4dERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzYC4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDoKKwor
ICAgICAgICBSZW1vdmUgYFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrYCBhbHRvZ2V0aGVy
LCBub3cgdGhhdCB3ZSBqdXN0IGhhdmUgYSBzaW5nbGUgYXRvbWljIGB1aW50NjRfdGAgY291bnRl
ciB0bworICAgICAgICByZXByZXNlbnQgdGhlIG51bWJlciBvZiB1bnJlYWQgYnl0ZXMuCisKKyAg
ICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnVucmVhZEJ5dGVzKToKKyAg
ICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2s6OkxvY2spOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jazo6fkxv
Y2spOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0V3JpdGVySGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJI
YW5kbGU6OmFkdmFuY2UpOgorCisgICAgICAgIE1ha2UgdGhpcyB1c2UgdGhlIHNpbmdsZSBhdG9t
aWMgY291bnRlciwgaW5zdGVhZCBvZiBncmFiYmluZyBhIHNwaW5sb2NrLgorCisgICAgICAgIChX
ZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjptb3ZlV3JpdGFibGVPZmZzZXRUb1N0YXJ0
SWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpy
ZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1l
IGByZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZWAgdG8gdGhlIG1vcmUgYWNjdXJhdGUgYG1v
dmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlYC4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIGFwcGVuZCBhIGBNZXRhQ29t
bWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXJgIGl0ZW0gdG8gdGhlIGRpc3BsYXkgbGlz
dCwgZ2l2ZW4gdGhlCisgICAgICAgIGlkZW50aWZpZXIgb2YgdGhpcyBuZXh0IGl0ZW0gYnVmZmVy
LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNsZWFyRGlzcGxh
eUxpc3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2QgdG8gY2xlYXIgdGhlIGRpc3Bs
YXkgbGlzdCwgc3VjaCB0aGF0IHRoZSBgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eWAgd2lsbCBiZSBh
c2tlZCBmb3IgYSBuZXcKKyAgICAgICAgYnVmZmVyIGhhbmRsZSB0aGUgbmV4dCB0aW1lIHdlIGFw
cGVuZCBhbiBpdGVtLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6
OndhaXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KToKKworICAgICAgICBNYWtlIHRoaXMgaGl0IHRo
ZSBtYXhpbXVtIGB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseWAgYXR0ZW1wdCBjb3VudCBh
bmQgImZhaWwiIG9ubHkgaWYgdGhlIGNhbGwgdG8KKyAgICAgICAgYHdhaXRGb3JBbmREaXNwYXRj
aEltbWVkaWF0ZWx5YCBhY3R1YWxseSB0aW1lcyBvdXQuIFRoaXMgY2hhbmdlIGlzIG5lY2Vzc2Fy
eSB0byBlbnN1cmUgdGhhdCB0aGUgc2NlbmFyaW8gb2YKKyAgICAgICAgbXVsdGlwbGUgaW1hZ2Ug
YnVmZmVycyBzaW11bHRhbmVvdXNseSBhcHBlbmRpbmcgZGlzcGxheSBsaXN0IGl0ZW1zIHdvcmtz
IHdoZW4gYWxsIGltYWdlIGJ1ZmZlcnMgcGVyZm9ybSAobm9uLQorICAgICAgICBibG9ja2luZykg
Zmx1c2hlcyBzaW11bHRhbmVvdXNseSwgZm9sbG93ZWQgYnkgYSBzeW5jLXdhaXQgKGJsb2NraW5n
KSBmbHVzaC4gSW4gdGhpcyBzaXR1YXRpb24sIHRoZSB3ZWIgcHJvY2VzcworICAgICAgICBtYXkg
cmVjZWl2ZSBtb3JlIHRoYW4gdGhyZWUgYERpZEZsdXNoYCBtZXNzYWdlcyBpbiByYXBpZCBzdWNj
ZXNzaW9uLCBjYXVzaW5nIGl0IHRvIGhpdCB0aGlzIG1heGltdW0gbGltaXQgb2YgMworICAgICAg
ICBpbnN0YW50bHkgYW5kIGF2b2lkIHdhaXRpbmcgZm9yIHRoZSBleHBlY3RlZCBgRGlkRmx1c2hg
IG1lc3NhZ2UgdG8gYXJyaXZlLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UpOgorCisgICAgICAgIFJlc2V0IHN0YXRlIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlz
IHRlcm1pbmF0ZWQuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Ojp3aWxsQXBwZW5kSXRlbSk6CisKKyAgICAgICAgVXBkYXRlIHRoZSBjdXJyZW50IGRlc3Rp
bmF0aW9uIGltYWdlIGJ1ZmZlciAoYG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyYCkuIElmIHRoaXMgaWRlbnRpZmllcgorICAgICAgICBjaGFuZ2VkLCB0aGVuIHdlIGFw
cGVuZCBhIGBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXJgIGl0ZW0gdG8g
dGhlIHByZXZpb3VzIGRlc3RpbmF0aW9uIGJlZm9yZQorICAgICAgICBzZXR0aW5nIHRoZSBuZXcg
ZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyLiBXZSBhbHNvIG5lZWQgdG8gY2xlYXIgdGhlIG5ldyBk
ZXN0aW5hdGlvbiBpbWFnZSBidWZmZXIncyBkaXNwbGF5IGxpc3QKKyAgICAgICAgYmVmb3JlIHdy
aXRpbmcgbmV3IGl0ZW1zLCB0byBwcmV2ZW50IGl0IGZyb20gb3ZlcndyaXRpbmcgc2hhcmVkIGRp
c3BsYXkgbGlzdCBpdGVtIGRhdGEuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpzZW5kV2FrZXVwTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBl
bmREYXRhKToKKworICAgICAgICBJbXBsZW1lbnQgYSBuZXcgYEl0ZW1CdWZmZXJXcml0aW5nQ2xp
ZW50YCBob29rIGJ5IGFkdmFuY2luZyB0aGUgY29ycmVzcG9uZGluZyBpdGVtIGJ1ZmZlcidzIHVu
cmVhZCBjb3VudC4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBzY2hlZHVsZSBhIHdha2V1cCBtZXNz
YWdlIGluIHRoZSBjYXNlIHdoZXJlIHRoZSB1bnJlYWQgY291bnQgd2FzIHplcm8gd2hlbiB3ZSBh
ZHZhbmNlZCwgYW5kIHRoZQorICAgICAgICBpdGVtIGJ1ZmZlciB3ZSd2ZSBhcHBlbmRlZCB0byBp
cyBub3QgImNvbm5lY3RlZCIgdG8gYSBwcmV2aW91cyBpdGVtIGJ1ZmZlciBieSB3YXkgb2YgYW4g
aXRlbSBidWZmZXIgY2hhbmdlIGl0ZW0uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBpbiB0aGUg
Y2FzZSB3aGVyZSB3ZSBkb24ndCBzY2hlZHVsZSBhIG5ldyB3YWtldXAgbWVzc2FnZSwgY2hlY2sg
d2hldGhlciBvciBub3QgdGhlcmUgaXMgYSBkZWZlcnJlZAorICAgICAgICB3YWtldXAgbWVzc2Fn
ZTsgaWYgdGhlcmUgaXMsIHRoZW4gZGVjcmVtZW50IHRoZSByZW1haW5pbmcgaXRlbSBjb3VudCBi
ZWZvcmUgd2Ugc2VuZCB0aGUgd2FrZXVwIG1lc3NhZ2UsIGFuZCBzZW5kCisgICAgICAgIHRoZSBt
ZXNzYWdlIGlmIHRoZSBjb3VudCByZWFjaGVzIDAuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpmaW5kUmV1c2FibGVEaXNwbGF5TGlzdEhhbmRsZSk6CisK
KyAgICAgICAgUHVsbCBsb2dpYyB0byBmaW5kIGEgc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5kbGUg
c3VpdGFibGUgZm9yIHJldXNlIGludG8gYSBzZXBhcmF0ZSBoZWxwZXIgbWV0aG9kLCBhbmQgYWRq
dXN0IGl0CisgICAgICAgIHNvIHRoYXQgaWYgdGhlIG1vc3QgcmVjZW50bHkgdXNlZCBkaXNwbGF5
IGxpc3QgaGFuZGxlIGhhcyBydW4gb3V0IG9mIGF2YWlsYWJsZSBjYXBhY2l0eSwgd2UgbW92ZSBp
dCB0byB0aGUgZW5kCisgICAgICAgIG9mIHRoZSByZXVzZSBxdWV1ZSBhbmQgb25seSByZXVzZSB0
aGUgbmV3IGZpcnN0IHNoYXJlZCBoYW5kbGUgaW4gdGhlIHF1ZXVlIGlmIGl0cyB3cml0YWJsZSBv
ZmZzZXQgY2FuIGJlIHJlc2V0LgorICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgR1BVIHBy
b2Nlc3MgY2FuIGFsd2F5cyBjb250aW51ZSByZWFkaW5nIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEg
ZnJvbSB0aGUgc3RhcnQgb2YgbmV3IGl0ZW0KKyAgICAgICAgYnVmZmVycyAtLSBpLmUuLCB3ZSBk
b24ndCBlbmQgdXAgd2l0aCB0aGUgd2ViIHByb2Nlc3Mgd3JpdGluZyBvdXQgYSBzdHJlYW0gb2Yg
ZGlzcGxheSBsaXN0IGRhdGEgbGlrZToKKworICAgICAgICAgICAoU3RhcnQpIEJ5dGVzICgxNiwg
NjU1MjApIGluIEl0ZW1CdWZmZXJbMV0KKyAgICAgICAgICAgICAgICAgICBCeXRlcyAoMTYsIDY1
NTM2KSBpbiBJdGVtQnVmZmVyWzJdCisgICAgICAgICAgICAgICAgICAgQnl0ZXMgKDY1NTIwLCA2
NTUzNikgaW4gSXRlbUJ1ZmZlclsxXQorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0ZVJldXNhYmxl
SGFuZGxlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisKIDIwMjAtMTItMDQgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBSZW1vdmUgQ29u
Y3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggOThiMjJlZThhZTA3ODQyNTlhNDZjYmIxZmIyZjRi
ZTAyZjEyMDhiZS4uMjQ3OGQ5YjcyNTVjMDA1OTdhYTUwNWMzZWFiNzJjYWE0ZDA5NjRmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC03
OSw5ICs3OSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHByZWZlcnNQcmVwYXJhdGlv
bkZvckRpc3BsYXkoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBmbHVzaERy
YXdpbmdDb250ZXh0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3Qg
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZsdXNo
KERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGNo
YW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJEaXNwbGF5TGlzdCgpIHsgfQorCiAgICAgdmlydHVh
bCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggODEyMDRkZjA4
N2U2NTU4ZWFlN2U0ZDQwMThjNjU1YjU4ZTJhNThhNi4uNTFlNzllMGM3ZjU0NGMzY2Y3NDU0OTdi
ZDA4NzJlZWMyZGM4ZjcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0yODIsOCAr
MjgyLDYgQEAgdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkKICAgICAg
ICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+
KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgogICAgICAgICBy
ZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFu
ZEVuZDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZEVuZD4oaXRlbS5nZXQ8TWV0
YUNvbW1hbmRFbmQ+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKICAgICAg
ICAgcmV0dXJuIGFwcGVuZDxQdXRJbWFnZURhdGE+KGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4oKSk7
CiAgICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjZTZiMGU5YjE4YmRjN2FhYjM4NDRk
ODczNjYzNjg5MjM5NDBlMjI4Li5jMDQwZTk4ZDk4YzExNmVhZjI4NmE1MWRmM2E3N2Q1ZTBmODE4
MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAt
MjI4LDcgKzIyOCw2IEBAIHZvaWQgSXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kRW5kOgogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB7CiAgICAgICAgIGdldDxQ
dXRJbWFnZURhdGE+KCkuYXBwbHkoY29udGV4dCk7CkBAIC00NjQsMTAgKzQ2Myw2IEBAIHZvaWQg
SXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj46OnZhbHVlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVu
ZDogewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxNZXRhQ29tbWFuZEVuZD46OnZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBj
YXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHsKICAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8UGFpbnRGcmFtZUZvck1lZGlhPjo6dmFs
dWUpOwogICAgICAgICByZXR1cm47CkBAIC03MjMsMTAgKzcxOCw2IEBAIHZvaWQgSXRlbUhhbmRs
ZTo6Y29weVRvKEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKGdldDxNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXI+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6Ok1ldGFDb21tYW5kRW5kOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgTWV0YUNvbW1h
bmRFbmQoZ2V0PE1ldGFDb21tYW5kRW5kPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAg
ICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHsKICAgICAgICAgbmV3IChpdGVt
T2Zmc2V0KSBQYWludEZyYW1lRm9yTWVkaWEoZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTg3NiwyNSArODY3LDI1IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6Y2xl
YXIoKQogICAgIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgPSAwOwogfQogCi12b2lkIEl0ZW1CdWZm
ZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQorRGlk
Q2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChz
aXplX3QgbnVtYmVyT2ZCeXRlcykKIHsKICAgICBhdXRvIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVt
ID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXIpOwogICAgIGlmIChtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICsgbnVtYmVy
T2ZCeXRlcyArIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVtIDw9IG1fd3JpdGFibGVCdWZmZXIuY2Fw
YWNpdHkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIERpZENoYW5nZUl0ZW1CdWZm
ZXI6Ok5vOwogCiAgICAgYXV0byBuZXh0QnVmZmVyID0gY3JlYXRlSXRlbUJ1ZmZlcihudW1iZXJP
ZkJ5dGVzICsgc2l6ZUZvckJ1ZmZlclN3aXRjaEl0ZW0pOwotICAgIGJvb2wgaGFkUHJldmlvdXNC
dWZmZXIgPSBtX3dyaXRhYmxlQnVmZmVyOwotICAgIGlmIChoYWRQcmV2aW91c0J1ZmZlcikKLSAg
ICAgICAgdW5jaGVja2VkQXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4obmV4dEJ1
ZmZlci5pZGVudGlmaWVyKTsKLSAgICBhdXRvIHByZXZpb3VzQnVmZmVyID0gc3RkOjpleGNoYW5n
ZShtX3dyaXRhYmxlQnVmZmVyLCB7IH0pOwotICAgIHByZXZpb3VzQnVmZmVyLmNhcGFjaXR5ID0g
c3RkOjpleGNoYW5nZShtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzLCAwKTsKLSAgICBpZiAoaGFkUHJl
dmlvdXNCdWZmZXIpCi0gICAgICAgIG1fcmVhZE9ubHlCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKHBy
ZXZpb3VzQnVmZmVyKSk7Ci0KKyAgICBib29sIGhhZFByZXZpb3VzQnVmZmVyID0gbV93cml0YWJs
ZUJ1ZmZlciAmJiBtX3dyaXRhYmxlQnVmZmVyLmlkZW50aWZpZXIgIT0gbmV4dEJ1ZmZlci5pZGVu
dGlmaWVyOworICAgIGlmIChoYWRQcmV2aW91c0J1ZmZlcikgeworICAgICAgICB1bmNoZWNrZWRB
cHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPihEaWRDaGFuZ2VJdGVtQnVmZmVyOjpO
bywgbmV4dEJ1ZmZlci5pZGVudGlmaWVyKTsKKyAgICAgICAgbV93cml0YWJsZUJ1ZmZlci5jYXBh
Y2l0eSA9IG1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CisgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJz
LmFwcGVuZChtX3dyaXRhYmxlQnVmZmVyKTsKKyAgICB9CisgICAgbV93cml0dGVuTnVtYmVyT2ZC
eXRlcyA9IDA7CiAgICAgbV93cml0YWJsZUJ1ZmZlciA9IFdURk1vdmUobmV4dEJ1ZmZlcik7Cisg
ICAgcmV0dXJuIGhhZFByZXZpb3VzQnVmZmVyID8gRGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6WWVzIDog
RGlkQ2hhbmdlSXRlbUJ1ZmZlcjo6Tm87CiB9CiAKLXZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kRW5j
b2RlZERhdGEoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQordm9pZCBJdGVtQnVmZmVyOjphcHBl
bmQoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1dG8gZGF0YSA9IG1fd3JpdGlu
Z0NsaWVudC0+ZW5jb2RlSXRlbSh0ZW1wb3JhcnlJdGVtKTsKICAgICBpZiAoIWRhdGEpCkBAIC05
MDMsMTMgKzg5NCwyMCBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZEVuY29kZWREYXRhKEl0ZW1I
YW5kbGUgdGVtcG9yYXJ5SXRlbSkKICAgICBhdXRvIGRhdGFMZW5ndGggPSBkYXRhLT5zaXplKCk7
CiAgICAgYXV0byBhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbSA9IDIgKiBzaXplb2Yo
dWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxl
bmd0aCk7CiAKLSAgICBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRpdGlvbmFsQ2FwYWNp
dHlGb3JFbmNvZGVkSXRlbSk7CisgICAgYXV0byBidWZmZXJDaGFuZ2VkID0gc3dhcFdyaXRhYmxl
QnVmZmVySWZOZWVkZWQoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0pOwogCiAgICAg
bV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4odGVtcG9yYXJ5SXRlbS50eXBlKCkpOwogICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3QqPihtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVz
KVsxXSA9IGRhdGFMZW5ndGg7CiAgICAgbWVtY3B5KG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1f
d3JpdHRlbk51bWJlck9mQnl0ZXMgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSwgZGF0YS0+ZGF0YUFz
VUludDhQdHIoKSwgZGF0YUxlbmd0aCk7CiAKLSAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9
IGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtOworICAgIGRpZEFwcGVuZERhdGEoYWRk
aXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1ZmZlckNoYW5nZWQpOworfQorCit2b2lk
IEl0ZW1CdWZmZXI6OmRpZEFwcGVuZERhdGEoc2l6ZV90IG51bWJlck9mQnl0ZXMsIERpZENoYW5n
ZUl0ZW1CdWZmZXIgZGlkQ2hhbmdlSXRlbUJ1ZmZlcikKK3sKKyAgICBtX3dyaXR0ZW5OdW1iZXJP
ZkJ5dGVzICs9IG51bWJlck9mQnl0ZXM7CisgICAgaWYgKG1fd3JpdGluZ0NsaWVudCkKKyAgICAg
ICAgbV93cml0aW5nQ2xpZW50LT5kaWRBcHBlbmREYXRhKG1fd3JpdGFibGVCdWZmZXIsIG51bWJl
ck9mQnl0ZXMsIGRpZENoYW5nZUl0ZW1CdWZmZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGMx
MGNjM2U1MmEyMGFiNWVjMDJhNTYwNmNmYzg0OTMxZmYyMTI4NmYuLjZjZTNiNWVjYzQwYjc5NDRk
MjdkMzQ4MTgxNjk5ZGE4MDFmYzQwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmgKQEAgLTgzLDEyICs4MywxNSBAQCBzdHJ1Y3QgSXRlbUhhbmRsZSB7CiAgICAg
dm9pZCBjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3Q7CiB9OwogCitlbnVtIGNs
YXNzIERpZENoYW5nZUl0ZW1CdWZmZXIgOiBib29sIHsgTm8sIFllcyB9OworCiBjbGFzcyBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SXRlbUJ1ZmZlcldy
aXRpbmdDbGllbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJ
dGVtQnVmZmVyKHNpemVfdCkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZW5jb2RlSXRlbShJdGVtSGFuZGxlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEFw
cGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCBudW1iZXJPZkJ5dGVzLCBE
aWRDaGFuZ2VJdGVtQnVmZmVyKSA9IDA7CiB9OwogCiBjbGFzcyBJdGVtQnVmZmVyUmVhZGluZ0Ns
aWVudCB7CkBAIC0xNTIsMTcgKzE1NSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGF0aWMg
dWludDhfdCB0ZW1wb3JhcnlJdGVtQnVmZmVyW3NpemVvZih1aW50NjRfdCkgKyBzaXplb2YoVCld
OwogICAgICAgICAgICAgdGVtcG9yYXJ5SXRlbUJ1ZmZlclswXSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KFQ6Oml0ZW1UeXBlKTsKICAgICAgICAgICAgIG5ldyAodGVtcG9yYXJ5SXRlbUJ1ZmZlciAr
IHNpemVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAg
ICAgICAgIGFwcGVuZEVuY29kZWREYXRhKHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9KTsKKyAgICAg
ICAgICAgIGFwcGVuZCh7IHRlbXBvcmFyeUl0ZW1CdWZmZXIgfSk7CiAgICAgICAgICAgICBJdGVt
SGFuZGxlIHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9LmRlc3Ryb3koKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHBh
ZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSkpOworICAgICAgICBhdXRv
IGJ1ZmZlckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpKTsKIAogICAgICAgICBpZiAoIXN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUpCiAgICAgICAgICAgICBtX2l0ZW1zVG9E
ZXN0cm95SW5BbGxvY2F0ZWRCdWZmZXJzLmFwcGVuZCh7ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFb
bV93cml0dGVuTnVtYmVyT2ZCeXRlc10gfSk7CiAKLSAgICAgICAgdW5jaGVja2VkQXBwZW5kPFQ+
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgIHVuY2hlY2tlZEFwcGVuZDxU
PihidWZmZXJDaGFuZ2VkLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgIH0KIAog
ICAgIHZvaWQgc2V0Q2xpZW50KEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50KiBjbGllbnQpIHsgbV93
cml0aW5nQ2xpZW50ID0gY2xpZW50OyB9CkBAIC0xNzEsMTUgKzE3NCwxNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGVzJiByZWFkT25seUJ1ZmZlcnMoKSBj
b25zdCB7IHJldHVybiBtX3JlYWRPbmx5QnVmZmVyczsgfQogICAgIHZvaWQgZm9yRWFjaEl0ZW1C
dWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBJdGVtQnVmZmVySGFuZGxlJik+JiYpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQXBwZW5kRGF0YShzaXplX3QgbnVtYmVyT2ZCeXRl
cywgRGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN3YXBX
cml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZEVuY29kZWREYXRhKEl0ZW1IYW5kbGUpOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgdW5jaGVja2VkQXBwZW5kKEFyZ3MmJi4u
LiBhcmdzKQorICAgIFdFQkNPUkVfRVhQT1JUIERpZENoYW5nZUl0ZW1CdWZmZXIgc3dhcFdyaXRh
YmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKEl0ZW1IYW5kbGUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNs
YXNzLi4uIEFyZ3M+IHZvaWQgdW5jaGVja2VkQXBwZW5kKERpZENoYW5nZUl0ZW1CdWZmZXIgZGlk
Q2hhbmdlSXRlbUJ1ZmZlciwgQXJncyYmLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBhdXRvKiBz
dGFydE9mSXRlbSA9ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRl
c107CiAgICAgICAgIHN0YXJ0T2ZJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVDo6aXRl
bVR5cGUpOwogICAgICAgICBuZXcgKHN0YXJ0T2ZJdGVtICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5
dGVzICs9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSk7CisgICAg
ICAgIGRpZEFwcGVuZERhdGEocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1U
eXBlKSwgZGlkQ2hhbmdlSXRlbUJ1ZmZlcik7CiAgICAgfQogCiAgICAgSXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQqIG1fcmVhZGluZ0NsaWVudCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBmMTFhOWZlZGQwN2M0MDlmMjk4OThkZTM5Yzgy
MzEwMzFiNDE3ZWQwLi5jMGM3M2I4M2JkNTJlYWEwNGE5NTE3ODE4MDQ0NTM5NDdiYmM5NWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC0xMzAsOCArMTMw
LDYgQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAg
ICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZl
cik7CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgogICAg
ICAgICByZXR1cm4gc2l6ZW9mKE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcik7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoTWV0YUNv
bW1hbmRFbmQpOwogICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKICAgICAgICAgcmV0
dXJuIHNpemVvZihQdXRJbWFnZURhdGEpOwogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVG
b3JNZWRpYToKQEAgLTE4Niw3ICsxODQsNiBAQCBib29sIGlzRHJhd2luZ0l0ZW0oSXRlbVR5cGUg
dHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgogICAgIGNhc2UgSXRl
bVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZEVuZDoKICAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgogICAgIGNhc2UgSXRl
bVR5cGU6OlJvdGF0ZToKICAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgpAQCAtMjk5LDcgKzI5Niw2
IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6
Rmx1c2hDb250ZXh0OgogICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0
ZW1CdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6
CiAgICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmgKaW5kZXggOWRmZTJiOTkyZDAxYzM1MTkyZTg1ODU3ZWM4MDdkMGM5OGFmNTNhNi4u
MGU5NDdhMDZkYWI1YTJkZmI0NzY5MDgyZjhjYWM1NDhhZjg5MzQzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC03Niw3ICs3Niw2IEBAIGVudW0gY2xhc3MgSXRl
bVR5cGUgOiB1aW50OF90IHsKICAgICBGaWxsUGF0aCwKICAgICBGaWxsRWxsaXBzZSwKICAgICBG
bHVzaENvbnRleHQsCi0gICAgTWV0YUNvbW1hbmRFbmQsCiAgICAgTWV0YUNvbW1hbmRDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyLAogICAgIE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciwK
ICAgICBQdXRJbWFnZURhdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5k
ZXggMzMxMTk4MzMwZTE0MzlkMjEwMWNhYmEwNTRmYzBhNTk0MzczN2M5Zi4uYmRiZDIzOWY3MzM3
ODQwMTUyNzcxYTJmNDU3YmM0Njk1MTBkMGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcApAQCAtMTAxNCwxMSArMTAxNCw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9u
CiAgICAgcmV0dXJuIHRzOwogfQogCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgTWV0YUNvbW1hbmRFbmQmKQotewotICAgIHJldHVybiB0czsKLX0K
LQogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBl
IHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xMDcwLDcgKzEwNjUsNiBAQCBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkK
ICAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6IHRzIDw8ICJmbHVzaC1jb250ZXh0Ijsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbklt
YWdlQnVmZmVyOiB0cyA8PCAibWV0YS1jb21tYW5kLWNoYW5nZS1kZXN0aW5hdGlvbi1pbWFnZS1i
dWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1C
dWZmZXI6IHRzIDw8ICJtZXRhLWNvbW1hbmQtY2hhbmdlLWl0ZW0tYnVmZmVyIjsgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6IHRzIDw8ICJtZXRhLWNvbW1hbmQtZW5k
IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB0cyA8PCAicHV0LWlt
YWdlLWRhdGEiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6
IHRzIDw8ICJwYWludC1mcmFtZS1mb3ItbWVkaWEiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VSZWN0OiB0cyA8PCAic3Ryb2tlLXJlY3QiOyBicmVhazsKQEAgLTEyMzIsOSArMTIy
Niw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUg
aXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6CiAg
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRFbmQ6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21tYW5kRW5kPigpOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFB1dElt
YWdlRGF0YT4oKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAppbmRleCA3MDBjNjg3NDkxNTQ3Zjk5OWI4OTAyZWZjMmU0NWVkMTc2OGI0YzhjLi5jN2E5YTIw
ZDliYTA5ZTc3ODE0NmQ0OGQxMzk3ZDMxNmE1MWZmNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKQEAgLTIyNTAsMTMgKzIyNTAsNiBAQCBwcml2YXRlOgogICAgIEl0ZW1CdWZm
ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKLWNsYXNzIE1ldGFDb21tYW5kRW5kIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5
cGU6Ok1ldGFDb21tYW5kRW5kOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0
ZW0gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFs
c2U7Ci19OwotCiBjbGFzcyBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVt
VHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOwpAQCAtMjMzMSw3
ICsyMzI0LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZp
bGxQYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2Us
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQsCi0gICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZCwKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25J
bWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21t
YW5kQ2hhbmdlSXRlbUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlB1dEltYWdlRGF0YSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4
IDc3Y2JhMzM2ZGM1Yjk0ZjRkYjIxZGE2NjExMDdiZDRjMzJjZjcwODUuLmEzOWQ3MmJjMThjYzg2
ZWE2NDBmMTQ1YmVjNmVjMTNhYmQ0ODZjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJikgeyB9CiAgICAgfTsKIAorICAgIHZvaWQg
Zmx1c2hDb250ZXh0KEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IGFwcGVuZDxGbHVzaENv
bnRleHQ+KGlkZW50aWZpZXIpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERyYXdH
bHlwaHNSZWNvcmRlcjsKICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNjQsOCArMTY2LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOwot
ICAgIHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKIAogICAgIHZvaWQgYXBwZW5k
U3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggZGY0NGM5YzMwYWM2YzhjM2M2ZjkwMWYyYTgxMDcz
ZGViNDVmOTUxNS4uNGRhOGUxZDdmZDJkOWNiZjgwNDA3MTE0ZjVmNWQ2MDgwNTlhZTM4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMTE3LDEyICsxMTcs
NiBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRp
YWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoaXRlbS5pczxNZXRhQ29tbWFuZEVuZD4oKSkgewotICAgICAgICAg
ICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7Ci0gICAgICAg
ICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpFbmRPZkRp
c3BsYXlMaXN0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAo
YXV0byByZWFzb25Gb3JTdG9wcGluZyA9IGFwcGx5SXRlbShpdGVtKSkgewogICAgICAgICAgICAg
cmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3BwaW5nOwogICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCBjNDQy
NzFmMTBlZWQwYmYwMGFhMWYzZmJmNzAyYTQxYWRjYTNkOTIwLi4xMzc0NmFiYmY4Y2FjNjkzNjMy
ZTE1NGM1MjlmZDY3ODNhNmRiM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmgKQEAgLTQyLDcgKzQyLDYgQEAgZW51bSBjbGFzcyBTdG9wUmVwbGF5UmVhc29uIDogdWlu
dDhfdCB7CiAgICAgUmVwbGF5ZWRBbGxJdGVtcywKICAgICBNaXNzaW5nQ2FjaGVkUmVzb3VyY2Us
CiAgICAgQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlciwKLSAgICBFbmRPZkRpc3BsYXlMaXN0
LAogICAgIERlY29kaW5nRmFpbHVyZSAvLyBGSVhNRTogUHJvcGFnYXRlIGRlY29kaW5nIGVycm9y
cyB0byBkaXNwbGF5IGxpc3QgcmVwbGF5IGNsaWVudHMgdGhyb3VnaCB0aGlzIGVudW0gYXMgd2Vs
bC4KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9E
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCmluZGV4IDRlNGQ0OTFmMGQwOTUzODk2
NDNiNDhhMjcwYjI2YWVmMTM3YjdiZmUuLmFkMTEzNmUzZThjZTI2YTA4Y2UyYjcxOTI3ZTJjYmQw
NDI4NTJhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9E
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApAQCAtMzEsMTQgKzMxLDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzaXplX3QgRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlOjpMb2NrIHsgKnRoaXMgfTsKLSAgICBpZiAoTElLRUxZKGFtb3VudCA8
PSBoZWFkZXIoKS51bnJlYWRCeXRlcykpCi0gICAgICAgIHJldHVybiBoZWFkZXIoKS51bnJlYWRC
eXRlcyAtPSBhbW91bnQ7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVzdWx0IGluIHRl
cm1pbmF0aW5nIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICBoZWFkZXIoKS51bnJlYWRCeXRlcyA9IDA7Ci0gICAgcmV0dXJuIDA7CisgICAgYXV0byBwcmV2
aW91c1VucmVhZEJ5dGVzID0gaGVhZGVyKCkudW5yZWFkQnl0ZXMuZXhjaGFuZ2VTdWIoYW1vdW50
KTsKKyAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNVbnJlYWRCeXRlcyA8IGFtb3VudCkpIHsKKyAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlc3VsdCBpbiB0ZXJtaW5hdGluZyB0aGUgd2Vi
IHByb2Nlc3MuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcHJldmlvdXNVbnJlYWRCeXRlcyAtIGFtb3Vu
dDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGU6OmRpc3BsYXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgY2FwYWNpdHksIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCYgY2xp
ZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBlNjEzYWQwMDRjNDYzYWUzM2MzODk1ZDA0ODMxMmQz
ZTQyZTU3N2U4Li41Zjk0MjAxYmU0YTM5OWQ4ODRlMWIyNDA3MzM5NDdjNjZkMWNlOGExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaApAQCAtOTAsMTcgKzkwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9
CiAKLSAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAo
ZGlzcGxheUxpc3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNv
bnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVS
ZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7Ci0gICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2
ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCku
bmF0aXZlSW1hZ2VzKCk7Ci0gICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciBy
ZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0
LCAmaW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07Ci0gICAgICAgIHJlcGxheWVy
LnJlcGxheSgpOwotICAgIH0KLQogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDsKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCmluZGV4IDc5ZTViYjhmNTk4YjNlZDVlNzJmOGI2ZDU4ZTQ3NjhlNjAyMTM4YzYuLjEzMWU5
NTU1N2E5Y2UyMGMzYWNhYjAyZTJkOGI3MmU3ZGZmZGRiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKQEAgLTEyOSwzMyArMTI5LDU0IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZmZXIobWFrZVJlZigqaW1hZ2VCdWZm
ZXIpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0
c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZSYgaGFuZGxlLCBzaXplX3QgaW5pdGlhbE9mZnNldCkKK0Rpc3BsYXlMaXN0OjpSZXBsYXlS
ZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbikKIHsKKyAg
ICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSogcmVwbGF5ZXJEZWxlZ2F0ZSA9IG51bGxw
dHI7CisgICAgaWYgKGRlc3RpbmF0aW9uLnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZCkKKyAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PEFj
Y2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIqPigmZGVzdGluYXRpb24pOworICAgIGVsc2UKKyAg
ICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlcio+KCZkZXN0aW5hdGlvbik7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyIHsKKyAgICAgICAgZGVzdGluYXRpb24uY29udGV4dCgpLAorICAgICAg
ICBkaXNwbGF5TGlzdCwKKyAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZl
cnMoKSwKKyAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKSwKKyAg
ICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZQorICAgIH0ucmVwbGF5KCk7Cit9CisKK1JlZlB0cjxJbWFn
ZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKEltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRp
b24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgaGFuZGxl
KQoreworICAgIGF1dG8gZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKGluaXRpYWxEZXN0aW5hdGlv
bik7CiAgICAgYXV0byBoYW5kbGVQcm90ZWN0b3IgPSBtYWtlUmVmKGhhbmRsZSk7CiAKLSAgICBz
aXplX3Qgb2Zmc2V0ID0gaW5pdGlhbE9mZnNldDsKKyAgICBhdXRvIG9mZnNldCA9IGluaXRpYWxP
ZmZzZXQ7CiAgICAgc2l6ZV90IHNpemVUb1JlYWQgPSAwOwotCiAgICAgZG8gewogICAgICAgICBz
aXplVG9SZWFkID0gaGFuZGxlLnVucmVhZEJ5dGVzKCk7CiAgICAgfSB3aGlsZSAoIXNpemVUb1Jl
YWQpOwogCi0gICAgd2hpbGUgKHNpemVUb1JlYWQpIHsKKyAgICB3aGlsZSAoZGVzdGluYXRpb24g
JiYgIW1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQpIHsKICAgICAgICAgYXV0byBkaXNwbGF5TGlzdCA9
IGhhbmRsZS5kaXNwbGF5TGlzdEZvclJlYWRpbmcob2Zmc2V0LCBzaXplVG9SZWFkLCAqdGhpcyk7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghZGlzcGxheUxpc3QpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGRlc3RpbmF0aW9uLnN1Ym1p
dERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gc3VibWl0
KCpkaXNwbGF5TGlzdCwgKmRlc3RpbmF0aW9uKTsKKyAgICAgICAgc2l6ZVRvUmVhZCA9IGhhbmRs
ZS5hZHZhbmNlKHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCk7CiAKICAgICAgICAgQ2hlY2tlZFNp
emUgY2hlY2tlZE9mZnNldCA9IG9mZnNldDsKLSAgICAgICAgY2hlY2tlZE9mZnNldCArPSBzaXpl
VG9SZWFkOworICAgICAgICBjaGVja2VkT2Zmc2V0ICs9IHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVh
ZDsKICAgICAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRl
IHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAg
ICBvZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgpOwpAQCAtMTYzLDE4ICsxODQsMjQg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5k
bGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW8KICAgICAgICAgaWYgKFVOTElLRUxZKG9mZnNldCA+
IGhhbmRsZS5zaGFyZWRNZW1vcnkoKS5zaXplKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
QWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUuYWR2
YW5jZShzaXplVG9SZWFkKTsKKyAgICAgICAgaWYgKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9
PSBEaXNwbGF5TGlzdDo6U3RvcFJlcGxheVJlYXNvbjo6Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcikKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0cihtX3JlbW90ZVJlc291
cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoKnJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlcikpOworCisgICAgICAgIGlmICghc2l6ZVRvUmVhZCkKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KKworICAgIHJldHVybiBkZXN0aW5hdGlvbjsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikK
IHsKICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
U3RhcnQsIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RFbmQpOwotICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRpb25C
dWZmZXJJZGVudGlmaWVyKTsKLSAgICBpZiAoVU5MSUtFTFkoIWltYWdlQnVmZmVyKSkgeworICAg
IGF1dG8gZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikpOwor
ICAgIGlmIChVTkxJS0VMWSghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgLy8g
RklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4K
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE4Nyw3
ICsyMTQsMTIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURp
c3BsYXlMaXN0KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWQKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZSgqaW1hZ2VCdWZmZXIsICppbml0
aWFsSGFuZGxlLCBpbml0aWFsT2Zmc2V0KTsKKyAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0g
bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0
aW5hdGlvbkltYWdlQnVmZmVyLCBpbml0aWFsT2Zmc2V0LCAqaW5pdGlhbEhhbmRsZSk7CisKKyAg
ICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICB3aGlsZSAobV9uZXh0SXRlbUJ1
ZmZlclRvUmVhZCkgewogICAgICAgICBhdXRvIG5leHRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlcy5nZXQobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCk7CkBAIC0xOTYsOSArMjI4LDE1
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlz
dChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkCiAgICAgICAgICAgICAvLyBJUEMgbWVzc2FnZSB3
aXRoIGEgc2hhcmVkIG1lbW9yeSBoYW5kbGUgdG8gdGhlIG5leHQgaXRlbSBidWZmZXIuCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQorCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29udGlu
dWUgcmVhZGluZyB0aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUgc3Rh
cnQuCiAgICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQgPSB7IH07Ci0gICAgICAgIGFwcGx5
RGlzcGxheUxpc3RzRnJvbUhhbmRsZSgqaW1hZ2VCdWZmZXIsICpuZXh0SGFuZGxlLCBTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKTsKKyAgICAgICAgZGVzdGluYXRpb25JbWFn
ZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlM
aXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6Omhl
YWRlclNpemUoKSwgKm5leHRIYW5kbGUpOworCisgICAgICAgIGlmICghZGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcikgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTMxNyw3ICszNTUsNiBAQCBPcHRp
b25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVz
aENvbnRleHQ6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpNZXRhQ29tbWFuZEVuZDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
UGFpbnRGcmFtZUZvck1lZGlhOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0
b3JlOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaAppbmRleCA1ODU5YjNiZjhkNmRmZjgyNDc5YzUyZTVlZTQzODI2MWQ5YTdkZDU1Li5l
MWYzNTA5NmEzYmQ1Njc3YTFiZDRiMGExYjA0NzQ0NGFlYjk2ZTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNw
bGF5TGlzdEl0ZW1zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTIs
NyArOTMsOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0K
IAotICAgIHZvaWQgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJiBkZXN0aW5hdGlvbiwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmLCBzaXplX3Qgb2Zmc2V0
KTsKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYg
ZGVzdGluYXRpb24pOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZSYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCmluZGV4
IDg2NWZhZWRjZGU3MDYzYTg0NDI0MDUwYmJiNzFmYzQ2ZDAyMmQ1MGIuLjIwYWM5N2UzNDg4MGNi
MjgzMWQ3YjQwMDk4NGU4NDU3OTEyYjNhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAtNTAsMzggKzUwLDEyIEBAIHB1YmxpYzoKIAog
ICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzKCkKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhpcyB9OwotICAgICAgICByZXR1cm4g
aGVhZGVyKCkudW5yZWFkQnl0ZXM7CisgICAgICAgIHJldHVybiBoZWFkZXIoKS51bnJlYWRCeXRl
cy5sb2FkKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1v
dW50KSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBjbGFzcyBMb2NrIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIExvY2soU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIGhhbmRsZSkKLSAgICAgICAgICAg
IDogbV9oYW5kbGUoaGFuZGxlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvJiBhdG9taWNW
YWx1ZSA9IG1faGFuZGxlLmhlYWRlcigpLmxvY2s7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGF2b2lkIHdhaXRpbmcgZm9y
ZXZlciBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcwotICAgICAgICAg
ICAgICAgIC8vIGhvbGRzIG9uIHRvIHRoZSBsb2NrIGluZGVmaW5pdGVseSAob3IgY3Jhc2hlcyB3
aGlsZSBob2xkaW5nIHRoZSBsb2NrKS4KLSAgICAgICAgICAgICAgICB1aW50NjRfdCB1bmxvY2tl
ZCA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKGF0b21pY1ZhbHVlLmNvbXBhcmVFeGNoYW5nZVdl
YWsodW5sb2NrZWQsIDEpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBUaHJlYWQ6OnlpZWxkKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICB+TG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1faGFuZGxlLmhlYWRlcigpLmxvY2su
c3RvcmUoMCk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlJiBtX2hhbmRsZTsKLSAgICB9OwotCiAgICAgU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQogICAgICAgICA6IG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQogICAgICAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVk
TWVtb3J5KSkKQEAgLTg5LDggKzYzLDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIHN0cnVj
dCBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciB7Ci0gICAgICAgIEF0b21pYzx1aW50NjRf
dD4gbG9jazsKLSAgICAgICAgdWludDY0X3QgdW5yZWFkQnl0ZXM7CisgICAgICAgIEF0b21pYzx1
aW50NjRfdD4gdW5yZWFkQnl0ZXM7CiAgICAgfTsKIAogICAgIERpc3BsYXlMaXN0U2hhcmVkTWVt
b3J5SGVhZGVyJiBoZWFkZXIoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxEaXNwbGF5TGlz
dFNoYXJlZE1lbW9yeUhlYWRlcio+KGRhdGEoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5jcHAKaW5kZXggZDgyZTNkZmFkZWU4NmViMGQ1NTQxYjI3ODU3NjgyMTg3ZjY1Y2Y4Yi4u
OGZmMzY1Y2QzNDJhODI2ZGEwNDQ5M2JiNjcyOTRjMmM1MWZhMDQzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5jcHAKQEAgLTMzLDIwICszMyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBzaXplX3QgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90
IGFtb3VudCkKIHsKLSAgICBDaGVja2VkU2l6ZSBjaGVja2VkV3JpdGFibGVPZmZzZXQgPSBtX3dy
aXRhYmxlT2Zmc2V0OwotICAgIGNoZWNrZWRXcml0YWJsZU9mZnNldCArPSBhbW91bnQ7Ci0gICAg
aWYgKFVOTElLRUxZKGNoZWNrZWRXcml0YWJsZU9mZnNldC5oYXNPdmVyZmxvd2VkKCkpKQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgYXV0byBsb2NrZXIgPSBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayB7ICp0aGlzIH07Ci0gICAgQ2hlY2tlZFNpemUg
Y2hlY2tlZFVucmVhZEJ5dGVzID0gaGVhZGVyKCkudW5yZWFkQnl0ZXM7Ci0gICAgY2hlY2tlZFVu
cmVhZEJ5dGVzICs9IGFtb3VudDsKLSAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZFVucmVhZEJ5dGVz
Lmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0KLSAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gY2hlY2tlZFdyaXRhYmxlT2Zmc2V0LnVuc2FmZUdl
dCgpOwotICAgIGhlYWRlcigpLnVucmVhZEJ5dGVzID0gY2hlY2tlZFVucmVhZEJ5dGVzLnVuc2Fm
ZUdldCgpOwotICAgIHJldHVybiBjaGVja2VkVW5yZWFkQnl0ZXMudW5zYWZlR2V0KCk7CisgICAg
bV93cml0YWJsZU9mZnNldCA9IChDaGVja2VkU2l6ZSB7IG1fd3JpdGFibGVPZmZzZXQgfSArIGFt
b3VudCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIChDaGVja2VkU2l6ZSB7IGhlYWRlcigpLnVu
cmVhZEJ5dGVzLmV4Y2hhbmdlQWRkKGFtb3VudCkgfSArIGFtb3VudCkudW5zYWZlR2V0KCk7CiB9
CiAKIHNpemVfdCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YXZhaWxhYmxlQ2FwYWNpdHkoKSBj
b25zdApAQCAtNjYsNyArNTQsNyBAQCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBEaXNw
bGF5TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRlSGFuZGxlKCkgY29uc3QKICAgICB9OwogfQogCi1i
b29sIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJs
ZSgpCitib29sIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjptb3ZlV3JpdGFibGVPZmZzZXRUb1N0
YXJ0SWZQb3NzaWJsZSgpCiB7CiAgICAgaWYgKG1fd3JpdGFibGVPZmZzZXQgPD0gU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X3dyaXRhYmxlT2Zmc2V0ID09IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFkZXJTaXplKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNw
bGF5TGlzdFdyaXRlckhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oCmluZGV4IDQ0ZWVmYWFiNDhmNDkxMWZlYWRi
ZWQ1OGFlNTdhMmE2M2IxZDhhZDcuLmZjN2EyMTY1M2EwZWI5NjgxOWViMWMwOWE5ZmMzNDQ0ODFh
NzM5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHNpemVfdCB3cml0YWJsZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fd3Jp
dGFibGVPZmZzZXQ7IH0KICAgICBzaXplX3QgYXZhaWxhYmxlQ2FwYWNpdHkoKSBjb25zdDsKIAot
ICAgIGJvb2wgcmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUoKTsKKyAgICBib29sIG1vdmVX
cml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxlKCk7CiAKICAgICBzaXplX3QgYWR2YW5jZShz
aXplX3QgYW1vdW50KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlckhhbmRsZSBjcmVhdGVIYW5kbGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKaW5kZXggMjI4MmUxM2FhYmY1M2Q2NDJlODQ0ZDQyNzAxZTA2NjVjMWQ1NDM4My4uMDM1NjI1
MWE4MmU0MDQ4YjkwOGVkODEyZWJlZDc5ZmE0NWY4NzRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKQEAgLTExOSw5ICsxMTksMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIC8vIFdhaXQgZm9yIG91ciBEaXNwbGF5TGlzdCB0byBiZSBmbHVzaGVk
IGJ1dCBkbyBub3QgaGFuZy4KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhX
YWl0aW5nRmx1c2ggPSAzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIG51bVdhaXRpbmdGbHVzaCA9
IDA7IG51bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRpbmdGbHVzaCAmJiBoYXNQZW5kaW5nRmx1c2go
KTsgKytudW1XYWl0aW5nRmx1c2gpCi0gICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS0+d2FpdEZvckRpZEZsdXNoKCk7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbWF4aW11bU51bWJlck9mVGltZW91dHMgPSAzOworICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZlRpbWVvdXRzID0gMDsKKyAgICAgICAgd2hpbGUgKG51bWJlck9mVGltZW91dHMgPCBtYXhp
bXVtTnVtYmVyT2ZUaW1lb3V0cyAmJiBoYXNQZW5kaW5nRmx1c2goKSkgeworICAgICAgICAgICAg
aWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckRpZEZsdXNoKCkpCisg
ICAgICAgICAgICAgICAgKytudW1iZXJPZlRpbWVvdXRzOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKQEAg
LTEzMywxOCArMTM2LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7Ci0gICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAg
ICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byYgbXV0YWJsZVRoaXMgPSBjb25z
dF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhpcyk7Ci0gICAgICAgIGF1dG8mIGRp
c3BsYXlMaXN0ID0gbXV0YWJsZVRoaXMubV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwot
ICAgICAgICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbXV0YWJs
ZVRoaXMuc3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwotICAgICAgICAgICAgbXV0YWJs
ZVRoaXMubV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAgICAgICAgICBk
aXNwbGF5TGlzdC5jbGVhcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZ2V0SW1hZ2VEYXRh
IGlzIHN5bmNocm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSBD
b21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgorICAgICAgICBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7
CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0SW1hZ2VE
YXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIH0KIApAQCAtMTY2LDYgKzE2MSw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1
c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoVU5MSUtFTFko
IW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKKyAgICAgICAgICAgIHJldHVybjsKKwog
ICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3Rh
cnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwogICAgICAgICBmbHVzaERyYXdpbmdDb250
ZXh0QW5kQ29tbWl0KCk7CiAgICAgICAgIHdhaXRGb3JEaWRGbHVzaFdpdGhUaW1lb3V0KCk7CkBA
IC0xNzMsNDkgKzE3MSw1OCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNoRHJhd2luZ0Nv
bnRleHRBbmRDb21taXQoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYg
ZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlm
IChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
ICghbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3Jk
ZXIoKS5mbHVzaENvbnRleHQobV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKKyAgICAgICAgfQogCi0g
ICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVz
aElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFw
cGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50
aWZpZXIpOwotICAgICAgICBzdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7Ci0gICAgICAg
IGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgICAgIG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxh
eUxpc3QgPSAwOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2VuZERl
ZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7CisgICAgICAgIGNsZWFyRGlzcGxheUxpc3Qo
KTsKICAgICB9CiAKLSAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCisgICAgdm9pZCBj
YWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiBpbWFnZSkgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwgZGlzcGxh
eUxpc3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVJbWFnZShp
bWFnZSk7CisgICAgfQorCisgICAgdm9pZCBjaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBuZXh0SW1hZ2VCdWZmZXIpIGZpbmFs
CisgICAgeworICAgICAgICBib29sIHdhc0VtcHR5ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5
TGlzdCgpLmlzRW1wdHkoKTsKKyAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgp
LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyPihuZXh0SW1hZ2VCdWZmZXIpOworICAgICAgICBpZiAod2Fz
RW1wdHkpCisgICAgICAgICAgICBjbGVhckRpc3BsYXlMaXN0KCk7CisgICAgfQogCi0gICAgICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5
TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xlYXJEaXNw
bGF5TGlzdCgpIGZpbmFsCisgICAgeworICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlM
aXN0KCkuY2xlYXIoKTsKICAgICB9CiAKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGNv
bnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7Ci0gICAgICAgIGF1dG8m
IGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBp
ZiAoKyttX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0IDwgRGlzcGxheUxpc3RCYXRjaFNp
emUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChMSUtFTFkobV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkpKQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHktPndpbGxBcHBlbmRJdGVtKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICB9CiAKLSAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7Ci0gICAg
ICAgIHN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgZGlzcGxheUxpc3Qu
Y2xlYXIoKTsKKyAgICB2b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJIYW5kbGUmIGhhbmRsZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoTElLRUxZKG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5k
aWRBcHBlbmREYXRhKGhhbmRsZSwgbnVtYmVyT2ZCeXRlcywgZGlkQ2hhbmdlSXRlbUJ1ZmZlciwg
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1hZ2UpIG92ZXJyaWRlCisgICAgdm9p
ZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBl
KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KQotICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgICAgICBpZiAo
dHlwZSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcikK
KyAgICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKICAgICB9CiAKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBj
YXBhY2l0eSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKKyAgICAgICAgaWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkpCiAgICAgICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PmNyZWF0ZUl0ZW1CdWZmZXIoY2FwYWNpdHksIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI4OSw3ICsyOTYsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
bHVzaENvbnRleHQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6CiAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXI6Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29t
bWFuZEVuZDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBh
aW50RnJhbWVGb3JNZWRpYToKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlJlc3RvcmU6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpSb3RhdGU6CkBAIC0zMTgsMTIgKzMyNCw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGUgdHlwZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmICh0eXBlID09IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKQotICAgICAgICAg
ICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwotICAgIH0KLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6Om1ha2VVbmlxdWU8VGhyZWFkU2FmZVJl
bW90ZUltYWdlQnVmZmVyRmx1c2hlcjxCYWNrZW5kVHlwZT4+KCp0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA3NDI2NTk2ODhhYTA3OTc5NzJhNmMw
ZWQ4YjJhZjQ1YWZhODViYTBmLi4xMTRhYzY1YjE2MmZkNTMwODhlNGU0ZWY0NTE5MDJiZGVlYjBm
ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC04Nyw4
ICs4NywxMCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdAogICAgIHByZXZpb3VzQ29ubmVjdGlv
bi5yZW1vdmVDbGllbnQoKnRoaXMpOwogCiAgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5k
bGVzLmNsZWFyKCk7Ci0gICAgbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRp
bmcuY2xlYXIoKTsKICAgICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5jbGVhcigpOworICAg
IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0
OworICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0gV1RGOjpudWxsb3B0Owor
ICAgIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgPSAwOwogCiAg
ICAgcmVlc3RhYmxpc2hHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogfQpAQCAtMTQ3LDMwICsxNDks
NiBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldElt
YWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aQogICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVu
Y2UuYnVmZmVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJt
aXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVy
KQotewotICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIsIHNpemVfdD4+IGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlOwotICAg
IGJvb2wgaXNGaXJzdEhhbmRsZSA9IHRydWU7Ci0KLSAgICBkaXNwbGF5TGlzdC5mb3JFYWNoSXRl
bUJ1ZmZlcihbJl0gKGF1dG8mIGhhbmRsZSkgewotICAgICAgICBtX2lkZW50aWZpZXJzT2ZIYW5k
bGVzQXZhaWxhYmxlRm9yV3JpdGluZy5hZGQoaGFuZGxlLmlkZW50aWZpZXIpOwotCi0gICAgICAg
IGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChoYW5k
bGUuaWRlbnRpZmllcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShzaGFy
ZWRIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQgZGlzcGxheSBsaXN0IiwgV1RGX1BS
RVRUWV9GVU5DVElPTik7Ci0KLSAgICAgICAgYm9vbCB1bnJlYWRDb3VudFdhc0VtcHR5ID0gc2hh
cmVkSGFuZGxlLT5hZHZhbmNlKGhhbmRsZS5jYXBhY2l0eSkgPT0gaGFuZGxlLmNhcGFjaXR5Owot
ICAgICAgICBpZiAoaXNGaXJzdEhhbmRsZSAmJiB1bnJlYWRDb3VudFdhc0VtcHR5KQotICAgICAg
ICAgICAgaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2UgPSB7eyBoYW5kbGUuaWRl
bnRpZmllciwgaGFuZGxlLmRhdGEgLSBzaGFyZWRIYW5kbGUtPmRhdGEoKSB9fTsKLQotICAgICAg
ICBpc0ZpcnN0SGFuZGxlID0gZmFsc2U7Ci0gICAgfSk7Ci0KLSAgICBpZiAoaWRlbnRpZmllckFu
ZE9mZnNldEZvcldha2VVcE1lc3NhZ2UpIHsKLSAgICAgICAgYXV0byBbaWRlbnRpZmllciwgb2Zm
c2V0XSA9ICppZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2FnZTsKLSAgICAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5
TGlzdChpZGVudGlmaWVyLCBvZmZzZXQsIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIH0KLX0KLQogdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKGhhbmRsZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CkBAIC0yMDEsMzcgKzE3OSw5MyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6
OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZQogICAgICAgICBpbWFnZUJ1ZmZlci0+ZGlkRmx1c2go
Zmx1c2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OnVwZGF0ZVJldXNhYmxlSGFuZGxlcygpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6d2lsbEFwcGVuZEl0ZW0oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG5ld0Rlc3RpbmF0
aW9uSWRlbnRpZmllcikKIHsKLSAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IG1faWRlbnRpZmll
cnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nKSB7Ci0gICAgICAgIGF1dG8qIGhhbmRsZSA9
IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVudGlmaWVyKTsKLSAgICAgICAgaWYg
KCFoYW5kbGUtPnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBpZiAobV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgaWYgKG1fY3Vy
cmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyID09IG5ld0Rlc3RpbmF0aW9uSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1faWRlbnRpZmllcnNPZlJldXNh
YmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8gcHJldmlvdXNEZXN0
aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY3VycmVudERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y2FjaGVkSW1hZ2VCdWZmZXIoKnByZXZpb3VzRGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKSkK
KyAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKG5l
d0Rlc3RpbmF0aW9uSWRlbnRpZmllcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KKworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIobmV3RGVzdGluYXRpb25J
ZGVudGlmaWVyKSkKKyAgICAgICAgaW1hZ2VCdWZmZXItPmNsZWFyRGlzcGxheUxpc3QoKTsKIH0K
IAotRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpzZW5kV2FrZXVwTWVzc2FnZShjb25zdCBXYWtldXBNZXNzYWdlQXJn
dW1lbnRzJiBhcmd1bWVudHMpCiB7Ci0gICAgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6V2FrZVVwQW5kQXBwbHlEaXNw
bGF5TGlzdChhcmd1bWVudHMuaXRlbUJ1ZmZlcklkZW50aWZpZXIsIGFyZ3VtZW50cy5pbml0aWFs
T2Zmc2V0LCBhcmd1bWVudHMuaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7Cit9CiAKLSAgICB3aGlsZSAoIW1faWRlbnRpZmllcnNPZlJldXNhYmxl
SGFuZGxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9pZGVudGlm
aWVyc09mUmV1c2FibGVIYW5kbGVzLmZpcnN0KCk7Ci0gICAgICAgIGF1dG8qIHJldXNhYmxlSGFu
ZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlkZW50aWZpZXIpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UocmV1c2FibGVIYW5kbGUsICIlcyBmYWlsZWQg
dG8gZmluZCBzaGFyZWQgZGlzcGxheSBsaXN0IiwgV1RGX1BSRVRUWV9GVU5DVElPTik7Cit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlm
TmVlZGVkKCkKK3sKKyAgICBhdXRvIGFyZ3VtZW50cyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWZlcnJl
ZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIFdURjo6bnVsbG9wdCk7CisgICAgaWYgKCFhcmd1bWVu
dHMpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAobV9pZGVudGlmaWVyc09mSGFuZGxl
c0F2YWlsYWJsZUZvcldyaXRpbmcuY29udGFpbnMoaWRlbnRpZmllcikgJiYgcmV1c2FibGVIYW5k
bGUtPmF2YWlsYWJsZUNhcGFjaXR5KCkgPj0gY2FwYWNpdHkpIHsKLSAgICAgICAgICAgIG1faWRl
bnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLnJlbW92ZShpZGVudGlmaWVyKTsK
LSAgICAgICAgICAgIHJldHVybiByZXVzYWJsZUhhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7Ci0gICAg
ICAgIH0KKyAgICBzZW5kV2FrZXVwTWVzc2FnZSgqYXJndW1lbnRzKTsKKyAgICBtX3JlbWFpbmlu
Z0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwID0gMDsKK30KIAotICAgICAgICBtX2lk
ZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMucmVtb3ZlRmlyc3QoKTsKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySGFuZGxlJiBoYW5kbGUsIHNpemVfdCBudW1iZXJPZkJ5dGVzLCBEaXNwbGF5TGlzdDo6
RGlkQ2hhbmdlSXRlbUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVmZmVyLCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikKK3sKKyAgICBhdXRvKiBzaGFyZWRI
YW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaGFuZGxlLmlkZW50aWZpZXIp
OworICAgIGlmIChVTkxJS0VMWSghc2hhcmVkSGFuZGxlKSkKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKworICAgIGJvb2wgd2FzRW1wdHkgPSBzaGFyZWRIYW5kbGUtPmFk
dmFuY2UobnVtYmVyT2ZCeXRlcykgPT0gbnVtYmVyT2ZCeXRlczsKKyAgICBpZiAoIXdhc0VtcHR5
IHx8IGRpZENoYW5nZUl0ZW1CdWZmZXIgPT0gRGlzcGxheUxpc3Q6OkRpZENoYW5nZUl0ZW1CdWZm
ZXI6OlllcykgeworICAgICAgICBpZiAobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMg
JiYgIS0tbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCkKKyAgICAg
ICAgICAgIHNlbmRXYWtldXBNZXNzYWdlKCpzdGQ6OmV4Y2hhbmdlKG1fZGVmZXJyZWRXYWtldXBN
ZXNzYWdlQXJndW1lbnRzLCBXVEY6Om51bGxvcHQpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIHNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRlZCgpOworCisgICAgLy8gSW5z
dGVhZCBvZiBzZW5kaW5nIHRoZSB3YWtldXAgbWVzc2FnZSBpbW1lZGlhdGVseSwgd2FpdCBmb3Ig
c29tZSBhZGRpdGlvbmFsIGRhdGEuIFRoaXMgZ2l2ZXMgdGhlCisgICAgLy8gd2ViIHByb2Nlc3Mg
YSAiaGVhZCBzdGFydCIsIGRlY3JlYXNpbmcgdGhlIGxpa2VsaWhvb2QgdGhhdCB0aGUgR1BVIHBy
b2Nlc3Mgd2lsbCBlbmNvdW50ZXIgZnJlcXVlbnQKKyAgICAvLyB3YWtldXBzIHdoZW4gcHJvY2Vz
c2luZyBhIGxhcmdlIGFtb3VudCBvZiBkaXNwbGF5IGxpc3QgaXRlbXMuCisgICAgY29uc3RleHBy
IHVuc2lnbmVkIGl0ZW1Db3VudEh5c3RlcmVzaXNCZWZvcmVTZW5kaW5nV2FrZXVwID0gNTEyOwor
CisgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCA9IGl0ZW1D
b3VudEh5c3RlcmVzaXNCZWZvcmVTZW5kaW5nV2FrZXVwOworICAgIG1fZGVmZXJyZWRXYWtldXBN
ZXNzYWdlQXJndW1lbnRzID0ge3sKKyAgICAgICAgaGFuZGxlLmlkZW50aWZpZXIsCisgICAgICAg
IHNoYXJlZEhhbmRsZS0+d3JpdGFibGVPZmZzZXQoKSAtIG51bWJlck9mQnl0ZXMsCisgICAgICAg
IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIKKyAgICB9fTsKK30KKworUmVmUHRyPERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZpbmRSZXVzYWJsZURp
c3BsYXlMaXN0SGFuZGxlKHNpemVfdCBjYXBhY2l0eSkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9p
ZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmlzRW1wdHkoKSkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBtb3N0UmVjZW50bHlVc2VkSWRlbnRpZmllciA9IG1faWRlbnRp
ZmllcnNPZlJldXNhYmxlSGFuZGxlcy5maXJzdCgpOworICAgIGF1dG8gaGFuZGxlID0gbWFrZVJl
ZlB0cihtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQobW9zdFJlY2VudGx5VXNlZElkZW50
aWZpZXIpKTsKKyAgICBoYW5kbGUtPm1vdmVXcml0YWJsZU9mZnNldFRvU3RhcnRJZlBvc3NpYmxl
KCk7CisgICAgaWYgKGhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNpdHkoKSA+PSBjYXBhY2l0eSkKKyAg
ICAgICAgcmV0dXJuIGhhbmRsZTsKKworICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxl
cy5hcHBlbmQobV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLnRha2VGaXJzdCgpKTsKKwor
ICAgIGF1dG8gbGVhc3RSZWNlbnRseVVzZWRJZGVudGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1
c2FibGVIYW5kbGVzLmZpcnN0KCk7CisgICAgaWYgKGxlYXN0UmVjZW50bHlVc2VkSWRlbnRpZmll
ciAhPSBtb3N0UmVjZW50bHlVc2VkSWRlbnRpZmllcikgeworICAgICAgICBhdXRvIGhhbmRsZSA9
IG1ha2VSZWZQdHIobV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGxlYXN0UmVjZW50bHlV
c2VkSWRlbnRpZmllcikpOworICAgICAgICBpZiAoaGFuZGxlLT5tb3ZlV3JpdGFibGVPZmZzZXRU
b1N0YXJ0SWZQb3NzaWJsZSgpICYmIGhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNpdHkoKSA+PSBjYXBh
Y2l0eSkKKyAgICAgICAgICAgIHJldHVybiBoYW5kbGU7CisgICAgfQorCisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0Rpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAg
aWYgKGF1dG8gaGFuZGxlID0gZmluZFJldXNhYmxlRGlzcGxheUxpc3RIYW5kbGUoY2FwYWNpdHkp
KQorICAgICAgICByZXR1cm4gaGFuZGxlLT5jcmVhdGVIYW5kbGUoKTsKKwogICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSA9IDEgPDwgMTY7CiAg
ICAgc3RhdGljX2Fzc2VydChkZWZhdWx0U2hhcmVkSXRlbUJ1ZmZlclNpemUgPiBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpKTsKIApAQCAtMjQ4LDcgKzI4Miw3IEBAIERpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3Jl
YXRlSXRlbUJ1ZmZlcihzaXplCiAgICAgYXV0byBuZXdIYW5kbGUgPSBEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZTo6Y3JlYXRlKGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgp
KTsKICAgICBhdXRvIGRpc3BsYXlMaXN0SGFuZGxlID0gbmV3SGFuZGxlLT5jcmVhdGVIYW5kbGUo
KTsKIAotICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRpZmll
cik7CisgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLnByZXBlbmQoaWRlbnRpZmll
cik7CiAgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZpZXIsIFdURk1v
dmUobmV3SGFuZGxlKSk7CiAKICAgICByZXR1cm4gZGlzcGxheUxpc3RIYW5kbGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCAzYWI5Y2NiOWFhYWE4YmRiMzE0ZTQ4
NGZhMWRmZjRlMjBiYmY0YWNlLi5kYjYwOWZiNDRkNDhiMTkyYzJhODQ1MTdlMzg5MmQzZmYwMzZh
Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTY2LDYgKzY2
LDEwIEBAIHB1YmxpYzoKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkmIHJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OyB9CiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZl
cihzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogCisgICAgdm9pZCBkaWRBcHBlbmREYXRhKGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlJiwgc2l6ZV90IG51bWJl
ck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJdGVtQnVmZmVyLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25JbWFnZUJ1ZmZlcik7
CisgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIHZvaWQgc2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7CisK
ICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC03Niw3ICs4MCw2IEBAIHB1
YmxpYzoKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
V2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAgICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29t
bWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtOTIsMTcgKzk1LDI5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKICAgICB2b2lkIHJlZXN0YWJsaXNoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLSAgICB2b2lkIHVwZGF0ZVJldXNhYmxlSGFuZGxlcygpOwog
CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCiAgICAgdm9pZCBkaWRDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKIAorICAgIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4gZmluZFJldXNhYmxl
RGlzcGxheUxpc3RIYW5kbGUoc2l6ZV90IGNhcGFjaXR5KTsKKworICAgIHN0cnVjdCBXYWtldXBN
ZXNzYWdlQXJndW1lbnRzIHsKKyAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGl0ZW1CdWZmZXJJZGVudGlmaWVyOworICAgICAgICBzaXplX3QgaW5pdGlh
bE9mZnNldDsKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlt
YWdlQnVmZmVySWRlbnRpZmllcjsKKyAgICB9OworCisgICAgdm9pZCBzZW5kV2FrZXVwTWVzc2Fn
ZShjb25zdCBXYWtldXBNZXNzYWdlQXJndW1lbnRzJik7CisKICAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwogICAgIEhhc2hN
YXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlz
cGxheUxpc3RXcml0ZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBE
ZXF1ZTxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IG1faWRlbnRp
ZmllcnNPZlJldXNhYmxlSGFuZGxlczsKLSAgICBIYXNoU2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZv
cldyaXRpbmc7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07
CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1faWRl
bnRpZmllcnNPZkltYWdlQnVmZmVyc1BlbmRpbmdGbHVzaDsKKyAgICBPcHRpb25hbDxXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJJZGVudGlmaWVyOworICAgIE9wdGlvbmFsPFdha2V1cE1lc3NhZ2VBcmd1bWVudHM+IG1f
ZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzOworICAgIHVuc2lnbmVkIG1fcmVtYWluaW5n
SXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAzM2I2NzBjNmM5YmJmZTVkYmMxNmRlOWMwZTgxMmQ0YWRjNjg3OWEyLi45ODVjYTFl
ZDJiZDc4MWE2NjdhYjViMmFkMjM1ZDAxNWQ4ZTFjMzI0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMDQg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbmN1
cnJlbnQgZGlzcGxheSBsaXN0c10gU3luY2hyb25pemUgZGlzcGxheSBsaXN0IHJlbmRlcmluZyBh
Y3Jvc3MgcmVtb3RlIGltYWdlIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTA5MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE3NDc2
OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0xMi0wNCAgSm9uYXRoYW4gQmVkYXJkICA8amJl
ZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdHNjbXB5XSBsb2NhbC5Tdm4gcmVwb3J0
cyBpbmNvcnJlY3QgdGltZXN0YW1wcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IGViZDg2ZTMyZTA2MmNhZGY2
YTliMDFhZWRjYzc3YWQ4ZjZlMjQ1NDMuLmY3MDBjNTYyOWY2MDZlNWMyNmRmMTZiMjBiYjFkZWE5
NTRlODA3YTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9E
aXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBURVNUKERpc3BsYXlM
aXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVt
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1
aW50OF90KiBoYW5kbGVMb2NhdGlvbikKKyAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FS
Tl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRh
dGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBmaW5hbAog
ICAgICAgICB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEodHlwZSwgSXRlbVR5cGU6OlN0cm9rZVBh
dGgpOwogICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGgsIHNpemVvZihzaXplX3QpKTsK
QEAgLTIwNSw2ICsyMDUsOCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGll
bnQpCiAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oJmluZGV4KSwgc2l6ZW9mKHNpemVfdCkpOwogICAgICAgICB9CiAKKyAg
ICAgICAgdm9pZCBkaWRBcHBlbmREYXRhKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmLCBzaXplX3Qs
IERpZENoYW5nZUl0ZW1CdWZmZXIpIGZpbmFsIHsgfQorCiAgICAgICAgIFZlY3RvcjxTdHJva2VQ
YXRoPiYgbV9pdGVtczsKICAgICB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>