<?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>221560</bug_id>
          
          <creation_ts>2021-02-08 10:17:20 -0800</creation_ts>
          <short_desc>Connection clients should be able to obtain the messages as data instead of embedded in function references</short_desc>
          <delta_ts>2021-02-16 10:48:05 -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 Local 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>221891</dependson>
    
    <dependson>221894</dependson>
          <blocked>217211</blocked>
    
    <blocked>219641</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1726692</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-08 10:17:20 -0800</bug_when>
    <thetext>Connection clients should be able to obtain the messages as data instead of embedded in function references

It is not well-defined to drop functions, since the abstraction hides what kind of assumptions the function caller has wrt the function.

WebGL IPC implementation needs to obtain sync and async message data and store it until the functions appear in the message order.
WebGL IPC implementation needs to be able to discard the messages if an error occurs before the stored sync/async messages are executed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726750</commentid>
    <comment_count>1</comment_count>
      <attachid>419614</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-08 13:00:27 -0800</bug_when>
    <thetext>Created attachment 419614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726754</commentid>
    <comment_count>2</comment_count>
      <attachid>419616</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-08 13:07:33 -0800</bug_when>
    <thetext>Created attachment 419616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726983</commentid>
    <comment_count>3</comment_count>
      <attachid>419691</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-09 02:14:57 -0800</bug_when>
    <thetext>Created attachment 419691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727017</commentid>
    <comment_count>4</comment_count>
      <attachid>419703</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-09 05:40:32 -0800</bug_when>
    <thetext>Created attachment 419703
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727715</commentid>
    <comment_count>5</comment_count>
      <attachid>419889</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-10 12:37:06 -0800</bug_when>
    <thetext>Created attachment 419889
rebase2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727845</commentid>
    <comment_count>6</comment_count>
      <attachid>419703</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-10 15:31:36 -0800</bug_when>
    <thetext>Comment on attachment 419703
rebase

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:93
&gt; +    m_workQueue-&gt;dispatch([protectedThis = WTFMove(refFromConnection)] {

I don&apos;t really understand the purpose of this. If someone had done a workQueue dispatch elsewhere and failed to capture protectedThis in the lambda, then it would be their bug.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:118
&gt; +    callOnMainRunLoopAndWait([weakRemoteMediaPlayerManagerProxy = m_remoteMediaPlayerManagerProxy, &amp;context, &amp;result, &amp;mediaItem]() {

I spent time doing all rendering work on a background thread and it seems this is basically reverting my part of my work, doing the media rendering back on the main thread.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:-143
&gt; -    Ref&lt;GPUConnectionToWebProcess&gt; m_gpuConnectionToWebProcess;

I was ref&apos;ing the GPUConnectionToWebProcess, so that I could access its RemoteMediaPlayerManagerProxy from the background thread.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:153
&gt; +    WeakPtr&lt;RemoteMediaPlayerManagerProxy&gt; m_remoteMediaPlayerManagerProxy;

The issue with WeakPtr is that it does not play nice with threads and this class is doing most of its work on a background thread nowadays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727849</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-10 15:36:46 -0800</bug_when>
    <thetext>This patch is really big and does quite a bit of refactoring. I suggest splitting it to facilitate reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727988</commentid>
    <comment_count>8</comment_count>
      <attachid>419958</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-11 00:43:24 -0800</bug_when>
    <thetext>Created attachment 419958
remove examples</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728111</commentid>
    <comment_count>9</comment_count>
      <attachid>419958</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 08:55:37 -0800</bug_when>
    <thetext>Comment on attachment 419958
remove examples

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        the message receive thread and forwards them to caller as data.

So now we&apos;re just running random WebKit code from the IPC receive queue thread? I did not come up with the original design but I thought it was nice that the IPC thread could not be badly impacted by issues in the rest of the WebKit code base (e.g. hangs).

&gt; Source/WebKit/ChangeLog:10
&gt; +        This is important in order to be able to skip messages that are stale

I don&apos;t really understand why we need an entirely new IPC concept for this. Our IPC code is already complex and we already have MessageReceiver, WorkQueueMessageReceiver and ThreadMessageReceiver.
I would be really surprised if there wasn&apos;t a way to do whatever you need to do with the current IPC infrastructure.

I am not sure I fully understand the issue but it seems to be you could easily pass an ID for the sender as part of the IPC message, which would get passed as parameter to whatever function gets called as a result of the IPC. This would be similar to what we do with the PageID when sending messages to the UIProcess. And you could use this ID to determine if you still care about this sender or not.

&gt; Source/WebKit/Platform/IPC/FunctionDispatcherMessageReceiveQueue.h:48
&gt; +        m_dispatcher.dispatch([connection = makeRef(connection), message = WTFMove(message), &amp;receiver = m_receiver]() mutable {

Considering m_dispatcher may be a WorkQueue, why is it safe to capture m_receiver by reference? What guarantees that m_receiver is still alive by the time the lambda runs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728576</commentid>
    <comment_count>10</comment_count>
      <attachid>419958</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 09:03:14 -0800</bug_when>
    <thetext>Comment on attachment 419958
remove examples

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

&gt; Source/WebKit/ChangeLog:100
&gt; -        * GPUProcess/media/RemoteAudioHardwareListenerProxy.cpp: 
&gt; +        * GPUProcess/media/RemoteAudioHardwareListenerProxy.cpp:

We usually don&apos;t modify other people&apos;s changelog entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728635</commentid>
    <comment_count>11</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-12 10:28:22 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; Comment on attachment 419958 [details]
&gt; remove examples
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419958&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:9
&gt; &gt; +        the message receive thread and forwards them to caller as data.
&gt; 
&gt; So now we&apos;re just running random WebKit code from the IPC receive queue
&gt; thread? I did not come up with the original design but I thought it was nice
&gt; that the IPC thread could not be badly impacted by issues in the rest of the
&gt; WebKit code base (e.g. hangs).

So by &quot;random webkit code&quot;, you mean client overridable virtual function?
It&apos;s there already in the ThreadMessageReceiver.

&gt; 
&gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; +        This is important in order to be able to skip messages that are stale
&gt; 
&gt; I don&apos;t really understand why we need an entirely new IPC concept for this.

You cannot get ownership of the Decoder. You get passed a Decoder ref and a possibility of ownership of Encoder, dispatched through a closure.

This is not good, since with the stream extensions 
1) you don&apos;t want an Encoder, since you might reply through the SHM. 
2) you don&apos;t want a closure, since we want to be able to not hold on to it



&gt; Our IPC code is already complex and we already have MessageReceiver,
&gt; WorkQueueMessageReceiver and ThreadMessageReceiver.
&gt; I would be really surprised if there wasn&apos;t a way to do whatever you need to
&gt; do with the current IPC infrastructure.

The idea would be to simplify the code by removing WorkQueueMessageReceiver, ThreadMessageReceiver and ThreadMessageReceiverRefCounted, since they&apos;re one and the same concept.


&gt; Considering m_dispatcher may be a WorkQueue, why is it safe to capture m_receiver by reference? What guarantees that m_receiver is still alive by the time the lambda runs?

Nothing. The dispatcher does not need to be alive when the lambda runs. :)

If you consider the case that a dispatcher would dispatch to main thread:
1) the dispatcher dispatches the tasks to main thread.
2) somebody deletes the dispatcher
3) after 30 mins, the tasks run in main thread.

The dispatcher needs to be alive when the dispatch happens.

The dispatcher is alive when the dispatch happens, because the client calls:

addMessageReceiveQueue()
 .. dispatches start to happen
removeMessageReceiveQueue()
  .. dispatches never happen anymore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728647</commentid>
    <comment_count>12</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-12 10:38:17 -0800</bug_when>
    <thetext>&gt; Considering m_dispatcher may be a WorkQueue, why is it safe to capture m_receiver by reference? What guarantees that m_receiver is still alive by the time the lambda runs?

And to expand:

addMessageReceiveQueue() means &quot;I want messages. I guarantee the dispatcher is alive&quot;.

So it&apos;s confusing to induce any refcounts in the equation.

removeMessageReceiveQueue() means &quot;I don&apos;t want messages.&quot;

So in case of work queue + &quot;Me as the message receiver&quot; code structure, the code would be:

startMessages()
  addMessageReceiveQueue(workQueue, this, ...);


stopMessagesSinceIWillDropMyRefAndYouExistOnlyForMyRequests()
  removeMessageReceiveQueue(workQueue, this, ...);
  workQueue([protectedThis = makeRef(*this)]() {
     cleanupIfNeeded();
});

(This was the example in the patch before the &quot;remove examples&quot; patch)

So essentially to your question:

The modification is designed to _not_ force the dispatched functions hold the ref of the messagereceiver -- since that&apos;s not very good, since the message receivers don&apos;t necessarily need to be refcounted.

The caller may very well capture their specific message receiver with a ref. However, for correct operation none of the existing call sites need this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728654</commentid>
    <comment_count>13</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-12 10:41:19 -0800</bug_when>
    <thetext>&gt; force the dispatched functions hold the ref of the messagereceiver -- since that&apos;s not very good

And to back this claim, you only need to look at the back-and-forth-and-dead-code with the ThreadMessageReceiver / ThreadMessageReceiverRefCounted. It typically causes a bit of problems if you force something in the middle of the inheritance hierarchy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728655</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-12 10:41:25 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #11)
&gt; (In reply to Chris Dumez from comment #9)
&gt; &gt; Comment on attachment 419958 [details]
&gt; &gt; remove examples
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=419958&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:9
&gt; &gt; &gt; +        the message receive thread and forwards them to caller as data.
&gt; &gt; 
&gt; &gt; So now we&apos;re just running random WebKit code from the IPC receive queue
&gt; &gt; thread? I did not come up with the original design but I thought it was nice
&gt; &gt; that the IPC thread could not be badly impacted by issues in the rest of the
&gt; &gt; WebKit code base (e.g. hangs).
&gt; 
&gt; So by &quot;random webkit code&quot;, you mean client overridable virtual function?
&gt; It&apos;s there already in the ThreadMessageReceiver.

Up until now, the only thing we did on the IPC receive queue was receive the IPC, then dispatch to either the main thread, a WorkQueue or a Thread.
We did not actually process the IPC (i.e. do the operation resulting from the IPC) on the IPC receive queue. Changing this is a pretty big behavior change and I am curious what other experts think about this.
As I said, I did not come up with the original design but it was very robust to have the IPC receive queue only do the dispatching. If the IPC receive queue start doing more work, then we open the door to new classes of bugs where a process may no longer process incoming IPC because it is stuck somewhere in WebKit code.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; &gt; +        This is important in order to be able to skip messages that are stale
&gt; &gt; 
&gt; &gt; I don&apos;t really understand why we need an entirely new IPC concept for this.
&gt; 
&gt; You cannot get ownership of the Decoder. You get passed a Decoder ref and a
&gt; possibility of ownership of Encoder, dispatched through a closure.
&gt; 
&gt; This is not good, since with the stream extensions 
&gt; 1) you don&apos;t want an Encoder, since you might reply through the SHM. 
&gt; 2) you don&apos;t want a closure, since we want to be able to not hold on to it

This has been working well for years. What&apos;s new or different now that we need this capability? You can send a shared memory handle via IPC and then later on communicate via that shared memory already. We already do this in other places.

&gt; 
&gt; 
&gt; 
&gt; &gt; Our IPC code is already complex and we already have MessageReceiver,
&gt; &gt; WorkQueueMessageReceiver and ThreadMessageReceiver.
&gt; &gt; I would be really surprised if there wasn&apos;t a way to do whatever you need to
&gt; &gt; do with the current IPC infrastructure.
&gt; 
&gt; The idea would be to simplify the code by removing WorkQueueMessageReceiver,
&gt; ThreadMessageReceiver and ThreadMessageReceiverRefCounted, since they&apos;re one
&gt; and the same concept.

Those are the concepts we&apos;ve been using for us. They&apos;ve worked well. I am not convinced the proposed approach is simpler.

&gt; 
&gt; 
&gt; &gt; Considering m_dispatcher may be a WorkQueue, why is it safe to capture m_receiver by reference? What guarantees that m_receiver is still alive by the time the lambda runs?
&gt; 
&gt; Nothing. The dispatcher does not need to be alive when the lambda runs. :)
&gt; 
&gt; If you consider the case that a dispatcher would dispatch to main thread:
&gt; 1) the dispatcher dispatches the tasks to main thread.
&gt; 2) somebody deletes the dispatcher
&gt; 3) after 30 mins, the tasks run in main thread.
&gt; 
&gt; The dispatcher needs to be alive when the dispatch happens.
&gt; 
&gt; The dispatcher is alive when the dispatch happens, because the client calls:
&gt; 
&gt; addMessageReceiveQueue()
&gt;  .. dispatches start to happen
&gt; removeMessageReceiveQueue()
&gt;   .. dispatches never happen anymore

I did not ask about the dispatcher. I asked about the receiver (m_receiver) which could capture by reference in your dispatch lambda and then use in your lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728669</commentid>
    <comment_count>15</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-12 11:02:19 -0800</bug_when>
    <thetext>&gt; What guarantees that m_receiver is still alive by the time the lambda runs?

Ah, and I may have answered to question in a roundabout way.

So this is essentially guaranteed by the caller.
If the caller wants the dispatch to reffed receiver, then the caller does a custom dispatcher that knows how to ref the receiver.

If the caller knows that the receiver is a neverdestroyed singleton, they guarantee the aliveness by just that.

(and my favourite)
The caller knows that the receiver is alive because the caller is the receiver.. So they make sure they&apos;re alive also for the scheduled functions.

However, this particular design point, though I think is a good one, is very much beside the point of this patch. I can add however many &quot;WorkQueueMessageReceiver/ThreadMessageReceiver/ThreadMessageReceiverRefCounted&quot; classes you think is necessary to the Connection.h and dispatch them from the dispatch site with the ref semantics you think is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728675</commentid>
    <comment_count>16</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-12 11:07:49 -0800</bug_when>
    <thetext>&gt; Up until now, the only thing we did on the IPC receive queue was receive the IPC, then dispatch to either the main thread, a WorkQueue or a Thread.
We did not actually process the IPC (i.e. do the operation resulting from the IPC) on the IPC receive queue. Changing this is a pretty big behavior change and I am curious what other experts think about this.

Ah, but this is not what the patch is trying to do. The patch is trying to maintain status quo with this regard.

class ThreadMessageReceiver : public MessageReceiver {
    public:
        virtual void dispatchToThread(WTF::Function&lt;void()&gt;&amp;&amp;) = 0;

vs

+class MessageReceiveQueue {
+public:
+    virtual ~MessageReceiveQueue() = default;
+    // Called with Connection incoming message lock held.
+    // May be called from multiple threads.
+    virtual void enqueueMessage(Connection&amp;, std::unique_ptr&lt;Decoder&gt;&amp;&amp;) = 0;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728686</commentid>
    <comment_count>17</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-12 11:19:28 -0800</bug_when>
    <thetext>&gt; What&apos;s new or different now that we need this capability? You can send a shared memory handle via IPC and then later on communicate via that shared memory already.

So you can write int to SHM and then you can read that int from SHM.
Then you write string to SHM and then you read a string from SHM

....

The thing I&apos;m trying to implement in the depending patch is to run the existing IPC implementation through the SHM, so that not everybody would need to implement their own IPC protocol, because the existing WebKit IPC protocol is not applicable.

The idea would be that there should not be multiple homebaked implementations for IPC. There should be few relatively much used and robust implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729124</commentid>
    <comment_count>18</comment_count>
      <attachid>420305</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-15 04:37:01 -0800</bug_when>
    <thetext>Created attachment 420305
attempt to simplify</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729128</commentid>
    <comment_count>19</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-15 04:42:51 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #18)
&gt; Created attachment 420305 [details]
&gt; attempt to simplify

I tried to address the claims of:
 - making the code more complex --&gt; remove duplicated code paths
 - ref the receiver ? --&gt; remove the code

How about now? Needs the blocker fixes bug 221891 and bug 221894 to be green, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729218</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-15 10:18:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/74355065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729673</commentid>
    <comment_count>21</comment_count>
      <attachid>420472</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-16 08:01:54 -0800</bug_when>
    <thetext>Created attachment 420472
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729757</commentid>
    <comment_count>22</comment_count>
      <attachid>420472</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-16 10:06:52 -0800</bug_when>
    <thetext>Comment on attachment 420472
rebase

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

&gt; Source/WebKit/Platform/IPC/Connection.cpp:1028
&gt; +    }

Had to add this back.
Originally I didn&apos;t understand that this hunk is needed since other overlapping bug, e.g. one where a message might be queued to SyncState instead of the Connection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729784</commentid>
    <comment_count>23</comment_count>
      <attachid>420472</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 10:26:10 -0800</bug_when>
    <thetext>Comment on attachment 420472
rebase

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729795</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-16 10:48:01 -0800</bug_when>
    <thetext>Committed r272916: &lt;https://commits.webkit.org/r272916&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420472.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419614</attachid>
            <date>2021-02-08 13:00:27 -0800</date>
            <delta_ts>2021-02-08 13:51:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221560-20210208230025.patch</filename>
            <type>text/plain</type>
            <size>96200</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjY2NmZGJiODJmNTY5MmI1YjkyZDMz
YzE4NGE0YjhkOGE5OTU1MGMuLjIzMTMzNTg1Njk3NWQ3NTFhYWJiODcwMDliODQyYTVjZmM3Yjc3
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMDItMDggIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW9uIGNsaWVudHMgc2hvdWxkIGJl
IGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRhIGluc3RlYWQgb2YgZW1iZWRkZWQg
aW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBGdW5jdGlvbkRpc3BhdGNoZXIgbm90IGJlIFJlZkNvdW50ZWRU
aHJlYWRTYWZlLgorICAgICAgICBUaGVyZSdzIG5vdGhpbmcgaW5oZXJlbnRseSByZWZlcmVuY2Ug
Y291bnRlZCBpbiB0aGUgZGVzY3JpcHRpb24KKyAgICAgICAgInNvbWV0aGluZyB0aGF0IGZ1bmN0
aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIuCisgICAgICAgIFRoaXMgYWxsb3dzIG90aGVyIGlu
dGVyZmFjZSBjb250cmFjdHMgdGhhbiAid2hlbiB0aGUgcmVjZWl2ZXIgcmVmZXJlbmNlcworICAg
ICAgICBGdW5jdGlvbkRpc3BhdGNoZXIsIGl0IHdpbGwgdGhyZWFkLXNhZmUgcmVmIGl0Ii4KKwor
ICAgICAgICBIYXZpbmcgYSBSZWZDb3VudGVkVGhyZWFkU2FmZSBpbiB0aGUgbWlkZGxlIG9mIGlu
aGVyaXRhbmNlIGNoYWluIGlzIHByb2JsZW1hdGljLCBhcworICAgICAgICBub3QgYWxsIGluaGVy
aXRhbmNlIGNoYWlucyBoYXZlIGl0LiBJdCBpcyBiZXR0ZXIgdG8gc2VwYXJhdGUgInNvbWV0aGlu
ZyB0aGF0CisgICAgICAgIGZ1bmN0aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIgZnJvbSAic29t
ZXRoaW5nIHRoYXQgbWF5IGJlIG93bmVkIGJ5IG11bHRpcGxlCisgICAgICAgIHRocmVhZHMiLgor
CisgICAgICAgIEluIHRoZSBjaGFuZ2UsIElQQzo6Q29ubmVjdGlvbiB3aWxsIHN0b3JlIGEgcmVm
ZXJlbmNlIHRvIEZ1bmN0aW9uRGlzcGF0Y2hlci4gSW4KKyAgICAgICAgdGhpcyBzY2VuYXJpbyBp
dCB3b3VsZCBiZSBjb25mdXNpbmcgdG8gdGhlIHJlYWRlciBpZiB0aGUgcmVmZXJlbmNlIGNvdW50
IHdvdWxkIGJlCisgICAgICAgIGNoYW5nZWQuIFRoZSBpbnRlcmZhY2UgaXMgImFkZC9yZW1vdmUi
LCB3aGljaCBpcyBpbmhlcmVudGx5IG5vdCByZWZjb3VudGVkLiBJZgorICAgICAgICB0aGUgcmVm
Y291bnQgd2FzIHBhcnQgb2YgdGhlIGludGVyZmFjZSwgdGhlbiBxdWVzdGlvbiB3b3VsZCBhcmlz
ZSBhcyBvZiB3aGF0IGl0CisgICAgICAgIHdhcyB1c2VkIGZvci4gSWYgRnVuY3Rpb25EaXNwYXRj
aGVyIHdhcyByZWZjb3VudGVkIGJ1dCB0aGUgcmVmY291bnQgd291bGQgbm90IGJlCisgICAgICAg
IG1vZGlmaWVkIGZvciB0aGlzIGNhc2UsIGl0IHdvdWxkIHJpc2UgcXVlc3Rpb25zLCB0b28uCisK
KyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg6CisgICAgICAgICogd3RmL1J1bkxv
b3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisKIDIwMjEtMDItMDQgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmR5bmFtaWNfY2ZfY2Fz
dDw+IHNob3VsZCBub3QgYXNzZXJ0IGluIERlYnVnIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNDk2YWQ3
M2FlMjFlNjE1MTEwYmJlZjg2Mzc5ODFhZjBjNjQxZjNlLi41YzBmZGFmMWU4NWI3YmY3NzU5OGZm
YjFkOTc1YzM5ZGE4Zjg1ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMS0wMi0w
OCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvbm5l
Y3Rpb24gY2xpZW50cyBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gdGhlIG1lc3NhZ2VzIGFzIGRh
dGEgaW5zdGVhZCBvZiBlbWJlZGRlZCBpbiBmdW5jdGlvbiByZWZlcmVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE1NjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlUXVldWUsIGFuIGludGVyZmFjZSB3aGljaCBvYnRhaW5zIG1lc3NhZ2VzIGZy
b20KKyAgICAgICAgdGhlIG1lc3NhZ2UgcmVjZWl2ZSB0aHJlYWQgYW5kIGZvcndhcmRzIHRoZW0g
dG8gY2FsbGVyIGFzIGRhdGEuCisgICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRv
IGJlIGFibGUgdG8gc2tpcCBtZXNzYWdlcyB0aGF0IGFyZSBzdGFsZQorICAgICAgICBvciBvcmln
aW5hdGluZyBmcm9tIGEgc2VuZGVyIHdoaWNoIGlzIGluY29ycmVjdC4gQmVmb3JlLCB0aGUgY2xp
ZW50CisgICAgICAgIGNvdWxkIG9ubHkgZ2V0IHRoZSBtZXNzYWdlcyBhcyBGdW5jdGlvbiByZWZl
cmVuY2VzLCBhbmQgdGhvc2UgY2Fubm90CisgICAgICAgIGJlIHNraXBwZWQgYXMgaXQgd291bGQg
YmUgdW5lZGZpbmVkIHdoYXQgbm90IGV4ZWN1dGluZyBhIGZ1bmN0aW9uIG1lYW5zLgorCisgICAg
ICAgIElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZSBpcyBhIGdlbmVyYWxpemF0aW9uIGFuZCBzaW1w
bGlmaWNhdGlvbiBvZiBjdXJyZW50CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVz
c2FnZVJlY2VpdmVyUmVmQ291bnRlZCBhbmQKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIuIEl0IGhhcyBkaWZmZXJlbnQgcmVmLWNvdW50CisgICAgICAg
IHNlbWFudGljcywgaW4gdGhlIHdheSB0aGF0IGNsaWVudCBjb250cm9scyB0aGUgbGlmZS10aW1l
IHdpdGggYWRkIGFuZAorICAgICAgICByZW1vdmUuCisKKyAgICAgICAgSVBDOjpNZXNzYWdlUmVj
ZWl2ZVF1ZXVlIGZpeGVzIG1lc3NhZ2UgcmVvcmRlcmluZyBidWcgd2l0aAorICAgICAgICBJUEM6
OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB3aGVyZSBmaXJzdCBmZXcgbWVz
c2FnZXMKKyAgICAgICAgdGhhdCBhcmUgcm91dGVkIHRvIG1haW4gdGhyZWFkIG1lc3NhZ2UgcXVl
dWUgY2FuIGNvbWUgbGF0ZXIgdGhhbiBzb21lCisgICAgICAgIG90aGVyIG1lc3NhZ2UgdGhhdCBn
ZXRzIGhhbmRsZWQgZnJvbSBtZXNzYWdlIHJlY2VpdmUgdGhyZWFkLgorCisgICAgICAgIEZpeGVz
IGZldyBjYWxsLXNpdGVzIGFzIGV4YW1wbGVzIG9mIGFsbCB0aGUgdGhpbmdzIHRoYXQgYXJlIHdy
b25nIGluCisgICAgICAgIGV4aXN0aW5nIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciAvIFRocmVh
ZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQKKyAgICAgICAgc2l0ZXMuCisKKyAgICAgICAgRG9l
cyBub3QgcmVwbGFjZSBhbGwgdXNlcyBvZiBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgLworICAg
ICAgICBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIGR1ZSB0byB0aGUgc2l0ZXMgYXBw
ZWFyaW5nIHZlcnkgYnVnZ3ksCisgICAgICAgIGFuZCB0aHVzIHRha2luZyB0aW1lIHRvIGdldCBy
aWdodCBhbmQgZGVsYXlpbmcgdGhlIHJldmlldy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjb3BlZERpc2Nvbm5lY3Q6
OlNjb3BlZERpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpTY29wZWREaXNjb25uZWN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY29wZWREaXNjb25uZWN0Ojp+U2NvcGVkRGlzY29u
bmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjb3Bl
ZERpc2Nvbm5lY3Q6OnJlc2V0KToKKyAgICAgICAgQWRkIHJldXNhYmxlIFNjb3BlZERpc2Nvbm5l
Y3QgaGVscGVyIGluc3RlYWQgb2YgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAorICAgICAgICAtc3Bl
Y2lmaWMgIndyYXBwZXIiLiBSZXBsYWNlIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBl
ciB1bmlxdWVfcHRyCisgICAgICAgIGhvbGRlciB3aXRoIGp1c3QgbW92ZSBzZW1hbnRpY3MsIGlu
IG9yZGVyIHRvIGF2b2lkIGhlYXAtYWxsb2NhdGluZyB0aGUKKyAgICAgICAgd3JhcHBlci4KKwor
ICAgICAgICBBZGQgY29ubmVjdCAtdHlwZSBjYWxsIGluIGFkZGl0aW9uIHRvIGRpc2Nvbm5lY3Qg
dHlwZSBjYWxsLCBkdWUgdG8KKyAgICAgICAgdGhyZWFkaW5nIGJ1ZyBpbiBleGlzdGluZyBjb2Rl
LCBzZWUgYmVsb3cuCisKKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICBTdG9yZSByZWZlcmVuY2VzIHRv
IHZhcmlvdXMgb2JqZWN0cyBzbyB0aGF0IHRoZXkncmUgYWNjZXNzZWQgaW4gdGhyZWFkLXNhZmUg
bWFubmVyLgorICAgICAgICBEbyBub3QgYWRkIHRoZSBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlIGlu
IHRoZSBjb25zdHJ1Y3Rvci4gVGhlIGZ1bmN0aW9uIHRha2VzIGEKKyAgICAgICAgcHRyIHRvIGlu
dGVyZmFjZS4gV2hlbiB0aGUgY29uc3RydWN0b3IgcnVucywgdGhlIHZwdHIgaXMgbm90IHBvcHVs
YXRlZCB5ZXQuCisgICAgICAgIENvbm5lY3Rpb24gd2lsbCBzdGFydCBkaXNwYXRjaGluZyBtZXNz
YWdlcyB0aHJvdWdoIHRoZSBwYXNzZWQgdnB0ciBpbW1lZGlhdGVseSB3aGVuCisgICAgICAgIGFk
ZE1lc3NhZ2VSZWNlaXZlUXVldWUgaXMgY2FsbGVkLiBEdWUgdG8gY29tcG91bmRpbmcgYnVncyBh
bmQgZ2VuZXJhbCBzbG93bmVzcywgdGhpcyBidWcKKyAgICAgICAgd2FzIG5vdCBoaXQgb2Z0ZW4g
YmVmb3JlLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbm5l
Y3RXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIENvbm5lY3QgdGhlIG1lc3NhZ2UgcXVl
dWUgYW5kIHN0YXJ0IHJlY2VpdmluZyB0aGUgbWVzc2FnZXMuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToK
KworICAgICAgICBSZWdhcmRpbmc6ICAgICByZW1vdGVSZXNvdXJjZUNhY2hlID0gV1RGTW92ZSht
X3JlbW90ZVJlc291cmNlQ2FjaGUpCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZSBjYW5u
b3QgYmUgZGVzdHJveWVkIGJ5IG1vdmluZyBpdCBhd2F5IGR1cmluZyBkZXN0cnVjdGlvbiBmcm9t
CisgICAgICAgIHRoZSBtYWluIHRocmVhZCwgYXMgdGhlIHRhc2sgdGhyZWFkIHRhc2sgZnVuY3Rp
b25zIHdpbGwgcmVmZXIgdG8gdGhlIG9iamVjdCBhbmQgd291bGQgdXNlCisgICAgICAgIHRoZSBt
b3ZlZC1hd2F5IG9iamVjdC4gSnVzdCBtb3ZlIGl0IGluIHRoZSB0YXNrIGZ1bmN0aW9uLgorCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgRG8gbm90IG5hdmlnYXRlIHRvIGNvbm5lY3Rpb24gdmlh
IGdwdVByb2Nlc3NDb25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICBJdCB3aWxsIGJlIGRl
c3Ryb3llZCB1cG9uIGRpc2Nvbm5lY3QsIGJ1dCBzZW5kcyBtYXkgaGFwcGVuIGFmdGVyIHRoYXQK
KyAgICAgICAgZHVyaW5nIHBsYXliYWNrIG9mIGRpc3BhdGNoZWQgdGFzayBmdW5jdGlvbnMuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0p
OgorICAgICAgICBEbyBub3QgbmF2aWdhdGUgdG8gdGhlIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5IHZpYSB0aGUKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
IFRoaXMgb2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZCB1cG9uIGRpc2Nvbm5lY3QsCisgICAgICAg
IGJ1dCB0aGUgZGlzcGF0Y2hlZCB0YXNrIGZ1bmN0aW9ucyB3aWxsIHBsYXliYWNrIGluIHRoZSBw
bGF5YmFjayB0aHJlYWQuCisgICAgICAgIEFsc28sIHRoZSBhY2Nlc3NvcnMgbmF2aWdhdGluZyB1
cHdhcmRzIGluIHRoZSBzdHJ1Y3R1cmUgYXJlIG5vdCB0aHJlYWQtc2FmZS4KKworICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp0ZXJtaW5hdGVXZWJQcm9jZXNzKToKKyAg
ICAgICAgRG8gbm90IG5hdmlnYXRlIGFkZE1lc3NhZ2VSZWNlaXZlUXVldWUgaXQgbWlnaHQgYmUg
ZGVzdHJveWVkIGF0IHRoZSB0aW1lCisgICAgICAgIG9mIGRpc3BhdGNoaW5nIHRoZSB0ZXJtaW5h
dGVXZWJQcm9jZXNzLiBJbnN0ZWFkLCBwb3N0IGEgbWFpbiB0aHJlYWQgdGFzaworICAgICAgICB3
aXRoIHdlYWsgcHRyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmRpc2Nvbm5lY3RXZWJQcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
OjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI6OnJlbGVhc2VMYXllcik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oOgorCisgICAgICAgIEZp
eCBtb3N0bHkgc2ltaWxhciB0aHJlYWRpbmcgYnVncyBhcyBleHBsYWluZWQgYWJvdmUuCisgICAg
ICAgIE5vdGFibGUgZGlmZmVyZW5jZSBpcyB0aGUgYnVnIGFib3V0IH5SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoKQorICAgICAgICBjYWxsaW5nIChidWdneSkgcmVt
b3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKCk6CisgICAgICAgIHJlbW92ZVRocmVhZE1lc3NhZ2VS
ZWNlaXZlciBpcyBhIHJlZi1jaGFuZ2luZyBmdW5jdGlvbiBvbiB0aGUgb3duZXIsIHdoaWNoIGlz
CisgICAgICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci4gU28g
aXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0aGF0IGEgZGVzdHJ1Y3RvcgorICAgICAgICB3b3VsZCBk
ZWNyZWFzZSB0aGUgcmVmY291bnQuCisgICAgICAgIEluIGFkZGl0aW9uLCBDb25uZWN0aW9uIGRp
c3BhdGNoZXMgbWVzc2FnZXMgdW50aWwgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyLiBJZiB0
aGUKKyAgICAgICAgY2FsbCBpcyBtYWRlIHdoaWxlIG1haW4gdGhyZWFkIGlzIGluc2lkZSBkZXN0
cnVjdG9yLCBpdCBtZWFucyB0aGF0IHJlZiBjb3VudCBpcyBiZWluZworICAgICAgICBleHRlbnNp
dmVseSBtb2RpZmllZCBkdXJpbmcgZGVzdHJ1Y3Rpb24gYW5kIHRhc2tzIGFyZSBiZWluZyBzY2hl
ZHVsZWQgd2hlbiB0aGV5IHNob3VsZAorICAgICAgICBub3QgYmUuCisKKworICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRk
TWVzc2FnZVJlY2VpdmVRdWV1ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZU1l
c3NhZ2VSZWNlaXZlUXVldWUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNz
SW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZW5xdWV1ZUluY29t
aW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZSk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwOjphZGRJbXBsKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6cmVt
b3ZlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6Z2V0IGNvbnN0KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAgKElQQzo6
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6aXNWYWxpZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGQpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTAyLTA1ICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViR0wgSVBD
IG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQgb3V0IG9mIG9yZGVyCkBAIC0zNDksNyArNDc4LDcgQEAK
ICAgICAgICAgUmVvcmRlcmVkIG1lbWJlciB2YXJpYWJsZXMgdG8gc2hyaW5rIE1lZGlhU2FtcGxl
Qnl0ZVJhbmdlIGZyb20gMTYwIGJ5dGVzIHRvIDE1MiBieXRlcy4KIAogICAgICAgICAqIFNoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwOgotICAgICAg
ICAoV2ViS2l0OjpNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6TWVkaWFTYW1wbGVCeXRlUmFuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6TWRpYVNhbXBsZUJ5dGVSYW5n
ZSk6CiAgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5
dGVSYW5nZS5oOgogCiAyMDIxLTAyLTAzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgpAQCAtMzAwNiw3ICszMTM1LDcgQEAKICAgICAgICAgPHJkYXI6Ly83MTE3NzU2
Nj4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotICAgICAgICAKKwogICAgICAg
ICB0aGV2ZXJnZS5jb20gb24gaU9TIGlzIGEgcGFnZSB0aGF0IGhhcyBsb25nIG1haW4gdGhyZWFk
IHN0YWxscyB3aXRoIGZvcmNlZCBsYXlvdXRzIG9uIGEgdGltZXIKICAgICAgICAgdGhhdCBhbHRl
ciB0aGUgcGFnZSBoZWlnaHQ7IHRoaXMgY2F1c2VkIHRoZSBwb3N0LWxheW91dCB1cGRhdGVTY3Jv
bGxiYXJzKCkgY2FsbGVkIGZyb20KICAgICAgICAgRnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6ZSgp
IHRvIGNhbGwgc2Nyb2xsVG9Qb3NpdGlvbigpIGFmdGVyIGFkanVzdGluZyB0aGUgc2Nyb2xsIHBv
c2l0aW9uCkBAIC00MTY1LDE0ICs0Mjk0LDE0IEBACiAgICAgICAgIFJldmlld2VkIGJ5IERhbmll
bCBCYXRlcy4KIAogICAgICAgICBBZGQgYSBzY3JpcHQgdG8gY29tYmluZSBhIHBsaXN0IGZpbGUg
ZnJvbSBXZWJLaXRBZGRpdGlvbnMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwbGlzdAotICAgICAg
ICBmaWxlIGluIHRoaXMgcmVwbyB0byBnZW5lcmF0ZSBhIGBXZWJLaXQucGxpc3RgIHJlcXVpcmVk
IGJ5IHRoZSBGZWF0dXJlIEZsYWdzIGludGVyZmFjZS4KK2ZpbGUgaW4gdGhpcyByZXBvIHRvIGdl
bmVyYXRlIGEgYFdlYktpdC5wbGlzdGAgcmVxdWlyZWQgYnkgdGhlIEZlYXR1cmUgRmxhZ3MgaW50
ZXJmYWNlLgogCiAgICAgICAgICogRmVhdHVyZUZsYWdzL1dlYktpdC1hcHBsZXR2b3MucGxpc3Q6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC5wbGlzdC4KICAg
ICAgICAgKiBGZWF0dXJlRmxhZ3MvV2ViS2l0LWlvcy5wbGlzdDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LnBsaXN0LgotICAgICAgICAqIEZlYXR1cmVGbGFn
cy9XZWJLaXQtbWFjb3MucGxpc3Q6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvRmVhdHVyZUZs
YWdzL1dlYktpdC5wbGlzdC4KKyogRmVhdHVyZUZsYWdzL1dlYktpdC1tYWNvcy5wbGlzdDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9GZWF0dXJlRmxhZ3MvV2ViS2l0LnBsaXN0LgogICAgICAg
ICAqIEZlYXR1cmVGbGFncy9XZWJLaXQtd2F0Y2hvcy5wbGlzdDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvRmVhdHVyZUZsYWdzL1dlYktpdC5wbGlzdC4KICAgICAgICAgKiBTY3JpcHRzL2Nv
bWJpbmUtZmVhdHVyZS1mbGFncy1wbGlzdC5weTogQWRkZWQuCi0gICAgICAgIChtYWluKToKKyht
YWluKToKICAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWZlYXR1cmUtZmxhZ3MtcGxpc3Quc2g6
IEFkZGVkLgogICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgogCkBA
IC00MTg2LDcgKzQzMTUsNyBAQAogICAgICAgICAKICAgICAgICAgaVBob25lLWlkaW9tIGFwcHMg
cnVubmluZyBvbiBtYWNPUyBuZWVkIHRvIGJlaGF2ZSBleGFjdGx5IGxpa2UgaVBob25lIGFwcHMs
CiAgICAgICAgIGV2ZW4gaW4gd2F5cyB0aGF0IG1pZ2h0IG5vdCB0b3RhbGx5IG1ha2Ugc2Vuc2Ug
b24gdGhlIHBsYXRmb3JtIChlLmcuCi0gICAgICAgIHVzaW5nIGlucHV0IGFjY2Vzc29yeSB2aWV3
cyBmb3IgPHNlbGVjdD4gaW5zdGVhZCBvZiBwb3BvdmVyKSBmb3IgdHdvIHJlYXNvbnM6Cit1c2lu
ZyBpbnB1dCBhY2Nlc3Nvcnkgdmlld3MgZm9yIDxzZWxlY3Q+IGluc3RlYWQgb2YgcG9wb3Zlcikg
Zm9yIHR3byByZWFzb25zOgogICAgICAgICAKICAgICAgICAgLSB3ZSB3YW50IHRvIG1heGltaXpl
IGNvbXBhdGliaWxpdHksIHNvIHRoZXkgc2hvdWxkIGJlaGF2ZSBleGFjdGx5IGFzIHRoZXkgZG8K
ICAgICAgICAgb24gdGhlIG9ubHkgcGxhdGZvcm0gdGhleSdyZSB0ZXN0ZWQgb24KQEAgLTQ2NjAs
NyArNDc4OSw3IEBACiAgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0
b3JEZWxlZ2F0ZS5tbToKICAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6OnNldERl
bGVnYXRlKToKICAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNs
aWVudDo6fkluc3BlY3RvckNsaWVudCk6Ci0gICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckRlbGVn
YXRlOjpJbnNwZWN0b3JDbGllbnQ6OmJyb3dzZXJEb21haW5FbmFibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6YnJvd3Nl
ckRvbWFpbkVuYWJsZWQpOiBEZWV0ZWQuCiAgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckRlbGVn
YXRlOjpJbnNwZWN0b3JDbGllbnQ6OmJyb3dzZXJEb21haW5EaXNhYmxlZCk6IERlbGV0ZWQuCiAg
ICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CiAgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpicm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQp
OiBEZWxldGVkLgpAQCAtNzk0MSw3ICs4MDcwLDcgQEAKIAogMjAyMC0xMi0xNiAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAotICAgICAgICBSRUdSRVNTSU9OIChyMjcwNjU3
KSBbQVMgT25seV0gR0dFOiBOZXRmbGl4LCBZb3VUdWJlLCBBbWF6b24gUHJpbWUsIGFuZCBIdWx1
IGZhaWwgdG8gcGxheWJhY2sKK1JFR1JFU1NJT04gKHIyNzA2NTcpIFtBUyBPbmx5XSBHR0U6IE5l
dGZsaXgsIFlvdVR1YmUsIEFtYXpvbiBQcmltZSwgYW5kIEh1bHUgZmFpbCB0byBwbGF5YmFjawog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5OTU0CiAg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjMyNTg4Nz4KIApAQCAtODg0MCw3ICs4OTY5LDcgQEAK
ICAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KTogQWRkZWQu
CiAgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmRlbGV0ZUFsbEZvbnRzKTog
QWRkZWQuIFVzZWQgd2hlbiBhIG1lbW9yeSB3YXJuaW5nIGlzIGlzc3VlZC4KICAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKLSAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Zm9udHMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNlOjpmb250cyBjb25zdCk6IEFkZGVkLgogICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Gb250UmVmZXJlbmNlLmg6IEFkZGVkLgogICAgICAgICAoSVBDOjpGb250
UmVmZXJlbmNlKTogQWRkZWQuCiAgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6
CkBAIC0xMTE0Niw3ICsxMTI3NSw3IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCiAKLSAgICAgICAgUmVtb3ZlIGFjY2VzcyB0byBjb20uYXBwbGUuYXVkaW8udG9vbGJveC5y
ZXBvcnRpbmcuc2VydmljZSBmb3IgV2ViS2l0IHByb2Nlc3Nlcywgc2luY2UgdGhpcyBpcyBhIGxv
Z2dpbmcgc2VydmljZSB3aGljaCBpcyBub3QgbmVlZGVkIGZvciBjb3JyZWN0bmVzcy4KKyAgICAg
ICAgUmVtb3ZlIGFjY2VzcyB0byBjb20uYXBwbGUuYXVkaW8udG9vbGJveC5yZXBvcnRpbmcuc2Vy
dmljZSBmb3IgV2ViS2l0IHByb2Nlc3Nlcywgc2luY2UgdGhpcyBpcyBhIGxvZ2dpbmcgc2V2aWNl
IHdoaWNoIGlzIG5vdCBuZWVkZWQgZm9yIGNvcnJlY3RuZXNzLgogCiAgICAgICAgICogUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5HUFUuc2I6CiAgICAgICAg
ICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LnNiOgpAQCAtMTE5MDYsNyArMTIwMzUsNyBAQAogCiAyMDIwLTEyLTA1ICBGdWppaSBIaXJv
bm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCi0gICAgICAgIFJlbW92ZSBFTkFCTEVf
R1JBUEhJQ1NfQ09OVEVYVF9HTCBieSByZXBsYWNpbmcgaXQgd2l0aCBFTkFCTEUoV0VCR0wpCisg
ICAgICAgIFJlbW92ZSBFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF9HTCBieSByZXBsYWNpbmcgaXQg
d2l0aCBFQUJMRShXRUJHTCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxOTU1MQogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4K
QEAgLTEyMDc4LDcgKzEyMjA3LDcgQEAKICAgICAgICAgTm8gbmVlZCB0byBjYXN0IHRoZSBJbWFn
ZUJ1ZmZlciB0byBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHNpbmNlIGFsbCB3aGF0CiAgICAgICAg
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBuZWVkcyBjYW4gYmUgYWNjZXNzZWQgdGhyb3Vn
aCB0aGUgYmFzZSBjbGFzcy4KIAotICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljc1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbjoK
ICAgICAgICAgUmVuYW1lICdJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkJyB0byAnRGlkQ3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kJwogICAgICAgICB0byBiZSBjb25zaXN0ZW50IHdpdGggJ0Rp
ZEZsdXNoJy4gTm8gbmVlZCB0byBwYXNzIHRoZSBjcmVhdGlvbiBwYXJhbWV0ZXJzCiAgICAgICAg
IHNpbmNlIHRoZXkgc2V0IGluIHRoZSBDb25jcmV0ZUltYWdlQnVmZmVyLiBObyBuZWVkIHRvIHBh
c3MgdGhlIGJhY2tlbmRTaXplCkBAIC0xMjcyMiw3ICsxMjg1MSw3IEBACiAgICAgICAgICogV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjogT25seSBhbGxvdyAnQXBwbGVJbnRl
bE1FVXNlckNsaWVudCcgaWYgaXQKICAgICAgICAgd2FzIGR5bmFtaWNhbGx5IGV4dGVuZGVkLgog
Ci0yMDIwLTEyLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorMjAy
MC0xMi0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbQogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIyNzAzNjIKIApAQCAtMTMyMDIs
NyArMTMzMzEsNyBAQAogICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW06CiAgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjplbmNvZGUgY29uc3QpOgogICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Ci0gICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKICAgICAgICAgQWRkIGFuZCBhZG9wdCBDb25jcmV0ZVNoYXJlYWJsZUltYWdlQnVmZmVy
LiBUaGlzIGlzIGEgQ29uY3JldGVJbWFnZUJ1ZmZlciB0aGF0IGtub3dzIGhvdwogICAgICAgICB0
byBjcmVhdGUgYW4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCB3aXRoIG5vIG90aGVyIGJlaGF2
aW9yIGNoYW5nZS4KICAgICAgICAgUHJldmlvdXNseSwgd2Ugd2VyZSAoY29tcGxldGVseSBpbmNv
cnJlY3RseSkgY2FzdGluZyBDb25jcmV0ZUltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkKQEAgLTEzOTU3LDkgKzE0MDg2LDkgQEAKICAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIpOiBE
ZWxldGVkLgogICAgICAgICBNb3ZlZCB0byBjcHAgZmlsZS4KIAotICAgICAgICAoV2ViS2l0OjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Om1fc2Vzc2lvbklEKTogRGVsZXRlZC4KKyhX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6bV9zZXNzaW9uSUQpOiBEZWxl
dGVkLgogICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgotICAgICAgICAoV0tQ
YWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0
aW5nKToKKyhXS1BhZ2VNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
aXJlZEZvclRlc3RpbmcpOgogICAgICAgICAoV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2Vzc2lvblJlc3RhcnQpOgogICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQ
cml2YXRlLmg6CiAgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CkBAIC0xMzk5
MSwxNCArMTQxMjAsMTQgQEAKICAgICAgICAgICAgIDEuIEJlaGF2ZSBhcyBpZiB0aGUgbm9kZSBp
cyBsYXRjaGVkLCBpLmUuIGRvbid0IHByb3BhZ2F0ZSB0byBwYXJlbnQgbm9kZXMsCiAgICAgICAg
ICAgICAgICBhbmQgdGFyZ2V0IHRoZSBub2RlIGlmIGlmIGl0J3Mgc2Nyb2xsZWQgdG8gYSB0aGUg
bWluIG9yIG1heCB0byBhbGxvdyBydWJiZXJiYW5kaW5nCiAgICAgICAgICAgICAyLiBTY3JvbGwg
ZXZlbiBpZiB0aGUgbm9kZSBoYXMgc3luY2hyb25vdXMgc2Nyb2xsaW5nIHJlYXNvbnMKLSAgICAg
ICAgVGhpcyBtb2RlIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBFdmVudFRhcmdldGluZyB2YWx1ZS4K
K1RoaXMgbW9kZSBpcyByZXByZXNlbnRlZCBieSB0aGUgRXZlbnRUYXJnZXRpbmcgdmFsdWUuCiAK
ICAgICAgICAgRmluYWxseSwgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwo
KSBzaG91bGQgb25seSBjbGVhciBsYXRjaGluZyBzdGF0ZSBpZiB0aGUgY29udGVudCBoYXMgY2Fs
bGVkIHByZXZlbnREZWZhdWx0KCkKICAgICAgICAgb24gdGhlIGV2ZW50LgogCiAgICAgICAgICog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZU1hYy5jcHA6CiAgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVSZW1vdGVNYWM6OmhhbmRsZVdoZWVsRXZlbnQpOgotICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWMuaDoKKyogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5oOgogICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVN
YWMuY3BwOgogICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlUmVtb3RlTWFjOjpoYW5kbGVXaGVlbEV2ZW50KToKICAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3Rl
TWFjLmg6CkBAIC0xODMzNSw3ICsxODQ2NCw3IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
IEhvcnRvbi4KIAotICAgICAgICBNb3ZlIFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcg
ZnJvbSBXZWJQYWdlIHRvIFdlYlByb2Nlc3MuIEFkZCBhCisgICAgICAgIE1vdmUgVXNlR1VQcm9j
ZXNzRm9yQ2FudmFzUmVuZGVyaW5nIGZyb20gV2ViUGFnZSB0byBXZWJQcm9jZXNzLiBBZGQgYQog
ICAgICAgICBuZXcgc2V0dGluZyBmb3IgVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyB0byBX
ZWJQcm9jZXNzLgogCiAgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgpAQCAtMTg3NTYsNyArMTg4ODUsNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgogCi0gICAgICAgIFNlcGFyYXRlbHkga2VlcCB0cmFjayBvZiB0aGUgaXRlbSBj
b3VudCBpbiB0aGUgY29udGV4dCdzIGRpc3BsYXkgbGlzdC4gU2VlIFdlYkNvcmUvQ2hhbmdlTG9n
IGZvciBtb3JlIGRldGFpbHMuCisgICAgICAgIFNlcGFyYXRlbHkga2VlcCB0cmFjayBvZiB0aGUg
aXRlbSBjb3VudCBpbiB0aGUgY29udGV4dCdzIGRpc3BsYXkgbGlzdC4gU2VlIFdlYm9yZS9DaGFu
Z2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaDogVXNlIGBpc0VtcHR5KClgIGluc3RlYWQgb2YgY2hlY2tpbmcg
YGl0ZW1Db3VudCgpYC4KICAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Lmg6CkBAIC0xOTQ5OSw3ICsxOTYyOCw3IEBACiAgICAgICAgIFJldmll
d2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgogCiAgICAgICAgICogVUlQcm9jZXNzL21hYy9IaWdoUGVy
Zm9ybWFuY2VHUFVNYW5hZ2VyLm1tOgotICAgICAgICAoV2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VH
UFVNYW5hZ2VyOjphZGRQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKToKKyhXZWJLaXQ6
OkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXI6OmFkZFByb2Nlc3NSZXF1aXJpbmdIaWdoUGVyZm9y
bWFuY2UpOgogICAgICAgICAoV2ViS2l0OjpIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpyZW1v
dmVQcm9jZXNzUmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKToKICAgICAgICAgKFdlYktpdDo6SGln
aFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6dXBkYXRlU3RhdGUpOgogICAgICAgICAoV2ViS2l0Ojpp
c2lPU0FwcE9uTWFjKTogRGVsZXRlZC4KQEAgLTIyNDY0LDcgKzIyNTkzLDcgQEAKICAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uY3BwOgogICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KToKICAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9TZXNzaW9uOjpjYXRlZ29yeSBjb25zdCk6Ci0gICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmg6CisqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5oOgogCiAyMDIwLTEwLTA5ICBSeWFuIEhhZGRhZCAgPHJ5
YW5oYWRkYWRAYXBwbGUuY29tPgogCkBAIC0yMjgwOSw3ICsyMjkzOCw3IEBACiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCiAKLSAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIHRoZSBKYXZhU2NyaXB0IEFQSSAod2luZG93LklQQykgdG8gc2VuZCBJUEMgb3V0IG9mIFdl
YkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBKYXZh
U2NyaXB0IEFQSSAod2luZG93LklQQykgdG8gc2VuZCBJUEMgb3V0IG9mIFdlYkNudGVudCBwcm9j
ZXNzLgogICAgICAgICBUaGUgZmVhdHVyZSBpcyBjb21waWxlZCBpbiB1bmRlciBBU0FOIGFuZCBE
ZWJ1ZyBidWlsZHMgYW5kIGNhbiBiZSBlbmFibGVkIGF0IHJ1bnRpbWUuCiAKICAgICAgICAgd2lu
ZG93LklQQyBoYXMgdHdvIG1ldGhvZHM6IHNlbmRNZXNzYWdlIGFuZCBzZW5kU3luY01lc3NhZ2Ug
d2hpY2ggc2VuZHMgYW4gYXN5bmMgYW5kIHN5bmMgSVBDIHJlc3BlY3RpdmVseS4KQEAgLTI1MTU4
LDcgKzI1Mjg3LDcgQEAKICAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+Ojpl
bmNvZGUpOgogICAgICAgICAoSVBDOjpjcmVhdGVGb250KToKICAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUpOgotICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PEZvbnRIYW5kbGU+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBZ3VtZW50Q29k
ZXI8Rm9udEhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCiAgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8Rm9udEhhbmRsZT46OmRlY29kZSk6IERlbGV0ZWQuCiAgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgogCkBAIC0yNTE2Nyw3ICsyNTI5Niw3IEBACiAgICAgICAg
IFtQcmVmZXJlbmNlc10gQWRvcHQgc2hhcmVkIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24gYW5k
IHNjcmlwdCBpbiBXZWJLaXQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzA3NQogCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCiAKICAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVy
ZW5jZXMueWFtbDogUmVtb3ZlZC4KICAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWJ1
Zy55YW1sOiBSZW1vdmVkLgpAQCAtMjUxNzksNyArMjUzMDgsNyBAQAogICAgICAgICBpbiBXVEYu
IAogCiAgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Ci0gICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CiAgICAgICAgIFVwZGF0ZSBwcmVm
ZXJlbmNlIGdlbmVyYXRpb24gdG8gdXNlIHRoZSBzaGFyZWQgc2NyaXB0IGFuZCBwcmVmZXJlbmNl
IGZpbGVzLgogICAgICAgICAKICAgICAgICAgKiBDb25maWd1cmF0aW9ucy9CYXNlVGFyZ2V0Lnhj
Y29uZmlnOgpAQCAtMjU5MTUsNyArMjYwNDQsNyBAQAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KIAogICAgICAgICBFc3BlY3VsYXRpdmUgZml4IGJ5IGFkZGluZyBtaXNzaW5nIGZp
bmFsaXplIHN0ZXAgdG8KLSAgICAgICAgdXBkYXRlUmVuZGVyaW5nIChvciBjYWxsaW5nIGlzb2xh
dGVkVXBkYXRlUmVuZGVyaW5nKS4KK3VwZGF0ZVJlbmRlcmluZyAob3IgY2FsbGluZyBpc29sYXRl
ZFVwZGF0ZVJlbmRlcmluZykuCiAKICAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4K
IApAQCAtMjY1NzgsNyArMjY3MDcsNyBAQAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4K
IAogICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDogQXJyYW5nZSBndWFyZHMgdG8gaW5jbHVkZQotICAgICAgICBXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCB3aXRoIFVTRShTT1VQKS4KKyAgICAgICAgV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmggd2l0IFVTRShTT1VQKS4KICAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvc291cC9X
ZWJzaXRlRGF0YVN0b3JlU291cC5jcHA6IEFkZCBtaXNzaW5nIFdlYkNvcmVBcmd1bWVudENvZGVy
cy5oCiAgICAgICAgIGluY2x1ZGUuCiAKQEAgLTI3MDYwLDcgKzI3MTg5LDcgQEAKICAgICAgICAg
KFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0KToKICAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tVc2VyTWVkaWFD
YXB0dXJlQWNjZXNzQWxlcnQuaDogQWRkZWQuCiAgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dL
VXNlck1lZGlhQ2FwdHVyZUFjY2Vzc0FsZXJ0Lm1tOiBBZGRlZC4KLSAgICAgICAgKFdlYktpdDo6
dmlzaWJsZURvbWFpbik6CisoV2ViS2l0Ojp2aXNpYmxlRG9tYWluKToKICAgICAgICAgKFdlYktp
dDo6YWxlcnRNZXNzYWdlVGV4dCk6CiAgICAgICAgIChXZWJLaXQ6OnByZXNlbnRVc2VyTWVkaWFD
YXB0dXJlQWNjZXNzQWxlcnQpOgogICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgpAQCAtMjg2MTEsNyArMjg3NDAsNyBAQAogICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHA6CiAgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKToKICAgICAgICAgKFdl
YktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjp+UmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKToKLSAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpjbG9zZSk6CisoV2Vi
S2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmNsb3NlKToK
ICAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5h
Z2VyOjpkaXNwYXRjaFRvVGhyZWFkKToKICAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CiAgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyLmg6CkBAIC0yOTI0MCwxMCArMjkzNjksMTAgQEAKICAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgogCiAgICAgICAgIFVz
ZSBgX1VJQXBwbGljYXRpb25DYXRhbHlzdFVzZXJJbnRlcmZhY2VJZGlvbWAgYW5kIGBfVUlBcHBs
aWNhdGlvbkNhdGFseXN0U2NhbGVGYWN0b3JgIHRvIGdyYWIgdGhlIGdsb2JhbCB1c2VyCi0gICAg
ICAgIGludGVyZmFjZSBpZGlvbSBhbmQgc2NhbGUgZmFjdG9yLCByZXNwZWN0aXZlbHkuCitpbnRl
cmZhY2UgaWRpb20gYW5kIHNjYWxlIGZhY3RvciwgcmVzcGVjdGl2ZWx5LgogCiAgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06Ci0gICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CiAKICAgICAgICAgT3ZlcnJpZGUg
dGhlIGlkaW9tIGFuZCBzY2FsZSBmYWN0b3IgaW4gdGhlIHdlYiBwcm9jZXNzIHdpdGggdGhlIGlk
aW9tIGFuZCBzY2FsZSBmYWN0b3IgZnJvbSB0aGUgVUkgcHJvY2VzcywKICAgICAgICAgdXNpbmcg
dGhlIG5ldyBTUEkgYF9VSUFwcGxpY2F0aW9uQ2F0YWx5c3RSZXF1ZXN0Vmlld1NlcnZpY2VJZGlv
bUFuZFNjYWxlRmFjdG9yYC4gQXMgdGhpcyBmdW5jdGlvbiBoYXNuJ3QgbGFuZGVkCkBAIC0zMDI4
OSw3ICszMDQxOCw3IEBACiAgICAgICAgIFVwc3RyZWFtIHN1cHBvcnQgZm9yIGltYWdlIHBpY2tl
ciBjb25maXJtYXRpb24gYW5kIGRvd25zY2FsaW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5OTcKIAotICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCitSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCiAKICAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgogICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgpAQCAtMzA2NTMsNyArMzA3ODIs
NyBAQAogMjAyMC0wOC0yNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNv
bT4KIAogICAgICAgICBzeW50YXggZXJyb3IgaW4gIkRFTEVURSBGUk9NIFN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucyIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTgxMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jaT9pZD0yMTU4MTMKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3NzQzNTIxPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpAQCAtMzE3NjgsNyArMzE4OTcsNyBAQAog
CiAgICAgICAgIEZpeCBudWxsIHBvaW50ZXIgY3Jhc2hlcyBpbiBuZXR3b3JrIHByb2Nlc3MgYWZ0
ZXIgcjI2NTgzNQogICAgICAgIOKAi2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTU2MjYKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY3MjY4ODkyPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjcyNjg4OTIKIAogICAgICAgICBDYWxsIHRoZSBjb3JyZWN0IENvbXBs
ZXRpb25IYW5kbGVyLiAgY29tcGxldGlvbkhhbmRsZXIgaGFzIGFscmVhZHkgYmVlbiBtb3ZlZCBm
cm9tIGF0IHRoaXMgcG9pbnQuCiAgICAgICAgIFRoaXMgY3Jhc2ggd2FzIGJlaW5nIGhpdCBpbiB0
aGUgdGVzdCwgYnV0IHRoZSB0ZXN0IHJlY292ZXJlZCBmcm9tIGl0LgpAQCAtMzIxMjMsNyArMzIy
NTIsNyBAQAogMjAyMC0wOC0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjY1NzI1KSBbR1RLXVtXUEVdIFNldmVyYWwg
aHR0cC90ZXN0cyB0aW1lb3V0L2ZhaWx1cmVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1NDIKK2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTU1NDIKIAogICAgICAgICBSZXZpZXdlZCBieSBTZXJnaW8gVmlsbGFyIFNl
bmluLgogCkBAIC0zMjE5Niw3ICszMjMyNSw3IEBACiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IEtpbHplci4KIAogICAgICAgICBVc2UgdGhlIG5ldyBzdHJ1Y3QgZm9yIHNlbmRpbmcgU2hhcmVk
TWVtb3J5OjpIYW5kbGUgb2JqZWN0cyB2aWEgSVBDLCBzbwotICAgICAgICB3ZSBjYW4gaW5jbHVk
ZSB0aGUgZXhhY3Qgc2l6ZSBvZiBkYXRhIChTaGFyZWRNZW1vcnk6OkhhbmRsZTo6c2l6ZSgpCisg
ICAgICAgIHdlIGNhbiBpbmx1ZGUgdGhlIGV4YWN0IHNpemUgb2YgZGF0YSAoU2hhcmVkTWVtb3J5
OjpIYW5kbGU6OnNpemUoKQogICAgICAgICByb3VuZHMgdXAgdG8gdGhlIG5lYXJlc3QgcGFnZSks
IGFuZCB2ZXJpZnkgdGhlc2Ugc2l6ZXMgbWF0Y2ggd2hlbiBkZWNvZGluZy4KIAogICAgICAgICBJ
biBtYW55IGNhc2VzLCB0aGUgc2l6ZSBpcyBub3Qgc2VudCBhcyBhIHNlcGFyYXRlIGFyZ3VtZW50
IHZpYSBJUEMsIHNvCkBAIC0zMjQwMiw5ICszMjUzMSw5IEBACiAyMDIwLTA4LTEzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBEbyBu
b3QgYWNjZXB0IGRyYWcgb3BlcmF0aW9ucyB3aGVuIHRoZSBtYXRjaGVkIHRhcmdldCBsaXN0IGlz
IGVtcHR5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTUzNzIKK2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNzIKIAot
ICAgICAgICBSZXZpZXdlZCBieSBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvLgorUmV2aWV3ZWQgYnkg
QWRyaWFuIFBlcmV6IGRlIENhc3Ryby4KIAogICAgICAgICBEbyBub3QgaW5pdGlhbGl6ZSBtX3Nl
bGVjdGlvbkRhdGEgaWYgd2UgZG9uJ3QgaGF2ZSB2YWxpZCB0YXJnZXRzLgogCkBAIC0zMjk2Miw3
ICszMzA5MSw3IEBACiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCiAKICAgICAgICAg
UmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgZGVjbGFyYXRpb25zIHRoYXQgd2VyZSBvbmx5IHVzZWQg
Zm9yIGRlYnVnIGxvZ2dpbmcgaW4gV2ViS2l0VGVzdFJ1bm5lciwgYW5kIGFkZCBzb21lCi0gICAg
ICAgIG1vcmUgbG9nZ2luZyB0byBjaGVjayB3aGV0aGVyIHRoZSB3ZWIgdmlldyBpcyBldmVuIGdl
dHRpbmcgYSBjYWxsIHRvIHNlbGVjdCBhbGwgZnJvbSBVSUtpdC4KKyAgICAgICAgbW9yZSBsb2dn
aW5nIHRvIGhlY2sgd2hldGhlciB0aGUgd2ViIHZpZXcgaXMgZXZlbiBnZXR0aW5nIGEgY2FsbCB0
byBzZWxlY3QgYWxsIGZyb20gVUlLaXQuCiAKICAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJ
S2l0U1BJLmg6CiAgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CkBAIC0zMzQ2OSw3ICszMzU5OCw3IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgogCi0gICAgICAgIFdlIG9ubHkgbmVlZCB0aGUgJ2NvbS5hcHBsZS53ZWJraXQu
bWljcm9waG9uZScgU2FuZGJveCBFeHRlbnNpb24gYXQgc3RhcnR1cCBvbgorICAgICAgIFdlIG9u
bHkgbmVlZCB0aGUgJ2NvbS5hcHBsZS53ZWJraXQubWljcm9waG9uZScgU2FuZGJveCBFeHRlbnNp
b24gYXQgc3RhcnR1cCBvbgogICAgICAgICBtYWNPUyBhbmQgTWFjQ2F0YWx5c3QgKGFuZCBldmVu
IG9uIHRob3NlIHBsYXRmb3Jtcywgb25seSB1bnRpbCA8cmRhcjovL3Byb2JsZW0vMjk0NDgzNjg+
CiAgICAgICAgIGlzIGZpeGVkKS4KIApAQCAtMzQwNjEsNyArMzQxOTAsNyBAQAogICAgICAgICBG
dXJ0aGVybW9yZSwgdXBvbiBjaG9vc2luZyBvbmUgb2YgdGhlc2Ugb3B0aW9ucywgdGhlIHBhZ2Ug
cHJvZ3JhbW1hdGljYWxseSBmb2N1c2VzIHRoZSBvZmZzY3JlZW4gc2VsZWN0IGFnYWluLgogICAg
ICAgICBUaGlzIGNhdXNlcyB1cyB0byByZS1wcmVzZW50IHRoZSBvZmZzY3JlZW4gcG9wb3Zlciwg
d2hpY2ggcmVxdWlyZXMgeWV0IGFub3RoZXIgdGFwIHRvIGRpc21pc3Mgb24gaU9TIDEzLgogICAg
ICAgICBIb3dldmVyLCBvbiBpT1MgMTQsIHRoaXMgYWN0dWFsbHkgcmVzdWx0cyBpbiBhIGNyYXNo
IHdoZW4gYXR0ZW1wdGluZyB0byBzY3JvbGwgdGhlIHBvcG92ZXIncyBpbm5lciBVSVRhYmxlVmll
dwotICAgICAgICB0byB0aGUgc2VsZWN0ZWQgcm93LgordG8gdGhlIHNlbGVjdGVkIHJvdy4KIAog
ICAgICAgICBUbyBmaXggYm90aCB0aGUgY3Jhc2ggb24gaU9TIDE0IGFuZCB0aGUgbXVsdGlwbGUg
cmVkdW5kYW50IHRhcHMgcmVxdWlyZWQgdG8gZGlzbWlzcyB0aGUgcG9wb3ZlciBvbiBpT1MgMTMs
IGF2b2lkCiAgICAgICAgIHNob3dpbmcgcG9wb3ZlcnMgYWx0b2dldGhlciBpZiB0aGUgcG9wb3Zl
cidzIHByZXNlbnRhdGlvbiByZWN0IGlzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGVu
dCB2aWV3LCBzaW5jZQpAQCAtMzUwMTAsNyArMzUxMzksNyBAQAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KIAogICAgICAgICBJbiBjYXNlIG9mIGNyZWF0aW5nIGEgVENQIHNvY2tl
dCwgTmV0d29ya1JUQ1Byb3ZpZGVyIHdpbGwgaG9wIHRvIHRoZSBtYWluIHRocmVhZCBiZWZvcmUg
Y3JlYXRpbmcgdGhlIHNvY2tldC4KLSAgICAgICAgSW4gdGhhdCBjYXNlLCBOZXR3b3JrUlRDUHJv
dmlkZXIgbWF5IGFjdHVhbGx5IGJlIGNsb3NlZCBiZXR3ZWVuIHRoZSB0aW1lIG9mIHJlY2Vpdmlu
ZyB0aGUgbWVzc2FnZSBhbmQgaG9waW5nIHRvIHRoZSBtYWluIHRocmVhZC4KK0luIHRoYXQgY2Fz
ZSwgTmV0d29ya1JUQ1Byb3ZpZGVyIG1heSBhY3R1YWxseSBiZSBjbG9zZWQgYmV0d2VlbiB0aGUg
dGltZSBvZiByZWNlaXZpbmcgdGhlIG1lc3NhZ2UgYW5kIGhvcGluZyB0byB0aGUgbWFpbiB0aHJl
YWQuCiAgICAgICAgIFByb3RlY3QgZnJvbSB0aGlzIGJ5IGFkZGluZyBudWxscHRyIGNoZWNrcy4K
IAogICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
OgpAQCAtMzUxMTYsNyArMzUyNDUsNyBAQAogICAgICAgICBBZGQgbW9yZSBsb2dnaW5nIHRvIHRy
eSBhbmQgc2VlIHdoeSB0aGlzIHRlc3QgaXMgZmFpbGluZyBvbiBzb21lIHBvc3QtY29tbWl0IGlP
UyBib3RzLiBJbiBwYXJ0aWN1bGFyLCB0aGVzZSBsb2dzCiAgICAgICAgIHNob3VsZCB0ZXN0IGEg
dGhlb3J5IHRoYXQgaXQncyBwb3NzaWJsZSBmb3IgYFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2lu
Z2xlVGFwQXRQb2ludFdpdGhNb2RpZmllcnNgIHRvIHRyeSBhbmQKICAgICAgICAgc3ludGhlc2l6
ZSBhbmQgc2VuZCBISUQgZXZlbnRzIGZvciB0aGUgdGFwIGJlZm9yZSBHcmFwaGljc1NlcnZpY2Vz
IGhhcyByZWdpc3RlcmVkIHRoZSBmYWN0IHRoYXQgYSBtb2RpZmllciBrZXkKLSAgICAgICAgaXMg
YmVpbmcgaGVsZCwgd2hpY2ggd291bGQgbGVhZCB0byBhIHJlZ3VsYXIgdGFwIGluc3RlYWQgb2Yg
YSBzaGlmdC10YXAgaW4gdGhpcyB0ZXN0LgoraXMgYmVpbmcgaGVsZCwgd2hpY2ggd291bGQgbGVh
ZCB0byBhIHJlZ3VsYXIgdGFwIGluc3RlYWQgb2YgYSBzaGlmdC10YXAgaW4gdGhpcyB0ZXN0Lgog
CiAgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CiAg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NpbmdsZVRhcElkZW50aWZpZWQ6XSk6CkBAIC0zNjYw
Myw3ICszNjczMiw3IEBACiAKICAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
ICAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbik6Ci0gICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkF0aW9uKToKIAogMjAyMC0wNy0xNiAgVHVvbWFzIEthcmtrYWlu
ZW4gIDx0dW9tYXMud2Via2l0QGFwcGxlLmNvbT4KIApAQCAtMzY4MzUsMTIgKzM2OTY0LDEyIEBA
CiAgICAgICAgIHN0YXNoaW5nIHRoZSBPYmplY3RpdmUtQyBibG9jayBhbmQgd2FpdGluZyBmb3Ig
YSByZXNwb25zZSBmcm9tIHRoZSB3ZWIgcHJvY2VzcyAod2hpY2ggaXMgcHJlc3VtYWJseSBub3QK
ICAgICAgICAgcnVubmluZykuCiAKLSAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKICAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKICAgICAgICAgKC1bV0tDb250ZW50VmlldyBjbGVh
blVwSW50ZXJhY3Rpb25dKToKICAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY2FuY2VsUGVuZGlu
Z0tleUV2ZW50SGFuZGxlcl0pOgogCi0gICAgICAgIFdoZW4gdGhlIHdlYiBwcm9jZXNzIHRlcm1p
bmF0ZXMgb3Igc3dhcHMgaW4gdGhlIG1pZGRsZSBvZiBoYW5kbGluZyBhIGtleSBldmVudCwgZ28g
YWhlYWQgYW5kIGludm9rZSB0aGUga2V5CitXaGVuIHRoZSB3ZWIgcHJvY2VzcyB0ZXJtaW5hdGVz
IG9yIHN3YXBzIGluIHRoZSBtaWRkbGUgb2YgaGFuZGxpbmcgYSBrZXkgZXZlbnQsIGdvIGFoZWFk
IGFuZCBpbnZva2UgdGhlIGtleQogICAgICAgICBldmVudCBjb21wbGV0aW9uIGhhbmRsZXIgZWFy
bHkgd2l0aCB0aGUgcXVldWVkIGV2ZW50LCBzaW5jZSB3ZSBhcmVuJ3QgZ29pbmcgdG8gcmVjZWl2
ZSBhIHJlc3BvbnNlIGZyb20gdGhlIHdlYgogICAgICAgICBwcm9jZXNzIGFueXdheXMuCiAKQEAg
LTM2ODgxLDcgKzM3MDEwLDcgQEAKICAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW06CiAgICAgICAgICgtW1dLQ29udGVudFZpZXcgZGlkVXBkYXRlVmlzaWJsZVJlY3Q6dW5v
YnNjdXJlZFJlY3Q6Y29udGVudEluc2V0czp1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3Jk
aW5hdGVzOm9ic2N1cmVkSW5zZXRzOnVub2JzY3VyZWRTYWZlQXJlYUluc2V0czppbnB1dFZpZXdC
b3VuZHM6c2NhbGU6bWluaW11bVNjYWxlOmluU3RhYmxlU3RhdGU6aXNDaGFuZ2luZ09ic2N1cmVk
SW5zZXRzSW50ZXJhY3RpdmVseTplbmNsb3NlZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmlldzpzZW5k
RXZlbklmVW5jaGFuZ2VkOl0pOgogICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRpZFVwZGF0ZVZp
c2libGVSZWN0OnVub2JzY3VyZWRSZWN0OmNvbnRlbnRJbnNldHM6dW5vYnNjdXJlZFJlY3RJblNj
cm9sbFZpZXdDb29yZGluYXRlczpvYnNjdXJlZEluc2V0czp1bm9ic2N1cmVkU2FmZUFyZWFJbnNl
dHM6aW5wdXRWaWV3Qm91bmRzOnNjYWxlOm1pbmltdW1TY2FsZTppblN0YWJsZVN0YXRlOmlzQ2hh
bmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6ZW5jbG9zZWRJblNjcm9sbGFibGVBbmNl
c3RvclZpZXc6XSk6IERlbGV0ZWQuCi0gICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XYlBhZ2VQcm94eUlPUy5tbToKICAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKToK
IAogMjAyMC0wNy0xNCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
QEAgLTM4NDE5LDcgKzM4NTQ4LDcgQEAKICAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHA6CiAgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRpZFBlcmZvcm1B
Y3Rpb24pOgogICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcDoK
LSAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlvbik6CisoV2ViS2l0
OjpEcm9wVGFyZ2V0OjpkaWRQZXJmb3JtQWN0aW9uKToKIAogMjAyMC0wNy0wNyAgVG9tb2tpIElt
YWkgIDxUb21va2kuSW1haUBzb255LmNvbT4KIApAQCAtMzk2ODgsNyArMzk4MTcsNyBAQAogCiAg
ICAgICAgIFtXZWJBdXRobl0gUmVtb3ZlIHdoaXRlbGlzdGVkUnBJZAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODE3Ci0gICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDEwODEzMT4KKzxyZGFyOi8vcHJvYmxlbS82MDEwODEzMT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KIApAQCAtNDM3NjIsNyArNDM4OTEsNyBAQAogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCiAKLSAgICAgICAgT24gaU9TLCBhZGQg
ZW50aXRsZW1lbnQgZm9yIFBBQyBleGNlcHRpb25zLgorT24gaU9TLCBhZGQgZW50aXRsZW1lbnQg
Zm9yIFBBQyBleGNlcHRpb25zLgogCiAgICAgICAgICogU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVt
ZW50cy5zaDoKIApAQCAtNDYwNTgsMTEgKzQ2MTg3LDExIEBACiAgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmg6CiAgICAgICAg
IChmcm9tV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZSk6CiAgICAgICAgICh0b1dLSW5zcGVjdG9y
RGVidWdnYWJsZVR5cGUpOgotICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaDoKKyogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOgogICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CiAgICAgICAg
IChsZWdhY3lEZWJ1Z2dhYmxlVHlwZVRvTW9kZXJuRGVidWdnYWJsZVR5cGUpOgogCi0gICAgICAg
ICogVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgor
KiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CiAg
ICAgICAgIChXZWJLaXQ6OnBhcnNlRGVidWdnYWJsZVR5cGVGcm9tU3RyaW5nKToKIAogMjAyMC0w
NS0yOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KQEAgLTQ2MjgzLDcg
KzQ2NDEyLDcgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFdpbGFuZGVyLgogCi0gICAg
ICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRh
dGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1uby11c2VyLWludGVy
YWN0aW9uLWRhdGFiYXNlLmh0bWwKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb2tpZXMtcmVtb3ZlZC1zdGF0
aXN0aWNzLXdpdGgtbm8tdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sCiAgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFs
bC1idXQtY29va2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1uby11c2VyLWludGVyYWN0aW9u
Lmh0bWwKIAogICAgICAgICBBZGRzIGEgZ2V0dGVyIGZvciBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZSB3aGljaCByZXR1cm5zIFdURjo6bnVsbG9wdCBpZiB0aGUgCkBAIC00OTAwOCw3ICs0
OTEzNyw3IEBACiAgICAgICAgIFtpT1NdIFJlbW92ZSBkZWFkIGRpY3RhdGlvbiBjb2RlCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4NzEKIAotICAg
ICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCitSZXZpZXdlZCBieSBXZW5zb24gSHNpZWgu
CiAKICAgICAgICAgVUlLaXQgaGFzIGxvbmcgcmVtb3ZlZCBhbGwgY2FsbGVycyB0aGF0IHdvdWxk
IGNhbGwgLW5leHRVbnBlcnR1cmJlZERpY3RhdGlvblJlc3VsdEJvdW5kYXJ5RnJvbVBvc2l0aW9u
CiAgICAgICAgIGFuZCAtcHJldmlvdXNVbnBlcnR1cmJlZERpY3RhdGlvblJlc3VsdEJvdW5kYXJ5
RnJvbVBvc2l0aW9uLiBTbywgcmVtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbnMuCkBAIC01MDg1OSw3
ICs1MDk4OCw3IEBACiAgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVBy
ZXBhcmVUb1N1c3BlbmQpOiBEZWxldGVkLgogICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Qcm9jZXNzRGlkUmVzdW1lKTogRGVsZXRlZC4KICAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6Ci0gICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByZXBhcmVUb1N1c3BlbmQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3cmtQcm9jZXNzOjpwbGF0Zm9ybVByZXBhcmVUb1N1c3BlbmQpOiBEZWxl
dGVkLgogICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlk
UmVzdW1lKTogRGVsZXRlZC4KIAogMjAyMC0wNS0wNyAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dh
cmRuZXJAYXBwbGUuY29tPgpAQCAtNTIxOTUsNyArNTIzMjQsNyBAQAogICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5tZXNzYWdlcy5pbjogQWRkZWQu
CiAgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaDoK
ICAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3Rv
cnkuY3BwOgotICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0
LmNwcDogUmVtb3ZlZC4KKyogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQu
Y3BwOiBSZW1vdmVkLgogICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRD
U29ja2V0Lmg6IFJlbW92ZWQuCiAKIDIwMjAtMDUtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CkBAIC01MjU2OCw3ICs1MjY5Nyw3IEBACiAgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oOgogICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW06CiAgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y2xlYXJBbGxDcmVkZW50
aWFscyk6Ci0gICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
Q29ubmVjdGlvbi5tbToKKyogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2Fs
Q29ubmVjdGlvbi5tbToKICAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9uOjpjcmVhdGVD
cmVkZW50aWFsUHJpdmF0ZUtleSBjb25zdCk6CiAKIDIwMjAtMDUtMDQgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CkBAIC01MzQyNyw3ICs1MzU1Niw3IEBACiAKICAgICAg
ICAgVGVzdDogZmFzdC9ldmVudHMvdG91Y2gvaW9zL3R3by1jbGljay1ldmVudHMtYWZ0ZXItZG91
YmxlLXRhcC13aXRoLXRvdWNoLWhhbmRsZXIuaHRtbAogCi0gICAgICAgICogUGxhdGZvcm0vc3Bp
L2lvcy9VSUtpdFNQSS5oOgorKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CiAgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CiAgICAgICAgICgt
W1dLQ29udGVudFZpZXcgZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI6c2hvdWxkRGVmZXJPdGhl
ckdlc3R1cmVSZWNvZ25pemVyOl0pOgogCkBAIC01NDU4Myw3ICs1NDcxMiw3IEBACiAKICAgICAg
ICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcGFnZS9nZXQtY29va2llcy5odG1sCiAKLSAg
ICAgICAgQWZ0ZXIgcjI1OTY0OSwgV2ViIEluc3BlY3RvciBubyBsb25nZXIgaW5jb3JyZWN0bHkg
YmFpbHMgd2hlbiBhdHRlbXB0aW5nIHRvIGdldCBjb29raWVzIGlmCisgICAgICAgIEFmdGVyIHIy
NTk2NDksIFdlYiBJbnNwZWN0b3Igbm8gbG9uZ2VyIGluY29ycmVjdGx5IGJhaWxzIHdoZW4gYXR0
ZW1waW5nIHRvIGdldCBjb29raWVzIGlmCiAgICAgICAgIHRoZSBsYXN0IHJlc291cmNlIGxvYWRl
ZCBieSBhIGdpdmVuIGZyYW1lIGRvZXMgbm90IGhhdmUgY29va2llIGFjY2Vzcy4gV2UgYWxzbyBu
ZWVkIHRvIGNoZWNrCiAgICAgICAgIHdoZXRoZXIgdGhlIHJlc291cmNlIHdlJ3JlIGF0dGVtcHRp
bmcgdG8gZ2V0IGNvb2tpZXMgZm9yIGlzIGZpcnN0LXBhcnR5IG9yIHRoaXJkLXBhcnR5IHNvIGFz
CiAgICAgICAgIHRvIHJlZmxlY3QgdGhlIGN1cnJlbnQgY29va2llIHBvbGljeS4KQEAgLTU0OTEy
LDcgKzU1MDQxLDcgQEAKICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0UG9zaXRpb25B
dFBvaW50KToKICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbik6CiAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vdmVTZWxlY3Rp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6Ci0gICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
bGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KToKKyhXZWJLaXQ6OldlYlBhZ2U6OnNlbGVj
dFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KToKICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Zm9jdXNOZXh0Rm9jdXNlZEVsZW1lbnQpOgogCiAyMDIwLTA0LTI3ICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KQEAgLTU2NjgyLDcgKzU2ODExLDcgQEAKICAgICAgICAgKiBV
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oOgogICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKICAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc0Fz
c2VydGlvbi5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OlByb2Nlc3NB
c3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOlByb2Nlc3NBc3Nl
cnRpb24pOgogICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmg6CiAgICAgICAg
ICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgogICAgICAgICAoV2ViS2l0OjpQcm9j
ZXNzVGhyb3R0bGVyOjphc3NlcnRpb25OYW1lIGNvbnN0KToKQEAgLTU3Mzc2LDkgKzU3NTA1LDkg
QEAKICAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBVc2UgbG93ZXJjYXNlIGZvciBjb25zaXN0ZW5jeSB3aXRo
IG90aGVyCiAgICAgICAgIGRlZmF1bHQgZGlyZWN0b3JpZXMuCiAKLTIwMjAtMDQtMjAgIERhdmlk
IEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKzIwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CiAKLSAgICAgICAgUkVHUkVTU0lPTiAocjI1OTYxMCk6IExlYWsgb2YgUkJT
QXNzZXJ0aW9uSW52YWxpZGF0aW9uQ2FsbGJhY2tUeXBlIGR1ZSB0byBtaXNzaW5nIC1kZWFsbG9j
CitSRUdSRVNTSU9OIChyMjU5NjEwKTogTGVhayBvZiBSQlNBc3NlcnRpb25JbnZhbGlkYXRpb25D
YWxsYmFja1R5cGUgZHVlIHRvIG1pc3NpbmcgLWRlYWxsb2MKICAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMDcxMT4KICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTkzMzYxPgogCkBA
IC01NzQxMywyNyArNTc1NDIsMjcgQEAKICAgICAgICAgICBkZWNsYXJlIHdoaWNoIHdvcmxkIHRo
ZXkgd2VyZSBwb3N0ZWQgZnJvbS4KICAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2Ny
aXB0TWVzc2FnZS5tbToKICAgICAgICAgKC1bV0tTY3JpcHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6
d2ViVmlldzpmcmFtZUluZm86bmFtZTp3b3JsZDpdKToKLSAgICAgICAgKC1bV0tTY3JpcHRNZXNz
YWdlIHdvcmxkXSk6CisoLVtXS1NjcmlwdE1lc3NhZ2Ugd29ybGRdKToKICAgICAgICAgKC1bV0tT
Y3JpcHRNZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpmcmFtZUluZm86bmFtZTpdKTogRGVs
ZXRlZC4KICAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVy
bmFsLmg6CiAKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUhh
bmRsZXJXaXRoUmVwbHkuaDogQWRkZWQuCisqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhSZXBseS5oOiBBZGRlZC4KICAgICAgICAgICBEZWNsYXJlIHRoZSBu
ZXcgcHJvdG9jb2wgZm9yIGEgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB0aGF0IGNhbiByZXBseSB0
byBtZXNzYWdlcyBhc3luY2hyb25vdXNseS4KIAogICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaDoKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgogICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJv
bGxlciBfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6XSk6CiAgICAgICAgICgtW1dLVXNlckNvbnRl
bnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6XSk6CiAgICAgICAgICgt
W1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmNvbnRlbnRX
b3JsZDpuYW1lOl0pOgogICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseTpjb250ZW50V29ybGQ6bmFtZTpdKToKICAgICAgICAg
KC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgcmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JO
YW1lOmNvbnRlbnRXb3JsZDpdKToKICAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
cmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzRnJvbUNvbnRlbnRXb3JsZDpdKToKLSAgICAg
ICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRs
ZXJzXSk6CisoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVBbGxTY3JpcHRNZXNzYWdl
SGFuZGxlcnNdKToKICAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVySW50ZXJuYWwuaDoKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgorKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgogICAgICAgICAKICAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKLSAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0
ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVy
ZTppbkZyYW1lOmluV29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisoLVtXS1dlYlZpZXcgX2V2
YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJH
ZXN0dXJlOmluRnJhbWU6aW5Xb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKICAgICAgICAgVXBk
YXRlIGZvciBuZXcgc2hhcmVkIEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluaXRpYWxpemF0
aW9uLgogICAgICAgICAKICAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyLmNwcDoKQEAgLTU3NTQ3LDI0ICs1NzY3NiwyNCBAQAogICAgICAgICBzeXN0
ZW0sIGJ1dCBJIHdhc24ndCBhYmxlIHRvIHRlc3QgdGhhdCBsb2NhbGx5LgogCiAgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0gICAgICAgIChwb3N0cHJvY2Vzcy1o
ZWFkZXItcnVsZSk6IEFkZGVkIGRlcGVuZGVuY2llcyBzbyB0aGF0IHBvc3QtcHJvY2Vzc2luZyB3
aWxsIGJlCisocG9zdHByb2Nlc3MtaGVhZGVyLXJ1bGUpOiBBZGRlZCBkZXBlbmRlbmNpZXMgc28g
dGhhdCBwb3N0LXByb2Nlc3Npbmcgd2lsbCBiZQogICAgICAgICByZWRvbmUgaWYgQ29uZmlndXJh
dGlvbnMvV2ViS2l0LnhjY29uZmlnIGlzIHRvdWNoZWQsIHNpbmNlIHRoYXQgaXMgd2hlcmUKICAg
ICAgICAgV0tfRlJBTUVXT1JLX0hFQURFUl9QT1NUUFJPQ0VTU0lOR19ESVNBQkxFRCBpcyBzZXQs
IG9yIGlmCiAgICAgICAgIFNjcmlwdHMvcG9zdHByb2Nlc3MtaGVhZGVyLXJ1bGUgaXMgdG91Y2hl
ZCwgc2luY2UgdGhhdCBpcyB3aGVyZSB0aGUKICAgICAgICAgcG9zdC1wcm9jZXNzaW5nIGNvZGUg
aXMuIElmIGVpdGhlciBvZiB0aG9zZSBmaWxlcyBjaGFuZ2VzIGl0IGNvdWxkIGFmZmVjdCB0aGUK
LSAgICAgICAgb3V0cHV0IG9mIHBvc3QtcHJvY2Vzc2luZy4gVGhpcyBzaG91bGQgbWFrZSBhIGNo
YW5nZSBsaWtlIHRoaXMgd29yayBpbiB0aGUKK291dHB1dCBvZiBwb3N0LXByb2Nlc3NpbmcuIFRo
aXMgc2hvdWxkIG1ha2UgYSBjaGFuZ2UgbGlrZSB0aGlzIHdvcmsgaW4gdGhlCiAgICAgICAgIG5l
dyBYY29kZSBidWlsZCBzeXN0ZW0gd2l0aG91dCB0b3VjaGluZyBmaWxlcyBhcyBpcyBkb25lIGFi
b3ZlLgogCi0yMDIwLTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKzE4
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkgdnMgQ29udGVudFdvcmxkIGxpZmV0aW1lCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA3MDAKIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgogCi0gICAgICAgIENvdmVyZWQgYnkgQVBJ
IHRlc3QuCitDb3ZlcmVkIGJ5IEFQSSB0ZXN0LgogICAgICAgICAKLSAgICAgICAgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkgY3VycmVudGx5IGtlZXBzIGFsbCBvZiBpdHMgYXNzb2NpYXRl
ZCBBUEk6OkNvbnRlbnRXb3JsZHMgYWxpdmUgdmlhIFJlZlB0cnMuCitXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSBjdXJyZW50bHkga2VlcHMgYWxsIG9mIGl0cyBhc3NvY2lhdGVkIEFQSTo6
Q29udGVudFdvcmxkcyBhbGl2ZSB2aWEgUmVmUHRycy4KICAgICAgICAgCiAgICAgICAgIFRoaXMg
aXMgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IGFsbCBvZiB0aGUgYXNzb2NpYXRlZCBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcnMsIFVzZXJTY3JpcHRzLCBhbmQgCiAgICAgICAgIFVzZXJTdHlsZVNoZWV0
cyBhbHJlYWR5IGtlZXAgdGhlaXIgYXNzb2NpYXRlZCBBUEk6OkNvbnRlbnRXb3JsZHMgYWxpdmUu
CkBAIC01ODM4Miw3ICs1ODUxMSw3IEBACiAgICAgICAgIFdoaWxlIHRoaXMgZnVuY3Rpb24gd2Fz
IGluIHRoZSAiU1BJIiBoZWFkZXIsIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGF0IEFwcGxlIHRoYXQg
d2FzIHVzaW5nCiAgICAgICAgIHRoaXMgZnVuY2l0b24gYW5kIEkgd2lsbCBhc3N1bWUgbm8gbm9u
LUFwcGxlIHNvZnR3YXJlIHdhcyB1c2luZyBpdCBlaXRoZXIuCiAKLSAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgogICAgICAgICAoLVtXS1dlYlZpZXcgX2ZvY3VzVGV4dElucHV0Q29udGV4
dDpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KICAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKICAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKQEAgLTU4NDI5LDcgKzU4NTU4LDcgQEAKIAogMjAyMC0wNC0xNiAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAotICAgICAgICBSRUdSRVNTSU9OKHIyNjAwODEp
IEJyb2tlIGlPUyBQTFQgZHVlIHRvIEluamVjdGVkQnVuZGxlIGluaXRpYWxpemF0aW9uIChlZGl0
KQorUkVHUkVTU0lPTihyMjYwMDgxKSBCcm9rZSBpT1MgUExUIGR1ZSB0byBJbmplY3RlZEJ1bmRs
ZSBpbml0aWFsaXphdGlvbiAoZWRpdCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMDU4MgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE4Mzg1ODQ+
CiAKQEAgLTU5MjkzLDcgKzU5NDIyLDcgQEAKIAogICAgICAgICBBcHBseSB0aGUgdmlld3BvcnQg
cXVpcmsgaWYgbmVlZGVkOyBzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4K
IAotICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgogICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKToKIAogMjAyMC0wNC0xNCAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgK
aW5kZXggZDA5YTUyMjM0ZjhhN2EyZGY4YzVmMzdiYzcxZDMxZDM5YWM0OGFiNy4uN2M4NjQ3MTkz
NjAxMDI3ZmQ3MmYxNmI5MWU2NWM5MDBmYmVkNWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNw
YXRjaGVyLmgKQEAgLTI2LDE0ICsyNiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKIC8vIEZ1bmN0aW9uRGlzcGF0Y2hlciBpcyBhbiBhYnN0cmFjdCBy
ZXByZXNlbnRhdGlvbiBvZiBzb21ldGhpbmcgdGhhdCBmdW5jdGlvbnMgY2FuIGJlCiAvLyBkaXNw
YXRjaGVkIHRvLiBUaGlzIGNhbiBmb3IgZXhhbXBsZSBiZSBhIHJ1biBsb29wIG9yIGEgd29yayBx
dWV1ZS4KIAotY2xhc3MgRnVuY3Rpb25EaXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEZ1bmN0aW9uRGlzcGF0Y2hlcj4geworY2xhc3MgRnVuY3Rpb25EaXNwYXRjaGVyIHsK
IHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+RnVuY3Rpb25EaXNwYXRj
aGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1NvdXJjZS9X
VEYvd3RmL1J1bkxvb3AuaAppbmRleCAwNDY2ZDQ0NTlkNmI3NGJjYzFjZTRkODQyMDM3MzY4NzI2
MDdjYTM0Li40ZWMzMWRjM2Q1ODgzMWYwZDU0ODk3NzNhZTdjMDM3ZjYxMDk1NzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYvUnVuTG9v
cC5oCkBAIC02NCw3ICs2NCw3IEBAIHVzaW5nIFJ1bkxvb3BNb2RlID0gdW5zaWduZWQ7CiAjZGVm
aW5lIERlZmF1bHRSdW5Mb29wTW9kZSAwCiAjZW5kaWYKIAotY2xhc3MgUnVuTG9vcCBmaW5hbCA6
IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworY2xhc3MgUnVuTG9vcCBmaW5hbCA6IHB1Ymxp
YyBGdW5jdGlvbkRpc3BhdGNoZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSdW5Mb29w
PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcCk7CiBwdWJsaWM6CiAgICAgLy8g
TXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCmluZGV4IDVk
Njk0YmQ4YzNmNWE0YTVjMDBjOTQyZjlkZDQzM2Q3Yzg0NDVlMjMuLjIwMGY5NjljMjc2Yzc0ZmJm
MjdmMzU0ZDlhOTE3YjQ5MDYwZmM1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmtR
dWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCkBAIC00MCw3ICs0MCw3IEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCi1jbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVu
Y3Rpb25EaXNwYXRjaGVyIHsKK2NsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrUXVldWU+IHsKIAog
cHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBRT1MgPSBUaHJlYWQ6OlFPUzsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBl
OjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7Ci0gICAgfldvcmtRdWV1ZSgpIGZpbmFsOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB+V29ya1F1ZXVlKCkgZmluYWw7CiAKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoU2Vjb25kcywgRnVuY3Rpb248
dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA4Mjc4YmNlMTRjNWYxYzI0YmU3YzkwMjJkNWZk
NDBiMjRjNThlZmVmLi5mYWI0YTFlNWUxMjBmYmI0MjRiM2E5OWIyMTc5MjNiZmRlNTkwYTE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC0xODUsOCArMTg1LDggQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6fkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIG1fY29ubmVjdGlvbi0+aW52YWxp
ZGF0ZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0g
ICAgbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyLT5jbG9zZSgpOwotICAgIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci0+Y2xvc2UoKTsKKyAgICBtX2F1ZGlvVHJhY2tSZW5kZXJl
ck1hbmFnZXIucmVzZXQoKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
cmVzZXQoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQog
ICAgIG1fbGliV2ViUlRDQ29kZWNzUHJveHktPmNsb3NlKCk7CkBAIC0yOTMsNyArMjkzLDcgQEAg
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlv
U2Vzc2lvblByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6
OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBb
Jl0oKSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRX
cmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIs
IFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBT
Y29wZWREaXNjb25uZWN0IHsgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBp
ZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkgfTsKICAgICB9
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
fQpAQCAtMzA0LDE2ICszMDQsNiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VS
VF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQp
Ci0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92ZShyZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcigpCi17Ci0g
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0KCk7Ci19Ci0KICNpZiBFTkFC
TEUoV0VCR0wpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVz
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggN2JhZGQzNzc2OWNmNTJmZDU0MGI0ZmI3NzdkMDg4NzQ2NjA0ZjU0
Zi4uZTAwN2ZiYWVmYzk3OWFlMWI3ZGZmMDA0NWQ1ZmNhZWJjMzljOTJhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC0xNjQsNiArMTY0LDQ2IEBAIHByaXZhdGU6CiAgICAgLy8gTm93UGxheWluZ01hbmFnZXI6OkNs
aWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4pIGZpbmFsOwogCisgICAgLy8gU2NvcGVkIGhvbGRlciBmb3IgYW4gb2JqZWN0IHRoYXQg
aXMKKyAgICAvLyAxKSBoZWxkIGJ5IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKKyAgICAvLyAy
KSBpbnRlcmVzdGVkIGFib3V0IHdoZW4gdGhlIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29u
bmVjdGlvbiBzdG9wcy4KKyAgICAvLyBVc2VmdWwgbW9zdGx5IGZvciBjcm9zcy10aHJlYWQgcmVm
ZXJlbmNlIGNvdW50ZWQgb2JqZWN0cy4gVXBvbiBkaXNjb25uZWN0aW5nLCB0aGUgb2JqZWN0IHJl
Y2VpdmVzCisgICAgLy8gdGhlIHJlZmVyZW5jZSB1c2VkIGJ5IHRoZSBob2xkZXIgdG8gaG9sZCB0
aGUgb2JqZWN0LCBwcm92aW5nIGEgbm9uLXRyYXNoaW5nIGRlc3RydWN0aW9uIGJlaGF2aW9yIGZv
cgorICAgIC8vIHBvc3RpbmcgYSBwcm90ZWN0IHJlZiBhbG9uZyB0aGUgcG90ZW50aWFsIGNsZWFu
dXAgdGFzayBmb3Igc3BlY2lmaWMsIGxpbWl0ZWQgY2FzZXMuCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBjbGFzcyBTY29wZWREaXNjb25uZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IFNjb3BlZERpc2Nvbm5lY3QoKSA9IGRlZmF1bHQ7CisgICAgICAgIFNjb3BlZERpc2Nvbm5lY3Qo
UmVmPFQ+JiYgb2JqZWN0KQorICAgICAgICAgICAgOiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5jb25uZWN0V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKKyAgICAgICAgfQorICAgICAgICBTY29wZWREaXNjb25uZWN0KFNjb3BlZERpc2Nv
bm5lY3QmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9vYmplY3Qoc3RkOjpleGNoYW5nZShvdGhl
ci5tX29iamVjdCwgbnVsbHB0cikpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBTY29w
ZWREaXNjb25uZWN0JiBvcGVyYXRvcj0oU2NvcGVkRGlzY29ubmVjdCYmIG90aGVyKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgICAgICAgICBy
ZXNldCgpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNoYW5nZShvdGhlci5t
X29iamVjdCwgbnVsbHB0cik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgICAgIH0KKyAgICAgICAgflNjb3BlZERpc2Nvbm5lY3QoKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXNldCgpOworICAgICAgICB9CisgICAgICAgIHZvaWQgcmVzZXQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5kaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
bV9vYmplY3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIH0KKyAgICBwcml2YXRlOgorICAg
ICAgICBSZWZQdHI8VD4gbV9vYmplY3Q7CisgICAgfTsKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xv
Z2dlcjsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKQEAgLTE4MSw4
ICsyMjEsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKLSAgICBSZWY8UmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyPiBtX2F1ZGlvVHJhY2tSZW5kZXJl
ck1hbmFnZXI7Ci0gICAgUmVmPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKKyAgICBTY29wZWREaXNjb25uZWN0
PFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1RyYWNr
UmVuZGVyZXJNYW5hZ2VyOworICAgIFNjb3BlZERpc2Nvbm5lY3Q8UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwog
I2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcj4gbV9yZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKICNl
bmRpZgpAQCAtMTkzLDE3ICsyMzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NEaXNw
bGF5Q2FwdHVyZSB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIGNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRXcmFwcGVyIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAg
cHVibGljOgotICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZD4mJik7Ci0gICAgICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3Jh
cHBlcigpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICB9OwotCi0gICAgdXNpbmcgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4+OworICAgIHVz
aW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCBTY29wZWREaXNjb25uZWN0PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAg
PSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggYjBh
YzM1ODZiMDI0OWI0YWJlMWU0ZmNiY2U3M2U5ZDhmYTg2NWI0NS4uYmEzMmFhMzE3NjM1ZWVkMTQ5
MGNkMDUzMjI3ZDcwYWRlNWUzM2FiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNDIs
NyArNDIsNyBAQAogCiAjZGVmaW5lIFRFUk1JTkFURV9XRUJfUFJPQ0VTU19XSVRIX01FU1NBR0Uo
bWVzc2FnZSkgXAogICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlcXVlc3RpbmcgdGVybWlu
YXRpb24gb2Ygd2ViIHByb2Nlc3MgJSIgUFJJdTY0ICIgZm9yIHJlYXNvbjogJSIgUFVCTElDX0xP
R19TVFJJTkcsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAjbWVzc2FnZSk7IFwKLSAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MtPnRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsKKyAgICB0ZXJtaW5hdGVXZWJQcm9jZXNzKCk7
CiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24sIG1lc3NhZ2UpIGRvIHsgXAogICAg
IGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKQEAgLTY4LDMyICs2OCwzOCBAQCBSZWY8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlBybwogCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2Vt
YXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCiAgICAgOiBtX3dvcmtRdWV1ZShX
b3JrUXVldWU6OmNyZWF0ZSgiUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3b3JrIHF1ZXVlIiwgV29y
a1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQot
ICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obWFrZVJlZihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNvbm5lY3Rpb24oKSkpCiAgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKFdURk1vdmUocmVzdW1l
RGlzcGxheUxpc3RTZW1hcGhvcmUpKQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIHN1YnRsZTogTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkgbXVzdCBiZSBkZXN0cm95ZWQgYWZ0ZXIgdGhpcyBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kIGluc3RhbmNlLgorICAgICwgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KCkpCisgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIo
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93b3JrUXVldWUsIHRoaXMsIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6On5S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCkKK1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6On5SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgLy8gTWFrZSBzdXJlIHdl
IGRlc3Ryb3kgdGhlIFJlc291cmNlQ2FjaGUgb24gdGhlIFdvcmtRdWV1ZSBzaW5jZSBpdCBnZXRz
IHBvcHVsYXRlZCBvbiB0aGUgV29ya1F1ZXVlLgotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
cmVtb3RlUmVzb3VyY2VDYWNoZSA9IFdURk1vdmUobV9yZW1vdGVSZXNvdXJjZUNhY2hlKV0geyB9
KTsKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUobV93b3JrUXVldWUs
ICp0aGlzLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi12
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgIC8vIFRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGRlc3Ry
dWN0b3Igd29uJ3QgYmUgY2FsbGVkIHVudGlsIGRpc2Nvbm5lY3QoKSBpcyBjYWxsZWQgYW5kIHdl
IHVucmVnaXN0ZXIgb3Vyc2VsdmVzIGFzIGEgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIGJlY2F1
c2UKLSAgICAvLyB0aGUgSVBDOjpDb25uZWN0aW9uIHJlZnMgaXRzIFdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcnMuCi0gICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCku
cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgLy8gVGhl
IGJlbG93IGNsZWFudXAgdGFzayBpcyB0aGUgbGFzdCB0YXNrIHRoYXQgd2lsbCBydW4uIFRoZSBy
ZWYgZ3VhcmFudGVlcyB0aGF0IHRoZSBub24tcHJvdGVjdGVkIHRhc2tzIGVsc2V3aGVyZSBpbiB0
aGUgY29kZQorICAgIC8vIGhhdmUgYW4gYWxpdmUgb2JqZWN0LgorICAgIG1fd29ya1F1ZXVlLT5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSB7Cisg
ICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkZXN0cm95IHRoZSBSZXNvdXJjZUNhY2hlIG9uIHRoZSBX
b3JrUXVldWUgc2luY2UgaXQgZ2V0cyBwb3B1bGF0ZWQgb24gdGhlIFdvcmtRdWV1ZS4KKyAgICAg
ICAgV1RGTW92ZShwcm90ZWN0ZWRUaGlzLT5tX3JlbW90ZVJlc291cmNlQ2FjaGUpOworICAgIH0p
OwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gJm1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ucHRyKCk7
CiB9CiAKIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgY29uc3QKQEAgLTEwOSw3ICsxMTUsNyBAQCBib29sIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdy
YXBoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiBtZWRpYUl0ZW0gPSBpdGVt
LmdldDxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhPigpOwotICAgIGF1dG8gcGxheWVy
ID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpOworICAgIGF1dG8gcGxh
eWVyID0gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZWRpYVBsYXllcihtZWRpYUl0
ZW0uaWRlbnRpZmllcigpKTsKICAgICBpZiAoIXBsYXllcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC00ODIsNiArNDg4LDE5IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp0ZXJt
aW5hdGVXZWJQcm9jZXNzKCkKK3sKKyAgICAvLyBEdXJpbmcgdGhlIGNhbGwgdGltZSwgdGhlIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgaXMgYWxpdmUsIGJlY2F1c2UKKyAgICAvLyBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kIGlzIG93bmVkIGJ5IHRoZSBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LiBIb3dldmVyLCBkdXJpbmcKKyAgICAvLyBjYWxsIHRpbWUgb24gbWFpbiB0aHJlYWQsIHRoZSBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIG1pZ2h0IGFscmVhZHkgYmUgZGVzdHJveWVkLgorICAg
IC8vIFdlIGNhbm5vdCBjYWxsIGZyb20gdGhlIHdvcmsgcXVldWUsIHNpbmNlIHRoZXJlIGlzIG5v
IHRocmVhZC1zYWZlIHJlZmVyZW5jZSBub3IgaXMgdGhlCisgICAgLy8gY2FsbCBpdHNlbGYgdGhy
ZWFkLXNhZmUuCisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NdIHsKKyAgICAgICAgaWYgKGF1dG8qIGlu
c3RhbmNlID0gZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgICAgIGlu
c3RhbmNlLT50ZXJtaW5hdGVXZWJQcm9jZXNzKCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKaW5kZXggNzVkOWUwYWE1MjQyNDI4Y2ViNjdmN2I0YjM1ZTRmNTgyMjA2NmNiZi4uZWU4
MmI5YzZmOTNmOTdkMjE1ZWQ2NTljNWI2MDYzOWZhYjM5YTQzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oCkBAIC01OCwxMSArNTgsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERpc3Bs
YXlMaXN0UmVhZGVySGFuZGxlOwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2Ns
YXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogCi1jbGFzcyBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGZpbmFsCiAgICAgOiBwcml2
YXRlIElQQzo6TWVzc2FnZVNlbmRlcgotICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQKKyAgICAsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiB7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUp
OwpAQCAtNzksMTIgKzgxLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZm
ZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb24pOwogCi0gICAgdm9p
ZCBkaXNjb25uZWN0KCk7CisgICAgdm9pZCBjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
KyAgICB2b2lkIGRpc2Nvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbihSZWY8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZD4mJik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlJiYpOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSwgdWludDhf
dCogaGFuZGxlTG9jYXRpb24pIG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBmaW5hbDsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCkBAIC0xMDIsMTIgKzEwNSwxMiBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZSYsIEdQVVByb2Nlc3NXYWtldXBSZWFzb24pOwogCiAgICAgLy8gSVBDOjpN
ZXNzYWdlU2VuZGVyLgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0IG92ZXJyaWRlOworICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
LSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCiAgICAgdm9pZCBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwpAQCAtMTIxLDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVB
bGxGb250cygpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCB0ZXJtaW5h
dGVXZWJQcm9jZXNzKCk7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1dha2V1cEluZm9ybWF0aW9uIHsK
ICAgICAgICAgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzOwpAQCAt
MTQwLDExICsxNDQsMTMgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1
ZXVlOwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwotICAg
IFJlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAg
IE9wdGlvbmFsPFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9wZW5kaW5nV2FrZXVwSW5mbzsK
ICAgICBJUEM6OlNlbWFwaG9yZSBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworICAgIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAKaW5kZXggYmNi
NGJhNWNiYmM0ZDM0NzA1OWRjZmU4YWI4ZmNiMThmZjVhZDJmZS4uMmVmNDgzYTA4Y2M0NmI1ZDZk
MTQ5YzI2Mjc1ZWIzNmJhYjg1YWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0zOCwyOSArMzksMjYgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICA6IG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgIDogbV9jb25u
ZWN0aW9uKGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKQogICAgICwgbV9xdWV1
ZShjb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdwdVByb2Nlc3MoKS5hdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclF1ZXVlKCkpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5l
Y3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwotICAg
IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiB9CiAKLVJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6flJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlcigpCi17Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rp
b24oKS5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwotICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkucmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci19CitSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXI6On5SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJNYW5hZ2VyOjpjbG9zZSgpCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlcjo6Y29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBkaXNwYXRj
aFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAg
ICAgbV9yZW5kZXJlcnMuY2xlYXIoKTsKLSAgICB9KTsKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1l
c3NhZ2VSZWNlaXZlUXVldWUobV9xdWV1ZS5nZXQoKSwgKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUobV9xdWV1ZS5nZXQoKSwgKnRo
aXMsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4m
JiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5h
Z2VyOjpkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4mJiByZWZGcm9tQ29ubmVjdGlvbikKIHsKLSAgICBt
X3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jb25uZWN0aW9uLT5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24p
XSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcmVuZGVyZXJzLmNsZWFyKCk7CisgICAgfSk7
CiB9CiAKIGJvb2wgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpk
aXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1h
bmFnZXIuaAppbmRleCA5ZjBmNjUyZjY5MzYwMjAwODMzZWI4OWQ2M2E0NmQxZWQ1ZWU5ZTk1Li5i
NGU3YzkzMjUxMDM2YWM5ZDExZGE3NTJkZWE4YTYwMDNkNzQwMDNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgKQEAgLTI5LDQ1ICsyOSw0
MiBAQAogCiAjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI7CiAKLWNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVh
ZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgeworY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyIGZpbmFsIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5h
Z2VyPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgcHJvY2VzcykgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIo
cHJvY2VzcykpOyB9CiAgICAgflJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFu
YWdlcigpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVuZGVyZXJNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2Vi
UHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCi0gICAgSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKTsgfQorICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogCi0gICAgdm9pZCBjbG9z
ZSgpOworICAgIHZvaWQgY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgdm9pZCBk
aXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmKTsKIAotICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVy
Ci0gICAgdm9pZCBkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7Ci0K
ICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgYm9vbCBkaXNwYXRj
aE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBjcmVh
dGVSZW5kZXJlcihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXIpOwogICAg
IHZvaWQgcmVsZWFzZVJlbmRlcmVyKEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySWRlbnRp
Zmllcik7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M7CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJl
ZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgSGFzaE1hcDxBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcj4+IG1fcmVuZGVyZXJzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IDYxYjg5MGRjNzg2N2MzM2IwMDVmMjJlOTNi
YjFhZjQ3ZGRkM2IxN2MuLmUzNjkwMzA2NzBjMDc0NzBkMmFkZTc2ZmIwZGExMzY4MDM0ODZiMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcApAQCAt
MzksMzIgKzM5LDI3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQot
ICAgIDogbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mp
Ci0gICAgLCBtX2Nvbm5lY3Rpb24oZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
KCkpCisgICAgOiBtX2Nvbm5lY3Rpb24oZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0
aW9uKCkpCiAgICAgLCBtX3F1ZXVlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ3B1UHJvY2Vz
cygpLnZpZGVvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyUXVldWUoKSkKIHsKLSAgICBtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIHRoaXMpOwotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCku
YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQorUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6flJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLVJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI6On5SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkKK3Zv
aWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y29ubmVjdFdlYlByb2Nl
c3NDb25uZWN0aW9uKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwotICAgIG1fY29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkucmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpOworICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSht
X3F1ZXVlLmdldCgpLCAqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3Nh
Z2VSZWNlaXZlUXVldWUobV9xdWV1ZS5nZXQoKSwgKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQog
Ci12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNsb3NlKCkKK3Zv
aWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlzY29ubmVjdFdlYlBy
b2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
PiYmIHJlZkZyb21Db25uZWN0aW9uKQogewotICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtsYXllcnMgPSBXVEZNb3ZlKG1fbGF5ZXJzKV0geyB9KTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJl
bW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0aW9uKV0geworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtsYXllcnMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMtPm1fbGF5
ZXJzKV0geyB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyOjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFj
aykKLXsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19Ci0KIGJv
b2wgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlzcGF0Y2hNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIGlmICghZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpCkBAIC04Miw3ICs3Nyw3IEBAIHZvaWQg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlTGF5ZXIoU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyCiAgICAgICAgIGF1dG8gbGF5ZXIgPSBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigp
KTsKICAgICAgICAgYXV0byYgbGF5ZXJSZWZlcmVuY2UgPSAqbGF5ZXI7CiAgICAgICAgIGxheWVy
UmVmZXJlbmNlLmluaXRpYWxpemUoaGlkZVJvb3RMYXllciwgc2l6ZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRl
bnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBsYXllcklkKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVudGlm
aWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0gV1RGTW92ZShsYXllcklkKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwgbGF5ZXJJZCA9IFdURk1v
dmUobGF5ZXJJZCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2xheWVy
cy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgICAgICAgICAgICAgbV9sYXllcnMuYWRkKGlk
ZW50aWZpZXIsIFdURk1vdmUobGF5ZXIpKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKGxheWVySWQpKTsKQEAgLTk0LDcgKzg5LDcgQEAgdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIK
IHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6cmVsZWFzZUxheWVy
KFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlk
ZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyXSB7CisgICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgaWRlbnRpZmllcl0gewogICAgICAgICAgICAgQVNTRVJUKG1fbGF5ZXJzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2xheWVy
ID0gbV9sYXllcnMudGFrZShpZGVudGlmaWVyKV0geyB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCmluZGV4IGEzMjRhZWM5NTc0MWFh
Nzg2Y2E0YjAwMjNmNjkyYTE5NTcxMTQ1NjAuLjg5MjhmY2ZhMjU0ZjA3OWFlNDBmNzQ5ZWUxOGNl
MGNkZjE3NmJmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci5oCkBAIC00NiwyMCArNDYsMTggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OwogCi1jbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIGZpbmFsIDog
cHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7
CitjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIGZpbmFsIDogcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIoY29ubmVjdGlvbikpOyB9CiAgICAgflJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIoKTsKIAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNvbm5lY3RX
ZWJQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIHZvaWQgZGlzY29ubmVjdFdlYlByb2Nlc3NDb25u
ZWN0aW9uKFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiYmKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIAotICAgIC8vIElQQzo6Q29ubmVjdGlv
bjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0
aW9uPHZvaWQoKT4mJikgZmluYWw7Ci0KICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CkBAIC02OCw3ICs2Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVMYXll
cihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBib29sIGhpZGVSb290TGF5ZXIs
IFdlYkNvcmU6OkludFNpemUsIExheWVyQ3JlYXRpb25DYWxsYmFjayk7CiAgICAgdm9pZCByZWxl
YXNlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcik7CiAKLSAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVm
PElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVl
dWU7CiAgICAgSGFzaE1hcDxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPj4gbV9sYXllcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDkxYWU2ZmE3NzQ3
Y2E0YzQ2ZDM0Mzk5ODNhOTM5MjAxYjQyMDZjYjYuLjBjYzIxMDUxMmIzMzdjNDVlNjMzNzE3ZTgz
Mzc1ZjVhYTNkMGMwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogCisjaW5jbHVkZSAiRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+CkBAIC00MDUsNiArNDA2LDc0IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFRocmVhZE1lc3NhZ2VSZWNlaXZl
ciYgdGhyCiAgICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0K
IAorbmFtZXNwYWNlIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorRGVxdWU8c3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+PiBmaWx0ZXJXaXRoTWVzc2FnZVJlY2VpdmVRdWV1ZShDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBUJiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4mJiBp
bmNvbWluZ01lc3NhZ2VzKQoreworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4g
cmVzdDsKKyAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBpbmNvbWluZ01lc3NhZ2VzKSB7CisgICAg
ICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gcmVjZWl2ZXJOYW1lICYm
IChtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCB8fCAhZGVzdGluYXRp
b25JRCkpCisgICAgICAgICAgICByZWNlaXZlUXVldWUuZW5xdWV1ZU1lc3NhZ2UoY29ubmVjdGlv
biwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3QuYXBw
ZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdDsKK30KK30KKwor
dm9pZCBDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVl
dWUmIHJlY2VpdmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAgIG1faW5jb21p
bmdNZXNzYWdlcyA9IGZpbHRlcldpdGhNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCByZWNlaXZl
UXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgV1RGTW92ZShtX2luY29taW5nTWVz
c2FnZXMpKTsKKyAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKEZ1bmN0aW9uRGlzcGF0Y2hlciYgZGlzcGF0Y2hlciwgTWVzc2FnZVJlY2VpdmVy
JiByZWNlaXZlciwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gcmVjZWl2
ZVF1ZXVlID0gbWFrZVVuaXF1ZTxGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVl
PihkaXNwYXRjaGVyLCByZWNlaXZlcik7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2lu
Y29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2VzID0gZmlsdGVyV2l0
aE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsICpyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRCwgV1RGTW92ZShtX2luY29taW5nTWVzc2FnZXMpKTsKKyAgICBtX3JlY2Vp
dmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
KFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgeworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICAgICAgbV9y
ZWNlaXZlUXVldWVzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsK
KyAgICB9Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNz
YWdlKE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4mJiBkZWNvZGVyKQoreworICAgIGlmICghZGVjb2Rlci0+aXNTeW5jTWVzc2FnZSgpKSB7
CisgICAgICAgIG1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlTWVzc2FnZSgqdGhpcywgKmRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJ
RCA9IDA7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3luY1JlcXVlc3RJRCkgfHwgIXN5bmNS
ZXF1ZXN0SUQpIHsKKyAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1lc3Nh
Z2UuCisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcy4KKyAgICAgICAgZGVjb2Rlci0+bWFy
a0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVwbHlFbmNv
ZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwg
c3luY1JlcXVlc3RJRCk7CisKKyAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNvZGVyIGFuZCBl
bmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIuCisgICAgbWVzc2FnZVJl
Y2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgKmRlY29kZXIsIHJlcGx5RW5jb2Rl
cik7CisKKyAgICAvLyBGSVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3Vs
ZCBzZW5kIGJhY2sgYSBTeW5jTWVzc2FnZUVycm9yLgorICAgIEFTU0VSVChkZWNvZGVyLT5pc1Zh
bGlkKCkpOworCisgICAgaWYgKHJlcGx5RW5jb2RlcikKKyAgICAgICAgc2VuZFN5bmNSZXBseShX
VEZNb3ZlKHJlcGx5RW5jb2RlcikpOworfQorCiB2b2lkIENvbm5lY3Rpb246OnNldERpZENsb3Nl
T25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWVDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIW1faXNDb25uZWN0ZWQpOwpAQCAt
NzUxLDYgKzgyMCwxMiBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgaWYgKGRpc3BhdGNoTWVzc2Fn
ZVRvVGhyZWFkUmVjZWl2ZXIobWVzc2FnZSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAgIGlmIChhdXRv
KiByZWNlaXZlUXVldWUgPSBtX3JlY2VpdmVRdWV1ZXMuZ2V0KCptZXNzYWdlKSkgeworICAgICAg
ICByZWNlaXZlUXVldWUtPmVucXVldWVNZXNzYWdlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChtZXNzYWdlLT5pc1N5bmNNZXNzYWdl
KCkpIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nU3luY01lc3Nh
Z2VDYWxsYmFja011dGV4KTsKIApAQCAtOTc4LDkgKzEwNTMsOCBAQCB2b2lkIENvbm5lY3Rpb246
OmRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUlu
Y29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gaW5jb21pbmdNZXNzYWdlKQog
eworICAgIEFTU0VSVChtX2luY29taW5nTWVzc2FnZXNNdXRleC5pc0hlbGQoKSk7CiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsK
LQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBpZiAobV93YXNLaWxsZWQpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMTE2LDkgKzExOTAsMTcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNw
YXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgLy8gVGhl
IG1lc3NhZ2UgbWlnaHQgaGF2ZSBhbHJlYWR5IGJlZW4gZGlzcGF0Y2hlZCBmcm9tIHRoZSBJUEMg
V29ya1F1ZXVlIHRvIHRoZSBtYWluIHRocmVhZCBieSB0aGUgdGltZSB0aGUKICAgICAvLyBjbGll
bnQgcmVnaXN0ZXJzIGl0c2VsZiBhcyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVG8gYWRk
cmVzcyB0aGlzLCB3ZSBjaGVjayBhZ2FpbiBmb3IgbWVzc2FnZXMgcmVjZWl2ZXJzCiAgICAgLy8g
b25jZSB0aGUgbWVzc2FnZSBhcnJpdmVzIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAvLyBGSVhN
RTogVGhpcyBzdGlsbCBzdWZmZXJzIGZyb20gbWVzc2FnZSByZW9yZGVyaW5nIGJ1ZyB3aGVyZSB0
aGUgbWVzc2FnZQorICAgIC8vIGJlbG93IG1pZ2h0IGJlIGRpc3BhdGNoZWQgYWZ0ZXIgYSBtZXNz
YWdlIHRoYXQgaXMgYmVpbmcgZGlzcGF0Y2hlZCBmcm9tCisgICAgLy8gdGhlIGluY29taW5nIG1l
c3NhZ2UgdGhyZWFkLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBieSBjaGFuZ2luZyB0aGUKKyAgICAv
LyBjYWxsc2l0ZXMgdG8gdXNlIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKS4K
ICAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcihtZXNzYWdlKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IEhlcmUgdGhlIFRocmVhZE1lc3NhZ2VSZWNl
aXZlciBpcyBtaXNzaW5nIHRoZSBhYm92ZSBkaXNwYXRjaC4KKyAgICAvLyBGSVhNRTogSGVyZSB0
aGUgVGhyZWFkTWVzc2FnZVJlY2VpdmVyIHdvdWxkIGJlIHN1ZmZlcmluZyBmcm9tIHRoZSBhYm92
ZQorICAgIC8vIG1lc3NhZ2UgcmVvcmRlcmluZyBidWcuCisKICAgICBpZiAobWVzc2FnZS0+c2hv
dWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCkpIHsKICAgICAgICAgaWYgKCFt
X2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAgICAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdl
TmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA2MTAz
YzhkODEwZDdjNzgyYWNmZGNjMzRhM2I2YTJiOGZkNjYxMDBlLi42YWI5NDRlYzc5M2ExMmQ0NTNj
Y2M0YzNhZTMwMzgwODc4MjMwNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUg
IkVuY29kZXIuaCIKICNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CkBAIC0yMjgsNiArMjI5LDE1
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5h
bWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciosIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsK
ICAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKIAorICAgIC8vIEFkZHMgYSBtZXNzYWdlIHJlY2VpdmUg
cXVldWUuIFRoZSBjbGllbnQgc2hvdWxkIG1ha2Ugc3VyZSB0aGUgaW5zdGFuY2UgaXMgcmVtb3Zl
ZCBiZWZvcmUgaXQgZ29lcworICAgIC8vIG91dCBvZiBzY29wZS4KKyAgICB2b2lkIGFkZE1lc3Nh
Z2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCA9IDApOworICAgIC8vIEFkZCBzIGEgbWVzc2FnZSByZWNlaXZlIHF1
ZXVlIHRoYXQgZGlzcGF0Y2hlcyB0byB0aGUgTWVzc2FnZVJlY2VpdmVyIHZpYSB0aGUgRnVuY3Rp
b25EaXNwYXRjaGVyLgorICAgIC8vIFRoZSBjbGllbnQgc2hvdWxkIG1ha2Ugc3VyZSBpbnN0YW5j
ZSBpcyByZW1vdmVkIGJlZm9yZSBNZXNzYWdlUmVjZWl2ZXIgYW5kIEZ1bmN0aW9uRGlzcGF0Y2hl
ciBnbworICAgIC8vIG91dCBvZiBzY29wZS4gVGhlIGRpc3BhdGNoIGZ1bmN0aW9uIHdpbGwgaG9s
ZCB0aGUgY29ubmVjdGlvbiBvYmplY3QgYWxpdmUuCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2
ZVF1ZXVlKEZ1bmN0aW9uRGlzcGF0Y2hlciYsIE1lc3NhZ2VSZWNlaXZlciYsIFJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZShSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKwog
ICAgIGJvb2wgb3BlbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQgbWFya0N1
cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7CkBAIC0zMDcsNiArMzE3LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmc7IH0KICNlbmRpZgogCisg
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOwogcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKElk
ZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKElkZW50aWZpZXIpOwpAQCAtNDA4LDYgKzQxOSw3IEBAIHByaXZhdGU6CiAgICAgTG9j
ayBtX2luY29taW5nTWVzc2FnZXNNdXRleDsKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4+IG1faW5jb21pbmdNZXNzYWdlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZXNU
aHJvdHRsZXI+IG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlcjsKKyAgICBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwIG1fcmVjZWl2ZVF1ZXVlczsKIAogICAgIC8vIE91dGdvaW5nIG1lc3NhZ2VzLgog
ICAgIExvY2sgbV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9GdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9GdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ2NmEzMmNmOTllODUwMzUwZWEwYzAzMzlhODc2NGZk
NjgwMTQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Z1
bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVl
dWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNv
ZGVyOworCitjbGFzcyBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlIGZpbmFs
IDogcHVibGljIE1lc3NhZ2VSZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUo
RnVuY3Rpb25EaXNwYXRjaGVyJiBkaXNwYXRjaGVyLCBNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVy
KQorICAgICAgICA6IG1fZGlzcGF0Y2hlcihkaXNwYXRjaGVyKQorICAgICAgICAsIG1fcmVjZWl2
ZXIocmVjZWl2ZXIpCisgICAgeworICAgIH0KKyAgICB+RnVuY3Rpb25EaXNwYXRjaGVyTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSgpIGZpbmFsID0gZGVmYXVsdDsKKworICAgIHZvaWQgZW5xdWV1ZU1lc3Nh
Z2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgbWVz
c2FnZSkgZmluYWwKKyAgICB7CisgICAgICAgIG1fZGlzcGF0Y2hlci5kaXNwYXRjaChbY29ubmVj
dGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCAm
cmVjZWl2ZXIgPSBtX3JlY2VpdmVyXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29ubmVjdGlv
bi0+ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKHJlY2VpdmVyLCBXVEZNb3ZlKG1lc3Nh
Z2UpKTsKKyAgICAgICAgfSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBGdW5jdGlvbkRpc3BhdGNo
ZXImIG1fZGlzcGF0Y2hlcjsKKyAgICBNZXNzYWdlUmVjZWl2ZXImIG1fcmVjZWl2ZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VSZWNlaXZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWMzY2U5YWYyZmQyNjk1ZDU1YWQyZjA2
NjJhNThmMWEwODMyNmM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIElQQyB7CisK
K2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworCitjbGFzcyBNZXNzYWdlUmVjZWl2
ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZXNzYWdlUmVjZWl2ZVF1ZXVlKCkgPSBk
ZWZhdWx0OworICAgIC8vIENhbGxlZCB3aXRoIENvbm5lY3Rpb24gaW5jb21pbmcgbWVzc2FnZSBs
b2NrIGhlbGQuCisgICAgLy8gTWF5IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisg
ICAgdmlydHVhbCB2b2lkIGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4mJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ2ZmUwZTgwNDUzOWRmZmYxNTVmZGNhZjQwZTNhMDhiMDUwOWIyYmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKKworbmFtZXNwYWNlIElQ
QyB7CisKK3ZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbChTdG9yZVR5cGUmJiBx
dWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkK
K3sKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJl
Y2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgIEFTU0VSVCghbV9xdWV1ZXMuY29udGFp
bnMoa2V5KSk7CisgICAgbV9xdWV1ZXMuYWRkKGtleSwgV1RGTW92ZShxdWV1ZSkpOworfQorCit2
b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShSZWNlaXZlck5hbWUgcmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIGF1dG8ga2V5ID0gc3RkOjptYWtl
X3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7
CisgICAgQVNTRVJUKG1fcXVldWVzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcXVldWVzLnJlbW92
ZShrZXkpOworfQorCitNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
OjpnZXQoY29uc3QgRGVjb2RlciYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBpZiAobV9xdWV1ZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGtleSA9IHN0ZDo6
bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSwgMCk7CisgICAgYXV0byBpdCA9IG1fcXVldWVzLmZpbmQoa2V5KTsKKyAgICBpZiAoaXQg
PT0gbV9xdWV1ZXMuZW5kKCkpIHsKKyAgICAgICAga2V5LnNlY29uZCA9IG1lc3NhZ2UuZGVzdGlu
YXRpb25JRCgpOworICAgICAgICBpZiAoa2V5LnNlY29uZCkKKyAgICAgICAgICAgIGl0ID0gbV9x
dWV1ZXMuZmluZChrZXkpOworICAgIH0KKyAgICBpZiAoaXQgPT0gbV9xdWV1ZXMuZW5kKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBXVEY6OnZpc2l0KAorICAgICAgICBX
VEY6Om1ha2VWaXNpdG9yKAorICAgICAgICAgICAgW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPE1l
c3NhZ2VSZWNlaXZlUXVldWU+JiBxdWV1ZSkgeyByZXR1cm4gcXVldWUuZ2V0KCk7IH0sCisgICAg
ICAgICAgICBbXShNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBxdWV1ZSkgeyByZXR1cm4gcXVldWU7IH0K
KyAgICAgICAgKSwgaXQtPnZhbHVlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNDBmZjM1
YzhlYzc5MjBmMDVlZmJjZDI3MjVjMDdhYjdjY2U0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBJUEMgeworCitlbnVt
IGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3Q7CisKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAgeworcHVibGljOgorICAgIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAoKSA9IGRlZmF1bHQ7
CisgICAgfk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkTWVzc2FnZShjb25zdCBEZWNvZGVyJiBtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFF1ZXVlTWFwOjppc1ZhbGlkS2V5KHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2FnZS5kZXN0aW5h
dGlvbklEKCkpKTsKKyAgICB9CisKKyAgICAvLyBBZGRzIGEgd2lsZGNhcmQgZmlsdGVyIGlmIGRl
c3RpbmF0aW9uSUQgPT0gMC4KKyAgICB2b2lkIGFkZChNZXNzYWdlUmVjZWl2ZVF1ZXVlJiBxdWV1
ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkgeyAg
YWRkSW1wbChTdG9yZVR5cGUoJnF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsg
fQorICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYmIHF1
ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKSB7
IGFkZEltcGwoU3RvcmVUeXBlKFdURk1vdmUocXVldWUpKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsgfQorICAgIHZvaWQgcmVtb3ZlKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CisKKyAgICBNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBnZXQoY29uc3QgRGVjb2RlciYp
IGNvbnN0OworcHJpdmF0ZToKKyAgICB1c2luZyBTdG9yZVR5cGUgPSBWYXJpYW50PE1lc3NhZ2VS
ZWNlaXZlUXVldWUqLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVRdWV1ZT4+OworICAg
IHZvaWQgYWRkSW1wbChTdG9yZVR5cGUmJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKTsKKyAgICB1c2luZyBRdWV1ZU1hcCA9IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3Qs
IHVpbnQ2NF90PiwgU3RvcmVUeXBlPjsKKyAgICBRdWV1ZU1hcCBtX3F1ZXVlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNmQ0ZWE1MzQ4YzdkYWVmNzUxMDM4OTBi
NTA5YzA3MjA5OTMxYTMxNC4uOWJkNzA0MTlhZTY4ODliYjZlOWM5M2U0NTU5MDc1YjZmMTA4NDBi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC0xNDMsNiArMTQzLDcgQEAgUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZv
cm0vSVBDL0lQQ1NlbWFwaG9yZS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5k
aW5nLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIEBuby11bmlm
eQogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2UwMDcyYzNiNjgwODRkNmJjMjYyNmI5
MDVkMzAyZDcwMGVmZTIxOS4uMWU4ZDE5YTY3OWViNTU2NDVlNDczZTg5NTQ3ZjdiNzY5NWQzMGU2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzI3LDYgKzEzMjcsMTAgQEAKIAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4
MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3Rl
bmN5VXRpbHMuaCAqLzsgfTsKIAkJN0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVm
ZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKKwkJN0I0
ODNGMUYyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFCMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmggKi87IH07CisJCTdCNDgzRjIwMjVD
RERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyog
TWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OworCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYg
LyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcC5jcHAgKi87IH07CisJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBG
dW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyog
RnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QzA2NUYy
QzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFD
OENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87
IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3
M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0
OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICov
OyB9OwpAQCAtNDUxOCw2ICs0NTIyLDEwIEBACiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAv
KiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8q
IFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGls
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMURCMjY1MjU2NjhDRTAwMDBF
MjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4M0Yx
QjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VS
ZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I0ODNGMUQyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBGdW5j
dGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUy
NTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4OTEsNiArNjg5
OSwxMCBAQAogCQkJCUJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCAq
LywKIAkJCQlCQ0VFOTY2QjExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oICovLAogCQkJ
CUJDMDMyREEyMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk3QjQ4
M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovLAorCQkJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggKi8sCisJCQkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNl
aXZlUXVldWVNYXAuY3BwICovLAorCQkJCTdCNDgzRjFCMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwLmggKi8sCiAJCQkJQkMwMzJEQTMxMEY0MzdEMTAwNThDMTVBIC8q
IENvbm5lY3Rpb24uaCAqLywKIAkJCQkxQUM3NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJl
ZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNw
cCAqLywKQEAgLTExMzI2LDYgKzExMzM4LDcgQEAKIAkJCQlBMUE0RkU1QzE4RENFOUZBMDBCNUVB
OEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRFQzNFQTky
NDdGNUMwOTAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3OUE4NzNBMThCQkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QjQ4M0YyMDI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3M0MxOEJCRkYwNzAwNTg4QUYyIC8q
IF9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMDFCQzkx
OTA1RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTdGRTdDRjFDNDg3REJEMDBBMENBODkgLyogX1dLRXhwZXJpbWVudGFsRmVh
dHVyZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjIzNyw2ICsxMjI1MCw3IEBACiAJCQkJODNGMUEw
N0ExRjk2RTc3OTAwNDVCOTRFIC8qIFdlYlNXT3JpZ2luVGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzNTZGMkREMjE1MkI2RjYwMEU2RDVERiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTUxN0E1MkQ5MUY0M0E5REEwMERDREMwQSAvKiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I0ODNGMjIyNUNEREE5
QzAwMTIwNDg2IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNTI2MkJDMUZCOTUxNUQwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMEVGN0Yx
MjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFG
MDhBRTE5MjY5MzY3MDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEyMjg2LDYgKzEyMzAwLDcgQEAKIAkJCQkzN0ZDMTk0NzE4NTBGQkYyMDA4
Q0ZBNDcgLyogV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3Q0EyNTRFQjE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQ
b2xpY3lEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMDRFRUYxMUM4M0VDODAwOEYz
Mzc1IC8qIFdLQnVuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjQ4M0YxRjI1Q0REQTlDMDAx
MjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMy
MDRFRjAxMUM4M0VDODAwOEYzMzc1IC8qIFdLQnVuZGxlQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM1RUVCOUYxMjc3NjFBQzAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVFRUI5QjEyNzc2MTdDMDAzMzIyQjggLyogV0tCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtLmggaW4gSGVhZGVycyAqLywKQEAgLTEzODc1LDYgKzEzODkw
LDcgQEAKIAkJCQkyRDExQjdBMzIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTQyLW1t
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3QTUyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZp
ZWRTb3VyY2U0My1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCN0E2MjEyNkEyODMwMDZG
ODg3OCAvKiBVbmlmaWVkU291cmNlNDMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I0ODNGMjEy
NUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQxMUI3QTcyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2U0NC1tbS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCN0E4MjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVk
U291cmNlNDQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3QTkyMTI2QTI4MzAwNkY4ODc4
IC8qIFVuaWZpZWRTb3VyY2U0NS1tbS5tbSBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="commit-queue"
          id="437907"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419616</attachid>
            <date>2021-02-08 13:07:33 -0800</date>
            <delta_ts>2021-02-09 02:14:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221560-20210208230731.patch</filename>
            <type>text/plain</type>
            <size>64886</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjY2NmZGJiODJmNTY5MmI1YjkyZDMz
YzE4NGE0YjhkOGE5OTU1MGMuLjIzMTMzNTg1Njk3NWQ3NTFhYWJiODcwMDliODQyYTVjZmM3Yjc3
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMDItMDggIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW9uIGNsaWVudHMgc2hvdWxkIGJl
IGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRhIGluc3RlYWQgb2YgZW1iZWRkZWQg
aW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBGdW5jdGlvbkRpc3BhdGNoZXIgbm90IGJlIFJlZkNvdW50ZWRU
aHJlYWRTYWZlLgorICAgICAgICBUaGVyZSdzIG5vdGhpbmcgaW5oZXJlbnRseSByZWZlcmVuY2Ug
Y291bnRlZCBpbiB0aGUgZGVzY3JpcHRpb24KKyAgICAgICAgInNvbWV0aGluZyB0aGF0IGZ1bmN0
aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIuCisgICAgICAgIFRoaXMgYWxsb3dzIG90aGVyIGlu
dGVyZmFjZSBjb250cmFjdHMgdGhhbiAid2hlbiB0aGUgcmVjZWl2ZXIgcmVmZXJlbmNlcworICAg
ICAgICBGdW5jdGlvbkRpc3BhdGNoZXIsIGl0IHdpbGwgdGhyZWFkLXNhZmUgcmVmIGl0Ii4KKwor
ICAgICAgICBIYXZpbmcgYSBSZWZDb3VudGVkVGhyZWFkU2FmZSBpbiB0aGUgbWlkZGxlIG9mIGlu
aGVyaXRhbmNlIGNoYWluIGlzIHByb2JsZW1hdGljLCBhcworICAgICAgICBub3QgYWxsIGluaGVy
aXRhbmNlIGNoYWlucyBoYXZlIGl0LiBJdCBpcyBiZXR0ZXIgdG8gc2VwYXJhdGUgInNvbWV0aGlu
ZyB0aGF0CisgICAgICAgIGZ1bmN0aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIgZnJvbSAic29t
ZXRoaW5nIHRoYXQgbWF5IGJlIG93bmVkIGJ5IG11bHRpcGxlCisgICAgICAgIHRocmVhZHMiLgor
CisgICAgICAgIEluIHRoZSBjaGFuZ2UsIElQQzo6Q29ubmVjdGlvbiB3aWxsIHN0b3JlIGEgcmVm
ZXJlbmNlIHRvIEZ1bmN0aW9uRGlzcGF0Y2hlci4gSW4KKyAgICAgICAgdGhpcyBzY2VuYXJpbyBp
dCB3b3VsZCBiZSBjb25mdXNpbmcgdG8gdGhlIHJlYWRlciBpZiB0aGUgcmVmZXJlbmNlIGNvdW50
IHdvdWxkIGJlCisgICAgICAgIGNoYW5nZWQuIFRoZSBpbnRlcmZhY2UgaXMgImFkZC9yZW1vdmUi
LCB3aGljaCBpcyBpbmhlcmVudGx5IG5vdCByZWZjb3VudGVkLiBJZgorICAgICAgICB0aGUgcmVm
Y291bnQgd2FzIHBhcnQgb2YgdGhlIGludGVyZmFjZSwgdGhlbiBxdWVzdGlvbiB3b3VsZCBhcmlz
ZSBhcyBvZiB3aGF0IGl0CisgICAgICAgIHdhcyB1c2VkIGZvci4gSWYgRnVuY3Rpb25EaXNwYXRj
aGVyIHdhcyByZWZjb3VudGVkIGJ1dCB0aGUgcmVmY291bnQgd291bGQgbm90IGJlCisgICAgICAg
IG1vZGlmaWVkIGZvciB0aGlzIGNhc2UsIGl0IHdvdWxkIHJpc2UgcXVlc3Rpb25zLCB0b28uCisK
KyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg6CisgICAgICAgICogd3RmL1J1bkxv
b3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisKIDIwMjEtMDItMDQgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmR5bmFtaWNfY2ZfY2Fz
dDw+IHNob3VsZCBub3QgYXNzZXJ0IGluIERlYnVnIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNDk2YWQ3
M2FlMjFlNjE1MTEwYmJlZjg2Mzc5ODFhZjBjNjQxZjNlLi41OTE3ODMxMTcxMzNlNTAxZWM1Y2Y4
NTg2NjRhZWU3OTdiODYxMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMS0wMi0w
OCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvbm5l
Y3Rpb24gY2xpZW50cyBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gdGhlIG1lc3NhZ2VzIGFzIGRh
dGEgaW5zdGVhZCBvZiBlbWJlZGRlZCBpbiBmdW5jdGlvbiByZWZlcmVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE1NjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlUXVldWUsIGFuIGludGVyZmFjZSB3aGljaCBvYnRhaW5zIG1lc3NhZ2VzIGZy
b20KKyAgICAgICAgdGhlIG1lc3NhZ2UgcmVjZWl2ZSB0aHJlYWQgYW5kIGZvcndhcmRzIHRoZW0g
dG8gY2FsbGVyIGFzIGRhdGEuCisgICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRv
IGJlIGFibGUgdG8gc2tpcCBtZXNzYWdlcyB0aGF0IGFyZSBzdGFsZQorICAgICAgICBvciBvcmln
aW5hdGluZyBmcm9tIGEgc2VuZGVyIHdoaWNoIGlzIGluY29ycmVjdC4gQmVmb3JlLCB0aGUgY2xp
ZW50CisgICAgICAgIGNvdWxkIG9ubHkgZ2V0IHRoZSBtZXNzYWdlcyBhcyBGdW5jdGlvbiByZWZl
cmVuY2VzLCBhbmQgdGhvc2UgY2Fubm90CisgICAgICAgIGJlIHNraXBwZWQgYXMgaXQgd291bGQg
YmUgdW5lZGZpbmVkIHdoYXQgbm90IGV4ZWN1dGluZyBhIGZ1bmN0aW9uIG1lYW5zLgorCisgICAg
ICAgIElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZSBpcyBhIGdlbmVyYWxpemF0aW9uIGFuZCBzaW1w
bGlmaWNhdGlvbiBvZiBjdXJyZW50CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVz
c2FnZVJlY2VpdmVyUmVmQ291bnRlZCBhbmQKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIuIEl0IGhhcyBkaWZmZXJlbnQgcmVmLWNvdW50CisgICAgICAg
IHNlbWFudGljcywgaW4gdGhlIHdheSB0aGF0IGNsaWVudCBjb250cm9scyB0aGUgbGlmZS10aW1l
IHdpdGggYWRkIGFuZAorICAgICAgICByZW1vdmUuCisKKyAgICAgICAgSVBDOjpNZXNzYWdlUmVj
ZWl2ZVF1ZXVlIGZpeGVzIG1lc3NhZ2UgcmVvcmRlcmluZyBidWcgd2l0aAorICAgICAgICBJUEM6
OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB3aGVyZSBmaXJzdCBmZXcgbWVz
c2FnZXMKKyAgICAgICAgdGhhdCBhcmUgcm91dGVkIHRvIG1haW4gdGhyZWFkIG1lc3NhZ2UgcXVl
dWUgY2FuIGNvbWUgbGF0ZXIgdGhhbiBzb21lCisgICAgICAgIG90aGVyIG1lc3NhZ2UgdGhhdCBn
ZXRzIGhhbmRsZWQgZnJvbSBtZXNzYWdlIHJlY2VpdmUgdGhyZWFkLgorCisgICAgICAgIEZpeGVz
IGZldyBjYWxsLXNpdGVzIGFzIGV4YW1wbGVzIG9mIGFsbCB0aGUgdGhpbmdzIHRoYXQgYXJlIHdy
b25nIGluCisgICAgICAgIGV4aXN0aW5nIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciAvIFRocmVh
ZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQKKyAgICAgICAgc2l0ZXMuCisKKyAgICAgICAgRG9l
cyBub3QgcmVwbGFjZSBhbGwgdXNlcyBvZiBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgLworICAg
ICAgICBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIGR1ZSB0byB0aGUgc2l0ZXMgYXBw
ZWFyaW5nIHZlcnkgYnVnZ3ksCisgICAgICAgIGFuZCB0aHVzIHRha2luZyB0aW1lIHRvIGdldCBy
aWdodCBhbmQgZGVsYXlpbmcgdGhlIHJldmlldy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjb3BlZERpc2Nvbm5lY3Q6
OlNjb3BlZERpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpTY29wZWREaXNjb25uZWN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY29wZWREaXNjb25uZWN0Ojp+U2NvcGVkRGlzY29u
bmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjb3Bl
ZERpc2Nvbm5lY3Q6OnJlc2V0KToKKyAgICAgICAgQWRkIHJldXNhYmxlIFNjb3BlZERpc2Nvbm5l
Y3QgaGVscGVyIGluc3RlYWQgb2YgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAorICAgICAgICAtc3Bl
Y2lmaWMgIndyYXBwZXIiLiBSZXBsYWNlIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBl
ciB1bmlxdWVfcHRyCisgICAgICAgIGhvbGRlciB3aXRoIGp1c3QgbW92ZSBzZW1hbnRpY3MsIGlu
IG9yZGVyIHRvIGF2b2lkIGhlYXAtYWxsb2NhdGluZyB0aGUKKyAgICAgICAgd3JhcHBlci4KKwor
ICAgICAgICBBZGQgY29ubmVjdCAtdHlwZSBjYWxsIGluIGFkZGl0aW9uIHRvIGRpc2Nvbm5lY3Qg
dHlwZSBjYWxsLCBkdWUgdG8KKyAgICAgICAgdGhyZWFkaW5nIGJ1ZyBpbiBleGlzdGluZyBjb2Rl
LCBzZWUgYmVsb3cuCisKKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICBTdG9yZSByZWZlcmVuY2VzIHRv
IHZhcmlvdXMgb2JqZWN0cyBzbyB0aGF0IHRoZXkncmUgYWNjZXNzZWQgaW4gdGhyZWFkLXNhZmUg
bWFubmVyLgorICAgICAgICBEbyBub3QgYWRkIHRoZSBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlIGlu
IHRoZSBjb25zdHJ1Y3Rvci4gVGhlIGZ1bmN0aW9uIHRha2VzIGEKKyAgICAgICAgcHRyIHRvIGlu
dGVyZmFjZS4gV2hlbiB0aGUgY29uc3RydWN0b3IgcnVucywgdGhlIHZwdHIgaXMgbm90IHBvcHVs
YXRlZCB5ZXQuCisgICAgICAgIENvbm5lY3Rpb24gd2lsbCBzdGFydCBkaXNwYXRjaGluZyBtZXNz
YWdlcyB0aHJvdWdoIHRoZSBwYXNzZWQgdnB0ciBpbW1lZGlhdGVseSB3aGVuCisgICAgICAgIGFk
ZE1lc3NhZ2VSZWNlaXZlUXVldWUgaXMgY2FsbGVkLiBEdWUgdG8gY29tcG91bmRpbmcgYnVncyBh
bmQgZ2VuZXJhbCBzbG93bmVzcywgdGhpcyBidWcKKyAgICAgICAgd2FzIG5vdCBoaXQgb2Z0ZW4g
YmVmb3JlLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbm5l
Y3RXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIENvbm5lY3QgdGhlIG1lc3NhZ2UgcXVl
dWUgYW5kIHN0YXJ0IHJlY2VpdmluZyB0aGUgbWVzc2FnZXMuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToK
KworICAgICAgICBSZWdhcmRpbmc6ICAgICByZW1vdGVSZXNvdXJjZUNhY2hlID0gV1RGTW92ZSht
X3JlbW90ZVJlc291cmNlQ2FjaGUpCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZSBjYW5u
b3QgYmUgZGVzdHJveWVkIGJ5IG1vdmluZyBpdCBhd2F5IGR1cmluZyBkZXN0cnVjdGlvbiBmcm9t
CisgICAgICAgIHRoZSBtYWluIHRocmVhZCwgYXMgdGhlIHRhc2sgdGhyZWFkIHRhc2sgZnVuY3Rp
b25zIHdpbGwgcmVmZXIgdG8gdGhlIG9iamVjdCBhbmQgd291bGQgdXNlCisgICAgICAgIHRoZSBt
b3ZlZC1hd2F5IG9iamVjdC4gSnVzdCBtb3ZlIGl0IGluIHRoZSB0YXNrIGZ1bmN0aW9uLgorCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgRG8gbm90IG5hdmlnYXRlIHRvIGNvbm5lY3Rpb24gdmlh
IGdwdVByb2Nlc3NDb25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICBJdCB3aWxsIGJlIGRl
c3Ryb3llZCB1cG9uIGRpc2Nvbm5lY3QsIGJ1dCBzZW5kcyBtYXkgaGFwcGVuIGFmdGVyIHRoYXQK
KyAgICAgICAgZHVyaW5nIHBsYXliYWNrIG9mIGRpc3BhdGNoZWQgdGFzayBmdW5jdGlvbnMuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0p
OgorICAgICAgICBEbyBub3QgbmF2aWdhdGUgdG8gdGhlIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5IHZpYSB0aGUKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
IFRoaXMgb2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZCB1cG9uIGRpc2Nvbm5lY3QsCisgICAgICAg
IGJ1dCB0aGUgZGlzcGF0Y2hlZCB0YXNrIGZ1bmN0aW9ucyB3aWxsIHBsYXliYWNrIGluIHRoZSBw
bGF5YmFjayB0aHJlYWQuCisgICAgICAgIEFsc28sIHRoZSBhY2Nlc3NvcnMgbmF2aWdhdGluZyB1
cHdhcmRzIGluIHRoZSBzdHJ1Y3R1cmUgYXJlIG5vdCB0aHJlYWQtc2FmZS4KKworICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp0ZXJtaW5hdGVXZWJQcm9jZXNzKToKKyAg
ICAgICAgRG8gbm90IG5hdmlnYXRlIGFkZE1lc3NhZ2VSZWNlaXZlUXVldWUgaXQgbWlnaHQgYmUg
ZGVzdHJveWVkIGF0IHRoZSB0aW1lCisgICAgICAgIG9mIGRpc3BhdGNoaW5nIHRoZSB0ZXJtaW5h
dGVXZWJQcm9jZXNzLiBJbnN0ZWFkLCBwb3N0IGEgbWFpbiB0aHJlYWQgdGFzaworICAgICAgICB3
aXRoIHdlYWsgcHRyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmRpc2Nvbm5lY3RXZWJQcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
OjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI6OnJlbGVhc2VMYXllcik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oOgorCisgICAgICAgIEZp
eCBtb3N0bHkgc2ltaWxhciB0aHJlYWRpbmcgYnVncyBhcyBleHBsYWluZWQgYWJvdmUuCisgICAg
ICAgIE5vdGFibGUgZGlmZmVyZW5jZSBpcyB0aGUgYnVnIGFib3V0IH5SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoKQorICAgICAgICBjYWxsaW5nIChidWdneSkgcmVt
b3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKCk6CisgICAgICAgIHJlbW92ZVRocmVhZE1lc3NhZ2VS
ZWNlaXZlciBpcyBhIHJlZi1jaGFuZ2luZyBmdW5jdGlvbiBvbiB0aGUgb3duZXIsIHdoaWNoIGlz
CisgICAgICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci4gU28g
aXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0aGF0IGEgZGVzdHJ1Y3RvcgorICAgICAgICB3b3VsZCBk
ZWNyZWFzZSB0aGUgcmVmY291bnQuCisgICAgICAgIEluIGFkZGl0aW9uLCBDb25uZWN0aW9uIGRp
c3BhdGNoZXMgbWVzc2FnZXMgdW50aWwgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyLiBJZiB0
aGUKKyAgICAgICAgY2FsbCBpcyBtYWRlIHdoaWxlIG1haW4gdGhyZWFkIGlzIGluc2lkZSBkZXN0
cnVjdG9yLCBpdCBtZWFucyB0aGF0IHJlZiBjb3VudCBpcyBiZWluZworICAgICAgICBleHRlbnNp
dmVseSBtb2RpZmllZCBkdXJpbmcgZGVzdHJ1Y3Rpb24gYW5kIHRhc2tzIGFyZSBiZWluZyBzY2hl
ZHVsZWQgd2hlbiB0aGV5IHNob3VsZAorICAgICAgICBub3QgYmUuCisKKworICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRk
TWVzc2FnZVJlY2VpdmVRdWV1ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZU1l
c3NhZ2VSZWNlaXZlUXVldWUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNz
SW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZW5xdWV1ZUluY29t
aW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZSk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwOjphZGRJbXBsKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6cmVt
b3ZlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6Z2V0IGNvbnN0KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAgKElQQzo6
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6aXNWYWxpZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGQpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTAyLTA1ICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViR0wgSVBD
IG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQgb3V0IG9mIG9yZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlz
cGF0Y2hlci5oCmluZGV4IGQwOWE1MjIzNGY4YTdhMmRmOGM1ZjM3YmM3MWQzMWQzOWFjNDhhYjcu
LjdjODY0NzE5MzYwMTAyN2ZkNzJmMTZiOTFlNjVjOTAwZmJlZDVhMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oCkBAIC0yNiwxNCArMjYsMTMgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiAvLyBGdW5jdGlvbkRpc3BhdGNoZXIgaXMgYW4g
YWJzdHJhY3QgcmVwcmVzZW50YXRpb24gb2Ygc29tZXRoaW5nIHRoYXQgZnVuY3Rpb25zIGNhbiBi
ZQogLy8gZGlzcGF0Y2hlZCB0by4gVGhpcyBjYW4gZm9yIGV4YW1wbGUgYmUgYSBydW4gbG9vcCBv
ciBhIHdvcmsgcXVldWUuCiAKLWNsYXNzIEZ1bmN0aW9uRGlzcGF0Y2hlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxGdW5jdGlvbkRpc3BhdGNoZXI+IHsKK2NsYXNzIEZ1bmN0aW9uRGlz
cGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkZ1bmN0
aW9uRGlzcGF0Y2hlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKaW5kZXggMDQ2NmQ0NDU5ZDZiNzRiY2MxY2U0ZDg0
MjAzNzM2ODcyNjA3Y2EzNC4uNGVjMzFkYzNkNTg4MzFmMGQ1NDg5NzczYWU3YzAzN2Y2MTA5NTc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1J1bkxvb3AuaApAQCAtNjQsNyArNjQsNyBAQCB1c2luZyBSdW5Mb29wTW9kZSA9IHVuc2ln
bmVkOwogI2RlZmluZSBEZWZhdWx0UnVuTG9vcE1vZGUgMAogI2VuZGlmCiAKLWNsYXNzIFJ1bkxv
b3AgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKK2NsYXNzIFJ1bkxvb3AgZmlu
YWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8UnVuTG9vcD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJ1bkxvb3ApOwogcHVibGlj
OgogICAgIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aAppbmRleCA1ZDY5NGJkOGMzZjVhNGE1YzAwYzk0MmY5ZGQ0MzNkN2M4NDQ1ZTIzLi4yMDBmOTY5
YzI3NmM3NGZiZjI3ZjM1NGQ5YTkxN2I0OTA2MGZjNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNDAs
NyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDog
cHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CitjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJs
aWMgRnVuY3Rpb25EaXNwYXRjaGVyLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya1F1
ZXVlPiB7CiAKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgewpAQCAtNTAsNyArNTAsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgUU9TID0gVGhyZWFkOjpRT1M7CiAKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBU
eXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOwotICAgIH5Xb3JrUXVldWUo
KSBmaW5hbDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfldvcmtRdWV1ZSgpIGZpbmFsOwogCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKSBm
aW5hbDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMs
IEZ1bmN0aW9uPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggODI3OGJjZTE0YzVmMWMyNGJl
N2M5MDIyZDVmZDQwYjI0YzU4ZWZlZi4uZmFiNGExZTVlMTIwZmJiNDI0YjNhOTliMjE3OTIzYmZk
ZTU5MGExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTg1LDggKzE4NSw4IEBAIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICAgICBtX2Nvbm5lY3Rp
b24tPmludmFsaWRhdGUoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIG1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlci0+Y2xvc2UoKTsKLSAgICBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXItPmNsb3NlKCk7CisgICAgbV9hdWRpb1Ry
YWNrUmVuZGVyZXJNYW5hZ2VyLnJlc2V0KCk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLnJlc2V0KCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJ
QldFQlJUQykKICAgICBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5LT5jbG9zZSgpOwpAQCAtMjkzLDcg
KzI5Myw3IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjphdWRpb1Nlc3Npb25Qcm94eSgpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRp
ZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKIHsKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUoaWRl
bnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBp
ZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkpOworICAgICAg
ICByZXR1cm4gU2NvcGVkRGlzY29ubmVjdCB7IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0
ZSgqdGhpcywgaWRlbnRpZmllciwgV1RGTW92ZShyZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkp
IH07CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKIH0KQEAgLTMwNCwxNiArMzA0LDYgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkK
ICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJiByZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdURk1vdmUocmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCkpCi17Ci19Ci0KLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBw
ZXIoKQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+ZGlzY29ubmVjdCgpOwotfQot
CiAjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDdiYWRkMzc3NjljZjUyZmQ1NDBiNGZiNzc3ZDA4
ODc0NjYwNGY1NGYuLmUwMDdmYmFlZmM5NzlhZTFiN2RmZjAwNDVkNWZjYWViYzM5YzkyYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaApAQCAtMTY0LDYgKzE2NCw0NiBAQCBwcml2YXRlOgogICAgIC8vIE5vd1BsYXlpbmdN
YW5hZ2VyOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBP
cHRpb25hbDxkb3VibGU+KSBmaW5hbDsKIAorICAgIC8vIFNjb3BlZCBob2xkZXIgZm9yIGFuIG9i
amVjdCB0aGF0IGlzCisgICAgLy8gMSkgaGVsZCBieSBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
CisgICAgLy8gMikgaW50ZXJlc3RlZCBhYm91dCB3aGVuIHRoZSBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIGNvbm5lY3Rpb24gc3RvcHMuCisgICAgLy8gVXNlZnVsIG1vc3RseSBmb3IgY3Jvc3Mt
dGhyZWFkIHJlZmVyZW5jZSBjb3VudGVkIG9iamVjdHMuIFVwb24gZGlzY29ubmVjdGluZywgdGhl
IG9iamVjdCByZWNlaXZlcworICAgIC8vIHRoZSByZWZlcmVuY2UgdXNlZCBieSB0aGUgaG9sZGVy
IHRvIGhvbGQgdGhlIG9iamVjdCwgcHJvdmluZyBhIG5vbi10cmFzaGluZyBkZXN0cnVjdGlvbiBi
ZWhhdmlvciBmb3IKKyAgICAvLyBwb3N0aW5nIGEgcHJvdGVjdCByZWYgYWxvbmcgdGhlIHBvdGVu
dGlhbCBjbGVhbnVwIHRhc2sgZm9yIHNwZWNpZmljLCBsaW1pdGVkIGNhc2VzLgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgY2xhc3MgU2NvcGVkRGlzY29ubmVjdCB7CisgICAgcHVibGlj
OgorICAgICAgICBTY29wZWREaXNjb25uZWN0KCkgPSBkZWZhdWx0OworICAgICAgICBTY29wZWRE
aXNjb25uZWN0KFJlZjxUPiYmIG9iamVjdCkKKyAgICAgICAgICAgIDogbV9vYmplY3QoV1RGTW92
ZShvYmplY3QpKQorICAgICAgICB7CisgICAgICAgICAgICBtX29iamVjdC0+Y29ubmVjdFdlYlBy
b2Nlc3NDb25uZWN0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgU2NvcGVkRGlzY29ubmVjdChT
Y29wZWREaXNjb25uZWN0JiYgb3RoZXIpCisgICAgICAgICAgICA6IG1fb2JqZWN0KHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9vYmplY3QsIG51bGxwdHIpKQorICAgICAgICB7CisgICAgICAgIH0KKyAg
ICAgICAgU2NvcGVkRGlzY29ubmVjdCYgb3BlcmF0b3I9KFNjb3BlZERpc2Nvbm5lY3QmJiBvdGhl
cikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAg
ICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9vYmplY3QsIG51bGxwdHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIH5TY29wZWREaXNjb25uZWN0KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIHJl
c2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBtX29iamVjdC0+ZGlzY29ubmVjdFdlYlByb2Nlc3ND
b25uZWN0aW9uKG1fb2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CisgICAgcHJp
dmF0ZToKKyAgICAgICAgUmVmUHRyPFQ+IG1fb2JqZWN0OworICAgIH07CiAgICAgUmVmUHRyPExv
Z2dlcj4gbV9sb2dnZXI7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CkBAIC0xODEsOCArMjIxLDggQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5PiBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7Ci0gICAg
UmVmPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1Ry
YWNrUmVuZGVyZXJNYW5hZ2VyOwotICAgIFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CisgICAgU2NvcGVk
RGlzY29ubmVjdDxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+IG1f
YXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcjsKKyAgICBTY29wZWREaXNjb25uZWN0PFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlcjsKICNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXI7CiAjZW5kaWYKQEAgLTE5MywxNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
YWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIo
UmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwotICAgICAgICB+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgfTsKLQotICAgIHVz
aW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+
PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgU2NvcGVkRGlzY29ubmVjdDxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kPj47CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXA7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CmluZGV4IGIwYWMzNTg2YjAyNDliNGFiZTFlNGZjYmNlNzNlOWQ4ZmE4NjViNDUuLmJhMzJhYTMx
NzYzNWVlZDE0OTBjZDA1MzIyN2Q3MGFkZTVlMzNhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogI2RlZmluZSBURVJNSU5BVEVfV0VCX1BST0NFU1NfV0lU
SF9NRVNTQUdFKG1lc3NhZ2UpIFwKICAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZXF1ZXN0
aW5nIHRlcm1pbmF0aW9uIG9mIHdlYiBwcm9jZXNzICUiIFBSSXU2NCAiIGZvciByZWFzb246ICUi
IFBVQkxJQ19MT0dfU1RSSU5HLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nl
c3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgI21lc3NhZ2UpOyBcCi0gICAgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT50ZXJtaW5hdGVXZWJQcm9jZXNzKCk7CisgICAgdGVybWluYXRlV2Vi
UHJvY2VzcygpOwogCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uLCBtZXNzYWdlKSBk
byB7IFwKICAgICBpZiAoVU5MSUtFTFkoIShhc3NlcnRpb24pKSkgeyBcCkBAIC02OCwzMiArNjgs
MzggQEAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm8KIAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVy
LCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIDogbV93
b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgd29yayBx
dWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXNlckludGVy
YWN0aXZlKSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKQorICAgICwgbV9jb25uZWN0aW9uKG1ha2VSZWYoZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkpKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllcihpZGVudGlmaWVyKQogICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShXVEZN
b3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBz
dWJ0bGU6IE1lZGlhUGxheWVyTWFuYWdlclByb3h5IG11c3QgYmUgZGVzdHJveWVkIGFmdGVyIHRo
aXMgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBpbnN0YW5jZS4KKyAgICAsIG1fcmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5yZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSgpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1h
a2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
KCkuYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd29ya1F1ZXVlLCB0aGlzLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Ojp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotICAgIC8vIE1h
a2Ugc3VyZSB3ZSBkZXN0cm95IHRoZSBSZXNvdXJjZUNhY2hlIG9uIHRoZSBXb3JrUXVldWUgc2lu
Y2UgaXQgZ2V0cyBwb3B1bGF0ZWQgb24gdGhlIFdvcmtRdWV1ZS4KLSAgICBtX3dvcmtRdWV1ZS0+
ZGlzcGF0Y2goW3JlbW90ZVJlc291cmNlQ2FjaGUgPSBXVEZNb3ZlKG1fcmVtb3RlUmVzb3VyY2VD
YWNoZSldIHsgfSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKG1f
d29ya1F1ZXVlLCAqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0KCkKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKFJl
ZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICAvLyBUaGUgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCBkZXN0cnVjdG9yIHdvbid0IGJlIGNhbGxlZCB1bnRpbCBkaXNjb25uZWN0KCkgaXMgY2Fs
bGVkIGFuZCB3ZSB1bnJlZ2lzdGVyIG91cnNlbHZlcyBhcyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlciBiZWNhdXNlCi0gICAgLy8gdGhlIElQQzo6Q29ubmVjdGlvbiByZWZzIGl0cyBXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXJzLgotICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29u
bmVjdGlvbigpLnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIC8vIFRoZSBiZWxvdyBjbGVhbnVwIHRhc2sgaXMgdGhlIGxhc3QgdGFzayB0aGF0IHdpbGwg
cnVuLiBUaGUgcmVmIGd1YXJhbnRlZXMgdGhhdCB0aGUgbm9uLXByb3RlY3RlZCB0YXNrcyBlbHNl
d2hlcmUgaW4gdGhlIGNvZGUKKyAgICAvLyBoYXZlIGFuIGFsaXZlIG9iamVjdC4KKyAgICBtX3dv
cmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0
aW9uKV0geworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUgUmVzb3VyY2VDYWNo
ZSBvbiB0aGUgV29ya1F1ZXVlIHNpbmNlIGl0IGdldHMgcG9wdWxhdGVkIG9uIHRoZSBXb3JrUXVl
dWUuCisgICAgICAgIFdURk1vdmUocHJvdGVjdGVkVGhpcy0+bV9yZW1vdGVSZXNvdXJjZUNhY2hl
KTsKKyAgICB9KTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICZtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gbV9jb25uZWN0
aW9uLnB0cigpOwogfQogCiB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CkBAIC0xMDksNyArMTE1LDcgQEAgYm9vbCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbShEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZSBpdGVtLCBHcmFwaGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byYgbWVkaWFJ
dGVtID0gaXRlbS5nZXQ8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYT4oKTsKLSAgICBh
dXRvIHBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKKyAg
ICBhdXRvIHBsYXllciA9IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVkaWFQbGF5
ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNDgyLDYgKzQ4OCwxOSBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRl
YwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6dGVybWluYXRlV2ViUHJvY2VzcygpCit7CisgICAgLy8gRHVyaW5nIHRoZSBjYWxsIHRp
bWUsIHRoZSBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGlzIGFsaXZlLCBiZWNhdXNlCisgICAg
Ly8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBpcyBvd25lZCBieSB0aGUgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy4gSG93ZXZlciwgZHVyaW5nCisgICAgLy8gY2FsbCB0aW1lIG9uIG1haW4gdGhy
ZWFkLCB0aGUgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBtaWdodCBhbHJlYWR5IGJlIGRlc3Ry
b3llZC4KKyAgICAvLyBXZSBjYW5ub3QgY2FsbCBmcm9tIHRoZSB3b3JrIHF1ZXVlLCBzaW5jZSB0
aGVyZSBpcyBubyB0aHJlYWQtc2FmZSByZWZlcmVuY2Ugbm9yIGlzIHRoZQorICAgIC8vIGNhbGwg
aXRzZWxmIHRocmVhZC1zYWZlLgorICAgIGNhbGxPbk1haW5SdW5Mb29wKFtncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzXSB7CisgICAgICAgIGlm
IChhdXRvKiBpbnN0YW5jZSA9IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAg
ICAgICAgICBpbnN0YW5jZS0+dGVybWluYXRlV2ViUHJvY2VzcygpOworICAgIH0pOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCmluZGV4IDc1ZDllMGFhNTI0MjQyOGNlYjY3ZjdiNGIzNWU0ZjU4MjIw
NjZjYmYuLmVlODJiOWM2ZjkzZjk3ZDIxNWVkNjU5YzViNjA2MzlmYWIzOWE0MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaApAQCAtNTgsMTEgKzU4LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIAotY2xhc3MgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZAorY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBmaW5hbAog
ICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICAsIHB1YmxpYyBJUEM6OkNvbm5l
Y3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcgotICAgICwgcHVibGljIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CisgICAgLCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJSZWFkaW5nQ2xpZW50CisgICAgLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4gewogcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0
U2VtYXBob3JlKTsKQEAgLTc5LDEyICs4MSwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE5l
eHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uKTsK
IAotICAgIHZvaWQgZGlzY29ubmVjdCgpOworICAgIHZvaWQgY29ubmVjdFdlYlByb2Nlc3NDb25u
ZWN0aW9uKCk7CisgICAgdm9pZCBkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmKTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0
ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmluYWw7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlQW5kQ3JlYXRlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQpAQCAtMTAyLDEy
ICsxMDUsMTIgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG5l
eHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwg
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uKTsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlci4KLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdWludDY0X3QgbWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAg
IHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTEyMSw2ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGVsZXRlQWxsRm9udHMoKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3JlYXRlU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOworICAgIHZv
aWQgdGVybWluYXRlV2ViUHJvY2VzcygpOwogCiAgICAgc3RydWN0IFBlbmRpbmdXYWtldXBJbmZv
cm1hdGlvbiB7CiAgICAgICAgIEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzIGFyZ3Vt
ZW50czsKQEAgLTE0MCwxMSArMTQ0LDEzIEBAIHByaXZhdGU6CiAKICAgICBSZWY8V29ya1F1ZXVl
PiBtX3dvcmtRdWV1ZTsKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VD
YWNoZTsKLSAgICBSZWY8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAg
ICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
LCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dh
a2V1cEluZm87CiAgICAgSVBDOjpTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZTsKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgbV9yZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTsKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3Bw
CmluZGV4IGJjYjRiYTVjYmJjNGQzNDcwNTlkY2ZlOGFiOGZjYjE4ZmY1YWQyZmUuLjJlZjQ4M2Ew
OGNjNDZiNWQ2ZDE0OWMyNjI3NWViMzZiYWI4NWFhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtMzgsMjkgKzM5
LDI2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlcjo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5h
Z2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0g
ICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAg
ICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSkKICAg
ICAsIG1fcXVldWUoY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNzKCkuYXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJRdWV1ZSgpKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0
aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFRocmVh
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCi1SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6On5SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoKQotewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCkucmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
LSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnJlbW92ZVRocmVhZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwotfQorUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjp+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlcjo6Y2xvc2UoKQordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXI6OmNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0g
ICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7Ci0gICAgICAgIG1fcmVuZGVyZXJzLmNsZWFyKCk7Ci0gICAgfSk7CisgICAgbV9jb25uZWN0
aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKG1fcXVldWUuZ2V0KCksICp0aGlzLCBNZXNzYWdl
czo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKG1fcXVldWUu
Z2V0KCksICp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlv
bjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlcjo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+JiYgcmVmRnJvbUNvbm5lY3Rpb24p
CiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fY29u
bmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlczo6UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9j
b25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VzOjpSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21D
b25uZWN0aW9uKV0geworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3JlbmRlcmVycy5jbGVhcigp
OworICAgIH0pOwogfQogCiBib29sIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
TWFuYWdlcjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNYW5hZ2VyLmgKaW5kZXggOWYwZjY1MmY2OTM2MDIwMDgzM2ViODlkNjNhNDZkMWVk
NWVlOWU5NS4uYjRlN2M5MzI1MTAzNmFjOWQxMWRhNzUyZGVhOGE2MDAzZDc0MDAzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oCkBAIC0y
OSw0NSArMjksNDIgQEAKIAogI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKLWNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOwogCi1jbGFzcyBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0
aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKK2NsYXNzIFJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlcj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIHByb2Nlc3Mp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJNYW5hZ2VyKHByb2Nlc3MpKTsgfQogICAgIH5SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIoKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlbmRlcmVyTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0K
IAotICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCk7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAotICAg
IHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpOwor
ICAgIHZvaWQgZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+JiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcihHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJik7CiAKLSAgICAvLyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3Nh
Z2VSZWNlaXZlcgotICAgIHZvaWQgZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYp
IGZpbmFsOwotCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIGJv
b2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAg
IHZvaWQgY3JlYXRlUmVuZGVyZXIoQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVudGlm
aWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJlcihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcklkZW50aWZpZXIpOwogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIEhhc2hNYXA8QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+PiBtX3JlbmRlcmVyczsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAppbmRleCA2MWI4OTBkYzc4NjdjMzNi
MDA1ZjIyZTkzYmIxYWY0N2RkZDNiMTdjLi5lMzY5MDMwNjcwYzA3NDcwZDJhZGU3NmZiMGRhMTM2
ODAzNDg2YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci5jcHAKQEAgLTM5LDMyICszOSwyNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcykKLSAgICA6IG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKQotICAgICwgbV9jb25uZWN0aW9uKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpKQorICAgIDogbV9jb25uZWN0aW9uKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY29ubmVjdGlvbigpKQogICAgICwgbV9xdWV1ZShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmdwdVByb2Nlc3MoKS52aWRlb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclF1ZXVlKCkpCiB7Ci0g
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29u
bmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsK
IH0KK1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6On5SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCi1SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjp+UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlcigpCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNvbm5l
Y3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNvbm5lY3Rpb24oKS5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLSAgICBt
X2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnJlbW92ZVRocmVhZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNl
aXZlUXVldWUobV9xdWV1ZS5nZXQoKSwgKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0aW9u
LT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKG1fcXVldWUuZ2V0KCksICp0aGlzLCBNZXNzYWdlczo6
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpj
bG9zZSgpCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmRpc2Nv
bm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbihSZWY8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlcj4mJiByZWZGcm9tQ29ubmVjdGlvbikKIHsKLSAgICBkaXNwYXRjaFRvVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbbGF5ZXJzID0gV1RGTW92ZShtX2xheWVycyldIHsgfSk7CisgICAgbV9jb25u
ZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29ubmVjdGlvbild
IHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbbGF5ZXJzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzLT5tX2xheWVycyldIHsgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+
JiYgY2FsbGJhY2spCi17Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShjYWxsYmFjaykp
OwotfQotCiBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmRpc3Bh
dGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKIHsKICAgICBpZiAoIWRlY29kZXIuZGVzdGluYXRpb25JRCgpKQpAQCAtODIsNyArNzcs
NyBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZUxh
eWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgogICAgICAgICBhdXRvIGxheWVyID0gUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoaWRlbnRpZmllciwgbV9jb25uZWN0aW9u
LmNvcHlSZWYoKSk7CiAgICAgICAgIGF1dG8mIGxheWVyUmVmZXJlbmNlID0gKmxheWVyOwogICAg
ICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNpemUsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGlkZW50aWZpZXIsIGxheWVyID0gV1RGTW92ZShsYXllcildKGF1dG8gbGF5ZXJJZCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwgbGF5ZXJJZCA9IFdURk1vdmUo
bGF5ZXJJZCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIsIGxheWVyID0gV1RGTW92ZShsYXllciksIGxheWVy
SWQgPSBXVEZNb3ZlKGxheWVySWQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIEFTU0VS
VCghbV9sYXllcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgICAgICAgICAgICAgIG1fbGF5
ZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxheWVyKSk7CiAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShsYXllcklkKSk7CkBAIC05NCw3ICs4OSw3IEBAIHZvaWQgUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlTGF5ZXIoU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyCiB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OnJl
bGVhc2VMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBpZGVudGlmaWVyXSgpIG11dGFibGUgewotICAgICAgICBkaXNwYXRjaFRvVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmll
cl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZpZXJdIHsKICAgICAgICAgICAgIEFTU0VSVCht
X2xheWVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtsYXllciA9IG1fbGF5ZXJzLnRha2UoaWRlbnRpZmllcildIHsgfSk7CiAgICAgICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAppbmRleCBhMzI0
YWVjOTU3NDFhYTc4NmNhNGIwMDIzZjY5MmExOTU3MTE0NTYwLi44OTI4ZmNmYTI1NGYwNzlhZTQw
Zjc0OWVlMThjZTBjZGYxNzZiZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIuaApAQCAtNDYsMjAgKzQ2LDE4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjsKIAotY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ciBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJl
ZkNvdW50ZWQgeworY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBm
aW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKGNvbm5lY3Rpb24pKTsgfQogICAgIH5SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9p
ZCBjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RXZWJQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cj4mJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAKLSAgICAvLyBJUEM6
OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlzcGF0Y2hUb1Ro
cmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwotCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjgsNyArNjYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y3JlYXRlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgYm9vbCBoaWRl
Um9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2spOwogICAg
IHZvaWQgcmVsZWFzZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIpOwog
Ci0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNz
OwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8V29ya1F1
ZXVlPiBtX3F1ZXVlOwogICAgIEhhc2hNYXA8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4+IG1f
bGF5ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA5
MWFlNmZhNzc0N2NhNGM0NmQzNDM5OTgzYTkzOTIwMWI0MjA2Y2I2Li4wY2MyMTA1MTJiMzM3YzQ1
ZTYzMzcxN2U4MzM3NWY1YWEzZDBjMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIkZ1bmN0aW9uRGlzcGF0Y2hlck1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZUZsYWdzLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtNDA1LDYgKzQwNiw3NCBAQCB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShUaHJlYWRNZXNz
YWdlUmVjZWl2ZXImIHRocgogICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNv
ZGVyKSk7CiB9CiAKK25hbWVzcGFjZSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0RlcXVlPHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gZmlsdGVyV2l0aE1lc3NhZ2VSZWNlaXZlUXVldWUoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgVCYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4+JiYgaW5jb21pbmdNZXNzYWdlcykKK3sKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4+IHJlc3Q7CisgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogaW5jb21pbmdNZXNzYWdl
cykgeworICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IHJlY2Vp
dmVyTmFtZSAmJiAobWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQgfHwg
IWRlc3RpbmF0aW9uSUQpKQorICAgICAgICAgICAgcmVjZWl2ZVF1ZXVlLmVucXVldWVNZXNzYWdl
KGNvbm5lY3Rpb24sIFdURk1vdmUobWVzc2FnZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXN0LmFwcGVuZChXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Q7
Cit9Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdl
UmVjZWl2ZVF1ZXVlJiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAg
ICBtX2luY29taW5nTWVzc2FnZXMgPSBmaWx0ZXJXaXRoTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhp
cywgcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIFdURk1vdmUobV9p
bmNvbWluZ01lc3NhZ2VzKSk7CisgICAgbV9yZWNlaXZlUXVldWVzLmFkZChyZWNlaXZlUXVldWUs
IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6YWRk
TWVzc2FnZVJlY2VpdmVRdWV1ZShGdW5jdGlvbkRpc3BhdGNoZXImIGRpc3BhdGNoZXIsIE1lc3Nh
Z2VSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBh
dXRvIHJlY2VpdmVRdWV1ZSA9IG1ha2VVbmlxdWU8RnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJl
Y2VpdmVRdWV1ZT4oZGlzcGF0Y2hlciwgcmVjZWl2ZXIpOworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAgIG1faW5jb21pbmdNZXNzYWdlcyA9
IGZpbHRlcldpdGhNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCAqcmVjZWl2ZVF1ZXVlLCByZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIFdURk1vdmUobV9pbmNvbWluZ01lc3NhZ2VzKSk7Cisg
ICAgbV9yZWNlaXZlUXVldWVzLmFkZChXVEZNb3ZlKHJlY2VpdmVRdWV1ZSksIHJlY2VpdmVyTmFt
ZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZShSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHsKKyAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7Cisg
ICAgICAgIG1fcmVjZWl2ZVF1ZXVlcy5yZW1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGlu
YXRpb25JRCk7CisgICAgfQorfQorCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVJl
Y2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlciwgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+JiYgZGVjb2RlcikKK3sKKyAgICBpZiAoIWRlY29kZXItPmlzU3luY01l
c3NhZ2UoKSkgeworICAgICAgICBtZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoKnRo
aXMsICpkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQgPSAwOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHN5bmNSZXF1ZXN0SUQp
IHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgICAgIC8vIFdlIHJlY2VpdmVkIGFuIGludmFsaWQg
c3luYyBtZXNzYWdlLgorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHRoaXMuCisgICAgICAgIGRl
Y29kZXItPm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNz
YWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOworCisgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVj
b2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgorICAg
IG1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsICpkZWNvZGVyLCBy
ZXBseUVuY29kZXIpOworCisgICAgLy8gRklYTUU6IElmIHRoZSBtZXNzYWdlIHdhcyBpbnZhbGlk
LCB3ZSBzaG91bGQgc2VuZCBiYWNrIGEgU3luY01lc3NhZ2VFcnJvci4KKyAgICBBU1NFUlQoZGVj
b2Rlci0+aXNWYWxpZCgpKTsKKworICAgIGlmIChyZXBseUVuY29kZXIpCisgICAgICAgIHNlbmRT
eW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKK30KKwogdm9pZCBDb25uZWN0aW9uOjpz
ZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKERpZENsb3NlT25Db25uZWN0
aW9uV29ya1F1ZXVlQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFtX2lzQ29ubmVj
dGVkKTsKQEAgLTc1MSw2ICs4MjAsMTIgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21p
bmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogICAgIGlmIChkaXNw
YXRjaE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKG1lc3NhZ2UpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAg
ICBpZiAoYXV0byogcmVjZWl2ZVF1ZXVlID0gbV9yZWNlaXZlUXVldWVzLmdldCgqbWVzc2FnZSkp
IHsKKyAgICAgICAgcmVjZWl2ZVF1ZXVlLT5lbnF1ZXVlTWVzc2FnZSgqdGhpcywgV1RGTW92ZSht
ZXNzYWdlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobWVzc2FnZS0+aXNT
eW5jTWVzc2FnZSgpKSB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWlu
Z1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CiAKQEAgLTk3OCw5ICsxMDUzLDggQEAgdm9pZCBD
b25uZWN0aW9uOjpkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKQogCiB2b2lkIENvbm5lY3Rpb246
OmVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGluY29taW5n
TWVzc2FnZSkKIHsKKyAgICBBU1NFUlQobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXguaXNIZWxkKCkp
OwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVzc2Fn
ZXNNdXRleCk7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKG1fd2FzS2lsbGVk
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTExNiw5ICsxMTkwLDE3IEBAIHZvaWQgQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQog
ICAgIC8vIFRoZSBtZXNzYWdlIG1pZ2h0IGhhdmUgYWxyZWFkeSBiZWVuIGRpc3BhdGNoZWQgZnJv
bSB0aGUgSVBDIFdvcmtRdWV1ZSB0byB0aGUgbWFpbiB0aHJlYWQgYnkgdGhlIHRpbWUgdGhlCiAg
ICAgLy8gY2xpZW50IHJlZ2lzdGVycyBpdHNlbGYgYXMgYSBXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIuIFRvIGFkZHJlc3MgdGhpcywgd2UgY2hlY2sgYWdhaW4gZm9yIG1lc3NhZ2VzIHJlY2VpdmVy
cwogICAgIC8vIG9uY2UgdGhlIG1lc3NhZ2UgYXJyaXZlcyBvbiB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgLy8gRklYTUU6IFRoaXMgc3RpbGwgc3VmZmVycyBmcm9tIG1lc3NhZ2UgcmVvcmRlcmluZyBi
dWcgd2hlcmUgdGhlIG1lc3NhZ2UKKyAgICAvLyBiZWxvdyBtaWdodCBiZSBkaXNwYXRjaGVkIGFm
dGVyIGEgbWVzc2FnZSB0aGF0IGlzIGJlaW5nIGRpc3BhdGNoZWQgZnJvbQorICAgIC8vIHRoZSBp
bmNvbWluZyBtZXNzYWdlIHRocmVhZC4gVGhpcyBzaG91bGQgYmUgZml4ZWQgYnkgY2hhbmdpbmcg
dGhlCisgICAgLy8gY2FsbHNpdGVzIHRvIHVzZSBDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVjZWl2
ZVF1ZXVlKCkuCiAgICAgaWYgKGRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIobWVz
c2FnZSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBIZXJlIHRoZSBUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIgaXMgbWlzc2luZyB0aGUgYWJvdmUgZGlzcGF0Y2guCisgICAgLy8gRklY
TUU6IEhlcmUgdGhlIFRocmVhZE1lc3NhZ2VSZWNlaXZlciB3b3VsZCBiZSBzdWZmZXJpbmcgZnJv
bSB0aGUgYWJvdmUKKyAgICAvLyBtZXNzYWdlIHJlb3JkZXJpbmcgYnVnLgorCiAgICAgaWYgKG1l
c3NhZ2UtPnNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpKSB7CiAgICAg
ICAgIGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcpIHsKICAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2Fn
ZS0+bWVzc2FnZU5hbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
aW5kZXggNjEwM2M4ZDgxMGQ3Yzc4MmFjZmRjYzM0YTNiNmEyYjhmZDY2MTAwZS4uNmFiOTQ0ZWM3
OTNhMTJkNDUzY2NjNGMzYWUzMDM4MDg3ODIzMDY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRlY29kZXIuaCIK
ICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgpAQCAtMjI4
LDYgKzIyOSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIo
UmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEID0gMCk7CiAgICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CiAKKyAgICAvLyBBZGRzIGEgbWVzc2Fn
ZSByZWNlaXZlIHF1ZXVlLiBUaGUgY2xpZW50IHNob3VsZCBtYWtlIHN1cmUgdGhlIGluc3RhbmNl
IGlzIHJlbW92ZWQgYmVmb3JlIGl0IGdvZXMKKyAgICAvLyBvdXQgb2Ygc2NvcGUuCisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICAvLyBBZGQgcyBhIG1lc3NhZ2Ug
cmVjZWl2ZSBxdWV1ZSB0aGF0IGRpc3BhdGNoZXMgdG8gdGhlIE1lc3NhZ2VSZWNlaXZlciB2aWEg
dGhlIEZ1bmN0aW9uRGlzcGF0Y2hlci4KKyAgICAvLyBUaGUgY2xpZW50IHNob3VsZCBtYWtlIHN1
cmUgaW5zdGFuY2UgaXMgcmVtb3ZlZCBiZWZvcmUgTWVzc2FnZVJlY2VpdmVyIGFuZCBGdW5jdGlv
bkRpc3BhdGNoZXIgZ28KKyAgICAvLyBvdXQgb2Ygc2NvcGUuIFRoZSBkaXNwYXRjaCBmdW5jdGlv
biB3aWxsIGhvbGQgdGhlIGNvbm5lY3Rpb24gb2JqZWN0IGFsaXZlLgorICAgIHZvaWQgYWRkTWVz
c2FnZVJlY2VpdmVRdWV1ZShGdW5jdGlvbkRpc3BhdGNoZXImLCBNZXNzYWdlUmVjZWl2ZXImLCBS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
ID0gMCk7CisKICAgICBib29sIG9wZW4oKTsKICAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2
b2lkIG1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwpAQCAtMzA3LDYg
KzMxNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOyB9CiAj
ZW5kaWYKIAorICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VS
ZWNlaXZlciYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmKTsKIHByaXZhdGU6CiAgICAgQ29u
bmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGllbnQmKTsKICAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKQEAgLTQwOCw2ICs0MTksNyBAQCBwcml2YXRl
OgogICAgIExvY2sgbV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXg7CiAgICAgRGVxdWU8c3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+PiBtX2luY29taW5nTWVzc2FnZXM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VzVGhyb3R0bGVyPiBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXI7CisgICAgTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcCBtX3JlY2VpdmVRdWV1ZXM7CiAKICAgICAvLyBPdXRnb2luZyBt
ZXNzYWdlcy4KICAgICBMb2NrIG1fb3V0Z29pbmdNZXNzYWdlc011dGV4OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2Vp
dmVRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRnVuY3Rpb25EaXNwYXRjaGVy
TWVzc2FnZVJlY2VpdmVRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNjZhMzJjZjk5ZTg1MDM1MGVhMGMw
MzM5YTg3NjRmZDY4MDE0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9GdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgKQEAgLTAsMCAr
MSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBDb25uZWN0aW9uOwor
Y2xhc3MgRGVjb2RlcjsKKworY2xhc3MgRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVR
dWV1ZSBmaW5hbCA6IHB1YmxpYyBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKEZ1bmN0aW9uRGlzcGF0Y2hlciYgZGlzcGF0Y2hlciwgTWVzc2FnZVJlY2VpdmVy
JiByZWNlaXZlcikKKyAgICAgICAgOiBtX2Rpc3BhdGNoZXIoZGlzcGF0Y2hlcikKKyAgICAgICAg
LCBtX3JlY2VpdmVyKHJlY2VpdmVyKQorICAgIHsKKyAgICB9CisgICAgfkZ1bmN0aW9uRGlzcGF0
Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUoKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGVu
cXVldWVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiYmIG1lc3NhZ2UpIGZpbmFsCisgICAgeworICAgICAgICBtX2Rpc3BhdGNoZXIuZGlzcGF0
Y2goW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pLCBtZXNzYWdlID0gV1RGTW92ZSht
ZXNzYWdlKSwgJnJlY2VpdmVyID0gbV9yZWNlaXZlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGNvbm5lY3Rpb24tPmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShyZWNlaXZlciwgV1RG
TW92ZShtZXNzYWdlKSk7CisgICAgICAgIH0pOworICAgIH0KK3ByaXZhdGU6CisgICAgRnVuY3Rp
b25EaXNwYXRjaGVyJiBtX2Rpc3BhdGNoZXI7CisgICAgTWVzc2FnZVJlY2VpdmVyJiBtX3JlY2Vp
dmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVjM2NlOWFmMmZkMjY5
NWQ1NWFkMmYwNjYyYTU4ZjFhMDgzMjZjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMCwwICsxLDQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFj
ZSBJUEMgeworCitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKKworY2xhc3MgTWVz
c2FnZVJlY2VpdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVzc2FnZVJlY2VpdmVR
dWV1ZSgpID0gZGVmYXVsdDsKKyAgICAvLyBDYWxsZWQgd2l0aCBDb25uZWN0aW9uIGluY29taW5n
IG1lc3NhZ2UgbG9jayBoZWxkLgorICAgIC8vIE1heSBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0
aHJlYWRzLgorICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+JiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1
ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NmZlMGU4MDQ1MzlkZmZmMTU1ZmRjYWY0MGUzYTA4YjA1MDli
MmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgiCisKK25h
bWVzcGFjZSBJUEMgeworCit2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwoU3Rv
cmVUeXBlJiYgcXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1
aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBBU1NFUlQoIW1fcXVl
dWVzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcXVldWVzLmFkZChrZXksIFdURk1vdmUocXVldWUp
KTsKK30KKwordm9pZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjpyZW1vdmUoUmVjZWl2ZXJOYW1l
IHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBhdXRvIGtleSA9
IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3Rp
bmF0aW9uSUQpOworICAgIEFTU0VSVChtX3F1ZXVlcy5jb250YWlucyhrZXkpKTsKKyAgICBtX3F1
ZXVlcy5yZW1vdmUoa2V5KTsKK30KKworTWVzc2FnZVJlY2VpdmVRdWV1ZSogTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcDo6Z2V0KGNvbnN0IERlY29kZXImIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAgaWYg
KG1fcXVldWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBr
ZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSksIDApOworICAgIGF1dG8gaXQgPSBtX3F1ZXVlcy5maW5kKGtleSk7Cisg
ICAgaWYgKGl0ID09IG1fcXVldWVzLmVuZCgpKSB7CisgICAgICAgIGtleS5zZWNvbmQgPSBtZXNz
YWdlLmRlc3RpbmF0aW9uSUQoKTsKKyAgICAgICAgaWYgKGtleS5zZWNvbmQpCisgICAgICAgICAg
ICBpdCA9IG1fcXVldWVzLmZpbmQoa2V5KTsKKyAgICB9CisgICAgaWYgKGl0ID09IG1fcXVldWVz
LmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCgK
KyAgICAgICAgV1RGOjptYWtlVmlzaXRvcigKKyAgICAgICAgICAgIFtdKGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJuIHF1ZXVlLmdldCgp
OyB9LAorICAgICAgICAgICAgW10oTWVzc2FnZVJlY2VpdmVRdWV1ZSogcXVldWUpIHsgcmV0dXJu
IHF1ZXVlOyB9CisgICAgICAgICksIGl0LT52YWx1ZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMjQwZmYzNWM4ZWM3OTIwZjA1ZWZiY2QyNzI1YzA3YWI3Y2NlNDE5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5o
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkRlY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorCituYW1lc3BhY2UgSVBD
IHsKKworZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90OworCitjbGFzcyBNZXNzYWdl
UmVjZWl2ZVF1ZXVlTWFwIHsKK3B1YmxpYzoKKyAgICBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwKCkg
PSBkZWZhdWx0OworICAgIH5NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwKCkgPSBkZWZhdWx0OworCisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZE1lc3NhZ2UoY29uc3QgRGVjb2RlciYgbWVzc2FnZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBRdWV1ZU1hcDo6aXNWYWxpZEtleShzdGQ6Om1ha2VfcGFpcihz
dGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIG1lc3Nh
Z2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgfQorCisgICAgLy8gQWRkcyBhIHdpbGRjYXJkIGZp
bHRlciBpZiBkZXN0aW5hdGlvbklEID09IDAuCisgICAgdm9pZCBhZGQoTWVzc2FnZVJlY2VpdmVR
dWV1ZSYgcXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpIHsgIGFkZEltcGwoU3RvcmVUeXBlKCZxdWV1ZSksIHJlY2VpdmVyTmFtZSwgZGVzdGlu
YXRpb25JRCk7IH0KKyAgICB2b2lkIGFkZChzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVR
dWV1ZT4mJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCkgeyBhZGRJbXBsKFN0b3JlVHlwZShXVEZNb3ZlKHF1ZXVlKSksIHJlY2VpdmVyTmFt
ZSwgZGVzdGluYXRpb25JRCk7IH0KKyAgICB2b2lkIHJlbW92ZShSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgTWVzc2FnZVJlY2VpdmVRdWV1ZSogZ2V0KGNvbnN0
IERlY29kZXImKSBjb25zdDsKK3ByaXZhdGU6CisgICAgdXNpbmcgU3RvcmVUeXBlID0gVmFyaWFu
dDxNZXNzYWdlUmVjZWl2ZVF1ZXVlKiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNlaXZlUXVl
dWU+PjsKKyAgICB2b2lkIGFkZEltcGwoU3RvcmVUeXBlJiYsIFJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCk7CisgICAgdXNpbmcgUXVldWVNYXAgPSBIYXNoTWFwPHN0ZDo6cGFp
cjx1aW50OF90LCB1aW50NjRfdD4sIFN0b3JlVHlwZT47CisgICAgUXVldWVNYXAgbV9xdWV1ZXM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDZkNGVhNTM0OGM3ZGFl
Zjc1MTAzODkwYjUwOWMwNzIwOTkzMWEzMTQuLjliZDcwNDE5YWU2ODg5YmI2ZTljOTNlNDU1OTA3
NWI2ZjEwODQwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQzLDYgKzE0Myw3IEBAIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8tdW5p
ZnkKIFBsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L0pTSVBDQmluZGluZy5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNw
cCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcCBAbm8tdW5pZnkKIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdlMDA3MmMzYjY4MDg0
ZDZiYzI2MjZiOTA1ZDMwMmQ3MDBlZmUyMTkuLjNlNTYyMmI2MDI5MmQ5M2M1ODk4NGYxNjVjMTg1
NjEzNThmYzI0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTMyNyw2ICsxMzI3LDEwIEBACiAJCTdBRkJEMzY3MjFFNTFCQUIwMDVE
QkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVEQkFD
QiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQz
NkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAv
KiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CiAJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZCQyAv
KiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi87
IH07CisJCTdCNDgzRjFGMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0Yx
QjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oICovOyB9OworCQk3
QjQ4M0YyMDI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUMyNUNEREE5QjAw
MTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLzsgfTsKKwkJN0I0ODNGMjEyNUNEREE5
QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8q
IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovOyB9OworCQk3QjQ4M0YyMjI1Q0REQTlDMDAx
MjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUUyNUNEREE5QjAw
MTIwNDg2IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLzsgfTsK
IAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMzRTFBNEEw
RTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rp
b25hcnkuaCAqLzsgfTsKQEAgLTQ1MTgsNiArNDUyMiwxMCBAQAogCQk3QUZCRDM2RDIxRTU0NkUz
MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW5j
eVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZFMjFFNTQ2RTMw
MDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcnNp
c3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFEQjI2NTI1
NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0I0ODNGMUIyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYg
LyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
NDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0
ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2
QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
ODk5LDYgKzY5MDcsNyBAQAogCQkJCUJDMDMyREEwMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVy
LmggKi8sCiAJCQkJOUJEOEFCNDkyNTgyMEU1MjAwNTM4NkY4IC8qIEZvbnRSZWZlcmVuY2UuaCAq
LywKIAkJCQk0MTUxRTVDMzFGQkI5MEE5MDBFNDdFMkQgLyogRm9ybURhdGFSZWZlcmVuY2UuaCAq
LywKKwkJCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVz
c2FnZVJlY2VpdmVRdWV1ZS5oICovLAogCQkJCUMwQ0U3MkFDMTI0N0U3OEQwMEJDMEVDNCAvKiBI
YW5kbGVNZXNzYWdlLmggKi8sCiAJCQkJMUM5QUYzNjEyNDEzNEQyMzAwRDNFQzAyIC8qIEltYWdl
RGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUEzMUY2MEEzMjVDQzdEQjgwMEFGMTRGNCAvKiBJUENT
ZW1hcGhvcmUuY3BwICovLApAQCAtNjkwNyw2ICs2OTE2LDkgQEAKIAkJCQk5QjQ3OTA4RTI1MzE1
MUNDMDBFQzExQUIgLyogSlNJUENCaW5kaW5nLmggKi8sCiAJCQkJOUI0NzkwOEMyNTMxNEQ4MzAw
RUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5oICovLAogCQkJCTFBQzRDODI4
MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCAqLywKKwkJCQk3QjQ4M0YxQzI1Q0RE
QTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovLAorCQkJCTdCNDgzRjFEMjVD
RERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLywKKwkJCQk3QjQ4
M0YxQjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oICovLAogCQkJ
CTFBM0VFRDExMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCAqLywKIAkJCQkx
QTNFRUQwQzE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCAqLywKIAkJ
CQkxQTNFRUQwRDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8sCkBA
IC0xMTYxOCw2ICsxMTYzMCw3IEBACiAJCQkJQ0Q3OEUxMTUxREI3RDdFRDAwMTRBMkRFIC8qIEZ1
bGxzY3JlZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlEMkVBMjA0NjQwNkYwMDE3
MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQTkzREIwMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQ
YXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjQ4M0YyMjI1Q0REQTlDMDAxMjA0ODYg
LyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE3NzUzRjExOEJBQkYwMDA3RDlFOUEgLyogR2VuZXJpY0NhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5RUM1MzJBMzI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRp
b25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTExNzA1LDYgKzExNzE4LDggQEAKIAkJ
CQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUI0NzkwOEQyNTMxNEQ4MzAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2Ny
aXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlEQ0NEIC8q
IE1lc3NhZ2VGbGFncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I0ODNGMjAyNUNEREE5QzAwMTIw
NDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNDgzRjFG
MjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTNFRUQxMjE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTNFRUQwRjE2MUE1MzU0MDBBRUI0RjUgLyogTWVzc2FnZVJlY2Vp
dmVyTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCMDM3QTE4NUE3QzZBMDBFREY1MDEgLyog
TWVzc2FnZVNlbmRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzY5MCw2ICsxMzcwNSw3IEBACiAJ
CQkJMDdFMTlFRkIyM0Q0MDFGMTAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxREYyOUU2NDI1N0YzN0EzMDAz
QzI4QUYgLyogTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTlCNDc5MDkxMjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1l
bnREZXNjcmlwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I0ODNGMjEyNUNEREE5QzAw
MTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQ5MkE3ODEyMTJCNkE3MTAwRjQ5M0ZEIC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDkyQTc4MjIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVNlbmRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3QTIxMkI2QTYxMDBGNDkzRkQgLyogTW9kdWxl
LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419691</attachid>
            <date>2021-02-09 02:14:57 -0800</date>
            <delta_ts>2021-02-09 05:40:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221560-20210209121455.patch</filename>
            <type>text/plain</type>
            <size>72856</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjY2NmZGJiODJmNTY5MmI1YjkyZDMz
YzE4NGE0YjhkOGE5OTU1MGMuLjIzMTMzNTg1Njk3NWQ3NTFhYWJiODcwMDliODQyYTVjZmM3Yjc3
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMDItMDggIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW9uIGNsaWVudHMgc2hvdWxkIGJl
IGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRhIGluc3RlYWQgb2YgZW1iZWRkZWQg
aW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBGdW5jdGlvbkRpc3BhdGNoZXIgbm90IGJlIFJlZkNvdW50ZWRU
aHJlYWRTYWZlLgorICAgICAgICBUaGVyZSdzIG5vdGhpbmcgaW5oZXJlbnRseSByZWZlcmVuY2Ug
Y291bnRlZCBpbiB0aGUgZGVzY3JpcHRpb24KKyAgICAgICAgInNvbWV0aGluZyB0aGF0IGZ1bmN0
aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIuCisgICAgICAgIFRoaXMgYWxsb3dzIG90aGVyIGlu
dGVyZmFjZSBjb250cmFjdHMgdGhhbiAid2hlbiB0aGUgcmVjZWl2ZXIgcmVmZXJlbmNlcworICAg
ICAgICBGdW5jdGlvbkRpc3BhdGNoZXIsIGl0IHdpbGwgdGhyZWFkLXNhZmUgcmVmIGl0Ii4KKwor
ICAgICAgICBIYXZpbmcgYSBSZWZDb3VudGVkVGhyZWFkU2FmZSBpbiB0aGUgbWlkZGxlIG9mIGlu
aGVyaXRhbmNlIGNoYWluIGlzIHByb2JsZW1hdGljLCBhcworICAgICAgICBub3QgYWxsIGluaGVy
aXRhbmNlIGNoYWlucyBoYXZlIGl0LiBJdCBpcyBiZXR0ZXIgdG8gc2VwYXJhdGUgInNvbWV0aGlu
ZyB0aGF0CisgICAgICAgIGZ1bmN0aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIgZnJvbSAic29t
ZXRoaW5nIHRoYXQgbWF5IGJlIG93bmVkIGJ5IG11bHRpcGxlCisgICAgICAgIHRocmVhZHMiLgor
CisgICAgICAgIEluIHRoZSBjaGFuZ2UsIElQQzo6Q29ubmVjdGlvbiB3aWxsIHN0b3JlIGEgcmVm
ZXJlbmNlIHRvIEZ1bmN0aW9uRGlzcGF0Y2hlci4gSW4KKyAgICAgICAgdGhpcyBzY2VuYXJpbyBp
dCB3b3VsZCBiZSBjb25mdXNpbmcgdG8gdGhlIHJlYWRlciBpZiB0aGUgcmVmZXJlbmNlIGNvdW50
IHdvdWxkIGJlCisgICAgICAgIGNoYW5nZWQuIFRoZSBpbnRlcmZhY2UgaXMgImFkZC9yZW1vdmUi
LCB3aGljaCBpcyBpbmhlcmVudGx5IG5vdCByZWZjb3VudGVkLiBJZgorICAgICAgICB0aGUgcmVm
Y291bnQgd2FzIHBhcnQgb2YgdGhlIGludGVyZmFjZSwgdGhlbiBxdWVzdGlvbiB3b3VsZCBhcmlz
ZSBhcyBvZiB3aGF0IGl0CisgICAgICAgIHdhcyB1c2VkIGZvci4gSWYgRnVuY3Rpb25EaXNwYXRj
aGVyIHdhcyByZWZjb3VudGVkIGJ1dCB0aGUgcmVmY291bnQgd291bGQgbm90IGJlCisgICAgICAg
IG1vZGlmaWVkIGZvciB0aGlzIGNhc2UsIGl0IHdvdWxkIHJpc2UgcXVlc3Rpb25zLCB0b28uCisK
KyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg6CisgICAgICAgICogd3RmL1J1bkxv
b3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisKIDIwMjEtMDItMDQgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmR5bmFtaWNfY2ZfY2Fz
dDw+IHNob3VsZCBub3QgYXNzZXJ0IGluIERlYnVnIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNDk2YWQ3
M2FlMjFlNjE1MTEwYmJlZjg2Mzc5ODFhZjBjNjQxZjNlLi43MzJiNmZiYjNiNTdiNDJkMDhiNTlm
NDg0NGRmYzkwNTcxYjdiY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAyMS0wMi0w
OCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvbm5l
Y3Rpb24gY2xpZW50cyBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gdGhlIG1lc3NhZ2VzIGFzIGRh
dGEgaW5zdGVhZCBvZiBlbWJlZGRlZCBpbiBmdW5jdGlvbiByZWZlcmVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE1NjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSVBDOjpNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLCBhbiBpbnRlcmZhY2Ugd2hpY2ggb2J0YWlucyBtZXNzYWdlcyBmcm9tCisgICAg
ICAgIHRoZSBtZXNzYWdlIHJlY2VpdmUgdGhyZWFkIGFuZCBmb3J3YXJkcyB0aGVtIHRvIGNhbGxl
ciBhcyBkYXRhLgorICAgICAgICBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBiZSBhYmxl
IHRvIHNraXAgbWVzc2FnZXMgdGhhdCBhcmUgc3RhbGUKKyAgICAgICAgb3Igb3JpZ2luYXRpbmcg
ZnJvbSBhIHNlbmRlciB3aGljaCBpcyBpbmNvcnJlY3QuIEJlZm9yZSwgdGhlIGNsaWVudAorICAg
ICAgICBjb3VsZCBvbmx5IGdldCB0aGUgbWVzc2FnZXMgYXMgRnVuY3Rpb24gcmVmZXJlbmNlcywg
YW5kIHRob3NlIGNhbm5vdAorICAgICAgICBiZSBza2lwcGVkIGFzIGl0IHdvdWxkIGJlIHVuZWRm
aW5lZCB3aGF0IG5vdCBleGVjdXRpbmcgYSBmdW5jdGlvbiBtZWFucy4KKworICAgICAgICBJUEM6
Ok1lc3NhZ2VSZWNlaXZlUXVldWUgaXMgYSBnZW5lcmFsaXphdGlvbiBhbmQgc2ltcGxpZmljYXRp
b24gb2YgY3VycmVudAorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNl
aXZlclJlZkNvdW50ZWQgYW5kCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyLiBJdCBoYXMgZGlmZmVyZW50IHJlZi1jb3VudAorICAgICAgICBzZW1hbnRp
Y3MsIGluIHRoZSB3YXkgdGhhdCBjbGllbnQgY29udHJvbHMgdGhlIGxpZmUtdGltZSB3aXRoIGFk
ZCBhbmQKKyAgICAgICAgcmVtb3ZlLgorCisgICAgICAgIElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1
ZSBmaXhlcyBtZXNzYWdlIHJlb3JkZXJpbmcgYnVnIHdpdGgKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgd2hlcmUgZmlyc3QgZmV3IG1lc3NhZ2VzCisg
ICAgICAgIHRoYXQgYXJlIHJvdXRlZCB0byBtYWluIHRocmVhZCBtZXNzYWdlIHF1ZXVlIGNhbiBj
b21lIGxhdGVyIHRoYW4gc29tZQorICAgICAgICBvdGhlciBtZXNzYWdlIHRoYXQgZ2V0cyBoYW5k
bGVkIGZyb20gbWVzc2FnZSByZWNlaXZlIHRocmVhZC4KKworICAgICAgICBGaXhlcyBmZXcgY2Fs
bC1zaXRlcyBhcyBleGFtcGxlcyBvZiBhbGwgdGhlIHRoaW5ncyB0aGF0IGFyZSB3cm9uZyBpbgor
ICAgICAgICBleGlzdGluZyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgLyBUaHJlYWRNZXNzYWdl
UmVjZWl2ZXJSZWZDb3VudGVkCisgICAgICAgIHNpdGVzLgorCisgICAgICAgIERvZXMgbm90IHJl
cGxhY2UgYWxsIHVzZXMgb2YgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIC8KKyAgICAgICAgVGhy
ZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCBkdWUgdG8gdGhlIHNpdGVzIGFwcGVhcmluZyB2
ZXJ5IGJ1Z2d5LAorICAgICAgICBhbmQgdGh1cyB0YWtpbmcgdGltZSB0byBnZXQgcmlnaHQgYW5k
IGRlbGF5aW5nIHRoZSByZXZpZXcuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp+R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY29wZWREaXNjb25uZWN0OjpTY29wZWRE
aXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
U2NvcGVkRGlzY29ubmVjdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6U2NvcGVkRGlzY29ubmVjdDo6flNjb3BlZERpc2Nvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY29wZWREaXNjb25u
ZWN0OjpyZXNldCk6CisgICAgICAgIEFkZCByZXVzYWJsZSBTY29wZWREaXNjb25uZWN0IGhlbHBl
ciBpbnN0ZWFkIG9mIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKKyAgICAgICAgLXNwZWNpZmljICJ3
cmFwcGVyIi4gUmVwbGFjZSB0aGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIgdW5pcXVl
X3B0cgorICAgICAgICBob2xkZXIgd2l0aCBqdXN0IG1vdmUgc2VtYW50aWNzLCBpbiBvcmRlciB0
byBhdm9pZCBoZWFwLWFsbG9jYXRpbmcgdGhlCisgICAgICAgIHdyYXBwZXIuCisKKyAgICAgICAg
QWRkIGNvbm5lY3QgLXR5cGUgY2FsbCBpbiBhZGRpdGlvbiB0byBkaXNjb25uZWN0IHR5cGUgY2Fs
bCwgZHVlIHRvCisgICAgICAgIHRocmVhZGluZyBidWcgaW4gZXhpc3RpbmcgY29kZSwgc2VlIGJl
bG93LgorCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgU3RvcmUgcmVmZXJlbmNlcyB0byB2YXJpb3Vz
IG9iamVjdHMgc28gdGhhdCB0aGV5J3JlIGFjY2Vzc2VkIGluIHRocmVhZC1zYWZlIG1hbm5lci4K
KyAgICAgICAgRG8gbm90IGFkZCB0aGUgYWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSBpbiB0aGUgY29u
c3RydWN0b3IuIFRoZSBmdW5jdGlvbiB0YWtlcyBhCisgICAgICAgIHB0ciB0byBpbnRlcmZhY2Uu
IFdoZW4gdGhlIGNvbnN0cnVjdG9yIHJ1bnMsIHRoZSB2cHRyIGlzIG5vdCBwb3B1bGF0ZWQgeWV0
LgorICAgICAgICBDb25uZWN0aW9uIHdpbGwgc3RhcnQgZGlzcGF0Y2hpbmcgbWVzc2FnZXMgdGhy
b3VnaCB0aGUgcGFzc2VkIHZwdHIgaW1tZWRpYXRlbHkgd2hlbgorICAgICAgICBhZGRNZXNzYWdl
UmVjZWl2ZVF1ZXVlIGlzIGNhbGxlZC4gRHVlIHRvIGNvbXBvdW5kaW5nIGJ1Z3MgYW5kIGdlbmVy
YWwgc2xvd25lc3MsIHRoaXMgYnVnCisgICAgICAgIHdhcyBub3QgaGl0IG9mdGVuIGJlZm9yZS4K
KworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb25uZWN0V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBDb25uZWN0IHRoZSBtZXNzYWdlIHF1ZXVlIGFuZCBz
dGFydCByZWNlaXZpbmcgdGhlIG1lc3NhZ2VzLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisKKyAgICAg
ICAgUmVnYXJkaW5nOiAgICAgcmVtb3RlUmVzb3VyY2VDYWNoZSA9IFdURk1vdmUobV9yZW1vdGVS
ZXNvdXJjZUNhY2hlKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUgY2Fubm90IGJlIGRl
c3Ryb3llZCBieSBtb3ZpbmcgaXQgYXdheSBkdXJpbmcgZGVzdHJ1Y3Rpb24gZnJvbQorICAgICAg
ICB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSB0YXNrIHRocmVhZCB0YXNrIGZ1bmN0aW9ucyB3aWxs
IHJlZmVyIHRvIHRoZSBvYmplY3QgYW5kIHdvdWxkIHVzZQorICAgICAgICB0aGUgbW92ZWQtYXdh
eSBvYmplY3QuIEp1c3QgbW92ZSBpdCBpbiB0aGUgdGFzayBmdW5jdGlvbi4KKworICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBj
b25zdCk6CisgICAgICAgIERvIG5vdCBuYXZpZ2F0ZSB0byBjb25uZWN0aW9uIHZpYSBncHVQcm9j
ZXNzQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4KKyAgICAgICAgSXQgd2lsbCBiZSBkZXN0cm95ZWQg
dXBvbiBkaXNjb25uZWN0LCBidXQgc2VuZHMgbWF5IGhhcHBlbiBhZnRlciB0aGF0CisgICAgICAg
IGR1cmluZyBwbGF5YmFjayBvZiBkaXNwYXRjaGVkIHRhc2sgZnVuY3Rpb25zLgorCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKToKKyAgICAg
ICAgRG8gbm90IG5hdmlnYXRlIHRvIHRoZSByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSB2
aWEgdGhlCisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uVG9XZWJQcm9jZXNzLiBUaGlzIG9i
amVjdCBoYXMgYmVlbiBkZXN0cm95ZWQgdXBvbiBkaXNjb25uZWN0LAorICAgICAgICBidXQgdGhl
IGRpc3BhdGNoZWQgdGFzayBmdW5jdGlvbnMgd2lsbCBwbGF5YmFjayBpbiB0aGUgcGxheWJhY2sg
dGhyZWFkLgorICAgICAgICBBbHNvLCB0aGUgYWNjZXNzb3JzIG5hdmlnYXRpbmcgdXB3YXJkcyBp
biB0aGUgc3RydWN0dXJlIGFyZSBub3QgdGhyZWFkLXNhZmUuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6dGVybWluYXRlV2ViUHJvY2Vzcyk6CisgICAgICAgIERv
IG5vdCBuYXZpZ2F0ZSBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlIGl0IG1pZ2h0IGJlIGRlc3Ryb3ll
ZCBhdCB0aGUgdGltZQorICAgICAgICBvZiBkaXNwYXRjaGluZyB0aGUgdGVybWluYXRlV2ViUHJv
Y2Vzcy4gSW5zdGVhZCwgcG9zdCBhIG1haW4gdGhyZWFkIHRhc2sKKyAgICAgICAgd2l0aCB3ZWFr
IHB0ci4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oOgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpjcmVhdGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpkZWxldGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZWRpYVBsYXllcik6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAg
ICBSZW1vdmUgdGhlIHRocmVhZC1zYWZlIGJlaGF2aW9yIHRoYXQgd291bGQgZ2l2ZSBmYWxzZSBp
bXByZXNzaW9uIG9uCisgICAgICAgIHRocmVhZCBzYWZldHkuIEl0IGFwcGVhcnMgYXMgaWYgdGhl
IE1lZGlhUGxheWVyIHJldHVybmVkIGJ5CisgICAgICAgIFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6Om1lZGlhUGxheWVyKCkgaXMgbm90IHRocmVhZC1zYWZlLgorICAgICAg
ICBJdCBzZWVtcyBhcyBpZiB0aGUgbWVkaWEgcGxheWVyIGNvdWxkIGhhdmUgYmVlbiBtdXRhdGVk
IGJ5IHRoZSBwcm94eQorICAgICAgICBjYWxsIGZ1bmN0aW9ucyBpbiBtYWluIHRocmVhZCBkdXJp
bmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0aHJlYWQKKyAgICAgICAgc2ltdWx0YW5lb3VzbHkg
cGFpbnRpbmcgaXQgdG8gY2FudmFzLiBJbnN0ZWFkLCBwYWludCB0aGUgTWVkaWFQbGF5ZXIKKyAg
ICAgICAgZnJvbSBVSSB0aHJlYWQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OlJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6ZGlzY29ubmVjdFdlYlBy
b2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmRpc2Nvbm5lY3RXZWJQcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXI6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6cmVsZWFzZUxheWVyKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmg6CisKKyAg
ICAgICAgRml4IG1vc3RseSBzaW1pbGFyIHRocmVhZGluZyBidWdzIGFzIGV4cGxhaW5lZCBhYm92
ZS4KKyAgICAgICAgTm90YWJsZSBkaWZmZXJlbmNlIGlzIHRoZSBidWcgYWJvdXQgflJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcigpCisgICAgICAgIGNhbGxpbmcgKGJ1
Z2d5KSByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoKToKKyAgICAgICAgcmVtb3ZlVGhyZWFk
TWVzc2FnZVJlY2VpdmVyIGlzIGEgcmVmLWNoYW5naW5nIGZ1bmN0aW9uIG9uIHRoZSBvd25lciwg
d2hpY2ggaXMKKyAgICAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5h
Z2VyLiBTbyBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRoYXQgYSBkZXN0cnVjdG9yCisgICAgICAg
IHdvdWxkIGRlY3JlYXNlIHRoZSByZWZjb3VudC4KKyAgICAgICAgSW4gYWRkaXRpb24sIENvbm5l
Y3Rpb24gZGlzcGF0Y2hlcyBtZXNzYWdlcyB1bnRpbCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2
ZXIuIElmIHRoZQorICAgICAgICBjYWxsIGlzIG1hZGUgd2hpbGUgbWFpbiB0aHJlYWQgaXMgaW5z
aWRlIGRlc3RydWN0b3IsIGl0IG1lYW5zIHRoYXQgcmVmIGNvdW50IGlzIGJlaW5nCisgICAgICAg
IGV4dGVuc2l2ZWx5IG1vZGlmaWVkIGR1cmluZyBkZXN0cnVjdGlvbiBhbmQgdGFza3MgYXJlIGJl
aW5nIHNjaGVkdWxlZCB3aGVuIHRoZXkgc2hvdWxkCisgICAgICAgIG5vdCBiZS4KKworICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJl
bW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNw
YXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpw
cm9jZXNzSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZW5xdWV1
ZUluY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVz
c2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV1RG
L3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwOjphZGRJbXBsKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cDo6cmVtb3ZlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAg
KElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6aXNWYWxpZE1lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGQpOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTAy
LTA1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
R0wgSVBDIG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQgb3V0IG9mIG9yZGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uRGlzcGF0Y2hlci5oCmluZGV4IGQwOWE1MjIzNGY4YTdhMmRmOGM1ZjM3YmM3MWQzMWQzOWFj
NDhhYjcuLjdjODY0NzE5MzYwMTAyN2ZkNzJmMTZiOTFlNjVjOTAwZmJlZDVhMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCkBAIC0yNiwxNCArMjYsMTMgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiAvLyBGdW5jdGlvbkRpc3BhdGNoZXIg
aXMgYW4gYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gb2Ygc29tZXRoaW5nIHRoYXQgZnVuY3Rpb25z
IGNhbiBiZQogLy8gZGlzcGF0Y2hlZCB0by4gVGhpcyBjYW4gZm9yIGV4YW1wbGUgYmUgYSBydW4g
bG9vcCBvciBhIHdvcmsgcXVldWUuCiAKLWNsYXNzIEZ1bmN0aW9uRGlzcGF0Y2hlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxGdW5jdGlvbkRpc3BhdGNoZXI+IHsKK2NsYXNzIEZ1bmN0
aW9uRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwg
fkZ1bmN0aW9uRGlzcGF0Y2hlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5M
b29wLmggYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKaW5kZXggMDQ2NmQ0NDU5ZDZiNzRiY2Mx
Y2U0ZDg0MjAzNzM2ODcyNjA3Y2EzNC4uNGVjMzFkYzNkNTg4MzFmMGQ1NDg5NzczYWU3YzAzN2Y2
MTA5NTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1J1bkxvb3AuaApAQCAtNjQsNyArNjQsNyBAQCB1c2luZyBSdW5Mb29wTW9kZSA9
IHVuc2lnbmVkOwogI2RlZmluZSBEZWZhdWx0UnVuTG9vcE1vZGUgMAogI2VuZGlmCiAKLWNsYXNz
IFJ1bkxvb3AgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKK2NsYXNzIFJ1bkxv
b3AgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyLCBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8UnVuTG9vcD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJ1bkxvb3ApOwog
cHVibGljOgogICAgIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3Jr
UXVldWUuaAppbmRleCA1ZDY5NGJkOGMzZjVhNGE1YzAwYzk0MmY5ZGQ0MzNkN2M4NDQ1ZTIzLi4y
MDBmOTY5YzI3NmM3NGZiZjI3ZjM1NGQ5YTkxN2I0OTA2MGZjNWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApA
QCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3MgV29ya1F1ZXVlIGZp
bmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CitjbGFzcyBXb3JrUXVldWUgZmluYWwg
OiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
V29ya1F1ZXVlPiB7CiAKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgewpAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUU9TID0gVGhyZWFkOjpRT1M7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25zdCBjaGFyKiBu
YW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOwotICAgIH5Xb3Jr
UXVldWUoKSBmaW5hbDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfldvcmtRdWV1ZSgpIGZpbmFs
OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgp
PiYmKSBmaW5hbDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNl
Y29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggODI3OGJjZTE0YzVm
MWMyNGJlN2M5MDIyZDVmZDQwYjI0YzU4ZWZlZi4uZmFiNGExZTVlMTIwZmJiNDI0YjNhOTliMjE3
OTIzYmZkZTU5MGExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTg1LDggKzE4NSw4IEBAIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICAgICBtX2Nv
bm5lY3Rpb24tPmludmFsaWRhdGUoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotICAgIG1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlci0+Y2xvc2UoKTsK
LSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXItPmNsb3NlKCk7CisgICAgbV9h
dWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyLnJlc2V0KCk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLnJlc2V0KCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
VVNFKExJQldFQlJUQykKICAgICBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5LT5jbG9zZSgpOwpAQCAt
MjkzLDcgKzI5Myw3IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSgpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
aWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkK
IHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbnN1
cmUoaWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0
aGlzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkpOwor
ICAgICAgICByZXR1cm4gU2NvcGVkRGlzY29ubmVjdCB7IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllciwgV1RGTW92ZShyZXN1bWVEaXNwbGF5TGlzdFNlbWFw
aG9yZSkpIH07CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KQEAgLTMwNCwxNiArMzA0LDYgQEAgdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmkKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKLUdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJiByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdURk1vdmUo
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpCi17Ci19Ci0KLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjp+UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFdyYXBwZXIoKQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+ZGlzY29ubmVjdCgp
OwotfQotCiAjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDdiYWRkMzc3NjljZjUyZmQ1NDBiNGZi
Nzc3ZDA4ODc0NjYwNGY1NGYuLmUwMDdmYmFlZmM5NzlhZTFiN2RmZjAwNDVkNWZjYWViYzM5Yzky
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMTY0LDYgKzE2NCw0NiBAQCBwcml2YXRlOgogICAgIC8vIE5vd1Bs
YXlpbmdNYW5hZ2VyOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlLCBPcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKIAorICAgIC8vIFNjb3BlZCBob2xkZXIgZm9y
IGFuIG9iamVjdCB0aGF0IGlzCisgICAgLy8gMSkgaGVsZCBieSBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzCisgICAgLy8gMikgaW50ZXJlc3RlZCBhYm91dCB3aGVuIHRoZSBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIGNvbm5lY3Rpb24gc3RvcHMuCisgICAgLy8gVXNlZnVsIG1vc3RseSBmb3Ig
Y3Jvc3MtdGhyZWFkIHJlZmVyZW5jZSBjb3VudGVkIG9iamVjdHMuIFVwb24gZGlzY29ubmVjdGlu
ZywgdGhlIG9iamVjdCByZWNlaXZlcworICAgIC8vIHRoZSByZWZlcmVuY2UgdXNlZCBieSB0aGUg
aG9sZGVyIHRvIGhvbGQgdGhlIG9iamVjdCwgcHJvdmluZyBhIG5vbi10cmFzaGluZyBkZXN0cnVj
dGlvbiBiZWhhdmlvciBmb3IKKyAgICAvLyBwb3N0aW5nIGEgcHJvdGVjdCByZWYgYWxvbmcgdGhl
IHBvdGVudGlhbCBjbGVhbnVwIHRhc2sgZm9yIHNwZWNpZmljLCBsaW1pdGVkIGNhc2VzLgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY2xhc3MgU2NvcGVkRGlzY29ubmVjdCB7CisgICAg
cHVibGljOgorICAgICAgICBTY29wZWREaXNjb25uZWN0KCkgPSBkZWZhdWx0OworICAgICAgICBT
Y29wZWREaXNjb25uZWN0KFJlZjxUPiYmIG9iamVjdCkKKyAgICAgICAgICAgIDogbV9vYmplY3Qo
V1RGTW92ZShvYmplY3QpKQorICAgICAgICB7CisgICAgICAgICAgICBtX29iamVjdC0+Y29ubmVj
dFdlYlByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgU2NvcGVkRGlzY29u
bmVjdChTY29wZWREaXNjb25uZWN0JiYgb3RoZXIpCisgICAgICAgICAgICA6IG1fb2JqZWN0KHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51bGxwdHIpKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgU2NvcGVkRGlzY29ubmVjdCYgb3BlcmF0b3I9KFNjb3BlZERpc2Nvbm5lY3Qm
JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7Cisg
ICAgICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51bGxwdHIpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIH5TY29wZWREaXNjb25uZWN0
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgfQorICAgICAgICB2
b2lkIHJlc2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX29iamVjdCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX29iamVjdC0+ZGlzY29ubmVjdFdlYlBy
b2Nlc3NDb25uZWN0aW9uKG1fb2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9Cisg
ICAgcHJpdmF0ZToKKyAgICAgICAgUmVmUHRyPFQ+IG1fb2JqZWN0OworICAgIH07CiAgICAgUmVm
UHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CkBAIC0xODEsOCArMjIxLDggQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7
Ci0gICAgUmVmPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9h
dWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyOwotICAgIFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CisgICAg
U2NvcGVkRGlzY29ubmVjdDxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXI+IG1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcjsKKyAgICBTY29wZWREaXNjb25uZWN0PFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcjsKICNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXI7CiAjZW5kaWYKQEAgLTE5MywxNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBjbGFz
cyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdy
YXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwotICAgICAgICB+UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgfTsKLQot
ICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdy
YXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgU2NvcGVkRGlzY29ubmVjdDxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPj47CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNYXA7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHVzaW5nIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCmluZGV4IGIwYWMzNTg2YjAyNDliNGFiZTFlNGZjYmNlNzNlOWQ4ZmE4NjViNDUuLjNi
YzMzOWJlMjMxYzg1MDNmMDNiYmQwYzBiYzVhNjI3YThhY2RhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogI2RlZmluZSBURVJNSU5BVEVfV0VCX1BST0NF
U1NfV0lUSF9NRVNTQUdFKG1lc3NhZ2UpIFwKICAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJS
ZXF1ZXN0aW5nIHRlcm1pbmF0aW9uIG9mIHdlYiBwcm9jZXNzICUiIFBSSXU2NCAiIGZvciByZWFz
b246ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndl
YlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgI21lc3NhZ2UpOyBcCi0gICAgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT50ZXJtaW5hdGVXZWJQcm9jZXNzKCk7CisgICAgdGVybWlu
YXRlV2ViUHJvY2VzcygpOwogCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uLCBtZXNz
YWdlKSBkbyB7IFwKICAgICBpZiAoVU5MSUtFTFkoIShhc3NlcnRpb24pKSkgeyBcCkBAIC02OCwz
MiArNjgsMzcgQEAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm8KIAogUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAg
IDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQg
d29yayBxdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXNl
ckludGVyYWN0aXZlKSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICwgbV9jb25uZWN0aW9uKG1ha2VSZWYoZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkpKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9y
ZShXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkKKyAgICAsIG1fcmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpKSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY29ubmVjdGlvbigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dvcmtRdWV1
ZSwgdGhpcywgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAot
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKQorUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9u
KCkKIHsKLSAgICAvLyBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUgUmVzb3VyY2VDYWNoZSBvbiB0
aGUgV29ya1F1ZXVlIHNpbmNlIGl0IGdldHMgcG9wdWxhdGVkIG9uIHRoZSBXb3JrUXVldWUuCi0g
ICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hlID0gV1RGTW92ZSht
X3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOworICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2Fn
ZVJlY2VpdmVRdWV1ZShtX3dvcmtRdWV1ZSwgKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlz
Y29ubmVjdCgpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5lY3RXZWJQcm9j
ZXNzQ29ubmVjdGlvbihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJiByZWZGcm9tQ29ubmVj
dGlvbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgLy8gVGhlIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQgZGVzdHJ1Y3RvciB3b24ndCBiZSBjYWxsZWQgdW50aWwgZGlz
Y29ubmVjdCgpIGlzIGNhbGxlZCBhbmQgd2UgdW5yZWdpc3RlciBvdXJzZWx2ZXMgYXMgYSBXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIgYmVjYXVzZQotICAgIC8vIHRoZSBJUEM6OkNvbm5lY3Rpb24g
cmVmcyBpdHMgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy4KLSAgICBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICAvLyBUaGUgYmVsb3cgY2xlYW51cCB0YXNrIGlzIHRoZSBsYXN0
IHRhc2sgdGhhdCB3aWxsIHJ1bi4gVGhlIHJlZiBndWFyYW50ZWVzIHRoYXQgdGhlIG5vbi1wcm90
ZWN0ZWQgdGFza3MgZWxzZXdoZXJlIGluIHRoZSBjb2RlCisgICAgLy8gaGF2ZSBhbiBhbGl2ZSBv
YmplY3QuCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShyZWZGcm9tQ29ubmVjdGlvbildIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRlc3Ryb3kg
dGhlIFJlc291cmNlQ2FjaGUgb24gdGhlIFdvcmtRdWV1ZSBzaW5jZSBpdCBnZXRzIHBvcHVsYXRl
ZCBvbiB0aGUgV29ya1F1ZXVlLgorICAgICAgICBXVEZNb3ZlKHByb3RlY3RlZFRoaXMtPm1fcmVt
b3RlUmVzb3VyY2VDYWNoZSk7CisgICAgfSk7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogewotICAg
IHJldHVybiAmbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisgICAg
cmV0dXJuIG1fY29ubmVjdGlvbi5wdHIoKTsKIH0KIAogdWludDY0X3QgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdApAQCAtMTA5LDEyICsx
MTQsMTcgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbShEaXNw
bGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgYXV0byYgbWVkaWFJdGVtID0gaXRlbS5nZXQ8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVG
b3JNZWRpYT4oKTsKLSAgICBhdXRvIHBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRpYUl0ZW0u
aWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXBsYXllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgbWVkaWFJdGVtLmRlc3Rp
bmF0aW9uKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Cisg
ICAgY2FsbE9uTWFpblJ1bkxvb3BBbmRXYWl0KFt3ZWFrUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkgPSBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LCAmY29udGV4dCwgJnJlc3Vs
dCwgJm1lZGlhSXRlbV0oKSB7CisgICAgICAgIGlmIChhdXRvKiByZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eSA9IHdlYWtSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5nZXQoKSkgewor
ICAgICAgICAgICAgYXV0byBwbGF5ZXIgPSByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS0+
bWVkaWFQbGF5ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBpZiAoIXBs
YXllcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb250ZXh0LnBhaW50
RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgICAg
ICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTQ4Miw2ICs0OTIs
MTkgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVS
TiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWMKICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
fQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoKQor
eworICAgIC8vIER1cmluZyB0aGUgY2FsbCB0aW1lLCB0aGUgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyBpcyBhbGl2ZSwgYmVjYXVzZQorICAgIC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgaXMg
b3duZWQgYnkgdGhlIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuIEhvd2V2ZXIsIGR1cmluZwor
ICAgIC8vIGNhbGwgdGltZSBvbiBtYWluIHRocmVhZCwgdGhlIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgbWlnaHQgYWxyZWFkeSBiZSBkZXN0cm95ZWQuCisgICAgLy8gV2UgY2Fubm90IGNhbGwg
ZnJvbSB0aGUgd29yayBxdWV1ZSwgc2luY2UgdGhlcmUgaXMgbm8gdGhyZWFkLXNhZmUgcmVmZXJl
bmNlIG5vciBpcyB0aGUKKyAgICAvLyBjYWxsIGl0c2VsZiB0aHJlYWQtc2FmZS4KKyAgICBjYWxs
T25NYWluUnVuTG9vcEFuZFdhaXQoW2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NdIHsKKyAgICAgICAgaWYgKGF1dG8qIGluc3RhbmNlID0gZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgICAgIGluc3RhbmNlLT50ZXJt
aW5hdGVXZWJQcm9jZXNzKCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXgg
NzVkOWUwYWE1MjQyNDI4Y2ViNjdmN2I0YjM1ZTRmNTgyMjA2NmNiZi4uOGQ5ZWRkZGU1MDBhZThj
MzQ5Mzc0ZWE2Mzg3MTkyMmQzZTUzZjZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC01OCwx
MSArNTgsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlOwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OwogCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCitj
bGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGZpbmFsCiAgICAgOiBwcml2YXRlIElQQzo6TWVz
c2FnZVNlbmRlcgotICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyCi0gICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50IHsKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAs
IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQKKyAg
ICAsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiB7
CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0
ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIs
IElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpOwpAQCAtNzksMTIg
KzgxLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb24pOwogCi0gICAgdm9pZCBkaXNjb25uZWN0
KCk7CisgICAgdm9pZCBjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICB2b2lkIGRp
c2Nvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4m
Jik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2VtYXBob3Jl
JiYpOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9j
YXRpb24pIG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3Qq
IGhhbmRsZUxvY2F0aW9uKSBmaW5hbDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JF
VFVSTiBkZWNvZGVBbmRDcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
dWludDhfdCogaGFuZGxlTG9jYXRpb24pCkBAIC0xMDIsMTIgKzEwNSwxMiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFs
RGVzdGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZSYsIEdQVVByb2Nlc3NXYWtldXBSZWFzb24pOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
LgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBv
dmVycmlkZTsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAg
ICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNv
cmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpA
QCAtMTIxLDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVBbGxGb250cygpOwog
ICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNz
KCk7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1dha2V1cEluZm9ybWF0aW9uIHsKICAgICAgICAgR1BV
UHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzOwpAQCAtMTQwLDExICsxNDQs
MTMgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwogICAgIFJl
bW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwotICAgIFJlZjxHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgUmVm
PElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAgIE9wdGlvbmFsPFBl
bmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9wZW5kaW5nV2FrZXVwSW5mbzsKICAgICBJUEM6OlNl
bWFwaG9yZSBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworICAgIFdlYWtQdHI8UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7
CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhMjRhMmFhYmUyNDViOTAzYTg5NzgwMzE1OWM1ZjNmZmE5
MzdmZGQuLjQ3YWU1YjU2YWFkYWMyNjZmMWVjZmFiYjNmMDlmODQzYmRiN2UyNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtNjMsNyArNjMsNiBAQCB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklkZW50
aWZpZXIgaWRlbgogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOwogICAgIEFTU0VSVCghbV9wcm94aWVz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAogICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJh
dGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uOwpAQCAtNzgsNyArNzcsNiBAQCB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklkZW50
aWZpZXIgaWRlbgogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVk
aWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJveGll
c0xvY2spOwogICAgIGlmIChhdXRvIHByb3h5ID0gbV9wcm94aWVzLnRha2UoaWRlbnRpZmllcikp
CiAgICAgICAgIHByb3h5LT5pbnZhbGlkYXRlKCk7CiB9CkBAIC0xODUsMTAgKzE4Myw4IEBAIHZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVTeW5jUGxheWVyTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mCiAgICAgICAgIHBsYXllci0+ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOwogfQogCi0vLyBNYXkgZ2V0IGNhbGxl
ZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgogUmVmUHRyPE1lZGlhUGxheWVyPiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6bWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5ZXJJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm94aWVz
TG9jayk7CiAgICAgYXV0byByZXN1bHRzID0gbV9wcm94aWVzLmZpbmQoaWRlbnRpZmllcik7CiAg
ICAgaWYgKHJlc3VsdHMgIT0gbV9wcm94aWVzLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0
cy0+dmFsdWUtPm1lZGlhUGxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4
IDIzN2FmOWI2ODAxMGM2MjQyOTY4ZWZkMGU0MGI1NGQ0OGQwZjQ1MDkuLmY3NmMzYmExZTI5YTdk
MDc0MTE1MThlMzFhNDE5YWEyM2E1NjIyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5o
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhUGxheWVySWRlbnRpZmllci5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ1LDYgKzQ0
LDcgQEAgc3RydWN0IFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uOwogCiBjbGFz
cyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eQogICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5PgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBM
b2dnZXJIZWxwZXIKICNlbmRpZgpAQCAtODcsNyArODcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYmKTsKICAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIGNv
bnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIExv
Y2sgbV9wcm94aWVzTG9jazsKICAgICBIYXNoTWFwPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+PiBtX3Byb3hpZXM7
CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFu
YWdlci5jcHAKaW5kZXggYmNiNGJhNWNiYmM0ZDM0NzA1OWRjZmU4YWI4ZmNiMThmZjVhZDJmZS4u
MmVmNDgzYTA4Y2M0NmI1ZDZkMTQ5YzI2Mjc1ZWIzNmJhYjg1YWE2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNs
dWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIgogI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0z
OCwyOSArMzksMjYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIAogUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlck1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJv
Y2VzcykKLSAgICA6IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpKQogICAgICwgbV9xdWV1ZShjb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdwdVByb2Nlc3MoKS5h
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclF1ZXVlKCkpCiB7Ci0gICAgbV9jb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIHRoaXMpOwotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCku
YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiB9CiAK
LVJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6flJlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcigpCi17Ci0gICAgbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpOwotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkucmVtb3Zl
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci19CitSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6On5SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpjbG9zZSgpCit2b2lkIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6Y29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9u
KCkKIHsKLSAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKLSAgICAgICAgbV9yZW5kZXJlcnMuY2xlYXIoKTsKLSAgICB9KTsKKyAgICBt
X2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUobV9xdWV1ZS5nZXQoKSwgKnRoaXMs
IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUo
bV9xdWV1ZS5nZXQoKSwgKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiB9CiAKLXZvaWQgUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpkaXNwYXRjaFRvVGhyZWFk
KEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUmVm
PFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4mJiByZWZGcm9tQ29u
bmVjdGlvbikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cmVmRnJvbUNvbm5lY3Rpb24pXSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcmVuZGVyZXJz
LmNsZWFyKCk7CisgICAgfSk7CiB9CiAKIGJvb2wgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJNYW5hZ2VyOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaAppbmRleCA5ZjBmNjUyZjY5MzYwMjAwODMzZWI4OWQ2
M2E0NmQxZWQ1ZWU5ZTk1Li5iNGU3YzkzMjUxMDM2YWM5ZDExZGE3NTJkZWE4YTYwMDNkNzQwMDNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
LmgKQEAgLTI5LDQ1ICsyOSw0MiBAQAogCiAjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUg
IkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAK
IG5hbWVzcGFjZSBJUEMgewotY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwog
Y2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI7CiAKLWNsYXNzIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgeworY2xhc3MgUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIGZpbmFsIDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
cHJvY2VzcykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIocHJvY2VzcykpOyB9CiAgICAgflJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlcigpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVuZGVyZXJN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsgfQogCi0gICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKTsgfQorICAgIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsg
fQogCi0gICAgdm9pZCBjbG9zZSgpOworICAgIHZvaWQgY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0
aW9uKCk7CisgICAgdm9pZCBkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4mJik7CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIAotICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhy
ZWFkTWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZv
aWQoKT4mJikgZmluYWw7Ci0KICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAgICAgdm9pZCBjcmVhdGVSZW5kZXJlcihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
cklkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmVyKEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySWRlbnRpZmllcik7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uOwogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgSGFzaE1hcDxBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4+IG1fcmVuZGVyZXJzOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IDYxYjg5MGRj
Nzg2N2MzM2IwMDVmMjJlOTNiYjFhZjQ3ZGRkM2IxN2MuLmUzNjkwMzA2NzBjMDc0NzBkMmFkZTc2
ZmIwZGExMzY4MDM0ODZiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcApAQCAtMzksMzIgKzM5LDI3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKQotICAgIDogbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgLCBtX2Nvbm5lY3Rpb24oZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jb25uZWN0aW9uKCkpCisgICAgOiBtX2Nvbm5lY3Rpb24oZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkpCiAgICAgLCBtX3F1ZXVlKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuZ3B1UHJvY2VzcygpLnZpZGVvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyUXVldWUo
KSkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFRocmVh
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwotICAgIG1fY29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IHRoaXMpOwogfQorUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6flJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLVJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6On5SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyKCkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjo6Y29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY29ubmVjdGlvbigpLnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
OwotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkucmVtb3ZlVGhyZWFk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fY29ubmVjdGlvbi0+YWRkTWVz
c2FnZVJlY2VpdmVRdWV1ZShtX3F1ZXVlLmdldCgpLCAqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUobV9xdWV1ZS5nZXQoKSwgKnRoaXMsIE1l
c3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpOwogfQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI6OmNsb3NlKCkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewotICAgIGRpc3BhdGNo
VG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtsYXllcnMgPSBXVEZNb3ZlKG1fbGF5ZXJzKV0geyB9KTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZXM6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZXM6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Cisg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21Db25u
ZWN0aW9uKV0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtsYXllcnMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMtPm1fbGF5ZXJzKV0geyB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykKLXsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKGNh
bGxiYWNrKSk7Ci19Ci0KIGJvb2wgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIGlmICghZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpCkBAIC04
Miw3ICs3Nyw3IEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6
Y3JlYXRlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCiAgICAgICAgIGF1dG8gbGF5ZXIg
PSBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nv
bm5lY3Rpb24uY29weVJlZigpKTsKICAgICAgICAgYXV0byYgbGF5ZXJSZWZlcmVuY2UgPSAqbGF5
ZXI7CiAgICAgICAgIGxheWVyUmVmZXJlbmNlLmluaXRpYWxpemUoaGlkZVJvb3RMYXllciwgc2l6
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBs
YXllcklkKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0g
V1RGTW92ZShsYXllcklkKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVy
KSwgbGF5ZXJJZCA9IFdURk1vdmUobGF5ZXJJZCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFtX2xheWVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgICAgICAgICAg
ICAgbV9sYXllcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUobGF5ZXIpKTsKICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGxheWVySWQpKTsKQEAgLTk0LDcgKzg5LDcgQEAgdm9pZCBS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIKIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlcjo6cmVsZWFzZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGRpc3BhdGNo
VG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBp
ZGVudGlmaWVyXSB7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmllcl0gewogICAgICAgICAgICAg
QVNTRVJUKG1fbGF5ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2xheWVyID0gbV9sYXllcnMudGFrZShpZGVudGlmaWVyKV0geyB9KTsKICAg
ICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCmlu
ZGV4IGEzMjRhZWM5NTc0MWFhNzg2Y2E0YjAwMjNmNjkyYTE5NTcxMTQ1NjAuLjg5MjhmY2ZhMjU0
ZjA3OWFlNDBmNzQ5ZWUxOGNlMGNkZjE3NmJmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5oCkBAIC00NiwyMCArNDYsMTggQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOwogCi1jbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyIGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJl
Y2VpdmVyUmVmQ291bnRlZCB7CitjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyIGZpbmFsIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoY29ubmVjdGlvbikpOyB9CiAgICAgflJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKTsKIAotICAgIHZvaWQgY2xvc2UoKTsK
KyAgICB2b2lkIGNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIHZvaWQgZGlzY29u
bmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyPiYmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIAotICAg
IC8vIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaXNw
YXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7Ci0KICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC02OCw3ICs2Niw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjcmVhdGVMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBi
b29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUsIExheWVyQ3JlYXRpb25DYWxsYmFj
ayk7CiAgICAgdm9pZCByZWxlYXNlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRp
Zmllcik7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJl
ZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgSGFzaE1hcDxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPj4gbV9sYXllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDkxYWU2ZmE3NzQ3Y2E0YzQ2ZDM0Mzk5ODNhOTM5MjAxYjQyMDZjYjYuLmU4YjkzNTJl
MjliMTY0MzMyY2ExMzdmODQ3MTJkYjBkYTdkMTQ4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiRnVuY3Rpb25EaXNwYXRj
aGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBAIC00MDUsNiArNDA2LDc0IEBA
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFRo
cmVhZE1lc3NhZ2VSZWNlaXZlciYgdGhyCiAgICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShy
ZXBseUVuY29kZXIpKTsKIH0KIAorbmFtZXNwYWNlIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
RGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBmaWx0ZXJXaXRoTWVzc2FnZVJlY2VpdmVR
dWV1ZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBUJiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFt
ZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIERlcXVlPHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPj4mJiBpbmNvbWluZ01lc3NhZ2VzKQoreworICAgIERlcXVlPHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPj4gcmVzdDsKKyAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBpbmNvbWlu
Z01lc3NhZ2VzKSB7CisgICAgICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gcmVjZWl2ZXJOYW1lICYmIChtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRp
b25JRCB8fCAhZGVzdGluYXRpb25JRCkpCisgICAgICAgICAgICByZWNlaXZlUXVldWUuZW5xdWV1
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJlc3QuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICByZXR1
cm4gcmVzdDsKK30KK30KKwordm9pZCBDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVjZWl2ZVF1ZXVl
KE1lc3NhZ2VSZWNlaXZlUXVldWUmIHJlY2VpdmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0
ZXgpOworICAgIG1faW5jb21pbmdNZXNzYWdlcyA9IGZpbHRlcldpdGhNZXNzYWdlUmVjZWl2ZVF1
ZXVlKCp0aGlzLCByZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgV1RG
TW92ZShtX2luY29taW5nTWVzc2FnZXMpKTsKKyAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKHJlY2Vp
dmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKK30KKwordm9pZCBDb25uZWN0
aW9uOjphZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKEZ1bmN0aW9uRGlzcGF0Y2hlciYgZGlzcGF0Y2hl
ciwgTWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlciwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIGF1dG8gcmVjZWl2ZVF1ZXVlID0gbWFrZVVuaXF1ZTxGdW5jdGlvbkRpc3BhdGNoZXJN
ZXNzYWdlUmVjZWl2ZVF1ZXVlPihkaXNwYXRjaGVyLCByZWNlaXZlcik7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgbV9pbmNvbWluZ01l
c3NhZ2VzID0gZmlsdGVyV2l0aE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsICpyZWNlaXZlUXVl
dWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgV1RGTW92ZShtX2luY29taW5nTWVzc2Fn
ZXMpKTsKKyAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpyZW1vdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011
dGV4KTsKKyAgICAgICAgbV9yZWNlaXZlUXVldWVzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hN
ZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyLCBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBkZWNvZGVyKQoreworICAgIGlmICghZGVjb2Rlci0+
aXNTeW5jTWVzc2FnZSgpKSB7CisgICAgICAgIG1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlTWVz
c2FnZSgqdGhpcywgKmRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3luY1Jl
cXVlc3RJRCkgfHwgIXN5bmNSZXF1ZXN0SUQpIHsKKyAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4g
aW52YWxpZCBzeW5jIG1lc3NhZ2UuCisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcy4KKyAg
ICAgICAgZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6
U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisKKyAgICAvLyBIYW5kIG9mZiBib3Ro
IHRoZSBkZWNvZGVyIGFuZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2
ZXIuCisgICAgbWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgKmRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CisKKyAgICAvLyBGSVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2Fz
IGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBTeW5jTWVzc2FnZUVycm9yLgorICAgIEFT
U0VSVChkZWNvZGVyLT5pc1ZhbGlkKCkpOworCisgICAgaWYgKHJlcGx5RW5jb2RlcikKKyAgICAg
ICAgc2VuZFN5bmNSZXBseShXVEZNb3ZlKHJlcGx5RW5jb2RlcikpOworfQorCiB2b2lkIENvbm5l
Y3Rpb246OnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soRGlkQ2xvc2VP
bkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIW1f
aXNDb25uZWN0ZWQpOwpAQCAtNzUxLDYgKzgyMCwxNSBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nl
c3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAg
aWYgKGRpc3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIobWVzc2FnZSkpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgcHJhY3RpY2FsbHkgdGhlIHNhbWUgbXV0
ZXgsIHNvIG1heWJlIHRoZXkgY291bGQgYmUgbWVyZ2VkLgorICAgIGF1dG8gd2FpdEZvck1lc3Nh
Z2VzTG9ja2VyID0gaG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKKworICAgIGF1dG8g
aW5jb21pbmdNZXNzYWdlc0xvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4
KTsKKyAgICBpZiAoYXV0byogcmVjZWl2ZVF1ZXVlID0gbV9yZWNlaXZlUXVldWVzLmdldCgqbWVz
c2FnZSkpIHsKKyAgICAgICAgcmVjZWl2ZVF1ZXVlLT5lbnF1ZXVlTWVzc2FnZSgqdGhpcywgV1RG
TW92ZShtZXNzYWdlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobWVzc2Fn
ZS0+aXNTeW5jTWVzc2FnZSgpKSB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9p
bmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CiAKQEAgLTc2MSwzOCArODM5LDM0IEBA
IHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gbWVzc2FnZSkKICAgICB9CiAKICAgICAvLyBDaGVjayBpZiB3ZSdyZSB3YWl0aW5n
IGZvciB0aGlzIG1lc3NhZ2UsIG9yIGlmIHdlIG5lZWQgdG8gaW50ZXJydXB0IHdhaXRpbmcgZHVl
IHRvIGFuIGluY29taW5nIHN5bmMgbWVzc2FnZS4KLSAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKLQotICAgICAgICBpZiAobV93YWl0
aW5nRm9yTWVzc2FnZSAmJiAhbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlcikgewotICAgICAg
ICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VOYW1lID09IG1lc3NhZ2UtPm1l
c3NhZ2VOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVzdGluYXRpb25JRCA9PSBtZXNz
YWdlLT5kZXN0aW5hdGlvbklEKCkpIHsKLSAgICAgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNz
YWdlLT5kZWNvZGVyID0gV1RGTW92ZShtZXNzYWdlKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
bV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7Ci0gICAgICAgICAgICAgICAgbV93YWl0Rm9y
TWVzc2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT53YWl0
Rm9yT3B0aW9ucy5jb250YWlucyhXYWl0Rm9yT3B0aW9uOjpEaXNwYXRjaEluY29taW5nU3luY01l
c3NhZ2VzV2hpbGVXYWl0aW5nKSAmJiBtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkgJiYgU3luY01l
c3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkucHJvY2Vzc0luY29taW5nTWVzc2FnZSgqdGhpcywgbWVz
c2FnZSkpIHsKLSAgICAgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlm
eU9uZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPndhaXRGb3JPcHRpb25zLmNvbnRhaW5zKFdh
aXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcykgJiYgbWVz
c2FnZS0+aXNTeW5jTWVzc2FnZSgpKSB7Ci0gICAgICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVz
c2FnZS0+bWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
bV93YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgICAgICAgICBl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZSAmJiAh
bV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlcikgeworICAgICAgICBpZiAobV93YWl0aW5nRm9y
TWVzc2FnZS0+bWVzc2FnZU5hbWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRp
bmdGb3JNZXNzYWdlLT5kZXN0aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkg
eworICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlciA9IFdURk1vdmUobWVz
c2FnZSk7CisgICAgICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7
CisgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBp
cyBhIHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNob3VsZCBiZSBkaXNw
YXRjaGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgotICAgICAgICAvLyBhIHN5bmMgcmVwbHkuIElm
IGl0IGlzLCBhbmQgd2UncmUgd2FpdGluZyBmb3IgYSBzeW5jIHJlcGx5IHRoaXMgbWVzc2FnZSBu
ZWVkcyB0byBiZSBkaXNwYXRjaGVkLgotICAgICAgICAvLyBJZiB3ZSBkb24ndCB3ZSdsbCBlbmQg
dXAgd2l0aCBhIGRlYWRsb2NrIHdoZXJlIGJvdGggc3luYyBtZXNzYWdlIHNlbmRlcnMgYXJlIHN0
dWNrIHdhaXRpbmcgZm9yIGEgcmVwbHkuCi0gICAgICAgIGlmIChTeW5jTWVzc2FnZVN0YXRlOjpz
aW5nbGV0b24oKS5wcm9jZXNzSW5jb21pbmdNZXNzYWdlKCp0aGlzLCBtZXNzYWdlKSkKKyAgICAg
ICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPndhaXRGb3JPcHRpb25zLmNvbnRhaW5zKFdhaXRG
b3JPcHRpb246OkRpc3BhdGNoSW5jb21pbmdTeW5jTWVzc2FnZXNXaGlsZVdhaXRpbmcpICYmIG1l
c3NhZ2UtPmlzU3luY01lc3NhZ2UoKSAmJiBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5w
cm9jZXNzSW5jb21pbmdNZXNzYWdlKCp0aGlzLCBtZXNzYWdlKSkgeworICAgICAgICAgICAgbV93
YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogCi0gICAgICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShtZXNz
YWdlKSk7CisgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT53YWl0Rm9yT3B0aW9ucy5j
b250YWlucyhXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2
ZXMpICYmIG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgeworICAgICAgICAgICAgbV93YWl0aW5n
Rm9yTWVzc2FnZS0+bWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IHRydWU7CisgICAgICAgICAg
ICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgZW5x
dWV1ZUluY29taW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogICAgIH0KKworICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBzeW5jIG1l
c3NhZ2Ugb3IgaWYgaXQncyBhIG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgZGlzcGF0Y2hlZCBldmVu
IHdoZW4gd2FpdGluZyBmb3IKKyAgICAvLyBhIHN5bmMgcmVwbHkuIElmIGl0IGlzLCBhbmQgd2Un
cmUgd2FpdGluZyBmb3IgYSBzeW5jIHJlcGx5IHRoaXMgbWVzc2FnZSBuZWVkcyB0byBiZSBkaXNw
YXRjaGVkLgorICAgIC8vIElmIHdlIGRvbid0IHdlJ2xsIGVuZCB1cCB3aXRoIGEgZGVhZGxvY2sg
d2hlcmUgYm90aCBzeW5jIG1lc3NhZ2Ugc2VuZGVycyBhcmUgc3R1Y2sgd2FpdGluZyBmb3IgYSBy
ZXBseS4KKyAgICBpZiAoU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkucHJvY2Vzc0luY29t
aW5nTWVzc2FnZSgqdGhpcywgbWVzc2FnZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGVucXVl
dWVJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHVpbnQ2NF90IENvbm5l
Y3Rpb246Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2
b2lkICgpPiYmIGNhbGxiYWNrKQpAQCAtOTc4LDkgKzEwNTIsOCBAQCB2b2lkIENvbm5lY3Rpb246
OmRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUlu
Y29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gaW5jb21pbmdNZXNzYWdlKQog
eworICAgIEFTU0VSVChtX2luY29taW5nTWVzc2FnZXNNdXRleC5pc0hlbGQoKSk7CiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsK
LQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBpZiAobV93YXNLaWxsZWQpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMTE2LDkgKzExODksMTcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNw
YXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgLy8gVGhl
IG1lc3NhZ2UgbWlnaHQgaGF2ZSBhbHJlYWR5IGJlZW4gZGlzcGF0Y2hlZCBmcm9tIHRoZSBJUEMg
V29ya1F1ZXVlIHRvIHRoZSBtYWluIHRocmVhZCBieSB0aGUgdGltZSB0aGUKICAgICAvLyBjbGll
bnQgcmVnaXN0ZXJzIGl0c2VsZiBhcyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVG8gYWRk
cmVzcyB0aGlzLCB3ZSBjaGVjayBhZ2FpbiBmb3IgbWVzc2FnZXMgcmVjZWl2ZXJzCiAgICAgLy8g
b25jZSB0aGUgbWVzc2FnZSBhcnJpdmVzIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAvLyBGSVhN
RTogVGhpcyBzdGlsbCBzdWZmZXJzIGZyb20gbWVzc2FnZSByZW9yZGVyaW5nIGJ1ZyB3aGVyZSB0
aGUgbWVzc2FnZQorICAgIC8vIGJlbG93IG1pZ2h0IGJlIGRpc3BhdGNoZWQgYWZ0ZXIgYSBtZXNz
YWdlIHRoYXQgaXMgYmVpbmcgZGlzcGF0Y2hlZCBmcm9tCisgICAgLy8gdGhlIGluY29taW5nIG1l
c3NhZ2UgdGhyZWFkLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBieSBjaGFuZ2luZyB0aGUKKyAgICAv
LyBjYWxsc2l0ZXMgdG8gdXNlIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKS4K
ICAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcihtZXNzYWdlKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IEhlcmUgdGhlIFRocmVhZE1lc3NhZ2VSZWNl
aXZlciBpcyBtaXNzaW5nIHRoZSBhYm92ZSBkaXNwYXRjaC4KKyAgICAvLyBGSVhNRTogSGVyZSB0
aGUgVGhyZWFkTWVzc2FnZVJlY2VpdmVyIHdvdWxkIGJlIHN1ZmZlcmluZyBmcm9tIHRoZSBhYm92
ZQorICAgIC8vIG1lc3NhZ2UgcmVvcmRlcmluZyBidWcuCisKICAgICBpZiAobWVzc2FnZS0+c2hv
dWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCkpIHsKICAgICAgICAgaWYgKCFt
X2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAgICAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdl
TmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA2MTAz
YzhkODEwZDdjNzgyYWNmZGNjMzRhM2I2YTJiOGZkNjYxMDBlLi42YWI5NDRlYzc5M2ExMmQ0NTNj
Y2M0YzNhZTMwMzgwODc4MjMwNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUg
IkVuY29kZXIuaCIKICNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CkBAIC0yMjgsNiArMjI5LDE1
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5h
bWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciosIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsK
ICAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKIAorICAgIC8vIEFkZHMgYSBtZXNzYWdlIHJlY2VpdmUg
cXVldWUuIFRoZSBjbGllbnQgc2hvdWxkIG1ha2Ugc3VyZSB0aGUgaW5zdGFuY2UgaXMgcmVtb3Zl
ZCBiZWZvcmUgaXQgZ29lcworICAgIC8vIG91dCBvZiBzY29wZS4KKyAgICB2b2lkIGFkZE1lc3Nh
Z2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCA9IDApOworICAgIC8vIEFkZCBzIGEgbWVzc2FnZSByZWNlaXZlIHF1
ZXVlIHRoYXQgZGlzcGF0Y2hlcyB0byB0aGUgTWVzc2FnZVJlY2VpdmVyIHZpYSB0aGUgRnVuY3Rp
b25EaXNwYXRjaGVyLgorICAgIC8vIFRoZSBjbGllbnQgc2hvdWxkIG1ha2Ugc3VyZSBpbnN0YW5j
ZSBpcyByZW1vdmVkIGJlZm9yZSBNZXNzYWdlUmVjZWl2ZXIgYW5kIEZ1bmN0aW9uRGlzcGF0Y2hl
ciBnbworICAgIC8vIG91dCBvZiBzY29wZS4gVGhlIGRpc3BhdGNoIGZ1bmN0aW9uIHdpbGwgaG9s
ZCB0aGUgY29ubmVjdGlvbiBvYmplY3QgYWxpdmUuCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2
ZVF1ZXVlKEZ1bmN0aW9uRGlzcGF0Y2hlciYsIE1lc3NhZ2VSZWNlaXZlciYsIFJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZShSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKwog
ICAgIGJvb2wgb3BlbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQgbWFya0N1
cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCk7CkBAIC0zMDcsNiArMzE3LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmc7IH0KICNlbmRpZgogCisg
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOwogcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKElk
ZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKElkZW50aWZpZXIpOwpAQCAtNDA4LDYgKzQxOSw3IEBAIHByaXZhdGU6CiAgICAgTG9j
ayBtX2luY29taW5nTWVzc2FnZXNNdXRleDsKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4+IG1faW5jb21pbmdNZXNzYWdlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZXNU
aHJvdHRsZXI+IG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlcjsKKyAgICBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwIG1fcmVjZWl2ZVF1ZXVlczsKIAogICAgIC8vIE91dGdvaW5nIG1lc3NhZ2VzLgog
ICAgIExvY2sgbV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9GdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9GdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ2NmEzMmNmOTllODUwMzUwZWEwYzAzMzlhODc2NGZk
NjgwMTQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Z1
bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVl
dWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNv
ZGVyOworCitjbGFzcyBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlIGZpbmFs
IDogcHVibGljIE1lc3NhZ2VSZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUo
RnVuY3Rpb25EaXNwYXRjaGVyJiBkaXNwYXRjaGVyLCBNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVy
KQorICAgICAgICA6IG1fZGlzcGF0Y2hlcihkaXNwYXRjaGVyKQorICAgICAgICAsIG1fcmVjZWl2
ZXIocmVjZWl2ZXIpCisgICAgeworICAgIH0KKyAgICB+RnVuY3Rpb25EaXNwYXRjaGVyTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSgpIGZpbmFsID0gZGVmYXVsdDsKKworICAgIHZvaWQgZW5xdWV1ZU1lc3Nh
Z2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgbWVz
c2FnZSkgZmluYWwKKyAgICB7CisgICAgICAgIG1fZGlzcGF0Y2hlci5kaXNwYXRjaChbY29ubmVj
dGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCAm
cmVjZWl2ZXIgPSBtX3JlY2VpdmVyXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29ubmVjdGlv
bi0+ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKHJlY2VpdmVyLCBXVEZNb3ZlKG1lc3Nh
Z2UpKTsKKyAgICAgICAgfSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBGdW5jdGlvbkRpc3BhdGNo
ZXImIG1fZGlzcGF0Y2hlcjsKKyAgICBNZXNzYWdlUmVjZWl2ZXImIG1fcmVjZWl2ZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VSZWNlaXZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWMzY2U5YWYyZmQyNjk1ZDU1YWQyZjA2
NjJhNThmMWEwODMyNmM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIElQQyB7CisK
K2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworCitjbGFzcyBNZXNzYWdlUmVjZWl2
ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZXNzYWdlUmVjZWl2ZVF1ZXVlKCkgPSBk
ZWZhdWx0OworICAgIC8vIENhbGxlZCB3aXRoIENvbm5lY3Rpb24gaW5jb21pbmcgbWVzc2FnZSBs
b2NrIGhlbGQuCisgICAgLy8gTWF5IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisg
ICAgdmlydHVhbCB2b2lkIGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4mJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ2ZmUwZTgwNDUzOWRmZmYxNTVmZGNhZjQwZTNhMDhiMDUwOWIyYmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKKworbmFtZXNwYWNlIElQ
QyB7CisKK3ZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbChTdG9yZVR5cGUmJiBx
dWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkK
K3sKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJl
Y2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgIEFTU0VSVCghbV9xdWV1ZXMuY29udGFp
bnMoa2V5KSk7CisgICAgbV9xdWV1ZXMuYWRkKGtleSwgV1RGTW92ZShxdWV1ZSkpOworfQorCit2
b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShSZWNlaXZlck5hbWUgcmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIGF1dG8ga2V5ID0gc3RkOjptYWtl
X3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7
CisgICAgQVNTRVJUKG1fcXVldWVzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcXVldWVzLnJlbW92
ZShrZXkpOworfQorCitNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
OjpnZXQoY29uc3QgRGVjb2RlciYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBpZiAobV9xdWV1ZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGtleSA9IHN0ZDo6
bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSwgMCk7CisgICAgYXV0byBpdCA9IG1fcXVldWVzLmZpbmQoa2V5KTsKKyAgICBpZiAoaXQg
PT0gbV9xdWV1ZXMuZW5kKCkpIHsKKyAgICAgICAga2V5LnNlY29uZCA9IG1lc3NhZ2UuZGVzdGlu
YXRpb25JRCgpOworICAgICAgICBpZiAoa2V5LnNlY29uZCkKKyAgICAgICAgICAgIGl0ID0gbV9x
dWV1ZXMuZmluZChrZXkpOworICAgIH0KKyAgICBpZiAoaXQgPT0gbV9xdWV1ZXMuZW5kKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBXVEY6OnZpc2l0KAorICAgICAgICBX
VEY6Om1ha2VWaXNpdG9yKAorICAgICAgICAgICAgW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPE1l
c3NhZ2VSZWNlaXZlUXVldWU+JiBxdWV1ZSkgeyByZXR1cm4gcXVldWUuZ2V0KCk7IH0sCisgICAg
ICAgICAgICBbXShNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBxdWV1ZSkgeyByZXR1cm4gcXVldWU7IH0K
KyAgICAgICAgKSwgaXQtPnZhbHVlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNDBmZjM1
YzhlYzc5MjBmMDVlZmJjZDI3MjVjMDdhYjdjY2U0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBJUEMgeworCitlbnVt
IGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3Q7CisKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAgeworcHVibGljOgorICAgIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAoKSA9IGRlZmF1bHQ7
CisgICAgfk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkTWVzc2FnZShjb25zdCBEZWNvZGVyJiBtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFF1ZXVlTWFwOjppc1ZhbGlkS2V5KHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2FnZS5kZXN0aW5h
dGlvbklEKCkpKTsKKyAgICB9CisKKyAgICAvLyBBZGRzIGEgd2lsZGNhcmQgZmlsdGVyIGlmIGRl
c3RpbmF0aW9uSUQgPT0gMC4KKyAgICB2b2lkIGFkZChNZXNzYWdlUmVjZWl2ZVF1ZXVlJiBxdWV1
ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkgeyAg
YWRkSW1wbChTdG9yZVR5cGUoJnF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsg
fQorICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYmIHF1
ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKSB7
IGFkZEltcGwoU3RvcmVUeXBlKFdURk1vdmUocXVldWUpKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsgfQorICAgIHZvaWQgcmVtb3ZlKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CisKKyAgICBNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBnZXQoY29uc3QgRGVjb2RlciYp
IGNvbnN0OworcHJpdmF0ZToKKyAgICB1c2luZyBTdG9yZVR5cGUgPSBWYXJpYW50PE1lc3NhZ2VS
ZWNlaXZlUXVldWUqLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVRdWV1ZT4+OworICAg
IHZvaWQgYWRkSW1wbChTdG9yZVR5cGUmJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKTsKKyAgICB1c2luZyBRdWV1ZU1hcCA9IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3Qs
IHVpbnQ2NF90PiwgU3RvcmVUeXBlPjsKKyAgICBRdWV1ZU1hcCBtX3F1ZXVlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNmQ0ZWE1MzQ4YzdkYWVmNzUxMDM4OTBi
NTA5YzA3MjA5OTMxYTMxNC4uOWJkNzA0MTlhZTY4ODliYjZlOWM5M2U0NTU5MDc1YjZmMTA4NDBi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC0xNDMsNiArMTQzLDcgQEAgUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZv
cm0vSVBDL0lQQ1NlbWFwaG9yZS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5k
aW5nLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIEBuby11bmlm
eQogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2UwMDcyYzNiNjgwODRkNmJjMjYyNmI5
MDVkMzAyZDcwMGVmZTIxOS4uM2U1NjIyYjYwMjkyZDkzYzU4OTg0ZjE2NWMxODU2MTM1OGZjMjQ4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzI3LDYgKzEzMjcsMTAgQEAKIAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4
MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3Rl
bmN5VXRpbHMuaCAqLzsgfTsKIAkJN0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVm
ZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKKwkJN0I0
ODNGMUYyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFCMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmggKi87IH07CisJCTdCNDgzRjIwMjVD
RERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyog
TWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OworCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYg
LyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcC5jcHAgKi87IH07CisJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBG
dW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyog
RnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QzA2NUYy
QzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFD
OENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87
IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3
M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0
OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICov
OyB9OwpAQCAtNDUxOCw2ICs0NTIyLDEwIEBACiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAv
KiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8q
IFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGls
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMURCMjY1MjU2NjhDRTAwMDBF
MjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4M0Yx
QjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VS
ZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I0ODNGMUQyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBGdW5j
dGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUy
NTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4OTksNiArNjkw
Nyw3IEBACiAJCQkJQkMwMzJEQTAxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuaCAqLywKIAkJ
CQk5QkQ4QUI0OTI1ODIwRTUyMDA1Mzg2RjggLyogRm9udFJlZmVyZW5jZS5oICovLAogCQkJCTQx
NTFFNUMzMUZCQjkwQTkwMEU0N0UyRCAvKiBGb3JtRGF0YVJlZmVyZW5jZS5oICovLAorCQkJCTdC
NDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggKi8sCiAJCQkJQzBDRTcyQUMxMjQ3RTc4RDAwQkMwRUM0IC8qIEhhbmRsZU1lc3Nh
Z2UuaCAqLywKIAkJCQkxQzlBRjM2MTI0MTM0RDIzMDBEM0VDMDIgLyogSW1hZ2VEYXRhUmVmZXJl
bmNlLmggKi8sCiAJCQkJQTMxRjYwQTMyNUNDN0RCODAwQUYxNEY0IC8qIElQQ1NlbWFwaG9yZS5j
cHAgKi8sCkBAIC02OTA3LDYgKzY5MTYsOSBAQAogCQkJCTlCNDc5MDhFMjUzMTUxQ0MwMEVDMTFB
QiAvKiBKU0lQQ0JpbmRpbmcuaCAqLywKIAkJCQk5QjQ3OTA4QzI1MzE0RDgzMDBFQzExQUIgLyog
TWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmggKi8sCiAJCQkJMUFDNEM4MjgxNkI4NzZBOTAw
NjlEQ0NEIC8qIE1lc3NhZ2VGbGFncy5oICovLAorCQkJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4
NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8sCisJCQkJN0I0ODNGMUQyNUNEREE5QjAwMTIw
NDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovLAorCQkJCTdCNDgzRjFCMjVDRERB
OUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmggKi8sCiAJCQkJMUEzRUVEMTEx
NjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oICovLAogCQkJCTFBM0VFRDBDMTYx
QTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovLAogCQkJCTFBM0VFRDBE
MTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCAqLywKQEAgLTExNjE4LDYg
KzExNjMwLDcgQEAKIAkJCQlDRDc4RTExNTFEQjdEN0VEMDAxNEEyREUgLyogRnVsbHNjcmVlbkNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUQyRUEyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1
bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBOTNEQjAy
MkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBGdW5jdGlv
bkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVC
RTFCMzFENTkwMkREMDBERDdDNjggLyogR2FtZXBhZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMTc3NTNGMTE4QkFCRjAwMDdEOUU5QSAvKiBHZW5lcmljQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlFQzUzMkEzMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlvbklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTE3MDUsNiArMTE3MTgsOCBAQAogCQkJCTUxOTMzREVG
MTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
QjQ3OTA4RDI1MzE0RDgzMDBFQzExQUIgLyogTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUM0QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZs
YWdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjQ4M0YyMDI1Q0REQTlDMDAxMjA0ODYgLyogTWVz
c2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I0ODNGMUYyNUNEREE5QzAw
MTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
M0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBM0VFRDBGMTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQUIwMzdBMTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2Vu
ZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNjkwLDYgKzEzNzA1LDcgQEAKIAkJCQkwN0UxOUVG
QjIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFERjI5RTY0MjU3RjM3QTMwMDNDMjhBRiAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOUI0NzkwOTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyog
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MTIx
MkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOTJBNzgyMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOTJBNzdBMjEyQjZBNjEwMEY0OTNGRCAvKiBNb2R1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419703</attachid>
            <date>2021-02-09 05:40:32 -0800</date>
            <delta_ts>2021-02-11 00:43:13 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>bug-221560-20210209154030.patch</filename>
            <type>text/plain</type>
            <size>73268</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5ZjZmYzEyODkzOTA3Y2RkODY0ZmY2
NzM4ZGM1OTU0MTkwNWMyY2IuLjY5NDQ1YmNmMzkzNjQ3ZTFiNzVjZjExN2EyZmE0NTg0ZTljNGYz
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMDItMDggIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW9uIGNsaWVudHMgc2hvdWxkIGJl
IGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRhIGluc3RlYWQgb2YgZW1iZWRkZWQg
aW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBGdW5jdGlvbkRpc3BhdGNoZXIgbm90IGJlIFJlZkNvdW50ZWRU
aHJlYWRTYWZlLgorICAgICAgICBUaGVyZSdzIG5vdGhpbmcgaW5oZXJlbnRseSByZWZlcmVuY2Ug
Y291bnRlZCBpbiB0aGUgZGVzY3JpcHRpb24KKyAgICAgICAgInNvbWV0aGluZyB0aGF0IGZ1bmN0
aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIuCisgICAgICAgIFRoaXMgYWxsb3dzIG90aGVyIGlu
dGVyZmFjZSBjb250cmFjdHMgdGhhbiAid2hlbiB0aGUgcmVjZWl2ZXIgcmVmZXJlbmNlcworICAg
ICAgICBGdW5jdGlvbkRpc3BhdGNoZXIsIGl0IHdpbGwgdGhyZWFkLXNhZmUgcmVmIGl0Ii4KKwor
ICAgICAgICBIYXZpbmcgYSBSZWZDb3VudGVkVGhyZWFkU2FmZSBpbiB0aGUgbWlkZGxlIG9mIGlu
aGVyaXRhbmNlIGNoYWluIGlzIHByb2JsZW1hdGljLCBhcworICAgICAgICBub3QgYWxsIGluaGVy
aXRhbmNlIGNoYWlucyBoYXZlIGl0LiBJdCBpcyBiZXR0ZXIgdG8gc2VwYXJhdGUgInNvbWV0aGlu
ZyB0aGF0CisgICAgICAgIGZ1bmN0aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIgZnJvbSAic29t
ZXRoaW5nIHRoYXQgbWF5IGJlIG93bmVkIGJ5IG11bHRpcGxlCisgICAgICAgIHRocmVhZHMiLgor
CisgICAgICAgIEluIHRoZSBjaGFuZ2UsIElQQzo6Q29ubmVjdGlvbiB3aWxsIHN0b3JlIGEgcmVm
ZXJlbmNlIHRvIEZ1bmN0aW9uRGlzcGF0Y2hlci4gSW4KKyAgICAgICAgdGhpcyBzY2VuYXJpbyBp
dCB3b3VsZCBiZSBjb25mdXNpbmcgdG8gdGhlIHJlYWRlciBpZiB0aGUgcmVmZXJlbmNlIGNvdW50
IHdvdWxkIGJlCisgICAgICAgIGNoYW5nZWQuIFRoZSBpbnRlcmZhY2UgaXMgImFkZC9yZW1vdmUi
LCB3aGljaCBpcyBpbmhlcmVudGx5IG5vdCByZWZjb3VudGVkLiBJZgorICAgICAgICB0aGUgcmVm
Y291bnQgd2FzIHBhcnQgb2YgdGhlIGludGVyZmFjZSwgdGhlbiBxdWVzdGlvbiB3b3VsZCBhcmlz
ZSBhcyBvZiB3aGF0IGl0CisgICAgICAgIHdhcyB1c2VkIGZvci4gSWYgRnVuY3Rpb25EaXNwYXRj
aGVyIHdhcyByZWZjb3VudGVkIGJ1dCB0aGUgcmVmY291bnQgd291bGQgbm90IGJlCisgICAgICAg
IG1vZGlmaWVkIGZvciB0aGlzIGNhc2UsIGl0IHdvdWxkIHJpc2UgcXVlc3Rpb25zLCB0b28uCisK
KyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg6CisgICAgICAgICogd3RmL1J1bkxv
b3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisKIDIwMjEtMDItMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBOb24tc3BlY2lh
bCBVUkxzIHNob3VsZCBoYXZlIGFuIG9wYXF1ZSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjQ1ZDQ3NmUz
Y2VkMWU3ODllZmQzZTc5NWNmZTEyNmVlYTgwNTUzMC4uYjIzZDMxMDZhM2I5MmUxMTc4ZmRkOTA4
ZTY3ZGM3ZTQzZjZmYTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDUgQEAKKzIwMjEtMDItMDgg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0
aW9uIGNsaWVudHMgc2hvdWxkIGJlIGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRh
IGluc3RlYWQgb2YgZW1iZWRkZWQgaW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQzo6TWVzc2FnZVJlY2Vp
dmVRdWV1ZSwgYW4gaW50ZXJmYWNlIHdoaWNoIG9idGFpbnMgbWVzc2FnZXMgZnJvbQorICAgICAg
ICB0aGUgbWVzc2FnZSByZWNlaXZlIHRocmVhZCBhbmQgZm9yd2FyZHMgdGhlbSB0byBjYWxsZXIg
YXMgZGF0YS4KKyAgICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0
byBza2lwIG1lc3NhZ2VzIHRoYXQgYXJlIHN0YWxlCisgICAgICAgIG9yIG9yaWdpbmF0aW5nIGZy
b20gYSBzZW5kZXIgd2hpY2ggaXMgaW5jb3JyZWN0LiBCZWZvcmUsIHRoZSBjbGllbnQKKyAgICAg
ICAgY291bGQgb25seSBnZXQgdGhlIG1lc3NhZ2VzIGFzIEZ1bmN0aW9uIHJlZmVyZW5jZXMsIGFu
ZCB0aG9zZSBjYW5ub3QKKyAgICAgICAgYmUgc2tpcHBlZCBhcyBpdCB3b3VsZCBiZSB1bmVkZmlu
ZWQgd2hhdCBub3QgZXhlY3V0aW5nIGEgZnVuY3Rpb24gbWVhbnMuCisKKyAgICAgICAgSVBDOjpN
ZXNzYWdlUmVjZWl2ZVF1ZXVlIGlzIGEgZ2VuZXJhbGl6YXRpb24gYW5kIHNpbXBsaWZpY2F0aW9u
IG9mIGN1cnJlbnQKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2
ZXJSZWZDb3VudGVkIGFuZAorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlci4gSXQgaGFzIGRpZmZlcmVudCByZWYtY291bnQKKyAgICAgICAgc2VtYW50aWNz
LCBpbiB0aGUgd2F5IHRoYXQgY2xpZW50IGNvbnRyb2xzIHRoZSBsaWZlLXRpbWUgd2l0aCBhZGQg
YW5kCisgICAgICAgIHJlbW92ZS4KKworICAgICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWUg
Zml4ZXMgbWVzc2FnZSByZW9yZGVyaW5nIGJ1ZyB3aXRoCisgICAgICAgIElQQzo6Q29ubmVjdGlv
bjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHdoZXJlIGZpcnN0IGZldyBtZXNzYWdlcworICAg
ICAgICB0aGF0IGFyZSByb3V0ZWQgdG8gbWFpbiB0aHJlYWQgbWVzc2FnZSBxdWV1ZSBjYW4gY29t
ZSBsYXRlciB0aGFuIHNvbWUKKyAgICAgICAgb3RoZXIgbWVzc2FnZSB0aGF0IGdldHMgaGFuZGxl
ZCBmcm9tIG1lc3NhZ2UgcmVjZWl2ZSB0aHJlYWQuCisKKyAgICAgICAgRml4ZXMgZmV3IGNhbGwt
c2l0ZXMgYXMgZXhhbXBsZXMgb2YgYWxsIHRoZSB0aGluZ3MgdGhhdCBhcmUgd3JvbmcgaW4KKyAg
ICAgICAgZXhpc3RpbmcgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIC8gVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyUmVmQ291bnRlZAorICAgICAgICBzaXRlcy4KKworICAgICAgICBEb2VzIG5vdCByZXBs
YWNlIGFsbCB1c2VzIG9mIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciAvCisgICAgICAgIFRocmVh
ZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgZHVlIHRvIHRoZSBzaXRlcyBhcHBlYXJpbmcgdmVy
eSBidWdneSwKKyAgICAgICAgYW5kIHRodXMgdGFraW5nIHRpbWUgdG8gZ2V0IHJpZ2h0IGFuZCBk
ZWxheWluZyB0aGUgcmV2aWV3LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6fkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NvcGVkRGlzY29ubmVjdDo6U2NvcGVkRGlz
Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNj
b3BlZERpc2Nvbm5lY3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlNjb3BlZERpc2Nvbm5lY3Q6On5TY29wZWREaXNjb25uZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NvcGVkRGlzY29ubmVj
dDo6cmVzZXQpOgorICAgICAgICBBZGQgcmV1c2FibGUgU2NvcGVkRGlzY29ubmVjdCBoZWxwZXIg
aW5zdGVhZCBvZiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCisgICAgICAgIC1zcGVjaWZpYyAid3Jh
cHBlciIuIFJlcGxhY2UgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyIHVuaXF1ZV9w
dHIKKyAgICAgICAgaG9sZGVyIHdpdGgganVzdCBtb3ZlIHNlbWFudGljcywgaW4gb3JkZXIgdG8g
YXZvaWQgaGVhcC1hbGxvY2F0aW5nIHRoZQorICAgICAgICB3cmFwcGVyLgorCisgICAgICAgIEFk
ZCBjb25uZWN0IC10eXBlIGNhbGwgaW4gYWRkaXRpb24gdG8gZGlzY29ubmVjdCB0eXBlIGNhbGws
IGR1ZSB0bworICAgICAgICB0aHJlYWRpbmcgYnVnIGluIGV4aXN0aW5nIGNvZGUsIHNlZSBiZWxv
dy4KKworCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIFN0b3JlIHJlZmVyZW5jZXMgdG8gdmFyaW91cyBv
YmplY3RzIHNvIHRoYXQgdGhleSdyZSBhY2Nlc3NlZCBpbiB0aHJlYWQtc2FmZSBtYW5uZXIuCisg
ICAgICAgIERvIG5vdCBhZGQgdGhlIGFkZE1lc3NhZ2VSZWNlaXZlUXVldWUgaW4gdGhlIGNvbnN0
cnVjdG9yLiBUaGUgZnVuY3Rpb24gdGFrZXMgYQorICAgICAgICBwdHIgdG8gaW50ZXJmYWNlLiBX
aGVuIHRoZSBjb25zdHJ1Y3RvciBydW5zLCB0aGUgdnB0ciBpcyBub3QgcG9wdWxhdGVkIHlldC4K
KyAgICAgICAgQ29ubmVjdGlvbiB3aWxsIHN0YXJ0IGRpc3BhdGNoaW5nIG1lc3NhZ2VzIHRocm91
Z2ggdGhlIHBhc3NlZCB2cHRyIGltbWVkaWF0ZWx5IHdoZW4KKyAgICAgICAgYWRkTWVzc2FnZVJl
Y2VpdmVRdWV1ZSBpcyBjYWxsZWQuIER1ZSB0byBjb21wb3VuZGluZyBidWdzIGFuZCBnZW5lcmFs
IHNsb3duZXNzLCB0aGlzIGJ1ZworICAgICAgICB3YXMgbm90IGhpdCBvZnRlbiBiZWZvcmUuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y29ubmVjdFdlYlByb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgQ29ubmVjdCB0aGUgbWVzc2FnZSBxdWV1ZSBhbmQgc3Rh
cnQgcmVjZWl2aW5nIHRoZSBtZXNzYWdlcy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorCisgICAgICAg
IFJlZ2FyZGluZzogICAgIHJlbW90ZVJlc291cmNlQ2FjaGUgPSBXVEZNb3ZlKG1fcmVtb3RlUmVz
b3VyY2VDYWNoZSkKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlIGNhbm5vdCBiZSBkZXN0
cm95ZWQgYnkgbW92aW5nIGl0IGF3YXkgZHVyaW5nIGRlc3RydWN0aW9uIGZyb20KKyAgICAgICAg
dGhlIG1haW4gdGhyZWFkLCBhcyB0aGUgdGFzayB0aHJlYWQgdGFzayBmdW5jdGlvbnMgd2lsbCBy
ZWZlciB0byB0aGUgb2JqZWN0IGFuZCB3b3VsZCB1c2UKKyAgICAgICAgdGhlIG1vdmVkLWF3YXkg
b2JqZWN0LiBKdXN0IG1vdmUgaXQgaW4gdGhlIHRhc2sgZnVuY3Rpb24uCisKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICBEbyBub3QgbmF2aWdhdGUgdG8gY29ubmVjdGlvbiB2aWEgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAgIEl0IHdpbGwgYmUgZGVzdHJveWVkIHVw
b24gZGlzY29ubmVjdCwgYnV0IHNlbmRzIG1heSBoYXBwZW4gYWZ0ZXIgdGhhdAorICAgICAgICBk
dXJpbmcgcGxheWJhY2sgb2YgZGlzcGF0Y2hlZCB0YXNrIGZ1bmN0aW9ucy4KKworICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbSk6CisgICAgICAg
IERvIG5vdCBuYXZpZ2F0ZSB0byB0aGUgcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgdmlh
IHRoZQorICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4gVGhpcyBvYmpl
Y3QgaGFzIGJlZW4gZGVzdHJveWVkIHVwb24gZGlzY29ubmVjdCwKKyAgICAgICAgYnV0IHRoZSBk
aXNwYXRjaGVkIHRhc2sgZnVuY3Rpb25zIHdpbGwgcGxheWJhY2sgaW4gdGhlIHBsYXliYWNrIHRo
cmVhZC4KKyAgICAgICAgQWxzbywgdGhlIGFjY2Vzc29ycyBuYXZpZ2F0aW5nIHVwd2FyZHMgaW4g
dGhlIHN0cnVjdHVyZSBhcmUgbm90IHRocmVhZC1zYWZlLgorCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnRlcm1pbmF0ZVdlYlByb2Nlc3MpOgorICAgICAgICBEbyBu
b3QgbmF2aWdhdGUgYWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSBpdCBtaWdodCBiZSBkZXN0cm95ZWQg
YXQgdGhlIHRpbWUKKyAgICAgICAgb2YgZGlzcGF0Y2hpbmcgdGhlIHRlcm1pbmF0ZVdlYlByb2Nl
c3MuIEluc3RlYWQsIHBvc3QgYSBtYWluIHRocmVhZCB0YXNrCisgICAgICAgIHdpdGggd2VhayBw
dHIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaDoKKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bWVkaWFQbGF5ZXIpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAg
UmVtb3ZlIHRoZSB0aHJlYWQtc2FmZSBiZWhhdmlvciB0aGF0IHdvdWxkIGdpdmUgZmFsc2UgaW1w
cmVzc2lvbiBvbgorICAgICAgICB0aHJlYWQgc2FmZXR5LiBJdCBhcHBlYXJzIGFzIGlmIHRoZSBN
ZWRpYVBsYXllciByZXR1cm5lZCBieQorICAgICAgICBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjptZWRpYVBsYXllcigpIGlzIG5vdCB0aHJlYWQtc2FmZS4KKyAgICAgICAg
SXQgc2VlbXMgYXMgaWYgdGhlIG1lZGlhIHBsYXllciBjb3VsZCBoYXZlIGJlZW4gbXV0YXRlZCBi
eSB0aGUgcHJveHkKKyAgICAgICAgY2FsbCBmdW5jdGlvbnMgaW4gbWFpbiB0aHJlYWQgZHVyaW5n
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgdGhyZWFkCisgICAgICAgIHNpbXVsdGFuZW91c2x5IHBh
aW50aW5nIGl0IHRvIGNhbnZhcy4gSW5zdGVhZCwgcGFpbnQgdGhlIE1lZGlhUGxheWVyCisgICAg
ICAgIGZyb20gVUkgdGhyZWFkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmRpc2Nvbm5lY3RXZWJQcm9j
ZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyOjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OnJlbGVhc2VMYXllcik6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oOgorCisgICAg
ICAgIEZpeCBtb3N0bHkgc2ltaWxhciB0aHJlYWRpbmcgYnVncyBhcyBleHBsYWluZWQgYWJvdmUu
CisgICAgICAgIE5vdGFibGUgZGlmZmVyZW5jZSBpcyB0aGUgYnVnIGFib3V0IH5SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoKQorICAgICAgICBjYWxsaW5nIChidWdn
eSkgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKCk6CisgICAgICAgIHJlbW92ZVRocmVhZE1l
c3NhZ2VSZWNlaXZlciBpcyBhIHJlZi1jaGFuZ2luZyBmdW5jdGlvbiBvbiB0aGUgb3duZXIsIHdo
aWNoIGlzCisgICAgICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
ci4gU28gaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0aGF0IGEgZGVzdHJ1Y3RvcgorICAgICAgICB3
b3VsZCBkZWNyZWFzZSB0aGUgcmVmY291bnQuCisgICAgICAgIEluIGFkZGl0aW9uLCBDb25uZWN0
aW9uIGRpc3BhdGNoZXMgbWVzc2FnZXMgdW50aWwgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVy
LiBJZiB0aGUKKyAgICAgICAgY2FsbCBpcyBtYWRlIHdoaWxlIG1haW4gdGhyZWFkIGlzIGluc2lk
ZSBkZXN0cnVjdG9yLCBpdCBtZWFucyB0aGF0IHJlZiBjb3VudCBpcyBiZWluZworICAgICAgICBl
eHRlbnNpdmVseSBtb2RpZmllZCBkdXJpbmcgZGVzdHJ1Y3Rpb24gYW5kIHRhc2tzIGFyZSBiZWlu
ZyBzY2hlZHVsZWQgd2hlbiB0aGV5IHNob3VsZAorICAgICAgICBub3QgYmUuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1v
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0
Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJv
Y2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVucXVldWVJ
bmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL0Z1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaDogQ29waWVk
IGZyb20gU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmguCisgICAgICAgICogUGxh
dGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93
dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmguCisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6
OnJlbW92ZSk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmdldCBjb25z
dCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaDogQ29w
aWVkIGZyb20gU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmguCisgICAgICAgIChJ
UEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmlzVmFsaWRNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wMi0w
NSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkdM
IElQQyBtZXNzYWdlcyBhcmUgZGVsaXZlcmVkIG91dCBvZiBvcmRlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlv
bkRpc3BhdGNoZXIuaAppbmRleCBkMDlhNTIyMzRmOGE3YTJkZjhjNWYzN2JjNzFkMzFkMzlhYzQ4
YWI3Li43Yzg2NDcxOTM2MDEwMjdmZDcyZjE2YjkxZTY1YzkwMGZiZWQ1YTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaApAQCAtMjYsMTQgKzI2LDEzIEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogLy8gRnVuY3Rpb25EaXNwYXRjaGVyIGlz
IGFuIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIG9mIHNvbWV0aGluZyB0aGF0IGZ1bmN0aW9ucyBj
YW4gYmUKIC8vIGRpc3BhdGNoZWQgdG8uIFRoaXMgY2FuIGZvciBleGFtcGxlIGJlIGEgcnVuIGxv
b3Agb3IgYSB3b3JrIHF1ZXVlLgogCi1jbGFzcyBGdW5jdGlvbkRpc3BhdGNoZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnVuY3Rpb25EaXNwYXRjaGVyPiB7CitjbGFzcyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5G
dW5jdGlvbkRpc3BhdGNoZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9v
cC5oIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCmluZGV4IDA0NjZkNDQ1OWQ2Yjc0YmNjMWNl
NGQ4NDIwMzczNjg3MjYwN2NhMzQuLjk1ZmY5ZGM1MjAzYzIxNmExOTNlZDRhNTZkYzRmYWJkOWZi
ODFhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTY0LDcgKzY0LDcgQEAgdXNpbmcgUnVuTG9vcE1vZGUgPSB1
bnNpZ25lZDsKICNkZWZpbmUgRGVmYXVsdFJ1bkxvb3BNb2RlIDAKICNlbmRpZgogCi1jbGFzcyBS
dW5Mb29wIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CitjbGFzcyBSdW5Mb29w
IGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciwgcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFJ1bkxvb3A+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdW5Mb29wKTsKIHB1
YmxpYzoKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KQEAgLTgw
LDcgKzgwLDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUnVuTG9v
cCogd2ViSWZFeGlzdHMoKTsKICNlbmRpZgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBpc01haW4oKTsKLSAgICB+UnVuTG9vcCgpIGZpbmFsOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB+UnVuTG9vcCgpIGZpbmFsOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlz
cGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oCmluZGV4IDVkNjk0YmQ4YzNmNWE0YTVjMDBjOTQyZjlkZDQzM2Q3Yzg0NDVlMjMuLjIwMGY5
NjljMjc2Yzc0ZmJmMjdmMzU0ZDlhOTE3YjQ5MDYwZmM1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCkBAIC00
MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1jbGFzcyBXb3JrUXVldWUgZmluYWwg
OiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKK2NsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1
YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3Jr
UXVldWU+IHsKIAogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7CkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBRT1MgPSBUaHJlYWQ6OlFPUzsKIAogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUs
IFR5cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7Ci0gICAgfldvcmtRdWV1
ZSgpIGZpbmFsOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+V29ya1F1ZXVlKCkgZmluYWw7CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYp
IGZpbmFsOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoU2Vjb25k
cywgRnVuY3Rpb248dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5YzE3YzQ3YTA4MGYwNzJk
ZmVhYzE3N2I5OTE3YWUxMDFlNzBkMDczLi5kYWJlZDg3YzAzODBjNWRmZjkzMmU1YjJiMzA0YWQ3
YzFlYWVjMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xOTAsOCArMTkwLDggQEAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6fkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIG1fY29ubmVj
dGlvbi0+aW52YWxpZGF0ZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCi0gICAgbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyLT5jbG9zZSgpOwotICAg
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci0+Y2xvc2UoKTsKKyAgICBtX2F1ZGlv
VHJhY2tSZW5kZXJlck1hbmFnZXIucmVzZXQoKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIucmVzZXQoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0Uo
TElCV0VCUlRDKQogICAgIG1fbGliV2ViUlRDQ29kZWNzUHJveHktPmNsb3NlKCk7CkBAIC0yOTgs
NyArMjk4LDcgQEAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmF1ZGlvU2Vzc2lvblByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShp
ZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMs
IGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAg
ICAgIHJldHVybiBTY29wZWREaXNjb25uZWN0IHsgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlKCp0aGlzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwogfQpAQCAtMzA5LDE2ICszMDksNiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92ZShyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3Jh
cHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0KCk7Ci19
Ci0KICNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggN2JhZGQzNzc2OWNmNTJmZDU0MGI0ZmI3Nzdk
MDg4NzQ2NjA0ZjU0Zi4uZTAwN2ZiYWVmYzk3OWFlMWI3ZGZmMDA0NWQ1ZmNhZWJjMzljOTJhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCkBAIC0xNjQsNiArMTY0LDQ2IEBAIHByaXZhdGU6CiAgICAgLy8gTm93UGxheWlu
Z01hbmFnZXI6OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogCisgICAgLy8gU2NvcGVkIGhvbGRlciBmb3IgYW4g
b2JqZWN0IHRoYXQgaXMKKyAgICAvLyAxKSBoZWxkIGJ5IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MKKyAgICAvLyAyKSBpbnRlcmVzdGVkIGFib3V0IHdoZW4gdGhlIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgY29ubmVjdGlvbiBzdG9wcy4KKyAgICAvLyBVc2VmdWwgbW9zdGx5IGZvciBjcm9z
cy10aHJlYWQgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0cy4gVXBvbiBkaXNjb25uZWN0aW5nLCB0
aGUgb2JqZWN0IHJlY2VpdmVzCisgICAgLy8gdGhlIHJlZmVyZW5jZSB1c2VkIGJ5IHRoZSBob2xk
ZXIgdG8gaG9sZCB0aGUgb2JqZWN0LCBwcm92aW5nIGEgbm9uLXRyYXNoaW5nIGRlc3RydWN0aW9u
IGJlaGF2aW9yIGZvcgorICAgIC8vIHBvc3RpbmcgYSBwcm90ZWN0IHJlZiBhbG9uZyB0aGUgcG90
ZW50aWFsIGNsZWFudXAgdGFzayBmb3Igc3BlY2lmaWMsIGxpbWl0ZWQgY2FzZXMuCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBjbGFzcyBTY29wZWREaXNjb25uZWN0IHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFNjb3BlZERpc2Nvbm5lY3QoKSA9IGRlZmF1bHQ7CisgICAgICAgIFNjb3Bl
ZERpc2Nvbm5lY3QoUmVmPFQ+JiYgb2JqZWN0KQorICAgICAgICAgICAgOiBtX29iamVjdChXVEZN
b3ZlKG9iamVjdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5jb25uZWN0V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICAgICAgfQorICAgICAgICBTY29wZWREaXNjb25uZWN0
KFNjb3BlZERpc2Nvbm5lY3QmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9vYmplY3Qoc3RkOjpl
eGNoYW5nZShvdGhlci5tX29iamVjdCwgbnVsbHB0cikpCisgICAgICAgIHsKKyAgICAgICAgfQor
ICAgICAgICBTY29wZWREaXNjb25uZWN0JiBvcGVyYXRvcj0oU2NvcGVkRGlzY29ubmVjdCYmIG90
aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAg
ICAgICAgICAgICByZXNldCgpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX29iamVjdCwgbnVsbHB0cik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICAgICAgflNjb3BlZERpc2Nvbm5lY3QoKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXNldCgpOworICAgICAgICB9CisgICAgICAgIHZvaWQg
cmVzZXQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5kaXNjb25uZWN0V2ViUHJvY2Vz
c0Nvbm5lY3Rpb24obV9vYmplY3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIH0KKyAgICBw
cml2YXRlOgorICAgICAgICBSZWZQdHI8VD4gbV9vYmplY3Q7CisgICAgfTsKICAgICBSZWZQdHI8
TG9nZ2VyPiBtX2xvZ2dlcjsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKQEAgLTE4MSw4ICsyMjEsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKLSAg
ICBSZWY8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyPiBtX2F1ZGlv
VHJhY2tSZW5kZXJlck1hbmFnZXI7Ci0gICAgUmVmPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKKyAgICBTY29w
ZWREaXNjb25uZWN0PFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4g
bV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyOworICAgIFNjb3BlZERpc2Nvbm5lY3Q8UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyOwogI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcj4gbV9yZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlcjsKICNlbmRpZgpAQCAtMTkzLDE3ICsyMzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9hbGxvd3NEaXNwbGF5Q2FwdHVyZSB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIGNsYXNzIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBl
cihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJik7Ci0gICAgICAgIH5SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kV3JhcHBlcigpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICB9OwotCi0gICAg
dXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBl
cj4+OworICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLCBTY29wZWREaXNjb25uZWN0PFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZE1hcDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKaW5kZXggOGNhODMwYWY2Yzk4MjdlZDZmZmRkNTQwNDE2ZWVkODc2YjE0NzA5My4uMTllZmY2
OTE4YTExYzE1ZTk1YTRiMjFlNDk0Y2ZlOGU2M2YzMjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiAjZGVmaW5lIFRFUk1JTkFURV9XRUJfUFJPQ0VTU19X
SVRIX01FU1NBR0UobWVzc2FnZSkgXAogICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlcXVl
c3RpbmcgdGVybWluYXRpb24gb2Ygd2ViIHByb2Nlc3MgJSIgUFJJdTY0ICIgZm9yIHJlYXNvbjog
JSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJv
Y2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjbWVzc2FnZSk7IFwKLSAgICBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPnRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsKKyAgICB0ZXJtaW5hdGVX
ZWJQcm9jZXNzKCk7CiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24sIG1lc3NhZ2Up
IGRvIHsgXAogICAgIGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKQEAgLTY4LDMyICs2
OCwzNyBAQCBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlBybwogCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCiAgICAgOiBt
X3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3b3Jr
IHF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50
ZXJhY3RpdmUpKQotICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obWFrZVJlZihncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSkpCiAgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKQorICAgICwgbV9yZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eShtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCkuYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd29ya1F1ZXVlLCB0
aGlzLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCitSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpID0gZGVmYXVsdDsKKwordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQog
ewotICAgIC8vIE1ha2Ugc3VyZSB3ZSBkZXN0cm95IHRoZSBSZXNvdXJjZUNhY2hlIG9uIHRoZSBX
b3JrUXVldWUgc2luY2UgaXQgZ2V0cyBwb3B1bGF0ZWQgb24gdGhlIFdvcmtRdWV1ZS4KLSAgICBt
X3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3JlbW90ZVJlc291cmNlQ2FjaGUgPSBXVEZNb3ZlKG1fcmVt
b3RlUmVzb3VyY2VDYWNoZSldIHsgfSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKG1fd29ya1F1ZXVlLCAqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaXNjb25u
ZWN0KCkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlzY29ubmVjdFdlYlByb2Nlc3ND
b25uZWN0aW9uKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlZkZyb21Db25uZWN0aW9u
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICAvLyBUaGUgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCBkZXN0cnVjdG9yIHdvbid0IGJlIGNhbGxlZCB1bnRpbCBkaXNjb25u
ZWN0KCkgaXMgY2FsbGVkIGFuZCB3ZSB1bnJlZ2lzdGVyIG91cnNlbHZlcyBhcyBhIFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlciBiZWNhdXNlCi0gICAgLy8gdGhlIElQQzo6Q29ubmVjdGlvbiByZWZz
IGl0cyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLgotICAgIG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+Y29ubmVjdGlvbigpLnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIC8vIFRoZSBiZWxvdyBjbGVhbnVwIHRhc2sgaXMgdGhlIGxhc3QgdGFz
ayB0aGF0IHdpbGwgcnVuLiBUaGUgcmVmIGd1YXJhbnRlZXMgdGhhdCB0aGUgbm9uLXByb3RlY3Rl
ZCB0YXNrcyBlbHNld2hlcmUgaW4gdGhlIGNvZGUKKyAgICAvLyBoYXZlIGFuIGFsaXZlIG9iamVj
dC4KKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJl
ZkZyb21Db25uZWN0aW9uKV0geworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUg
UmVzb3VyY2VDYWNoZSBvbiB0aGUgV29ya1F1ZXVlIHNpbmNlIGl0IGdldHMgcG9wdWxhdGVkIG9u
IHRoZSBXb3JrUXVldWUuCisgICAgICAgIFdURk1vdmUocHJvdGVjdGVkVGhpcy0+bV9yZW1vdGVS
ZXNvdXJjZUNhY2hlKTsKKyAgICB9KTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICZtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1
cm4gbV9jb25uZWN0aW9uLnB0cigpOwogfQogCiB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CkBAIC0xMDksMTIgKzExNCwx
NyBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdyYXBoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBhdXRvJiBtZWRpYUl0ZW0gPSBpdGVtLmdldDxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1l
ZGlhPigpOwotICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5y
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5pZGVu
dGlmaWVyKCkpOwotICAgIGlmICghcGxheWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRp
b24oKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBj
YWxsT25NYWluUnVuTG9vcEFuZFdhaXQoW3dlYWtSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSA9IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHksICZjb250ZXh0LCAmcmVzdWx0LCAm
bWVkaWFJdGVtXSgpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5ID0gd2Vha1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmdldCgpKSB7CisgICAg
ICAgICAgICBhdXRvIHBsYXllciA9IHJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LT5tZWRp
YVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGlmICghcGxheWVy
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNvbnRleHQucGFpbnRGcmFt
ZUZvck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtNDgyLDYgKzQ5MiwxOSBA
QCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAK
K3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6dGVybWluYXRlV2ViUHJvY2VzcygpCit7Cisg
ICAgLy8gRHVyaW5nIHRoZSBjYWxsIHRpbWUsIHRoZSBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IGlzIGFsaXZlLCBiZWNhdXNlCisgICAgLy8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBpcyBvd25l
ZCBieSB0aGUgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4gSG93ZXZlciwgZHVyaW5nCisgICAg
Ly8gY2FsbCB0aW1lIG9uIG1haW4gdGhyZWFkLCB0aGUgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyBtaWdodCBhbHJlYWR5IGJlIGRlc3Ryb3llZC4KKyAgICAvLyBXZSBjYW5ub3QgY2FsbCBmcm9t
IHRoZSB3b3JrIHF1ZXVlLCBzaW5jZSB0aGVyZSBpcyBubyB0aHJlYWQtc2FmZSByZWZlcmVuY2Ug
bm9yIGlzIHRoZQorICAgIC8vIGNhbGwgaXRzZWxmIHRocmVhZC1zYWZlLgorICAgIGNhbGxPbk1h
aW5SdW5Mb29wQW5kV2FpdChbZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzc10geworICAgICAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICAgICAgaW5zdGFuY2UtPnRlcm1pbmF0
ZVdlYlByb2Nlc3MoKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBkNzUx
ZmI5NWJmYjRjYjg5NTQ0ODY1YzMxZTMxODBjOTEzOTQ1OWZhLi5iMDI0OThjMmVkYjdmN2MyMWQx
NmQyNzVhYmE1ZmFhMGRkY2RlZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTU4LDExICs1
OCwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk7CiAKLWNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKK2NsYXNz
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgZmluYWwKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdl
U2VuZGVyCi0gICAgLCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIKLSAgICAsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQgeworICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVi
bGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudAorICAgICwg
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IHsKIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBD
OjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CkBAIC03OSwxMiArODEs
MTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsK
KyAgICB2b2lkIGNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIHZvaWQgZGlzY29u
bmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmKTsK
IAogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7
CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5k
bGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSwgdWludDhfdCogaGFu
ZGxlTG9jYXRpb24pIGZpbmFsOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBPcHRp
b25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJO
IGRlY29kZUFuZENyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCB1aW50
OF90KiBoYW5kbGVMb2NhdGlvbikKQEAgLTEwMiwxMiArMTA1LDEyIEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFm
dGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0
aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwg
R1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCi0g
ICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAv
LyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
LCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKQEAgLTEyMiw2ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRp
Zmllcik7CiAKKyAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsKKwogICAgIHN0cnVjdCBQ
ZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24gewogICAgICAgICBHUFVQcm9jZXNzV2FrZXVwTWVzc2Fn
ZUFyZ3VtZW50cyBhcmd1bWVudHM7CiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcjsKQEAg
LTE0MCwxMSArMTQ1LDEzIEBAIHByaXZhdGU6CiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtR
dWV1ZTsKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKLSAg
ICBSZWY8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogICAgIEhh
c2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAg
ICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dha2V1cEluZm87
CiAgICAgSVBDOjpTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyAgICBX
ZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCBmYTI0YTJhYWJlMjQ1YjkwM2E4OTc4
MDMxNTljNWYzZmZhOTM3ZmRkLi40N2FlNWI1NmFhZGFjMjY2ZjFlY2ZhYmIzZjA5Zjg0M2JkYjdl
MjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTYzLDcgKzYzLDYgQEAg
dm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVk
aWFQbGF5ZXJJZGVudGlmaWVyIGlkZW4KIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hpZXNMb2NrKTsKICAgICBBU1NF
UlQoIW1fcHJveGllcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAKICAgICBSZW1vdGVNZWRpYVBs
YXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbjsKQEAgLTc4LDcgKzc3LDYgQEAg
dm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVk
aWFQbGF5ZXJJZGVudGlmaWVyIGlkZW4KIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OmRlbGV0ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3Byb3hpZXNMb2NrKTsKICAgICBpZiAoYXV0byBwcm94eSA9IG1fcHJveGllcy50YWtl
KGlkZW50aWZpZXIpKQogICAgICAgICBwcm94eS0+aW52YWxpZGF0ZSgpOwogfQpAQCAtMTg1LDEw
ICsxODMsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZl
U3luY1BsYXllck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJgogICAgICAgICBwbGF5ZXItPmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKIH0KIAotLy8g
TWF5IGdldCBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KIFJlZlB0cjxNZWRpYVBsYXll
cj4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lZGlhUGxheWVyKGNvbnN0IE1lZGlh
UGxheWVySWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fcHJveGllc0xvY2spOwogICAgIGF1dG8gcmVzdWx0cyA9IG1fcHJveGllcy5maW5kKGlk
ZW50aWZpZXIpOwogICAgIGlmIChyZXN1bHRzICE9IG1fcHJveGllcy5lbmQoKSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdHMtPnZhbHVlLT5tZWRpYVBsYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaAppbmRleCAyMzdhZjliNjgwMTBjNjI0Mjk2OGVmZDBlNDBiNTRkNDhkMGY0NTA5Li5m
NzZjM2JhMWUyOWE3ZDA3NDExNTE4ZTMxYTQxOWFhMjNhNTYyMmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllcklkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC00NSw2ICs0NCw3IEBAIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJh
dGlvbjsKIAogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkKICAgICA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKQEAgLTg3LDcgKzg3LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik7CiAgICAgdm9pZCBzdXBwb3J0c0tleVN5c3Rl
bShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAKLSAgICBMb2NrIG1fcHJveGllc0xvY2s7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpNZWRp
YVBsYXllcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5
Pj4gbV9wcm94aWVzOwogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIuY3BwCmluZGV4IGJjYjRiYTVjYmJjNGQzNDcwNTlkY2ZlOGFiOGZj
YjE4ZmY1YWQyZmUuLjJlZjQ4M2EwOGNjNDZiNWQ2ZDE0OWMyNjI3NWViMzZiYWI4NWFhNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgor
I2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHUFVQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNz
YWdlcy5oIgpAQCAtMzgsMjkgKzM5LDI2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAKIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6UmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVj
dGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNvbm5lY3Rpb24oKSkKICAgICAsIG1fcXVldWUoY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5n
cHVQcm9jZXNzKCkuYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJRdWV1ZSgpKQogewotICAg
IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IHRoaXMpOwogfQogCi1SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6
On5SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoKQotewotICAgIG1f
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkucmVtb3ZlVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVj
dGlvbigpLnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwot
fQorUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjp+UmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6Y2xvc2UoKQordm9pZCBS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmNvbm5lY3RXZWJQcm9j
ZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIG1fcmVuZGVyZXJzLmNsZWFyKCk7Ci0g
ICAgfSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKG1fcXVldWUu
Z2V0KCksICp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdl
UmVjZWl2ZVF1ZXVlKG1fcXVldWUuZ2V0KCksICp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwog
fQogCi12b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6ZGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6ZGlzY29ubmVjdFdlYlByb2Nlc3ND
b25uZWN0aW9uKFJlZjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+
JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShj
YWxsYmFjaykpOworICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShN
ZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0aW9uKV0geworICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX3JlbmRlcmVycy5jbGVhcigpOworICAgIH0pOwogfQogCiBib29sIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgKaW5kZXggOWYwZjY1MmY2OTM2
MDIwMDgzM2ViODlkNjNhNDZkMWVkNWVlOWU5NS4uYjRlN2M5MzI1MTAzNmFjOWQxMWRhNzUyZGVh
OGE2MDAzZDc0MDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlci5oCkBAIC0yOSw0NSArMjksNDIgQEAKIAogI2luY2x1ZGUgIkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKLSNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBE
ZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzczsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOwog
Ci1jbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgZmluYWwg
OiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVk
IHsKK2NsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBmaW5h
bCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIHByb2Nlc3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKHByb2Nlc3MpKTsgfQogICAgIH5SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoKTsKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlbmRlcmVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7IH0KIAotICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCk7IH0K
KyAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5l
Y3Rpb24uZ2V0KCk7IH0KIAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNvbm5lY3RXZWJQ
cm9jZXNzQ29ubmVjdGlvbigpOworICAgIHZvaWQgZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0
aW9uKFJlZjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI+JiYpOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAKLSAgICAvLyBJUEM6OkNv
bm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlzcGF0Y2hUb1RocmVh
ZChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwotCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgY3JlYXRlUmVuZGVyZXIoQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJlcihBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXIpOwogCi0gICAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAg
IEhhc2hNYXA8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+PiBtX3JlbmRlcmVy
czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcApp
bmRleCA2MWI4OTBkYzc4NjdjMzNiMDA1ZjIyZTkzYmIxYWY0N2RkZDNiMTdjLi5lMzY5MDMwNjcw
YzA3NDcwZDJhZGU3NmZiMGRhMTM2ODAzNDg2YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTM5LDMyICszOSwyNyBAQAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICA6IG1fY29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQotICAgICwgbV9jb25uZWN0aW9uKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKQorICAgIDogbV9jb25uZWN0aW9uKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKQogICAgICwgbV9xdWV1ZShncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmdwdVByb2Nlc3MoKS52aWRlb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclF1ZXVlKCkpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rp
b24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKLSAgICBtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCB0aGlzKTsKIH0KK1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI6On5SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkgPSBkZWZhdWx0
OwogCi1SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjp+UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI6OmNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgbV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5yZW1vdmVUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigp
LnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX2Nvbm5l
Y3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUobV9xdWV1ZS5nZXQoKSwgKnRoaXMsIE1lc3Nh
Z2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKG1fcXVldWUuZ2V0
KCksICp0aGlzLCBNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyOjpjbG9zZSgpCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI6OmRpc2Nvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbihSZWY8UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4mJiByZWZGcm9tQ29ubmVjdGlvbikKIHsK
LSAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbbGF5ZXJzID0gV1RGTW92ZShtX2xheWVy
cyldIHsgfSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1l
c3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3Nh
Z2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShyZWZGcm9tQ29ubmVjdGlvbildIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbbGF5ZXJz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzLT5tX2xheWVycyldIHsgfSk7CiAgICAgfSk7CiB9CiAK
LXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlzcGF0Y2hUb1Ro
cmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCi17Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goV1RGTW92ZShjYWxsYmFjaykpOwotfQotCiBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoIWRlY29kZXIuZGVzdGluYXRp
b25JRCgpKQpAQCAtODIsNyArNzcsNyBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgogICAgICAg
ICBhdXRvIGxheWVyID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoaWRl
bnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIGF1dG8mIGxheWVyUmVm
ZXJlbmNlID0gKmxheWVyOwogICAgICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVS
b290TGF5ZXIsIHNpemUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIsIGxheWVyID0gV1RGTW92ZShs
YXllcildKGF1dG8gbGF5ZXJJZCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBkaXNwYXRjaFRvVGhy
ZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVy
KSwgbGF5ZXJJZCA9IFdURk1vdmUobGF5ZXJJZCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIsIGxheWVyID0g
V1RGTW92ZShsYXllciksIGxheWVySWQgPSBXVEZNb3ZlKGxheWVySWQpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sYXllcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwog
ICAgICAgICAgICAgICAgIG1fbGF5ZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGxheWVyKSk7
CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShsYXllcklkKSk7CkBAIC05NCw3ICs4
OSw3IEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRl
TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCiB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI6OnJlbGVhc2VMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyXSgpIG11dGFibGUgewotICAg
ICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgaWRlbnRpZmllcl0geworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZpZXJdIHsK
ICAgICAgICAgICAgIEFTU0VSVChtX2xheWVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtsYXllciA9IG1fbGF5ZXJzLnRha2UoaWRlbnRpZmll
cildIHsgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXIuaAppbmRleCBhMzI0YWVjOTU3NDFhYTc4NmNhNGIwMDIzZjY5MmExOTU3MTE0NTYw
Li44OTI4ZmNmYTI1NGYwNzlhZTQwZjc0OWVlMThjZTBjZGYxNzZiZjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaApAQCAtNDYsMjAgKzQ2LDE4IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNz
IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKIAotY2xhc3MgUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRo
cmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgeworY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlciBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBjcmVhdGUo
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKGNvbm5lY3Rpb24pKTsg
fQogICAgIH5SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAKLSAgICB2
b2lkIGNsb3NlKCk7CisgICAgdm9pZCBjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAg
ICB2b2lkIGRpc2Nvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbihSZWY8UmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJik7CiAKLSAgICAvLyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlcgot
ICAgIHZvaWQgZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwotCiAg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIGJvb2wgZGlzcGF0Y2hN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjgsNyArNjYsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllciwgYm9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXplLCBMYXllckNy
ZWF0aW9uQ2FsbGJhY2spOwogICAgIHZvaWQgcmVsZWFzZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcklkZW50aWZpZXIpOwogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIEhhc2hNYXA8U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcj4+IG1fbGF5ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcAppbmRleCA5MWFlNmZhNzc0N2NhNGM0NmQzNDM5OTgzYTkzOTIwMWI0MjA2
Y2I2Li5lOGI5MzUyZTI5YjE2NDMzMmNhMTM3Zjg0NzEyZGIwZGE3ZDE0OGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIkZ1
bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtNDA1
LDYgKzQwNiw3NCBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyTWVzc2FnZShUaHJlYWRNZXNzYWdlUmVjZWl2ZXImIHRocgogICAgICAgICBzZW5kU3luY1Jl
cGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKK25hbWVzcGFjZSB7Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK0RlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gZmlsdGVyV2l0aE1l
c3NhZ2VSZWNlaXZlUXVldWUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgVCYgcmVjZWl2ZVF1ZXVl
LCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBEZXF1
ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+JiYgaW5jb21pbmdNZXNzYWdlcykKK3sKKyAgICBE
ZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IHJlc3Q7CisgICAgZm9yIChhdXRvJiBtZXNz
YWdlIDogaW5jb21pbmdNZXNzYWdlcykgeworICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IHJlY2VpdmVyTmFtZSAmJiAobWVzc2FnZS0+ZGVzdGluYXRpb25JRCgp
ID09IGRlc3RpbmF0aW9uSUQgfHwgIWRlc3RpbmF0aW9uSUQpKQorICAgICAgICAgICAgcmVjZWl2
ZVF1ZXVlLmVucXVldWVNZXNzYWdlKGNvbm5lY3Rpb24sIFdURk1vdmUobWVzc2FnZSkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXN0LmFwcGVuZChXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3Q7Cit9Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2Fn
ZVJlY2VpdmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVlJiByZWNlaXZlUXVldWUsIFJlY2VpdmVy
TmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21p
bmdNZXNzYWdlc011dGV4KTsKKyAgICBtX2luY29taW5nTWVzc2FnZXMgPSBmaWx0ZXJXaXRoTWVz
c2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQsIFdURk1vdmUobV9pbmNvbWluZ01lc3NhZ2VzKSk7CisgICAgbV9yZWNlaXZlUXVl
dWVzLmFkZChyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisK
K3ZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShGdW5jdGlvbkRpc3BhdGNo
ZXImIGRpc3BhdGNoZXIsIE1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2VpdmVyTmFtZSBy
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHJlY2VpdmVRdWV1ZSA9IG1ha2VVbmlxdWU8RnVuY3Rp
b25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZT4oZGlzcGF0Y2hlciwgcmVjZWl2ZXIpOwor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAg
IG1faW5jb21pbmdNZXNzYWdlcyA9IGZpbHRlcldpdGhNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlz
LCAqcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIFdURk1vdmUobV9p
bmNvbWluZ01lc3NhZ2VzKSk7CisgICAgbV9yZWNlaXZlUXVldWVzLmFkZChXVEZNb3ZlKHJlY2Vp
dmVRdWV1ZSksIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3ZvaWQgQ29ubmVj
dGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29t
aW5nTWVzc2FnZXNNdXRleCk7CisgICAgICAgIG1fcmVjZWl2ZVF1ZXVlcy5yZW1vdmUobWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgfQorfQorCit2b2lkIENvbm5lY3Rp
b246OmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImIG1lc3Nh
Z2VSZWNlaXZlciwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgZGVjb2RlcikKK3sKKyAgICBp
ZiAoIWRlY29kZXItPmlzU3luY01lc3NhZ2UoKSkgeworICAgICAgICBtZXNzYWdlUmVjZWl2ZXIu
ZGlkUmVjZWl2ZU1lc3NhZ2UoKnRoaXMsICpkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOworICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgICAgIC8vIFdl
IHJlY2VpdmVkIGFuIGludmFsaWQgc3luYyBtZXNzYWdlLgorICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIHRoaXMuCisgICAgICAgIGRlY29kZXItPm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4o
TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOworCisgICAgLy8g
SGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBxdWV1ZSBt
ZXNzYWdlIHJlY2VpdmVyLgorICAgIG1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3Nh
Z2UoKnRoaXMsICpkZWNvZGVyLCByZXBseUVuY29kZXIpOworCisgICAgLy8gRklYTUU6IElmIHRo
ZSBtZXNzYWdlIHdhcyBpbnZhbGlkLCB3ZSBzaG91bGQgc2VuZCBiYWNrIGEgU3luY01lc3NhZ2VF
cnJvci4KKyAgICBBU1NFUlQoZGVjb2Rlci0+aXNWYWxpZCgpKTsKKworICAgIGlmIChyZXBseUVu
Y29kZXIpCisgICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKK30K
Kwogdm9pZCBDb25uZWN0aW9uOjpzZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxi
YWNrKERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKCFtX2lzQ29ubmVjdGVkKTsKQEAgLTc1MSw2ICs4MjAsMTUgQEAgdm9pZCBDb25u
ZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBt
ZXNzYWdlKQogICAgIGlmIChkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKG1lc3NhZ2Up
KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogVGhlc2UgYXJlIHByYWN0aWNhbGx5
IHRoZSBzYW1lIG11dGV4LCBzbyBtYXliZSB0aGV5IGNvdWxkIGJlIG1lcmdlZC4KKyAgICBhdXRv
IHdhaXRGb3JNZXNzYWdlc0xvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7
CisKKyAgICBhdXRvIGluY29taW5nTWVzc2FnZXNMb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5n
TWVzc2FnZXNNdXRleCk7CisgICAgaWYgKGF1dG8qIHJlY2VpdmVRdWV1ZSA9IG1fcmVjZWl2ZVF1
ZXVlcy5nZXQoKm1lc3NhZ2UpKSB7CisgICAgICAgIHJlY2VpdmVRdWV1ZS0+ZW5xdWV1ZU1lc3Nh
Z2UoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgaWYgKG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgewogICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0ZXgpOwogCkBAIC03NjEs
MzggKzgzOSwzNCBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgfQogCiAgICAgLy8gQ2hlY2sgaWYg
d2UncmUgd2FpdGluZyBmb3IgdGhpcyBtZXNzYWdlLCBvciBpZiB3ZSBuZWVkIHRvIGludGVycnVw
dCB3YWl0aW5nIGR1ZSB0byBhbiBpbmNvbWluZyBzeW5jIG1lc3NhZ2UuCi0gICAgewotICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7Ci0KLSAgICAg
ICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29k
ZXIpIHsKLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlTmFtZSA9
PSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpICYmIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlc3RpbmF0
aW9uSUQgPT0gbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93
YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlciA9IFdURk1vdmUobWVzc2FnZSk7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIpOwotICAgICAgICAgICAg
ICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5T25lKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobV93YWl0aW5nRm9y
TWVzc2FnZS0+d2FpdEZvck9wdGlvbnMuY29udGFpbnMoV2FpdEZvck9wdGlvbjo6RGlzcGF0Y2hJ
bmNvbWluZ1N5bmNNZXNzYWdlc1doaWxlV2FpdGluZykgJiYgbWVzc2FnZS0+aXNTeW5jTWVzc2Fn
ZSgpICYmIFN5bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigpLnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UoKnRoaXMsIG1lc3NhZ2UpKSB7Ci0gICAgICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZUNv
bmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT53YWl0Rm9yT3B0aW9u
cy5jb250YWlucyhXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFy
cml2ZXMpICYmIG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgewotICAgICAgICAgICAgICAgIG1f
d2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VXYWl0aW5nSW50ZXJydXB0ZWQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5T25lKCk7Ci0gICAg
ICAgICAgICAgICAgZW5xdWV1ZUluY29taW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgaWYgKG1fd2FpdGluZ0Zv
ck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIpIHsKKyAgICAgICAgaWYg
KG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VOYW1l
KCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVzdGluYXRpb25JRCA9PSBtZXNzYWdlLT5kZXN0
aW5hdGlvbklEKCkpIHsKKyAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIg
PSBXVEZNb3ZlKG1lc3NhZ2UpOworICAgICAgICAgICAgQVNTRVJUKG1fd2FpdGluZ0Zvck1lc3Nh
Z2UtPmRlY29kZXIpOworICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi5ub3Rp
ZnlPbmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENo
ZWNrIGlmIHRoaXMgaXMgYSBzeW5jIG1lc3NhZ2Ugb3IgaWYgaXQncyBhIG1lc3NhZ2UgdGhhdCBz
aG91bGQgYmUgZGlzcGF0Y2hlZCBldmVuIHdoZW4gd2FpdGluZyBmb3IKLSAgICAgICAgLy8gYSBz
eW5jIHJlcGx5LiBJZiBpdCBpcywgYW5kIHdlJ3JlIHdhaXRpbmcgZm9yIGEgc3luYyByZXBseSB0
aGlzIG1lc3NhZ2UgbmVlZHMgdG8gYmUgZGlzcGF0Y2hlZC4KLSAgICAgICAgLy8gSWYgd2UgZG9u
J3Qgd2UnbGwgZW5kIHVwIHdpdGggYSBkZWFkbG9jayB3aGVyZSBib3RoIHN5bmMgbWVzc2FnZSBz
ZW5kZXJzIGFyZSBzdHVjayB3YWl0aW5nIGZvciBhIHJlcGx5LgotICAgICAgICBpZiAoU3luY01l
c3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkucHJvY2Vzc0luY29taW5nTWVzc2FnZSgqdGhpcywgbWVz
c2FnZSkpCisgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT53YWl0Rm9yT3B0aW9ucy5j
b250YWlucyhXYWl0Rm9yT3B0aW9uOjpEaXNwYXRjaEluY29taW5nU3luY01lc3NhZ2VzV2hpbGVX
YWl0aW5nKSAmJiBtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkgJiYgU3luY01lc3NhZ2VTdGF0ZTo6
c2luZ2xldG9uKCkucHJvY2Vzc0luY29taW5nTWVzc2FnZSgqdGhpcywgbWVzc2FnZSkpIHsKKyAg
ICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICBlbnF1ZXVlSW5jb21pbmdNZXNzYWdl
KFdURk1vdmUobWVzc2FnZSkpOworICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+d2Fp
dEZvck9wdGlvbnMuY29udGFpbnMoV2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3lu
Y01lc3NhZ2VBcnJpdmVzKSAmJiBtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkpIHsKKyAgICAgICAg
ICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VXYWl0aW5nSW50ZXJydXB0ZWQgPSB0cnVl
OworICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAg
ICAgICAgICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBDaGVjayBpZiB0aGlz
IGlzIGEgc3luYyBtZXNzYWdlIG9yIGlmIGl0J3MgYSBtZXNzYWdlIHRoYXQgc2hvdWxkIGJlIGRp
c3BhdGNoZWQgZXZlbiB3aGVuIHdhaXRpbmcgZm9yCisgICAgLy8gYSBzeW5jIHJlcGx5LiBJZiBp
dCBpcywgYW5kIHdlJ3JlIHdhaXRpbmcgZm9yIGEgc3luYyByZXBseSB0aGlzIG1lc3NhZ2UgbmVl
ZHMgdG8gYmUgZGlzcGF0Y2hlZC4KKyAgICAvLyBJZiB3ZSBkb24ndCB3ZSdsbCBlbmQgdXAgd2l0
aCBhIGRlYWRsb2NrIHdoZXJlIGJvdGggc3luYyBtZXNzYWdlIHNlbmRlcnMgYXJlIHN0dWNrIHdh
aXRpbmcgZm9yIGEgcmVwbHkuCisgICAgaWYgKFN5bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigp
LnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UpKQorICAgICAgICByZXR1cm47
CisKKyAgICBlbnF1ZXVlSW5jb21pbmdNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQogCiB1
aW50NjRfdCBDb25uZWN0aW9uOjppbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKQEAgLTk3OCw5ICsxMDUyLDggQEAgdm9p
ZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKQogCiB2b2lkIENvbm5lY3Rp
b246OmVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGluY29t
aW5nTWVzc2FnZSkKIHsKKyAgICBBU1NFUlQobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXguaXNIZWxk
KCkpOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVz
c2FnZXNNdXRleCk7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKG1fd2FzS2ls
bGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTExNiw5ICsxMTg5LDE3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdl
KQogICAgIC8vIFRoZSBtZXNzYWdlIG1pZ2h0IGhhdmUgYWxyZWFkeSBiZWVuIGRpc3BhdGNoZWQg
ZnJvbSB0aGUgSVBDIFdvcmtRdWV1ZSB0byB0aGUgbWFpbiB0aHJlYWQgYnkgdGhlIHRpbWUgdGhl
CiAgICAgLy8gY2xpZW50IHJlZ2lzdGVycyBpdHNlbGYgYXMgYSBXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIuIFRvIGFkZHJlc3MgdGhpcywgd2UgY2hlY2sgYWdhaW4gZm9yIG1lc3NhZ2VzIHJlY2Vp
dmVycwogICAgIC8vIG9uY2UgdGhlIG1lc3NhZ2UgYXJyaXZlcyBvbiB0aGUgbWFpbiB0aHJlYWQu
CisgICAgLy8gRklYTUU6IFRoaXMgc3RpbGwgc3VmZmVycyBmcm9tIG1lc3NhZ2UgcmVvcmRlcmlu
ZyBidWcgd2hlcmUgdGhlIG1lc3NhZ2UKKyAgICAvLyBiZWxvdyBtaWdodCBiZSBkaXNwYXRjaGVk
IGFmdGVyIGEgbWVzc2FnZSB0aGF0IGlzIGJlaW5nIGRpc3BhdGNoZWQgZnJvbQorICAgIC8vIHRo
ZSBpbmNvbWluZyBtZXNzYWdlIHRocmVhZC4gVGhpcyBzaG91bGQgYmUgZml4ZWQgYnkgY2hhbmdp
bmcgdGhlCisgICAgLy8gY2FsbHNpdGVzIHRvIHVzZSBDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKCkuCiAgICAgaWYgKGRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIo
bWVzc2FnZSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBIZXJlIHRoZSBUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIgaXMgbWlzc2luZyB0aGUgYWJvdmUgZGlzcGF0Y2guCisgICAgLy8g
RklYTUU6IEhlcmUgdGhlIFRocmVhZE1lc3NhZ2VSZWNlaXZlciB3b3VsZCBiZSBzdWZmZXJpbmcg
ZnJvbSB0aGUgYWJvdmUKKyAgICAvLyBtZXNzYWdlIHJlb3JkZXJpbmcgYnVnLgorCiAgICAgaWYg
KG1lc3NhZ2UtPnNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpKSB7CiAg
ICAgICAgIGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcpIHsK
ICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVz
c2FnZS0+bWVzc2FnZU5hbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKaW5kZXggNjEwM2M4ZDgxMGQ3Yzc4MmFjZmRjYzM0YTNiNmEyYjhmZDY2MTAwZS4uNmFiOTQ0
ZWM3OTNhMTJkNDUzY2NjNGMzYWUzMDM4MDg3ODIzMDY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRlY29kZXIu
aCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgpAQCAt
MjI4LDYgKzIyOSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUaHJlYWRNZXNzYWdlUmVjZWl2
ZXIoUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEID0gMCk7CiAgICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CiAKKyAgICAvLyBBZGRzIGEgbWVz
c2FnZSByZWNlaXZlIHF1ZXVlLiBUaGUgY2xpZW50IHNob3VsZCBtYWtlIHN1cmUgdGhlIGluc3Rh
bmNlIGlzIHJlbW92ZWQgYmVmb3JlIGl0IGdvZXMKKyAgICAvLyBvdXQgb2Ygc2NvcGUuCisgICAg
dm9pZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICAvLyBBZGQgcyBhIG1lc3Nh
Z2UgcmVjZWl2ZSBxdWV1ZSB0aGF0IGRpc3BhdGNoZXMgdG8gdGhlIE1lc3NhZ2VSZWNlaXZlciB2
aWEgdGhlIEZ1bmN0aW9uRGlzcGF0Y2hlci4KKyAgICAvLyBUaGUgY2xpZW50IHNob3VsZCBtYWtl
IHN1cmUgaW5zdGFuY2UgaXMgcmVtb3ZlZCBiZWZvcmUgTWVzc2FnZVJlY2VpdmVyIGFuZCBGdW5j
dGlvbkRpc3BhdGNoZXIgZ28KKyAgICAvLyBvdXQgb2Ygc2NvcGUuIFRoZSBkaXNwYXRjaCBmdW5j
dGlvbiB3aWxsIGhvbGQgdGhlIGNvbm5lY3Rpb24gb2JqZWN0IGFsaXZlLgorICAgIHZvaWQgYWRk
TWVzc2FnZVJlY2VpdmVRdWV1ZShGdW5jdGlvbkRpc3BhdGNoZXImLCBNZXNzYWdlUmVjZWl2ZXIm
LCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICB2b2lkIHJl
bW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEID0gMCk7CisKICAgICBib29sIG9wZW4oKTsKICAgICB2b2lkIGludmFsaWRhdGUoKTsKICAg
ICB2b2lkIG1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwpAQCAtMzA3
LDYgKzMxNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVz
dGluZygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOyB9
CiAjZW5kaWYKIAorICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3Nh
Z2VSZWNlaXZlciYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmKTsKIHByaXZhdGU6CiAgICAg
Q29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGllbnQmKTsKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKQEAgLTQwOCw2ICs0MTksNyBAQCBwcml2
YXRlOgogICAgIExvY2sgbV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXg7CiAgICAgRGVxdWU8c3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+PiBtX2luY29taW5nTWVzc2FnZXM7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPE1lc3NhZ2VzVGhyb3R0bGVyPiBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXI7CisgICAg
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcCBtX3JlY2VpdmVRdWV1ZXM7CiAKICAgICAvLyBPdXRnb2lu
ZyBtZXNzYWdlcy4KICAgICBMb2NrIG1fb3V0Z29pbmdNZXNzYWdlc011dGV4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJl
Y2VpdmVRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRnVuY3Rpb25EaXNwYXRj
aGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNjZhMzJjZjk5ZTg1MDM1MGVh
MGMwMzM5YTg3NjRmZDY4MDE0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9GdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBDb25uZWN0aW9u
OworY2xhc3MgRGVjb2RlcjsKKworY2xhc3MgRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2Vp
dmVRdWV1ZSBmaW5hbCA6IHB1YmxpYyBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdl
UmVjZWl2ZVF1ZXVlKEZ1bmN0aW9uRGlzcGF0Y2hlciYgZGlzcGF0Y2hlciwgTWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlcikKKyAgICAgICAgOiBtX2Rpc3BhdGNoZXIoZGlzcGF0Y2hlcikKKyAgICAg
ICAgLCBtX3JlY2VpdmVyKHJlY2VpdmVyKQorICAgIHsKKyAgICB9CisgICAgfkZ1bmN0aW9uRGlz
cGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUoKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lk
IGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiYmIG1lc3NhZ2UpIGZpbmFsCisgICAgeworICAgICAgICBtX2Rpc3BhdGNoZXIuZGlz
cGF0Y2goW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgJnJlY2VpdmVyID0gbV9yZWNlaXZlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGNvbm5lY3Rpb24tPmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShyZWNlaXZlciwg
V1RGTW92ZShtZXNzYWdlKSk7CisgICAgICAgIH0pOworICAgIH0KK3ByaXZhdGU6CisgICAgRnVu
Y3Rpb25EaXNwYXRjaGVyJiBtX2Rpc3BhdGNoZXI7CisgICAgTWVzc2FnZVJlY2VpdmVyJiBtX3Jl
Y2VpdmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVjM2NlOWFmMmZk
MjY5NWQ1NWFkMmYwNjYyYTU4ZjFhMDgzMjZjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVz
cGFjZSBJUEMgeworCitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKKworY2xhc3Mg
TWVzc2FnZVJlY2VpdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVzc2FnZVJlY2Vp
dmVRdWV1ZSgpID0gZGVmYXVsdDsKKyAgICAvLyBDYWxsZWQgd2l0aCBDb25uZWN0aW9uIGluY29t
aW5nIG1lc3NhZ2UgbG9jayBoZWxkLgorICAgIC8vIE1heSBiZSBjYWxsZWQgZnJvbSBtdWx0aXBs
ZSB0aHJlYWRzLgorICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIElQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmZlMGU4MDQ1MzlkZmZmMTU1ZmRjYWY0MGUzYTA4YjA1
MDliMmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgiCisK
K25hbWVzcGFjZSBJUEMgeworCit2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwo
U3RvcmVUeXBlJiYgcXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpCit7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2Fz
dDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBBU1NFUlQoIW1f
cXVldWVzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcXVldWVzLmFkZChrZXksIFdURk1vdmUocXVl
dWUpKTsKK30KKwordm9pZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjpyZW1vdmUoUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBhdXRvIGtl
eSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRl
c3RpbmF0aW9uSUQpOworICAgIEFTU0VSVChtX3F1ZXVlcy5jb250YWlucyhrZXkpKTsKKyAgICBt
X3F1ZXVlcy5yZW1vdmUoa2V5KTsKK30KKworTWVzc2FnZVJlY2VpdmVRdWV1ZSogTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcDo6Z2V0KGNvbnN0IERlY29kZXImIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAg
aWYgKG1fcXVldWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0
byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSksIDApOworICAgIGF1dG8gaXQgPSBtX3F1ZXVlcy5maW5kKGtleSk7
CisgICAgaWYgKGl0ID09IG1fcXVldWVzLmVuZCgpKSB7CisgICAgICAgIGtleS5zZWNvbmQgPSBt
ZXNzYWdlLmRlc3RpbmF0aW9uSUQoKTsKKyAgICAgICAgaWYgKGtleS5zZWNvbmQpCisgICAgICAg
ICAgICBpdCA9IG1fcXVldWVzLmZpbmQoa2V5KTsKKyAgICB9CisgICAgaWYgKGl0ID09IG1fcXVl
dWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV1RGOjp2aXNp
dCgKKyAgICAgICAgV1RGOjptYWtlVmlzaXRvcigKKyAgICAgICAgICAgIFtdKGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJuIHF1ZXVlLmdl
dCgpOyB9LAorICAgICAgICAgICAgW10oTWVzc2FnZVJlY2VpdmVRdWV1ZSogcXVldWUpIHsgcmV0
dXJuIHF1ZXVlOyB9CisgICAgICAgICksIGl0LT52YWx1ZSk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMjQwZmYzNWM4ZWM3OTIwZjA1ZWZiY2QyNzI1YzA3YWI3Y2NlNDE5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorCituYW1lc3BhY2Ug
SVBDIHsKKworZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90OworCitjbGFzcyBNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwIHsKK3B1YmxpYzoKKyAgICBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
KCkgPSBkZWZhdWx0OworICAgIH5NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwKCkgPSBkZWZhdWx0Owor
CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZE1lc3NhZ2UoY29uc3QgRGVjb2RlciYgbWVzc2FnZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBRdWV1ZU1hcDo6aXNWYWxpZEtleShzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIG1l
c3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgfQorCisgICAgLy8gQWRkcyBhIHdpbGRjYXJk
IGZpbHRlciBpZiBkZXN0aW5hdGlvbklEID09IDAuCisgICAgdm9pZCBhZGQoTWVzc2FnZVJlY2Vp
dmVRdWV1ZSYgcXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpIHsgIGFkZEltcGwoU3RvcmVUeXBlKCZxdWV1ZSksIHJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCk7IH0KKyAgICB2b2lkIGFkZChzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2Vp
dmVRdWV1ZT4mJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkgeyBhZGRJbXBsKFN0b3JlVHlwZShXVEZNb3ZlKHF1ZXVlKSksIHJlY2VpdmVy
TmFtZSwgZGVzdGluYXRpb25JRCk7IH0KKyAgICB2b2lkIHJlbW92ZShSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgTWVzc2FnZVJlY2VpdmVRdWV1ZSogZ2V0KGNv
bnN0IERlY29kZXImKSBjb25zdDsKK3ByaXZhdGU6CisgICAgdXNpbmcgU3RvcmVUeXBlID0gVmFy
aWFudDxNZXNzYWdlUmVjZWl2ZVF1ZXVlKiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNlaXZl
UXVldWU+PjsKKyAgICB2b2lkIGFkZEltcGwoU3RvcmVUeXBlJiYsIFJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdXNpbmcgUXVldWVNYXAgPSBIYXNoTWFwPHN0ZDo6
cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFN0b3JlVHlwZT47CisgICAgUXVldWVNYXAgbV9xdWV1
ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDAwYWIxOWQ0NmRk
ZTRhZGEyMGQyOTNmZTgzYzI3OTBhZWNjNjAzOTAuLjU5YmRkOTEwMWM5MWRlZGM5ODI0NTVlNzQ5
YjI4MTQ0YzkzNTk0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQzLDYgKzE0Myw3IEBAIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8t
dW5pZnkKIFBsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuY3BwIEBuby11bmlmeQogUGxhdGZvcm0v
SVBDL0pTSVBDQmluZGluZy5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFw
LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcCBAbm8tdW5pZnkK
IFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYwZGJjYjRjMDE4
MWJmZjFiMzk4MjZlNTRiMDI3MTRiY2M2YjIxN2UuLmUxODhjYjkzYjQwZGI0NmU1MDkyZDVmMDM5
ZThjYmVlMzE4ZWQxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTMyNyw2ICsxMzI3LDEwIEBACiAJCTdBRkJEMzY3MjFFNTFCQUIw
MDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVE
QkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FG
QkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CiAJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZC
QyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmgg
Ki87IH07CisJCTdCNDgzRjFGMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4
M0YxQjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oICovOyB9Owor
CQk3QjQ4M0YyMDI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUMyNUNEREE5
QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLzsgfTsKKwkJN0I0ODNGMjEyNUNE
REE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2
IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovOyB9OworCQk3QjQ4M0YyMjI1Q0REQTlD
MDAxMjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUUyNUNEREE5
QjAwMTIwNDg2IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLzsg
fTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5J
bmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMzRTFB
NEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURp
Y3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ1MjQsNiArNDUyOCwxMCBAQAogCQk3QUZCRDM2RDIxRTU0
NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJzaXN0
ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZFMjFFNTQ2
RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBl
cnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFEQjI2
NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I0ODNGMUIyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0
ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVN
YXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4M0YxRTI1Q0REQTlCMDAx
MjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUw
MDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02OTExLDYgKzY5MTksNyBAQAogCQkJCUJDMDMyREEwMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNv
ZGVyLmggKi8sCiAJCQkJOUJEOEFCNDkyNTgyMEU1MjAwNTM4NkY4IC8qIEZvbnRSZWZlcmVuY2Uu
aCAqLywKIAkJCQk0MTUxRTVDMzFGQkI5MEE5MDBFNDdFMkQgLyogRm9ybURhdGFSZWZlcmVuY2Uu
aCAqLywKKwkJCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVy
TWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovLAogCQkJCUMwQ0U3MkFDMTI0N0U3OEQwMEJDMEVDNCAv
KiBIYW5kbGVNZXNzYWdlLmggKi8sCiAJCQkJMUM5QUYzNjEyNDEzNEQyMzAwRDNFQzAyIC8qIElt
YWdlRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUEzMUY2MEEzMjVDQzdEQjgwMEFGMTRGNCAvKiBJ
UENTZW1hcGhvcmUuY3BwICovLApAQCAtNjkxOSw2ICs2OTI4LDkgQEAKIAkJCQk5QjQ3OTA4RTI1
MzE1MUNDMDBFQzExQUIgLyogSlNJUENCaW5kaW5nLmggKi8sCiAJCQkJOUI0NzkwOEMyNTMxNEQ4
MzAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5oICovLAogCQkJCTFBQzRD
ODI4MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCAqLywKKwkJCQk3QjQ4M0YxQzI1
Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovLAorCQkJCTdCNDgzRjFE
MjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLywKKwkJCQk3
QjQ4M0YxQjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oICovLAog
CQkJCTFBM0VFRDExMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCAqLywKIAkJ
CQkxQTNFRUQwQzE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCAqLywK
IAkJCQkxQTNFRUQwRDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8s
CkBAIC0xMTY0NCw2ICsxMTY1Niw3IEBACiAJCQkJQ0Q3OEUxMTUxREI3RDdFRDAwMTRBMkRFIC8q
IEZ1bGxzY3JlZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMTlEMkVBMjA0NjQwNkYw
MDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQTkzREIwMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0
aWNQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjQ4M0YyMjI1Q0REQTlDMDAxMjA0
ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVwYWREYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE3NzUzRjExOEJBQkYwMDA3RDlFOUEgLyogR2VuZXJpY0NhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5RUM1MzJBMzI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9j
YXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTExNzM1LDYgKzExNzQ4LDggQEAK
IAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUI0NzkwOEQyNTMxNEQ4MzAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERl
c2NyaXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlEQ0NE
IC8qIE1lc3NhZ2VGbGFncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I0ODNGMjAyNUNEREE5QzAw
MTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNDgz
RjFGMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTNFRUQxMjE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTNFRUQwRjE2MUE1MzU0MDBBRUI0RjUgLyogTWVzc2FnZVJl
Y2VpdmVyTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCMDM3QTE4NUE3QzZBMDBFREY1MDEg
LyogTWVzc2FnZVNlbmRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzcyMiw2ICsxMzczNyw3IEBA
CiAJCQkJMDdFMTlFRkIyM0Q0MDFGMTAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxREYyOUU2NDI1N0YzN0Ez
MDAzQzI4QUYgLyogTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTlCNDc5MDkxMjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNzYWdlQXJn
dW1lbnREZXNjcmlwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I0ODNGMjEyNUNEREE5
QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MkE3ODEyMTJCNkE3MTAwRjQ5M0ZEIC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDkyQTc4MjIxMkI2QTcxMDBGNDkzRkQgLyogTWVzc2FnZVNlbmRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3QTIxMkI2QTYxMDBGNDkzRkQgLyogTW9k
dWxlLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419889</attachid>
            <date>2021-02-10 12:37:06 -0800</date>
            <delta_ts>2021-02-11 00:43:18 -0800</delta_ts>
            <desc>rebase2</desc>
            <filename>bug-221560-20210210223704.patch</filename>
            <type>text/plain</type>
            <size>73283</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5ZjZmYzEyODkzOTA3Y2RkODY0ZmY2
NzM4ZGM1OTU0MTkwNWMyY2IuLjY5NDQ1YmNmMzkzNjQ3ZTFiNzVjZjExN2EyZmE0NTg0ZTljNGYz
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMDItMDggIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW9uIGNsaWVudHMgc2hvdWxkIGJl
IGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRhIGluc3RlYWQgb2YgZW1iZWRkZWQg
aW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBGdW5jdGlvbkRpc3BhdGNoZXIgbm90IGJlIFJlZkNvdW50ZWRU
aHJlYWRTYWZlLgorICAgICAgICBUaGVyZSdzIG5vdGhpbmcgaW5oZXJlbnRseSByZWZlcmVuY2Ug
Y291bnRlZCBpbiB0aGUgZGVzY3JpcHRpb24KKyAgICAgICAgInNvbWV0aGluZyB0aGF0IGZ1bmN0
aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIuCisgICAgICAgIFRoaXMgYWxsb3dzIG90aGVyIGlu
dGVyZmFjZSBjb250cmFjdHMgdGhhbiAid2hlbiB0aGUgcmVjZWl2ZXIgcmVmZXJlbmNlcworICAg
ICAgICBGdW5jdGlvbkRpc3BhdGNoZXIsIGl0IHdpbGwgdGhyZWFkLXNhZmUgcmVmIGl0Ii4KKwor
ICAgICAgICBIYXZpbmcgYSBSZWZDb3VudGVkVGhyZWFkU2FmZSBpbiB0aGUgbWlkZGxlIG9mIGlu
aGVyaXRhbmNlIGNoYWluIGlzIHByb2JsZW1hdGljLCBhcworICAgICAgICBub3QgYWxsIGluaGVy
aXRhbmNlIGNoYWlucyBoYXZlIGl0LiBJdCBpcyBiZXR0ZXIgdG8gc2VwYXJhdGUgInNvbWV0aGlu
ZyB0aGF0CisgICAgICAgIGZ1bmN0aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIgZnJvbSAic29t
ZXRoaW5nIHRoYXQgbWF5IGJlIG93bmVkIGJ5IG11bHRpcGxlCisgICAgICAgIHRocmVhZHMiLgor
CisgICAgICAgIEluIHRoZSBjaGFuZ2UsIElQQzo6Q29ubmVjdGlvbiB3aWxsIHN0b3JlIGEgcmVm
ZXJlbmNlIHRvIEZ1bmN0aW9uRGlzcGF0Y2hlci4gSW4KKyAgICAgICAgdGhpcyBzY2VuYXJpbyBp
dCB3b3VsZCBiZSBjb25mdXNpbmcgdG8gdGhlIHJlYWRlciBpZiB0aGUgcmVmZXJlbmNlIGNvdW50
IHdvdWxkIGJlCisgICAgICAgIGNoYW5nZWQuIFRoZSBpbnRlcmZhY2UgaXMgImFkZC9yZW1vdmUi
LCB3aGljaCBpcyBpbmhlcmVudGx5IG5vdCByZWZjb3VudGVkLiBJZgorICAgICAgICB0aGUgcmVm
Y291bnQgd2FzIHBhcnQgb2YgdGhlIGludGVyZmFjZSwgdGhlbiBxdWVzdGlvbiB3b3VsZCBhcmlz
ZSBhcyBvZiB3aGF0IGl0CisgICAgICAgIHdhcyB1c2VkIGZvci4gSWYgRnVuY3Rpb25EaXNwYXRj
aGVyIHdhcyByZWZjb3VudGVkIGJ1dCB0aGUgcmVmY291bnQgd291bGQgbm90IGJlCisgICAgICAg
IG1vZGlmaWVkIGZvciB0aGlzIGNhc2UsIGl0IHdvdWxkIHJpc2UgcXVlc3Rpb25zLCB0b28uCisK
KyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg6CisgICAgICAgICogd3RmL1J1bkxv
b3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisKIDIwMjEtMDItMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBOb24tc3BlY2lh
bCBVUkxzIHNob3VsZCBoYXZlIGFuIG9wYXF1ZSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTBkMjc5ZWQ3
NDFhYTNiNWY4MzI2ZjZkMjQyNDczNTI1NTZkN2JkYS4uYWU3YTcxN2NjNWY5MzRkYjIxMDJkODk5
N2EwOTA5MjcwYWFkODM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDUgQEAKKzIwMjEtMDItMDgg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0
aW9uIGNsaWVudHMgc2hvdWxkIGJlIGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRh
IGluc3RlYWQgb2YgZW1iZWRkZWQgaW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQzo6TWVzc2FnZVJlY2Vp
dmVRdWV1ZSwgYW4gaW50ZXJmYWNlIHdoaWNoIG9idGFpbnMgbWVzc2FnZXMgZnJvbQorICAgICAg
ICB0aGUgbWVzc2FnZSByZWNlaXZlIHRocmVhZCBhbmQgZm9yd2FyZHMgdGhlbSB0byBjYWxsZXIg
YXMgZGF0YS4KKyAgICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0
byBza2lwIG1lc3NhZ2VzIHRoYXQgYXJlIHN0YWxlCisgICAgICAgIG9yIG9yaWdpbmF0aW5nIGZy
b20gYSBzZW5kZXIgd2hpY2ggaXMgaW5jb3JyZWN0LiBCZWZvcmUsIHRoZSBjbGllbnQKKyAgICAg
ICAgY291bGQgb25seSBnZXQgdGhlIG1lc3NhZ2VzIGFzIEZ1bmN0aW9uIHJlZmVyZW5jZXMsIGFu
ZCB0aG9zZSBjYW5ub3QKKyAgICAgICAgYmUgc2tpcHBlZCBhcyBpdCB3b3VsZCBiZSB1bmRlZmlu
ZWQgd2hhdCBub3QgZXhlY3V0aW5nIGEgZnVuY3Rpb24gbWVhbnMuCisKKyAgICAgICAgSVBDOjpN
ZXNzYWdlUmVjZWl2ZVF1ZXVlIGlzIGEgZ2VuZXJhbGl6YXRpb24gYW5kIHNpbXBsaWZpY2F0aW9u
IG9mIGN1cnJlbnQKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2
ZXJSZWZDb3VudGVkIGFuZAorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlci4gSXQgaGFzIGRpZmZlcmVudCByZWYtY291bnQKKyAgICAgICAgc2VtYW50aWNz
LCBpbiB0aGUgd2F5IHRoYXQgY2xpZW50IGNvbnRyb2xzIHRoZSBsaWZlLXRpbWUgd2l0aCBhZGQg
YW5kCisgICAgICAgIHJlbW92ZS4KKworICAgICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWUg
Zml4ZXMgbWVzc2FnZSByZW9yZGVyaW5nIGJ1ZyB3aXRoCisgICAgICAgIElQQzo6Q29ubmVjdGlv
bjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHdoZXJlIGZpcnN0IGZldyBtZXNzYWdlcworICAg
ICAgICB0aGF0IGFyZSByb3V0ZWQgdG8gbWFpbiB0aHJlYWQgbWVzc2FnZSBxdWV1ZSBjYW4gY29t
ZSBsYXRlciB0aGFuIHNvbWUKKyAgICAgICAgb3RoZXIgbWVzc2FnZSB0aGF0IGdldHMgaGFuZGxl
ZCBmcm9tIG1lc3NhZ2UgcmVjZWl2ZSB0aHJlYWQuCisKKyAgICAgICAgRml4ZXMgZmV3IGNhbGwt
c2l0ZXMgYXMgZXhhbXBsZXMgb2YgYWxsIHRoZSB0aGluZ3MgdGhhdCBhcmUgd3JvbmcgaW4KKyAg
ICAgICAgZXhpc3RpbmcgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIC8gVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyUmVmQ291bnRlZAorICAgICAgICBzaXRlcy4KKworICAgICAgICBEb2VzIG5vdCByZXBs
YWNlIGFsbCB1c2VzIG9mIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciAvCisgICAgICAgIFRocmVh
ZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgZHVlIHRvIHRoZSBzaXRlcyBhcHBlYXJpbmcgdmVy
eSBidWdneSwKKyAgICAgICAgYW5kIHRodXMgdGFraW5nIHRpbWUgdG8gZ2V0IHJpZ2h0IGFuZCBk
ZWxheWluZyB0aGUgcmV2aWV3LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6fkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NvcGVkRGlzY29ubmVjdDo6U2NvcGVkRGlz
Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNj
b3BlZERpc2Nvbm5lY3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlNjb3BlZERpc2Nvbm5lY3Q6On5TY29wZWREaXNjb25uZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NvcGVkRGlzY29ubmVj
dDo6cmVzZXQpOgorICAgICAgICBBZGQgcmV1c2FibGUgU2NvcGVkRGlzY29ubmVjdCBoZWxwZXIg
aW5zdGVhZCBvZiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCisgICAgICAgIC1zcGVjaWZpYyAid3Jh
cHBlciIuIFJlcGxhY2UgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyIHVuaXF1ZV9w
dHIKKyAgICAgICAgaG9sZGVyIHdpdGgganVzdCBtb3ZlIHNlbWFudGljcywgaW4gb3JkZXIgdG8g
YXZvaWQgaGVhcC1hbGxvY2F0aW5nIHRoZQorICAgICAgICB3cmFwcGVyLgorCisgICAgICAgIEFk
ZCBjb25uZWN0IC10eXBlIGNhbGwgaW4gYWRkaXRpb24gdG8gZGlzY29ubmVjdCB0eXBlIGNhbGws
IGR1ZSB0bworICAgICAgICB0aHJlYWRpbmcgYnVnIGluIGV4aXN0aW5nIGNvZGUsIHNlZSBiZWxv
dy4KKworCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIFN0b3JlIHJlZmVyZW5jZXMgdG8gdmFyaW91cyBv
YmplY3RzIHNvIHRoYXQgdGhleSdyZSBhY2Nlc3NlZCBpbiB0aHJlYWQtc2FmZSBtYW5uZXIuCisg
ICAgICAgIERvIG5vdCBhZGQgdGhlIGFkZE1lc3NhZ2VSZWNlaXZlUXVldWUgaW4gdGhlIGNvbnN0
cnVjdG9yLiBUaGUgZnVuY3Rpb24gdGFrZXMgYQorICAgICAgICBwdHIgdG8gaW50ZXJmYWNlLiBX
aGVuIHRoZSBjb25zdHJ1Y3RvciBydW5zLCB0aGUgdnB0ciBpcyBub3QgcG9wdWxhdGVkIHlldC4K
KyAgICAgICAgQ29ubmVjdGlvbiB3aWxsIHN0YXJ0IGRpc3BhdGNoaW5nIG1lc3NhZ2VzIHRocm91
Z2ggdGhlIHBhc3NlZCB2cHRyIGltbWVkaWF0ZWx5IHdoZW4KKyAgICAgICAgYWRkTWVzc2FnZVJl
Y2VpdmVRdWV1ZSBpcyBjYWxsZWQuIER1ZSB0byBjb21wb3VuZGluZyBidWdzIGFuZCBnZW5lcmFs
IHNsb3duZXNzLCB0aGlzIGJ1ZworICAgICAgICB3YXMgbm90IGhpdCBvZnRlbiBiZWZvcmUuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y29ubmVjdFdlYlByb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgQ29ubmVjdCB0aGUgbWVzc2FnZSBxdWV1ZSBhbmQgc3Rh
cnQgcmVjZWl2aW5nIHRoZSBtZXNzYWdlcy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorCisgICAgICAg
IFJlZ2FyZGluZzogICAgIHJlbW90ZVJlc291cmNlQ2FjaGUgPSBXVEZNb3ZlKG1fcmVtb3RlUmVz
b3VyY2VDYWNoZSkKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlIGNhbm5vdCBiZSBkZXN0
cm95ZWQgYnkgbW92aW5nIGl0IGF3YXkgZHVyaW5nIGRlc3RydWN0aW9uIGZyb20KKyAgICAgICAg
dGhlIG1haW4gdGhyZWFkLCBhcyB0aGUgdGFzayB0aHJlYWQgdGFzayBmdW5jdGlvbnMgd2lsbCBy
ZWZlciB0byB0aGUgb2JqZWN0IGFuZCB3b3VsZCB1c2UKKyAgICAgICAgdGhlIG1vdmVkLWF3YXkg
b2JqZWN0LiBKdXN0IG1vdmUgaXQgaW4gdGhlIHRhc2sgZnVuY3Rpb24uCisKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29u
c3QpOgorICAgICAgICBEbyBub3QgbmF2aWdhdGUgdG8gY29ubmVjdGlvbiB2aWEgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAgIEl0IHdpbGwgYmUgZGVzdHJveWVkIHVw
b24gZGlzY29ubmVjdCwgYnV0IHNlbmRzIG1heSBoYXBwZW4gYWZ0ZXIgdGhhdAorICAgICAgICBk
dXJpbmcgcGxheWJhY2sgb2YgZGlzcGF0Y2hlZCB0YXNrIGZ1bmN0aW9ucy4KKworICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbSk6CisgICAgICAg
IERvIG5vdCBuYXZpZ2F0ZSB0byB0aGUgcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgdmlh
IHRoZQorICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4gVGhpcyBvYmpl
Y3QgaGFzIGJlZW4gZGVzdHJveWVkIHVwb24gZGlzY29ubmVjdCwKKyAgICAgICAgYnV0IHRoZSBk
aXNwYXRjaGVkIHRhc2sgZnVuY3Rpb25zIHdpbGwgcGxheWJhY2sgaW4gdGhlIHBsYXliYWNrIHRo
cmVhZC4KKyAgICAgICAgQWxzbywgdGhlIGFjY2Vzc29ycyBuYXZpZ2F0aW5nIHVwd2FyZHMgaW4g
dGhlIHN0cnVjdHVyZSBhcmUgbm90IHRocmVhZC1zYWZlLgorCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnRlcm1pbmF0ZVdlYlByb2Nlc3MpOgorICAgICAgICBEbyBu
b3QgbmF2aWdhdGUgdmlhIGdwdVByb2Nlc3NDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBpdCBtaWdo
dCBiZSBkZXN0cm95ZWQgYXQgdGhlIHRpbWUKKyAgICAgICAgb2YgZGlzcGF0Y2hpbmcgdGhlIHRl
cm1pbmF0ZVdlYlByb2Nlc3MuIEluc3RlYWQsIHBvc3QgYSBtYWluIHRocmVhZCB0YXNrCisgICAg
ICAgIHdpdGggd2VhayBwdHIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bWVkaWFQbGF5ZXIp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgUmVtb3ZlIHRoZSB0aHJlYWQtc2FmZSBiZWhhdmlvciB0aGF0IHdvdWxk
IGdpdmUgZmFsc2UgaW1wcmVzc2lvbiBvbgorICAgICAgICB0aHJlYWQgc2FmZXR5LiBJdCBhcHBl
YXJzIGFzIGlmIHRoZSBNZWRpYVBsYXllciByZXR1cm5lZCBieQorICAgICAgICBXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZWRpYVBsYXllcigpIGlzIG5vdCB0aHJlYWQt
c2FmZS4KKyAgICAgICAgSXQgc2VlbXMgYXMgaWYgdGhlIG1lZGlhIHBsYXllciBjb3VsZCBoYXZl
IGJlZW4gbXV0YXRlZCBieSB0aGUgcHJveHkKKyAgICAgICAgY2FsbCBmdW5jdGlvbnMgaW4gbWFp
biB0aHJlYWQgZHVyaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgdGhyZWFkCisgICAgICAgIHNp
bXVsdGFuZW91c2x5IHBhaW50aW5nIGl0IHRvIGNhbnZhcy4gSW5zdGVhZCwgcGFpbnQgdGhlIE1l
ZGlhUGxheWVyCisgICAgICAgIGZyb20gVUkgdGhyZWFkLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5h
Z2VyOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmRp
c2Nvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpkaXNjb25uZWN0
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OnJlbGVhc2VMYXllcik6CisgICAg
ICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlci5oOgorCisgICAgICAgIEZpeCBtb3N0bHkgc2ltaWxhciB0aHJlYWRpbmcgYnVncyBhcyBl
eHBsYWluZWQgYWJvdmUuCisgICAgICAgIE5vdGFibGUgZGlmZmVyZW5jZSBpcyB0aGUgYnVnIGFi
b3V0IH5SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoKQorICAgICAg
ICBjYWxsaW5nIChidWdneSkgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKCk6CisgICAgICAg
IHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlciBpcyBhIHJlZi1jaGFuZ2luZyBmdW5jdGlvbiBv
biB0aGUgb3duZXIsIHdoaWNoIGlzCisgICAgICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlci4gU28gaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0aGF0IGEgZGVzdHJ1
Y3RvcgorICAgICAgICB3b3VsZCBkZWNyZWFzZSB0aGUgcmVmY291bnQuCisgICAgICAgIEluIGFk
ZGl0aW9uLCBDb25uZWN0aW9uIGRpc3BhdGNoZXMgbWVzc2FnZXMgdW50aWwgcmVtb3ZlVGhyZWFk
TWVzc2FnZVJlY2VpdmVyLiBJZiB0aGUKKyAgICAgICAgY2FsbCBpcyBtYWRlIHdoaWxlIG1haW4g
dGhyZWFkIGlzIGluc2lkZSBkZXN0cnVjdG9yLCBpdCBtZWFucyB0aGF0IHJlZiBjb3VudCBpcyBi
ZWluZworICAgICAgICBleHRlbnNpdmVseSBtb2RpZmllZCBkdXJpbmcgZGVzdHJ1Y3Rpb24gYW5k
IHRhc2tzIGFyZSBiZWluZyBzY2hlZHVsZWQgd2hlbiB0aGV5IHNob3VsZAorICAgICAgICBub3Qg
YmUuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Z1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZl
UXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgu
CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaDogQ29waWVkIGZy
b20gU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmguCisgICAgICAgICogUGxhdGZv
cm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VS
ZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXA6OmdldCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZl
UXVldWVNYXAuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVy
LmguCisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmlzVmFsaWRNZXNzYWdl
KToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkKToKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAyMS0wMi0wNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYkdMIElQQyBtZXNzYWdlcyBhcmUgZGVsaXZlcmVkIG91dCBvZiBvcmRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaAppbmRleCBkMDlhNTIyMzRmOGE3YTJkZjhjNWYz
N2JjNzFkMzFkMzlhYzQ4YWI3Li43Yzg2NDcxOTM2MDEwMjdmZDcyZjE2YjkxZTY1YzkwMGZiZWQ1
YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaApAQCAtMjYsMTQgKzI2LDEzIEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogLy8gRnVuY3Rp
b25EaXNwYXRjaGVyIGlzIGFuIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIG9mIHNvbWV0aGluZyB0
aGF0IGZ1bmN0aW9ucyBjYW4gYmUKIC8vIGRpc3BhdGNoZWQgdG8uIFRoaXMgY2FuIGZvciBleGFt
cGxlIGJlIGEgcnVuIGxvb3Agb3IgYSB3b3JrIHF1ZXVlLgogCi1jbGFzcyBGdW5jdGlvbkRpc3Bh
dGNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnVuY3Rpb25EaXNwYXRjaGVyPiB7
CitjbGFzcyBGdW5jdGlvbkRpc3BhdGNoZXIgewogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5GdW5jdGlvbkRpc3BhdGNoZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCmluZGV4IDA0NjZk
NDQ1OWQ2Yjc0YmNjMWNlNGQ4NDIwMzczNjg3MjYwN2NhMzQuLjk1ZmY5ZGM1MjAzYzIxNmExOTNl
ZDRhNTZkYzRmYWJkOWZiODFhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3Au
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTY0LDcgKzY0LDcgQEAgdXNpbmcg
UnVuTG9vcE1vZGUgPSB1bnNpZ25lZDsKICNkZWZpbmUgRGVmYXVsdFJ1bkxvb3BNb2RlIDAKICNl
bmRpZgogCi1jbGFzcyBSdW5Mb29wIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7
CitjbGFzcyBSdW5Mb29wIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciwgcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFJ1bkxvb3A+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSdW5Mb29wKTsKIHB1YmxpYzoKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWlu
IHRocmVhZC4KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUnVuTG9vcCogd2ViSWZFeGlzdHMoKTsKICNlbmRpZgogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBpc01haW4oKTsKLSAgICB+UnVuTG9vcCgpIGZpbmFsOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB+UnVuTG9vcCgpIGZpbmFsOwogCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQo
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oCmluZGV4IDVkNjk0YmQ4YzNmNWE0YTVjMDBjOTQyZjlkZDQzM2Q3
Yzg0NDVlMjMuLjIwMGY5NjljMjc2Yzc0ZmJmMjdmMzU0ZDlhOTE3YjQ5MDYwZmM1YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dv
cmtRdWV1ZS5oCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1jbGFzcyBX
b3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKK2NsYXNzIFdvcmtR
dWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIsIHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxXb3JrUXVldWU+IHsKIAogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBRT1MgPSBUaHJlYWQ6OlFPUzsK
IAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNv
bnN0IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7
Ci0gICAgfldvcmtRdWV1ZSgpIGZpbmFsOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+V29ya1F1
ZXVlKCkgZmluYWw7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaChGdW5j
dGlvbjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3Bh
dGNoQWZ0ZXIoU2Vjb25kcywgRnVuY3Rpb248dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5
YzE3YzQ3YTA4MGYwNzJkZmVhYzE3N2I5OTE3YWUxMDFlNzBkMDczLi5kYWJlZDg3YzAzODBjNWRm
ZjkzMmU1YjJiMzA0YWQ3YzFlYWVjMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xOTAsOCArMTkwLDgg
QEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KQogICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2Vy
LT5jbG9zZSgpOwotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci0+Y2xvc2Uo
KTsKKyAgICBtX2F1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXIucmVzZXQoKTsKKyAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIucmVzZXQoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIG1fbGliV2ViUlRDQ29kZWNzUHJveHktPmNs
b3NlKCk7CkBAIC0yOTgsNyArMjk4LDcgQEAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmF1ZGlvU2Vzc2lvblByb3h5KCkKIHZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0
U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSk7CisgICAgICAgIHJldHVybiBTY29wZWREaXNjb25uZWN0IHsgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VtZURpc3Bs
YXlMaXN0U2VtYXBob3JlKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3Vs
dCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQpAQCAtMzA5LDE2ICszMDksNiBAQCB2b2lkIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAot
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
PiYmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQoV1RGTW92ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5k
aXNjb25uZWN0KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggN2JhZGQzNzc2OWNm
NTJmZDU0MGI0ZmI3NzdkMDg4NzQ2NjA0ZjU0Zi4uZTAwN2ZiYWVmYzk3OWFlMWI3ZGZmMDA0NWQ1
ZmNhZWJjMzljOTJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNjQsNiArMTY0LDQ2IEBAIHByaXZhdGU6CiAg
ICAgLy8gTm93UGxheWluZ01hbmFnZXI6OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGUsIE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogCisgICAgLy8gU2NvcGVk
IGhvbGRlciBmb3IgYW4gb2JqZWN0IHRoYXQgaXMKKyAgICAvLyAxKSBoZWxkIGJ5IEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MKKyAgICAvLyAyKSBpbnRlcmVzdGVkIGFib3V0IHdoZW4gdGhlIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29ubmVjdGlvbiBzdG9wcy4KKyAgICAvLyBVc2VmdWwg
bW9zdGx5IGZvciBjcm9zcy10aHJlYWQgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0cy4gVXBvbiBk
aXNjb25uZWN0aW5nLCB0aGUgb2JqZWN0IHJlY2VpdmVzCisgICAgLy8gdGhlIHJlZmVyZW5jZSB1
c2VkIGJ5IHRoZSBob2xkZXIgdG8gaG9sZCB0aGUgb2JqZWN0LCBwcm92aW5nIGEgbm9uLXRyYXNo
aW5nIGRlc3RydWN0aW9uIGJlaGF2aW9yIGZvcgorICAgIC8vIHBvc3RpbmcgYSBwcm90ZWN0IHJl
ZiBhbG9uZyB0aGUgcG90ZW50aWFsIGNsZWFudXAgdGFzayBmb3Igc3BlY2lmaWMsIGxpbWl0ZWQg
Y2FzZXMuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBjbGFzcyBTY29wZWREaXNjb25u
ZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNjb3BlZERpc2Nvbm5lY3QoKSA9IGRlZmF1bHQ7
CisgICAgICAgIFNjb3BlZERpc2Nvbm5lY3QoUmVmPFQ+JiYgb2JqZWN0KQorICAgICAgICAgICAg
OiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fb2Jq
ZWN0LT5jb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICAgICAgfQorICAgICAgICBT
Y29wZWREaXNjb25uZWN0KFNjb3BlZERpc2Nvbm5lY3QmJiBvdGhlcikKKyAgICAgICAgICAgIDog
bV9vYmplY3Qoc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVjdCwgbnVsbHB0cikpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICBTY29wZWREaXNjb25uZWN0JiBvcGVyYXRvcj0oU2NvcGVk
RGlzY29ubmVjdCYmIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcyAhPSAm
b3RoZXIpIHsKKyAgICAgICAgICAgICAgICByZXNldCgpOworICAgICAgICAgICAgICAgIG1fb2Jq
ZWN0ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVjdCwgbnVsbHB0cik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICAgICAgflNjb3Bl
ZERpc2Nvbm5lY3QoKQorICAgICAgICB7CisgICAgICAgICAgICByZXNldCgpOworICAgICAgICB9
CisgICAgICAgIHZvaWQgcmVzZXQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fb2Jq
ZWN0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5kaXNj
b25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24obV9vYmplY3QucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICBSZWZQdHI8VD4gbV9vYmplY3Q7CisgICAg
fTsKICAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKQEAgLTE4MSw4ICsyMjEsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eTsKLSAgICBSZWY8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyPiBtX2F1ZGlvVHJhY2tSZW5kZXJlck1hbmFnZXI7Ci0gICAgUmVmPFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlcjsKKyAgICBTY29wZWREaXNjb25uZWN0PFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlcj4gbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyOworICAgIFNjb3BlZERp
c2Nvbm5lY3Q8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRF
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcj4gbV9yZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKICNlbmRpZgpAQCAtMTkzLDE3ICsyMzMsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9hbGxvd3NEaXNwbGF5Q2FwdHVyZSB7IGZhbHNlIH07CiAjZW5kaWYK
IAotICAgIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyIHsKLSAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJik7Ci0gICAgICAg
IH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcigpOwotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsK
LSAgICB9OwotCi0gICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kV3JhcHBlcj4+OworICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAg
PSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBTY29wZWREaXNjb25uZWN0PFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdXNpbmcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggOGNhODMwYWY2Yzk4MjdlZDZmZmRkNTQwNDE2ZWVkODc2
YjE0NzA5My4uMTllZmY2OTE4YTExYzE1ZTk1YTRiMjFlNDk0Y2ZlOGU2M2YzMjNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiAjZGVmaW5lIFRFUk1JTkFU
RV9XRUJfUFJPQ0VTU19XSVRIX01FU1NBR0UobWVzc2FnZSkgXAogICAgIFJFTEVBU0VfTE9HX0ZB
VUxUKElQQywgIlJlcXVlc3RpbmcgdGVybWluYXRpb24gb2Ygd2ViIHByb2Nlc3MgJSIgUFJJdTY0
ICIgZm9yIHJlYXNvbjogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjbWVzc2FnZSk7IFwK
LSAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsK
KyAgICB0ZXJtaW5hdGVXZWJQcm9jZXNzKCk7CiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3Nl
cnRpb24sIG1lc3NhZ2UpIGRvIHsgXAogICAgIGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7
IFwKQEAgLTY4LDMyICs2OCwzNyBAQCBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlBybwogCiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZCB3b3JrIHF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1
ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQotICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obWFrZVJl
ZihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSkpCiAgICAgLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3Jlc3VtZURpc3BsYXlM
aXN0U2VtYXBob3JlKFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKQorICAgICwg
bV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtlV2Vha1B0cihncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkpKQorICAgICwgbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fd29ya1F1ZXVlLCB0aGlzLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0
KCkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCgpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpID0g
ZGVmYXVsdDsKKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb25uZWN0V2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oKQogewotICAgIC8vIE1ha2Ugc3VyZSB3ZSBkZXN0cm95IHRoZSBSZXNvdXJj
ZUNhY2hlIG9uIHRoZSBXb3JrUXVldWUgc2luY2UgaXQgZ2V0cyBwb3B1bGF0ZWQgb24gdGhlIFdv
cmtRdWV1ZS4KLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3JlbW90ZVJlc291cmNlQ2FjaGUg
PSBXVEZNb3ZlKG1fcmVtb3RlUmVzb3VyY2VDYWNoZSldIHsgfSk7CisgICAgbV9jb25uZWN0aW9u
LT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKG1fd29ya1F1ZXVlLCAqdGhpcywgTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkaXNjb25uZWN0KCkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlzY29u
bmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJl
ZkZyb21Db25uZWN0aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAg
ICAvLyBUaGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBkZXN0cnVjdG9yIHdvbid0IGJlIGNhbGxl
ZCB1bnRpbCBkaXNjb25uZWN0KCkgaXMgY2FsbGVkIGFuZCB3ZSB1bnJlZ2lzdGVyIG91cnNlbHZl
cyBhcyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBiZWNhdXNlCi0gICAgLy8gdGhlIElQQzo6
Q29ubmVjdGlvbiByZWZzIGl0cyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLgotICAgIG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnJlbW92ZVdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIC8vIFRoZSBiZWxvdyBjbGVhbnVwIHRhc2sg
aXMgdGhlIGxhc3QgdGFzayB0aGF0IHdpbGwgcnVuLiBUaGUgcmVmIGd1YXJhbnRlZXMgdGhhdCB0
aGUgbm9uLXByb3RlY3RlZCB0YXNrcyBlbHNld2hlcmUgaW4gdGhlIGNvZGUKKyAgICAvLyBoYXZl
IGFuIGFsaXZlIG9iamVjdC4KKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0aW9uKV0geworICAgICAgICAvLyBNYWtlIHN1cmUg
d2UgZGVzdHJveSB0aGUgUmVzb3VyY2VDYWNoZSBvbiB0aGUgV29ya1F1ZXVlIHNpbmNlIGl0IGdl
dHMgcG9wdWxhdGVkIG9uIHRoZSBXb3JrUXVldWUuCisgICAgICAgIFdURk1vdmUocHJvdGVjdGVk
VGhpcy0+bV9yZW1vdGVSZXNvdXJjZUNhY2hlKTsKKyAgICB9KTsKIH0KIAogSVBDOjpDb25uZWN0
aW9uKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuICZtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rp
b24oKTsKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLnB0cigpOwogfQogCiB1aW50NjRfdCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CkBA
IC0xMDksMTIgKzExNCwxNyBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVk
aWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdyYXBoaQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBhdXRvJiBtZWRpYUl0ZW0gPSBpdGVtLmdldDxEaXNwbGF5TGlzdDo6
UGFpbnRGcmFtZUZvck1lZGlhPigpOwotICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVy
KG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpOwotICAgIGlmICghcGxheWVyKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRp
YUl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKKyAgICBjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQoW3dlYWtSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSA9IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHksICZjb250
ZXh0LCAmcmVzdWx0LCAmbWVkaWFJdGVtXSgpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5ID0gd2Vha1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmdldCgpKSB7CisgICAgICAgICAgICBhdXRvIHBsYXllciA9IHJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LT5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKKyAgICAgICAg
ICAgIGlmICghcGxheWVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNv
bnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlvbigp
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAt
NDgyLDYgKzQ5MiwxOSBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6dGVybWluYXRlV2Vi
UHJvY2VzcygpCit7CisgICAgLy8gRHVyaW5nIHRoZSBjYWxsIHRpbWUsIHRoZSBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIGlzIGFsaXZlLCBiZWNhdXNlCisgICAgLy8gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBpcyBvd25lZCBieSB0aGUgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4gSG93ZXZl
ciwgZHVyaW5nCisgICAgLy8gY2FsbCB0aW1lIG9uIG1haW4gdGhyZWFkLCB0aGUgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBtaWdodCBhbHJlYWR5IGJlIGRlc3Ryb3llZC4KKyAgICAvLyBXZSBj
YW5ub3QgY2FsbCBmcm9tIHRoZSB3b3JrIHF1ZXVlLCBzaW5jZSB0aGVyZSBpcyBubyB0aHJlYWQt
c2FmZSByZWZlcmVuY2Ugbm9yIGlzIHRoZQorICAgIC8vIGNhbGwgaXRzZWxmIHRocmVhZC1zYWZl
LgorICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzc10geworICAgICAgICBpZiAoYXV0byogaW5z
dGFuY2UgPSBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQorICAgICAgICAgICAgaW5z
dGFuY2UtPnRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaAppbmRleCBkNzUxZmI5NWJmYjRjYjg5NTQ0ODY1YzMxZTMxODBjOTEzOTQ1OWZhLi5iMDI0
OThjMmVkYjdmN2MyMWQxNmQyNzVhYmE1ZmFhMGRkY2RlZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmgKQEAgLTU4LDExICs1OCwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xh
c3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAKLWNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgZmluYWwKICAgICA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIKLSAgICAsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgeworICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorICAgICwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGlu
Z0NsaWVudAorICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ+IHsKIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7
CkBAIC03OSwxMiArODEsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZl
clRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7CiAKLSAgICB2b2lk
IGRpc2Nvbm5lY3QoKTsKKyAgICB2b2lkIGNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpOwor
ICAgIHZvaWQgZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiYmKTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBD
OjpTZW1hcGhvcmUmJik7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90
KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIGZpbmFsOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FS
Tl9VTlVTRURfUkVUVVJOIGRlY29kZUFuZENyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKQEAgLTEwMiwxMiArMTA1LDEyIEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0
UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CiAKICAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIuCi0gICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgot
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
ZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2b2lkIGNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTEyMiw2ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQnVmZmVySWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsK
KwogICAgIHN0cnVjdCBQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24gewogICAgICAgICBHUFVQcm9j
ZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyBhcmd1bWVudHM7CiAgICAgICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllcjsKQEAgLTE0MCwxMSArMTQ1LDEzIEBAIHByaXZhdGU6CiAKICAgICBSZWY8V29y
a1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZTsKLSAgICBSZWY8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVu
ZGluZ1dha2V1cEluZm87CiAgICAgSVBDOjpTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZTsKKyAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCBmYTI0YTJh
YWJlMjQ1YjkwM2E4OTc4MDMxNTljNWYzZmZhOTM3ZmRkLi40N2FlNWI1NmFhZGFjMjY2ZjFlY2Zh
YmIzZjA5Zjg0M2JkYjdlMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAg
LTYzLDcgKzYzLDYgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRl
TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW4KIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hpZXNM
b2NrKTsKICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAKICAg
ICBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbjsKQEAg
LTc4LDcgKzc3LDYgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRl
TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW4KIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OmRlbGV0ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hpZXNMb2NrKTsKICAgICBpZiAoYXV0byBwcm94eSA9
IG1fcHJveGllcy50YWtlKGlkZW50aWZpZXIpKQogICAgICAgICBwcm94eS0+aW52YWxpZGF0ZSgp
OwogfQpAQCAtMTg1LDEwICsxODMsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpkaWRSZWNlaXZlU3luY1BsYXllck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJgogICAgICAg
ICBwbGF5ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNv
ZGVyKTsKIH0KIAotLy8gTWF5IGdldCBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KIFJl
ZlB0cjxNZWRpYVBsYXllcj4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lZGlhUGxh
eWVyKGNvbnN0IE1lZGlhUGxheWVySWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOwogICAgIGF1dG8gcmVzdWx0cyA9IG1f
cHJveGllcy5maW5kKGlkZW50aWZpZXIpOwogICAgIGlmIChyZXN1bHRzICE9IG1fcHJveGllcy5l
bmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdHMtPnZhbHVlLT5tZWRpYVBsYXllcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAppbmRleCAyMzdhZjliNjgwMTBjNjI0Mjk2OGVmZDBlNDBi
NTRkNDhkMGY0NTA5Li5mNzZjM2JhMWUyOWE3ZDA3NDExNTE4ZTMxYTQxOWFhMjNhNTYyMmUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
IlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
UGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllcklkZW50aWZpZXIuaD4KLSNp
bmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC00NSw2ICs0NCw3IEBAIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXll
clByb3h5Q29uZmlndXJhdGlvbjsKIAogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4KICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKQEAgLTg3LDcg
Kzg3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmJiwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik7CiAgICAgdm9pZCBz
dXBwb3J0c0tleVN5c3RlbShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAKLSAgICBMb2NrIG1fcHJveGllc0xvY2s7CiAgICAgSGFzaE1h
cDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVN
ZWRpYVBsYXllclByb3h5Pj4gbV9wcm94aWVzOwogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwCmluZGV4IGJjYjRiYTVjYmJjNGQz
NDcwNTlkY2ZlOGFiOGZjYjE4ZmY1YWQyZmUuLjJlZjQ4M2EwOGNjNDZiNWQ2ZDE0OWMyNjI3NWVi
MzZiYWI4NWFhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVk
ZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlck1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtMzgsMjkgKzM5LDI2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6UmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgOiBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fY29ubmVjdGlvbihjb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSkKICAgICAsIG1fcXVldWUoY29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNzKCkuYXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJR
dWV1ZSgpKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuYWRk
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKLSAgICBtX2Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCi1SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXI6On5SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXIoKQotewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkucmVtb3Zl
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY29ubmVjdGlvbigpLnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpOwotfQorUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5h
Z2VyOjp+UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKCkgPSBkZWZh
dWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6
Y2xvc2UoKQordm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6
OmNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgZGlzcGF0Y2hUb1RocmVhZChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIG1fcmVuZGVy
ZXJzLmNsZWFyKCk7Ci0gICAgfSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2
ZVF1ZXVlKG1fcXVldWUuZ2V0KCksICp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKG1fcXVldWUuZ2V0KCksICp0aGlzLCBNZXNzYWdl
czo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlcjo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2sp
Cit2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6ZGlzY29u
bmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXI+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7Ci0gICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZShNZXNzYWdlczo6UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0aW9uKV0geworICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5tX3JlbmRlcmVycy5jbGVhcigpOworICAgIH0pOwogfQogCiBib29s
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6ZGlzcGF0Y2hNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgKaW5k
ZXggOWYwZjY1MmY2OTM2MDIwMDgzM2ViODlkNjNhNDZkMWVkNWVlOWU5NS4uYjRlN2M5MzI1MTAz
NmFjOWQxMWRhNzUyZGVhOGE2MDAzZDc0MDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oCkBAIC0yOSw0NSArMjksNDIgQEAKIAogI2lu
Y2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIENvbm5l
Y3Rpb247CiBjbGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyOwogCi1jbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXJSZWZDb3VudGVkIHsKK2NsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlciBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1h
bmFnZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gY3JlYXRl
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIHByb2Nlc3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKHByb2Nlc3MpKTsg
fQogICAgIH5SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoKTsKIAot
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlbmRlcmVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAotICAgIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
b25uZWN0aW9uKCk7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2
b2lkIGNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIHZvaWQgZGlzY29ubmVjdFdl
YlByb2Nlc3NDb25uZWN0aW9uKFJlZjxSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXI+JiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAK
LSAgICAvLyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQg
ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwotCiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgY3JlYXRlUmVuZGVyZXIo
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVh
c2VSZW5kZXJlcihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklkZW50aWZpZXIpOwogCi0g
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOwor
ICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8V29ya1F1ZXVl
PiBtX3F1ZXVlOwogICAgIEhhc2hNYXA8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI+PiBtX3JlbmRlcmVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcAppbmRleCA2MWI4OTBkYzc4NjdjMzNiMDA1ZjIyZTkzYmIxYWY0N2RkZDNi
MTdjLi5lMzY5MDMwNjcwYzA3NDcwZDJhZGU3NmZiMGRhMTM2ODAzNDg2YjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTM5LDMyICszOSwy
NyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICA6IG1fY29u
bmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQotICAgICwgbV9j
b25uZWN0aW9uKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKQorICAgIDog
bV9jb25uZWN0aW9uKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKQogICAg
ICwgbV9xdWV1ZShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdwdVByb2Nlc3MoKS52aWRlb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclF1ZXVlKCkpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlz
KTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFRocmVhZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKIH0KK1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6On5SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyKCkgPSBkZWZhdWx0OwogCi1SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
Ojp+UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpCit2b2lkIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlv
bigpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5yZW1vdmVU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY29ubmVjdGlvbigpLnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KTsKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUobV9xdWV1ZS5nZXQo
KSwgKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1
ZXVlKG1fcXVldWUuZ2V0KCksICp0aGlzLCBNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAotdm9pZCBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjbG9zZSgpCit2b2lkIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmRpc2Nvbm5lY3RXZWJQcm9jZXNzQ29ubmVj
dGlvbihSZWY8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4mJiByZWZGcm9t
Q29ubmVjdGlvbikKIHsKLSAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbbGF5ZXJzID0g
V1RGTW92ZShtX2xheWVycyldIHsgfSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29ubmVjdGlvbildIHsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbbGF5ZXJzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzLT5tX2xheWVycyldIHsgfSk7
CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCi17Ci0gICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShjYWxsYmFjaykpOwotfQotCiBib29sIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoIWRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKQpAQCAtODIsNyArNzcsNyBAQCB2b2lkIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcgogICAgICAgICBhdXRvIGxheWVyID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpjcmVhdGUoaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAg
IGF1dG8mIGxheWVyUmVmZXJlbmNlID0gKmxheWVyOwogICAgICAgICBsYXllclJlZmVyZW5jZS5p
bml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNpemUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIsIGxh
eWVyID0gV1RGTW92ZShsYXllcildKGF1dG8gbGF5ZXJJZCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIg
PSBXVEZNb3ZlKGxheWVyKSwgbGF5ZXJJZCA9IFdURk1vdmUobGF5ZXJJZCldKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50
aWZpZXIsIGxheWVyID0gV1RGTW92ZShsYXllciksIGxheWVySWQgPSBXVEZNb3ZlKGxheWVySWQp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sYXllcnMuY29udGFpbnMo
aWRlbnRpZmllcikpOwogICAgICAgICAgICAgICAgIG1fbGF5ZXJzLmFkZChpZGVudGlmaWVyLCBX
VEZNb3ZlKGxheWVyKSk7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShsYXllcklk
KSk7CkBAIC05NCw3ICs4OSw3IEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlcjo6Y3JlYXRlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCiB2b2lkIFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OnJlbGVhc2VMYXllcihTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyXSgp
IG11dGFibGUgewotICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmllcl0geworICAgICAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGlkZW50aWZpZXJdIHsKICAgICAgICAgICAgIEFTU0VSVChtX2xheWVycy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtsYXllciA9IG1fbGF5ZXJz
LnRha2UoaWRlbnRpZmllcildIHsgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAppbmRleCBhMzI0YWVjOTU3NDFhYTc4NmNhNGIwMDIz
ZjY5MmExOTU3MTE0NTYwLi44OTI4ZmNmYTI1NGYwNzlhZTQwZjc0OWVlMThjZTBjZGYxNzZiZjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaApAQCAtNDYs
MjAgKzQ2LDE4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKIAotY2xhc3Mg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgeworY2xhc3MgUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBmaW5hbCA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
KGNvbm5lY3Rpb24pKTsgfQogICAgIH5SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyKCk7CiAKLSAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBjb25uZWN0V2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RXZWJQcm9jZXNzQ29ubmVjdGlvbihSZWY8
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4mJik7CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAKLSAgICAvLyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1l
c3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+
JiYpIGZpbmFsOwotCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAg
IGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpA
QCAtNjgsNyArNjYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTGF5ZXIoU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgYm9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJ
bnRTaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2spOwogICAgIHZvaWQgcmVsZWFzZUxheWVyKFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIpOwogCi0gICAgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIEhh
c2hNYXA8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4+IG1fbGF5ZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCBjZGFmMTNhNWQ2YjJhZDBhNTE3Njdi
ZGMwNTExOTBkMWVmYzQ2YzJlLi5jNWM2MjY3YzhjNWM2ZjdlMzRhMzE5MTBkYTI5NzllMjRmNTll
NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
IAorI2luY2x1ZGUgIkZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSA8
bWVtb3J5PgpAQCAtNDA1LDYgKzQwNiw3NCBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoVGhy
ZWFkTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShUaHJlYWRNZXNzYWdlUmVjZWl2ZXImIHRocgogICAg
ICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKK25hbWVzcGFj
ZSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0RlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
Pj4gZmlsdGVyV2l0aE1lc3NhZ2VSZWNlaXZlUXVldWUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
VCYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+JiYgaW5jb21pbmdNZXNz
YWdlcykKK3sKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IHJlc3Q7CisgICAg
Zm9yIChhdXRvJiBtZXNzYWdlIDogaW5jb21pbmdNZXNzYWdlcykgeworICAgICAgICBpZiAobWVz
c2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IHJlY2VpdmVyTmFtZSAmJiAobWVzc2FnZS0+
ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQgfHwgIWRlc3RpbmF0aW9uSUQpKQorICAg
ICAgICAgICAgcmVjZWl2ZVF1ZXVlLmVucXVldWVNZXNzYWdlKGNvbm5lY3Rpb24sIFdURk1vdmUo
bWVzc2FnZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN0LmFwcGVuZChXVEZNb3Zl
KG1lc3NhZ2UpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Q7Cit9Cit9CisKK3ZvaWQgQ29ubmVj
dGlvbjo6YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVlJiByZWNlaXZl
UXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
Cit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICBtX2luY29taW5nTWVzc2FnZXMg
PSBmaWx0ZXJXaXRoTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgcmVjZWl2ZVF1ZXVlLCByZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIFdURk1vdmUobV9pbmNvbWluZ01lc3NhZ2VzKSk7Cisg
ICAgbV9yZWNlaXZlUXVldWVzLmFkZChyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGlu
YXRpb25JRCk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShG
dW5jdGlvbkRpc3BhdGNoZXImIGRpc3BhdGNoZXIsIE1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIs
IFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIHJlY2VpdmVRdWV1ZSA9IG1h
a2VVbmlxdWU8RnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZT4oZGlzcGF0Y2hl
ciwgcmVjZWl2ZXIpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3Nh
Z2VzTXV0ZXgpOworICAgIG1faW5jb21pbmdNZXNzYWdlcyA9IGZpbHRlcldpdGhNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKCp0aGlzLCAqcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9u
SUQsIFdURk1vdmUobV9pbmNvbWluZ01lc3NhZ2VzKSk7CisgICAgbV9yZWNlaXZlUXVldWVzLmFk
ZChXVEZNb3ZlKHJlY2VpdmVRdWV1ZSksIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9
CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgICAgIG1fcmVjZWl2ZVF1ZXVl
cy5yZW1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgfQorfQor
Cit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdl
UmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlciwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgZGVj
b2RlcikKK3sKKyAgICBpZiAoIWRlY29kZXItPmlzU3luY01lc3NhZ2UoKSkgeworICAgICAgICBt
ZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoKnRoaXMsICpkZWNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7
CisgICAgICAgIC8vIFdlIHJlY2VpdmVkIGFuIGludmFsaWQgc3luYyBtZXNzYWdlLgorICAgICAg
ICAvLyBGSVhNRTogSGFuZGxlIHRoaXMuCisgICAgICAgIGRlY29kZXItPm1hcmtJbnZhbGlkKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0
SUQpOworCisgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0
aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgorICAgIG1lc3NhZ2VSZWNlaXZlci5kaWRS
ZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsICpkZWNvZGVyLCByZXBseUVuY29kZXIpOworCisgICAg
Ly8gRklYTUU6IElmIHRoZSBtZXNzYWdlIHdhcyBpbnZhbGlkLCB3ZSBzaG91bGQgc2VuZCBiYWNr
IGEgU3luY01lc3NhZ2VFcnJvci4KKyAgICBBU1NFUlQoZGVjb2Rlci0+aXNWYWxpZCgpKTsKKwor
ICAgIGlmIChyZXBseUVuY29kZXIpCisgICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBs
eUVuY29kZXIpKTsKK30KKwogdm9pZCBDb25uZWN0aW9uOjpzZXREaWRDbG9zZU9uQ29ubmVjdGlv
bldvcmtRdWV1ZUNhbGxiYWNrKERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2sg
Y2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKCFtX2lzQ29ubmVjdGVkKTsKQEAgLTc0NSw2ICs4MTQs
MTUgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogICAgIGlmIChkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZFJl
Y2VpdmVyKG1lc3NhZ2UpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogVGhlc2Ug
YXJlIHByYWN0aWNhbGx5IHRoZSBzYW1lIG11dGV4LCBzbyBtYXliZSB0aGV5IGNvdWxkIGJlIG1l
cmdlZC4KKyAgICBhdXRvIHdhaXRGb3JNZXNzYWdlc0xvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZv
ck1lc3NhZ2VNdXRleCk7CisKKyAgICBhdXRvIGluY29taW5nTWVzc2FnZXNMb2NrZXIgPSBob2xk
TG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgaWYgKGF1dG8qIHJlY2VpdmVRdWV1
ZSA9IG1fcmVjZWl2ZVF1ZXVlcy5nZXQoKm1lc3NhZ2UpKSB7CisgICAgICAgIHJlY2VpdmVRdWV1
ZS0+ZW5xdWV1ZU1lc3NhZ2UoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgaWYgKG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgewogICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0
ZXgpOwogCkBAIC03NTUsMzggKzgzMywzNCBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNv
bWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgfQogCiAg
ICAgLy8gQ2hlY2sgaWYgd2UncmUgd2FpdGluZyBmb3IgdGhpcyBtZXNzYWdlLCBvciBpZiB3ZSBu
ZWVkIHRvIGludGVycnVwdCB3YWl0aW5nIGR1ZSB0byBhbiBpbmNvbWluZyBzeW5jIG1lc3NhZ2Uu
Ci0gICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VN
dXRleCk7Ci0KLSAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zv
ck1lc3NhZ2UtPmRlY29kZXIpIHsKLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdl
LT5tZXNzYWdlTmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpICYmIG1fd2FpdGluZ0Zvck1l
c3NhZ2UtPmRlc3RpbmF0aW9uSUQgPT0gbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKSB7Ci0gICAg
ICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlciA9IFdURk1vdmUobWVzc2Fn
ZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIp
OwotICAgICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5T25lKCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+d2FpdEZvck9wdGlvbnMuY29udGFpbnMoV2FpdEZvck9w
dGlvbjo6RGlzcGF0Y2hJbmNvbWluZ1N5bmNNZXNzYWdlc1doaWxlV2FpdGluZykgJiYgbWVzc2Fn
ZS0+aXNTeW5jTWVzc2FnZSgpICYmIFN5bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigpLnByb2Nl
c3NJbmNvbWluZ01lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UpKSB7Ci0gICAgICAgICAgICAgICAgbV93
YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdl
LT53YWl0Rm9yT3B0aW9ucy5jb250YWlucyhXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5n
SWZTeW5jTWVzc2FnZUFycml2ZXMpICYmIG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgewotICAg
ICAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VXYWl0aW5nSW50ZXJydXB0
ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90
aWZ5T25lKCk7Ci0gICAgICAgICAgICAgICAgZW5xdWV1ZUluY29taW5nTWVzc2FnZShXVEZNb3Zl
KG1lc3NhZ2UpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAg
aWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIp
IHsKKyAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VOYW1lID09IG1lc3Nh
Z2UtPm1lc3NhZ2VOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVzdGluYXRpb25JRCA9
PSBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpIHsKKyAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1l
c3NhZ2UtPmRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpOworICAgICAgICAgICAgQVNTRVJUKG1f
d2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIpOworICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2Fn
ZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBzeW5jIG1lc3NhZ2Ugb3IgaWYgaXQncyBh
IG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgZGlzcGF0Y2hlZCBldmVuIHdoZW4gd2FpdGluZyBmb3IK
LSAgICAgICAgLy8gYSBzeW5jIHJlcGx5LiBJZiBpdCBpcywgYW5kIHdlJ3JlIHdhaXRpbmcgZm9y
IGEgc3luYyByZXBseSB0aGlzIG1lc3NhZ2UgbmVlZHMgdG8gYmUgZGlzcGF0Y2hlZC4KLSAgICAg
ICAgLy8gSWYgd2UgZG9uJ3Qgd2UnbGwgZW5kIHVwIHdpdGggYSBkZWFkbG9jayB3aGVyZSBib3Ro
IHN5bmMgbWVzc2FnZSBzZW5kZXJzIGFyZSBzdHVjayB3YWl0aW5nIGZvciBhIHJlcGx5LgotICAg
ICAgICBpZiAoU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkucHJvY2Vzc0luY29taW5nTWVz
c2FnZSgqdGhpcywgbWVzc2FnZSkpCisgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT53
YWl0Rm9yT3B0aW9ucy5jb250YWlucyhXYWl0Rm9yT3B0aW9uOjpEaXNwYXRjaEluY29taW5nU3lu
Y01lc3NhZ2VzV2hpbGVXYWl0aW5nKSAmJiBtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkgJiYgU3lu
Y01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkucHJvY2Vzc0luY29taW5nTWVzc2FnZSgqdGhpcywg
bWVzc2FnZSkpIHsKKyAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5
T25lKCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICBlbnF1ZXVl
SW5jb21pbmdNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOworICAgICAgICBpZiAobV93YWl0aW5n
Rm9yTWVzc2FnZS0+d2FpdEZvck9wdGlvbnMuY29udGFpbnMoV2FpdEZvck9wdGlvbjo6SW50ZXJy
dXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSAmJiBtZXNzYWdlLT5pc1N5bmNNZXNzYWdl
KCkpIHsKKyAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VXYWl0aW5nSW50
ZXJydXB0ZWQgPSB0cnVlOworICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi5u
b3RpZnlPbmUoKTsKKyAgICAgICAgICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZSht
ZXNzYWdlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CisKKyAgICAv
LyBDaGVjayBpZiB0aGlzIGlzIGEgc3luYyBtZXNzYWdlIG9yIGlmIGl0J3MgYSBtZXNzYWdlIHRo
YXQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIHdhaXRpbmcgZm9yCisgICAgLy8gYSBz
eW5jIHJlcGx5LiBJZiBpdCBpcywgYW5kIHdlJ3JlIHdhaXRpbmcgZm9yIGEgc3luYyByZXBseSB0
aGlzIG1lc3NhZ2UgbmVlZHMgdG8gYmUgZGlzcGF0Y2hlZC4KKyAgICAvLyBJZiB3ZSBkb24ndCB3
ZSdsbCBlbmQgdXAgd2l0aCBhIGRlYWRsb2NrIHdoZXJlIGJvdGggc3luYyBtZXNzYWdlIHNlbmRl
cnMgYXJlIHN0dWNrIHdhaXRpbmcgZm9yIGEgcmVwbHkuCisgICAgaWYgKFN5bmNNZXNzYWdlU3Rh
dGU6OnNpbmdsZXRvbigpLnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBlbnF1ZXVlSW5jb21pbmdNZXNzYWdlKFdURk1vdmUobWVz
c2FnZSkpOwogfQogCiB1aW50NjRfdCBDb25uZWN0aW9uOjppbnN0YWxsSW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKQEAgLTk3Miw5
ICsxMDQ2LDggQEAgdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKQog
CiB2b2lkIENvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+IGluY29taW5nTWVzc2FnZSkKIHsKKyAgICBBU1NFUlQobV9pbmNvbWluZ01lc3Nh
Z2VzTXV0ZXguaXNIZWxkKCkpOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAg
ICAgaWYgKG1fd2FzS2lsbGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTExMCw5ICsxMTgz
LDE3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBtZXNzYWdlKQogICAgIC8vIFRoZSBtZXNzYWdlIG1pZ2h0IGhhdmUgYWxyZWFkeSBi
ZWVuIGRpc3BhdGNoZWQgZnJvbSB0aGUgSVBDIFdvcmtRdWV1ZSB0byB0aGUgbWFpbiB0aHJlYWQg
YnkgdGhlIHRpbWUgdGhlCiAgICAgLy8gY2xpZW50IHJlZ2lzdGVycyBpdHNlbGYgYXMgYSBXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIuIFRvIGFkZHJlc3MgdGhpcywgd2UgY2hlY2sgYWdhaW4gZm9y
IG1lc3NhZ2VzIHJlY2VpdmVycwogICAgIC8vIG9uY2UgdGhlIG1lc3NhZ2UgYXJyaXZlcyBvbiB0
aGUgbWFpbiB0aHJlYWQuCisgICAgLy8gRklYTUU6IFRoaXMgc3RpbGwgc3VmZmVycyBmcm9tIG1l
c3NhZ2UgcmVvcmRlcmluZyBidWcgd2hlcmUgdGhlIG1lc3NhZ2UKKyAgICAvLyBiZWxvdyBtaWdo
dCBiZSBkaXNwYXRjaGVkIGFmdGVyIGEgbWVzc2FnZSB0aGF0IGlzIGJlaW5nIGRpc3BhdGNoZWQg
ZnJvbQorICAgIC8vIHRoZSBpbmNvbWluZyBtZXNzYWdlIHRocmVhZC4gVGhpcyBzaG91bGQgYmUg
Zml4ZWQgYnkgY2hhbmdpbmcgdGhlCisgICAgLy8gY2FsbHNpdGVzIHRvIHVzZSBDb25uZWN0aW9u
OjphZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKCkuCiAgICAgaWYgKGRpc3BhdGNoTWVzc2FnZVRvV29y
a1F1ZXVlUmVjZWl2ZXIobWVzc2FnZSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1F
OiBIZXJlIHRoZSBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgaXMgbWlzc2luZyB0aGUgYWJvdmUgZGlz
cGF0Y2guCisgICAgLy8gRklYTUU6IEhlcmUgdGhlIFRocmVhZE1lc3NhZ2VSZWNlaXZlciB3b3Vs
ZCBiZSBzdWZmZXJpbmcgZnJvbSB0aGUgYWJvdmUKKyAgICAvLyBtZXNzYWdlIHJlb3JkZXJpbmcg
YnVnLgorCiAgICAgaWYgKG1lc3NhZ2UtPnNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9y
VGVzdGluZygpKSB7CiAgICAgICAgIGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dl
ZEZvclRlc3RpbmcpIHsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYzA0YWNmODgwNDUxMzZhNWQ0MDllYjAxNzcwODNmYjY3
NmQ0MTU2MC4uOGQ3NDQ1ZTY3NmNlNjJiZjZiNjVhYjRiMWY2MzIwNDVkODc4Y2JmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiSGFuZGxl
TWVzc2FnZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0Nv
bmRpdGlvbi5oPgpAQCAtMjIwLDYgKzIyMSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CiAgICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdl
UmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CiAKKyAg
ICAvLyBBZGRzIGEgbWVzc2FnZSByZWNlaXZlIHF1ZXVlLiBUaGUgY2xpZW50IHNob3VsZCBtYWtl
IHN1cmUgdGhlIGluc3RhbmNlIGlzIHJlbW92ZWQgYmVmb3JlIGl0IGdvZXMKKyAgICAvLyBvdXQg
b2Ygc2NvcGUuCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZl
UXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICAv
LyBBZGQgcyBhIG1lc3NhZ2UgcmVjZWl2ZSBxdWV1ZSB0aGF0IGRpc3BhdGNoZXMgdG8gdGhlIE1l
c3NhZ2VSZWNlaXZlciB2aWEgdGhlIEZ1bmN0aW9uRGlzcGF0Y2hlci4KKyAgICAvLyBUaGUgY2xp
ZW50IHNob3VsZCBtYWtlIHN1cmUgaW5zdGFuY2UgaXMgcmVtb3ZlZCBiZWZvcmUgTWVzc2FnZVJl
Y2VpdmVyIGFuZCBGdW5jdGlvbkRpc3BhdGNoZXIgZ28KKyAgICAvLyBvdXQgb2Ygc2NvcGUuIFRo
ZSBkaXNwYXRjaCBmdW5jdGlvbiB3aWxsIGhvbGQgdGhlIGNvbm5lY3Rpb24gb2JqZWN0IGFsaXZl
LgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShGdW5jdGlvbkRpc3BhdGNoZXImLCBN
ZXNzYWdlUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAw
KTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CisKICAgICBib29sIG9wZW4oKTsKICAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKICAgICB2b2lkIG1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52
YWxpZCgpOwpAQCAtMjk5LDYgKzMwOSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlnbm9yZUludmFs
aWRNZXNzYWdlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlSW52YWxpZE1lc3Nh
Z2VGb3JUZXN0aW5nOyB9CiAjZW5kaWYKIAorICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlUmVjZWl2
ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmKTsK
IHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGll
bnQmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKQEAgLTQwMCw2
ICs0MTEsNyBAQCBwcml2YXRlOgogICAgIExvY2sgbV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXg7CiAg
ICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBtX2luY29taW5nTWVzc2FnZXM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VzVGhyb3R0bGVyPiBtX2luY29taW5nTWVzc2FnZXNU
aHJvdHRsZXI7CisgICAgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcCBtX3JlY2VpdmVRdWV1ZXM7CiAK
ICAgICAvLyBPdXRnb2luZyBtZXNzYWdlcy4KICAgICBMb2NrIG1fb3V0Z29pbmdNZXNzYWdlc011
dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRnVuY3Rpb25EaXNw
YXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNjZh
MzJjZjk5ZTg1MDM1MGVhMGMwMzM5YTg3NjRmZDY4MDE0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9GdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitj
bGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKKworY2xhc3MgRnVuY3Rpb25EaXNwYXRj
aGVyTWVzc2FnZVJlY2VpdmVRdWV1ZSBmaW5hbCA6IHB1YmxpYyBNZXNzYWdlUmVjZWl2ZVF1ZXVl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbkRp
c3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlKEZ1bmN0aW9uRGlzcGF0Y2hlciYgZGlzcGF0Y2hl
ciwgTWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICAgICAgOiBtX2Rpc3BhdGNoZXIoZGlz
cGF0Y2hlcikKKyAgICAgICAgLCBtX3JlY2VpdmVyKHJlY2VpdmVyKQorICAgIHsKKyAgICB9Cisg
ICAgfkZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUoKSBmaW5hbCA9IGRlZmF1
bHQ7CisKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIG1lc3NhZ2UpIGZpbmFsCisgICAgeworICAgICAgICBt
X2Rpc3BhdGNoZXIuZGlzcGF0Y2goW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pLCBt
ZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgJnJlY2VpdmVyID0gbV9yZWNlaXZlcl0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVz
c2FnZShyZWNlaXZlciwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgICAgIH0pOworICAgIH0KK3By
aXZhdGU6CisgICAgRnVuY3Rpb25EaXNwYXRjaGVyJiBtX2Rpc3BhdGNoZXI7CisgICAgTWVzc2Fn
ZVJlY2VpdmVyJiBtX3JlY2VpdmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTVjM2NlOWFmMmZkMjY5NWQ1NWFkMmYwNjYyYTU4ZjFhMDgzMjZjOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaApA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxt
ZW1vcnk+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVj
b2RlcjsKKworY2xhc3MgTWVzc2FnZVJlY2VpdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+TWVzc2FnZVJlY2VpdmVRdWV1ZSgpID0gZGVmYXVsdDsKKyAgICAvLyBDYWxsZWQgd2l0aCBD
b25uZWN0aW9uIGluY29taW5nIG1lc3NhZ2UgbG9jayBoZWxkLgorICAgIC8vIE1heSBiZSBjYWxs
ZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVlTWVzc2Fn
ZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmZlMGU4MDQ1MzlkZmZmMTU1
ZmRjYWY0MGUzYTA4YjA1MDliMmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmgiCisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIE1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXA6OmFkZEltcGwoU3RvcmVUeXBlJiYgcXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBBU1NFUlQoIW1fcXVldWVzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcXVldWVzLmFkZChr
ZXksIFdURk1vdmUocXVldWUpKTsKK30KKwordm9pZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjpy
ZW1vdmUoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkK
K3sKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJl
Y2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgIEFTU0VSVChtX3F1ZXVlcy5jb250YWlu
cyhrZXkpKTsKKyAgICBtX3F1ZXVlcy5yZW1vdmUoa2V5KTsKK30KKworTWVzc2FnZVJlY2VpdmVR
dWV1ZSogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6Z2V0KGNvbnN0IERlY29kZXImIG1lc3NhZ2Up
IGNvbnN0Cit7CisgICAgaWYgKG1fcXVldWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90
PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIDApOworICAgIGF1dG8gaXQgPSBtX3F1
ZXVlcy5maW5kKGtleSk7CisgICAgaWYgKGl0ID09IG1fcXVldWVzLmVuZCgpKSB7CisgICAgICAg
IGtleS5zZWNvbmQgPSBtZXNzYWdlLmRlc3RpbmF0aW9uSUQoKTsKKyAgICAgICAgaWYgKGtleS5z
ZWNvbmQpCisgICAgICAgICAgICBpdCA9IG1fcXVldWVzLmZpbmQoa2V5KTsKKyAgICB9CisgICAg
aWYgKGl0ID09IG1fcXVldWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gV1RGOjp2aXNpdCgKKyAgICAgICAgV1RGOjptYWtlVmlzaXRvcigKKyAgICAgICAgICAg
IFtdKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsg
cmV0dXJuIHF1ZXVlLmdldCgpOyB9LAorICAgICAgICAgICAgW10oTWVzc2FnZVJlY2VpdmVRdWV1
ZSogcXVldWUpIHsgcmV0dXJuIHF1ZXVlOyB9CisgICAgICAgICksIGl0LT52YWx1ZSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZl
UXVldWVNYXAuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMjQwZmYzNWM4ZWM3OTIwZjA1ZWZiY2QyNzI1YzA3YWI3Y2Nl
NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1
ZXVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5o
PgorCituYW1lc3BhY2UgSVBDIHsKKworZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90
OworCitjbGFzcyBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwIHsKK3B1YmxpYzoKKyAgICBNZXNzYWdl
UmVjZWl2ZVF1ZXVlTWFwKCkgPSBkZWZhdWx0OworICAgIH5NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
KCkgPSBkZWZhdWx0OworCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZE1lc3NhZ2UoY29uc3QgRGVj
b2RlciYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBRdWV1ZU1hcDo6aXNWYWxpZEtl
eShzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSksIG1lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgfQorCisgICAgLy8g
QWRkcyBhIHdpbGRjYXJkIGZpbHRlciBpZiBkZXN0aW5hdGlvbklEID09IDAuCisgICAgdm9pZCBh
ZGQoTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpIHsgIGFkZEltcGwoU3RvcmVUeXBlKCZxdWV1ZSksIHJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7IH0KKyAgICB2b2lkIGFkZChzdGQ6OnVuaXF1ZV9w
dHI8TWVzc2FnZVJlY2VpdmVRdWV1ZT4mJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkgeyBhZGRJbXBsKFN0b3JlVHlwZShXVEZNb3ZlKHF1
ZXVlKSksIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7IH0KKyAgICB2b2lkIHJlbW92ZShS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgTWVzc2FnZVJlY2Vp
dmVRdWV1ZSogZ2V0KGNvbnN0IERlY29kZXImKSBjb25zdDsKK3ByaXZhdGU6CisgICAgdXNpbmcg
U3RvcmVUeXBlID0gVmFyaWFudDxNZXNzYWdlUmVjZWl2ZVF1ZXVlKiwgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VSZWNlaXZlUXVldWU+PjsKKyAgICB2b2lkIGFkZEltcGwoU3RvcmVUeXBlJiYsIFJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdXNpbmcgUXVldWVNYXAg
PSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFN0b3JlVHlwZT47CisgICAg
UXVldWVNYXAgbV9xdWV1ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDAwYWIxOWQ0NmRkZTRhZGEyMGQyOTNmZTgzYzI3OTBhZWNjNjAzOTAuLjU5YmRkOTEwMWM5
MWRlZGM5ODI0NTVlNzQ5YjI4MTQ0YzkzNTk0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQzLDYgKzE0
Myw3IEBAIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9F
bmNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuY3BwIEBuby11
bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9J
UEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVy
LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBAbm8tdW5p
ZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGYwZGJjYjRjMDE4MWJmZjFiMzk4MjZlNTRiMDI3MTRiY2M2YjIxN2UuLmUxODhjYjkzYjQw
ZGI0NmU1MDkyZDVmMDM5ZThjYmVlMzE4ZWQxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyNyw2ICsxMzI3LDEwIEBACiAJCTdB
RkJEMzY3MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJE
MzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aCAqLzsgfTsKIAkJN0FGQkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZE
MjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CiAJCTdCMURCMjY2
MjU2NjhDRTEwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFy
cmF5UmVmZXJlbmNlLmggKi87IH07CisJCTdCNDgzRjFGMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjQ4M0YxQjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1
ZU1hcC5oICovOyB9OworCQk3QjQ4M0YyMDI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLzsgfTsK
KwkJN0I0ODNGMjEyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUQy
NUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovOyB9OworCQk3
QjQ4M0YyMjI1Q0REQTlDMDAxMjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2Vp
dmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNl
aXZlUXVldWUuaCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZB
RTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5m
b3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAw
NDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ1MjQsNiArNDUyOCwxMCBAQAog
CQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I0ODNGMUIyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4M0Yx
QzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3Nh
Z2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4
M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkRpc3BhdGNo
ZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2
NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02OTExLDYgKzY5MTksNyBAQAogCQkJCUJDMDMyREEwMTBGNDM3RDEw
MDU4QzE1QSAvKiBFbmNvZGVyLmggKi8sCiAJCQkJOUJEOEFCNDkyNTgyMEU1MjAwNTM4NkY4IC8q
IEZvbnRSZWZlcmVuY2UuaCAqLywKIAkJCQk0MTUxRTVDMzFGQkI5MEE5MDBFNDdFMkQgLyogRm9y
bURhdGFSZWZlcmVuY2UuaCAqLywKKwkJCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogRnVu
Y3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovLAogCQkJCUMwQ0U3MkFDMTI0
N0U3OEQwMEJDMEVDNCAvKiBIYW5kbGVNZXNzYWdlLmggKi8sCiAJCQkJMUM5QUYzNjEyNDEzNEQy
MzAwRDNFQzAyIC8qIEltYWdlRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUEzMUY2MEEzMjVDQzdE
QjgwMEFGMTRGNCAvKiBJUENTZW1hcGhvcmUuY3BwICovLApAQCAtNjkxOSw2ICs2OTI4LDkgQEAK
IAkJCQk5QjQ3OTA4RTI1MzE1MUNDMDBFQzExQUIgLyogSlNJUENCaW5kaW5nLmggKi8sCiAJCQkJ
OUI0NzkwOEMyNTMxNEQ4MzAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5o
ICovLAogCQkJCTFBQzRDODI4MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCAqLywK
KwkJCQk3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICov
LAorCQkJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
LmNwcCAqLywKKwkJCQk3QjQ4M0YxQjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5oICovLAogCQkJCTFBM0VFRDExMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVj
ZWl2ZXIuaCAqLywKIAkJCQkxQTNFRUQwQzE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2Vp
dmVyTWFwLmNwcCAqLywKIAkJCQkxQTNFRUQwRDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJl
Y2VpdmVyTWFwLmggKi8sCkBAIC0xMTY0NCw2ICsxMTY1Niw3IEBACiAJCQkJQ0Q3OEUxMTUxREI3
RDdFRDAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
MTlEMkVBMjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEQTkzREIwMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVu
VG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjQ4M0Yy
MjI1Q0REQTlDMDAxMjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQjMxRDU5MDJERDAwREQ3QzY4IC8qIEdhbWVw
YWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE3NzUzRjExOEJBQkYwMDA3RDlFOUEgLyog
R2VuZXJpY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RUM1MzJBMzI0NDdGQkFEMDAy
MTUyMTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTExNzM1
LDYgKzExNzQ4LDggQEAKIAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI0NzkwOEQyNTMxNEQ4MzAwRUMxMUFCIC8qIE1l
c3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNEM4Mjkx
NkI4NzZBOTAwNjlEQ0NEIC8qIE1lc3NhZ2VGbGFncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I0
ODNGMjAyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTdCNDgzRjFGMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNFRUQxMjE2MUE1M0Q2MDBBRUI0RjUgLyogTWVz
c2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNFRUQwRjE2MUE1MzU0MDBBRUI0
RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCMDM3QTE4
NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzcy
Miw2ICsxMzczNyw3IEBACiAJCQkJMDdFMTlFRkIyM0Q0MDFGMTAwOTRGRkI0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
REYyOUU2NDI1N0YzN0EzMDAzQzI4QUYgLyogTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCNDc5MDkxMjUzMTU2MzIwMEVDMTFB
QiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0I0ODNGMjEyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODEyMTJCNkE3MTAwRjQ5M0ZEIC8qIE1lc3NhZ2VSZWNl
aXZlck1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MjIxMkI2QTcxMDBGNDkzRkQg
LyogTWVzc2FnZVNlbmRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3QTIxMkI2QTYx
MDBGNDkzRkQgLyogTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419958</attachid>
            <date>2021-02-11 00:43:24 -0800</date>
            <delta_ts>2021-02-15 04:36:54 -0800</delta_ts>
            <desc>remove examples</desc>
            <filename>bug-221560-20210211104322.patch</filename>
            <type>text/plain</type>
            <size>38581</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5NmM4NDQwOTc0OGJmNzY3MWYzNzky
MzUzODIzNzFkMmFiNmVmNjguLmY5MjRmYzM0ZTk4ODE4M2UxY2E5MGMzZGZjN2Q3MjBkYzkxMTlk
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMDItMDggIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW9uIGNsaWVudHMgc2hvdWxkIGJl
IGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRhIGluc3RlYWQgb2YgZW1iZWRkZWQg
aW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBGdW5jdGlvbkRpc3BhdGNoZXIgbm90IGJlIFJlZkNvdW50ZWRU
aHJlYWRTYWZlLgorICAgICAgICBUaGVyZSdzIG5vdGhpbmcgaW5oZXJlbnRseSByZWZlcmVuY2Ug
Y291bnRlZCBpbiB0aGUgZGVzY3JpcHRpb24KKyAgICAgICAgInNvbWV0aGluZyB0aGF0IGZ1bmN0
aW9ucyBjYW4gYmUgZGlzcGF0Y2hlZCB0byIuCisgICAgICAgIFRoaXMgYWxsb3dzIG90aGVyIGlu
dGVyZmFjZSBjb250cmFjdHMgdGhhbiAid2hlbiB0aGUgcmVjZWl2ZXIgcmVmZXJlbmNlcworICAg
ICAgICBGdW5jdGlvbkRpc3BhdGNoZXIsIGl0IHdpbGwgdGhyZWFkLXNhZmUgcmVmIGl0Ii4KKwor
ICAgICAgICBIYXZpbmcgYSBSZWZDb3VudGVkVGhyZWFkU2FmZSBpbiB0aGUgbWlkZGxlIG9mIGlu
aGVyaXRhbmNlIGNoYWluIGlzIHByb2JsZW1hdGljLCBhcworICAgICAgICBub3QgYWxsIGluaGVy
aXRhbmNlIGNoYWlucyBzaG91bGQgaGF2ZSBpdC4gRXhhbXBsZTogRnVuY3Rpb25EaXNwYXRjaGVy
IGNhbiBkaXNwYXRjaAorICAgICAgICB0byBhIHdvcmsgcXVldWUsIGJ1dCB0aGUgRnVuY3Rpb25E
aXNwYXRjaGVyIGl0c2VsZiBtaWdodCBiZSBqdXN0IG5vcm1hbGx5IG93bmVkIGJ5CisgICAgICAg
IG1haW4gcnVubG9vcC4gIEl0IGlzIGJldHRlciB0byBzZXBhcmF0ZSAic29tZXRoaW5nIHRoYXQK
KyAgICAgICAgZnVuY3Rpb25zIGNhbiBiZSBkaXNwYXRjaGVkIHRvIiBmcm9tICJzb21ldGhpbmcg
dGhhdCBtYXkgYmUgb3duZWQgYnkgbXVsdGlwbGUKKyAgICAgICAgdGhyZWFkcyIuCisKKyAgICAg
ICAgSW4gdGhpcyBjaGFuZ2UsIElQQzo6Q29ubmVjdGlvbiB3aWxsIHN0b3JlIGEgcmVmZXJlbmNl
IHRvIEZ1bmN0aW9uRGlzcGF0Y2hlci4gSW4KKyAgICAgICAgdGhpcyBzY2VuYXJpbyBpdCB3b3Vs
ZCBiZSBjb25mdXNpbmcgdG8gdGhlIHJlYWRlciBpZiB0aGUgcmVmZXJlbmNlIGNvdW50IHdvdWxk
IGJlCisgICAgICAgIGNoYW5nZWQuIFRoZSBpbnRlcmZhY2UgaXMgImFkZC9yZW1vdmUiLCB3aGlj
aCBpcyBpbmhlcmVudGx5IG5vdCByZWZjb3VudGVkLiBJZgorICAgICAgICB0aGUgcmVmY291bnQg
d2FzIHBhcnQgb2YgdGhlIGludGVyZmFjZSwgdGhlbiBxdWVzdGlvbiB3b3VsZCBhcmlzZSBhcyBv
ZiB3aGF0IGl0CisgICAgICAgIHdhcyB1c2VkIGZvci4gSWYgRnVuY3Rpb25EaXNwYXRjaGVyIHdh
cyByZWZjb3VudGVkIGJ1dCB0aGUgcmVmY291bnQgd291bGQgbm90IGJlCisgICAgICAgIG1vZGlm
aWVkIGZvciB0aGlzIGNhc2UsIGl0IHdvdWxkIHJpc2UgcXVlc3Rpb25zLCB0b28uCisKKyAgICAg
ICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoK
KyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisKIDIwMjEtMDItMTAgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBEb2N1
bWVudEZyYWdtZW50IGluIGlubmVySFRNTCAmIG91dGVySFRNTApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNDk2N2E2
MzU3YWYzNWExMzFmZDY5ZWM4MjY1YzE4NWYwNTYzNDlkLi5hMmMzZWNkZjEyZjlmMTc0MzMwNGE0
ZTkwNmQ3MzdiMTQxYzk4NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTA4
ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29ubmVj
dGlvbiBjbGllbnRzIHNob3VsZCBiZSBhYmxlIHRvIG9idGFpbiB0aGUgbWVzc2FnZXMgYXMgZGF0
YSBpbnN0ZWFkIG9mIGVtYmVkZGVkIGluIGZ1bmN0aW9uIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTU2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlUXVldWUsIGFuIGludGVyZmFjZSB3aGljaCBvYnRhaW5zIG1lc3NhZ2VzIGZyb20KKyAgICAg
ICAgdGhlIG1lc3NhZ2UgcmVjZWl2ZSB0aHJlYWQgYW5kIGZvcndhcmRzIHRoZW0gdG8gY2FsbGVy
IGFzIGRhdGEuCisgICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGJlIGFibGUg
dG8gc2tpcCBtZXNzYWdlcyB0aGF0IGFyZSBzdGFsZQorICAgICAgICBvciBvcmlnaW5hdGluZyBm
cm9tIGEgc2VuZGVyIHdoaWNoIGlzIGluY29ycmVjdC4gQmVmb3JlLCB0aGUgY2xpZW50CisgICAg
ICAgIGNvdWxkIG9ubHkgZ2V0IHRoZSBtZXNzYWdlcyBhcyBGdW5jdGlvbiByZWZlcmVuY2VzLCBh
bmQgdGhvc2UgY2Fubm90CisgICAgICAgIGJlIHNraXBwZWQgYXMgaXQgd291bGQgYmUgdW5kZWZp
bmVkIHdoYXQgbm90IGV4ZWN1dGluZyBhIGZ1bmN0aW9uIG1lYW5zLgorCisgICAgICAgIElQQzo6
TWVzc2FnZVJlY2VpdmVRdWV1ZSBpcyBhIGdlbmVyYWxpemF0aW9uIGFuZCBzaW1wbGlmaWNhdGlv
biBvZiBjdXJyZW50CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2Vp
dmVyUmVmQ291bnRlZCBhbmQKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIuIEl0IGhhcyBkaWZmZXJlbnQgcmVmLWNvdW50CisgICAgICAgIHNlbWFudGlj
cywgaW4gdGhlIHdheSB0aGF0IGNsaWVudCBjb250cm9scyB0aGUgbGlmZS10aW1lIHdpdGggYWRk
IGFuZAorICAgICAgICByZW1vdmUuCisKKyAgICAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZVF1ZXVl
IGZpeGVzIG1lc3NhZ2UgcmVvcmRlcmluZyBidWcgd2l0aAorICAgICAgICBJUEM6OkNvbm5lY3Rp
b246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB3aGVyZSBmaXJzdCBmZXcgbWVzc2FnZXMKKyAg
ICAgICAgdGhhdCBhcmUgcm91dGVkIHRvIG1haW4gdGhyZWFkIG1lc3NhZ2UgcXVldWUgY2FuIGNv
bWUgbGF0ZXIgdGhhbiBzb21lCisgICAgICAgIG90aGVyIG1lc3NhZ2UgdGhhdCBnZXRzIGhhbmRs
ZWQgZnJvbSBtZXNzYWdlIHJlY2VpdmUgdGhyZWFkLgorCisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKToKKyAgICAgICAgQWRkIHR3byB2YXJpYW50czoKKyAgICAgICAgICAxKSBwbGFp
biByYXcgTWVzc2FnZVJlY2VpdmVRdWV1ZSwgdG8gYmUgdXNlZCBpbiBXZWJHTCBJUEMgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICAgMikgQSBtZXNzYWdlIHF1ZXVlIHdoaWNoIGRpc3BhdGNoZXMg
dG8gYSBwYXJ0aWN1bGFyIEZ1bmN0aW9uRGlzcGF0Y2hlci4KKyAgICAgICAgVGhpcyBjYW4gYmUg
dXNlZCB0byByZXBsYWNlIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciwKKyAgICAgICAgVGhyZWFk
TWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCBhbmQgVGhyZWFkTWVzc2FnZVJlY2VpdmVyLgorICAg
ICAgICBFeGFtcGxlcyBvZiB0aGUgcmVwbGFjZW1lbnQgYXJlIGdpdmVuIGluIHRoZSBkZXBlbmRp
bmcgYnVncy4KKworICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2
ZXJNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVz
c2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2Up
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Z1bmN0
aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dU
Ri93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmguCisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlUXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNw
YXRjaGVyLmguCisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1w
bCk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAg
ICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmdldCBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaDogQ29waWVkIGZyb20gU291cmNl
L1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmguCisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNl
aXZlUXVldWVNYXA6OmlzVmFsaWRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcDo6YWRkKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wMi0xMCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2VicGFnZSB0cmFuc2xhdGlv
bl0gQWRkIHN1cHBvcnQgZm9yIHRoZSAtX3RyYW5zbGF0ZTogYWN0aW9uIG9uIFdLQ29udGVudFZp
ZXcKQEAgLTQ1LDEyICs5NywxMiBAQAogICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWxlYXNlQXVkaW9IYXJkd2FyZUxpc3RlbmVyKToKICAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKICAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46Ci0gICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5jcHA6IAorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHkuY3Bw
OgogICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTo6UmVt
b3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHkpOgogICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSk6
CiAgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5OjphdWRp
b0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUpOgotICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXJQcm94eTo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKToKLSAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5Lmg6
IAorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTo6YXVk
aW9PdXRwdXRldmljZUNoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHkuaDoKICAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHA6CiAgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CiAgICAgICAgICogU291cmNlcy50eHQ6CkBAIC00NzksNyArNTMxLDcg
QEAKICAgICAgICAgQ29udmVydCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50IHRvIGEgdW5pcXVl
X3B0ciBzbyB3ZSBjYW4gd2FpdCB0bwogICAgICAgICBjcmVhdGUgaXQgYWZ0ZXIgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlIGlzIGNyZWF0ZWQuIFRoaXMgZW5zdXJlcwogICAgICAgICB0
aGF0IHRoZSBjYWxsIHRvIGNyZWF0ZSB0aGUgU1FMaXRlIGRhdGFiYXNlIHdpbGwgcnVuIG9uIGEK
LSAgICAgICAgYmFja2dyb3VuZCB0aHJlYWQgYmVmb3JlIHdlIHRyeSB0byBjb2xsZWN0IG92ZXJk
dWUgUENNIGF0dHJpYnV0aW9ucy4gCisgICAgICAgIGJhY2tncm91bmQgdGhyZWFkIGJlZm9yZSB3
ZSB0cnkgdG8gY29sbGVjdCBvdmVyZHVlIFBDTSBhdHRyaWJ1dGlvbnMuCiAKICAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgogICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFuZGxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRDb252ZXJzaW9uKToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgKaW5kZXggZDA5YTUy
MjM0ZjhhN2EyZGY4YzVmMzdiYzcxZDMxZDM5YWM0OGFiNy4uN2M4NjQ3MTkzNjAxMDI3ZmQ3MmYx
NmI5MWU2NWM5MDBmYmVkNWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25E
aXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgKQEAg
LTI2LDE0ICsyNiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CiAKIC8vIEZ1bmN0aW9uRGlzcGF0Y2hlciBpcyBhbiBhYnN0cmFjdCByZXByZXNlbnRhdGlv
biBvZiBzb21ldGhpbmcgdGhhdCBmdW5jdGlvbnMgY2FuIGJlCiAvLyBkaXNwYXRjaGVkIHRvLiBU
aGlzIGNhbiBmb3IgZXhhbXBsZSBiZSBhIHJ1biBsb29wIG9yIGEgd29yayBxdWV1ZS4KIAotY2xh
c3MgRnVuY3Rpb25EaXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZ1bmN0
aW9uRGlzcGF0Y2hlcj4geworY2xhc3MgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+RnVuY3Rpb25EaXNwYXRjaGVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1NvdXJjZS9XVEYvd3RmL1J1bkxv
b3AuaAppbmRleCAwNDY2ZDQ0NTlkNmI3NGJjYzFjZTRkODQyMDM3MzY4NzI2MDdjYTM0Li45NWZm
OWRjNTIwM2MyMTZhMTkzZWQ0YTU2ZGM0ZmFiZDlmYjgxYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCkBAIC02NCw3
ICs2NCw3IEBAIHVzaW5nIFJ1bkxvb3BNb2RlID0gdW5zaWduZWQ7CiAjZGVmaW5lIERlZmF1bHRS
dW5Mb29wTW9kZSAwCiAjZW5kaWYKIAotY2xhc3MgUnVuTG9vcCBmaW5hbCA6IHB1YmxpYyBGdW5j
dGlvbkRpc3BhdGNoZXIgeworY2xhc3MgUnVuTG9vcCBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRp
c3BhdGNoZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSdW5Mb29wPiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcCk7CiBwdWJsaWM6CiAgICAgLy8gTXVzdCBiZSBjYWxs
ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJ1bkxvb3AqIHdlYklmRXhpc3RzKCk7CiAjZW5kaWYK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaXNNYWluKCk7Ci0gICAgflJ1bkxv
b3AoKSBmaW5hbDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflJ1bkxvb3AoKSBmaW5hbDsKIAog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJikg
ZmluYWw7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihTZWNvbmRz
LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCA1ZDY5NGJkOGMzZjVhNGE1
YzAwYzk0MmY5ZGQ0MzNkN2M4NDQ1ZTIzLi4yMDBmOTY5YzI3NmM3NGZiZjI3ZjM1NGQ5YTkxN2I0
OTA2MGZjNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hl
ciB7CitjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyLCBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya1F1ZXVlPiB7CiAKIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIFR5cGUgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUU9T
ID0gVGhyZWFkOjpRT1M7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxXb3Jr
UXVldWU+IGNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1Mg
PSBRT1M6OkRlZmF1bHQpOwotICAgIH5Xb3JrUXVldWUoKSBmaW5hbDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgfldvcmtRdWV1ZSgpIGZpbmFsOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDkwN2U0Y2Q0Zjll
Y2JlMDQ1NGJjZjIwNWRlZjNkOWYxMzE2NGUyOGIuLmQ2MTJhMWU4ZDYwYTQwZmJkOWU4MWQyOGZh
ZjYzNzE1ZjE3OTEyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogCisjaW5jbHVkZSAiRnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+CkBAIC00MDUsNiArNDA2LDc0IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFRocmVhZE1lc3NhZ2VSZWNlaXZl
ciYgdGhyCiAgICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0K
IAorbmFtZXNwYWNlIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorRGVxdWU8c3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+PiBmaWx0ZXJXaXRoTWVzc2FnZVJlY2VpdmVRdWV1ZShDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBUJiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4mJiBp
bmNvbWluZ01lc3NhZ2VzKQoreworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4g
cmVzdDsKKyAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBpbmNvbWluZ01lc3NhZ2VzKSB7CisgICAg
ICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gcmVjZWl2ZXJOYW1lICYm
IChtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCB8fCAhZGVzdGluYXRp
b25JRCkpCisgICAgICAgICAgICByZWNlaXZlUXVldWUuZW5xdWV1ZU1lc3NhZ2UoY29ubmVjdGlv
biwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3QuYXBw
ZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdDsKK30KK30KKwor
dm9pZCBDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVl
dWUmIHJlY2VpdmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAgIG1faW5jb21p
bmdNZXNzYWdlcyA9IGZpbHRlcldpdGhNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCByZWNlaXZl
UXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgV1RGTW92ZShtX2luY29taW5nTWVz
c2FnZXMpKTsKKyAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKEZ1bmN0aW9uRGlzcGF0Y2hlciYgZGlzcGF0Y2hlciwgTWVzc2FnZVJlY2VpdmVy
JiByZWNlaXZlciwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gcmVjZWl2
ZVF1ZXVlID0gbWFrZVVuaXF1ZTxGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVl
PihkaXNwYXRjaGVyLCByZWNlaXZlcik7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2lu
Y29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2VzID0gZmlsdGVyV2l0
aE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsICpyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRCwgV1RGTW92ZShtX2luY29taW5nTWVzc2FnZXMpKTsKKyAgICBtX3JlY2Vp
dmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
KFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgeworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICAgICAgbV9y
ZWNlaXZlUXVldWVzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsK
KyAgICB9Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNz
YWdlKE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4mJiBkZWNvZGVyKQoreworICAgIGlmICghZGVjb2Rlci0+aXNTeW5jTWVzc2FnZSgpKSB7
CisgICAgICAgIG1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlTWVzc2FnZSgqdGhpcywgKmRlY29k
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJ
RCA9IDA7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3luY1JlcXVlc3RJRCkgfHwgIXN5bmNS
ZXF1ZXN0SUQpIHsKKyAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1lc3Nh
Z2UuCisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcy4KKyAgICAgICAgZGVjb2Rlci0+bWFy
a0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVwbHlFbmNv
ZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwg
c3luY1JlcXVlc3RJRCk7CisKKyAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNvZGVyIGFuZCBl
bmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIuCisgICAgbWVzc2FnZVJl
Y2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgKmRlY29kZXIsIHJlcGx5RW5jb2Rl
cik7CisKKyAgICAvLyBGSVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3Vs
ZCBzZW5kIGJhY2sgYSBTeW5jTWVzc2FnZUVycm9yLgorICAgIEFTU0VSVChkZWNvZGVyLT5pc1Zh
bGlkKCkpOworCisgICAgaWYgKHJlcGx5RW5jb2RlcikKKyAgICAgICAgc2VuZFN5bmNSZXBseShX
VEZNb3ZlKHJlcGx5RW5jb2RlcikpOworfQorCiB2b2lkIENvbm5lY3Rpb246OnNldERpZENsb3Nl
T25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWVDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIW1faXNDb25uZWN0ZWQpOwpAQCAt
NzQ1LDYgKzgxNCwxNSBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgaWYgKGRpc3BhdGNoTWVzc2Fn
ZVRvVGhyZWFkUmVjZWl2ZXIobWVzc2FnZSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJ
WE1FOiBUaGVzZSBhcmUgcHJhY3RpY2FsbHkgdGhlIHNhbWUgbXV0ZXgsIHNvIG1heWJlIHRoZXkg
Y291bGQgYmUgbWVyZ2VkLgorICAgIGF1dG8gd2FpdEZvck1lc3NhZ2VzTG9ja2VyID0gaG9sZExv
Y2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKKworICAgIGF1dG8gaW5jb21pbmdNZXNzYWdlc0xv
Y2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICBpZiAoYXV0byog
cmVjZWl2ZVF1ZXVlID0gbV9yZWNlaXZlUXVldWVzLmdldCgqbWVzc2FnZSkpIHsKKyAgICAgICAg
cmVjZWl2ZVF1ZXVlLT5lbnF1ZXVlTWVzc2FnZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobWVzc2FnZS0+aXNTeW5jTWVzc2FnZSgp
KSB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ1N5bmNNZXNzYWdl
Q2FsbGJhY2tNdXRleCk7CiAKQEAgLTc1NSwzOCArODMzLDM0IEBAIHZvaWQgQ29ubmVjdGlvbjo6
cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZSkK
ICAgICB9CiAKICAgICAvLyBDaGVjayBpZiB3ZSdyZSB3YWl0aW5nIGZvciB0aGlzIG1lc3NhZ2Us
IG9yIGlmIHdlIG5lZWQgdG8gaW50ZXJydXB0IHdhaXRpbmcgZHVlIHRvIGFuIGluY29taW5nIHN5
bmMgbWVzc2FnZS4KLSAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93YWl0
Rm9yTWVzc2FnZU11dGV4KTsKLQotICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZSAmJiAh
bV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlcikgewotICAgICAgICAgICAgaWYgKG1fd2FpdGlu
Z0Zvck1lc3NhZ2UtPm1lc3NhZ2VOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkgJiYgbV93
YWl0aW5nRm9yTWVzc2FnZS0+ZGVzdGluYXRpb25JRCA9PSBtZXNzYWdlLT5kZXN0aW5hdGlvbklE
KCkpIHsKLSAgICAgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyID0gV1RG
TW92ZShtZXNzYWdlKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yTWVzc2Fn
ZS0+ZGVjb2Rlcik7Ci0gICAgICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi5u
b3RpZnlPbmUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT53YWl0Rm9yT3B0aW9ucy5jb250YWlu
cyhXYWl0Rm9yT3B0aW9uOjpEaXNwYXRjaEluY29taW5nU3luY01lc3NhZ2VzV2hpbGVXYWl0aW5n
KSAmJiBtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkgJiYgU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xl
dG9uKCkucHJvY2Vzc0luY29taW5nTWVzc2FnZSgqdGhpcywgbWVzc2FnZSkpIHsKLSAgICAgICAg
ICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG1fd2FpdGlu
Z0Zvck1lc3NhZ2UtPndhaXRGb3JPcHRpb25zLmNvbnRhaW5zKFdhaXRGb3JPcHRpb246OkludGVy
cnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcykgJiYgbWVzc2FnZS0+aXNTeW5jTWVzc2Fn
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVdhaXRp
bmdJbnRlcnJ1cHRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZUNv
bmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgICAgICAgICBlbnF1ZXVlSW5jb21pbmdNZXNz
YWdlKFdURk1vdmUobWVzc2FnZSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KKyAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZSAmJiAhbV93YWl0aW5nRm9yTWVzc2Fn
ZS0+ZGVjb2RlcikgeworICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgeworICAgICAgICAgICAgbV93
YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlciA9IFdURk1vdmUobWVzc2FnZSk7CisgICAgICAgICAg
ICBBU1NFUlQobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7CisgICAgICAgICAgICBtX3dh
aXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIHN5bmMgbWVzc2FnZSBv
ciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNob3VsZCBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiB3
YWl0aW5nIGZvcgotICAgICAgICAvLyBhIHN5bmMgcmVwbHkuIElmIGl0IGlzLCBhbmQgd2UncmUg
d2FpdGluZyBmb3IgYSBzeW5jIHJlcGx5IHRoaXMgbWVzc2FnZSBuZWVkcyB0byBiZSBkaXNwYXRj
aGVkLgotICAgICAgICAvLyBJZiB3ZSBkb24ndCB3ZSdsbCBlbmQgdXAgd2l0aCBhIGRlYWRsb2Nr
IHdoZXJlIGJvdGggc3luYyBtZXNzYWdlIHNlbmRlcnMgYXJlIHN0dWNrIHdhaXRpbmcgZm9yIGEg
cmVwbHkuCi0gICAgICAgIGlmIChTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5wcm9jZXNz
SW5jb21pbmdNZXNzYWdlKCp0aGlzLCBtZXNzYWdlKSkKKyAgICAgICAgaWYgKG1fd2FpdGluZ0Zv
ck1lc3NhZ2UtPndhaXRGb3JPcHRpb25zLmNvbnRhaW5zKFdhaXRGb3JPcHRpb246OkRpc3BhdGNo
SW5jb21pbmdTeW5jTWVzc2FnZXNXaGlsZVdhaXRpbmcpICYmIG1lc3NhZ2UtPmlzU3luY01lc3Nh
Z2UoKSAmJiBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5wcm9jZXNzSW5jb21pbmdNZXNz
YWdlKCp0aGlzLCBtZXNzYWdlKSkgeworICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZUNvbmRp
dGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAg
ICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CisgICAgICAgIGlm
IChtX3dhaXRpbmdGb3JNZXNzYWdlLT53YWl0Rm9yT3B0aW9ucy5jb250YWlucyhXYWl0Rm9yT3B0
aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpICYmIG1lc3NhZ2UtPmlz
U3luY01lc3NhZ2UoKSkgeworICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2Fn
ZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IHRydWU7CisgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdl
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgZW5xdWV1ZUluY29taW5nTWVzc2Fn
ZShXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAg
IH0KKworICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBzeW5jIG1lc3NhZ2Ugb3IgaWYgaXQncyBh
IG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgZGlzcGF0Y2hlZCBldmVuIHdoZW4gd2FpdGluZyBmb3IK
KyAgICAvLyBhIHN5bmMgcmVwbHkuIElmIGl0IGlzLCBhbmQgd2UncmUgd2FpdGluZyBmb3IgYSBz
eW5jIHJlcGx5IHRoaXMgbWVzc2FnZSBuZWVkcyB0byBiZSBkaXNwYXRjaGVkLgorICAgIC8vIElm
IHdlIGRvbid0IHdlJ2xsIGVuZCB1cCB3aXRoIGEgZGVhZGxvY2sgd2hlcmUgYm90aCBzeW5jIG1l
c3NhZ2Ugc2VuZGVycyBhcmUgc3R1Y2sgd2FpdGluZyBmb3IgYSByZXBseS4KKyAgICBpZiAoU3lu
Y01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkucHJvY2Vzc0luY29taW5nTWVzc2FnZSgqdGhpcywg
bWVzc2FnZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2Uo
V1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHVpbnQ2NF90IENvbm5lY3Rpb246Omluc3RhbGxJbmNv
bWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNr
KQpAQCAtOTcyLDkgKzEwNDYsOCBAQCB2b2lkIENvbm5lY3Rpb246OmRpZEZhaWxUb1NlbmRTeW5j
TWVzc2FnZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUluY29taW5nTWVzc2FnZShzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gaW5jb21pbmdNZXNzYWdlKQogeworICAgIEFTU0VSVChtX2lu
Y29taW5nTWVzc2FnZXNNdXRleC5pc0hlbGQoKSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKLQogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgICAgICBpZiAobV93YXNLaWxsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MTA0LDkgKzExNzcsMTcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgLy8gVGhlIG1lc3NhZ2UgbWlnaHQgaGF2
ZSBhbHJlYWR5IGJlZW4gZGlzcGF0Y2hlZCBmcm9tIHRoZSBJUEMgV29ya1F1ZXVlIHRvIHRoZSBt
YWluIHRocmVhZCBieSB0aGUgdGltZSB0aGUKICAgICAvLyBjbGllbnQgcmVnaXN0ZXJzIGl0c2Vs
ZiBhcyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVG8gYWRkcmVzcyB0aGlzLCB3ZSBjaGVj
ayBhZ2FpbiBmb3IgbWVzc2FnZXMgcmVjZWl2ZXJzCiAgICAgLy8gb25jZSB0aGUgbWVzc2FnZSBh
cnJpdmVzIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAvLyBGSVhNRTogVGhpcyBzdGlsbCBzdWZm
ZXJzIGZyb20gbWVzc2FnZSByZW9yZGVyaW5nIGJ1ZyB3aGVyZSB0aGUgbWVzc2FnZQorICAgIC8v
IGJlbG93IG1pZ2h0IGJlIGRpc3BhdGNoZWQgYWZ0ZXIgYSBtZXNzYWdlIHRoYXQgaXMgYmVpbmcg
ZGlzcGF0Y2hlZCBmcm9tCisgICAgLy8gdGhlIGluY29taW5nIG1lc3NhZ2UgdGhyZWFkLiBUaGlz
IHNob3VsZCBiZSBmaXhlZCBieSBjaGFuZ2luZyB0aGUKKyAgICAvLyBjYWxsc2l0ZXMgdG8gdXNl
IENvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKS4KICAgICBpZiAoZGlzcGF0Y2hN
ZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcihtZXNzYWdlKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgLy8gRklYTUU6IEhlcmUgdGhlIFRocmVhZE1lc3NhZ2VSZWNlaXZlciBpcyBtaXNzaW5nIHRo
ZSBhYm92ZSBkaXNwYXRjaC4KKyAgICAvLyBGSVhNRTogSGVyZSB0aGUgVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyIHdvdWxkIGJlIHN1ZmZlcmluZyBmcm9tIHRoZSBhYm92ZQorICAgIC8vIG1lc3NhZ2Ug
cmVvcmRlcmluZyBidWcuCisKICAgICBpZiAobWVzc2FnZS0+c2hvdWxkVXNlRnVsbHlTeW5jaHJv
bm91c01vZGVGb3JUZXN0aW5nKCkpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNN
b2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCAxOWQwZTk2ZmZmZmU5YTdiMmUxZDRm
MzRhNjVlMDg0MzMwN2JmN2YwLi4yNDQ2MjQ1Y2JhOWFiMWMzY2YxNDJmNzg2YTM1YjliNGM4OWY4
NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNs
dWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNs
dWRlIDx3dGYvQ29uZGl0aW9uLmg+CkBAIC0yMjAsNiArMjIxLDE1IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VS
ZWNlaXZlciosIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKICAgICB2b2lkIHJlbW92ZVRo
cmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQg
PSAwKTsKIAorICAgIC8vIEFkZHMgYSBtZXNzYWdlIHJlY2VpdmUgcXVldWUuIFRoZSBjbGllbnQg
c2hvdWxkIG1ha2Ugc3VyZSB0aGUgaW5zdGFuY2UgaXMgcmVtb3ZlZCBiZWZvcmUgaXQgZ29lcwor
ICAgIC8vIG91dCBvZiBzY29wZS4KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVz
c2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9
IDApOworICAgIC8vIEFkZCBzIGEgbWVzc2FnZSByZWNlaXZlIHF1ZXVlIHRoYXQgZGlzcGF0Y2hl
cyB0byB0aGUgTWVzc2FnZVJlY2VpdmVyIHZpYSB0aGUgRnVuY3Rpb25EaXNwYXRjaGVyLgorICAg
IC8vIFRoZSBjbGllbnQgc2hvdWxkIG1ha2Ugc3VyZSBpbnN0YW5jZSBpcyByZW1vdmVkIGJlZm9y
ZSBNZXNzYWdlUmVjZWl2ZXIgYW5kIEZ1bmN0aW9uRGlzcGF0Y2hlciBnbworICAgIC8vIG91dCBv
ZiBzY29wZS4gVGhlIGRpc3BhdGNoIGZ1bmN0aW9uIHdpbGwgaG9sZCB0aGUgY29ubmVjdGlvbiBv
YmplY3QgYWxpdmUuCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKEZ1bmN0aW9uRGlz
cGF0Y2hlciYsIE1lc3NhZ2VSZWNlaXZlciYsIFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCA9IDApOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKwogICAgIGJvb2wgb3BlbigpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQgbWFya0N1cnJlbnRseURpc3BhdGNoZWRN
ZXNzYWdlQXNJbnZhbGlkKCk7CkBAIC0zMDAsNiArMzEwLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVJ
bnZhbGlkTWVzc2FnZUZvclRlc3Rpbmc7IH0KICNlbmRpZgogCisgICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+JiYpOwogcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2ZXIsIENsaWVudCYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIp
OwpAQCAtNDAxLDYgKzQxMiw3IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX2luY29taW5nTWVzc2Fn
ZXNNdXRleDsKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1faW5jb21pbmdN
ZXNzYWdlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZXNUaHJvdHRsZXI+IG1faW5jb21p
bmdNZXNzYWdlc1Rocm90dGxlcjsKKyAgICBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwIG1fcmVjZWl2
ZVF1ZXVlczsKIAogICAgIC8vIE91dGdvaW5nIG1lc3NhZ2VzLgogICAgIExvY2sgbV9vdXRnb2lu
Z01lc3NhZ2VzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9G
dW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9GdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGQ2NmEzMmNmOTllODUwMzUwZWEwYzAzMzlhODc2NGZkNjgwMTQ4ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Z1bmN0aW9uRGlzcGF0Y2hlck1l
c3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKKworbmFtZXNwYWNl
IElQQyB7CisKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworCitjbGFzcyBGdW5j
dGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlIGZpbmFsIDogcHVibGljIE1lc3NhZ2VS
ZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUoRnVuY3Rpb25EaXNwYXRjaGVy
JiBkaXNwYXRjaGVyLCBNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgICAgICA6IG1fZGlz
cGF0Y2hlcihkaXNwYXRjaGVyKQorICAgICAgICAsIG1fcmVjZWl2ZXIocmVjZWl2ZXIpCisgICAg
eworICAgIH0KKyAgICB+RnVuY3Rpb25EaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVRdWV1ZSgpIGZp
bmFsID0gZGVmYXVsdDsKKworICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgbWVzc2FnZSkgZmluYWwKKyAgICB7
CisgICAgICAgIG1fZGlzcGF0Y2hlci5kaXNwYXRjaChbY29ubmVjdGlvbiA9IG1ha2VSZWYoY29u
bmVjdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCAmcmVjZWl2ZXIgPSBtX3JlY2Vp
dmVyXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+ZGlzcGF0Y2hNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlKHJlY2VpdmVyLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICAgICAgfSk7
CisgICAgfQorcHJpdmF0ZToKKyAgICBGdW5jdGlvbkRpc3BhdGNoZXImIG1fZGlzcGF0Y2hlcjsK
KyAgICBNZXNzYWdlUmVjZWl2ZXImIG1fcmVjZWl2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZl
UXVldWUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NWMzY2U5YWYyZmQyNjk1ZDU1YWQyZjA2NjJhNThmMWEwODMyNmM5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2Vp
dmVRdWV1ZS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIENvbm5lY3Rpb247
CitjbGFzcyBEZWNvZGVyOworCitjbGFzcyBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5NZXNzYWdlUmVjZWl2ZVF1ZXVlKCkgPSBkZWZhdWx0OworICAgIC8vIENh
bGxlZCB3aXRoIENvbm5lY3Rpb24gaW5jb21pbmcgbWVzc2FnZSBsb2NrIGhlbGQuCisgICAgLy8g
TWF5IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisgICAgdmlydHVhbCB2b2lkIGVu
cXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJikgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZmUwZTgw
NDUzOWRmZmYxNTVmZGNhZjQwZTNhMDhiMDUwOWIyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbChTdG9yZVR5cGUmJiBxdWV1ZSwgUmVjZWl2ZXJOYW1l
IHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBhdXRvIGtleSA9
IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3Rp
bmF0aW9uSUQpOworICAgIEFTU0VSVCghbV9xdWV1ZXMuY29udGFpbnMoa2V5KSk7CisgICAgbV9x
dWV1ZXMuYWRkKGtleSwgV1RGTW92ZShxdWV1ZSkpOworfQorCit2b2lkIE1lc3NhZ2VSZWNlaXZl
UXVldWVNYXA6OnJlbW92ZShSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKQoreworICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8
dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgQVNTRVJUKG1fcXVl
dWVzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcXVldWVzLnJlbW92ZShrZXkpOworfQorCitNZXNz
YWdlUmVjZWl2ZVF1ZXVlKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjpnZXQoY29uc3QgRGVjb2Rl
ciYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBpZiAobV9xdWV1ZXMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgMCk7CisgICAgYXV0
byBpdCA9IG1fcXVldWVzLmZpbmQoa2V5KTsKKyAgICBpZiAoaXQgPT0gbV9xdWV1ZXMuZW5kKCkp
IHsKKyAgICAgICAga2V5LnNlY29uZCA9IG1lc3NhZ2UuZGVzdGluYXRpb25JRCgpOworICAgICAg
ICBpZiAoa2V5LnNlY29uZCkKKyAgICAgICAgICAgIGl0ID0gbV9xdWV1ZXMuZmluZChrZXkpOwor
ICAgIH0KKyAgICBpZiAoaXQgPT0gbV9xdWV1ZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBXVEY6OnZpc2l0KAorICAgICAgICBXVEY6Om1ha2VWaXNpdG9yKAor
ICAgICAgICAgICAgW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNlaXZlUXVldWU+
JiBxdWV1ZSkgeyByZXR1cm4gcXVldWUuZ2V0KCk7IH0sCisgICAgICAgICAgICBbXShNZXNzYWdl
UmVjZWl2ZVF1ZXVlKiBxdWV1ZSkgeyByZXR1cm4gcXVldWU7IH0KKyAgICAgICAgKSwgaXQtPnZh
bHVlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNDBmZjM1YzhlYzc5MjBmMDVlZmJjZDI3
MjVjMDdhYjdjY2U0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBJUEMgeworCitlbnVtIGNsYXNzIFJlY2VpdmVyTmFt
ZSA6IHVpbnQ4X3Q7CisKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAgeworcHVibGljOgor
ICAgIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAoKSA9IGRlZmF1bHQ7CisgICAgfk1lc3NhZ2VSZWNl
aXZlUXVldWVNYXAoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTWVzc2Fn
ZShjb25zdCBEZWNvZGVyJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFF1ZXVlTWFw
Ojppc1ZhbGlkS2V5KHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2Uu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2FnZS5kZXN0aW5hdGlvbklEKCkpKTsKKyAgICB9
CisKKyAgICAvLyBBZGRzIGEgd2lsZGNhcmQgZmlsdGVyIGlmIGRlc3RpbmF0aW9uSUQgPT0gMC4K
KyAgICB2b2lkIGFkZChNZXNzYWdlUmVjZWl2ZVF1ZXVlJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkgeyAgYWRkSW1wbChTdG9yZVR5cGUo
JnF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsgfQorICAgIHZvaWQgYWRkKHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYmIHF1ZXVlLCBSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKSB7IGFkZEltcGwoU3RvcmVUeXBl
KFdURk1vdmUocXVldWUpKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsgfQorICAgIHZv
aWQgcmVtb3ZlKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlKiBnZXQoY29uc3QgRGVjb2RlciYpIGNvbnN0OworcHJpdmF0ZToK
KyAgICB1c2luZyBTdG9yZVR5cGUgPSBWYXJpYW50PE1lc3NhZ2VSZWNlaXZlUXVldWUqLCBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVRdWV1ZT4+OworICAgIHZvaWQgYWRkSW1wbChTdG9y
ZVR5cGUmJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB1c2lu
ZyBRdWV1ZU1hcCA9IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgU3RvcmVU
eXBlPjsKKyAgICBRdWV1ZU1hcCBtX3F1ZXVlczsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKaW5kZXggODc1ODYyZThkMTdlZTI0ZGFkNGY3YjFlZmQwNWQ0NWRkMTkzZjQ2Yi4u
NGRlYTRhYTI1MDRlOGNjYTg4ZmVlMDIxMmFhNzhiZWU1OTE2MTQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBA
IC0xNDQsNiArMTQ0LDcgQEAgUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxh
dGZvcm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9y
ZS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcCBAbm8tdW5pZnkK
K1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRm
b3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL01l
c3NhZ2VTZW5kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
Y3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzEwNjEzMWE5YjE2OWE1NDc5NTZjNmFhODlkMGFkZDQ3NjA1NmZlNC4u
ZTdjOTM4NDc0OTNjN2NiNzg4YTgyZjU3Mjg4NzM4ZTA3OWUyZWUwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI1LDYgKzEzMjUs
MTAgQEAKIAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lz
dGVuY3lVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLzsgfTsK
IAkJN0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1NjY4Q0UwMDAw
RTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKKwkJN0I0ODNGMUYyNUNEREE5QzAwMTIw
NDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFCMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdl
UmVjZWl2ZVF1ZXVlTWFwLmggKi87IH07CisJCTdCNDgzRjIwMjVDRERBOUMwMDEyMDQ4NiAvKiBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1
ZS5oICovOyB9OworCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAg
Ki87IH07CisJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBGdW5jdGlvbkRpc3BhdGNoZXJN
ZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogRnVuY3Rpb25EaXNwYXRjaGVy
TWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAg
LyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTcz
QjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyog
V0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMz
QzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNDUyNSw2ICs0
NTI5LDEwIEBACiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVy
ZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4M0YxQjI1Q0REQTlCMDAxMjA0ODYg
LyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1l
c3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBGdW5jdGlvbkRpc3BhdGNoZXJNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0
aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5MzIsNiArNjk0MCw3IEBACiAJCQkJQkMwMzJE
QTAxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuaCAqLywKIAkJCQk5QkQ4QUI0OTI1ODIwRTUy
MDA1Mzg2RjggLyogRm9udFJlZmVyZW5jZS5oICovLAogCQkJCTQxNTFFNUMzMUZCQjkwQTkwMEU0
N0UyRCAvKiBGb3JtRGF0YVJlZmVyZW5jZS5oICovLAorCQkJCTdCNDgzRjFFMjVDRERBOUIwMDEy
MDQ4NiAvKiBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8sCiAJCQkJ
QzBDRTcyQUMxMjQ3RTc4RDAwQkMwRUM0IC8qIEhhbmRsZU1lc3NhZ2UuaCAqLywKIAkJCQkxQzlB
RjM2MTI0MTM0RDIzMDBEM0VDMDIgLyogSW1hZ2VEYXRhUmVmZXJlbmNlLmggKi8sCiAJCQkJQTMx
RjYwQTMyNUNDN0RCODAwQUYxNEY0IC8qIElQQ1NlbWFwaG9yZS5jcHAgKi8sCkBAIC02OTQwLDYg
KzY5NDksOSBAQAogCQkJCTlCNDc5MDhFMjUzMTUxQ0MwMEVDMTFBQiAvKiBKU0lQQ0JpbmRpbmcu
aCAqLywKIAkJCQk5QjQ3OTA4QzI1MzE0RDgzMDBFQzExQUIgLyogTWVzc2FnZUFyZ3VtZW50RGVz
Y3JpcHRpb25zLmggKi8sCiAJCQkJMUFDNEM4MjgxNkI4NzZBOTAwNjlEQ0NEIC8qIE1lc3NhZ2VG
bGFncy5oICovLAorCQkJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggKi8sCisJCQkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNl
aXZlUXVldWVNYXAuY3BwICovLAorCQkJCTdCNDgzRjFCMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwLmggKi8sCiAJCQkJMUEzRUVEMTExNjFBNTNENjAwQUVCNEY1IC8q
IE1lc3NhZ2VSZWNlaXZlci5oICovLAogCQkJCTFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAvKiBN
ZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovLAogCQkJCTFBM0VFRDBEMTYxQTUzNTMwMEFFQjRGNSAv
KiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCAqLywKQEAgLTExNjYzLDYgKzExNjc1LDcgQEAKIAkJCQlD
RDc4RTExNTFEQjdEN0VEMDAxNEEyREUgLyogRnVsbHNjcmVlbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0QxOUQyRUEyMDQ2NDA2RjAwMTcwNzRBIC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBOTNEQjAyMkY4QkNGNDAwNDkwQTY5IC8q
IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFCMzFENTkwMkREMDBERDdD
NjggLyogR2FtZXBhZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NTNGMTE4QkFCRjAw
MDdEOUU5QSAvKiBHZW5lcmljQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTlFQzUzMkEz
MjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMTE3NTQsNiArMTE3NjcsOCBAQAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAv
KiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ3OTA4RDI1MzE0RDgzMDBF
QzExQUIgLyogTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUM0QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3QjQ4M0YyMDI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0I0ODNGMUYyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFF
QjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDBGMTYx
QTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQUIwMzdBMTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTEzNzQ3LDYgKzEzNzYyLDcgQEAKIAkJCQkwN0UxOUVGQjIzRDQwMUYxMDA5NEZGQjQg
LyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFERjI5RTY0MjU3RjM3QTMwMDNDMjhBRiAvKiBNZWRpYVNvdXJjZVByaXZhdGVS
ZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUI0NzkwOTEyNTMx
NTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1
ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkzRkQgLyog
TWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgyMjEyQjZB
NzEwMEY0OTNGRCAvKiBNZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJB
NzdBMjEyQjZBNjEwMEY0OTNGRCAvKiBNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420305</attachid>
            <date>2021-02-15 04:37:01 -0800</date>
            <delta_ts>2021-02-16 08:01:47 -0800</delta_ts>
            <desc>attempt to simplify</desc>
            <filename>bug-221560-20210215143659.patch</filename>
            <type>text/plain</type>
            <size>42634</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ4Njg2M2U2ZjhlMzIxZTMw
OGMwZTVkZDcxMDkxMDM2NTFhOGJjYTUuLjMwODBmYjJlNWI1YmZkYjIzN2JlYzczNTlmOTg4YmE3
MWE1Yzc3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjEtMDItMDggIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW9uIGNsaWVu
dHMgc2hvdWxkIGJlIGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRhIGluc3RlYWQg
b2YgZW1iZWRkZWQgaW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZSwg
YW4gaW50ZXJmYWNlIHdoaWNoIG9idGFpbnMgbWVzc2FnZXMgZnJvbQorICAgICAgICB0aGUgbWVz
c2FnZSByZWNlaXZlIHRocmVhZCBhbmQgZm9yd2FyZHMgdGhlbSB0byBjYWxsZXIgYXMgZGF0YS4K
KyAgICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBza2lwIG1l
c3NhZ2VzIHRoYXQgYXJlIHN0YWxlCisgICAgICAgIG9yIG9yaWdpbmF0aW5nIGZyb20gYSBzZW5k
ZXIgd2hpY2ggaXMgaW5jb3JyZWN0LiBCZWZvcmUsIHRoZSBjbGllbnQKKyAgICAgICAgY291bGQg
b25seSBnZXQgdGhlIG1lc3NhZ2VzIGFzIEZ1bmN0aW9uIHJlZmVyZW5jZXMsIGFuZCB0aG9zZSBj
YW5ub3QKKyAgICAgICAgYmUgc2tpcHBlZCBhcyBpdCB3b3VsZCBiZSB1bmRlZmluZWQgd2hhdCBu
b3QgZXhlY3V0aW5nIGEgZnVuY3Rpb24gbWVhbnMuCisKKyAgICAgICAgSVBDOjpNZXNzYWdlUmVj
ZWl2ZVF1ZXVlIGlzIGEgZ2VuZXJhbGl6YXRpb24gYW5kIHNpbXBsaWZpY2F0aW9uIG9mIGN1cnJl
bnQKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3Vu
dGVkIGFuZAorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
ci4gSXQgaGFzIGRpZmZlcmVudCByZWYtY291bnQKKyAgICAgICAgc2VtYW50aWNzLCBpbiB0aGUg
d2F5IHRoYXQgY2xpZW50IGNvbnRyb2xzIHRoZSBsaWZlLXRpbWUgd2l0aCBhZGQgYW5kCisgICAg
ICAgIHJlbW92ZS4KKworICAgICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWUgZml4ZXMgbWVz
c2FnZSByZW9yZGVyaW5nIGJ1ZyB3aXRoCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyIHdoZXJlIGZpcnN0IGZldyBtZXNzYWdlcworICAgICAgICB0aGF0
IGFyZSByb3V0ZWQgdG8gbWFpbiB0aHJlYWQgbWVzc2FnZSBxdWV1ZSBjYW4gY29tZSBsYXRlciB0
aGFuIHNvbWUKKyAgICAgICAgb3RoZXIgbWVzc2FnZSB0aGF0IGdldHMgaGFuZGxlZCBmcm9tIG1l
c3NhZ2UgcmVjZWl2ZSB0aHJlYWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUp
OgorICAgICAgICBBZGQgdHdvIHZhcmlhbnRzOgorICAgICAgICAgIDEpIHBsYWluIHJhdyBNZXNz
YWdlUmVjZWl2ZVF1ZXVlLCB0byBiZSB1c2VkIGluIFdlYkdMIElQQyBpbXBsZW1lbnRhdGlvbi4K
KyAgICAgICAgICAyKSBBIG1lc3NhZ2UgcXVldWUgd2hpY2ggZGlzcGF0Y2hlcyB0byBhIHBhcnRp
Y3VsYXIgRnVuY3Rpb25EaXNwYXRjaGVyLgorICAgICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIHJl
cGxhY2UgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLAorICAgICAgICBUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXJSZWZDb3VudGVkIGFuZCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIuCisgICAgICAgIEV4YW1w
bGVzIG9mIHRoZSByZXBsYWNlbWVudCBhcmUgZ2l2ZW4gaW4gdGhlIGRlcGVuZGluZyBidWdzLgor
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2Up
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZW5xdWV1ZUluY29taW5nTWVzc2FnZSk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaC4K
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDogQWRkZWQuCisg
ICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOiBBZGRlZC4K
KyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAg
IChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAgICAgIChJUEM6Ok1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OmdldCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvRnVu
Y3Rpb25EaXNwYXRjaGVyLmguCisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6
OmlzVmFsaWRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6
YWRkKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wMi0xNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2Vy
IGlzIGFjY2Vzc2VkIGluIG5vbi10aHJlYWQtc2FmZSBtYW5uZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggOTA3ZTRjZDRmOWVjYmUwNDU0YmNmMjA1ZGVm
M2Q5ZjEzMTY0ZTI4Yi4uODg2NDQ2MzQ1MDM4ZTU5OWI2OGYwOTEyY2VhMzVjZWQxZTA1NjNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC0zMTEsOTUg
KzMxMiw3MiBAQCB2b2lkIENvbm5lY3Rpb246OnNldFNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2Vu
ZEZhaWx1cmUoYm9vbCBzaG91bGRFeGl0T25TeW5jTWVzcwogICAgIG1fc2hvdWxkRXhpdE9uU3lu
Y01lc3NhZ2VTZW5kRmFpbHVyZSA9IHNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmU7
CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpCituYW1lc3BhY2UgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitEZXF1ZTxz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IGZpbHRlcldpdGhNZXNzYWdlUmVjZWl2ZVF1ZXVlKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFQmIHJlY2VpdmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+PiYmIGluY29taW5nTWVzc2FnZXMpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzTXV0ZXgpOwotICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8
dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOwotICAgIEFTU0VS
VCghbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOwotCi0gICAgbV93
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmFkZChrZXksIHN0ZDo6bWFrZV9wYWlyKCZ3b3JrUXVl
dWUsIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikpOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPj4gcmVzdDsKKyAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBpbmNvbWluZ01lc3Nh
Z2VzKSB7CisgICAgICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gcmVj
ZWl2ZXJOYW1lICYmIChtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCB8
fCAhZGVzdGluYXRpb25JRCkpCisgICAgICAgICAgICByZWNlaXZlUXVldWUuZW5xdWV1ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJlc3QuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICByZXR1cm4gcmVz
dDsKK30KIH0KIAotdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpCit2b2lkIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2Vp
dmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyc011dGV4
KTsKLSAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1l
c3NhZ2VSZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKLSAgICBBU1NFUlQobV93b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOwotICAgIG1fd29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVycy5yZW1vdmUoa2V5KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5j
b21pbmdNZXNzYWdlc011dGV4KTsKKyAgICBtX2luY29taW5nTWVzc2FnZXMgPSBmaWx0ZXJXaXRo
TWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck5hbWUsIGRl
c3RpbmF0aW9uSUQsIFdURk1vdmUobV9pbmNvbWluZ01lc3NhZ2VzKSk7CisgICAgbV9yZWNlaXZl
UXVldWVzLmFkZChyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9
CiAKLXZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNz
YWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciYgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLCBE
ZWNvZGVyJiBkZWNvZGVyKQordm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgV29ya1F1ZXVlJiB3b3JrUXVldWUsIFdv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciogcmVjZWl2ZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
CiB7Ci0gICAgaWYgKCFkZWNvZGVyLmlzU3luY01lc3NhZ2UoKSkgewotICAgICAgICB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoKnRoaXMsIGRlY29kZXIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzeW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVlc3RJRCkg
ewotICAgICAgICAvLyBXZSByZWNlaXZlZCBhbiBpbnZhbGlkIHN5bmMgbWVzc2FnZS4KLSAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzLgotICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0
SUQpOwotCi0gICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0
aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgotICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7
Ci0KLSAgICAvLyBGSVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBz
ZW5kIGJhY2sgYSBTeW5jTWVzc2FnZUVycm9yLgotICAgIEFTU0VSVChkZWNvZGVyLmlzVmFsaWQo
KSk7Ci0KLSAgICBpZiAocmVwbHlFbmNvZGVyKQotICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1v
dmUocmVwbHlFbmNvZGVyKSk7CisgICAgYXV0byByZWNlaXZlUXVldWUgPSBtYWtlVW5pcXVlPFdv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlclF1ZXVlPih3b3JrUXVldWUsICpyZWNlaXZlcik7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgbV9p
bmNvbWluZ01lc3NhZ2VzID0gZmlsdGVyV2l0aE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsICpy
ZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgV1RGTW92ZShtX2luY29t
aW5nTWVzc2FnZXMpKTsKKyAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1
ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KIAotdm9pZCBDb25uZWN0aW9u
OjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhyZWFkTWVzc2FnZVJlY2VpdmVyLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKQordm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2
ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKiByZWNl
aXZlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZE1lc3NhZ2VSZWNl
aXZlcnNMb2NrKTsKLSAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKLSAgICBBU1NFUlQo
IW1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhrZXkpKTsKLQotICAgIG1fdGhyZWFk
TWVzc2FnZVJlY2VpdmVycy5hZGQoa2V5LCB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIpOworICAgIGF1
dG8gcmVjZWl2ZVF1ZXVlID0gbWFrZVVuaXF1ZTxUaHJlYWRNZXNzYWdlUmVjZWl2ZXJRdWV1ZT4o
KnJlY2VpdmVyKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdl
c011dGV4KTsKKyAgICBtX2luY29taW5nTWVzc2FnZXMgPSBmaWx0ZXJXaXRoTWVzc2FnZVJlY2Vp
dmVRdWV1ZSgqdGhpcywgKnJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
LCBXVEZNb3ZlKG1faW5jb21pbmdNZXNzYWdlcykpOworICAgIG1fcmVjZWl2ZVF1ZXVlcy5hZGQo
V1RGTW92ZShyZWNlaXZlUXVldWUpLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwogfQog
Ci12b2lkIENvbm5lY3Rpb246OnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQ29u
bmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZlck5hbWUgcmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFkTWVzc2FnZVJlY2Vp
dmVyc0xvY2spOwotICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOwotICAgIEFTU0VSVCht
X3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7Ci0KLSAgICBtX3RocmVhZE1l
c3NhZ2VSZWNlaXZlcnMucmVtb3ZlKGtleSk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2luY29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgbV9yZWNlaXZlUXVldWVzLnJlbW92ZShyZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3BhdGNo
VGhyZWFkTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShUaHJlYWRNZXNzYWdlUmVjZWl2ZXImIHRocmVh
ZE1lc3NhZ2VSZWNlaXZlciwgRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQgQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2Vp
dmVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBkZWNvZGVyKQogewotICAgIGlmICghZGVj
b2Rlci5pc1N5bmNNZXNzYWdlKCkpIHsKLSAgICAgICAgdGhyZWFkTWVzc2FnZVJlY2VpdmVyLmRp
ZFJlY2VpdmVNZXNzYWdlKCp0aGlzLCBkZWNvZGVyKTsKKyAgICBpZiAoIWRlY29kZXItPmlzU3lu
Y01lc3NhZ2UoKSkgeworICAgICAgICBtZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZU1lc3NhZ2Uo
KnRoaXMsICpkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHVpbnQ2NF90
IHN5bmNSZXF1ZXN0SUQgPSAwOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3luY1JlcXVlc3RJ
RCkgfHwgIXN5bmNSZXF1ZXN0SUQpIHsKLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBpbnZhbGlk
IHN5bmMgbWVzc2FnZS4KLSAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAg
ICAgIC8vIFdlIHJlY2VpdmVkIGFuIGludmFsaWQgc3luYyBtZXNzYWdlLgorICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIHRoaXMuCisgICAgICAgIGRlY29kZXItPm1hcmtJbnZhbGlkKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8
RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwot
ICAgIHRocmVhZE1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CisKKyAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNvZGVy
IGFuZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIuCisgICAgbWVz
c2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgKmRlY29kZXIsIHJlcGx5
RW5jb2Rlcik7CiAKICAgICAvLyBGSVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdl
IHNob3VsZCBzZW5kIGJhY2sgYSBTeW5jTWVzc2FnZUVycm9yLgotICAgIEFTU0VSVChkZWNvZGVy
LmlzVmFsaWQoKSk7CisgICAgQVNTRVJUKGRlY29kZXItPmlzVmFsaWQoKSk7CiAKICAgICBpZiAo
cmVwbHlFbmNvZGVyKQogICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVy
KSk7CkBAIC03MzEsMTkgKzcwOSwyMSBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWlu
Z01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIHRocmVhZGVkUmVjZWl2ZXJLZXkgPSBzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBt
ZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOwotICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyTWFwOjppc1ZhbGlkS2V5KHRocmVhZGVkUmVjZWl2ZXJLZXkpIHx8ICFUaHJlYWRNZXNzYWdl
UmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkodGhyZWFkZWRSZWNlaXZlcktleSkpIHsKKyAgICBpZiAo
IU1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmlzVmFsaWRNZXNzYWdlKCptZXNzYWdlKSkgewogICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgbWVzc2FnZU5hbWUgPSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UobWVzc2FnZU5hbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKG1lc3NhZ2UpKQotICAg
ICAgICByZXR1cm47CisgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBwcmFjdGljYWxseSB0aGUgc2Ft
ZSBtdXRleCwgc28gbWF5YmUgdGhleSBjb3VsZCBiZSBtZXJnZWQuCisgICAgYXV0byB3YWl0Rm9y
TWVzc2FnZXNMb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwogCi0gICAg
aWYgKGRpc3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIobWVzc2FnZSkpCisgICAgYXV0byBp
bmNvbWluZ01lc3NhZ2VzTG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgp
OworICAgIGlmIChhdXRvKiByZWNlaXZlUXVldWUgPSBtX3JlY2VpdmVRdWV1ZXMuZ2V0KCptZXNz
YWdlKSkgeworICAgICAgICByZWNlaXZlUXVldWUtPmVucXVldWVNZXNzYWdlKCp0aGlzLCBXVEZN
b3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmIChtZXNzYWdl
LT5pc1N5bmNNZXNzYWdlKCkpIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2lu
Y29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKQEAgLTc1NSwzOCArNzM1LDM0IEBAIHZv
aWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gbWVzc2FnZSkKICAgICB9CiAKICAgICAvLyBDaGVjayBpZiB3ZSdyZSB3YWl0aW5nIGZv
ciB0aGlzIG1lc3NhZ2UsIG9yIGlmIHdlIG5lZWQgdG8gaW50ZXJydXB0IHdhaXRpbmcgZHVlIHRv
IGFuIGluY29taW5nIHN5bmMgbWVzc2FnZS4KLSAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKLQotICAgICAgICBpZiAobV93YWl0aW5n
Rm9yTWVzc2FnZSAmJiAhbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlcikgewotICAgICAgICAg
ICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VOYW1lID09IG1lc3NhZ2UtPm1lc3Nh
Z2VOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVzdGluYXRpb25JRCA9PSBtZXNzYWdl
LT5kZXN0aW5hdGlvbklEKCkpIHsKLSAgICAgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdl
LT5kZWNvZGVyID0gV1RGTW92ZShtZXNzYWdlKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV93
YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7Ci0gICAgICAgICAgICAgICAgbV93YWl0Rm9yTWVz
c2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT53YWl0Rm9y
T3B0aW9ucy5jb250YWlucyhXYWl0Rm9yT3B0aW9uOjpEaXNwYXRjaEluY29taW5nU3luY01lc3Nh
Z2VzV2hpbGVXYWl0aW5nKSAmJiBtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkgJiYgU3luY01lc3Nh
Z2VTdGF0ZTo6c2luZ2xldG9uKCkucHJvY2Vzc0luY29taW5nTWVzc2FnZSgqdGhpcywgbWVzc2Fn
ZSkpIHsKLSAgICAgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9u
ZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPndhaXRGb3JPcHRpb25zLmNvbnRhaW5zKFdhaXRG
b3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcykgJiYgbWVzc2Fn
ZS0+aXNTeW5jTWVzc2FnZSgpKSB7Ci0gICAgICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2Fn
ZS0+bWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbV93
YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgICAgICAgICBlbnF1
ZXVlSW5jb21pbmdNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KKyAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZSAmJiAhbV93
YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlcikgeworICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVz
c2FnZS0+bWVzc2FnZU5hbWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdG
b3JNZXNzYWdlLT5kZXN0aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewor
ICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlciA9IFdURk1vdmUobWVzc2Fn
ZSk7CisgICAgICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7Cisg
ICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBh
IHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNob3VsZCBiZSBkaXNwYXRj
aGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgotICAgICAgICAvLyBhIHN5bmMgcmVwbHkuIElmIGl0
IGlzLCBhbmQgd2UncmUgd2FpdGluZyBmb3IgYSBzeW5jIHJlcGx5IHRoaXMgbWVzc2FnZSBuZWVk
cyB0byBiZSBkaXNwYXRjaGVkLgotICAgICAgICAvLyBJZiB3ZSBkb24ndCB3ZSdsbCBlbmQgdXAg
d2l0aCBhIGRlYWRsb2NrIHdoZXJlIGJvdGggc3luYyBtZXNzYWdlIHNlbmRlcnMgYXJlIHN0dWNr
IHdhaXRpbmcgZm9yIGEgcmVwbHkuCi0gICAgICAgIGlmIChTeW5jTWVzc2FnZVN0YXRlOjpzaW5n
bGV0b24oKS5wcm9jZXNzSW5jb21pbmdNZXNzYWdlKCp0aGlzLCBtZXNzYWdlKSkKKyAgICAgICAg
aWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPndhaXRGb3JPcHRpb25zLmNvbnRhaW5zKFdhaXRGb3JP
cHRpb246OkRpc3BhdGNoSW5jb21pbmdTeW5jTWVzc2FnZXNXaGlsZVdhaXRpbmcpICYmIG1lc3Nh
Z2UtPmlzU3luY01lc3NhZ2UoKSAmJiBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5wcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKCp0aGlzLCBtZXNzYWdlKSkgeworICAgICAgICAgICAgbV93YWl0
Rm9yTWVzc2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogCi0gICAgICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShtZXNzYWdl
KSk7CisgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT53YWl0Rm9yT3B0aW9ucy5jb250
YWlucyhXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMp
ICYmIG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgeworICAgICAgICAgICAgbV93YWl0aW5nRm9y
TWVzc2FnZS0+bWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IHRydWU7CisgICAgICAgICAgICBt
X3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgZW5xdWV1
ZUluY29taW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogICAgIH0KKworICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBzeW5jIG1lc3Nh
Z2Ugb3IgaWYgaXQncyBhIG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgZGlzcGF0Y2hlZCBldmVuIHdo
ZW4gd2FpdGluZyBmb3IKKyAgICAvLyBhIHN5bmMgcmVwbHkuIElmIGl0IGlzLCBhbmQgd2UncmUg
d2FpdGluZyBmb3IgYSBzeW5jIHJlcGx5IHRoaXMgbWVzc2FnZSBuZWVkcyB0byBiZSBkaXNwYXRj
aGVkLgorICAgIC8vIElmIHdlIGRvbid0IHdlJ2xsIGVuZCB1cCB3aXRoIGEgZGVhZGxvY2sgd2hl
cmUgYm90aCBzeW5jIG1lc3NhZ2Ugc2VuZGVycyBhcmUgc3R1Y2sgd2FpdGluZyBmb3IgYSByZXBs
eS4KKyAgICBpZiAoU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkucHJvY2Vzc0luY29taW5n
TWVzc2FnZSgqdGhpcywgbWVzc2FnZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGVucXVldWVJ
bmNvbWluZ01lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHVpbnQ2NF90IENvbm5lY3Rp
b246Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
ICgpPiYmIGNhbGxiYWNrKQpAQCAtOTcyLDkgKzk0OCw4IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlk
RmFpbFRvU2VuZFN5bmNNZXNzYWdlKCkKIAogdm9pZCBDb25uZWN0aW9uOjplbnF1ZXVlSW5jb21p
bmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBpbmNvbWluZ01lc3NhZ2UpCiB7Cisg
ICAgQVNTRVJUKG1faW5jb21pbmdNZXNzYWdlc011dGV4LmlzSGVsZCgpKTsKICAgICB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOwotCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGlmIChtX3dhc0tpbGxlZCkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEwMzIsODEgKzEwMDcsMTIgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRj
aE1lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKICAgICBtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2Fn
ZSgqdGhpcywgZGVjb2Rlcik7CiB9CiAKLWF1dG8gQ29ubmVjdGlvbjo6dGhyZWFkTWVzc2FnZVJl
Y2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2FnZSkgLT4gUmVmUHRyPFRocmVh
ZE1lc3NhZ2VSZWNlaXZlcj4KLXsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFk
TWVzc2FnZVJlY2VpdmVyc0xvY2spOwotCi0gICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlcmUgaXMg
YSBnbG9iYWwgbWVzc2FnZSByZWNlaXZlciBhbmQgcmV0dXJuIGl0IGlmIHRoZXJlIGlzIG9uZS4K
LSAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIE1lc3NhZ2VSZWNlaXZlck1hcC4K
LSAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIDApOwotICAgIGF1dG8gaXQgPSBtX3RocmVhZE1l
c3NhZ2VSZWNlaXZlcnMuZmluZChrZXkpOwotICAgIGlmIChpdCAhPSBtX3RocmVhZE1lc3NhZ2VS
ZWNlaXZlcnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7Ci0KLSAgICBpZiAoYXV0
byBkZXN0aW5hdGlvbklEID0gbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKSB7Ci0gICAgICAgIGtl
eS5zZWNvbmQgPSBkZXN0aW5hdGlvbklEOwotICAgICAgICByZXR1cm4gbV90aHJlYWRNZXNzYWdl
UmVjZWl2ZXJzLmdldChrZXkpOwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1h
dXRvIENvbm5lY3Rpb246OndvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4mIG1lc3NhZ2UpIC0+IHN0ZDo6cGFpcjxSZWZQdHI8V29ya1F1ZXVlPiwgUmVmUHRy
PFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcj4+Ci17Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7Ci0KLSAgICAvLyBGaXJzdCBjaGVj
ayBpZiB0aGVyZSBpcyBhIGdsb2JhbCBtZXNzYWdlIHJlY2VpdmVyIGFuZCByZXR1cm4gaXQgaWYg
dGhlcmUgaXMgb25lLgotICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgTWVzc2Fn
ZVJlY2VpdmVyTWFwLgotICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8
dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgMCk7Ci0gICAgYXV0byBp
dCA9IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5maW5kKGtleSk7Ci0gICAgaWYgKGl0ICE9
IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52
YWx1ZTsKLQotICAgIGlmIChhdXRvIGRlc3RpbmF0aW9uSUQgPSBtZXNzYWdlLT5kZXN0aW5hdGlv
bklEKCkpIHsKLSAgICAgICAga2V5LnNlY29uZCA9IGRlc3RpbmF0aW9uSUQ7Ci0gICAgICAgIHJl
dHVybiBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGtleSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHsgfTsKLX0KLQotYm9vbCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dvcmtR
dWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2FnZSkKLXsKLSAgICBh
dXRvIHJlY2VpdmVyID0gd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2UpOwotICAgIGlm
ICghcmVjZWl2ZXIuZmlyc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlY2VpdmVy
LmZpcnN0LT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIgPSByZWNlaXZlci5zZWNvbmQsIGRlY29kZXIgPSBXVEZNb3ZlKG1l
c3NhZ2UpXSgpIG11dGFibGUgewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoKndvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciwgKmRl
Y29kZXIpOwotICAgIH0pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENvbm5lY3Rpb246
OmRpc3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
JiBtZXNzYWdlKQotewotICAgIGlmIChhdXRvIHJlY2VpdmVyID0gdGhyZWFkTWVzc2FnZVJlY2Vp
dmVyKG1lc3NhZ2UpKSB7Ci0gICAgICAgIHJlY2VpdmVyLT5kaXNwYXRjaFRvVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlY2VpdmVyLCBkZWNvZGVyID0gV1RGTW92ZSht
ZXNzYWdlKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNo
VGhyZWFkTWVzc2FnZVJlY2VpdmVyTWVzc2FnZSgqcmVjZWl2ZXIsICpkZWNvZGVyKTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBtZXNzYWdlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIE1lc3NhZ2VzIHRvIFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcnMgYXJlIG5vcm1hbGx5IGRpc3BhdGNoZWQgZnJvbSB0aGUgSVBD
IFdvcmtRdWV1ZS4gSG93ZXZlciwgdGhlcmUgaXMgYSByYWNlIGlmCi0gICAgLy8gYSBjbGllbnQg
YWRkcyBpdHNlbGYgYXMgYSBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgYXMgYSByZXN1bHQgb2Yg
cmVjZWl2aW5nIGFuIElQQyBtZXNzYWdlIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICAvLyBUaGUg
bWVzc2FnZSBtaWdodCBoYXZlIGFscmVhZHkgYmVlbiBkaXNwYXRjaGVkIGZyb20gdGhlIElQQyBX
b3JrUXVldWUgdG8gdGhlIG1haW4gdGhyZWFkIGJ5IHRoZSB0aW1lIHRoZQotICAgIC8vIGNsaWVu
dCByZWdpc3RlcnMgaXRzZWxmIGFzIGEgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLiBUbyBhZGRy
ZXNzIHRoaXMsIHdlIGNoZWNrIGFnYWluIGZvciBtZXNzYWdlcyByZWNlaXZlcnMKLSAgICAvLyBv
bmNlIHRoZSBtZXNzYWdlIGFycml2ZXMgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIGlmIChkaXNw
YXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKG1lc3NhZ2UpKQotICAgICAgICByZXR1cm47
Ci0KICAgICBpZiAobWVzc2FnZS0+c2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0
aW5nKCkpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9y
VGVzdGluZykgewogICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAppbmRleCAxOWQwZTk2ZmZmZmU5YTdiMmUxZDRmMzRhNjVlMDg0MzMwN2Jm
N2YwLi40ODU1MjAxMjQ3YzI1ZGY4NTUyYzVhNTRhMDQ2NzdiOGQ3MmI4MmNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlICJIYW5kbGVNZXNz
YWdlLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvQ29uZGl0
aW9uLmg+CkBAIC0yMTQsMTEgKzIxNSwyMSBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB2b2lkICgq
RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjaykoQ29ubmVjdGlvbiopOwogICAg
IHZvaWQgc2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhEaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKTsKIAorICAgIC8vIEFkZHMgYSBtZXNzYWdlIHJl
Y2VpdmUgcXVldWUuIFRoZSBjbGllbnQgc2hvdWxkIG1ha2Ugc3VyZSB0aGUgaW5zdGFuY2UgaXMg
cmVtb3ZlZCBiZWZvcmUgaXQgZ29lcworICAgIC8vIG91dCBvZiBzY29wZS4KKyAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworCisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworCisg
ICAgLy8gQWRkcyBhIG1lc3NhZ2UgcmVjZWlldmUgcXVldWUgdGhhdCBkaXNwYXRjaGVzIHRocm91
Z2ggV29ya1F1ZXVlIHRvIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4KKyAgICAvLyBLZWVwcyB0
aGUgV29ya1F1ZXVlIGFuZCB0aGUgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIGFsaXZlLiBEaXNw
YXRjaGVkIHRhc2tzIGtlZXAgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIGFsaXZlLgogICAgIHZv
aWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgV29ya1F1ZXVlJiwg
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwot
ICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQgPSAwKSB7IHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsgfQogCisgICAgLy8gQWRkcyBhIG1lc3NhZ2UgcmVjZWlldmUgcXVldWUgdGhhdCBk
aXNwYXRjaGVzIHRocm91Z2ggVGhyZWFkTWVzc2FnZVJlY2VpdmVyLgorICAgIC8vIEtlZXBzIHRo
ZSBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgYWxpdmUuIERpc3BhdGNoZWQgdGFza3Mga2VlcCB0aGUg
VGhyZWFkTWVzc2FnZVJlY2VpdmVyIGFsaXZlLgogICAgIHZvaWQgYWRkVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyKFJlY2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKiwgdWludDY0X3QgZGVz
dGluYXRpb25JRCA9IDApOwotICAgIHZvaWQgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworICAgIHZvaWQgcmVtb3Zl
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQgPSAwKSB7IHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKTsgfQogCiAgICAgYm9vbCBvcGVuKCk7CiAgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CkBAIC0zMDAsNiArMzExLDcgQEAgcHVibGljOgogICAgIGJvb2wgaWdub3JlSW52
YWxpZE1lc3NhZ2VGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVJbnZhbGlkTWVz
c2FnZUZvclRlc3Rpbmc7IH0KICNlbmRpZgogCisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNl
aXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYp
OwogcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENs
aWVudCYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwpAQCAtMzEx
LDE2ICszMjMsMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwg
U2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsKIAotICAgIGJvb2wg
ZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4mKTsKLSAgICBib29sIGRpc3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIoc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+Jik7Ci0KICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24gd29y
ayBxdWV1ZS4KICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+KTsKICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4pOwogCi0gICAgdm9pZCBkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlck1lc3NhZ2UoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyJiwgRGVjb2RlciYpOwotICAgIHZv
aWQgZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFRocmVhZE1lc3NhZ2VSZWNl
aXZlciYsIERlY29kZXImKTsKLQogICAgIGJvb2wgY2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBj
b25zdDsKICAgICBib29sIHBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25zdDsK
ICAgICB2b2lkIHNlbmRPdXRnb2luZ01lc3NhZ2VzKCk7CkBAIC0zNjUsOSArMzcxLDYgQEAgcHJp
dmF0ZToKICAgICAgICAgdW5zaWduZWQgbV90aHJvdHRsaW5nTGV2ZWwgeyAwIH07CiAgICAgfTsK
IAotICAgIFJlZlB0cjxUaHJlYWRNZXNzYWdlUmVjZWl2ZXI+IHRocmVhZE1lc3NhZ2VSZWNlaXZl
cihzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKTsKLSAgICBzdGQ6OnBhaXI8UmVmUHRyPFdvcmtR
dWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+PiB3b3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7Ci0KICAgICBDbGllbnQmIG1fY2xp
ZW50OwogICAgIFVuaXF1ZUlEIG1fdW5pcXVlSUQ7CiAgICAgYm9vbCBtX2lzU2VydmVyOwpAQCAt
MzgxLDE0ICszODQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Nvbm5lY3RlZDsKICAgICBS
ZWY8V29ya1F1ZXVlPiBtX2Nvbm5lY3Rpb25RdWV1ZTsKIAotICAgIExvY2sgbV93b3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXJzTXV0ZXg7Ci0gICAgdXNpbmcgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
TWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8UmVm
UHRyPFdvcmtRdWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+Pj47Ci0gICAg
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyczsK
LQotICAgIExvY2sgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jazsKLSAgICB1c2luZyBUaHJl
YWRNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50NjRf
dD4sIFJlZlB0cjxUaHJlYWRNZXNzYWdlUmVjZWl2ZXI+PjsKLSAgICBUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXJNYXAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzOwotCiAgICAgdW5zaWduZWQgbV9pblNl
bmRTeW5jQ291bnQ7CiAgICAgdW5zaWduZWQgbV9pbkRpc3BhdGNoTWVzc2FnZUNvdW50OwogICAg
IHVuc2lnbmVkIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWREaXNwYXRjaFdoZW5XYWl0aW5nRm9y
U3luY1JlcGx5Q291bnQ7CkBAIC00MDEsNiArMzk2LDcgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1f
aW5jb21pbmdNZXNzYWdlc011dGV4OwogICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
Pj4gbV9pbmNvbWluZ01lc3NhZ2VzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlc1Rocm90
dGxlcj4gbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyOworICAgIE1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAgbV9yZWNlaXZlUXVldWVzOwogCiAgICAgLy8gT3V0Z29pbmcgbWVzc2FnZXMuCiAgICAg
TG9jayBtX291dGdvaW5nTWVzc2FnZXNNdXRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWMzY2U5YWYyZmQyNjk1
ZDU1YWQyZjA2NjJhNThmMWEwODMyNmM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNl
IElQQyB7CisKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworCitjbGFzcyBNZXNz
YWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZXNzYWdlUmVjZWl2ZVF1
ZXVlKCkgPSBkZWZhdWx0OworICAgIC8vIENhbGxlZCB3aXRoIENvbm5lY3Rpb24gaW5jb21pbmcg
bWVzc2FnZSBsb2NrIGhlbGQuCisgICAgLy8gTWF5IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHRo
cmVhZHMuCisgICAgdmlydHVhbCB2b2lkIGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVN
YXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZmUwZTgwNDUzOWRmZmYxNTVmZGNhZjQwZTNhMDhiMDUwOWIy
YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
UmVjZWl2ZVF1ZXVlTWFwLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKKworbmFt
ZXNwYWNlIElQQyB7CisKK3ZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbChTdG9y
ZVR5cGUmJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCkKK3sKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgIEFTU0VSVCghbV9xdWV1
ZXMuY29udGFpbnMoa2V5KSk7CisgICAgbV9xdWV1ZXMuYWRkKGtleSwgV1RGTW92ZShxdWV1ZSkp
OworfQorCit2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIGF1dG8ga2V5ID0g
c3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGlu
YXRpb25JRCk7CisgICAgQVNTRVJUKG1fcXVldWVzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcXVl
dWVzLnJlbW92ZShrZXkpOworfQorCitNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwOjpnZXQoY29uc3QgRGVjb2RlciYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBpZiAo
bV9xdWV1ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGtl
eSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSwgMCk7CisgICAgYXV0byBpdCA9IG1fcXVldWVzLmZpbmQoa2V5KTsKKyAg
ICBpZiAoaXQgPT0gbV9xdWV1ZXMuZW5kKCkpIHsKKyAgICAgICAga2V5LnNlY29uZCA9IG1lc3Nh
Z2UuZGVzdGluYXRpb25JRCgpOworICAgICAgICBpZiAoa2V5LnNlY29uZCkKKyAgICAgICAgICAg
IGl0ID0gbV9xdWV1ZXMuZmluZChrZXkpOworICAgIH0KKyAgICBpZiAoaXQgPT0gbV9xdWV1ZXMu
ZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBXVEY6OnZpc2l0KAor
ICAgICAgICBXVEY6Om1ha2VWaXNpdG9yKAorICAgICAgICAgICAgW10oY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VSZWNlaXZlUXVldWU+JiBxdWV1ZSkgeyByZXR1cm4gcXVldWUuZ2V0KCk7
IH0sCisgICAgICAgICAgICBbXShNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBxdWV1ZSkgeyByZXR1cm4g
cXVldWU7IH0KKyAgICAgICAgKSwgaXQtPnZhbHVlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEyNDBmZjM1YzhlYzc5MjBmMDVlZmJjZDI3MjVjMDdhYjdjY2U0MTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RGVjb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBJUEMg
eworCitlbnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3Q7CisKK2NsYXNzIE1lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAgeworcHVibGljOgorICAgIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAoKSA9
IGRlZmF1bHQ7CisgICAgfk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAoKSA9IGRlZmF1bHQ7CisKKyAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkTWVzc2FnZShjb25zdCBEZWNvZGVyJiBtZXNzYWdlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFF1ZXVlTWFwOjppc1ZhbGlkS2V5KHN0ZDo6bWFrZV9wYWlyKHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2Fn
ZS5kZXN0aW5hdGlvbklEKCkpKTsKKyAgICB9CisKKyAgICAvLyBBZGRzIGEgd2lsZGNhcmQgZmls
dGVyIGlmIGRlc3RpbmF0aW9uSUQgPT0gMC4KKyAgICB2b2lkIGFkZChNZXNzYWdlUmVjZWl2ZVF1
ZXVlJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCkgeyAgYWRkSW1wbChTdG9yZVR5cGUoJnF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsgfQorICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1
ZXVlPiYmIHF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKSB7IGFkZEltcGwoU3RvcmVUeXBlKFdURk1vdmUocXVldWUpKSwgcmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsgfQorICAgIHZvaWQgcmVtb3ZlKFJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICBNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBnZXQoY29uc3Qg
RGVjb2RlciYpIGNvbnN0OworcHJpdmF0ZToKKyAgICB1c2luZyBTdG9yZVR5cGUgPSBWYXJpYW50
PE1lc3NhZ2VSZWNlaXZlUXVldWUqLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVRdWV1
ZT4+OworICAgIHZvaWQgYWRkSW1wbChTdG9yZVR5cGUmJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKTsKKyAgICB1c2luZyBRdWV1ZU1hcCA9IEhhc2hNYXA8c3RkOjpwYWly
PHVpbnQ4X3QsIHVpbnQ2NF90PiwgU3RvcmVUeXBlPjsKKyAgICBRdWV1ZU1hcCBtX3F1ZXVlczsK
K307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlUXVldWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk4NzE5ZDUzNWE1NDlhZjA3
YWRlZThiMDUyMDZiYmQ1YTRhZTNkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVzLmgKQEAgLTAsMCArMSw5NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIEZ1
bmN0aW9uRGlzcGF0Y2hlclF1ZXVlIGZpbmFsIDogcHVibGljIE1lc3NhZ2VSZWNlaXZlUXVldWUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEZ1bmN0aW9uRGlz
cGF0Y2hlclF1ZXVlKEZ1bmN0aW9uRGlzcGF0Y2hlciYgZGlzcGF0Y2hlciwgTWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlcikKKyAgICAgICAgOiBtX2Rpc3BhdGNoZXIoZGlzcGF0Y2hlcikKKyAgICAg
ICAgLCBtX3JlY2VpdmVyKHJlY2VpdmVyKQorICAgIHsKKyAgICB9CisgICAgfkZ1bmN0aW9uRGlz
cGF0Y2hlclF1ZXVlKCkgZmluYWwgPSBkZWZhdWx0OworCisgICAgdm9pZCBlbnF1ZXVlTWVzc2Fn
ZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBtZXNz
YWdlKSBmaW5hbAorICAgIHsKKyAgICAgICAgbV9kaXNwYXRjaGVyLmRpc3BhdGNoKFtjb25uZWN0
aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksICZy
ZWNlaXZlciA9IG1fcmVjZWl2ZXJdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb25uZWN0aW9u
LT5kaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UocmVjZWl2ZXIsIFdURk1vdmUobWVzc2Fn
ZSkpOworICAgICAgICB9KTsKKyAgICB9Citwcml2YXRlOgorICAgIEZ1bmN0aW9uRGlzcGF0Y2hl
ciYgbV9kaXNwYXRjaGVyOworICAgIE1lc3NhZ2VSZWNlaXZlciYgbV9yZWNlaXZlcjsKK307CisK
K2NsYXNzIFRocmVhZE1lc3NhZ2VSZWNlaXZlclF1ZXVlIGZpbmFsIDogcHVibGljIE1lc3NhZ2VS
ZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IFRocmVhZE1lc3NhZ2VSZWNlaXZlclF1ZXVlKENvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNl
aXZlciYgcmVjZWl2ZXIpCisgICAgICAgIDogbV9yZWNlaXZlcihtYWtlUmVmKHJlY2VpdmVyKSkK
KyAgICB7CisgICAgfQorICAgIH5UaHJlYWRNZXNzYWdlUmVjZWl2ZXJRdWV1ZSgpIGZpbmFsID0g
ZGVmYXVsdDsKKworICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgbWVzc2FnZSkgZmluYWwKKyAgICB7CisgICAg
ICAgIG1fcmVjZWl2ZXItPmRpc3BhdGNoVG9UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKGNv
bm5lY3Rpb24pLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgcmVjZWl2ZXIgPSBtX3JlY2Vp
dmVyXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+ZGlzcGF0Y2hNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlKHJlY2VpdmVyLmdldCgpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICAg
ICAgfSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBSZWY8Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyPiBtX3JlY2VpdmVyOworfTsKKworY2xhc3MgV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyUXVldWUgZmluYWwgOiBwdWJsaWMgTWVzc2FnZVJlY2VpdmVRdWV1ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
UXVldWUoV29ya1F1ZXVlJiBxdWV1ZSwgQ29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlcikKKyAgICAgICAgOiBtX3F1ZXVlKG1ha2VSZWYocXVldWUpKQorICAgICAg
ICAsIG1fcmVjZWl2ZXIobWFrZVJlZihyZWNlaXZlcikpCisgICAgeworICAgIH0KKyAgICB+V29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyUXVldWUoKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lk
IGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiYmIG1lc3NhZ2UpIGZpbmFsCisgICAgeworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpLCByZWNlaXZlciA9IG1fcmVjZWl2ZXJdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBj
b25uZWN0aW9uLT5kaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UocmVjZWl2ZXIuZ2V0KCks
IFdURk1vdmUobWVzc2FnZSkpOworICAgICAgICB9KTsKKyAgICB9Citwcml2YXRlOgorICAgIFJl
ZjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAgUmVmPENvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcj4gbV9yZWNlaXZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKaW5kZXggZDhkM2M5ZTRiZTA3NTExMmVlZTMwMDA1OTk1MWYwNDNjZmFkYTM3Ny4uYWIzZDEw
NjQ1YzMwNzYyMzgyNmQ2MGMxNzgxMWEwOWIwY2ZkZjU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNDUs
NiArMTQ1LDcgQEAgUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0v
SVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5jcHAg
QG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcCBAbm8tdW5pZnkKK1BsYXRm
b3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQ
Qy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIEBu
by11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNGU1ZDEzY2U1NTQ2NWVjYTlmMjdmMzBhZjdkYTU2MmM1ODE1Y2E2NC4uZDI0ZjQ2
ZDU0YjhhMDk1ODVmNThkM2Q3ZDJjMGYyZWQ3OTFiNmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI1LDYgKzEzMjUsMTAgQEAK
IAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lV
dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FG
QkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLzsgfTsKIAkJN0Ix
REIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMg
LyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKKwkJN0I0ODNGMUYyNUNEREE5QzAwMTIwNDg2IC8q
IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFCMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmggKi87IH07CisJCTdCNDgzRjIwMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICov
OyB9OworCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4
M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi87IH07
CisJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUUyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi87IH07CiAJCTdDMDY1RjJD
MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4
Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsg
fTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTcz
QjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5
IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87
IH07CkBAIC00NTI5LDYgKzQ1MzMsMTAgQEAKIAkJN0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8q
IFBlcnNpc3RlbmN5VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2RTIxRTU0NkUzMDA1REJBQ0IgLyog
UGVyc2lzdGVuY3lVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxREIyNjUyNTY2OENFMDAwMEUy
NkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFycmF5UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNDgzRjFC
MjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VS
ZWNlaXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJl
Y2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4M0YxRDI1Q0RE
QTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3Nh
Z2VSZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3Nh
Z2VSZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2
MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1NEFG
REVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02OTU2LDYgKzY5NjQsNyBAQAogCQkJCUJDMDMyREEwMTBGNDM3RDEwMDU4QzE1
QSAvKiBFbmNvZGVyLmggKi8sCiAJCQkJOUJEOEFCNDkyNTgyMEU1MjAwNTM4NkY4IC8qIEZvbnRS
ZWZlcmVuY2UuaCAqLywKIAkJCQk0MTUxRTVDMzFGQkI5MEE5MDBFNDdFMkQgLyogRm9ybURhdGFS
ZWZlcmVuY2UuaCAqLywKKwkJCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJl
Y2VpdmVRdWV1ZXMuaCAqLywKIAkJCQlDMENFNzJBQzEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxl
TWVzc2FnZS5oICovLAogCQkJCTFDOUFGMzYxMjQxMzREMjMwMEQzRUMwMiAvKiBJbWFnZURhdGFS
ZWZlcmVuY2UuaCAqLywKIAkJCQlBMzFGNjBBMzI1Q0M3REI4MDBBRjE0RjQgLyogSVBDU2VtYXBo
b3JlLmNwcCAqLywKQEAgLTY5NjQsNiArNjk3Myw5IEBACiAJCQkJOUI0NzkwOEUyNTMxNTFDQzAw
RUMxMUFCIC8qIEpTSVBDQmluZGluZy5oICovLAogCQkJCTlCNDc5MDhDMjUzMTREODMwMEVDMTFB
QiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaCAqLywKIAkJCQkxQUM0QzgyODE2Qjg3
NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggKi8sCisJCQkJN0I0ODNGMUMyNUNEREE5QjAw
MTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLywKKwkJCQk3QjQ4M0YxRDI1Q0REQTlC
MDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8sCisJCQkJN0I0ODNGMUIy
NUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCAqLywKIAkJCQkxQTNF
RUQxMTE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggKi8sCiAJCQkJMUEzRUVE
MEMxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgKi8sCiAJCQkJMUEz
RUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oICovLApAQCAtMTE2
OTUsNiArMTE3MDcsNyBAQAogCQkJCUNENzhFMTE1MURCN0Q3RUQwMDE0QTJERSAvKiBGdWxsc2Ny
ZWVuQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDE5RDJFQTIwNDY0MDZGMDAxNzA3NEEg
LyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREE5
M0RCMDIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I0ODNGMjIyNUNEREE5QzAwMTIwNDg2IC8qIE1l
c3NhZ2VSZWNlaXZlUXVldWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFCMzFENTkwMkRE
MDBERDdDNjggLyogR2FtZXBhZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NTNGMTE4
QkFCRjAwMDdEOUU5QSAvKiBHZW5lcmljQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTlF
QzUzMkEzMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlvbklkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTE3ODYsNiArMTE3OTksOCBAQAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhB
QzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ3OTA4RDI1MzE0
RDgzMDBFQzExQUIgLyogTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUM0QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjQ4M0YyMDI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I0ODNGMUYyNUNEREE5QzAwMTIwNDg2IC8qIE1l
c3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDEyMTYxQTUz
RDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VF
RDBGMTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQUIwMzdBMTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEzNzc5LDYgKzEzNzk0LDcgQEAKIAkJCQkwN0UxOUVGQjIzRDQwMUYxMDA5
NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFERjI5RTY0MjU3RjM3QTMwMDNDMjhBRiAvKiBNZWRpYVNvdXJjZVBy
aXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUI0Nzkw
OTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MTIxMkI2QTcxMDBGNDkz
RkQgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgy
MjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEOTJBNzdBMjEyQjZBNjEwMEY0OTNGRCAvKiBNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420472</attachid>
            <date>2021-02-16 08:01:54 -0800</date>
            <delta_ts>2021-02-16 10:48:03 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>bug-221560-20210216180152.patch</filename>
            <type>text/plain</type>
            <size>45385</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5OTRkMGFlYzIyY2RkODdk
YzRkZjczZDYxZDM5OTEyZjg5NjE3MzIuLjQ3M2ZjOWI3OGY0NTcwMWYzYTk2ZmJiMWIzN2MxZTE1
OGE1ZWRkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMDItMDggIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb25uZWN0aW9uIGNsaWVu
dHMgc2hvdWxkIGJlIGFibGUgdG8gb2J0YWluIHRoZSBtZXNzYWdlcyBhcyBkYXRhIGluc3RlYWQg
b2YgZW1iZWRkZWQgaW4gZnVuY3Rpb24gcmVmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZSwg
YW4gaW50ZXJmYWNlIHdoaWNoIG9idGFpbnMgbWVzc2FnZXMgZnJvbQorICAgICAgICB0aGUgbWVz
c2FnZSByZWNlaXZlIHRocmVhZCBhbmQgZm9yd2FyZHMgdGhlbSB0byBjYWxsZXIgYXMgZGF0YS4K
KyAgICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBza2lwIG1l
c3NhZ2VzIHRoYXQgYXJlIHN0YWxlCisgICAgICAgIG9yIG9yaWdpbmF0aW5nIGZyb20gYSBzZW5k
ZXIgd2hpY2ggaXMgaW5jb3JyZWN0LiBCZWZvcmUsIHRoZSBjbGllbnQKKyAgICAgICAgY291bGQg
b25seSBnZXQgdGhlIG1lc3NhZ2VzIGFzIEZ1bmN0aW9uIHJlZmVyZW5jZXMsIGFuZCB0aG9zZSBj
YW5ub3QKKyAgICAgICAgYmUgc2tpcHBlZCBhcyBpdCB3b3VsZCBiZSB1bmRlZmluZWQgd2hhdCBu
b3QgZXhlY3V0aW5nIGEgZnVuY3Rpb24gbWVhbnMuCisKKyAgICAgICAgSVBDOjpNZXNzYWdlUmVj
ZWl2ZVF1ZXVlIGlzIGEgZ2VuZXJhbGl6YXRpb24gYW5kIHNpbXBsaWZpY2F0aW9uIG9mIGN1cnJl
bnQKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3Vu
dGVkIGFuZAorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
ci4gSXQgaGFzIGRpZmZlcmVudCByZWYtY291bnQKKyAgICAgICAgc2VtYW50aWNzLCBpbiB0aGUg
d2F5IHRoYXQgY2xpZW50IGNvbnRyb2xzIHRoZSBsaWZlLXRpbWUgd2l0aCBhZGQgYW5kCisgICAg
ICAgIHJlbW92ZS4KKworICAgICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWUgZml4ZXMgbWVz
c2FnZSByZW9yZGVyaW5nIGJ1ZyB3aXRoCisgICAgICAgIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
ciBhbmQgVGhyZWFkTWVzc2FnZVJlY2VpdmVyIHdoZXJlIGZpcnN0IGZldyBtZXNzYWdlcworICAg
ICAgICB0aGF0IGFyZSByb3V0ZWQgdG8gbWFpbiB0aHJlYWQgbWVzc2FnZSBxdWV1ZSBjYW4gY29t
ZSBsYXRlciB0aGFuIHNvbWUKKyAgICAgICAgb3RoZXIgbWVzc2FnZSB0aGF0IGdldHMgaGFuZGxl
ZCBmcm9tIG1lc3NhZ2UgcmVjZWl2ZSB0aHJlYWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNl
aXZlUXVldWUpOgorICAgICAgICBBZGQgcGxhaW4gcmF3IE1lc3NhZ2VSZWNlaXZlUXVldWUsIHRv
IGJlIHVzZWQgaW4gV2ViR0wgSVBDIGltcGxlbWVudGF0aW9uLgorICAgICAgICBJbXBsZW1lbnQg
VGhyZWFkTWVzc2FnZVJlY2VpdmVyIGFuZCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgd2l0aCB0
aGUKKyAgICAgICAgYWJvdmUuCisKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlTWVz
c2FnZVJlY2VpdmVRdWV1ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVz
c2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJ
bmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjplbnF1ZXVlSW5jb21p
bmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2
ZVF1ZXVlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
OjphZGRJbXBsKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6cmVtb3Zl
KToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6Z2V0IGNvbnN0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaC4KKyAgICAgICAgKElQQzo6TWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcDo6aXNWYWxpZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGQpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTAyLTE1ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3RlQXVkaW9T
b3VyY2VQcm92aWRlck1hbmFnZXIgaXMgYWNjZXNzZWQgaW4gbm9uLXRocmVhZC1zYWZlIG1hbm5l
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA5MDdlNGNk
NGY5ZWNiZTA0NTRiY2YyMDVkZWYzZDlmMTMxNjRlMjhiLi44Yjc0MzE0YWMwNGE1NWE0OGJkMDkz
NjI5YzM2MjIwNzFlMGYyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VGbGFncy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVzLmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KQEAgLTMxMSw5NSArMzEyLDcyIEBAIHZvaWQgQ29ubmVjdGlvbjo6c2V0U2hvdWxk
RXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVyZShib29sIHNob3VsZEV4aXRPblN5bmNNZXNzCiAg
ICAgbV9zaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlID0gc2hvdWxkRXhpdE9uU3lu
Y01lc3NhZ2VTZW5kRmFpbHVyZTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1
ZSYgd29ya1F1ZXVlLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK25hbWVzcGFjZSB7Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK0RlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gZmlsdGVyV2l0aE1l
c3NhZ2VSZWNlaXZlUXVldWUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgVCYgcmVjZWl2ZVF1ZXVl
LCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBEZXF1
ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+JiYgaW5jb21pbmdNZXNzYWdlcykKIHsKLSAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7Ci0gICAgYXV0byBrZXkgPSBzdGQ6Om1h
a2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGlu
YXRpb25JRCk7Ci0gICAgQVNTRVJUKCFtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29udGFp
bnMoa2V5KSk7Ci0KLSAgICBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuYWRkKGtleSwgc3Rk
OjptYWtlX3BhaXIoJndvcmtRdWV1ZSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKSk7CisgICAg
RGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiByZXN0OworICAgIGZvciAoYXV0byYgbWVz
c2FnZSA6IGluY29taW5nTWVzc2FnZXMpIHsKKyAgICAgICAgaWYgKG1lc3NhZ2UtPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSByZWNlaXZlck5hbWUgJiYgKG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQo
KSA9PSBkZXN0aW5hdGlvbklEIHx8ICFkZXN0aW5hdGlvbklEKSkKKyAgICAgICAgICAgIHJlY2Vp
dmVRdWV1ZS5lbnF1ZXVlTWVzc2FnZShjb25uZWN0aW9uLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdC5hcHBlbmQoV1RGTW92ZShtZXNzYWdlKSk7Cisg
ICAgfQorICAgIHJldHVybiByZXN0OworfQogfQogCi12b2lkIENvbm5lY3Rpb246OnJlbW92ZVdv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZVJlY2Vp
dmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVlJiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFtZSBy
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwotICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3Rh
dGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOwot
ICAgIEFTU0VSVChtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7Ci0g
ICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShrZXkpOworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAgIG1faW5jb21pbmdN
ZXNzYWdlcyA9IGZpbHRlcldpdGhNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCByZWNlaXZlUXVl
dWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgV1RGTW92ZShtX2luY29taW5nTWVzc2Fn
ZXMpKTsKKyAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyJiB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIsIERlY29kZXImIGRlY29kZXIpCit2b2lkIENvbm5lY3Rpb246OmFk
ZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCBXb3Jr
UXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKiByZWNlaXZlciwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAgICBpZiAoIWRlY29kZXIuaXNTeW5jTWVzc2FnZSgp
KSB7Ci0gICAgICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlTWVzc2FnZSgq
dGhpcywgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1aW50NjRfdCBz
eW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQp
IHx8ICFzeW5jUmVxdWVzdElEKSB7Ci0gICAgICAgIC8vIFdlIHJlY2VpdmVkIGFuIGludmFsaWQg
c3luYyBtZXNzYWdlLgotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHRoaXMuCi0gICAgICAgIGRl
Y29kZXIubWFya0ludmFsaWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8g
cmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3Nh
Z2VSZXBseSwgc3luY1JlcXVlc3RJRCk7Ci0KLSAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNv
ZGVyIGFuZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIuCi0gICAg
d29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgZGVj
b2RlciwgcmVwbHlFbmNvZGVyKTsKLQotICAgIC8vIEZJWE1FOiBJZiB0aGUgbWVzc2FnZSB3YXMg
aW52YWxpZCwgd2Ugc2hvdWxkIHNlbmQgYmFjayBhIFN5bmNNZXNzYWdlRXJyb3IuCi0gICAgQVNT
RVJUKGRlY29kZXIuaXNWYWxpZCgpKTsKLQotICAgIGlmIChyZXBseUVuY29kZXIpCi0gICAgICAg
IHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKKyAgICBhdXRvIHJlY2VpdmVR
dWV1ZSA9IG1ha2VVbmlxdWU8V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyUXVldWU+KHdvcmtRdWV1
ZSwgKnJlY2VpdmVyKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNz
YWdlc011dGV4KTsKKyAgICBtX2luY29taW5nTWVzc2FnZXMgPSBmaWx0ZXJXaXRoTWVzc2FnZVJl
Y2VpdmVRdWV1ZSgqdGhpcywgKnJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklELCBXVEZNb3ZlKG1faW5jb21pbmdNZXNzYWdlcykpOworICAgIG1fcmVjZWl2ZVF1ZXVlcy5h
ZGQoV1RGTW92ZShyZWNlaXZlUXVldWUpLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwog
fQogCi12b2lkIENvbm5lY3Rpb246OmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKiB0aHJlYWRNZXNz
YWdlUmVjZWl2ZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OmFk
ZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCBUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIqIHJlY2VpdmVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyc0xvY2spOwotICAgIGF1dG8ga2V5ID0gc3RkOjptYWtl
X3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0
aW9uSUQpOwotICAgIEFTU0VSVCghbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKGtl
eSkpOwotCi0gICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmFkZChrZXksIHRocmVhZE1lc3Nh
Z2VSZWNlaXZlcik7CisgICAgYXV0byByZWNlaXZlUXVldWUgPSBtYWtlVW5pcXVlPFRocmVhZE1l
c3NhZ2VSZWNlaXZlclF1ZXVlPigqcmVjZWl2ZXIpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXgpOworICAgIG1faW5jb21pbmdNZXNzYWdlcyA9IGZp
bHRlcldpdGhNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCAqcmVjZWl2ZVF1ZXVlLCByZWNlaXZl
ck5hbWUsIGRlc3RpbmF0aW9uSUQsIFdURk1vdmUobV9pbmNvbWluZ01lc3NhZ2VzKSk7CisgICAg
bV9yZWNlaXZlUXVldWVzLmFkZChXVEZNb3ZlKHJlY2VpdmVRdWV1ZSksIHJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKQordm9pZCBDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0gICAgYXV0byBrZXkgPSBzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRp
b25JRCk7Ci0gICAgQVNTRVJUKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhrZXkp
KTsKLQotICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoa2V5KTsKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICBtX3JlY2Vp
dmVRdWV1ZXMucmVtb3ZlKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAKLXZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFRocmVhZE1l
c3NhZ2VSZWNlaXZlciYgdGhyZWFkTWVzc2FnZVJlY2VpdmVyLCBEZWNvZGVyJiBkZWNvZGVyKQor
dm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJl
Y2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIGRlY29k
ZXIpCiB7Ci0gICAgaWYgKCFkZWNvZGVyLmlzU3luY01lc3NhZ2UoKSkgewotICAgICAgICB0aHJl
YWRNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoKnRoaXMsIGRlY29kZXIpOworICAg
IGlmICghZGVjb2Rlci0+aXNTeW5jTWVzc2FnZSgpKSB7CisgICAgICAgIG1lc3NhZ2VSZWNlaXZl
ci5kaWRSZWNlaXZlTWVzc2FnZSgqdGhpcywgKmRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzeW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVlc3RJRCkgewotICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIGludmFsaWQgc3luYyBtZXNzYWdlLgotICAgICAgICBkZWNvZGVyLm1hcmtJ
bnZhbGlkKCk7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3luY1JlcXVlc3RJRCkgfHwgIXN5
bmNSZXF1ZXN0SUQpIHsKKyAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1l
c3NhZ2UuCisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhpcy4KKyAgICAgICAgZGVjb2Rlci0+
bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gcmVwbHlF
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBs
eSwgc3luY1JlcXVlc3RJRCk7Ci0gICAgdGhyZWFkTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVT
eW5jTWVzc2FnZSgqdGhpcywgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKworICAgIC8vIEhhbmQg
b2ZmIGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVzc2Fn
ZSByZWNlaXZlci4KKyAgICBtZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKCp0
aGlzLCAqZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAogICAgIC8vIEZJWE1FOiBJZiB0aGUgbWVz
c2FnZSB3YXMgaW52YWxpZCwgd2Ugc2hvdWxkIHNlbmQgYmFjayBhIFN5bmNNZXNzYWdlRXJyb3Iu
Ci0gICAgQVNTRVJUKGRlY29kZXIuaXNWYWxpZCgpKTsKKyAgICBBU1NFUlQoZGVjb2Rlci0+aXNW
YWxpZCgpKTsKIAogICAgIGlmIChyZXBseUVuY29kZXIpCiAgICAgICAgIHNlbmRTeW5jUmVwbHko
V1RGTW92ZShyZXBseUVuY29kZXIpKTsKQEAgLTczMSwxOSArNzA5LDIxIEBAIHZvaWQgQ29ubmVj
dGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVz
c2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gdGhyZWFkZWRSZWNlaXZl
cktleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSksIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSk7Ci0gICAgaWYgKCFX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkodGhyZWFkZWRSZWNlaXZlcktl
eSkgfHwgIVRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleSh0aHJlYWRlZFJlY2Vp
dmVyS2V5KSkgeworICAgIGlmICghTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6aXNWYWxpZE1lc3Nh
Z2UoKm1lc3NhZ2UpKSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlTmFtZSA9IG1lc3NhZ2UtPm1lc3NhZ2VO
YW1lKCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlTmFtZSk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVj
ZWl2ZXIobWVzc2FnZSkpCi0gICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogVGhlc2UgYXJl
IHByYWN0aWNhbGx5IHRoZSBzYW1lIG11dGV4LCBzbyBtYXliZSB0aGV5IGNvdWxkIGJlIG1lcmdl
ZC4KKyAgICBhdXRvIHdhaXRGb3JNZXNzYWdlc0xvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1l
c3NhZ2VNdXRleCk7CiAKLSAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlciht
ZXNzYWdlKSkKKyAgICBhdXRvIGluY29taW5nTWVzc2FnZXNMb2NrZXIgPSBob2xkTG9jayhtX2lu
Y29taW5nTWVzc2FnZXNNdXRleCk7CisgICAgaWYgKGF1dG8qIHJlY2VpdmVRdWV1ZSA9IG1fcmVj
ZWl2ZVF1ZXVlcy5nZXQoKm1lc3NhZ2UpKSB7CisgICAgICAgIHJlY2VpdmVRdWV1ZS0+ZW5xdWV1
ZU1lc3NhZ2UoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgaWYgKG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgewogICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0ZXgpOwpAQCAt
NzU1LDM4ICs3MzUsMzQgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogICAgIH0KIAogICAgIC8vIENoZWNr
IGlmIHdlJ3JlIHdhaXRpbmcgZm9yIHRoaXMgbWVzc2FnZSwgb3IgaWYgd2UgbmVlZCB0byBpbnRl
cnJ1cHQgd2FpdGluZyBkdWUgdG8gYW4gaW5jb21pbmcgc3luYyBtZXNzYWdlLgotICAgIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwotCi0g
ICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlICYmICFtX3dhaXRpbmdGb3JNZXNzYWdlLT5k
ZWNvZGVyKSB7Ci0gICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewotICAgICAgICAgICAgICAg
IG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKLSAgICAgICAg
ICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG1fd2FpdGlu
Z0Zvck1lc3NhZ2UtPndhaXRGb3JPcHRpb25zLmNvbnRhaW5zKFdhaXRGb3JPcHRpb246OkRpc3Bh
dGNoSW5jb21pbmdTeW5jTWVzc2FnZXNXaGlsZVdhaXRpbmcpICYmIG1lc3NhZ2UtPmlzU3luY01l
c3NhZ2UoKSAmJiBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5wcm9jZXNzSW5jb21pbmdN
ZXNzYWdlKCp0aGlzLCBtZXNzYWdlKSkgewotICAgICAgICAgICAgICAgIG1fd2FpdEZvck1lc3Nh
Z2VDb25kaXRpb24ubm90aWZ5T25lKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+d2FpdEZvck9w
dGlvbnMuY29udGFpbnMoV2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3Nh
Z2VBcnJpdmVzKSAmJiBtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkpIHsKLSAgICAgICAgICAgICAg
ICBtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwot
ICAgICAgICAgICAgICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIGlmIChtX3dhaXRp
bmdGb3JNZXNzYWdlICYmICFtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKSB7CisgICAgICAg
IGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlTmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdl
TmFtZSgpICYmIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQgPT0gbWVzc2FnZS0+
ZGVzdGluYXRpb25JRCgpKSB7CisgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNv
ZGVyID0gV1RGTW92ZShtZXNzYWdlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JN
ZXNzYWdlLT5kZWNvZGVyKTsKKyAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24u
bm90aWZ5T25lKCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAv
LyBDaGVjayBpZiB0aGlzIGlzIGEgc3luYyBtZXNzYWdlIG9yIGlmIGl0J3MgYSBtZXNzYWdlIHRo
YXQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIHdhaXRpbmcgZm9yCi0gICAgICAgIC8v
IGEgc3luYyByZXBseS4gSWYgaXQgaXMsIGFuZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVw
bHkgdGhpcyBtZXNzYWdlIG5lZWRzIHRvIGJlIGRpc3BhdGNoZWQuCi0gICAgICAgIC8vIElmIHdl
IGRvbid0IHdlJ2xsIGVuZCB1cCB3aXRoIGEgZGVhZGxvY2sgd2hlcmUgYm90aCBzeW5jIG1lc3Nh
Z2Ugc2VuZGVycyBhcmUgc3R1Y2sgd2FpdGluZyBmb3IgYSByZXBseS4KLSAgICAgICAgaWYgKFN5
bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigpLnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoKnRoaXMs
IG1lc3NhZ2UpKQorICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+d2FpdEZvck9wdGlv
bnMuY29udGFpbnMoV2FpdEZvck9wdGlvbjo6RGlzcGF0Y2hJbmNvbWluZ1N5bmNNZXNzYWdlc1do
aWxlV2FpdGluZykgJiYgbWVzc2FnZS0+aXNTeW5jTWVzc2FnZSgpICYmIFN5bmNNZXNzYWdlU3Rh
dGU6OnNpbmdsZXRvbigpLnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UpKSB7
CisgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgZW5xdWV1ZUluY29taW5nTWVz
c2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2Ut
PndhaXRGb3JPcHRpb25zLmNvbnRhaW5zKFdhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJ
ZlN5bmNNZXNzYWdlQXJyaXZlcykgJiYgbWVzc2FnZS0+aXNTeW5jTWVzc2FnZSgpKSB7CisgICAg
ICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5T25lKCk7
CisgICAgICAgICAgICBlbnF1ZXVlSW5jb21pbmdNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQorCisgICAgLy8gQ2hlY2sgaWYg
dGhpcyBpcyBhIHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNob3VsZCBi
ZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgorICAgIC8vIGEgc3luYyByZXBseS4g
SWYgaXQgaXMsIGFuZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkgdGhpcyBtZXNzYWdl
IG5lZWRzIHRvIGJlIGRpc3BhdGNoZWQuCisgICAgLy8gSWYgd2UgZG9uJ3Qgd2UnbGwgZW5kIHVw
IHdpdGggYSBkZWFkbG9jayB3aGVyZSBib3RoIHN5bmMgbWVzc2FnZSBzZW5kZXJzIGFyZSBzdHVj
ayB3YWl0aW5nIGZvciBhIHJlcGx5LgorICAgIGlmIChTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0
b24oKS5wcm9jZXNzSW5jb21pbmdNZXNzYWdlKCp0aGlzLCBtZXNzYWdlKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZW5xdWV1ZUluY29taW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0K
IAogdWludDY0X3QgQ29ubmVjdGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFj
ayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCkBAIC05NzIsOSArOTQ4LDggQEAg
dm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKQogCiB2b2lkIENvbm5l
Y3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGlu
Y29taW5nTWVzc2FnZSkKIHsKKyAgICBBU1NFUlQobV9pbmNvbWluZ01lc3NhZ2VzTXV0ZXguaXNI
ZWxkKCkpOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5n
TWVzc2FnZXNNdXRleCk7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKG1fd2Fz
S2lsbGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzMiw4MCArMTAwNywyNSBAQCB2b2lk
IENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVNZXNzYWdlKCp0aGlzLCBkZWNvZGVyKTsKIH0KIAotYXV0byBDb25uZWN0
aW9uOjp0aHJlYWRNZXNzYWdlUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNz
YWdlKSAtPiBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVyPgotewotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0KLSAgICAvLyBGaXJz
dCBjaGVjayBpZiB0aGVyZSBpcyBhIGdsb2JhbCBtZXNzYWdlIHJlY2VpdmVyIGFuZCByZXR1cm4g
aXQgaWYgdGhlcmUgaXMgb25lLgotICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Yg
TWVzc2FnZVJlY2VpdmVyTWFwLgotICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgMCk7Ci0gICAg
YXV0byBpdCA9IG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5maW5kKGtleSk7Ci0gICAgaWYgKGl0
ICE9IG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52
YWx1ZTsKLQotICAgIGlmIChhdXRvIGRlc3RpbmF0aW9uSUQgPSBtZXNzYWdlLT5kZXN0aW5hdGlv
bklEKCkpIHsKLSAgICAgICAga2V5LnNlY29uZCA9IGRlc3RpbmF0aW9uSUQ7Ci0gICAgICAgIHJl
dHVybiBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGtleSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KLWF1dG8gQ29ubmVjdGlvbjo6d29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2FnZSkgLT4gc3RkOjpwYWlyPFJlZlB0
cjxXb3JrUXVldWU+LCBSZWZQdHI8V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyPj4KLXsKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyc011dGV4KTsK
LQotICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZXJlIGlzIGEgZ2xvYmFsIG1lc3NhZ2UgcmVjZWl2
ZXIgYW5kIHJldHVybiBpdCBpZiB0aGVyZSBpcyBvbmUuCi0gICAgLy8gVGhpcyBtYXRjaGVzIHRo
ZSBiZWhhdmlvciBvZiBNZXNzYWdlUmVjZWl2ZXJNYXAuCi0gICAgYXV0byBrZXkgPSBzdGQ6Om1h
a2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpLCAwKTsKLSAgICBhdXRvIGl0ID0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmZpbmQo
a2V5KTsKLSAgICBpZiAoaXQgIT0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmVuZCgpKQot
ICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwotCi0gICAgaWYgKGF1dG8gZGVzdGluYXRpb25JRCA9
IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewotICAgICAgICBrZXkuc2Vjb25kID0gZGVzdGlu
YXRpb25JRDsKLSAgICAgICAgcmV0dXJuIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5nZXQo
a2V5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB9OwotfQotCi1ib29sIENvbm5lY3Rpb246OmRp
c3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
JiBtZXNzYWdlKQotewotICAgIGF1dG8gcmVjZWl2ZXIgPSB3b3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZSk7Ci0gICAgaWYgKCFyZWNlaXZlci5maXJzdCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmVjZWl2ZXIuZmlyc3QtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciA9IHJlY2VpdmVyLnNlY29uZCwg
ZGVjb2RlciA9IFdURk1vdmUobWVzc2FnZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZSgqd29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyLCAqZGVjb2Rlcik7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGF1dG8gcmVjZWl2ZXIg
PSB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZSkpIHsKLSAgICAgICAgcmVjZWl2ZXItPmRp
c3BhdGNoVG9UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVjZWl2ZXIs
IGRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpXSgpIG11dGFibGUgewotICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKCpyZWNlaXZl
ciwgKmRlY29kZXIpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Ly8gTWVzc2FnZXMgdG8gV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycyBhcmUgbm9ybWFsbHkgZGlz
cGF0Y2hlZCBmcm9tIHRoZSBJUEMgV29ya1F1ZXVlLiBIb3dldmVyLCB0aGVyZSBpcyBhIHJhY2Ug
aWYKLSAgICAvLyBhIGNsaWVudCBhZGRzIGl0c2VsZiBhcyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlciBhcyBhIHJlc3VsdCBvZiByZWNlaXZpbmcgYW4gSVBDIG1lc3NhZ2Ugb24gdGhlIG1haW4g
dGhyZWFkLgotICAgIC8vIFRoZSBtZXNzYWdlIG1pZ2h0IGhhdmUgYWxyZWFkeSBiZWVuIGRpc3Bh
dGNoZWQgZnJvbSB0aGUgSVBDIFdvcmtRdWV1ZSB0byB0aGUgbWFpbiB0aHJlYWQgYnkgdGhlIHRp
bWUgdGhlCi0gICAgLy8gY2xpZW50IHJlZ2lzdGVycyBpdHNlbGYgYXMgYSBXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIuIFRvIGFkZHJlc3MgdGhpcywgd2UgY2hlY2sgYWdhaW4gZm9yIG1lc3NhZ2Vz
IHJlY2VpdmVycwotICAgIC8vIG9uY2UgdGhlIG1lc3NhZ2UgYXJyaXZlcyBvbiB0aGUgbWFpbiB0
aHJlYWQuCi0gICAgaWYgKGRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIobWVzc2Fn
ZSkpCi0gICAgICAgIHJldHVybjsKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgbWF0Y2hl
cyBoZXJlIGNvbWUgZnJvbQorICAgICAgICAvLyBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2Fp
dGluZ0ZvclN5bmNSZXBseS4gVGhpcyBjYXVzZXMgbWVzc2FnZQorICAgICAgICAvLyByZW9yZGVy
aW5nLCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1lc3NhZ2VzIGdvIHRvCisgICAgICAgIC8vIFN5bmNT
dGF0ZTo6bV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkgd2hpbGUg
b3RoZXJzCisgICAgICAgIC8vIGdvIHRvIENvbm5lY3Rpb246Om1faW5jb21pbmdNZXNzYWdlcy4g
U2hvdWxkIGJlIGZpeGVkIGJ5IGFkZGluZyBhbGwKKyAgICAgICAgLy8gbWVzc2FnZXMgdG8gb25l
IGxpc3QuCisgICAgICAgIGF1dG8gaW5jb21pbmdNZXNzYWdlc0xvY2tlciA9IGhvbGRMb2NrKG1f
aW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICAgICAgaWYgKGF1dG8qIHJlY2VpdmVRdWV1ZSA9
IG1fcmVjZWl2ZVF1ZXVlcy5nZXQoKm1lc3NhZ2UpKSB7CisgICAgICAgICAgICByZWNlaXZlUXVl
dWUtPmVucXVldWVNZXNzYWdlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmIChtZXNzYWdlLT5zaG91bGRVc2VG
dWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKSkgewogICAgICAgICBpZiAoIW1fZnVsbHlT
eW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKaW5kZXggMTlkMGU5NmZmZmZlOWE3YjJlMWQ0ZjM0YTY1ZTA4NDMz
MDdiZjdmMC4uNDg1NTIwMTI0N2MyNWRmODU1MmM1YTU0YTA0Njc3YjhkNzJiODJjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiSGFuZGxl
TWVzc2FnZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0Nv
bmRpdGlvbi5oPgpAQCAtMjE0LDExICsyMTUsMjEgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdm9p
ZCAoKkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spKENvbm5lY3Rpb24qKTsK
ICAgICB2b2lkIHNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soRGlkQ2xv
c2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayk7CiAKKyAgICAvLyBBZGRzIGEgbWVzc2Fn
ZSByZWNlaXZlIHF1ZXVlLiBUaGUgY2xpZW50IHNob3VsZCBtYWtlIHN1cmUgdGhlIGluc3RhbmNl
IGlzIHJlbW92ZWQgYmVmb3JlIGl0IGdvZXMKKyAgICAvLyBvdXQgb2Ygc2NvcGUuCisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKworICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZShSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsK
KworICAgIC8vIEFkZHMgYSBtZXNzYWdlIHJlY2VpZXZlIHF1ZXVlIHRoYXQgZGlzcGF0Y2hlcyB0
aHJvdWdoIFdvcmtRdWV1ZSB0byBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuCisgICAgLy8gS2Vl
cHMgdGhlIFdvcmtRdWV1ZSBhbmQgdGhlIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4g
RGlzcGF0Y2hlZCB0YXNrcyBrZWVwIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4KICAg
ICB2b2lkIGFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIFdvcmtRdWV1
ZSYsIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciosIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAw
KTsKLSAgICB2b2lkIHJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICB2b2lkIHJlbW92ZVdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEID0gMCkgeyByZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCk7IH0KIAorICAgIC8vIEFkZHMgYSBtZXNzYWdlIHJlY2VpZXZlIHF1ZXVlIHRo
YXQgZGlzcGF0Y2hlcyB0aHJvdWdoIFRocmVhZE1lc3NhZ2VSZWNlaXZlci4KKyAgICAvLyBLZWVw
cyB0aGUgVGhyZWFkTWVzc2FnZVJlY2VpdmVyIGFsaXZlLiBEaXNwYXRjaGVkIHRhc2tzIGtlZXAg
dGhlIFRocmVhZE1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4KICAgICB2b2lkIGFkZFRocmVhZE1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciosIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQgPSAwKTsKLSAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZl
cihSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICB2b2lkIHJl
bW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEID0gMCkgeyByZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRCk7IH0KIAogICAgIGJvb2wgb3BlbigpOwogICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwpAQCAtMzAwLDYgKzMxMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlnbm9y
ZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlSW52YWxp
ZE1lc3NhZ2VGb3JUZXN0aW5nOyB9CiAjZW5kaWYKIAorICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiYmKTsKIHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVy
LCBDbGllbnQmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKQEAg
LTMxMSwxNiArMzIzLDEwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgTWVzc2FnZU5h
bWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPik7CiAKLSAgICBi
b29sIGRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+Jik7Ci0gICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwotCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9u
IHdvcmsgcXVldWUuCiAgICAgdm9pZCBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPik7CiAgICAgdm9pZCBwcm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+KTsKIAotICAgIHZvaWQgZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciYsIERlY29kZXImKTsKLSAg
ICB2b2lkIGRpc3BhdGNoVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShUaHJlYWRNZXNzYWdl
UmVjZWl2ZXImLCBEZWNvZGVyJik7Ci0KICAgICBib29sIGNhblNlbmRPdXRnb2luZ01lc3NhZ2Vz
KCkgY29uc3Q7CiAgICAgYm9vbCBwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29u
c3Q7CiAgICAgdm9pZCBzZW5kT3V0Z29pbmdNZXNzYWdlcygpOwpAQCAtMzY1LDkgKzM3MSw2IEBA
IHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fdGhyb3R0bGluZ0xldmVsIHsgMCB9OwogICAg
IH07CiAKLSAgICBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVyPiB0aHJlYWRNZXNzYWdlUmVj
ZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7Ci0gICAgc3RkOjpwYWlyPFJlZlB0cjxX
b3JrUXVldWU+LCBSZWZQdHI8V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyPj4gd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwotCiAgICAgQ2xpZW50JiBt
X2NsaWVudDsKICAgICBVbmlxdWVJRCBtX3VuaXF1ZUlEOwogICAgIGJvb2wgbV9pc1NlcnZlcjsK
QEAgLTM4MSwxNCArMzg0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNDb25uZWN0ZWQ7CiAg
ICAgUmVmPFdvcmtRdWV1ZT4gbV9jb25uZWN0aW9uUXVldWU7CiAKLSAgICBMb2NrIG1fd29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyc011dGV4OwotICAgIHVzaW5nIFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlck1hcCA9IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90Piwgc3RkOjpwYWly
PFJlZlB0cjxXb3JrUXVldWU+LCBSZWZQdHI8V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyPj4+Owot
ICAgIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcCBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
cnM7Ci0KLSAgICBMb2NrIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyc0xvY2s7Ci0gICAgdXNpbmcg
VGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWlu
dDY0X3Q+LCBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVyPj47Ci0gICAgVGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyTWFwIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyczsKLQogICAgIHVuc2lnbmVkIG1f
aW5TZW5kU3luY0NvdW50OwogICAgIHVuc2lnbmVkIG1faW5EaXNwYXRjaE1lc3NhZ2VDb3VudDsK
ICAgICB1bnNpZ25lZCBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkRGlzcGF0Y2hXaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseUNvdW50OwpAQCAtNDAxLDYgKzM5Niw3IEBAIHByaXZhdGU6CiAgICAgTG9j
ayBtX2luY29taW5nTWVzc2FnZXNNdXRleDsKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4+IG1faW5jb21pbmdNZXNzYWdlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZXNU
aHJvdHRsZXI+IG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlcjsKKyAgICBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwIG1fcmVjZWl2ZVF1ZXVlczsKIAogICAgIC8vIE91dGdvaW5nIG1lc3NhZ2VzLgog
ICAgIExvY2sgbV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVjM2NlOWFmMmZk
MjY5NWQ1NWFkMmYwNjYyYTU4ZjFhMDgzMjZjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVz
cGFjZSBJUEMgeworCitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKKworY2xhc3Mg
TWVzc2FnZVJlY2VpdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVzc2FnZVJlY2Vp
dmVRdWV1ZSgpID0gZGVmYXVsdDsKKyAgICAvLyBDYWxsZWQgd2l0aCBDb25uZWN0aW9uIGluY29t
aW5nIG1lc3NhZ2UgbG9jayBoZWxkLgorICAgIC8vIE1heSBiZSBjYWxsZWQgZnJvbSBtdWx0aXBs
ZSB0aHJlYWRzLgorICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIElQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmZlMGU4MDQ1MzlkZmZmMTU1ZmRjYWY0MGUzYTA4YjA1
MDliMmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgiCisK
K25hbWVzcGFjZSBJUEMgeworCit2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwo
U3RvcmVUeXBlJiYgcXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpCit7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2Fz
dDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBBU1NFUlQoIW1f
cXVldWVzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcXVldWVzLmFkZChrZXksIFdURk1vdmUocXVl
dWUpKTsKK30KKwordm9pZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjpyZW1vdmUoUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBhdXRvIGtl
eSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRl
c3RpbmF0aW9uSUQpOworICAgIEFTU0VSVChtX3F1ZXVlcy5jb250YWlucyhrZXkpKTsKKyAgICBt
X3F1ZXVlcy5yZW1vdmUoa2V5KTsKK30KKworTWVzc2FnZVJlY2VpdmVRdWV1ZSogTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcDo6Z2V0KGNvbnN0IERlY29kZXImIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAg
aWYgKG1fcXVldWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0
byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSksIDApOworICAgIGF1dG8gaXQgPSBtX3F1ZXVlcy5maW5kKGtleSk7
CisgICAgaWYgKGl0ID09IG1fcXVldWVzLmVuZCgpKSB7CisgICAgICAgIGtleS5zZWNvbmQgPSBt
ZXNzYWdlLmRlc3RpbmF0aW9uSUQoKTsKKyAgICAgICAgaWYgKGtleS5zZWNvbmQpCisgICAgICAg
ICAgICBpdCA9IG1fcXVldWVzLmZpbmQoa2V5KTsKKyAgICB9CisgICAgaWYgKGl0ID09IG1fcXVl
dWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gV1RGOjp2aXNp
dCgKKyAgICAgICAgV1RGOjptYWtlVmlzaXRvcigKKyAgICAgICAgICAgIFtdKGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJuIHF1ZXVlLmdl
dCgpOyB9LAorICAgICAgICAgICAgW10oTWVzc2FnZVJlY2VpdmVRdWV1ZSogcXVldWUpIHsgcmV0
dXJuIHF1ZXVlOyB9CisgICAgICAgICksIGl0LT52YWx1ZSk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMjQwZmYzNWM4ZWM3OTIwZjA1ZWZiY2QyNzI1YzA3YWI3Y2NlNDE5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorCituYW1lc3BhY2Ug
SVBDIHsKKworZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90OworCitjbGFzcyBNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwIHsKK3B1YmxpYzoKKyAgICBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
KCkgPSBkZWZhdWx0OworICAgIH5NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwKCkgPSBkZWZhdWx0Owor
CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZE1lc3NhZ2UoY29uc3QgRGVjb2RlciYgbWVzc2FnZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBRdWV1ZU1hcDo6aXNWYWxpZEtleShzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIG1l
c3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgfQorCisgICAgLy8gQWRkcyBhIHdpbGRjYXJk
IGZpbHRlciBpZiBkZXN0aW5hdGlvbklEID09IDAuCisgICAgdm9pZCBhZGQoTWVzc2FnZVJlY2Vp
dmVRdWV1ZSYgcXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpIHsgIGFkZEltcGwoU3RvcmVUeXBlKCZxdWV1ZSksIHJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCk7IH0KKyAgICB2b2lkIGFkZChzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2Vp
dmVRdWV1ZT4mJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkgeyBhZGRJbXBsKFN0b3JlVHlwZShXVEZNb3ZlKHF1ZXVlKSksIHJlY2VpdmVy
TmFtZSwgZGVzdGluYXRpb25JRCk7IH0KKyAgICB2b2lkIHJlbW92ZShSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgTWVzc2FnZVJlY2VpdmVRdWV1ZSogZ2V0KGNv
bnN0IERlY29kZXImKSBjb25zdDsKK3ByaXZhdGU6CisgICAgdXNpbmcgU3RvcmVUeXBlID0gVmFy
aWFudDxNZXNzYWdlUmVjZWl2ZVF1ZXVlKiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNlaXZl
UXVldWU+PjsKKyAgICB2b2lkIGFkZEltcGwoU3RvcmVUeXBlJiYsIFJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdXNpbmcgUXVldWVNYXAgPSBIYXNoTWFwPHN0ZDo6
cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFN0b3JlVHlwZT47CisgICAgUXVldWVNYXAgbV9xdWV1
ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ODcxOWQ1MzVhNTQ5
YWYwN2FkZWU4YjA1MjA2YmJkNWE0YWUzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oCkBAIC0wLDAgKzEsOTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitjbGFz
cyBGdW5jdGlvbkRpc3BhdGNoZXJRdWV1ZSBmaW5hbCA6IHB1YmxpYyBNZXNzYWdlUmVjZWl2ZVF1
ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBGdW5jdGlv
bkRpc3BhdGNoZXJRdWV1ZShGdW5jdGlvbkRpc3BhdGNoZXImIGRpc3BhdGNoZXIsIE1lc3NhZ2VS
ZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgICAgIDogbV9kaXNwYXRjaGVyKGRpc3BhdGNoZXIpCisg
ICAgICAgICwgbV9yZWNlaXZlcihyZWNlaXZlcikKKyAgICB7CisgICAgfQorICAgIH5GdW5jdGlv
bkRpc3BhdGNoZXJRdWV1ZSgpIGZpbmFsID0gZGVmYXVsdDsKKworICAgIHZvaWQgZW5xdWV1ZU1l
c3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYg
bWVzc2FnZSkgZmluYWwKKyAgICB7CisgICAgICAgIG1fZGlzcGF0Y2hlci5kaXNwYXRjaChbY29u
bmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2Up
LCAmcmVjZWl2ZXIgPSBtX3JlY2VpdmVyXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29ubmVj
dGlvbi0+ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKHJlY2VpdmVyLCBXVEZNb3ZlKG1l
c3NhZ2UpKTsKKyAgICAgICAgfSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBGdW5jdGlvbkRpc3Bh
dGNoZXImIG1fZGlzcGF0Y2hlcjsKKyAgICBNZXNzYWdlUmVjZWl2ZXImIG1fcmVjZWl2ZXI7Cit9
OworCitjbGFzcyBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJRdWV1ZSBmaW5hbCA6IHB1YmxpYyBNZXNz
YWdlUmVjZWl2ZVF1ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJRdWV1ZShDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdl
UmVjZWl2ZXImIHJlY2VpdmVyKQorICAgICAgICA6IG1fcmVjZWl2ZXIobWFrZVJlZihyZWNlaXZl
cikpCisgICAgeworICAgIH0KKyAgICB+VGhyZWFkTWVzc2FnZVJlY2VpdmVyUXVldWUoKSBmaW5h
bCA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIG1lc3NhZ2UpIGZpbmFsCisgICAgewor
ICAgICAgICBtX3JlY2VpdmVyLT5kaXNwYXRjaFRvVGhyZWFkKFtjb25uZWN0aW9uID0gbWFrZVJl
Zihjb25uZWN0aW9uKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHJlY2VpdmVyID0gbV9y
ZWNlaXZlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmRpc3BhdGNoTWVz
c2FnZVJlY2VpdmVyTWVzc2FnZShyZWNlaXZlci5nZXQoKSwgV1RGTW92ZShtZXNzYWdlKSk7Cisg
ICAgICAgIH0pOworICAgIH0KK3ByaXZhdGU6CisgICAgUmVmPENvbm5lY3Rpb246OlRocmVhZE1l
c3NhZ2VSZWNlaXZlcj4gbV9yZWNlaXZlcjsKK307CisKK2NsYXNzIFdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlclF1ZXVlIGZpbmFsIDogcHVibGljIE1lc3NhZ2VSZWNlaXZlUXVldWUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlclF1ZXVlKFdvcmtRdWV1ZSYgcXVldWUsIENvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgICAgIDogbV9xdWV1ZShtYWtlUmVmKHF1ZXVlKSkKKyAg
ICAgICAgLCBtX3JlY2VpdmVyKG1ha2VSZWYocmVjZWl2ZXIpKQorICAgIHsKKyAgICB9CisgICAg
fldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlclF1ZXVlKCkgZmluYWwgPSBkZWZhdWx0OworCisgICAg
dm9pZCBlbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4mJiBtZXNzYWdlKSBmaW5hbAorICAgIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgcmVjZWl2ZXIgPSBtX3JlY2VpdmVyXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgY29ubmVjdGlvbi0+ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKHJlY2VpdmVyLmdl
dCgpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICAgICAgfSk7CisgICAgfQorcHJpdmF0ZToKKyAg
ICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAgIFJlZjxDb25uZWN0aW9uOjpXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IGQ4ZDNjOWU0YmUwNzUxMTJlZWUzMDAwNTk5NTFmMDQzY2ZhZGEzNzcuLmFi
M2QxMDY0NWMzMDc2MjM4MjZkNjBjMTc4MTFhMDliMGNmZGY1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
MTQ1LDYgKzE0NSw3IEBAIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRm
b3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUu
Y3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAgQG5vLXVuaWZ5CitQ
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDRlNWQxM2NlNTU0NjVlY2E5ZjI3ZjMwYWY3ZGE1NjJjNTgxNWNhNjQuLjcw
YTE4OWNlMzlhNzdhODQ1ZjVhOTk1YTNkMjEyZDc1NGJhOWQyZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyNSw2ICsxMzI1LDEw
IEBACiAJCTdBRkJEMzY3MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3Rl
bmN5VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CiAJ
CTdCMURCMjY2MjU2NjhDRTEwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUy
NkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi87IH07CisJCTdCNDgzRjFGMjVDRERBOUMwMDEyMDQ4
NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxQjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcC5oICovOyB9OworCQk3QjQ4M0YyMDI1Q0REQTlDMDAxMjA0ODYgLyogTWVz
c2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUu
aCAqLzsgfTsKKwkJN0I0ODNGMjEyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICov
OyB9OworCQk3QjQ4M0YyMjI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFF
MjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovOyB9OwogCQk3QzA2
NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYy
QTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgg
Ki87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFB
NzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQz
RTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5o
ICovOyB9OwpAQCAtNDUyOSw2ICs0NTMzLDEwIEBACiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNC
IC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lV
dGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMURCMjY1MjU2NjhDRTAw
MDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjQ4
M0YxQjI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3Nh
Z2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I0ODNGMUQy
NUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0
QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjYy
NTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjA0Nyw4ICs2MDU1LDggQEAKIAkJCQkxRDMyRjg5RDIzQTg0QzVCMDBC
MUVBNkEgLyogUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcCAqLywKIAkJCQkxRDMyRjg5QjIz
QTg0QkE2MDBCMUVBNkEgLyogUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmggKi8sCiAJCQkJMURE
MkE2NDYyNTVGMzJCMTAwRkY3QjZGIC8qIFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllci5oICov
LAotCQkJCUNEODI1MkQxMjVENDY0QUIwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlz
dGVuZXIuaCAqLywKIAkJCQlDRDgyNTJEMjI1RDQ2NEFCMDA4NjJGRDggLyogUmVtb3RlUmVtb3Rl
Q29tbWFuZExpc3RlbmVyLmNwcCAqLywKKwkJCQlDRDgyNTJEMTI1RDQ2NEFCMDA4NjJGRDggLyog
UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggKi8sCiAJCQkJQ0Q4MjUyRDMyNUQ0NjRCRjAw
ODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5tZXNzYWdlcy5pbiAqLywKIAkJ
CQlDRDgyNTJENDI1RDQ2NTEwMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
SWRlbnRpZmllci5oICovLAogCQkJCTFERDJBNjNBMjU1REU2RDEwMEZGN0I2RiAvKiBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmNwcCAqLywKQEAgLTYxMzEsOCArNjEzOSw4IEBACiAJCQkJMURE
MkE2M0YyNTVFM0YxRjAwRkY3QjZGIC8qIFJlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwICovLAog
CQkJCTFERDJBNjNFMjU1RTNGMUYwMEZGN0I2RiAvKiBSZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmgg
Ki8sCiAJCQkJMUREMkE2NEEyNTYwRjU0QzAwRkY3QjZGIC8qIFJlbW90ZU1lZGlhU291cmNlUHJv
eHkubWVzc2FnZXMuaW4gKi8sCi0JCQkJQ0Q4MjUyRDUyNUQ0NzYzMTAwODYyRkQ4IC8qIFJlbW90
ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5LmggKi8sCiAJCQkJQ0Q4MjUyRDYyNUQ0NzYzMTAw
ODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5LmNwcCAqLywKKwkJCQlD
RDgyNTJENTI1RDQ3NjMxMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJv
eHkuaCAqLywKIAkJCQlDRDgyNTJENzI1RDQ3NjU5MDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29t
bWFuZExpc3RlbmVyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUREMkE2NjgyNTYxRjY4NDAw
RkY3QjZGIC8qIFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCAqLywKIAkJCQkxREQyQTY0
MzI1NUUzRjNEMDBGRjdCNkYgLyogUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwICovLApAQCAt
Njk2NCw2ICs2OTcyLDEwIEBACiAJCQkJOUI0NzkwOEUyNTMxNTFDQzAwRUMxMUFCIC8qIEpTSVBD
QmluZGluZy5oICovLAogCQkJCTlCNDc5MDhDMjUzMTREODMwMEVDMTFBQiAvKiBNZXNzYWdlQXJn
dW1lbnREZXNjcmlwdGlvbnMuaCAqLywKIAkJCQkxQUM0QzgyODE2Qjg3NkE5MDA2OURDQ0QgLyog
TWVzc2FnZUZsYWdzLmggKi8sCisJCQkJN0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCAqLywKKwkJCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8sCisJCQkJN0I0ODNGMUIyNUNEREE5QjAwMTIwNDg2
IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCAqLywKKwkJCQk3QjQ4M0YxRTI1Q0REQTlCMDAx
MjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLywKIAkJCQkxQTNFRUQxMTE2MUE1M0Q2
MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggKi8sCiAJCQkJMUEzRUVEMEMxNjFBNTM1MzAw
QUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgKi8sCiAJCQkJMUEzRUVEMEQxNjFBNTM1
MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oICovLApAQCAtMTE3ODYsNiArMTE3OTgs
OSBAQAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5QjQ3OTA4RDI1MzE0RDgzMDBFQzExQUIgLyogTWVzc2FnZUFyZ3Vt
ZW50RGVzY3JpcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM0QzgyOTE2Qjg3NkE5MDA2
OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjQ4M0YyMDI1Q0RE
QTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I0ODNGMUYyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRUVEMTIxNjFBNTNENjAwQUVCNEY1IC8q
IE1lc3NhZ2VSZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRUVEMEYxNjFBNTM1NDAw
QUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQjAz
N0ExODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MTM3NzksNiArMTM3OTQsNyBAQAogCQkJCTA3RTE5RUZCMjNENDAxRjEwMDk0RkZCNCAvKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMURGMjlFNjQyNTdGMzdBMzAwM0MyOEFGIC8qIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5QjQ3OTA5MTI1MzE1NjMyMDBF
QzExQUIgLyogTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdCNDgzRjIxMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgxMjEyQjZBNzEwMEY0OTNGRCAvKiBNZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODIyMTJCNkE3MTAwRjQ5
M0ZEIC8qIE1lc3NhZ2VTZW5kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0EyMTJC
NkE2MTAwRjQ5M0ZEIC8qIE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzNzk4LDcgKzEz
ODE0LDYgQEAKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUUgLyogTmV0d29ya1JUQ01vbml0
b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3NjkwMTQyMkZERDQx
QjAwQjE1NzZEIC8qIE5ldHdvcmtSVENQcm92aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0Q4MjUyREUyNUQ0OTE2QzAwODYyRkQ4IC8qIFJl
bW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxRjA2MEUxMTY1NDMxODUwMEYzMjgxQyAvKiBOZXR3b3JrU29ja2V0Q2hh
bm5lbE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzBCMTc3ODFFN0M4
ODBFMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDkyQTc5MDIxMkI2QUQ0MDBGNDkzRkQgLyogTlBJZGVudGlmaWVy
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzODU3LDYgKzEzODcyLDggQEAKIAkJCQkxRDRE
NzM3MDIzQTlFNTQ3MDA3MTdBMjUgLyogUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUREMkE2NjMyNTYxMjQ2RjAwRkY3QjZG
IC8qIFJlbW90ZU1lZGlhU291cmNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFDMTMzODUxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEODI1MkUyMjVENDkxOTEw
MDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q4MjUyREUyNUQ0OTE2QzAwODYyRkQ4IC8qIFJlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNTk0N0E3MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxREQyQTY2RTI1NjIw
MjFFMDBGRjdCNkYgLyogUmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1QkE4MjYxQkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTM5
NDAsNyArMTM5NTcsNiBAQAogCQkJCTJEMTFCNzhEMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVk
U291cmNlMzEtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc4RjIxMjZBMjgzMDA2Rjg4
NzggLyogVW5pZmllZFNvdXJjZTMyLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3OTAy
MTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UzMi5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlDRDgyNTJFMjI1RDQ5MTkxMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzkxMjEyNkEyODMw
MDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzMtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDEx
Qjc5MjIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTMzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEMTFCNzk0MjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzQuY3BwIGlu
IFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>